Renamed 'E5Utilities' to 'EricUtilities' and 'E5Network' to 'EricNetwork'. eric7

Sat, 22 May 2021 16:52:45 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 22 May 2021 16:52:45 +0200
branch
eric7
changeset 8354
12ebd3934fef
parent 8353
799196d0b05d
child 8355
8a7677a63c8d

Renamed 'E5Utilities' to 'EricUtilities' and 'E5Network' to 'EricNetwork'.

eric7.epj file | annotate | diff | comparison | revisions
eric7/E5Network/E5Ftp.py file | annotate | diff | comparison | revisions
eric7/E5Network/E5GoogleMail.py file | annotate | diff | comparison | revisions
eric7/E5Network/E5GoogleMailHelpers.py file | annotate | diff | comparison | revisions
eric7/E5Network/E5JsonClient.py file | annotate | diff | comparison | revisions
eric7/E5Network/E5JsonServer.py file | annotate | diff | comparison | revisions
eric7/E5Network/E5NetworkHeaderDetailsDialog.py file | annotate | diff | comparison | revisions
eric7/E5Network/E5NetworkHeaderDetailsDialog.ui file | annotate | diff | comparison | revisions
eric7/E5Network/E5NetworkProxyFactory.py file | annotate | diff | comparison | revisions
eric7/E5Network/E5RFC6266.py file | annotate | diff | comparison | revisions
eric7/E5Network/E5SslCertificateSelectionDialog.py file | annotate | diff | comparison | revisions
eric7/E5Network/E5SslCertificateSelectionDialog.ui file | annotate | diff | comparison | revisions
eric7/E5Network/E5SslCertificatesDialog.py file | annotate | diff | comparison | revisions
eric7/E5Network/E5SslCertificatesDialog.ui file | annotate | diff | comparison | revisions
eric7/E5Network/E5SslCertificatesInfoDialog.py file | annotate | diff | comparison | revisions
eric7/E5Network/E5SslCertificatesInfoDialog.ui file | annotate | diff | comparison | revisions
eric7/E5Network/E5SslCertificatesInfoWidget.py file | annotate | diff | comparison | revisions
eric7/E5Network/E5SslCertificatesInfoWidget.ui file | annotate | diff | comparison | revisions
eric7/E5Network/E5SslErrorHandler.py file | annotate | diff | comparison | revisions
eric7/E5Network/E5SslInfoWidget.py file | annotate | diff | comparison | revisions
eric7/E5Network/E5SslUtilities.py file | annotate | diff | comparison | revisions
eric7/E5Network/E5TldExtractor.py file | annotate | diff | comparison | revisions
eric7/E5Network/E5UrlInfo.py file | annotate | diff | comparison | revisions
eric7/E5Network/E5XmlRpcClient.py file | annotate | diff | comparison | revisions
eric7/E5Network/__init__.py file | annotate | diff | comparison | revisions
eric7/E5Network/data/__init__.py file | annotate | diff | comparison | revisions
eric7/E5Network/data/effective_tld_names.dat file | annotate | diff | comparison | revisions
eric7/E5Network/data/test_psl.txt file | annotate | diff | comparison | revisions
eric7/E5Utilities/E5Cache.py file | annotate | diff | comparison | revisions
eric7/E5Utilities/E5MutexLocker.py file | annotate | diff | comparison | revisions
eric7/E5Utilities/__init__.py file | annotate | diff | comparison | revisions
eric7/EricNetwork/EricFtp.py file | annotate | diff | comparison | revisions
eric7/EricNetwork/EricGoogleMail.py file | annotate | diff | comparison | revisions
eric7/EricNetwork/EricGoogleMailHelpers.py file | annotate | diff | comparison | revisions
eric7/EricNetwork/EricJsonClient.py file | annotate | diff | comparison | revisions
eric7/EricNetwork/EricJsonServer.py file | annotate | diff | comparison | revisions
eric7/EricNetwork/EricNetworkProxyFactory.py file | annotate | diff | comparison | revisions
eric7/EricNetwork/EricSslCertificateSelectionDialog.py file | annotate | diff | comparison | revisions
eric7/EricNetwork/EricSslCertificateSelectionDialog.ui file | annotate | diff | comparison | revisions
eric7/EricNetwork/EricSslCertificatesDialog.py file | annotate | diff | comparison | revisions
eric7/EricNetwork/EricSslCertificatesDialog.ui file | annotate | diff | comparison | revisions
eric7/EricNetwork/EricSslCertificatesInfoDialog.py file | annotate | diff | comparison | revisions
eric7/EricNetwork/EricSslCertificatesInfoDialog.ui file | annotate | diff | comparison | revisions
eric7/EricNetwork/EricSslCertificatesInfoWidget.py file | annotate | diff | comparison | revisions
eric7/EricNetwork/EricSslCertificatesInfoWidget.ui file | annotate | diff | comparison | revisions
eric7/EricNetwork/EricSslErrorHandler.py file | annotate | diff | comparison | revisions
eric7/EricNetwork/EricSslInfoWidget.py file | annotate | diff | comparison | revisions
eric7/EricNetwork/EricSslUtilities.py file | annotate | diff | comparison | revisions
eric7/EricNetwork/EricTldExtractor.py file | annotate | diff | comparison | revisions
eric7/EricNetwork/EricUrlInfo.py file | annotate | diff | comparison | revisions
eric7/EricNetwork/__init__.py file | annotate | diff | comparison | revisions
eric7/EricNetwork/data/__init__.py file | annotate | diff | comparison | revisions
eric7/EricNetwork/data/effective_tld_names.dat file | annotate | diff | comparison | revisions
eric7/EricNetwork/data/test_psl.txt file | annotate | diff | comparison | revisions
eric7/EricUtilities/EricCache.py file | annotate | diff | comparison | revisions
eric7/EricUtilities/EricMutexLocker.py file | annotate | diff | comparison | revisions
eric7/EricUtilities/__init__.py file | annotate | diff | comparison | revisions
eric7/Network/IRC/IrcWidget.py file | annotate | diff | comparison | revisions
eric7/PipInterface/Pip.py file | annotate | diff | comparison | revisions
eric7/PluginManager/PluginManager.py file | annotate | diff | comparison | revisions
eric7/PluginManager/PluginRepositoryDialog.py file | annotate | diff | comparison | revisions
eric7/Plugins/UiExtensionPlugins/Translator/TranslatorEngines/IbmWatsonEngine.py file | annotate | diff | comparison | revisions
eric7/Plugins/UiExtensionPlugins/Translator/TranslatorRequest.py file | annotate | diff | comparison | revisions
eric7/Plugins/VcsPlugins/vcsPySvn/SvnBlameDialog.py file | annotate | diff | comparison | revisions
eric7/Plugins/VcsPlugins/vcsPySvn/SvnChangeListsDialog.py file | annotate | diff | comparison | revisions
eric7/Plugins/VcsPlugins/vcsPySvn/SvnDiffDialog.py file | annotate | diff | comparison | revisions
eric7/Plugins/VcsPlugins/vcsPySvn/SvnInfoDialog.py file | annotate | diff | comparison | revisions
eric7/Plugins/VcsPlugins/vcsPySvn/SvnLogBrowserDialog.py file | annotate | diff | comparison | revisions
eric7/Plugins/VcsPlugins/vcsPySvn/SvnPropListDialog.py file | annotate | diff | comparison | revisions
eric7/Plugins/VcsPlugins/vcsPySvn/SvnRepoBrowserDialog.py file | annotate | diff | comparison | revisions
eric7/Plugins/VcsPlugins/vcsPySvn/SvnStatusDialog.py file | annotate | diff | comparison | revisions
eric7/Plugins/VcsPlugins/vcsPySvn/SvnTagBranchListDialog.py file | annotate | diff | comparison | revisions
eric7/Plugins/VcsPlugins/vcsPySvn/subversion.py file | annotate | diff | comparison | revisions
eric7/Preferences/ConfigurationPages/EmailPage.py file | annotate | diff | comparison | revisions
eric7/Preferences/ConfigurationPages/NetworkPage.py file | annotate | diff | comparison | revisions
eric7/Preferences/__init__.py file | annotate | diff | comparison | revisions
eric7/QScintilla/Editor.py file | annotate | diff | comparison | revisions
eric7/UI/EmailDialog.py file | annotate | diff | comparison | revisions
eric7/UI/UserInterface.py file | annotate | diff | comparison | revisions
eric7/Utilities/FtpUtilities.py file | annotate | diff | comparison | revisions
eric7/WebBrowser/AdBlock/AdBlockManager.py file | annotate | diff | comparison | revisions
eric7/WebBrowser/Network/EricSchemeHandler.py file | annotate | diff | comparison | revisions
eric7/WebBrowser/Network/NetworkManager.py file | annotate | diff | comparison | revisions
eric7/WebBrowser/Network/NetworkUrlInterceptor.py file | annotate | diff | comparison | revisions
eric7/WebBrowser/Network/QtHelpSchemeHandler.py file | annotate | diff | comparison | revisions
eric7/WebBrowser/SiteInfo/SiteInfoDialog.ui file | annotate | diff | comparison | revisions
eric7/WebBrowser/Sync/FtpSyncHandler.py file | annotate | diff | comparison | revisions
eric7/WebBrowser/TabManager/TabManagerWidget.py file | annotate | diff | comparison | revisions
eric7/WebBrowser/WebBrowserPage.py file | annotate | diff | comparison | revisions
eric7/WebBrowser/WebBrowserView.py file | annotate | diff | comparison | revisions
eric7/WebBrowser/WebBrowserWindow.py file | annotate | diff | comparison | revisions
eric7/eric7.py file | annotate | diff | comparison | revisions
scripts/install.py file | annotate | diff | comparison | revisions
--- a/eric7.epj	Sat May 22 12:54:57 2021 +0200
+++ b/eric7.epj	Sat May 22 16:52:45 2021 +0200
@@ -2,7 +2,7 @@
   "header": {
     "comment": "eric project file for project eric7",
     "copyright": "Copyright (C) 2021 Detlev Offenbach, detlev@die-offenbachs.de",
-    "saved": "2021-05-22, 11:10:19"
+    "saved": "2021-05-22, 16:56:28"
   },
   "project": {
     "AUTHOR": "Detlev Offenbach",
@@ -294,11 +294,6 @@
       "eric7/E5Gui/E5StringListEditWidget.ui",
       "eric7/E5Gui/E5ToolBarDialog.ui",
       "eric7/E5Gui/E5ZoomWidget.ui",
-      "eric7/E5Network/E5NetworkHeaderDetailsDialog.ui",
-      "eric7/E5Network/E5SslCertificateSelectionDialog.ui",
-      "eric7/E5Network/E5SslCertificatesDialog.ui",
-      "eric7/E5Network/E5SslCertificatesInfoDialog.ui",
-      "eric7/E5Network/E5SslCertificatesInfoWidget.ui",
       "eric7/Graphics/UMLSceneSizeDialog.ui",
       "eric7/HexEdit/HexEditGotoWidget.ui",
       "eric7/HexEdit/HexEditReplaceWidget.ui",
@@ -710,7 +705,11 @@
       "eric7/WebBrowser/WebBrowserClearPrivateDataDialog.ui",
       "eric7/WebBrowser/WebBrowserLanguagesDialog.ui",
       "eric7/WebBrowser/ZoomManager/ZoomValuesDialog.ui",
-      "eric7/MicroPython/ConnectionSelectionDialog.ui"
+      "eric7/MicroPython/ConnectionSelectionDialog.ui",
+      "eric7/EricNetwork/EricSslCertificateSelectionDialog.ui",
+      "eric7/EricNetwork/EricSslCertificatesDialog.ui",
+      "eric7/EricNetwork/EricSslCertificatesInfoDialog.ui",
+      "eric7/EricNetwork/EricSslCertificatesInfoWidget.ui"
     ],
     "HASH": "df7daa8781250f7664e6ecaeaf1361fa2efd39ee",
     "IDLPARAMS": {
@@ -769,8 +768,6 @@
       "eric7/DesignerTemplates",
       "eric7/Documentation/Help",
       "eric7/Documentation/Source",
-      "eric7/E5Network/data/effective_tld_names.dat",
-      "eric7/E5Network/data/test_psl.txt",
       "eric7/IconEditor/cursors/aim-cursor.xpm",
       "eric7/IconEditor/cursors/colorpicker-cursor.xpm",
       "eric7/IconEditor/cursors/eraser-cursor.xpm",
@@ -931,7 +928,9 @@
       "eric7/DebugClients/Python/coverage/doc/CHANGES.rst",
       "eric7/DebugClients/Python/coverage/doc/LICENSE.txt",
       "eric7/DebugClients/Python/coverage/doc/CONTRIBUTORS.txt",
-      "eric7/DebugClients/Python/coverage/doc/README.rst"
+      "eric7/DebugClients/Python/coverage/doc/README.rst",
+      "eric7/EricNetwork/data/effective_tld_names.dat",
+      "eric7/EricNetwork/data/test_psl.txt"
     ],
     "OTHERTOOLSPARMS": {
       "CodeMetrics": {
@@ -1122,27 +1121,6 @@
       "eric7/E5Gui/E5TreeWidget.py",
       "eric7/E5Gui/E5ZoomWidget.py",
       "eric7/E5Gui/__init__.py",
-      "eric7/E5Network/E5Ftp.py",
-      "eric7/E5Network/E5GoogleMail.py",
-      "eric7/E5Network/E5GoogleMailHelpers.py",
-      "eric7/E5Network/E5NetworkHeaderDetailsDialog.py",
-      "eric7/E5Network/E5NetworkProxyFactory.py",
-      "eric7/E5Network/E5RFC6266.py",
-      "eric7/E5Network/E5SslCertificateSelectionDialog.py",
-      "eric7/E5Network/E5SslCertificatesDialog.py",
-      "eric7/E5Network/E5SslCertificatesInfoDialog.py",
-      "eric7/E5Network/E5SslCertificatesInfoWidget.py",
-      "eric7/E5Network/E5SslErrorHandler.py",
-      "eric7/E5Network/E5SslInfoWidget.py",
-      "eric7/E5Network/E5SslUtilities.py",
-      "eric7/E5Network/E5TldExtractor.py",
-      "eric7/E5Network/E5UrlInfo.py",
-      "eric7/E5Network/E5XmlRpcClient.py",
-      "eric7/E5Network/__init__.py",
-      "eric7/E5Network/data/__init__.py",
-      "eric7/E5Utilities/E5Cache.py",
-      "eric7/E5Utilities/E5MutexLocker.py",
-      "eric7/E5Utilities/__init__.py",
       "eric7/Globals/AppInfo.py",
       "eric7/Globals/__init__.py",
       "eric7/Graphics/ApplicationDiagramBuilder.py",
@@ -2207,8 +2185,6 @@
       "eric7/Plugins/CheckerPlugins/CodeStyleChecker/Annotations/AnnotationsFunctionVisitor.py",
       "eric7/Plugins/CheckerPlugins/CodeStyleChecker/Annotations/AnnotationsEnums.py",
       "eric7/Plugins/CheckerPlugins/CodeStyleChecker/Annotations/AnnotationsCheckerDefaults.py",
-      "eric7/E5Network/E5JsonClient.py",
-      "eric7/E5Network/E5JsonServer.py",
       "eric7/eric7_api.py",
       "eric7/eric7_browser.py",
       "eric7/eric7_browser.pyw",
@@ -2268,7 +2244,27 @@
       "eric7/EricXML/TemplatesReader.py",
       "eric7/EricXML/UserProjectReader.py",
       "eric7/EricXML/XMLStreamReaderBase.py",
-      "eric7/EricXML/__init__.py"
+      "eric7/EricXML/__init__.py",
+      "eric7/EricUtilities/__init__.py",
+      "eric7/EricUtilities/EricMutexLocker.py",
+      "eric7/EricUtilities/EricCache.py",
+      "eric7/EricNetwork/__init__.py",
+      "eric7/EricNetwork/data/__init__.py",
+      "eric7/EricNetwork/EricFtp.py",
+      "eric7/EricNetwork/EricGoogleMail.py",
+      "eric7/EricNetwork/EricGoogleMailHelpers.py",
+      "eric7/EricNetwork/EricJsonClient.py",
+      "eric7/EricNetwork/EricJsonServer.py",
+      "eric7/EricNetwork/EricNetworkProxyFactory.py",
+      "eric7/EricNetwork/EricSslCertificateSelectionDialog.py",
+      "eric7/EricNetwork/EricSslCertificatesDialog.py",
+      "eric7/EricNetwork/EricSslCertificatesInfoDialog.py",
+      "eric7/EricNetwork/EricSslCertificatesInfoWidget.py",
+      "eric7/EricNetwork/EricSslErrorHandler.py",
+      "eric7/EricNetwork/EricSslInfoWidget.py",
+      "eric7/EricNetwork/EricSslUtilities.py",
+      "eric7/EricNetwork/EricTldExtractor.py",
+      "eric7/EricNetwork/EricUrlInfo.py"
     ],
     "SPELLEXCLUDES": "Dictionaries/excludes.dic",
     "SPELLLANGUAGE": "en_US",
--- a/eric7/E5Network/E5Ftp.py	Sat May 22 12:54:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,369 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2012 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-"""
-Module implementing an extension to the Python FTP class to support FTP
-proxies.
-"""
-
-import enum
-import ftplib           # secok
-from socket import _GLOBAL_DEFAULT_TIMEOUT
-
-
-class E5FtpProxyError(ftplib.Error):
-    """
-    Class to signal an error related to proxy configuration.
-    
-    The error message starts with a three digit error code followed by a
-    space and the error string. Supported error codes are:
-    <ul>
-      <li>910: proxy error; the second number gives the category of the proxy
-          error. The original response from the proxy is appended in the next
-          line.</li>
-      <li>930: proxy error; the second number gives the category of the proxy
-          error. The original response from the proxy is appended in the next
-          line.</li>
-      <li>940: proxy error; the second number gives the category of the proxy
-          error. The original response from the proxy is appended in the next
-          line.</li>
-      <li>950: proxy error; the second number gives the category of the proxy
-          error. The original response from the proxy is appended in the next
-          line.</li>
-      <li>990: proxy usage is enabled but no proxy host given</li>
-      <li>991: proxy usage is enabled but no proxy user given</li>
-      <li>992: proxy usage is enabled but no proxy password given</li>
-    </ul>
-    """
-    pass
-
-
-class E5FtpProxyType(enum.Enum):
-    """
-    Class defining the supported FTP proxy types.
-    """
-    NO_PROXY = 0                    # no proxy
-    NON_AUTHORIZING = 1             # non authorizing proxy
-    USER_SERVER = 2                 # proxy login first, than user@remote.host
-    SITE = 3                        # proxy login first, than use SITE command
-    OPEN = 4                        # proxy login first, than use OPEN command
-    USER_PROXYUSER_SERVER = 5       # one login for both
-    PROXYUSER_SERVER = 6
-    # proxy login with remote host given, than normal remote login
-    AUTH_RESP = 7  # authenticate to proxy with AUTH and RESP commands
-    BLUECOAT = 8                    # bluecoat proxy
-
-
-class E5Ftp(ftplib.FTP):
-    """
-    Class implementing an extension to the Python FTP class to support FTP
-    proxies.
-    """
-    def __init__(self, host="", user="", password="", acct="",          # secok
-                 proxyType=E5FtpProxyType.NO_PROXY, proxyHost="",
-                 proxyPort=ftplib.FTP_PORT, proxyUser="", proxyPassword="",
-                 proxyAccount="", timeout=_GLOBAL_DEFAULT_TIMEOUT):
-        """
-        Constructor
-        
-        @param host name of the FTP host
-        @type str
-        @param user user name for login to FTP host
-        @type str
-        @param password password for login to FTP host
-        @type str
-        @param acct account for login to FTP host
-        @type str
-        @param proxyType type of the FTP proxy
-        @type E5FtpProxyType
-        @param proxyHost name of the FTP proxy
-        @type str
-        @param proxyPort port of the FTP proxy
-        @type int
-        @param proxyUser user name for login to the proxy
-        @type str
-        @param proxyPassword password for login to the proxy
-        @type str
-        @param proxyAccount accounting info for the proxy
-        @type str
-        @param timeout timeout in seconds for blocking operations
-        @type int
-        """
-        super().__init__()
-        
-        self.__timeout = timeout
-        
-        self.__proxyType = proxyType
-        self.__proxyHost = proxyHost
-        self.__proxyPort = proxyPort
-        self.__proxyUser = proxyUser
-        self.__proxyPassword = proxyPassword
-        self.__proxyAccount = proxyAccount
-        
-        self.__host = host
-        self.__port = ftplib.FTP_PORT
-        self.__user = user
-        self.__password = password
-        self.__acct = acct
-        
-        if host:
-            self.connect(host)
-            if user:
-                self.login(user, password, acct)
-    
-    def setProxy(self, proxyType=E5FtpProxyType.NO_PROXY, proxyHost="",
-                 proxyPort=ftplib.FTP_PORT, proxyUser="", proxyPassword="",
-                 proxyAccount=""):
-        """
-        Public method to set the proxy configuration.
-        
-        @param proxyType type of the FTP proxy
-        @type E5FtpProxyType
-        @param proxyHost name of the FTP proxy
-        @type str
-        @param proxyPort port of the FTP proxy
-        @type int
-        @param proxyUser user name for login to the proxy
-        @type str
-        @param proxyPassword password  for login to the proxy
-        @type str
-        @param proxyAccount accounting info for the proxy
-        @type str
-        """
-        self.__proxyType = proxyType
-        self.__proxyHost = proxyHost
-        self.__proxyPort = proxyPort
-        self.__proxyUser = proxyUser
-        self.__proxyPassword = proxyPassword
-        self.__proxyAccount = proxyAccount
-    
-    def setProxyAuthentication(self, proxyUser="", proxyPassword="",
-                               proxyAccount=""):
-        """
-        Public method to set the proxy authentication info.
-        
-        @param proxyUser user name for login to the proxy
-        @type str
-        @param proxyPassword password  for login to the proxy
-        @type str
-        @param proxyAccount accounting info for the proxy
-        @type str
-        """
-        self.__proxyUser = proxyUser
-        self.__proxyPassword = proxyPassword
-        self.__proxyAccount = proxyAccount
-    
-    def connect(self, host="", port=0, timeout=-999):
-        """
-        Public method to connect to the given FTP server.
-        
-        This extended method connects to the proxy instead of the given host,
-        if a proxy is to be used. It throws an exception, if the proxy data
-        is incomplete.
-        
-        @param host name of the FTP host
-        @type str
-        @param port port of the FTP host
-        @type int
-        @param timeout timeout in seconds for blocking operations
-        @type int
-        @return welcome message of the server
-        @rtype str
-        @exception E5FtpProxyError raised to indicate a proxy related issue
-        """
-        if host:
-            self.__host = host
-        if port:
-            self.__port = port
-        if timeout != -999:
-            self.__timeout = timeout
-        
-        if self.__proxyType != E5FtpProxyType.NO_PROXY:
-            if not self.__proxyHost:
-                raise E5FtpProxyError(
-                    "990 Proxy usage requested, but no proxy host given.")
-            
-            return super().connect(
-                self.__proxyHost, self.__proxyPort, self.__timeout)
-        else:
-            return super().connect(
-                self.__host, self.__port, self.__timeout)
-    
-    def login(self, user="", password="", acct=""):         # secok
-        """
-        Public method to login to the FTP server.
-        
-        This extended method respects the FTP proxy configuration. There are
-        many different FTP proxy products available. But unfortunately there
-        is no standard for how o traverse a FTP proxy. The lis below shows
-        the sequence of commands used.
-        
-        <table>
-          <tr><td>user</td><td>Username for remote host</td></tr>
-          <tr><td>pass</td><td>Password for remote host</td></tr>
-          <tr><td>pruser</td><td>Username for FTP proxy</td></tr>
-          <tr><td>prpass</td><td>Password for FTP proxy</td></tr>
-          <tr><td>remote.host</td><td>Hostname of the remote FTP server</td>
-          </tr>
-        </table>
-        
-        <dl>
-          <dt>E5FtpProxyType.NO_PROXY:</dt>
-          <dd>
-            USER user<br/>
-            PASS pass
-          </dd>
-          <dt>E5FtpProxyType.NON_AUTHORIZING:</dt>
-          <dd>
-            USER user@remote.host<br/>
-            PASS pass
-          </dd>
-          <dt>E5FtpProxyType.USER_SERVER:</dt>
-          <dd>
-            USER pruser<br/>
-            PASS prpass<br/>
-            USER user@remote.host<br/>
-            PASS pass
-          </dd>
-          <dt>E5FtpProxyType.SITE:</dt>
-          <dd>
-            USER pruser<br/>
-            PASS prpass<br/>
-            SITE remote.site<br/>
-            USER user<br/>
-            PASS pass
-          </dd>
-          <dt>E5FtpProxyType.OPEN:</dt>
-          <dd>
-            USER pruser<br/>
-            PASS prpass<br/>
-            OPEN remote.site<br/>
-            USER user<br/>
-            PASS pass
-          </dd>
-          <dt>E5FtpProxyType.USER_PROXYUSER_SERVER:</dt>
-          <dd>
-            USER user@pruser@remote.host<br/>
-            PASS pass@prpass
-          </dd>
-          <dt>E5FtpProxyType.PROXYUSER_SERVER:</dt>
-          <dd>
-            USER pruser@remote.host<br/>
-            PASS prpass<br/>
-            USER user<br/>
-            PASS pass
-          </dd>
-          <dt>E5FtpProxyType.AUTH_RESP:</dt>
-          <dd>
-            USER user@remote.host<br/>
-            PASS pass<br/>
-            AUTH pruser<br/>
-            RESP prpass
-          </dd>
-          <dt>E5FtpProxyType.BLUECOAT:</dt>
-          <dd>
-            USER user@remote.host pruser<br/>
-            PASS pass<br/>
-            ACCT prpass
-          </dd>
-        </dl>
-        
-        @param user username for the remote host
-        @type str
-        @param password password for the remote host
-        @type str
-        @param acct accounting information for the remote host
-        @type str
-        @return response sent by the remote host
-        @rtype str
-        @exception E5FtpProxyError raised to indicate a proxy related issue
-        @exception ftplib.error_reply raised to indicate an FTP error reply
-        """
-        if not user:
-            user = "anonymous"
-        if not password:
-            # make sure it is a string
-            password = ""           # secok
-        if not acct:
-            # make sure it is a string
-            acct = ""
-        if user == "anonymous" and password in {'', '-'}:
-            password += "anonymous@"
-        
-        if self.__proxyType != E5FtpProxyType.NO_PROXY:
-            if self.__proxyType != E5FtpProxyType.NON_AUTHORIZING:
-                # check, if a valid proxy configuration is known
-                if not self.__proxyUser:
-                    raise E5FtpProxyError(
-                        "991 Proxy usage requested, but no proxy user given")
-                if not self.__proxyPassword:
-                    raise E5FtpProxyError(
-                        "992 Proxy usage requested, but no proxy password"
-                        " given")
-            
-            if self.__proxyType in [E5FtpProxyType.NON_AUTHORIZING,
-                                    E5FtpProxyType.AUTH_RESP,
-                                    E5FtpProxyType.BLUECOAT]:
-                user += "@" + self.__host
-                if self.__proxyType == E5FtpProxyType.BLUECOAT:
-                    user += " " + self.__proxyUser
-                    acct = self.__proxyPassword
-            elif self.__proxyType == E5FtpProxyType.USER_PROXYUSER_SERVER:
-                user = "{0}@{1}@{2}".format(
-                    user, self.__proxyUser, self.__host)
-                password = "{0}@{1}".format(password, self.__proxyPassword)
-            else:
-                pruser = self.__proxyUser
-                if self.__proxyType == E5FtpProxyType.USER_SERVER:
-                    user += "@" + self.__host
-                elif self.__proxyType == E5FtpProxyType.PROXYUSER_SERVER:
-                    pruser += "@" + self.__host
-                
-                # authenticate to the proxy first
-                presp = self.sendcmd("USER " + pruser)
-                if presp[0] == "3":
-                    presp = self.sendcmd("PASS " + self.__proxyPassword)
-                if presp[0] == "3" and self.__proxyAccount:
-                    presp = self.sendcmd("ACCT " + self.__proxyAccount)
-                if presp[0] != "2":
-                    raise E5FtpProxyError(
-                        "9{0}0 Error authorizing at proxy\n{1}".format(
-                            presp[0], presp))
-                
-                if self.__proxyType == E5FtpProxyType.SITE:
-                    # send SITE command
-                    presp = self.sendcmd("SITE " + self.__host)
-                    if presp[0] != "2":
-                        raise E5FtpProxyError(
-                            "9{0}0 Error sending SITE command\n{1}".format(
-                                presp[0], presp))
-                elif self.__proxyType == E5FtpProxyType.OPEN:
-                    # send OPEN command
-                    presp = self.sendcmd("OPEN " + self.__host)
-                    if presp[0] != "2":
-                        raise E5FtpProxyError(
-                            "9{0}0 Error sending OPEN command\n{1}".format(
-                                presp[0], presp))
-        
-        # authenticate to the remote host or combined to proxy and remote host
-        resp = self.sendcmd("USER " + user)
-        if resp[0] == "3":
-            resp = self.sendcmd("PASS " + password)
-        if resp[0] == "3":
-            resp = self.sendcmd("ACCT " + acct)
-        if resp[0] != "2":
-            raise ftplib.error_reply(resp)          # secok
-        
-        if self.__proxyType == E5FtpProxyType.AUTH_RESP:
-            # authorize to the FTP proxy
-            presp = self.sendcmd("AUTH " + self.__proxyUser)
-            if presp[0] == "3":
-                presp = self.sendcmd("RESP " + self.__proxyPassword)
-            if presp[0] != "2":
-                raise E5FtpProxyError(
-                    "9{0}0 Error authorizing at proxy\n{1}".format(
-                        presp[0], presp))
-        
-        return resp
--- a/eric7/E5Network/E5GoogleMail.py	Sat May 22 12:54:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,359 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2017 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-"""
-Module implementing a dialog to send bug reports.
-"""
-
-import os
-import base64
-import json
-import datetime
-import contextlib
-
-from googleapiclient import discovery
-from google.oauth2.credentials import Credentials
-from requests_oauthlib import OAuth2Session
-
-from PyQt6.QtCore import pyqtSlot, pyqtSignal, QObject, QUrl, QUrlQuery
-from PyQt6.QtWidgets import QDialog, QDialogButtonBox, QVBoxLayout
-
-from E5Gui.E5TextInputDialog import E5TextInputDialog
-
-import Globals
-
-from .E5GoogleMailHelpers import (
-    CLIENT_SECRET_FILE, SCOPES, TOKEN_FILE, APPLICATION_NAME
-)
-
-
-class E5GoogleMailAuthBrowser(QDialog):
-    """
-    Class implementing a simple web browser to perform the OAuth2
-    authentication process.
-    
-    @signal approvalCodeReceived(str) emitted to indicate the receipt of the
-        approval code
-    """
-    approvalCodeReceived = pyqtSignal(str)
-    
-    def __init__(self, parent=None):
-        """
-        Constructor
-        
-        @param parent reference to the parent widget
-        @type QWidget
-        """
-        super().__init__(parent)
-        
-        self.__layout = QVBoxLayout(self)
-        
-        from PyQt6.QtWebEngineWidgets import QWebEngineView
-        self.__browser = QWebEngineView(self)
-        self.__browser.titleChanged.connect(self.__titleChanged)
-        self.__browser.loadFinished.connect(self.__pageLoadFinished)
-        self.__layout.addWidget(self.__browser)
-        
-        self.__buttonBox = QDialogButtonBox(
-            QDialogButtonBox.StandardButton.Close)
-        self.__buttonBox.rejected.connect(self.reject)
-        self.__layout.addWidget(self.__buttonBox)
-        
-        self.resize(600, 700)
-    
-    @pyqtSlot(str)
-    def __titleChanged(self, title):
-        """
-        Private slot handling changes of the web page title.
-        
-        @param title web page title
-        @type str
-        """
-        self.setWindowTitle(title)
-    
-    @pyqtSlot()
-    def __pageLoadFinished(self):
-        """
-        Private slot handling the loadFinished signal.
-        """
-        url = self.__browser.url()
-        if url.toString().startswith(
-                "https://accounts.google.com/o/oauth2/approval/v2"):
-            urlQuery = QUrlQuery(url)
-            approvalCode = urlQuery.queryItemValue(
-                "approvalCode", QUrl.ComponentFormattingOption.FullyDecoded)
-            if approvalCode:
-                self.approvalCodeReceived.emit(approvalCode)
-                self.close()
-    
-    def load(self, url):
-        """
-        Public method to start the authorization flow by loading the given URL.
-        
-        @param url URL to be laoded
-        @type str or QUrl
-        """
-        self.__browser.setUrl(QUrl(url))
-
-
-class E5GoogleMail(QObject):
-    """
-    Class implementing the logic to send emails via Google Mail.
-    
-    @signal sendResult(bool, str) emitted to indicate the transmission result
-        and a result message
-    """
-    sendResult = pyqtSignal(bool, str)
-    
-    def __init__(self, parent=None):
-        """
-        Constructor
-        
-        @param parent reference to the parent object
-        @type QObject
-        """
-        super().__init__(parent=parent)
-        
-        self.__messages = []
-        
-        self.__session = None
-        self.__clientConfig = {}
-        
-        self.__browser = None
-    
-    def sendMessage(self, message):
-        """
-        Public method to send a message via Google Mail.
-        
-        @param message email message to be sent
-        @type email.mime.text.MIMEBase
-        """
-        self.__messages.append(message)
-        
-        if not self.__session:
-            self.__startSession()
-        else:
-            self.__doSendMessages()
-    
-    def __prepareMessage(self, message):
-        """
-        Private method to prepare the message for sending.
-        
-        @param message message to be prepared
-        @type email.mime.text.MIMEBase
-        @return prepared message dictionary
-        @rtype dict
-        """
-        messageAsBase64 = base64.urlsafe_b64encode(message.as_bytes())
-        raw = messageAsBase64.decode()
-        return {'raw': raw}
-    
-    def __startSession(self):
-        """
-        Private method to start an authorized session and optionally start the
-        authorization flow.
-        """
-        # check for availability of secrets file
-        if not os.path.exists(os.path.join(Globals.getConfigDir(),
-                                           CLIENT_SECRET_FILE)):
-            self.sendResult.emit(
-                False,
-                self.tr("The client secrets file is not present. Has the Gmail"
-                        " API been enabled?")
-            )
-            return
-        
-        with open(os.path.join(Globals.getConfigDir(), CLIENT_SECRET_FILE),
-                  "r") as clientSecret:
-            clientData = json.load(clientSecret)
-            self.__clientConfig = clientData['installed']
-        token = self.__loadToken()
-        if token is None:
-            # no valid OAuth2 token available
-            self.__session = OAuth2Session(
-                self.__clientConfig['client_id'],
-                scope=SCOPES,
-                redirect_uri=self.__clientConfig['redirect_uris'][0]
-            )
-            authorizationUrl, _ = self.__session.authorization_url(
-                self.__clientConfig['auth_uri'],
-                access_type="offline",
-                prompt="select_account"
-            )
-            if self.__browser is None:
-                with contextlib.suppress(ImportError):
-                    self.__browser = E5GoogleMailAuthBrowser()
-                    self.__browser.approvalCodeReceived.connect(
-                        self.__processAuthorization)
-            if self.__browser:
-                self.__browser.show()
-                self.__browser.load(QUrl(authorizationUrl))
-            else:
-                from PyQt6.QtGui import QDesktopServices
-                QDesktopServices.openUrl(QUrl(authorizationUrl))
-                ok, authCode = E5TextInputDialog.getText(
-                    None,
-                    self.tr("OAuth2 Authorization Code"),
-                    self.tr("Enter the OAuth2 authorization code:"))
-                if ok and authCode:
-                    self.__processAuthorization(authCode)
-                else:
-                    self.__session = None
-        else:
-            self.__session = OAuth2Session(
-                self.__clientConfig['client_id'],
-                scope=SCOPES,
-                redirect_uri=self.__clientConfig['redirect_uris'][0],
-                token=token,
-                auto_refresh_kwargs={
-                    'client_id': self.__clientConfig['client_id'],
-                    'client_secret': self.__clientConfig['client_secret'],
-                },
-                auto_refresh_url=self.__clientConfig['token_uri'],
-                token_updater=self.__saveToken)
-            self.__doSendMessages()
-    
-    @pyqtSlot(str)
-    def __processAuthorization(self, authCode):
-        """
-        Private slot to process the received authorization code.
-        
-        @param authCode received authorization code
-        @type str
-        """
-        self.__session.fetch_token(
-            self.__clientConfig['token_uri'],
-            client_secret=self.__clientConfig['client_secret'],
-            code=authCode)
-        self.__saveToken(self.__session.token)
-        
-        # authorization completed; now send all queued messages
-        self.__doSendMessages()
-    
-    def __doSendMessages(self):
-        """
-        Private method to send all queued messages.
-        """
-        if not self.__session:
-            self.sendResult.emit(
-                False,
-                self.tr("No authorized session available.")
-            )
-            return
-        
-        try:
-            results = []
-            credentials = self.__credentialsFromSession()
-            service = discovery.build('gmail', 'v1', credentials=credentials,
-                                      cache_discovery=False)
-            count = 0
-            while self.__messages:
-                count += 1
-                message = self.__messages.pop(0)
-                message1 = self.__prepareMessage(message)
-                service.users().messages().send(
-                    userId="me", body=message1).execute()
-                results.append(self.tr("Message #{0} sent.").format(count))
-
-            self.sendResult.emit(True, "\n\n".join(results))
-        except Exception as error:
-            self.sendResult.emit(False, str(error))
-    
-    def __loadToken(self):
-        """
-        Private method to load a token from the token file.
-        
-        @return loaded token
-        @rtype dict or None
-        """
-        homeDir = os.path.expanduser('~')
-        credentialsDir = os.path.join(homeDir, '.credentials')
-        if not os.path.exists(credentialsDir):
-            os.makedirs(credentialsDir)
-        tokenPath = os.path.join(credentialsDir, TOKEN_FILE)
-        
-        if os.path.exists(tokenPath):
-            with open(tokenPath, "r") as tokenFile:
-                return json.load(tokenFile)
-        else:
-            return None
-    
-    def __saveToken(self, token):
-        """
-        Private method to save a token to the token file.
-        
-        @param token token to be saved
-        @type dict
-        """
-        homeDir = os.path.expanduser('~')
-        credentialsDir = os.path.join(homeDir, '.credentials')
-        if not os.path.exists(credentialsDir):
-            os.makedirs(credentialsDir)
-        tokenPath = os.path.join(credentialsDir, TOKEN_FILE)
-        
-        with open(tokenPath, "w") as tokenFile:
-            json.dump(token, tokenFile)
-    
-    def __credentialsFromSession(self):
-        """
-        Private method to create a credentials object.
-        
-        @return created credentials object
-        @rtype google.oauth2.credentials.Credentials
-        """
-        credentials = None
-        
-        if self.__clientConfig and self.__session:
-            token = self.__session.token
-            if token:
-                credentials = Credentials(
-                    token['access_token'],
-                    refresh_token=token.get('refresh_token'),
-                    id_token=token.get('id_token'),
-                    token_uri=self.__clientConfig['token_uri'],
-                    client_id=self.__clientConfig['client_id'],
-                    client_secret=self.__clientConfig['client_secret'],
-                    scopes=SCOPES
-                )
-                credentials.expiry = datetime.datetime.fromtimestamp(
-                    token['expires_at'])
-        
-        return credentials
-
-
-def GoogleMailHelp():
-    """
-    Module function to get some help about how to enable the Google Mail
-    OAuth2 service.
-    
-    @return help text
-    @rtype str
-    """
-    return (
-        "<h2>Steps to turn on the Gmail API</h2>"
-        "<ol>"
-        "<li>Use <a href='{0}'>this wizard</a> to create or select a project"
-        " in the Google Developers Console and automatically turn on the API."
-        " Click <b>Continue</b>, then <b>Go to credentials</b>.</li>"
-        "<li>At the top of the page, select the <b>OAuth consent screen</b>"
-        " tab. Select an <b>Email address</b>, enter a <b>Product name</b> if"
-        " not already set, and click the <b>Save</b> button.</li>"
-        "<li>Select the <b>Credentials</b> tab, click the <b>Add credentials"
-        "</b> button and select <b>OAuth 2.0 client ID</b>.</li>"
-        "<li>Select the application type <b>Other</b>, enter the name &quot;"
-        "{1}&quot;, and click the <b>Create</b>"
-        " button.</li>"
-        "<li>Click <b>OK</b> to dismiss the resulting dialog.</li>"
-        "<li>Click the (Download JSON) button to the right of the client ID."
-        "</li>"
-        "<li>Move this file to the eric configuration directory"
-        " <code>{2}</code> and rename it <code>{3}</code>.</li>"
-        "</ol>".format(
-            "https://console.developers.google.com/start/api?id=gmail",
-            APPLICATION_NAME,
-            Globals.getConfigDir(),
-            CLIENT_SECRET_FILE
-        )
-    )
--- a/eric7/E5Network/E5GoogleMailHelpers.py	Sat May 22 12:54:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2019 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-"""
-Module implementing some helpers for Google mail.
-"""
-
-import os
-
-import Globals
-
-SCOPES = 'https://www.googleapis.com/auth/gmail.send'
-CLIENT_SECRET_FILE = 'eric_client_secret.json'          # secok
-TOKEN_FILE = 'eric_python_email_send_token.json'        # secok
-APPLICATION_NAME = 'Eric Python Send Email'
-
-RequiredPackages = (
-    "google-api-python-client",
-    "requests-oauthlib",
-)
-
-
-def isClientSecretFileAvailable():
-    """
-    Module function to check, if the client secret file has been installed.
-    
-    @return flag indicating, that the credentials file is there
-    @rtype bool
-    """
-    return os.path.exists(
-        os.path.join(Globals.getConfigDir(), CLIENT_SECRET_FILE))
-
-
-def getInstallCommand():
-    """
-    Module function to get the install command to get the Google mail support
-    activated.
-    
-    @return install command
-    @rtype str
-    """
-    pipCommand = "pip install --upgrade {0}".format(
-        " ".join(RequiredPackages))
-    
-    return pipCommand
--- a/eric7/E5Network/E5JsonClient.py	Sat May 22 12:54:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,203 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2017 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-"""
-Module implementing the JSON based client base class.
-"""
-
-import io
-import sys
-import socket
-import select
-import traceback
-import json
-import contextlib
-
-
-class E5JsonClient:
-    """
-    Class implementing a JSON based client base class.
-    """
-    def __init__(self, host, port, idString=""):
-        """
-        Constructor
-        
-        @param host ip address the background service is listening
-        @type str
-        @param port port of the background service
-        @type int
-        @param idString assigned client id to be sent back to the server in
-            order to identify the connection
-        @type str
-        """
-        self.__connection = socket.create_connection((host, port))
-        if idString:
-            reply = idString + '\n'
-            self.__connection.sendall(reply.encode('utf8', 'backslashreplace'))
-    
-    def sendJson(self, command, params):
-        """
-        Public method to send a single refactoring command to the server.
-        
-        @param command command name to be sent
-        @type str
-        @param params dictionary of named parameters for the command
-        @type dict
-        """
-        commandDict = {
-            "jsonrpc": "2.0",
-            "method": command,
-            "params": params,
-        }
-        cmd = json.dumps(commandDict) + '\n'
-        self.__connection.sendall(cmd.encode('utf8', 'backslashreplace'))
-    
-    def __receiveJson(self):
-        """
-        Private method to receive a JSON encode command and data from the
-        server.
-        
-        @return tuple containing the received command and a dictionary
-            containing the associated data
-        @rtype tuple of (str, dict)
-        """
-        # step 1: receive the data
-        # The JSON RPC string is prefixed by a 9 character long length field.
-        length = self.__connection.recv(9)
-        if len(length) < 9:
-            # invalid length string received
-            return None, None
-        
-        length = int(length)
-        data = b''
-        while len(data) < length:
-            newData = self.__connection.recv(length - len(data))
-            if not newData:
-                return None, None
-            
-            data += newData
-        
-        # step 2: decode and convert the data
-        line = data.decode(
-            'utf8', 'backslashreplace')
-        try:
-            commandDict = json.loads(line.strip())
-        except (TypeError, ValueError) as err:
-            self.sendJson("ClientException", {
-                "ExceptionType": "ProtocolError",
-                "ExceptionValue": str(err),
-                "ProtocolData": line.strip(),
-            })
-            return None, None
-        
-        method = commandDict["method"]
-        params = commandDict["params"]
-        
-        return method, params
-    
-    def handleCall(self, method, params):
-        """
-        Public method to handle a method call from the server.
-        
-        Note: This is an empty implementation that must be overridden in
-        derived classes.
-        
-        @param method requested method name
-        @type str
-        @param params dictionary with method specific parameters
-        @type dict
-        """
-        pass
-    
-    def run(self):
-        """
-        Public method implementing the main loop of the client.
-        """
-        try:
-            selectErrors = 0
-            while selectErrors <= 10:  # selected arbitrarily
-                try:
-                    rrdy, wrdy, xrdy = select.select(
-                        [self.__connection], [], [])
-                    
-                    # Just waiting for self.__connection. Therefor no check
-                    # needed.
-                    method, params = self.__receiveJson()
-                    if method is None:
-                        selectErrors += 1
-                    elif method == "Exit":
-                        break
-                    else:
-                        self.handleCall(method, params)
-                        
-                        # reset select errors
-                        selectErrors = 0
-                
-                except (select.error, KeyboardInterrupt, socket.error):
-                    selectErrors += 1
-        
-        except Exception:
-            exctype, excval, exctb = sys.exc_info()
-            tbinfofile = io.StringIO()
-            traceback.print_tb(exctb, None, tbinfofile)
-            tbinfofile.seek(0)
-            tbinfo = tbinfofile.read()
-            del exctb
-            self.sendJson("ClientException", {
-                "ExceptionType": str(exctype),
-                "ExceptionValue": str(excval),
-                "Traceback": tbinfo,
-            })
-
-        # Give time to process latest response on server side
-        with contextlib.suppress(socket.error, OSError):
-            self.__connection.shutdown(socket.SHUT_RDWR)
-            self.__connection.close()
-    
-    def poll(self, waitMethod=""):
-        """
-        Public method to check and receive one message (if available).
-        
-        @param waitMethod name of a method to wait for
-        @type str
-        @return dictionary containing the data of the waited for method
-        @rtype dict
-        """
-        try:
-            if waitMethod:
-                rrdy, wrdy, xrdy = select.select(
-                    [self.__connection], [], [])
-            else:
-                rrdy, wrdy, xrdy = select.select(
-                    [self.__connection], [], [], 0)
-            
-            if self.__connection in rrdy:
-                method, params = self.__receiveJson()
-                if method is not None:
-                    if method == "Exit":
-                        self.__exitClient = True
-                    elif method == waitMethod:
-                        return params
-                    else:
-                        self.handleCall(method, params)
-        
-        except (select.error, KeyboardInterrupt, socket.error):
-            # just ignore these
-            pass
-        
-        except Exception:
-            exctype, excval, exctb = sys.exc_info()
-            tbinfofile = io.StringIO()
-            traceback.print_tb(exctb, None, tbinfofile)
-            tbinfofile.seek(0)
-            tbinfo = tbinfofile.read()
-            del exctb
-            self.sendJson("ClientException", {
-                "ExceptionType": str(exctype),
-                "ExceptionValue": str(excval),
-                "Traceback": tbinfo,
-            })
-        
-        return None
--- a/eric7/E5Network/E5JsonServer.py	Sat May 22 12:54:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,335 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2017 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-"""
-Module implementing the JSON based server base class.
-"""
-
-import contextlib
-import json
-
-from PyQt6.QtCore import (
-    pyqtSlot, QProcess, QProcessEnvironment, QCoreApplication, QEventLoop,
-    QTimer
-)
-from PyQt6.QtNetwork import QTcpServer, QHostAddress
-
-from E5Gui import E5MessageBox
-
-import Preferences
-import Utilities
-
-
-class E5JsonServer(QTcpServer):
-    """
-    Class implementing a JSON based server base class.
-    """
-    def __init__(self, name="", multiplex=False, parent=None):
-        """
-        Constructor
-        
-        @param name name of the server (used for output only)
-        @type str
-        @param multiplex flag indicating a multiplexing server
-        @type bool
-        @param parent parent object
-        @type QObject
-        """
-        super().__init__(parent)
-        
-        self.__name = name
-        self.__multiplex = multiplex
-        if self.__multiplex:
-            self.__clientProcesses = {}
-            self.__connections = {}
-        else:
-            self.__clientProcess = None
-            self.__connection = None
-        
-        # setup the network interface
-        networkInterface = Preferences.getDebugger("NetworkInterface")
-        if networkInterface == "all" or '.' in networkInterface:
-            # IPv4
-            self.__hostAddress = '127.0.0.1'
-        else:
-            # IPv6
-            self.__hostAddress = '::1'
-        self.listen(QHostAddress(self.__hostAddress))
-
-        self.newConnection.connect(self.handleNewConnection)
-        
-        port = self.serverPort()
-        ## Note: Need the port if client is started external in debugger.
-        print('JSON server ({1}) listening on: {0:d}'   # __IGNORE_WARNING__
-              .format(port, self.__name))
-    
-    @pyqtSlot()
-    def handleNewConnection(self):
-        """
-        Public slot for new incoming connections from a client.
-        """
-        connection = self.nextPendingConnection()
-        if not connection.isValid():
-            return
-        
-        if self.__multiplex:
-            if not connection.waitForReadyRead(3000):
-                return
-            idString = bytes(connection.readLine()).decode(
-                "utf-8", 'backslashreplace').strip()
-            if idString in self.__connections:
-                self.__connections[idString].close()
-            self.__connections[idString] = connection
-        else:
-            idString = ""
-            if self.__connection is not None:
-                self.__connection.close()
-            
-            self.__connection = connection
-        
-        connection.readyRead.connect(
-            lambda: self.__receiveJson(idString))
-        connection.disconnected.connect(
-            lambda: self.__handleDisconnect(idString))
-    
-    @pyqtSlot()
-    def __handleDisconnect(self, idString):
-        """
-        Private slot handling a disconnect of the client.
-        
-        @param idString id of the connection been disconnected
-        @type str
-        """
-        if idString:
-            if idString in self.__connections:
-                self.__connections[idString].close()
-                del self.__connections[idString]
-        else:
-            if self.__connection is not None:
-                self.__connection.close()
-            
-            self.__connection = None
-    
-    def connectionNames(self):
-        """
-        Public method to get the list of active connection names.
-        
-        If this is not a multiplexing server, an empty list is returned.
-        
-        @return list of active connection names
-        @rtype list of str
-        """
-        if self.__multiplex:
-            return list(self.__connections.keys())
-        else:
-            return []
-    
-    @pyqtSlot()
-    def __receiveJson(self, idString):
-        """
-        Private slot handling received data from the client.
-        
-        @param idString id of the connection been disconnected
-        @type str
-        """
-        if idString:
-            try:
-                connection = self.__connections[idString]
-            except KeyError:
-                connection = None
-        else:
-            connection = self.__connection
-        
-        while connection and connection.canReadLine():
-            data = connection.readLine()
-            jsonLine = bytes(data).decode("utf-8", 'backslashreplace')
-            
-            #- print("JSON Server ({0}): {1}".format(self.__name, jsonLine))
-            #- this is for debugging only
-            
-            try:
-                clientDict = json.loads(jsonLine.strip())
-            except (TypeError, ValueError) as err:
-                E5MessageBox.critical(
-                    None,
-                    self.tr("JSON Protocol Error"),
-                    self.tr("""<p>The response received from the client"""
-                            """ could not be decoded. Please report"""
-                            """ this issue with the received data to the"""
-                            """ eric bugs email address.</p>"""
-                            """<p>Error: {0}</p>"""
-                            """<p>Data:<br/>{1}</p>""").format(
-                        str(err), Utilities.html_encode(jsonLine.strip())),
-                    E5MessageBox.Ok)
-                return
-            
-            self.handleCall(clientDict["method"], clientDict["params"])
-    
-    def sendJson(self, command, params, flush=False, idString=""):
-        """
-        Public method to send a single command to a client.
-        
-        @param command command name to be sent
-        @type str
-        @param params dictionary of named parameters for the command
-        @type dict
-        @param flush flag indicating to flush the data to the socket
-        @type bool
-        @param idString id of the connection to send data to
-        @type str
-        """
-        commandDict = {
-            "jsonrpc": "2.0",
-            "method": command,
-            "params": params,
-        }
-        cmd = json.dumps(commandDict) + '\n'
-        
-        if idString:
-            try:
-                connection = self.__connections[idString]
-            except KeyError:
-                connection = None
-        else:
-            connection = self.__connection
-        
-        if connection is not None:
-            data = cmd.encode('utf8', 'backslashreplace')
-            length = "{0:09d}".format(len(data))
-            connection.write(length.encode() + data)
-            if flush:
-                connection.flush()
-    
-    def startClient(self, interpreter, clientScript, clientArgs, idString="",
-                    environment=None):
-        """
-        Public method to start a client process.
-        
-        @param interpreter interpreter to be used for the client
-        @type str
-        @param clientScript path to the client script
-        @type str
-        @param clientArgs list of arguments for the client
-        @param idString id of the client to be started
-        @type str
-        @param environment dictionary of environment settings to pass
-        @type dict
-        @return flag indicating a successful client start and the exit code
-            in case of an issue
-        @rtype bool, int
-        """
-        if interpreter == "" or not Utilities.isinpath(interpreter):
-            return False
-        
-        exitCode = None
-        
-        proc = QProcess()
-        proc.setProcessChannelMode(
-            QProcess.ProcessChannelMode.ForwardedChannels)
-        if environment is not None:
-            env = QProcessEnvironment()
-            for key, value in list(environment.items()):
-                env.insert(key, value)
-            proc.setProcessEnvironment(env)
-        args = [clientScript, self.__hostAddress, str(self.serverPort())]
-        if idString:
-            args.append(idString)
-        args.extend(clientArgs)
-        proc.start(interpreter, args)
-        if not proc.waitForStarted(10000):
-            proc = None
-        
-        if idString:
-            self.__clientProcesses[idString] = proc
-            if proc:
-                timer = QTimer()
-                timer.setSingleShot(True)
-                timer.start(30000)           # 30s timeout
-                while (
-                    idString not in self.connectionNames() and
-                    timer.isActive()
-                ):
-                    # Give the event loop the chance to process the new
-                    # connection of the client (= slow start).
-                    QCoreApplication.processEvents(
-                        QEventLoop.ProcessEventsFlag.ExcludeUserInputEvents)
-                    
-                    # check if client exited prematurely
-                    if proc.state() == QProcess.ProcessState.NotRunning:
-                        exitCode = proc.exitCode()
-                        proc = None
-                        self.__clientProcesses[idString] = None
-                        break
-        else:
-            if proc:
-                timer = QTimer()
-                timer.setSingleShot(True)
-                timer.start(1000)           # 1s timeout
-                while timer.isActive():
-                    # check if client exited prematurely
-                    QCoreApplication.processEvents(
-                        QEventLoop.ProcessEventsFlag.ExcludeUserInputEvents)
-                    if proc.state() == QProcess.ProcessState.NotRunning:
-                        exitCode = proc.exitCode()
-                        proc = None
-                        break
-            self.__clientProcess = proc
-        
-        return proc is not None, exitCode
-    
-    def stopClient(self, idString=""):
-        """
-        Public method to stop a client process.
-        
-        @param idString id of the client to be stopped
-        @type str
-        """
-        self.sendJson("Exit", {}, flush=True, idString=idString)
-        
-        if idString:
-            try:
-                connection = self.__connections[idString]
-            except KeyError:
-                connection = None
-        else:
-            connection = self.__connection
-        if connection is not None:
-            connection.waitForDisconnected()
-        
-        if idString:
-            with contextlib.suppress(KeyError):
-                if self .__clientProcesses[idString] is not None:
-                    self .__clientProcesses[idString].close()
-                del self.__clientProcesses[idString]
-        else:
-            if self.__clientProcess is not None:
-                self.__clientProcess.close()
-                self.__clientProcess = None
-    
-    def stopAllClients(self):
-        """
-        Public method to stop all clients.
-        """
-        clientNames = self.connectionNames()[:]
-        for clientName in clientNames:
-            self.stopClient(clientName)
-    
-    #######################################################################
-    ## The following methods should be overridden by derived classes
-    #######################################################################
-    
-    def handleCall(self, method, params):
-        """
-        Public method to handle a method call from the client.
-        
-        Note: This is an empty implementation that must be overridden in
-        derived classes.
-        
-        @param method requested method name
-        @type str
-        @param params dictionary with method specific parameters
-        @type dict
-        """
-        pass
--- a/eric7/E5Network/E5NetworkHeaderDetailsDialog.py	Sat May 22 12:54:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2009 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-"""
-Module implementing a dialog to show the data of a response or reply header.
-"""
-
-from PyQt6.QtCore import Qt
-from PyQt6.QtWidgets import QDialog
-
-from .Ui_E5NetworkHeaderDetailsDialog import Ui_E5NetworkHeaderDetailsDialog
-
-
-class E5NetworkHeaderDetailsDialog(QDialog, Ui_E5NetworkHeaderDetailsDialog):
-    """
-    Class implementing a dialog to show the data of a response or reply header.
-    """
-    def __init__(self, parent=None):
-        """
-        Constructor
-        
-        @param parent reference to the parent object (QWidget)
-        """
-        super().__init__(parent)
-        self.setupUi(self)
-        self.setWindowFlags(Qt.WindowType.Window)
-    
-    def setData(self, name, value):
-        """
-        Public method to set the data to display.
-        
-        @param name name of the header (string)
-        @param value value of the header (string)
-        """
-        self.nameEdit.setText(name)
-        self.valueEdit.setPlainText(value)
--- a/eric7/E5Network/E5NetworkHeaderDetailsDialog.ui	Sat May 22 12:54:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>E5NetworkHeaderDetailsDialog</class>
- <widget class="QDialog" name="E5NetworkHeaderDetailsDialog">
-  <property name="geometry">
-   <rect>
-    <x>0</x>
-    <y>0</y>
-    <width>500</width>
-    <height>350</height>
-   </rect>
-  </property>
-  <property name="windowTitle">
-   <string>Header Details</string>
-  </property>
-  <property name="sizeGripEnabled">
-   <bool>true</bool>
-  </property>
-  <layout class="QVBoxLayout" name="verticalLayout">
-   <item>
-    <widget class="QLabel" name="label">
-     <property name="text">
-      <string>Name:</string>
-     </property>
-    </widget>
-   </item>
-   <item>
-    <widget class="QLineEdit" name="nameEdit">
-     <property name="readOnly">
-      <bool>true</bool>
-     </property>
-    </widget>
-   </item>
-   <item>
-    <widget class="QLabel" name="label_2">
-     <property name="text">
-      <string>Value:</string>
-     </property>
-    </widget>
-   </item>
-   <item>
-    <widget class="QPlainTextEdit" name="valueEdit">
-     <property name="tabChangesFocus">
-      <bool>true</bool>
-     </property>
-     <property name="readOnly">
-      <bool>true</bool>
-     </property>
-    </widget>
-   </item>
-   <item>
-    <widget class="QDialogButtonBox" name="buttonBox">
-     <property name="orientation">
-      <enum>Qt::Horizontal</enum>
-     </property>
-     <property name="standardButtons">
-      <set>QDialogButtonBox::Close</set>
-     </property>
-    </widget>
-   </item>
-  </layout>
- </widget>
- <resources/>
- <connections>
-  <connection>
-   <sender>buttonBox</sender>
-   <signal>accepted()</signal>
-   <receiver>E5NetworkHeaderDetailsDialog</receiver>
-   <slot>accept()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>248</x>
-     <y>254</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>157</x>
-     <y>274</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>buttonBox</sender>
-   <signal>rejected()</signal>
-   <receiver>E5NetworkHeaderDetailsDialog</receiver>
-   <slot>reject()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>316</x>
-     <y>260</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>286</x>
-     <y>274</y>
-    </hint>
-   </hints>
-  </connection>
- </connections>
-</ui>
--- a/eric7/E5Network/E5NetworkProxyFactory.py	Sat May 22 12:54:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,261 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2010 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-"""
-Module implementing a network proxy factory.
-"""
-
-import os
-import re
-
-from PyQt6.QtCore import QUrl, QCoreApplication
-from PyQt6.QtWidgets import QDialog
-from PyQt6.QtNetwork import (
-    QNetworkProxyFactory, QNetworkProxy, QNetworkProxyQuery
-)
-
-from E5Gui import E5MessageBox
-
-import Preferences
-import Globals
-import Utilities
-
-
-def schemeFromProxyType(proxyType):
-    """
-    Module function to determine the scheme name from the proxy type.
-    
-    @param proxyType type of the proxy (QNetworkProxy.ProxyType)
-    @return scheme (string, one of Http, Https, Ftp)
-    """
-    scheme = ""
-    if proxyType == QNetworkProxy.ProxyType.HttpProxy:
-        scheme = "Http"
-    elif proxyType == QNetworkProxy.ProxyType.HttpCachingProxy:
-        scheme = "Https"
-    elif proxyType == QNetworkProxy.ProxyType.FtpCachingProxy:
-        scheme = "Ftp"
-    elif proxyType == QNetworkProxy.ProxyType.NoProxy:
-        scheme = "NoProxy"
-    return scheme
-
-
-def proxyAuthenticationRequired(proxy, auth):
-    """
-    Module slot to handle a proxy authentication request.
-    
-    @param proxy reference to the proxy object (QNetworkProxy)
-    @param auth reference to the authenticator object (QAuthenticator)
-    """
-    info = QCoreApplication.translate(
-        "E5NetworkProxyFactory",
-        "<b>Connect to proxy '{0}' using:</b>"
-    ).format(Utilities.html_encode(proxy.hostName()))
-    
-    from UI.AuthenticationDialog import AuthenticationDialog
-    dlg = AuthenticationDialog(info, proxy.user(), True)
-    dlg.setData(proxy.user(), proxy.password())
-    if dlg.exec() == QDialog.DialogCode.Accepted:
-        username, password = dlg.getData()
-        auth.setUser(username)
-        auth.setPassword(password)
-        if dlg.shallSave():
-            scheme = schemeFromProxyType(proxy.type())
-            if scheme and scheme != "NoProxy":
-                Preferences.setUI("ProxyUser/{0}".format(scheme), username)
-                Preferences.setUI("ProxyPassword/{0}".format(scheme), password)
-            proxy.setUser(username)
-            proxy.setPassword(password)
-
-
-class HostnameMatcher:
-    """
-    Class implementing a matcher for host names.
-    """
-    def __init__(self, pattern):
-        """
-        Constructor
-        
-        @param pattern pattern to be matched against
-        @type str
-        """
-        self.__regExp = None
-        self.setPattern(pattern)
-    
-    def setPattern(self, pattern):
-        """
-        Public method to set the match pattern.
-        
-        @param pattern pattern to be matched against
-        """
-        self.__pattern = pattern
-        
-        if "?" in pattern or "*" in pattern:
-            regexp = "^.*{0}.*$".format(
-                pattern
-                .replace(".", "\\.")
-                .replace("*", ".*")
-                .replace("?", ".")
-            )
-            self.__regExp = re.compile(regexp, re.IGNORECASE)
-    
-    def pattern(self):
-        """
-        Public method to get the match pattern.
-        
-        @return match pattern
-        @rtype str
-        """
-        return self.__pattern
-    
-    def match(self, host):
-        """
-        Public method to test the given string.
-        
-        @param host host name to be matched
-        @type str
-        @return flag indicating a successful match
-        @rtype bool
-        """
-        if self.__regExp is None:
-            return self.__pattern in host
-        
-        return self.__regExp.search(host) is not None
-
-
-class E5NetworkProxyFactory(QNetworkProxyFactory):
-    """
-    Class implementing a network proxy factory.
-    """
-    def __init__(self):
-        """
-        Constructor
-        """
-        super().__init__()
-        
-        self.__hostnameMatchers = []
-        self.__exceptions = ""
-    
-    def __setExceptions(self, exceptions):
-        """
-        Private method to set the host name exceptions.
-        
-        @param exceptions list of exceptions separated by ','
-        @type str
-        """
-        self.__hostnameMatchers = []
-        self.__exceptions = exceptions
-        for exception in self.__exceptions.split(","):
-            self.__hostnameMatchers.append(HostnameMatcher(exception.strip()))
-    
-    def queryProxy(self, query):
-        """
-        Public method to determine a proxy for a given query.
-        
-        @param query reference to the query object (QNetworkProxyQuery)
-        @return list of proxies in order of preference (list of QNetworkProxy)
-        """
-        if (
-            query.queryType() == QNetworkProxyQuery.QueryType.UrlRequest and
-            query.protocolTag() in ["http", "https", "ftp"]
-        ):
-            # use proxy at all ?
-            if not Preferences.getUI("UseProxy"):
-                return [QNetworkProxy(QNetworkProxy.ProxyType.NoProxy)]
-            
-            # test for exceptions
-            exceptions = Preferences.getUI("ProxyExceptions")
-            if exceptions != self.__exceptions:
-                self.__setExceptions(exceptions)
-            urlHost = query.url().host()
-            for matcher in self.__hostnameMatchers:
-                if matcher.match(urlHost):
-                    return [QNetworkProxy(QNetworkProxy.ProxyType.NoProxy)]
-            
-            # determine proxy
-            if Preferences.getUI("UseSystemProxy"):
-                proxyList = QNetworkProxyFactory.systemProxyForQuery(query)
-                if (
-                    not Globals.isWindowsPlatform() and
-                    len(proxyList) == 1 and
-                    proxyList[0].type() == QNetworkProxy.ProxyType.NoProxy
-                ):
-                    # try it the Python way
-                    # scan the environment for variables named <scheme>_proxy
-                    # scan over whole environment to make this case insensitive
-                    for name, value in os.environ.items():
-                        name = name.lower()
-                        if (
-                            value and
-                            name[-6:] == '_proxy' and
-                            name[:-6] == query.protocolTag().lower()
-                        ):
-                            url = QUrl(value)
-                            if url.scheme() in ["http", "https"]:
-                                proxyType = QNetworkProxy.ProxyType.HttpProxy
-                            elif url.scheme() == "ftp":
-                                proxyType = (
-                                    QNetworkProxy.ProxyType.FtpCachingProxy
-                                )
-                            else:
-                                proxyType = QNetworkProxy.ProxyType.HttpProxy
-                            proxy = QNetworkProxy(
-                                proxyType, url.host(), url.port(),
-                                url.userName(), url.password())
-                            proxyList = [proxy]
-                            break
-                if proxyList:
-                    scheme = schemeFromProxyType(proxyList[0].type())
-                    if scheme == "":
-                        scheme = "Http"
-                    if scheme != "NoProxy":
-                        proxyList[0].setUser(
-                            Preferences.getUI("ProxyUser/{0}".format(scheme)))
-                        proxyList[0].setPassword(
-                            Preferences.getUI(
-                                "ProxyPassword/{0}".format(scheme)))
-                    return proxyList
-                else:
-                    return [QNetworkProxy(QNetworkProxy.ProxyType.NoProxy)]
-            else:
-                if Preferences.getUI("UseHttpProxyForAll"):
-                    protocolKey = "Http"
-                else:
-                    protocolKey = query.protocolTag().capitalize()
-                host = Preferences.getUI("ProxyHost/{0}".format(protocolKey))
-                if not host:
-                    E5MessageBox.critical(
-                        None,
-                        QCoreApplication.translate(
-                            "E5NetworkProxyFactory",
-                            "Proxy Configuration Error"),
-                        QCoreApplication.translate(
-                            "E5NetworkProxyFactory",
-                            """Proxy usage was activated"""
-                            """ but no proxy host for protocol"""
-                            """ '{0}' configured.""").format(protocolKey))
-                    return [
-                        QNetworkProxy(QNetworkProxy.ProxyType.DefaultProxy)
-                    ]
-                else:
-                    if protocolKey in ["Http", "Https", "Ftp"]:
-                        if query.protocolTag() == "ftp":
-                            proxyType = QNetworkProxy.ProxyType.FtpCachingProxy
-                        else:
-                            proxyType = QNetworkProxy.ProxyType.HttpProxy
-                        proxy = QNetworkProxy(
-                            proxyType, host,
-                            Preferences.getUI("ProxyPort/" + protocolKey),
-                            Preferences.getUI("ProxyUser/" + protocolKey),
-                            Preferences.getUI("ProxyPassword/" + protocolKey))
-                    else:
-                        proxy = QNetworkProxy(
-                            QNetworkProxy.ProxyType.DefaultProxy)
-                    return [
-                        proxy,
-                        QNetworkProxy(QNetworkProxy.ProxyType.DefaultProxy)
-                    ]
-        else:
-            return [QNetworkProxy(QNetworkProxy.ProxyType.NoProxy)]
--- a/eric7/E5Network/E5RFC6266.py	Sat May 22 12:54:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,358 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2015 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-"""
-Module implementing a Content-Disposition parser iaw. RFC 6266.
-"""
-
-#
-# This code is adapted from the rfc6266.py module of qutebrowser.
-# Original copyright 2014-2015 Florian Bruhin (The Compiler)
-# <mail@qutebrowser.org>
-#
-
-import urllib.parse as parse
-import collections
-import string
-import re
-
-try:
-    import pypeg2 as peg
-
-    class UniqueNamespace(peg.Namespace):
-        """
-        A pyPEG2 namespace which prevents setting a value twice.
-        """
-        def __setitem__(self, key, value):
-            """
-            Special method to set an item.
-            
-            @param key key for the item
-            @param value value of the item
-            """
-            if key in self:
-                raise DuplicateParamError(key)
-            super().__setitem__(key, value)
-
-    # RFC 2616
-    separator_chars = "()<>@,;:\\\"/[]?={} \t"      # __IGNORE_WARNING_M613__
-    ctl_chars = ''.join(chr(i) for i in range(32)) + chr(127)
-    nontoken_chars = separator_chars + ctl_chars
-
-    # RFC 5987
-    attr_chars_nonalnum = '!#$&+-.^_`|~'
-    attr_chars = string.ascii_letters + string.digits + attr_chars_nonalnum
-
-    # RFC 5987 gives this alternative construction of the token character class
-    token_chars = attr_chars + "*'%"        # __IGNORE_WARNING_M601__
-
-    # Definitions from https://tools.ietf.org/html/rfc2616#section-2.2
-    # token was redefined from attr_chars to avoid using AnyBut,
-    # which might include non-ascii octets.
-    token_re = '[{0}]+'.format(re.escape(token_chars))
-
-    class Token(str):
-        """
-        A token (RFC 2616, Section 2.2).
-        """
-        grammar = re.compile(token_re)
-
-    # RFC 2616 says some linear whitespace (LWS) is in fact allowed in text
-    # and qdtext; however it also mentions folding that whitespace into
-    # a single SP (which isn't in CTL) before interpretation.
-    # Assume the caller already that folding when parsing headers.
-
-    # Note: qdtext also allows non-ascii, which we choose to parse
-    # as ISO-8859-1; rejecting it entirely would also be permitted.
-    # Some broken browsers attempt encoding-sniffing, which is broken
-    # because the spec only allows iso, and because encoding-sniffing
-    # can mangle valid values.
-    # Everything else in this grammar (including RFC 5987 ext values)
-    # is in an ascii-safe encoding.
-
-    qdtext_re = r'[^"{0}]'.format(re.escape(ctl_chars))
-    quoted_pair_re = r'\\[{0}]'.format(re.escape(
-        ''.join(chr(i) for i in range(128))))
-
-    class QuotedString(str):
-        """
-        A quoted string (RFC 2616, Section 2.2).
-        """
-        grammar = re.compile(r'"({0}|{1})+"'.format(quoted_pair_re, qdtext_re))
-
-        def __str__(self):
-            s = super().__str__()
-            s = s[1:-1]  # remove quotes
-            s = re.sub(r'\\(.)', r'\1', s)  # drop backslashes
-            return s
-
-    class Value(str):
-        """
-        A value. (RFC 2616, Section 3.6).
-        """
-        grammar = [re.compile(token_re), QuotedString]
-
-    class Charset(str):
-        """
-        A charset (RFC5987, Section 3.2.1).
-        """
-        # Other charsets are forbidden, the spec reserves them
-        # for future evolutions.
-        grammar = re.compile('UTF-8|ISO-8859-1', re.I)
-
-    class Language(str):
-        """
-        A language-tag (RFC 5646, Section 2.1).
-
-        Fixme: This grammar is not 100% correct yet.
-        https://github.com/The-Compiler/qutebrowser/issues/105
-        """
-        grammar = re.compile('[A-Za-z0-9-]+')
-
-    attr_char_re = '[{0}]'.format(re.escape(attr_chars))
-    hex_digit_re = '%[' + string.hexdigits + ']{2}'
-
-    class ValueChars(str):
-        """
-        A value of an attribute.
-
-        Fixme: Can we merge this with Value?
-        https://github.com/The-Compiler/qutebrowser/issues/105
-        """
-        grammar = re.compile('({0}|{1})*'.format(attr_char_re, hex_digit_re))
-
-    class ExtValue(peg.List):
-        """
-        An ext-value of an attribute (RFC 5987, Section 3.2).
-        """
-        grammar = peg.contiguous(Charset, "'", peg.optional(Language), "'",
-                                 ValueChars)
-
-    class ExtToken(peg.Symbol):
-        """
-        A token introducing an extended value (RFC 6266, Section 4.1).
-        """
-        regex = re.compile(token_re + r'\*')
-
-        def __str__(self):
-            return super().__str__().lower()
-
-    class NoExtToken(peg.Symbol):
-        """
-        A token introducing a normal value (RFC 6266, Section 4.1).
-        """
-        regex = re.compile(token_re + r'(?<!\*)')
-
-        def __str__(self):
-            return super().__str__().lower()
-
-    class DispositionParm(str):
-        """
-        A parameter for the Disposition-Type header (RFC6266, Section 4.1).
-        """
-        grammar = peg.attr('name', NoExtToken), '=', Value
-
-    class ExtDispositionParm:
-        """
-        An extended parameter (RFC6266, Section 4.1).
-        """
-        grammar = peg.attr('name', ExtToken), '=', ExtValue
-
-        def __init__(self, value, name=None):
-            self.name = name
-            self.value = value
-
-    class DispositionType(peg.List):
-        """
-        The disposition type (RFC6266, Section 4.1).
-        """
-        grammar = [re.compile('(inline|attachment)', re.I), Token]
-
-    class DispositionParmList(UniqueNamespace):
-        """
-        A list of disposition parameters (RFC6266, Section 4.1).
-        """
-        grammar = peg.maybe_some(';', [ExtDispositionParm, DispositionParm])
-
-    class ContentDispositionValue:
-        """
-        A complete Content-Disposition value (RFC 6266, Section 4.1).
-        """
-        # Allows nonconformant final semicolon
-        # I've seen it in the wild, and browsers accept it
-        # http://greenbytes.de/tech/tc2231/#attwithasciifilenamenqs
-        grammar = (peg.attr('dtype', DispositionType),
-                   peg.attr('params', DispositionParmList),
-                   peg.optional(';'))
-
-    LangTagged = collections.namedtuple('LangTagged', ['string', 'langtag'])
-
-    class DuplicateParamError(Exception):
-        """
-        Exception raised when a parameter has been given twice.
-        """
-
-    class InvalidISO8859Error(Exception):
-        """
-        Exception raised when a byte is invalid in ISO-8859-1.
-        """
-
-    class ContentDisposition:
-        """
-        Records various indications and hints about content disposition.
-
-        These can be used to know if a file should be downloaded or
-        displayed directly, and to hint what filename it should have
-        in the download case.
-        """
-        def __init__(self, disposition='inline', assocs=None):
-            """
-            Used internally after parsing the header.
-
-            Instances should generally be created from a factory
-            function, such as parse_headers and its variants.
-            """
-            if len(disposition) != 1:
-                self.disposition = 'inline'
-            else:
-                self.disposition = disposition[0]
-            if assocs is None:
-                self.assocs = {}
-            else:
-                self.assocs = dict(assocs)  # So we can change values
-                if 'filename*' in self.assocs:
-                    param = self.assocs['filename*']
-                    if isinstance(param, ExtDispositionParm):
-                        self.assocs['filename*'] = (
-                            parse_ext_value(param.value).string
-                        )
-
-        def filename(self):
-            """
-            The filename from the Content-Disposition header or None.
-
-            On safety:
-            This property records the intent of the sender.
-
-            You shouldn't use this sender-controlled value as a filesystem
-            path, it can be insecure. Serving files with this filename can be
-            dangerous as well, due to a certain browser using the part after
-            the dot for mime-sniffing.  Saving it to a database is fine by
-            itself though.
-            """
-            if 'filename*' in self.assocs:
-                return self.assocs['filename*']
-            elif 'filename' in self.assocs:
-                # XXX Reject non-ascii (parsed via qdtext) here?
-                return self.assocs['filename']
-            else:
-                return None
-
-        def is_inline(self):
-            """
-            Return if the file should be handled inline.
-
-            If not, and unless your application supports other dispositions
-            than the standard inline and attachment, it should be handled
-            as an attachment.
-            """
-            return self.disposition.lower() == 'inline'
-
-    def normalize_ws(text):
-        """
-        Do LWS (linear whitespace) folding.
-        """
-        return ' '.join(text.split())
-
-    def parse_headers(content_disposition):
-        """
-        Build a ContentDisposition from header values.
-        
-        @param content_disposition contents of the disposition header
-        @type bytes
-        """
-        # We allow non-ascii here (it will only be parsed inside of qdtext, and
-        # rejected by the grammar if it appears in other places), although
-        # parsing it can be ambiguous.  Parsing it ensures that a non-ambiguous
-        # filename* value won't get dismissed because of an unrelated ambiguity
-        # in the filename parameter. But it does mean we occasionally give
-        # less-than-certain values for some legacy senders.
-        content_disposition = content_disposition.decode('iso-8859-1')
-        
-        # Our parsing is relaxed in these regards:
-        # - The grammar allows a final ';' in the header;
-        # - We do LWS-folding, and possibly normalise other broken
-        #   whitespace, instead of rejecting non-lws-safe text.
-        # XXX Would prefer to accept only the quoted whitespace
-        # case, rather than normalising everything.
-        content_disposition = normalize_ws(content_disposition)
-        try:
-            parsed = peg.parse(content_disposition, ContentDispositionValue)
-        except (SyntaxError, DuplicateParamError, InvalidISO8859Error):
-            return ContentDisposition()
-        else:
-            return ContentDisposition(disposition=parsed.dtype,
-                                      assocs=parsed.params)
-
-    def parse_ext_value(val):
-        """
-        Parse the value of an extended attribute.
-        """
-        if len(val) == 3:
-            charset, langtag, coded = val
-        else:
-            charset, coded = val
-            langtag = None
-        decoded = parse.unquote(coded, charset, errors='strict')
-        if charset == 'iso-8859-1':
-            # Fail if the filename contains an invalid ISO-8859-1 char
-            for c in decoded:
-                if 0x7F <= ord(c) <= 0x9F:
-                    raise InvalidISO8859Error(c)
-        return LangTagged(decoded, langtag)
-
-except ImportError:
-    class ContentDisposition:
-        """
-        Records various indications and hints about content disposition.
-
-        These can be used to know if a file should be downloaded or
-        displayed directly, and to hint what filename it should have
-        in the download case.
-        """
-        def __init__(self, filename):
-            """
-            Constructor
-            
-            @param filename file name to be stored in this surrogate class
-            @type str
-            """
-            self.__filename = filename
-        
-        def filename(self):
-            """
-            Public method to get the stored file name
-            
-            @return file name
-            @rtype str
-            """
-            return self.__filename
-    
-    def parse_headers(content_disposition):
-        """
-        Build a ContentDisposition from header values.
-        
-        @param content_disposition contents of the disposition header
-        @type bytes
-        """
-        header = content_disposition.decode()
-        if header:
-            pos = header.find("filename=")
-            if pos != -1:
-                path = header[pos + 9:]
-                if path.startswith('"') and path.endswith('"'):
-                    path = path[1:-1]
-                return ContentDisposition(path)
-        return ContentDisposition("")
--- a/eric7/E5Network/E5SslCertificateSelectionDialog.py	Sat May 22 12:54:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,147 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2019 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-"""
-Module implementing a dialog to select a SSL certificate.
-"""
-
-import contextlib
-
-from PyQt6.QtCore import pyqtSlot, Qt
-from PyQt6.QtWidgets import QDialog, QDialogButtonBox, QTreeWidgetItem
-with contextlib.suppress(ImportError):
-    from PyQt6.QtNetwork import QSslCertificate
-
-from .Ui_E5SslCertificateSelectionDialog import (
-    Ui_E5SslCertificateSelectionDialog
-)
-
-import Utilities
-import UI.PixmapCache
-
-
-class E5SslCertificateSelectionDialog(QDialog,
-                                      Ui_E5SslCertificateSelectionDialog):
-    """
-    Class implementing a dialog to select a SSL certificate.
-    """
-    CertRole = Qt.ItemDataRole.UserRole + 1
-    
-    def __init__(self, certificates, parent=None):
-        """
-        Constructor
-        
-        @param certificates list of SSL certificates to select from
-        @type list of QSslCertificate
-        @param parent reference to the parent widget
-        @type QWidget
-        """
-        super().__init__(parent)
-        self.setupUi(self)
-        
-        self.viewButton.setIcon(
-            UI.PixmapCache.getIcon("certificates"))
-        
-        self.buttonBox.button(QDialogButtonBox.OK).setEnabled(False)
-        self.viewButton.setEnabled(False)
-        
-        self.__populateCertificatesTree(certificates)
-    
-    def __populateCertificatesTree(self, certificates):
-        """
-        Private slot to populate the certificates tree.
-        
-        @param certificates list of SSL certificates to select from
-        @type list of QSslCertificate
-        """
-        for cert in certificates():
-            self.__createCertificateEntry(cert)
-        
-        self.certificatesTree.expandAll()
-        for i in range(self.certificatesTree.columnCount()):
-            self.certificatesTree.resizeColumnToContents(i)
-        self.certificatesTree.sortItems(0, Qt.SortOrder.AscendingOrder)
-    
-    def __createCaCertificateEntry(self, cert):
-        """
-        Private method to create a certificate entry.
-        
-        @param cert certificate to insert
-        @type QSslCertificate
-        """
-        # step 1: extract the info to be shown
-        organisation = Utilities.decodeString(
-            ", ".join(cert.subjectInfo(
-                QSslCertificate.SubjectInfo.Organization)))
-        commonName = Utilities.decodeString(
-            ", ".join(cert.subjectInfo(
-                QSslCertificate.SubjectInfo.CommonName)))
-        if organisation is None or organisation == "":
-            organisation = self.tr("(Unknown)")
-        if commonName is None or commonName == "":
-            commonName = self.tr("(Unknown common name)")
-        expiryDate = cert.expiryDate().toString("yyyy-MM-dd")
-        
-        # step 2: create the entry
-        items = self.certificatesTree.findItems(
-            organisation,
-            Qt.MatchFlag.MatchFixedString | Qt.MatchFlag.MatchCaseSensitive)
-        if len(items) == 0:
-            parent = QTreeWidgetItem(self.certificatesTree, [organisation])
-            parent.setFirstColumnSpanned(True)
-        else:
-            parent = items[0]
-        
-        itm = QTreeWidgetItem(parent, [commonName, expiryDate])
-        itm.setData(0, self.CertRole, cert.toPem())
-    
-    @pyqtSlot()
-    def on_certificatesTree_itemSelectionChanged(self):
-        """
-        Private slot to handle the selection of an item.
-        """
-        enable = (
-            len(self.certificatesTree.selectedItems()) > 0 and
-            self.certificatesTree.selectedItems()[0].parent() is not None
-        )
-        self.buttonBox.button(QDialogButtonBox.OK).setEnabled(enable)
-        self.viewButton.setEnabled(enable)
-    
-    @pyqtSlot()
-    def on_viewButton_clicked(self):
-        """
-        Private slot to show data of the selected certificate.
-        """
-        with contextlib.suppress(ImportError):
-            from E5Network.E5SslCertificatesInfoDialog import (
-                E5SslCertificatesInfoDialog
-            )
-            cert = QSslCertificate.fromData(
-                self.certificatesTree.selectedItems()[0].data(
-                    0, self.CertRole))
-            dlg = E5SslCertificatesInfoDialog(cert, self)
-            dlg.exec()
-    
-    def getSelectedCertificate(self):
-        """
-        Public method to get the selected certificate.
-        
-        @return selected certificate
-        @rtype QSslCertificate
-        """
-        valid = (
-            len(self.certificatesTree.selectedItems()) > 0 and
-            self.certificatesTree.selectedItems()[0].parent() is not None
-        )
-        
-        certificate = (
-            QSslCertificate.fromData(
-                self.certificatesTree.selectedItems()[0].data(
-                    0, self.CertRole))
-            if valid else
-            None
-        )
-        
-        return certificate
--- a/eric7/E5Network/E5SslCertificateSelectionDialog.ui	Sat May 22 12:54:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,118 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>E5SslCertificateSelectionDialog</class>
- <widget class="QDialog" name="E5SslCertificateSelectionDialog">
-  <property name="geometry">
-   <rect>
-    <x>0</x>
-    <y>0</y>
-    <width>760</width>
-    <height>440</height>
-   </rect>
-  </property>
-  <property name="windowTitle">
-   <string>SSL Certificate Selection</string>
-  </property>
-  <property name="sizeGripEnabled">
-   <bool>true</bool>
-  </property>
-  <layout class="QVBoxLayout" name="verticalLayout">
-   <item>
-    <widget class="QLabel" name="label">
-     <property name="text">
-      <string>Select a SSL certificate:</string>
-     </property>
-    </widget>
-   </item>
-   <item>
-    <widget class="QTreeWidget" name="certificatesTree">
-     <column>
-      <property name="text">
-       <string>Certificate name</string>
-      </property>
-     </column>
-     <column>
-      <property name="text">
-       <string>Expiry Date</string>
-      </property>
-     </column>
-    </widget>
-   </item>
-   <item>
-    <layout class="QHBoxLayout" name="horizontalLayout">
-     <item>
-      <widget class="QPushButton" name="viewButton">
-       <property name="enabled">
-        <bool>false</bool>
-       </property>
-       <property name="toolTip">
-        <string>Press to view the selected certificate</string>
-       </property>
-       <property name="text">
-        <string>&amp;View...</string>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <spacer name="horizontalSpacer_2">
-       <property name="orientation">
-        <enum>Qt::Horizontal</enum>
-       </property>
-       <property name="sizeHint" stdset="0">
-        <size>
-         <width>40</width>
-         <height>20</height>
-        </size>
-       </property>
-      </spacer>
-     </item>
-    </layout>
-   </item>
-   <item>
-    <widget class="QDialogButtonBox" name="buttonBox">
-     <property name="orientation">
-      <enum>Qt::Horizontal</enum>
-     </property>
-     <property name="standardButtons">
-      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
-     </property>
-    </widget>
-   </item>
-  </layout>
- </widget>
- <resources/>
- <connections>
-  <connection>
-   <sender>buttonBox</sender>
-   <signal>accepted()</signal>
-   <receiver>E5SslCertificateSelectionDialog</receiver>
-   <slot>accept()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>248</x>
-     <y>254</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>157</x>
-     <y>274</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>buttonBox</sender>
-   <signal>rejected()</signal>
-   <receiver>E5SslCertificateSelectionDialog</receiver>
-   <slot>reject()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>316</x>
-     <y>260</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>286</x>
-     <y>274</y>
-    </hint>
-   </hints>
-  </connection>
- </connections>
-</ui>
--- a/eric7/E5Network/E5SslCertificatesDialog.py	Sat May 22 12:54:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,518 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2010 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-"""
-Module implementing a dialog to show and edit all certificates.
-"""
-
-import contextlib
-
-from PyQt6.QtCore import (
-    pyqtSlot, Qt, QByteArray, QFile, QFileInfo, QIODevice
-)
-from PyQt6.QtWidgets import QDialog, QTreeWidgetItem
-with contextlib.suppress(ImportError):
-    from PyQt6.QtNetwork import (
-        QSslCertificate, QSslSocket, QSslConfiguration, QSsl
-    )
-
-from E5Gui import E5MessageBox, E5FileDialog
-
-from .Ui_E5SslCertificatesDialog import Ui_E5SslCertificatesDialog
-
-import Preferences
-import Utilities
-import UI.PixmapCache
-import Globals
-
-
-class E5SslCertificatesDialog(QDialog, Ui_E5SslCertificatesDialog):
-    """
-    Class implementing a dialog to show and edit all certificates.
-    """
-    CertRole = Qt.ItemDataRole.UserRole + 1
-    
-    def __init__(self, parent=None):
-        """
-        Constructor
-        
-        @param parent reference to the parent widget (QWidget)
-        """
-        super().__init__(parent)
-        self.setupUi(self)
-        
-        self.serversViewButton.setIcon(
-            UI.PixmapCache.getIcon("certificates"))
-        self.serversDeleteButton.setIcon(
-            UI.PixmapCache.getIcon("certificateDelete"))
-        self.serversExportButton.setIcon(
-            UI.PixmapCache.getIcon("certificateExport"))
-        self.serversImportButton.setIcon(
-            UI.PixmapCache.getIcon("certificateImport"))
-        
-        self.caViewButton.setIcon(
-            UI.PixmapCache.getIcon("certificates"))
-        self.caDeleteButton.setIcon(
-            UI.PixmapCache.getIcon("certificateDelete"))
-        self.caExportButton.setIcon(
-            UI.PixmapCache.getIcon("certificateExport"))
-        self.caImportButton.setIcon(
-            UI.PixmapCache.getIcon("certificateImport"))
-        
-        self.__populateServerCertificatesTree()
-        self.__populateCaCertificatesTree()
-    
-    def __populateServerCertificatesTree(self):
-        """
-        Private slot to populate the server certificates tree.
-        """
-        certificateDict = Globals.toDict(
-            Preferences.Prefs.settings.value("Ssl/CaCertificatesDict"))
-        for server in certificateDict:
-            for cert in QSslCertificate.fromData(certificateDict[server]):
-                self.__createServerCertificateEntry(server, cert)
-        
-        self.serversCertificatesTree.expandAll()
-        for i in range(self.serversCertificatesTree.columnCount()):
-            self.serversCertificatesTree.resizeColumnToContents(i)
-    
-    def __createServerCertificateEntry(self, server, cert):
-        """
-        Private method to create a server certificate entry.
-        
-        @param server server name of the certificate (string)
-        @param cert certificate to insert (QSslCertificate)
-        """
-        # step 1: extract the info to be shown
-        organisation = Utilities.decodeString(
-            ", ".join(cert.subjectInfo(
-                QSslCertificate.SubjectInfo.Organization)))
-        commonName = Utilities.decodeString(
-            ", ".join(cert.subjectInfo(
-                QSslCertificate.SubjectInfo.CommonName)))
-        if organisation is None or organisation == "":
-            organisation = self.tr("(Unknown)")
-        if commonName is None or commonName == "":
-            commonName = self.tr("(Unknown common name)")
-        expiryDate = cert.expiryDate().toString("yyyy-MM-dd")
-        
-        # step 2: create the entry
-        items = self.serversCertificatesTree.findItems(
-            organisation,
-            Qt.MatchFlag.MatchFixedString | Qt.MatchFlag.MatchCaseSensitive)
-        if len(items) == 0:
-            parent = QTreeWidgetItem(
-                self.serversCertificatesTree, [organisation])
-            parent.setFirstColumnSpanned(True)
-        else:
-            parent = items[0]
-        
-        itm = QTreeWidgetItem(parent, [commonName, server, expiryDate])
-        itm.setData(0, self.CertRole, cert.toPem())
-    
-    @pyqtSlot(QTreeWidgetItem, QTreeWidgetItem)
-    def on_serversCertificatesTree_currentItemChanged(self, current, previous):
-        """
-        Private slot handling a change of the current item in the
-        server certificates list.
-        
-        @param current new current item (QTreeWidgetItem)
-        @param previous previous current item (QTreeWidgetItem)
-        """
-        enable = current is not None and current.parent() is not None
-        self.serversViewButton.setEnabled(enable)
-        self.serversDeleteButton.setEnabled(enable)
-        self.serversExportButton.setEnabled(enable)
-    
-    @pyqtSlot()
-    def on_serversViewButton_clicked(self):
-        """
-        Private slot to show data of the selected server certificate.
-        """
-        with contextlib.suppress(ImportError):
-            from E5Network.E5SslCertificatesInfoDialog import (
-                E5SslCertificatesInfoDialog
-            )
-            cert = QSslCertificate.fromData(
-                self.serversCertificatesTree.currentItem().data(
-                    0, self.CertRole))
-            dlg = E5SslCertificatesInfoDialog(cert, self)
-            dlg.exec()
-    
-    @pyqtSlot()
-    def on_serversDeleteButton_clicked(self):
-        """
-        Private slot to delete the selected server certificate.
-        """
-        itm = self.serversCertificatesTree.currentItem()
-        res = E5MessageBox.yesNo(
-            self,
-            self.tr("Delete Server Certificate"),
-            self.tr("""<p>Shall the server certificate really be"""
-                    """ deleted?</p><p>{0}</p>"""
-                    """<p>If the server certificate is deleted, the"""
-                    """ normal security checks will be reinstantiated"""
-                    """ and the server has to present a valid"""
-                    """ certificate.</p>""")
-            .format(itm.text(0)))
-        if res:
-            server = itm.text(1)
-            cert = self.serversCertificatesTree.currentItem().data(
-                0, self.CertRole)
-            
-            # delete the selected entry and its parent entry,
-            # if it was the only one
-            parent = itm.parent()
-            parent.takeChild(parent.indexOfChild(itm))
-            if parent.childCount() == 0:
-                self.serversCertificatesTree.takeTopLevelItem(
-                    self.serversCertificatesTree.indexOfTopLevelItem(parent))
-            
-            # delete the certificate from the user certificate store
-            certificateDict = Globals.toDict(
-                Preferences.Prefs.settings.value("Ssl/CaCertificatesDict"))
-            if server in certificateDict:
-                certs = [c.toPem() for c in
-                         QSslCertificate.fromData(certificateDict[server])]
-                if cert in certs:
-                    certs.remove(cert)
-                if certs:
-                    pems = QByteArray()
-                    for cert in certs:
-                        pems.append(cert + b'\n')
-                    certificateDict[server] = pems
-                else:
-                    del certificateDict[server]
-            Preferences.Prefs.settings.setValue(
-                "Ssl/CaCertificatesDict",
-                certificateDict)
-            
-            # delete the certificate from the default certificates
-            self.__updateDefaultConfiguration()
-    
-    @pyqtSlot()
-    def on_serversImportButton_clicked(self):
-        """
-        Private slot to import server certificates.
-        """
-        certs = self.__importCertificate()
-        if certs:
-            server = "*"
-            certificateDict = Globals.toDict(
-                Preferences.Prefs.settings.value("Ssl/CaCertificatesDict"))
-            if server in certificateDict:
-                sCerts = QSslCertificate.fromData(certificateDict[server])
-            else:
-                sCerts = []
-            
-            pems = QByteArray()
-            for cert in certs:
-                if cert in sCerts:
-                    commonStr = ", ".join(
-                        cert.subjectInfo(
-                            QSslCertificate.SubjectInfo.CommonName))
-                    E5MessageBox.warning(
-                        self,
-                        self.tr("Import Certificate"),
-                        self.tr(
-                            """<p>The certificate <b>{0}</b> already exists."""
-                            """ Skipping.</p>""")
-                        .format(Utilities.decodeString(commonStr)))
-                else:
-                    pems.append(cert.toPem() + '\n')
-            if server not in certificateDict:
-                certificateDict[server] = QByteArray()
-            certificateDict[server].append(pems)
-            Preferences.Prefs.settings.setValue(
-                "Ssl/CaCertificatesDict",
-                certificateDict)
-            
-            self.serversCertificatesTree.clear()
-            self.__populateServerCertificatesTree()
-            
-            self.__updateDefaultConfiguration()
-    
-    @pyqtSlot()
-    def on_serversExportButton_clicked(self):
-        """
-        Private slot to export the selected server certificate.
-        """
-        cert = self.serversCertificatesTree.currentItem().data(
-            0, self.CertRole)
-        fname = (
-            self.serversCertificatesTree.currentItem().text(0).replace(" ", "")
-            .replace("\t", "")
-        )
-        self.__exportCertificate(fname, cert)
-    
-    def __updateDefaultConfiguration(self):
-        """
-        Private method to update the default SSL configuration.
-        """
-        caList = self.__getSystemCaCertificates()
-        certificateDict = Globals.toDict(
-            Preferences.Prefs.settings.value("Ssl/CaCertificatesDict"))
-        for server in certificateDict:
-            for cert in QSslCertificate.fromData(certificateDict[server]):
-                if cert not in caList:
-                    caList.append(cert)
-        sslCfg = QSslConfiguration.defaultConfiguration()
-        sslCfg.setCaCertificates(caList)
-        QSslConfiguration.setDefaultConfiguration(sslCfg)
-    
-    def __getSystemCaCertificates(self):
-        """
-        Private method to get the list of system certificates.
-        
-        @return list of system certificates (list of QSslCertificate)
-        """
-        caList = QSslCertificate.fromData(Globals.toByteArray(
-            Preferences.Prefs.settings.value("Help/SystemCertificates")))
-        if not caList:
-            caList = QSslSocket.systemCaCertificates()
-        return caList
-    
-    def __populateCaCertificatesTree(self):
-        """
-        Private slot to populate the CA certificates tree.
-        """
-        for cert in self.__getSystemCaCertificates():
-            self.__createCaCertificateEntry(cert)
-        
-        self.caCertificatesTree.expandAll()
-        for i in range(self.caCertificatesTree.columnCount()):
-            self.caCertificatesTree.resizeColumnToContents(i)
-        self.caCertificatesTree.sortItems(0, Qt.SortOrder.AscendingOrder)
-    
-    def __createCaCertificateEntry(self, cert):
-        """
-        Private method to create a CA certificate entry.
-        
-        @param cert certificate to insert (QSslCertificate)
-        """
-        # step 1: extract the info to be shown
-        organisation = Utilities.decodeString(
-            ", ".join(cert.subjectInfo(
-                QSslCertificate.SubjectInfo.Organization)))
-        commonName = Utilities.decodeString(
-            ", ".join(cert.subjectInfo(
-                QSslCertificate.SubjectInfo.CommonName)))
-        if organisation is None or organisation == "":
-            organisation = self.tr("(Unknown)")
-        if commonName is None or commonName == "":
-            commonName = self.tr("(Unknown common name)")
-        expiryDate = cert.expiryDate().toString("yyyy-MM-dd")
-        
-        # step 2: create the entry
-        items = self.caCertificatesTree.findItems(
-            organisation,
-            Qt.MatchFlag.MatchFixedString | Qt.MatchFlag.MatchCaseSensitive)
-        if len(items) == 0:
-            parent = QTreeWidgetItem(self.caCertificatesTree, [organisation])
-            parent.setFirstColumnSpanned(True)
-        else:
-            parent = items[0]
-        
-        itm = QTreeWidgetItem(parent, [commonName, expiryDate])
-        itm.setData(0, self.CertRole, cert.toPem())
-    
-    @pyqtSlot(QTreeWidgetItem, QTreeWidgetItem)
-    def on_caCertificatesTree_currentItemChanged(self, current, previous):
-        """
-        Private slot handling a change of the current item
-        in the CA certificates list.
-        
-        @param current new current item (QTreeWidgetItem)
-        @param previous previous current item (QTreeWidgetItem)
-        """
-        enable = current is not None and current.parent() is not None
-        self.caViewButton.setEnabled(enable)
-        self.caDeleteButton.setEnabled(enable)
-        self.caExportButton.setEnabled(enable)
-    
-    @pyqtSlot()
-    def on_caViewButton_clicked(self):
-        """
-        Private slot to show data of the selected CA certificate.
-        """
-        with contextlib.suppress(ImportError):
-            from E5Network.E5SslCertificatesInfoDialog import (
-                E5SslCertificatesInfoDialog
-            )
-            cert = QSslCertificate.fromData(
-                self.caCertificatesTree.currentItem().data(0, self.CertRole))
-            dlg = E5SslCertificatesInfoDialog(cert, self)
-            dlg.exec()
-    
-    @pyqtSlot()
-    def on_caDeleteButton_clicked(self):
-        """
-        Private slot to delete the selected CA certificate.
-        """
-        itm = self.caCertificatesTree.currentItem()
-        res = E5MessageBox.yesNo(
-            self,
-            self.tr("Delete CA Certificate"),
-            self.tr(
-                """<p>Shall the CA certificate really be deleted?</p>"""
-                """<p>{0}</p>"""
-                """<p>If the CA certificate is deleted, the browser"""
-                """ will not trust any certificate issued by this CA.</p>""")
-            .format(itm.text(0)))
-        if res:
-            cert = self.caCertificatesTree.currentItem().data(0, self.CertRole)
-            
-            # delete the selected entry and its parent entry,
-            # if it was the only one
-            parent = itm.parent()
-            parent.takeChild(parent.indexOfChild(itm))
-            if parent.childCount() == 0:
-                self.caCertificatesTree.takeTopLevelItem(
-                    self.caCertificatesTree.indexOfTopLevelItem(parent))
-            
-            # delete the certificate from the CA certificate store
-            caCerts = self.__getSystemCaCertificates()
-            if cert in caCerts:
-                caCerts.remove(cert)
-            pems = QByteArray()
-            for cert in caCerts:
-                pems.append(cert.toPem() + '\n')
-            Preferences.Prefs.settings.setValue(
-                "Help/SystemCertificates", pems)
-            
-            # delete the certificate from the default certificates
-            self.__updateDefaultConfiguration()
-    
-    @pyqtSlot()
-    def on_caImportButton_clicked(self):
-        """
-        Private slot to import server certificates.
-        """
-        certs = self.__importCertificate()
-        if certs:
-            caCerts = self.__getSystemCaCertificates()
-            for cert in certs:
-                if cert in caCerts:
-                    commonStr = ", ".join(
-                        cert.subjectInfo(
-                            QSslCertificate.SubjectInfo.CommonName))
-                    E5MessageBox.warning(
-                        self,
-                        self.tr("Import Certificate"),
-                        self.tr(
-                            """<p>The certificate <b>{0}</b> already exists."""
-                            """ Skipping.</p>""")
-                        .format(Utilities.decodeString(commonStr)))
-                else:
-                    caCerts.append(cert)
-            
-            pems = QByteArray()
-            for cert in caCerts:
-                pems.append(cert.toPem() + '\n')
-            Preferences.Prefs.settings.setValue(
-                "Help/SystemCertificates", pems)
-            
-            self.caCertificatesTree.clear()
-            self.__populateCaCertificatesTree()
-            
-            self.__updateDefaultConfiguration()
-    
-    @pyqtSlot()
-    def on_caExportButton_clicked(self):
-        """
-        Private slot to export the selected CA certificate.
-        """
-        cert = self.caCertificatesTree.currentItem().data(0, self.CertRole)
-        fname = (
-            self.caCertificatesTree.currentItem().text(0).replace(" ", "")
-            .replace("\t", "")
-        )
-        self.__exportCertificate(fname, cert)
-    
-    def __exportCertificate(self, name, cert):
-        """
-        Private slot to export a certificate.
-        
-        @param name default file name without extension (string)
-        @param cert certificate to be exported (QSslCertificate)
-        """
-        if cert is not None:
-            fname, selectedFilter = E5FileDialog.getSaveFileNameAndFilter(
-                self,
-                self.tr("Export Certificate"),
-                name,
-                self.tr("Certificate File (PEM) (*.pem);;"
-                        "Certificate File (DER) (*.der)"),
-                None,
-                E5FileDialog.DontConfirmOverwrite)
-            
-            if fname:
-                ext = QFileInfo(fname).suffix()
-                if not ext or ext not in ["pem", "der"]:
-                    ex = selectedFilter.split("(*")[1].split(")")[0]
-                    if ex:
-                        fname += ex
-                if QFileInfo(fname).exists():
-                    res = E5MessageBox.yesNo(
-                        self,
-                        self.tr("Export Certificate"),
-                        self.tr("<p>The file <b>{0}</b> already exists."
-                                " Overwrite it?</p>").format(fname),
-                        icon=E5MessageBox.Warning)
-                    if not res:
-                        return
-                
-                f = QFile(fname)
-                if not f.open(QIODevice.OpenModeFlag.WriteOnly):
-                    E5MessageBox.critical(
-                        self,
-                        self.tr("Export Certificate"),
-                        self.tr(
-                            """<p>The certificate could not be written"""
-                            """ to file <b>{0}</b></p><p>Error: {1}</p>""")
-                        .format(fname, f.errorString()))
-                    return
-                
-                if fname.endswith(".pem"):
-                    crt = cert.toPem()
-                else:
-                    crt = cert.toDer()
-                f.write(crt)
-                f.close()
-    
-    def __importCertificate(self):
-        """
-        Private method to read a certificate.
-        
-        @return certificates read (list of QSslCertificate)
-        """
-        fname = E5FileDialog.getOpenFileName(
-            self,
-            self.tr("Import Certificate"),
-            "",
-            self.tr("Certificate Files (*.pem *.crt *.der *.cer *.ca);;"
-                    "All Files (*)"))
-        
-        if fname:
-            f = QFile(fname)
-            if not f.open(QIODevice.OpenModeFlag.ReadOnly):
-                E5MessageBox.critical(
-                    self,
-                    self.tr("Export Certificate"),
-                    self.tr(
-                        """<p>The certificate could not be read from file"""
-                        """ <b>{0}</b></p><p>Error: {1}</p>""")
-                    .format(fname, f.errorString()))
-                return []
-            
-            crt = f.readAll()
-            f.close()
-            cert = QSslCertificate.fromData(crt, QSsl.EncodingFormat.Pem)
-            if not cert:
-                cert = QSslCertificate.fromData(crt, QSsl.EncodingFormat.Der)
-            
-            return cert
-        
-        return []
--- a/eric7/E5Network/E5SslCertificatesDialog.ui	Sat May 22 12:54:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,281 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>E5SslCertificatesDialog</class>
- <widget class="QDialog" name="E5SslCertificatesDialog">
-  <property name="geometry">
-   <rect>
-    <x>0</x>
-    <y>0</y>
-    <width>760</width>
-    <height>440</height>
-   </rect>
-  </property>
-  <property name="windowTitle">
-   <string>SSL Certificate Manager</string>
-  </property>
-  <property name="sizeGripEnabled">
-   <bool>true</bool>
-  </property>
-  <layout class="QVBoxLayout" name="verticalLayout">
-   <item>
-    <widget class="QTabWidget" name="certificatesWidget">
-     <property name="currentIndex">
-      <number>0</number>
-     </property>
-     <widget class="QWidget" name="serversTab">
-      <attribute name="title">
-       <string>&amp;Servers</string>
-      </attribute>
-      <layout class="QVBoxLayout" name="verticalLayout_2">
-       <item>
-        <widget class="QLabel" name="label">
-         <property name="text">
-          <string>You have saved certificates identifying these servers:</string>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <widget class="QTreeWidget" name="serversCertificatesTree">
-         <column>
-          <property name="text">
-           <string>Certificate name</string>
-          </property>
-         </column>
-         <column>
-          <property name="text">
-           <string>Server</string>
-          </property>
-         </column>
-         <column>
-          <property name="text">
-           <string>Expiry Date</string>
-          </property>
-         </column>
-        </widget>
-       </item>
-       <item>
-        <layout class="QHBoxLayout" name="horizontalLayout">
-         <item>
-          <widget class="QPushButton" name="serversViewButton">
-           <property name="enabled">
-            <bool>false</bool>
-           </property>
-           <property name="toolTip">
-            <string>Press to view the selected certificate</string>
-           </property>
-           <property name="text">
-            <string>&amp;View...</string>
-           </property>
-          </widget>
-         </item>
-         <item>
-          <widget class="QPushButton" name="serversImportButton">
-           <property name="toolTip">
-            <string>Press to import a certificate</string>
-           </property>
-           <property name="text">
-            <string>&amp;Import...</string>
-           </property>
-          </widget>
-         </item>
-         <item>
-          <widget class="QPushButton" name="serversExportButton">
-           <property name="enabled">
-            <bool>false</bool>
-           </property>
-           <property name="toolTip">
-            <string>Press to export the selected certificate</string>
-           </property>
-           <property name="text">
-            <string>&amp;Export...</string>
-           </property>
-          </widget>
-         </item>
-         <item>
-          <widget class="QPushButton" name="serversDeleteButton">
-           <property name="enabled">
-            <bool>false</bool>
-           </property>
-           <property name="toolTip">
-            <string>Press to delete the selected certificate</string>
-           </property>
-           <property name="text">
-            <string>&amp;Delete...</string>
-           </property>
-          </widget>
-         </item>
-         <item>
-          <spacer name="horizontalSpacer">
-           <property name="orientation">
-            <enum>Qt::Horizontal</enum>
-           </property>
-           <property name="sizeHint" stdset="0">
-            <size>
-             <width>40</width>
-             <height>20</height>
-            </size>
-           </property>
-          </spacer>
-         </item>
-        </layout>
-       </item>
-      </layout>
-     </widget>
-     <widget class="QWidget" name="caTab">
-      <attribute name="title">
-       <string>Certificate &amp;Authorities</string>
-      </attribute>
-      <layout class="QVBoxLayout" name="verticalLayout_3">
-       <item>
-        <widget class="QLabel" name="label_2">
-         <property name="text">
-          <string>You have saved certificates identifying these certification authorities:</string>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <widget class="QTreeWidget" name="caCertificatesTree">
-         <column>
-          <property name="text">
-           <string>Certificate name</string>
-          </property>
-         </column>
-         <column>
-          <property name="text">
-           <string>Expiry Date</string>
-          </property>
-         </column>
-        </widget>
-       </item>
-       <item>
-        <layout class="QHBoxLayout" name="horizontalLayout_2">
-         <item>
-          <widget class="QPushButton" name="caViewButton">
-           <property name="enabled">
-            <bool>false</bool>
-           </property>
-           <property name="toolTip">
-            <string>Press to view the selected certificate</string>
-           </property>
-           <property name="text">
-            <string>&amp;View...</string>
-           </property>
-          </widget>
-         </item>
-         <item>
-          <widget class="QPushButton" name="caImportButton">
-           <property name="toolTip">
-            <string>Press to import a certificate</string>
-           </property>
-           <property name="text">
-            <string>&amp;Import...</string>
-           </property>
-          </widget>
-         </item>
-         <item>
-          <widget class="QPushButton" name="caExportButton">
-           <property name="enabled">
-            <bool>false</bool>
-           </property>
-           <property name="toolTip">
-            <string>Press to export the selected certificate</string>
-           </property>
-           <property name="text">
-            <string>&amp;Export...</string>
-           </property>
-          </widget>
-         </item>
-         <item>
-          <widget class="QPushButton" name="caDeleteButton">
-           <property name="enabled">
-            <bool>false</bool>
-           </property>
-           <property name="toolTip">
-            <string>Press to delete the selected certificate</string>
-           </property>
-           <property name="text">
-            <string>&amp;Delete...</string>
-           </property>
-          </widget>
-         </item>
-         <item>
-          <spacer name="horizontalSpacer_2">
-           <property name="orientation">
-            <enum>Qt::Horizontal</enum>
-           </property>
-           <property name="sizeHint" stdset="0">
-            <size>
-             <width>40</width>
-             <height>20</height>
-            </size>
-           </property>
-          </spacer>
-         </item>
-        </layout>
-       </item>
-      </layout>
-     </widget>
-    </widget>
-   </item>
-   <item>
-    <widget class="QDialogButtonBox" name="buttonBox">
-     <property name="orientation">
-      <enum>Qt::Horizontal</enum>
-     </property>
-     <property name="standardButtons">
-      <set>QDialogButtonBox::Close</set>
-     </property>
-    </widget>
-   </item>
-  </layout>
- </widget>
- <tabstops>
-  <tabstop>certificatesWidget</tabstop>
-  <tabstop>serversCertificatesTree</tabstop>
-  <tabstop>serversViewButton</tabstop>
-  <tabstop>serversImportButton</tabstop>
-  <tabstop>serversExportButton</tabstop>
-  <tabstop>serversDeleteButton</tabstop>
-  <tabstop>caCertificatesTree</tabstop>
-  <tabstop>caViewButton</tabstop>
-  <tabstop>caImportButton</tabstop>
-  <tabstop>caExportButton</tabstop>
-  <tabstop>caDeleteButton</tabstop>
-  <tabstop>buttonBox</tabstop>
- </tabstops>
- <resources/>
- <connections>
-  <connection>
-   <sender>buttonBox</sender>
-   <signal>accepted()</signal>
-   <receiver>E5SslCertificatesDialog</receiver>
-   <slot>accept()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>248</x>
-     <y>254</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>157</x>
-     <y>274</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>buttonBox</sender>
-   <signal>rejected()</signal>
-   <receiver>E5SslCertificatesDialog</receiver>
-   <slot>reject()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>316</x>
-     <y>260</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>286</x>
-     <y>274</y>
-    </hint>
-   </hints>
-  </connection>
- </connections>
-</ui>
--- a/eric7/E5Network/E5SslCertificatesInfoDialog.py	Sat May 22 12:54:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2010 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-"""
-Module implementing a dialog to show SSL certificate infos.
-"""
-
-from PyQt6.QtWidgets import QDialog
-
-from .Ui_E5SslCertificatesInfoDialog import Ui_E5SslCertificatesInfoDialog
-
-
-class E5SslCertificatesInfoDialog(QDialog, Ui_E5SslCertificatesInfoDialog):
-    """
-    Class implementing a dialog to show SSL certificate infos.
-    """
-    def __init__(self, certificateChain, parent=None):
-        """
-        Constructor
-        
-        @param certificateChain SSL certificate chain (list of QSslCertificate)
-        @param parent reference to the parent widget (QWidget)
-        """
-        super().__init__(parent)
-        self.setupUi(self)
-        
-        self.sslWidget.showCertificateChain(certificateChain)
--- a/eric7/E5Network/E5SslCertificatesInfoDialog.ui	Sat May 22 12:54:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>E5SslCertificatesInfoDialog</class>
- <widget class="QDialog" name="E5SslCertificatesInfoDialog">
-  <property name="geometry">
-   <rect>
-    <x>0</x>
-    <y>0</y>
-    <width>556</width>
-    <height>486</height>
-   </rect>
-  </property>
-  <property name="windowTitle">
-   <string>SSL Certificate Info</string>
-  </property>
-  <property name="sizeGripEnabled">
-   <bool>true</bool>
-  </property>
-  <layout class="QVBoxLayout" name="verticalLayout">
-   <item>
-    <widget class="E5SslCertificatesInfoWidget" name="sslWidget" native="true"/>
-   </item>
-   <item>
-    <widget class="QDialogButtonBox" name="buttonBox">
-     <property name="orientation">
-      <enum>Qt::Horizontal</enum>
-     </property>
-     <property name="standardButtons">
-      <set>QDialogButtonBox::Close</set>
-     </property>
-    </widget>
-   </item>
-  </layout>
- </widget>
- <customwidgets>
-  <customwidget>
-   <class>E5SslCertificatesInfoWidget</class>
-   <extends>QWidget</extends>
-   <header>E5Network/E5SslCertificatesInfoWidget.h</header>
-   <container>1</container>
-  </customwidget>
- </customwidgets>
- <resources/>
- <connections>
-  <connection>
-   <sender>buttonBox</sender>
-   <signal>accepted()</signal>
-   <receiver>E5SslCertificatesInfoDialog</receiver>
-   <slot>accept()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>248</x>
-     <y>254</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>157</x>
-     <y>274</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>buttonBox</sender>
-   <signal>rejected()</signal>
-   <receiver>E5SslCertificatesInfoDialog</receiver>
-   <slot>reject()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>316</x>
-     <y>260</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>286</x>
-     <y>274</y>
-    </hint>
-   </hints>
-  </connection>
- </connections>
-</ui>
--- a/eric7/E5Network/E5SslCertificatesInfoWidget.py	Sat May 22 12:54:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,203 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2010 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-"""
-Module implementing a widget to show SSL certificate infos.
-"""
-
-from PyQt6.QtCore import pyqtSlot, QCryptographicHash, QDateTime
-from PyQt6.QtWidgets import QWidget
-try:
-    from PyQt6.QtNetwork import QSslCertificate
-except ImportError:
-    QSslCertificate = None
-
-from .Ui_E5SslCertificatesInfoWidget import Ui_E5SslCertificatesInfoWidget
-
-import Utilities
-
-
-class E5SslCertificatesInfoWidget(QWidget, Ui_E5SslCertificatesInfoWidget):
-    """
-    Class implementing a widget to show SSL certificate infos.
-    """
-    def __init__(self, parent=None):
-        """
-        Constructor
-        
-        @param parent reference to the parent widget (QWidget)
-        """
-        super().__init__(parent)
-        self.setupUi(self)
-        
-        self.__chain = []
-    
-    def showCertificateChain(self, certificateChain):
-        """
-        Public method to show the SSL certificates of a certificate chain.
-        
-        @param certificateChain list od SSL certificates
-            (list of QSslCertificate)
-        """
-        if QSslCertificate:
-            self.chainLabel.show()
-            self.chainComboBox.show()
-            self.chainComboBox.clear()
-            
-            self.__chain = certificateChain[:]
-            
-            for cert in self.__chain:
-                name = ", ".join(cert.subjectInfo(
-                    QSslCertificate.SubjectInfo.CommonName))
-                if not name:
-                    name = ", ".join(
-                        cert.subjectInfo(
-                            QSslCertificate.SubjectInfo.Organization))
-                if not name:
-                    name = cert.serialNumber()
-                self.chainComboBox.addItem(name)
-            
-            self.on_chainComboBox_activated(0)
-    
-    def showCertificate(self, certificate):
-        """
-        Public method to show the SSL certificate information.
-        
-        @param certificate reference to the SSL certificate (QSslCertificate)
-        """
-        self.chainLabel.hide()
-        self.chainComboBox.hide()
-        self.chainComboBox.clear()
-        
-        self.__chain = []
-        
-        if QSslCertificate:
-            self.__showCertificate(certificate)
-    
-    def __showCertificate(self, certificate):
-        """
-        Private method to show the  SSL certificate information.
-        
-        @param certificate reference to the SSL certificate (QSslCertificate)
-        """
-        if QSslCertificate:
-            self.blacklistedLabel.setVisible(False)
-            self.blacklistedLabel.setStyleSheet(
-                "QLabel { color : white; background-color : red; }")
-            self.expiredLabel.setVisible(False)
-            self.expiredLabel.setStyleSheet(
-                "QLabel { color : white; background-color : red; }")
-            
-            self.subjectCommonNameLabel.setText(self.__certificateString(
-                ", ".join(certificate.subjectInfo(
-                    QSslCertificate.SubjectInfo.CommonName))))
-            self.subjectOrganizationLabel.setText(self.__certificateString(
-                ", ".join(certificate.subjectInfo(
-                    QSslCertificate.SubjectInfo.Organization))))
-            self.subjectOrganizationalUnitLabel.setText(
-                self.__certificateString(", ".join(
-                    certificate.subjectInfo(
-                        QSslCertificate.SubjectInfo.OrganizationalUnitName))))
-            self.issuerCommonNameLabel.setText(self.__certificateString(
-                ", ".join(certificate.issuerInfo(
-                    QSslCertificate.SubjectInfo.CommonName))))
-            self.issuerOrganizationLabel.setText(self.__certificateString(
-                ", ".join(certificate.issuerInfo(
-                    QSslCertificate.SubjectInfo.Organization))))
-            self.issuerOrganizationalUnitLabel.setText(
-                self.__certificateString(", ".join(
-                    certificate.issuerInfo(
-                        QSslCertificate.SubjectInfo.OrganizationalUnitName))))
-            self.serialNumberLabel.setText(self.__serialNumber(certificate))
-            self.effectiveLabel.setText(
-                certificate.effectiveDate().toString("yyyy-MM-dd"))
-            self.expiresLabel.setText(
-                certificate.expiryDate().toString("yyyy-MM-dd"))
-            self.sha1Label.setText(self.__formatHexString(
-                str(certificate.digest(
-                    QCryptographicHash.Algorithm.Sha1).toHex(),
-                    encoding="ascii")))
-            self.md5Label.setText(self.__formatHexString(
-                str(certificate.digest(
-                    QCryptographicHash.Algorithm.Md5).toHex(),
-                    encoding="ascii")))
-            
-            if certificate.isBlacklisted():
-                # something is wrong; indicate it to the user
-                if self.__hasExpired(certificate.effectiveDate(),
-                                     certificate.expiryDate()):
-                    self.expiredLabel.setVisible(True)
-                else:
-                    self.blacklistedLabel.setVisible(True)
-    
-    def __certificateString(self, txt):
-        """
-        Private method to prepare some text for display.
-        
-        @param txt text to be displayed (string)
-        @return prepared text (string)
-        """
-        if txt is None or txt == "":
-            return self.tr("<not part of the certificate>")
-        
-        return Utilities.decodeString(txt)
-    
-    def __serialNumber(self, cert):
-        """
-        Private slot to format the certificate serial number.
-        
-        @param cert reference to the SSL certificate (QSslCertificate)
-        @return formated serial number (string)
-        """
-        serial = cert.serialNumber()
-        if serial == "":
-            return self.tr("<not part of the certificate>")
-        
-        if b':' in serial:
-            return str(serial, encoding="ascii").upper()
-        else:
-            hexString = hex(int(serial))[2:]
-            return self.__formatHexString(hexString)
-    
-    def __formatHexString(self, hexString):
-        """
-        Private method to format a hex string for display.
-        
-        @param hexString hex string to be formatted (string)
-        @return formatted string (string)
-        """
-        hexString = hexString.upper()
-        
-        if len(hexString) % 2 == 1:
-            hexString = '0' + hexString
-        
-        hexList = []
-        while hexString:
-            hexList.append(hexString[:2])
-            hexString = hexString[2:]
-        
-        return ':'.join(hexList)
-    
-    def __hasExpired(self, effectiveDate, expiryDate):
-        """
-        Private method to check for a certificate expiration.
-        
-        @param effectiveDate date the certificate becomes effective (QDateTime)
-        @param expiryDate date the certificate expires (QDateTime)
-        @return flag indicating the expiration status (boolean)
-        """
-        now = QDateTime.currentDateTime()
-        
-        return now < effectiveDate or now >= expiryDate
-    
-    @pyqtSlot(int)
-    def on_chainComboBox_activated(self, index):
-        """
-        Private slot to show the certificate info for the selected entry.
-        
-        @param index number of the certificate in the certificate chain
-            (integer)
-        """
-        self.__showCertificate(self.__chain[index])
--- a/eric7/E5Network/E5SslCertificatesInfoWidget.ui	Sat May 22 12:54:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,359 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>E5SslCertificatesInfoWidget</class>
- <widget class="QWidget" name="E5SslCertificatesInfoWidget">
-  <property name="geometry">
-   <rect>
-    <x>0</x>
-    <y>0</y>
-    <width>500</width>
-    <height>455</height>
-   </rect>
-  </property>
-  <layout class="QVBoxLayout" name="verticalLayout">
-   <item>
-    <widget class="QLabel" name="label_17">
-     <property name="sizePolicy">
-      <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
-       <horstretch>0</horstretch>
-       <verstretch>0</verstretch>
-      </sizepolicy>
-     </property>
-     <property name="text">
-      <string>&lt;h2&gt;Certificate Information&lt;/h2&gt;</string>
-     </property>
-    </widget>
-   </item>
-   <item>
-    <layout class="QHBoxLayout" name="horizontalLayout">
-     <item>
-      <widget class="QLabel" name="chainLabel">
-       <property name="text">
-        <string>Certificate Chain:</string>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QComboBox" name="chainComboBox">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
-       </property>
-      </widget>
-     </item>
-    </layout>
-   </item>
-   <item>
-    <widget class="QLabel" name="blacklistedLabel">
-     <property name="text">
-      <string>This certificated has been blacklisted.</string>
-     </property>
-    </widget>
-   </item>
-   <item>
-    <widget class="QGroupBox" name="groupBox">
-     <layout class="QGridLayout" name="gridLayout">
-      <item row="0" column="0" colspan="2">
-       <widget class="QLabel" name="label">
-        <property name="text">
-         <string>&lt;b&gt;Issued for:&lt;/b&gt;</string>
-        </property>
-       </widget>
-      </item>
-      <item row="1" column="0">
-       <widget class="QLabel" name="label_2">
-        <property name="text">
-         <string>Common Name (CN):</string>
-        </property>
-       </widget>
-      </item>
-      <item row="1" column="1">
-       <widget class="QLabel" name="subjectCommonNameLabel">
-        <property name="sizePolicy">
-         <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
-          <horstretch>0</horstretch>
-          <verstretch>0</verstretch>
-         </sizepolicy>
-        </property>
-        <property name="text">
-         <string/>
-        </property>
-       </widget>
-      </item>
-      <item row="2" column="0">
-       <widget class="QLabel" name="label_3">
-        <property name="text">
-         <string>Organization (O):</string>
-        </property>
-       </widget>
-      </item>
-      <item row="2" column="1">
-       <widget class="QLabel" name="subjectOrganizationLabel">
-        <property name="sizePolicy">
-         <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
-          <horstretch>0</horstretch>
-          <verstretch>0</verstretch>
-         </sizepolicy>
-        </property>
-        <property name="text">
-         <string/>
-        </property>
-       </widget>
-      </item>
-      <item row="3" column="0">
-       <widget class="QLabel" name="label_4">
-        <property name="text">
-         <string>Organizational Unit (OU):</string>
-        </property>
-       </widget>
-      </item>
-      <item row="3" column="1">
-       <widget class="QLabel" name="subjectOrganizationalUnitLabel">
-        <property name="sizePolicy">
-         <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
-          <horstretch>0</horstretch>
-          <verstretch>0</verstretch>
-         </sizepolicy>
-        </property>
-        <property name="text">
-         <string/>
-        </property>
-       </widget>
-      </item>
-      <item row="4" column="0">
-       <widget class="QLabel" name="label_5">
-        <property name="text">
-         <string>Serialnumber:</string>
-        </property>
-       </widget>
-      </item>
-      <item row="4" column="1">
-       <widget class="QLabel" name="serialNumberLabel">
-        <property name="sizePolicy">
-         <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
-          <horstretch>0</horstretch>
-          <verstretch>0</verstretch>
-         </sizepolicy>
-        </property>
-        <property name="text">
-         <string/>
-        </property>
-       </widget>
-      </item>
-      <item row="5" column="0">
-       <spacer name="verticalSpacer_3">
-        <property name="orientation">
-         <enum>Qt::Vertical</enum>
-        </property>
-        <property name="sizeHint" stdset="0">
-         <size>
-          <width>20</width>
-          <height>10</height>
-         </size>
-        </property>
-       </spacer>
-      </item>
-      <item row="6" column="0" colspan="2">
-       <widget class="QLabel" name="label_6">
-        <property name="text">
-         <string>&lt;b&gt;Issued by:&lt;/b&gt;</string>
-        </property>
-       </widget>
-      </item>
-      <item row="7" column="0">
-       <widget class="QLabel" name="label_9">
-        <property name="text">
-         <string>Common Name (CN):</string>
-        </property>
-       </widget>
-      </item>
-      <item row="7" column="1">
-       <widget class="QLabel" name="issuerCommonNameLabel">
-        <property name="sizePolicy">
-         <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
-          <horstretch>0</horstretch>
-          <verstretch>0</verstretch>
-         </sizepolicy>
-        </property>
-        <property name="text">
-         <string/>
-        </property>
-       </widget>
-      </item>
-      <item row="8" column="0">
-       <widget class="QLabel" name="label_8">
-        <property name="text">
-         <string>Organization (O):</string>
-        </property>
-       </widget>
-      </item>
-      <item row="8" column="1">
-       <widget class="QLabel" name="issuerOrganizationLabel">
-        <property name="sizePolicy">
-         <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
-          <horstretch>0</horstretch>
-          <verstretch>0</verstretch>
-         </sizepolicy>
-        </property>
-        <property name="text">
-         <string/>
-        </property>
-       </widget>
-      </item>
-      <item row="9" column="0">
-       <widget class="QLabel" name="label_7">
-        <property name="text">
-         <string>Organizational Unit (OU):</string>
-        </property>
-       </widget>
-      </item>
-      <item row="9" column="1">
-       <widget class="QLabel" name="issuerOrganizationalUnitLabel">
-        <property name="sizePolicy">
-         <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
-          <horstretch>0</horstretch>
-          <verstretch>0</verstretch>
-         </sizepolicy>
-        </property>
-        <property name="text">
-         <string/>
-        </property>
-       </widget>
-      </item>
-      <item row="10" column="0">
-       <spacer name="verticalSpacer_2">
-        <property name="orientation">
-         <enum>Qt::Vertical</enum>
-        </property>
-        <property name="sizeHint" stdset="0">
-         <size>
-          <width>20</width>
-          <height>9</height>
-         </size>
-        </property>
-       </spacer>
-      </item>
-      <item row="11" column="0" colspan="2">
-       <widget class="QLabel" name="label_10">
-        <property name="text">
-         <string>&lt;b&gt;Validity:&lt;/b&gt;</string>
-        </property>
-       </widget>
-      </item>
-      <item row="12" column="0">
-       <widget class="QLabel" name="label_11">
-        <property name="text">
-         <string>Issued on:</string>
-        </property>
-       </widget>
-      </item>
-      <item row="12" column="1">
-       <widget class="QLabel" name="effectiveLabel">
-        <property name="sizePolicy">
-         <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
-          <horstretch>0</horstretch>
-          <verstretch>0</verstretch>
-         </sizepolicy>
-        </property>
-        <property name="text">
-         <string/>
-        </property>
-       </widget>
-      </item>
-      <item row="13" column="0">
-       <widget class="QLabel" name="label_12">
-        <property name="text">
-         <string>Expires on:</string>
-        </property>
-       </widget>
-      </item>
-      <item row="13" column="1">
-       <widget class="QLabel" name="expiresLabel">
-        <property name="sizePolicy">
-         <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
-          <horstretch>0</horstretch>
-          <verstretch>0</verstretch>
-         </sizepolicy>
-        </property>
-        <property name="text">
-         <string/>
-        </property>
-       </widget>
-      </item>
-      <item row="14" column="0" colspan="2">
-       <widget class="QLabel" name="expiredLabel">
-        <property name="text">
-         <string>This certificate is not valid yet or has expired.</string>
-        </property>
-       </widget>
-      </item>
-      <item row="15" column="0">
-       <spacer name="verticalSpacer">
-        <property name="orientation">
-         <enum>Qt::Vertical</enum>
-        </property>
-        <property name="sizeHint" stdset="0">
-         <size>
-          <width>20</width>
-          <height>10</height>
-         </size>
-        </property>
-       </spacer>
-      </item>
-      <item row="16" column="0" colspan="2">
-       <widget class="QLabel" name="label_13">
-        <property name="text">
-         <string>&lt;b&gt;Fingerprints:&lt;/b&gt;</string>
-        </property>
-       </widget>
-      </item>
-      <item row="17" column="0">
-       <widget class="QLabel" name="label_14">
-        <property name="text">
-         <string>SHA1-Fingerprint:</string>
-        </property>
-       </widget>
-      </item>
-      <item row="17" column="1">
-       <widget class="QLabel" name="sha1Label">
-        <property name="sizePolicy">
-         <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
-          <horstretch>0</horstretch>
-          <verstretch>0</verstretch>
-         </sizepolicy>
-        </property>
-        <property name="text">
-         <string/>
-        </property>
-       </widget>
-      </item>
-      <item row="18" column="0">
-       <widget class="QLabel" name="label_15">
-        <property name="text">
-         <string>MD5-Fingerprint:</string>
-        </property>
-       </widget>
-      </item>
-      <item row="18" column="1">
-       <widget class="QLabel" name="md5Label">
-        <property name="sizePolicy">
-         <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
-          <horstretch>0</horstretch>
-          <verstretch>0</verstretch>
-         </sizepolicy>
-        </property>
-        <property name="text">
-         <string/>
-        </property>
-       </widget>
-      </item>
-     </layout>
-    </widget>
-   </item>
-  </layout>
- </widget>
- <resources/>
- <connections/>
-</ui>
--- a/eric7/E5Network/E5SslErrorHandler.py	Sat May 22 12:54:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,273 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2013 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-"""
-Module implementing a SSL error handler.
-"""
-
-import contextlib
-import enum
-import platform
-
-from PyQt6.QtCore import QObject, QByteArray
-from PyQt6.QtNetwork import QSslCertificate, QSslConfiguration, QSslError, QSsl
-
-from E5Gui import E5MessageBox
-
-import Preferences
-import Utilities
-import Globals
-
-
-class E5SslErrorState(enum.Enum):
-    """
-    Class defining the SSL error handling states.
-    """
-    NOT_IGNORED = 0
-    SYSTEM_IGNORED = 1
-    USER_IGNORED = 2
-
-
-class E5SslErrorHandler(QObject):
-    """
-    Class implementing a handler for SSL errors.
-    
-    It also initializes the default SSL configuration with certificates
-    permanently accepted by the user already.
-    """
-    def __init__(self, parent=None):
-        """
-        Constructor
-        
-        @param parent reference to the parent object (QObject)
-        """
-        super().__init__(parent)
-        
-        caList = self.__getSystemCaCertificates()
-        if Preferences.Prefs.settings.contains("Help/CaCertificatesDict"):
-            # port old entries stored under 'Help'
-            certificateDict = Globals.toDict(
-                Preferences.Prefs.settings.value("Help/CaCertificatesDict"))
-            Preferences.Prefs.settings.setValue(
-                "Ssl/CaCertificatesDict", certificateDict)
-            Preferences.Prefs.settings.remove("Help/CaCertificatesDict")
-        else:
-            certificateDict = Globals.toDict(
-                Preferences.Prefs.settings.value("Ssl/CaCertificatesDict"))
-        for server in certificateDict:
-            for cert in QSslCertificate.fromData(certificateDict[server]):
-                if cert not in caList:
-                    caList.append(cert)
-        sslCfg = QSslConfiguration.defaultConfiguration()
-        sslCfg.setCaCertificates(caList)
-        try:
-            sslProtocol = QSsl.SslProtocol.TlsV1_1OrLater
-            if Globals.isWindowsPlatform() and platform.win32_ver()[0] == '7':
-                sslProtocol = QSsl.SslProtocol.SecureProtocols
-        except AttributeError:
-            sslProtocol = QSsl.SslProtocol.SecureProtocols
-        sslCfg.setProtocol(sslProtocol)
-        with contextlib.suppress(AttributeError):
-            sslCfg.setSslOption(QSsl.SslOption.SslOptionDisableCompression,
-                                True)
-        QSslConfiguration.setDefaultConfiguration(sslCfg)
-    
-    def sslErrorsReplySlot(self, reply, errors):
-        """
-        Public slot to handle SSL errors for a network reply.
-        
-        @param reply reference to the reply object (QNetworkReply)
-        @param errors list of SSL errors (list of QSslError)
-        """
-        self.sslErrorsReply(reply, errors)
-    
-    def sslErrorsReply(self, reply, errors):
-        """
-        Public slot to handle SSL errors for a network reply.
-        
-        @param reply reference to the reply object (QNetworkReply)
-        @param errors list of SSL errors (list of QSslError)
-        @return tuple indicating to ignore the SSL errors (one of NotIgnored,
-            SystemIgnored or UserIgnored) and indicating a change of the
-            default SSL configuration (boolean)
-        """
-        url = reply.url()
-        ignore, defaultChanged = self.sslErrors(errors, url.host(), url.port())
-        if ignore:
-            if defaultChanged:
-                reply.setSslConfiguration(
-                    QSslConfiguration.defaultConfiguration())
-            reply.ignoreSslErrors()
-        else:
-            reply.abort()
-        
-        return ignore, defaultChanged
-    
-    def sslErrors(self, errors, server, port=-1):
-        """
-        Public method to handle SSL errors.
-        
-        @param errors list of SSL errors
-        @type list of QSslError
-        @param server name of the server
-        @type str
-        @param port value of the port
-        @type int
-        @return tuple indicating to ignore the SSL errors and indicating a
-            change of the default SSL configuration
-        @rtype tuple of (E5SslErrorState, bool)
-        """
-        caMerge = {}
-        certificateDict = Globals.toDict(
-            Preferences.Prefs.settings.value("Ssl/CaCertificatesDict"))
-        for caServer in certificateDict:
-            caMerge[caServer] = QSslCertificate.fromData(
-                certificateDict[caServer])
-        caNew = []
-        
-        errorStrings = []
-        if port != -1:
-            server += ":{0:d}".format(port)
-        if errors:
-            for err in errors:
-                if err.error() == QSslError.SslError.NoError:
-                    continue
-                if server in caMerge and err.certificate() in caMerge[server]:
-                    continue
-                errorStrings.append(err.errorString())
-                if not err.certificate().isNull():
-                    cert = err.certificate()
-                    if cert not in caNew:
-                        caNew.append(cert)
-        if not errorStrings:
-            return E5SslErrorState.SYSTEM_IGNORED, False
-        
-        errorString = '.</li><li>'.join(errorStrings)
-        ret = E5MessageBox.yesNo(
-            None,
-            self.tr("SSL Errors"),
-            self.tr("""<p>SSL Errors for <br /><b>{0}</b>"""
-                    """<ul><li>{1}</li></ul></p>"""
-                    """<p>Do you want to ignore these errors?</p>""")
-            .format(server, errorString),
-            icon=E5MessageBox.Warning)
-        
-        if ret:
-            caRet = False
-            if len(caNew) > 0:
-                certinfos = []
-                for cert in caNew:
-                    certinfos.append(self.__certToString(cert))
-                caRet = E5MessageBox.yesNo(
-                    None,
-                    self.tr("Certificates"),
-                    self.tr(
-                        """<p>Certificates:<br/>{0}<br/>"""
-                        """Do you want to accept all these certificates?"""
-                        """</p>""")
-                    .format("".join(certinfos)))
-                if caRet:
-                    if server not in caMerge:
-                        caMerge[server] = []
-                    for cert in caNew:
-                        caMerge[server].append(cert)
-                    
-                    sslCfg = QSslConfiguration.defaultConfiguration()
-                    caList = sslCfg.caCertificates()
-                    for cert in caNew:
-                        caList.append(cert)
-                    sslCfg.setCaCertificates(caList)
-                    try:
-                        sslCfg.setProtocol(QSsl.SslProtocol.TlsV1_1OrLater)
-                    except AttributeError:
-                        sslCfg.setProtocol(QSsl.SslProtocol.SecureProtocols)
-                    with contextlib.suppress(AttributeError):
-                        sslCfg.setSslOption(
-                            QSsl.SslOption.SslOptionDisableCompression,
-                            True)
-                    QSslConfiguration.setDefaultConfiguration(sslCfg)
-                    
-                    certificateDict = {}
-                    for server in caMerge:
-                        pems = QByteArray()
-                        for cert in caMerge[server]:
-                            pems.append(cert.toPem() + b'\n')
-                        certificateDict[server] = pems
-                    Preferences.Prefs.settings.setValue(
-                        "Ssl/CaCertificatesDict",
-                        certificateDict)
-            
-            return E5SslErrorState.USER_IGNORED, caRet
-        
-        else:
-            return E5SslErrorState.NOT_IGNORED, False
-    
-    def __certToString(self, cert):
-        """
-        Private method to convert a certificate to a formatted string.
-        
-        @param cert certificate to convert (QSslCertificate)
-        @return formatted string (string)
-        """
-        result = "<p>"
-        
-        result += self.tr(
-            "Name: {0}"
-        ).format(
-            Utilities.html_encode(
-                Utilities.decodeString(
-                    ", ".join(cert.subjectInfo(
-                        QSslCertificate.SubjectInfo.CommonName))
-                )
-            )
-        )
-        
-        result += self.tr(
-            "<br/>Organization: {0}"
-        ).format(
-            Utilities.html_encode(
-                Utilities.decodeString(
-                    ", ".join(cert.subjectInfo(
-                        QSslCertificate.SubjectInfo.Organization))
-                )
-            )
-        )
-        
-        result += self.tr(
-            "<br/>Issuer: {0}"
-        ).format(
-            Utilities.html_encode(
-                Utilities.decodeString(
-                    ", ".join(cert.issuerInfo(
-                        QSslCertificate.SubjectInfo.CommonName))
-                )
-            )
-        )
-        result += self.tr(
-            "<br/>Not valid before: {0}<br/>Valid Until: {1}"
-        ).format(
-            Utilities.html_encode(
-                cert.effectiveDate().toString("yyyy-MM-dd")
-            ),
-            Utilities.html_encode(
-                cert.expiryDate().toString("yyyy-MM-dd")
-            )
-        )
-        
-        result += "</p>"
-        
-        return result
-    
-    def __getSystemCaCertificates(self):
-        """
-        Private method to get the list of system certificates.
-        
-        @return list of system certificates (list of QSslCertificate)
-        """
-        caList = QSslCertificate.fromData(Globals.toByteArray(
-            Preferences.Prefs.settings.value("Ssl/SystemCertificates")))
-        if not caList:
-            caList = QSslConfiguration.systemCaCertificates()
-        return caList
--- a/eric7/E5Network/E5SslInfoWidget.py	Sat May 22 12:54:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,209 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2010 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-"""
-Module implementing a widget to show SSL information.
-"""
-
-from PyQt6.QtCore import Qt, QUrl, QPoint
-from PyQt6.QtWidgets import QMenu, QGridLayout, QLabel, QSizePolicy
-from PyQt6.QtNetwork import QSsl, QSslConfiguration, QSslCertificate
-
-import UI.PixmapCache
-import Utilities
-
-
-class E5SslInfoWidget(QMenu):
-    """
-    Class implementing a widget to show SSL certificate infos.
-    """
-    def __init__(self, url, configuration, parent=None):
-        """
-        Constructor
-        
-        @param url URL to show SSL info for (QUrl)
-        @param configuration SSL configuration (QSslConfiguration)
-        @param parent reference to the parent widget (QWidget)
-        """
-        super().__init__(parent)
-        
-        self.__url = QUrl(url)
-        self.__configuration = QSslConfiguration(configuration)
-        
-        self.setMinimumWidth(400)
-        
-        certList = self.__configuration.peerCertificateChain()
-        cert = certList[0] if certList else QSslCertificate()
-        
-        layout = QGridLayout(self)
-        rows = 0
-        
-        ##########################################
-        ## Identity Information
-        ##########################################
-        imageLabel = QLabel(self)
-        layout.addWidget(imageLabel, rows, 0, Qt.AlignmentFlag.AlignCenter)
-        
-        label = QLabel(self)
-        label.setWordWrap(True)
-        label.setSizePolicy(QSizePolicy.Policy.Expanding,
-                            QSizePolicy.Policy.Preferred)
-        label.setText(self.tr("Identity"))
-        font = label.font()
-        font.setBold(True)
-        label.setFont(font)
-        layout.addWidget(label, rows, 1)
-        rows += 1
-        
-        label = QLabel(self)
-        label.setWordWrap(True)
-        if cert.isNull():
-            label.setText(self.tr(
-                "Warning: this site is NOT carrying a certificate."))
-            imageLabel.setPixmap(UI.PixmapCache.getPixmap("securityLow32"))
-        else:
-            valid = not cert.isBlacklisted()
-            if valid:
-                txt = ", ".join(
-                    cert.issuerInfo(QSslCertificate.SubjectInfo.CommonName))
-                label.setText(self.tr(
-                    "The certificate for this site is valid"
-                    " and has been verified by:\n{0}").format(
-                    Utilities.decodeString(txt)))
-                imageLabel.setPixmap(
-                    UI.PixmapCache.getPixmap("securityHigh32"))
-            else:
-                label.setText(self.tr(
-                    "The certificate for this site is NOT valid."))
-                imageLabel.setPixmap(
-                    UI.PixmapCache.getPixmap("securityLow32"))
-            layout.addWidget(label, rows, 1)
-            rows += 1
-            
-            label = QLabel(self)
-            label.setWordWrap(True)
-            label.setText(
-                '<a href="moresslinfos">' +
-                self.tr("Certificate Information") + "</a>")
-            label.linkActivated.connect(self.__showCertificateInfos)
-            layout.addWidget(label, rows, 1)
-            rows += 1
-        
-        ##########################################
-        ## Identity Information
-        ##########################################
-        imageLabel = QLabel(self)
-        layout.addWidget(imageLabel, rows, 0, Qt.AlignmentFlag.AlignCenter)
-        
-        label = QLabel(self)
-        label.setWordWrap(True)
-        label.setText(self.tr("Encryption"))
-        font = label.font()
-        font.setBold(True)
-        label.setFont(font)
-        layout.addWidget(label, rows, 1)
-        rows += 1
-        
-        cipher = self.__configuration.sessionCipher()
-        if cipher.isNull():
-            label = QLabel(self)
-            label.setWordWrap(True)
-            label.setText(self.tr(
-                'Your connection to "{0}" is NOT encrypted.\n').format(
-                self.__url.host()))
-            layout.addWidget(label, rows, 1)
-            imageLabel.setPixmap(UI.PixmapCache.getPixmap("securityLow32"))
-            rows += 1
-        else:
-            label = QLabel(self)
-            label.setWordWrap(True)
-            label.setText(self.tr(
-                'Your connection to "{0}" is encrypted.').format(
-                self.__url.host()))
-            layout.addWidget(label, rows, 1)
-            
-            proto = cipher.protocol()
-            if proto == QSsl.SslProtocol.SslV3:
-                sslVersion = "SSL 3.0"
-                imageLabel.setPixmap(
-                    UI.PixmapCache.getPixmap("securityLow32"))
-            elif proto == QSsl.SslProtocol.TlsV1SslV3:
-                sslVersion = "TLS 1.0/SSL 3.0"
-                imageLabel.setPixmap(
-                    UI.PixmapCache.getPixmap("securityLow32"))
-            elif proto == QSsl.SslProtocol.SslV2:
-                sslVersion = "SSL 2.0"
-                imageLabel.setPixmap(
-                    UI.PixmapCache.getPixmap("securityLow32"))
-            else:
-                sslVersion = self.tr("unknown")
-                imageLabel.setPixmap(
-                    UI.PixmapCache.getPixmap("securityLow32"))
-            if proto == QSsl.SslProtocol.TlsV1_0:
-                sslVersion = "TLS 1.0"
-                imageLabel.setPixmap(
-                    UI.PixmapCache.getPixmap("securityHigh32"))
-            elif proto == QSsl.SslProtocol.TlsV1_1:
-                sslVersion = "TLS 1.1"
-                imageLabel.setPixmap(
-                    UI.PixmapCache.getPixmap("securityHigh32"))
-            elif proto == QSsl.SslProtocol.TlsV1_2:
-                sslVersion = "TLS 1.2"
-                imageLabel.setPixmap(
-                    UI.PixmapCache.getPixmap("securityHigh32"))
-            elif proto == QSsl.SslProtocol.TlsV1_3:
-                sslVersion = "TLS 1.3"
-                imageLabel.setPixmap(
-                    UI.PixmapCache.getPixmap("securityHigh32"))
-            rows += 1
-            
-            label = QLabel(self)
-            label.setWordWrap(True)
-            label.setText(self.tr(
-                "It uses protocol: {0}").format(sslVersion))
-            layout.addWidget(label, rows, 1)
-            rows += 1
-            
-            label = QLabel(self)
-            label.setWordWrap(True)
-            label.setText(self.tr(
-                "It is encrypted using {0} at {1} bits, "
-                "with {2} for message authentication and "
-                "{3} as key exchange mechanism.\n\n").format(
-                cipher.encryptionMethod(),
-                cipher.usedBits(),
-                cipher.authenticationMethod(),
-                cipher.keyExchangeMethod()))
-            layout.addWidget(label, rows, 1)
-            rows += 1
-    
-    def showAt(self, pos):
-        """
-        Public method to show the widget.
-        
-        @param pos position to show at (QPoint)
-        """
-        self.adjustSize()
-        xpos = pos.x() - self.width()
-        if xpos < 0:
-            xpos = 10
-        p = QPoint(xpos, pos.y() + 10)
-        self.move(p)
-        self.show()
-    
-    def __showCertificateInfos(self):
-        """
-        Private slot to show certificate information.
-        """
-        from .E5SslCertificatesInfoDialog import E5SslCertificatesInfoDialog
-        dlg = E5SslCertificatesInfoDialog(
-            self.__configuration.peerCertificateChain())
-        dlg.exec()
-    
-    def accept(self):
-        """
-        Public method to accept the widget.
-        """
-        self.close()
--- a/eric7/E5Network/E5SslUtilities.py	Sat May 22 12:54:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2015 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-"""
-Module implementing SSL utility functions.
-"""
-
-
-def initSSL():
-    """
-    Function to initialize some global SSL stuff.
-    """
-    blacklist = [
-        "SRP-AES-256-CBC-SHA",          # open to MitM
-        "SRP-AES-128-CBC-SHA",          # open to MitM
-    ]
-    
-    try:
-        from PyQt6.QtNetwork import QSslConfiguration
-    except ImportError:
-        # no SSL available, so there is nothing to initialize
-        return
-    
-    strongCiphers = [c for c in QSslConfiguration.supportedCiphers()
-                     if c.name() not in blacklist and c.usedBits() >= 128]
-    defaultSslConfiguration = QSslConfiguration.defaultConfiguration()
-    defaultSslConfiguration.setCiphers(strongCiphers)
-    QSslConfiguration.setDefaultConfiguration(defaultSslConfiguration)
--- a/eric7/E5Network/E5TldExtractor.py	Sat May 22 12:54:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,554 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2016 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-"""
-Module implementing the TLD Extractor.
-"""
-
-#
-# This is a Python port of the TLDExtractor of Qupzilla
-# Copyright (C) 2014  Razi Alavizadeh <s.r.alavizadeh@gmail.com>
-#
-
-import collections
-import os
-import re
-
-from PyQt6.QtCore import QObject, QUrl, QFile, QFileInfo, qWarning
-
-from E5Gui import E5MessageBox
-
-
-class E5TldHostParts:
-    """
-    Class implementing the host parts helper.
-    """
-    def __init__(self):
-        """
-        Constructor
-        """
-        self.host = ""
-        self.tld = ""
-        self.domain = ""
-        self.registrableDomain = ""
-        self.subdomain = ""
-
-
-class E5TldExtractor(QObject):
-    """
-    Class implementing the TLD Extractor.
-    
-    Note: The module function instance() should be used to get a reference
-    to a global object to avoid overhead.
-    """
-    def __init__(self, withPrivate=False, parent=None):
-        """
-        Constructor
-        
-        @param withPrivate flag indicating to load private TLDs as well
-        @type bool
-        @param parent reference to the parent object
-        @type QObject
-        """
-        super().__init__(parent)
-        
-        self.__withPrivate = withPrivate
-        self.__dataFileName = ""
-        self.__dataSearchPaths = []
-        
-        self.__tldDict = collections.defaultdict(list)
-        # dict with list of str as values
-        
-        self.setDataSearchPaths()
-    
-    def isDataLoaded(self):
-        """
-        Public method to check, if the TLD data ia already loaded.
-        
-        @return flag indicating data is loaded
-        @rtype bool
-        """
-        return bool(self.__tldDict)
-    
-    def tld(self, host):
-        """
-        Public method to get the top level domain for a host.
-        
-        @param host host name to get TLD for
-        @type str
-        @return TLD for host
-        @rtype str
-        """
-        if not host or host.startswith("."):
-            return ""
-        
-        cleanHost = self.__normalizedHost(host)
-        
-        tldPart = cleanHost[cleanHost.rfind(".") + 1:]
-        cleanHost = bytes(QUrl.toAce(cleanHost)).decode("utf-8")
-        
-        self.__loadData()
-        
-        if tldPart not in self.__tldDict:
-            return tldPart
-        
-        tldRules = self.__tldDict[tldPart][:]
-        
-        if tldPart not in tldRules:
-            tldRules.append(tldPart)
-        
-        maxLabelCount = 0
-        isWildcardTLD = False
-        
-        for rule in tldRules:
-            labelCount = rule.count(".") + 1
-            
-            if rule.startswith("!"):
-                rule = rule[1:]
-                
-                rule = bytes(QUrl.toAce(rule)).decode("utf-8")
-                
-                # matches with exception TLD
-                if cleanHost.endswith(rule):
-                    tldPart = rule[rule.find(".") + 1:]
-                    break
-            
-            if rule.startswith("*"):
-                rule = rule[1:]
-                
-                if rule.startswith("."):
-                    rule = rule[1:]
-                
-                isWildcardTLD = True
-            else:
-                isWildcardTLD = False
-            
-            rule = bytes(QUrl.toAce(rule)).decode("utf-8")
-            testRule = "." + rule
-            testUrl = "." + cleanHost
-            
-            if labelCount > maxLabelCount and testUrl.endswith(testRule):
-                tldPart = rule
-                maxLabelCount = labelCount
-                
-                if isWildcardTLD:
-                    temp = cleanHost
-                    temp = temp[:temp.rfind(tldPart)]
-                    
-                    if temp.endswith("."):
-                        temp = temp[:-1]
-                    
-                    temp = temp[temp.rfind(".") + 1:]
-                    
-                    if temp:
-                        tldPart = temp + "." + rule
-                    else:
-                        tldPart = rule
-        
-        temp = self.__normalizedHost(host)
-        tldPart = ".".join(
-            temp.split(".")[temp.count(".") - tldPart.count("."):])
-        
-        return tldPart
-    
-    def domain(self, host):
-        """
-        Public method to get the domain for a host.
-        
-        @param host host name to get the domain for
-        @type str
-        @return domain for host
-        @rtype str
-        """
-        tldPart = self.tld(host)
-        
-        return self.__domainHelper(host, tldPart)
-    
-    def registrableDomain(self, host):
-        """
-        Public method to get the registrable domain for a host.
-        
-        @param host host name to get the registrable domain for
-        @type str
-        @return registrable domain for host
-        @rtype str
-        """
-        tldPart = self.tld(host)
-        
-        return self.__registrableDomainHelper(
-            self.__domainHelper(host, tldPart), tldPart)
-    
-    def subdomain(self, host):
-        """
-        Public method to get the subdomain for a host.
-        
-        @param host host name to get the subdomain for
-        @type str
-        @return subdomain for host
-        @rtype str
-        """
-        return self.__subdomainHelper(host, self.registrableDomain(host))
-    
-    def splitParts(self, host):
-        """
-        Public method to split a host address into its parts.
-        
-        @param host host address to be split
-        @type str
-        @return splitted host address
-        @rtype E5TldHostParts
-        """
-        hostParts = E5TldHostParts()
-        hostParts.host = host
-        hostParts.tld = self.tld(host)
-        hostParts.domain = self.__domainHelper(host, hostParts.tld)
-        hostParts.registrableDomain = self.__registrableDomainHelper(
-            hostParts.domain, hostParts.tld)
-        hostParts.subdomain = self.__subdomainHelper(
-            host, hostParts.registrableDomain)
-        
-        return hostParts
-    
-    def dataSearchPaths(self):
-        """
-        Public method to get the search paths for the TLD data file.
-        
-        @return search paths for the TLD data file
-        @rtype list of str
-        """
-        return self.__dataSearchPaths[:]
-    
-    def setDataSearchPaths(self, searchPaths=None):
-        """
-        Public method to set the search paths for the TLD data file.
-        
-        @param searchPaths search paths for the TLD data file or None,
-            if the default search paths shall be set
-        @type list of str
-        """
-        if searchPaths:
-            self.__dataSearchPaths = searchPaths[:]
-            self.__dataSearchPaths.extend(self.__defaultDataSearchPaths())
-        else:
-            self.__dataSearchPaths = self.__defaultDataSearchPaths()[:]
-        
-        # remove duplicates
-        paths = []
-        for p in self.__dataSearchPaths:
-            if p not in paths:
-                paths.append(p)
-        self.__dataSearchPaths = paths
-    
-    def __defaultDataSearchPaths(self):
-        """
-        Private method to get the default search paths for the TLD data file.
-        
-        @return default search paths for the TLD data file
-        @rtype list of str
-        """
-        return [os.path.join(os.path.dirname(__file__), "data")]
-    
-    def getTldDownloadUrl(self):
-        """
-        Public method to get the TLD data file download URL.
-        
-        @return download URL
-        @rtype QUrl
-        """
-        return QUrl(
-            "http://mxr.mozilla.org/mozilla-central/source/netwerk/dns/"
-            "effective_tld_names.dat?raw=1")
-    
-    def __loadData(self):
-        """
-        Private method to load the TLD data.
-        """
-        if self.isDataLoaded():
-            return
-        
-        dataFileName = ""
-        parsedDataFileExist = False
-        
-        for path in self.__dataSearchPaths:
-            dataFileName = (
-                QFileInfo(path + "/effective_tld_names.dat").absoluteFilePath()
-            )
-            if QFileInfo(dataFileName).exists():
-                parsedDataFileExist = True
-                break
-        
-        if not parsedDataFileExist:
-            tldDataFileDownloadLink = (
-                "http://mxr.mozilla.org/mozilla-central/source/netwerk/dns/"
-                "effective_tld_names.dat?raw=1"
-            )
-            E5MessageBox.information(
-                None,
-                self.tr("TLD Data File not found"),
-                self.tr("""<p>The file 'effective_tld_names.dat' was not"""
-                        """ found!<br/>You can download it from """
-                        """'<a href="{0}"><b>here</b></a>' to one of the"""
-                        """ following paths:</p><ul>{1}</ul>""").format(
-                    tldDataFileDownloadLink,
-                    "".join(["<li>{0}</li>".format(p)
-                             for p in self.__dataSearchPaths]))
-            )
-            return
-        
-        self.__dataFileName = dataFileName
-        if not self.__parseData(dataFileName,
-                                loadPrivateDomains=self.__withPrivate):
-            qWarning(
-                "E5TldExtractor: There are some parse errors for file: {0}"
-                .format(dataFileName))
-    
-    def __parseData(self, dataFile, loadPrivateDomains=False):
-        """
-        Private method to parse TLD data.
-        
-        @param dataFile name of the file containing the TLD data
-        @type str
-        @param loadPrivateDomains flag indicating to load private domains
-        @type bool
-        @return flag indicating success
-        @rtype bool
-        """
-        # start with a fresh dictionary
-        self.__tldDict = collections.defaultdict(list)
-        
-        file = QFile(dataFile)
-        
-        if not file.open(QFile.ReadOnly | QFile.Text):
-            return False
-        
-        seekToEndOfPrivateDomains = False
-        
-        while not file.atEnd():
-            line = bytes(file.readLine()).decode("utf-8").strip()
-            if not line:
-                continue
-            
-            if line.startswith("."):
-                line = line[1:]
-            
-            if line.startswith("//"):
-                if "===END PRIVATE DOMAINS===" in line:
-                    seekToEndOfPrivateDomains = False
-                
-                if (
-                    not loadPrivateDomains and
-                    "===BEGIN PRIVATE DOMAINS===" in line
-                ):
-                    seekToEndOfPrivateDomains = True
-                
-                continue
-            
-            if seekToEndOfPrivateDomains:
-                continue
-            
-            # only data up to the first whitespace is used
-            line = line.split(None, 1)[0]
-            
-            if "." not in line:
-                self.__tldDict[line].append(line)
-            else:
-                key = line[line.rfind(".") + 1:]
-                self.__tldDict[key].append(line)
-        
-        return self.isDataLoaded()
-    
-    def __domainHelper(self, host, tldPart):
-        """
-        Private method to get the domain name without TLD.
-        
-        @param host host address
-        @type str
-        @param tldPart TLD part of the host address
-        @type str
-        @return domain name
-        @rtype str
-        """
-        if not host or not tldPart:
-            return ""
-        
-        temp = self.__normalizedHost(host)
-        temp = temp[:temp.rfind(tldPart)]
-        
-        if temp.endswith("."):
-            temp = temp[:-1]
-        
-        return temp[temp.rfind(".") + 1:]
-    
-    def __registrableDomainHelper(self, domainPart, tldPart):
-        """
-        Private method to get the registrable domain (i.e. domain plus TLD).
-        
-        @param domainPart domain part of a host address
-        @type str
-        @param tldPart TLD part of a host address
-        @type str
-        @return registrable domain name
-        @rtype str
-        """
-        if not tldPart or not domainPart:
-            return ""
-        else:
-            return "{0}.{1}".format(domainPart, tldPart)
-    
-    def __subdomainHelper(self, host, registrablePart):
-        """
-        Private method to get the subdomain of a host address (i.e. domain part
-        without the registrable domain name).
-        
-        @param host host address
-        @type str
-        @param registrablePart registrable domain part of the host address
-        @type str
-        @return subdomain name
-        @rtype str
-        """
-        if not host or not registrablePart:
-            return ""
-        
-        subdomain = self.__normalizedHost(host)
-        
-        subdomain = subdomain[:subdomain.rfind(registrablePart)]
-        
-        if subdomain.endswith("."):
-            subdomain = subdomain[:-1]
-        
-        return subdomain
-    
-    def __normalizedHost(self, host):
-        """
-        Private method to get the normalized host for a host address.
-        
-        @param host host address to be normalized
-        @type str
-        @return normalized host address
-        @rtype str
-        """
-        return host.lower()
-    
-    #################################################################
-    ## Methods below are for testing purposes
-    #################################################################
-    
-    def test(self):
-        """
-        Public method to execute the tests.
-        
-        @return flag indicating the test result
-        @rtype bool
-        """
-        self.__withPrivate = True
-        self.__loadData()
-        if not self.__tldDict:
-            return False
-        
-        testDataFileName = ""
-        testDataFileExist = False
-        
-        for path in self.__dataSearchPaths:
-            testDataFileName = (
-                QFileInfo(path + "/test_psl.txt").absoluteFilePath()
-            )
-            if QFileInfo(testDataFileName).exists():
-                testDataFileExist = True
-                break
-        
-        if not testDataFileExist:
-            testFileDownloadLink = (
-                "http://mxr.mozilla.org/mozilla-central/source/netwerk/test/"
-                "unit/data/test_psl.txt?raw=1"
-            )
-            E5MessageBox.information(
-                None,
-                self.tr("TLD Data File not found"),
-                self.tr("""<p>The file 'test_psl.txt' was not found!"""
-                        """<br/>You can download it from '<a href="{0}">"""
-                        """<b>here</b></a>' to one of the following"""
-                        """ paths:</p><ul>{1}</ul>""").format(
-                    testFileDownloadLink,
-                    "".join(["<li>{0}</li>".format(p)
-                             for p in self.__dataSearchPaths]))
-            )
-            return False
-        
-        file = QFile(testDataFileName)
-        
-        if not file.open(QFile.ReadOnly | QFile.Text):
-            return False
-        
-        testRegExp = re.compile(
-            "checkPublicSuffix\\(('([^']+)'|null), ('([^']+)'|null)\\);")
-        allTestSuccess = True
-        
-        while not file.atEnd():
-            line = bytes(file.readLine()).decode("utf-8").strip()
-            if not line or line.startswith("//"):
-                continue
-            
-            match = testRegExp.search(line)
-            if match is None:
-                allTestSuccess = False
-            else:
-                hostName, registrableName = match.group(2, 4)
-                
-                if not self.__checkPublicSuffix(hostName, registrableName):
-                    allTestSuccess = False
-        
-        if allTestSuccess:
-            qWarning("E5TldExtractor: Test passed successfully.")
-        else:
-            qWarning("E5TldExtractor: Test finished with some errors!")
-        
-        # reset the TLD dictionary
-        self.__tldDict = collections.defaultdict(list)
-        
-        return allTestSuccess
-    
-    def __checkPublicSuffix(self, host, registrableName):
-        """
-        Private method to test a host name against a registrable name.
-        
-        @param host host name to test
-        @type str
-        @param registrableName registrable domain name to test against
-        @type str
-        @return flag indicating the check result
-        @rtype bool
-        """
-        regName = self.registrableDomain(host)
-        if regName != registrableName:
-            qWarning(
-                "E5TldExtractor Test Error: hostName: {0}\n"
-                "    Correct registrableName:    {1}\n"
-                "    Calculated registrableName: {2}".format(
-                    host, registrableName, regName))
-            return False
-        
-        return True
-
-
-_TLDExtractor = None
-
-
-def instance(withPrivate=False):
-    """
-    Global function to get a reference to the TLD extractor and create it, if
-    it hasn't been yet.
-    
-    @param withPrivate flag indicating to load private TLDs as well
-    @type bool
-    @return reference to the zoom manager object
-    @rtype E5TldExtractor
-    """
-    global _TLDExtractor
-    
-    if _TLDExtractor is None:
-        _TLDExtractor = E5TldExtractor(withPrivate=withPrivate)
-    
-    return _TLDExtractor
--- a/eric7/E5Network/E5UrlInfo.py	Sat May 22 12:54:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,272 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2012 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-"""
-Module implementing a class replacing QUrlInfo.
-"""
-
-import enum
-
-from PyQt6.QtCore import QDateTime
-
-
-class E5UrlPermission(enum.IntEnum):
-    """
-    Class defining the URL permissions.
-    """
-    READ_OWNER = 0o0400
-    WRITE_OWNER = 0o0200
-    EXE_OWNER = 0o0100
-    READ_GROUP = 0o0040
-    WRITE_GROUP = 0o0020
-    EXE_GROUP = 0o0010
-    READ_OTHER = 0o0004
-    WRITE_OTHER = 0o0002
-    EXE_OTHER = 0o0001
-
-
-class E5UrlInfo:
-    """
-    Class implementing a replacement for QUrlInfo.
-    """
-    def __init__(self):
-        """
-        Constructor
-        """
-        self.__valid = False
-        
-        self.__permissions = 0
-        self.__size = 0
-        self.__isDir = False
-        self.__isFile = True
-        self.__isSymlink = False
-        self.__isWritable = True
-        self.__isReadable = True
-        self.__isExecutable = False
-        self.__name = ""
-        self.__owner = ""
-        self.__group = ""
-        self.__lastModified = QDateTime()
-        self.__lastRead = QDateTime()
-    
-    def isValid(self):
-        """
-        Public method to check the validity of the object.
-        
-        @return flag indicating validity (boolean)
-        """
-        return self.__valid
-    
-    def setName(self, name):
-        """
-        Public method to set the name.
-        
-        @param name name to be set (string)
-        """
-        self.__name = name
-        self.__valid = True
-    
-    def setPermissions(self, permissions):
-        """
-        Public method to set the permissions.
-        
-        @param permissions permissions to be set (integer)
-        """
-        self.__permissions = permissions
-        self.__valid = True
-    
-    def setDir(self, isDir):
-        """
-        Public method to indicate a directory.
-        
-        @param isDir flag indicating a directory (boolean)
-        """
-        self.__isDir = isDir
-        self.__valid = True
-    
-    def setFile(self, isFile):
-        """
-        Public method to indicate a file.
-        
-        @param isFile flag indicating a file (boolean)
-        """
-        self.__isFile = isFile
-        self.__valid = True
-    
-    def setSymLink(self, isSymLink):
-        """
-        Public method to indicate a symbolic link.
-        
-        @param isSymLink flag indicating a symbolic link (boolean)
-        """
-        self.__isSymLink = isSymLink
-        self.__valid = True
-    
-    def setOwner(self, owner):
-        """
-        Public method to set the owner.
-        
-        @param owner owner to be set (string)
-        """
-        self.__owner = owner
-        self.__valid = True
-    
-    def setGroup(self, group):
-        """
-        Public method to set the group.
-        
-        @param group group to be set (string)
-        """
-        self.__group = group
-        self.__valid = True
-    
-    def setSize(self, size):
-        """
-        Public method to set the size.
-        
-        @param size size to be set (integer)
-        """
-        self.__size = size
-        self.__valid = True
-    
-    def setWritable(self, isWritable):
-        """
-        Public method to a writable entry.
-        
-        @param isWritable flag indicating a writable entry (boolean)
-        """
-        self.__isWritable = isWritable
-        self.__valid = True
-    
-    def setReadable(self, isReadable):
-        """
-        Public method to a readable entry.
-        
-        @param isReadable flag indicating a readable entry (boolean)
-        """
-        self.__isReadable = isReadable
-        self.__valid = True
-    
-    def setLastModified(self, dt):
-        """
-        Public method to set the last modified date and time.
-        
-        @param dt date and time to set (QDateTime)
-        """
-        self.__lastModified = QDateTime(dt)
-        self.__valid = True
-    
-    def setLastRead(self, dt):
-        """
-        Public method to set the last read date and time.
-        
-        @param dt date and time to set (QDateTime)
-        """
-        self.__lastRead = QDateTime(dt)
-        self.__valid = True
-    
-    def name(self):
-        """
-        Public method to get the name.
-        
-        @return name (string)
-        """
-        return self.__name
-    
-    def permissions(self):
-        """
-        Public method to get the permissions.
-        
-        @return permissions (integer)
-        """
-        return self.__permissions
-    
-    def owner(self):
-        """
-        Public method to get the owner.
-        
-        @return owner (string)
-        """
-        return self.__owner
-    
-    def group(self):
-        """
-        Public method to get the group.
-        
-        @return group (string)
-        """
-        return self.__group
-    
-    def size(self):
-        """
-        Public method to get the size.
-        
-        @return size (integer)
-        """
-        return self.__size
-    
-    def lastModified(self):
-        """
-        Public method to get the last modified date and time.
-        
-        @return last modified date and time (QDateTime)
-        """
-        return QDateTime(self.__lastModified)
-    
-    def lastRead(self):
-        """
-        Public method to get the last read date and time.
-        
-        @return last read date and time (QDateTime)
-        """
-        return QDateTime(self.__lastRead)
-    
-    def isDir(self):
-        """
-        Public method to test, if the entry is a directory.
-        
-        @return flag indicating a directory (boolean)
-        """
-        return self.__isDir
-    
-    def isFile(self):
-        """
-        Public method to test, if the entry is a file.
-        
-        @return flag indicating a file (boolean)
-        """
-        return self.__isFile
-    
-    def isSymLink(self):
-        """
-        Public method to test, if the entry is a symbolic link.
-        
-        @return flag indicating a symbolic link (boolean)
-        """
-        return self.__isSymlink
-    
-    def isWritable(self):
-        """
-        Public method to test, if the entry is writable.
-        
-        @return flag indicating writable (boolean)
-        """
-        return self.__isWritable
-    
-    def isReadable(self):
-        """
-        Public method to test, if the entry is readable.
-        
-        @return flag indicating readable (boolean)
-        """
-        return self.__isReadable
-    
-    def isExecutable(self):
-        """
-        Public method to test, if the entry is executable.
-        
-        @return flag indicating executable (boolean)
-        """
-        return self.__isExecutable
--- a/eric7/E5Network/E5XmlRpcClient.py	Sat May 22 12:54:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,139 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2015 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-"""
-Module implementing a xmlrpc client for Qt.
-"""
-
-import xmlrpc.client as xmlrpc
-
-from PyQt6.QtCore import Qt, QObject, QUrl, QByteArray, QEventLoop
-from PyQt6.QtGui import QGuiApplication, QCursor
-from PyQt6.QtNetwork import (
-    QNetworkAccessManager, QNetworkRequest, QNetworkReply
-)
-
-from E5Network.E5NetworkProxyFactory import proxyAuthenticationRequired
-try:
-    from E5Network.E5SslErrorHandler import E5SslErrorHandler, E5SslErrorState
-    SSL_AVAILABLE = True
-except ImportError:
-    SSL_AVAILABLE = False
-
-
-class E5XmlRpcClient(QObject):
-    """
-    Class implementing a xmlrpc client for Qt.
-    """
-    def __init__(self, url, parent=None):
-        """
-        Constructor
-        
-        @param url xmlrpc handler URL (string or QUrl)
-        @param parent parent object (QObject)
-        """
-        super().__init__(parent)
-        
-        # attributes for the network objects
-        self.__networkManager = QNetworkAccessManager(self)
-        self.__networkManager.proxyAuthenticationRequired.connect(
-            proxyAuthenticationRequired)
-        self.__networkManager.finished.connect(self.__replyFinished)
-        if SSL_AVAILABLE:
-            self.__sslErrorHandler = E5SslErrorHandler(self)
-            self.__networkManager.sslErrors.connect(self.__sslErrors)
-        
-        self.__callmap = {}
-        
-        self.__request = QNetworkRequest(QUrl(url))
-        self.__request.setRawHeader(b"User-Agent", b"E5XmlRpcClient/1.0")
-        self.__request.setHeader(
-            QNetworkRequest.KnownHeaders.ContentTypeHeader, "text/xml")
-    
-    def setUrl(self, url):
-        """
-        Public slot to set the xmlrpc handler URL.
-        
-        @param url xmlrpc handler URL (string or QUrl)
-        """
-        url = QUrl(url)
-        if url.isValid():
-            self.__request.setUrl(url)
-    
-    def call(self, method, args, responseCallback, errorCallback):
-        """
-        Public method to call the remote server.
-        
-        @param method name of the remote method to be called (string)
-        @param args tuple of method arguments (tuple)
-        @param responseCallback method to be called with the returned
-            result as a tuple (function)
-        @param errorCallback method to be called in case of an error
-            with error code and error string (function)
-        @exception TypeError raised to indicate an illegal 'args' parameter
-            type
-        """
-        if not isinstance(args, tuple):
-            raise TypeError("argument 'args' must be tuple")
-        
-        QGuiApplication.setOverrideCursor(QCursor(Qt.CursorShape.WaitCursor))
-        QGuiApplication.processEvents(
-            QEventLoop.ProcessEventsFlag.ExcludeUserInputEvents)
-        
-        data = xmlrpc.dumps(args, method).encode("utf-8")
-        reply = self.__networkManager.post(
-            self.__request, QByteArray(data))
-        self.__callmap[reply] = (responseCallback, errorCallback)
-    
-    def abort(self):
-        """
-        Public method to abort all calls.
-        """
-        for reply in list(self.__callmap):
-            if reply.isRunning():
-                reply.abort()
-    
-    def __sslErrors(self, reply, errors):
-        """
-        Private slot to handle SSL errors.
-        
-        @param reply reference to the reply object (QNetworkReply)
-        @param errors list of SSL errors (list of QSslError)
-        """
-        QGuiApplication.restoreOverrideCursor()
-        QGuiApplication.processEvents(
-            QEventLoop.ProcessEventsFlag.ExcludeUserInputEvents)
-        
-        ignored = self.__sslErrorHandler.sslErrorsReply(reply, errors)[0]
-        if ignored == E5SslErrorState.NOT_IGNORED and reply in self.__callmap:
-            self.__callmap[reply][1](xmlrpc.TRANSPORT_ERROR, self.tr(
-                "SSL Error"))
-    
-    def __replyFinished(self, reply):
-        """
-        Private slot handling the receipt of a reply.
-        
-        @param reply reference to the finished reply (QNetworkReply)
-        """
-        if reply not in self.__callmap:
-            return
-        
-        QGuiApplication.restoreOverrideCursor()
-        QGuiApplication.processEvents(
-            QEventLoop.ProcessEventsFlag.ExcludeUserInputEvents)
-        
-        if reply.error() != QNetworkReply.NetworkError.NoError:
-            self.__callmap[reply][1](xmlrpc.TRANSPORT_ERROR,
-                                     reply.errorString())
-        else:
-            data = bytes(reply.readAll()).decode("utf-8")
-            try:
-                data = xmlrpc.loads(data)[0]
-                self.__callmap[reply][0](data)
-            except xmlrpc.Fault as fault:
-                self.__callmap[reply][1](fault.faultCode, fault.faultString)
-        
-        reply.deleteLater()
-        del self.__callmap[reply]
--- a/eric7/E5Network/__init__.py	Sat May 22 12:54:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2009 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-"""
-Package implementing some special network related objects and functions.
-"""
-
-from PyQt6.QtNetwork import QAbstractSocket, QHostAddress
-
-
-def isValidAddress(address):
-    """
-    Public function to check, if the given address is valid.
-    
-    @param address IPv4 or IPv6 address string
-    @type str
-    @return flag indicating validity
-    @rtype bool
-    """
-    h = QHostAddress(address)
-    return not h.isNull()
-
-
-def isValidIPv4Address(address):
-    """
-    Public function to check, if the given address is a valid IPv4 address.
-    
-    @param address IPv4 address string
-    @type str
-    @return flag indicating validity
-    @rtype bool
-    """
-    h = QHostAddress(address)
-    return (
-        not h.isNull() and
-        h.protocol() == QAbstractSocket.NetworkLayerProtocol.IPv4Protocol
-    )
-
-
-def isValidIPv6Address(address):
-    """
-    Public function to check, if the given address is a valid IPv6 address.
-    
-    @param address IPv6 address string
-    @type str
-    @return flag indicating validity
-    @rtype bool
-    """
-    h = QHostAddress(address)
-    return (
-        not h.isNull() and
-        h.protocol() == QAbstractSocket.NetworkLayerProtocol.IPv6Protocol
-    )
--- a/eric7/E5Network/data/__init__.py	Sat May 22 12:54:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2016 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-"""
-Package defining some data used by the networking code.
-"""
--- a/eric7/E5Network/data/effective_tld_names.dat	Sat May 22 12:54:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11476 +0,0 @@
-// This Source Code Form is subject to the terms of the Mozilla Public
-// License, v. 2.0. If a copy of the MPL was not distributed with this
-// file, You can obtain one at https://mozilla.org/MPL/2.0/.
-
-// ===BEGIN ICANN DOMAINS===
-
-// ac : https://en.wikipedia.org/wiki/.ac
-ac
-com.ac
-edu.ac
-gov.ac
-net.ac
-mil.ac
-org.ac
-
-// ad : https://en.wikipedia.org/wiki/.ad
-ad
-nom.ad
-
-// ae : https://en.wikipedia.org/wiki/.ae
-// see also: "Domain Name Eligibility Policy" at http://www.aeda.ae/eng/aepolicy.php
-ae
-co.ae
-net.ae
-org.ae
-sch.ae
-ac.ae
-gov.ae
-mil.ae
-
-// aero : see https://www.information.aero/index.php?id=66
-aero
-accident-investigation.aero
-accident-prevention.aero
-aerobatic.aero
-aeroclub.aero
-aerodrome.aero
-agents.aero
-aircraft.aero
-airline.aero
-airport.aero
-air-surveillance.aero
-airtraffic.aero
-air-traffic-control.aero
-ambulance.aero
-amusement.aero
-association.aero
-author.aero
-ballooning.aero
-broker.aero
-caa.aero
-cargo.aero
-catering.aero
-certification.aero
-championship.aero
-charter.aero
-civilaviation.aero
-club.aero
-conference.aero
-consultant.aero
-consulting.aero
-control.aero
-council.aero
-crew.aero
-design.aero
-dgca.aero
-educator.aero
-emergency.aero
-engine.aero
-engineer.aero
-entertainment.aero
-equipment.aero
-exchange.aero
-express.aero
-federation.aero
-flight.aero
-freight.aero
-fuel.aero
-gliding.aero
-government.aero
-groundhandling.aero
-group.aero
-hanggliding.aero
-homebuilt.aero
-insurance.aero
-journal.aero
-journalist.aero
-leasing.aero
-logistics.aero
-magazine.aero
-maintenance.aero
-media.aero
-microlight.aero
-modelling.aero
-navigation.aero
-parachuting.aero
-paragliding.aero
-passenger-association.aero
-pilot.aero
-press.aero
-production.aero
-recreation.aero
-repbody.aero
-res.aero
-research.aero
-rotorcraft.aero
-safety.aero
-scientist.aero
-services.aero
-show.aero
-skydiving.aero
-software.aero
-student.aero
-trader.aero
-trading.aero
-trainer.aero
-union.aero
-workinggroup.aero
-works.aero
-
-// af : http://www.nic.af/help.jsp
-af
-gov.af
-com.af
-org.af
-net.af
-edu.af
-
-// ag : http://www.nic.ag/prices.htm
-ag
-com.ag
-org.ag
-net.ag
-co.ag
-nom.ag
-
-// ai : http://nic.com.ai/
-ai
-off.ai
-com.ai
-net.ai
-org.ai
-
-// al : http://www.ert.gov.al/ert_alb/faq_det.html?Id=31
-al
-com.al
-edu.al
-gov.al
-mil.al
-net.al
-org.al
-
-// am : https://en.wikipedia.org/wiki/.am
-am
-
-// ao : https://en.wikipedia.org/wiki/.ao
-// http://www.dns.ao/REGISTR.DOC
-ao
-ed.ao
-gv.ao
-og.ao
-co.ao
-pb.ao
-it.ao
-
-// aq : https://en.wikipedia.org/wiki/.aq
-aq
-
-// ar : https://nic.ar/normativa-vigente.xhtml
-ar
-com.ar
-edu.ar
-gob.ar
-gov.ar
-int.ar
-mil.ar
-net.ar
-org.ar
-tur.ar
-
-// arpa : https://en.wikipedia.org/wiki/.arpa
-// Confirmed by registry <iana-questions@icann.org> 2008-06-18
-arpa
-e164.arpa
-in-addr.arpa
-ip6.arpa
-iris.arpa
-uri.arpa
-urn.arpa
-
-// as : https://en.wikipedia.org/wiki/.as
-as
-gov.as
-
-// asia : https://en.wikipedia.org/wiki/.asia
-asia
-
-// at : https://en.wikipedia.org/wiki/.at
-// Confirmed by registry <it@nic.at> 2008-06-17
-at
-ac.at
-co.at
-gv.at
-or.at
-
-// au : https://en.wikipedia.org/wiki/.au
-// http://www.auda.org.au/
-au
-// 2LDs
-com.au
-net.au
-org.au
-edu.au
-gov.au
-asn.au
-id.au
-// Historic 2LDs (closed to new registration, but sites still exist)
-info.au
-conf.au
-oz.au
-// CGDNs - http://www.cgdn.org.au/
-act.au
-nsw.au
-nt.au
-qld.au
-sa.au
-tas.au
-vic.au
-wa.au
-// 3LDs
-act.edu.au
-nsw.edu.au
-nt.edu.au
-qld.edu.au
-sa.edu.au
-tas.edu.au
-vic.edu.au
-wa.edu.au
-// act.gov.au  Bug 984824 - Removed at request of Greg Tankard
-// nsw.gov.au  Bug 547985 - Removed at request of <Shae.Donelan@services.nsw.gov.au>
-// nt.gov.au  Bug 940478 - Removed at request of Greg Connors <Greg.Connors@nt.gov.au>
-qld.gov.au
-sa.gov.au
-tas.gov.au
-vic.gov.au
-wa.gov.au
-
-// aw : https://en.wikipedia.org/wiki/.aw
-aw
-com.aw
-
-// ax : https://en.wikipedia.org/wiki/.ax
-ax
-
-// az : https://en.wikipedia.org/wiki/.az
-az
-com.az
-net.az
-int.az
-gov.az
-org.az
-edu.az
-info.az
-pp.az
-mil.az
-name.az
-pro.az
-biz.az
-
-// ba : https://en.wikipedia.org/wiki/.ba
-ba
-org.ba
-net.ba
-edu.ba
-gov.ba
-mil.ba
-unsa.ba
-unbi.ba
-co.ba
-com.ba
-rs.ba
-
-// bb : https://en.wikipedia.org/wiki/.bb
-bb
-biz.bb
-co.bb
-com.bb
-edu.bb
-gov.bb
-info.bb
-net.bb
-org.bb
-store.bb
-tv.bb
-
-// bd : https://en.wikipedia.org/wiki/.bd
-*.bd
-
-// be : https://en.wikipedia.org/wiki/.be
-// Confirmed by registry <tech@dns.be> 2008-06-08
-be
-ac.be
-
-// bf : https://en.wikipedia.org/wiki/.bf
-bf
-gov.bf
-
-// bg : https://en.wikipedia.org/wiki/.bg
-// https://www.register.bg/user/static/rules/en/index.html
-bg
-a.bg
-b.bg
-c.bg
-d.bg
-e.bg
-f.bg
-g.bg
-h.bg
-i.bg
-j.bg
-k.bg
-l.bg
-m.bg
-n.bg
-o.bg
-p.bg
-q.bg
-r.bg
-s.bg
-t.bg
-u.bg
-v.bg
-w.bg
-x.bg
-y.bg
-z.bg
-0.bg
-1.bg
-2.bg
-3.bg
-4.bg
-5.bg
-6.bg
-7.bg
-8.bg
-9.bg
-
-// bh : https://en.wikipedia.org/wiki/.bh
-bh
-com.bh
-edu.bh
-net.bh
-org.bh
-gov.bh
-
-// bi : https://en.wikipedia.org/wiki/.bi
-// http://whois.nic.bi/
-bi
-co.bi
-com.bi
-edu.bi
-or.bi
-org.bi
-
-// biz : https://en.wikipedia.org/wiki/.biz
-biz
-
-// bj : https://en.wikipedia.org/wiki/.bj
-bj
-asso.bj
-barreau.bj
-gouv.bj
-
-// bm : http://www.bermudanic.bm/dnr-text.txt
-bm
-com.bm
-edu.bm
-gov.bm
-net.bm
-org.bm
-
-// bn : https://en.wikipedia.org/wiki/.bn
-*.bn
-
-// bo : http://www.nic.bo/
-bo
-com.bo
-edu.bo
-gov.bo
-gob.bo
-int.bo
-org.bo
-net.bo
-mil.bo
-tv.bo
-
-// br : http://registro.br/dominio/categoria.html
-// Submitted by registry <fneves@registro.br>
-br
-adm.br
-adv.br
-agr.br
-am.br
-arq.br
-art.br
-ato.br
-b.br
-bio.br
-blog.br
-bmd.br
-cim.br
-cng.br
-cnt.br
-com.br
-coop.br
-ecn.br
-eco.br
-edu.br
-emp.br
-eng.br
-esp.br
-etc.br
-eti.br
-far.br
-flog.br
-fm.br
-fnd.br
-fot.br
-fst.br
-g12.br
-ggf.br
-gov.br
-imb.br
-ind.br
-inf.br
-jor.br
-jus.br
-leg.br
-lel.br
-mat.br
-med.br
-mil.br
-mp.br
-mus.br
-net.br
-*.nom.br
-not.br
-ntr.br
-odo.br
-org.br
-ppg.br
-pro.br
-psc.br
-psi.br
-qsl.br
-radio.br
-rec.br
-slg.br
-srv.br
-taxi.br
-teo.br
-tmp.br
-trd.br
-tur.br
-tv.br
-vet.br
-vlog.br
-wiki.br
-zlg.br
-
-// bs : http://www.nic.bs/rules.html
-bs
-com.bs
-net.bs
-org.bs
-edu.bs
-gov.bs
-
-// bt : https://en.wikipedia.org/wiki/.bt
-bt
-com.bt
-edu.bt
-gov.bt
-net.bt
-org.bt
-
-// bv : No registrations at this time.
-// Submitted by registry <jarle@uninett.no>
-bv
-
-// bw : https://en.wikipedia.org/wiki/.bw
-// http://www.gobin.info/domainname/bw.doc
-// list of other 2nd level tlds ?
-bw
-co.bw
-org.bw
-
-// by : https://en.wikipedia.org/wiki/.by
-// http://tld.by/rules_2006_en.html
-// list of other 2nd level tlds ?
-by
-gov.by
-mil.by
-// Official information does not indicate that com.by is a reserved
-// second-level domain, but it's being used as one (see www.google.com.by and
-// www.yahoo.com.by, for example), so we list it here for safety's sake.
-com.by
-
-// http://hoster.by/
-of.by
-
-// bz : https://en.wikipedia.org/wiki/.bz
-// http://www.belizenic.bz/
-bz
-com.bz
-net.bz
-org.bz
-edu.bz
-gov.bz
-
-// ca : https://en.wikipedia.org/wiki/.ca
-ca
-// ca geographical names
-ab.ca
-bc.ca
-mb.ca
-nb.ca
-nf.ca
-nl.ca
-ns.ca
-nt.ca
-nu.ca
-on.ca
-pe.ca
-qc.ca
-sk.ca
-yk.ca
-// gc.ca: https://en.wikipedia.org/wiki/.gc.ca
-// see also: http://registry.gc.ca/en/SubdomainFAQ
-gc.ca
-
-// cat : https://en.wikipedia.org/wiki/.cat
-cat
-
-// cc : https://en.wikipedia.org/wiki/.cc
-cc
-
-// cd : https://en.wikipedia.org/wiki/.cd
-// see also: https://www.nic.cd/domain/insertDomain_2.jsp?act=1
-cd
-gov.cd
-
-// cf : https://en.wikipedia.org/wiki/.cf
-cf
-
-// cg : https://en.wikipedia.org/wiki/.cg
-cg
-
-// ch : https://en.wikipedia.org/wiki/.ch
-ch
-
-// ci : https://en.wikipedia.org/wiki/.ci
-// http://www.nic.ci/index.php?page=charte
-ci
-org.ci
-or.ci
-com.ci
-co.ci
-edu.ci
-ed.ci
-ac.ci
-net.ci
-go.ci
-asso.ci
-aéroport.ci
-int.ci
-presse.ci
-md.ci
-gouv.ci
-
-// ck : https://en.wikipedia.org/wiki/.ck
-*.ck
-!www.ck
-
-// cl : https://en.wikipedia.org/wiki/.cl
-cl
-gov.cl
-gob.cl
-co.cl
-mil.cl
-
-// cm : https://en.wikipedia.org/wiki/.cm plus bug 981927
-cm
-co.cm
-com.cm
-gov.cm
-net.cm
-
-// cn : https://en.wikipedia.org/wiki/.cn
-// Submitted by registry <tanyaling@cnnic.cn>
-cn
-ac.cn
-com.cn
-edu.cn
-gov.cn
-net.cn
-org.cn
-mil.cn
-公司.cn
-网络.cn
-網絡.cn
-// cn geographic names
-ah.cn
-bj.cn
-cq.cn
-fj.cn
-gd.cn
-gs.cn
-gz.cn
-gx.cn
-ha.cn
-hb.cn
-he.cn
-hi.cn
-hl.cn
-hn.cn
-jl.cn
-js.cn
-jx.cn
-ln.cn
-nm.cn
-nx.cn
-qh.cn
-sc.cn
-sd.cn
-sh.cn
-sn.cn
-sx.cn
-tj.cn
-xj.cn
-xz.cn
-yn.cn
-zj.cn
-hk.cn
-mo.cn
-tw.cn
-
-// co : https://en.wikipedia.org/wiki/.co
-// Submitted by registry <tecnico@uniandes.edu.co>
-co
-arts.co
-com.co
-edu.co
-firm.co
-gov.co
-info.co
-int.co
-mil.co
-net.co
-nom.co
-org.co
-rec.co
-web.co
-
-// com : https://en.wikipedia.org/wiki/.com
-com
-
-// coop : https://en.wikipedia.org/wiki/.coop
-coop
-
-// cr : http://www.nic.cr/niccr_publico/showRegistroDominiosScreen.do
-cr
-ac.cr
-co.cr
-ed.cr
-fi.cr
-go.cr
-or.cr
-sa.cr
-
-// cu : https://en.wikipedia.org/wiki/.cu
-cu
-com.cu
-edu.cu
-org.cu
-net.cu
-gov.cu
-inf.cu
-
-// cv : https://en.wikipedia.org/wiki/.cv
-cv
-
-// cw : http://www.una.cw/cw_registry/
-// Confirmed by registry <registry@una.net> 2013-03-26
-cw
-com.cw
-edu.cw
-net.cw
-org.cw
-
-// cx : https://en.wikipedia.org/wiki/.cx
-// list of other 2nd level tlds ?
-cx
-gov.cx
-
-// cy : https://en.wikipedia.org/wiki/.cy
-ac.cy
-biz.cy
-com.cy
-ekloges.cy
-gov.cy
-ltd.cy
-name.cy
-net.cy
-org.cy
-parliament.cy
-press.cy
-pro.cy
-tm.cy
-
-// cz : https://en.wikipedia.org/wiki/.cz
-cz
-
-// de : https://en.wikipedia.org/wiki/.de
-// Confirmed by registry <ops@denic.de> (with technical
-// reservations) 2008-07-01
-de
-
-// dj : https://en.wikipedia.org/wiki/.dj
-dj
-
-// dk : https://en.wikipedia.org/wiki/.dk
-// Confirmed by registry <robert@dk-hostmaster.dk> 2008-06-17
-dk
-
-// dm : https://en.wikipedia.org/wiki/.dm
-dm
-com.dm
-net.dm
-org.dm
-edu.dm
-gov.dm
-
-// do : https://en.wikipedia.org/wiki/.do
-do
-art.do
-com.do
-edu.do
-gob.do
-gov.do
-mil.do
-net.do
-org.do
-sld.do
-web.do
-
-// dz : https://en.wikipedia.org/wiki/.dz
-dz
-com.dz
-org.dz
-net.dz
-gov.dz
-edu.dz
-asso.dz
-pol.dz
-art.dz
-
-// ec : http://www.nic.ec/reg/paso1.asp
-// Submitted by registry <vabboud@nic.ec>
-ec
-com.ec
-info.ec
-net.ec
-fin.ec
-k12.ec
-med.ec
-pro.ec
-org.ec
-edu.ec
-gov.ec
-gob.ec
-mil.ec
-
-// edu : https://en.wikipedia.org/wiki/.edu
-edu
-
-// ee : http://www.eenet.ee/EENet/dom_reeglid.html#lisa_B
-ee
-edu.ee
-gov.ee
-riik.ee
-lib.ee
-med.ee
-com.ee
-pri.ee
-aip.ee
-org.ee
-fie.ee
-
-// eg : https://en.wikipedia.org/wiki/.eg
-eg
-com.eg
-edu.eg
-eun.eg
-gov.eg
-mil.eg
-name.eg
-net.eg
-org.eg
-sci.eg
-
-// er : https://en.wikipedia.org/wiki/.er
-*.er
-
-// es : https://www.nic.es/site_ingles/ingles/dominios/index.html
-es
-com.es
-nom.es
-org.es
-gob.es
-edu.es
-
-// et : https://en.wikipedia.org/wiki/.et
-et
-com.et
-gov.et
-org.et
-edu.et
-biz.et
-name.et
-info.et
-net.et
-
-// eu : https://en.wikipedia.org/wiki/.eu
-eu
-
-// fi : https://en.wikipedia.org/wiki/.fi
-fi
-// aland.fi : https://en.wikipedia.org/wiki/.ax
-// This domain is being phased out in favor of .ax. As there are still many
-// domains under aland.fi, we still keep it on the list until aland.fi is
-// completely removed.
-// TODO: Check for updates (expected to be phased out around Q1/2009)
-aland.fi
-
-// fj : https://en.wikipedia.org/wiki/.fj
-*.fj
-
-// fk : https://en.wikipedia.org/wiki/.fk
-*.fk
-
-// fm : https://en.wikipedia.org/wiki/.fm
-fm
-
-// fo : https://en.wikipedia.org/wiki/.fo
-fo
-
-// fr : http://www.afnic.fr/
-// domaines descriptifs : http://www.afnic.fr/obtenir/chartes/nommage-fr/annexe-descriptifs
-fr
-com.fr
-asso.fr
-nom.fr
-prd.fr
-presse.fr
-tm.fr
-// domaines sectoriels : http://www.afnic.fr/obtenir/chartes/nommage-fr/annexe-sectoriels
-aeroport.fr
-assedic.fr
-avocat.fr
-avoues.fr
-cci.fr
-chambagri.fr
-chirurgiens-dentistes.fr
-experts-comptables.fr
-geometre-expert.fr
-gouv.fr
-greta.fr
-huissier-justice.fr
-medecin.fr
-notaires.fr
-pharmacien.fr
-port.fr
-veterinaire.fr
-
-// ga : https://en.wikipedia.org/wiki/.ga
-ga
-
-// gb : This registry is effectively dormant
-// Submitted by registry <Damien.Shaw@ja.net>
-gb
-
-// gd : https://en.wikipedia.org/wiki/.gd
-gd
-
-// ge : http://www.nic.net.ge/policy_en.pdf
-ge
-com.ge
-edu.ge
-gov.ge
-org.ge
-mil.ge
-net.ge
-pvt.ge
-
-// gf : https://en.wikipedia.org/wiki/.gf
-gf
-
-// gg : http://www.channelisles.net/register-domains/
-// Confirmed by registry <nigel@channelisles.net> 2013-11-28
-gg
-co.gg
-net.gg
-org.gg
-
-// gh : https://en.wikipedia.org/wiki/.gh
-// see also: http://www.nic.gh/reg_now.php
-// Although domains directly at second level are not possible at the moment,
-// they have been possible for some time and may come back.
-gh
-com.gh
-edu.gh
-gov.gh
-org.gh
-mil.gh
-
-// gi : http://www.nic.gi/rules.html
-gi
-com.gi
-ltd.gi
-gov.gi
-mod.gi
-edu.gi
-org.gi
-
-// gl : https://en.wikipedia.org/wiki/.gl
-// http://nic.gl
-gl
-co.gl
-com.gl
-edu.gl
-net.gl
-org.gl
-
-// gm : http://www.nic.gm/htmlpages%5Cgm-policy.htm
-gm
-
-// gn : http://psg.com/dns/gn/gn.txt
-// Submitted by registry <randy@psg.com>
-gn
-ac.gn
-com.gn
-edu.gn
-gov.gn
-org.gn
-net.gn
-
-// gov : https://en.wikipedia.org/wiki/.gov
-gov
-
-// gp : http://www.nic.gp/index.php?lang=en
-gp
-com.gp
-net.gp
-mobi.gp
-edu.gp
-org.gp
-asso.gp
-
-// gq : https://en.wikipedia.org/wiki/.gq
-gq
-
-// gr : https://grweb.ics.forth.gr/english/1617-B-2005.html
-// Submitted by registry <segred@ics.forth.gr>
-gr
-com.gr
-edu.gr
-net.gr
-org.gr
-gov.gr
-
-// gs : https://en.wikipedia.org/wiki/.gs
-gs
-
-// gt : http://www.gt/politicas_de_registro.html
-gt
-com.gt
-edu.gt
-gob.gt
-ind.gt
-mil.gt
-net.gt
-org.gt
-
-// gu : http://gadao.gov.gu/registration.txt
-*.gu
-
-// gw : https://en.wikipedia.org/wiki/.gw
-gw
-
-// gy : https://en.wikipedia.org/wiki/.gy
-// http://registry.gy/
-gy
-co.gy
-com.gy
-edu.gy
-gov.gy
-net.gy
-org.gy
-
-// hk : https://www.hkdnr.hk
-// Submitted by registry <hk.tech@hkirc.hk>
-hk
-com.hk
-edu.hk
-gov.hk
-idv.hk
-net.hk
-org.hk
-公司.hk
-教育.hk
-敎育.hk
-政府.hk
-個人.hk
-个人.hk
-箇人.hk
-網络.hk
-网络.hk
-组織.hk
-網絡.hk
-网絡.hk
-组织.hk
-組織.hk
-組织.hk
-
-// hm : https://en.wikipedia.org/wiki/.hm
-hm
-
-// hn : http://www.nic.hn/politicas/ps02,,05.html
-hn
-com.hn
-edu.hn
-org.hn
-net.hn
-mil.hn
-gob.hn
-
-// hr : http://www.dns.hr/documents/pdf/HRTLD-regulations.pdf
-hr
-iz.hr
-from.hr
-name.hr
-com.hr
-
-// ht : http://www.nic.ht/info/charte.cfm
-ht
-com.ht
-shop.ht
-firm.ht
-info.ht
-adult.ht
-net.ht
-pro.ht
-org.ht
-med.ht
-art.ht
-coop.ht
-pol.ht
-asso.ht
-edu.ht
-rel.ht
-gouv.ht
-perso.ht
-
-// hu : http://www.domain.hu/domain/English/sld.html
-// Confirmed by registry <pasztor@iszt.hu> 2008-06-12
-hu
-co.hu
-info.hu
-org.hu
-priv.hu
-sport.hu
-tm.hu
-2000.hu
-agrar.hu
-bolt.hu
-casino.hu
-city.hu
-erotica.hu
-erotika.hu
-film.hu
-forum.hu
-games.hu
-hotel.hu
-ingatlan.hu
-jogasz.hu
-konyvelo.hu
-lakas.hu
-media.hu
-news.hu
-reklam.hu
-sex.hu
-shop.hu
-suli.hu
-szex.hu
-tozsde.hu
-utazas.hu
-video.hu
-
-// id : https://register.pandi.or.id/
-id
-ac.id
-biz.id
-co.id
-desa.id
-go.id
-mil.id
-my.id
-net.id
-or.id
-sch.id
-web.id
-
-// ie : https://en.wikipedia.org/wiki/.ie
-ie
-gov.ie
-
-// il : http://www.isoc.org.il/domains/
-il
-ac.il
-co.il
-gov.il
-idf.il
-k12.il
-muni.il
-net.il
-org.il
-
-// im : https://www.nic.im/
-// Submitted by registry <info@nic.im>
-im
-ac.im
-co.im
-com.im
-ltd.co.im
-net.im
-org.im
-plc.co.im
-tt.im
-tv.im
-
-// in : https://en.wikipedia.org/wiki/.in
-// see also: https://registry.in/Policies
-// Please note, that nic.in is not an official eTLD, but used by most
-// government institutions.
-in
-co.in
-firm.in
-net.in
-org.in
-gen.in
-ind.in
-nic.in
-ac.in
-edu.in
-res.in
-gov.in
-mil.in
-
-// info : https://en.wikipedia.org/wiki/.info
-info
-
-// int : https://en.wikipedia.org/wiki/.int
-// Confirmed by registry <iana-questions@icann.org> 2008-06-18
-int
-eu.int
-
-// io : http://www.nic.io/rules.html
-// list of other 2nd level tlds ?
-io
-com.io
-
-// iq : http://www.cmc.iq/english/iq/iqregister1.htm
-iq
-gov.iq
-edu.iq
-mil.iq
-com.iq
-org.iq
-net.iq
-
-// ir : http://www.nic.ir/Terms_and_Conditions_ir,_Appendix_1_Domain_Rules
-// Also see http://www.nic.ir/Internationalized_Domain_Names
-// Two <iran>.ir entries added at request of <tech-team@nic.ir>, 2010-04-16
-ir
-ac.ir
-co.ir
-gov.ir
-id.ir
-net.ir
-org.ir
-sch.ir
-// xn--mgba3a4f16a.ir (<iran>.ir, Persian YEH)
-ایران.ir
-// xn--mgba3a4fra.ir (<iran>.ir, Arabic YEH)
-ايران.ir
-
-// is : http://www.isnic.is/domain/rules.php
-// Confirmed by registry <marius@isgate.is> 2008-12-06
-is
-net.is
-com.is
-edu.is
-gov.is
-org.is
-int.is
-
-// it : https://en.wikipedia.org/wiki/.it
-it
-gov.it
-edu.it
-// Reserved geo-names:
-// http://www.nic.it/documenti/regolamenti-e-linee-guida/regolamento-assegnazione-versione-6.0.pdf
-// There is also a list of reserved geo-names corresponding to Italian municipalities
-// http://www.nic.it/documenti/appendice-c.pdf, but it is not included here.
-// Regions
-abr.it
-abruzzo.it
-aosta-valley.it
-aostavalley.it
-bas.it
-basilicata.it
-cal.it
-calabria.it
-cam.it
-campania.it
-emilia-romagna.it
-emiliaromagna.it
-emr.it
-friuli-v-giulia.it
-friuli-ve-giulia.it
-friuli-vegiulia.it
-friuli-venezia-giulia.it
-friuli-veneziagiulia.it
-friuli-vgiulia.it
-friuliv-giulia.it
-friulive-giulia.it
-friulivegiulia.it
-friulivenezia-giulia.it
-friuliveneziagiulia.it
-friulivgiulia.it
-fvg.it
-laz.it
-lazio.it
-lig.it
-liguria.it
-lom.it
-lombardia.it
-lombardy.it
-lucania.it
-mar.it
-marche.it
-mol.it
-molise.it
-piedmont.it
-piemonte.it
-pmn.it
-pug.it
-puglia.it
-sar.it
-sardegna.it
-sardinia.it
-sic.it
-sicilia.it
-sicily.it
-taa.it
-tos.it
-toscana.it
-trentino-a-adige.it
-trentino-aadige.it
-trentino-alto-adige.it
-trentino-altoadige.it
-trentino-s-tirol.it
-trentino-stirol.it
-trentino-sud-tirol.it
-trentino-sudtirol.it
-trentino-sued-tirol.it
-trentino-suedtirol.it
-trentinoa-adige.it
-trentinoaadige.it
-trentinoalto-adige.it
-trentinoaltoadige.it
-trentinos-tirol.it
-trentinostirol.it
-trentinosud-tirol.it
-trentinosudtirol.it
-trentinosued-tirol.it
-trentinosuedtirol.it
-tuscany.it
-umb.it
-umbria.it
-val-d-aosta.it
-val-daosta.it
-vald-aosta.it
-valdaosta.it
-valle-aosta.it
-valle-d-aosta.it
-valle-daosta.it
-valleaosta.it
-valled-aosta.it
-valledaosta.it
-vallee-aoste.it
-valleeaoste.it
-vao.it
-vda.it
-ven.it
-veneto.it
-// Provinces
-ag.it
-agrigento.it
-al.it
-alessandria.it
-alto-adige.it
-altoadige.it
-an.it
-ancona.it
-andria-barletta-trani.it
-andria-trani-barletta.it
-andriabarlettatrani.it
-andriatranibarletta.it
-ao.it
-aosta.it
-aoste.it
-ap.it
-aq.it
-aquila.it
-ar.it
-arezzo.it
-ascoli-piceno.it
-ascolipiceno.it
-asti.it
-at.it
-av.it
-avellino.it
-ba.it
-balsan.it
-bari.it
-barletta-trani-andria.it
-barlettatraniandria.it
-belluno.it
-benevento.it
-bergamo.it
-bg.it
-bi.it
-biella.it
-bl.it
-bn.it
-bo.it
-bologna.it
-bolzano.it
-bozen.it
-br.it
-brescia.it
-brindisi.it
-bs.it
-bt.it
-bz.it
-ca.it
-cagliari.it
-caltanissetta.it
-campidano-medio.it
-campidanomedio.it
-campobasso.it
-carbonia-iglesias.it
-carboniaiglesias.it
-carrara-massa.it
-carraramassa.it
-caserta.it
-catania.it
-catanzaro.it
-cb.it
-ce.it
-cesena-forli.it
-cesenaforli.it
-ch.it
-chieti.it
-ci.it
-cl.it
-cn.it
-co.it
-como.it
-cosenza.it
-cr.it
-cremona.it
-crotone.it
-cs.it
-ct.it
-cuneo.it
-cz.it
-dell-ogliastra.it
-dellogliastra.it
-en.it
-enna.it
-fc.it
-fe.it
-fermo.it
-ferrara.it
-fg.it
-fi.it
-firenze.it
-florence.it
-fm.it
-foggia.it
-forli-cesena.it
-forlicesena.it
-fr.it
-frosinone.it
-ge.it
-genoa.it
-genova.it
-go.it
-gorizia.it
-gr.it
-grosseto.it
-iglesias-carbonia.it
-iglesiascarbonia.it
-im.it
-imperia.it
-is.it
-isernia.it
-kr.it
-la-spezia.it
-laquila.it
-laspezia.it
-latina.it
-lc.it
-le.it
-lecce.it
-lecco.it
-li.it
-livorno.it
-lo.it
-lodi.it
-lt.it
-lu.it
-lucca.it
-macerata.it
-mantova.it
-massa-carrara.it
-massacarrara.it
-matera.it
-mb.it
-mc.it
-me.it
-medio-campidano.it
-mediocampidano.it
-messina.it
-mi.it
-milan.it
-milano.it
-mn.it
-mo.it
-modena.it
-monza-brianza.it
-monza-e-della-brianza.it
-monza.it
-monzabrianza.it
-monzaebrianza.it
-monzaedellabrianza.it
-ms.it
-mt.it
-na.it
-naples.it
-napoli.it
-no.it
-novara.it
-nu.it
-nuoro.it
-og.it
-ogliastra.it
-olbia-tempio.it
-olbiatempio.it
-or.it
-oristano.it
-ot.it
-pa.it
-padova.it
-padua.it
-palermo.it
-parma.it
-pavia.it
-pc.it
-pd.it
-pe.it
-perugia.it
-pesaro-urbino.it
-pesarourbino.it
-pescara.it
-pg.it
-pi.it
-piacenza.it
-pisa.it
-pistoia.it
-pn.it
-po.it
-pordenone.it
-potenza.it
-pr.it
-prato.it
-pt.it
-pu.it
-pv.it
-pz.it
-ra.it
-ragusa.it
-ravenna.it
-rc.it
-re.it
-reggio-calabria.it
-reggio-emilia.it
-reggiocalabria.it
-reggioemilia.it
-rg.it
-ri.it
-rieti.it
-rimini.it
-rm.it
-rn.it
-ro.it
-roma.it
-rome.it
-rovigo.it
-sa.it
-salerno.it
-sassari.it
-savona.it
-si.it
-siena.it
-siracusa.it
-so.it
-sondrio.it
-sp.it
-sr.it
-ss.it
-suedtirol.it
-sv.it
-ta.it
-taranto.it
-te.it
-tempio-olbia.it
-tempioolbia.it
-teramo.it
-terni.it
-tn.it
-to.it
-torino.it
-tp.it
-tr.it
-trani-andria-barletta.it
-trani-barletta-andria.it
-traniandriabarletta.it
-tranibarlettaandria.it
-trapani.it
-trentino.it
-trento.it
-treviso.it
-trieste.it
-ts.it
-turin.it
-tv.it
-ud.it
-udine.it
-urbino-pesaro.it
-urbinopesaro.it
-va.it
-varese.it
-vb.it
-vc.it
-ve.it
-venezia.it
-venice.it
-verbania.it
-vercelli.it
-verona.it
-vi.it
-vibo-valentia.it
-vibovalentia.it
-vicenza.it
-viterbo.it
-vr.it
-vs.it
-vt.it
-vv.it
-
-// je : http://www.channelisles.net/register-domains/
-// Confirmed by registry <nigel@channelisles.net> 2013-11-28
-je
-co.je
-net.je
-org.je
-
-// jm : http://www.com.jm/register.html
-*.jm
-
-// jo : http://www.dns.jo/Registration_policy.aspx
-jo
-com.jo
-org.jo
-net.jo
-edu.jo
-sch.jo
-gov.jo
-mil.jo
-name.jo
-
-// jobs : https://en.wikipedia.org/wiki/.jobs
-jobs
-
-// jp : https://en.wikipedia.org/wiki/.jp
-// http://jprs.co.jp/en/jpdomain.html
-// Submitted by registry <info@jprs.jp>
-jp
-// jp organizational type names
-ac.jp
-ad.jp
-co.jp
-ed.jp
-go.jp
-gr.jp
-lg.jp
-ne.jp
-or.jp
-// jp prefecture type names
-aichi.jp
-akita.jp
-aomori.jp
-chiba.jp
-ehime.jp
-fukui.jp
-fukuoka.jp
-fukushima.jp
-gifu.jp
-gunma.jp
-hiroshima.jp
-hokkaido.jp
-hyogo.jp
-ibaraki.jp
-ishikawa.jp
-iwate.jp
-kagawa.jp
-kagoshima.jp
-kanagawa.jp
-kochi.jp
-kumamoto.jp
-kyoto.jp
-mie.jp
-miyagi.jp
-miyazaki.jp
-nagano.jp
-nagasaki.jp
-nara.jp
-niigata.jp
-oita.jp
-okayama.jp
-okinawa.jp
-osaka.jp
-saga.jp
-saitama.jp
-shiga.jp
-shimane.jp
-shizuoka.jp
-tochigi.jp
-tokushima.jp
-tokyo.jp
-tottori.jp
-toyama.jp
-wakayama.jp
-yamagata.jp
-yamaguchi.jp
-yamanashi.jp
-栃木.jp
-愛知.jp
-愛媛.jp
-兵庫.jp
-熊本.jp
-茨城.jp
-北海道.jp
-千葉.jp
-和歌山.jp
-長崎.jp
-長野.jp
-新潟.jp
-青森.jp
-静岡.jp
-東京.jp
-石川.jp
-埼玉.jp
-三重.jp
-京都.jp
-佐賀.jp
-大分.jp
-大阪.jp
-奈良.jp
-宮城.jp
-宮崎.jp
-富山.jp
-山口.jp
-山形.jp
-山梨.jp
-岩手.jp
-岐阜.jp
-岡山.jp
-島根.jp
-広島.jp
-徳島.jp
-沖縄.jp
-滋賀.jp
-神奈川.jp
-福井.jp
-福岡.jp
-福島.jp
-秋田.jp
-群馬.jp
-香川.jp
-高知.jp
-鳥取.jp
-鹿児島.jp
-// jp geographic type names
-// http://jprs.jp/doc/rule/saisoku-1.html
-*.kawasaki.jp
-*.kitakyushu.jp
-*.kobe.jp
-*.nagoya.jp
-*.sapporo.jp
-*.sendai.jp
-*.yokohama.jp
-!city.kawasaki.jp
-!city.kitakyushu.jp
-!city.kobe.jp
-!city.nagoya.jp
-!city.sapporo.jp
-!city.sendai.jp
-!city.yokohama.jp
-// 4th level registration
-aisai.aichi.jp
-ama.aichi.jp
-anjo.aichi.jp
-asuke.aichi.jp
-chiryu.aichi.jp
-chita.aichi.jp
-fuso.aichi.jp
-gamagori.aichi.jp
-handa.aichi.jp
-hazu.aichi.jp
-hekinan.aichi.jp
-higashiura.aichi.jp
-ichinomiya.aichi.jp
-inazawa.aichi.jp
-inuyama.aichi.jp
-isshiki.aichi.jp
-iwakura.aichi.jp
-kanie.aichi.jp
-kariya.aichi.jp
-kasugai.aichi.jp
-kira.aichi.jp
-kiyosu.aichi.jp
-komaki.aichi.jp
-konan.aichi.jp
-kota.aichi.jp
-mihama.aichi.jp
-miyoshi.aichi.jp
-nishio.aichi.jp
-nisshin.aichi.jp
-obu.aichi.jp
-oguchi.aichi.jp
-oharu.aichi.jp
-okazaki.aichi.jp
-owariasahi.aichi.jp
-seto.aichi.jp
-shikatsu.aichi.jp
-shinshiro.aichi.jp
-shitara.aichi.jp
-tahara.aichi.jp
-takahama.aichi.jp
-tobishima.aichi.jp
-toei.aichi.jp
-togo.aichi.jp
-tokai.aichi.jp
-tokoname.aichi.jp
-toyoake.aichi.jp
-toyohashi.aichi.jp
-toyokawa.aichi.jp
-toyone.aichi.jp
-toyota.aichi.jp
-tsushima.aichi.jp
-yatomi.aichi.jp
-akita.akita.jp
-daisen.akita.jp
-fujisato.akita.jp
-gojome.akita.jp
-hachirogata.akita.jp
-happou.akita.jp
-higashinaruse.akita.jp
-honjo.akita.jp
-honjyo.akita.jp
-ikawa.akita.jp
-kamikoani.akita.jp
-kamioka.akita.jp
-katagami.akita.jp
-kazuno.akita.jp
-kitaakita.akita.jp
-kosaka.akita.jp
-kyowa.akita.jp
-misato.akita.jp
-mitane.akita.jp
-moriyoshi.akita.jp
-nikaho.akita.jp
-noshiro.akita.jp
-odate.akita.jp
-oga.akita.jp
-ogata.akita.jp
-semboku.akita.jp
-yokote.akita.jp
-yurihonjo.akita.jp
-aomori.aomori.jp
-gonohe.aomori.jp
-hachinohe.aomori.jp
-hashikami.aomori.jp
-hiranai.aomori.jp
-hirosaki.aomori.jp
-itayanagi.aomori.jp
-kuroishi.aomori.jp
-misawa.aomori.jp
-mutsu.aomori.jp
-nakadomari.aomori.jp
-noheji.aomori.jp
-oirase.aomori.jp
-owani.aomori.jp
-rokunohe.aomori.jp
-sannohe.aomori.jp
-shichinohe.aomori.jp
-shingo.aomori.jp
-takko.aomori.jp
-towada.aomori.jp
-tsugaru.aomori.jp
-tsuruta.aomori.jp
-abiko.chiba.jp
-asahi.chiba.jp
-chonan.chiba.jp
-chosei.chiba.jp
-choshi.chiba.jp
-chuo.chiba.jp
-funabashi.chiba.jp
-futtsu.chiba.jp
-hanamigawa.chiba.jp
-ichihara.chiba.jp
-ichikawa.chiba.jp
-ichinomiya.chiba.jp
-inzai.chiba.jp
-isumi.chiba.jp
-kamagaya.chiba.jp
-kamogawa.chiba.jp
-kashiwa.chiba.jp
-katori.chiba.jp
-katsuura.chiba.jp
-kimitsu.chiba.jp
-kisarazu.chiba.jp
-kozaki.chiba.jp
-kujukuri.chiba.jp
-kyonan.chiba.jp
-matsudo.chiba.jp
-midori.chiba.jp
-mihama.chiba.jp
-minamiboso.chiba.jp
-mobara.chiba.jp
-mutsuzawa.chiba.jp
-nagara.chiba.jp
-nagareyama.chiba.jp
-narashino.chiba.jp
-narita.chiba.jp
-noda.chiba.jp
-oamishirasato.chiba.jp
-omigawa.chiba.jp
-onjuku.chiba.jp
-otaki.chiba.jp
-sakae.chiba.jp
-sakura.chiba.jp
-shimofusa.chiba.jp
-shirako.chiba.jp
-shiroi.chiba.jp
-shisui.chiba.jp
-sodegaura.chiba.jp
-sosa.chiba.jp
-tako.chiba.jp
-tateyama.chiba.jp
-togane.chiba.jp
-tohnosho.chiba.jp
-tomisato.chiba.jp
-urayasu.chiba.jp
-yachimata.chiba.jp
-yachiyo.chiba.jp
-yokaichiba.chiba.jp
-yokoshibahikari.chiba.jp
-yotsukaido.chiba.jp
-ainan.ehime.jp
-honai.ehime.jp
-ikata.ehime.jp
-imabari.ehime.jp
-iyo.ehime.jp
-kamijima.ehime.jp
-kihoku.ehime.jp
-kumakogen.ehime.jp
-masaki.ehime.jp
-matsuno.ehime.jp
-matsuyama.ehime.jp
-namikata.ehime.jp
-niihama.ehime.jp
-ozu.ehime.jp
-saijo.ehime.jp
-seiyo.ehime.jp
-shikokuchuo.ehime.jp
-tobe.ehime.jp
-toon.ehime.jp
-uchiko.ehime.jp
-uwajima.ehime.jp
-yawatahama.ehime.jp
-echizen.fukui.jp
-eiheiji.fukui.jp
-fukui.fukui.jp
-ikeda.fukui.jp
-katsuyama.fukui.jp
-mihama.fukui.jp
-minamiechizen.fukui.jp
-obama.fukui.jp
-ohi.fukui.jp
-ono.fukui.jp
-sabae.fukui.jp
-sakai.fukui.jp
-takahama.fukui.jp
-tsuruga.fukui.jp
-wakasa.fukui.jp
-ashiya.fukuoka.jp
-buzen.fukuoka.jp
-chikugo.fukuoka.jp
-chikuho.fukuoka.jp
-chikujo.fukuoka.jp
-chikushino.fukuoka.jp
-chikuzen.fukuoka.jp
-chuo.fukuoka.jp
-dazaifu.fukuoka.jp
-fukuchi.fukuoka.jp
-hakata.fukuoka.jp
-higashi.fukuoka.jp
-hirokawa.fukuoka.jp
-hisayama.fukuoka.jp
-iizuka.fukuoka.jp
-inatsuki.fukuoka.jp
-kaho.fukuoka.jp
-kasuga.fukuoka.jp
-kasuya.fukuoka.jp
-kawara.fukuoka.jp
-keisen.fukuoka.jp
-koga.fukuoka.jp
-kurate.fukuoka.jp
-kurogi.fukuoka.jp
-kurume.fukuoka.jp
-minami.fukuoka.jp
-miyako.fukuoka.jp
-miyama.fukuoka.jp
-miyawaka.fukuoka.jp
-mizumaki.fukuoka.jp
-munakata.fukuoka.jp
-nakagawa.fukuoka.jp
-nakama.fukuoka.jp
-nishi.fukuoka.jp
-nogata.fukuoka.jp
-ogori.fukuoka.jp
-okagaki.fukuoka.jp
-okawa.fukuoka.jp
-oki.fukuoka.jp
-omuta.fukuoka.jp
-onga.fukuoka.jp
-onojo.fukuoka.jp
-oto.fukuoka.jp
-saigawa.fukuoka.jp
-sasaguri.fukuoka.jp
-shingu.fukuoka.jp
-shinyoshitomi.fukuoka.jp
-shonai.fukuoka.jp
-soeda.fukuoka.jp
-sue.fukuoka.jp
-tachiarai.fukuoka.jp
-tagawa.fukuoka.jp
-takata.fukuoka.jp
-toho.fukuoka.jp
-toyotsu.fukuoka.jp
-tsuiki.fukuoka.jp
-ukiha.fukuoka.jp
-umi.fukuoka.jp
-usui.fukuoka.jp
-yamada.fukuoka.jp
-yame.fukuoka.jp
-yanagawa.fukuoka.jp
-yukuhashi.fukuoka.jp
-aizubange.fukushima.jp
-aizumisato.fukushima.jp
-aizuwakamatsu.fukushima.jp
-asakawa.fukushima.jp
-bandai.fukushima.jp
-date.fukushima.jp
-fukushima.fukushima.jp
-furudono.fukushima.jp
-futaba.fukushima.jp
-hanawa.fukushima.jp
-higashi.fukushima.jp
-hirata.fukushima.jp
-hirono.fukushima.jp
-iitate.fukushima.jp
-inawashiro.fukushima.jp
-ishikawa.fukushima.jp
-iwaki.fukushima.jp
-izumizaki.fukushima.jp
-kagamiishi.fukushima.jp
-kaneyama.fukushima.jp
-kawamata.fukushima.jp
-kitakata.fukushima.jp
-kitashiobara.fukushima.jp
-koori.fukushima.jp
-koriyama.fukushima.jp
-kunimi.fukushima.jp
-miharu.fukushima.jp
-mishima.fukushima.jp
-namie.fukushima.jp
-nango.fukushima.jp
-nishiaizu.fukushima.jp
-nishigo.fukushima.jp
-okuma.fukushima.jp
-omotego.fukushima.jp
-ono.fukushima.jp
-otama.fukushima.jp
-samegawa.fukushima.jp
-shimogo.fukushima.jp
-shirakawa.fukushima.jp
-showa.fukushima.jp
-soma.fukushima.jp
-sukagawa.fukushima.jp
-taishin.fukushima.jp
-tamakawa.fukushima.jp
-tanagura.fukushima.jp
-tenei.fukushima.jp
-yabuki.fukushima.jp
-yamato.fukushima.jp
-yamatsuri.fukushima.jp
-yanaizu.fukushima.jp
-yugawa.fukushima.jp
-anpachi.gifu.jp
-ena.gifu.jp
-gifu.gifu.jp
-ginan.gifu.jp
-godo.gifu.jp
-gujo.gifu.jp
-hashima.gifu.jp
-hichiso.gifu.jp
-hida.gifu.jp
-higashishirakawa.gifu.jp
-ibigawa.gifu.jp
-ikeda.gifu.jp
-kakamigahara.gifu.jp
-kani.gifu.jp
-kasahara.gifu.jp
-kasamatsu.gifu.jp
-kawaue.gifu.jp
-kitagata.gifu.jp
-mino.gifu.jp
-minokamo.gifu.jp
-mitake.gifu.jp
-mizunami.gifu.jp
-motosu.gifu.jp
-nakatsugawa.gifu.jp
-ogaki.gifu.jp
-sakahogi.gifu.jp
-seki.gifu.jp
-sekigahara.gifu.jp
-shirakawa.gifu.jp
-tajimi.gifu.jp
-takayama.gifu.jp
-tarui.gifu.jp
-toki.gifu.jp
-tomika.gifu.jp
-wanouchi.gifu.jp
-yamagata.gifu.jp
-yaotsu.gifu.jp
-yoro.gifu.jp
-annaka.gunma.jp
-chiyoda.gunma.jp
-fujioka.gunma.jp
-higashiagatsuma.gunma.jp
-isesaki.gunma.jp
-itakura.gunma.jp
-kanna.gunma.jp
-kanra.gunma.jp
-katashina.gunma.jp
-kawaba.gunma.jp
-kiryu.gunma.jp
-kusatsu.gunma.jp
-maebashi.gunma.jp
-meiwa.gunma.jp
-midori.gunma.jp
-minakami.gunma.jp
-naganohara.gunma.jp
-nakanojo.gunma.jp
-nanmoku.gunma.jp
-numata.gunma.jp
-oizumi.gunma.jp
-ora.gunma.jp
-ota.gunma.jp
-shibukawa.gunma.jp
-shimonita.gunma.jp
-shinto.gunma.jp
-showa.gunma.jp
-takasaki.gunma.jp
-takayama.gunma.jp
-tamamura.gunma.jp
-tatebayashi.gunma.jp
-tomioka.gunma.jp
-tsukiyono.gunma.jp
-tsumagoi.gunma.jp
-ueno.gunma.jp
-yoshioka.gunma.jp
-asaminami.hiroshima.jp
-daiwa.hiroshima.jp
-etajima.hiroshima.jp
-fuchu.hiroshima.jp
-fukuyama.hiroshima.jp
-hatsukaichi.hiroshima.jp
-higashihiroshima.hiroshima.jp
-hongo.hiroshima.jp
-jinsekikogen.hiroshima.jp
-kaita.hiroshima.jp
-kui.hiroshima.jp
-kumano.hiroshima.jp
-kure.hiroshima.jp
-mihara.hiroshima.jp
-miyoshi.hiroshima.jp
-naka.hiroshima.jp
-onomichi.hiroshima.jp
-osakikamijima.hiroshima.jp
-otake.hiroshima.jp
-saka.hiroshima.jp
-sera.hiroshima.jp
-seranishi.hiroshima.jp
-shinichi.hiroshima.jp
-shobara.hiroshima.jp
-takehara.hiroshima.jp
-abashiri.hokkaido.jp
-abira.hokkaido.jp
-aibetsu.hokkaido.jp
-akabira.hokkaido.jp
-akkeshi.hokkaido.jp
-asahikawa.hokkaido.jp
-ashibetsu.hokkaido.jp
-ashoro.hokkaido.jp
-assabu.hokkaido.jp
-atsuma.hokkaido.jp
-bibai.hokkaido.jp
-biei.hokkaido.jp
-bifuka.hokkaido.jp
-bihoro.hokkaido.jp
-biratori.hokkaido.jp
-chippubetsu.hokkaido.jp
-chitose.hokkaido.jp
-date.hokkaido.jp
-ebetsu.hokkaido.jp
-embetsu.hokkaido.jp
-eniwa.hokkaido.jp
-erimo.hokkaido.jp
-esan.hokkaido.jp
-esashi.hokkaido.jp
-fukagawa.hokkaido.jp
-fukushima.hokkaido.jp
-furano.hokkaido.jp
-furubira.hokkaido.jp
-haboro.hokkaido.jp
-hakodate.hokkaido.jp
-hamatonbetsu.hokkaido.jp
-hidaka.hokkaido.jp
-higashikagura.hokkaido.jp
-higashikawa.hokkaido.jp
-hiroo.hokkaido.jp
-hokuryu.hokkaido.jp
-hokuto.hokkaido.jp
-honbetsu.hokkaido.jp
-horokanai.hokkaido.jp
-horonobe.hokkaido.jp
-ikeda.hokkaido.jp
-imakane.hokkaido.jp
-ishikari.hokkaido.jp
-iwamizawa.hokkaido.jp
-iwanai.hokkaido.jp
-kamifurano.hokkaido.jp
-kamikawa.hokkaido.jp
-kamishihoro.hokkaido.jp
-kamisunagawa.hokkaido.jp
-kamoenai.hokkaido.jp
-kayabe.hokkaido.jp
-kembuchi.hokkaido.jp
-kikonai.hokkaido.jp
-kimobetsu.hokkaido.jp
-kitahiroshima.hokkaido.jp
-kitami.hokkaido.jp
-kiyosato.hokkaido.jp
-koshimizu.hokkaido.jp
-kunneppu.hokkaido.jp
-kuriyama.hokkaido.jp
-kuromatsunai.hokkaido.jp
-kushiro.hokkaido.jp
-kutchan.hokkaido.jp
-kyowa.hokkaido.jp
-mashike.hokkaido.jp
-matsumae.hokkaido.jp
-mikasa.hokkaido.jp
-minamifurano.hokkaido.jp
-mombetsu.hokkaido.jp
-moseushi.hokkaido.jp
-mukawa.hokkaido.jp
-muroran.hokkaido.jp
-naie.hokkaido.jp
-nakagawa.hokkaido.jp
-nakasatsunai.hokkaido.jp
-nakatombetsu.hokkaido.jp
-nanae.hokkaido.jp
-nanporo.hokkaido.jp
-nayoro.hokkaido.jp
-nemuro.hokkaido.jp
-niikappu.hokkaido.jp
-niki.hokkaido.jp
-nishiokoppe.hokkaido.jp
-noboribetsu.hokkaido.jp
-numata.hokkaido.jp
-obihiro.hokkaido.jp
-obira.hokkaido.jp
-oketo.hokkaido.jp
-okoppe.hokkaido.jp
-otaru.hokkaido.jp
-otobe.hokkaido.jp
-otofuke.hokkaido.jp
-otoineppu.hokkaido.jp
-oumu.hokkaido.jp
-ozora.hokkaido.jp
-pippu.hokkaido.jp
-rankoshi.hokkaido.jp
-rebun.hokkaido.jp
-rikubetsu.hokkaido.jp
-rishiri.hokkaido.jp
-rishirifuji.hokkaido.jp
-saroma.hokkaido.jp
-sarufutsu.hokkaido.jp
-shakotan.hokkaido.jp
-shari.hokkaido.jp
-shibecha.hokkaido.jp
-shibetsu.hokkaido.jp
-shikabe.hokkaido.jp
-shikaoi.hokkaido.jp
-shimamaki.hokkaido.jp
-shimizu.hokkaido.jp
-shimokawa.hokkaido.jp
-shinshinotsu.hokkaido.jp
-shintoku.hokkaido.jp
-shiranuka.hokkaido.jp
-shiraoi.hokkaido.jp
-shiriuchi.hokkaido.jp
-sobetsu.hokkaido.jp
-sunagawa.hokkaido.jp
-taiki.hokkaido.jp
-takasu.hokkaido.jp
-takikawa.hokkaido.jp
-takinoue.hokkaido.jp
-teshikaga.hokkaido.jp
-tobetsu.hokkaido.jp
-tohma.hokkaido.jp
-tomakomai.hokkaido.jp
-tomari.hokkaido.jp
-toya.hokkaido.jp
-toyako.hokkaido.jp
-toyotomi.hokkaido.jp
-toyoura.hokkaido.jp
-tsubetsu.hokkaido.jp
-tsukigata.hokkaido.jp
-urakawa.hokkaido.jp
-urausu.hokkaido.jp
-uryu.hokkaido.jp
-utashinai.hokkaido.jp
-wakkanai.hokkaido.jp
-wassamu.hokkaido.jp
-yakumo.hokkaido.jp
-yoichi.hokkaido.jp
-aioi.hyogo.jp
-akashi.hyogo.jp
-ako.hyogo.jp
-amagasaki.hyogo.jp
-aogaki.hyogo.jp
-asago.hyogo.jp
-ashiya.hyogo.jp
-awaji.hyogo.jp
-fukusaki.hyogo.jp
-goshiki.hyogo.jp
-harima.hyogo.jp
-himeji.hyogo.jp
-ichikawa.hyogo.jp
-inagawa.hyogo.jp
-itami.hyogo.jp
-kakogawa.hyogo.jp
-kamigori.hyogo.jp
-kamikawa.hyogo.jp
-kasai.hyogo.jp
-kasuga.hyogo.jp
-kawanishi.hyogo.jp
-miki.hyogo.jp
-minamiawaji.hyogo.jp
-nishinomiya.hyogo.jp
-nishiwaki.hyogo.jp
-ono.hyogo.jp
-sanda.hyogo.jp
-sannan.hyogo.jp
-sasayama.hyogo.jp
-sayo.hyogo.jp
-shingu.hyogo.jp
-shinonsen.hyogo.jp
-shiso.hyogo.jp
-sumoto.hyogo.jp
-taishi.hyogo.jp
-taka.hyogo.jp
-takarazuka.hyogo.jp
-takasago.hyogo.jp
-takino.hyogo.jp
-tamba.hyogo.jp
-tatsuno.hyogo.jp
-toyooka.hyogo.jp
-yabu.hyogo.jp
-yashiro.hyogo.jp
-yoka.hyogo.jp
-yokawa.hyogo.jp
-ami.ibaraki.jp
-asahi.ibaraki.jp
-bando.ibaraki.jp
-chikusei.ibaraki.jp
-daigo.ibaraki.jp
-fujishiro.ibaraki.jp
-hitachi.ibaraki.jp
-hitachinaka.ibaraki.jp
-hitachiomiya.ibaraki.jp
-hitachiota.ibaraki.jp
-ibaraki.ibaraki.jp
-ina.ibaraki.jp
-inashiki.ibaraki.jp
-itako.ibaraki.jp
-iwama.ibaraki.jp
-joso.ibaraki.jp
-kamisu.ibaraki.jp
-kasama.ibaraki.jp
-kashima.ibaraki.jp
-kasumigaura.ibaraki.jp
-koga.ibaraki.jp
-miho.ibaraki.jp
-mito.ibaraki.jp
-moriya.ibaraki.jp
-naka.ibaraki.jp
-namegata.ibaraki.jp
-oarai.ibaraki.jp
-ogawa.ibaraki.jp
-omitama.ibaraki.jp
-ryugasaki.ibaraki.jp
-sakai.ibaraki.jp
-sakuragawa.ibaraki.jp
-shimodate.ibaraki.jp
-shimotsuma.ibaraki.jp
-shirosato.ibaraki.jp
-sowa.ibaraki.jp
-suifu.ibaraki.jp
-takahagi.ibaraki.jp
-tamatsukuri.ibaraki.jp
-tokai.ibaraki.jp
-tomobe.ibaraki.jp
-tone.ibaraki.jp
-toride.ibaraki.jp
-tsuchiura.ibaraki.jp
-tsukuba.ibaraki.jp
-uchihara.ibaraki.jp
-ushiku.ibaraki.jp
-yachiyo.ibaraki.jp
-yamagata.ibaraki.jp
-yawara.ibaraki.jp
-yuki.ibaraki.jp
-anamizu.ishikawa.jp
-hakui.ishikawa.jp
-hakusan.ishikawa.jp
-kaga.ishikawa.jp
-kahoku.ishikawa.jp
-kanazawa.ishikawa.jp
-kawakita.ishikawa.jp
-komatsu.ishikawa.jp
-nakanoto.ishikawa.jp
-nanao.ishikawa.jp
-nomi.ishikawa.jp
-nonoichi.ishikawa.jp
-noto.ishikawa.jp
-shika.ishikawa.jp
-suzu.ishikawa.jp
-tsubata.ishikawa.jp
-tsurugi.ishikawa.jp
-uchinada.ishikawa.jp
-wajima.ishikawa.jp
-fudai.iwate.jp
-fujisawa.iwate.jp
-hanamaki.iwate.jp
-hiraizumi.iwate.jp
-hirono.iwate.jp
-ichinohe.iwate.jp
-ichinoseki.iwate.jp
-iwaizumi.iwate.jp
-iwate.iwate.jp
-joboji.iwate.jp
-kamaishi.iwate.jp
-kanegasaki.iwate.jp
-karumai.iwate.jp
-kawai.iwate.jp
-kitakami.iwate.jp
-kuji.iwate.jp
-kunohe.iwate.jp
-kuzumaki.iwate.jp
-miyako.iwate.jp
-mizusawa.iwate.jp
-morioka.iwate.jp
-ninohe.iwate.jp
-noda.iwate.jp
-ofunato.iwate.jp
-oshu.iwate.jp
-otsuchi.iwate.jp
-rikuzentakata.iwate.jp
-shiwa.iwate.jp
-shizukuishi.iwate.jp
-sumita.iwate.jp
-tanohata.iwate.jp
-tono.iwate.jp
-yahaba.iwate.jp
-yamada.iwate.jp
-ayagawa.kagawa.jp
-higashikagawa.kagawa.jp
-kanonji.kagawa.jp
-kotohira.kagawa.jp
-manno.kagawa.jp
-marugame.kagawa.jp
-mitoyo.kagawa.jp
-naoshima.kagawa.jp
-sanuki.kagawa.jp
-tadotsu.kagawa.jp
-takamatsu.kagawa.jp
-tonosho.kagawa.jp
-uchinomi.kagawa.jp
-utazu.kagawa.jp
-zentsuji.kagawa.jp
-akune.kagoshima.jp
-amami.kagoshima.jp
-hioki.kagoshima.jp
-isa.kagoshima.jp
-isen.kagoshima.jp
-izumi.kagoshima.jp
-kagoshima.kagoshima.jp
-kanoya.kagoshima.jp
-kawanabe.kagoshima.jp
-kinko.kagoshima.jp
-kouyama.kagoshima.jp
-makurazaki.kagoshima.jp
-matsumoto.kagoshima.jp
-minamitane.kagoshima.jp
-nakatane.kagoshima.jp
-nishinoomote.kagoshima.jp
-satsumasendai.kagoshima.jp
-soo.kagoshima.jp
-tarumizu.kagoshima.jp
-yusui.kagoshima.jp
-aikawa.kanagawa.jp
-atsugi.kanagawa.jp
-ayase.kanagawa.jp
-chigasaki.kanagawa.jp
-ebina.kanagawa.jp
-fujisawa.kanagawa.jp
-hadano.kanagawa.jp
-hakone.kanagawa.jp
-hiratsuka.kanagawa.jp
-isehara.kanagawa.jp
-kaisei.kanagawa.jp
-kamakura.kanagawa.jp
-kiyokawa.kanagawa.jp
-matsuda.kanagawa.jp
-minamiashigara.kanagawa.jp
-miura.kanagawa.jp
-nakai.kanagawa.jp
-ninomiya.kanagawa.jp
-odawara.kanagawa.jp
-oi.kanagawa.jp
-oiso.kanagawa.jp
-sagamihara.kanagawa.jp
-samukawa.kanagawa.jp
-tsukui.kanagawa.jp
-yamakita.kanagawa.jp
-yamato.kanagawa.jp
-yokosuka.kanagawa.jp
-yugawara.kanagawa.jp
-zama.kanagawa.jp
-zushi.kanagawa.jp
-aki.kochi.jp
-geisei.kochi.jp
-hidaka.kochi.jp
-higashitsuno.kochi.jp
-ino.kochi.jp
-kagami.kochi.jp
-kami.kochi.jp
-kitagawa.kochi.jp
-kochi.kochi.jp
-mihara.kochi.jp
-motoyama.kochi.jp
-muroto.kochi.jp
-nahari.kochi.jp
-nakamura.kochi.jp
-nankoku.kochi.jp
-nishitosa.kochi.jp
-niyodogawa.kochi.jp
-ochi.kochi.jp
-okawa.kochi.jp
-otoyo.kochi.jp
-otsuki.kochi.jp
-sakawa.kochi.jp
-sukumo.kochi.jp
-susaki.kochi.jp
-tosa.kochi.jp
-tosashimizu.kochi.jp
-toyo.kochi.jp
-tsuno.kochi.jp
-umaji.kochi.jp
-yasuda.kochi.jp
-yusuhara.kochi.jp
-amakusa.kumamoto.jp
-arao.kumamoto.jp
-aso.kumamoto.jp
-choyo.kumamoto.jp
-gyokuto.kumamoto.jp
-hitoyoshi.kumamoto.jp
-kamiamakusa.kumamoto.jp
-kashima.kumamoto.jp
-kikuchi.kumamoto.jp
-kosa.kumamoto.jp
-kumamoto.kumamoto.jp
-mashiki.kumamoto.jp
-mifune.kumamoto.jp
-minamata.kumamoto.jp
-minamioguni.kumamoto.jp
-nagasu.kumamoto.jp
-nishihara.kumamoto.jp
-oguni.kumamoto.jp
-ozu.kumamoto.jp
-sumoto.kumamoto.jp
-takamori.kumamoto.jp
-uki.kumamoto.jp
-uto.kumamoto.jp
-yamaga.kumamoto.jp
-yamato.kumamoto.jp
-yatsushiro.kumamoto.jp
-ayabe.kyoto.jp
-fukuchiyama.kyoto.jp
-higashiyama.kyoto.jp
-ide.kyoto.jp
-ine.kyoto.jp
-joyo.kyoto.jp
-kameoka.kyoto.jp
-kamo.kyoto.jp
-kita.kyoto.jp
-kizu.kyoto.jp
-kumiyama.kyoto.jp
-kyotamba.kyoto.jp
-kyotanabe.kyoto.jp
-kyotango.kyoto.jp
-maizuru.kyoto.jp
-minami.kyoto.jp
-minamiyamashiro.kyoto.jp
-miyazu.kyoto.jp
-muko.kyoto.jp
-nagaokakyo.kyoto.jp
-nakagyo.kyoto.jp
-nantan.kyoto.jp
-oyamazaki.kyoto.jp
-sakyo.kyoto.jp
-seika.kyoto.jp
-tanabe.kyoto.jp
-uji.kyoto.jp
-ujitawara.kyoto.jp
-wazuka.kyoto.jp
-yamashina.kyoto.jp
-yawata.kyoto.jp
-asahi.mie.jp
-inabe.mie.jp
-ise.mie.jp
-kameyama.mie.jp
-kawagoe.mie.jp
-kiho.mie.jp
-kisosaki.mie.jp
-kiwa.mie.jp
-komono.mie.jp
-kumano.mie.jp
-kuwana.mie.jp
-matsusaka.mie.jp
-meiwa.mie.jp
-mihama.mie.jp
-minamiise.mie.jp
-misugi.mie.jp
-miyama.mie.jp
-nabari.mie.jp
-shima.mie.jp
-suzuka.mie.jp
-tado.mie.jp
-taiki.mie.jp
-taki.mie.jp
-tamaki.mie.jp
-toba.mie.jp
-tsu.mie.jp
-udono.mie.jp
-ureshino.mie.jp
-watarai.mie.jp
-yokkaichi.mie.jp
-furukawa.miyagi.jp
-higashimatsushima.miyagi.jp
-ishinomaki.miyagi.jp
-iwanuma.miyagi.jp
-kakuda.miyagi.jp
-kami.miyagi.jp
-kawasaki.miyagi.jp
-kesennuma.miyagi.jp
-marumori.miyagi.jp
-matsushima.miyagi.jp
-minamisanriku.miyagi.jp
-misato.miyagi.jp
-murata.miyagi.jp
-natori.miyagi.jp
-ogawara.miyagi.jp
-ohira.miyagi.jp
-onagawa.miyagi.jp
-osaki.miyagi.jp
-rifu.miyagi.jp
-semine.miyagi.jp
-shibata.miyagi.jp
-shichikashuku.miyagi.jp
-shikama.miyagi.jp
-shiogama.miyagi.jp
-shiroishi.miyagi.jp
-tagajo.miyagi.jp
-taiwa.miyagi.jp
-tome.miyagi.jp
-tomiya.miyagi.jp
-wakuya.miyagi.jp
-watari.miyagi.jp
-yamamoto.miyagi.jp
-zao.miyagi.jp
-aya.miyazaki.jp
-ebino.miyazaki.jp
-gokase.miyazaki.jp
-hyuga.miyazaki.jp
-kadogawa.miyazaki.jp
-kawaminami.miyazaki.jp
-kijo.miyazaki.jp
-kitagawa.miyazaki.jp
-kitakata.miyazaki.jp
-kitaura.miyazaki.jp
-kobayashi.miyazaki.jp
-kunitomi.miyazaki.jp
-kushima.miyazaki.jp
-mimata.miyazaki.jp
-miyakonojo.miyazaki.jp
-miyazaki.miyazaki.jp
-morotsuka.miyazaki.jp
-nichinan.miyazaki.jp
-nishimera.miyazaki.jp
-nobeoka.miyazaki.jp
-saito.miyazaki.jp
-shiiba.miyazaki.jp
-shintomi.miyazaki.jp
-takaharu.miyazaki.jp
-takanabe.miyazaki.jp
-takazaki.miyazaki.jp
-tsuno.miyazaki.jp
-achi.nagano.jp
-agematsu.nagano.jp
-anan.nagano.jp
-aoki.nagano.jp
-asahi.nagano.jp
-azumino.nagano.jp
-chikuhoku.nagano.jp
-chikuma.nagano.jp
-chino.nagano.jp
-fujimi.nagano.jp
-hakuba.nagano.jp
-hara.nagano.jp
-hiraya.nagano.jp
-iida.nagano.jp
-iijima.nagano.jp
-iiyama.nagano.jp
-iizuna.nagano.jp
-ikeda.nagano.jp
-ikusaka.nagano.jp
-ina.nagano.jp
-karuizawa.nagano.jp
-kawakami.nagano.jp
-kiso.nagano.jp
-kisofukushima.nagano.jp
-kitaaiki.nagano.jp
-komagane.nagano.jp
-komoro.nagano.jp
-matsukawa.nagano.jp
-matsumoto.nagano.jp
-miasa.nagano.jp
-minamiaiki.nagano.jp
-minamimaki.nagano.jp
-minamiminowa.nagano.jp
-minowa.nagano.jp
-miyada.nagano.jp
-miyota.nagano.jp
-mochizuki.nagano.jp
-nagano.nagano.jp
-nagawa.nagano.jp
-nagiso.nagano.jp
-nakagawa.nagano.jp
-nakano.nagano.jp
-nozawaonsen.nagano.jp
-obuse.nagano.jp
-ogawa.nagano.jp
-okaya.nagano.jp
-omachi.nagano.jp
-omi.nagano.jp
-ookuwa.nagano.jp
-ooshika.nagano.jp
-otaki.nagano.jp
-otari.nagano.jp
-sakae.nagano.jp
-sakaki.nagano.jp
-saku.nagano.jp
-sakuho.nagano.jp
-shimosuwa.nagano.jp
-shinanomachi.nagano.jp
-shiojiri.nagano.jp
-suwa.nagano.jp
-suzaka.nagano.jp
-takagi.nagano.jp
-takamori.nagano.jp
-takayama.nagano.jp
-tateshina.nagano.jp
-tatsuno.nagano.jp
-togakushi.nagano.jp
-togura.nagano.jp
-tomi.nagano.jp
-ueda.nagano.jp
-wada.nagano.jp
-yamagata.nagano.jp
-yamanouchi.nagano.jp
-yasaka.nagano.jp
-yasuoka.nagano.jp
-chijiwa.nagasaki.jp
-futsu.nagasaki.jp
-goto.nagasaki.jp
-hasami.nagasaki.jp
-hirado.nagasaki.jp
-iki.nagasaki.jp
-isahaya.nagasaki.jp
-kawatana.nagasaki.jp
-kuchinotsu.nagasaki.jp
-matsuura.nagasaki.jp
-nagasaki.nagasaki.jp
-obama.nagasaki.jp
-omura.nagasaki.jp
-oseto.nagasaki.jp
-saikai.nagasaki.jp
-sasebo.nagasaki.jp
-seihi.nagasaki.jp
-shimabara.nagasaki.jp
-shinkamigoto.nagasaki.jp
-togitsu.nagasaki.jp
-tsushima.nagasaki.jp
-unzen.nagasaki.jp
-ando.nara.jp
-gose.nara.jp
-heguri.nara.jp
-higashiyoshino.nara.jp
-ikaruga.nara.jp
-ikoma.nara.jp
-kamikitayama.nara.jp
-kanmaki.nara.jp
-kashiba.nara.jp
-kashihara.nara.jp
-katsuragi.nara.jp
-kawai.nara.jp
-kawakami.nara.jp
-kawanishi.nara.jp
-koryo.nara.jp
-kurotaki.nara.jp
-mitsue.nara.jp
-miyake.nara.jp
-nara.nara.jp
-nosegawa.nara.jp
-oji.nara.jp
-ouda.nara.jp
-oyodo.nara.jp
-sakurai.nara.jp
-sango.nara.jp
-shimoichi.nara.jp
-shimokitayama.nara.jp
-shinjo.nara.jp
-soni.nara.jp
-takatori.nara.jp
-tawaramoto.nara.jp
-tenkawa.nara.jp
-tenri.nara.jp
-uda.nara.jp
-yamatokoriyama.nara.jp
-yamatotakada.nara.jp
-yamazoe.nara.jp
-yoshino.nara.jp
-aga.niigata.jp
-agano.niigata.jp
-gosen.niigata.jp
-itoigawa.niigata.jp
-izumozaki.niigata.jp
-joetsu.niigata.jp
-kamo.niigata.jp
-kariwa.niigata.jp
-kashiwazaki.niigata.jp
-minamiuonuma.niigata.jp
-mitsuke.niigata.jp
-muika.niigata.jp
-murakami.niigata.jp
-myoko.niigata.jp
-nagaoka.niigata.jp
-niigata.niigata.jp
-ojiya.niigata.jp
-omi.niigata.jp
-sado.niigata.jp
-sanjo.niigata.jp
-seiro.niigata.jp
-seirou.niigata.jp
-sekikawa.niigata.jp
-shibata.niigata.jp
-tagami.niigata.jp
-tainai.niigata.jp
-tochio.niigata.jp
-tokamachi.niigata.jp
-tsubame.niigata.jp
-tsunan.niigata.jp
-uonuma.niigata.jp
-yahiko.niigata.jp
-yoita.niigata.jp
-yuzawa.niigata.jp
-beppu.oita.jp
-bungoono.oita.jp
-bungotakada.oita.jp
-hasama.oita.jp
-hiji.oita.jp
-himeshima.oita.jp
-hita.oita.jp
-kamitsue.oita.jp
-kokonoe.oita.jp
-kuju.oita.jp
-kunisaki.oita.jp
-kusu.oita.jp
-oita.oita.jp
-saiki.oita.jp
-taketa.oita.jp
-tsukumi.oita.jp
-usa.oita.jp
-usuki.oita.jp
-yufu.oita.jp
-akaiwa.okayama.jp
-asakuchi.okayama.jp
-bizen.okayama.jp
-hayashima.okayama.jp
-ibara.okayama.jp
-kagamino.okayama.jp
-kasaoka.okayama.jp
-kibichuo.okayama.jp
-kumenan.okayama.jp
-kurashiki.okayama.jp
-maniwa.okayama.jp
-misaki.okayama.jp
-nagi.okayama.jp
-niimi.okayama.jp
-nishiawakura.okayama.jp
-okayama.okayama.jp
-satosho.okayama.jp
-setouchi.okayama.jp
-shinjo.okayama.jp
-shoo.okayama.jp
-soja.okayama.jp
-takahashi.okayama.jp
-tamano.okayama.jp
-tsuyama.okayama.jp
-wake.okayama.jp
-yakage.okayama.jp
-aguni.okinawa.jp
-ginowan.okinawa.jp
-ginoza.okinawa.jp
-gushikami.okinawa.jp
-haebaru.okinawa.jp
-higashi.okinawa.jp
-hirara.okinawa.jp
-iheya.okinawa.jp
-ishigaki.okinawa.jp
-ishikawa.okinawa.jp
-itoman.okinawa.jp
-izena.okinawa.jp
-kadena.okinawa.jp
-kin.okinawa.jp
-kitadaito.okinawa.jp
-kitanakagusuku.okinawa.jp
-kumejima.okinawa.jp
-kunigami.okinawa.jp
-minamidaito.okinawa.jp
-motobu.okinawa.jp
-nago.okinawa.jp
-naha.okinawa.jp
-nakagusuku.okinawa.jp
-nakijin.okinawa.jp
-nanjo.okinawa.jp
-nishihara.okinawa.jp
-ogimi.okinawa.jp
-okinawa.okinawa.jp
-onna.okinawa.jp
-shimoji.okinawa.jp
-taketomi.okinawa.jp
-tarama.okinawa.jp
-tokashiki.okinawa.jp
-tomigusuku.okinawa.jp
-tonaki.okinawa.jp
-urasoe.okinawa.jp
-uruma.okinawa.jp
-yaese.okinawa.jp
-yomitan.okinawa.jp
-yonabaru.okinawa.jp
-yonaguni.okinawa.jp
-zamami.okinawa.jp
-abeno.osaka.jp
-chihayaakasaka.osaka.jp
-chuo.osaka.jp
-daito.osaka.jp
-fujiidera.osaka.jp
-habikino.osaka.jp
-hannan.osaka.jp
-higashiosaka.osaka.jp
-higashisumiyoshi.osaka.jp
-higashiyodogawa.osaka.jp
-hirakata.osaka.jp
-ibaraki.osaka.jp
-ikeda.osaka.jp
-izumi.osaka.jp
-izumiotsu.osaka.jp
-izumisano.osaka.jp
-kadoma.osaka.jp
-kaizuka.osaka.jp
-kanan.osaka.jp
-kashiwara.osaka.jp
-katano.osaka.jp
-kawachinagano.osaka.jp
-kishiwada.osaka.jp
-kita.osaka.jp
-kumatori.osaka.jp
-matsubara.osaka.jp
-minato.osaka.jp
-minoh.osaka.jp
-misaki.osaka.jp
-moriguchi.osaka.jp
-neyagawa.osaka.jp
-nishi.osaka.jp
-nose.osaka.jp
-osakasayama.osaka.jp
-sakai.osaka.jp
-sayama.osaka.jp
-sennan.osaka.jp
-settsu.osaka.jp
-shijonawate.osaka.jp
-shimamoto.osaka.jp
-suita.osaka.jp
-tadaoka.osaka.jp
-taishi.osaka.jp
-tajiri.osaka.jp
-takaishi.osaka.jp
-takatsuki.osaka.jp
-tondabayashi.osaka.jp
-toyonaka.osaka.jp
-toyono.osaka.jp
-yao.osaka.jp
-ariake.saga.jp
-arita.saga.jp
-fukudomi.saga.jp
-genkai.saga.jp
-hamatama.saga.jp
-hizen.saga.jp
-imari.saga.jp
-kamimine.saga.jp
-kanzaki.saga.jp
-karatsu.saga.jp
-kashima.saga.jp
-kitagata.saga.jp
-kitahata.saga.jp
-kiyama.saga.jp
-kouhoku.saga.jp
-kyuragi.saga.jp
-nishiarita.saga.jp
-ogi.saga.jp
-omachi.saga.jp
-ouchi.saga.jp
-saga.saga.jp
-shiroishi.saga.jp
-taku.saga.jp
-tara.saga.jp
-tosu.saga.jp
-yoshinogari.saga.jp
-arakawa.saitama.jp
-asaka.saitama.jp
-chichibu.saitama.jp
-fujimi.saitama.jp
-fujimino.saitama.jp
-fukaya.saitama.jp
-hanno.saitama.jp
-hanyu.saitama.jp
-hasuda.saitama.jp
-hatogaya.saitama.jp
-hatoyama.saitama.jp
-hidaka.saitama.jp
-higashichichibu.saitama.jp
-higashimatsuyama.saitama.jp
-honjo.saitama.jp
-ina.saitama.jp
-iruma.saitama.jp
-iwatsuki.saitama.jp
-kamiizumi.saitama.jp
-kamikawa.saitama.jp
-kamisato.saitama.jp
-kasukabe.saitama.jp
-kawagoe.saitama.jp
-kawaguchi.saitama.jp
-kawajima.saitama.jp
-kazo.saitama.jp
-kitamoto.saitama.jp
-koshigaya.saitama.jp
-kounosu.saitama.jp
-kuki.saitama.jp
-kumagaya.saitama.jp
-matsubushi.saitama.jp
-minano.saitama.jp
-misato.saitama.jp
-miyashiro.saitama.jp
-miyoshi.saitama.jp
-moroyama.saitama.jp
-nagatoro.saitama.jp
-namegawa.saitama.jp
-niiza.saitama.jp
-ogano.saitama.jp
-ogawa.saitama.jp
-ogose.saitama.jp
-okegawa.saitama.jp
-omiya.saitama.jp
-otaki.saitama.jp
-ranzan.saitama.jp
-ryokami.saitama.jp
-saitama.saitama.jp
-sakado.saitama.jp
-satte.saitama.jp
-sayama.saitama.jp
-shiki.saitama.jp
-shiraoka.saitama.jp
-soka.saitama.jp
-sugito.saitama.jp
-toda.saitama.jp
-tokigawa.saitama.jp
-tokorozawa.saitama.jp
-tsurugashima.saitama.jp
-urawa.saitama.jp
-warabi.saitama.jp
-yashio.saitama.jp
-yokoze.saitama.jp
-yono.saitama.jp
-yorii.saitama.jp
-yoshida.saitama.jp
-yoshikawa.saitama.jp
-yoshimi.saitama.jp
-aisho.shiga.jp
-gamo.shiga.jp
-higashiomi.shiga.jp
-hikone.shiga.jp
-koka.shiga.jp
-konan.shiga.jp
-kosei.shiga.jp
-koto.shiga.jp
-kusatsu.shiga.jp
-maibara.shiga.jp
-moriyama.shiga.jp
-nagahama.shiga.jp
-nishiazai.shiga.jp
-notogawa.shiga.jp
-omihachiman.shiga.jp
-otsu.shiga.jp
-ritto.shiga.jp
-ryuoh.shiga.jp
-takashima.shiga.jp
-takatsuki.shiga.jp
-torahime.shiga.jp
-toyosato.shiga.jp
-yasu.shiga.jp
-akagi.shimane.jp
-ama.shimane.jp
-gotsu.shimane.jp
-hamada.shimane.jp
-higashiizumo.shimane.jp
-hikawa.shimane.jp
-hikimi.shimane.jp
-izumo.shimane.jp
-kakinoki.shimane.jp
-masuda.shimane.jp
-matsue.shimane.jp
-misato.shimane.jp
-nishinoshima.shimane.jp
-ohda.shimane.jp
-okinoshima.shimane.jp
-okuizumo.shimane.jp
-shimane.shimane.jp
-tamayu.shimane.jp
-tsuwano.shimane.jp
-unnan.shimane.jp
-yakumo.shimane.jp
-yasugi.shimane.jp
-yatsuka.shimane.jp
-arai.shizuoka.jp
-atami.shizuoka.jp
-fuji.shizuoka.jp
-fujieda.shizuoka.jp
-fujikawa.shizuoka.jp
-fujinomiya.shizuoka.jp
-fukuroi.shizuoka.jp
-gotemba.shizuoka.jp
-haibara.shizuoka.jp
-hamamatsu.shizuoka.jp
-higashiizu.shizuoka.jp
-ito.shizuoka.jp
-iwata.shizuoka.jp
-izu.shizuoka.jp
-izunokuni.shizuoka.jp
-kakegawa.shizuoka.jp
-kannami.shizuoka.jp
-kawanehon.shizuoka.jp
-kawazu.shizuoka.jp
-kikugawa.shizuoka.jp
-kosai.shizuoka.jp
-makinohara.shizuoka.jp
-matsuzaki.shizuoka.jp
-minamiizu.shizuoka.jp
-mishima.shizuoka.jp
-morimachi.shizuoka.jp
-nishiizu.shizuoka.jp
-numazu.shizuoka.jp
-omaezaki.shizuoka.jp
-shimada.shizuoka.jp
-shimizu.shizuoka.jp
-shimoda.shizuoka.jp
-shizuoka.shizuoka.jp
-susono.shizuoka.jp
-yaizu.shizuoka.jp
-yoshida.shizuoka.jp
-ashikaga.tochigi.jp
-bato.tochigi.jp
-haga.tochigi.jp
-ichikai.tochigi.jp
-iwafune.tochigi.jp
-kaminokawa.tochigi.jp
-kanuma.tochigi.jp
-karasuyama.tochigi.jp
-kuroiso.tochigi.jp
-mashiko.tochigi.jp
-mibu.tochigi.jp
-moka.tochigi.jp
-motegi.tochigi.jp
-nasu.tochigi.jp
-nasushiobara.tochigi.jp
-nikko.tochigi.jp
-nishikata.tochigi.jp
-nogi.tochigi.jp
-ohira.tochigi.jp
-ohtawara.tochigi.jp
-oyama.tochigi.jp
-sakura.tochigi.jp
-sano.tochigi.jp
-shimotsuke.tochigi.jp
-shioya.tochigi.jp
-takanezawa.tochigi.jp
-tochigi.tochigi.jp
-tsuga.tochigi.jp
-ujiie.tochigi.jp
-utsunomiya.tochigi.jp
-yaita.tochigi.jp
-aizumi.tokushima.jp
-anan.tokushima.jp
-ichiba.tokushima.jp
-itano.tokushima.jp
-kainan.tokushima.jp
-komatsushima.tokushima.jp
-matsushige.tokushima.jp
-mima.tokushima.jp
-minami.tokushima.jp
-miyoshi.tokushima.jp
-mugi.tokushima.jp
-nakagawa.tokushima.jp
-naruto.tokushima.jp
-sanagochi.tokushima.jp
-shishikui.tokushima.jp
-tokushima.tokushima.jp
-wajiki.tokushima.jp
-adachi.tokyo.jp
-akiruno.tokyo.jp
-akishima.tokyo.jp
-aogashima.tokyo.jp
-arakawa.tokyo.jp
-bunkyo.tokyo.jp
-chiyoda.tokyo.jp
-chofu.tokyo.jp
-chuo.tokyo.jp
-edogawa.tokyo.jp
-fuchu.tokyo.jp
-fussa.tokyo.jp
-hachijo.tokyo.jp
-hachioji.tokyo.jp
-hamura.tokyo.jp
-higashikurume.tokyo.jp
-higashimurayama.tokyo.jp
-higashiyamato.tokyo.jp
-hino.tokyo.jp
-hinode.tokyo.jp
-hinohara.tokyo.jp
-inagi.tokyo.jp
-itabashi.tokyo.jp
-katsushika.tokyo.jp
-kita.tokyo.jp
-kiyose.tokyo.jp
-kodaira.tokyo.jp
-koganei.tokyo.jp
-kokubunji.tokyo.jp
-komae.tokyo.jp
-koto.tokyo.jp
-kouzushima.tokyo.jp
-kunitachi.tokyo.jp
-machida.tokyo.jp
-meguro.tokyo.jp
-minato.tokyo.jp
-mitaka.tokyo.jp
-mizuho.tokyo.jp
-musashimurayama.tokyo.jp
-musashino.tokyo.jp
-nakano.tokyo.jp
-nerima.tokyo.jp
-ogasawara.tokyo.jp
-okutama.tokyo.jp
-ome.tokyo.jp
-oshima.tokyo.jp
-ota.tokyo.jp
-setagaya.tokyo.jp
-shibuya.tokyo.jp
-shinagawa.tokyo.jp
-shinjuku.tokyo.jp
-suginami.tokyo.jp
-sumida.tokyo.jp
-tachikawa.tokyo.jp
-taito.tokyo.jp
-tama.tokyo.jp
-toshima.tokyo.jp
-chizu.tottori.jp
-hino.tottori.jp
-kawahara.tottori.jp
-koge.tottori.jp
-kotoura.tottori.jp
-misasa.tottori.jp
-nanbu.tottori.jp
-nichinan.tottori.jp
-sakaiminato.tottori.jp
-tottori.tottori.jp
-wakasa.tottori.jp
-yazu.tottori.jp
-yonago.tottori.jp
-asahi.toyama.jp
-fuchu.toyama.jp
-fukumitsu.toyama.jp
-funahashi.toyama.jp
-himi.toyama.jp
-imizu.toyama.jp
-inami.toyama.jp
-johana.toyama.jp
-kamiichi.toyama.jp
-kurobe.toyama.jp
-nakaniikawa.toyama.jp
-namerikawa.toyama.jp
-nanto.toyama.jp
-nyuzen.toyama.jp
-oyabe.toyama.jp
-taira.toyama.jp
-takaoka.toyama.jp
-tateyama.toyama.jp
-toga.toyama.jp
-tonami.toyama.jp
-toyama.toyama.jp
-unazuki.toyama.jp
-uozu.toyama.jp
-yamada.toyama.jp
-arida.wakayama.jp
-aridagawa.wakayama.jp
-gobo.wakayama.jp
-hashimoto.wakayama.jp
-hidaka.wakayama.jp
-hirogawa.wakayama.jp
-inami.wakayama.jp
-iwade.wakayama.jp
-kainan.wakayama.jp
-kamitonda.wakayama.jp
-katsuragi.wakayama.jp
-kimino.wakayama.jp
-kinokawa.wakayama.jp
-kitayama.wakayama.jp
-koya.wakayama.jp
-koza.wakayama.jp
-kozagawa.wakayama.jp
-kudoyama.wakayama.jp
-kushimoto.wakayama.jp
-mihama.wakayama.jp
-misato.wakayama.jp
-nachikatsuura.wakayama.jp
-shingu.wakayama.jp
-shirahama.wakayama.jp
-taiji.wakayama.jp
-tanabe.wakayama.jp
-wakayama.wakayama.jp
-yuasa.wakayama.jp
-yura.wakayama.jp
-asahi.yamagata.jp
-funagata.yamagata.jp
-higashine.yamagata.jp
-iide.yamagata.jp
-kahoku.yamagata.jp
-kaminoyama.yamagata.jp
-kaneyama.yamagata.jp
-kawanishi.yamagata.jp
-mamurogawa.yamagata.jp
-mikawa.yamagata.jp
-murayama.yamagata.jp
-nagai.yamagata.jp
-nakayama.yamagata.jp
-nanyo.yamagata.jp
-nishikawa.yamagata.jp
-obanazawa.yamagata.jp
-oe.yamagata.jp
-oguni.yamagata.jp
-ohkura.yamagata.jp
-oishida.yamagata.jp
-sagae.yamagata.jp
-sakata.yamagata.jp
-sakegawa.yamagata.jp
-shinjo.yamagata.jp
-shirataka.yamagata.jp
-shonai.yamagata.jp
-takahata.yamagata.jp
-tendo.yamagata.jp
-tozawa.yamagata.jp
-tsuruoka.yamagata.jp
-yamagata.yamagata.jp
-yamanobe.yamagata.jp
-yonezawa.yamagata.jp
-yuza.yamagata.jp
-abu.yamaguchi.jp
-hagi.yamaguchi.jp
-hikari.yamaguchi.jp
-hofu.yamaguchi.jp
-iwakuni.yamaguchi.jp
-kudamatsu.yamaguchi.jp
-mitou.yamaguchi.jp
-nagato.yamaguchi.jp
-oshima.yamaguchi.jp
-shimonoseki.yamaguchi.jp
-shunan.yamaguchi.jp
-tabuse.yamaguchi.jp
-tokuyama.yamaguchi.jp
-toyota.yamaguchi.jp
-ube.yamaguchi.jp
-yuu.yamaguchi.jp
-chuo.yamanashi.jp
-doshi.yamanashi.jp
-fuefuki.yamanashi.jp
-fujikawa.yamanashi.jp
-fujikawaguchiko.yamanashi.jp
-fujiyoshida.yamanashi.jp
-hayakawa.yamanashi.jp
-hokuto.yamanashi.jp
-ichikawamisato.yamanashi.jp
-kai.yamanashi.jp
-kofu.yamanashi.jp
-koshu.yamanashi.jp
-kosuge.yamanashi.jp
-minami-alps.yamanashi.jp
-minobu.yamanashi.jp
-nakamichi.yamanashi.jp
-nanbu.yamanashi.jp
-narusawa.yamanashi.jp
-nirasaki.yamanashi.jp
-nishikatsura.yamanashi.jp
-oshino.yamanashi.jp
-otsuki.yamanashi.jp
-showa.yamanashi.jp
-tabayama.yamanashi.jp
-tsuru.yamanashi.jp
-uenohara.yamanashi.jp
-yamanakako.yamanashi.jp
-yamanashi.yamanashi.jp
-
-// ke : http://www.kenic.or.ke/index.php?option=com_content&task=view&id=117&Itemid=145
-*.ke
-
-// kg : http://www.domain.kg/dmn_n.html
-kg
-org.kg
-net.kg
-com.kg
-edu.kg
-gov.kg
-mil.kg
-
-// kh : http://www.mptc.gov.kh/dns_registration.htm
-*.kh
-
-// ki : http://www.ki/dns/index.html
-ki
-edu.ki
-biz.ki
-net.ki
-org.ki
-gov.ki
-info.ki
-com.ki
-
-// km : https://en.wikipedia.org/wiki/.km
-// http://www.domaine.km/documents/charte.doc
-km
-org.km
-nom.km
-gov.km
-prd.km
-tm.km
-edu.km
-mil.km
-ass.km
-com.km
-// These are only mentioned as proposed suggestions at domaine.km, but
-// https://en.wikipedia.org/wiki/.km says they're available for registration:
-coop.km
-asso.km
-presse.km
-medecin.km
-notaires.km
-pharmaciens.km
-veterinaire.km
-gouv.km
-
-// kn : https://en.wikipedia.org/wiki/.kn
-// http://www.dot.kn/domainRules.html
-kn
-net.kn
-org.kn
-edu.kn
-gov.kn
-
-// kp : http://www.kcce.kp/en_index.php
-kp
-com.kp
-edu.kp
-gov.kp
-org.kp
-rep.kp
-tra.kp
-
-// kr : https://en.wikipedia.org/wiki/.kr
-// see also: http://domain.nida.or.kr/eng/registration.jsp
-kr
-ac.kr
-co.kr
-es.kr
-go.kr
-hs.kr
-kg.kr
-mil.kr
-ms.kr
-ne.kr
-or.kr
-pe.kr
-re.kr
-sc.kr
-// kr geographical names
-busan.kr
-chungbuk.kr
-chungnam.kr
-daegu.kr
-daejeon.kr
-gangwon.kr
-gwangju.kr
-gyeongbuk.kr
-gyeonggi.kr
-gyeongnam.kr
-incheon.kr
-jeju.kr
-jeonbuk.kr
-jeonnam.kr
-seoul.kr
-ulsan.kr
-
-// kw : https://en.wikipedia.org/wiki/.kw
-*.kw
-
-// ky : http://www.icta.ky/da_ky_reg_dom.php
-// Confirmed by registry <kysupport@perimeterusa.com> 2008-06-17
-ky
-edu.ky
-gov.ky
-com.ky
-org.ky
-net.ky
-
-// kz : https://en.wikipedia.org/wiki/.kz
-// see also: http://www.nic.kz/rules/index.jsp
-kz
-org.kz
-edu.kz
-net.kz
-gov.kz
-mil.kz
-com.kz
-
-// la : https://en.wikipedia.org/wiki/.la
-// Submitted by registry <gavin.brown@nic.la>
-la
-int.la
-net.la
-info.la
-edu.la
-gov.la
-per.la
-com.la
-org.la
-
-// lb : https://en.wikipedia.org/wiki/.lb
-// Submitted by registry <randy@psg.com>
-lb
-com.lb
-edu.lb
-gov.lb
-net.lb
-org.lb
-
-// lc : https://en.wikipedia.org/wiki/.lc
-// see also: http://www.nic.lc/rules.htm
-lc
-com.lc
-net.lc
-co.lc
-org.lc
-edu.lc
-gov.lc
-
-// li : https://en.wikipedia.org/wiki/.li
-li
-
-// lk : http://www.nic.lk/seclevpr.html
-lk
-gov.lk
-sch.lk
-net.lk
-int.lk
-com.lk
-org.lk
-edu.lk
-ngo.lk
-soc.lk
-web.lk
-ltd.lk
-assn.lk
-grp.lk
-hotel.lk
-ac.lk
-
-// lr : http://psg.com/dns/lr/lr.txt
-// Submitted by registry <randy@psg.com>
-lr
-com.lr
-edu.lr
-gov.lr
-org.lr
-net.lr
-
-// ls : https://en.wikipedia.org/wiki/.ls
-ls
-co.ls
-org.ls
-
-// lt : https://en.wikipedia.org/wiki/.lt
-lt
-// gov.lt : http://www.gov.lt/index_en.php
-gov.lt
-
-// lu : http://www.dns.lu/en/
-lu
-
-// lv : http://www.nic.lv/DNS/En/generic.php
-lv
-com.lv
-edu.lv
-gov.lv
-org.lv
-mil.lv
-id.lv
-net.lv
-asn.lv
-conf.lv
-
-// ly : http://www.nic.ly/regulations.php
-ly
-com.ly
-net.ly
-gov.ly
-plc.ly
-edu.ly
-sch.ly
-med.ly
-org.ly
-id.ly
-
-// ma : https://en.wikipedia.org/wiki/.ma
-// http://www.anrt.ma/fr/admin/download/upload/file_fr782.pdf
-ma
-co.ma
-net.ma
-gov.ma
-org.ma
-ac.ma
-press.ma
-
-// mc : http://www.nic.mc/
-mc
-tm.mc
-asso.mc
-
-// md : https://en.wikipedia.org/wiki/.md
-md
-
-// me : https://en.wikipedia.org/wiki/.me
-me
-co.me
-net.me
-org.me
-edu.me
-ac.me
-gov.me
-its.me
-priv.me
-
-// mg : http://nic.mg/nicmg/?page_id=39
-mg
-org.mg
-nom.mg
-gov.mg
-prd.mg
-tm.mg
-edu.mg
-mil.mg
-com.mg
-co.mg
-
-// mh : https://en.wikipedia.org/wiki/.mh
-mh
-
-// mil : https://en.wikipedia.org/wiki/.mil
-mil
-
-// mk : https://en.wikipedia.org/wiki/.mk
-// see also: http://dns.marnet.net.mk/postapka.php
-mk
-com.mk
-org.mk
-net.mk
-edu.mk
-gov.mk
-inf.mk
-name.mk
-
-// ml : http://www.gobin.info/domainname/ml-template.doc
-// see also: https://en.wikipedia.org/wiki/.ml
-ml
-com.ml
-edu.ml
-gouv.ml
-gov.ml
-net.ml
-org.ml
-presse.ml
-
-// mm : https://en.wikipedia.org/wiki/.mm
-*.mm
-
-// mn : https://en.wikipedia.org/wiki/.mn
-mn
-gov.mn
-edu.mn
-org.mn
-
-// mo : http://www.monic.net.mo/
-mo
-com.mo
-net.mo
-org.mo
-edu.mo
-gov.mo
-
-// mobi : https://en.wikipedia.org/wiki/.mobi
-mobi
-
-// mp : http://www.dot.mp/
-// Confirmed by registry <dcamacho@saipan.com> 2008-06-17
-mp
-
-// mq : https://en.wikipedia.org/wiki/.mq
-mq
-
-// mr : https://en.wikipedia.org/wiki/.mr
-mr
-gov.mr
-
-// ms : http://www.nic.ms/pdf/MS_Domain_Name_Rules.pdf
-ms
-com.ms
-edu.ms
-gov.ms
-net.ms
-org.ms
-
-// mt : https://www.nic.org.mt/go/policy
-// Submitted by registry <help@nic.org.mt>
-mt
-com.mt
-edu.mt
-net.mt
-org.mt
-
-// mu : https://en.wikipedia.org/wiki/.mu
-mu
-com.mu
-net.mu
-org.mu
-gov.mu
-ac.mu
-co.mu
-or.mu
-
-// museum : http://about.museum/naming/
-// http://index.museum/
-museum
-academy.museum
-agriculture.museum
-air.museum
-airguard.museum
-alabama.museum
-alaska.museum
-amber.museum
-ambulance.museum
-american.museum
-americana.museum
-americanantiques.museum
-americanart.museum
-amsterdam.museum
-and.museum
-annefrank.museum
-anthro.museum
-anthropology.museum
-antiques.museum
-aquarium.museum
-arboretum.museum
-archaeological.museum
-archaeology.museum
-architecture.museum
-art.museum
-artanddesign.museum
-artcenter.museum
-artdeco.museum
-arteducation.museum
-artgallery.museum
-arts.museum
-artsandcrafts.museum
-asmatart.museum
-assassination.museum
-assisi.museum
-association.museum
-astronomy.museum
-atlanta.museum
-austin.museum
-australia.museum
-automotive.museum
-aviation.museum
-axis.museum
-badajoz.museum
-baghdad.museum
-bahn.museum
-bale.museum
-baltimore.museum
-barcelona.museum
-baseball.museum
-basel.museum
-baths.museum
-bauern.museum
-beauxarts.museum
-beeldengeluid.museum
-bellevue.museum
-bergbau.museum
-berkeley.museum
-berlin.museum
-bern.museum
-bible.museum
-bilbao.museum
-bill.museum
-birdart.museum
-birthplace.museum
-bonn.museum
-boston.museum
-botanical.museum
-botanicalgarden.museum
-botanicgarden.museum
-botany.museum
-brandywinevalley.museum
-brasil.museum
-bristol.museum
-british.museum
-britishcolumbia.museum
-broadcast.museum
-brunel.museum
-brussel.museum
-brussels.museum
-bruxelles.museum
-building.museum
-burghof.museum
-bus.museum
-bushey.museum
-cadaques.museum
-california.museum
-cambridge.museum
-can.museum
-canada.museum
-capebreton.museum
-carrier.museum
-cartoonart.museum
-casadelamoneda.museum
-castle.museum
-castres.museum
-celtic.museum
-center.museum
-chattanooga.museum
-cheltenham.museum
-chesapeakebay.museum
-chicago.museum
-children.museum
-childrens.museum
-childrensgarden.museum
-chiropractic.museum
-chocolate.museum
-christiansburg.museum
-cincinnati.museum
-cinema.museum
-circus.museum
-civilisation.museum
-civilization.museum
-civilwar.museum
-clinton.museum
-clock.museum
-coal.museum
-coastaldefence.museum
-cody.museum
-coldwar.museum
-collection.museum
-colonialwilliamsburg.museum
-coloradoplateau.museum
-columbia.museum
-columbus.museum
-communication.museum
-communications.museum
-community.museum
-computer.museum
-computerhistory.museum
-comunicações.museum
-contemporary.museum
-contemporaryart.museum
-convent.museum
-copenhagen.museum
-corporation.museum
-correios-e-telecomunicações.museum
-corvette.museum
-costume.museum
-countryestate.museum
-county.museum
-crafts.museum
-cranbrook.museum
-creation.museum
-cultural.museum
-culturalcenter.museum
-culture.museum
-cyber.museum
-cymru.museum
-dali.museum
-dallas.museum
-database.museum
-ddr.museum
-decorativearts.museum
-delaware.museum
-delmenhorst.museum
-denmark.museum
-depot.museum
-design.museum
-detroit.museum
-dinosaur.museum
-discovery.museum
-dolls.museum
-donostia.museum
-durham.museum
-eastafrica.museum
-eastcoast.museum
-education.museum
-educational.museum
-egyptian.museum
-eisenbahn.museum
-elburg.museum
-elvendrell.museum
-embroidery.museum
-encyclopedic.museum
-england.museum
-entomology.museum
-environment.museum
-environmentalconservation.museum
-epilepsy.museum
-essex.museum
-estate.museum
-ethnology.museum
-exeter.museum
-exhibition.museum
-family.museum
-farm.museum
-farmequipment.museum
-farmers.museum
-farmstead.museum
-field.museum
-figueres.museum
-filatelia.museum
-film.museum
-fineart.museum
-finearts.museum
-finland.museum
-flanders.museum
-florida.museum
-force.museum
-fortmissoula.museum
-fortworth.museum
-foundation.museum
-francaise.museum
-frankfurt.museum
-franziskaner.museum
-freemasonry.museum
-freiburg.museum
-fribourg.museum
-frog.museum
-fundacio.museum
-furniture.museum
-gallery.museum
-garden.museum
-gateway.museum
-geelvinck.museum
-gemological.museum
-geology.museum
-georgia.museum
-giessen.museum
-glas.museum
-glass.museum
-gorge.museum
-grandrapids.museum
-graz.museum
-guernsey.museum
-halloffame.museum
-hamburg.museum
-handson.museum
-harvestcelebration.museum
-hawaii.museum
-health.museum
-heimatunduhren.museum
-hellas.museum
-helsinki.museum
-hembygdsforbund.museum
-heritage.museum
-histoire.museum
-historical.museum
-historicalsociety.museum
-historichouses.museum
-historisch.museum
-historisches.museum
-history.museum
-historyofscience.museum
-horology.museum
-house.museum
-humanities.museum
-illustration.museum
-imageandsound.museum
-indian.museum
-indiana.museum
-indianapolis.museum
-indianmarket.museum
-intelligence.museum
-interactive.museum
-iraq.museum
-iron.museum
-isleofman.museum
-jamison.museum
-jefferson.museum
-jerusalem.museum
-jewelry.museum
-jewish.museum
-jewishart.museum
-jfk.museum
-journalism.museum
-judaica.museum
-judygarland.museum
-juedisches.museum
-juif.museum
-karate.museum
-karikatur.museum
-kids.museum
-koebenhavn.museum
-koeln.museum
-kunst.museum
-kunstsammlung.museum
-kunstunddesign.museum
-labor.museum
-labour.museum
-lajolla.museum
-lancashire.museum
-landes.museum
-lans.museum
-läns.museum
-larsson.museum
-lewismiller.museum
-lincoln.museum
-linz.museum
-living.museum
-livinghistory.museum
-localhistory.museum
-london.museum
-losangeles.museum
-louvre.museum
-loyalist.museum
-lucerne.museum
-luxembourg.museum
-luzern.museum
-mad.museum
-madrid.museum
-mallorca.museum
-manchester.museum
-mansion.museum
-mansions.museum
-manx.museum
-marburg.museum
-maritime.museum
-maritimo.museum
-maryland.museum
-marylhurst.museum
-media.museum
-medical.museum
-medizinhistorisches.museum
-meeres.museum
-memorial.museum
-mesaverde.museum
-michigan.museum
-midatlantic.museum
-military.museum
-mill.museum
-miners.museum
-mining.museum
-minnesota.museum
-missile.museum
-missoula.museum
-modern.museum
-moma.museum
-money.museum
-monmouth.museum
-monticello.museum
-montreal.museum
-moscow.museum
-motorcycle.museum
-muenchen.museum
-muenster.museum
-mulhouse.museum
-muncie.museum
-museet.museum
-museumcenter.museum
-museumvereniging.museum
-music.museum
-national.museum
-nationalfirearms.museum
-nationalheritage.museum
-nativeamerican.museum
-naturalhistory.museum
-naturalhistorymuseum.museum
-naturalsciences.museum
-nature.museum
-naturhistorisches.museum
-natuurwetenschappen.museum
-naumburg.museum
-naval.museum
-nebraska.museum
-neues.museum
-newhampshire.museum
-newjersey.museum
-newmexico.museum
-newport.museum
-newspaper.museum
-newyork.museum
-niepce.museum
-norfolk.museum
-north.museum
-nrw.museum
-nuernberg.museum
-nuremberg.museum
-nyc.museum
-nyny.museum
-oceanographic.museum
-oceanographique.museum
-omaha.museum
-online.museum
-ontario.museum
-openair.museum
-oregon.museum
-oregontrail.museum
-otago.museum
-oxford.museum
-pacific.museum
-paderborn.museum
-palace.museum
-paleo.museum
-palmsprings.museum
-panama.museum
-paris.museum
-pasadena.museum
-pharmacy.museum
-philadelphia.museum
-philadelphiaarea.museum
-philately.museum
-phoenix.museum
-photography.museum
-pilots.museum
-pittsburgh.museum
-planetarium.museum
-plantation.museum
-plants.museum
-plaza.museum
-portal.museum
-portland.museum
-portlligat.museum
-posts-and-telecommunications.museum
-preservation.museum
-presidio.museum
-press.museum
-project.museum
-public.museum
-pubol.museum
-quebec.museum
-railroad.museum
-railway.museum
-research.museum
-resistance.museum
-riodejaneiro.museum
-rochester.museum
-rockart.museum
-roma.museum
-russia.museum
-saintlouis.museum
-salem.museum
-salvadordali.museum
-salzburg.museum
-sandiego.museum
-sanfrancisco.museum
-santabarbara.museum
-santacruz.museum
-santafe.museum
-saskatchewan.museum
-satx.museum
-savannahga.museum
-schlesisches.museum
-schoenbrunn.museum
-schokoladen.museum
-school.museum
-schweiz.museum
-science.museum
-scienceandhistory.museum
-scienceandindustry.museum
-sciencecenter.museum
-sciencecenters.museum
-science-fiction.museum
-sciencehistory.museum
-sciences.museum
-sciencesnaturelles.museum
-scotland.museum
-seaport.museum
-settlement.museum
-settlers.museum
-shell.museum
-sherbrooke.museum
-sibenik.museum
-silk.museum
-ski.museum
-skole.museum
-society.museum
-sologne.museum
-soundandvision.museum
-southcarolina.museum
-southwest.museum
-space.museum
-spy.museum
-square.museum
-stadt.museum
-stalbans.museum
-starnberg.museum
-state.museum
-stateofdelaware.museum
-station.museum
-steam.museum
-steiermark.museum
-stjohn.museum
-stockholm.museum
-stpetersburg.museum
-stuttgart.museum
-suisse.museum
-surgeonshall.museum
-surrey.museum
-svizzera.museum
-sweden.museum
-sydney.museum
-tank.museum
-tcm.museum
-technology.museum
-telekommunikation.museum
-television.museum
-texas.museum
-textile.museum
-theater.museum
-time.museum
-timekeeping.museum
-topology.museum
-torino.museum
-touch.museum
-town.museum
-transport.museum
-tree.museum
-trolley.museum
-trust.museum
-trustee.museum
-uhren.museum
-ulm.museum
-undersea.museum
-university.museum
-usa.museum
-usantiques.museum
-usarts.museum
-uscountryestate.museum
-usculture.museum
-usdecorativearts.museum
-usgarden.museum
-ushistory.museum
-ushuaia.museum
-uslivinghistory.museum
-utah.museum
-uvic.museum
-valley.museum
-vantaa.museum
-versailles.museum
-viking.museum
-village.museum
-virginia.museum
-virtual.museum
-virtuel.museum
-vlaanderen.museum
-volkenkunde.museum
-wales.museum
-wallonie.museum
-war.museum
-washingtondc.museum
-watchandclock.museum
-watch-and-clock.museum
-western.museum
-westfalen.museum
-whaling.museum
-wildlife.museum
-williamsburg.museum
-windmill.museum
-workshop.museum
-york.museum
-yorkshire.museum
-yosemite.museum
-youth.museum
-zoological.museum
-zoology.museum
-ירושלים.museum
-иком.museum
-
-// mv : https://en.wikipedia.org/wiki/.mv
-// "mv" included because, contra Wikipedia, google.mv exists.
-mv
-aero.mv
-biz.mv
-com.mv
-coop.mv
-edu.mv
-gov.mv
-info.mv
-int.mv
-mil.mv
-museum.mv
-name.mv
-net.mv
-org.mv
-pro.mv
-
-// mw : http://www.registrar.mw/
-mw
-ac.mw
-biz.mw
-co.mw
-com.mw
-coop.mw
-edu.mw
-gov.mw
-int.mw
-museum.mw
-net.mw
-org.mw
-
-// mx : http://www.nic.mx/
-// Submitted by registry <farias@nic.mx>
-mx
-com.mx
-org.mx
-gob.mx
-edu.mx
-net.mx
-
-// my : http://www.mynic.net.my/
-my
-com.my
-net.my
-org.my
-gov.my
-edu.my
-mil.my
-name.my
-
-// mz : http://www.gobin.info/domainname/mz-template.doc
-*.mz
-!teledata.mz
-
-// na : http://www.na-nic.com.na/
-// http://www.info.na/domain/
-na
-info.na
-pro.na
-name.na
-school.na
-or.na
-dr.na
-us.na
-mx.na
-ca.na
-in.na
-cc.na
-tv.na
-ws.na
-mobi.na
-co.na
-com.na
-org.na
-
-// name : has 2nd-level tlds, but there's no list of them
-name
-
-// nc : http://www.cctld.nc/
-nc
-asso.nc
-
-// ne : https://en.wikipedia.org/wiki/.ne
-ne
-
-// net : https://en.wikipedia.org/wiki/.net
-net
-
-// nf : https://en.wikipedia.org/wiki/.nf
-nf
-com.nf
-net.nf
-per.nf
-rec.nf
-web.nf
-arts.nf
-firm.nf
-info.nf
-other.nf
-store.nf
-
-// ng : http://www.nira.org.ng/index.php/join-us/register-ng-domain/189-nira-slds
-ng
-com.ng
-edu.ng
-gov.ng
-i.ng
-mil.ng
-mobi.ng
-name.ng
-net.ng
-org.ng
-sch.ng
-
-// ni : http://www.nic.ni/
-com.ni
-gob.ni
-edu.ni
-org.ni
-nom.ni
-net.ni
-mil.ni
-co.ni
-biz.ni
-web.ni
-int.ni
-ac.ni
-in.ni
-info.ni
-
-// nl : https://en.wikipedia.org/wiki/.nl
-//      https://www.sidn.nl/
-//      ccTLD for the Netherlands
-nl
-
-// BV.nl will be a registry for dutch BV's (besloten vennootschap)
-bv.nl
-
-// no : http://www.norid.no/regelverk/index.en.html
-// The Norwegian registry has declined to notify us of updates. The web pages
-// referenced below are the official source of the data. There is also an
-// announce mailing list:
-// https://postlister.uninett.no/sympa/info/norid-diskusjon
-no
-// Norid generic domains : http://www.norid.no/regelverk/vedlegg-c.en.html
-fhs.no
-vgs.no
-fylkesbibl.no
-folkebibl.no
-museum.no
-idrett.no
-priv.no
-// Non-Norid generic domains : http://www.norid.no/regelverk/vedlegg-d.en.html
-mil.no
-stat.no
-dep.no
-kommune.no
-herad.no
-// no geographical names : http://www.norid.no/regelverk/vedlegg-b.en.html
-// counties
-aa.no
-ah.no
-bu.no
-fm.no
-hl.no
-hm.no
-jan-mayen.no
-mr.no
-nl.no
-nt.no
-of.no
-ol.no
-oslo.no
-rl.no
-sf.no
-st.no
-svalbard.no
-tm.no
-tr.no
-va.no
-vf.no
-// primary and lower secondary schools per county
-gs.aa.no
-gs.ah.no
-gs.bu.no
-gs.fm.no
-gs.hl.no
-gs.hm.no
-gs.jan-mayen.no
-gs.mr.no
-gs.nl.no
-gs.nt.no
-gs.of.no
-gs.ol.no
-gs.oslo.no
-gs.rl.no
-gs.sf.no
-gs.st.no
-gs.svalbard.no
-gs.tm.no
-gs.tr.no
-gs.va.no
-gs.vf.no
-// cities
-akrehamn.no
-åkrehamn.no
-algard.no
-ålgård.no
-arna.no
-brumunddal.no
-bryne.no
-bronnoysund.no
-brønnøysund.no
-drobak.no
-drøbak.no
-egersund.no
-fetsund.no
-floro.no
-florø.no
-fredrikstad.no
-hokksund.no
-honefoss.no
-hønefoss.no
-jessheim.no
-jorpeland.no
-jørpeland.no
-kirkenes.no
-kopervik.no
-krokstadelva.no
-langevag.no
-langevåg.no
-leirvik.no
-mjondalen.no
-mjøndalen.no
-mo-i-rana.no
-mosjoen.no
-mosjøen.no
-nesoddtangen.no
-orkanger.no
-osoyro.no
-osøyro.no
-raholt.no
-råholt.no
-sandnessjoen.no
-sandnessjøen.no
-skedsmokorset.no
-slattum.no
-spjelkavik.no
-stathelle.no
-stavern.no
-stjordalshalsen.no
-stjørdalshalsen.no
-tananger.no
-tranby.no
-vossevangen.no
-// communities
-afjord.no
-åfjord.no
-agdenes.no
-al.no
-ål.no
-alesund.no
-ålesund.no
-alstahaug.no
-alta.no
-áltá.no
-alaheadju.no
-álaheadju.no
-alvdal.no
-amli.no
-åmli.no
-amot.no
-åmot.no
-andebu.no
-andoy.no
-andøy.no
-andasuolo.no
-ardal.no
-årdal.no
-aremark.no
-arendal.no
-ås.no
-aseral.no
-åseral.no
-asker.no
-askim.no
-askvoll.no
-askoy.no
-askøy.no
-asnes.no
-åsnes.no
-audnedaln.no
-aukra.no
-aure.no
-aurland.no
-aurskog-holand.no
-aurskog-høland.no
-austevoll.no
-austrheim.no
-averoy.no
-averøy.no
-balestrand.no
-ballangen.no
-balat.no
-bálát.no
-balsfjord.no
-bahccavuotna.no
-báhccavuotna.no
-bamble.no
-bardu.no
-beardu.no
-beiarn.no
-bajddar.no
-bájddar.no
-baidar.no
-báidár.no
-berg.no
-bergen.no
-berlevag.no
-berlevåg.no
-bearalvahki.no
-bearalváhki.no
-bindal.no
-birkenes.no
-bjarkoy.no
-bjarkøy.no
-bjerkreim.no
-bjugn.no
-bodo.no
-bodø.no
-badaddja.no
-bådåddjå.no
-budejju.no
-bokn.no
-bremanger.no
-bronnoy.no
-brønnøy.no
-bygland.no
-bykle.no
-barum.no
-bærum.no
-bo.telemark.no
-bø.telemark.no
-bo.nordland.no
-bø.nordland.no
-bievat.no
-bievát.no
-bomlo.no
-bømlo.no
-batsfjord.no
-båtsfjord.no
-bahcavuotna.no
-báhcavuotna.no
-dovre.no
-drammen.no
-drangedal.no
-dyroy.no
-dyrøy.no
-donna.no
-dønna.no
-eid.no
-eidfjord.no
-eidsberg.no
-eidskog.no
-eidsvoll.no
-eigersund.no
-elverum.no
-enebakk.no
-engerdal.no
-etne.no
-etnedal.no
-evenes.no
-evenassi.no
-evenášši.no
-evje-og-hornnes.no
-farsund.no
-fauske.no
-fuossko.no
-fuoisku.no
-fedje.no
-fet.no
-finnoy.no
-finnøy.no
-fitjar.no
-fjaler.no
-fjell.no
-flakstad.no
-flatanger.no
-flekkefjord.no
-flesberg.no
-flora.no
-fla.no
-flå.no
-folldal.no
-forsand.no
-fosnes.no
-frei.no
-frogn.no
-froland.no
-frosta.no
-frana.no
-fræna.no
-froya.no
-frøya.no
-fusa.no
-fyresdal.no
-forde.no
-førde.no
-gamvik.no
-gangaviika.no
-gáŋgaviika.no
-gaular.no
-gausdal.no
-gildeskal.no
-gildeskål.no
-giske.no
-gjemnes.no
-gjerdrum.no
-gjerstad.no
-gjesdal.no
-gjovik.no
-gjøvik.no
-gloppen.no
-gol.no
-gran.no
-grane.no
-granvin.no
-gratangen.no
-grimstad.no
-grong.no
-kraanghke.no
-kråanghke.no
-grue.no
-gulen.no
-hadsel.no
-halden.no
-halsa.no
-hamar.no
-hamaroy.no
-habmer.no
-hábmer.no
-hapmir.no
-hápmir.no
-hammerfest.no
-hammarfeasta.no
-hámmárfeasta.no
-haram.no
-hareid.no
-harstad.no
-hasvik.no
-aknoluokta.no
-ákŋoluokta.no
-hattfjelldal.no
-aarborte.no
-haugesund.no
-hemne.no
-hemnes.no
-hemsedal.no
-heroy.more-og-romsdal.no
-herøy.møre-og-romsdal.no
-heroy.nordland.no
-herøy.nordland.no
-hitra.no
-hjartdal.no
-hjelmeland.no
-hobol.no
-hobøl.no
-hof.no
-hol.no
-hole.no
-holmestrand.no
-holtalen.no
-holtålen.no
-hornindal.no
-horten.no
-hurdal.no
-hurum.no
-hvaler.no
-hyllestad.no
-hagebostad.no
-hægebostad.no
-hoyanger.no
-høyanger.no
-hoylandet.no
-høylandet.no
-ha.no
-hå.no
-ibestad.no
-inderoy.no
-inderøy.no
-iveland.no
-jevnaker.no
-jondal.no
-jolster.no
-jølster.no
-karasjok.no
-karasjohka.no
-kárášjohka.no
-karlsoy.no
-galsa.no
-gálsá.no
-karmoy.no
-karmøy.no
-kautokeino.no
-guovdageaidnu.no
-klepp.no
-klabu.no
-klæbu.no
-kongsberg.no
-kongsvinger.no
-kragero.no
-kragerø.no
-kristiansand.no
-kristiansund.no
-krodsherad.no
-krødsherad.no
-kvalsund.no
-rahkkeravju.no
-ráhkkerávju.no
-kvam.no
-kvinesdal.no
-kvinnherad.no
-kviteseid.no
-kvitsoy.no
-kvitsøy.no
-kvafjord.no
-kvæfjord.no
-giehtavuoatna.no
-kvanangen.no
-kvænangen.no
-navuotna.no
-návuotna.no
-kafjord.no
-kåfjord.no
-gaivuotna.no
-gáivuotna.no
-larvik.no
-lavangen.no
-lavagis.no
-loabat.no
-loabát.no
-lebesby.no
-davvesiida.no
-leikanger.no
-leirfjord.no
-leka.no
-leksvik.no
-lenvik.no
-leangaviika.no
-leaŋgaviika.no
-lesja.no
-levanger.no
-lier.no
-lierne.no
-lillehammer.no
-lillesand.no
-lindesnes.no
-lindas.no
-lindås.no
-lom.no
-loppa.no
-lahppi.no
-láhppi.no
-lund.no
-lunner.no
-luroy.no
-lurøy.no
-luster.no
-lyngdal.no
-lyngen.no
-ivgu.no
-lardal.no
-lerdal.no
-lærdal.no
-lodingen.no
-lødingen.no
-lorenskog.no
-lørenskog.no
-loten.no
-løten.no
-malvik.no
-masoy.no
-måsøy.no
-muosat.no
-muosát.no
-mandal.no
-marker.no
-marnardal.no
-masfjorden.no
-meland.no
-meldal.no
-melhus.no
-meloy.no
-meløy.no
-meraker.no
-meråker.no
-moareke.no
-moåreke.no
-midsund.no
-midtre-gauldal.no
-modalen.no
-modum.no
-molde.no
-moskenes.no
-moss.no
-mosvik.no
-malselv.no
-målselv.no
-malatvuopmi.no
-málatvuopmi.no
-namdalseid.no
-aejrie.no
-namsos.no
-namsskogan.no
-naamesjevuemie.no
-nååmesjevuemie.no
-laakesvuemie.no
-nannestad.no
-narvik.no
-narviika.no
-naustdal.no
-nedre-eiker.no
-nes.akershus.no
-nes.buskerud.no
-nesna.no
-nesodden.no
-nesseby.no
-unjarga.no
-unjárga.no
-nesset.no
-nissedal.no
-nittedal.no
-nord-aurdal.no
-nord-fron.no
-nord-odal.no
-norddal.no
-nordkapp.no
-davvenjarga.no
-davvenjárga.no
-nordre-land.no
-nordreisa.no
-raisa.no
-ráisa.no
-nore-og-uvdal.no
-notodden.no
-naroy.no
-nærøy.no
-notteroy.no
-nøtterøy.no
-odda.no
-oksnes.no
-øksnes.no
-oppdal.no
-oppegard.no
-oppegård.no
-orkdal.no
-orland.no
-ørland.no
-orskog.no
-ørskog.no
-orsta.no
-ørsta.no
-os.hedmark.no
-os.hordaland.no
-osen.no
-osteroy.no
-osterøy.no
-ostre-toten.no
-østre-toten.no
-overhalla.no
-ovre-eiker.no
-øvre-eiker.no
-oyer.no
-øyer.no
-oygarden.no
-øygarden.no
-oystre-slidre.no
-øystre-slidre.no
-porsanger.no
-porsangu.no
-porsáŋgu.no
-porsgrunn.no
-radoy.no
-radøy.no
-rakkestad.no
-rana.no
-ruovat.no
-randaberg.no
-rauma.no
-rendalen.no
-rennebu.no
-rennesoy.no
-rennesøy.no
-rindal.no
-ringebu.no
-ringerike.no
-ringsaker.no
-rissa.no
-risor.no
-risør.no
-roan.no
-rollag.no
-rygge.no
-ralingen.no
-rælingen.no
-rodoy.no
-rødøy.no
-romskog.no
-rømskog.no
-roros.no
-røros.no
-rost.no
-røst.no
-royken.no
-røyken.no
-royrvik.no
-røyrvik.no
-rade.no
-råde.no
-salangen.no
-siellak.no
-saltdal.no
-salat.no
-sálát.no
-sálat.no
-samnanger.no
-sande.more-og-romsdal.no
-sande.møre-og-romsdal.no
-sande.vestfold.no
-sandefjord.no
-sandnes.no
-sandoy.no
-sandøy.no
-sarpsborg.no
-sauda.no
-sauherad.no
-sel.no
-selbu.no
-selje.no
-seljord.no
-sigdal.no
-siljan.no
-sirdal.no
-skaun.no
-skedsmo.no
-ski.no
-skien.no
-skiptvet.no
-skjervoy.no
-skjervøy.no
-skierva.no
-skiervá.no
-skjak.no
-skjåk.no
-skodje.no
-skanland.no
-skånland.no
-skanit.no
-skánit.no
-smola.no
-smøla.no
-snillfjord.no
-snasa.no
-snåsa.no
-snoasa.no
-snaase.no
-snåase.no
-sogndal.no
-sokndal.no
-sola.no
-solund.no
-songdalen.no
-sortland.no
-spydeberg.no
-stange.no
-stavanger.no
-steigen.no
-steinkjer.no
-stjordal.no
-stjørdal.no
-stokke.no
-stor-elvdal.no
-stord.no
-stordal.no
-storfjord.no
-omasvuotna.no
-strand.no
-stranda.no
-stryn.no
-sula.no
-suldal.no
-sund.no
-sunndal.no
-surnadal.no
-sveio.no
-svelvik.no
-sykkylven.no
-sogne.no
-søgne.no
-somna.no
-sømna.no
-sondre-land.no
-søndre-land.no
-sor-aurdal.no
-sør-aurdal.no
-sor-fron.no
-sør-fron.no
-sor-odal.no
-sør-odal.no
-sor-varanger.no
-sør-varanger.no
-matta-varjjat.no
-mátta-várjjat.no
-sorfold.no
-sørfold.no
-sorreisa.no
-sørreisa.no
-sorum.no
-sørum.no
-tana.no
-deatnu.no
-time.no
-tingvoll.no
-tinn.no
-tjeldsund.no
-dielddanuorri.no
-tjome.no
-tjøme.no
-tokke.no
-tolga.no
-torsken.no
-tranoy.no
-tranøy.no
-tromso.no
-tromsø.no
-tromsa.no
-romsa.no
-trondheim.no
-troandin.no
-trysil.no
-trana.no
-træna.no
-trogstad.no
-trøgstad.no
-tvedestrand.no
-tydal.no
-tynset.no
-tysfjord.no
-divtasvuodna.no
-divttasvuotna.no
-tysnes.no
-tysvar.no
-tysvær.no
-tonsberg.no
-tønsberg.no
-ullensaker.no
-ullensvang.no
-ulvik.no
-utsira.no
-vadso.no
-vadsø.no
-cahcesuolo.no
-čáhcesuolo.no
-vaksdal.no
-valle.no
-vang.no
-vanylven.no
-vardo.no
-vardø.no
-varggat.no
-várggát.no
-vefsn.no
-vaapste.no
-vega.no
-vegarshei.no
-vegårshei.no
-vennesla.no
-verdal.no
-verran.no
-vestby.no
-vestnes.no
-vestre-slidre.no
-vestre-toten.no
-vestvagoy.no
-vestvågøy.no
-vevelstad.no
-vik.no
-vikna.no
-vindafjord.no
-volda.no
-voss.no
-varoy.no
-værøy.no
-vagan.no
-vågan.no
-voagat.no
-vagsoy.no
-vågsøy.no
-vaga.no
-vågå.no
-valer.ostfold.no
-våler.østfold.no
-valer.hedmark.no
-våler.hedmark.no
-
-// np : http://www.mos.com.np/register.html
-*.np
-
-// nr : http://cenpac.net.nr/dns/index.html
-// Submitted by registry <technician@cenpac.net.nr>
-nr
-biz.nr
-info.nr
-gov.nr
-edu.nr
-org.nr
-net.nr
-com.nr
-
-// nu : https://en.wikipedia.org/wiki/.nu
-nu
-
-// nz : https://en.wikipedia.org/wiki/.nz
-// Submitted by registry <jay@nzrs.net.nz>
-nz
-ac.nz
-co.nz
-cri.nz
-geek.nz
-gen.nz
-govt.nz
-health.nz
-iwi.nz
-kiwi.nz
-maori.nz
-mil.nz
-māori.nz
-net.nz
-org.nz
-parliament.nz
-school.nz
-
-// om : https://en.wikipedia.org/wiki/.om
-om
-co.om
-com.om
-edu.om
-gov.om
-med.om
-museum.om
-net.om
-org.om
-pro.om
-
-// org : https://en.wikipedia.org/wiki/.org
-org
-
-// pa : http://www.nic.pa/
-// Some additional second level "domains" resolve directly as hostnames, such as
-// pannet.pa, so we add a rule for "pa".
-pa
-ac.pa
-gob.pa
-com.pa
-org.pa
-sld.pa
-edu.pa
-net.pa
-ing.pa
-abo.pa
-med.pa
-nom.pa
-
-// pe : https://www.nic.pe/InformeFinalComision.pdf
-pe
-edu.pe
-gob.pe
-nom.pe
-mil.pe
-org.pe
-com.pe
-net.pe
-
-// pf : http://www.gobin.info/domainname/formulaire-pf.pdf
-pf
-com.pf
-org.pf
-edu.pf
-
-// pg : https://en.wikipedia.org/wiki/.pg
-*.pg
-
-// ph : http://www.domains.ph/FAQ2.asp
-// Submitted by registry <jed@email.com.ph>
-ph
-com.ph
-net.ph
-org.ph
-gov.ph
-edu.ph
-ngo.ph
-mil.ph
-i.ph
-
-// pk : http://pk5.pknic.net.pk/pk5/msgNamepk.PK
-pk
-com.pk
-net.pk
-edu.pk
-org.pk
-fam.pk
-biz.pk
-web.pk
-gov.pk
-gob.pk
-gok.pk
-gon.pk
-gop.pk
-gos.pk
-info.pk
-
-// pl http://www.dns.pl/english/index.html
-// Submitted by registry
-pl
-com.pl
-net.pl
-org.pl
-// pl functional domains (http://www.dns.pl/english/index.html)
-aid.pl
-agro.pl
-atm.pl
-auto.pl
-biz.pl
-edu.pl
-gmina.pl
-gsm.pl
-info.pl
-mail.pl
-miasta.pl
-media.pl
-mil.pl
-nieruchomosci.pl
-nom.pl
-pc.pl
-powiat.pl
-priv.pl
-realestate.pl
-rel.pl
-sex.pl
-shop.pl
-sklep.pl
-sos.pl
-szkola.pl
-targi.pl
-tm.pl
-tourism.pl
-travel.pl
-turystyka.pl
-// Government domains
-gov.pl
-ap.gov.pl
-ic.gov.pl
-is.gov.pl
-us.gov.pl
-kmpsp.gov.pl
-kppsp.gov.pl
-kwpsp.gov.pl
-psp.gov.pl
-wskr.gov.pl
-kwp.gov.pl
-mw.gov.pl
-ug.gov.pl
-um.gov.pl
-umig.gov.pl
-ugim.gov.pl
-upow.gov.pl
-uw.gov.pl
-starostwo.gov.pl
-pa.gov.pl
-po.gov.pl
-psse.gov.pl
-pup.gov.pl
-rzgw.gov.pl
-sa.gov.pl
-so.gov.pl
-sr.gov.pl
-wsa.gov.pl
-sko.gov.pl
-uzs.gov.pl
-wiih.gov.pl
-winb.gov.pl
-pinb.gov.pl
-wios.gov.pl
-witd.gov.pl
-wzmiuw.gov.pl
-piw.gov.pl
-wiw.gov.pl
-griw.gov.pl
-wif.gov.pl
-oum.gov.pl
-sdn.gov.pl
-zp.gov.pl
-uppo.gov.pl
-mup.gov.pl
-wuoz.gov.pl
-konsulat.gov.pl
-oirm.gov.pl
-// pl regional domains (http://www.dns.pl/english/index.html)
-augustow.pl
-babia-gora.pl
-bedzin.pl
-beskidy.pl
-bialowieza.pl
-bialystok.pl
-bielawa.pl
-bieszczady.pl
-boleslawiec.pl
-bydgoszcz.pl
-bytom.pl
-cieszyn.pl
-czeladz.pl
-czest.pl
-dlugoleka.pl
-elblag.pl
-elk.pl
-glogow.pl
-gniezno.pl
-gorlice.pl
-grajewo.pl
-ilawa.pl
-jaworzno.pl
-jelenia-gora.pl
-jgora.pl
-kalisz.pl
-kazimierz-dolny.pl
-karpacz.pl
-kartuzy.pl
-kaszuby.pl
-katowice.pl
-kepno.pl
-ketrzyn.pl
-klodzko.pl
-kobierzyce.pl
-kolobrzeg.pl
-konin.pl
-konskowola.pl
-kutno.pl
-lapy.pl
-lebork.pl
-legnica.pl
-lezajsk.pl
-limanowa.pl
-lomza.pl
-lowicz.pl
-lubin.pl
-lukow.pl
-malbork.pl
-malopolska.pl
-mazowsze.pl
-mazury.pl
-mielec.pl
-mielno.pl
-mragowo.pl
-naklo.pl
-nowaruda.pl
-nysa.pl
-olawa.pl
-olecko.pl
-olkusz.pl
-olsztyn.pl
-opoczno.pl
-opole.pl
-ostroda.pl
-ostroleka.pl
-ostrowiec.pl
-ostrowwlkp.pl
-pila.pl
-pisz.pl
-podhale.pl
-podlasie.pl
-polkowice.pl
-pomorze.pl
-pomorskie.pl
-prochowice.pl
-pruszkow.pl
-przeworsk.pl
-pulawy.pl
-radom.pl
-rawa-maz.pl
-rybnik.pl
-rzeszow.pl
-sanok.pl
-sejny.pl
-slask.pl
-slupsk.pl
-sosnowiec.pl
-stalowa-wola.pl
-skoczow.pl
-starachowice.pl
-stargard.pl
-suwalki.pl
-swidnica.pl
-swiebodzin.pl
-swinoujscie.pl
-szczecin.pl
-szczytno.pl
-tarnobrzeg.pl
-tgory.pl
-turek.pl
-tychy.pl
-ustka.pl
-walbrzych.pl
-warmia.pl
-warszawa.pl
-waw.pl
-wegrow.pl
-wielun.pl
-wlocl.pl
-wloclawek.pl
-wodzislaw.pl
-wolomin.pl
-wroclaw.pl
-zachpomor.pl
-zagan.pl
-zarow.pl
-zgora.pl
-zgorzelec.pl
-
-// pm : http://www.afnic.fr/medias/documents/AFNIC-naming-policy2012.pdf
-pm
-
-// pn : http://www.government.pn/PnRegistry/policies.htm
-pn
-gov.pn
-co.pn
-org.pn
-edu.pn
-net.pn
-
-// post : https://en.wikipedia.org/wiki/.post
-post
-
-// pr : http://www.nic.pr/index.asp?f=1
-pr
-com.pr
-net.pr
-org.pr
-gov.pr
-edu.pr
-isla.pr
-pro.pr
-biz.pr
-info.pr
-name.pr
-// these aren't mentioned on nic.pr, but on https://en.wikipedia.org/wiki/.pr
-est.pr
-prof.pr
-ac.pr
-
-// pro : http://registry.pro/get-pro
-pro
-aaa.pro
-aca.pro
-acct.pro
-avocat.pro
-bar.pro
-cpa.pro
-eng.pro
-jur.pro
-law.pro
-med.pro
-recht.pro
-
-// ps : https://en.wikipedia.org/wiki/.ps
-// http://www.nic.ps/registration/policy.html#reg
-ps
-edu.ps
-gov.ps
-sec.ps
-plo.ps
-com.ps
-org.ps
-net.ps
-
-// pt : http://online.dns.pt/dns/start_dns
-pt
-net.pt
-gov.pt
-org.pt
-edu.pt
-int.pt
-publ.pt
-com.pt
-nome.pt
-
-// pw : https://en.wikipedia.org/wiki/.pw
-pw
-co.pw
-ne.pw
-or.pw
-ed.pw
-go.pw
-belau.pw
-
-// py : http://www.nic.py/pautas.html#seccion_9
-// Submitted by registry
-py
-com.py
-coop.py
-edu.py
-gov.py
-mil.py
-net.py
-org.py
-
-// qa : http://domains.qa/en/
-qa
-com.qa
-edu.qa
-gov.qa
-mil.qa
-name.qa
-net.qa
-org.qa
-sch.qa
-
-// re : http://www.afnic.re/obtenir/chartes/nommage-re/annexe-descriptifs
-re
-asso.re
-com.re
-nom.re
-
-// ro : http://www.rotld.ro/
-ro
-arts.ro
-com.ro
-firm.ro
-info.ro
-nom.ro
-nt.ro
-org.ro
-rec.ro
-store.ro
-tm.ro
-www.ro
-
-// rs : https://www.rnids.rs/en/domains/national-domains
-rs
-ac.rs
-co.rs
-edu.rs
-gov.rs
-in.rs
-org.rs
-
-// ru : http://www.cctld.ru/ru/docs/aktiv_8.php
-// Industry domains
-ru
-ac.ru
-com.ru
-edu.ru
-int.ru
-net.ru
-org.ru
-pp.ru
-// Geographical domains
-adygeya.ru
-altai.ru
-amur.ru
-arkhangelsk.ru
-astrakhan.ru
-bashkiria.ru
-belgorod.ru
-bir.ru
-bryansk.ru
-buryatia.ru
-cbg.ru
-chel.ru
-chelyabinsk.ru
-chita.ru
-chukotka.ru
-chuvashia.ru
-dagestan.ru
-dudinka.ru
-e-burg.ru
-grozny.ru
-irkutsk.ru
-ivanovo.ru
-izhevsk.ru
-jar.ru
-joshkar-ola.ru
-kalmykia.ru
-kaluga.ru
-kamchatka.ru
-karelia.ru
-kazan.ru
-kchr.ru
-kemerovo.ru
-khabarovsk.ru
-khakassia.ru
-khv.ru
-kirov.ru
-koenig.ru
-komi.ru
-kostroma.ru
-krasnoyarsk.ru
-kuban.ru
-kurgan.ru
-kursk.ru
-lipetsk.ru
-magadan.ru
-mari.ru
-mari-el.ru
-marine.ru
-mordovia.ru
-// mosreg.ru  Bug 1090800 - removed at request of Aleksey Konstantinov <konstantinovav@mosreg.ru>
-msk.ru
-murmansk.ru
-nalchik.ru
-nnov.ru
-nov.ru
-novosibirsk.ru
-nsk.ru
-omsk.ru
-orenburg.ru
-oryol.ru
-palana.ru
-penza.ru
-perm.ru
-ptz.ru
-rnd.ru
-ryazan.ru
-sakhalin.ru
-samara.ru
-saratov.ru
-simbirsk.ru
-smolensk.ru
-spb.ru
-stavropol.ru
-stv.ru
-surgut.ru
-tambov.ru
-tatarstan.ru
-tom.ru
-tomsk.ru
-tsaritsyn.ru
-tsk.ru
-tula.ru
-tuva.ru
-tver.ru
-tyumen.ru
-udm.ru
-udmurtia.ru
-ulan-ude.ru
-vladikavkaz.ru
-vladimir.ru
-vladivostok.ru
-volgograd.ru
-vologda.ru
-voronezh.ru
-vrn.ru
-vyatka.ru
-yakutia.ru
-yamal.ru
-yaroslavl.ru
-yekaterinburg.ru
-yuzhno-sakhalinsk.ru
-// More geographical domains
-amursk.ru
-baikal.ru
-cmw.ru
-fareast.ru
-jamal.ru
-kms.ru
-k-uralsk.ru
-kustanai.ru
-kuzbass.ru
-mytis.ru
-nakhodka.ru
-nkz.ru
-norilsk.ru
-oskol.ru
-pyatigorsk.ru
-rubtsovsk.ru
-snz.ru
-syzran.ru
-vdonsk.ru
-zgrad.ru
-// State domains
-gov.ru
-mil.ru
-// Technical domains
-test.ru
-
-// rw : http://www.nic.rw/cgi-bin/policy.pl
-rw
-gov.rw
-net.rw
-edu.rw
-ac.rw
-com.rw
-co.rw
-int.rw
-mil.rw
-gouv.rw
-
-// sa : http://www.nic.net.sa/
-sa
-com.sa
-net.sa
-org.sa
-gov.sa
-med.sa
-pub.sa
-edu.sa
-sch.sa
-
-// sb : http://www.sbnic.net.sb/
-// Submitted by registry <lee.humphries@telekom.com.sb>
-sb
-com.sb
-edu.sb
-gov.sb
-net.sb
-org.sb
-
-// sc : http://www.nic.sc/
-sc
-com.sc
-gov.sc
-net.sc
-org.sc
-edu.sc
-
-// sd : http://www.isoc.sd/sudanic.isoc.sd/billing_pricing.htm
-// Submitted by registry <admin@isoc.sd>
-sd
-com.sd
-net.sd
-org.sd
-edu.sd
-med.sd
-tv.sd
-gov.sd
-info.sd
-
-// se : https://en.wikipedia.org/wiki/.se
-// Submitted by registry <patrik.wallstrom@iis.se>
-se
-a.se
-ac.se
-b.se
-bd.se
-brand.se
-c.se
-d.se
-e.se
-f.se
-fh.se
-fhsk.se
-fhv.se
-g.se
-h.se
-i.se
-k.se
-komforb.se
-kommunalforbund.se
-komvux.se
-l.se
-lanbib.se
-m.se
-n.se
-naturbruksgymn.se
-o.se
-org.se
-p.se
-parti.se
-pp.se
-press.se
-r.se
-s.se
-t.se
-tm.se
-u.se
-w.se
-x.se
-y.se
-z.se
-
-// sg : http://www.nic.net.sg/page/registration-policies-procedures-and-guidelines
-sg
-com.sg
-net.sg
-org.sg
-gov.sg
-edu.sg
-per.sg
-
-// sh : http://www.nic.sh/registrar.html
-sh
-com.sh
-net.sh
-gov.sh
-org.sh
-mil.sh
-
-// si : https://en.wikipedia.org/wiki/.si
-si
-
-// sj : No registrations at this time.
-// Submitted by registry <jarle@uninett.no>
-sj
-
-// sk : https://en.wikipedia.org/wiki/.sk
-// list of 2nd level domains ?
-sk
-
-// sl : http://www.nic.sl
-// Submitted by registry <adam@neoip.com>
-sl
-com.sl
-net.sl
-edu.sl
-gov.sl
-org.sl
-
-// sm : https://en.wikipedia.org/wiki/.sm
-sm
-
-// sn : https://en.wikipedia.org/wiki/.sn
-sn
-art.sn
-com.sn
-edu.sn
-gouv.sn
-org.sn
-perso.sn
-univ.sn
-
-// so : http://www.soregistry.com/
-so
-com.so
-net.so
-org.so
-
-// sr : https://en.wikipedia.org/wiki/.sr
-sr
-
-// st : http://www.nic.st/html/policyrules/
-st
-co.st
-com.st
-consulado.st
-edu.st
-embaixada.st
-gov.st
-mil.st
-net.st
-org.st
-principe.st
-saotome.st
-store.st
-
-// su : https://en.wikipedia.org/wiki/.su
-su
-adygeya.su
-arkhangelsk.su
-balashov.su
-bashkiria.su
-bryansk.su
-dagestan.su
-grozny.su
-ivanovo.su
-kalmykia.su
-kaluga.su
-karelia.su
-khakassia.su
-krasnodar.su
-kurgan.su
-lenug.su
-mordovia.su
-msk.su
-murmansk.su
-nalchik.su
-nov.su
-obninsk.su
-penza.su
-pokrovsk.su
-sochi.su
-spb.su
-togliatti.su
-troitsk.su
-tula.su
-tuva.su
-vladikavkaz.su
-vladimir.su
-vologda.su
-
-// sv : http://www.svnet.org.sv/niveldos.pdf
-sv
-com.sv
-edu.sv
-gob.sv
-org.sv
-red.sv
-
-// sx : https://en.wikipedia.org/wiki/.sx
-// Submitted by registry <jcvignes@openregistry.com>
-sx
-gov.sx
-
-// sy : https://en.wikipedia.org/wiki/.sy
-// see also: http://www.gobin.info/domainname/sy.doc
-sy
-edu.sy
-gov.sy
-net.sy
-mil.sy
-com.sy
-org.sy
-
-// sz : https://en.wikipedia.org/wiki/.sz
-// http://www.sispa.org.sz/
-sz
-co.sz
-ac.sz
-org.sz
-
-// tc : https://en.wikipedia.org/wiki/.tc
-tc
-
-// td : https://en.wikipedia.org/wiki/.td
-td
-
-// tel: https://en.wikipedia.org/wiki/.tel
-// http://www.telnic.org/
-tel
-
-// tf : https://en.wikipedia.org/wiki/.tf
-tf
-
-// tg : https://en.wikipedia.org/wiki/.tg
-// http://www.nic.tg/
-tg
-
-// th : https://en.wikipedia.org/wiki/.th
-// Submitted by registry <krit@thains.co.th>
-th
-ac.th
-co.th
-go.th
-in.th
-mi.th
-net.th
-or.th
-
-// tj : http://www.nic.tj/policy.html
-tj
-ac.tj
-biz.tj
-co.tj
-com.tj
-edu.tj
-go.tj
-gov.tj
-int.tj
-mil.tj
-name.tj
-net.tj
-nic.tj
-org.tj
-test.tj
-web.tj
-
-// tk : https://en.wikipedia.org/wiki/.tk
-tk
-
-// tl : https://en.wikipedia.org/wiki/.tl
-tl
-gov.tl
-
-// tm : http://www.nic.tm/local.html
-tm
-com.tm
-co.tm
-org.tm
-net.tm
-nom.tm
-gov.tm
-mil.tm
-edu.tm
-
-// tn : https://en.wikipedia.org/wiki/.tn
-// http://whois.ati.tn/
-tn
-com.tn
-ens.tn
-fin.tn
-gov.tn
-ind.tn
-intl.tn
-nat.tn
-net.tn
-org.tn
-info.tn
-perso.tn
-tourism.tn
-edunet.tn
-rnrt.tn
-rns.tn
-rnu.tn
-mincom.tn
-agrinet.tn
-defense.tn
-turen.tn
-
-// to : https://en.wikipedia.org/wiki/.to
-// Submitted by registry <egullich@colo.to>
-to
-com.to
-gov.to
-net.to
-org.to
-edu.to
-mil.to
-
-// subTLDs: https://www.nic.tr/forms/eng/policies.pdf
-//     and: https://www.nic.tr/forms/politikalar.pdf
-// Submitted by <mehmetgurevin@gmail.com>
-tr
-com.tr
-info.tr
-biz.tr
-net.tr
-org.tr
-web.tr
-gen.tr
-tv.tr
-av.tr
-dr.tr
-bbs.tr
-name.tr
-tel.tr
-gov.tr
-bel.tr
-pol.tr
-mil.tr
-k12.tr
-edu.tr
-kep.tr
-
-// Used by Northern Cyprus
-nc.tr
-
-// Used by government agencies of Northern Cyprus
-gov.nc.tr
-
-// travel : https://en.wikipedia.org/wiki/.travel
-travel
-
-// tt : http://www.nic.tt/
-tt
-co.tt
-com.tt
-org.tt
-net.tt
-biz.tt
-info.tt
-pro.tt
-int.tt
-coop.tt
-jobs.tt
-mobi.tt
-travel.tt
-museum.tt
-aero.tt
-name.tt
-gov.tt
-edu.tt
-
-// tv : https://en.wikipedia.org/wiki/.tv
-// Not listing any 2LDs as reserved since none seem to exist in practice,
-// Wikipedia notwithstanding.
-tv
-
-// tw : https://en.wikipedia.org/wiki/.tw
-tw
-edu.tw
-gov.tw
-mil.tw
-com.tw
-net.tw
-org.tw
-idv.tw
-game.tw
-ebiz.tw
-club.tw
-網路.tw
-組織.tw
-商業.tw
-
-// tz : http://www.tznic.or.tz/index.php/domains
-// Submitted by registry <manager@tznic.or.tz>
-tz
-ac.tz
-co.tz
-go.tz
-hotel.tz
-info.tz
-me.tz
-mil.tz
-mobi.tz
-ne.tz
-or.tz
-sc.tz
-tv.tz
-
-// ua : https://hostmaster.ua/policy/?ua
-// Submitted by registry <dk@cctld.ua>
-ua
-// ua 2LD
-com.ua
-edu.ua
-gov.ua
-in.ua
-net.ua
-org.ua
-// ua geographic names
-// https://hostmaster.ua/2ld/
-cherkassy.ua
-cherkasy.ua
-chernigov.ua
-chernihiv.ua
-chernivtsi.ua
-chernovtsy.ua
-ck.ua
-cn.ua
-cr.ua
-crimea.ua
-cv.ua
-dn.ua
-dnepropetrovsk.ua
-dnipropetrovsk.ua
-dominic.ua
-donetsk.ua
-dp.ua
-if.ua
-ivano-frankivsk.ua
-kh.ua
-kharkiv.ua
-kharkov.ua
-kherson.ua
-khmelnitskiy.ua
-khmelnytskyi.ua
-kiev.ua
-kirovograd.ua
-km.ua
-kr.ua
-krym.ua
-ks.ua
-kv.ua
-kyiv.ua
-lg.ua
-lt.ua
-lugansk.ua
-lutsk.ua
-lv.ua
-lviv.ua
-mk.ua
-mykolaiv.ua
-nikolaev.ua
-od.ua
-odesa.ua
-odessa.ua
-pl.ua
-poltava.ua
-rivne.ua
-rovno.ua
-rv.ua
-sb.ua
-sebastopol.ua
-sevastopol.ua
-sm.ua
-sumy.ua
-te.ua
-ternopil.ua
-uz.ua
-uzhgorod.ua
-vinnica.ua
-vinnytsia.ua
-vn.ua
-volyn.ua
-yalta.ua
-zaporizhzhe.ua
-zaporizhzhia.ua
-zhitomir.ua
-zhytomyr.ua
-zp.ua
-zt.ua
-
-// ug : https://www.registry.co.ug/
-ug
-co.ug
-or.ug
-ac.ug
-sc.ug
-go.ug
-ne.ug
-com.ug
-org.ug
-
-// uk : https://en.wikipedia.org/wiki/.uk
-// Submitted by registry <Michael.Daly@nominet.org.uk>
-uk
-ac.uk
-co.uk
-gov.uk
-ltd.uk
-me.uk
-net.uk
-nhs.uk
-org.uk
-plc.uk
-police.uk
-*.sch.uk
-
-// us : https://en.wikipedia.org/wiki/.us
-us
-dni.us
-fed.us
-isa.us
-kids.us
-nsn.us
-// us geographic names
-ak.us
-al.us
-ar.us
-as.us
-az.us
-ca.us
-co.us
-ct.us
-dc.us
-de.us
-fl.us
-ga.us
-gu.us
-hi.us
-ia.us
-id.us
-il.us
-in.us
-ks.us
-ky.us
-la.us
-ma.us
-md.us
-me.us
-mi.us
-mn.us
-mo.us
-ms.us
-mt.us
-nc.us
-nd.us
-ne.us
-nh.us
-nj.us
-nm.us
-nv.us
-ny.us
-oh.us
-ok.us
-or.us
-pa.us
-pr.us
-ri.us
-sc.us
-sd.us
-tn.us
-tx.us
-ut.us
-vi.us
-vt.us
-va.us
-wa.us
-wi.us
-wv.us
-wy.us
-// The registrar notes several more specific domains available in each state,
-// such as state.*.us, dst.*.us, etc., but resolution of these is somewhat
-// haphazard; in some states these domains resolve as addresses, while in others
-// only subdomains are available, or even nothing at all. We include the
-// most common ones where it's clear that different sites are different
-// entities.
-k12.ak.us
-k12.al.us
-k12.ar.us
-k12.as.us
-k12.az.us
-k12.ca.us
-k12.co.us
-k12.ct.us
-k12.dc.us
-k12.de.us
-k12.fl.us
-k12.ga.us
-k12.gu.us
-// k12.hi.us  Bug 614565 - Hawaii has a state-wide DOE login
-k12.ia.us
-k12.id.us
-k12.il.us
-k12.in.us
-k12.ks.us
-k12.ky.us
-k12.la.us
-k12.ma.us
-k12.md.us
-k12.me.us
-k12.mi.us
-k12.mn.us
-k12.mo.us
-k12.ms.us
-k12.mt.us
-k12.nc.us
-// k12.nd.us  Bug 1028347 - Removed at request of Travis Rosso <trossow@nd.gov>
-k12.ne.us
-k12.nh.us
-k12.nj.us
-k12.nm.us
-k12.nv.us
-k12.ny.us
-k12.oh.us
-k12.ok.us
-k12.or.us
-k12.pa.us
-k12.pr.us
-k12.ri.us
-k12.sc.us
-// k12.sd.us  Bug 934131 - Removed at request of James Booze <James.Booze@k12.sd.us>
-k12.tn.us
-k12.tx.us
-k12.ut.us
-k12.vi.us
-k12.vt.us
-k12.va.us
-k12.wa.us
-k12.wi.us
-// k12.wv.us  Bug 947705 - Removed at request of Verne Britton <verne@wvnet.edu>
-k12.wy.us
-cc.ak.us
-cc.al.us
-cc.ar.us
-cc.as.us
-cc.az.us
-cc.ca.us
-cc.co.us
-cc.ct.us
-cc.dc.us
-cc.de.us
-cc.fl.us
-cc.ga.us
-cc.gu.us
-cc.hi.us
-cc.ia.us
-cc.id.us
-cc.il.us
-cc.in.us
-cc.ks.us
-cc.ky.us
-cc.la.us
-cc.ma.us
-cc.md.us
-cc.me.us
-cc.mi.us
-cc.mn.us
-cc.mo.us
-cc.ms.us
-cc.mt.us
-cc.nc.us
-cc.nd.us
-cc.ne.us
-cc.nh.us
-cc.nj.us
-cc.nm.us
-cc.nv.us
-cc.ny.us
-cc.oh.us
-cc.ok.us
-cc.or.us
-cc.pa.us
-cc.pr.us
-cc.ri.us
-cc.sc.us
-cc.sd.us
-cc.tn.us
-cc.tx.us
-cc.ut.us
-cc.vi.us
-cc.vt.us
-cc.va.us
-cc.wa.us
-cc.wi.us
-cc.wv.us
-cc.wy.us
-lib.ak.us
-lib.al.us
-lib.ar.us
-lib.as.us
-lib.az.us
-lib.ca.us
-lib.co.us
-lib.ct.us
-lib.dc.us
-lib.de.us
-lib.fl.us
-lib.ga.us
-lib.gu.us
-lib.hi.us
-lib.ia.us
-lib.id.us
-lib.il.us
-lib.in.us
-lib.ks.us
-lib.ky.us
-lib.la.us
-lib.ma.us
-lib.md.us
-lib.me.us
-lib.mi.us
-lib.mn.us
-lib.mo.us
-lib.ms.us
-lib.mt.us
-lib.nc.us
-lib.nd.us
-lib.ne.us
-lib.nh.us
-lib.nj.us
-lib.nm.us
-lib.nv.us
-lib.ny.us
-lib.oh.us
-lib.ok.us
-lib.or.us
-lib.pa.us
-lib.pr.us
-lib.ri.us
-lib.sc.us
-lib.sd.us
-lib.tn.us
-lib.tx.us
-lib.ut.us
-lib.vi.us
-lib.vt.us
-lib.va.us
-lib.wa.us
-lib.wi.us
-// lib.wv.us  Bug 941670 - Removed at request of Larry W Arnold <arnold@wvlc.lib.wv.us>
-lib.wy.us
-// k12.ma.us contains school districts in Massachusetts. The 4LDs are
-//  managed independently except for private (PVT), charter (CHTR) and
-//  parochial (PAROCH) schools.  Those are delegated directly to the
-//  5LD operators.   <k12-ma-hostmaster _ at _ rsuc.gweep.net>
-pvt.k12.ma.us
-chtr.k12.ma.us
-paroch.k12.ma.us
-
-// uy : http://www.nic.org.uy/
-uy
-com.uy
-edu.uy
-gub.uy
-mil.uy
-net.uy
-org.uy
-
-// uz : http://www.reg.uz/
-uz
-co.uz
-com.uz
-net.uz
-org.uz
-
-// va : https://en.wikipedia.org/wiki/.va
-va
-
-// vc : https://en.wikipedia.org/wiki/.vc
-// Submitted by registry <kshah@ca.afilias.info>
-vc
-com.vc
-net.vc
-org.vc
-gov.vc
-mil.vc
-edu.vc
-
-// ve : https://registro.nic.ve/
-// Submitted by registry
-ve
-arts.ve
-co.ve
-com.ve
-e12.ve
-edu.ve
-firm.ve
-gob.ve
-gov.ve
-info.ve
-int.ve
-mil.ve
-net.ve
-org.ve
-rec.ve
-store.ve
-tec.ve
-web.ve
-
-// vg : https://en.wikipedia.org/wiki/.vg
-vg
-
-// vi : http://www.nic.vi/newdomainform.htm
-// http://www.nic.vi/Domain_Rules/body_domain_rules.html indicates some other
-// TLDs are "reserved", such as edu.vi and gov.vi, but doesn't actually say they
-// are available for registration (which they do not seem to be).
-vi
-co.vi
-com.vi
-k12.vi
-net.vi
-org.vi
-
-// vn : https://www.dot.vn/vnnic/vnnic/domainregistration.jsp
-vn
-com.vn
-net.vn
-org.vn
-edu.vn
-gov.vn
-int.vn
-ac.vn
-biz.vn
-info.vn
-name.vn
-pro.vn
-health.vn
-
-// vu : https://en.wikipedia.org/wiki/.vu
-// http://www.vunic.vu/
-vu
-com.vu
-edu.vu
-net.vu
-org.vu
-
-// wf : http://www.afnic.fr/medias/documents/AFNIC-naming-policy2012.pdf
-wf
-
-// ws : https://en.wikipedia.org/wiki/.ws
-// http://samoanic.ws/index.dhtml
-ws
-com.ws
-net.ws
-org.ws
-gov.ws
-edu.ws
-
-// yt : http://www.afnic.fr/medias/documents/AFNIC-naming-policy2012.pdf
-yt
-
-// IDN ccTLDs
-// When submitting patches, please maintain a sort by ISO 3166 ccTLD, then
-// U-label, and follow this format:
-// // A-Label ("<Latin renderings>", <language name>[, variant info]) : <ISO 3166 ccTLD>
-// // [sponsoring org]
-// U-Label
-
-// xn--mgbaam7a8h ("Emerat", Arabic) : AE
-// http://nic.ae/english/arabicdomain/rules.jsp
-امارات
-
-// xn--y9a3aq ("hye", Armenian) : AM
-// ISOC AM (operated by .am Registry)
-հայ
-
-// xn--54b7fta0cc ("Bangla", Bangla) : BD
-বাংলা
-
-// xn--90ais ("bel", Belarusian/Russian Cyrillic) : BY
-// Operated by .by registry
-бел
-
-// xn--fiqs8s ("Zhongguo/China", Chinese, Simplified) : CN
-// CNNIC
-// http://cnnic.cn/html/Dir/2005/10/11/3218.htm
-中国
-
-// xn--fiqz9s ("Zhongguo/China", Chinese, Traditional) : CN
-// CNNIC
-// http://cnnic.cn/html/Dir/2005/10/11/3218.htm
-中國
-
-// xn--lgbbat1ad8j ("Algeria/Al Jazair", Arabic) : DZ
-الجزائر
-
-// xn--wgbh1c ("Egypt/Masr", Arabic) : EG
-// http://www.dotmasr.eg/
-مصر
-
-// xn--e1a4c ("eu", Cyrillic) : EU
-ею
-
-// xn--node ("ge", Georgian Mkhedruli) : GE
-გე
-
-// xn--qxam ("el", Greek) : GR
-// Hellenic Ministry of Infrastructure, Transport, and Networks
-ελ
-
-// xn--j6w193g ("Hong Kong", Chinese) : HK
-// https://www2.hkirc.hk/register/rules.jsp
-香港
-
-// xn--h2brj9c ("Bharat", Devanagari) : IN
-// India
-भारत
-
-// xn--mgbbh1a71e ("Bharat", Arabic) : IN
-// India
-بھارت
-
-// xn--fpcrj9c3d ("Bharat", Telugu) : IN
-// India
-భారత్
-
-// xn--gecrj9c ("Bharat", Gujarati) : IN
-// India
-ભારત
-
-// xn--s9brj9c ("Bharat", Gurmukhi) : IN
-// India
-ਭਾਰਤ
-
-// xn--45brj9c ("Bharat", Bengali) : IN
-// India
-ভারত
-
-// xn--xkc2dl3a5ee0h ("India", Tamil) : IN
-// India
-இந்தியா
-
-// xn--mgba3a4f16a ("Iran", Persian) : IR
-ایران
-
-// xn--mgba3a4fra ("Iran", Arabic) : IR
-ايران
-
-// xn--mgbtx2b ("Iraq", Arabic) : IQ
-// Communications and Media Commission
-عراق
-
-// xn--mgbayh7gpa ("al-Ordon", Arabic) : JO
-// National Information Technology Center (NITC)
-// Royal Scientific Society, Al-Jubeiha
-الاردن
-
-// xn--3e0b707e ("Republic of Korea", Hangul) : KR
-한국
-
-// xn--80ao21a ("Kaz", Kazakh) : KZ
-қаз
-
-// xn--fzc2c9e2c ("Lanka", Sinhalese-Sinhala) : LK
-// http://nic.lk
-ලංකා
-
-// xn--xkc2al3hye2a ("Ilangai", Tamil) : LK
-// http://nic.lk
-இலங்கை
-
-// xn--mgbc0a9azcg ("Morocco/al-Maghrib", Arabic) : MA
-المغرب
-
-// xn--d1alf ("mkd", Macedonian) : MK
-// MARnet
-мкд
-
-// xn--l1acc ("mon", Mongolian) : MN
-мон
-
-// xn--mix891f ("Macao", Chinese, Traditional) : MO
-// MONIC / HNET Asia (Registry Operator for .mo)
-澳門
-
-// xn--mix082f ("Macao", Chinese, Simplified) : MO
-澳门
-
-// xn--mgbx4cd0ab ("Malaysia", Malay) : MY
-مليسيا
-
-// xn--mgb9awbf ("Oman", Arabic) : OM
-عمان
-
-// xn--mgbai9azgqp6j ("Pakistan", Urdu/Arabic) : PK
-پاکستان
-
-// xn--mgbai9a5eva00b ("Pakistan", Urdu/Arabic, variant) : PK
-پاكستان
-
-// xn--ygbi2ammx ("Falasteen", Arabic) : PS
-// The Palestinian National Internet Naming Authority (PNINA)
-// http://www.pnina.ps
-فلسطين
-
-// xn--90a3ac ("srb", Cyrillic) : RS
-// https://www.rnids.rs/en/domains/national-domains
-срб
-пр.срб
-орг.срб
-обр.срб
-од.срб
-упр.срб
-ак.срб
-
-// xn--p1ai ("rf", Russian-Cyrillic) : RU
-// http://www.cctld.ru/en/docs/rulesrf.php
-рф
-
-// xn--wgbl6a ("Qatar", Arabic) : QA
-// http://www.ict.gov.qa/
-قطر
-
-// xn--mgberp4a5d4ar ("AlSaudiah", Arabic) : SA
-// http://www.nic.net.sa/
-السعودية
-
-// xn--mgberp4a5d4a87g ("AlSaudiah", Arabic, variant)  : SA
-السعودیة
-
-// xn--mgbqly7c0a67fbc ("AlSaudiah", Arabic, variant) : SA
-السعودیۃ
-
-// xn--mgbqly7cvafr ("AlSaudiah", Arabic, variant) : SA
-السعوديه
-
-// xn--mgbpl2fh ("sudan", Arabic) : SD
-// Operated by .sd registry
-سودان
-
-// xn--yfro4i67o Singapore ("Singapore", Chinese) : SG
-新加坡
-
-// xn--clchc0ea0b2g2a9gcd ("Singapore", Tamil) : SG
-சிங்கப்பூர்
-
-// xn--ogbpf8fl ("Syria", Arabic) : SY
-سورية
-
-// xn--mgbtf8fl ("Syria", Arabic, variant) : SY
-سوريا
-
-// xn--o3cw4h ("Thai", Thai) : TH
-// http://www.thnic.co.th
-ไทย
-
-// xn--pgbs0dh ("Tunisia", Arabic) : TN
-// http://nic.tn
-تونس
-
-// xn--kpry57d ("Taiwan", Chinese, Traditional) : TW
-// http://www.twnic.net/english/dn/dn_07a.htm
-台灣
-
-// xn--kprw13d ("Taiwan", Chinese, Simplified) : TW
-// http://www.twnic.net/english/dn/dn_07a.htm
-台湾
-
-// xn--nnx388a ("Taiwan", Chinese, variant) : TW
-臺灣
-
-// xn--j1amh ("ukr", Cyrillic) : UA
-укр
-
-// xn--mgb2ddes ("AlYemen", Arabic) : YE
-اليمن
-
-// xxx : http://icmregistry.com
-xxx
-
-// ye : http://www.y.net.ye/services/domain_name.htm
-*.ye
-
-// za : http://www.zadna.org.za/content/page/domain-information
-ac.za
-agric.za
-alt.za
-co.za
-edu.za
-gov.za
-grondar.za
-law.za
-mil.za
-net.za
-ngo.za
-nis.za
-nom.za
-org.za
-school.za
-tm.za
-web.za
-
-// zm : https://zicta.zm/
-// Submitted by registry <info@zicta.zm>
-zm
-ac.zm
-biz.zm
-co.zm
-com.zm
-edu.zm
-gov.zm
-info.zm
-mil.zm
-net.zm
-org.zm
-sch.zm
-
-// zw : https://en.wikipedia.org/wiki/.zw
-*.zw
-
-
-// List of new gTLDs imported from https://newgtlds.icann.org/newgtlds.csv on 2016-04-04T20:12:16Z
-
-// aaa : 2015-02-26 American Automobile Association, Inc.
-aaa
-
-// aarp : 2015-05-21 AARP
-aarp
-
-// abarth : 2015-07-30 Fiat Chrysler Automobiles N.V.
-abarth
-
-// abb : 2014-10-24 ABB Ltd
-abb
-
-// abbott : 2014-07-24 Abbott Laboratories, Inc.
-abbott
-
-// abbvie : 2015-07-30 AbbVie Inc.
-abbvie
-
-// abc : 2015-07-30 Disney Enterprises, Inc.
-abc
-
-// able : 2015-06-25 Able Inc.
-able
-
-// abogado : 2014-04-24 Top Level Domain Holdings Limited
-abogado
-
-// abudhabi : 2015-07-30 Abu Dhabi Systems and Information Centre
-abudhabi
-
-// academy : 2013-11-07 Half Oaks, LLC
-academy
-
-// accenture : 2014-08-15 Accenture plc
-accenture
-
-// accountant : 2014-11-20 dot Accountant Limited
-accountant
-
-// accountants : 2014-03-20 Knob Town, LLC
-accountants
-
-// aco : 2015-01-08 ACO Severin Ahlmann GmbH & Co. KG
-aco
-
-// active : 2014-05-01 The Active Network, Inc
-active
-
-// actor : 2013-12-12 United TLD Holdco Ltd.
-actor
-
-// adac : 2015-07-16 Allgemeiner Deutscher Automobil-Club e.V. (ADAC)
-adac
-
-// ads : 2014-12-04 Charleston Road Registry Inc.
-ads
-
-// adult : 2014-10-16 ICM Registry AD LLC
-adult
-
-// aeg : 2015-03-19 Aktiebolaget Electrolux
-aeg
-
-// aetna : 2015-05-21 Aetna Life Insurance Company
-aetna
-
-// afamilycompany : 2015-07-23 Johnson Shareholdings, Inc.
-afamilycompany
-
-// afl : 2014-10-02 Australian Football League
-afl
-
-// africa : 2014-03-24 ZA Central Registry NPC trading as Registry.Africa
-africa
-
-// africamagic : 2015-03-05 Electronic Media Network (Pty) Ltd
-africamagic
-
-// agakhan : 2015-04-23 Fondation Aga Khan (Aga Khan Foundation)
-agakhan
-
-// agency : 2013-11-14 Steel Falls, LLC
-agency
-
-// aig : 2014-12-18 American International Group, Inc.
-aig
-
-// aigo : 2015-08-06 aigo Digital Technology Co,Ltd.
-aigo
-
-// airbus : 2015-07-30 Airbus S.A.S.
-airbus
-
-// airforce : 2014-03-06 United TLD Holdco Ltd.
-airforce
-
-// airtel : 2014-10-24 Bharti Airtel Limited
-airtel
-
-// akdn : 2015-04-23 Fondation Aga Khan (Aga Khan Foundation)
-akdn
-
-// alfaromeo : 2015-07-31 Fiat Chrysler Automobiles N.V.
-alfaromeo
-
-// alibaba : 2015-01-15 Alibaba Group Holding Limited
-alibaba
-
-// alipay : 2015-01-15 Alibaba Group Holding Limited
-alipay
-
-// allfinanz : 2014-07-03 Allfinanz Deutsche Vermögensberatung Aktiengesellschaft
-allfinanz
-
-// allstate : 2015-07-31 Allstate Fire and Casualty Insurance Company
-allstate
-
-// ally : 2015-06-18 Ally Financial Inc.
-ally
-
-// alsace : 2014-07-02 REGION D ALSACE
-alsace
-
-// alstom : 2015-07-30 ALSTOM
-alstom
-
-// americanexpress : 2015-07-31 American Express Travel Related Services Company, Inc.
-americanexpress
-
-// americanfamily : 2015-07-23 AmFam, Inc.
-americanfamily
-
-// amex : 2015-07-31 American Express Travel Related Services Company, Inc.
-amex
-
-// amfam : 2015-07-23 AmFam, Inc.
-amfam
-
-// amica : 2015-05-28 Amica Mutual Insurance Company
-amica
-
-// amsterdam : 2014-07-24 Gemeente Amsterdam
-amsterdam
-
-// analytics : 2014-12-18 Campus IP LLC
-analytics
-
-// android : 2014-08-07 Charleston Road Registry Inc.
-android
-
-// anquan : 2015-01-08 QIHOO 360 TECHNOLOGY CO. LTD.
-anquan
-
-// anz : 2015-07-31 Australia and New Zealand Banking Group Limited
-anz
-
-// aol : 2015-09-17 AOL Inc.
-aol
-
-// apartments : 2014-12-11 June Maple, LLC
-apartments
-
-// app : 2015-05-14 Charleston Road Registry Inc.
-app
-
-// apple : 2015-05-14 Apple Inc.
-apple
-
-// aquarelle : 2014-07-24 Aquarelle.com
-aquarelle
-
-// arab : 2015-11-12 League of Arab States
-arab
-
-// aramco : 2014-11-20 Aramco Services Company
-aramco
-
-// archi : 2014-02-06 STARTING DOT LIMITED
-archi
-
-// army : 2014-03-06 United TLD Holdco Ltd.
-army
-
-// art : 2016-03-24 UK Creative Ideas Limited
-art
-
-// arte : 2014-12-11 Association Relative à la Télévision Européenne G.E.I.E.
-arte
-
-// asda : 2015-07-31 Wal-Mart Stores, Inc.
-asda
-
-// associates : 2014-03-06 Baxter Hill, LLC
-associates
-
-// athleta : 2015-07-30 The Gap, Inc.
-athleta
-
-// attorney : 2014-03-20
-attorney
-
-// auction : 2014-03-20
-auction
-
-// audi : 2015-05-21 AUDI Aktiengesellschaft
-audi
-
-// audible : 2015-06-25 Amazon EU S.à r.l.
-audible
-
-// audio : 2014-03-20 Uniregistry, Corp.
-audio
-
-// auspost : 2015-08-13 Australian Postal Corporation
-auspost
-
-// author : 2014-12-18 Amazon EU S.à r.l.
-author
-
-// auto : 2014-11-13
-auto
-
-// autos : 2014-01-09 DERAutos, LLC
-autos
-
-// avianca : 2015-01-08 Aerovias del Continente Americano S.A. Avianca
-avianca
-
-// aws : 2015-06-25 Amazon EU S.à r.l.
-aws
-
-// axa : 2013-12-19 AXA SA
-axa
-
-// azure : 2014-12-18 Microsoft Corporation
-azure
-
-// baby : 2015-04-09 Johnson & Johnson Services, Inc.
-baby
-
-// baidu : 2015-01-08 Baidu, Inc.
-baidu
-
-// banamex : 2015-07-30 Citigroup Inc.
-banamex
-
-// bananarepublic : 2015-07-31 The Gap, Inc.
-bananarepublic
-
-// band : 2014-06-12
-band
-
-// bank : 2014-09-25 fTLD Registry Services LLC
-bank
-
-// bar : 2013-12-12 Punto 2012 Sociedad Anonima Promotora de Inversion de Capital Variable
-bar
-
-// barcelona : 2014-07-24 Municipi de Barcelona
-barcelona
-
-// barclaycard : 2014-11-20 Barclays Bank PLC
-barclaycard
-
-// barclays : 2014-11-20 Barclays Bank PLC
-barclays
-
-// barefoot : 2015-06-11 Gallo Vineyards, Inc.
-barefoot
-
-// bargains : 2013-11-14 Half Hallow, LLC
-bargains
-
-// baseball : 2015-10-29 MLB Advanced Media DH, LLC
-baseball
-
-// basketball : 2015-08-20 Fédération Internationale de Basketball (FIBA)
-basketball
-
-// bauhaus : 2014-04-17 Werkhaus GmbH
-bauhaus
-
-// bayern : 2014-01-23 Bayern Connect GmbH
-bayern
-
-// bbc : 2014-12-18 British Broadcasting Corporation
-bbc
-
-// bbt : 2015-07-23 BB&T Corporation
-bbt
-
-// bbva : 2014-10-02 BANCO BILBAO VIZCAYA ARGENTARIA, S.A.
-bbva
-
-// bcg : 2015-04-02 The Boston Consulting Group, Inc.
-bcg
-
-// bcn : 2014-07-24 Municipi de Barcelona
-bcn
-
-// beats : 2015-05-14 Beats Electronics, LLC
-beats
-
-// beauty : 2015-12-03 L'Oréal
-beauty
-
-// beer : 2014-01-09 Top Level Domain Holdings Limited
-beer
-
-// bentley : 2014-12-18 Bentley Motors Limited
-bentley
-
-// berlin : 2013-10-31 dotBERLIN GmbH & Co. KG
-berlin
-
-// best : 2013-12-19 BestTLD Pty Ltd
-best
-
-// bestbuy : 2015-07-31 BBY Solutions, Inc.
-bestbuy
-
-// bet : 2015-05-07 Afilias plc
-bet
-
-// bharti : 2014-01-09 Bharti Enterprises (Holding) Private Limited
-bharti
-
-// bible : 2014-06-19 American Bible Society
-bible
-
-// bid : 2013-12-19 dot Bid Limited
-bid
-
-// bike : 2013-08-27 Grand Hollow, LLC
-bike
-
-// bing : 2014-12-18 Microsoft Corporation
-bing
-
-// bingo : 2014-12-04 Sand Cedar, LLC
-bingo
-
-// bio : 2014-03-06 STARTING DOT LIMITED
-bio
-
-// black : 2014-01-16 Afilias Limited
-black
-
-// blackfriday : 2014-01-16 Uniregistry, Corp.
-blackfriday
-
-// blanco : 2015-07-16 BLANCO GmbH + Co KG
-blanco
-
-// blockbuster : 2015-07-30 Dish DBS Corporation
-blockbuster
-
-// blog : 2015-05-14 PRIMER NIVEL S.A.
-blog
-
-// bloomberg : 2014-07-17 Bloomberg IP Holdings LLC
-bloomberg
-
-// blue : 2013-11-07 Afilias Limited
-blue
-
-// bms : 2014-10-30 Bristol-Myers Squibb Company
-bms
-
-// bmw : 2014-01-09 Bayerische Motoren Werke Aktiengesellschaft
-bmw
-
-// bnl : 2014-07-24 Banca Nazionale del Lavoro
-bnl
-
-// bnpparibas : 2014-05-29 BNP Paribas
-bnpparibas
-
-// boats : 2014-12-04 DERBoats, LLC
-boats
-
-// boehringer : 2015-07-09 Boehringer Ingelheim International GmbH
-boehringer
-
-// bofa : 2015-07-31 NMS Services, Inc.
-bofa
-
-// bom : 2014-10-16 Núcleo de Informação e Coordenação do Ponto BR - NIC.br
-bom
-
-// bond : 2014-06-05 Bond University Limited
-bond
-
-// boo : 2014-01-30 Charleston Road Registry Inc.
-boo
-
-// book : 2015-08-27 Amazon EU S.à r.l.
-book
-
-// booking : 2015-07-16 Booking.com B.V.
-booking
-
-// boots : 2015-01-08 THE BOOTS COMPANY PLC
-boots
-
-// bosch : 2015-06-18 Robert Bosch GMBH
-bosch
-
-// bostik : 2015-05-28 Bostik SA
-bostik
-
-// boston : 2015-12-10 Boston Globe Media Partners, LLC
-boston
-
-// bot : 2014-12-18 Amazon EU S.à r.l.
-bot
-
-// boutique : 2013-11-14 Over Galley, LLC
-boutique
-
-// box : 2015-11-12 NS1 Limited
-box
-
-// bradesco : 2014-12-18 Banco Bradesco S.A.
-bradesco
-
-// bridgestone : 2014-12-18 Bridgestone Corporation
-bridgestone
-
-// broadway : 2014-12-22 Celebrate Broadway, Inc.
-broadway
-
-// broker : 2014-12-11 IG Group Holdings PLC
-broker
-
-// brother : 2015-01-29 Brother Industries, Ltd.
-brother
-
-// brussels : 2014-02-06 DNS.be vzw
-brussels
-
-// budapest : 2013-11-21 Top Level Domain Holdings Limited
-budapest
-
-// bugatti : 2015-07-23 Bugatti International SA
-bugatti
-
-// build : 2013-11-07 Plan Bee LLC
-build
-
-// builders : 2013-11-07 Atomic Madison, LLC
-builders
-
-// business : 2013-11-07 Spring Cross, LLC
-business
-
-// buy : 2014-12-18 Amazon EU S.à r.l.
-buy
-
-// buzz : 2013-10-02 DOTSTRATEGY CO.
-buzz
-
-// bzh : 2014-02-27 Association www.bzh
-bzh
-
-// cab : 2013-10-24 Half Sunset, LLC
-cab
-
-// cafe : 2015-02-11 Pioneer Canyon, LLC
-cafe
-
-// cal : 2014-07-24 Charleston Road Registry Inc.
-cal
-
-// call : 2014-12-18 Amazon EU S.à r.l.
-call
-
-// calvinklein : 2015-07-30 PVH gTLD Holdings LLC
-calvinklein
-
-// camera : 2013-08-27 Atomic Maple, LLC
-camera
-
-// camp : 2013-11-07 Delta Dynamite, LLC
-camp
-
-// cancerresearch : 2014-05-15 Australian Cancer Research Foundation
-cancerresearch
-
-// canon : 2014-09-12 Canon Inc.
-canon
-
-// capetown : 2014-03-24 ZA Central Registry NPC trading as ZA Central Registry
-capetown
-
-// capital : 2014-03-06 Delta Mill, LLC
-capital
-
-// capitalone : 2015-08-06 Capital One Financial Corporation
-capitalone
-
-// car : 2015-01-22
-car
-
-// caravan : 2013-12-12 Caravan International, Inc.
-caravan
-
-// cards : 2013-12-05 Foggy Hollow, LLC
-cards
-
-// care : 2014-03-06 Goose Cross
-care
-
-// career : 2013-10-09 dotCareer LLC
-career
-
-// careers : 2013-10-02 Wild Corner, LLC
-careers
-
-// cars : 2014-11-13
-cars
-
-// cartier : 2014-06-23 Richemont DNS Inc.
-cartier
-
-// casa : 2013-11-21 Top Level Domain Holdings Limited
-casa
-
-// case : 2015-09-03 CNH Industrial N.V.
-case
-
-// caseih : 2015-09-03 CNH Industrial N.V.
-caseih
-
-// cash : 2014-03-06 Delta Lake, LLC
-cash
-
-// casino : 2014-12-18 Binky Sky, LLC
-casino
-
-// catering : 2013-12-05 New Falls. LLC
-catering
-
-// catholic : 2015-10-21 Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication)
-catholic
-
-// cba : 2014-06-26 COMMONWEALTH BANK OF AUSTRALIA
-cba
-
-// cbn : 2014-08-22 The Christian Broadcasting Network, Inc.
-cbn
-
-// cbre : 2015-07-02 CBRE, Inc.
-cbre
-
-// cbs : 2015-08-06 CBS Domains Inc.
-cbs
-
-// ceb : 2015-04-09 The Corporate Executive Board Company
-ceb
-
-// center : 2013-11-07 Tin Mill, LLC
-center
-
-// ceo : 2013-11-07 CEOTLD Pty Ltd
-ceo
-
-// cern : 2014-06-05 European Organization for Nuclear Research ("CERN")
-cern
-
-// cfa : 2014-08-28 CFA Institute
-cfa
-
-// cfd : 2014-12-11 IG Group Holdings PLC
-cfd
-
-// chanel : 2015-04-09 Chanel International B.V.
-chanel
-
-// channel : 2014-05-08 Charleston Road Registry Inc.
-channel
-
-// chase : 2015-04-30 JPMorgan Chase & Co.
-chase
-
-// chat : 2014-12-04 Sand Fields, LLC
-chat
-
-// cheap : 2013-11-14 Sand Cover, LLC
-cheap
-
-// chintai : 2015-06-11 CHINTAI Corporation
-chintai
-
-// chloe : 2014-10-16 Richemont DNS Inc.
-chloe
-
-// christmas : 2013-11-21 Uniregistry, Corp.
-christmas
-
-// chrome : 2014-07-24 Charleston Road Registry Inc.
-chrome
-
-// chrysler : 2015-07-30 FCA US LLC.
-chrysler
-
-// church : 2014-02-06 Holly Fields, LLC
-church
-
-// cipriani : 2015-02-19 Hotel Cipriani Srl
-cipriani
-
-// circle : 2014-12-18 Amazon EU S.à r.l.
-circle
-
-// cisco : 2014-12-22 Cisco Technology, Inc.
-cisco
-
-// citadel : 2015-07-23 Citadel Domain LLC
-citadel
-
-// citi : 2015-07-30 Citigroup Inc.
-citi
-
-// citic : 2014-01-09 CITIC Group Corporation
-citic
-
-// city : 2014-05-29 Snow Sky, LLC
-city
-
-// cityeats : 2014-12-11 Lifestyle Domain Holdings, Inc.
-cityeats
-
-// claims : 2014-03-20 Black Corner, LLC
-claims
-
-// cleaning : 2013-12-05 Fox Shadow, LLC
-cleaning
-
-// click : 2014-06-05 Uniregistry, Corp.
-click
-
-// clinic : 2014-03-20 Goose Park, LLC
-clinic
-
-// clinique : 2015-10-01 The Estée Lauder Companies Inc.
-clinique
-
-// clothing : 2013-08-27 Steel Lake, LLC
-clothing
-
-// cloud : 2015-04-16 ARUBA S.p.A.
-cloud
-
-// club : 2013-11-08 .CLUB DOMAINS, LLC
-club
-
-// clubmed : 2015-06-25 Club Méditerranée S.A.
-clubmed
-
-// coach : 2014-10-09 Koko Island, LLC
-coach
-
-// codes : 2013-10-31 Puff Willow, LLC
-codes
-
-// coffee : 2013-10-17 Trixy Cover, LLC
-coffee
-
-// college : 2014-01-16 XYZ.COM LLC
-college
-
-// cologne : 2014-02-05 NetCologne Gesellschaft für Telekommunikation mbH
-cologne
-
-// comcast : 2015-07-23 Comcast IP Holdings I, LLC
-comcast
-
-// commbank : 2014-06-26 COMMONWEALTH BANK OF AUSTRALIA
-commbank
-
-// community : 2013-12-05 Fox Orchard, LLC
-community
-
-// company : 2013-11-07 Silver Avenue, LLC
-company
-
-// compare : 2015-10-08 iSelect Ltd
-compare
-
-// computer : 2013-10-24 Pine Mill, LLC
-computer
-
-// comsec : 2015-01-08 VeriSign, Inc.
-comsec
-
-// condos : 2013-12-05 Pine House, LLC
-condos
-
-// construction : 2013-09-16 Fox Dynamite, LLC
-construction
-
-// consulting : 2013-12-05
-consulting
-
-// contact : 2015-01-08 Top Level Spectrum, Inc.
-contact
-
-// contractors : 2013-09-10 Magic Woods, LLC
-contractors
-
-// cooking : 2013-11-21 Top Level Domain Holdings Limited
-cooking
-
-// cookingchannel : 2015-07-02 Lifestyle Domain Holdings, Inc.
-cookingchannel
-
-// cool : 2013-11-14 Koko Lake, LLC
-cool
-
-// corsica : 2014-09-25 Collectivité Territoriale de Corse
-corsica
-
-// country : 2013-12-19 Top Level Domain Holdings Limited
-country
-
-// coupon : 2015-02-26 Amazon EU S.à r.l.
-coupon
-
-// coupons : 2015-03-26 Black Island, LLC
-coupons
-
-// courses : 2014-12-04 OPEN UNIVERSITIES AUSTRALIA PTY LTD
-courses
-
-// credit : 2014-03-20 Snow Shadow, LLC
-credit
-
-// creditcard : 2014-03-20 Binky Frostbite, LLC
-creditcard
-
-// creditunion : 2015-01-22 CUNA Performance Resources, LLC
-creditunion
-
-// cricket : 2014-10-09 dot Cricket Limited
-cricket
-
-// crown : 2014-10-24 Crown Equipment Corporation
-crown
-
-// crs : 2014-04-03 Federated Co-operatives Limited
-crs
-
-// cruise : 2015-12-10 Viking River Cruises (Bermuda) Ltd.
-cruise
-
-// cruises : 2013-12-05 Spring Way, LLC
-cruises
-
-// csc : 2014-09-25 Alliance-One Services, Inc.
-csc
-
-// cuisinella : 2014-04-03 SALM S.A.S.
-cuisinella
-
-// cymru : 2014-05-08 Nominet UK
-cymru
-
-// cyou : 2015-01-22 Beijing Gamease Age Digital Technology Co., Ltd.
-cyou
-
-// dabur : 2014-02-06 Dabur India Limited
-dabur
-
-// dad : 2014-01-23 Charleston Road Registry Inc.
-dad
-
-// dance : 2013-10-24 United TLD Holdco Ltd.
-dance
-
-// date : 2014-11-20 dot Date Limited
-date
-
-// dating : 2013-12-05 Pine Fest, LLC
-dating
-
-// datsun : 2014-03-27 NISSAN MOTOR CO., LTD.
-datsun
-
-// day : 2014-01-30 Charleston Road Registry Inc.
-day
-
-// dclk : 2014-11-20 Charleston Road Registry Inc.
-dclk
-
-// dds : 2015-05-07 Top Level Domain Holdings Limited
-dds
-
-// deal : 2015-06-25 Amazon EU S.à r.l.
-deal
-
-// dealer : 2014-12-22 Dealer Dot Com, Inc.
-dealer
-
-// deals : 2014-05-22 Sand Sunset, LLC
-deals
-
-// degree : 2014-03-06
-degree
-
-// delivery : 2014-09-11 Steel Station, LLC
-delivery
-
-// dell : 2014-10-24 Dell Inc.
-dell
-
-// deloitte : 2015-07-31 Deloitte Touche Tohmatsu
-deloitte
-
-// delta : 2015-02-19 Delta Air Lines, Inc.
-delta
-
-// democrat : 2013-10-24 United TLD Holdco Ltd.
-democrat
-
-// dental : 2014-03-20 Tin Birch, LLC
-dental
-
-// dentist : 2014-03-20
-dentist
-
-// desi : 2013-11-14 Desi Networks LLC
-desi
-
-// design : 2014-11-07 Top Level Design, LLC
-design
-
-// dev : 2014-10-16 Charleston Road Registry Inc.
-dev
-
-// dhl : 2015-07-23 Deutsche Post AG
-dhl
-
-// diamonds : 2013-09-22 John Edge, LLC
-diamonds
-
-// diet : 2014-06-26 Uniregistry, Corp.
-diet
-
-// digital : 2014-03-06 Dash Park, LLC
-digital
-
-// direct : 2014-04-10 Half Trail, LLC
-direct
-
-// directory : 2013-09-20 Extra Madison, LLC
-directory
-
-// discount : 2014-03-06 Holly Hill, LLC
-discount
-
-// discover : 2015-07-23 Discover Financial Services
-discover
-
-// dish : 2015-07-30 Dish DBS Corporation
-dish
-
-// diy : 2015-11-05 Lifestyle Domain Holdings, Inc.
-diy
-
-// dnp : 2013-12-13 Dai Nippon Printing Co., Ltd.
-dnp
-
-// docs : 2014-10-16 Charleston Road Registry Inc.
-docs
-
-// dodge : 2015-07-30 FCA US LLC.
-dodge
-
-// dog : 2014-12-04 Koko Mill, LLC
-dog
-
-// doha : 2014-09-18 Communications Regulatory Authority (CRA)
-doha
-
-// domains : 2013-10-17 Sugar Cross, LLC
-domains
-
-// dot : 2015-05-21 Dish DBS Corporation
-dot
-
-// download : 2014-11-20 dot Support Limited
-download
-
-// drive : 2015-03-05 Charleston Road Registry Inc.
-drive
-
-// dstv : 2015-03-12 MultiChoice (Proprietary) Limited
-dstv
-
-// dtv : 2015-06-04 Dish DBS Corporation
-dtv
-
-// dubai : 2015-01-01 Dubai Smart Government Department
-dubai
-
-// duck : 2015-07-23 Johnson Shareholdings, Inc.
-duck
-
-// dunlop : 2015-07-02 The Goodyear Tire & Rubber Company
-dunlop
-
-// duns : 2015-08-06 The Dun & Bradstreet Corporation
-duns
-
-// dupont : 2015-06-25 E.I. du Pont de Nemours and Company
-dupont
-
-// durban : 2014-03-24 ZA Central Registry NPC trading as ZA Central Registry
-durban
-
-// dvag : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG
-dvag
-
-// dwg : 2015-07-23 Autodesk, Inc.
-dwg
-
-// earth : 2014-12-04 Interlink Co., Ltd.
-earth
-
-// eat : 2014-01-23 Charleston Road Registry Inc.
-eat
-
-// edeka : 2014-12-18 EDEKA Verband kaufmännischer Genossenschaften e.V.
-edeka
-
-// education : 2013-11-07 Brice Way, LLC
-education
-
-// email : 2013-10-31 Spring Madison, LLC
-email
-
-// emerck : 2014-04-03 Merck KGaA
-emerck
-
-// emerson : 2015-07-23 Emerson Electric Co.
-emerson
-
-// energy : 2014-09-11 Binky Birch, LLC
-energy
-
-// engineer : 2014-03-06 United TLD Holdco Ltd.
-engineer
-
-// engineering : 2014-03-06 Romeo Canyon
-engineering
-
-// enterprises : 2013-09-20 Snow Oaks, LLC
-enterprises
-
-// epost : 2015-07-23 Deutsche Post AG
-epost
-
-// epson : 2014-12-04 Seiko Epson Corporation
-epson
-
-// equipment : 2013-08-27 Corn Station, LLC
-equipment
-
-// ericsson : 2015-07-09 Telefonaktiebolaget L M Ericsson
-ericsson
-
-// erni : 2014-04-03 ERNI Group Holding AG
-erni
-
-// esq : 2014-05-08 Charleston Road Registry Inc.
-esq
-
-// estate : 2013-08-27 Trixy Park, LLC
-estate
-
-// esurance : 2015-07-23 Esurance Insurance Company
-esurance
-
-// etisalat : 2015-09-03 Emirates Telecommunications Corporation (trading as Etisalat)
-etisalat
-
-// eurovision : 2014-04-24 European Broadcasting Union (EBU)
-eurovision
-
-// eus : 2013-12-12 Puntueus Fundazioa
-eus
-
-// events : 2013-12-05 Pioneer Maple, LLC
-events
-
-// everbank : 2014-05-15 EverBank
-everbank
-
-// exchange : 2014-03-06 Spring Falls, LLC
-exchange
-
-// expert : 2013-11-21 Magic Pass, LLC
-expert
-
-// exposed : 2013-12-05 Victor Beach, LLC
-exposed
-
-// express : 2015-02-11 Sea Sunset, LLC
-express
-
-// extraspace : 2015-05-14 Extra Space Storage LLC
-extraspace
-
-// fage : 2014-12-18 Fage International S.A.
-fage
-
-// fail : 2014-03-06 Atomic Pipe, LLC
-fail
-
-// fairwinds : 2014-11-13 FairWinds Partners, LLC
-fairwinds
-
-// faith : 2014-11-20 dot Faith Limited
-faith
-
-// family : 2015-04-02
-family
-
-// fan : 2014-03-06
-fan
-
-// fans : 2014-11-07 Asiamix Digital Limited
-fans
-
-// farm : 2013-11-07 Just Maple, LLC
-farm
-
-// farmers : 2015-07-09 Farmers Insurance Exchange
-farmers
-
-// fashion : 2014-07-03 Top Level Domain Holdings Limited
-fashion
-
-// fast : 2014-12-18 Amazon EU S.à r.l.
-fast
-
-// fedex : 2015-08-06 Federal Express Corporation
-fedex
-
-// feedback : 2013-12-19 Top Level Spectrum, Inc.
-feedback
-
-// ferrari : 2015-07-31 Fiat Chrysler Automobiles N.V.
-ferrari
-
-// ferrero : 2014-12-18 Ferrero Trading Lux S.A.
-ferrero
-
-// fiat : 2015-07-31 Fiat Chrysler Automobiles N.V.
-fiat
-
-// fidelity : 2015-07-30 Fidelity Brokerage Services LLC
-fidelity
-
-// fido : 2015-08-06 Rogers Communications Partnership
-fido
-
-// film : 2015-01-08 Motion Picture Domain Registry Pty Ltd
-film
-
-// final : 2014-10-16 Núcleo de Informação e Coordenação do Ponto BR - NIC.br
-final
-
-// finance : 2014-03-20 Cotton Cypress, LLC
-finance
-
-// financial : 2014-03-06 Just Cover, LLC
-financial
-
-// fire : 2015-06-25 Amazon EU S.à r.l.
-fire
-
-// firestone : 2014-12-18 Bridgestone Corporation
-firestone
-
-// firmdale : 2014-03-27 Firmdale Holdings Limited
-firmdale
-
-// fish : 2013-12-12 Fox Woods, LLC
-fish
-
-// fishing : 2013-11-21 Top Level Domain Holdings Limited
-fishing
-
-// fit : 2014-11-07 Top Level Domain Holdings Limited
-fit
-
-// fitness : 2014-03-06 Brice Orchard, LLC
-fitness
-
-// flickr : 2015-04-02 Yahoo! Domain Services Inc.
-flickr
-
-// flights : 2013-12-05 Fox Station, LLC
-flights
-
-// flir : 2015-07-23 FLIR Systems, Inc.
-flir
-
-// florist : 2013-11-07 Half Cypress, LLC
-florist
-
-// flowers : 2014-10-09 Uniregistry, Corp.
-flowers
-
-// flsmidth : 2014-07-24 FLSmidth A/S
-flsmidth
-
-// fly : 2014-05-08 Charleston Road Registry Inc.
-fly
-
-// foo : 2014-01-23 Charleston Road Registry Inc.
-foo
-
-// foodnetwork : 2015-07-02 Lifestyle Domain Holdings, Inc.
-foodnetwork
-
-// football : 2014-12-18 Foggy Farms, LLC
-football
-
-// ford : 2014-11-13 Ford Motor Company
-ford
-
-// forex : 2014-12-11 IG Group Holdings PLC
-forex
-
-// forsale : 2014-05-22
-forsale
-
-// forum : 2015-04-02 Fegistry, LLC
-forum
-
-// foundation : 2013-12-05 John Dale, LLC
-foundation
-
-// fox : 2015-09-11 FOX Registry, LLC
-fox
-
-// free : 2015-12-10 Amazon EU S.à r.l.
-free
-
-// fresenius : 2015-07-30 Fresenius Immobilien-Verwaltungs-GmbH
-fresenius
-
-// frl : 2014-05-15 FRLregistry B.V.
-frl
-
-// frogans : 2013-12-19 OP3FT
-frogans
-
-// frontdoor : 2015-07-02 Lifestyle Domain Holdings, Inc.
-frontdoor
-
-// frontier : 2015-02-05 Frontier Communications Corporation
-frontier
-
-// ftr : 2015-07-16 Frontier Communications Corporation
-ftr
-
-// fujitsu : 2015-07-30 Fujitsu Limited
-fujitsu
-
-// fujixerox : 2015-07-23 Xerox DNHC LLC
-fujixerox
-
-// fun : 2016-01-14 Oriental Trading Company, Inc.
-fun
-
-// fund : 2014-03-20 John Castle, LLC
-fund
-
-// furniture : 2014-03-20 Lone Fields, LLC
-furniture
-
-// futbol : 2013-09-20
-futbol
-
-// fyi : 2015-04-02 Silver Tigers, LLC
-fyi
-
-// gal : 2013-11-07 Asociación puntoGAL
-gal
-
-// gallery : 2013-09-13 Sugar House, LLC
-gallery
-
-// gallo : 2015-06-11 Gallo Vineyards, Inc.
-gallo
-
-// gallup : 2015-02-19 Gallup, Inc.
-gallup
-
-// game : 2015-05-28 Uniregistry, Corp.
-game
-
-// games : 2015-05-28 Foggy Beach, LLC
-games
-
-// gap : 2015-07-31 The Gap, Inc.
-gap
-
-// garden : 2014-06-26 Top Level Domain Holdings Limited
-garden
-
-// gbiz : 2014-07-17 Charleston Road Registry Inc.
-gbiz
-
-// gdn : 2014-07-31 Joint Stock Company "Navigation-information systems"
-gdn
-
-// gea : 2014-12-04 GEA Group Aktiengesellschaft
-gea
-
-// gent : 2014-01-23 COMBELL GROUP NV/SA
-gent
-
-// genting : 2015-03-12 Resorts World Inc Pte. Ltd.
-genting
-
-// george : 2015-07-31 Wal-Mart Stores, Inc.
-george
-
-// ggee : 2014-01-09 GMO Internet, Inc.
-ggee
-
-// gift : 2013-10-17 Uniregistry, Corp.
-gift
-
-// gifts : 2014-07-03 Goose Sky, LLC
-gifts
-
-// gives : 2014-03-06 United TLD Holdco Ltd.
-gives
-
-// giving : 2014-11-13 Giving Limited
-giving
-
-// glade : 2015-07-23 Johnson Shareholdings, Inc.
-glade
-
-// glass : 2013-11-07 Black Cover, LLC
-glass
-
-// gle : 2014-07-24 Charleston Road Registry Inc.
-gle
-
-// global : 2014-04-17 Dot GLOBAL AS
-global
-
-// globo : 2013-12-19 Globo Comunicação e Participações S.A
-globo
-
-// gmail : 2014-05-01 Charleston Road Registry Inc.
-gmail
-
-// gmbh : 2016-01-29 Extra Dynamite, LLC
-gmbh
-
-// gmo : 2014-01-09 GMO Internet, Inc.
-gmo
-
-// gmx : 2014-04-24 1&1 Mail & Media GmbH
-gmx
-
-// godaddy : 2015-07-23 Go Daddy East, LLC
-godaddy
-
-// gold : 2015-01-22 June Edge, LLC
-gold
-
-// goldpoint : 2014-11-20 YODOBASHI CAMERA CO.,LTD.
-goldpoint
-
-// golf : 2014-12-18 Lone falls, LLC
-golf
-
-// goo : 2014-12-18 NTT Resonant Inc.
-goo
-
-// goodhands : 2015-07-31 Allstate Fire and Casualty Insurance Company
-goodhands
-
-// goodyear : 2015-07-02 The Goodyear Tire & Rubber Company
-goodyear
-
-// goog : 2014-11-20 Charleston Road Registry Inc.
-goog
-
-// google : 2014-07-24 Charleston Road Registry Inc.
-google
-
-// gop : 2014-01-16 Republican State Leadership Committee, Inc.
-gop
-
-// got : 2014-12-18 Amazon EU S.à r.l.
-got
-
-// gotv : 2015-03-12 MultiChoice (Proprietary) Limited
-gotv
-
-// grainger : 2015-05-07 Grainger Registry Services, LLC
-grainger
-
-// graphics : 2013-09-13 Over Madison, LLC
-graphics
-
-// gratis : 2014-03-20 Pioneer Tigers, LLC
-gratis
-
-// green : 2014-05-08 Afilias Limited
-green
-
-// gripe : 2014-03-06 Corn Sunset, LLC
-gripe
-
-// group : 2014-08-15 Romeo Town, LLC
-group
-
-// guardian : 2015-07-30 The Guardian Life Insurance Company of America
-guardian
-
-// gucci : 2014-11-13 Guccio Gucci S.p.a.
-gucci
-
-// guge : 2014-08-28 Charleston Road Registry Inc.
-guge
-
-// guide : 2013-09-13 Snow Moon, LLC
-guide
-
-// guitars : 2013-11-14 Uniregistry, Corp.
-guitars
-
-// guru : 2013-08-27 Pioneer Cypress, LLC
-guru
-
-// hair : 2015-12-03 L'Oréal
-hair
-
-// hamburg : 2014-02-20 Hamburg Top-Level-Domain GmbH
-hamburg
-
-// hangout : 2014-11-13 Charleston Road Registry Inc.
-hangout
-
-// haus : 2013-12-05
-haus
-
-// hbo : 2015-07-30 HBO Registry Services, Inc.
-hbo
-
-// hdfc : 2015-07-30 HOUSING DEVELOPMENT FINANCE CORPORATION LIMITED
-hdfc
-
-// hdfcbank : 2015-02-12 HDFC Bank Limited
-hdfcbank
-
-// health : 2015-02-11 DotHealth, LLC
-health
-
-// healthcare : 2014-06-12 Silver Glen, LLC
-healthcare
-
-// help : 2014-06-26 Uniregistry, Corp.
-help
-
-// helsinki : 2015-02-05 City of Helsinki
-helsinki
-
-// here : 2014-02-06 Charleston Road Registry Inc.
-here
-
-// hermes : 2014-07-10 HERMES INTERNATIONAL
-hermes
-
-// hgtv : 2015-07-02 Lifestyle Domain Holdings, Inc.
-hgtv
-
-// hiphop : 2014-03-06 Uniregistry, Corp.
-hiphop
-
-// hisamitsu : 2015-07-16 Hisamitsu Pharmaceutical Co.,Inc.
-hisamitsu
-
-// hitachi : 2014-10-31 Hitachi, Ltd.
-hitachi
-
-// hiv : 2014-03-13
-hiv
-
-// hkt : 2015-05-14 PCCW-HKT DataCom Services Limited
-hkt
-
-// hockey : 2015-03-19 Half Willow, LLC
-hockey
-
-// holdings : 2013-08-27 John Madison, LLC
-holdings
-
-// holiday : 2013-11-07 Goose Woods, LLC
-holiday
-
-// homedepot : 2015-04-02 Homer TLC, Inc.
-homedepot
-
-// homegoods : 2015-07-16 The TJX Companies, Inc.
-homegoods
-
-// homes : 2014-01-09 DERHomes, LLC
-homes
-
-// homesense : 2015-07-16 The TJX Companies, Inc.
-homesense
-
-// honda : 2014-12-18 Honda Motor Co., Ltd.
-honda
-
-// honeywell : 2015-07-23 Honeywell GTLD LLC
-honeywell
-
-// horse : 2013-11-21 Top Level Domain Holdings Limited
-horse
-
-// host : 2014-04-17 DotHost Inc.
-host
-
-// hosting : 2014-05-29 Uniregistry, Corp.
-hosting
-
-// hot : 2015-08-27 Amazon EU S.à r.l.
-hot
-
-// hoteles : 2015-03-05 Travel Reservations SRL
-hoteles
-
-// hotmail : 2014-12-18 Microsoft Corporation
-hotmail
-
-// house : 2013-11-07 Sugar Park, LLC
-house
-
-// how : 2014-01-23 Charleston Road Registry Inc.
-how
-
-// hsbc : 2014-10-24 HSBC Holdings PLC
-hsbc
-
-// htc : 2015-04-02 HTC corporation
-htc
-
-// hughes : 2015-07-30 Hughes Satellite Systems Corporation
-hughes
-
-// hyatt : 2015-07-30 Hyatt GTLD, L.L.C.
-hyatt
-
-// hyundai : 2015-07-09 Hyundai Motor Company
-hyundai
-
-// ibm : 2014-07-31 International Business Machines Corporation
-ibm
-
-// icbc : 2015-02-19 Industrial and Commercial Bank of China Limited
-icbc
-
-// ice : 2014-10-30 IntercontinentalExchange, Inc.
-ice
-
-// icu : 2015-01-08 One.com A/S
-icu
-
-// ieee : 2015-07-23 IEEE Global LLC
-ieee
-
-// ifm : 2014-01-30 ifm electronic gmbh
-ifm
-
-// iinet : 2014-07-03 Connect West Pty. Ltd.
-iinet
-
-// ikano : 2015-07-09 Ikano S.A.
-ikano
-
-// imamat : 2015-08-06 Fondation Aga Khan (Aga Khan Foundation)
-imamat
-
-// imdb : 2015-06-25 Amazon EU S.à r.l.
-imdb
-
-// immo : 2014-07-10 Auburn Bloom, LLC
-immo
-
-// immobilien : 2013-11-07 United TLD Holdco Ltd.
-immobilien
-
-// industries : 2013-12-05 Outer House, LLC
-industries
-
-// infiniti : 2014-03-27 NISSAN MOTOR CO., LTD.
-infiniti
-
-// ing : 2014-01-23 Charleston Road Registry Inc.
-ing
-
-// ink : 2013-12-05 Top Level Design, LLC
-ink
-
-// institute : 2013-11-07 Outer Maple, LLC
-institute
-
-// insurance : 2015-02-19 fTLD Registry Services LLC
-insurance
-
-// insure : 2014-03-20 Pioneer Willow, LLC
-insure
-
-// intel : 2015-08-06 Intel Corporation
-intel
-
-// international : 2013-11-07 Wild Way, LLC
-international
-
-// intuit : 2015-07-30 Intuit Administrative Services, Inc.
-intuit
-
-// investments : 2014-03-20 Holly Glen, LLC
-investments
-
-// ipiranga : 2014-08-28 Ipiranga Produtos de Petroleo S.A.
-ipiranga
-
-// irish : 2014-08-07 Dot-Irish LLC
-irish
-
-// iselect : 2015-02-11 iSelect Ltd
-iselect
-
-// ismaili : 2015-08-06 Fondation Aga Khan (Aga Khan Foundation)
-ismaili
-
-// ist : 2014-08-28 Istanbul Metropolitan Municipality
-ist
-
-// istanbul : 2014-08-28 Istanbul Metropolitan Municipality
-istanbul
-
-// itau : 2014-10-02 Itau Unibanco Holding S.A.
-itau
-
-// itv : 2015-07-09 ITV Services Limited
-itv
-
-// iveco : 2015-09-03 CNH Industrial N.V.
-iveco
-
-// iwc : 2014-06-23 Richemont DNS Inc.
-iwc
-
-// jaguar : 2014-11-13 Jaguar Land Rover Ltd
-jaguar
-
-// java : 2014-06-19 Oracle Corporation
-java
-
-// jcb : 2014-11-20 JCB Co., Ltd.
-jcb
-
-// jcp : 2015-04-23 JCP Media, Inc.
-jcp
-
-// jeep : 2015-07-30 FCA US LLC.
-jeep
-
-// jetzt : 2014-01-09 New TLD Company AB
-jetzt
-
-// jewelry : 2015-03-05 Wild Bloom, LLC
-jewelry
-
-// jio : 2015-04-02 Affinity Names, Inc.
-jio
-
-// jlc : 2014-12-04 Richemont DNS Inc.
-jlc
-
-// jll : 2015-04-02 Jones Lang LaSalle Incorporated
-jll
-
-// jmp : 2015-03-26 Matrix IP LLC
-jmp
-
-// jnj : 2015-06-18 Johnson & Johnson Services, Inc.
-jnj
-
-// joburg : 2014-03-24 ZA Central Registry NPC trading as ZA Central Registry
-joburg
-
-// jot : 2014-12-18 Amazon EU S.à r.l.
-jot
-
-// joy : 2014-12-18 Amazon EU S.à r.l.
-joy
-
-// jpmorgan : 2015-04-30 JPMorgan Chase & Co.
-jpmorgan
-
-// jprs : 2014-09-18 Japan Registry Services Co., Ltd.
-jprs
-
-// juegos : 2014-03-20 Uniregistry, Corp.
-juegos
-
-// juniper : 2015-07-30 JUNIPER NETWORKS, INC.
-juniper
-
-// kaufen : 2013-11-07 United TLD Holdco Ltd.
-kaufen
-
-// kddi : 2014-09-12 KDDI CORPORATION
-kddi
-
-// kerryhotels : 2015-04-30 Kerry Trading Co. Limited
-kerryhotels
-
-// kerrylogistics : 2015-04-09 Kerry Trading Co. Limited
-kerrylogistics
-
-// kerryproperties : 2015-04-09 Kerry Trading Co. Limited
-kerryproperties
-
-// kfh : 2014-12-04 Kuwait Finance House
-kfh
-
-// kia : 2015-07-09 KIA MOTORS CORPORATION
-kia
-
-// kim : 2013-09-23 Afilias Limited
-kim
-
-// kinder : 2014-11-07 Ferrero Trading Lux S.A.
-kinder
-
-// kindle : 2015-06-25 Amazon EU S.à r.l.
-kindle
-
-// kitchen : 2013-09-20 Just Goodbye, LLC
-kitchen
-
-// kiwi : 2013-09-20 DOT KIWI LIMITED
-kiwi
-
-// koeln : 2014-01-09 NetCologne Gesellschaft für Telekommunikation mbH
-koeln
-
-// komatsu : 2015-01-08 Komatsu Ltd.
-komatsu
-
-// kosher : 2015-08-20 Kosher Marketing Assets LLC
-kosher
-
-// kpmg : 2015-04-23 KPMG International Cooperative (KPMG International Genossenschaft)
-kpmg
-
-// kpn : 2015-01-08 Koninklijke KPN N.V.
-kpn
-
-// krd : 2013-12-05 KRG Department of Information Technology
-krd
-
-// kred : 2013-12-19 KredTLD Pty Ltd
-kred
-
-// kuokgroup : 2015-04-09 Kerry Trading Co. Limited
-kuokgroup
-
-// kyknet : 2015-03-05 Electronic Media Network (Pty) Ltd
-kyknet
-
-// kyoto : 2014-11-07 Academic Institution: Kyoto Jyoho Gakuen
-kyoto
-
-// lacaixa : 2014-01-09 CAIXA D'ESTALVIS I PENSIONS DE BARCELONA
-lacaixa
-
-// ladbrokes : 2015-08-06 LADBROKES INTERNATIONAL PLC
-ladbrokes
-
-// lamborghini : 2015-06-04 Automobili Lamborghini S.p.A.
-lamborghini
-
-// lamer : 2015-10-01 The Estée Lauder Companies Inc.
-lamer
-
-// lancaster : 2015-02-12 LANCASTER
-lancaster
-
-// lancia : 2015-07-31 Fiat Chrysler Automobiles N.V.
-lancia
-
-// lancome : 2015-07-23 L'Oréal
-lancome
-
-// land : 2013-09-10 Pine Moon, LLC
-land
-
-// landrover : 2014-11-13 Jaguar Land Rover Ltd
-landrover
-
-// lanxess : 2015-07-30 LANXESS Corporation
-lanxess
-
-// lasalle : 2015-04-02 Jones Lang LaSalle Incorporated
-lasalle
-
-// lat : 2014-10-16 ECOM-LAC Federaciòn de Latinoamèrica y el Caribe para Internet y el Comercio Electrònico
-lat
-
-// latino : 2015-07-30 Dish DBS Corporation
-latino
-
-// latrobe : 2014-06-16 La Trobe University
-latrobe
-
-// law : 2015-01-22 Minds + Machines Group Limited
-law
-
-// lawyer : 2014-03-20
-lawyer
-
-// lds : 2014-03-20 IRI Domain Management, LLC ("Applicant")
-lds
-
-// lease : 2014-03-06 Victor Trail, LLC
-lease
-
-// leclerc : 2014-08-07 A.C.D. LEC Association des Centres Distributeurs Edouard Leclerc
-leclerc
-
-// lefrak : 2015-07-16 LeFrak Organization, Inc.
-lefrak
-
-// legal : 2014-10-16 Blue Falls, LLC
-legal
-
-// lego : 2015-07-16 LEGO Juris A/S
-lego
-
-// lexus : 2015-04-23 TOYOTA MOTOR CORPORATION
-lexus
-
-// lgbt : 2014-05-08 Afilias Limited
-lgbt
-
-// liaison : 2014-10-02 Liaison Technologies, Incorporated
-liaison
-
-// lidl : 2014-09-18 Schwarz Domains und Services GmbH & Co. KG
-lidl
-
-// life : 2014-02-06 Trixy Oaks, LLC
-life
-
-// lifeinsurance : 2015-01-15 American Council of Life Insurers
-lifeinsurance
-
-// lifestyle : 2014-12-11 Lifestyle Domain Holdings, Inc.
-lifestyle
-
-// lighting : 2013-08-27 John McCook, LLC
-lighting
-
-// like : 2014-12-18 Amazon EU S.à r.l.
-like
-
-// lilly : 2015-07-31 Eli Lilly and Company
-lilly
-
-// limited : 2014-03-06 Big Fest, LLC
-limited
-
-// limo : 2013-10-17 Hidden Frostbite, LLC
-limo
-
-// lincoln : 2014-11-13 Ford Motor Company
-lincoln
-
-// linde : 2014-12-04 Linde Aktiengesellschaft
-linde
-
-// link : 2013-11-14 Uniregistry, Corp.
-link
-
-// lipsy : 2015-06-25 Lipsy Ltd
-lipsy
-
-// live : 2014-12-04
-live
-
-// living : 2015-07-30 Lifestyle Domain Holdings, Inc.
-living
-
-// lixil : 2015-03-19 LIXIL Group Corporation
-lixil
-
-// loan : 2014-11-20 dot Loan Limited
-loan
-
-// loans : 2014-03-20 June Woods, LLC
-loans
-
-// locker : 2015-06-04 Dish DBS Corporation
-locker
-
-// locus : 2015-06-25 Locus Analytics LLC
-locus
-
-// loft : 2015-07-30 Annco, Inc.
-loft
-
-// lol : 2015-01-30 Uniregistry, Corp.
-lol
-
-// london : 2013-11-14 Dot London Domains Limited
-london
-
-// lotte : 2014-11-07 Lotte Holdings Co., Ltd.
-lotte
-
-// lotto : 2014-04-10 Afilias Limited
-lotto
-
-// love : 2014-12-22 Merchant Law Group LLP
-love
-
-// lpl : 2015-07-30 LPL Holdings, Inc.
-lpl
-
-// lplfinancial : 2015-07-30 LPL Holdings, Inc.
-lplfinancial
-
-// ltd : 2014-09-25 Over Corner, LLC
-ltd
-
-// ltda : 2014-04-17 DOMAIN ROBOT SERVICOS DE HOSPEDAGEM NA INTERNET LTDA
-ltda
-
-// lundbeck : 2015-08-06 H. Lundbeck A/S
-lundbeck
-
-// lupin : 2014-11-07 LUPIN LIMITED
-lupin
-
-// luxe : 2014-01-09 Top Level Domain Holdings Limited
-luxe
-
-// luxury : 2013-10-17 Luxury Partners, LLC
-luxury
-
-// macys : 2015-07-31 Macys, Inc.
-macys
-
-// madrid : 2014-05-01 Comunidad de Madrid
-madrid
-
-// maif : 2014-10-02 Mutuelle Assurance Instituteur France (MAIF)
-maif
-
-// maison : 2013-12-05 Victor Frostbite, LLC
-maison
-
-// makeup : 2015-01-15 L'Oréal
-makeup
-
-// man : 2014-12-04 MAN SE
-man
-
-// management : 2013-11-07 John Goodbye, LLC
-management
-
-// mango : 2013-10-24 PUNTO FA S.L.
-mango
-
-// market : 2014-03-06
-market
-
-// marketing : 2013-11-07 Fern Pass, LLC
-marketing
-
-// markets : 2014-12-11 IG Group Holdings PLC
-markets
-
-// marriott : 2014-10-09 Marriott Worldwide Corporation
-marriott
-
-// marshalls : 2015-07-16 The TJX Companies, Inc.
-marshalls
-
-// maserati : 2015-07-31 Fiat Chrysler Automobiles N.V.
-maserati
-
-// mattel : 2015-08-06 Mattel Sites, Inc.
-mattel
-
-// mba : 2015-04-02 Lone Hollow, LLC
-mba
-
-// mcd : 2015-07-30 McDonald’s Corporation
-mcd
-
-// mcdonalds : 2015-07-30 McDonald’s Corporation
-mcdonalds
-
-// mckinsey : 2015-07-31 McKinsey Holdings, Inc.
-mckinsey
-
-// med : 2015-08-06 Medistry LLC
-med
-
-// media : 2014-03-06 Grand Glen, LLC
-media
-
-// meet : 2014-01-16
-meet
-
-// melbourne : 2014-05-29 The Crown in right of the State of Victoria, represented by its Department of State Development, Business and Innovation
-melbourne
-
-// meme : 2014-01-30 Charleston Road Registry Inc.
-meme
-
-// memorial : 2014-10-16 Dog Beach, LLC
-memorial
-
-// men : 2015-02-26 Exclusive Registry Limited
-men
-
-// menu : 2013-09-11 Wedding TLD2, LLC
-menu
-
-// meo : 2014-11-07 PT Comunicacoes S.A.
-meo
-
-// metlife : 2015-05-07 MetLife Services and Solutions, LLC
-metlife
-
-// miami : 2013-12-19 Top Level Domain Holdings Limited
-miami
-
-// microsoft : 2014-12-18 Microsoft Corporation
-microsoft
-
-// mini : 2014-01-09 Bayerische Motoren Werke Aktiengesellschaft
-mini
-
-// mint : 2015-07-30 Intuit Administrative Services, Inc.
-mint
-
-// mit : 2015-07-02 Massachusetts Institute of Technology
-mit
-
-// mitsubishi : 2015-07-23 Mitsubishi Corporation
-mitsubishi
-
-// mlb : 2015-05-21 MLB Advanced Media DH, LLC
-mlb
-
-// mls : 2015-04-23 The Canadian Real Estate Association
-mls
-
-// mma : 2014-11-07 MMA IARD
-mma
-
-// mnet : 2015-03-05 Electronic Media Network (Pty) Ltd
-mnet
-
-// mobily : 2014-12-18 GreenTech Consultancy Company W.L.L.
-mobily
-
-// moda : 2013-11-07 United TLD Holdco Ltd.
-moda
-
-// moe : 2013-11-13 Interlink Co., Ltd.
-moe
-
-// moi : 2014-12-18 Amazon EU S.à r.l.
-moi
-
-// mom : 2015-04-16 Uniregistry, Corp.
-mom
-
-// monash : 2013-09-30 Monash University
-monash
-
-// money : 2014-10-16 Outer McCook, LLC
-money
-
-// monster : 2015-09-11 Monster Worldwide, Inc.
-monster
-
-// montblanc : 2014-06-23 Richemont DNS Inc.
-montblanc
-
-// mopar : 2015-07-30 FCA US LLC.
-mopar
-
-// mormon : 2013-12-05 IRI Domain Management, LLC ("Applicant")
-mormon
-
-// mortgage : 2014-03-20
-mortgage
-
-// moscow : 2013-12-19 Foundation for Assistance for Internet Technologies and Infrastructure Development (FAITID)
-moscow
-
-// moto : 2015-06-04 Charleston Road Registry Inc.
-moto
-
-// motorcycles : 2014-01-09 DERMotorcycles, LLC
-motorcycles
-
-// mov : 2014-01-30 Charleston Road Registry Inc.
-mov
-
-// movie : 2015-02-05 New Frostbite, LLC
-movie
-
-// movistar : 2014-10-16 Telefónica S.A.
-movistar
-
-// msd : 2015-07-23 MSD Registry Holdings, Inc.
-msd
-
-// mtn : 2014-12-04 MTN Dubai Limited
-mtn
-
-// mtpc : 2014-11-20 Mitsubishi Tanabe Pharma Corporation
-mtpc
-
-// mtr : 2015-03-12 MTR Corporation Limited
-mtr
-
-// multichoice : 2015-03-12 MultiChoice (Proprietary) Limited
-multichoice
-
-// mutual : 2015-04-02 Northwestern Mutual MU TLD Registry, LLC
-mutual
-
-// mutuelle : 2015-06-18 Fédération Nationale de la Mutualité Française
-mutuelle
-
-// mzansimagic : 2015-03-05 Electronic Media Network (Pty) Ltd
-mzansimagic
-
-// nab : 2015-08-20 National Australia Bank Limited
-nab
-
-// nadex : 2014-12-11 IG Group Holdings PLC
-nadex
-
-// nagoya : 2013-10-24 GMO Registry, Inc.
-nagoya
-
-// naspers : 2015-02-12 Intelprop (Proprietary) Limited
-naspers
-
-// nationwide : 2015-07-23 Nationwide Mutual Insurance Company
-nationwide
-
-// natura : 2015-03-12 NATURA COSMÉTICOS S.A.
-natura
-
-// navy : 2014-03-06 United TLD Holdco Ltd.
-navy
-
-// nba : 2015-07-31 NBA REGISTRY, LLC
-nba
-
-// nec : 2015-01-08 NEC Corporation
-nec
-
-// netbank : 2014-06-26 COMMONWEALTH BANK OF AUSTRALIA
-netbank
-
-// netflix : 2015-06-18 Netflix, Inc.
-netflix
-
-// network : 2013-11-14 Trixy Manor, LLC
-network
-
-// neustar : 2013-12-05 NeuStar, Inc.
-neustar
-
-// new : 2014-01-30 Charleston Road Registry Inc.
-new
-
-// newholland : 2015-09-03 CNH Industrial N.V.
-newholland
-
-// news : 2014-12-18
-news
-
-// next : 2015-06-18 Next plc
-next
-
-// nextdirect : 2015-06-18 Next plc
-nextdirect
-
-// nexus : 2014-07-24 Charleston Road Registry Inc.
-nexus
-
-// nfl : 2015-07-23 NFL Reg Ops LLC
-nfl
-
-// ngo : 2014-03-06 Public Interest Registry
-ngo
-
-// nhk : 2014-02-13 Japan Broadcasting Corporation (NHK)
-nhk
-
-// nico : 2014-12-04 DWANGO Co., Ltd.
-nico
-
-// nike : 2015-07-23 NIKE, Inc.
-nike
-
-// nikon : 2015-05-21 NIKON CORPORATION
-nikon
-
-// ninja : 2013-11-07 United TLD Holdco Ltd.
-ninja
-
-// nissan : 2014-03-27 NISSAN MOTOR CO., LTD.
-nissan
-
-// nissay : 2015-10-29 Nippon Life Insurance Company
-nissay
-
-// nokia : 2015-01-08 Nokia Corporation
-nokia
-
-// northwesternmutual : 2015-06-18 Northwestern Mutual Registry, LLC
-northwesternmutual
-
-// norton : 2014-12-04 Symantec Corporation
-norton
-
-// now : 2015-06-25 Amazon EU S.à r.l.
-now
-
-// nowruz : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti.
-nowruz
-
-// nowtv : 2015-05-14 Starbucks (HK) Limited
-nowtv
-
-// nra : 2014-05-22 NRA Holdings Company, INC.
-nra
-
-// nrw : 2013-11-21 Minds + Machines GmbH
-nrw
-
-// ntt : 2014-10-31 NIPPON TELEGRAPH AND TELEPHONE CORPORATION
-ntt
-
-// nyc : 2014-01-23 The City of New York by and through the New York City Department of Information Technology & Telecommunications
-nyc
-
-// obi : 2014-09-25 OBI Group Holding SE & Co. KGaA
-obi
-
-// observer : 2015-04-30 Guardian News and Media Limited
-observer
-
-// off : 2015-07-23 Johnson Shareholdings, Inc.
-off
-
-// office : 2015-03-12 Microsoft Corporation
-office
-
-// okinawa : 2013-12-05 BusinessRalliart Inc.
-okinawa
-
-// olayan : 2015-05-14 Crescent Holding GmbH
-olayan
-
-// olayangroup : 2015-05-14 Crescent Holding GmbH
-olayangroup
-
-// oldnavy : 2015-07-31 The Gap, Inc.
-oldnavy
-
-// ollo : 2015-06-04 Dish DBS Corporation
-ollo
-
-// omega : 2015-01-08 The Swatch Group Ltd
-omega
-
-// one : 2014-11-07 One.com A/S
-one
-
-// ong : 2014-03-06 Public Interest Registry
-ong
-
-// onl : 2013-09-16 I-Registry Ltd.
-onl
-
-// online : 2015-01-15 DotOnline Inc.
-online
-
-// onyourside : 2015-07-23 Nationwide Mutual Insurance Company
-onyourside
-
-// ooo : 2014-01-09 INFIBEAM INCORPORATION LIMITED
-ooo
-
-// open : 2015-07-31 American Express Travel Related Services Company, Inc.
-open
-
-// oracle : 2014-06-19 Oracle Corporation
-oracle
-
-// orange : 2015-03-12 Orange Brand Services Limited
-orange
-
-// organic : 2014-03-27 Afilias Limited
-organic
-
-// orientexpress : 2015-02-05 Belmond Ltd.
-orientexpress
-
-// origins : 2015-10-01 The Estée Lauder Companies Inc.
-origins
-
-// osaka : 2014-09-04 Interlink Co., Ltd.
-osaka
-
-// otsuka : 2013-10-11 Otsuka Holdings Co., Ltd.
-otsuka
-
-// ott : 2015-06-04 Dish DBS Corporation
-ott
-
-// ovh : 2014-01-16 OVH SAS
-ovh
-
-// page : 2014-12-04 Charleston Road Registry Inc.
-page
-
-// pamperedchef : 2015-02-05 The Pampered Chef, Ltd.
-pamperedchef
-
-// panasonic : 2015-07-30 Panasonic Corporation
-panasonic
-
-// panerai : 2014-11-07 Richemont DNS Inc.
-panerai
-
-// paris : 2014-01-30 City of Paris
-paris
-
-// pars : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti.
-pars
-
-// partners : 2013-12-05 Magic Glen, LLC
-partners
-
-// parts : 2013-12-05 Sea Goodbye, LLC
-parts
-
-// party : 2014-09-11 Blue Sky Registry Limited
-party
-
-// passagens : 2015-03-05 Travel Reservations SRL
-passagens
-
-// pay : 2015-08-27 Amazon EU S.à r.l.
-pay
-
-// payu : 2015-02-12 MIH PayU B.V.
-payu
-
-// pccw : 2015-05-14 PCCW Enterprises Limited
-pccw
-
-// pet : 2015-05-07 Afilias plc
-pet
-
-// pfizer : 2015-09-11 Pfizer Inc.
-pfizer
-
-// pharmacy : 2014-06-19 National Association of Boards of Pharmacy
-pharmacy
-
-// philips : 2014-11-07 Koninklijke Philips N.V.
-philips
-
-// photo : 2013-11-14 Uniregistry, Corp.
-photo
-
-// photography : 2013-09-20 Sugar Glen, LLC
-photography
-
-// photos : 2013-10-17 Sea Corner, LLC
-photos
-
-// physio : 2014-05-01 PhysBiz Pty Ltd
-physio
-
-// piaget : 2014-10-16 Richemont DNS Inc.
-piaget
-
-// pics : 2013-11-14 Uniregistry, Corp.
-pics
-
-// pictet : 2014-06-26 Pictet Europe S.A.
-pictet
-
-// pictures : 2014-03-06 Foggy Sky, LLC
-pictures
-
-// pid : 2015-01-08 Top Level Spectrum, Inc.
-pid
-
-// pin : 2014-12-18 Amazon EU S.à r.l.
-pin
-
-// ping : 2015-06-11 Ping Registry Provider, Inc.
-ping
-
-// pink : 2013-10-01 Afilias Limited
-pink
-
-// pioneer : 2015-07-16 Pioneer Corporation
-pioneer
-
-// pizza : 2014-06-26 Foggy Moon, LLC
-pizza
-
-// place : 2014-04-24 Snow Galley, LLC
-place
-
-// play : 2015-03-05 Charleston Road Registry Inc.
-play
-
-// playstation : 2015-07-02 Sony Computer Entertainment Inc.
-playstation
-
-// plumbing : 2013-09-10 Spring Tigers, LLC
-plumbing
-
-// plus : 2015-02-05 Sugar Mill, LLC
-plus
-
-// pnc : 2015-07-02 PNC Domain Co., LLC
-pnc
-
-// pohl : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG
-pohl
-
-// poker : 2014-07-03 Afilias Domains No. 5 Limited
-poker
-
-// politie : 2015-08-20 Politie Nederland
-politie
-
-// porn : 2014-10-16 ICM Registry PN LLC
-porn
-
-// pramerica : 2015-07-30 Prudential Financial, Inc.
-pramerica
-
-// praxi : 2013-12-05 Praxi S.p.A.
-praxi
-
-// press : 2014-04-03 DotPress Inc.
-press
-
-// prime : 2015-06-25 Amazon EU S.à r.l.
-prime
-
-// prod : 2014-01-23 Charleston Road Registry Inc.
-prod
-
-// productions : 2013-12-05 Magic Birch, LLC
-productions
-
-// prof : 2014-07-24 Charleston Road Registry Inc.
-prof
-
-// progressive : 2015-07-23 Progressive Casualty Insurance Company
-progressive
-
-// promo : 2014-12-18
-promo
-
-// properties : 2013-12-05 Big Pass, LLC
-properties
-
-// property : 2014-05-22 Uniregistry, Corp.
-property
-
-// protection : 2015-04-23
-protection
-
-// pru : 2015-07-30 Prudential Financial, Inc.
-pru
-
-// prudential : 2015-07-30 Prudential Financial, Inc.
-prudential
-
-// pub : 2013-12-12 United TLD Holdco Ltd.
-pub
-
-// pwc : 2015-10-29 PricewaterhouseCoopers LLP
-pwc
-
-// qpon : 2013-11-14 dotCOOL, Inc.
-qpon
-
-// quebec : 2013-12-19 PointQuébec Inc
-quebec
-
-// quest : 2015-03-26 Quest ION Limited
-quest
-
-// qvc : 2015-07-30 QVC, Inc.
-qvc
-
-// racing : 2014-12-04 Premier Registry Limited
-racing
-
-// raid : 2015-07-23 Johnson Shareholdings, Inc.
-raid
-
-// read : 2014-12-18 Amazon EU S.à r.l.
-read
-
-// realestate : 2015-09-11 dotRealEstate LLC
-realestate
-
-// realtor : 2014-05-29 Real Estate Domains LLC
-realtor
-
-// realty : 2015-03-19 Fegistry, LLC
-realty
-
-// recipes : 2013-10-17 Grand Island, LLC
-recipes
-
-// red : 2013-11-07 Afilias Limited
-red
-
-// redstone : 2014-10-31 Redstone Haute Couture Co., Ltd.
-redstone
-
-// redumbrella : 2015-03-26 Travelers TLD, LLC
-redumbrella
-
-// rehab : 2014-03-06 United TLD Holdco Ltd.
-rehab
-
-// reise : 2014-03-13
-reise
-
-// reisen : 2014-03-06 New Cypress, LLC
-reisen
-
-// reit : 2014-09-04 National Association of Real Estate Investment Trusts, Inc.
-reit
-
-// reliance : 2015-04-02 Reliance Industries Limited
-reliance
-
-// ren : 2013-12-12 Beijing Qianxiang Wangjing Technology Development Co., Ltd.
-ren
-
-// rent : 2014-12-04 DERRent, LLC
-rent
-
-// rentals : 2013-12-05 Big Hollow,LLC
-rentals
-
-// repair : 2013-11-07 Lone Sunset, LLC
-repair
-
-// report : 2013-12-05 Binky Glen, LLC
-report
-
-// republican : 2014-03-20 United TLD Holdco Ltd.
-republican
-
-// rest : 2013-12-19 Punto 2012 Sociedad Anonima Promotora de Inversion de Capital Variable
-rest
-
-// restaurant : 2014-07-03 Snow Avenue, LLC
-restaurant
-
-// review : 2014-11-20 dot Review Limited
-review
-
-// reviews : 2013-09-13
-reviews
-
-// rexroth : 2015-06-18 Robert Bosch GMBH
-rexroth
-
-// rich : 2013-11-21 I-Registry Ltd.
-rich
-
-// richardli : 2015-05-14 Pacific Century Asset Management (HK) Limited
-richardli
-
-// ricoh : 2014-11-20 Ricoh Company, Ltd.
-ricoh
-
-// rightathome : 2015-07-23 Johnson Shareholdings, Inc.
-rightathome
-
-// ril : 2015-04-02 Reliance Industries Limited
-ril
-
-// rio : 2014-02-27 Empresa Municipal de Informática SA - IPLANRIO
-rio
-
-// rip : 2014-07-10 United TLD Holdco Ltd.
-rip
-
-// rmit : 2015-11-19 Royal Melbourne Institute of Technology
-rmit
-
-// rocher : 2014-12-18 Ferrero Trading Lux S.A.
-rocher
-
-// rocks : 2013-11-14
-rocks
-
-// rodeo : 2013-12-19 Top Level Domain Holdings Limited
-rodeo
-
-// rogers : 2015-08-06 Rogers Communications Partnership
-rogers
-
-// room : 2014-12-18 Amazon EU S.à r.l.
-room
-
-// rsvp : 2014-05-08 Charleston Road Registry Inc.
-rsvp
-
-// ruhr : 2013-10-02 regiodot GmbH & Co. KG
-ruhr
-
-// run : 2015-03-19 Snow Park, LLC
-run
-
-// rwe : 2015-04-02 RWE AG
-rwe
-
-// ryukyu : 2014-01-09 BusinessRalliart Inc.
-ryukyu
-
-// saarland : 2013-12-12 dotSaarland GmbH
-saarland
-
-// safe : 2014-12-18 Amazon EU S.à r.l.
-safe
-
-// safety : 2015-01-08 Safety Registry Services, LLC.
-safety
-
-// sakura : 2014-12-18 SAKURA Internet Inc.
-sakura
-
-// sale : 2014-10-16
-sale
-
-// salon : 2014-12-11 Outer Orchard, LLC
-salon
-
-// samsclub : 2015-07-31 Wal-Mart Stores, Inc.
-samsclub
-
-// samsung : 2014-04-03 SAMSUNG SDS CO., LTD
-samsung
-
-// sandvik : 2014-11-13 Sandvik AB
-sandvik
-
-// sandvikcoromant : 2014-11-07 Sandvik AB
-sandvikcoromant
-
-// sanofi : 2014-10-09 Sanofi
-sanofi
-
-// sap : 2014-03-27 SAP AG
-sap
-
-// sapo : 2014-11-07 PT Comunicacoes S.A.
-sapo
-
-// sarl : 2014-07-03 Delta Orchard, LLC
-sarl
-
-// sas : 2015-04-02 Research IP LLC
-sas
-
-// save : 2015-06-25 Amazon EU S.à r.l.
-save
-
-// saxo : 2014-10-31 Saxo Bank A/S
-saxo
-
-// sbi : 2015-03-12 STATE BANK OF INDIA
-sbi
-
-// sbs : 2014-11-07 SPECIAL BROADCASTING SERVICE CORPORATION
-sbs
-
-// sca : 2014-03-13 SVENSKA CELLULOSA AKTIEBOLAGET SCA (publ)
-sca
-
-// scb : 2014-02-20 The Siam Commercial Bank Public Company Limited ("SCB")
-scb
-
-// schaeffler : 2015-08-06 Schaeffler Technologies AG & Co. KG
-schaeffler
-
-// schmidt : 2014-04-03 SALM S.A.S.
-schmidt
-
-// scholarships : 2014-04-24 Scholarships.com, LLC
-scholarships
-
-// school : 2014-12-18 Little Galley, LLC
-school
-
-// schule : 2014-03-06 Outer Moon, LLC
-schule
-
-// schwarz : 2014-09-18 Schwarz Domains und Services GmbH & Co. KG
-schwarz
-
-// science : 2014-09-11 dot Science Limited
-science
-
-// scjohnson : 2015-07-23 Johnson Shareholdings, Inc.
-scjohnson
-
-// scor : 2014-10-31 SCOR SE
-scor
-
-// scot : 2014-01-23 Dot Scot Registry Limited
-scot
-
-// seat : 2014-05-22 SEAT, S.A. (Sociedad Unipersonal)
-seat
-
-// secure : 2015-08-27 Amazon EU S.à r.l.
-secure
-
-// security : 2015-05-14
-security
-
-// seek : 2014-12-04 Seek Limited
-seek
-
-// select : 2015-10-08 iSelect Ltd
-select
-
-// sener : 2014-10-24 Sener Ingeniería y Sistemas, S.A.
-sener
-
-// services : 2014-02-27 Fox Castle, LLC
-services
-
-// ses : 2015-07-23 SES
-ses
-
-// seven : 2015-08-06 Seven West Media Ltd
-seven
-
-// sew : 2014-07-17 SEW-EURODRIVE GmbH & Co KG
-sew
-
-// sex : 2014-11-13 ICM Registry SX LLC
-sex
-
-// sexy : 2013-09-11 Uniregistry, Corp.
-sexy
-
-// sfr : 2015-08-13 Societe Francaise du Radiotelephone - SFR
-sfr
-
-// shangrila : 2015-09-03 Shangri‐La International Hotel Management Limited
-shangrila
-
-// sharp : 2014-05-01 Sharp Corporation
-sharp
-
-// shaw : 2015-04-23 Shaw Cablesystems G.P.
-shaw
-
-// shell : 2015-07-30 Shell Information Technology International Inc
-shell
-
-// shia : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti.
-shia
-
-// shiksha : 2013-11-14 Afilias Limited
-shiksha
-
-// shoes : 2013-10-02 Binky Galley, LLC
-shoes
-
-// shopping : 2016-03-31 Uniregistry, Corp.
-shopping
-
-// shouji : 2015-01-08 QIHOO 360 TECHNOLOGY CO. LTD.
-shouji
-
-// show : 2015-03-05 Snow Beach, LLC
-show
-
-// showtime : 2015-08-06 CBS Domains Inc.
-showtime
-
-// shriram : 2014-01-23 Shriram Capital Ltd.
-shriram
-
-// silk : 2015-06-25 Amazon EU S.à r.l.
-silk
-
-// sina : 2015-03-12 Sina Corporation
-sina
-
-// singles : 2013-08-27 Fern Madison, LLC
-singles
-
-// site : 2015-01-15 DotSite Inc.
-site
-
-// ski : 2015-04-09 STARTING DOT LIMITED
-ski
-
-// skin : 2015-01-15 L'Oréal
-skin
-
-// sky : 2014-06-19 Sky IP International Ltd, a company incorporated in England and Wales, operating via its registered Swiss branch
-sky
-
-// skype : 2014-12-18 Microsoft Corporation
-skype
-
-// sling : 2015-07-30 Hughes Satellite Systems Corporation
-sling
-
-// smart : 2015-07-09 Smart Communications, Inc. (SMART)
-smart
-
-// smile : 2014-12-18 Amazon EU S.à r.l.
-smile
-
-// sncf : 2015-02-19 Société Nationale des Chemins de fer Francais S N C F
-sncf
-
-// soccer : 2015-03-26 Foggy Shadow, LLC
-soccer
-
-// social : 2013-11-07 United TLD Holdco Ltd.
-social
-
-// softbank : 2015-07-02 SoftBank Corp.
-softbank
-
-// software : 2014-03-20
-software
-
-// sohu : 2013-12-19 Sohu.com Limited
-sohu
-
-// solar : 2013-11-07 Ruby Town, LLC
-solar
-
-// solutions : 2013-11-07 Silver Cover, LLC
-solutions
-
-// song : 2015-02-26 Amazon EU S.à r.l.
-song
-
-// sony : 2015-01-08 Sony Corporation
-sony
-
-// soy : 2014-01-23 Charleston Road Registry Inc.
-soy
-
-// space : 2014-04-03 DotSpace Inc.
-space
-
-// spiegel : 2014-02-05 SPIEGEL-Verlag Rudolf Augstein GmbH & Co. KG
-spiegel
-
-// spot : 2015-02-26 Amazon EU S.à r.l.
-spot
-
-// spreadbetting : 2014-12-11 IG Group Holdings PLC
-spreadbetting
-
-// srl : 2015-05-07 mySRL GmbH
-srl
-
-// srt : 2015-07-30 FCA US LLC.
-srt
-
-// stada : 2014-11-13 STADA Arzneimittel AG
-stada
-
-// staples : 2015-07-30 Staples, Inc.
-staples
-
-// star : 2015-01-08 Star India Private Limited
-star
-
-// starhub : 2015-02-05 StarHub Ltd
-starhub
-
-// statebank : 2015-03-12 STATE BANK OF INDIA
-statebank
-
-// statefarm : 2015-07-30 State Farm Mutual Automobile Insurance Company
-statefarm
-
-// statoil : 2014-12-04 Statoil ASA
-statoil
-
-// stc : 2014-10-09 Saudi Telecom Company
-stc
-
-// stcgroup : 2014-10-09 Saudi Telecom Company
-stcgroup
-
-// stockholm : 2014-12-18 Stockholms kommun
-stockholm
-
-// storage : 2014-12-22 Self Storage Company LLC
-storage
-
-// store : 2015-04-09 DotStore Inc.
-store
-
-// stream : 2016-01-08 dot Stream Limited
-stream
-
-// studio : 2015-02-11
-studio
-
-// study : 2014-12-11 OPEN UNIVERSITIES AUSTRALIA PTY LTD
-study
-
-// style : 2014-12-04 Binky Moon, LLC
-style
-
-// sucks : 2014-12-22 Vox Populi Registry Inc.
-sucks
-
-// supersport : 2015-03-05 SuperSport International Holdings Proprietary Limited
-supersport
-
-// supplies : 2013-12-19 Atomic Fields, LLC
-supplies
-
-// supply : 2013-12-19 Half Falls, LLC
-supply
-
-// support : 2013-10-24 Grand Orchard, LLC
-support
-
-// surf : 2014-01-09 Top Level Domain Holdings Limited
-surf
-
-// surgery : 2014-03-20 Tin Avenue, LLC
-surgery
-
-// suzuki : 2014-02-20 SUZUKI MOTOR CORPORATION
-suzuki
-
-// swatch : 2015-01-08 The Swatch Group Ltd
-swatch
-
-// swiftcover : 2015-07-23 Swiftcover Insurance Services Limited
-swiftcover
-
-// swiss : 2014-10-16 Swiss Confederation
-swiss
-
-// sydney : 2014-09-18 State of New South Wales, Department of Premier and Cabinet
-sydney
-
-// symantec : 2014-12-04 Symantec Corporation
-symantec
-
-// systems : 2013-11-07 Dash Cypress, LLC
-systems
-
-// tab : 2014-12-04 Tabcorp Holdings Limited
-tab
-
-// taipei : 2014-07-10 Taipei City Government
-taipei
-
-// talk : 2015-04-09 Amazon EU S.à r.l.
-talk
-
-// taobao : 2015-01-15 Alibaba Group Holding Limited
-taobao
-
-// target : 2015-07-31 Target Domain Holdings, LLC
-target
-
-// tatamotors : 2015-03-12 Tata Motors Ltd
-tatamotors
-
-// tatar : 2014-04-24 Limited Liability Company "Coordination Center of Regional Domain of Tatarstan Republic"
-tatar
-
-// tattoo : 2013-08-30 Uniregistry, Corp.
-tattoo
-
-// tax : 2014-03-20 Storm Orchard, LLC
-tax
-
-// taxi : 2015-03-19 Pine Falls, LLC
-taxi
-
-// tci : 2014-09-12 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti.
-tci
-
-// tdk : 2015-06-11 TDK Corporation
-tdk
-
-// team : 2015-03-05 Atomic Lake, LLC
-team
-
-// tech : 2015-01-30 Dot Tech LLC
-tech
-
-// technology : 2013-09-13 Auburn Falls
-technology
-
-// telecity : 2015-02-19 TelecityGroup International Limited
-telecity
-
-// telefonica : 2014-10-16 Telefónica S.A.
-telefonica
-
-// temasek : 2014-08-07 Temasek Holdings (Private) Limited
-temasek
-
-// tennis : 2014-12-04 Cotton Bloom, LLC
-tennis
-
-// teva : 2015-07-02 Teva Pharmaceutical Industries Limited
-teva
-
-// thd : 2015-04-02 Homer TLC, Inc.
-thd
-
-// theater : 2015-03-19 Blue Tigers, LLC
-theater
-
-// theatre : 2015-05-07
-theatre
-
-// theguardian : 2015-04-30 Guardian News and Media Limited
-theguardian
-
-// tiaa : 2015-07-23 Teachers Insurance and Annuity Association of America
-tiaa
-
-// tickets : 2015-02-05 Accent Media Limited
-tickets
-
-// tienda : 2013-11-14 Victor Manor, LLC
-tienda
-
-// tiffany : 2015-01-30 Tiffany and Company
-tiffany
-
-// tips : 2013-09-20 Corn Willow, LLC
-tips
-
-// tires : 2014-11-07 Dog Edge, LLC
-tires
-
-// tirol : 2014-04-24 punkt Tirol GmbH
-tirol
-
-// tjmaxx : 2015-07-16 The TJX Companies, Inc.
-tjmaxx
-
-// tjx : 2015-07-16 The TJX Companies, Inc.
-tjx
-
-// tkmaxx : 2015-07-16 The TJX Companies, Inc.
-tkmaxx
-
-// tmall : 2015-01-15 Alibaba Group Holding Limited
-tmall
-
-// today : 2013-09-20 Pearl Woods, LLC
-today
-
-// tokyo : 2013-11-13 GMO Registry, Inc.
-tokyo
-
-// tools : 2013-11-21 Pioneer North, LLC
-tools
-
-// top : 2014-03-20 Jiangsu Bangning Science & Technology Co.,Ltd.
-top
-
-// toray : 2014-12-18 Toray Industries, Inc.
-toray
-
-// toshiba : 2014-04-10 TOSHIBA Corporation
-toshiba
-
-// total : 2015-08-06 Total SA
-total
-
-// tours : 2015-01-22 Sugar Station, LLC
-tours
-
-// town : 2014-03-06 Koko Moon, LLC
-town
-
-// toyota : 2015-04-23 TOYOTA MOTOR CORPORATION
-toyota
-
-// toys : 2014-03-06 Pioneer Orchard, LLC
-toys
-
-// trade : 2014-01-23 Elite Registry Limited
-trade
-
-// trading : 2014-12-11 IG Group Holdings PLC
-trading
-
-// training : 2013-11-07 Wild Willow, LLC
-training
-
-// travelchannel : 2015-07-02 Lifestyle Domain Holdings, Inc.
-travelchannel
-
-// travelers : 2015-03-26 Travelers TLD, LLC
-travelers
-
-// travelersinsurance : 2015-03-26 Travelers TLD, LLC
-travelersinsurance
-
-// trust : 2014-10-16
-trust
-
-// trv : 2015-03-26 Travelers TLD, LLC
-trv
-
-// tube : 2015-06-11 Latin American Telecom LLC
-tube
-
-// tui : 2014-07-03 TUI AG
-tui
-
-// tunes : 2015-02-26 Amazon EU S.à r.l.
-tunes
-
-// tushu : 2014-12-18 Amazon EU S.à r.l.
-tushu
-
-// tvs : 2015-02-19 T V SUNDRAM IYENGAR  & SONS LIMITED
-tvs
-
-// ubank : 2015-08-20 National Australia Bank Limited
-ubank
-
-// ubs : 2014-12-11 UBS AG
-ubs
-
-// uconnect : 2015-07-30 FCA US LLC.
-uconnect
-
-// unicom : 2015-10-15 China United Network Communications Corporation Limited
-unicom
-
-// university : 2014-03-06 Little Station, LLC
-university
-
-// uno : 2013-09-11 Dot Latin LLC
-uno
-
-// uol : 2014-05-01 UBN INTERNET LTDA.
-uol
-
-// ups : 2015-06-25 UPS Market Driver, Inc.
-ups
-
-// vacations : 2013-12-05 Atomic Tigers, LLC
-vacations
-
-// vana : 2014-12-11 Lifestyle Domain Holdings, Inc.
-vana
-
-// vanguard : 2015-09-03 The Vanguard Group, Inc.
-vanguard
-
-// vegas : 2014-01-16 Dot Vegas, Inc.
-vegas
-
-// ventures : 2013-08-27 Binky Lake, LLC
-ventures
-
-// verisign : 2015-08-13 VeriSign, Inc.
-verisign
-
-// versicherung : 2014-03-20 dotversicherung-registry GmbH
-versicherung
-
-// vet : 2014-03-06
-vet
-
-// viajes : 2013-10-17 Black Madison, LLC
-viajes
-
-// video : 2014-10-16
-video
-
-// vig : 2015-05-14 VIENNA INSURANCE GROUP AG Wiener Versicherung Gruppe
-vig
-
-// viking : 2015-04-02 Viking River Cruises (Bermuda) Ltd.
-viking
-
-// villas : 2013-12-05 New Sky, LLC
-villas
-
-// vin : 2015-06-18 Holly Shadow, LLC
-vin
-
-// vip : 2015-01-22 Minds + Machines Group Limited
-vip
-
-// virgin : 2014-09-25 Virgin Enterprises Limited
-virgin
-
-// visa : 2015-07-30 Visa Worldwide Pte. Limited
-visa
-
-// vision : 2013-12-05 Koko Station, LLC
-vision
-
-// vista : 2014-09-18 Vistaprint Limited
-vista
-
-// vistaprint : 2014-09-18 Vistaprint Limited
-vistaprint
-
-// viva : 2014-11-07 Saudi Telecom Company
-viva
-
-// vivo : 2015-07-31 Telefonica Brasil S.A.
-vivo
-
-// vlaanderen : 2014-02-06 DNS.be vzw
-vlaanderen
-
-// vodka : 2013-12-19 Top Level Domain Holdings Limited
-vodka
-
-// volkswagen : 2015-05-14 Volkswagen Group of America Inc.
-volkswagen
-
-// volvo : 2015-11-12 Volvo Holding Sverige Aktiebolag
-volvo
-
-// vote : 2013-11-21 Monolith Registry LLC
-vote
-
-// voting : 2013-11-13 Valuetainment Corp.
-voting
-
-// voto : 2013-11-21 Monolith Registry LLC
-voto
-
-// voyage : 2013-08-27 Ruby House, LLC
-voyage
-
-// vuelos : 2015-03-05 Travel Reservations SRL
-vuelos
-
-// wales : 2014-05-08 Nominet UK
-wales
-
-// walmart : 2015-07-31 Wal-Mart Stores, Inc.
-walmart
-
-// walter : 2014-11-13 Sandvik AB
-walter
-
-// wang : 2013-10-24 Zodiac Leo Limited
-wang
-
-// wanggou : 2014-12-18 Amazon EU S.à r.l.
-wanggou
-
-// warman : 2015-06-18 Weir Group IP Limited
-warman
-
-// watch : 2013-11-14 Sand Shadow, LLC
-watch
-
-// watches : 2014-12-22 Richemont DNS Inc.
-watches
-
-// weather : 2015-01-08 The Weather Channel, LLC
-weather
-
-// weatherchannel : 2015-03-12 The Weather Channel, LLC
-weatherchannel
-
-// webcam : 2014-01-23 dot Webcam Limited
-webcam
-
-// weber : 2015-06-04 Saint-Gobain Weber SA
-weber
-
-// website : 2014-04-03 DotWebsite Inc.
-website
-
-// wed : 2013-10-01 Atgron, Inc.
-wed
-
-// wedding : 2014-04-24 Top Level Domain Holdings Limited
-wedding
-
-// weibo : 2015-03-05 Sina Corporation
-weibo
-
-// weir : 2015-01-29 Weir Group IP Limited
-weir
-
-// whoswho : 2014-02-20 Who's Who Registry
-whoswho
-
-// wien : 2013-10-28 punkt.wien GmbH
-wien
-
-// wiki : 2013-11-07 Top Level Design, LLC
-wiki
-
-// williamhill : 2014-03-13 William Hill Organization Limited
-williamhill
-
-// win : 2014-11-20 First Registry Limited
-win
-
-// windows : 2014-12-18 Microsoft Corporation
-windows
-
-// wine : 2015-06-18 June Station, LLC
-wine
-
-// winners : 2015-07-16 The TJX Companies, Inc.
-winners
-
-// wme : 2014-02-13 William Morris Endeavor Entertainment, LLC
-wme
-
-// wolterskluwer : 2015-08-06 Wolters Kluwer N.V.
-wolterskluwer
-
-// woodside : 2015-07-09 Woodside Petroleum Limited
-woodside
-
-// work : 2013-12-19 Top Level Domain Holdings Limited
-work
-
-// works : 2013-11-14 Little Dynamite, LLC
-works
-
-// world : 2014-06-12 Bitter Fields, LLC
-world
-
-// wow : 2015-10-08 Amazon EU S.à r.l.
-wow
-
-// wtc : 2013-12-19 World Trade Centers Association, Inc.
-wtc
-
-// wtf : 2014-03-06 Hidden Way, LLC
-wtf
-
-// xbox : 2014-12-18 Microsoft Corporation
-xbox
-
-// xerox : 2014-10-24 Xerox DNHC LLC
-xerox
-
-// xfinity : 2015-07-09 Comcast IP Holdings I, LLC
-xfinity
-
-// xihuan : 2015-01-08 QIHOO 360 TECHNOLOGY CO. LTD.
-xihuan
-
-// xin : 2014-12-11 Elegant Leader Limited
-xin
-
-// xn--11b4c3d : 2015-01-15 VeriSign Sarl
-कॉम
-
-// xn--1ck2e1b : 2015-02-26 Amazon EU S.à r.l.
-セール
-
-// xn--1qqw23a : 2014-01-09 Guangzhou YU Wei Information Technology Co., Ltd.
-佛山
-
-// xn--30rr7y : 2014-06-12 Excellent First Limited
-慈善
-
-// xn--3bst00m : 2013-09-13 Eagle Horizon Limited
-集团
-
-// xn--3ds443g : 2013-09-08 TLD REGISTRY LIMITED
-在线
-
-// xn--3oq18vl8pn36a : 2015-07-02 Volkswagen (China) Investment Co., Ltd.
-大众汽车
-
-// xn--3pxu8k : 2015-01-15 VeriSign Sarl
-点看
-
-// xn--42c2d9a : 2015-01-15 VeriSign Sarl
-คอม
-
-// xn--45q11c : 2013-11-21 Zodiac Scorpio Limited
-八卦
-
-// xn--4gbrim : 2013-10-04 Suhub Electronic Establishment
-موقع
-
-// xn--4gq48lf9j : 2015-07-31 Wal-Mart Stores, Inc.
-一号店
-
-// xn--55qw42g : 2013-11-08 China Organizational Name Administration Center
-公益
-
-// xn--55qx5d : 2013-11-14 Computer Network Information Center of Chinese Academy of Sciences (China Internet Network Information Center)
-公司
-
-// xn--5su34j936bgsg : 2015-09-03 Shangri‐La International Hotel Management Limited
-香格里拉
-
-// xn--5tzm5g : 2014-12-22 Global Website TLD Asia Limited
-网站
-
-// xn--6frz82g : 2013-09-23 Afilias Limited
-移动
-
-// xn--6qq986b3xl : 2013-09-13 Tycoon Treasure Limited
-我爱你
-
-// xn--80adxhks : 2013-12-19 Foundation for Assistance for Internet Technologies and Infrastructure Development (FAITID)
-москва
-
-// xn--80aqecdr1a : 2015-10-21 Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication)
-католик
-
-// xn--80asehdb : 2013-07-14 CORE Association
-онлайн
-
-// xn--80aswg : 2013-07-14 CORE Association
-сайт
-
-// xn--8y0a063a : 2015-03-26 China United Network Communications Corporation Limited
-联通
-
-// xn--9dbq2a : 2015-01-15 VeriSign Sarl
-קום
-
-// xn--9et52u : 2014-06-12 RISE VICTORY LIMITED
-时尚
-
-// xn--9krt00a : 2015-03-12 Sina Corporation
-微博
-
-// xn--b4w605ferd : 2014-08-07 Temasek Holdings (Private) Limited
-淡马锡
-
-// xn--bck1b9a5dre4c : 2015-02-26 Amazon EU S.à r.l.
-ファッション
-
-// xn--c1avg : 2013-11-14 Public Interest Registry
-орг
-
-// xn--c2br7g : 2015-01-15 VeriSign Sarl
-नेट
-
-// xn--cck2b3b : 2015-02-26 Amazon EU S.à r.l.
-ストア
-
-// xn--cg4bki : 2013-09-27 SAMSUNG SDS CO., LTD
-삼성
-
-// xn--czr694b : 2014-01-16 HU YI GLOBAL INFORMATION RESOURCES (HOLDING) COMPANY. HONGKONG LIMITED
-商标
-
-// xn--czrs0t : 2013-12-19 Wild Island, LLC
-商店
-
-// xn--czru2d : 2013-11-21 Zodiac Capricorn Limited
-商城
-
-// xn--d1acj3b : 2013-11-20 The Foundation for Network Initiatives “The Smart Internet”
-дети
-
-// xn--eckvdtc9d : 2014-12-18 Amazon EU S.à r.l.
-ポイント
-
-// xn--efvy88h : 2014-08-22 Xinhua News Agency Guangdong Branch 新华通讯社广东分社
-新闻
-
-// xn--estv75g : 2015-02-19 Industrial and Commercial Bank of China Limited
-工行
-
-// xn--fct429k : 2015-04-09 Amazon EU S.à r.l.
-家電
-
-// xn--fhbei : 2015-01-15 VeriSign Sarl
-كوم
-
-// xn--fiq228c5hs : 2013-09-08 TLD REGISTRY LIMITED
-中文网
-
-// xn--fiq64b : 2013-10-14 CITIC Group Corporation
-中信
-
-// xn--fjq720a : 2014-05-22 Will Bloom, LLC
-娱乐
-
-// xn--flw351e : 2014-07-31 Charleston Road Registry Inc.
-谷歌
-
-// xn--fzys8d69uvgm : 2015-05-14 PCCW Enterprises Limited
-電訊盈科
-
-// xn--g2xx48c : 2015-01-30 Minds + Machines Group Limited
-购物
-
-// xn--gckr3f0f : 2015-02-26 Amazon EU S.à r.l.
-クラウド
-
-// xn--gk3at1e : 2015-10-08 Amazon EU S.à r.l.
-通販
-
-// xn--hxt814e : 2014-05-15 Zodiac Libra Limited
-网店
-
-// xn--i1b6b1a6a2e : 2013-11-14 Public Interest Registry
-संगठन
-
-// xn--imr513n : 2014-12-11 HU YI GLOBAL INFORMATION RESOURCES (HOLDING) COMPANY. HONGKONG LIMITED
-餐厅
-
-// xn--io0a7i : 2013-11-14 Computer Network Information Center of Chinese Academy of Sciences (China Internet Network Information Center)
-网络
-
-// xn--j1aef : 2015-01-15 VeriSign Sarl
-ком
-
-// xn--jlq61u9w7b : 2015-01-08 Nokia Corporation
-诺基亚
-
-// xn--jvr189m : 2015-02-26 Amazon EU S.à r.l.
-食品
-
-// xn--kcrx77d1x4a : 2014-11-07 Koninklijke Philips N.V.
-飞利浦
-
-// xn--kpu716f : 2014-12-22 Richemont DNS Inc.
-手表
-
-// xn--kput3i : 2014-02-13 Beijing RITT-Net Technology Development Co., Ltd
-手机
-
-// xn--mgba3a3ejt : 2014-11-20 Aramco Services Company
-ارامكو
-
-// xn--mgba7c0bbn0a : 2015-05-14 Crescent Holding GmbH
-العليان
-
-// xn--mgbaakc7dvf : 2015-09-03 Emirates Telecommunications Corporation (trading as Etisalat)
-اتصالات
-
-// xn--mgbab2bd : 2013-10-31 CORE Association
-بازار
-
-// xn--mgbb9fbpob : 2014-12-18 GreenTech Consultancy Company W.L.L.
-موبايلي
-
-// xn--mgbca7dzdo : 2015-07-30 Abu Dhabi Systems and Information Centre
-ابوظبي
-
-// xn--mgbi4ecexp : 2015-10-21 Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication)
-كاثوليك
-
-// xn--mgbt3dhd : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti.
-همراه
-
-// xn--mk1bu44c : 2015-01-15 VeriSign Sarl
-닷컴
-
-// xn--mxtq1m : 2014-03-06 Net-Chinese Co., Ltd.
-政府
-
-// xn--ngbc5azd : 2013-07-13 International Domain Registry Pty. Ltd.
-شبكة
-
-// xn--ngbe9e0a : 2014-12-04 Kuwait Finance House
-بيتك
-
-// xn--ngbrx : 2015-11-12 League of Arab States
-عرب
-
-// xn--nqv7f : 2013-11-14 Public Interest Registry
-机构
-
-// xn--nqv7fs00ema : 2013-11-14 Public Interest Registry
-组织机构
-
-// xn--nyqy26a : 2014-11-07 Stable Tone Limited
-健康
-
-// xn--p1acf : 2013-12-12 Rusnames Limited
-рус
-
-// xn--pbt977c : 2014-12-22 Richemont DNS Inc.
-珠宝
-
-// xn--pssy2u : 2015-01-15 VeriSign Sarl
-大拿
-
-// xn--q9jyb4c : 2013-09-17 Charleston Road Registry Inc.
-みんな
-
-// xn--qcka1pmc : 2014-07-31 Charleston Road Registry Inc.
-グーグル
-
-// xn--rhqv96g : 2013-09-11 Stable Tone Limited
-世界
-
-// xn--rovu88b : 2015-02-26 Amazon EU S.à r.l.
-書籍
-
-// xn--ses554g : 2014-01-16
-网址
-
-// xn--t60b56a : 2015-01-15 VeriSign Sarl
-닷넷
-
-// xn--tckwe : 2015-01-15 VeriSign Sarl
-コム
-
-// xn--tiq49xqyj : 2015-10-21 Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication)
-天主教
-
-// xn--unup4y : 2013-07-14 Spring Fields, LLC
-游戏
-
-// xn--vermgensberater-ctb : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG
-vermögensberater
-
-// xn--vermgensberatung-pwb : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG
-vermögensberatung
-
-// xn--vhquv : 2013-08-27 Dash McCook, LLC
-企业
-
-// xn--vuq861b : 2014-10-16 Beijing Tele-info Network Technology Co., Ltd.
-信息
-
-// xn--w4r85el8fhu5dnra : 2015-04-30 Kerry Trading Co. Limited
-嘉里大酒店
-
-// xn--w4rs40l : 2015-07-30 Kerry Trading Co. Limited
-嘉里
-
-// xn--xhq521b : 2013-11-14 Guangzhou YU Wei Information Technology Co., Ltd.
-广东
-
-// xn--zfr164b : 2013-11-08 China Organizational Name Administration Center
-政务
-
-// xperia : 2015-05-14 Sony Mobile Communications AB
-xperia
-
-// xyz : 2013-12-05 XYZ.COM LLC
-xyz
-
-// yachts : 2014-01-09 DERYachts, LLC
-yachts
-
-// yahoo : 2015-04-02 Yahoo! Domain Services Inc.
-yahoo
-
-// yamaxun : 2014-12-18 Amazon EU S.à r.l.
-yamaxun
-
-// yandex : 2014-04-10 YANDEX, LLC
-yandex
-
-// yodobashi : 2014-11-20 YODOBASHI CAMERA CO.,LTD.
-yodobashi
-
-// yoga : 2014-05-29 Top Level Domain Holdings Limited
-yoga
-
-// yokohama : 2013-12-12 GMO Registry, Inc.
-yokohama
-
-// you : 2015-04-09 Amazon EU S.à r.l.
-you
-
-// youtube : 2014-05-01 Charleston Road Registry Inc.
-youtube
-
-// yun : 2015-01-08 QIHOO 360 TECHNOLOGY CO. LTD.
-yun
-
-// zappos : 2015-06-25 Amazon EU S.à r.l.
-zappos
-
-// zara : 2014-11-07 Industria de Diseño Textil, S.A. (INDITEX, S.A.)
-zara
-
-// zero : 2014-12-18 Amazon EU S.à r.l.
-zero
-
-// zip : 2014-05-08 Charleston Road Registry Inc.
-zip
-
-// zippo : 2015-07-02 Zadco Company
-zippo
-
-// zone : 2013-11-14 Outer Falls, LLC
-zone
-
-// zuerich : 2014-11-07 Kanton Zürich (Canton of Zurich)
-zuerich
-
-
-// ===END ICANN DOMAINS===
-// ===BEGIN PRIVATE DOMAINS===
-// (Note: these are in alphabetical order by company name)
-
-// Alces Software Ltd : http://alces-software.com
-// Submitted by Mark J. Titorenko <mark.titorenko@alces-software.com>
-*.compute.estate
-*.alces.network
-
-// Amazon CloudFront : https://aws.amazon.com/cloudfront/
-// Submitted by Donavan Miller <donavanm@amazon.com>
-cloudfront.net
-
-// Amazon Elastic Compute Cloud: https://aws.amazon.com/ec2/
-// Submitted by Luke Wells <lawells@amazon.com>
-ap-northeast-1.compute.amazonaws.com
-ap-northeast-2.compute.amazonaws.com
-ap-southeast-1.compute.amazonaws.com
-ap-southeast-2.compute.amazonaws.com
-cn-north-1.compute.amazonaws.cn
-compute-1.amazonaws.com
-compute.amazonaws.cn
-compute.amazonaws.com
-eu-central-1.compute.amazonaws.com
-eu-west-1.compute.amazonaws.com
-sa-east-1.compute.amazonaws.com
-us-east-1.amazonaws.com
-us-gov-west-1.compute.amazonaws.com
-us-west-1.compute.amazonaws.com
-us-west-2.compute.amazonaws.com
-z-1.compute-1.amazonaws.com
-z-2.compute-1.amazonaws.com
-
-// Amazon Elastic Beanstalk : https://aws.amazon.com/elasticbeanstalk/
-// Submitted by Adam Stein <astein@amazon.com>
-elasticbeanstalk.com
-
-// Amazon Elastic Load Balancing : https://aws.amazon.com/elasticloadbalancing/
-// Submitted by Scott Vidmar <svidmar@amazon.com>
-elb.amazonaws.com
-
-// Amazon S3 : https://aws.amazon.com/s3/
-// Submitted by Luke Wells <lawells@amazon.com>
-s3.amazonaws.com
-s3-ap-northeast-1.amazonaws.com
-s3-ap-northeast-2.amazonaws.com
-s3-ap-southeast-1.amazonaws.com
-s3-ap-southeast-2.amazonaws.com
-s3-eu-central-1.amazonaws.com
-s3-eu-west-1.amazonaws.com
-s3-external-1.amazonaws.com
-s3-external-2.amazonaws.com
-s3-fips-us-gov-west-1.amazonaws.com
-s3-sa-east-1.amazonaws.com
-s3-us-gov-west-1.amazonaws.com
-s3-us-west-1.amazonaws.com
-s3-us-west-2.amazonaws.com
-s3.ap-northeast-2.amazonaws.com
-s3.cn-north-1.amazonaws.com.cn
-s3.eu-central-1.amazonaws.com
-
-// Aptible : https://www.aptible.com/
-// Submitted by Thomas Orozco <thomas@aptible.com>
-on-aptible.com
-
-// AVM : https://avm.de
-// Submitted by Andreas Weise <a.weise@avm.de>
-myfritz.net
-
-// BetaInABox
-// Submitted by Adrian <adrian@betainabox.com>
-betainabox.com
-
-// CentralNic : http://www.centralnic.com/names/domains
-// Submitted by registry <gavin.brown@centralnic.com>
-ae.org
-ar.com
-br.com
-cn.com
-com.de
-com.se
-de.com
-eu.com
-gb.com
-gb.net
-hu.com
-hu.net
-jp.net
-jpn.com
-kr.com
-mex.com
-no.com
-qc.com
-ru.com
-sa.com
-se.com
-se.net
-uk.com
-uk.net
-us.com
-uy.com
-za.bz
-za.com
-
-// Africa.com Web Solutions Ltd : https://registry.africa.com
-// Submitted by Gavin Brown <gavin.brown@centralnic.com>
-africa.com
-
-// iDOT Services Limited : http://www.domain.gr.com
-// Submitted by Gavin Brown <gavin.brown@centralnic.com>
-gr.com
-
-// Radix FZC : http://domains.in.net
-// Submitted by Gavin Brown <gavin.brown@centralnic.com>
-in.net
-
-// US REGISTRY LLC : http://us.org
-// Submitted by Gavin Brown <gavin.brown@centralnic.com>
-us.org
-
-// co.com Registry, LLC : https://registry.co.com
-// Submitted by Gavin Brown <gavin.brown@centralnic.com>
-co.com
-
-// c.la : http://www.c.la/
-c.la
-
-// Citrix : https://citrix.com
-// Submitted by Alex Stoddard <alex.stoddard@citrix.com>
-xenapponazure.com
-
-// cloudControl : https://www.cloudcontrol.com/
-// Submitted by Tobias Wilken <tw@cloudcontrol.com>
-cloudcontrolled.com
-cloudcontrolapp.com
-
-// co.ca : http://registry.co.ca/
-co.ca
-
-// i-registry s.r.o. : http://www.i-registry.cz/
-// Submitted by Martin Semrad <semrad@i-registry.cz>
-co.cz
-
-// CDN77.com : http://www.cdn77.com
-// Submitted by Jan Krpes <jan.krpes@cdn77.com>
-c.cdn77.org
-cdn77-ssl.net
-r.cdn77.net
-rsc.cdn77.org
-ssl.origin.cdn77-secure.org
-
-// CoDNS B.V.
-co.nl
-co.no
-
-// Commerce Guys, SAS
-// Submitted by Damien Tournoud <damien@commerceguys.com>
-*.platform.sh
-
-// Cupcake : https://cupcake.io/
-// Submitted by Jonathan Rudenberg <jonathan@cupcake.io>
-cupcake.is
-
-// cyon GmbH : https://www.cyon.ch/
-// Submitted by Dominic Luechinger <dol@cyon.ch>
-cyon.link
-cyon.site
-
-// Daplie, Inc : https://daplie.com
-// Submitted by AJ ONeal <aj@daplie.com>
-daplie.me
-
-// Dansk.net : http://www.dansk.net/
-// Submitted by Anani Voule <digital@digital.co.dk>
-biz.dk
-co.dk
-firm.dk
-reg.dk
-store.dk
-
-// deSEC : https://desec.io/
-// Submitted by Peter Thomassen <peter@desec.io>
-dedyn.io
-
-// DNShome : https://www.dnshome.de/
-// Submitted by Norbert Auler <mail@dnshome.de>
-dnshome.de
-
-// DreamHost : http://www.dreamhost.com/
-// Submitted by Andrew Farmer <andrew.farmer@dreamhost.com>
-dreamhosters.com
-
-// Drobo : http://www.drobo.com/
-// Submitted by Ricardo Padilha <rpadilha@drobo.com>
-mydrobo.com
-
-// DuckDNS : http://www.duckdns.org/
-// Submitted by Richard Harper <richard@duckdns.org>
-duckdns.org
-
-// DynDNS.com : http://www.dyndns.com/services/dns/dyndns/
-dyndns-at-home.com
-dyndns-at-work.com
-dyndns-blog.com
-dyndns-free.com
-dyndns-home.com
-dyndns-ip.com
-dyndns-mail.com
-dyndns-office.com
-dyndns-pics.com
-dyndns-remote.com
-dyndns-server.com
-dyndns-web.com
-dyndns-wiki.com
-dyndns-work.com
-dyndns.biz
-dyndns.info
-dyndns.org
-dyndns.tv
-at-band-camp.net
-ath.cx
-barrel-of-knowledge.info
-barrell-of-knowledge.info
-better-than.tv
-blogdns.com
-blogdns.net
-blogdns.org
-blogsite.org
-boldlygoingnowhere.org
-broke-it.net
-buyshouses.net
-cechire.com
-dnsalias.com
-dnsalias.net
-dnsalias.org
-dnsdojo.com
-dnsdojo.net
-dnsdojo.org
-does-it.net
-doesntexist.com
-doesntexist.org
-dontexist.com
-dontexist.net
-dontexist.org
-doomdns.com
-doomdns.org
-dvrdns.org
-dyn-o-saur.com
-dynalias.com
-dynalias.net
-dynalias.org
-dynathome.net
-dyndns.ws
-endofinternet.net
-endofinternet.org
-endoftheinternet.org
-est-a-la-maison.com
-est-a-la-masion.com
-est-le-patron.com
-est-mon-blogueur.com
-for-better.biz
-for-more.biz
-for-our.info
-for-some.biz
-for-the.biz
-forgot.her.name
-forgot.his.name
-from-ak.com
-from-al.com
-from-ar.com
-from-az.net
-from-ca.com
-from-co.net
-from-ct.com
-from-dc.com
-from-de.com
-from-fl.com
-from-ga.com
-from-hi.com
-from-ia.com
-from-id.com
-from-il.com
-from-in.com
-from-ks.com
-from-ky.com
-from-la.net
-from-ma.com
-from-md.com
-from-me.org
-from-mi.com
-from-mn.com
-from-mo.com
-from-ms.com
-from-mt.com
-from-nc.com
-from-nd.com
-from-ne.com
-from-nh.com
-from-nj.com
-from-nm.com
-from-nv.com
-from-ny.net
-from-oh.com
-from-ok.com
-from-or.com
-from-pa.com
-from-pr.com
-from-ri.com
-from-sc.com
-from-sd.com
-from-tn.com
-from-tx.com
-from-ut.com
-from-va.com
-from-vt.com
-from-wa.com
-from-wi.com
-from-wv.com
-from-wy.com
-ftpaccess.cc
-fuettertdasnetz.de
-game-host.org
-game-server.cc
-getmyip.com
-gets-it.net
-go.dyndns.org
-gotdns.com
-gotdns.org
-groks-the.info
-groks-this.info
-ham-radio-op.net
-here-for-more.info
-hobby-site.com
-hobby-site.org
-home.dyndns.org
-homedns.org
-homeftp.net
-homeftp.org
-homeip.net
-homelinux.com
-homelinux.net
-homelinux.org
-homeunix.com
-homeunix.net
-homeunix.org
-iamallama.com
-in-the-band.net
-is-a-anarchist.com
-is-a-blogger.com
-is-a-bookkeeper.com
-is-a-bruinsfan.org
-is-a-bulls-fan.com
-is-a-candidate.org
-is-a-caterer.com
-is-a-celticsfan.org
-is-a-chef.com
-is-a-chef.net
-is-a-chef.org
-is-a-conservative.com
-is-a-cpa.com
-is-a-cubicle-slave.com
-is-a-democrat.com
-is-a-designer.com
-is-a-doctor.com
-is-a-financialadvisor.com
-is-a-geek.com
-is-a-geek.net
-is-a-geek.org
-is-a-green.com
-is-a-guru.com
-is-a-hard-worker.com
-is-a-hunter.com
-is-a-knight.org
-is-a-landscaper.com
-is-a-lawyer.com
-is-a-liberal.com
-is-a-libertarian.com
-is-a-linux-user.org
-is-a-llama.com
-is-a-musician.com
-is-a-nascarfan.com
-is-a-nurse.com
-is-a-painter.com
-is-a-patsfan.org
-is-a-personaltrainer.com
-is-a-photographer.com
-is-a-player.com
-is-a-republican.com
-is-a-rockstar.com
-is-a-socialist.com
-is-a-soxfan.org
-is-a-student.com
-is-a-teacher.com
-is-a-techie.com
-is-a-therapist.com
-is-an-accountant.com
-is-an-actor.com
-is-an-actress.com
-is-an-anarchist.com
-is-an-artist.com
-is-an-engineer.com
-is-an-entertainer.com
-is-by.us
-is-certified.com
-is-found.org
-is-gone.com
-is-into-anime.com
-is-into-cars.com
-is-into-cartoons.com
-is-into-games.com
-is-leet.com
-is-lost.org
-is-not-certified.com
-is-saved.org
-is-slick.com
-is-uberleet.com
-is-very-bad.org
-is-very-evil.org
-is-very-good.org
-is-very-nice.org
-is-very-sweet.org
-is-with-theband.com
-isa-geek.com
-isa-geek.net
-isa-geek.org
-isa-hockeynut.com
-issmarterthanyou.com
-isteingeek.de
-istmein.de
-kicks-ass.net
-kicks-ass.org
-knowsitall.info
-land-4-sale.us
-lebtimnetz.de
-leitungsen.de
-likes-pie.com
-likescandy.com
-merseine.nu
-mine.nu
-misconfused.org
-mypets.ws
-myphotos.cc
-neat-url.com
-office-on-the.net
-on-the-web.tv
-podzone.net
-podzone.org
-readmyblog.org
-saves-the-whales.com
-scrapper-site.net
-scrapping.cc
-selfip.biz
-selfip.com
-selfip.info
-selfip.net
-selfip.org
-sells-for-less.com
-sells-for-u.com
-sells-it.net
-sellsyourhome.org
-servebbs.com
-servebbs.net
-servebbs.org
-serveftp.net
-serveftp.org
-servegame.org
-shacknet.nu
-simple-url.com
-space-to-rent.com
-stuff-4-sale.org
-stuff-4-sale.us
-teaches-yoga.com
-thruhere.net
-traeumtgerade.de
-webhop.biz
-webhop.info
-webhop.net
-webhop.org
-worse-than.tv
-writesthisblog.com
-
-// dynv6 : https://dynv6.com
-// Submitted by Dominik Menke <dom@digineo.de> 2016-01-18
-dynv6.net
-
-// EU.org https://eu.org/
-// Submitted by Pierre Beyssac <hostmaster@eu.org>
-eu.org
-al.eu.org
-asso.eu.org
-at.eu.org
-au.eu.org
-be.eu.org
-bg.eu.org
-ca.eu.org
-cd.eu.org
-ch.eu.org
-cn.eu.org
-cy.eu.org
-cz.eu.org
-de.eu.org
-dk.eu.org
-edu.eu.org
-ee.eu.org
-es.eu.org
-fi.eu.org
-fr.eu.org
-gr.eu.org
-hr.eu.org
-hu.eu.org
-ie.eu.org
-il.eu.org
-in.eu.org
-int.eu.org
-is.eu.org
-it.eu.org
-jp.eu.org
-kr.eu.org
-lt.eu.org
-lu.eu.org
-lv.eu.org
-mc.eu.org
-me.eu.org
-mk.eu.org
-mt.eu.org
-my.eu.org
-net.eu.org
-ng.eu.org
-nl.eu.org
-no.eu.org
-nz.eu.org
-paris.eu.org
-pl.eu.org
-pt.eu.org
-q-a.eu.org
-ro.eu.org
-ru.eu.org
-se.eu.org
-si.eu.org
-sk.eu.org
-tr.eu.org
-uk.eu.org
-us.eu.org
-
-// Facebook, Inc.
-// Submitted by Peter Ruibal <public-suffix@fb.com>
-apps.fbsbx.com
-
-// Fastly Inc. http://www.fastly.com/
-// Submitted by Vladimir Vuksan <vladimir@fastly.com>
-a.ssl.fastly.net
-b.ssl.fastly.net
-global.ssl.fastly.net
-a.prod.fastly.net
-global.prod.fastly.net
-
-// Firebase, Inc.
-// Submitted by Chris Raynor <chris@firebase.com>
-firebaseapp.com
-
-// Flynn : https://flynn.io
-// Submitted by Jonathan Rudenberg <jonathan@flynn.io>
-flynnhub.com
-
-// GDS : https://www.gov.uk/service-manual/operations/operating-servicegovuk-subdomains
-// Submitted by David Illsley <david.illsley@digital.cabinet-office.gov.uk>
-service.gov.uk
-
-// GitHub, Inc.
-// Submitted by Patrick Toomey <security@github.com>
-github.io
-githubusercontent.com
-githubcloud.com
-*.api.githubcloud.com
-*.ext.githubcloud.com
-gist.githubcloud.com
-*.githubcloudusercontent.com
-
-// GlobeHosting, Inc.
-// Submitted by Zoltan Egresi <egresi@globehosting.com>
-ro.com
-
-// GoIP DNS Services : http://www.goip.de
-// Submitted by Christian Poulter <milchstrasse@goip.de>
-goip.de
-
-// Google, Inc.
-// Submitted by Eduardo Vela <evn@google.com>
-*.0emm.com
-appspot.com
-blogspot.ae
-blogspot.al
-blogspot.am
-blogspot.ba
-blogspot.be
-blogspot.bg
-blogspot.bj
-blogspot.ca
-blogspot.cf
-blogspot.ch
-blogspot.cl
-blogspot.co.at
-blogspot.co.id
-blogspot.co.il
-blogspot.co.ke
-blogspot.co.nz
-blogspot.co.uk
-blogspot.co.za
-blogspot.com
-blogspot.com.ar
-blogspot.com.au
-blogspot.com.br
-blogspot.com.by
-blogspot.com.co
-blogspot.com.cy
-blogspot.com.ee
-blogspot.com.eg
-blogspot.com.es
-blogspot.com.mt
-blogspot.com.ng
-blogspot.com.tr
-blogspot.com.uy
-blogspot.cv
-blogspot.cz
-blogspot.de
-blogspot.dk
-blogspot.fi
-blogspot.fr
-blogspot.gr
-blogspot.hk
-blogspot.hr
-blogspot.hu
-blogspot.ie
-blogspot.in
-blogspot.is
-blogspot.it
-blogspot.jp
-blogspot.kr
-blogspot.li
-blogspot.lt
-blogspot.lu
-blogspot.md
-blogspot.mk
-blogspot.mr
-blogspot.mx
-blogspot.my
-blogspot.nl
-blogspot.no
-blogspot.pe
-blogspot.pt
-blogspot.qa
-blogspot.re
-blogspot.ro
-blogspot.rs
-blogspot.ru
-blogspot.se
-blogspot.sg
-blogspot.si
-blogspot.sk
-blogspot.sn
-blogspot.td
-blogspot.tw
-blogspot.ug
-blogspot.vn
-cloudfunctions.net
-codespot.com
-googleapis.com
-googlecode.com
-pagespeedmobilizer.com
-withgoogle.com
-withyoutube.com
-
-// Hashbang : https://hashbang.sh
-hashbang.sh
-
-// Heroku : https://www.heroku.com/
-// Submitted by Tom Maher <tmaher@heroku.com>
-herokuapp.com
-herokussl.com
-
-// iki.fi
-// Submitted by Hannu Aronsson <haa@iki.fi>
-iki.fi
-
-// info.at : http://www.info.at/
-biz.at
-info.at
-
-// Michau Enterprises Limited : http://www.co.pl/
-co.pl
-
-// Microsoft : http://microsoft.com
-// Submitted by Barry Dorrans <bdorrans@microsoft.com>
-azurewebsites.net
-azure-mobile.net
-cloudapp.net
-
-// Mozilla Foundation : https://mozilla.org/
-// Submitted by glob <glob@mozilla.com>
-bmoattachments.org
-
-// Neustar Inc.
-// Submitted by Trung Tran <Trung.Tran@neustar.biz>
-4u.com
-
-// ngrok : https://ngrok.com/
-// Submitted by Alan Shreve <alan@ngrok.com>
-ngrok.io
-
-// NFSN, Inc. : https://www.NearlyFreeSpeech.NET/
-// Submitted by Jeff Wheelhouse <support@nearlyfreespeech.net>
-nfshost.com
-
-// nsupdate.info : https://www.nsupdate.info/
-// Submitted by Thomas Waldmann <info@nsupdate.info>
-nsupdate.info
-nerdpol.ovh
-
-// NYC.mn : http://www.information.nyc.mn
-// Submitted by Matthew Brown <mattbrown@nyc.mn>
-nyc.mn
-
-// One Fold Media : http://www.onefoldmedia.com/
-// Submitted by Eddie Jones <eddie@onefoldmedia.com>
-nid.io
-
-// Opera Software, A.S.A.
-// Submitted by Yngve Pettersen <yngve@opera.com>
-operaunite.com
-
-// OutSystems
-// Submitted by Duarte Santos <domain-admin@outsystemscloud.com>
-outsystemscloud.com
-
-// OwnProvider : http://www.ownprovider.com
-// Submitted by Jan Moennich <jan.moennich@ownprovider.com>
-ownprovider.com
-
-// oy.lc
-// Submitted by Charly Coste <changaco@changaco.oy.lc>
-oy.lc
-
-// Pagefront : https://www.pagefronthq.com/
-// Submitted by Jason Kriss <jason@pagefronthq.com>
-pagefrontapp.com
-
-// .pl domains (grandfathered)
-art.pl
-gliwice.pl
-krakow.pl
-poznan.pl
-wroc.pl
-zakopane.pl
-
-// Pantheon Systems, Inc. : https://pantheon.io/
-// Submitted by Gary Dylina <gary@pantheon.io>
-pantheonsite.io
-gotpantheon.com
-
-// Peplink | Pepwave : http://peplink.com/
-// Submitted by Steve Leung <steveleung@peplink.com>
-mypep.link
-
-// prgmr.com : https://prgmr.com/
-// Submitted by Sarah Newman <owner@prgmr.com>
-xen.prgmr.com
-
-// priv.at : http://www.nic.priv.at/
-// Submitted by registry <lendl@nic.at>
-priv.at
-
-// Publication Presse Communication SARL : https://ppcom.fr
-// Submitted by Yaacov Akiba Slama <admin@chirurgiens-dentistes-en-france.fr>
-chirurgiens-dentistes-en-france.fr
-
-// QA2
-// Submitted by Daniel Dent (https://www.danieldent.com/)
-qa2.com
-
-// Rackmaze LLC : https://www.rackmaze.com
-// Submitted by Kirill Pertsev <kika@rackmaze.com>
-rackmaze.com
-rackmaze.net
-
-// Red Hat, Inc. OpenShift : https://openshift.redhat.com/
-// Submitted by Tim Kramer <tkramer@rhcloud.com>
-rhcloud.com
-
-// RethinkDB : https://www.rethinkdb.com/
-// Submitted by Chris Kastorff <info@rethinkdb.com>
-hzc.io
-
-// Sandstorm Development Group, Inc. : https://sandcats.io/
-// Submitted by Asheesh Laroia <asheesh@sandstorm.io>
-sandcats.io
-
-// Service Online LLC : http://drs.ua/
-// Submitted by Serhii Bulakh <support@drs.ua>
-biz.ua
-co.ua
-pp.ua
-
-// SinaAppEngine : http://sae.sina.com.cn/
-// Submitted by SinaAppEngine <saesupport@sinacloud.com>
-sinaapp.com
-vipsinaapp.com
-1kapp.com
-
-// Synology, Inc. : https://www.synology.com/
-// Submitted by Rony Weng <ronyweng@synology.com>
-diskstation.me
-dscloud.biz
-dscloud.me
-dscloud.mobi
-dsmynas.com
-dsmynas.net
-dsmynas.org
-familyds.com
-familyds.net
-familyds.org
-i234.me
-myds.me
-synology.me
-
-// TASK geographical domains (www.task.gda.pl/uslugi/dns)
-gda.pl
-gdansk.pl
-gdynia.pl
-med.pl
-sopot.pl
-
-// TownNews.com domains : http://www.townnews.com
-// Submitted by Dustin Ward <dward@townnews.com>
-bloxcms.com
-townnews-staging.com
-
-// UDR Limited : http://www.udr.hk.com
-// Submitted by registry <hostmaster@udr.hk.com>
-hk.com
-hk.org
-ltd.hk
-inc.hk
-
-// Viprinet Europe GmbH : http://www.viprinet.com
-// Submitted by Simon Kissel <hostmaster@viprinet.com>
-router.management
-
-// Yola : https://www.yola.com/
-// Submitted by Stefano Rivera <stefano@yola.com>
-yolasite.com
-
-// ZaNiC : http://www.za.net/
-// Submitted by registry <hostmaster@nic.za.net>
-za.net
-za.org
-
-// ===END PRIVATE DOMAINS===
--- a/eric7/E5Network/data/test_psl.txt	Sat May 22 12:54:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-// Any copyright is dedicated to the Public Domain.
-// http://creativecommons.org/publicdomain/zero/1.0/
-
-// null input.
-checkPublicSuffix(null, null);
-// Mixed case.
-checkPublicSuffix('COM', null);
-checkPublicSuffix('example.COM', 'example.com');
-checkPublicSuffix('WwW.example.COM', 'example.com');
-// Leading dot.
-checkPublicSuffix('.com', null);
-checkPublicSuffix('.example', null);
-checkPublicSuffix('.example.com', null);
-checkPublicSuffix('.example.example', null);
-// Unlisted TLD.
-checkPublicSuffix('example', null);
-checkPublicSuffix('example.example', 'example.example');
-checkPublicSuffix('b.example.example', 'example.example');
-checkPublicSuffix('a.b.example.example', 'example.example');
-// Listed, but non-Internet, TLD.
-//checkPublicSuffix('local', null);
-//checkPublicSuffix('example.local', null);
-//checkPublicSuffix('b.example.local', null);
-//checkPublicSuffix('a.b.example.local', null);
-// TLD with only 1 rule.
-checkPublicSuffix('biz', null);
-checkPublicSuffix('domain.biz', 'domain.biz');
-checkPublicSuffix('b.domain.biz', 'domain.biz');
-checkPublicSuffix('a.b.domain.biz', 'domain.biz');
-// TLD with some 2-level rules.
-checkPublicSuffix('com', null);
-checkPublicSuffix('example.com', 'example.com');
-checkPublicSuffix('b.example.com', 'example.com');
-checkPublicSuffix('a.b.example.com', 'example.com');
-checkPublicSuffix('uk.com', null);
-checkPublicSuffix('example.uk.com', 'example.uk.com');
-checkPublicSuffix('b.example.uk.com', 'example.uk.com');
-checkPublicSuffix('a.b.example.uk.com', 'example.uk.com');
-checkPublicSuffix('test.ac', 'test.ac');
-// TLD with only 1 (wildcard) rule.
-checkPublicSuffix('bd', null);
-checkPublicSuffix('c.bd', null);
-checkPublicSuffix('b.c.bd', 'b.c.bd');
-checkPublicSuffix('a.b.c.bd', 'b.c.bd');
-// More complex TLD.
-checkPublicSuffix('jp', null);
-checkPublicSuffix('test.jp', 'test.jp');
-checkPublicSuffix('www.test.jp', 'test.jp');
-checkPublicSuffix('ac.jp', null);
-checkPublicSuffix('test.ac.jp', 'test.ac.jp');
-checkPublicSuffix('www.test.ac.jp', 'test.ac.jp');
-checkPublicSuffix('kyoto.jp', null);
-checkPublicSuffix('test.kyoto.jp', 'test.kyoto.jp');
-checkPublicSuffix('ide.kyoto.jp', null);
-checkPublicSuffix('b.ide.kyoto.jp', 'b.ide.kyoto.jp');
-checkPublicSuffix('a.b.ide.kyoto.jp', 'b.ide.kyoto.jp');
-checkPublicSuffix('c.kobe.jp', null);
-checkPublicSuffix('b.c.kobe.jp', 'b.c.kobe.jp');
-checkPublicSuffix('a.b.c.kobe.jp', 'b.c.kobe.jp');
-checkPublicSuffix('city.kobe.jp', 'city.kobe.jp');
-checkPublicSuffix('www.city.kobe.jp', 'city.kobe.jp');
-// TLD with a wildcard rule and exceptions.
-checkPublicSuffix('ck', null);
-checkPublicSuffix('test.ck', null);
-checkPublicSuffix('b.test.ck', 'b.test.ck');
-checkPublicSuffix('a.b.test.ck', 'b.test.ck');
-checkPublicSuffix('www.ck', 'www.ck');
-checkPublicSuffix('www.www.ck', 'www.ck');
-// US K12.
-checkPublicSuffix('us', null);
-checkPublicSuffix('test.us', 'test.us');
-checkPublicSuffix('www.test.us', 'test.us');
-checkPublicSuffix('ak.us', null);
-checkPublicSuffix('test.ak.us', 'test.ak.us');
-checkPublicSuffix('www.test.ak.us', 'test.ak.us');
-checkPublicSuffix('k12.ak.us', null);
-checkPublicSuffix('test.k12.ak.us', 'test.k12.ak.us');
-checkPublicSuffix('www.test.k12.ak.us', 'test.k12.ak.us');
-// IDN labels.
-checkPublicSuffix('食狮.com.cn', '食狮.com.cn');
-checkPublicSuffix('食狮.公司.cn', '食狮.公司.cn');
-checkPublicSuffix('www.食狮.公司.cn', '食狮.公司.cn');
-checkPublicSuffix('shishi.公司.cn', 'shishi.公司.cn');
-checkPublicSuffix('公司.cn', null);
-checkPublicSuffix('食狮.中国', '食狮.中国');
-checkPublicSuffix('www.食狮.中国', '食狮.中国');
-checkPublicSuffix('shishi.中国', 'shishi.中国');
-checkPublicSuffix('中国', null);
-// Same as above, but punycoded.
-checkPublicSuffix('xn--85x722f.com.cn', 'xn--85x722f.com.cn');
-checkPublicSuffix('xn--85x722f.xn--55qx5d.cn', 'xn--85x722f.xn--55qx5d.cn');
-checkPublicSuffix('www.xn--85x722f.xn--55qx5d.cn', 'xn--85x722f.xn--55qx5d.cn');
-checkPublicSuffix('shishi.xn--55qx5d.cn', 'shishi.xn--55qx5d.cn');
-checkPublicSuffix('xn--55qx5d.cn', null);
-checkPublicSuffix('xn--85x722f.xn--fiqs8s', 'xn--85x722f.xn--fiqs8s');
-checkPublicSuffix('www.xn--85x722f.xn--fiqs8s', 'xn--85x722f.xn--fiqs8s');
-checkPublicSuffix('shishi.xn--fiqs8s', 'shishi.xn--fiqs8s');
-checkPublicSuffix('xn--fiqs8s', null);
--- a/eric7/E5Utilities/E5Cache.py	Sat May 22 12:54:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,228 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2017 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-"""
-Module implementing classes used for caching objects.
-"""
-
-from PyQt6.QtCore import QDateTime, QTimer
-
-
-class E5Cache:
-    """
-    Class implementing a LRU cache of a specific size.
-    
-    If the maximum number of entries is exceeded, the least recently used item
-    is removed from the cache. A cache hit moves the entry to the front of the
-    cache.
-    """
-    def __init__(self, size=100):
-        """
-        Constructor
-        
-        @param size maximum number of entries that may be stored in the cache
-        @type int
-        @exception ValueError raised to indicate an illegal 'size' parameter
-        """
-        if size < 0:
-            raise ValueError("'size' parameter must be positive.")
-        
-        self.__size = size
-        
-        # internal objects
-        self.__keyList = []
-        self.__store = {}           # stores the cache entries
-        self.__accesStore = {}      # stores the last access date and times
-        self.__hits = 0
-        self.__misses = 0
-        self.__maxsize = 0
-        self.__maxCacheTime = 0     # 0 seconds means aging is disabled
-        
-        self.__cacheTimer = QTimer()
-        self.__cacheTimer.setSingleShot(True)
-        self.__cacheTimer.timeout.connect(self.__pruneCache)
-    
-    def __moveLast(self, key):
-        """
-        Private method to move a cached item to the MRU position.
-        
-        @param key key of the item to be retrieved
-        @type any hashable type that can be used as a dict key
-        """
-        self.__keyList.remove(key)
-        self.__keyList.append(key)
-    
-    def __adjustToSize(self):
-        """
-        Private method to adjust the cache to its size.
-        """
-        if self.__size:
-            removeList = self.__keyList[:-self.__size]
-            self.__keyList = self.__keyList[-self.__size:]
-            for key in removeList:
-                del self.__store[key]
-                del self.__accesStore[key]
-        else:
-            self.reset()
-    
-    def getSize(self):
-        """
-        Public method to get the maximum size of the cache.
-        
-        @return maximum number of entries of the cache
-        @rtype int
-        """
-        return self.__size
-    
-    def setSize(self, newSize):
-        """
-        Public method to change the maximum size of the cache.
-        
-        @param newSize maximum number of entries that may be stored in the
-            cache
-        @type int
-        """
-        if newSize >= 0:
-            self.__size = newSize
-            self.__adjustToSize()
-    
-    def getMaximumCacheTime(self):
-        """
-        Public method to get the maximum time entries may exist in the cache.
-        
-        @return maximum cache time in seconds
-        @rtype int
-        """
-        return self.__maxCacheTime
-    
-    def setMaximumCacheTime(self, time):
-        """
-        Public method to set the maximum time entries may exist in the cache.
-        
-        @param time maximum cache time in seconds
-        @type int
-        """
-        if time != self.__maxCacheTime:
-            self.__cacheTimer.stop()
-            self.__pruneCache()
-            self.__maxCacheTime = time
-            if self.__maxCacheTime > 0:
-                self.__cacheTimer.setInterval(self.__maxCacheTime * 1000)
-                self.__cacheTimer.start()
-    
-    def get(self, key):
-        """
-        Public method to get an entry from the cache given its key.
-        
-        If the key is present in the cache, it is moved to the MRU position.
-        
-        @param key key of the item to be retrieved
-        @type any hashable type that can be used as a dict key
-        @return cached item for the given key or None, if the key is not
-            present
-        @rtype object or None
-        """
-        if key in self.__store:
-            self.__hits += 1
-            self.__moveLast(key)
-            self.__accesStore[key] = QDateTime.currentDateTimeUtc()
-            return self.__store[key]
-        else:
-            self.__misses += 1
-            return None
-    
-    def add(self, key, item):
-        """
-        Public method to add an item to the cache.
-        
-        If the key is already in use, the cached item is replaced by the new
-        one given and is moved to the MRU position
-        
-        @param key key of the item to be retrieved
-        @type any hashable type that can be used as a dict key
-        @param item item to be cached under the given key
-        @type object
-        """
-        if key in self.__store:
-            self.__moveLast(key)
-        else:
-            self.__keyList.append(key)
-        self.__store[key] = item
-        self.__accesStore[key] = QDateTime.currentDateTimeUtc()
-        
-        self.__adjustToSize()
-        
-        self.__maxsize = max(self.__maxsize, len(self.__keyList))
-    
-    def remove(self, key):
-        """
-        Public method to remove an item from the cache.
-        
-        @param key key of the item to be retrieved
-        @type any hashable type that can be used as a dict key
-        """
-        if key in self.__store:
-            del self.__store[key]
-            del self.__accesStore[key]
-            self.__keyList.remove(key)
-    
-    def clear(self):
-        """
-        Public method to clear the cache.
-        """
-        self.__keyList = []
-        self.__store = {}
-        self.__accesStore = {}
-    
-    def reset(self):
-        """
-        Public method to reset the cache.
-        
-        This is like clear() but sets the various counters to their initial
-        value as well.
-        """
-        self.clear()
-        self.__hits = 0
-        self.__misses = 0
-        self.__maxsize = 0
-    
-    def length(self):
-        """
-        Public method to get the current length of the cache.
-        
-        @return current length of the cache
-        @rtype int
-        """
-        return len(self.__keyList)
-    
-    def info(self):
-        """
-        Public method to get some information about the cache.
-        
-        @return dictionary containing the cache info
-        @rtype dict (with keys "hits", "misses", "maxsize", "currsize")
-        """
-        return {
-            "hits": self.__hits,
-            "misses": self.__misses,
-            "maxsize": self.__maxsize,
-            "currsize": self.length(),
-        }
-    
-    def __pruneCache(self):
-        """
-        Private slot to prune outdated cache entries and restart the timer.
-        """
-        if self.__maxCacheTime > 0:
-            current = QDateTime.currentDateTimeUtc()
-            
-            keysToBeDeleted = []
-            for key, lastAccessTime in self.__accesStore.items():
-                if lastAccessTime.secsTo(current) > self.__maxCacheTime:
-                    keysToBeDeleted.append(key)
-            for key in keysToBeDeleted:
-                self.remove(key)
-        
-            self.__cacheTimer.start()
--- a/eric7/E5Utilities/E5MutexLocker.py	Sat May 22 12:54:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2020 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-"""
-Module implementing a context manager locking and unlocking a mutex.
-"""
-
-import contextlib
-
-
-class E5MutexLocker(contextlib.AbstractContextManager):
-    """
-    Class implementing a context manager locking and unlocking a mutex.
-    """
-    def __init__(self, mutex):
-        """
-        Constructor
-        
-        @param mutex reference to the mutex to be locked
-        @type QMutex or QRecursiveMutex
-        """
-        self.__mutex = mutex
-    
-    def __enter__(self):
-        """
-        Special method called when entering the runtime ccontext.
-        
-        @return reference to the context manager object
-        @rtype E5OverrideCursor
-        """
-        self.__mutex.lock()
-        
-        return self
-    
-    def __exit__(self, exc_type, exc_value, traceback):
-        """
-        Special method called when exiting the runtime ccontext.
-        
-        @param exc_type type of an exception raised in the runtime context
-        @param exc_value value of an exception raised in the runtime context
-        @param traceback traceback of an exception raised in the runtime
-            context
-        @return always returns None to not suppress any exception
-        @rtype None
-        """
-        self.__mutex.unlock()
-        
-        return None     # __IGNORE_WARNING_M831__
--- a/eric7/E5Utilities/__init__.py	Sat May 22 12:54:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2017 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-"""
-Package containing utility modules.
-"""
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/EricNetwork/EricFtp.py	Sat May 22 16:52:45 2021 +0200
@@ -0,0 +1,369 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2012 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing an extension to the Python FTP class to support FTP
+proxies.
+"""
+
+import enum
+import ftplib           # secok
+from socket import _GLOBAL_DEFAULT_TIMEOUT
+
+
+class EricFtpProxyError(ftplib.Error):
+    """
+    Class to signal an error related to proxy configuration.
+    
+    The error message starts with a three digit error code followed by a
+    space and the error string. Supported error codes are:
+    <ul>
+      <li>910: proxy error; the second number gives the category of the proxy
+          error. The original response from the proxy is appended in the next
+          line.</li>
+      <li>930: proxy error; the second number gives the category of the proxy
+          error. The original response from the proxy is appended in the next
+          line.</li>
+      <li>940: proxy error; the second number gives the category of the proxy
+          error. The original response from the proxy is appended in the next
+          line.</li>
+      <li>950: proxy error; the second number gives the category of the proxy
+          error. The original response from the proxy is appended in the next
+          line.</li>
+      <li>990: proxy usage is enabled but no proxy host given</li>
+      <li>991: proxy usage is enabled but no proxy user given</li>
+      <li>992: proxy usage is enabled but no proxy password given</li>
+    </ul>
+    """
+    pass
+
+
+class EricFtpProxyType(enum.Enum):
+    """
+    Class defining the supported FTP proxy types.
+    """
+    NO_PROXY = 0                    # no proxy
+    NON_AUTHORIZING = 1             # non authorizing proxy
+    USER_SERVER = 2                 # proxy login first, than user@remote.host
+    SITE = 3                        # proxy login first, than use SITE command
+    OPEN = 4                        # proxy login first, than use OPEN command
+    USER_PROXYUSER_SERVER = 5       # one login for both
+    PROXYUSER_SERVER = 6
+    # proxy login with remote host given, than normal remote login
+    AUTH_RESP = 7  # authenticate to proxy with AUTH and RESP commands
+    BLUECOAT = 8                    # bluecoat proxy
+
+
+class EricFtp(ftplib.FTP):
+    """
+    Class implementing an extension to the Python FTP class to support FTP
+    proxies.
+    """
+    def __init__(self, host="", user="", password="", acct="",          # secok
+                 proxyType=EricFtpProxyType.NO_PROXY, proxyHost="",
+                 proxyPort=ftplib.FTP_PORT, proxyUser="", proxyPassword="",
+                 proxyAccount="", timeout=_GLOBAL_DEFAULT_TIMEOUT):
+        """
+        Constructor
+        
+        @param host name of the FTP host
+        @type str
+        @param user user name for login to FTP host
+        @type str
+        @param password password for login to FTP host
+        @type str
+        @param acct account for login to FTP host
+        @type str
+        @param proxyType type of the FTP proxy
+        @type EricFtpProxyType
+        @param proxyHost name of the FTP proxy
+        @type str
+        @param proxyPort port of the FTP proxy
+        @type int
+        @param proxyUser user name for login to the proxy
+        @type str
+        @param proxyPassword password for login to the proxy
+        @type str
+        @param proxyAccount accounting info for the proxy
+        @type str
+        @param timeout timeout in seconds for blocking operations
+        @type int
+        """
+        super().__init__()
+        
+        self.__timeout = timeout
+        
+        self.__proxyType = proxyType
+        self.__proxyHost = proxyHost
+        self.__proxyPort = proxyPort
+        self.__proxyUser = proxyUser
+        self.__proxyPassword = proxyPassword
+        self.__proxyAccount = proxyAccount
+        
+        self.__host = host
+        self.__port = ftplib.FTP_PORT
+        self.__user = user
+        self.__password = password
+        self.__acct = acct
+        
+        if host:
+            self.connect(host)
+            if user:
+                self.login(user, password, acct)
+    
+    def setProxy(self, proxyType=EricFtpProxyType.NO_PROXY, proxyHost="",
+                 proxyPort=ftplib.FTP_PORT, proxyUser="", proxyPassword="",
+                 proxyAccount=""):
+        """
+        Public method to set the proxy configuration.
+        
+        @param proxyType type of the FTP proxy
+        @type EricFtpProxyType
+        @param proxyHost name of the FTP proxy
+        @type str
+        @param proxyPort port of the FTP proxy
+        @type int
+        @param proxyUser user name for login to the proxy
+        @type str
+        @param proxyPassword password  for login to the proxy
+        @type str
+        @param proxyAccount accounting info for the proxy
+        @type str
+        """
+        self.__proxyType = proxyType
+        self.__proxyHost = proxyHost
+        self.__proxyPort = proxyPort
+        self.__proxyUser = proxyUser
+        self.__proxyPassword = proxyPassword
+        self.__proxyAccount = proxyAccount
+    
+    def setProxyAuthentication(self, proxyUser="", proxyPassword="",
+                               proxyAccount=""):
+        """
+        Public method to set the proxy authentication info.
+        
+        @param proxyUser user name for login to the proxy
+        @type str
+        @param proxyPassword password  for login to the proxy
+        @type str
+        @param proxyAccount accounting info for the proxy
+        @type str
+        """
+        self.__proxyUser = proxyUser
+        self.__proxyPassword = proxyPassword
+        self.__proxyAccount = proxyAccount
+    
+    def connect(self, host="", port=0, timeout=-999):
+        """
+        Public method to connect to the given FTP server.
+        
+        This extended method connects to the proxy instead of the given host,
+        if a proxy is to be used. It throws an exception, if the proxy data
+        is incomplete.
+        
+        @param host name of the FTP host
+        @type str
+        @param port port of the FTP host
+        @type int
+        @param timeout timeout in seconds for blocking operations
+        @type int
+        @return welcome message of the server
+        @rtype str
+        @exception EricFtpProxyError raised to indicate a proxy related issue
+        """
+        if host:
+            self.__host = host
+        if port:
+            self.__port = port
+        if timeout != -999:
+            self.__timeout = timeout
+        
+        if self.__proxyType != EricFtpProxyType.NO_PROXY:
+            if not self.__proxyHost:
+                raise EricFtpProxyError(
+                    "990 Proxy usage requested, but no proxy host given.")
+            
+            return super().connect(
+                self.__proxyHost, self.__proxyPort, self.__timeout)
+        else:
+            return super().connect(
+                self.__host, self.__port, self.__timeout)
+    
+    def login(self, user="", password="", acct=""):         # secok
+        """
+        Public method to login to the FTP server.
+        
+        This extended method respects the FTP proxy configuration. There are
+        many different FTP proxy products available. But unfortunately there
+        is no standard for how o traverse a FTP proxy. The lis below shows
+        the sequence of commands used.
+        
+        <table>
+          <tr><td>user</td><td>Username for remote host</td></tr>
+          <tr><td>pass</td><td>Password for remote host</td></tr>
+          <tr><td>pruser</td><td>Username for FTP proxy</td></tr>
+          <tr><td>prpass</td><td>Password for FTP proxy</td></tr>
+          <tr><td>remote.host</td><td>Hostname of the remote FTP server</td>
+          </tr>
+        </table>
+        
+        <dl>
+          <dt>EricFtpProxyType.NO_PROXY:</dt>
+          <dd>
+            USER user<br/>
+            PASS pass
+          </dd>
+          <dt>EricFtpProxyType.NON_AUTHORIZING:</dt>
+          <dd>
+            USER user@remote.host<br/>
+            PASS pass
+          </dd>
+          <dt>EricFtpProxyType.USER_SERVER:</dt>
+          <dd>
+            USER pruser<br/>
+            PASS prpass<br/>
+            USER user@remote.host<br/>
+            PASS pass
+          </dd>
+          <dt>EricFtpProxyType.SITE:</dt>
+          <dd>
+            USER pruser<br/>
+            PASS prpass<br/>
+            SITE remote.site<br/>
+            USER user<br/>
+            PASS pass
+          </dd>
+          <dt>EricFtpProxyType.OPEN:</dt>
+          <dd>
+            USER pruser<br/>
+            PASS prpass<br/>
+            OPEN remote.site<br/>
+            USER user<br/>
+            PASS pass
+          </dd>
+          <dt>EricFtpProxyType.USER_PROXYUSER_SERVER:</dt>
+          <dd>
+            USER user@pruser@remote.host<br/>
+            PASS pass@prpass
+          </dd>
+          <dt>EricFtpProxyType.PROXYUSER_SERVER:</dt>
+          <dd>
+            USER pruser@remote.host<br/>
+            PASS prpass<br/>
+            USER user<br/>
+            PASS pass
+          </dd>
+          <dt>EricFtpProxyType.AUTH_RESP:</dt>
+          <dd>
+            USER user@remote.host<br/>
+            PASS pass<br/>
+            AUTH pruser<br/>
+            RESP prpass
+          </dd>
+          <dt>EricFtpProxyType.BLUECOAT:</dt>
+          <dd>
+            USER user@remote.host pruser<br/>
+            PASS pass<br/>
+            ACCT prpass
+          </dd>
+        </dl>
+        
+        @param user username for the remote host
+        @type str
+        @param password password for the remote host
+        @type str
+        @param acct accounting information for the remote host
+        @type str
+        @return response sent by the remote host
+        @rtype str
+        @exception EricFtpProxyError raised to indicate a proxy related issue
+        @exception ftplib.error_reply raised to indicate an FTP error reply
+        """
+        if not user:
+            user = "anonymous"
+        if not password:
+            # make sure it is a string
+            password = ""           # secok
+        if not acct:
+            # make sure it is a string
+            acct = ""
+        if user == "anonymous" and password in {'', '-'}:
+            password += "anonymous@"
+        
+        if self.__proxyType != EricFtpProxyType.NO_PROXY:
+            if self.__proxyType != EricFtpProxyType.NON_AUTHORIZING:
+                # check, if a valid proxy configuration is known
+                if not self.__proxyUser:
+                    raise EricFtpProxyError(
+                        "991 Proxy usage requested, but no proxy user given")
+                if not self.__proxyPassword:
+                    raise EricFtpProxyError(
+                        "992 Proxy usage requested, but no proxy password"
+                        " given")
+            
+            if self.__proxyType in [EricFtpProxyType.NON_AUTHORIZING,
+                                    EricFtpProxyType.AUTH_RESP,
+                                    EricFtpProxyType.BLUECOAT]:
+                user += "@" + self.__host
+                if self.__proxyType == EricFtpProxyType.BLUECOAT:
+                    user += " " + self.__proxyUser
+                    acct = self.__proxyPassword
+            elif self.__proxyType == EricFtpProxyType.USER_PROXYUSER_SERVER:
+                user = "{0}@{1}@{2}".format(
+                    user, self.__proxyUser, self.__host)
+                password = "{0}@{1}".format(password, self.__proxyPassword)
+            else:
+                pruser = self.__proxyUser
+                if self.__proxyType == EricFtpProxyType.USER_SERVER:
+                    user += "@" + self.__host
+                elif self.__proxyType == EricFtpProxyType.PROXYUSER_SERVER:
+                    pruser += "@" + self.__host
+                
+                # authenticate to the proxy first
+                presp = self.sendcmd("USER " + pruser)
+                if presp[0] == "3":
+                    presp = self.sendcmd("PASS " + self.__proxyPassword)
+                if presp[0] == "3" and self.__proxyAccount:
+                    presp = self.sendcmd("ACCT " + self.__proxyAccount)
+                if presp[0] != "2":
+                    raise EricFtpProxyError(
+                        "9{0}0 Error authorizing at proxy\n{1}".format(
+                            presp[0], presp))
+                
+                if self.__proxyType == EricFtpProxyType.SITE:
+                    # send SITE command
+                    presp = self.sendcmd("SITE " + self.__host)
+                    if presp[0] != "2":
+                        raise EricFtpProxyError(
+                            "9{0}0 Error sending SITE command\n{1}".format(
+                                presp[0], presp))
+                elif self.__proxyType == EricFtpProxyType.OPEN:
+                    # send OPEN command
+                    presp = self.sendcmd("OPEN " + self.__host)
+                    if presp[0] != "2":
+                        raise EricFtpProxyError(
+                            "9{0}0 Error sending OPEN command\n{1}".format(
+                                presp[0], presp))
+        
+        # authenticate to the remote host or combined to proxy and remote host
+        resp = self.sendcmd("USER " + user)
+        if resp[0] == "3":
+            resp = self.sendcmd("PASS " + password)
+        if resp[0] == "3":
+            resp = self.sendcmd("ACCT " + acct)
+        if resp[0] != "2":
+            raise ftplib.error_reply(resp)          # secok
+        
+        if self.__proxyType == EricFtpProxyType.AUTH_RESP:
+            # authorize to the FTP proxy
+            presp = self.sendcmd("AUTH " + self.__proxyUser)
+            if presp[0] == "3":
+                presp = self.sendcmd("RESP " + self.__proxyPassword)
+            if presp[0] != "2":
+                raise EricFtpProxyError(
+                    "9{0}0 Error authorizing at proxy\n{1}".format(
+                        presp[0], presp))
+        
+        return resp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/EricNetwork/EricGoogleMail.py	Sat May 22 16:52:45 2021 +0200
@@ -0,0 +1,359 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2017 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing a dialog to send bug reports.
+"""
+
+import os
+import base64
+import json
+import datetime
+import contextlib
+
+from googleapiclient import discovery
+from google.oauth2.credentials import Credentials
+from requests_oauthlib import OAuth2Session
+
+from PyQt6.QtCore import pyqtSlot, pyqtSignal, QObject, QUrl, QUrlQuery
+from PyQt6.QtWidgets import QDialog, QDialogButtonBox, QVBoxLayout
+
+from E5Gui.E5TextInputDialog import E5TextInputDialog
+
+import Globals
+
+from .EricGoogleMailHelpers import (
+    CLIENT_SECRET_FILE, SCOPES, TOKEN_FILE, APPLICATION_NAME
+)
+
+
+class EricGoogleMailAuthBrowser(QDialog):
+    """
+    Class implementing a simple web browser to perform the OAuth2
+    authentication process.
+    
+    @signal approvalCodeReceived(str) emitted to indicate the receipt of the
+        approval code
+    """
+    approvalCodeReceived = pyqtSignal(str)
+    
+    def __init__(self, parent=None):
+        """
+        Constructor
+        
+        @param parent reference to the parent widget
+        @type QWidget
+        """
+        super().__init__(parent)
+        
+        self.__layout = QVBoxLayout(self)
+        
+        from PyQt6.QtWebEngineWidgets import QWebEngineView
+        self.__browser = QWebEngineView(self)
+        self.__browser.titleChanged.connect(self.__titleChanged)
+        self.__browser.loadFinished.connect(self.__pageLoadFinished)
+        self.__layout.addWidget(self.__browser)
+        
+        self.__buttonBox = QDialogButtonBox(
+            QDialogButtonBox.StandardButton.Close)
+        self.__buttonBox.rejected.connect(self.reject)
+        self.__layout.addWidget(self.__buttonBox)
+        
+        self.resize(600, 700)
+    
+    @pyqtSlot(str)
+    def __titleChanged(self, title):
+        """
+        Private slot handling changes of the web page title.
+        
+        @param title web page title
+        @type str
+        """
+        self.setWindowTitle(title)
+    
+    @pyqtSlot()
+    def __pageLoadFinished(self):
+        """
+        Private slot handling the loadFinished signal.
+        """
+        url = self.__browser.url()
+        if url.toString().startswith(
+                "https://accounts.google.com/o/oauth2/approval/v2"):
+            urlQuery = QUrlQuery(url)
+            approvalCode = urlQuery.queryItemValue(
+                "approvalCode", QUrl.ComponentFormattingOption.FullyDecoded)
+            if approvalCode:
+                self.approvalCodeReceived.emit(approvalCode)
+                self.close()
+    
+    def load(self, url):
+        """
+        Public method to start the authorization flow by loading the given URL.
+        
+        @param url URL to be laoded
+        @type str or QUrl
+        """
+        self.__browser.setUrl(QUrl(url))
+
+
+class EricGoogleMail(QObject):
+    """
+    Class implementing the logic to send emails via Google Mail.
+    
+    @signal sendResult(bool, str) emitted to indicate the transmission result
+        and a result message
+    """
+    sendResult = pyqtSignal(bool, str)
+    
+    def __init__(self, parent=None):
+        """
+        Constructor
+        
+        @param parent reference to the parent object
+        @type QObject
+        """
+        super().__init__(parent=parent)
+        
+        self.__messages = []
+        
+        self.__session = None
+        self.__clientConfig = {}
+        
+        self.__browser = None
+    
+    def sendMessage(self, message):
+        """
+        Public method to send a message via Google Mail.
+        
+        @param message email message to be sent
+        @type email.mime.text.MIMEBase
+        """
+        self.__messages.append(message)
+        
+        if not self.__session:
+            self.__startSession()
+        else:
+            self.__doSendMessages()
+    
+    def __prepareMessage(self, message):
+        """
+        Private method to prepare the message for sending.
+        
+        @param message message to be prepared
+        @type email.mime.text.MIMEBase
+        @return prepared message dictionary
+        @rtype dict
+        """
+        messageAsBase64 = base64.urlsafe_b64encode(message.as_bytes())
+        raw = messageAsBase64.decode()
+        return {'raw': raw}
+    
+    def __startSession(self):
+        """
+        Private method to start an authorized session and optionally start the
+        authorization flow.
+        """
+        # check for availability of secrets file
+        if not os.path.exists(os.path.join(Globals.getConfigDir(),
+                                           CLIENT_SECRET_FILE)):
+            self.sendResult.emit(
+                False,
+                self.tr("The client secrets file is not present. Has the Gmail"
+                        " API been enabled?")
+            )
+            return
+        
+        with open(os.path.join(Globals.getConfigDir(), CLIENT_SECRET_FILE),
+                  "r") as clientSecret:
+            clientData = json.load(clientSecret)
+            self.__clientConfig = clientData['installed']
+        token = self.__loadToken()
+        if token is None:
+            # no valid OAuth2 token available
+            self.__session = OAuth2Session(
+                self.__clientConfig['client_id'],
+                scope=SCOPES,
+                redirect_uri=self.__clientConfig['redirect_uris'][0]
+            )
+            authorizationUrl, _ = self.__session.authorization_url(
+                self.__clientConfig['auth_uri'],
+                access_type="offline",
+                prompt="select_account"
+            )
+            if self.__browser is None:
+                with contextlib.suppress(ImportError):
+                    self.__browser = EricGoogleMailAuthBrowser()
+                    self.__browser.approvalCodeReceived.connect(
+                        self.__processAuthorization)
+            if self.__browser:
+                self.__browser.show()
+                self.__browser.load(QUrl(authorizationUrl))
+            else:
+                from PyQt6.QtGui import QDesktopServices
+                QDesktopServices.openUrl(QUrl(authorizationUrl))
+                ok, authCode = E5TextInputDialog.getText(
+                    None,
+                    self.tr("OAuth2 Authorization Code"),
+                    self.tr("Enter the OAuth2 authorization code:"))
+                if ok and authCode:
+                    self.__processAuthorization(authCode)
+                else:
+                    self.__session = None
+        else:
+            self.__session = OAuth2Session(
+                self.__clientConfig['client_id'],
+                scope=SCOPES,
+                redirect_uri=self.__clientConfig['redirect_uris'][0],
+                token=token,
+                auto_refresh_kwargs={
+                    'client_id': self.__clientConfig['client_id'],
+                    'client_secret': self.__clientConfig['client_secret'],
+                },
+                auto_refresh_url=self.__clientConfig['token_uri'],
+                token_updater=self.__saveToken)
+            self.__doSendMessages()
+    
+    @pyqtSlot(str)
+    def __processAuthorization(self, authCode):
+        """
+        Private slot to process the received authorization code.
+        
+        @param authCode received authorization code
+        @type str
+        """
+        self.__session.fetch_token(
+            self.__clientConfig['token_uri'],
+            client_secret=self.__clientConfig['client_secret'],
+            code=authCode)
+        self.__saveToken(self.__session.token)
+        
+        # authorization completed; now send all queued messages
+        self.__doSendMessages()
+    
+    def __doSendMessages(self):
+        """
+        Private method to send all queued messages.
+        """
+        if not self.__session:
+            self.sendResult.emit(
+                False,
+                self.tr("No authorized session available.")
+            )
+            return
+        
+        try:
+            results = []
+            credentials = self.__credentialsFromSession()
+            service = discovery.build('gmail', 'v1', credentials=credentials,
+                                      cache_discovery=False)
+            count = 0
+            while self.__messages:
+                count += 1
+                message = self.__messages.pop(0)
+                message1 = self.__prepareMessage(message)
+                service.users().messages().send(
+                    userId="me", body=message1).execute()
+                results.append(self.tr("Message #{0} sent.").format(count))
+
+            self.sendResult.emit(True, "\n\n".join(results))
+        except Exception as error:
+            self.sendResult.emit(False, str(error))
+    
+    def __loadToken(self):
+        """
+        Private method to load a token from the token file.
+        
+        @return loaded token
+        @rtype dict or None
+        """
+        homeDir = os.path.expanduser('~')
+        credentialsDir = os.path.join(homeDir, '.credentials')
+        if not os.path.exists(credentialsDir):
+            os.makedirs(credentialsDir)
+        tokenPath = os.path.join(credentialsDir, TOKEN_FILE)
+        
+        if os.path.exists(tokenPath):
+            with open(tokenPath, "r") as tokenFile:
+                return json.load(tokenFile)
+        else:
+            return None
+    
+    def __saveToken(self, token):
+        """
+        Private method to save a token to the token file.
+        
+        @param token token to be saved
+        @type dict
+        """
+        homeDir = os.path.expanduser('~')
+        credentialsDir = os.path.join(homeDir, '.credentials')
+        if not os.path.exists(credentialsDir):
+            os.makedirs(credentialsDir)
+        tokenPath = os.path.join(credentialsDir, TOKEN_FILE)
+        
+        with open(tokenPath, "w") as tokenFile:
+            json.dump(token, tokenFile)
+    
+    def __credentialsFromSession(self):
+        """
+        Private method to create a credentials object.
+        
+        @return created credentials object
+        @rtype google.oauth2.credentials.Credentials
+        """
+        credentials = None
+        
+        if self.__clientConfig and self.__session:
+            token = self.__session.token
+            if token:
+                credentials = Credentials(
+                    token['access_token'],
+                    refresh_token=token.get('refresh_token'),
+                    id_token=token.get('id_token'),
+                    token_uri=self.__clientConfig['token_uri'],
+                    client_id=self.__clientConfig['client_id'],
+                    client_secret=self.__clientConfig['client_secret'],
+                    scopes=SCOPES
+                )
+                credentials.expiry = datetime.datetime.fromtimestamp(
+                    token['expires_at'])
+        
+        return credentials
+
+
+def GoogleMailHelp():
+    """
+    Module function to get some help about how to enable the Google Mail
+    OAuth2 service.
+    
+    @return help text
+    @rtype str
+    """
+    return (
+        "<h2>Steps to turn on the Gmail API</h2>"
+        "<ol>"
+        "<li>Use <a href='{0}'>this wizard</a> to create or select a project"
+        " in the Google Developers Console and automatically turn on the API."
+        " Click <b>Continue</b>, then <b>Go to credentials</b>.</li>"
+        "<li>At the top of the page, select the <b>OAuth consent screen</b>"
+        " tab. Select an <b>Email address</b>, enter a <b>Product name</b> if"
+        " not already set, and click the <b>Save</b> button.</li>"
+        "<li>Select the <b>Credentials</b> tab, click the <b>Add credentials"
+        "</b> button and select <b>OAuth 2.0 client ID</b>.</li>"
+        "<li>Select the application type <b>Other</b>, enter the name &quot;"
+        "{1}&quot;, and click the <b>Create</b>"
+        " button.</li>"
+        "<li>Click <b>OK</b> to dismiss the resulting dialog.</li>"
+        "<li>Click the (Download JSON) button to the right of the client ID."
+        "</li>"
+        "<li>Move this file to the eric configuration directory"
+        " <code>{2}</code> and rename it <code>{3}</code>.</li>"
+        "</ol>".format(
+            "https://console.developers.google.com/start/api?id=gmail",
+            APPLICATION_NAME,
+            Globals.getConfigDir(),
+            CLIENT_SECRET_FILE
+        )
+    )
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/EricNetwork/EricGoogleMailHelpers.py	Sat May 22 16:52:45 2021 +0200
@@ -0,0 +1,47 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2019 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing some helpers for Google mail.
+"""
+
+import os
+
+import Globals
+
+SCOPES = 'https://www.googleapis.com/auth/gmail.send'
+CLIENT_SECRET_FILE = 'eric_client_secret.json'          # secok
+TOKEN_FILE = 'eric_python_email_send_token.json'        # secok
+APPLICATION_NAME = 'Eric Python Send Email'
+
+RequiredPackages = (
+    "google-api-python-client",
+    "requests-oauthlib",
+)
+
+
+def isClientSecretFileAvailable():
+    """
+    Module function to check, if the client secret file has been installed.
+    
+    @return flag indicating, that the credentials file is there
+    @rtype bool
+    """
+    return os.path.exists(
+        os.path.join(Globals.getConfigDir(), CLIENT_SECRET_FILE))
+
+
+def getInstallCommand():
+    """
+    Module function to get the install command to get the Google mail support
+    activated.
+    
+    @return install command
+    @rtype str
+    """
+    pipCommand = "pip install --upgrade {0}".format(
+        " ".join(RequiredPackages))
+    
+    return pipCommand
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/EricNetwork/EricJsonClient.py	Sat May 22 16:52:45 2021 +0200
@@ -0,0 +1,203 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2017 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing the JSON based client base class.
+"""
+
+import io
+import sys
+import socket
+import select
+import traceback
+import json
+import contextlib
+
+
+class EricJsonClient:
+    """
+    Class implementing a JSON based client base class.
+    """
+    def __init__(self, host, port, idString=""):
+        """
+        Constructor
+        
+        @param host ip address the background service is listening
+        @type str
+        @param port port of the background service
+        @type int
+        @param idString assigned client id to be sent back to the server in
+            order to identify the connection
+        @type str
+        """
+        self.__connection = socket.create_connection((host, port))
+        if idString:
+            reply = idString + '\n'
+            self.__connection.sendall(reply.encode('utf8', 'backslashreplace'))
+    
+    def sendJson(self, command, params):
+        """
+        Public method to send a single refactoring command to the server.
+        
+        @param command command name to be sent
+        @type str
+        @param params dictionary of named parameters for the command
+        @type dict
+        """
+        commandDict = {
+            "jsonrpc": "2.0",
+            "method": command,
+            "params": params,
+        }
+        cmd = json.dumps(commandDict) + '\n'
+        self.__connection.sendall(cmd.encode('utf8', 'backslashreplace'))
+    
+    def __receiveJson(self):
+        """
+        Private method to receive a JSON encode command and data from the
+        server.
+        
+        @return tuple containing the received command and a dictionary
+            containing the associated data
+        @rtype tuple of (str, dict)
+        """
+        # step 1: receive the data
+        # The JSON RPC string is prefixed by a 9 character long length field.
+        length = self.__connection.recv(9)
+        if len(length) < 9:
+            # invalid length string received
+            return None, None
+        
+        length = int(length)
+        data = b''
+        while len(data) < length:
+            newData = self.__connection.recv(length - len(data))
+            if not newData:
+                return None, None
+            
+            data += newData
+        
+        # step 2: decode and convert the data
+        line = data.decode(
+            'utf8', 'backslashreplace')
+        try:
+            commandDict = json.loads(line.strip())
+        except (TypeError, ValueError) as err:
+            self.sendJson("ClientException", {
+                "ExceptionType": "ProtocolError",
+                "ExceptionValue": str(err),
+                "ProtocolData": line.strip(),
+            })
+            return None, None
+        
+        method = commandDict["method"]
+        params = commandDict["params"]
+        
+        return method, params
+    
+    def handleCall(self, method, params):
+        """
+        Public method to handle a method call from the server.
+        
+        Note: This is an empty implementation that must be overridden in
+        derived classes.
+        
+        @param method requested method name
+        @type str
+        @param params dictionary with method specific parameters
+        @type dict
+        """
+        pass
+    
+    def run(self):
+        """
+        Public method implementing the main loop of the client.
+        """
+        try:
+            selectErrors = 0
+            while selectErrors <= 10:  # selected arbitrarily
+                try:
+                    rrdy, wrdy, xrdy = select.select(
+                        [self.__connection], [], [])
+                    
+                    # Just waiting for self.__connection. Therefor no check
+                    # needed.
+                    method, params = self.__receiveJson()
+                    if method is None:
+                        selectErrors += 1
+                    elif method == "Exit":
+                        break
+                    else:
+                        self.handleCall(method, params)
+                        
+                        # reset select errors
+                        selectErrors = 0
+                
+                except (select.error, KeyboardInterrupt, socket.error):
+                    selectErrors += 1
+        
+        except Exception:
+            exctype, excval, exctb = sys.exc_info()
+            tbinfofile = io.StringIO()
+            traceback.print_tb(exctb, None, tbinfofile)
+            tbinfofile.seek(0)
+            tbinfo = tbinfofile.read()
+            del exctb
+            self.sendJson("ClientException", {
+                "ExceptionType": str(exctype),
+                "ExceptionValue": str(excval),
+                "Traceback": tbinfo,
+            })
+
+        # Give time to process latest response on server side
+        with contextlib.suppress(socket.error, OSError):
+            self.__connection.shutdown(socket.SHUT_RDWR)
+            self.__connection.close()
+    
+    def poll(self, waitMethod=""):
+        """
+        Public method to check and receive one message (if available).
+        
+        @param waitMethod name of a method to wait for
+        @type str
+        @return dictionary containing the data of the waited for method
+        @rtype dict
+        """
+        try:
+            if waitMethod:
+                rrdy, wrdy, xrdy = select.select(
+                    [self.__connection], [], [])
+            else:
+                rrdy, wrdy, xrdy = select.select(
+                    [self.__connection], [], [], 0)
+            
+            if self.__connection in rrdy:
+                method, params = self.__receiveJson()
+                if method is not None:
+                    if method == "Exit":
+                        self.__exitClient = True
+                    elif method == waitMethod:
+                        return params
+                    else:
+                        self.handleCall(method, params)
+        
+        except (select.error, KeyboardInterrupt, socket.error):
+            # just ignore these
+            pass
+        
+        except Exception:
+            exctype, excval, exctb = sys.exc_info()
+            tbinfofile = io.StringIO()
+            traceback.print_tb(exctb, None, tbinfofile)
+            tbinfofile.seek(0)
+            tbinfo = tbinfofile.read()
+            del exctb
+            self.sendJson("ClientException", {
+                "ExceptionType": str(exctype),
+                "ExceptionValue": str(excval),
+                "Traceback": tbinfo,
+            })
+        
+        return None
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/EricNetwork/EricJsonServer.py	Sat May 22 16:52:45 2021 +0200
@@ -0,0 +1,335 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2017 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing the JSON based server base class.
+"""
+
+import contextlib
+import json
+
+from PyQt6.QtCore import (
+    pyqtSlot, QProcess, QProcessEnvironment, QCoreApplication, QEventLoop,
+    QTimer
+)
+from PyQt6.QtNetwork import QTcpServer, QHostAddress
+
+from E5Gui import E5MessageBox
+
+import Preferences
+import Utilities
+
+
+class EricJsonServer(QTcpServer):
+    """
+    Class implementing a JSON based server base class.
+    """
+    def __init__(self, name="", multiplex=False, parent=None):
+        """
+        Constructor
+        
+        @param name name of the server (used for output only)
+        @type str
+        @param multiplex flag indicating a multiplexing server
+        @type bool
+        @param parent parent object
+        @type QObject
+        """
+        super().__init__(parent)
+        
+        self.__name = name
+        self.__multiplex = multiplex
+        if self.__multiplex:
+            self.__clientProcesses = {}
+            self.__connections = {}
+        else:
+            self.__clientProcess = None
+            self.__connection = None
+        
+        # setup the network interface
+        networkInterface = Preferences.getDebugger("NetworkInterface")
+        if networkInterface == "all" or '.' in networkInterface:
+            # IPv4
+            self.__hostAddress = '127.0.0.1'
+        else:
+            # IPv6
+            self.__hostAddress = '::1'
+        self.listen(QHostAddress(self.__hostAddress))
+
+        self.newConnection.connect(self.handleNewConnection)
+        
+        port = self.serverPort()
+        ## Note: Need the port if client is started external in debugger.
+        print('JSON server ({1}) listening on: {0:d}'   # __IGNORE_WARNING__
+              .format(port, self.__name))
+    
+    @pyqtSlot()
+    def handleNewConnection(self):
+        """
+        Public slot for new incoming connections from a client.
+        """
+        connection = self.nextPendingConnection()
+        if not connection.isValid():
+            return
+        
+        if self.__multiplex:
+            if not connection.waitForReadyRead(3000):
+                return
+            idString = bytes(connection.readLine()).decode(
+                "utf-8", 'backslashreplace').strip()
+            if idString in self.__connections:
+                self.__connections[idString].close()
+            self.__connections[idString] = connection
+        else:
+            idString = ""
+            if self.__connection is not None:
+                self.__connection.close()
+            
+            self.__connection = connection
+        
+        connection.readyRead.connect(
+            lambda: self.__receiveJson(idString))
+        connection.disconnected.connect(
+            lambda: self.__handleDisconnect(idString))
+    
+    @pyqtSlot()
+    def __handleDisconnect(self, idString):
+        """
+        Private slot handling a disconnect of the client.
+        
+        @param idString id of the connection been disconnected
+        @type str
+        """
+        if idString:
+            if idString in self.__connections:
+                self.__connections[idString].close()
+                del self.__connections[idString]
+        else:
+            if self.__connection is not None:
+                self.__connection.close()
+            
+            self.__connection = None
+    
+    def connectionNames(self):
+        """
+        Public method to get the list of active connection names.
+        
+        If this is not a multiplexing server, an empty list is returned.
+        
+        @return list of active connection names
+        @rtype list of str
+        """
+        if self.__multiplex:
+            return list(self.__connections.keys())
+        else:
+            return []
+    
+    @pyqtSlot()
+    def __receiveJson(self, idString):
+        """
+        Private slot handling received data from the client.
+        
+        @param idString id of the connection been disconnected
+        @type str
+        """
+        if idString:
+            try:
+                connection = self.__connections[idString]
+            except KeyError:
+                connection = None
+        else:
+            connection = self.__connection
+        
+        while connection and connection.canReadLine():
+            data = connection.readLine()
+            jsonLine = bytes(data).decode("utf-8", 'backslashreplace')
+            
+            #- print("JSON Server ({0}): {1}".format(self.__name, jsonLine))
+            #- this is for debugging only
+            
+            try:
+                clientDict = json.loads(jsonLine.strip())
+            except (TypeError, ValueError) as err:
+                E5MessageBox.critical(
+                    None,
+                    self.tr("JSON Protocol Error"),
+                    self.tr("""<p>The response received from the client"""
+                            """ could not be decoded. Please report"""
+                            """ this issue with the received data to the"""
+                            """ eric bugs email address.</p>"""
+                            """<p>Error: {0}</p>"""
+                            """<p>Data:<br/>{1}</p>""").format(
+                        str(err), Utilities.html_encode(jsonLine.strip())),
+                    E5MessageBox.Ok)
+                return
+            
+            self.handleCall(clientDict["method"], clientDict["params"])
+    
+    def sendJson(self, command, params, flush=False, idString=""):
+        """
+        Public method to send a single command to a client.
+        
+        @param command command name to be sent
+        @type str
+        @param params dictionary of named parameters for the command
+        @type dict
+        @param flush flag indicating to flush the data to the socket
+        @type bool
+        @param idString id of the connection to send data to
+        @type str
+        """
+        commandDict = {
+            "jsonrpc": "2.0",
+            "method": command,
+            "params": params,
+        }
+        cmd = json.dumps(commandDict) + '\n'
+        
+        if idString:
+            try:
+                connection = self.__connections[idString]
+            except KeyError:
+                connection = None
+        else:
+            connection = self.__connection
+        
+        if connection is not None:
+            data = cmd.encode('utf8', 'backslashreplace')
+            length = "{0:09d}".format(len(data))
+            connection.write(length.encode() + data)
+            if flush:
+                connection.flush()
+    
+    def startClient(self, interpreter, clientScript, clientArgs, idString="",
+                    environment=None):
+        """
+        Public method to start a client process.
+        
+        @param interpreter interpreter to be used for the client
+        @type str
+        @param clientScript path to the client script
+        @type str
+        @param clientArgs list of arguments for the client
+        @param idString id of the client to be started
+        @type str
+        @param environment dictionary of environment settings to pass
+        @type dict
+        @return flag indicating a successful client start and the exit code
+            in case of an issue
+        @rtype bool, int
+        """
+        if interpreter == "" or not Utilities.isinpath(interpreter):
+            return False
+        
+        exitCode = None
+        
+        proc = QProcess()
+        proc.setProcessChannelMode(
+            QProcess.ProcessChannelMode.ForwardedChannels)
+        if environment is not None:
+            env = QProcessEnvironment()
+            for key, value in list(environment.items()):
+                env.insert(key, value)
+            proc.setProcessEnvironment(env)
+        args = [clientScript, self.__hostAddress, str(self.serverPort())]
+        if idString:
+            args.append(idString)
+        args.extend(clientArgs)
+        proc.start(interpreter, args)
+        if not proc.waitForStarted(10000):
+            proc = None
+        
+        if idString:
+            self.__clientProcesses[idString] = proc
+            if proc:
+                timer = QTimer()
+                timer.setSingleShot(True)
+                timer.start(30000)           # 30s timeout
+                while (
+                    idString not in self.connectionNames() and
+                    timer.isActive()
+                ):
+                    # Give the event loop the chance to process the new
+                    # connection of the client (= slow start).
+                    QCoreApplication.processEvents(
+                        QEventLoop.ProcessEventsFlag.ExcludeUserInputEvents)
+                    
+                    # check if client exited prematurely
+                    if proc.state() == QProcess.ProcessState.NotRunning:
+                        exitCode = proc.exitCode()
+                        proc = None
+                        self.__clientProcesses[idString] = None
+                        break
+        else:
+            if proc:
+                timer = QTimer()
+                timer.setSingleShot(True)
+                timer.start(1000)           # 1s timeout
+                while timer.isActive():
+                    # check if client exited prematurely
+                    QCoreApplication.processEvents(
+                        QEventLoop.ProcessEventsFlag.ExcludeUserInputEvents)
+                    if proc.state() == QProcess.ProcessState.NotRunning:
+                        exitCode = proc.exitCode()
+                        proc = None
+                        break
+            self.__clientProcess = proc
+        
+        return proc is not None, exitCode
+    
+    def stopClient(self, idString=""):
+        """
+        Public method to stop a client process.
+        
+        @param idString id of the client to be stopped
+        @type str
+        """
+        self.sendJson("Exit", {}, flush=True, idString=idString)
+        
+        if idString:
+            try:
+                connection = self.__connections[idString]
+            except KeyError:
+                connection = None
+        else:
+            connection = self.__connection
+        if connection is not None:
+            connection.waitForDisconnected()
+        
+        if idString:
+            with contextlib.suppress(KeyError):
+                if self .__clientProcesses[idString] is not None:
+                    self .__clientProcesses[idString].close()
+                del self.__clientProcesses[idString]
+        else:
+            if self.__clientProcess is not None:
+                self.__clientProcess.close()
+                self.__clientProcess = None
+    
+    def stopAllClients(self):
+        """
+        Public method to stop all clients.
+        """
+        clientNames = self.connectionNames()[:]
+        for clientName in clientNames:
+            self.stopClient(clientName)
+    
+    #######################################################################
+    ## The following methods should be overridden by derived classes
+    #######################################################################
+    
+    def handleCall(self, method, params):
+        """
+        Public method to handle a method call from the client.
+        
+        Note: This is an empty implementation that must be overridden in
+        derived classes.
+        
+        @param method requested method name
+        @type str
+        @param params dictionary with method specific parameters
+        @type dict
+        """
+        pass
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/EricNetwork/EricNetworkProxyFactory.py	Sat May 22 16:52:45 2021 +0200
@@ -0,0 +1,261 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2010 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing a network proxy factory.
+"""
+
+import os
+import re
+
+from PyQt6.QtCore import QUrl, QCoreApplication
+from PyQt6.QtWidgets import QDialog
+from PyQt6.QtNetwork import (
+    QNetworkProxyFactory, QNetworkProxy, QNetworkProxyQuery
+)
+
+from E5Gui import E5MessageBox
+
+import Preferences
+import Globals
+import Utilities
+
+
+def schemeFromProxyType(proxyType):
+    """
+    Module function to determine the scheme name from the proxy type.
+    
+    @param proxyType type of the proxy (QNetworkProxy.ProxyType)
+    @return scheme (string, one of Http, Https, Ftp)
+    """
+    scheme = ""
+    if proxyType == QNetworkProxy.ProxyType.HttpProxy:
+        scheme = "Http"
+    elif proxyType == QNetworkProxy.ProxyType.HttpCachingProxy:
+        scheme = "Https"
+    elif proxyType == QNetworkProxy.ProxyType.FtpCachingProxy:
+        scheme = "Ftp"
+    elif proxyType == QNetworkProxy.ProxyType.NoProxy:
+        scheme = "NoProxy"
+    return scheme
+
+
+def proxyAuthenticationRequired(proxy, auth):
+    """
+    Module slot to handle a proxy authentication request.
+    
+    @param proxy reference to the proxy object (QNetworkProxy)
+    @param auth reference to the authenticator object (QAuthenticator)
+    """
+    info = QCoreApplication.translate(
+        "EricNetworkProxyFactory",
+        "<b>Connect to proxy '{0}' using:</b>"
+    ).format(Utilities.html_encode(proxy.hostName()))
+    
+    from UI.AuthenticationDialog import AuthenticationDialog
+    dlg = AuthenticationDialog(info, proxy.user(), True)
+    dlg.setData(proxy.user(), proxy.password())
+    if dlg.exec() == QDialog.DialogCode.Accepted:
+        username, password = dlg.getData()
+        auth.setUser(username)
+        auth.setPassword(password)
+        if dlg.shallSave():
+            scheme = schemeFromProxyType(proxy.type())
+            if scheme and scheme != "NoProxy":
+                Preferences.setUI("ProxyUser/{0}".format(scheme), username)
+                Preferences.setUI("ProxyPassword/{0}".format(scheme), password)
+            proxy.setUser(username)
+            proxy.setPassword(password)
+
+
+class HostnameMatcher:
+    """
+    Class implementing a matcher for host names.
+    """
+    def __init__(self, pattern):
+        """
+        Constructor
+        
+        @param pattern pattern to be matched against
+        @type str
+        """
+        self.__regExp = None
+        self.setPattern(pattern)
+    
+    def setPattern(self, pattern):
+        """
+        Public method to set the match pattern.
+        
+        @param pattern pattern to be matched against
+        """
+        self.__pattern = pattern
+        
+        if "?" in pattern or "*" in pattern:
+            regexp = "^.*{0}.*$".format(
+                pattern
+                .replace(".", "\\.")
+                .replace("*", ".*")
+                .replace("?", ".")
+            )
+            self.__regExp = re.compile(regexp, re.IGNORECASE)
+    
+    def pattern(self):
+        """
+        Public method to get the match pattern.
+        
+        @return match pattern
+        @rtype str
+        """
+        return self.__pattern
+    
+    def match(self, host):
+        """
+        Public method to test the given string.
+        
+        @param host host name to be matched
+        @type str
+        @return flag indicating a successful match
+        @rtype bool
+        """
+        if self.__regExp is None:
+            return self.__pattern in host
+        
+        return self.__regExp.search(host) is not None
+
+
+class EricNetworkProxyFactory(QNetworkProxyFactory):
+    """
+    Class implementing a network proxy factory.
+    """
+    def __init__(self):
+        """
+        Constructor
+        """
+        super().__init__()
+        
+        self.__hostnameMatchers = []
+        self.__exceptions = ""
+    
+    def __setExceptions(self, exceptions):
+        """
+        Private method to set the host name exceptions.
+        
+        @param exceptions list of exceptions separated by ','
+        @type str
+        """
+        self.__hostnameMatchers = []
+        self.__exceptions = exceptions
+        for exception in self.__exceptions.split(","):
+            self.__hostnameMatchers.append(HostnameMatcher(exception.strip()))
+    
+    def queryProxy(self, query):
+        """
+        Public method to determine a proxy for a given query.
+        
+        @param query reference to the query object (QNetworkProxyQuery)
+        @return list of proxies in order of preference (list of QNetworkProxy)
+        """
+        if (
+            query.queryType() == QNetworkProxyQuery.QueryType.UrlRequest and
+            query.protocolTag() in ["http", "https", "ftp"]
+        ):
+            # use proxy at all ?
+            if not Preferences.getUI("UseProxy"):
+                return [QNetworkProxy(QNetworkProxy.ProxyType.NoProxy)]
+            
+            # test for exceptions
+            exceptions = Preferences.getUI("ProxyExceptions")
+            if exceptions != self.__exceptions:
+                self.__setExceptions(exceptions)
+            urlHost = query.url().host()
+            for matcher in self.__hostnameMatchers:
+                if matcher.match(urlHost):
+                    return [QNetworkProxy(QNetworkProxy.ProxyType.NoProxy)]
+            
+            # determine proxy
+            if Preferences.getUI("UseSystemProxy"):
+                proxyList = QNetworkProxyFactory.systemProxyForQuery(query)
+                if (
+                    not Globals.isWindowsPlatform() and
+                    len(proxyList) == 1 and
+                    proxyList[0].type() == QNetworkProxy.ProxyType.NoProxy
+                ):
+                    # try it the Python way
+                    # scan the environment for variables named <scheme>_proxy
+                    # scan over whole environment to make this case insensitive
+                    for name, value in os.environ.items():
+                        name = name.lower()
+                        if (
+                            value and
+                            name[-6:] == '_proxy' and
+                            name[:-6] == query.protocolTag().lower()
+                        ):
+                            url = QUrl(value)
+                            if url.scheme() in ["http", "https"]:
+                                proxyType = QNetworkProxy.ProxyType.HttpProxy
+                            elif url.scheme() == "ftp":
+                                proxyType = (
+                                    QNetworkProxy.ProxyType.FtpCachingProxy
+                                )
+                            else:
+                                proxyType = QNetworkProxy.ProxyType.HttpProxy
+                            proxy = QNetworkProxy(
+                                proxyType, url.host(), url.port(),
+                                url.userName(), url.password())
+                            proxyList = [proxy]
+                            break
+                if proxyList:
+                    scheme = schemeFromProxyType(proxyList[0].type())
+                    if scheme == "":
+                        scheme = "Http"
+                    if scheme != "NoProxy":
+                        proxyList[0].setUser(
+                            Preferences.getUI("ProxyUser/{0}".format(scheme)))
+                        proxyList[0].setPassword(
+                            Preferences.getUI(
+                                "ProxyPassword/{0}".format(scheme)))
+                    return proxyList
+                else:
+                    return [QNetworkProxy(QNetworkProxy.ProxyType.NoProxy)]
+            else:
+                if Preferences.getUI("UseHttpProxyForAll"):
+                    protocolKey = "Http"
+                else:
+                    protocolKey = query.protocolTag().capitalize()
+                host = Preferences.getUI("ProxyHost/{0}".format(protocolKey))
+                if not host:
+                    E5MessageBox.critical(
+                        None,
+                        QCoreApplication.translate(
+                            "EricNetworkProxyFactory",
+                            "Proxy Configuration Error"),
+                        QCoreApplication.translate(
+                            "EricNetworkProxyFactory",
+                            """Proxy usage was activated"""
+                            """ but no proxy host for protocol"""
+                            """ '{0}' configured.""").format(protocolKey))
+                    return [
+                        QNetworkProxy(QNetworkProxy.ProxyType.DefaultProxy)
+                    ]
+                else:
+                    if protocolKey in ["Http", "Https", "Ftp"]:
+                        if query.protocolTag() == "ftp":
+                            proxyType = QNetworkProxy.ProxyType.FtpCachingProxy
+                        else:
+                            proxyType = QNetworkProxy.ProxyType.HttpProxy
+                        proxy = QNetworkProxy(
+                            proxyType, host,
+                            Preferences.getUI("ProxyPort/" + protocolKey),
+                            Preferences.getUI("ProxyUser/" + protocolKey),
+                            Preferences.getUI("ProxyPassword/" + protocolKey))
+                    else:
+                        proxy = QNetworkProxy(
+                            QNetworkProxy.ProxyType.DefaultProxy)
+                    return [
+                        proxy,
+                        QNetworkProxy(QNetworkProxy.ProxyType.DefaultProxy)
+                    ]
+        else:
+            return [QNetworkProxy(QNetworkProxy.ProxyType.NoProxy)]
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/EricNetwork/EricSslCertificateSelectionDialog.py	Sat May 22 16:52:45 2021 +0200
@@ -0,0 +1,147 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2019 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing a dialog to select a SSL certificate.
+"""
+
+import contextlib
+
+from PyQt6.QtCore import pyqtSlot, Qt
+from PyQt6.QtWidgets import QDialog, QDialogButtonBox, QTreeWidgetItem
+with contextlib.suppress(ImportError):
+    from PyQt6.QtNetwork import QSslCertificate
+
+from .Ui_EricSslCertificateSelectionDialog import (
+    Ui_EricSslCertificateSelectionDialog
+)
+
+import Utilities
+import UI.PixmapCache
+
+
+class EricSslCertificateSelectionDialog(QDialog,
+                                      Ui_EricSslCertificateSelectionDialog):
+    """
+    Class implementing a dialog to select a SSL certificate.
+    """
+    CertRole = Qt.ItemDataRole.UserRole + 1
+    
+    def __init__(self, certificates, parent=None):
+        """
+        Constructor
+        
+        @param certificates list of SSL certificates to select from
+        @type list of QSslCertificate
+        @param parent reference to the parent widget
+        @type QWidget
+        """
+        super().__init__(parent)
+        self.setupUi(self)
+        
+        self.viewButton.setIcon(
+            UI.PixmapCache.getIcon("certificates"))
+        
+        self.buttonBox.button(QDialogButtonBox.OK).setEnabled(False)
+        self.viewButton.setEnabled(False)
+        
+        self.__populateCertificatesTree(certificates)
+    
+    def __populateCertificatesTree(self, certificates):
+        """
+        Private slot to populate the certificates tree.
+        
+        @param certificates list of SSL certificates to select from
+        @type list of QSslCertificate
+        """
+        for cert in certificates():
+            self.__createCertificateEntry(cert)
+        
+        self.certificatesTree.expandAll()
+        for i in range(self.certificatesTree.columnCount()):
+            self.certificatesTree.resizeColumnToContents(i)
+        self.certificatesTree.sortItems(0, Qt.SortOrder.AscendingOrder)
+    
+    def __createCaCertificateEntry(self, cert):
+        """
+        Private method to create a certificate entry.
+        
+        @param cert certificate to insert
+        @type QSslCertificate
+        """
+        # step 1: extract the info to be shown
+        organisation = Utilities.decodeString(
+            ", ".join(cert.subjectInfo(
+                QSslCertificate.SubjectInfo.Organization)))
+        commonName = Utilities.decodeString(
+            ", ".join(cert.subjectInfo(
+                QSslCertificate.SubjectInfo.CommonName)))
+        if organisation is None or organisation == "":
+            organisation = self.tr("(Unknown)")
+        if commonName is None or commonName == "":
+            commonName = self.tr("(Unknown common name)")
+        expiryDate = cert.expiryDate().toString("yyyy-MM-dd")
+        
+        # step 2: create the entry
+        items = self.certificatesTree.findItems(
+            organisation,
+            Qt.MatchFlag.MatchFixedString | Qt.MatchFlag.MatchCaseSensitive)
+        if len(items) == 0:
+            parent = QTreeWidgetItem(self.certificatesTree, [organisation])
+            parent.setFirstColumnSpanned(True)
+        else:
+            parent = items[0]
+        
+        itm = QTreeWidgetItem(parent, [commonName, expiryDate])
+        itm.setData(0, self.CertRole, cert.toPem())
+    
+    @pyqtSlot()
+    def on_certificatesTree_itemSelectionChanged(self):
+        """
+        Private slot to handle the selection of an item.
+        """
+        enable = (
+            len(self.certificatesTree.selectedItems()) > 0 and
+            self.certificatesTree.selectedItems()[0].parent() is not None
+        )
+        self.buttonBox.button(QDialogButtonBox.OK).setEnabled(enable)
+        self.viewButton.setEnabled(enable)
+    
+    @pyqtSlot()
+    def on_viewButton_clicked(self):
+        """
+        Private slot to show data of the selected certificate.
+        """
+        with contextlib.suppress(ImportError):
+            from EricNetwork.EricSslCertificatesInfoDialog import (
+                EricSslCertificatesInfoDialog
+            )
+            cert = QSslCertificate.fromData(
+                self.certificatesTree.selectedItems()[0].data(
+                    0, self.CertRole))
+            dlg = EricSslCertificatesInfoDialog(cert, self)
+            dlg.exec()
+    
+    def getSelectedCertificate(self):
+        """
+        Public method to get the selected certificate.
+        
+        @return selected certificate
+        @rtype QSslCertificate
+        """
+        valid = (
+            len(self.certificatesTree.selectedItems()) > 0 and
+            self.certificatesTree.selectedItems()[0].parent() is not None
+        )
+        
+        certificate = (
+            QSslCertificate.fromData(
+                self.certificatesTree.selectedItems()[0].data(
+                    0, self.CertRole))
+            if valid else
+            None
+        )
+        
+        return certificate
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/EricNetwork/EricSslCertificateSelectionDialog.ui	Sat May 22 16:52:45 2021 +0200
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>EricSslCertificateSelectionDialog</class>
+ <widget class="QDialog" name="EricSslCertificateSelectionDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>760</width>
+    <height>440</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>SSL Certificate Selection</string>
+  </property>
+  <property name="sizeGripEnabled">
+   <bool>true</bool>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QLabel" name="label">
+     <property name="text">
+      <string>Select a SSL certificate:</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QTreeWidget" name="certificatesTree">
+     <column>
+      <property name="text">
+       <string>Certificate name</string>
+      </property>
+     </column>
+     <column>
+      <property name="text">
+       <string>Expiry Date</string>
+      </property>
+     </column>
+    </widget>
+   </item>
+   <item>
+    <layout class="QHBoxLayout" name="horizontalLayout">
+     <item>
+      <widget class="QPushButton" name="viewButton">
+       <property name="enabled">
+        <bool>false</bool>
+       </property>
+       <property name="toolTip">
+        <string>Press to view the selected certificate</string>
+       </property>
+       <property name="text">
+        <string>&amp;View...</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer name="horizontalSpacer_2">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="buttonBox">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>EricSslCertificateSelectionDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>EricSslCertificateSelectionDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/EricNetwork/EricSslCertificatesDialog.py	Sat May 22 16:52:45 2021 +0200
@@ -0,0 +1,518 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2010 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing a dialog to show and edit all certificates.
+"""
+
+import contextlib
+
+from PyQt6.QtCore import (
+    pyqtSlot, Qt, QByteArray, QFile, QFileInfo, QIODevice
+)
+from PyQt6.QtWidgets import QDialog, QTreeWidgetItem
+with contextlib.suppress(ImportError):
+    from PyQt6.QtNetwork import (
+        QSslCertificate, QSslSocket, QSslConfiguration, QSsl
+    )
+
+from E5Gui import E5MessageBox, E5FileDialog
+
+from .Ui_EricSslCertificatesDialog import Ui_EricSslCertificatesDialog
+
+import Preferences
+import Utilities
+import UI.PixmapCache
+import Globals
+
+
+class EricSslCertificatesDialog(QDialog, Ui_EricSslCertificatesDialog):
+    """
+    Class implementing a dialog to show and edit all certificates.
+    """
+    CertRole = Qt.ItemDataRole.UserRole + 1
+    
+    def __init__(self, parent=None):
+        """
+        Constructor
+        
+        @param parent reference to the parent widget (QWidget)
+        """
+        super().__init__(parent)
+        self.setupUi(self)
+        
+        self.serversViewButton.setIcon(
+            UI.PixmapCache.getIcon("certificates"))
+        self.serversDeleteButton.setIcon(
+            UI.PixmapCache.getIcon("certificateDelete"))
+        self.serversExportButton.setIcon(
+            UI.PixmapCache.getIcon("certificateExport"))
+        self.serversImportButton.setIcon(
+            UI.PixmapCache.getIcon("certificateImport"))
+        
+        self.caViewButton.setIcon(
+            UI.PixmapCache.getIcon("certificates"))
+        self.caDeleteButton.setIcon(
+            UI.PixmapCache.getIcon("certificateDelete"))
+        self.caExportButton.setIcon(
+            UI.PixmapCache.getIcon("certificateExport"))
+        self.caImportButton.setIcon(
+            UI.PixmapCache.getIcon("certificateImport"))
+        
+        self.__populateServerCertificatesTree()
+        self.__populateCaCertificatesTree()
+    
+    def __populateServerCertificatesTree(self):
+        """
+        Private slot to populate the server certificates tree.
+        """
+        certificateDict = Globals.toDict(
+            Preferences.Prefs.settings.value("Ssl/CaCertificatesDict"))
+        for server in certificateDict:
+            for cert in QSslCertificate.fromData(certificateDict[server]):
+                self.__createServerCertificateEntry(server, cert)
+        
+        self.serversCertificatesTree.expandAll()
+        for i in range(self.serversCertificatesTree.columnCount()):
+            self.serversCertificatesTree.resizeColumnToContents(i)
+    
+    def __createServerCertificateEntry(self, server, cert):
+        """
+        Private method to create a server certificate entry.
+        
+        @param server server name of the certificate (string)
+        @param cert certificate to insert (QSslCertificate)
+        """
+        # step 1: extract the info to be shown
+        organisation = Utilities.decodeString(
+            ", ".join(cert.subjectInfo(
+                QSslCertificate.SubjectInfo.Organization)))
+        commonName = Utilities.decodeString(
+            ", ".join(cert.subjectInfo(
+                QSslCertificate.SubjectInfo.CommonName)))
+        if organisation is None or organisation == "":
+            organisation = self.tr("(Unknown)")
+        if commonName is None or commonName == "":
+            commonName = self.tr("(Unknown common name)")
+        expiryDate = cert.expiryDate().toString("yyyy-MM-dd")
+        
+        # step 2: create the entry
+        items = self.serversCertificatesTree.findItems(
+            organisation,
+            Qt.MatchFlag.MatchFixedString | Qt.MatchFlag.MatchCaseSensitive)
+        if len(items) == 0:
+            parent = QTreeWidgetItem(
+                self.serversCertificatesTree, [organisation])
+            parent.setFirstColumnSpanned(True)
+        else:
+            parent = items[0]
+        
+        itm = QTreeWidgetItem(parent, [commonName, server, expiryDate])
+        itm.setData(0, self.CertRole, cert.toPem())
+    
+    @pyqtSlot(QTreeWidgetItem, QTreeWidgetItem)
+    def on_serversCertificatesTree_currentItemChanged(self, current, previous):
+        """
+        Private slot handling a change of the current item in the
+        server certificates list.
+        
+        @param current new current item (QTreeWidgetItem)
+        @param previous previous current item (QTreeWidgetItem)
+        """
+        enable = current is not None and current.parent() is not None
+        self.serversViewButton.setEnabled(enable)
+        self.serversDeleteButton.setEnabled(enable)
+        self.serversExportButton.setEnabled(enable)
+    
+    @pyqtSlot()
+    def on_serversViewButton_clicked(self):
+        """
+        Private slot to show data of the selected server certificate.
+        """
+        with contextlib.suppress(ImportError):
+            from EricNetwork.EricSslCertificatesInfoDialog import (
+                EricSslCertificatesInfoDialog
+            )
+            cert = QSslCertificate.fromData(
+                self.serversCertificatesTree.currentItem().data(
+                    0, self.CertRole))
+            dlg = EricSslCertificatesInfoDialog(cert, self)
+            dlg.exec()
+    
+    @pyqtSlot()
+    def on_serversDeleteButton_clicked(self):
+        """
+        Private slot to delete the selected server certificate.
+        """
+        itm = self.serversCertificatesTree.currentItem()
+        res = E5MessageBox.yesNo(
+            self,
+            self.tr("Delete Server Certificate"),
+            self.tr("""<p>Shall the server certificate really be"""
+                    """ deleted?</p><p>{0}</p>"""
+                    """<p>If the server certificate is deleted, the"""
+                    """ normal security checks will be reinstantiated"""
+                    """ and the server has to present a valid"""
+                    """ certificate.</p>""")
+            .format(itm.text(0)))
+        if res:
+            server = itm.text(1)
+            cert = self.serversCertificatesTree.currentItem().data(
+                0, self.CertRole)
+            
+            # delete the selected entry and its parent entry,
+            # if it was the only one
+            parent = itm.parent()
+            parent.takeChild(parent.indexOfChild(itm))
+            if parent.childCount() == 0:
+                self.serversCertificatesTree.takeTopLevelItem(
+                    self.serversCertificatesTree.indexOfTopLevelItem(parent))
+            
+            # delete the certificate from the user certificate store
+            certificateDict = Globals.toDict(
+                Preferences.Prefs.settings.value("Ssl/CaCertificatesDict"))
+            if server in certificateDict:
+                certs = [c.toPem() for c in
+                         QSslCertificate.fromData(certificateDict[server])]
+                if cert in certs:
+                    certs.remove(cert)
+                if certs:
+                    pems = QByteArray()
+                    for cert in certs:
+                        pems.append(cert + b'\n')
+                    certificateDict[server] = pems
+                else:
+                    del certificateDict[server]
+            Preferences.Prefs.settings.setValue(
+                "Ssl/CaCertificatesDict",
+                certificateDict)
+            
+            # delete the certificate from the default certificates
+            self.__updateDefaultConfiguration()
+    
+    @pyqtSlot()
+    def on_serversImportButton_clicked(self):
+        """
+        Private slot to import server certificates.
+        """
+        certs = self.__importCertificate()
+        if certs:
+            server = "*"
+            certificateDict = Globals.toDict(
+                Preferences.Prefs.settings.value("Ssl/CaCertificatesDict"))
+            if server in certificateDict:
+                sCerts = QSslCertificate.fromData(certificateDict[server])
+            else:
+                sCerts = []
+            
+            pems = QByteArray()
+            for cert in certs:
+                if cert in sCerts:
+                    commonStr = ", ".join(
+                        cert.subjectInfo(
+                            QSslCertificate.SubjectInfo.CommonName))
+                    E5MessageBox.warning(
+                        self,
+                        self.tr("Import Certificate"),
+                        self.tr(
+                            """<p>The certificate <b>{0}</b> already exists."""
+                            """ Skipping.</p>""")
+                        .format(Utilities.decodeString(commonStr)))
+                else:
+                    pems.append(cert.toPem() + '\n')
+            if server not in certificateDict:
+                certificateDict[server] = QByteArray()
+            certificateDict[server].append(pems)
+            Preferences.Prefs.settings.setValue(
+                "Ssl/CaCertificatesDict",
+                certificateDict)
+            
+            self.serversCertificatesTree.clear()
+            self.__populateServerCertificatesTree()
+            
+            self.__updateDefaultConfiguration()
+    
+    @pyqtSlot()
+    def on_serversExportButton_clicked(self):
+        """
+        Private slot to export the selected server certificate.
+        """
+        cert = self.serversCertificatesTree.currentItem().data(
+            0, self.CertRole)
+        fname = (
+            self.serversCertificatesTree.currentItem().text(0).replace(" ", "")
+            .replace("\t", "")
+        )
+        self.__exportCertificate(fname, cert)
+    
+    def __updateDefaultConfiguration(self):
+        """
+        Private method to update the default SSL configuration.
+        """
+        caList = self.__getSystemCaCertificates()
+        certificateDict = Globals.toDict(
+            Preferences.Prefs.settings.value("Ssl/CaCertificatesDict"))
+        for server in certificateDict:
+            for cert in QSslCertificate.fromData(certificateDict[server]):
+                if cert not in caList:
+                    caList.append(cert)
+        sslCfg = QSslConfiguration.defaultConfiguration()
+        sslCfg.setCaCertificates(caList)
+        QSslConfiguration.setDefaultConfiguration(sslCfg)
+    
+    def __getSystemCaCertificates(self):
+        """
+        Private method to get the list of system certificates.
+        
+        @return list of system certificates (list of QSslCertificate)
+        """
+        caList = QSslCertificate.fromData(Globals.toByteArray(
+            Preferences.Prefs.settings.value("Help/SystemCertificates")))
+        if not caList:
+            caList = QSslSocket.systemCaCertificates()
+        return caList
+    
+    def __populateCaCertificatesTree(self):
+        """
+        Private slot to populate the CA certificates tree.
+        """
+        for cert in self.__getSystemCaCertificates():
+            self.__createCaCertificateEntry(cert)
+        
+        self.caCertificatesTree.expandAll()
+        for i in range(self.caCertificatesTree.columnCount()):
+            self.caCertificatesTree.resizeColumnToContents(i)
+        self.caCertificatesTree.sortItems(0, Qt.SortOrder.AscendingOrder)
+    
+    def __createCaCertificateEntry(self, cert):
+        """
+        Private method to create a CA certificate entry.
+        
+        @param cert certificate to insert (QSslCertificate)
+        """
+        # step 1: extract the info to be shown
+        organisation = Utilities.decodeString(
+            ", ".join(cert.subjectInfo(
+                QSslCertificate.SubjectInfo.Organization)))
+        commonName = Utilities.decodeString(
+            ", ".join(cert.subjectInfo(
+                QSslCertificate.SubjectInfo.CommonName)))
+        if organisation is None or organisation == "":
+            organisation = self.tr("(Unknown)")
+        if commonName is None or commonName == "":
+            commonName = self.tr("(Unknown common name)")
+        expiryDate = cert.expiryDate().toString("yyyy-MM-dd")
+        
+        # step 2: create the entry
+        items = self.caCertificatesTree.findItems(
+            organisation,
+            Qt.MatchFlag.MatchFixedString | Qt.MatchFlag.MatchCaseSensitive)
+        if len(items) == 0:
+            parent = QTreeWidgetItem(self.caCertificatesTree, [organisation])
+            parent.setFirstColumnSpanned(True)
+        else:
+            parent = items[0]
+        
+        itm = QTreeWidgetItem(parent, [commonName, expiryDate])
+        itm.setData(0, self.CertRole, cert.toPem())
+    
+    @pyqtSlot(QTreeWidgetItem, QTreeWidgetItem)
+    def on_caCertificatesTree_currentItemChanged(self, current, previous):
+        """
+        Private slot handling a change of the current item
+        in the CA certificates list.
+        
+        @param current new current item (QTreeWidgetItem)
+        @param previous previous current item (QTreeWidgetItem)
+        """
+        enable = current is not None and current.parent() is not None
+        self.caViewButton.setEnabled(enable)
+        self.caDeleteButton.setEnabled(enable)
+        self.caExportButton.setEnabled(enable)
+    
+    @pyqtSlot()
+    def on_caViewButton_clicked(self):
+        """
+        Private slot to show data of the selected CA certificate.
+        """
+        with contextlib.suppress(ImportError):
+            from EricNetwork.EricSslCertificatesInfoDialog import (
+                EricSslCertificatesInfoDialog
+            )
+            cert = QSslCertificate.fromData(
+                self.caCertificatesTree.currentItem().data(0, self.CertRole))
+            dlg = EricSslCertificatesInfoDialog(cert, self)
+            dlg.exec()
+    
+    @pyqtSlot()
+    def on_caDeleteButton_clicked(self):
+        """
+        Private slot to delete the selected CA certificate.
+        """
+        itm = self.caCertificatesTree.currentItem()
+        res = E5MessageBox.yesNo(
+            self,
+            self.tr("Delete CA Certificate"),
+            self.tr(
+                """<p>Shall the CA certificate really be deleted?</p>"""
+                """<p>{0}</p>"""
+                """<p>If the CA certificate is deleted, the browser"""
+                """ will not trust any certificate issued by this CA.</p>""")
+            .format(itm.text(0)))
+        if res:
+            cert = self.caCertificatesTree.currentItem().data(0, self.CertRole)
+            
+            # delete the selected entry and its parent entry,
+            # if it was the only one
+            parent = itm.parent()
+            parent.takeChild(parent.indexOfChild(itm))
+            if parent.childCount() == 0:
+                self.caCertificatesTree.takeTopLevelItem(
+                    self.caCertificatesTree.indexOfTopLevelItem(parent))
+            
+            # delete the certificate from the CA certificate store
+            caCerts = self.__getSystemCaCertificates()
+            if cert in caCerts:
+                caCerts.remove(cert)
+            pems = QByteArray()
+            for cert in caCerts:
+                pems.append(cert.toPem() + '\n')
+            Preferences.Prefs.settings.setValue(
+                "Help/SystemCertificates", pems)
+            
+            # delete the certificate from the default certificates
+            self.__updateDefaultConfiguration()
+    
+    @pyqtSlot()
+    def on_caImportButton_clicked(self):
+        """
+        Private slot to import server certificates.
+        """
+        certs = self.__importCertificate()
+        if certs:
+            caCerts = self.__getSystemCaCertificates()
+            for cert in certs:
+                if cert in caCerts:
+                    commonStr = ", ".join(
+                        cert.subjectInfo(
+                            QSslCertificate.SubjectInfo.CommonName))
+                    E5MessageBox.warning(
+                        self,
+                        self.tr("Import Certificate"),
+                        self.tr(
+                            """<p>The certificate <b>{0}</b> already exists."""
+                            """ Skipping.</p>""")
+                        .format(Utilities.decodeString(commonStr)))
+                else:
+                    caCerts.append(cert)
+            
+            pems = QByteArray()
+            for cert in caCerts:
+                pems.append(cert.toPem() + '\n')
+            Preferences.Prefs.settings.setValue(
+                "Help/SystemCertificates", pems)
+            
+            self.caCertificatesTree.clear()
+            self.__populateCaCertificatesTree()
+            
+            self.__updateDefaultConfiguration()
+    
+    @pyqtSlot()
+    def on_caExportButton_clicked(self):
+        """
+        Private slot to export the selected CA certificate.
+        """
+        cert = self.caCertificatesTree.currentItem().data(0, self.CertRole)
+        fname = (
+            self.caCertificatesTree.currentItem().text(0).replace(" ", "")
+            .replace("\t", "")
+        )
+        self.__exportCertificate(fname, cert)
+    
+    def __exportCertificate(self, name, cert):
+        """
+        Private slot to export a certificate.
+        
+        @param name default file name without extension (string)
+        @param cert certificate to be exported (QSslCertificate)
+        """
+        if cert is not None:
+            fname, selectedFilter = E5FileDialog.getSaveFileNameAndFilter(
+                self,
+                self.tr("Export Certificate"),
+                name,
+                self.tr("Certificate File (PEM) (*.pem);;"
+                        "Certificate File (DER) (*.der)"),
+                None,
+                E5FileDialog.DontConfirmOverwrite)
+            
+            if fname:
+                ext = QFileInfo(fname).suffix()
+                if not ext or ext not in ["pem", "der"]:
+                    ex = selectedFilter.split("(*")[1].split(")")[0]
+                    if ex:
+                        fname += ex
+                if QFileInfo(fname).exists():
+                    res = E5MessageBox.yesNo(
+                        self,
+                        self.tr("Export Certificate"),
+                        self.tr("<p>The file <b>{0}</b> already exists."
+                                " Overwrite it?</p>").format(fname),
+                        icon=E5MessageBox.Warning)
+                    if not res:
+                        return
+                
+                f = QFile(fname)
+                if not f.open(QIODevice.OpenModeFlag.WriteOnly):
+                    E5MessageBox.critical(
+                        self,
+                        self.tr("Export Certificate"),
+                        self.tr(
+                            """<p>The certificate could not be written"""
+                            """ to file <b>{0}</b></p><p>Error: {1}</p>""")
+                        .format(fname, f.errorString()))
+                    return
+                
+                if fname.endswith(".pem"):
+                    crt = cert.toPem()
+                else:
+                    crt = cert.toDer()
+                f.write(crt)
+                f.close()
+    
+    def __importCertificate(self):
+        """
+        Private method to read a certificate.
+        
+        @return certificates read (list of QSslCertificate)
+        """
+        fname = E5FileDialog.getOpenFileName(
+            self,
+            self.tr("Import Certificate"),
+            "",
+            self.tr("Certificate Files (*.pem *.crt *.der *.cer *.ca);;"
+                    "All Files (*)"))
+        
+        if fname:
+            f = QFile(fname)
+            if not f.open(QIODevice.OpenModeFlag.ReadOnly):
+                E5MessageBox.critical(
+                    self,
+                    self.tr("Export Certificate"),
+                    self.tr(
+                        """<p>The certificate could not be read from file"""
+                        """ <b>{0}</b></p><p>Error: {1}</p>""")
+                    .format(fname, f.errorString()))
+                return []
+            
+            crt = f.readAll()
+            f.close()
+            cert = QSslCertificate.fromData(crt, QSsl.EncodingFormat.Pem)
+            if not cert:
+                cert = QSslCertificate.fromData(crt, QSsl.EncodingFormat.Der)
+            
+            return cert
+        
+        return []
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/EricNetwork/EricSslCertificatesDialog.ui	Sat May 22 16:52:45 2021 +0200
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>EricSslCertificatesDialog</class>
+ <widget class="QDialog" name="EricSslCertificatesDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>760</width>
+    <height>440</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>SSL Certificate Manager</string>
+  </property>
+  <property name="sizeGripEnabled">
+   <bool>true</bool>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QTabWidget" name="certificatesWidget">
+     <property name="currentIndex">
+      <number>0</number>
+     </property>
+     <widget class="QWidget" name="serversTab">
+      <attribute name="title">
+       <string>&amp;Servers</string>
+      </attribute>
+      <layout class="QVBoxLayout" name="verticalLayout_2">
+       <item>
+        <widget class="QLabel" name="label">
+         <property name="text">
+          <string>You have saved certificates identifying these servers:</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QTreeWidget" name="serversCertificatesTree">
+         <column>
+          <property name="text">
+           <string>Certificate name</string>
+          </property>
+         </column>
+         <column>
+          <property name="text">
+           <string>Server</string>
+          </property>
+         </column>
+         <column>
+          <property name="text">
+           <string>Expiry Date</string>
+          </property>
+         </column>
+        </widget>
+       </item>
+       <item>
+        <layout class="QHBoxLayout" name="horizontalLayout">
+         <item>
+          <widget class="QPushButton" name="serversViewButton">
+           <property name="enabled">
+            <bool>false</bool>
+           </property>
+           <property name="toolTip">
+            <string>Press to view the selected certificate</string>
+           </property>
+           <property name="text">
+            <string>&amp;View...</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QPushButton" name="serversImportButton">
+           <property name="toolTip">
+            <string>Press to import a certificate</string>
+           </property>
+           <property name="text">
+            <string>&amp;Import...</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QPushButton" name="serversExportButton">
+           <property name="enabled">
+            <bool>false</bool>
+           </property>
+           <property name="toolTip">
+            <string>Press to export the selected certificate</string>
+           </property>
+           <property name="text">
+            <string>&amp;Export...</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QPushButton" name="serversDeleteButton">
+           <property name="enabled">
+            <bool>false</bool>
+           </property>
+           <property name="toolTip">
+            <string>Press to delete the selected certificate</string>
+           </property>
+           <property name="text">
+            <string>&amp;Delete...</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <spacer name="horizontalSpacer">
+           <property name="orientation">
+            <enum>Qt::Horizontal</enum>
+           </property>
+           <property name="sizeHint" stdset="0">
+            <size>
+             <width>40</width>
+             <height>20</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+        </layout>
+       </item>
+      </layout>
+     </widget>
+     <widget class="QWidget" name="caTab">
+      <attribute name="title">
+       <string>Certificate &amp;Authorities</string>
+      </attribute>
+      <layout class="QVBoxLayout" name="verticalLayout_3">
+       <item>
+        <widget class="QLabel" name="label_2">
+         <property name="text">
+          <string>You have saved certificates identifying these certification authorities:</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QTreeWidget" name="caCertificatesTree">
+         <column>
+          <property name="text">
+           <string>Certificate name</string>
+          </property>
+         </column>
+         <column>
+          <property name="text">
+           <string>Expiry Date</string>
+          </property>
+         </column>
+        </widget>
+       </item>
+       <item>
+        <layout class="QHBoxLayout" name="horizontalLayout_2">
+         <item>
+          <widget class="QPushButton" name="caViewButton">
+           <property name="enabled">
+            <bool>false</bool>
+           </property>
+           <property name="toolTip">
+            <string>Press to view the selected certificate</string>
+           </property>
+           <property name="text">
+            <string>&amp;View...</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QPushButton" name="caImportButton">
+           <property name="toolTip">
+            <string>Press to import a certificate</string>
+           </property>
+           <property name="text">
+            <string>&amp;Import...</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QPushButton" name="caExportButton">
+           <property name="enabled">
+            <bool>false</bool>
+           </property>
+           <property name="toolTip">
+            <string>Press to export the selected certificate</string>
+           </property>
+           <property name="text">
+            <string>&amp;Export...</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QPushButton" name="caDeleteButton">
+           <property name="enabled">
+            <bool>false</bool>
+           </property>
+           <property name="toolTip">
+            <string>Press to delete the selected certificate</string>
+           </property>
+           <property name="text">
+            <string>&amp;Delete...</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <spacer name="horizontalSpacer_2">
+           <property name="orientation">
+            <enum>Qt::Horizontal</enum>
+           </property>
+           <property name="sizeHint" stdset="0">
+            <size>
+             <width>40</width>
+             <height>20</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+        </layout>
+       </item>
+      </layout>
+     </widget>
+    </widget>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="buttonBox">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Close</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <tabstops>
+  <tabstop>certificatesWidget</tabstop>
+  <tabstop>serversCertificatesTree</tabstop>
+  <tabstop>serversViewButton</tabstop>
+  <tabstop>serversImportButton</tabstop>
+  <tabstop>serversExportButton</tabstop>
+  <tabstop>serversDeleteButton</tabstop>
+  <tabstop>caCertificatesTree</tabstop>
+  <tabstop>caViewButton</tabstop>
+  <tabstop>caImportButton</tabstop>
+  <tabstop>caExportButton</tabstop>
+  <tabstop>caDeleteButton</tabstop>
+  <tabstop>buttonBox</tabstop>
+ </tabstops>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>EricSslCertificatesDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>EricSslCertificatesDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/EricNetwork/EricSslCertificatesInfoDialog.py	Sat May 22 16:52:45 2021 +0200
@@ -0,0 +1,29 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2010 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing a dialog to show SSL certificate infos.
+"""
+
+from PyQt6.QtWidgets import QDialog
+
+from .Ui_EricSslCertificatesInfoDialog import Ui_EricSslCertificatesInfoDialog
+
+
+class EricSslCertificatesInfoDialog(QDialog, Ui_EricSslCertificatesInfoDialog):
+    """
+    Class implementing a dialog to show SSL certificate infos.
+    """
+    def __init__(self, certificateChain, parent=None):
+        """
+        Constructor
+        
+        @param certificateChain SSL certificate chain (list of QSslCertificate)
+        @param parent reference to the parent widget (QWidget)
+        """
+        super().__init__(parent)
+        self.setupUi(self)
+        
+        self.sslWidget.showCertificateChain(certificateChain)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/EricNetwork/EricSslCertificatesInfoDialog.ui	Sat May 22 16:52:45 2021 +0200
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>EricSslCertificatesInfoDialog</class>
+ <widget class="QDialog" name="EricSslCertificatesInfoDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>556</width>
+    <height>486</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>SSL Certificate Info</string>
+  </property>
+  <property name="sizeGripEnabled">
+   <bool>true</bool>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="EricSslCertificatesInfoWidget" name="sslWidget" native="true"/>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="buttonBox">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Close</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>EricSslCertificatesInfoWidget</class>
+   <extends>QWidget</extends>
+   <header>EricNetwork/EricSslCertificatesInfoWidget.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>EricSslCertificatesInfoDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>EricSslCertificatesInfoDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/EricNetwork/EricSslCertificatesInfoWidget.py	Sat May 22 16:52:45 2021 +0200
@@ -0,0 +1,203 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2010 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing a widget to show SSL certificate infos.
+"""
+
+from PyQt6.QtCore import pyqtSlot, QCryptographicHash, QDateTime
+from PyQt6.QtWidgets import QWidget
+try:
+    from PyQt6.QtNetwork import QSslCertificate
+except ImportError:
+    QSslCertificate = None
+
+from .Ui_EricSslCertificatesInfoWidget import Ui_EricSslCertificatesInfoWidget
+
+import Utilities
+
+
+class EricSslCertificatesInfoWidget(QWidget, Ui_EricSslCertificatesInfoWidget):
+    """
+    Class implementing a widget to show SSL certificate infos.
+    """
+    def __init__(self, parent=None):
+        """
+        Constructor
+        
+        @param parent reference to the parent widget (QWidget)
+        """
+        super().__init__(parent)
+        self.setupUi(self)
+        
+        self.__chain = []
+    
+    def showCertificateChain(self, certificateChain):
+        """
+        Public method to show the SSL certificates of a certificate chain.
+        
+        @param certificateChain list od SSL certificates
+            (list of QSslCertificate)
+        """
+        if QSslCertificate:
+            self.chainLabel.show()
+            self.chainComboBox.show()
+            self.chainComboBox.clear()
+            
+            self.__chain = certificateChain[:]
+            
+            for cert in self.__chain:
+                name = ", ".join(cert.subjectInfo(
+                    QSslCertificate.SubjectInfo.CommonName))
+                if not name:
+                    name = ", ".join(
+                        cert.subjectInfo(
+                            QSslCertificate.SubjectInfo.Organization))
+                if not name:
+                    name = cert.serialNumber()
+                self.chainComboBox.addItem(name)
+            
+            self.on_chainComboBox_activated(0)
+    
+    def showCertificate(self, certificate):
+        """
+        Public method to show the SSL certificate information.
+        
+        @param certificate reference to the SSL certificate (QSslCertificate)
+        """
+        self.chainLabel.hide()
+        self.chainComboBox.hide()
+        self.chainComboBox.clear()
+        
+        self.__chain = []
+        
+        if QSslCertificate:
+            self.__showCertificate(certificate)
+    
+    def __showCertificate(self, certificate):
+        """
+        Private method to show the  SSL certificate information.
+        
+        @param certificate reference to the SSL certificate (QSslCertificate)
+        """
+        if QSslCertificate:
+            self.blacklistedLabel.setVisible(False)
+            self.blacklistedLabel.setStyleSheet(
+                "QLabel { color : white; background-color : red; }")
+            self.expiredLabel.setVisible(False)
+            self.expiredLabel.setStyleSheet(
+                "QLabel { color : white; background-color : red; }")
+            
+            self.subjectCommonNameLabel.setText(self.__certificateString(
+                ", ".join(certificate.subjectInfo(
+                    QSslCertificate.SubjectInfo.CommonName))))
+            self.subjectOrganizationLabel.setText(self.__certificateString(
+                ", ".join(certificate.subjectInfo(
+                    QSslCertificate.SubjectInfo.Organization))))
+            self.subjectOrganizationalUnitLabel.setText(
+                self.__certificateString(", ".join(
+                    certificate.subjectInfo(
+                        QSslCertificate.SubjectInfo.OrganizationalUnitName))))
+            self.issuerCommonNameLabel.setText(self.__certificateString(
+                ", ".join(certificate.issuerInfo(
+                    QSslCertificate.SubjectInfo.CommonName))))
+            self.issuerOrganizationLabel.setText(self.__certificateString(
+                ", ".join(certificate.issuerInfo(
+                    QSslCertificate.SubjectInfo.Organization))))
+            self.issuerOrganizationalUnitLabel.setText(
+                self.__certificateString(", ".join(
+                    certificate.issuerInfo(
+                        QSslCertificate.SubjectInfo.OrganizationalUnitName))))
+            self.serialNumberLabel.setText(self.__serialNumber(certificate))
+            self.effectiveLabel.setText(
+                certificate.effectiveDate().toString("yyyy-MM-dd"))
+            self.expiresLabel.setText(
+                certificate.expiryDate().toString("yyyy-MM-dd"))
+            self.sha1Label.setText(self.__formatHexString(
+                str(certificate.digest(
+                    QCryptographicHash.Algorithm.Sha1).toHex(),
+                    encoding="ascii")))
+            self.md5Label.setText(self.__formatHexString(
+                str(certificate.digest(
+                    QCryptographicHash.Algorithm.Md5).toHex(),
+                    encoding="ascii")))
+            
+            if certificate.isBlacklisted():
+                # something is wrong; indicate it to the user
+                if self.__hasExpired(certificate.effectiveDate(),
+                                     certificate.expiryDate()):
+                    self.expiredLabel.setVisible(True)
+                else:
+                    self.blacklistedLabel.setVisible(True)
+    
+    def __certificateString(self, txt):
+        """
+        Private method to prepare some text for display.
+        
+        @param txt text to be displayed (string)
+        @return prepared text (string)
+        """
+        if txt is None or txt == "":
+            return self.tr("<not part of the certificate>")
+        
+        return Utilities.decodeString(txt)
+    
+    def __serialNumber(self, cert):
+        """
+        Private slot to format the certificate serial number.
+        
+        @param cert reference to the SSL certificate (QSslCertificate)
+        @return formated serial number (string)
+        """
+        serial = cert.serialNumber()
+        if serial == "":
+            return self.tr("<not part of the certificate>")
+        
+        if b':' in serial:
+            return str(serial, encoding="ascii").upper()
+        else:
+            hexString = hex(int(serial))[2:]
+            return self.__formatHexString(hexString)
+    
+    def __formatHexString(self, hexString):
+        """
+        Private method to format a hex string for display.
+        
+        @param hexString hex string to be formatted (string)
+        @return formatted string (string)
+        """
+        hexString = hexString.upper()
+        
+        if len(hexString) % 2 == 1:
+            hexString = '0' + hexString
+        
+        hexList = []
+        while hexString:
+            hexList.append(hexString[:2])
+            hexString = hexString[2:]
+        
+        return ':'.join(hexList)
+    
+    def __hasExpired(self, effectiveDate, expiryDate):
+        """
+        Private method to check for a certificate expiration.
+        
+        @param effectiveDate date the certificate becomes effective (QDateTime)
+        @param expiryDate date the certificate expires (QDateTime)
+        @return flag indicating the expiration status (boolean)
+        """
+        now = QDateTime.currentDateTime()
+        
+        return now < effectiveDate or now >= expiryDate
+    
+    @pyqtSlot(int)
+    def on_chainComboBox_activated(self, index):
+        """
+        Private slot to show the certificate info for the selected entry.
+        
+        @param index number of the certificate in the certificate chain
+            (integer)
+        """
+        self.__showCertificate(self.__chain[index])
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/EricNetwork/EricSslCertificatesInfoWidget.ui	Sat May 22 16:52:45 2021 +0200
@@ -0,0 +1,359 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>EricSslCertificatesInfoWidget</class>
+ <widget class="QWidget" name="EricSslCertificatesInfoWidget">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>500</width>
+    <height>455</height>
+   </rect>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QLabel" name="label_17">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="text">
+      <string>&lt;h2&gt;Certificate Information&lt;/h2&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <layout class="QHBoxLayout" name="horizontalLayout">
+     <item>
+      <widget class="QLabel" name="chainLabel">
+       <property name="text">
+        <string>Certificate Chain:</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QComboBox" name="chainComboBox">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <widget class="QLabel" name="blacklistedLabel">
+     <property name="text">
+      <string>This certificated has been blacklisted.</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QGroupBox" name="groupBox">
+     <layout class="QGridLayout" name="gridLayout">
+      <item row="0" column="0" colspan="2">
+       <widget class="QLabel" name="label">
+        <property name="text">
+         <string>&lt;b&gt;Issued for:&lt;/b&gt;</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="0">
+       <widget class="QLabel" name="label_2">
+        <property name="text">
+         <string>Common Name (CN):</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="1">
+       <widget class="QLabel" name="subjectCommonNameLabel">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="text">
+         <string/>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="0">
+       <widget class="QLabel" name="label_3">
+        <property name="text">
+         <string>Organization (O):</string>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="1">
+       <widget class="QLabel" name="subjectOrganizationLabel">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="text">
+         <string/>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="0">
+       <widget class="QLabel" name="label_4">
+        <property name="text">
+         <string>Organizational Unit (OU):</string>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="1">
+       <widget class="QLabel" name="subjectOrganizationalUnitLabel">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="text">
+         <string/>
+        </property>
+       </widget>
+      </item>
+      <item row="4" column="0">
+       <widget class="QLabel" name="label_5">
+        <property name="text">
+         <string>Serialnumber:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="4" column="1">
+       <widget class="QLabel" name="serialNumberLabel">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="text">
+         <string/>
+        </property>
+       </widget>
+      </item>
+      <item row="5" column="0">
+       <spacer name="verticalSpacer_3">
+        <property name="orientation">
+         <enum>Qt::Vertical</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>20</width>
+          <height>10</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+      <item row="6" column="0" colspan="2">
+       <widget class="QLabel" name="label_6">
+        <property name="text">
+         <string>&lt;b&gt;Issued by:&lt;/b&gt;</string>
+        </property>
+       </widget>
+      </item>
+      <item row="7" column="0">
+       <widget class="QLabel" name="label_9">
+        <property name="text">
+         <string>Common Name (CN):</string>
+        </property>
+       </widget>
+      </item>
+      <item row="7" column="1">
+       <widget class="QLabel" name="issuerCommonNameLabel">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="text">
+         <string/>
+        </property>
+       </widget>
+      </item>
+      <item row="8" column="0">
+       <widget class="QLabel" name="label_8">
+        <property name="text">
+         <string>Organization (O):</string>
+        </property>
+       </widget>
+      </item>
+      <item row="8" column="1">
+       <widget class="QLabel" name="issuerOrganizationLabel">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="text">
+         <string/>
+        </property>
+       </widget>
+      </item>
+      <item row="9" column="0">
+       <widget class="QLabel" name="label_7">
+        <property name="text">
+         <string>Organizational Unit (OU):</string>
+        </property>
+       </widget>
+      </item>
+      <item row="9" column="1">
+       <widget class="QLabel" name="issuerOrganizationalUnitLabel">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="text">
+         <string/>
+        </property>
+       </widget>
+      </item>
+      <item row="10" column="0">
+       <spacer name="verticalSpacer_2">
+        <property name="orientation">
+         <enum>Qt::Vertical</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>20</width>
+          <height>9</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+      <item row="11" column="0" colspan="2">
+       <widget class="QLabel" name="label_10">
+        <property name="text">
+         <string>&lt;b&gt;Validity:&lt;/b&gt;</string>
+        </property>
+       </widget>
+      </item>
+      <item row="12" column="0">
+       <widget class="QLabel" name="label_11">
+        <property name="text">
+         <string>Issued on:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="12" column="1">
+       <widget class="QLabel" name="effectiveLabel">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="text">
+         <string/>
+        </property>
+       </widget>
+      </item>
+      <item row="13" column="0">
+       <widget class="QLabel" name="label_12">
+        <property name="text">
+         <string>Expires on:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="13" column="1">
+       <widget class="QLabel" name="expiresLabel">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="text">
+         <string/>
+        </property>
+       </widget>
+      </item>
+      <item row="14" column="0" colspan="2">
+       <widget class="QLabel" name="expiredLabel">
+        <property name="text">
+         <string>This certificate is not valid yet or has expired.</string>
+        </property>
+       </widget>
+      </item>
+      <item row="15" column="0">
+       <spacer name="verticalSpacer">
+        <property name="orientation">
+         <enum>Qt::Vertical</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>20</width>
+          <height>10</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+      <item row="16" column="0" colspan="2">
+       <widget class="QLabel" name="label_13">
+        <property name="text">
+         <string>&lt;b&gt;Fingerprints:&lt;/b&gt;</string>
+        </property>
+       </widget>
+      </item>
+      <item row="17" column="0">
+       <widget class="QLabel" name="label_14">
+        <property name="text">
+         <string>SHA1-Fingerprint:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="17" column="1">
+       <widget class="QLabel" name="sha1Label">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="text">
+         <string/>
+        </property>
+       </widget>
+      </item>
+      <item row="18" column="0">
+       <widget class="QLabel" name="label_15">
+        <property name="text">
+         <string>MD5-Fingerprint:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="18" column="1">
+       <widget class="QLabel" name="md5Label">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="text">
+         <string/>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/EricNetwork/EricSslErrorHandler.py	Sat May 22 16:52:45 2021 +0200
@@ -0,0 +1,273 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2013 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing a SSL error handler.
+"""
+
+import contextlib
+import enum
+import platform
+
+from PyQt6.QtCore import QObject, QByteArray
+from PyQt6.QtNetwork import QSslCertificate, QSslConfiguration, QSslError, QSsl
+
+from E5Gui import E5MessageBox
+
+import Preferences
+import Utilities
+import Globals
+
+
+class EricSslErrorState(enum.Enum):
+    """
+    Class defining the SSL error handling states.
+    """
+    NOT_IGNORED = 0
+    SYSTEM_IGNORED = 1
+    USER_IGNORED = 2
+
+
+class EricSslErrorHandler(QObject):
+    """
+    Class implementing a handler for SSL errors.
+    
+    It also initializes the default SSL configuration with certificates
+    permanently accepted by the user already.
+    """
+    def __init__(self, parent=None):
+        """
+        Constructor
+        
+        @param parent reference to the parent object (QObject)
+        """
+        super().__init__(parent)
+        
+        caList = self.__getSystemCaCertificates()
+        if Preferences.Prefs.settings.contains("Help/CaCertificatesDict"):
+            # port old entries stored under 'Help'
+            certificateDict = Globals.toDict(
+                Preferences.Prefs.settings.value("Help/CaCertificatesDict"))
+            Preferences.Prefs.settings.setValue(
+                "Ssl/CaCertificatesDict", certificateDict)
+            Preferences.Prefs.settings.remove("Help/CaCertificatesDict")
+        else:
+            certificateDict = Globals.toDict(
+                Preferences.Prefs.settings.value("Ssl/CaCertificatesDict"))
+        for server in certificateDict:
+            for cert in QSslCertificate.fromData(certificateDict[server]):
+                if cert not in caList:
+                    caList.append(cert)
+        sslCfg = QSslConfiguration.defaultConfiguration()
+        sslCfg.setCaCertificates(caList)
+        try:
+            sslProtocol = QSsl.SslProtocol.TlsV1_1OrLater
+            if Globals.isWindowsPlatform() and platform.win32_ver()[0] == '7':
+                sslProtocol = QSsl.SslProtocol.SecureProtocols
+        except AttributeError:
+            sslProtocol = QSsl.SslProtocol.SecureProtocols
+        sslCfg.setProtocol(sslProtocol)
+        with contextlib.suppress(AttributeError):
+            sslCfg.setSslOption(QSsl.SslOption.SslOptionDisableCompression,
+                                True)
+        QSslConfiguration.setDefaultConfiguration(sslCfg)
+    
+    def sslErrorsReplySlot(self, reply, errors):
+        """
+        Public slot to handle SSL errors for a network reply.
+        
+        @param reply reference to the reply object (QNetworkReply)
+        @param errors list of SSL errors (list of QSslError)
+        """
+        self.sslErrorsReply(reply, errors)
+    
+    def sslErrorsReply(self, reply, errors):
+        """
+        Public slot to handle SSL errors for a network reply.
+        
+        @param reply reference to the reply object (QNetworkReply)
+        @param errors list of SSL errors (list of QSslError)
+        @return tuple indicating to ignore the SSL errors (one of NotIgnored,
+            SystemIgnored or UserIgnored) and indicating a change of the
+            default SSL configuration (boolean)
+        """
+        url = reply.url()
+        ignore, defaultChanged = self.sslErrors(errors, url.host(), url.port())
+        if ignore:
+            if defaultChanged:
+                reply.setSslConfiguration(
+                    QSslConfiguration.defaultConfiguration())
+            reply.ignoreSslErrors()
+        else:
+            reply.abort()
+        
+        return ignore, defaultChanged
+    
+    def sslErrors(self, errors, server, port=-1):
+        """
+        Public method to handle SSL errors.
+        
+        @param errors list of SSL errors
+        @type list of QSslError
+        @param server name of the server
+        @type str
+        @param port value of the port
+        @type int
+        @return tuple indicating to ignore the SSL errors and indicating a
+            change of the default SSL configuration
+        @rtype tuple of (EricSslErrorState, bool)
+        """
+        caMerge = {}
+        certificateDict = Globals.toDict(
+            Preferences.Prefs.settings.value("Ssl/CaCertificatesDict"))
+        for caServer in certificateDict:
+            caMerge[caServer] = QSslCertificate.fromData(
+                certificateDict[caServer])
+        caNew = []
+        
+        errorStrings = []
+        if port != -1:
+            server += ":{0:d}".format(port)
+        if errors:
+            for err in errors:
+                if err.error() == QSslError.SslError.NoError:
+                    continue
+                if server in caMerge and err.certificate() in caMerge[server]:
+                    continue
+                errorStrings.append(err.errorString())
+                if not err.certificate().isNull():
+                    cert = err.certificate()
+                    if cert not in caNew:
+                        caNew.append(cert)
+        if not errorStrings:
+            return EricSslErrorState.SYSTEM_IGNORED, False
+        
+        errorString = '.</li><li>'.join(errorStrings)
+        ret = E5MessageBox.yesNo(
+            None,
+            self.tr("SSL Errors"),
+            self.tr("""<p>SSL Errors for <br /><b>{0}</b>"""
+                    """<ul><li>{1}</li></ul></p>"""
+                    """<p>Do you want to ignore these errors?</p>""")
+            .format(server, errorString),
+            icon=E5MessageBox.Warning)
+        
+        if ret:
+            caRet = False
+            if len(caNew) > 0:
+                certinfos = []
+                for cert in caNew:
+                    certinfos.append(self.__certToString(cert))
+                caRet = E5MessageBox.yesNo(
+                    None,
+                    self.tr("Certificates"),
+                    self.tr(
+                        """<p>Certificates:<br/>{0}<br/>"""
+                        """Do you want to accept all these certificates?"""
+                        """</p>""")
+                    .format("".join(certinfos)))
+                if caRet:
+                    if server not in caMerge:
+                        caMerge[server] = []
+                    for cert in caNew:
+                        caMerge[server].append(cert)
+                    
+                    sslCfg = QSslConfiguration.defaultConfiguration()
+                    caList = sslCfg.caCertificates()
+                    for cert in caNew:
+                        caList.append(cert)
+                    sslCfg.setCaCertificates(caList)
+                    try:
+                        sslCfg.setProtocol(QSsl.SslProtocol.TlsV1_1OrLater)
+                    except AttributeError:
+                        sslCfg.setProtocol(QSsl.SslProtocol.SecureProtocols)
+                    with contextlib.suppress(AttributeError):
+                        sslCfg.setSslOption(
+                            QSsl.SslOption.SslOptionDisableCompression,
+                            True)
+                    QSslConfiguration.setDefaultConfiguration(sslCfg)
+                    
+                    certificateDict = {}
+                    for server in caMerge:
+                        pems = QByteArray()
+                        for cert in caMerge[server]:
+                            pems.append(cert.toPem() + b'\n')
+                        certificateDict[server] = pems
+                    Preferences.Prefs.settings.setValue(
+                        "Ssl/CaCertificatesDict",
+                        certificateDict)
+            
+            return EricSslErrorState.USER_IGNORED, caRet
+        
+        else:
+            return EricSslErrorState.NOT_IGNORED, False
+    
+    def __certToString(self, cert):
+        """
+        Private method to convert a certificate to a formatted string.
+        
+        @param cert certificate to convert (QSslCertificate)
+        @return formatted string (string)
+        """
+        result = "<p>"
+        
+        result += self.tr(
+            "Name: {0}"
+        ).format(
+            Utilities.html_encode(
+                Utilities.decodeString(
+                    ", ".join(cert.subjectInfo(
+                        QSslCertificate.SubjectInfo.CommonName))
+                )
+            )
+        )
+        
+        result += self.tr(
+            "<br/>Organization: {0}"
+        ).format(
+            Utilities.html_encode(
+                Utilities.decodeString(
+                    ", ".join(cert.subjectInfo(
+                        QSslCertificate.SubjectInfo.Organization))
+                )
+            )
+        )
+        
+        result += self.tr(
+            "<br/>Issuer: {0}"
+        ).format(
+            Utilities.html_encode(
+                Utilities.decodeString(
+                    ", ".join(cert.issuerInfo(
+                        QSslCertificate.SubjectInfo.CommonName))
+                )
+            )
+        )
+        result += self.tr(
+            "<br/>Not valid before: {0}<br/>Valid Until: {1}"
+        ).format(
+            Utilities.html_encode(
+                cert.effectiveDate().toString("yyyy-MM-dd")
+            ),
+            Utilities.html_encode(
+                cert.expiryDate().toString("yyyy-MM-dd")
+            )
+        )
+        
+        result += "</p>"
+        
+        return result
+    
+    def __getSystemCaCertificates(self):
+        """
+        Private method to get the list of system certificates.
+        
+        @return list of system certificates (list of QSslCertificate)
+        """
+        caList = QSslCertificate.fromData(Globals.toByteArray(
+            Preferences.Prefs.settings.value("Ssl/SystemCertificates")))
+        if not caList:
+            caList = QSslConfiguration.systemCaCertificates()
+        return caList
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/EricNetwork/EricSslInfoWidget.py	Sat May 22 16:52:45 2021 +0200
@@ -0,0 +1,209 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2010 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing a widget to show SSL information.
+"""
+
+from PyQt6.QtCore import Qt, QUrl, QPoint
+from PyQt6.QtWidgets import QMenu, QGridLayout, QLabel, QSizePolicy
+from PyQt6.QtNetwork import QSsl, QSslConfiguration, QSslCertificate
+
+import UI.PixmapCache
+import Utilities
+
+
+class EricSslInfoWidget(QMenu):
+    """
+    Class implementing a widget to show SSL certificate infos.
+    """
+    def __init__(self, url, configuration, parent=None):
+        """
+        Constructor
+        
+        @param url URL to show SSL info for (QUrl)
+        @param configuration SSL configuration (QSslConfiguration)
+        @param parent reference to the parent widget (QWidget)
+        """
+        super().__init__(parent)
+        
+        self.__url = QUrl(url)
+        self.__configuration = QSslConfiguration(configuration)
+        
+        self.setMinimumWidth(400)
+        
+        certList = self.__configuration.peerCertificateChain()
+        cert = certList[0] if certList else QSslCertificate()
+        
+        layout = QGridLayout(self)
+        rows = 0
+        
+        ##########################################
+        ## Identity Information
+        ##########################################
+        imageLabel = QLabel(self)
+        layout.addWidget(imageLabel, rows, 0, Qt.AlignmentFlag.AlignCenter)
+        
+        label = QLabel(self)
+        label.setWordWrap(True)
+        label.setSizePolicy(QSizePolicy.Policy.Expanding,
+                            QSizePolicy.Policy.Preferred)
+        label.setText(self.tr("Identity"))
+        font = label.font()
+        font.setBold(True)
+        label.setFont(font)
+        layout.addWidget(label, rows, 1)
+        rows += 1
+        
+        label = QLabel(self)
+        label.setWordWrap(True)
+        if cert.isNull():
+            label.setText(self.tr(
+                "Warning: this site is NOT carrying a certificate."))
+            imageLabel.setPixmap(UI.PixmapCache.getPixmap("securityLow32"))
+        else:
+            valid = not cert.isBlacklisted()
+            if valid:
+                txt = ", ".join(
+                    cert.issuerInfo(QSslCertificate.SubjectInfo.CommonName))
+                label.setText(self.tr(
+                    "The certificate for this site is valid"
+                    " and has been verified by:\n{0}").format(
+                    Utilities.decodeString(txt)))
+                imageLabel.setPixmap(
+                    UI.PixmapCache.getPixmap("securityHigh32"))
+            else:
+                label.setText(self.tr(
+                    "The certificate for this site is NOT valid."))
+                imageLabel.setPixmap(
+                    UI.PixmapCache.getPixmap("securityLow32"))
+            layout.addWidget(label, rows, 1)
+            rows += 1
+            
+            label = QLabel(self)
+            label.setWordWrap(True)
+            label.setText(
+                '<a href="moresslinfos">' +
+                self.tr("Certificate Information") + "</a>")
+            label.linkActivated.connect(self.__showCertificateInfos)
+            layout.addWidget(label, rows, 1)
+            rows += 1
+        
+        ##########################################
+        ## Identity Information
+        ##########################################
+        imageLabel = QLabel(self)
+        layout.addWidget(imageLabel, rows, 0, Qt.AlignmentFlag.AlignCenter)
+        
+        label = QLabel(self)
+        label.setWordWrap(True)
+        label.setText(self.tr("Encryption"))
+        font = label.font()
+        font.setBold(True)
+        label.setFont(font)
+        layout.addWidget(label, rows, 1)
+        rows += 1
+        
+        cipher = self.__configuration.sessionCipher()
+        if cipher.isNull():
+            label = QLabel(self)
+            label.setWordWrap(True)
+            label.setText(self.tr(
+                'Your connection to "{0}" is NOT encrypted.\n').format(
+                self.__url.host()))
+            layout.addWidget(label, rows, 1)
+            imageLabel.setPixmap(UI.PixmapCache.getPixmap("securityLow32"))
+            rows += 1
+        else:
+            label = QLabel(self)
+            label.setWordWrap(True)
+            label.setText(self.tr(
+                'Your connection to "{0}" is encrypted.').format(
+                self.__url.host()))
+            layout.addWidget(label, rows, 1)
+            
+            proto = cipher.protocol()
+            if proto == QSsl.SslProtocol.SslV3:
+                sslVersion = "SSL 3.0"
+                imageLabel.setPixmap(
+                    UI.PixmapCache.getPixmap("securityLow32"))
+            elif proto == QSsl.SslProtocol.TlsV1SslV3:
+                sslVersion = "TLS 1.0/SSL 3.0"
+                imageLabel.setPixmap(
+                    UI.PixmapCache.getPixmap("securityLow32"))
+            elif proto == QSsl.SslProtocol.SslV2:
+                sslVersion = "SSL 2.0"
+                imageLabel.setPixmap(
+                    UI.PixmapCache.getPixmap("securityLow32"))
+            else:
+                sslVersion = self.tr("unknown")
+                imageLabel.setPixmap(
+                    UI.PixmapCache.getPixmap("securityLow32"))
+            if proto == QSsl.SslProtocol.TlsV1_0:
+                sslVersion = "TLS 1.0"
+                imageLabel.setPixmap(
+                    UI.PixmapCache.getPixmap("securityHigh32"))
+            elif proto == QSsl.SslProtocol.TlsV1_1:
+                sslVersion = "TLS 1.1"
+                imageLabel.setPixmap(
+                    UI.PixmapCache.getPixmap("securityHigh32"))
+            elif proto == QSsl.SslProtocol.TlsV1_2:
+                sslVersion = "TLS 1.2"
+                imageLabel.setPixmap(
+                    UI.PixmapCache.getPixmap("securityHigh32"))
+            elif proto == QSsl.SslProtocol.TlsV1_3:
+                sslVersion = "TLS 1.3"
+                imageLabel.setPixmap(
+                    UI.PixmapCache.getPixmap("securityHigh32"))
+            rows += 1
+            
+            label = QLabel(self)
+            label.setWordWrap(True)
+            label.setText(self.tr(
+                "It uses protocol: {0}").format(sslVersion))
+            layout.addWidget(label, rows, 1)
+            rows += 1
+            
+            label = QLabel(self)
+            label.setWordWrap(True)
+            label.setText(self.tr(
+                "It is encrypted using {0} at {1} bits, "
+                "with {2} for message authentication and "
+                "{3} as key exchange mechanism.\n\n").format(
+                cipher.encryptionMethod(),
+                cipher.usedBits(),
+                cipher.authenticationMethod(),
+                cipher.keyExchangeMethod()))
+            layout.addWidget(label, rows, 1)
+            rows += 1
+    
+    def showAt(self, pos):
+        """
+        Public method to show the widget.
+        
+        @param pos position to show at (QPoint)
+        """
+        self.adjustSize()
+        xpos = pos.x() - self.width()
+        if xpos < 0:
+            xpos = 10
+        p = QPoint(xpos, pos.y() + 10)
+        self.move(p)
+        self.show()
+    
+    def __showCertificateInfos(self):
+        """
+        Private slot to show certificate information.
+        """
+        from .EricSslCertificatesInfoDialog import EricSslCertificatesInfoDialog
+        dlg = EricSslCertificatesInfoDialog(
+            self.__configuration.peerCertificateChain())
+        dlg.exec()
+    
+    def accept(self):
+        """
+        Public method to accept the widget.
+        """
+        self.close()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/EricNetwork/EricSslUtilities.py	Sat May 22 16:52:45 2021 +0200
@@ -0,0 +1,30 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2015 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing SSL utility functions.
+"""
+
+
+def initSSL():
+    """
+    Function to initialize some global SSL stuff.
+    """
+    blacklist = [
+        "SRP-AES-256-CBC-SHA",          # open to MitM
+        "SRP-AES-128-CBC-SHA",          # open to MitM
+    ]
+    
+    try:
+        from PyQt6.QtNetwork import QSslConfiguration
+    except ImportError:
+        # no SSL available, so there is nothing to initialize
+        return
+    
+    strongCiphers = [c for c in QSslConfiguration.supportedCiphers()
+                     if c.name() not in blacklist and c.usedBits() >= 128]
+    defaultSslConfiguration = QSslConfiguration.defaultConfiguration()
+    defaultSslConfiguration.setCiphers(strongCiphers)
+    QSslConfiguration.setDefaultConfiguration(defaultSslConfiguration)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/EricNetwork/EricTldExtractor.py	Sat May 22 16:52:45 2021 +0200
@@ -0,0 +1,554 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2016 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing the TLD Extractor.
+"""
+
+#
+# This is a Python port of the TLDExtractor of Qupzilla
+# Copyright (C) 2014  Razi Alavizadeh <s.r.alavizadeh@gmail.com>
+#
+
+import collections
+import os
+import re
+
+from PyQt6.QtCore import QObject, QUrl, QFile, QFileInfo, qWarning
+
+from E5Gui import E5MessageBox
+
+
+class EricTldHostParts:
+    """
+    Class implementing the host parts helper.
+    """
+    def __init__(self):
+        """
+        Constructor
+        """
+        self.host = ""
+        self.tld = ""
+        self.domain = ""
+        self.registrableDomain = ""
+        self.subdomain = ""
+
+
+class EricTldExtractor(QObject):
+    """
+    Class implementing the TLD Extractor.
+    
+    Note: The module function instance() should be used to get a reference
+    to a global object to avoid overhead.
+    """
+    def __init__(self, withPrivate=False, parent=None):
+        """
+        Constructor
+        
+        @param withPrivate flag indicating to load private TLDs as well
+        @type bool
+        @param parent reference to the parent object
+        @type QObject
+        """
+        super().__init__(parent)
+        
+        self.__withPrivate = withPrivate
+        self.__dataFileName = ""
+        self.__dataSearchPaths = []
+        
+        self.__tldDict = collections.defaultdict(list)
+        # dict with list of str as values
+        
+        self.setDataSearchPaths()
+    
+    def isDataLoaded(self):
+        """
+        Public method to check, if the TLD data ia already loaded.
+        
+        @return flag indicating data is loaded
+        @rtype bool
+        """
+        return bool(self.__tldDict)
+    
+    def tld(self, host):
+        """
+        Public method to get the top level domain for a host.
+        
+        @param host host name to get TLD for
+        @type str
+        @return TLD for host
+        @rtype str
+        """
+        if not host or host.startswith("."):
+            return ""
+        
+        cleanHost = self.__normalizedHost(host)
+        
+        tldPart = cleanHost[cleanHost.rfind(".") + 1:]
+        cleanHost = bytes(QUrl.toAce(cleanHost)).decode("utf-8")
+        
+        self.__loadData()
+        
+        if tldPart not in self.__tldDict:
+            return tldPart
+        
+        tldRules = self.__tldDict[tldPart][:]
+        
+        if tldPart not in tldRules:
+            tldRules.append(tldPart)
+        
+        maxLabelCount = 0
+        isWildcardTLD = False
+        
+        for rule in tldRules:
+            labelCount = rule.count(".") + 1
+            
+            if rule.startswith("!"):
+                rule = rule[1:]
+                
+                rule = bytes(QUrl.toAce(rule)).decode("utf-8")
+                
+                # matches with exception TLD
+                if cleanHost.endswith(rule):
+                    tldPart = rule[rule.find(".") + 1:]
+                    break
+            
+            if rule.startswith("*"):
+                rule = rule[1:]
+                
+                if rule.startswith("."):
+                    rule = rule[1:]
+                
+                isWildcardTLD = True
+            else:
+                isWildcardTLD = False
+            
+            rule = bytes(QUrl.toAce(rule)).decode("utf-8")
+            testRule = "." + rule
+            testUrl = "." + cleanHost
+            
+            if labelCount > maxLabelCount and testUrl.endswith(testRule):
+                tldPart = rule
+                maxLabelCount = labelCount
+                
+                if isWildcardTLD:
+                    temp = cleanHost
+                    temp = temp[:temp.rfind(tldPart)]
+                    
+                    if temp.endswith("."):
+                        temp = temp[:-1]
+                    
+                    temp = temp[temp.rfind(".") + 1:]
+                    
+                    if temp:
+                        tldPart = temp + "." + rule
+                    else:
+                        tldPart = rule
+        
+        temp = self.__normalizedHost(host)
+        tldPart = ".".join(
+            temp.split(".")[temp.count(".") - tldPart.count("."):])
+        
+        return tldPart
+    
+    def domain(self, host):
+        """
+        Public method to get the domain for a host.
+        
+        @param host host name to get the domain for
+        @type str
+        @return domain for host
+        @rtype str
+        """
+        tldPart = self.tld(host)
+        
+        return self.__domainHelper(host, tldPart)
+    
+    def registrableDomain(self, host):
+        """
+        Public method to get the registrable domain for a host.
+        
+        @param host host name to get the registrable domain for
+        @type str
+        @return registrable domain for host
+        @rtype str
+        """
+        tldPart = self.tld(host)
+        
+        return self.__registrableDomainHelper(
+            self.__domainHelper(host, tldPart), tldPart)
+    
+    def subdomain(self, host):
+        """
+        Public method to get the subdomain for a host.
+        
+        @param host host name to get the subdomain for
+        @type str
+        @return subdomain for host
+        @rtype str
+        """
+        return self.__subdomainHelper(host, self.registrableDomain(host))
+    
+    def splitParts(self, host):
+        """
+        Public method to split a host address into its parts.
+        
+        @param host host address to be split
+        @type str
+        @return splitted host address
+        @rtype EricTldHostParts
+        """
+        hostParts = EricTldHostParts()
+        hostParts.host = host
+        hostParts.tld = self.tld(host)
+        hostParts.domain = self.__domainHelper(host, hostParts.tld)
+        hostParts.registrableDomain = self.__registrableDomainHelper(
+            hostParts.domain, hostParts.tld)
+        hostParts.subdomain = self.__subdomainHelper(
+            host, hostParts.registrableDomain)
+        
+        return hostParts
+    
+    def dataSearchPaths(self):
+        """
+        Public method to get the search paths for the TLD data file.
+        
+        @return search paths for the TLD data file
+        @rtype list of str
+        """
+        return self.__dataSearchPaths[:]
+    
+    def setDataSearchPaths(self, searchPaths=None):
+        """
+        Public method to set the search paths for the TLD data file.
+        
+        @param searchPaths search paths for the TLD data file or None,
+            if the default search paths shall be set
+        @type list of str
+        """
+        if searchPaths:
+            self.__dataSearchPaths = searchPaths[:]
+            self.__dataSearchPaths.extend(self.__defaultDataSearchPaths())
+        else:
+            self.__dataSearchPaths = self.__defaultDataSearchPaths()[:]
+        
+        # remove duplicates
+        paths = []
+        for p in self.__dataSearchPaths:
+            if p not in paths:
+                paths.append(p)
+        self.__dataSearchPaths = paths
+    
+    def __defaultDataSearchPaths(self):
+        """
+        Private method to get the default search paths for the TLD data file.
+        
+        @return default search paths for the TLD data file
+        @rtype list of str
+        """
+        return [os.path.join(os.path.dirname(__file__), "data")]
+    
+    def getTldDownloadUrl(self):
+        """
+        Public method to get the TLD data file download URL.
+        
+        @return download URL
+        @rtype QUrl
+        """
+        return QUrl(
+            "http://mxr.mozilla.org/mozilla-central/source/netwerk/dns/"
+            "effective_tld_names.dat?raw=1")
+    
+    def __loadData(self):
+        """
+        Private method to load the TLD data.
+        """
+        if self.isDataLoaded():
+            return
+        
+        dataFileName = ""
+        parsedDataFileExist = False
+        
+        for path in self.__dataSearchPaths:
+            dataFileName = (
+                QFileInfo(path + "/effective_tld_names.dat").absoluteFilePath()
+            )
+            if QFileInfo(dataFileName).exists():
+                parsedDataFileExist = True
+                break
+        
+        if not parsedDataFileExist:
+            tldDataFileDownloadLink = (
+                "http://mxr.mozilla.org/mozilla-central/source/netwerk/dns/"
+                "effective_tld_names.dat?raw=1"
+            )
+            E5MessageBox.information(
+                None,
+                self.tr("TLD Data File not found"),
+                self.tr("""<p>The file 'effective_tld_names.dat' was not"""
+                        """ found!<br/>You can download it from """
+                        """'<a href="{0}"><b>here</b></a>' to one of the"""
+                        """ following paths:</p><ul>{1}</ul>""").format(
+                    tldDataFileDownloadLink,
+                    "".join(["<li>{0}</li>".format(p)
+                             for p in self.__dataSearchPaths]))
+            )
+            return
+        
+        self.__dataFileName = dataFileName
+        if not self.__parseData(dataFileName,
+                                loadPrivateDomains=self.__withPrivate):
+            qWarning(
+                "EricTldExtractor: There are some parse errors for file: {0}"
+                .format(dataFileName))
+    
+    def __parseData(self, dataFile, loadPrivateDomains=False):
+        """
+        Private method to parse TLD data.
+        
+        @param dataFile name of the file containing the TLD data
+        @type str
+        @param loadPrivateDomains flag indicating to load private domains
+        @type bool
+        @return flag indicating success
+        @rtype bool
+        """
+        # start with a fresh dictionary
+        self.__tldDict = collections.defaultdict(list)
+        
+        file = QFile(dataFile)
+        
+        if not file.open(QFile.ReadOnly | QFile.Text):
+            return False
+        
+        seekToEndOfPrivateDomains = False
+        
+        while not file.atEnd():
+            line = bytes(file.readLine()).decode("utf-8").strip()
+            if not line:
+                continue
+            
+            if line.startswith("."):
+                line = line[1:]
+            
+            if line.startswith("//"):
+                if "===END PRIVATE DOMAINS===" in line:
+                    seekToEndOfPrivateDomains = False
+                
+                if (
+                    not loadPrivateDomains and
+                    "===BEGIN PRIVATE DOMAINS===" in line
+                ):
+                    seekToEndOfPrivateDomains = True
+                
+                continue
+            
+            if seekToEndOfPrivateDomains:
+                continue
+            
+            # only data up to the first whitespace is used
+            line = line.split(None, 1)[0]
+            
+            if "." not in line:
+                self.__tldDict[line].append(line)
+            else:
+                key = line[line.rfind(".") + 1:]
+                self.__tldDict[key].append(line)
+        
+        return self.isDataLoaded()
+    
+    def __domainHelper(self, host, tldPart):
+        """
+        Private method to get the domain name without TLD.
+        
+        @param host host address
+        @type str
+        @param tldPart TLD part of the host address
+        @type str
+        @return domain name
+        @rtype str
+        """
+        if not host or not tldPart:
+            return ""
+        
+        temp = self.__normalizedHost(host)
+        temp = temp[:temp.rfind(tldPart)]
+        
+        if temp.endswith("."):
+            temp = temp[:-1]
+        
+        return temp[temp.rfind(".") + 1:]
+    
+    def __registrableDomainHelper(self, domainPart, tldPart):
+        """
+        Private method to get the registrable domain (i.e. domain plus TLD).
+        
+        @param domainPart domain part of a host address
+        @type str
+        @param tldPart TLD part of a host address
+        @type str
+        @return registrable domain name
+        @rtype str
+        """
+        if not tldPart or not domainPart:
+            return ""
+        else:
+            return "{0}.{1}".format(domainPart, tldPart)
+    
+    def __subdomainHelper(self, host, registrablePart):
+        """
+        Private method to get the subdomain of a host address (i.e. domain part
+        without the registrable domain name).
+        
+        @param host host address
+        @type str
+        @param registrablePart registrable domain part of the host address
+        @type str
+        @return subdomain name
+        @rtype str
+        """
+        if not host or not registrablePart:
+            return ""
+        
+        subdomain = self.__normalizedHost(host)
+        
+        subdomain = subdomain[:subdomain.rfind(registrablePart)]
+        
+        if subdomain.endswith("."):
+            subdomain = subdomain[:-1]
+        
+        return subdomain
+    
+    def __normalizedHost(self, host):
+        """
+        Private method to get the normalized host for a host address.
+        
+        @param host host address to be normalized
+        @type str
+        @return normalized host address
+        @rtype str
+        """
+        return host.lower()
+    
+    #################################################################
+    ## Methods below are for testing purposes
+    #################################################################
+    
+    def test(self):
+        """
+        Public method to execute the tests.
+        
+        @return flag indicating the test result
+        @rtype bool
+        """
+        self.__withPrivate = True
+        self.__loadData()
+        if not self.__tldDict:
+            return False
+        
+        testDataFileName = ""
+        testDataFileExist = False
+        
+        for path in self.__dataSearchPaths:
+            testDataFileName = (
+                QFileInfo(path + "/test_psl.txt").absoluteFilePath()
+            )
+            if QFileInfo(testDataFileName).exists():
+                testDataFileExist = True
+                break
+        
+        if not testDataFileExist:
+            testFileDownloadLink = (
+                "http://mxr.mozilla.org/mozilla-central/source/netwerk/test/"
+                "unit/data/test_psl.txt?raw=1"
+            )
+            E5MessageBox.information(
+                None,
+                self.tr("TLD Data File not found"),
+                self.tr("""<p>The file 'test_psl.txt' was not found!"""
+                        """<br/>You can download it from '<a href="{0}">"""
+                        """<b>here</b></a>' to one of the following"""
+                        """ paths:</p><ul>{1}</ul>""").format(
+                    testFileDownloadLink,
+                    "".join(["<li>{0}</li>".format(p)
+                             for p in self.__dataSearchPaths]))
+            )
+            return False
+        
+        file = QFile(testDataFileName)
+        
+        if not file.open(QFile.ReadOnly | QFile.Text):
+            return False
+        
+        testRegExp = re.compile(
+            "checkPublicSuffix\\(('([^']+)'|null), ('([^']+)'|null)\\);")
+        allTestSuccess = True
+        
+        while not file.atEnd():
+            line = bytes(file.readLine()).decode("utf-8").strip()
+            if not line or line.startswith("//"):
+                continue
+            
+            match = testRegExp.search(line)
+            if match is None:
+                allTestSuccess = False
+            else:
+                hostName, registrableName = match.group(2, 4)
+                
+                if not self.__checkPublicSuffix(hostName, registrableName):
+                    allTestSuccess = False
+        
+        if allTestSuccess:
+            qWarning("EricTldExtractor: Test passed successfully.")
+        else:
+            qWarning("EricTldExtractor: Test finished with some errors!")
+        
+        # reset the TLD dictionary
+        self.__tldDict = collections.defaultdict(list)
+        
+        return allTestSuccess
+    
+    def __checkPublicSuffix(self, host, registrableName):
+        """
+        Private method to test a host name against a registrable name.
+        
+        @param host host name to test
+        @type str
+        @param registrableName registrable domain name to test against
+        @type str
+        @return flag indicating the check result
+        @rtype bool
+        """
+        regName = self.registrableDomain(host)
+        if regName != registrableName:
+            qWarning(
+                "EricTldExtractor Test Error: hostName: {0}\n"
+                "    Correct registrableName:    {1}\n"
+                "    Calculated registrableName: {2}".format(
+                    host, registrableName, regName))
+            return False
+        
+        return True
+
+
+_TLDExtractor = None
+
+
+def instance(withPrivate=False):
+    """
+    Global function to get a reference to the TLD extractor and create it, if
+    it hasn't been yet.
+    
+    @param withPrivate flag indicating to load private TLDs as well
+    @type bool
+    @return reference to the zoom manager object
+    @rtype EricTldExtractor
+    """
+    global _TLDExtractor
+    
+    if _TLDExtractor is None:
+        _TLDExtractor = EricTldExtractor(withPrivate=withPrivate)
+    
+    return _TLDExtractor
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/EricNetwork/EricUrlInfo.py	Sat May 22 16:52:45 2021 +0200
@@ -0,0 +1,272 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2012 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing a class replacing QUrlInfo.
+"""
+
+import enum
+
+from PyQt6.QtCore import QDateTime
+
+
+class EricUrlPermission(enum.IntEnum):
+    """
+    Class defining the URL permissions.
+    """
+    READ_OWNER = 0o0400
+    WRITE_OWNER = 0o0200
+    EXE_OWNER = 0o0100
+    READ_GROUP = 0o0040
+    WRITE_GROUP = 0o0020
+    EXE_GROUP = 0o0010
+    READ_OTHER = 0o0004
+    WRITE_OTHER = 0o0002
+    EXE_OTHER = 0o0001
+
+
+class EricUrlInfo:
+    """
+    Class implementing a replacement for QUrlInfo.
+    """
+    def __init__(self):
+        """
+        Constructor
+        """
+        self.__valid = False
+        
+        self.__permissions = 0
+        self.__size = 0
+        self.__isDir = False
+        self.__isFile = True
+        self.__isSymlink = False
+        self.__isWritable = True
+        self.__isReadable = True
+        self.__isExecutable = False
+        self.__name = ""
+        self.__owner = ""
+        self.__group = ""
+        self.__lastModified = QDateTime()
+        self.__lastRead = QDateTime()
+    
+    def isValid(self):
+        """
+        Public method to check the validity of the object.
+        
+        @return flag indicating validity (boolean)
+        """
+        return self.__valid
+    
+    def setName(self, name):
+        """
+        Public method to set the name.
+        
+        @param name name to be set (string)
+        """
+        self.__name = name
+        self.__valid = True
+    
+    def setPermissions(self, permissions):
+        """
+        Public method to set the permissions.
+        
+        @param permissions permissions to be set (integer)
+        """
+        self.__permissions = permissions
+        self.__valid = True
+    
+    def setDir(self, isDir):
+        """
+        Public method to indicate a directory.
+        
+        @param isDir flag indicating a directory (boolean)
+        """
+        self.__isDir = isDir
+        self.__valid = True
+    
+    def setFile(self, isFile):
+        """
+        Public method to indicate a file.
+        
+        @param isFile flag indicating a file (boolean)
+        """
+        self.__isFile = isFile
+        self.__valid = True
+    
+    def setSymLink(self, isSymLink):
+        """
+        Public method to indicate a symbolic link.
+        
+        @param isSymLink flag indicating a symbolic link (boolean)
+        """
+        self.__isSymLink = isSymLink
+        self.__valid = True
+    
+    def setOwner(self, owner):
+        """
+        Public method to set the owner.
+        
+        @param owner owner to be set (string)
+        """
+        self.__owner = owner
+        self.__valid = True
+    
+    def setGroup(self, group):
+        """
+        Public method to set the group.
+        
+        @param group group to be set (string)
+        """
+        self.__group = group
+        self.__valid = True
+    
+    def setSize(self, size):
+        """
+        Public method to set the size.
+        
+        @param size size to be set (integer)
+        """
+        self.__size = size
+        self.__valid = True
+    
+    def setWritable(self, isWritable):
+        """
+        Public method to a writable entry.
+        
+        @param isWritable flag indicating a writable entry (boolean)
+        """
+        self.__isWritable = isWritable
+        self.__valid = True
+    
+    def setReadable(self, isReadable):
+        """
+        Public method to a readable entry.
+        
+        @param isReadable flag indicating a readable entry (boolean)
+        """
+        self.__isReadable = isReadable
+        self.__valid = True
+    
+    def setLastModified(self, dt):
+        """
+        Public method to set the last modified date and time.
+        
+        @param dt date and time to set (QDateTime)
+        """
+        self.__lastModified = QDateTime(dt)
+        self.__valid = True
+    
+    def setLastRead(self, dt):
+        """
+        Public method to set the last read date and time.
+        
+        @param dt date and time to set (QDateTime)
+        """
+        self.__lastRead = QDateTime(dt)
+        self.__valid = True
+    
+    def name(self):
+        """
+        Public method to get the name.
+        
+        @return name (string)
+        """
+        return self.__name
+    
+    def permissions(self):
+        """
+        Public method to get the permissions.
+        
+        @return permissions (integer)
+        """
+        return self.__permissions
+    
+    def owner(self):
+        """
+        Public method to get the owner.
+        
+        @return owner (string)
+        """
+        return self.__owner
+    
+    def group(self):
+        """
+        Public method to get the group.
+        
+        @return group (string)
+        """
+        return self.__group
+    
+    def size(self):
+        """
+        Public method to get the size.
+        
+        @return size (integer)
+        """
+        return self.__size
+    
+    def lastModified(self):
+        """
+        Public method to get the last modified date and time.
+        
+        @return last modified date and time (QDateTime)
+        """
+        return QDateTime(self.__lastModified)
+    
+    def lastRead(self):
+        """
+        Public method to get the last read date and time.
+        
+        @return last read date and time (QDateTime)
+        """
+        return QDateTime(self.__lastRead)
+    
+    def isDir(self):
+        """
+        Public method to test, if the entry is a directory.
+        
+        @return flag indicating a directory (boolean)
+        """
+        return self.__isDir
+    
+    def isFile(self):
+        """
+        Public method to test, if the entry is a file.
+        
+        @return flag indicating a file (boolean)
+        """
+        return self.__isFile
+    
+    def isSymLink(self):
+        """
+        Public method to test, if the entry is a symbolic link.
+        
+        @return flag indicating a symbolic link (boolean)
+        """
+        return self.__isSymlink
+    
+    def isWritable(self):
+        """
+        Public method to test, if the entry is writable.
+        
+        @return flag indicating writable (boolean)
+        """
+        return self.__isWritable
+    
+    def isReadable(self):
+        """
+        Public method to test, if the entry is readable.
+        
+        @return flag indicating readable (boolean)
+        """
+        return self.__isReadable
+    
+    def isExecutable(self):
+        """
+        Public method to test, if the entry is executable.
+        
+        @return flag indicating executable (boolean)
+        """
+        return self.__isExecutable
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/EricNetwork/__init__.py	Sat May 22 16:52:45 2021 +0200
@@ -0,0 +1,55 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2009 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Package implementing some special network related objects and functions.
+"""
+
+from PyQt6.QtNetwork import QAbstractSocket, QHostAddress
+
+
+def isValidAddress(address):
+    """
+    Public function to check, if the given address is valid.
+    
+    @param address IPv4 or IPv6 address string
+    @type str
+    @return flag indicating validity
+    @rtype bool
+    """
+    h = QHostAddress(address)
+    return not h.isNull()
+
+
+def isValidIPv4Address(address):
+    """
+    Public function to check, if the given address is a valid IPv4 address.
+    
+    @param address IPv4 address string
+    @type str
+    @return flag indicating validity
+    @rtype bool
+    """
+    h = QHostAddress(address)
+    return (
+        not h.isNull() and
+        h.protocol() == QAbstractSocket.NetworkLayerProtocol.IPv4Protocol
+    )
+
+
+def isValidIPv6Address(address):
+    """
+    Public function to check, if the given address is a valid IPv6 address.
+    
+    @param address IPv6 address string
+    @type str
+    @return flag indicating validity
+    @rtype bool
+    """
+    h = QHostAddress(address)
+    return (
+        not h.isNull() and
+        h.protocol() == QAbstractSocket.NetworkLayerProtocol.IPv6Protocol
+    )
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/EricNetwork/data/__init__.py	Sat May 22 16:52:45 2021 +0200
@@ -0,0 +1,8 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2016 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Package defining some data used by the networking code.
+"""
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/EricNetwork/data/effective_tld_names.dat	Sat May 22 16:52:45 2021 +0200
@@ -0,0 +1,11476 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at https://mozilla.org/MPL/2.0/.
+
+// ===BEGIN ICANN DOMAINS===
+
+// ac : https://en.wikipedia.org/wiki/.ac
+ac
+com.ac
+edu.ac
+gov.ac
+net.ac
+mil.ac
+org.ac
+
+// ad : https://en.wikipedia.org/wiki/.ad
+ad
+nom.ad
+
+// ae : https://en.wikipedia.org/wiki/.ae
+// see also: "Domain Name Eligibility Policy" at http://www.aeda.ae/eng/aepolicy.php
+ae
+co.ae
+net.ae
+org.ae
+sch.ae
+ac.ae
+gov.ae
+mil.ae
+
+// aero : see https://www.information.aero/index.php?id=66
+aero
+accident-investigation.aero
+accident-prevention.aero
+aerobatic.aero
+aeroclub.aero
+aerodrome.aero
+agents.aero
+aircraft.aero
+airline.aero
+airport.aero
+air-surveillance.aero
+airtraffic.aero
+air-traffic-control.aero
+ambulance.aero
+amusement.aero
+association.aero
+author.aero
+ballooning.aero
+broker.aero
+caa.aero
+cargo.aero
+catering.aero
+certification.aero
+championship.aero
+charter.aero
+civilaviation.aero
+club.aero
+conference.aero
+consultant.aero
+consulting.aero
+control.aero
+council.aero
+crew.aero
+design.aero
+dgca.aero
+educator.aero
+emergency.aero
+engine.aero
+engineer.aero
+entertainment.aero
+equipment.aero
+exchange.aero
+express.aero
+federation.aero
+flight.aero
+freight.aero
+fuel.aero
+gliding.aero
+government.aero
+groundhandling.aero
+group.aero
+hanggliding.aero
+homebuilt.aero
+insurance.aero
+journal.aero
+journalist.aero
+leasing.aero
+logistics.aero
+magazine.aero
+maintenance.aero
+media.aero
+microlight.aero
+modelling.aero
+navigation.aero
+parachuting.aero
+paragliding.aero
+passenger-association.aero
+pilot.aero
+press.aero
+production.aero
+recreation.aero
+repbody.aero
+res.aero
+research.aero
+rotorcraft.aero
+safety.aero
+scientist.aero
+services.aero
+show.aero
+skydiving.aero
+software.aero
+student.aero
+trader.aero
+trading.aero
+trainer.aero
+union.aero
+workinggroup.aero
+works.aero
+
+// af : http://www.nic.af/help.jsp
+af
+gov.af
+com.af
+org.af
+net.af
+edu.af
+
+// ag : http://www.nic.ag/prices.htm
+ag
+com.ag
+org.ag
+net.ag
+co.ag
+nom.ag
+
+// ai : http://nic.com.ai/
+ai
+off.ai
+com.ai
+net.ai
+org.ai
+
+// al : http://www.ert.gov.al/ert_alb/faq_det.html?Id=31
+al
+com.al
+edu.al
+gov.al
+mil.al
+net.al
+org.al
+
+// am : https://en.wikipedia.org/wiki/.am
+am
+
+// ao : https://en.wikipedia.org/wiki/.ao
+// http://www.dns.ao/REGISTR.DOC
+ao
+ed.ao
+gv.ao
+og.ao
+co.ao
+pb.ao
+it.ao
+
+// aq : https://en.wikipedia.org/wiki/.aq
+aq
+
+// ar : https://nic.ar/normativa-vigente.xhtml
+ar
+com.ar
+edu.ar
+gob.ar
+gov.ar
+int.ar
+mil.ar
+net.ar
+org.ar
+tur.ar
+
+// arpa : https://en.wikipedia.org/wiki/.arpa
+// Confirmed by registry <iana-questions@icann.org> 2008-06-18
+arpa
+e164.arpa
+in-addr.arpa
+ip6.arpa
+iris.arpa
+uri.arpa
+urn.arpa
+
+// as : https://en.wikipedia.org/wiki/.as
+as
+gov.as
+
+// asia : https://en.wikipedia.org/wiki/.asia
+asia
+
+// at : https://en.wikipedia.org/wiki/.at
+// Confirmed by registry <it@nic.at> 2008-06-17
+at
+ac.at
+co.at
+gv.at
+or.at
+
+// au : https://en.wikipedia.org/wiki/.au
+// http://www.auda.org.au/
+au
+// 2LDs
+com.au
+net.au
+org.au
+edu.au
+gov.au
+asn.au
+id.au
+// Historic 2LDs (closed to new registration, but sites still exist)
+info.au
+conf.au
+oz.au
+// CGDNs - http://www.cgdn.org.au/
+act.au
+nsw.au
+nt.au
+qld.au
+sa.au
+tas.au
+vic.au
+wa.au
+// 3LDs
+act.edu.au
+nsw.edu.au
+nt.edu.au
+qld.edu.au
+sa.edu.au
+tas.edu.au
+vic.edu.au
+wa.edu.au
+// act.gov.au  Bug 984824 - Removed at request of Greg Tankard
+// nsw.gov.au  Bug 547985 - Removed at request of <Shae.Donelan@services.nsw.gov.au>
+// nt.gov.au  Bug 940478 - Removed at request of Greg Connors <Greg.Connors@nt.gov.au>
+qld.gov.au
+sa.gov.au
+tas.gov.au
+vic.gov.au
+wa.gov.au
+
+// aw : https://en.wikipedia.org/wiki/.aw
+aw
+com.aw
+
+// ax : https://en.wikipedia.org/wiki/.ax
+ax
+
+// az : https://en.wikipedia.org/wiki/.az
+az
+com.az
+net.az
+int.az
+gov.az
+org.az
+edu.az
+info.az
+pp.az
+mil.az
+name.az
+pro.az
+biz.az
+
+// ba : https://en.wikipedia.org/wiki/.ba
+ba
+org.ba
+net.ba
+edu.ba
+gov.ba
+mil.ba
+unsa.ba
+unbi.ba
+co.ba
+com.ba
+rs.ba
+
+// bb : https://en.wikipedia.org/wiki/.bb
+bb
+biz.bb
+co.bb
+com.bb
+edu.bb
+gov.bb
+info.bb
+net.bb
+org.bb
+store.bb
+tv.bb
+
+// bd : https://en.wikipedia.org/wiki/.bd
+*.bd
+
+// be : https://en.wikipedia.org/wiki/.be
+// Confirmed by registry <tech@dns.be> 2008-06-08
+be
+ac.be
+
+// bf : https://en.wikipedia.org/wiki/.bf
+bf
+gov.bf
+
+// bg : https://en.wikipedia.org/wiki/.bg
+// https://www.register.bg/user/static/rules/en/index.html
+bg
+a.bg
+b.bg
+c.bg
+d.bg
+e.bg
+f.bg
+g.bg
+h.bg
+i.bg
+j.bg
+k.bg
+l.bg
+m.bg
+n.bg
+o.bg
+p.bg
+q.bg
+r.bg
+s.bg
+t.bg
+u.bg
+v.bg
+w.bg
+x.bg
+y.bg
+z.bg
+0.bg
+1.bg
+2.bg
+3.bg
+4.bg
+5.bg
+6.bg
+7.bg
+8.bg
+9.bg
+
+// bh : https://en.wikipedia.org/wiki/.bh
+bh
+com.bh
+edu.bh
+net.bh
+org.bh
+gov.bh
+
+// bi : https://en.wikipedia.org/wiki/.bi
+// http://whois.nic.bi/
+bi
+co.bi
+com.bi
+edu.bi
+or.bi
+org.bi
+
+// biz : https://en.wikipedia.org/wiki/.biz
+biz
+
+// bj : https://en.wikipedia.org/wiki/.bj
+bj
+asso.bj
+barreau.bj
+gouv.bj
+
+// bm : http://www.bermudanic.bm/dnr-text.txt
+bm
+com.bm
+edu.bm
+gov.bm
+net.bm
+org.bm
+
+// bn : https://en.wikipedia.org/wiki/.bn
+*.bn
+
+// bo : http://www.nic.bo/
+bo
+com.bo
+edu.bo
+gov.bo
+gob.bo
+int.bo
+org.bo
+net.bo
+mil.bo
+tv.bo
+
+// br : http://registro.br/dominio/categoria.html
+// Submitted by registry <fneves@registro.br>
+br
+adm.br
+adv.br
+agr.br
+am.br
+arq.br
+art.br
+ato.br
+b.br
+bio.br
+blog.br
+bmd.br
+cim.br
+cng.br
+cnt.br
+com.br
+coop.br
+ecn.br
+eco.br
+edu.br
+emp.br
+eng.br
+esp.br
+etc.br
+eti.br
+far.br
+flog.br
+fm.br
+fnd.br
+fot.br
+fst.br
+g12.br
+ggf.br
+gov.br
+imb.br
+ind.br
+inf.br
+jor.br
+jus.br
+leg.br
+lel.br
+mat.br
+med.br
+mil.br
+mp.br
+mus.br
+net.br
+*.nom.br
+not.br
+ntr.br
+odo.br
+org.br
+ppg.br
+pro.br
+psc.br
+psi.br
+qsl.br
+radio.br
+rec.br
+slg.br
+srv.br
+taxi.br
+teo.br
+tmp.br
+trd.br
+tur.br
+tv.br
+vet.br
+vlog.br
+wiki.br
+zlg.br
+
+// bs : http://www.nic.bs/rules.html
+bs
+com.bs
+net.bs
+org.bs
+edu.bs
+gov.bs
+
+// bt : https://en.wikipedia.org/wiki/.bt
+bt
+com.bt
+edu.bt
+gov.bt
+net.bt
+org.bt
+
+// bv : No registrations at this time.
+// Submitted by registry <jarle@uninett.no>
+bv
+
+// bw : https://en.wikipedia.org/wiki/.bw
+// http://www.gobin.info/domainname/bw.doc
+// list of other 2nd level tlds ?
+bw
+co.bw
+org.bw
+
+// by : https://en.wikipedia.org/wiki/.by
+// http://tld.by/rules_2006_en.html
+// list of other 2nd level tlds ?
+by
+gov.by
+mil.by
+// Official information does not indicate that com.by is a reserved
+// second-level domain, but it's being used as one (see www.google.com.by and
+// www.yahoo.com.by, for example), so we list it here for safety's sake.
+com.by
+
+// http://hoster.by/
+of.by
+
+// bz : https://en.wikipedia.org/wiki/.bz
+// http://www.belizenic.bz/
+bz
+com.bz
+net.bz
+org.bz
+edu.bz
+gov.bz
+
+// ca : https://en.wikipedia.org/wiki/.ca
+ca
+// ca geographical names
+ab.ca
+bc.ca
+mb.ca
+nb.ca
+nf.ca
+nl.ca
+ns.ca
+nt.ca
+nu.ca
+on.ca
+pe.ca
+qc.ca
+sk.ca
+yk.ca
+// gc.ca: https://en.wikipedia.org/wiki/.gc.ca
+// see also: http://registry.gc.ca/en/SubdomainFAQ
+gc.ca
+
+// cat : https://en.wikipedia.org/wiki/.cat
+cat
+
+// cc : https://en.wikipedia.org/wiki/.cc
+cc
+
+// cd : https://en.wikipedia.org/wiki/.cd
+// see also: https://www.nic.cd/domain/insertDomain_2.jsp?act=1
+cd
+gov.cd
+
+// cf : https://en.wikipedia.org/wiki/.cf
+cf
+
+// cg : https://en.wikipedia.org/wiki/.cg
+cg
+
+// ch : https://en.wikipedia.org/wiki/.ch
+ch
+
+// ci : https://en.wikipedia.org/wiki/.ci
+// http://www.nic.ci/index.php?page=charte
+ci
+org.ci
+or.ci
+com.ci
+co.ci
+edu.ci
+ed.ci
+ac.ci
+net.ci
+go.ci
+asso.ci
+aéroport.ci
+int.ci
+presse.ci
+md.ci
+gouv.ci
+
+// ck : https://en.wikipedia.org/wiki/.ck
+*.ck
+!www.ck
+
+// cl : https://en.wikipedia.org/wiki/.cl
+cl
+gov.cl
+gob.cl
+co.cl
+mil.cl
+
+// cm : https://en.wikipedia.org/wiki/.cm plus bug 981927
+cm
+co.cm
+com.cm
+gov.cm
+net.cm
+
+// cn : https://en.wikipedia.org/wiki/.cn
+// Submitted by registry <tanyaling@cnnic.cn>
+cn
+ac.cn
+com.cn
+edu.cn
+gov.cn
+net.cn
+org.cn
+mil.cn
+公司.cn
+网络.cn
+網絡.cn
+// cn geographic names
+ah.cn
+bj.cn
+cq.cn
+fj.cn
+gd.cn
+gs.cn
+gz.cn
+gx.cn
+ha.cn
+hb.cn
+he.cn
+hi.cn
+hl.cn
+hn.cn
+jl.cn
+js.cn
+jx.cn
+ln.cn
+nm.cn
+nx.cn
+qh.cn
+sc.cn
+sd.cn
+sh.cn
+sn.cn
+sx.cn
+tj.cn
+xj.cn
+xz.cn
+yn.cn
+zj.cn
+hk.cn
+mo.cn
+tw.cn
+
+// co : https://en.wikipedia.org/wiki/.co
+// Submitted by registry <tecnico@uniandes.edu.co>
+co
+arts.co
+com.co
+edu.co
+firm.co
+gov.co
+info.co
+int.co
+mil.co
+net.co
+nom.co
+org.co
+rec.co
+web.co
+
+// com : https://en.wikipedia.org/wiki/.com
+com
+
+// coop : https://en.wikipedia.org/wiki/.coop
+coop
+
+// cr : http://www.nic.cr/niccr_publico/showRegistroDominiosScreen.do
+cr
+ac.cr
+co.cr
+ed.cr
+fi.cr
+go.cr
+or.cr
+sa.cr
+
+// cu : https://en.wikipedia.org/wiki/.cu
+cu
+com.cu
+edu.cu
+org.cu
+net.cu
+gov.cu
+inf.cu
+
+// cv : https://en.wikipedia.org/wiki/.cv
+cv
+
+// cw : http://www.una.cw/cw_registry/
+// Confirmed by registry <registry@una.net> 2013-03-26
+cw
+com.cw
+edu.cw
+net.cw
+org.cw
+
+// cx : https://en.wikipedia.org/wiki/.cx
+// list of other 2nd level tlds ?
+cx
+gov.cx
+
+// cy : https://en.wikipedia.org/wiki/.cy
+ac.cy
+biz.cy
+com.cy
+ekloges.cy
+gov.cy
+ltd.cy
+name.cy
+net.cy
+org.cy
+parliament.cy
+press.cy
+pro.cy
+tm.cy
+
+// cz : https://en.wikipedia.org/wiki/.cz
+cz
+
+// de : https://en.wikipedia.org/wiki/.de
+// Confirmed by registry <ops@denic.de> (with technical
+// reservations) 2008-07-01
+de
+
+// dj : https://en.wikipedia.org/wiki/.dj
+dj
+
+// dk : https://en.wikipedia.org/wiki/.dk
+// Confirmed by registry <robert@dk-hostmaster.dk> 2008-06-17
+dk
+
+// dm : https://en.wikipedia.org/wiki/.dm
+dm
+com.dm
+net.dm
+org.dm
+edu.dm
+gov.dm
+
+// do : https://en.wikipedia.org/wiki/.do
+do
+art.do
+com.do
+edu.do
+gob.do
+gov.do
+mil.do
+net.do
+org.do
+sld.do
+web.do
+
+// dz : https://en.wikipedia.org/wiki/.dz
+dz
+com.dz
+org.dz
+net.dz
+gov.dz
+edu.dz
+asso.dz
+pol.dz
+art.dz
+
+// ec : http://www.nic.ec/reg/paso1.asp
+// Submitted by registry <vabboud@nic.ec>
+ec
+com.ec
+info.ec
+net.ec
+fin.ec
+k12.ec
+med.ec
+pro.ec
+org.ec
+edu.ec
+gov.ec
+gob.ec
+mil.ec
+
+// edu : https://en.wikipedia.org/wiki/.edu
+edu
+
+// ee : http://www.eenet.ee/EENet/dom_reeglid.html#lisa_B
+ee
+edu.ee
+gov.ee
+riik.ee
+lib.ee
+med.ee
+com.ee
+pri.ee
+aip.ee
+org.ee
+fie.ee
+
+// eg : https://en.wikipedia.org/wiki/.eg
+eg
+com.eg
+edu.eg
+eun.eg
+gov.eg
+mil.eg
+name.eg
+net.eg
+org.eg
+sci.eg
+
+// er : https://en.wikipedia.org/wiki/.er
+*.er
+
+// es : https://www.nic.es/site_ingles/ingles/dominios/index.html
+es
+com.es
+nom.es
+org.es
+gob.es
+edu.es
+
+// et : https://en.wikipedia.org/wiki/.et
+et
+com.et
+gov.et
+org.et
+edu.et
+biz.et
+name.et
+info.et
+net.et
+
+// eu : https://en.wikipedia.org/wiki/.eu
+eu
+
+// fi : https://en.wikipedia.org/wiki/.fi
+fi
+// aland.fi : https://en.wikipedia.org/wiki/.ax
+// This domain is being phased out in favor of .ax. As there are still many
+// domains under aland.fi, we still keep it on the list until aland.fi is
+// completely removed.
+// TODO: Check for updates (expected to be phased out around Q1/2009)
+aland.fi
+
+// fj : https://en.wikipedia.org/wiki/.fj
+*.fj
+
+// fk : https://en.wikipedia.org/wiki/.fk
+*.fk
+
+// fm : https://en.wikipedia.org/wiki/.fm
+fm
+
+// fo : https://en.wikipedia.org/wiki/.fo
+fo
+
+// fr : http://www.afnic.fr/
+// domaines descriptifs : http://www.afnic.fr/obtenir/chartes/nommage-fr/annexe-descriptifs
+fr
+com.fr
+asso.fr
+nom.fr
+prd.fr
+presse.fr
+tm.fr
+// domaines sectoriels : http://www.afnic.fr/obtenir/chartes/nommage-fr/annexe-sectoriels
+aeroport.fr
+assedic.fr
+avocat.fr
+avoues.fr
+cci.fr
+chambagri.fr
+chirurgiens-dentistes.fr
+experts-comptables.fr
+geometre-expert.fr
+gouv.fr
+greta.fr
+huissier-justice.fr
+medecin.fr
+notaires.fr
+pharmacien.fr
+port.fr
+veterinaire.fr
+
+// ga : https://en.wikipedia.org/wiki/.ga
+ga
+
+// gb : This registry is effectively dormant
+// Submitted by registry <Damien.Shaw@ja.net>
+gb
+
+// gd : https://en.wikipedia.org/wiki/.gd
+gd
+
+// ge : http://www.nic.net.ge/policy_en.pdf
+ge
+com.ge
+edu.ge
+gov.ge
+org.ge
+mil.ge
+net.ge
+pvt.ge
+
+// gf : https://en.wikipedia.org/wiki/.gf
+gf
+
+// gg : http://www.channelisles.net/register-domains/
+// Confirmed by registry <nigel@channelisles.net> 2013-11-28
+gg
+co.gg
+net.gg
+org.gg
+
+// gh : https://en.wikipedia.org/wiki/.gh
+// see also: http://www.nic.gh/reg_now.php
+// Although domains directly at second level are not possible at the moment,
+// they have been possible for some time and may come back.
+gh
+com.gh
+edu.gh
+gov.gh
+org.gh
+mil.gh
+
+// gi : http://www.nic.gi/rules.html
+gi
+com.gi
+ltd.gi
+gov.gi
+mod.gi
+edu.gi
+org.gi
+
+// gl : https://en.wikipedia.org/wiki/.gl
+// http://nic.gl
+gl
+co.gl
+com.gl
+edu.gl
+net.gl
+org.gl
+
+// gm : http://www.nic.gm/htmlpages%5Cgm-policy.htm
+gm
+
+// gn : http://psg.com/dns/gn/gn.txt
+// Submitted by registry <randy@psg.com>
+gn
+ac.gn
+com.gn
+edu.gn
+gov.gn
+org.gn
+net.gn
+
+// gov : https://en.wikipedia.org/wiki/.gov
+gov
+
+// gp : http://www.nic.gp/index.php?lang=en
+gp
+com.gp
+net.gp
+mobi.gp
+edu.gp
+org.gp
+asso.gp
+
+// gq : https://en.wikipedia.org/wiki/.gq
+gq
+
+// gr : https://grweb.ics.forth.gr/english/1617-B-2005.html
+// Submitted by registry <segred@ics.forth.gr>
+gr
+com.gr
+edu.gr
+net.gr
+org.gr
+gov.gr
+
+// gs : https://en.wikipedia.org/wiki/.gs
+gs
+
+// gt : http://www.gt/politicas_de_registro.html
+gt
+com.gt
+edu.gt
+gob.gt
+ind.gt
+mil.gt
+net.gt
+org.gt
+
+// gu : http://gadao.gov.gu/registration.txt
+*.gu
+
+// gw : https://en.wikipedia.org/wiki/.gw
+gw
+
+// gy : https://en.wikipedia.org/wiki/.gy
+// http://registry.gy/
+gy
+co.gy
+com.gy
+edu.gy
+gov.gy
+net.gy
+org.gy
+
+// hk : https://www.hkdnr.hk
+// Submitted by registry <hk.tech@hkirc.hk>
+hk
+com.hk
+edu.hk
+gov.hk
+idv.hk
+net.hk
+org.hk
+公司.hk
+教育.hk
+敎育.hk
+政府.hk
+個人.hk
+个人.hk
+箇人.hk
+網络.hk
+网络.hk
+组織.hk
+網絡.hk
+网絡.hk
+组织.hk
+組織.hk
+組织.hk
+
+// hm : https://en.wikipedia.org/wiki/.hm
+hm
+
+// hn : http://www.nic.hn/politicas/ps02,,05.html
+hn
+com.hn
+edu.hn
+org.hn
+net.hn
+mil.hn
+gob.hn
+
+// hr : http://www.dns.hr/documents/pdf/HRTLD-regulations.pdf
+hr
+iz.hr
+from.hr
+name.hr
+com.hr
+
+// ht : http://www.nic.ht/info/charte.cfm
+ht
+com.ht
+shop.ht
+firm.ht
+info.ht
+adult.ht
+net.ht
+pro.ht
+org.ht
+med.ht
+art.ht
+coop.ht
+pol.ht
+asso.ht
+edu.ht
+rel.ht
+gouv.ht
+perso.ht
+
+// hu : http://www.domain.hu/domain/English/sld.html
+// Confirmed by registry <pasztor@iszt.hu> 2008-06-12
+hu
+co.hu
+info.hu
+org.hu
+priv.hu
+sport.hu
+tm.hu
+2000.hu
+agrar.hu
+bolt.hu
+casino.hu
+city.hu
+erotica.hu
+erotika.hu
+film.hu
+forum.hu
+games.hu
+hotel.hu
+ingatlan.hu
+jogasz.hu
+konyvelo.hu
+lakas.hu
+media.hu
+news.hu
+reklam.hu
+sex.hu
+shop.hu
+suli.hu
+szex.hu
+tozsde.hu
+utazas.hu
+video.hu
+
+// id : https://register.pandi.or.id/
+id
+ac.id
+biz.id
+co.id
+desa.id
+go.id
+mil.id
+my.id
+net.id
+or.id
+sch.id
+web.id
+
+// ie : https://en.wikipedia.org/wiki/.ie
+ie
+gov.ie
+
+// il : http://www.isoc.org.il/domains/
+il
+ac.il
+co.il
+gov.il
+idf.il
+k12.il
+muni.il
+net.il
+org.il
+
+// im : https://www.nic.im/
+// Submitted by registry <info@nic.im>
+im
+ac.im
+co.im
+com.im
+ltd.co.im
+net.im
+org.im
+plc.co.im
+tt.im
+tv.im
+
+// in : https://en.wikipedia.org/wiki/.in
+// see also: https://registry.in/Policies
+// Please note, that nic.in is not an official eTLD, but used by most
+// government institutions.
+in
+co.in
+firm.in
+net.in
+org.in
+gen.in
+ind.in
+nic.in
+ac.in
+edu.in
+res.in
+gov.in
+mil.in
+
+// info : https://en.wikipedia.org/wiki/.info
+info
+
+// int : https://en.wikipedia.org/wiki/.int
+// Confirmed by registry <iana-questions@icann.org> 2008-06-18
+int
+eu.int
+
+// io : http://www.nic.io/rules.html
+// list of other 2nd level tlds ?
+io
+com.io
+
+// iq : http://www.cmc.iq/english/iq/iqregister1.htm
+iq
+gov.iq
+edu.iq
+mil.iq
+com.iq
+org.iq
+net.iq
+
+// ir : http://www.nic.ir/Terms_and_Conditions_ir,_Appendix_1_Domain_Rules
+// Also see http://www.nic.ir/Internationalized_Domain_Names
+// Two <iran>.ir entries added at request of <tech-team@nic.ir>, 2010-04-16
+ir
+ac.ir
+co.ir
+gov.ir
+id.ir
+net.ir
+org.ir
+sch.ir
+// xn--mgba3a4f16a.ir (<iran>.ir, Persian YEH)
+ایران.ir
+// xn--mgba3a4fra.ir (<iran>.ir, Arabic YEH)
+ايران.ir
+
+// is : http://www.isnic.is/domain/rules.php
+// Confirmed by registry <marius@isgate.is> 2008-12-06
+is
+net.is
+com.is
+edu.is
+gov.is
+org.is
+int.is
+
+// it : https://en.wikipedia.org/wiki/.it
+it
+gov.it
+edu.it
+// Reserved geo-names:
+// http://www.nic.it/documenti/regolamenti-e-linee-guida/regolamento-assegnazione-versione-6.0.pdf
+// There is also a list of reserved geo-names corresponding to Italian municipalities
+// http://www.nic.it/documenti/appendice-c.pdf, but it is not included here.
+// Regions
+abr.it
+abruzzo.it
+aosta-valley.it
+aostavalley.it
+bas.it
+basilicata.it
+cal.it
+calabria.it
+cam.it
+campania.it
+emilia-romagna.it
+emiliaromagna.it
+emr.it
+friuli-v-giulia.it
+friuli-ve-giulia.it
+friuli-vegiulia.it
+friuli-venezia-giulia.it
+friuli-veneziagiulia.it
+friuli-vgiulia.it
+friuliv-giulia.it
+friulive-giulia.it
+friulivegiulia.it
+friulivenezia-giulia.it
+friuliveneziagiulia.it
+friulivgiulia.it
+fvg.it
+laz.it
+lazio.it
+lig.it
+liguria.it
+lom.it
+lombardia.it
+lombardy.it
+lucania.it
+mar.it
+marche.it
+mol.it
+molise.it
+piedmont.it
+piemonte.it
+pmn.it
+pug.it
+puglia.it
+sar.it
+sardegna.it
+sardinia.it
+sic.it
+sicilia.it
+sicily.it
+taa.it
+tos.it
+toscana.it
+trentino-a-adige.it
+trentino-aadige.it
+trentino-alto-adige.it
+trentino-altoadige.it
+trentino-s-tirol.it
+trentino-stirol.it
+trentino-sud-tirol.it
+trentino-sudtirol.it
+trentino-sued-tirol.it
+trentino-suedtirol.it
+trentinoa-adige.it
+trentinoaadige.it
+trentinoalto-adige.it
+trentinoaltoadige.it
+trentinos-tirol.it
+trentinostirol.it
+trentinosud-tirol.it
+trentinosudtirol.it
+trentinosued-tirol.it
+trentinosuedtirol.it
+tuscany.it
+umb.it
+umbria.it
+val-d-aosta.it
+val-daosta.it
+vald-aosta.it
+valdaosta.it
+valle-aosta.it
+valle-d-aosta.it
+valle-daosta.it
+valleaosta.it
+valled-aosta.it
+valledaosta.it
+vallee-aoste.it
+valleeaoste.it
+vao.it
+vda.it
+ven.it
+veneto.it
+// Provinces
+ag.it
+agrigento.it
+al.it
+alessandria.it
+alto-adige.it
+altoadige.it
+an.it
+ancona.it
+andria-barletta-trani.it
+andria-trani-barletta.it
+andriabarlettatrani.it
+andriatranibarletta.it
+ao.it
+aosta.it
+aoste.it
+ap.it
+aq.it
+aquila.it
+ar.it
+arezzo.it
+ascoli-piceno.it
+ascolipiceno.it
+asti.it
+at.it
+av.it
+avellino.it
+ba.it
+balsan.it
+bari.it
+barletta-trani-andria.it
+barlettatraniandria.it
+belluno.it
+benevento.it
+bergamo.it
+bg.it
+bi.it
+biella.it
+bl.it
+bn.it
+bo.it
+bologna.it
+bolzano.it
+bozen.it
+br.it
+brescia.it
+brindisi.it
+bs.it
+bt.it
+bz.it
+ca.it
+cagliari.it
+caltanissetta.it
+campidano-medio.it
+campidanomedio.it
+campobasso.it
+carbonia-iglesias.it
+carboniaiglesias.it
+carrara-massa.it
+carraramassa.it
+caserta.it
+catania.it
+catanzaro.it
+cb.it
+ce.it
+cesena-forli.it
+cesenaforli.it
+ch.it
+chieti.it
+ci.it
+cl.it
+cn.it
+co.it
+como.it
+cosenza.it
+cr.it
+cremona.it
+crotone.it
+cs.it
+ct.it
+cuneo.it
+cz.it
+dell-ogliastra.it
+dellogliastra.it
+en.it
+enna.it
+fc.it
+fe.it
+fermo.it
+ferrara.it
+fg.it
+fi.it
+firenze.it
+florence.it
+fm.it
+foggia.it
+forli-cesena.it
+forlicesena.it
+fr.it
+frosinone.it
+ge.it
+genoa.it
+genova.it
+go.it
+gorizia.it
+gr.it
+grosseto.it
+iglesias-carbonia.it
+iglesiascarbonia.it
+im.it
+imperia.it
+is.it
+isernia.it
+kr.it
+la-spezia.it
+laquila.it
+laspezia.it
+latina.it
+lc.it
+le.it
+lecce.it
+lecco.it
+li.it
+livorno.it
+lo.it
+lodi.it
+lt.it
+lu.it
+lucca.it
+macerata.it
+mantova.it
+massa-carrara.it
+massacarrara.it
+matera.it
+mb.it
+mc.it
+me.it
+medio-campidano.it
+mediocampidano.it
+messina.it
+mi.it
+milan.it
+milano.it
+mn.it
+mo.it
+modena.it
+monza-brianza.it
+monza-e-della-brianza.it
+monza.it
+monzabrianza.it
+monzaebrianza.it
+monzaedellabrianza.it
+ms.it
+mt.it
+na.it
+naples.it
+napoli.it
+no.it
+novara.it
+nu.it
+nuoro.it
+og.it
+ogliastra.it
+olbia-tempio.it
+olbiatempio.it
+or.it
+oristano.it
+ot.it
+pa.it
+padova.it
+padua.it
+palermo.it
+parma.it
+pavia.it
+pc.it
+pd.it
+pe.it
+perugia.it
+pesaro-urbino.it
+pesarourbino.it
+pescara.it
+pg.it
+pi.it
+piacenza.it
+pisa.it
+pistoia.it
+pn.it
+po.it
+pordenone.it
+potenza.it
+pr.it
+prato.it
+pt.it
+pu.it
+pv.it
+pz.it
+ra.it
+ragusa.it
+ravenna.it
+rc.it
+re.it
+reggio-calabria.it
+reggio-emilia.it
+reggiocalabria.it
+reggioemilia.it
+rg.it
+ri.it
+rieti.it
+rimini.it
+rm.it
+rn.it
+ro.it
+roma.it
+rome.it
+rovigo.it
+sa.it
+salerno.it
+sassari.it
+savona.it
+si.it
+siena.it
+siracusa.it
+so.it
+sondrio.it
+sp.it
+sr.it
+ss.it
+suedtirol.it
+sv.it
+ta.it
+taranto.it
+te.it
+tempio-olbia.it
+tempioolbia.it
+teramo.it
+terni.it
+tn.it
+to.it
+torino.it
+tp.it
+tr.it
+trani-andria-barletta.it
+trani-barletta-andria.it
+traniandriabarletta.it
+tranibarlettaandria.it
+trapani.it
+trentino.it
+trento.it
+treviso.it
+trieste.it
+ts.it
+turin.it
+tv.it
+ud.it
+udine.it
+urbino-pesaro.it
+urbinopesaro.it
+va.it
+varese.it
+vb.it
+vc.it
+ve.it
+venezia.it
+venice.it
+verbania.it
+vercelli.it
+verona.it
+vi.it
+vibo-valentia.it
+vibovalentia.it
+vicenza.it
+viterbo.it
+vr.it
+vs.it
+vt.it
+vv.it
+
+// je : http://www.channelisles.net/register-domains/
+// Confirmed by registry <nigel@channelisles.net> 2013-11-28
+je
+co.je
+net.je
+org.je
+
+// jm : http://www.com.jm/register.html
+*.jm
+
+// jo : http://www.dns.jo/Registration_policy.aspx
+jo
+com.jo
+org.jo
+net.jo
+edu.jo
+sch.jo
+gov.jo
+mil.jo
+name.jo
+
+// jobs : https://en.wikipedia.org/wiki/.jobs
+jobs
+
+// jp : https://en.wikipedia.org/wiki/.jp
+// http://jprs.co.jp/en/jpdomain.html
+// Submitted by registry <info@jprs.jp>
+jp
+// jp organizational type names
+ac.jp
+ad.jp
+co.jp
+ed.jp
+go.jp
+gr.jp
+lg.jp
+ne.jp
+or.jp
+// jp prefecture type names
+aichi.jp
+akita.jp
+aomori.jp
+chiba.jp
+ehime.jp
+fukui.jp
+fukuoka.jp
+fukushima.jp
+gifu.jp
+gunma.jp
+hiroshima.jp
+hokkaido.jp
+hyogo.jp
+ibaraki.jp
+ishikawa.jp
+iwate.jp
+kagawa.jp
+kagoshima.jp
+kanagawa.jp
+kochi.jp
+kumamoto.jp
+kyoto.jp
+mie.jp
+miyagi.jp
+miyazaki.jp
+nagano.jp
+nagasaki.jp
+nara.jp
+niigata.jp
+oita.jp
+okayama.jp
+okinawa.jp
+osaka.jp
+saga.jp
+saitama.jp
+shiga.jp
+shimane.jp
+shizuoka.jp
+tochigi.jp
+tokushima.jp
+tokyo.jp
+tottori.jp
+toyama.jp
+wakayama.jp
+yamagata.jp
+yamaguchi.jp
+yamanashi.jp
+栃木.jp
+愛知.jp
+愛媛.jp
+兵庫.jp
+熊本.jp
+茨城.jp
+北海道.jp
+千葉.jp
+和歌山.jp
+長崎.jp
+長野.jp
+新潟.jp
+青森.jp
+静岡.jp
+東京.jp
+石川.jp
+埼玉.jp
+三重.jp
+京都.jp
+佐賀.jp
+大分.jp
+大阪.jp
+奈良.jp
+宮城.jp
+宮崎.jp
+富山.jp
+山口.jp
+山形.jp
+山梨.jp
+岩手.jp
+岐阜.jp
+岡山.jp
+島根.jp
+広島.jp
+徳島.jp
+沖縄.jp
+滋賀.jp
+神奈川.jp
+福井.jp
+福岡.jp
+福島.jp
+秋田.jp
+群馬.jp
+香川.jp
+高知.jp
+鳥取.jp
+鹿児島.jp
+// jp geographic type names
+// http://jprs.jp/doc/rule/saisoku-1.html
+*.kawasaki.jp
+*.kitakyushu.jp
+*.kobe.jp
+*.nagoya.jp
+*.sapporo.jp
+*.sendai.jp
+*.yokohama.jp
+!city.kawasaki.jp
+!city.kitakyushu.jp
+!city.kobe.jp
+!city.nagoya.jp
+!city.sapporo.jp
+!city.sendai.jp
+!city.yokohama.jp
+// 4th level registration
+aisai.aichi.jp
+ama.aichi.jp
+anjo.aichi.jp
+asuke.aichi.jp
+chiryu.aichi.jp
+chita.aichi.jp
+fuso.aichi.jp
+gamagori.aichi.jp
+handa.aichi.jp
+hazu.aichi.jp
+hekinan.aichi.jp
+higashiura.aichi.jp
+ichinomiya.aichi.jp
+inazawa.aichi.jp
+inuyama.aichi.jp
+isshiki.aichi.jp
+iwakura.aichi.jp
+kanie.aichi.jp
+kariya.aichi.jp
+kasugai.aichi.jp
+kira.aichi.jp
+kiyosu.aichi.jp
+komaki.aichi.jp
+konan.aichi.jp
+kota.aichi.jp
+mihama.aichi.jp
+miyoshi.aichi.jp
+nishio.aichi.jp
+nisshin.aichi.jp
+obu.aichi.jp
+oguchi.aichi.jp
+oharu.aichi.jp
+okazaki.aichi.jp
+owariasahi.aichi.jp
+seto.aichi.jp
+shikatsu.aichi.jp
+shinshiro.aichi.jp
+shitara.aichi.jp
+tahara.aichi.jp
+takahama.aichi.jp
+tobishima.aichi.jp
+toei.aichi.jp
+togo.aichi.jp
+tokai.aichi.jp
+tokoname.aichi.jp
+toyoake.aichi.jp
+toyohashi.aichi.jp
+toyokawa.aichi.jp
+toyone.aichi.jp
+toyota.aichi.jp
+tsushima.aichi.jp
+yatomi.aichi.jp
+akita.akita.jp
+daisen.akita.jp
+fujisato.akita.jp
+gojome.akita.jp
+hachirogata.akita.jp
+happou.akita.jp
+higashinaruse.akita.jp
+honjo.akita.jp
+honjyo.akita.jp
+ikawa.akita.jp
+kamikoani.akita.jp
+kamioka.akita.jp
+katagami.akita.jp
+kazuno.akita.jp
+kitaakita.akita.jp
+kosaka.akita.jp
+kyowa.akita.jp
+misato.akita.jp
+mitane.akita.jp
+moriyoshi.akita.jp
+nikaho.akita.jp
+noshiro.akita.jp
+odate.akita.jp
+oga.akita.jp
+ogata.akita.jp
+semboku.akita.jp
+yokote.akita.jp
+yurihonjo.akita.jp
+aomori.aomori.jp
+gonohe.aomori.jp
+hachinohe.aomori.jp
+hashikami.aomori.jp
+hiranai.aomori.jp
+hirosaki.aomori.jp
+itayanagi.aomori.jp
+kuroishi.aomori.jp
+misawa.aomori.jp
+mutsu.aomori.jp
+nakadomari.aomori.jp
+noheji.aomori.jp
+oirase.aomori.jp
+owani.aomori.jp
+rokunohe.aomori.jp
+sannohe.aomori.jp
+shichinohe.aomori.jp
+shingo.aomori.jp
+takko.aomori.jp
+towada.aomori.jp
+tsugaru.aomori.jp
+tsuruta.aomori.jp
+abiko.chiba.jp
+asahi.chiba.jp
+chonan.chiba.jp
+chosei.chiba.jp
+choshi.chiba.jp
+chuo.chiba.jp
+funabashi.chiba.jp
+futtsu.chiba.jp
+hanamigawa.chiba.jp
+ichihara.chiba.jp
+ichikawa.chiba.jp
+ichinomiya.chiba.jp
+inzai.chiba.jp
+isumi.chiba.jp
+kamagaya.chiba.jp
+kamogawa.chiba.jp
+kashiwa.chiba.jp
+katori.chiba.jp
+katsuura.chiba.jp
+kimitsu.chiba.jp
+kisarazu.chiba.jp
+kozaki.chiba.jp
+kujukuri.chiba.jp
+kyonan.chiba.jp
+matsudo.chiba.jp
+midori.chiba.jp
+mihama.chiba.jp
+minamiboso.chiba.jp
+mobara.chiba.jp
+mutsuzawa.chiba.jp
+nagara.chiba.jp
+nagareyama.chiba.jp
+narashino.chiba.jp
+narita.chiba.jp
+noda.chiba.jp
+oamishirasato.chiba.jp
+omigawa.chiba.jp
+onjuku.chiba.jp
+otaki.chiba.jp
+sakae.chiba.jp
+sakura.chiba.jp
+shimofusa.chiba.jp
+shirako.chiba.jp
+shiroi.chiba.jp
+shisui.chiba.jp
+sodegaura.chiba.jp
+sosa.chiba.jp
+tako.chiba.jp
+tateyama.chiba.jp
+togane.chiba.jp
+tohnosho.chiba.jp
+tomisato.chiba.jp
+urayasu.chiba.jp
+yachimata.chiba.jp
+yachiyo.chiba.jp
+yokaichiba.chiba.jp
+yokoshibahikari.chiba.jp
+yotsukaido.chiba.jp
+ainan.ehime.jp
+honai.ehime.jp
+ikata.ehime.jp
+imabari.ehime.jp
+iyo.ehime.jp
+kamijima.ehime.jp
+kihoku.ehime.jp
+kumakogen.ehime.jp
+masaki.ehime.jp
+matsuno.ehime.jp
+matsuyama.ehime.jp
+namikata.ehime.jp
+niihama.ehime.jp
+ozu.ehime.jp
+saijo.ehime.jp
+seiyo.ehime.jp
+shikokuchuo.ehime.jp
+tobe.ehime.jp
+toon.ehime.jp
+uchiko.ehime.jp
+uwajima.ehime.jp
+yawatahama.ehime.jp
+echizen.fukui.jp
+eiheiji.fukui.jp
+fukui.fukui.jp
+ikeda.fukui.jp
+katsuyama.fukui.jp
+mihama.fukui.jp
+minamiechizen.fukui.jp
+obama.fukui.jp
+ohi.fukui.jp
+ono.fukui.jp
+sabae.fukui.jp
+sakai.fukui.jp
+takahama.fukui.jp
+tsuruga.fukui.jp
+wakasa.fukui.jp
+ashiya.fukuoka.jp
+buzen.fukuoka.jp
+chikugo.fukuoka.jp
+chikuho.fukuoka.jp
+chikujo.fukuoka.jp
+chikushino.fukuoka.jp
+chikuzen.fukuoka.jp
+chuo.fukuoka.jp
+dazaifu.fukuoka.jp
+fukuchi.fukuoka.jp
+hakata.fukuoka.jp
+higashi.fukuoka.jp
+hirokawa.fukuoka.jp
+hisayama.fukuoka.jp
+iizuka.fukuoka.jp
+inatsuki.fukuoka.jp
+kaho.fukuoka.jp
+kasuga.fukuoka.jp
+kasuya.fukuoka.jp
+kawara.fukuoka.jp
+keisen.fukuoka.jp
+koga.fukuoka.jp
+kurate.fukuoka.jp
+kurogi.fukuoka.jp
+kurume.fukuoka.jp
+minami.fukuoka.jp
+miyako.fukuoka.jp
+miyama.fukuoka.jp
+miyawaka.fukuoka.jp
+mizumaki.fukuoka.jp
+munakata.fukuoka.jp
+nakagawa.fukuoka.jp
+nakama.fukuoka.jp
+nishi.fukuoka.jp
+nogata.fukuoka.jp
+ogori.fukuoka.jp
+okagaki.fukuoka.jp
+okawa.fukuoka.jp
+oki.fukuoka.jp
+omuta.fukuoka.jp
+onga.fukuoka.jp
+onojo.fukuoka.jp
+oto.fukuoka.jp
+saigawa.fukuoka.jp
+sasaguri.fukuoka.jp
+shingu.fukuoka.jp
+shinyoshitomi.fukuoka.jp
+shonai.fukuoka.jp
+soeda.fukuoka.jp
+sue.fukuoka.jp
+tachiarai.fukuoka.jp
+tagawa.fukuoka.jp
+takata.fukuoka.jp
+toho.fukuoka.jp
+toyotsu.fukuoka.jp
+tsuiki.fukuoka.jp
+ukiha.fukuoka.jp
+umi.fukuoka.jp
+usui.fukuoka.jp
+yamada.fukuoka.jp
+yame.fukuoka.jp
+yanagawa.fukuoka.jp
+yukuhashi.fukuoka.jp
+aizubange.fukushima.jp
+aizumisato.fukushima.jp
+aizuwakamatsu.fukushima.jp
+asakawa.fukushima.jp
+bandai.fukushima.jp
+date.fukushima.jp
+fukushima.fukushima.jp
+furudono.fukushima.jp
+futaba.fukushima.jp
+hanawa.fukushima.jp
+higashi.fukushima.jp
+hirata.fukushima.jp
+hirono.fukushima.jp
+iitate.fukushima.jp
+inawashiro.fukushima.jp
+ishikawa.fukushima.jp
+iwaki.fukushima.jp
+izumizaki.fukushima.jp
+kagamiishi.fukushima.jp
+kaneyama.fukushima.jp
+kawamata.fukushima.jp
+kitakata.fukushima.jp
+kitashiobara.fukushima.jp
+koori.fukushima.jp
+koriyama.fukushima.jp
+kunimi.fukushima.jp
+miharu.fukushima.jp
+mishima.fukushima.jp
+namie.fukushima.jp
+nango.fukushima.jp
+nishiaizu.fukushima.jp
+nishigo.fukushima.jp
+okuma.fukushima.jp
+omotego.fukushima.jp
+ono.fukushima.jp
+otama.fukushima.jp
+samegawa.fukushima.jp
+shimogo.fukushima.jp
+shirakawa.fukushima.jp
+showa.fukushima.jp
+soma.fukushima.jp
+sukagawa.fukushima.jp
+taishin.fukushima.jp
+tamakawa.fukushima.jp
+tanagura.fukushima.jp
+tenei.fukushima.jp
+yabuki.fukushima.jp
+yamato.fukushima.jp
+yamatsuri.fukushima.jp
+yanaizu.fukushima.jp
+yugawa.fukushima.jp
+anpachi.gifu.jp
+ena.gifu.jp
+gifu.gifu.jp
+ginan.gifu.jp
+godo.gifu.jp
+gujo.gifu.jp
+hashima.gifu.jp
+hichiso.gifu.jp
+hida.gifu.jp
+higashishirakawa.gifu.jp
+ibigawa.gifu.jp
+ikeda.gifu.jp
+kakamigahara.gifu.jp
+kani.gifu.jp
+kasahara.gifu.jp
+kasamatsu.gifu.jp
+kawaue.gifu.jp
+kitagata.gifu.jp
+mino.gifu.jp
+minokamo.gifu.jp
+mitake.gifu.jp
+mizunami.gifu.jp
+motosu.gifu.jp
+nakatsugawa.gifu.jp
+ogaki.gifu.jp
+sakahogi.gifu.jp
+seki.gifu.jp
+sekigahara.gifu.jp
+shirakawa.gifu.jp
+tajimi.gifu.jp
+takayama.gifu.jp
+tarui.gifu.jp
+toki.gifu.jp
+tomika.gifu.jp
+wanouchi.gifu.jp
+yamagata.gifu.jp
+yaotsu.gifu.jp
+yoro.gifu.jp
+annaka.gunma.jp
+chiyoda.gunma.jp
+fujioka.gunma.jp
+higashiagatsuma.gunma.jp
+isesaki.gunma.jp
+itakura.gunma.jp
+kanna.gunma.jp
+kanra.gunma.jp
+katashina.gunma.jp
+kawaba.gunma.jp
+kiryu.gunma.jp
+kusatsu.gunma.jp
+maebashi.gunma.jp
+meiwa.gunma.jp
+midori.gunma.jp
+minakami.gunma.jp
+naganohara.gunma.jp
+nakanojo.gunma.jp
+nanmoku.gunma.jp
+numata.gunma.jp
+oizumi.gunma.jp
+ora.gunma.jp
+ota.gunma.jp
+shibukawa.gunma.jp
+shimonita.gunma.jp
+shinto.gunma.jp
+showa.gunma.jp
+takasaki.gunma.jp
+takayama.gunma.jp
+tamamura.gunma.jp
+tatebayashi.gunma.jp
+tomioka.gunma.jp
+tsukiyono.gunma.jp
+tsumagoi.gunma.jp
+ueno.gunma.jp
+yoshioka.gunma.jp
+asaminami.hiroshima.jp
+daiwa.hiroshima.jp
+etajima.hiroshima.jp
+fuchu.hiroshima.jp
+fukuyama.hiroshima.jp
+hatsukaichi.hiroshima.jp
+higashihiroshima.hiroshima.jp
+hongo.hiroshima.jp
+jinsekikogen.hiroshima.jp
+kaita.hiroshima.jp
+kui.hiroshima.jp
+kumano.hiroshima.jp
+kure.hiroshima.jp
+mihara.hiroshima.jp
+miyoshi.hiroshima.jp
+naka.hiroshima.jp
+onomichi.hiroshima.jp
+osakikamijima.hiroshima.jp
+otake.hiroshima.jp
+saka.hiroshima.jp
+sera.hiroshima.jp
+seranishi.hiroshima.jp
+shinichi.hiroshima.jp
+shobara.hiroshima.jp
+takehara.hiroshima.jp
+abashiri.hokkaido.jp
+abira.hokkaido.jp
+aibetsu.hokkaido.jp
+akabira.hokkaido.jp
+akkeshi.hokkaido.jp
+asahikawa.hokkaido.jp
+ashibetsu.hokkaido.jp
+ashoro.hokkaido.jp
+assabu.hokkaido.jp
+atsuma.hokkaido.jp
+bibai.hokkaido.jp
+biei.hokkaido.jp
+bifuka.hokkaido.jp
+bihoro.hokkaido.jp
+biratori.hokkaido.jp
+chippubetsu.hokkaido.jp
+chitose.hokkaido.jp
+date.hokkaido.jp
+ebetsu.hokkaido.jp
+embetsu.hokkaido.jp
+eniwa.hokkaido.jp
+erimo.hokkaido.jp
+esan.hokkaido.jp
+esashi.hokkaido.jp
+fukagawa.hokkaido.jp
+fukushima.hokkaido.jp
+furano.hokkaido.jp
+furubira.hokkaido.jp
+haboro.hokkaido.jp
+hakodate.hokkaido.jp
+hamatonbetsu.hokkaido.jp
+hidaka.hokkaido.jp
+higashikagura.hokkaido.jp
+higashikawa.hokkaido.jp
+hiroo.hokkaido.jp
+hokuryu.hokkaido.jp
+hokuto.hokkaido.jp
+honbetsu.hokkaido.jp
+horokanai.hokkaido.jp
+horonobe.hokkaido.jp
+ikeda.hokkaido.jp
+imakane.hokkaido.jp
+ishikari.hokkaido.jp
+iwamizawa.hokkaido.jp
+iwanai.hokkaido.jp
+kamifurano.hokkaido.jp
+kamikawa.hokkaido.jp
+kamishihoro.hokkaido.jp
+kamisunagawa.hokkaido.jp
+kamoenai.hokkaido.jp
+kayabe.hokkaido.jp
+kembuchi.hokkaido.jp
+kikonai.hokkaido.jp
+kimobetsu.hokkaido.jp
+kitahiroshima.hokkaido.jp
+kitami.hokkaido.jp
+kiyosato.hokkaido.jp
+koshimizu.hokkaido.jp
+kunneppu.hokkaido.jp
+kuriyama.hokkaido.jp
+kuromatsunai.hokkaido.jp
+kushiro.hokkaido.jp
+kutchan.hokkaido.jp
+kyowa.hokkaido.jp
+mashike.hokkaido.jp
+matsumae.hokkaido.jp
+mikasa.hokkaido.jp
+minamifurano.hokkaido.jp
+mombetsu.hokkaido.jp
+moseushi.hokkaido.jp
+mukawa.hokkaido.jp
+muroran.hokkaido.jp
+naie.hokkaido.jp
+nakagawa.hokkaido.jp
+nakasatsunai.hokkaido.jp
+nakatombetsu.hokkaido.jp
+nanae.hokkaido.jp
+nanporo.hokkaido.jp
+nayoro.hokkaido.jp
+nemuro.hokkaido.jp
+niikappu.hokkaido.jp
+niki.hokkaido.jp
+nishiokoppe.hokkaido.jp
+noboribetsu.hokkaido.jp
+numata.hokkaido.jp
+obihiro.hokkaido.jp
+obira.hokkaido.jp
+oketo.hokkaido.jp
+okoppe.hokkaido.jp
+otaru.hokkaido.jp
+otobe.hokkaido.jp
+otofuke.hokkaido.jp
+otoineppu.hokkaido.jp
+oumu.hokkaido.jp
+ozora.hokkaido.jp
+pippu.hokkaido.jp
+rankoshi.hokkaido.jp
+rebun.hokkaido.jp
+rikubetsu.hokkaido.jp
+rishiri.hokkaido.jp
+rishirifuji.hokkaido.jp
+saroma.hokkaido.jp
+sarufutsu.hokkaido.jp
+shakotan.hokkaido.jp
+shari.hokkaido.jp
+shibecha.hokkaido.jp
+shibetsu.hokkaido.jp
+shikabe.hokkaido.jp
+shikaoi.hokkaido.jp
+shimamaki.hokkaido.jp
+shimizu.hokkaido.jp
+shimokawa.hokkaido.jp
+shinshinotsu.hokkaido.jp
+shintoku.hokkaido.jp
+shiranuka.hokkaido.jp
+shiraoi.hokkaido.jp
+shiriuchi.hokkaido.jp
+sobetsu.hokkaido.jp
+sunagawa.hokkaido.jp
+taiki.hokkaido.jp
+takasu.hokkaido.jp
+takikawa.hokkaido.jp
+takinoue.hokkaido.jp
+teshikaga.hokkaido.jp
+tobetsu.hokkaido.jp
+tohma.hokkaido.jp
+tomakomai.hokkaido.jp
+tomari.hokkaido.jp
+toya.hokkaido.jp
+toyako.hokkaido.jp
+toyotomi.hokkaido.jp
+toyoura.hokkaido.jp
+tsubetsu.hokkaido.jp
+tsukigata.hokkaido.jp
+urakawa.hokkaido.jp
+urausu.hokkaido.jp
+uryu.hokkaido.jp
+utashinai.hokkaido.jp
+wakkanai.hokkaido.jp
+wassamu.hokkaido.jp
+yakumo.hokkaido.jp
+yoichi.hokkaido.jp
+aioi.hyogo.jp
+akashi.hyogo.jp
+ako.hyogo.jp
+amagasaki.hyogo.jp
+aogaki.hyogo.jp
+asago.hyogo.jp
+ashiya.hyogo.jp
+awaji.hyogo.jp
+fukusaki.hyogo.jp
+goshiki.hyogo.jp
+harima.hyogo.jp
+himeji.hyogo.jp
+ichikawa.hyogo.jp
+inagawa.hyogo.jp
+itami.hyogo.jp
+kakogawa.hyogo.jp
+kamigori.hyogo.jp
+kamikawa.hyogo.jp
+kasai.hyogo.jp
+kasuga.hyogo.jp
+kawanishi.hyogo.jp
+miki.hyogo.jp
+minamiawaji.hyogo.jp
+nishinomiya.hyogo.jp
+nishiwaki.hyogo.jp
+ono.hyogo.jp
+sanda.hyogo.jp
+sannan.hyogo.jp
+sasayama.hyogo.jp
+sayo.hyogo.jp
+shingu.hyogo.jp
+shinonsen.hyogo.jp
+shiso.hyogo.jp
+sumoto.hyogo.jp
+taishi.hyogo.jp
+taka.hyogo.jp
+takarazuka.hyogo.jp
+takasago.hyogo.jp
+takino.hyogo.jp
+tamba.hyogo.jp
+tatsuno.hyogo.jp
+toyooka.hyogo.jp
+yabu.hyogo.jp
+yashiro.hyogo.jp
+yoka.hyogo.jp
+yokawa.hyogo.jp
+ami.ibaraki.jp
+asahi.ibaraki.jp
+bando.ibaraki.jp
+chikusei.ibaraki.jp
+daigo.ibaraki.jp
+fujishiro.ibaraki.jp
+hitachi.ibaraki.jp
+hitachinaka.ibaraki.jp
+hitachiomiya.ibaraki.jp
+hitachiota.ibaraki.jp
+ibaraki.ibaraki.jp
+ina.ibaraki.jp
+inashiki.ibaraki.jp
+itako.ibaraki.jp
+iwama.ibaraki.jp
+joso.ibaraki.jp
+kamisu.ibaraki.jp
+kasama.ibaraki.jp
+kashima.ibaraki.jp
+kasumigaura.ibaraki.jp
+koga.ibaraki.jp
+miho.ibaraki.jp
+mito.ibaraki.jp
+moriya.ibaraki.jp
+naka.ibaraki.jp
+namegata.ibaraki.jp
+oarai.ibaraki.jp
+ogawa.ibaraki.jp
+omitama.ibaraki.jp
+ryugasaki.ibaraki.jp
+sakai.ibaraki.jp
+sakuragawa.ibaraki.jp
+shimodate.ibaraki.jp
+shimotsuma.ibaraki.jp
+shirosato.ibaraki.jp
+sowa.ibaraki.jp
+suifu.ibaraki.jp
+takahagi.ibaraki.jp
+tamatsukuri.ibaraki.jp
+tokai.ibaraki.jp
+tomobe.ibaraki.jp
+tone.ibaraki.jp
+toride.ibaraki.jp
+tsuchiura.ibaraki.jp
+tsukuba.ibaraki.jp
+uchihara.ibaraki.jp
+ushiku.ibaraki.jp
+yachiyo.ibaraki.jp
+yamagata.ibaraki.jp
+yawara.ibaraki.jp
+yuki.ibaraki.jp
+anamizu.ishikawa.jp
+hakui.ishikawa.jp
+hakusan.ishikawa.jp
+kaga.ishikawa.jp
+kahoku.ishikawa.jp
+kanazawa.ishikawa.jp
+kawakita.ishikawa.jp
+komatsu.ishikawa.jp
+nakanoto.ishikawa.jp
+nanao.ishikawa.jp
+nomi.ishikawa.jp
+nonoichi.ishikawa.jp
+noto.ishikawa.jp
+shika.ishikawa.jp
+suzu.ishikawa.jp
+tsubata.ishikawa.jp
+tsurugi.ishikawa.jp
+uchinada.ishikawa.jp
+wajima.ishikawa.jp
+fudai.iwate.jp
+fujisawa.iwate.jp
+hanamaki.iwate.jp
+hiraizumi.iwate.jp
+hirono.iwate.jp
+ichinohe.iwate.jp
+ichinoseki.iwate.jp
+iwaizumi.iwate.jp
+iwate.iwate.jp
+joboji.iwate.jp
+kamaishi.iwate.jp
+kanegasaki.iwate.jp
+karumai.iwate.jp
+kawai.iwate.jp
+kitakami.iwate.jp
+kuji.iwate.jp
+kunohe.iwate.jp
+kuzumaki.iwate.jp
+miyako.iwate.jp
+mizusawa.iwate.jp
+morioka.iwate.jp
+ninohe.iwate.jp
+noda.iwate.jp
+ofunato.iwate.jp
+oshu.iwate.jp
+otsuchi.iwate.jp
+rikuzentakata.iwate.jp
+shiwa.iwate.jp
+shizukuishi.iwate.jp
+sumita.iwate.jp
+tanohata.iwate.jp
+tono.iwate.jp
+yahaba.iwate.jp
+yamada.iwate.jp
+ayagawa.kagawa.jp
+higashikagawa.kagawa.jp
+kanonji.kagawa.jp
+kotohira.kagawa.jp
+manno.kagawa.jp
+marugame.kagawa.jp
+mitoyo.kagawa.jp
+naoshima.kagawa.jp
+sanuki.kagawa.jp
+tadotsu.kagawa.jp
+takamatsu.kagawa.jp
+tonosho.kagawa.jp
+uchinomi.kagawa.jp
+utazu.kagawa.jp
+zentsuji.kagawa.jp
+akune.kagoshima.jp
+amami.kagoshima.jp
+hioki.kagoshima.jp
+isa.kagoshima.jp
+isen.kagoshima.jp
+izumi.kagoshima.jp
+kagoshima.kagoshima.jp
+kanoya.kagoshima.jp
+kawanabe.kagoshima.jp
+kinko.kagoshima.jp
+kouyama.kagoshima.jp
+makurazaki.kagoshima.jp
+matsumoto.kagoshima.jp
+minamitane.kagoshima.jp
+nakatane.kagoshima.jp
+nishinoomote.kagoshima.jp
+satsumasendai.kagoshima.jp
+soo.kagoshima.jp
+tarumizu.kagoshima.jp
+yusui.kagoshima.jp
+aikawa.kanagawa.jp
+atsugi.kanagawa.jp
+ayase.kanagawa.jp
+chigasaki.kanagawa.jp
+ebina.kanagawa.jp
+fujisawa.kanagawa.jp
+hadano.kanagawa.jp
+hakone.kanagawa.jp
+hiratsuka.kanagawa.jp
+isehara.kanagawa.jp
+kaisei.kanagawa.jp
+kamakura.kanagawa.jp
+kiyokawa.kanagawa.jp
+matsuda.kanagawa.jp
+minamiashigara.kanagawa.jp
+miura.kanagawa.jp
+nakai.kanagawa.jp
+ninomiya.kanagawa.jp
+odawara.kanagawa.jp
+oi.kanagawa.jp
+oiso.kanagawa.jp
+sagamihara.kanagawa.jp
+samukawa.kanagawa.jp
+tsukui.kanagawa.jp
+yamakita.kanagawa.jp
+yamato.kanagawa.jp
+yokosuka.kanagawa.jp
+yugawara.kanagawa.jp
+zama.kanagawa.jp
+zushi.kanagawa.jp
+aki.kochi.jp
+geisei.kochi.jp
+hidaka.kochi.jp
+higashitsuno.kochi.jp
+ino.kochi.jp
+kagami.kochi.jp
+kami.kochi.jp
+kitagawa.kochi.jp
+kochi.kochi.jp
+mihara.kochi.jp
+motoyama.kochi.jp
+muroto.kochi.jp
+nahari.kochi.jp
+nakamura.kochi.jp
+nankoku.kochi.jp
+nishitosa.kochi.jp
+niyodogawa.kochi.jp
+ochi.kochi.jp
+okawa.kochi.jp
+otoyo.kochi.jp
+otsuki.kochi.jp
+sakawa.kochi.jp
+sukumo.kochi.jp
+susaki.kochi.jp
+tosa.kochi.jp
+tosashimizu.kochi.jp
+toyo.kochi.jp
+tsuno.kochi.jp
+umaji.kochi.jp
+yasuda.kochi.jp
+yusuhara.kochi.jp
+amakusa.kumamoto.jp
+arao.kumamoto.jp
+aso.kumamoto.jp
+choyo.kumamoto.jp
+gyokuto.kumamoto.jp
+hitoyoshi.kumamoto.jp
+kamiamakusa.kumamoto.jp
+kashima.kumamoto.jp
+kikuchi.kumamoto.jp
+kosa.kumamoto.jp
+kumamoto.kumamoto.jp
+mashiki.kumamoto.jp
+mifune.kumamoto.jp
+minamata.kumamoto.jp
+minamioguni.kumamoto.jp
+nagasu.kumamoto.jp
+nishihara.kumamoto.jp
+oguni.kumamoto.jp
+ozu.kumamoto.jp
+sumoto.kumamoto.jp
+takamori.kumamoto.jp
+uki.kumamoto.jp
+uto.kumamoto.jp
+yamaga.kumamoto.jp
+yamato.kumamoto.jp
+yatsushiro.kumamoto.jp
+ayabe.kyoto.jp
+fukuchiyama.kyoto.jp
+higashiyama.kyoto.jp
+ide.kyoto.jp
+ine.kyoto.jp
+joyo.kyoto.jp
+kameoka.kyoto.jp
+kamo.kyoto.jp
+kita.kyoto.jp
+kizu.kyoto.jp
+kumiyama.kyoto.jp
+kyotamba.kyoto.jp
+kyotanabe.kyoto.jp
+kyotango.kyoto.jp
+maizuru.kyoto.jp
+minami.kyoto.jp
+minamiyamashiro.kyoto.jp
+miyazu.kyoto.jp
+muko.kyoto.jp
+nagaokakyo.kyoto.jp
+nakagyo.kyoto.jp
+nantan.kyoto.jp
+oyamazaki.kyoto.jp
+sakyo.kyoto.jp
+seika.kyoto.jp
+tanabe.kyoto.jp
+uji.kyoto.jp
+ujitawara.kyoto.jp
+wazuka.kyoto.jp
+yamashina.kyoto.jp
+yawata.kyoto.jp
+asahi.mie.jp
+inabe.mie.jp
+ise.mie.jp
+kameyama.mie.jp
+kawagoe.mie.jp
+kiho.mie.jp
+kisosaki.mie.jp
+kiwa.mie.jp
+komono.mie.jp
+kumano.mie.jp
+kuwana.mie.jp
+matsusaka.mie.jp
+meiwa.mie.jp
+mihama.mie.jp
+minamiise.mie.jp
+misugi.mie.jp
+miyama.mie.jp
+nabari.mie.jp
+shima.mie.jp
+suzuka.mie.jp
+tado.mie.jp
+taiki.mie.jp
+taki.mie.jp
+tamaki.mie.jp
+toba.mie.jp
+tsu.mie.jp
+udono.mie.jp
+ureshino.mie.jp
+watarai.mie.jp
+yokkaichi.mie.jp
+furukawa.miyagi.jp
+higashimatsushima.miyagi.jp
+ishinomaki.miyagi.jp
+iwanuma.miyagi.jp
+kakuda.miyagi.jp
+kami.miyagi.jp
+kawasaki.miyagi.jp
+kesennuma.miyagi.jp
+marumori.miyagi.jp
+matsushima.miyagi.jp
+minamisanriku.miyagi.jp
+misato.miyagi.jp
+murata.miyagi.jp
+natori.miyagi.jp
+ogawara.miyagi.jp
+ohira.miyagi.jp
+onagawa.miyagi.jp
+osaki.miyagi.jp
+rifu.miyagi.jp
+semine.miyagi.jp
+shibata.miyagi.jp
+shichikashuku.miyagi.jp
+shikama.miyagi.jp
+shiogama.miyagi.jp
+shiroishi.miyagi.jp
+tagajo.miyagi.jp
+taiwa.miyagi.jp
+tome.miyagi.jp
+tomiya.miyagi.jp
+wakuya.miyagi.jp
+watari.miyagi.jp
+yamamoto.miyagi.jp
+zao.miyagi.jp
+aya.miyazaki.jp
+ebino.miyazaki.jp
+gokase.miyazaki.jp
+hyuga.miyazaki.jp
+kadogawa.miyazaki.jp
+kawaminami.miyazaki.jp
+kijo.miyazaki.jp
+kitagawa.miyazaki.jp
+kitakata.miyazaki.jp
+kitaura.miyazaki.jp
+kobayashi.miyazaki.jp
+kunitomi.miyazaki.jp
+kushima.miyazaki.jp
+mimata.miyazaki.jp
+miyakonojo.miyazaki.jp
+miyazaki.miyazaki.jp
+morotsuka.miyazaki.jp
+nichinan.miyazaki.jp
+nishimera.miyazaki.jp
+nobeoka.miyazaki.jp
+saito.miyazaki.jp
+shiiba.miyazaki.jp
+shintomi.miyazaki.jp
+takaharu.miyazaki.jp
+takanabe.miyazaki.jp
+takazaki.miyazaki.jp
+tsuno.miyazaki.jp
+achi.nagano.jp
+agematsu.nagano.jp
+anan.nagano.jp
+aoki.nagano.jp
+asahi.nagano.jp
+azumino.nagano.jp
+chikuhoku.nagano.jp
+chikuma.nagano.jp
+chino.nagano.jp
+fujimi.nagano.jp
+hakuba.nagano.jp
+hara.nagano.jp
+hiraya.nagano.jp
+iida.nagano.jp
+iijima.nagano.jp
+iiyama.nagano.jp
+iizuna.nagano.jp
+ikeda.nagano.jp
+ikusaka.nagano.jp
+ina.nagano.jp
+karuizawa.nagano.jp
+kawakami.nagano.jp
+kiso.nagano.jp
+kisofukushima.nagano.jp
+kitaaiki.nagano.jp
+komagane.nagano.jp
+komoro.nagano.jp
+matsukawa.nagano.jp
+matsumoto.nagano.jp
+miasa.nagano.jp
+minamiaiki.nagano.jp
+minamimaki.nagano.jp
+minamiminowa.nagano.jp
+minowa.nagano.jp
+miyada.nagano.jp
+miyota.nagano.jp
+mochizuki.nagano.jp
+nagano.nagano.jp
+nagawa.nagano.jp
+nagiso.nagano.jp
+nakagawa.nagano.jp
+nakano.nagano.jp
+nozawaonsen.nagano.jp
+obuse.nagano.jp
+ogawa.nagano.jp
+okaya.nagano.jp
+omachi.nagano.jp
+omi.nagano.jp
+ookuwa.nagano.jp
+ooshika.nagano.jp
+otaki.nagano.jp
+otari.nagano.jp
+sakae.nagano.jp
+sakaki.nagano.jp
+saku.nagano.jp
+sakuho.nagano.jp
+shimosuwa.nagano.jp
+shinanomachi.nagano.jp
+shiojiri.nagano.jp
+suwa.nagano.jp
+suzaka.nagano.jp
+takagi.nagano.jp
+takamori.nagano.jp
+takayama.nagano.jp
+tateshina.nagano.jp
+tatsuno.nagano.jp
+togakushi.nagano.jp
+togura.nagano.jp
+tomi.nagano.jp
+ueda.nagano.jp
+wada.nagano.jp
+yamagata.nagano.jp
+yamanouchi.nagano.jp
+yasaka.nagano.jp
+yasuoka.nagano.jp
+chijiwa.nagasaki.jp
+futsu.nagasaki.jp
+goto.nagasaki.jp
+hasami.nagasaki.jp
+hirado.nagasaki.jp
+iki.nagasaki.jp
+isahaya.nagasaki.jp
+kawatana.nagasaki.jp
+kuchinotsu.nagasaki.jp
+matsuura.nagasaki.jp
+nagasaki.nagasaki.jp
+obama.nagasaki.jp
+omura.nagasaki.jp
+oseto.nagasaki.jp
+saikai.nagasaki.jp
+sasebo.nagasaki.jp
+seihi.nagasaki.jp
+shimabara.nagasaki.jp
+shinkamigoto.nagasaki.jp
+togitsu.nagasaki.jp
+tsushima.nagasaki.jp
+unzen.nagasaki.jp
+ando.nara.jp
+gose.nara.jp
+heguri.nara.jp
+higashiyoshino.nara.jp
+ikaruga.nara.jp
+ikoma.nara.jp
+kamikitayama.nara.jp
+kanmaki.nara.jp
+kashiba.nara.jp
+kashihara.nara.jp
+katsuragi.nara.jp
+kawai.nara.jp
+kawakami.nara.jp
+kawanishi.nara.jp
+koryo.nara.jp
+kurotaki.nara.jp
+mitsue.nara.jp
+miyake.nara.jp
+nara.nara.jp
+nosegawa.nara.jp
+oji.nara.jp
+ouda.nara.jp
+oyodo.nara.jp
+sakurai.nara.jp
+sango.nara.jp
+shimoichi.nara.jp
+shimokitayama.nara.jp
+shinjo.nara.jp
+soni.nara.jp
+takatori.nara.jp
+tawaramoto.nara.jp
+tenkawa.nara.jp
+tenri.nara.jp
+uda.nara.jp
+yamatokoriyama.nara.jp
+yamatotakada.nara.jp
+yamazoe.nara.jp
+yoshino.nara.jp
+aga.niigata.jp
+agano.niigata.jp
+gosen.niigata.jp
+itoigawa.niigata.jp
+izumozaki.niigata.jp
+joetsu.niigata.jp
+kamo.niigata.jp
+kariwa.niigata.jp
+kashiwazaki.niigata.jp
+minamiuonuma.niigata.jp
+mitsuke.niigata.jp
+muika.niigata.jp
+murakami.niigata.jp
+myoko.niigata.jp
+nagaoka.niigata.jp
+niigata.niigata.jp
+ojiya.niigata.jp
+omi.niigata.jp
+sado.niigata.jp
+sanjo.niigata.jp
+seiro.niigata.jp
+seirou.niigata.jp
+sekikawa.niigata.jp
+shibata.niigata.jp
+tagami.niigata.jp
+tainai.niigata.jp
+tochio.niigata.jp
+tokamachi.niigata.jp
+tsubame.niigata.jp
+tsunan.niigata.jp
+uonuma.niigata.jp
+yahiko.niigata.jp
+yoita.niigata.jp
+yuzawa.niigata.jp
+beppu.oita.jp
+bungoono.oita.jp
+bungotakada.oita.jp
+hasama.oita.jp
+hiji.oita.jp
+himeshima.oita.jp
+hita.oita.jp
+kamitsue.oita.jp
+kokonoe.oita.jp
+kuju.oita.jp
+kunisaki.oita.jp
+kusu.oita.jp
+oita.oita.jp
+saiki.oita.jp
+taketa.oita.jp
+tsukumi.oita.jp
+usa.oita.jp
+usuki.oita.jp
+yufu.oita.jp
+akaiwa.okayama.jp
+asakuchi.okayama.jp
+bizen.okayama.jp
+hayashima.okayama.jp
+ibara.okayama.jp
+kagamino.okayama.jp
+kasaoka.okayama.jp
+kibichuo.okayama.jp
+kumenan.okayama.jp
+kurashiki.okayama.jp
+maniwa.okayama.jp
+misaki.okayama.jp
+nagi.okayama.jp
+niimi.okayama.jp
+nishiawakura.okayama.jp
+okayama.okayama.jp
+satosho.okayama.jp
+setouchi.okayama.jp
+shinjo.okayama.jp
+shoo.okayama.jp
+soja.okayama.jp
+takahashi.okayama.jp
+tamano.okayama.jp
+tsuyama.okayama.jp
+wake.okayama.jp
+yakage.okayama.jp
+aguni.okinawa.jp
+ginowan.okinawa.jp
+ginoza.okinawa.jp
+gushikami.okinawa.jp
+haebaru.okinawa.jp
+higashi.okinawa.jp
+hirara.okinawa.jp
+iheya.okinawa.jp
+ishigaki.okinawa.jp
+ishikawa.okinawa.jp
+itoman.okinawa.jp
+izena.okinawa.jp
+kadena.okinawa.jp
+kin.okinawa.jp
+kitadaito.okinawa.jp
+kitanakagusuku.okinawa.jp
+kumejima.okinawa.jp
+kunigami.okinawa.jp
+minamidaito.okinawa.jp
+motobu.okinawa.jp
+nago.okinawa.jp
+naha.okinawa.jp
+nakagusuku.okinawa.jp
+nakijin.okinawa.jp
+nanjo.okinawa.jp
+nishihara.okinawa.jp
+ogimi.okinawa.jp
+okinawa.okinawa.jp
+onna.okinawa.jp
+shimoji.okinawa.jp
+taketomi.okinawa.jp
+tarama.okinawa.jp
+tokashiki.okinawa.jp
+tomigusuku.okinawa.jp
+tonaki.okinawa.jp
+urasoe.okinawa.jp
+uruma.okinawa.jp
+yaese.okinawa.jp
+yomitan.okinawa.jp
+yonabaru.okinawa.jp
+yonaguni.okinawa.jp
+zamami.okinawa.jp
+abeno.osaka.jp
+chihayaakasaka.osaka.jp
+chuo.osaka.jp
+daito.osaka.jp
+fujiidera.osaka.jp
+habikino.osaka.jp
+hannan.osaka.jp
+higashiosaka.osaka.jp
+higashisumiyoshi.osaka.jp
+higashiyodogawa.osaka.jp
+hirakata.osaka.jp
+ibaraki.osaka.jp
+ikeda.osaka.jp
+izumi.osaka.jp
+izumiotsu.osaka.jp
+izumisano.osaka.jp
+kadoma.osaka.jp
+kaizuka.osaka.jp
+kanan.osaka.jp
+kashiwara.osaka.jp
+katano.osaka.jp
+kawachinagano.osaka.jp
+kishiwada.osaka.jp
+kita.osaka.jp
+kumatori.osaka.jp
+matsubara.osaka.jp
+minato.osaka.jp
+minoh.osaka.jp
+misaki.osaka.jp
+moriguchi.osaka.jp
+neyagawa.osaka.jp
+nishi.osaka.jp
+nose.osaka.jp
+osakasayama.osaka.jp
+sakai.osaka.jp
+sayama.osaka.jp
+sennan.osaka.jp
+settsu.osaka.jp
+shijonawate.osaka.jp
+shimamoto.osaka.jp
+suita.osaka.jp
+tadaoka.osaka.jp
+taishi.osaka.jp
+tajiri.osaka.jp
+takaishi.osaka.jp
+takatsuki.osaka.jp
+tondabayashi.osaka.jp
+toyonaka.osaka.jp
+toyono.osaka.jp
+yao.osaka.jp
+ariake.saga.jp
+arita.saga.jp
+fukudomi.saga.jp
+genkai.saga.jp
+hamatama.saga.jp
+hizen.saga.jp
+imari.saga.jp
+kamimine.saga.jp
+kanzaki.saga.jp
+karatsu.saga.jp
+kashima.saga.jp
+kitagata.saga.jp
+kitahata.saga.jp
+kiyama.saga.jp
+kouhoku.saga.jp
+kyuragi.saga.jp
+nishiarita.saga.jp
+ogi.saga.jp
+omachi.saga.jp
+ouchi.saga.jp
+saga.saga.jp
+shiroishi.saga.jp
+taku.saga.jp
+tara.saga.jp
+tosu.saga.jp
+yoshinogari.saga.jp
+arakawa.saitama.jp
+asaka.saitama.jp
+chichibu.saitama.jp
+fujimi.saitama.jp
+fujimino.saitama.jp
+fukaya.saitama.jp
+hanno.saitama.jp
+hanyu.saitama.jp
+hasuda.saitama.jp
+hatogaya.saitama.jp
+hatoyama.saitama.jp
+hidaka.saitama.jp
+higashichichibu.saitama.jp
+higashimatsuyama.saitama.jp
+honjo.saitama.jp
+ina.saitama.jp
+iruma.saitama.jp
+iwatsuki.saitama.jp
+kamiizumi.saitama.jp
+kamikawa.saitama.jp
+kamisato.saitama.jp
+kasukabe.saitama.jp
+kawagoe.saitama.jp
+kawaguchi.saitama.jp
+kawajima.saitama.jp
+kazo.saitama.jp
+kitamoto.saitama.jp
+koshigaya.saitama.jp
+kounosu.saitama.jp
+kuki.saitama.jp
+kumagaya.saitama.jp
+matsubushi.saitama.jp
+minano.saitama.jp
+misato.saitama.jp
+miyashiro.saitama.jp
+miyoshi.saitama.jp
+moroyama.saitama.jp
+nagatoro.saitama.jp
+namegawa.saitama.jp
+niiza.saitama.jp
+ogano.saitama.jp
+ogawa.saitama.jp
+ogose.saitama.jp
+okegawa.saitama.jp
+omiya.saitama.jp
+otaki.saitama.jp
+ranzan.saitama.jp
+ryokami.saitama.jp
+saitama.saitama.jp
+sakado.saitama.jp
+satte.saitama.jp
+sayama.saitama.jp
+shiki.saitama.jp
+shiraoka.saitama.jp
+soka.saitama.jp
+sugito.saitama.jp
+toda.saitama.jp
+tokigawa.saitama.jp
+tokorozawa.saitama.jp
+tsurugashima.saitama.jp
+urawa.saitama.jp
+warabi.saitama.jp
+yashio.saitama.jp
+yokoze.saitama.jp
+yono.saitama.jp
+yorii.saitama.jp
+yoshida.saitama.jp
+yoshikawa.saitama.jp
+yoshimi.saitama.jp
+aisho.shiga.jp
+gamo.shiga.jp
+higashiomi.shiga.jp
+hikone.shiga.jp
+koka.shiga.jp
+konan.shiga.jp
+kosei.shiga.jp
+koto.shiga.jp
+kusatsu.shiga.jp
+maibara.shiga.jp
+moriyama.shiga.jp
+nagahama.shiga.jp
+nishiazai.shiga.jp
+notogawa.shiga.jp
+omihachiman.shiga.jp
+otsu.shiga.jp
+ritto.shiga.jp
+ryuoh.shiga.jp
+takashima.shiga.jp
+takatsuki.shiga.jp
+torahime.shiga.jp
+toyosato.shiga.jp
+yasu.shiga.jp
+akagi.shimane.jp
+ama.shimane.jp
+gotsu.shimane.jp
+hamada.shimane.jp
+higashiizumo.shimane.jp
+hikawa.shimane.jp
+hikimi.shimane.jp
+izumo.shimane.jp
+kakinoki.shimane.jp
+masuda.shimane.jp
+matsue.shimane.jp
+misato.shimane.jp
+nishinoshima.shimane.jp
+ohda.shimane.jp
+okinoshima.shimane.jp
+okuizumo.shimane.jp
+shimane.shimane.jp
+tamayu.shimane.jp
+tsuwano.shimane.jp
+unnan.shimane.jp
+yakumo.shimane.jp
+yasugi.shimane.jp
+yatsuka.shimane.jp
+arai.shizuoka.jp
+atami.shizuoka.jp
+fuji.shizuoka.jp
+fujieda.shizuoka.jp
+fujikawa.shizuoka.jp
+fujinomiya.shizuoka.jp
+fukuroi.shizuoka.jp
+gotemba.shizuoka.jp
+haibara.shizuoka.jp
+hamamatsu.shizuoka.jp
+higashiizu.shizuoka.jp
+ito.shizuoka.jp
+iwata.shizuoka.jp
+izu.shizuoka.jp
+izunokuni.shizuoka.jp
+kakegawa.shizuoka.jp
+kannami.shizuoka.jp
+kawanehon.shizuoka.jp
+kawazu.shizuoka.jp
+kikugawa.shizuoka.jp
+kosai.shizuoka.jp
+makinohara.shizuoka.jp
+matsuzaki.shizuoka.jp
+minamiizu.shizuoka.jp
+mishima.shizuoka.jp
+morimachi.shizuoka.jp
+nishiizu.shizuoka.jp
+numazu.shizuoka.jp
+omaezaki.shizuoka.jp
+shimada.shizuoka.jp
+shimizu.shizuoka.jp
+shimoda.shizuoka.jp
+shizuoka.shizuoka.jp
+susono.shizuoka.jp
+yaizu.shizuoka.jp
+yoshida.shizuoka.jp
+ashikaga.tochigi.jp
+bato.tochigi.jp
+haga.tochigi.jp
+ichikai.tochigi.jp
+iwafune.tochigi.jp
+kaminokawa.tochigi.jp
+kanuma.tochigi.jp
+karasuyama.tochigi.jp
+kuroiso.tochigi.jp
+mashiko.tochigi.jp
+mibu.tochigi.jp
+moka.tochigi.jp
+motegi.tochigi.jp
+nasu.tochigi.jp
+nasushiobara.tochigi.jp
+nikko.tochigi.jp
+nishikata.tochigi.jp
+nogi.tochigi.jp
+ohira.tochigi.jp
+ohtawara.tochigi.jp
+oyama.tochigi.jp
+sakura.tochigi.jp
+sano.tochigi.jp
+shimotsuke.tochigi.jp
+shioya.tochigi.jp
+takanezawa.tochigi.jp
+tochigi.tochigi.jp
+tsuga.tochigi.jp
+ujiie.tochigi.jp
+utsunomiya.tochigi.jp
+yaita.tochigi.jp
+aizumi.tokushima.jp
+anan.tokushima.jp
+ichiba.tokushima.jp
+itano.tokushima.jp
+kainan.tokushima.jp
+komatsushima.tokushima.jp
+matsushige.tokushima.jp
+mima.tokushima.jp
+minami.tokushima.jp
+miyoshi.tokushima.jp
+mugi.tokushima.jp
+nakagawa.tokushima.jp
+naruto.tokushima.jp
+sanagochi.tokushima.jp
+shishikui.tokushima.jp
+tokushima.tokushima.jp
+wajiki.tokushima.jp
+adachi.tokyo.jp
+akiruno.tokyo.jp
+akishima.tokyo.jp
+aogashima.tokyo.jp
+arakawa.tokyo.jp
+bunkyo.tokyo.jp
+chiyoda.tokyo.jp
+chofu.tokyo.jp
+chuo.tokyo.jp
+edogawa.tokyo.jp
+fuchu.tokyo.jp
+fussa.tokyo.jp
+hachijo.tokyo.jp
+hachioji.tokyo.jp
+hamura.tokyo.jp
+higashikurume.tokyo.jp
+higashimurayama.tokyo.jp
+higashiyamato.tokyo.jp
+hino.tokyo.jp
+hinode.tokyo.jp
+hinohara.tokyo.jp
+inagi.tokyo.jp
+itabashi.tokyo.jp
+katsushika.tokyo.jp
+kita.tokyo.jp
+kiyose.tokyo.jp
+kodaira.tokyo.jp
+koganei.tokyo.jp
+kokubunji.tokyo.jp
+komae.tokyo.jp
+koto.tokyo.jp
+kouzushima.tokyo.jp
+kunitachi.tokyo.jp
+machida.tokyo.jp
+meguro.tokyo.jp
+minato.tokyo.jp
+mitaka.tokyo.jp
+mizuho.tokyo.jp
+musashimurayama.tokyo.jp
+musashino.tokyo.jp
+nakano.tokyo.jp
+nerima.tokyo.jp
+ogasawara.tokyo.jp
+okutama.tokyo.jp
+ome.tokyo.jp
+oshima.tokyo.jp
+ota.tokyo.jp
+setagaya.tokyo.jp
+shibuya.tokyo.jp
+shinagawa.tokyo.jp
+shinjuku.tokyo.jp
+suginami.tokyo.jp
+sumida.tokyo.jp
+tachikawa.tokyo.jp
+taito.tokyo.jp
+tama.tokyo.jp
+toshima.tokyo.jp
+chizu.tottori.jp
+hino.tottori.jp
+kawahara.tottori.jp
+koge.tottori.jp
+kotoura.tottori.jp
+misasa.tottori.jp
+nanbu.tottori.jp
+nichinan.tottori.jp
+sakaiminato.tottori.jp
+tottori.tottori.jp
+wakasa.tottori.jp
+yazu.tottori.jp
+yonago.tottori.jp
+asahi.toyama.jp
+fuchu.toyama.jp
+fukumitsu.toyama.jp
+funahashi.toyama.jp
+himi.toyama.jp
+imizu.toyama.jp
+inami.toyama.jp
+johana.toyama.jp
+kamiichi.toyama.jp
+kurobe.toyama.jp
+nakaniikawa.toyama.jp
+namerikawa.toyama.jp
+nanto.toyama.jp
+nyuzen.toyama.jp
+oyabe.toyama.jp
+taira.toyama.jp
+takaoka.toyama.jp
+tateyama.toyama.jp
+toga.toyama.jp
+tonami.toyama.jp
+toyama.toyama.jp
+unazuki.toyama.jp
+uozu.toyama.jp
+yamada.toyama.jp
+arida.wakayama.jp
+aridagawa.wakayama.jp
+gobo.wakayama.jp
+hashimoto.wakayama.jp
+hidaka.wakayama.jp
+hirogawa.wakayama.jp
+inami.wakayama.jp
+iwade.wakayama.jp
+kainan.wakayama.jp
+kamitonda.wakayama.jp
+katsuragi.wakayama.jp
+kimino.wakayama.jp
+kinokawa.wakayama.jp
+kitayama.wakayama.jp
+koya.wakayama.jp
+koza.wakayama.jp
+kozagawa.wakayama.jp
+kudoyama.wakayama.jp
+kushimoto.wakayama.jp
+mihama.wakayama.jp
+misato.wakayama.jp
+nachikatsuura.wakayama.jp
+shingu.wakayama.jp
+shirahama.wakayama.jp
+taiji.wakayama.jp
+tanabe.wakayama.jp
+wakayama.wakayama.jp
+yuasa.wakayama.jp
+yura.wakayama.jp
+asahi.yamagata.jp
+funagata.yamagata.jp
+higashine.yamagata.jp
+iide.yamagata.jp
+kahoku.yamagata.jp
+kaminoyama.yamagata.jp
+kaneyama.yamagata.jp
+kawanishi.yamagata.jp
+mamurogawa.yamagata.jp
+mikawa.yamagata.jp
+murayama.yamagata.jp
+nagai.yamagata.jp
+nakayama.yamagata.jp
+nanyo.yamagata.jp
+nishikawa.yamagata.jp
+obanazawa.yamagata.jp
+oe.yamagata.jp
+oguni.yamagata.jp
+ohkura.yamagata.jp
+oishida.yamagata.jp
+sagae.yamagata.jp
+sakata.yamagata.jp
+sakegawa.yamagata.jp
+shinjo.yamagata.jp
+shirataka.yamagata.jp
+shonai.yamagata.jp
+takahata.yamagata.jp
+tendo.yamagata.jp
+tozawa.yamagata.jp
+tsuruoka.yamagata.jp
+yamagata.yamagata.jp
+yamanobe.yamagata.jp
+yonezawa.yamagata.jp
+yuza.yamagata.jp
+abu.yamaguchi.jp
+hagi.yamaguchi.jp
+hikari.yamaguchi.jp
+hofu.yamaguchi.jp
+iwakuni.yamaguchi.jp
+kudamatsu.yamaguchi.jp
+mitou.yamaguchi.jp
+nagato.yamaguchi.jp
+oshima.yamaguchi.jp
+shimonoseki.yamaguchi.jp
+shunan.yamaguchi.jp
+tabuse.yamaguchi.jp
+tokuyama.yamaguchi.jp
+toyota.yamaguchi.jp
+ube.yamaguchi.jp
+yuu.yamaguchi.jp
+chuo.yamanashi.jp
+doshi.yamanashi.jp
+fuefuki.yamanashi.jp
+fujikawa.yamanashi.jp
+fujikawaguchiko.yamanashi.jp
+fujiyoshida.yamanashi.jp
+hayakawa.yamanashi.jp
+hokuto.yamanashi.jp
+ichikawamisato.yamanashi.jp
+kai.yamanashi.jp
+kofu.yamanashi.jp
+koshu.yamanashi.jp
+kosuge.yamanashi.jp
+minami-alps.yamanashi.jp
+minobu.yamanashi.jp
+nakamichi.yamanashi.jp
+nanbu.yamanashi.jp
+narusawa.yamanashi.jp
+nirasaki.yamanashi.jp
+nishikatsura.yamanashi.jp
+oshino.yamanashi.jp
+otsuki.yamanashi.jp
+showa.yamanashi.jp
+tabayama.yamanashi.jp
+tsuru.yamanashi.jp
+uenohara.yamanashi.jp
+yamanakako.yamanashi.jp
+yamanashi.yamanashi.jp
+
+// ke : http://www.kenic.or.ke/index.php?option=com_content&task=view&id=117&Itemid=145
+*.ke
+
+// kg : http://www.domain.kg/dmn_n.html
+kg
+org.kg
+net.kg
+com.kg
+edu.kg
+gov.kg
+mil.kg
+
+// kh : http://www.mptc.gov.kh/dns_registration.htm
+*.kh
+
+// ki : http://www.ki/dns/index.html
+ki
+edu.ki
+biz.ki
+net.ki
+org.ki
+gov.ki
+info.ki
+com.ki
+
+// km : https://en.wikipedia.org/wiki/.km
+// http://www.domaine.km/documents/charte.doc
+km
+org.km
+nom.km
+gov.km
+prd.km
+tm.km
+edu.km
+mil.km
+ass.km
+com.km
+// These are only mentioned as proposed suggestions at domaine.km, but
+// https://en.wikipedia.org/wiki/.km says they're available for registration:
+coop.km
+asso.km
+presse.km
+medecin.km
+notaires.km
+pharmaciens.km
+veterinaire.km
+gouv.km
+
+// kn : https://en.wikipedia.org/wiki/.kn
+// http://www.dot.kn/domainRules.html
+kn
+net.kn
+org.kn
+edu.kn
+gov.kn
+
+// kp : http://www.kcce.kp/en_index.php
+kp
+com.kp
+edu.kp
+gov.kp
+org.kp
+rep.kp
+tra.kp
+
+// kr : https://en.wikipedia.org/wiki/.kr
+// see also: http://domain.nida.or.kr/eng/registration.jsp
+kr
+ac.kr
+co.kr
+es.kr
+go.kr
+hs.kr
+kg.kr
+mil.kr
+ms.kr
+ne.kr
+or.kr
+pe.kr
+re.kr
+sc.kr
+// kr geographical names
+busan.kr
+chungbuk.kr
+chungnam.kr
+daegu.kr
+daejeon.kr
+gangwon.kr
+gwangju.kr
+gyeongbuk.kr
+gyeonggi.kr
+gyeongnam.kr
+incheon.kr
+jeju.kr
+jeonbuk.kr
+jeonnam.kr
+seoul.kr
+ulsan.kr
+
+// kw : https://en.wikipedia.org/wiki/.kw
+*.kw
+
+// ky : http://www.icta.ky/da_ky_reg_dom.php
+// Confirmed by registry <kysupport@perimeterusa.com> 2008-06-17
+ky
+edu.ky
+gov.ky
+com.ky
+org.ky
+net.ky
+
+// kz : https://en.wikipedia.org/wiki/.kz
+// see also: http://www.nic.kz/rules/index.jsp
+kz
+org.kz
+edu.kz
+net.kz
+gov.kz
+mil.kz
+com.kz
+
+// la : https://en.wikipedia.org/wiki/.la
+// Submitted by registry <gavin.brown@nic.la>
+la
+int.la
+net.la
+info.la
+edu.la
+gov.la
+per.la
+com.la
+org.la
+
+// lb : https://en.wikipedia.org/wiki/.lb
+// Submitted by registry <randy@psg.com>
+lb
+com.lb
+edu.lb
+gov.lb
+net.lb
+org.lb
+
+// lc : https://en.wikipedia.org/wiki/.lc
+// see also: http://www.nic.lc/rules.htm
+lc
+com.lc
+net.lc
+co.lc
+org.lc
+edu.lc
+gov.lc
+
+// li : https://en.wikipedia.org/wiki/.li
+li
+
+// lk : http://www.nic.lk/seclevpr.html
+lk
+gov.lk
+sch.lk
+net.lk
+int.lk
+com.lk
+org.lk
+edu.lk
+ngo.lk
+soc.lk
+web.lk
+ltd.lk
+assn.lk
+grp.lk
+hotel.lk
+ac.lk
+
+// lr : http://psg.com/dns/lr/lr.txt
+// Submitted by registry <randy@psg.com>
+lr
+com.lr
+edu.lr
+gov.lr
+org.lr
+net.lr
+
+// ls : https://en.wikipedia.org/wiki/.ls
+ls
+co.ls
+org.ls
+
+// lt : https://en.wikipedia.org/wiki/.lt
+lt
+// gov.lt : http://www.gov.lt/index_en.php
+gov.lt
+
+// lu : http://www.dns.lu/en/
+lu
+
+// lv : http://www.nic.lv/DNS/En/generic.php
+lv
+com.lv
+edu.lv
+gov.lv
+org.lv
+mil.lv
+id.lv
+net.lv
+asn.lv
+conf.lv
+
+// ly : http://www.nic.ly/regulations.php
+ly
+com.ly
+net.ly
+gov.ly
+plc.ly
+edu.ly
+sch.ly
+med.ly
+org.ly
+id.ly
+
+// ma : https://en.wikipedia.org/wiki/.ma
+// http://www.anrt.ma/fr/admin/download/upload/file_fr782.pdf
+ma
+co.ma
+net.ma
+gov.ma
+org.ma
+ac.ma
+press.ma
+
+// mc : http://www.nic.mc/
+mc
+tm.mc
+asso.mc
+
+// md : https://en.wikipedia.org/wiki/.md
+md
+
+// me : https://en.wikipedia.org/wiki/.me
+me
+co.me
+net.me
+org.me
+edu.me
+ac.me
+gov.me
+its.me
+priv.me
+
+// mg : http://nic.mg/nicmg/?page_id=39
+mg
+org.mg
+nom.mg
+gov.mg
+prd.mg
+tm.mg
+edu.mg
+mil.mg
+com.mg
+co.mg
+
+// mh : https://en.wikipedia.org/wiki/.mh
+mh
+
+// mil : https://en.wikipedia.org/wiki/.mil
+mil
+
+// mk : https://en.wikipedia.org/wiki/.mk
+// see also: http://dns.marnet.net.mk/postapka.php
+mk
+com.mk
+org.mk
+net.mk
+edu.mk
+gov.mk
+inf.mk
+name.mk
+
+// ml : http://www.gobin.info/domainname/ml-template.doc
+// see also: https://en.wikipedia.org/wiki/.ml
+ml
+com.ml
+edu.ml
+gouv.ml
+gov.ml
+net.ml
+org.ml
+presse.ml
+
+// mm : https://en.wikipedia.org/wiki/.mm
+*.mm
+
+// mn : https://en.wikipedia.org/wiki/.mn
+mn
+gov.mn
+edu.mn
+org.mn
+
+// mo : http://www.monic.net.mo/
+mo
+com.mo
+net.mo
+org.mo
+edu.mo
+gov.mo
+
+// mobi : https://en.wikipedia.org/wiki/.mobi
+mobi
+
+// mp : http://www.dot.mp/
+// Confirmed by registry <dcamacho@saipan.com> 2008-06-17
+mp
+
+// mq : https://en.wikipedia.org/wiki/.mq
+mq
+
+// mr : https://en.wikipedia.org/wiki/.mr
+mr
+gov.mr
+
+// ms : http://www.nic.ms/pdf/MS_Domain_Name_Rules.pdf
+ms
+com.ms
+edu.ms
+gov.ms
+net.ms
+org.ms
+
+// mt : https://www.nic.org.mt/go/policy
+// Submitted by registry <help@nic.org.mt>
+mt
+com.mt
+edu.mt
+net.mt
+org.mt
+
+// mu : https://en.wikipedia.org/wiki/.mu
+mu
+com.mu
+net.mu
+org.mu
+gov.mu
+ac.mu
+co.mu
+or.mu
+
+// museum : http://about.museum/naming/
+// http://index.museum/
+museum
+academy.museum
+agriculture.museum
+air.museum
+airguard.museum
+alabama.museum
+alaska.museum
+amber.museum
+ambulance.museum
+american.museum
+americana.museum
+americanantiques.museum
+americanart.museum
+amsterdam.museum
+and.museum
+annefrank.museum
+anthro.museum
+anthropology.museum
+antiques.museum
+aquarium.museum
+arboretum.museum
+archaeological.museum
+archaeology.museum
+architecture.museum
+art.museum
+artanddesign.museum
+artcenter.museum
+artdeco.museum
+arteducation.museum
+artgallery.museum
+arts.museum
+artsandcrafts.museum
+asmatart.museum
+assassination.museum
+assisi.museum
+association.museum
+astronomy.museum
+atlanta.museum
+austin.museum
+australia.museum
+automotive.museum
+aviation.museum
+axis.museum
+badajoz.museum
+baghdad.museum
+bahn.museum
+bale.museum
+baltimore.museum
+barcelona.museum
+baseball.museum
+basel.museum
+baths.museum
+bauern.museum
+beauxarts.museum
+beeldengeluid.museum
+bellevue.museum
+bergbau.museum
+berkeley.museum
+berlin.museum
+bern.museum
+bible.museum
+bilbao.museum
+bill.museum
+birdart.museum
+birthplace.museum
+bonn.museum
+boston.museum
+botanical.museum
+botanicalgarden.museum
+botanicgarden.museum
+botany.museum
+brandywinevalley.museum
+brasil.museum
+bristol.museum
+british.museum
+britishcolumbia.museum
+broadcast.museum
+brunel.museum
+brussel.museum
+brussels.museum
+bruxelles.museum
+building.museum
+burghof.museum
+bus.museum
+bushey.museum
+cadaques.museum
+california.museum
+cambridge.museum
+can.museum
+canada.museum
+capebreton.museum
+carrier.museum
+cartoonart.museum
+casadelamoneda.museum
+castle.museum
+castres.museum
+celtic.museum
+center.museum
+chattanooga.museum
+cheltenham.museum
+chesapeakebay.museum
+chicago.museum
+children.museum
+childrens.museum
+childrensgarden.museum
+chiropractic.museum
+chocolate.museum
+christiansburg.museum
+cincinnati.museum
+cinema.museum
+circus.museum
+civilisation.museum
+civilization.museum
+civilwar.museum
+clinton.museum
+clock.museum
+coal.museum
+coastaldefence.museum
+cody.museum
+coldwar.museum
+collection.museum
+colonialwilliamsburg.museum
+coloradoplateau.museum
+columbia.museum
+columbus.museum
+communication.museum
+communications.museum
+community.museum
+computer.museum
+computerhistory.museum
+comunicações.museum
+contemporary.museum
+contemporaryart.museum
+convent.museum
+copenhagen.museum
+corporation.museum
+correios-e-telecomunicações.museum
+corvette.museum
+costume.museum
+countryestate.museum
+county.museum
+crafts.museum
+cranbrook.museum
+creation.museum
+cultural.museum
+culturalcenter.museum
+culture.museum
+cyber.museum
+cymru.museum
+dali.museum
+dallas.museum
+database.museum
+ddr.museum
+decorativearts.museum
+delaware.museum
+delmenhorst.museum
+denmark.museum
+depot.museum
+design.museum
+detroit.museum
+dinosaur.museum
+discovery.museum
+dolls.museum
+donostia.museum
+durham.museum
+eastafrica.museum
+eastcoast.museum
+education.museum
+educational.museum
+egyptian.museum
+eisenbahn.museum
+elburg.museum
+elvendrell.museum
+embroidery.museum
+encyclopedic.museum
+england.museum
+entomology.museum
+environment.museum
+environmentalconservation.museum
+epilepsy.museum
+essex.museum
+estate.museum
+ethnology.museum
+exeter.museum
+exhibition.museum
+family.museum
+farm.museum
+farmequipment.museum
+farmers.museum
+farmstead.museum
+field.museum
+figueres.museum
+filatelia.museum
+film.museum
+fineart.museum
+finearts.museum
+finland.museum
+flanders.museum
+florida.museum
+force.museum
+fortmissoula.museum
+fortworth.museum
+foundation.museum
+francaise.museum
+frankfurt.museum
+franziskaner.museum
+freemasonry.museum
+freiburg.museum
+fribourg.museum
+frog.museum
+fundacio.museum
+furniture.museum
+gallery.museum
+garden.museum
+gateway.museum
+geelvinck.museum
+gemological.museum
+geology.museum
+georgia.museum
+giessen.museum
+glas.museum
+glass.museum
+gorge.museum
+grandrapids.museum
+graz.museum
+guernsey.museum
+halloffame.museum
+hamburg.museum
+handson.museum
+harvestcelebration.museum
+hawaii.museum
+health.museum
+heimatunduhren.museum
+hellas.museum
+helsinki.museum
+hembygdsforbund.museum
+heritage.museum
+histoire.museum
+historical.museum
+historicalsociety.museum
+historichouses.museum
+historisch.museum
+historisches.museum
+history.museum
+historyofscience.museum
+horology.museum
+house.museum
+humanities.museum
+illustration.museum
+imageandsound.museum
+indian.museum
+indiana.museum
+indianapolis.museum
+indianmarket.museum
+intelligence.museum
+interactive.museum
+iraq.museum
+iron.museum
+isleofman.museum
+jamison.museum
+jefferson.museum
+jerusalem.museum
+jewelry.museum
+jewish.museum
+jewishart.museum
+jfk.museum
+journalism.museum
+judaica.museum
+judygarland.museum
+juedisches.museum
+juif.museum
+karate.museum
+karikatur.museum
+kids.museum
+koebenhavn.museum
+koeln.museum
+kunst.museum
+kunstsammlung.museum
+kunstunddesign.museum
+labor.museum
+labour.museum
+lajolla.museum
+lancashire.museum
+landes.museum
+lans.museum
+läns.museum
+larsson.museum
+lewismiller.museum
+lincoln.museum
+linz.museum
+living.museum
+livinghistory.museum
+localhistory.museum
+london.museum
+losangeles.museum
+louvre.museum
+loyalist.museum
+lucerne.museum
+luxembourg.museum
+luzern.museum
+mad.museum
+madrid.museum
+mallorca.museum
+manchester.museum
+mansion.museum
+mansions.museum
+manx.museum
+marburg.museum
+maritime.museum
+maritimo.museum
+maryland.museum
+marylhurst.museum
+media.museum
+medical.museum
+medizinhistorisches.museum
+meeres.museum
+memorial.museum
+mesaverde.museum
+michigan.museum
+midatlantic.museum
+military.museum
+mill.museum
+miners.museum
+mining.museum
+minnesota.museum
+missile.museum
+missoula.museum
+modern.museum
+moma.museum
+money.museum
+monmouth.museum
+monticello.museum
+montreal.museum
+moscow.museum
+motorcycle.museum
+muenchen.museum
+muenster.museum
+mulhouse.museum
+muncie.museum
+museet.museum
+museumcenter.museum
+museumvereniging.museum
+music.museum
+national.museum
+nationalfirearms.museum
+nationalheritage.museum
+nativeamerican.museum
+naturalhistory.museum
+naturalhistorymuseum.museum
+naturalsciences.museum
+nature.museum
+naturhistorisches.museum
+natuurwetenschappen.museum
+naumburg.museum
+naval.museum
+nebraska.museum
+neues.museum
+newhampshire.museum
+newjersey.museum
+newmexico.museum
+newport.museum
+newspaper.museum
+newyork.museum
+niepce.museum
+norfolk.museum
+north.museum
+nrw.museum
+nuernberg.museum
+nuremberg.museum
+nyc.museum
+nyny.museum
+oceanographic.museum
+oceanographique.museum
+omaha.museum
+online.museum
+ontario.museum
+openair.museum
+oregon.museum
+oregontrail.museum
+otago.museum
+oxford.museum
+pacific.museum
+paderborn.museum
+palace.museum
+paleo.museum
+palmsprings.museum
+panama.museum
+paris.museum
+pasadena.museum
+pharmacy.museum
+philadelphia.museum
+philadelphiaarea.museum
+philately.museum
+phoenix.museum
+photography.museum
+pilots.museum
+pittsburgh.museum
+planetarium.museum
+plantation.museum
+plants.museum
+plaza.museum
+portal.museum
+portland.museum
+portlligat.museum
+posts-and-telecommunications.museum
+preservation.museum
+presidio.museum
+press.museum
+project.museum
+public.museum
+pubol.museum
+quebec.museum
+railroad.museum
+railway.museum
+research.museum
+resistance.museum
+riodejaneiro.museum
+rochester.museum
+rockart.museum
+roma.museum
+russia.museum
+saintlouis.museum
+salem.museum
+salvadordali.museum
+salzburg.museum
+sandiego.museum
+sanfrancisco.museum
+santabarbara.museum
+santacruz.museum
+santafe.museum
+saskatchewan.museum
+satx.museum
+savannahga.museum
+schlesisches.museum
+schoenbrunn.museum
+schokoladen.museum
+school.museum
+schweiz.museum
+science.museum
+scienceandhistory.museum
+scienceandindustry.museum
+sciencecenter.museum
+sciencecenters.museum
+science-fiction.museum
+sciencehistory.museum
+sciences.museum
+sciencesnaturelles.museum
+scotland.museum
+seaport.museum
+settlement.museum
+settlers.museum
+shell.museum
+sherbrooke.museum
+sibenik.museum
+silk.museum
+ski.museum
+skole.museum
+society.museum
+sologne.museum
+soundandvision.museum
+southcarolina.museum
+southwest.museum
+space.museum
+spy.museum
+square.museum
+stadt.museum
+stalbans.museum
+starnberg.museum
+state.museum
+stateofdelaware.museum
+station.museum
+steam.museum
+steiermark.museum
+stjohn.museum
+stockholm.museum
+stpetersburg.museum
+stuttgart.museum
+suisse.museum
+surgeonshall.museum
+surrey.museum
+svizzera.museum
+sweden.museum
+sydney.museum
+tank.museum
+tcm.museum
+technology.museum
+telekommunikation.museum
+television.museum
+texas.museum
+textile.museum
+theater.museum
+time.museum
+timekeeping.museum
+topology.museum
+torino.museum
+touch.museum
+town.museum
+transport.museum
+tree.museum
+trolley.museum
+trust.museum
+trustee.museum
+uhren.museum
+ulm.museum
+undersea.museum
+university.museum
+usa.museum
+usantiques.museum
+usarts.museum
+uscountryestate.museum
+usculture.museum
+usdecorativearts.museum
+usgarden.museum
+ushistory.museum
+ushuaia.museum
+uslivinghistory.museum
+utah.museum
+uvic.museum
+valley.museum
+vantaa.museum
+versailles.museum
+viking.museum
+village.museum
+virginia.museum
+virtual.museum
+virtuel.museum
+vlaanderen.museum
+volkenkunde.museum
+wales.museum
+wallonie.museum
+war.museum
+washingtondc.museum
+watchandclock.museum
+watch-and-clock.museum
+western.museum
+westfalen.museum
+whaling.museum
+wildlife.museum
+williamsburg.museum
+windmill.museum
+workshop.museum
+york.museum
+yorkshire.museum
+yosemite.museum
+youth.museum
+zoological.museum
+zoology.museum
+ירושלים.museum
+иком.museum
+
+// mv : https://en.wikipedia.org/wiki/.mv
+// "mv" included because, contra Wikipedia, google.mv exists.
+mv
+aero.mv
+biz.mv
+com.mv
+coop.mv
+edu.mv
+gov.mv
+info.mv
+int.mv
+mil.mv
+museum.mv
+name.mv
+net.mv
+org.mv
+pro.mv
+
+// mw : http://www.registrar.mw/
+mw
+ac.mw
+biz.mw
+co.mw
+com.mw
+coop.mw
+edu.mw
+gov.mw
+int.mw
+museum.mw
+net.mw
+org.mw
+
+// mx : http://www.nic.mx/
+// Submitted by registry <farias@nic.mx>
+mx
+com.mx
+org.mx
+gob.mx
+edu.mx
+net.mx
+
+// my : http://www.mynic.net.my/
+my
+com.my
+net.my
+org.my
+gov.my
+edu.my
+mil.my
+name.my
+
+// mz : http://www.gobin.info/domainname/mz-template.doc
+*.mz
+!teledata.mz
+
+// na : http://www.na-nic.com.na/
+// http://www.info.na/domain/
+na
+info.na
+pro.na
+name.na
+school.na
+or.na
+dr.na
+us.na
+mx.na
+ca.na
+in.na
+cc.na
+tv.na
+ws.na
+mobi.na
+co.na
+com.na
+org.na
+
+// name : has 2nd-level tlds, but there's no list of them
+name
+
+// nc : http://www.cctld.nc/
+nc
+asso.nc
+
+// ne : https://en.wikipedia.org/wiki/.ne
+ne
+
+// net : https://en.wikipedia.org/wiki/.net
+net
+
+// nf : https://en.wikipedia.org/wiki/.nf
+nf
+com.nf
+net.nf
+per.nf
+rec.nf
+web.nf
+arts.nf
+firm.nf
+info.nf
+other.nf
+store.nf
+
+// ng : http://www.nira.org.ng/index.php/join-us/register-ng-domain/189-nira-slds
+ng
+com.ng
+edu.ng
+gov.ng
+i.ng
+mil.ng
+mobi.ng
+name.ng
+net.ng
+org.ng
+sch.ng
+
+// ni : http://www.nic.ni/
+com.ni
+gob.ni
+edu.ni
+org.ni
+nom.ni
+net.ni
+mil.ni
+co.ni
+biz.ni
+web.ni
+int.ni
+ac.ni
+in.ni
+info.ni
+
+// nl : https://en.wikipedia.org/wiki/.nl
+//      https://www.sidn.nl/
+//      ccTLD for the Netherlands
+nl
+
+// BV.nl will be a registry for dutch BV's (besloten vennootschap)
+bv.nl
+
+// no : http://www.norid.no/regelverk/index.en.html
+// The Norwegian registry has declined to notify us of updates. The web pages
+// referenced below are the official source of the data. There is also an
+// announce mailing list:
+// https://postlister.uninett.no/sympa/info/norid-diskusjon
+no
+// Norid generic domains : http://www.norid.no/regelverk/vedlegg-c.en.html
+fhs.no
+vgs.no
+fylkesbibl.no
+folkebibl.no
+museum.no
+idrett.no
+priv.no
+// Non-Norid generic domains : http://www.norid.no/regelverk/vedlegg-d.en.html
+mil.no
+stat.no
+dep.no
+kommune.no
+herad.no
+// no geographical names : http://www.norid.no/regelverk/vedlegg-b.en.html
+// counties
+aa.no
+ah.no
+bu.no
+fm.no
+hl.no
+hm.no
+jan-mayen.no
+mr.no
+nl.no
+nt.no
+of.no
+ol.no
+oslo.no
+rl.no
+sf.no
+st.no
+svalbard.no
+tm.no
+tr.no
+va.no
+vf.no
+// primary and lower secondary schools per county
+gs.aa.no
+gs.ah.no
+gs.bu.no
+gs.fm.no
+gs.hl.no
+gs.hm.no
+gs.jan-mayen.no
+gs.mr.no
+gs.nl.no
+gs.nt.no
+gs.of.no
+gs.ol.no
+gs.oslo.no
+gs.rl.no
+gs.sf.no
+gs.st.no
+gs.svalbard.no
+gs.tm.no
+gs.tr.no
+gs.va.no
+gs.vf.no
+// cities
+akrehamn.no
+åkrehamn.no
+algard.no
+ålgård.no
+arna.no
+brumunddal.no
+bryne.no
+bronnoysund.no
+brønnøysund.no
+drobak.no
+drøbak.no
+egersund.no
+fetsund.no
+floro.no
+florø.no
+fredrikstad.no
+hokksund.no
+honefoss.no
+hønefoss.no
+jessheim.no
+jorpeland.no
+jørpeland.no
+kirkenes.no
+kopervik.no
+krokstadelva.no
+langevag.no
+langevåg.no
+leirvik.no
+mjondalen.no
+mjøndalen.no
+mo-i-rana.no
+mosjoen.no
+mosjøen.no
+nesoddtangen.no
+orkanger.no
+osoyro.no
+osøyro.no
+raholt.no
+råholt.no
+sandnessjoen.no
+sandnessjøen.no
+skedsmokorset.no
+slattum.no
+spjelkavik.no
+stathelle.no
+stavern.no
+stjordalshalsen.no
+stjørdalshalsen.no
+tananger.no
+tranby.no
+vossevangen.no
+// communities
+afjord.no
+åfjord.no
+agdenes.no
+al.no
+ål.no
+alesund.no
+ålesund.no
+alstahaug.no
+alta.no
+áltá.no
+alaheadju.no
+álaheadju.no
+alvdal.no
+amli.no
+åmli.no
+amot.no
+åmot.no
+andebu.no
+andoy.no
+andøy.no
+andasuolo.no
+ardal.no
+årdal.no
+aremark.no
+arendal.no
+ås.no
+aseral.no
+åseral.no
+asker.no
+askim.no
+askvoll.no
+askoy.no
+askøy.no
+asnes.no
+åsnes.no
+audnedaln.no
+aukra.no
+aure.no
+aurland.no
+aurskog-holand.no
+aurskog-høland.no
+austevoll.no
+austrheim.no
+averoy.no
+averøy.no
+balestrand.no
+ballangen.no
+balat.no
+bálát.no
+balsfjord.no
+bahccavuotna.no
+báhccavuotna.no
+bamble.no
+bardu.no
+beardu.no
+beiarn.no
+bajddar.no
+bájddar.no
+baidar.no
+báidár.no
+berg.no
+bergen.no
+berlevag.no
+berlevåg.no
+bearalvahki.no
+bearalváhki.no
+bindal.no
+birkenes.no
+bjarkoy.no
+bjarkøy.no
+bjerkreim.no
+bjugn.no
+bodo.no
+bodø.no
+badaddja.no
+bådåddjå.no
+budejju.no
+bokn.no
+bremanger.no
+bronnoy.no
+brønnøy.no
+bygland.no
+bykle.no
+barum.no
+bærum.no
+bo.telemark.no
+bø.telemark.no
+bo.nordland.no
+bø.nordland.no
+bievat.no
+bievát.no
+bomlo.no
+bømlo.no
+batsfjord.no
+båtsfjord.no
+bahcavuotna.no
+báhcavuotna.no
+dovre.no
+drammen.no
+drangedal.no
+dyroy.no
+dyrøy.no
+donna.no
+dønna.no
+eid.no
+eidfjord.no
+eidsberg.no
+eidskog.no
+eidsvoll.no
+eigersund.no
+elverum.no
+enebakk.no
+engerdal.no
+etne.no
+etnedal.no
+evenes.no
+evenassi.no
+evenášši.no
+evje-og-hornnes.no
+farsund.no
+fauske.no
+fuossko.no
+fuoisku.no
+fedje.no
+fet.no
+finnoy.no
+finnøy.no
+fitjar.no
+fjaler.no
+fjell.no
+flakstad.no
+flatanger.no
+flekkefjord.no
+flesberg.no
+flora.no
+fla.no
+flå.no
+folldal.no
+forsand.no
+fosnes.no
+frei.no
+frogn.no
+froland.no
+frosta.no
+frana.no
+fræna.no
+froya.no
+frøya.no
+fusa.no
+fyresdal.no
+forde.no
+førde.no
+gamvik.no
+gangaviika.no
+gáŋgaviika.no
+gaular.no
+gausdal.no
+gildeskal.no
+gildeskål.no
+giske.no
+gjemnes.no
+gjerdrum.no
+gjerstad.no
+gjesdal.no
+gjovik.no
+gjøvik.no
+gloppen.no
+gol.no
+gran.no
+grane.no
+granvin.no
+gratangen.no
+grimstad.no
+grong.no
+kraanghke.no
+kråanghke.no
+grue.no
+gulen.no
+hadsel.no
+halden.no
+halsa.no
+hamar.no
+hamaroy.no
+habmer.no
+hábmer.no
+hapmir.no
+hápmir.no
+hammerfest.no
+hammarfeasta.no
+hámmárfeasta.no
+haram.no
+hareid.no
+harstad.no
+hasvik.no
+aknoluokta.no
+ákŋoluokta.no
+hattfjelldal.no
+aarborte.no
+haugesund.no
+hemne.no
+hemnes.no
+hemsedal.no
+heroy.more-og-romsdal.no
+herøy.møre-og-romsdal.no
+heroy.nordland.no
+herøy.nordland.no
+hitra.no
+hjartdal.no
+hjelmeland.no
+hobol.no
+hobøl.no
+hof.no
+hol.no
+hole.no
+holmestrand.no
+holtalen.no
+holtålen.no
+hornindal.no
+horten.no
+hurdal.no
+hurum.no
+hvaler.no
+hyllestad.no
+hagebostad.no
+hægebostad.no
+hoyanger.no
+høyanger.no
+hoylandet.no
+høylandet.no
+ha.no
+hå.no
+ibestad.no
+inderoy.no
+inderøy.no
+iveland.no
+jevnaker.no
+jondal.no
+jolster.no
+jølster.no
+karasjok.no
+karasjohka.no
+kárášjohka.no
+karlsoy.no
+galsa.no
+gálsá.no
+karmoy.no
+karmøy.no
+kautokeino.no
+guovdageaidnu.no
+klepp.no
+klabu.no
+klæbu.no
+kongsberg.no
+kongsvinger.no
+kragero.no
+kragerø.no
+kristiansand.no
+kristiansund.no
+krodsherad.no
+krødsherad.no
+kvalsund.no
+rahkkeravju.no
+ráhkkerávju.no
+kvam.no
+kvinesdal.no
+kvinnherad.no
+kviteseid.no
+kvitsoy.no
+kvitsøy.no
+kvafjord.no
+kvæfjord.no
+giehtavuoatna.no
+kvanangen.no
+kvænangen.no
+navuotna.no
+návuotna.no
+kafjord.no
+kåfjord.no
+gaivuotna.no
+gáivuotna.no
+larvik.no
+lavangen.no
+lavagis.no
+loabat.no
+loabát.no
+lebesby.no
+davvesiida.no
+leikanger.no
+leirfjord.no
+leka.no
+leksvik.no
+lenvik.no
+leangaviika.no
+leaŋgaviika.no
+lesja.no
+levanger.no
+lier.no
+lierne.no
+lillehammer.no
+lillesand.no
+lindesnes.no
+lindas.no
+lindås.no
+lom.no
+loppa.no
+lahppi.no
+láhppi.no
+lund.no
+lunner.no
+luroy.no
+lurøy.no
+luster.no
+lyngdal.no
+lyngen.no
+ivgu.no
+lardal.no
+lerdal.no
+lærdal.no
+lodingen.no
+lødingen.no
+lorenskog.no
+lørenskog.no
+loten.no
+løten.no
+malvik.no
+masoy.no
+måsøy.no
+muosat.no
+muosát.no
+mandal.no
+marker.no
+marnardal.no
+masfjorden.no
+meland.no
+meldal.no
+melhus.no
+meloy.no
+meløy.no
+meraker.no
+meråker.no
+moareke.no
+moåreke.no
+midsund.no
+midtre-gauldal.no
+modalen.no
+modum.no
+molde.no
+moskenes.no
+moss.no
+mosvik.no
+malselv.no
+målselv.no
+malatvuopmi.no
+málatvuopmi.no
+namdalseid.no
+aejrie.no
+namsos.no
+namsskogan.no
+naamesjevuemie.no
+nååmesjevuemie.no
+laakesvuemie.no
+nannestad.no
+narvik.no
+narviika.no
+naustdal.no
+nedre-eiker.no
+nes.akershus.no
+nes.buskerud.no
+nesna.no
+nesodden.no
+nesseby.no
+unjarga.no
+unjárga.no
+nesset.no
+nissedal.no
+nittedal.no
+nord-aurdal.no
+nord-fron.no
+nord-odal.no
+norddal.no
+nordkapp.no
+davvenjarga.no
+davvenjárga.no
+nordre-land.no
+nordreisa.no
+raisa.no
+ráisa.no
+nore-og-uvdal.no
+notodden.no
+naroy.no
+nærøy.no
+notteroy.no
+nøtterøy.no
+odda.no
+oksnes.no
+øksnes.no
+oppdal.no
+oppegard.no
+oppegård.no
+orkdal.no
+orland.no
+ørland.no
+orskog.no
+ørskog.no
+orsta.no
+ørsta.no
+os.hedmark.no
+os.hordaland.no
+osen.no
+osteroy.no
+osterøy.no
+ostre-toten.no
+østre-toten.no
+overhalla.no
+ovre-eiker.no
+øvre-eiker.no
+oyer.no
+øyer.no
+oygarden.no
+øygarden.no
+oystre-slidre.no
+øystre-slidre.no
+porsanger.no
+porsangu.no
+porsáŋgu.no
+porsgrunn.no
+radoy.no
+radøy.no
+rakkestad.no
+rana.no
+ruovat.no
+randaberg.no
+rauma.no
+rendalen.no
+rennebu.no
+rennesoy.no
+rennesøy.no
+rindal.no
+ringebu.no
+ringerike.no
+ringsaker.no
+rissa.no
+risor.no
+risør.no
+roan.no
+rollag.no
+rygge.no
+ralingen.no
+rælingen.no
+rodoy.no
+rødøy.no
+romskog.no
+rømskog.no
+roros.no
+røros.no
+rost.no
+røst.no
+royken.no
+røyken.no
+royrvik.no
+røyrvik.no
+rade.no
+råde.no
+salangen.no
+siellak.no
+saltdal.no
+salat.no
+sálát.no
+sálat.no
+samnanger.no
+sande.more-og-romsdal.no
+sande.møre-og-romsdal.no
+sande.vestfold.no
+sandefjord.no
+sandnes.no
+sandoy.no
+sandøy.no
+sarpsborg.no
+sauda.no
+sauherad.no
+sel.no
+selbu.no
+selje.no
+seljord.no
+sigdal.no
+siljan.no
+sirdal.no
+skaun.no
+skedsmo.no
+ski.no
+skien.no
+skiptvet.no
+skjervoy.no
+skjervøy.no
+skierva.no
+skiervá.no
+skjak.no
+skjåk.no
+skodje.no
+skanland.no
+skånland.no
+skanit.no
+skánit.no
+smola.no
+smøla.no
+snillfjord.no
+snasa.no
+snåsa.no
+snoasa.no
+snaase.no
+snåase.no
+sogndal.no
+sokndal.no
+sola.no
+solund.no
+songdalen.no
+sortland.no
+spydeberg.no
+stange.no
+stavanger.no
+steigen.no
+steinkjer.no
+stjordal.no
+stjørdal.no
+stokke.no
+stor-elvdal.no
+stord.no
+stordal.no
+storfjord.no
+omasvuotna.no
+strand.no
+stranda.no
+stryn.no
+sula.no
+suldal.no
+sund.no
+sunndal.no
+surnadal.no
+sveio.no
+svelvik.no
+sykkylven.no
+sogne.no
+søgne.no
+somna.no
+sømna.no
+sondre-land.no
+søndre-land.no
+sor-aurdal.no
+sør-aurdal.no
+sor-fron.no
+sør-fron.no
+sor-odal.no
+sør-odal.no
+sor-varanger.no
+sør-varanger.no
+matta-varjjat.no
+mátta-várjjat.no
+sorfold.no
+sørfold.no
+sorreisa.no
+sørreisa.no
+sorum.no
+sørum.no
+tana.no
+deatnu.no
+time.no
+tingvoll.no
+tinn.no
+tjeldsund.no
+dielddanuorri.no
+tjome.no
+tjøme.no
+tokke.no
+tolga.no
+torsken.no
+tranoy.no
+tranøy.no
+tromso.no
+tromsø.no
+tromsa.no
+romsa.no
+trondheim.no
+troandin.no
+trysil.no
+trana.no
+træna.no
+trogstad.no
+trøgstad.no
+tvedestrand.no
+tydal.no
+tynset.no
+tysfjord.no
+divtasvuodna.no
+divttasvuotna.no
+tysnes.no
+tysvar.no
+tysvær.no
+tonsberg.no
+tønsberg.no
+ullensaker.no
+ullensvang.no
+ulvik.no
+utsira.no
+vadso.no
+vadsø.no
+cahcesuolo.no
+čáhcesuolo.no
+vaksdal.no
+valle.no
+vang.no
+vanylven.no
+vardo.no
+vardø.no
+varggat.no
+várggát.no
+vefsn.no
+vaapste.no
+vega.no
+vegarshei.no
+vegårshei.no
+vennesla.no
+verdal.no
+verran.no
+vestby.no
+vestnes.no
+vestre-slidre.no
+vestre-toten.no
+vestvagoy.no
+vestvågøy.no
+vevelstad.no
+vik.no
+vikna.no
+vindafjord.no
+volda.no
+voss.no
+varoy.no
+værøy.no
+vagan.no
+vågan.no
+voagat.no
+vagsoy.no
+vågsøy.no
+vaga.no
+vågå.no
+valer.ostfold.no
+våler.østfold.no
+valer.hedmark.no
+våler.hedmark.no
+
+// np : http://www.mos.com.np/register.html
+*.np
+
+// nr : http://cenpac.net.nr/dns/index.html
+// Submitted by registry <technician@cenpac.net.nr>
+nr
+biz.nr
+info.nr
+gov.nr
+edu.nr
+org.nr
+net.nr
+com.nr
+
+// nu : https://en.wikipedia.org/wiki/.nu
+nu
+
+// nz : https://en.wikipedia.org/wiki/.nz
+// Submitted by registry <jay@nzrs.net.nz>
+nz
+ac.nz
+co.nz
+cri.nz
+geek.nz
+gen.nz
+govt.nz
+health.nz
+iwi.nz
+kiwi.nz
+maori.nz
+mil.nz
+māori.nz
+net.nz
+org.nz
+parliament.nz
+school.nz
+
+// om : https://en.wikipedia.org/wiki/.om
+om
+co.om
+com.om
+edu.om
+gov.om
+med.om
+museum.om
+net.om
+org.om
+pro.om
+
+// org : https://en.wikipedia.org/wiki/.org
+org
+
+// pa : http://www.nic.pa/
+// Some additional second level "domains" resolve directly as hostnames, such as
+// pannet.pa, so we add a rule for "pa".
+pa
+ac.pa
+gob.pa
+com.pa
+org.pa
+sld.pa
+edu.pa
+net.pa
+ing.pa
+abo.pa
+med.pa
+nom.pa
+
+// pe : https://www.nic.pe/InformeFinalComision.pdf
+pe
+edu.pe
+gob.pe
+nom.pe
+mil.pe
+org.pe
+com.pe
+net.pe
+
+// pf : http://www.gobin.info/domainname/formulaire-pf.pdf
+pf
+com.pf
+org.pf
+edu.pf
+
+// pg : https://en.wikipedia.org/wiki/.pg
+*.pg
+
+// ph : http://www.domains.ph/FAQ2.asp
+// Submitted by registry <jed@email.com.ph>
+ph
+com.ph
+net.ph
+org.ph
+gov.ph
+edu.ph
+ngo.ph
+mil.ph
+i.ph
+
+// pk : http://pk5.pknic.net.pk/pk5/msgNamepk.PK
+pk
+com.pk
+net.pk
+edu.pk
+org.pk
+fam.pk
+biz.pk
+web.pk
+gov.pk
+gob.pk
+gok.pk
+gon.pk
+gop.pk
+gos.pk
+info.pk
+
+// pl http://www.dns.pl/english/index.html
+// Submitted by registry
+pl
+com.pl
+net.pl
+org.pl
+// pl functional domains (http://www.dns.pl/english/index.html)
+aid.pl
+agro.pl
+atm.pl
+auto.pl
+biz.pl
+edu.pl
+gmina.pl
+gsm.pl
+info.pl
+mail.pl
+miasta.pl
+media.pl
+mil.pl
+nieruchomosci.pl
+nom.pl
+pc.pl
+powiat.pl
+priv.pl
+realestate.pl
+rel.pl
+sex.pl
+shop.pl
+sklep.pl
+sos.pl
+szkola.pl
+targi.pl
+tm.pl
+tourism.pl
+travel.pl
+turystyka.pl
+// Government domains
+gov.pl
+ap.gov.pl
+ic.gov.pl
+is.gov.pl
+us.gov.pl
+kmpsp.gov.pl
+kppsp.gov.pl
+kwpsp.gov.pl
+psp.gov.pl
+wskr.gov.pl
+kwp.gov.pl
+mw.gov.pl
+ug.gov.pl
+um.gov.pl
+umig.gov.pl
+ugim.gov.pl
+upow.gov.pl
+uw.gov.pl
+starostwo.gov.pl
+pa.gov.pl
+po.gov.pl
+psse.gov.pl
+pup.gov.pl
+rzgw.gov.pl
+sa.gov.pl
+so.gov.pl
+sr.gov.pl
+wsa.gov.pl
+sko.gov.pl
+uzs.gov.pl
+wiih.gov.pl
+winb.gov.pl
+pinb.gov.pl
+wios.gov.pl
+witd.gov.pl
+wzmiuw.gov.pl
+piw.gov.pl
+wiw.gov.pl
+griw.gov.pl
+wif.gov.pl
+oum.gov.pl
+sdn.gov.pl
+zp.gov.pl
+uppo.gov.pl
+mup.gov.pl
+wuoz.gov.pl
+konsulat.gov.pl
+oirm.gov.pl
+// pl regional domains (http://www.dns.pl/english/index.html)
+augustow.pl
+babia-gora.pl
+bedzin.pl
+beskidy.pl
+bialowieza.pl
+bialystok.pl
+bielawa.pl
+bieszczady.pl
+boleslawiec.pl
+bydgoszcz.pl
+bytom.pl
+cieszyn.pl
+czeladz.pl
+czest.pl
+dlugoleka.pl
+elblag.pl
+elk.pl
+glogow.pl
+gniezno.pl
+gorlice.pl
+grajewo.pl
+ilawa.pl
+jaworzno.pl
+jelenia-gora.pl
+jgora.pl
+kalisz.pl
+kazimierz-dolny.pl
+karpacz.pl
+kartuzy.pl
+kaszuby.pl
+katowice.pl
+kepno.pl
+ketrzyn.pl
+klodzko.pl
+kobierzyce.pl
+kolobrzeg.pl
+konin.pl
+konskowola.pl
+kutno.pl
+lapy.pl
+lebork.pl
+legnica.pl
+lezajsk.pl
+limanowa.pl
+lomza.pl
+lowicz.pl
+lubin.pl
+lukow.pl
+malbork.pl
+malopolska.pl
+mazowsze.pl
+mazury.pl
+mielec.pl
+mielno.pl
+mragowo.pl
+naklo.pl
+nowaruda.pl
+nysa.pl
+olawa.pl
+olecko.pl
+olkusz.pl
+olsztyn.pl
+opoczno.pl
+opole.pl
+ostroda.pl
+ostroleka.pl
+ostrowiec.pl
+ostrowwlkp.pl
+pila.pl
+pisz.pl
+podhale.pl
+podlasie.pl
+polkowice.pl
+pomorze.pl
+pomorskie.pl
+prochowice.pl
+pruszkow.pl
+przeworsk.pl
+pulawy.pl
+radom.pl
+rawa-maz.pl
+rybnik.pl
+rzeszow.pl
+sanok.pl
+sejny.pl
+slask.pl
+slupsk.pl
+sosnowiec.pl
+stalowa-wola.pl
+skoczow.pl
+starachowice.pl
+stargard.pl
+suwalki.pl
+swidnica.pl
+swiebodzin.pl
+swinoujscie.pl
+szczecin.pl
+szczytno.pl
+tarnobrzeg.pl
+tgory.pl
+turek.pl
+tychy.pl
+ustka.pl
+walbrzych.pl
+warmia.pl
+warszawa.pl
+waw.pl
+wegrow.pl
+wielun.pl
+wlocl.pl
+wloclawek.pl
+wodzislaw.pl
+wolomin.pl
+wroclaw.pl
+zachpomor.pl
+zagan.pl
+zarow.pl
+zgora.pl
+zgorzelec.pl
+
+// pm : http://www.afnic.fr/medias/documents/AFNIC-naming-policy2012.pdf
+pm
+
+// pn : http://www.government.pn/PnRegistry/policies.htm
+pn
+gov.pn
+co.pn
+org.pn
+edu.pn
+net.pn
+
+// post : https://en.wikipedia.org/wiki/.post
+post
+
+// pr : http://www.nic.pr/index.asp?f=1
+pr
+com.pr
+net.pr
+org.pr
+gov.pr
+edu.pr
+isla.pr
+pro.pr
+biz.pr
+info.pr
+name.pr
+// these aren't mentioned on nic.pr, but on https://en.wikipedia.org/wiki/.pr
+est.pr
+prof.pr
+ac.pr
+
+// pro : http://registry.pro/get-pro
+pro
+aaa.pro
+aca.pro
+acct.pro
+avocat.pro
+bar.pro
+cpa.pro
+eng.pro
+jur.pro
+law.pro
+med.pro
+recht.pro
+
+// ps : https://en.wikipedia.org/wiki/.ps
+// http://www.nic.ps/registration/policy.html#reg
+ps
+edu.ps
+gov.ps
+sec.ps
+plo.ps
+com.ps
+org.ps
+net.ps
+
+// pt : http://online.dns.pt/dns/start_dns
+pt
+net.pt
+gov.pt
+org.pt
+edu.pt
+int.pt
+publ.pt
+com.pt
+nome.pt
+
+// pw : https://en.wikipedia.org/wiki/.pw
+pw
+co.pw
+ne.pw
+or.pw
+ed.pw
+go.pw
+belau.pw
+
+// py : http://www.nic.py/pautas.html#seccion_9
+// Submitted by registry
+py
+com.py
+coop.py
+edu.py
+gov.py
+mil.py
+net.py
+org.py
+
+// qa : http://domains.qa/en/
+qa
+com.qa
+edu.qa
+gov.qa
+mil.qa
+name.qa
+net.qa
+org.qa
+sch.qa
+
+// re : http://www.afnic.re/obtenir/chartes/nommage-re/annexe-descriptifs
+re
+asso.re
+com.re
+nom.re
+
+// ro : http://www.rotld.ro/
+ro
+arts.ro
+com.ro
+firm.ro
+info.ro
+nom.ro
+nt.ro
+org.ro
+rec.ro
+store.ro
+tm.ro
+www.ro
+
+// rs : https://www.rnids.rs/en/domains/national-domains
+rs
+ac.rs
+co.rs
+edu.rs
+gov.rs
+in.rs
+org.rs
+
+// ru : http://www.cctld.ru/ru/docs/aktiv_8.php
+// Industry domains
+ru
+ac.ru
+com.ru
+edu.ru
+int.ru
+net.ru
+org.ru
+pp.ru
+// Geographical domains
+adygeya.ru
+altai.ru
+amur.ru
+arkhangelsk.ru
+astrakhan.ru
+bashkiria.ru
+belgorod.ru
+bir.ru
+bryansk.ru
+buryatia.ru
+cbg.ru
+chel.ru
+chelyabinsk.ru
+chita.ru
+chukotka.ru
+chuvashia.ru
+dagestan.ru
+dudinka.ru
+e-burg.ru
+grozny.ru
+irkutsk.ru
+ivanovo.ru
+izhevsk.ru
+jar.ru
+joshkar-ola.ru
+kalmykia.ru
+kaluga.ru
+kamchatka.ru
+karelia.ru
+kazan.ru
+kchr.ru
+kemerovo.ru
+khabarovsk.ru
+khakassia.ru
+khv.ru
+kirov.ru
+koenig.ru
+komi.ru
+kostroma.ru
+krasnoyarsk.ru
+kuban.ru
+kurgan.ru
+kursk.ru
+lipetsk.ru
+magadan.ru
+mari.ru
+mari-el.ru
+marine.ru
+mordovia.ru
+// mosreg.ru  Bug 1090800 - removed at request of Aleksey Konstantinov <konstantinovav@mosreg.ru>
+msk.ru
+murmansk.ru
+nalchik.ru
+nnov.ru
+nov.ru
+novosibirsk.ru
+nsk.ru
+omsk.ru
+orenburg.ru
+oryol.ru
+palana.ru
+penza.ru
+perm.ru
+ptz.ru
+rnd.ru
+ryazan.ru
+sakhalin.ru
+samara.ru
+saratov.ru
+simbirsk.ru
+smolensk.ru
+spb.ru
+stavropol.ru
+stv.ru
+surgut.ru
+tambov.ru
+tatarstan.ru
+tom.ru
+tomsk.ru
+tsaritsyn.ru
+tsk.ru
+tula.ru
+tuva.ru
+tver.ru
+tyumen.ru
+udm.ru
+udmurtia.ru
+ulan-ude.ru
+vladikavkaz.ru
+vladimir.ru
+vladivostok.ru
+volgograd.ru
+vologda.ru
+voronezh.ru
+vrn.ru
+vyatka.ru
+yakutia.ru
+yamal.ru
+yaroslavl.ru
+yekaterinburg.ru
+yuzhno-sakhalinsk.ru
+// More geographical domains
+amursk.ru
+baikal.ru
+cmw.ru
+fareast.ru
+jamal.ru
+kms.ru
+k-uralsk.ru
+kustanai.ru
+kuzbass.ru
+mytis.ru
+nakhodka.ru
+nkz.ru
+norilsk.ru
+oskol.ru
+pyatigorsk.ru
+rubtsovsk.ru
+snz.ru
+syzran.ru
+vdonsk.ru
+zgrad.ru
+// State domains
+gov.ru
+mil.ru
+// Technical domains
+test.ru
+
+// rw : http://www.nic.rw/cgi-bin/policy.pl
+rw
+gov.rw
+net.rw
+edu.rw
+ac.rw
+com.rw
+co.rw
+int.rw
+mil.rw
+gouv.rw
+
+// sa : http://www.nic.net.sa/
+sa
+com.sa
+net.sa
+org.sa
+gov.sa
+med.sa
+pub.sa
+edu.sa
+sch.sa
+
+// sb : http://www.sbnic.net.sb/
+// Submitted by registry <lee.humphries@telekom.com.sb>
+sb
+com.sb
+edu.sb
+gov.sb
+net.sb
+org.sb
+
+// sc : http://www.nic.sc/
+sc
+com.sc
+gov.sc
+net.sc
+org.sc
+edu.sc
+
+// sd : http://www.isoc.sd/sudanic.isoc.sd/billing_pricing.htm
+// Submitted by registry <admin@isoc.sd>
+sd
+com.sd
+net.sd
+org.sd
+edu.sd
+med.sd
+tv.sd
+gov.sd
+info.sd
+
+// se : https://en.wikipedia.org/wiki/.se
+// Submitted by registry <patrik.wallstrom@iis.se>
+se
+a.se
+ac.se
+b.se
+bd.se
+brand.se
+c.se
+d.se
+e.se
+f.se
+fh.se
+fhsk.se
+fhv.se
+g.se
+h.se
+i.se
+k.se
+komforb.se
+kommunalforbund.se
+komvux.se
+l.se
+lanbib.se
+m.se
+n.se
+naturbruksgymn.se
+o.se
+org.se
+p.se
+parti.se
+pp.se
+press.se
+r.se
+s.se
+t.se
+tm.se
+u.se
+w.se
+x.se
+y.se
+z.se
+
+// sg : http://www.nic.net.sg/page/registration-policies-procedures-and-guidelines
+sg
+com.sg
+net.sg
+org.sg
+gov.sg
+edu.sg
+per.sg
+
+// sh : http://www.nic.sh/registrar.html
+sh
+com.sh
+net.sh
+gov.sh
+org.sh
+mil.sh
+
+// si : https://en.wikipedia.org/wiki/.si
+si
+
+// sj : No registrations at this time.
+// Submitted by registry <jarle@uninett.no>
+sj
+
+// sk : https://en.wikipedia.org/wiki/.sk
+// list of 2nd level domains ?
+sk
+
+// sl : http://www.nic.sl
+// Submitted by registry <adam@neoip.com>
+sl
+com.sl
+net.sl
+edu.sl
+gov.sl
+org.sl
+
+// sm : https://en.wikipedia.org/wiki/.sm
+sm
+
+// sn : https://en.wikipedia.org/wiki/.sn
+sn
+art.sn
+com.sn
+edu.sn
+gouv.sn
+org.sn
+perso.sn
+univ.sn
+
+// so : http://www.soregistry.com/
+so
+com.so
+net.so
+org.so
+
+// sr : https://en.wikipedia.org/wiki/.sr
+sr
+
+// st : http://www.nic.st/html/policyrules/
+st
+co.st
+com.st
+consulado.st
+edu.st
+embaixada.st
+gov.st
+mil.st
+net.st
+org.st
+principe.st
+saotome.st
+store.st
+
+// su : https://en.wikipedia.org/wiki/.su
+su
+adygeya.su
+arkhangelsk.su
+balashov.su
+bashkiria.su
+bryansk.su
+dagestan.su
+grozny.su
+ivanovo.su
+kalmykia.su
+kaluga.su
+karelia.su
+khakassia.su
+krasnodar.su
+kurgan.su
+lenug.su
+mordovia.su
+msk.su
+murmansk.su
+nalchik.su
+nov.su
+obninsk.su
+penza.su
+pokrovsk.su
+sochi.su
+spb.su
+togliatti.su
+troitsk.su
+tula.su
+tuva.su
+vladikavkaz.su
+vladimir.su
+vologda.su
+
+// sv : http://www.svnet.org.sv/niveldos.pdf
+sv
+com.sv
+edu.sv
+gob.sv
+org.sv
+red.sv
+
+// sx : https://en.wikipedia.org/wiki/.sx
+// Submitted by registry <jcvignes@openregistry.com>
+sx
+gov.sx
+
+// sy : https://en.wikipedia.org/wiki/.sy
+// see also: http://www.gobin.info/domainname/sy.doc
+sy
+edu.sy
+gov.sy
+net.sy
+mil.sy
+com.sy
+org.sy
+
+// sz : https://en.wikipedia.org/wiki/.sz
+// http://www.sispa.org.sz/
+sz
+co.sz
+ac.sz
+org.sz
+
+// tc : https://en.wikipedia.org/wiki/.tc
+tc
+
+// td : https://en.wikipedia.org/wiki/.td
+td
+
+// tel: https://en.wikipedia.org/wiki/.tel
+// http://www.telnic.org/
+tel
+
+// tf : https://en.wikipedia.org/wiki/.tf
+tf
+
+// tg : https://en.wikipedia.org/wiki/.tg
+// http://www.nic.tg/
+tg
+
+// th : https://en.wikipedia.org/wiki/.th
+// Submitted by registry <krit@thains.co.th>
+th
+ac.th
+co.th
+go.th
+in.th
+mi.th
+net.th
+or.th
+
+// tj : http://www.nic.tj/policy.html
+tj
+ac.tj
+biz.tj
+co.tj
+com.tj
+edu.tj
+go.tj
+gov.tj
+int.tj
+mil.tj
+name.tj
+net.tj
+nic.tj
+org.tj
+test.tj
+web.tj
+
+// tk : https://en.wikipedia.org/wiki/.tk
+tk
+
+// tl : https://en.wikipedia.org/wiki/.tl
+tl
+gov.tl
+
+// tm : http://www.nic.tm/local.html
+tm
+com.tm
+co.tm
+org.tm
+net.tm
+nom.tm
+gov.tm
+mil.tm
+edu.tm
+
+// tn : https://en.wikipedia.org/wiki/.tn
+// http://whois.ati.tn/
+tn
+com.tn
+ens.tn
+fin.tn
+gov.tn
+ind.tn
+intl.tn
+nat.tn
+net.tn
+org.tn
+info.tn
+perso.tn
+tourism.tn
+edunet.tn
+rnrt.tn
+rns.tn
+rnu.tn
+mincom.tn
+agrinet.tn
+defense.tn
+turen.tn
+
+// to : https://en.wikipedia.org/wiki/.to
+// Submitted by registry <egullich@colo.to>
+to
+com.to
+gov.to
+net.to
+org.to
+edu.to
+mil.to
+
+// subTLDs: https://www.nic.tr/forms/eng/policies.pdf
+//     and: https://www.nic.tr/forms/politikalar.pdf
+// Submitted by <mehmetgurevin@gmail.com>
+tr
+com.tr
+info.tr
+biz.tr
+net.tr
+org.tr
+web.tr
+gen.tr
+tv.tr
+av.tr
+dr.tr
+bbs.tr
+name.tr
+tel.tr
+gov.tr
+bel.tr
+pol.tr
+mil.tr
+k12.tr
+edu.tr
+kep.tr
+
+// Used by Northern Cyprus
+nc.tr
+
+// Used by government agencies of Northern Cyprus
+gov.nc.tr
+
+// travel : https://en.wikipedia.org/wiki/.travel
+travel
+
+// tt : http://www.nic.tt/
+tt
+co.tt
+com.tt
+org.tt
+net.tt
+biz.tt
+info.tt
+pro.tt
+int.tt
+coop.tt
+jobs.tt
+mobi.tt
+travel.tt
+museum.tt
+aero.tt
+name.tt
+gov.tt
+edu.tt
+
+// tv : https://en.wikipedia.org/wiki/.tv
+// Not listing any 2LDs as reserved since none seem to exist in practice,
+// Wikipedia notwithstanding.
+tv
+
+// tw : https://en.wikipedia.org/wiki/.tw
+tw
+edu.tw
+gov.tw
+mil.tw
+com.tw
+net.tw
+org.tw
+idv.tw
+game.tw
+ebiz.tw
+club.tw
+網路.tw
+組織.tw
+商業.tw
+
+// tz : http://www.tznic.or.tz/index.php/domains
+// Submitted by registry <manager@tznic.or.tz>
+tz
+ac.tz
+co.tz
+go.tz
+hotel.tz
+info.tz
+me.tz
+mil.tz
+mobi.tz
+ne.tz
+or.tz
+sc.tz
+tv.tz
+
+// ua : https://hostmaster.ua/policy/?ua
+// Submitted by registry <dk@cctld.ua>
+ua
+// ua 2LD
+com.ua
+edu.ua
+gov.ua
+in.ua
+net.ua
+org.ua
+// ua geographic names
+// https://hostmaster.ua/2ld/
+cherkassy.ua
+cherkasy.ua
+chernigov.ua
+chernihiv.ua
+chernivtsi.ua
+chernovtsy.ua
+ck.ua
+cn.ua
+cr.ua
+crimea.ua
+cv.ua
+dn.ua
+dnepropetrovsk.ua
+dnipropetrovsk.ua
+dominic.ua
+donetsk.ua
+dp.ua
+if.ua
+ivano-frankivsk.ua
+kh.ua
+kharkiv.ua
+kharkov.ua
+kherson.ua
+khmelnitskiy.ua
+khmelnytskyi.ua
+kiev.ua
+kirovograd.ua
+km.ua
+kr.ua
+krym.ua
+ks.ua
+kv.ua
+kyiv.ua
+lg.ua
+lt.ua
+lugansk.ua
+lutsk.ua
+lv.ua
+lviv.ua
+mk.ua
+mykolaiv.ua
+nikolaev.ua
+od.ua
+odesa.ua
+odessa.ua
+pl.ua
+poltava.ua
+rivne.ua
+rovno.ua
+rv.ua
+sb.ua
+sebastopol.ua
+sevastopol.ua
+sm.ua
+sumy.ua
+te.ua
+ternopil.ua
+uz.ua
+uzhgorod.ua
+vinnica.ua
+vinnytsia.ua
+vn.ua
+volyn.ua
+yalta.ua
+zaporizhzhe.ua
+zaporizhzhia.ua
+zhitomir.ua
+zhytomyr.ua
+zp.ua
+zt.ua
+
+// ug : https://www.registry.co.ug/
+ug
+co.ug
+or.ug
+ac.ug
+sc.ug
+go.ug
+ne.ug
+com.ug
+org.ug
+
+// uk : https://en.wikipedia.org/wiki/.uk
+// Submitted by registry <Michael.Daly@nominet.org.uk>
+uk
+ac.uk
+co.uk
+gov.uk
+ltd.uk
+me.uk
+net.uk
+nhs.uk
+org.uk
+plc.uk
+police.uk
+*.sch.uk
+
+// us : https://en.wikipedia.org/wiki/.us
+us
+dni.us
+fed.us
+isa.us
+kids.us
+nsn.us
+// us geographic names
+ak.us
+al.us
+ar.us
+as.us
+az.us
+ca.us
+co.us
+ct.us
+dc.us
+de.us
+fl.us
+ga.us
+gu.us
+hi.us
+ia.us
+id.us
+il.us
+in.us
+ks.us
+ky.us
+la.us
+ma.us
+md.us
+me.us
+mi.us
+mn.us
+mo.us
+ms.us
+mt.us
+nc.us
+nd.us
+ne.us
+nh.us
+nj.us
+nm.us
+nv.us
+ny.us
+oh.us
+ok.us
+or.us
+pa.us
+pr.us
+ri.us
+sc.us
+sd.us
+tn.us
+tx.us
+ut.us
+vi.us
+vt.us
+va.us
+wa.us
+wi.us
+wv.us
+wy.us
+// The registrar notes several more specific domains available in each state,
+// such as state.*.us, dst.*.us, etc., but resolution of these is somewhat
+// haphazard; in some states these domains resolve as addresses, while in others
+// only subdomains are available, or even nothing at all. We include the
+// most common ones where it's clear that different sites are different
+// entities.
+k12.ak.us
+k12.al.us
+k12.ar.us
+k12.as.us
+k12.az.us
+k12.ca.us
+k12.co.us
+k12.ct.us
+k12.dc.us
+k12.de.us
+k12.fl.us
+k12.ga.us
+k12.gu.us
+// k12.hi.us  Bug 614565 - Hawaii has a state-wide DOE login
+k12.ia.us
+k12.id.us
+k12.il.us
+k12.in.us
+k12.ks.us
+k12.ky.us
+k12.la.us
+k12.ma.us
+k12.md.us
+k12.me.us
+k12.mi.us
+k12.mn.us
+k12.mo.us
+k12.ms.us
+k12.mt.us
+k12.nc.us
+// k12.nd.us  Bug 1028347 - Removed at request of Travis Rosso <trossow@nd.gov>
+k12.ne.us
+k12.nh.us
+k12.nj.us
+k12.nm.us
+k12.nv.us
+k12.ny.us
+k12.oh.us
+k12.ok.us
+k12.or.us
+k12.pa.us
+k12.pr.us
+k12.ri.us
+k12.sc.us
+// k12.sd.us  Bug 934131 - Removed at request of James Booze <James.Booze@k12.sd.us>
+k12.tn.us
+k12.tx.us
+k12.ut.us
+k12.vi.us
+k12.vt.us
+k12.va.us
+k12.wa.us
+k12.wi.us
+// k12.wv.us  Bug 947705 - Removed at request of Verne Britton <verne@wvnet.edu>
+k12.wy.us
+cc.ak.us
+cc.al.us
+cc.ar.us
+cc.as.us
+cc.az.us
+cc.ca.us
+cc.co.us
+cc.ct.us
+cc.dc.us
+cc.de.us
+cc.fl.us
+cc.ga.us
+cc.gu.us
+cc.hi.us
+cc.ia.us
+cc.id.us
+cc.il.us
+cc.in.us
+cc.ks.us
+cc.ky.us
+cc.la.us
+cc.ma.us
+cc.md.us
+cc.me.us
+cc.mi.us
+cc.mn.us
+cc.mo.us
+cc.ms.us
+cc.mt.us
+cc.nc.us
+cc.nd.us
+cc.ne.us
+cc.nh.us
+cc.nj.us
+cc.nm.us
+cc.nv.us
+cc.ny.us
+cc.oh.us
+cc.ok.us
+cc.or.us
+cc.pa.us
+cc.pr.us
+cc.ri.us
+cc.sc.us
+cc.sd.us
+cc.tn.us
+cc.tx.us
+cc.ut.us
+cc.vi.us
+cc.vt.us
+cc.va.us
+cc.wa.us
+cc.wi.us
+cc.wv.us
+cc.wy.us
+lib.ak.us
+lib.al.us
+lib.ar.us
+lib.as.us
+lib.az.us
+lib.ca.us
+lib.co.us
+lib.ct.us
+lib.dc.us
+lib.de.us
+lib.fl.us
+lib.ga.us
+lib.gu.us
+lib.hi.us
+lib.ia.us
+lib.id.us
+lib.il.us
+lib.in.us
+lib.ks.us
+lib.ky.us
+lib.la.us
+lib.ma.us
+lib.md.us
+lib.me.us
+lib.mi.us
+lib.mn.us
+lib.mo.us
+lib.ms.us
+lib.mt.us
+lib.nc.us
+lib.nd.us
+lib.ne.us
+lib.nh.us
+lib.nj.us
+lib.nm.us
+lib.nv.us
+lib.ny.us
+lib.oh.us
+lib.ok.us
+lib.or.us
+lib.pa.us
+lib.pr.us
+lib.ri.us
+lib.sc.us
+lib.sd.us
+lib.tn.us
+lib.tx.us
+lib.ut.us
+lib.vi.us
+lib.vt.us
+lib.va.us
+lib.wa.us
+lib.wi.us
+// lib.wv.us  Bug 941670 - Removed at request of Larry W Arnold <arnold@wvlc.lib.wv.us>
+lib.wy.us
+// k12.ma.us contains school districts in Massachusetts. The 4LDs are
+//  managed independently except for private (PVT), charter (CHTR) and
+//  parochial (PAROCH) schools.  Those are delegated directly to the
+//  5LD operators.   <k12-ma-hostmaster _ at _ rsuc.gweep.net>
+pvt.k12.ma.us
+chtr.k12.ma.us
+paroch.k12.ma.us
+
+// uy : http://www.nic.org.uy/
+uy
+com.uy
+edu.uy
+gub.uy
+mil.uy
+net.uy
+org.uy
+
+// uz : http://www.reg.uz/
+uz
+co.uz
+com.uz
+net.uz
+org.uz
+
+// va : https://en.wikipedia.org/wiki/.va
+va
+
+// vc : https://en.wikipedia.org/wiki/.vc
+// Submitted by registry <kshah@ca.afilias.info>
+vc
+com.vc
+net.vc
+org.vc
+gov.vc
+mil.vc
+edu.vc
+
+// ve : https://registro.nic.ve/
+// Submitted by registry
+ve
+arts.ve
+co.ve
+com.ve
+e12.ve
+edu.ve
+firm.ve
+gob.ve
+gov.ve
+info.ve
+int.ve
+mil.ve
+net.ve
+org.ve
+rec.ve
+store.ve
+tec.ve
+web.ve
+
+// vg : https://en.wikipedia.org/wiki/.vg
+vg
+
+// vi : http://www.nic.vi/newdomainform.htm
+// http://www.nic.vi/Domain_Rules/body_domain_rules.html indicates some other
+// TLDs are "reserved", such as edu.vi and gov.vi, but doesn't actually say they
+// are available for registration (which they do not seem to be).
+vi
+co.vi
+com.vi
+k12.vi
+net.vi
+org.vi
+
+// vn : https://www.dot.vn/vnnic/vnnic/domainregistration.jsp
+vn
+com.vn
+net.vn
+org.vn
+edu.vn
+gov.vn
+int.vn
+ac.vn
+biz.vn
+info.vn
+name.vn
+pro.vn
+health.vn
+
+// vu : https://en.wikipedia.org/wiki/.vu
+// http://www.vunic.vu/
+vu
+com.vu
+edu.vu
+net.vu
+org.vu
+
+// wf : http://www.afnic.fr/medias/documents/AFNIC-naming-policy2012.pdf
+wf
+
+// ws : https://en.wikipedia.org/wiki/.ws
+// http://samoanic.ws/index.dhtml
+ws
+com.ws
+net.ws
+org.ws
+gov.ws
+edu.ws
+
+// yt : http://www.afnic.fr/medias/documents/AFNIC-naming-policy2012.pdf
+yt
+
+// IDN ccTLDs
+// When submitting patches, please maintain a sort by ISO 3166 ccTLD, then
+// U-label, and follow this format:
+// // A-Label ("<Latin renderings>", <language name>[, variant info]) : <ISO 3166 ccTLD>
+// // [sponsoring org]
+// U-Label
+
+// xn--mgbaam7a8h ("Emerat", Arabic) : AE
+// http://nic.ae/english/arabicdomain/rules.jsp
+امارات
+
+// xn--y9a3aq ("hye", Armenian) : AM
+// ISOC AM (operated by .am Registry)
+հայ
+
+// xn--54b7fta0cc ("Bangla", Bangla) : BD
+বাংলা
+
+// xn--90ais ("bel", Belarusian/Russian Cyrillic) : BY
+// Operated by .by registry
+бел
+
+// xn--fiqs8s ("Zhongguo/China", Chinese, Simplified) : CN
+// CNNIC
+// http://cnnic.cn/html/Dir/2005/10/11/3218.htm
+中国
+
+// xn--fiqz9s ("Zhongguo/China", Chinese, Traditional) : CN
+// CNNIC
+// http://cnnic.cn/html/Dir/2005/10/11/3218.htm
+中國
+
+// xn--lgbbat1ad8j ("Algeria/Al Jazair", Arabic) : DZ
+الجزائر
+
+// xn--wgbh1c ("Egypt/Masr", Arabic) : EG
+// http://www.dotmasr.eg/
+مصر
+
+// xn--e1a4c ("eu", Cyrillic) : EU
+ею
+
+// xn--node ("ge", Georgian Mkhedruli) : GE
+გე
+
+// xn--qxam ("el", Greek) : GR
+// Hellenic Ministry of Infrastructure, Transport, and Networks
+ελ
+
+// xn--j6w193g ("Hong Kong", Chinese) : HK
+// https://www2.hkirc.hk/register/rules.jsp
+香港
+
+// xn--h2brj9c ("Bharat", Devanagari) : IN
+// India
+भारत
+
+// xn--mgbbh1a71e ("Bharat", Arabic) : IN
+// India
+بھارت
+
+// xn--fpcrj9c3d ("Bharat", Telugu) : IN
+// India
+భారత్
+
+// xn--gecrj9c ("Bharat", Gujarati) : IN
+// India
+ભારત
+
+// xn--s9brj9c ("Bharat", Gurmukhi) : IN
+// India
+ਭਾਰਤ
+
+// xn--45brj9c ("Bharat", Bengali) : IN
+// India
+ভারত
+
+// xn--xkc2dl3a5ee0h ("India", Tamil) : IN
+// India
+இந்தியா
+
+// xn--mgba3a4f16a ("Iran", Persian) : IR
+ایران
+
+// xn--mgba3a4fra ("Iran", Arabic) : IR
+ايران
+
+// xn--mgbtx2b ("Iraq", Arabic) : IQ
+// Communications and Media Commission
+عراق
+
+// xn--mgbayh7gpa ("al-Ordon", Arabic) : JO
+// National Information Technology Center (NITC)
+// Royal Scientific Society, Al-Jubeiha
+الاردن
+
+// xn--3e0b707e ("Republic of Korea", Hangul) : KR
+한국
+
+// xn--80ao21a ("Kaz", Kazakh) : KZ
+қаз
+
+// xn--fzc2c9e2c ("Lanka", Sinhalese-Sinhala) : LK
+// http://nic.lk
+ලංකා
+
+// xn--xkc2al3hye2a ("Ilangai", Tamil) : LK
+// http://nic.lk
+இலங்கை
+
+// xn--mgbc0a9azcg ("Morocco/al-Maghrib", Arabic) : MA
+المغرب
+
+// xn--d1alf ("mkd", Macedonian) : MK
+// MARnet
+мкд
+
+// xn--l1acc ("mon", Mongolian) : MN
+мон
+
+// xn--mix891f ("Macao", Chinese, Traditional) : MO
+// MONIC / HNET Asia (Registry Operator for .mo)
+澳門
+
+// xn--mix082f ("Macao", Chinese, Simplified) : MO
+澳门
+
+// xn--mgbx4cd0ab ("Malaysia", Malay) : MY
+مليسيا
+
+// xn--mgb9awbf ("Oman", Arabic) : OM
+عمان
+
+// xn--mgbai9azgqp6j ("Pakistan", Urdu/Arabic) : PK
+پاکستان
+
+// xn--mgbai9a5eva00b ("Pakistan", Urdu/Arabic, variant) : PK
+پاكستان
+
+// xn--ygbi2ammx ("Falasteen", Arabic) : PS
+// The Palestinian National Internet Naming Authority (PNINA)
+// http://www.pnina.ps
+فلسطين
+
+// xn--90a3ac ("srb", Cyrillic) : RS
+// https://www.rnids.rs/en/domains/national-domains
+срб
+пр.срб
+орг.срб
+обр.срб
+од.срб
+упр.срб
+ак.срб
+
+// xn--p1ai ("rf", Russian-Cyrillic) : RU
+// http://www.cctld.ru/en/docs/rulesrf.php
+рф
+
+// xn--wgbl6a ("Qatar", Arabic) : QA
+// http://www.ict.gov.qa/
+قطر
+
+// xn--mgberp4a5d4ar ("AlSaudiah", Arabic) : SA
+// http://www.nic.net.sa/
+السعودية
+
+// xn--mgberp4a5d4a87g ("AlSaudiah", Arabic, variant)  : SA
+السعودیة
+
+// xn--mgbqly7c0a67fbc ("AlSaudiah", Arabic, variant) : SA
+السعودیۃ
+
+// xn--mgbqly7cvafr ("AlSaudiah", Arabic, variant) : SA
+السعوديه
+
+// xn--mgbpl2fh ("sudan", Arabic) : SD
+// Operated by .sd registry
+سودان
+
+// xn--yfro4i67o Singapore ("Singapore", Chinese) : SG
+新加坡
+
+// xn--clchc0ea0b2g2a9gcd ("Singapore", Tamil) : SG
+சிங்கப்பூர்
+
+// xn--ogbpf8fl ("Syria", Arabic) : SY
+سورية
+
+// xn--mgbtf8fl ("Syria", Arabic, variant) : SY
+سوريا
+
+// xn--o3cw4h ("Thai", Thai) : TH
+// http://www.thnic.co.th
+ไทย
+
+// xn--pgbs0dh ("Tunisia", Arabic) : TN
+// http://nic.tn
+تونس
+
+// xn--kpry57d ("Taiwan", Chinese, Traditional) : TW
+// http://www.twnic.net/english/dn/dn_07a.htm
+台灣
+
+// xn--kprw13d ("Taiwan", Chinese, Simplified) : TW
+// http://www.twnic.net/english/dn/dn_07a.htm
+台湾
+
+// xn--nnx388a ("Taiwan", Chinese, variant) : TW
+臺灣
+
+// xn--j1amh ("ukr", Cyrillic) : UA
+укр
+
+// xn--mgb2ddes ("AlYemen", Arabic) : YE
+اليمن
+
+// xxx : http://icmregistry.com
+xxx
+
+// ye : http://www.y.net.ye/services/domain_name.htm
+*.ye
+
+// za : http://www.zadna.org.za/content/page/domain-information
+ac.za
+agric.za
+alt.za
+co.za
+edu.za
+gov.za
+grondar.za
+law.za
+mil.za
+net.za
+ngo.za
+nis.za
+nom.za
+org.za
+school.za
+tm.za
+web.za
+
+// zm : https://zicta.zm/
+// Submitted by registry <info@zicta.zm>
+zm
+ac.zm
+biz.zm
+co.zm
+com.zm
+edu.zm
+gov.zm
+info.zm
+mil.zm
+net.zm
+org.zm
+sch.zm
+
+// zw : https://en.wikipedia.org/wiki/.zw
+*.zw
+
+
+// List of new gTLDs imported from https://newgtlds.icann.org/newgtlds.csv on 2016-04-04T20:12:16Z
+
+// aaa : 2015-02-26 American Automobile Association, Inc.
+aaa
+
+// aarp : 2015-05-21 AARP
+aarp
+
+// abarth : 2015-07-30 Fiat Chrysler Automobiles N.V.
+abarth
+
+// abb : 2014-10-24 ABB Ltd
+abb
+
+// abbott : 2014-07-24 Abbott Laboratories, Inc.
+abbott
+
+// abbvie : 2015-07-30 AbbVie Inc.
+abbvie
+
+// abc : 2015-07-30 Disney Enterprises, Inc.
+abc
+
+// able : 2015-06-25 Able Inc.
+able
+
+// abogado : 2014-04-24 Top Level Domain Holdings Limited
+abogado
+
+// abudhabi : 2015-07-30 Abu Dhabi Systems and Information Centre
+abudhabi
+
+// academy : 2013-11-07 Half Oaks, LLC
+academy
+
+// accenture : 2014-08-15 Accenture plc
+accenture
+
+// accountant : 2014-11-20 dot Accountant Limited
+accountant
+
+// accountants : 2014-03-20 Knob Town, LLC
+accountants
+
+// aco : 2015-01-08 ACO Severin Ahlmann GmbH & Co. KG
+aco
+
+// active : 2014-05-01 The Active Network, Inc
+active
+
+// actor : 2013-12-12 United TLD Holdco Ltd.
+actor
+
+// adac : 2015-07-16 Allgemeiner Deutscher Automobil-Club e.V. (ADAC)
+adac
+
+// ads : 2014-12-04 Charleston Road Registry Inc.
+ads
+
+// adult : 2014-10-16 ICM Registry AD LLC
+adult
+
+// aeg : 2015-03-19 Aktiebolaget Electrolux
+aeg
+
+// aetna : 2015-05-21 Aetna Life Insurance Company
+aetna
+
+// afamilycompany : 2015-07-23 Johnson Shareholdings, Inc.
+afamilycompany
+
+// afl : 2014-10-02 Australian Football League
+afl
+
+// africa : 2014-03-24 ZA Central Registry NPC trading as Registry.Africa
+africa
+
+// africamagic : 2015-03-05 Electronic Media Network (Pty) Ltd
+africamagic
+
+// agakhan : 2015-04-23 Fondation Aga Khan (Aga Khan Foundation)
+agakhan
+
+// agency : 2013-11-14 Steel Falls, LLC
+agency
+
+// aig : 2014-12-18 American International Group, Inc.
+aig
+
+// aigo : 2015-08-06 aigo Digital Technology Co,Ltd.
+aigo
+
+// airbus : 2015-07-30 Airbus S.A.S.
+airbus
+
+// airforce : 2014-03-06 United TLD Holdco Ltd.
+airforce
+
+// airtel : 2014-10-24 Bharti Airtel Limited
+airtel
+
+// akdn : 2015-04-23 Fondation Aga Khan (Aga Khan Foundation)
+akdn
+
+// alfaromeo : 2015-07-31 Fiat Chrysler Automobiles N.V.
+alfaromeo
+
+// alibaba : 2015-01-15 Alibaba Group Holding Limited
+alibaba
+
+// alipay : 2015-01-15 Alibaba Group Holding Limited
+alipay
+
+// allfinanz : 2014-07-03 Allfinanz Deutsche Vermögensberatung Aktiengesellschaft
+allfinanz
+
+// allstate : 2015-07-31 Allstate Fire and Casualty Insurance Company
+allstate
+
+// ally : 2015-06-18 Ally Financial Inc.
+ally
+
+// alsace : 2014-07-02 REGION D ALSACE
+alsace
+
+// alstom : 2015-07-30 ALSTOM
+alstom
+
+// americanexpress : 2015-07-31 American Express Travel Related Services Company, Inc.
+americanexpress
+
+// americanfamily : 2015-07-23 AmFam, Inc.
+americanfamily
+
+// amex : 2015-07-31 American Express Travel Related Services Company, Inc.
+amex
+
+// amfam : 2015-07-23 AmFam, Inc.
+amfam
+
+// amica : 2015-05-28 Amica Mutual Insurance Company
+amica
+
+// amsterdam : 2014-07-24 Gemeente Amsterdam
+amsterdam
+
+// analytics : 2014-12-18 Campus IP LLC
+analytics
+
+// android : 2014-08-07 Charleston Road Registry Inc.
+android
+
+// anquan : 2015-01-08 QIHOO 360 TECHNOLOGY CO. LTD.
+anquan
+
+// anz : 2015-07-31 Australia and New Zealand Banking Group Limited
+anz
+
+// aol : 2015-09-17 AOL Inc.
+aol
+
+// apartments : 2014-12-11 June Maple, LLC
+apartments
+
+// app : 2015-05-14 Charleston Road Registry Inc.
+app
+
+// apple : 2015-05-14 Apple Inc.
+apple
+
+// aquarelle : 2014-07-24 Aquarelle.com
+aquarelle
+
+// arab : 2015-11-12 League of Arab States
+arab
+
+// aramco : 2014-11-20 Aramco Services Company
+aramco
+
+// archi : 2014-02-06 STARTING DOT LIMITED
+archi
+
+// army : 2014-03-06 United TLD Holdco Ltd.
+army
+
+// art : 2016-03-24 UK Creative Ideas Limited
+art
+
+// arte : 2014-12-11 Association Relative à la Télévision Européenne G.E.I.E.
+arte
+
+// asda : 2015-07-31 Wal-Mart Stores, Inc.
+asda
+
+// associates : 2014-03-06 Baxter Hill, LLC
+associates
+
+// athleta : 2015-07-30 The Gap, Inc.
+athleta
+
+// attorney : 2014-03-20
+attorney
+
+// auction : 2014-03-20
+auction
+
+// audi : 2015-05-21 AUDI Aktiengesellschaft
+audi
+
+// audible : 2015-06-25 Amazon EU S.à r.l.
+audible
+
+// audio : 2014-03-20 Uniregistry, Corp.
+audio
+
+// auspost : 2015-08-13 Australian Postal Corporation
+auspost
+
+// author : 2014-12-18 Amazon EU S.à r.l.
+author
+
+// auto : 2014-11-13
+auto
+
+// autos : 2014-01-09 DERAutos, LLC
+autos
+
+// avianca : 2015-01-08 Aerovias del Continente Americano S.A. Avianca
+avianca
+
+// aws : 2015-06-25 Amazon EU S.à r.l.
+aws
+
+// axa : 2013-12-19 AXA SA
+axa
+
+// azure : 2014-12-18 Microsoft Corporation
+azure
+
+// baby : 2015-04-09 Johnson & Johnson Services, Inc.
+baby
+
+// baidu : 2015-01-08 Baidu, Inc.
+baidu
+
+// banamex : 2015-07-30 Citigroup Inc.
+banamex
+
+// bananarepublic : 2015-07-31 The Gap, Inc.
+bananarepublic
+
+// band : 2014-06-12
+band
+
+// bank : 2014-09-25 fTLD Registry Services LLC
+bank
+
+// bar : 2013-12-12 Punto 2012 Sociedad Anonima Promotora de Inversion de Capital Variable
+bar
+
+// barcelona : 2014-07-24 Municipi de Barcelona
+barcelona
+
+// barclaycard : 2014-11-20 Barclays Bank PLC
+barclaycard
+
+// barclays : 2014-11-20 Barclays Bank PLC
+barclays
+
+// barefoot : 2015-06-11 Gallo Vineyards, Inc.
+barefoot
+
+// bargains : 2013-11-14 Half Hallow, LLC
+bargains
+
+// baseball : 2015-10-29 MLB Advanced Media DH, LLC
+baseball
+
+// basketball : 2015-08-20 Fédération Internationale de Basketball (FIBA)
+basketball
+
+// bauhaus : 2014-04-17 Werkhaus GmbH
+bauhaus
+
+// bayern : 2014-01-23 Bayern Connect GmbH
+bayern
+
+// bbc : 2014-12-18 British Broadcasting Corporation
+bbc
+
+// bbt : 2015-07-23 BB&T Corporation
+bbt
+
+// bbva : 2014-10-02 BANCO BILBAO VIZCAYA ARGENTARIA, S.A.
+bbva
+
+// bcg : 2015-04-02 The Boston Consulting Group, Inc.
+bcg
+
+// bcn : 2014-07-24 Municipi de Barcelona
+bcn
+
+// beats : 2015-05-14 Beats Electronics, LLC
+beats
+
+// beauty : 2015-12-03 L'Oréal
+beauty
+
+// beer : 2014-01-09 Top Level Domain Holdings Limited
+beer
+
+// bentley : 2014-12-18 Bentley Motors Limited
+bentley
+
+// berlin : 2013-10-31 dotBERLIN GmbH & Co. KG
+berlin
+
+// best : 2013-12-19 BestTLD Pty Ltd
+best
+
+// bestbuy : 2015-07-31 BBY Solutions, Inc.
+bestbuy
+
+// bet : 2015-05-07 Afilias plc
+bet
+
+// bharti : 2014-01-09 Bharti Enterprises (Holding) Private Limited
+bharti
+
+// bible : 2014-06-19 American Bible Society
+bible
+
+// bid : 2013-12-19 dot Bid Limited
+bid
+
+// bike : 2013-08-27 Grand Hollow, LLC
+bike
+
+// bing : 2014-12-18 Microsoft Corporation
+bing
+
+// bingo : 2014-12-04 Sand Cedar, LLC
+bingo
+
+// bio : 2014-03-06 STARTING DOT LIMITED
+bio
+
+// black : 2014-01-16 Afilias Limited
+black
+
+// blackfriday : 2014-01-16 Uniregistry, Corp.
+blackfriday
+
+// blanco : 2015-07-16 BLANCO GmbH + Co KG
+blanco
+
+// blockbuster : 2015-07-30 Dish DBS Corporation
+blockbuster
+
+// blog : 2015-05-14 PRIMER NIVEL S.A.
+blog
+
+// bloomberg : 2014-07-17 Bloomberg IP Holdings LLC
+bloomberg
+
+// blue : 2013-11-07 Afilias Limited
+blue
+
+// bms : 2014-10-30 Bristol-Myers Squibb Company
+bms
+
+// bmw : 2014-01-09 Bayerische Motoren Werke Aktiengesellschaft
+bmw
+
+// bnl : 2014-07-24 Banca Nazionale del Lavoro
+bnl
+
+// bnpparibas : 2014-05-29 BNP Paribas
+bnpparibas
+
+// boats : 2014-12-04 DERBoats, LLC
+boats
+
+// boehringer : 2015-07-09 Boehringer Ingelheim International GmbH
+boehringer
+
+// bofa : 2015-07-31 NMS Services, Inc.
+bofa
+
+// bom : 2014-10-16 Núcleo de Informação e Coordenação do Ponto BR - NIC.br
+bom
+
+// bond : 2014-06-05 Bond University Limited
+bond
+
+// boo : 2014-01-30 Charleston Road Registry Inc.
+boo
+
+// book : 2015-08-27 Amazon EU S.à r.l.
+book
+
+// booking : 2015-07-16 Booking.com B.V.
+booking
+
+// boots : 2015-01-08 THE BOOTS COMPANY PLC
+boots
+
+// bosch : 2015-06-18 Robert Bosch GMBH
+bosch
+
+// bostik : 2015-05-28 Bostik SA
+bostik
+
+// boston : 2015-12-10 Boston Globe Media Partners, LLC
+boston
+
+// bot : 2014-12-18 Amazon EU S.à r.l.
+bot
+
+// boutique : 2013-11-14 Over Galley, LLC
+boutique
+
+// box : 2015-11-12 NS1 Limited
+box
+
+// bradesco : 2014-12-18 Banco Bradesco S.A.
+bradesco
+
+// bridgestone : 2014-12-18 Bridgestone Corporation
+bridgestone
+
+// broadway : 2014-12-22 Celebrate Broadway, Inc.
+broadway
+
+// broker : 2014-12-11 IG Group Holdings PLC
+broker
+
+// brother : 2015-01-29 Brother Industries, Ltd.
+brother
+
+// brussels : 2014-02-06 DNS.be vzw
+brussels
+
+// budapest : 2013-11-21 Top Level Domain Holdings Limited
+budapest
+
+// bugatti : 2015-07-23 Bugatti International SA
+bugatti
+
+// build : 2013-11-07 Plan Bee LLC
+build
+
+// builders : 2013-11-07 Atomic Madison, LLC
+builders
+
+// business : 2013-11-07 Spring Cross, LLC
+business
+
+// buy : 2014-12-18 Amazon EU S.à r.l.
+buy
+
+// buzz : 2013-10-02 DOTSTRATEGY CO.
+buzz
+
+// bzh : 2014-02-27 Association www.bzh
+bzh
+
+// cab : 2013-10-24 Half Sunset, LLC
+cab
+
+// cafe : 2015-02-11 Pioneer Canyon, LLC
+cafe
+
+// cal : 2014-07-24 Charleston Road Registry Inc.
+cal
+
+// call : 2014-12-18 Amazon EU S.à r.l.
+call
+
+// calvinklein : 2015-07-30 PVH gTLD Holdings LLC
+calvinklein
+
+// camera : 2013-08-27 Atomic Maple, LLC
+camera
+
+// camp : 2013-11-07 Delta Dynamite, LLC
+camp
+
+// cancerresearch : 2014-05-15 Australian Cancer Research Foundation
+cancerresearch
+
+// canon : 2014-09-12 Canon Inc.
+canon
+
+// capetown : 2014-03-24 ZA Central Registry NPC trading as ZA Central Registry
+capetown
+
+// capital : 2014-03-06 Delta Mill, LLC
+capital
+
+// capitalone : 2015-08-06 Capital One Financial Corporation
+capitalone
+
+// car : 2015-01-22
+car
+
+// caravan : 2013-12-12 Caravan International, Inc.
+caravan
+
+// cards : 2013-12-05 Foggy Hollow, LLC
+cards
+
+// care : 2014-03-06 Goose Cross
+care
+
+// career : 2013-10-09 dotCareer LLC
+career
+
+// careers : 2013-10-02 Wild Corner, LLC
+careers
+
+// cars : 2014-11-13
+cars
+
+// cartier : 2014-06-23 Richemont DNS Inc.
+cartier
+
+// casa : 2013-11-21 Top Level Domain Holdings Limited
+casa
+
+// case : 2015-09-03 CNH Industrial N.V.
+case
+
+// caseih : 2015-09-03 CNH Industrial N.V.
+caseih
+
+// cash : 2014-03-06 Delta Lake, LLC
+cash
+
+// casino : 2014-12-18 Binky Sky, LLC
+casino
+
+// catering : 2013-12-05 New Falls. LLC
+catering
+
+// catholic : 2015-10-21 Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication)
+catholic
+
+// cba : 2014-06-26 COMMONWEALTH BANK OF AUSTRALIA
+cba
+
+// cbn : 2014-08-22 The Christian Broadcasting Network, Inc.
+cbn
+
+// cbre : 2015-07-02 CBRE, Inc.
+cbre
+
+// cbs : 2015-08-06 CBS Domains Inc.
+cbs
+
+// ceb : 2015-04-09 The Corporate Executive Board Company
+ceb
+
+// center : 2013-11-07 Tin Mill, LLC
+center
+
+// ceo : 2013-11-07 CEOTLD Pty Ltd
+ceo
+
+// cern : 2014-06-05 European Organization for Nuclear Research ("CERN")
+cern
+
+// cfa : 2014-08-28 CFA Institute
+cfa
+
+// cfd : 2014-12-11 IG Group Holdings PLC
+cfd
+
+// chanel : 2015-04-09 Chanel International B.V.
+chanel
+
+// channel : 2014-05-08 Charleston Road Registry Inc.
+channel
+
+// chase : 2015-04-30 JPMorgan Chase & Co.
+chase
+
+// chat : 2014-12-04 Sand Fields, LLC
+chat
+
+// cheap : 2013-11-14 Sand Cover, LLC
+cheap
+
+// chintai : 2015-06-11 CHINTAI Corporation
+chintai
+
+// chloe : 2014-10-16 Richemont DNS Inc.
+chloe
+
+// christmas : 2013-11-21 Uniregistry, Corp.
+christmas
+
+// chrome : 2014-07-24 Charleston Road Registry Inc.
+chrome
+
+// chrysler : 2015-07-30 FCA US LLC.
+chrysler
+
+// church : 2014-02-06 Holly Fields, LLC
+church
+
+// cipriani : 2015-02-19 Hotel Cipriani Srl
+cipriani
+
+// circle : 2014-12-18 Amazon EU S.à r.l.
+circle
+
+// cisco : 2014-12-22 Cisco Technology, Inc.
+cisco
+
+// citadel : 2015-07-23 Citadel Domain LLC
+citadel
+
+// citi : 2015-07-30 Citigroup Inc.
+citi
+
+// citic : 2014-01-09 CITIC Group Corporation
+citic
+
+// city : 2014-05-29 Snow Sky, LLC
+city
+
+// cityeats : 2014-12-11 Lifestyle Domain Holdings, Inc.
+cityeats
+
+// claims : 2014-03-20 Black Corner, LLC
+claims
+
+// cleaning : 2013-12-05 Fox Shadow, LLC
+cleaning
+
+// click : 2014-06-05 Uniregistry, Corp.
+click
+
+// clinic : 2014-03-20 Goose Park, LLC
+clinic
+
+// clinique : 2015-10-01 The Estée Lauder Companies Inc.
+clinique
+
+// clothing : 2013-08-27 Steel Lake, LLC
+clothing
+
+// cloud : 2015-04-16 ARUBA S.p.A.
+cloud
+
+// club : 2013-11-08 .CLUB DOMAINS, LLC
+club
+
+// clubmed : 2015-06-25 Club Méditerranée S.A.
+clubmed
+
+// coach : 2014-10-09 Koko Island, LLC
+coach
+
+// codes : 2013-10-31 Puff Willow, LLC
+codes
+
+// coffee : 2013-10-17 Trixy Cover, LLC
+coffee
+
+// college : 2014-01-16 XYZ.COM LLC
+college
+
+// cologne : 2014-02-05 NetCologne Gesellschaft für Telekommunikation mbH
+cologne
+
+// comcast : 2015-07-23 Comcast IP Holdings I, LLC
+comcast
+
+// commbank : 2014-06-26 COMMONWEALTH BANK OF AUSTRALIA
+commbank
+
+// community : 2013-12-05 Fox Orchard, LLC
+community
+
+// company : 2013-11-07 Silver Avenue, LLC
+company
+
+// compare : 2015-10-08 iSelect Ltd
+compare
+
+// computer : 2013-10-24 Pine Mill, LLC
+computer
+
+// comsec : 2015-01-08 VeriSign, Inc.
+comsec
+
+// condos : 2013-12-05 Pine House, LLC
+condos
+
+// construction : 2013-09-16 Fox Dynamite, LLC
+construction
+
+// consulting : 2013-12-05
+consulting
+
+// contact : 2015-01-08 Top Level Spectrum, Inc.
+contact
+
+// contractors : 2013-09-10 Magic Woods, LLC
+contractors
+
+// cooking : 2013-11-21 Top Level Domain Holdings Limited
+cooking
+
+// cookingchannel : 2015-07-02 Lifestyle Domain Holdings, Inc.
+cookingchannel
+
+// cool : 2013-11-14 Koko Lake, LLC
+cool
+
+// corsica : 2014-09-25 Collectivité Territoriale de Corse
+corsica
+
+// country : 2013-12-19 Top Level Domain Holdings Limited
+country
+
+// coupon : 2015-02-26 Amazon EU S.à r.l.
+coupon
+
+// coupons : 2015-03-26 Black Island, LLC
+coupons
+
+// courses : 2014-12-04 OPEN UNIVERSITIES AUSTRALIA PTY LTD
+courses
+
+// credit : 2014-03-20 Snow Shadow, LLC
+credit
+
+// creditcard : 2014-03-20 Binky Frostbite, LLC
+creditcard
+
+// creditunion : 2015-01-22 CUNA Performance Resources, LLC
+creditunion
+
+// cricket : 2014-10-09 dot Cricket Limited
+cricket
+
+// crown : 2014-10-24 Crown Equipment Corporation
+crown
+
+// crs : 2014-04-03 Federated Co-operatives Limited
+crs
+
+// cruise : 2015-12-10 Viking River Cruises (Bermuda) Ltd.
+cruise
+
+// cruises : 2013-12-05 Spring Way, LLC
+cruises
+
+// csc : 2014-09-25 Alliance-One Services, Inc.
+csc
+
+// cuisinella : 2014-04-03 SALM S.A.S.
+cuisinella
+
+// cymru : 2014-05-08 Nominet UK
+cymru
+
+// cyou : 2015-01-22 Beijing Gamease Age Digital Technology Co., Ltd.
+cyou
+
+// dabur : 2014-02-06 Dabur India Limited
+dabur
+
+// dad : 2014-01-23 Charleston Road Registry Inc.
+dad
+
+// dance : 2013-10-24 United TLD Holdco Ltd.
+dance
+
+// date : 2014-11-20 dot Date Limited
+date
+
+// dating : 2013-12-05 Pine Fest, LLC
+dating
+
+// datsun : 2014-03-27 NISSAN MOTOR CO., LTD.
+datsun
+
+// day : 2014-01-30 Charleston Road Registry Inc.
+day
+
+// dclk : 2014-11-20 Charleston Road Registry Inc.
+dclk
+
+// dds : 2015-05-07 Top Level Domain Holdings Limited
+dds
+
+// deal : 2015-06-25 Amazon EU S.à r.l.
+deal
+
+// dealer : 2014-12-22 Dealer Dot Com, Inc.
+dealer
+
+// deals : 2014-05-22 Sand Sunset, LLC
+deals
+
+// degree : 2014-03-06
+degree
+
+// delivery : 2014-09-11 Steel Station, LLC
+delivery
+
+// dell : 2014-10-24 Dell Inc.
+dell
+
+// deloitte : 2015-07-31 Deloitte Touche Tohmatsu
+deloitte
+
+// delta : 2015-02-19 Delta Air Lines, Inc.
+delta
+
+// democrat : 2013-10-24 United TLD Holdco Ltd.
+democrat
+
+// dental : 2014-03-20 Tin Birch, LLC
+dental
+
+// dentist : 2014-03-20
+dentist
+
+// desi : 2013-11-14 Desi Networks LLC
+desi
+
+// design : 2014-11-07 Top Level Design, LLC
+design
+
+// dev : 2014-10-16 Charleston Road Registry Inc.
+dev
+
+// dhl : 2015-07-23 Deutsche Post AG
+dhl
+
+// diamonds : 2013-09-22 John Edge, LLC
+diamonds
+
+// diet : 2014-06-26 Uniregistry, Corp.
+diet
+
+// digital : 2014-03-06 Dash Park, LLC
+digital
+
+// direct : 2014-04-10 Half Trail, LLC
+direct
+
+// directory : 2013-09-20 Extra Madison, LLC
+directory
+
+// discount : 2014-03-06 Holly Hill, LLC
+discount
+
+// discover : 2015-07-23 Discover Financial Services
+discover
+
+// dish : 2015-07-30 Dish DBS Corporation
+dish
+
+// diy : 2015-11-05 Lifestyle Domain Holdings, Inc.
+diy
+
+// dnp : 2013-12-13 Dai Nippon Printing Co., Ltd.
+dnp
+
+// docs : 2014-10-16 Charleston Road Registry Inc.
+docs
+
+// dodge : 2015-07-30 FCA US LLC.
+dodge
+
+// dog : 2014-12-04 Koko Mill, LLC
+dog
+
+// doha : 2014-09-18 Communications Regulatory Authority (CRA)
+doha
+
+// domains : 2013-10-17 Sugar Cross, LLC
+domains
+
+// dot : 2015-05-21 Dish DBS Corporation
+dot
+
+// download : 2014-11-20 dot Support Limited
+download
+
+// drive : 2015-03-05 Charleston Road Registry Inc.
+drive
+
+// dstv : 2015-03-12 MultiChoice (Proprietary) Limited
+dstv
+
+// dtv : 2015-06-04 Dish DBS Corporation
+dtv
+
+// dubai : 2015-01-01 Dubai Smart Government Department
+dubai
+
+// duck : 2015-07-23 Johnson Shareholdings, Inc.
+duck
+
+// dunlop : 2015-07-02 The Goodyear Tire & Rubber Company
+dunlop
+
+// duns : 2015-08-06 The Dun & Bradstreet Corporation
+duns
+
+// dupont : 2015-06-25 E.I. du Pont de Nemours and Company
+dupont
+
+// durban : 2014-03-24 ZA Central Registry NPC trading as ZA Central Registry
+durban
+
+// dvag : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG
+dvag
+
+// dwg : 2015-07-23 Autodesk, Inc.
+dwg
+
+// earth : 2014-12-04 Interlink Co., Ltd.
+earth
+
+// eat : 2014-01-23 Charleston Road Registry Inc.
+eat
+
+// edeka : 2014-12-18 EDEKA Verband kaufmännischer Genossenschaften e.V.
+edeka
+
+// education : 2013-11-07 Brice Way, LLC
+education
+
+// email : 2013-10-31 Spring Madison, LLC
+email
+
+// emerck : 2014-04-03 Merck KGaA
+emerck
+
+// emerson : 2015-07-23 Emerson Electric Co.
+emerson
+
+// energy : 2014-09-11 Binky Birch, LLC
+energy
+
+// engineer : 2014-03-06 United TLD Holdco Ltd.
+engineer
+
+// engineering : 2014-03-06 Romeo Canyon
+engineering
+
+// enterprises : 2013-09-20 Snow Oaks, LLC
+enterprises
+
+// epost : 2015-07-23 Deutsche Post AG
+epost
+
+// epson : 2014-12-04 Seiko Epson Corporation
+epson
+
+// equipment : 2013-08-27 Corn Station, LLC
+equipment
+
+// ericsson : 2015-07-09 Telefonaktiebolaget L M Ericsson
+ericsson
+
+// erni : 2014-04-03 ERNI Group Holding AG
+erni
+
+// esq : 2014-05-08 Charleston Road Registry Inc.
+esq
+
+// estate : 2013-08-27 Trixy Park, LLC
+estate
+
+// esurance : 2015-07-23 Esurance Insurance Company
+esurance
+
+// etisalat : 2015-09-03 Emirates Telecommunications Corporation (trading as Etisalat)
+etisalat
+
+// eurovision : 2014-04-24 European Broadcasting Union (EBU)
+eurovision
+
+// eus : 2013-12-12 Puntueus Fundazioa
+eus
+
+// events : 2013-12-05 Pioneer Maple, LLC
+events
+
+// everbank : 2014-05-15 EverBank
+everbank
+
+// exchange : 2014-03-06 Spring Falls, LLC
+exchange
+
+// expert : 2013-11-21 Magic Pass, LLC
+expert
+
+// exposed : 2013-12-05 Victor Beach, LLC
+exposed
+
+// express : 2015-02-11 Sea Sunset, LLC
+express
+
+// extraspace : 2015-05-14 Extra Space Storage LLC
+extraspace
+
+// fage : 2014-12-18 Fage International S.A.
+fage
+
+// fail : 2014-03-06 Atomic Pipe, LLC
+fail
+
+// fairwinds : 2014-11-13 FairWinds Partners, LLC
+fairwinds
+
+// faith : 2014-11-20 dot Faith Limited
+faith
+
+// family : 2015-04-02
+family
+
+// fan : 2014-03-06
+fan
+
+// fans : 2014-11-07 Asiamix Digital Limited
+fans
+
+// farm : 2013-11-07 Just Maple, LLC
+farm
+
+// farmers : 2015-07-09 Farmers Insurance Exchange
+farmers
+
+// fashion : 2014-07-03 Top Level Domain Holdings Limited
+fashion
+
+// fast : 2014-12-18 Amazon EU S.à r.l.
+fast
+
+// fedex : 2015-08-06 Federal Express Corporation
+fedex
+
+// feedback : 2013-12-19 Top Level Spectrum, Inc.
+feedback
+
+// ferrari : 2015-07-31 Fiat Chrysler Automobiles N.V.
+ferrari
+
+// ferrero : 2014-12-18 Ferrero Trading Lux S.A.
+ferrero
+
+// fiat : 2015-07-31 Fiat Chrysler Automobiles N.V.
+fiat
+
+// fidelity : 2015-07-30 Fidelity Brokerage Services LLC
+fidelity
+
+// fido : 2015-08-06 Rogers Communications Partnership
+fido
+
+// film : 2015-01-08 Motion Picture Domain Registry Pty Ltd
+film
+
+// final : 2014-10-16 Núcleo de Informação e Coordenação do Ponto BR - NIC.br
+final
+
+// finance : 2014-03-20 Cotton Cypress, LLC
+finance
+
+// financial : 2014-03-06 Just Cover, LLC
+financial
+
+// fire : 2015-06-25 Amazon EU S.à r.l.
+fire
+
+// firestone : 2014-12-18 Bridgestone Corporation
+firestone
+
+// firmdale : 2014-03-27 Firmdale Holdings Limited
+firmdale
+
+// fish : 2013-12-12 Fox Woods, LLC
+fish
+
+// fishing : 2013-11-21 Top Level Domain Holdings Limited
+fishing
+
+// fit : 2014-11-07 Top Level Domain Holdings Limited
+fit
+
+// fitness : 2014-03-06 Brice Orchard, LLC
+fitness
+
+// flickr : 2015-04-02 Yahoo! Domain Services Inc.
+flickr
+
+// flights : 2013-12-05 Fox Station, LLC
+flights
+
+// flir : 2015-07-23 FLIR Systems, Inc.
+flir
+
+// florist : 2013-11-07 Half Cypress, LLC
+florist
+
+// flowers : 2014-10-09 Uniregistry, Corp.
+flowers
+
+// flsmidth : 2014-07-24 FLSmidth A/S
+flsmidth
+
+// fly : 2014-05-08 Charleston Road Registry Inc.
+fly
+
+// foo : 2014-01-23 Charleston Road Registry Inc.
+foo
+
+// foodnetwork : 2015-07-02 Lifestyle Domain Holdings, Inc.
+foodnetwork
+
+// football : 2014-12-18 Foggy Farms, LLC
+football
+
+// ford : 2014-11-13 Ford Motor Company
+ford
+
+// forex : 2014-12-11 IG Group Holdings PLC
+forex
+
+// forsale : 2014-05-22
+forsale
+
+// forum : 2015-04-02 Fegistry, LLC
+forum
+
+// foundation : 2013-12-05 John Dale, LLC
+foundation
+
+// fox : 2015-09-11 FOX Registry, LLC
+fox
+
+// free : 2015-12-10 Amazon EU S.à r.l.
+free
+
+// fresenius : 2015-07-30 Fresenius Immobilien-Verwaltungs-GmbH
+fresenius
+
+// frl : 2014-05-15 FRLregistry B.V.
+frl
+
+// frogans : 2013-12-19 OP3FT
+frogans
+
+// frontdoor : 2015-07-02 Lifestyle Domain Holdings, Inc.
+frontdoor
+
+// frontier : 2015-02-05 Frontier Communications Corporation
+frontier
+
+// ftr : 2015-07-16 Frontier Communications Corporation
+ftr
+
+// fujitsu : 2015-07-30 Fujitsu Limited
+fujitsu
+
+// fujixerox : 2015-07-23 Xerox DNHC LLC
+fujixerox
+
+// fun : 2016-01-14 Oriental Trading Company, Inc.
+fun
+
+// fund : 2014-03-20 John Castle, LLC
+fund
+
+// furniture : 2014-03-20 Lone Fields, LLC
+furniture
+
+// futbol : 2013-09-20
+futbol
+
+// fyi : 2015-04-02 Silver Tigers, LLC
+fyi
+
+// gal : 2013-11-07 Asociación puntoGAL
+gal
+
+// gallery : 2013-09-13 Sugar House, LLC
+gallery
+
+// gallo : 2015-06-11 Gallo Vineyards, Inc.
+gallo
+
+// gallup : 2015-02-19 Gallup, Inc.
+gallup
+
+// game : 2015-05-28 Uniregistry, Corp.
+game
+
+// games : 2015-05-28 Foggy Beach, LLC
+games
+
+// gap : 2015-07-31 The Gap, Inc.
+gap
+
+// garden : 2014-06-26 Top Level Domain Holdings Limited
+garden
+
+// gbiz : 2014-07-17 Charleston Road Registry Inc.
+gbiz
+
+// gdn : 2014-07-31 Joint Stock Company "Navigation-information systems"
+gdn
+
+// gea : 2014-12-04 GEA Group Aktiengesellschaft
+gea
+
+// gent : 2014-01-23 COMBELL GROUP NV/SA
+gent
+
+// genting : 2015-03-12 Resorts World Inc Pte. Ltd.
+genting
+
+// george : 2015-07-31 Wal-Mart Stores, Inc.
+george
+
+// ggee : 2014-01-09 GMO Internet, Inc.
+ggee
+
+// gift : 2013-10-17 Uniregistry, Corp.
+gift
+
+// gifts : 2014-07-03 Goose Sky, LLC
+gifts
+
+// gives : 2014-03-06 United TLD Holdco Ltd.
+gives
+
+// giving : 2014-11-13 Giving Limited
+giving
+
+// glade : 2015-07-23 Johnson Shareholdings, Inc.
+glade
+
+// glass : 2013-11-07 Black Cover, LLC
+glass
+
+// gle : 2014-07-24 Charleston Road Registry Inc.
+gle
+
+// global : 2014-04-17 Dot GLOBAL AS
+global
+
+// globo : 2013-12-19 Globo Comunicação e Participações S.A
+globo
+
+// gmail : 2014-05-01 Charleston Road Registry Inc.
+gmail
+
+// gmbh : 2016-01-29 Extra Dynamite, LLC
+gmbh
+
+// gmo : 2014-01-09 GMO Internet, Inc.
+gmo
+
+// gmx : 2014-04-24 1&1 Mail & Media GmbH
+gmx
+
+// godaddy : 2015-07-23 Go Daddy East, LLC
+godaddy
+
+// gold : 2015-01-22 June Edge, LLC
+gold
+
+// goldpoint : 2014-11-20 YODOBASHI CAMERA CO.,LTD.
+goldpoint
+
+// golf : 2014-12-18 Lone falls, LLC
+golf
+
+// goo : 2014-12-18 NTT Resonant Inc.
+goo
+
+// goodhands : 2015-07-31 Allstate Fire and Casualty Insurance Company
+goodhands
+
+// goodyear : 2015-07-02 The Goodyear Tire & Rubber Company
+goodyear
+
+// goog : 2014-11-20 Charleston Road Registry Inc.
+goog
+
+// google : 2014-07-24 Charleston Road Registry Inc.
+google
+
+// gop : 2014-01-16 Republican State Leadership Committee, Inc.
+gop
+
+// got : 2014-12-18 Amazon EU S.à r.l.
+got
+
+// gotv : 2015-03-12 MultiChoice (Proprietary) Limited
+gotv
+
+// grainger : 2015-05-07 Grainger Registry Services, LLC
+grainger
+
+// graphics : 2013-09-13 Over Madison, LLC
+graphics
+
+// gratis : 2014-03-20 Pioneer Tigers, LLC
+gratis
+
+// green : 2014-05-08 Afilias Limited
+green
+
+// gripe : 2014-03-06 Corn Sunset, LLC
+gripe
+
+// group : 2014-08-15 Romeo Town, LLC
+group
+
+// guardian : 2015-07-30 The Guardian Life Insurance Company of America
+guardian
+
+// gucci : 2014-11-13 Guccio Gucci S.p.a.
+gucci
+
+// guge : 2014-08-28 Charleston Road Registry Inc.
+guge
+
+// guide : 2013-09-13 Snow Moon, LLC
+guide
+
+// guitars : 2013-11-14 Uniregistry, Corp.
+guitars
+
+// guru : 2013-08-27 Pioneer Cypress, LLC
+guru
+
+// hair : 2015-12-03 L'Oréal
+hair
+
+// hamburg : 2014-02-20 Hamburg Top-Level-Domain GmbH
+hamburg
+
+// hangout : 2014-11-13 Charleston Road Registry Inc.
+hangout
+
+// haus : 2013-12-05
+haus
+
+// hbo : 2015-07-30 HBO Registry Services, Inc.
+hbo
+
+// hdfc : 2015-07-30 HOUSING DEVELOPMENT FINANCE CORPORATION LIMITED
+hdfc
+
+// hdfcbank : 2015-02-12 HDFC Bank Limited
+hdfcbank
+
+// health : 2015-02-11 DotHealth, LLC
+health
+
+// healthcare : 2014-06-12 Silver Glen, LLC
+healthcare
+
+// help : 2014-06-26 Uniregistry, Corp.
+help
+
+// helsinki : 2015-02-05 City of Helsinki
+helsinki
+
+// here : 2014-02-06 Charleston Road Registry Inc.
+here
+
+// hermes : 2014-07-10 HERMES INTERNATIONAL
+hermes
+
+// hgtv : 2015-07-02 Lifestyle Domain Holdings, Inc.
+hgtv
+
+// hiphop : 2014-03-06 Uniregistry, Corp.
+hiphop
+
+// hisamitsu : 2015-07-16 Hisamitsu Pharmaceutical Co.,Inc.
+hisamitsu
+
+// hitachi : 2014-10-31 Hitachi, Ltd.
+hitachi
+
+// hiv : 2014-03-13
+hiv
+
+// hkt : 2015-05-14 PCCW-HKT DataCom Services Limited
+hkt
+
+// hockey : 2015-03-19 Half Willow, LLC
+hockey
+
+// holdings : 2013-08-27 John Madison, LLC
+holdings
+
+// holiday : 2013-11-07 Goose Woods, LLC
+holiday
+
+// homedepot : 2015-04-02 Homer TLC, Inc.
+homedepot
+
+// homegoods : 2015-07-16 The TJX Companies, Inc.
+homegoods
+
+// homes : 2014-01-09 DERHomes, LLC
+homes
+
+// homesense : 2015-07-16 The TJX Companies, Inc.
+homesense
+
+// honda : 2014-12-18 Honda Motor Co., Ltd.
+honda
+
+// honeywell : 2015-07-23 Honeywell GTLD LLC
+honeywell
+
+// horse : 2013-11-21 Top Level Domain Holdings Limited
+horse
+
+// host : 2014-04-17 DotHost Inc.
+host
+
+// hosting : 2014-05-29 Uniregistry, Corp.
+hosting
+
+// hot : 2015-08-27 Amazon EU S.à r.l.
+hot
+
+// hoteles : 2015-03-05 Travel Reservations SRL
+hoteles
+
+// hotmail : 2014-12-18 Microsoft Corporation
+hotmail
+
+// house : 2013-11-07 Sugar Park, LLC
+house
+
+// how : 2014-01-23 Charleston Road Registry Inc.
+how
+
+// hsbc : 2014-10-24 HSBC Holdings PLC
+hsbc
+
+// htc : 2015-04-02 HTC corporation
+htc
+
+// hughes : 2015-07-30 Hughes Satellite Systems Corporation
+hughes
+
+// hyatt : 2015-07-30 Hyatt GTLD, L.L.C.
+hyatt
+
+// hyundai : 2015-07-09 Hyundai Motor Company
+hyundai
+
+// ibm : 2014-07-31 International Business Machines Corporation
+ibm
+
+// icbc : 2015-02-19 Industrial and Commercial Bank of China Limited
+icbc
+
+// ice : 2014-10-30 IntercontinentalExchange, Inc.
+ice
+
+// icu : 2015-01-08 One.com A/S
+icu
+
+// ieee : 2015-07-23 IEEE Global LLC
+ieee
+
+// ifm : 2014-01-30 ifm electronic gmbh
+ifm
+
+// iinet : 2014-07-03 Connect West Pty. Ltd.
+iinet
+
+// ikano : 2015-07-09 Ikano S.A.
+ikano
+
+// imamat : 2015-08-06 Fondation Aga Khan (Aga Khan Foundation)
+imamat
+
+// imdb : 2015-06-25 Amazon EU S.à r.l.
+imdb
+
+// immo : 2014-07-10 Auburn Bloom, LLC
+immo
+
+// immobilien : 2013-11-07 United TLD Holdco Ltd.
+immobilien
+
+// industries : 2013-12-05 Outer House, LLC
+industries
+
+// infiniti : 2014-03-27 NISSAN MOTOR CO., LTD.
+infiniti
+
+// ing : 2014-01-23 Charleston Road Registry Inc.
+ing
+
+// ink : 2013-12-05 Top Level Design, LLC
+ink
+
+// institute : 2013-11-07 Outer Maple, LLC
+institute
+
+// insurance : 2015-02-19 fTLD Registry Services LLC
+insurance
+
+// insure : 2014-03-20 Pioneer Willow, LLC
+insure
+
+// intel : 2015-08-06 Intel Corporation
+intel
+
+// international : 2013-11-07 Wild Way, LLC
+international
+
+// intuit : 2015-07-30 Intuit Administrative Services, Inc.
+intuit
+
+// investments : 2014-03-20 Holly Glen, LLC
+investments
+
+// ipiranga : 2014-08-28 Ipiranga Produtos de Petroleo S.A.
+ipiranga
+
+// irish : 2014-08-07 Dot-Irish LLC
+irish
+
+// iselect : 2015-02-11 iSelect Ltd
+iselect
+
+// ismaili : 2015-08-06 Fondation Aga Khan (Aga Khan Foundation)
+ismaili
+
+// ist : 2014-08-28 Istanbul Metropolitan Municipality
+ist
+
+// istanbul : 2014-08-28 Istanbul Metropolitan Municipality
+istanbul
+
+// itau : 2014-10-02 Itau Unibanco Holding S.A.
+itau
+
+// itv : 2015-07-09 ITV Services Limited
+itv
+
+// iveco : 2015-09-03 CNH Industrial N.V.
+iveco
+
+// iwc : 2014-06-23 Richemont DNS Inc.
+iwc
+
+// jaguar : 2014-11-13 Jaguar Land Rover Ltd
+jaguar
+
+// java : 2014-06-19 Oracle Corporation
+java
+
+// jcb : 2014-11-20 JCB Co., Ltd.
+jcb
+
+// jcp : 2015-04-23 JCP Media, Inc.
+jcp
+
+// jeep : 2015-07-30 FCA US LLC.
+jeep
+
+// jetzt : 2014-01-09 New TLD Company AB
+jetzt
+
+// jewelry : 2015-03-05 Wild Bloom, LLC
+jewelry
+
+// jio : 2015-04-02 Affinity Names, Inc.
+jio
+
+// jlc : 2014-12-04 Richemont DNS Inc.
+jlc
+
+// jll : 2015-04-02 Jones Lang LaSalle Incorporated
+jll
+
+// jmp : 2015-03-26 Matrix IP LLC
+jmp
+
+// jnj : 2015-06-18 Johnson & Johnson Services, Inc.
+jnj
+
+// joburg : 2014-03-24 ZA Central Registry NPC trading as ZA Central Registry
+joburg
+
+// jot : 2014-12-18 Amazon EU S.à r.l.
+jot
+
+// joy : 2014-12-18 Amazon EU S.à r.l.
+joy
+
+// jpmorgan : 2015-04-30 JPMorgan Chase & Co.
+jpmorgan
+
+// jprs : 2014-09-18 Japan Registry Services Co., Ltd.
+jprs
+
+// juegos : 2014-03-20 Uniregistry, Corp.
+juegos
+
+// juniper : 2015-07-30 JUNIPER NETWORKS, INC.
+juniper
+
+// kaufen : 2013-11-07 United TLD Holdco Ltd.
+kaufen
+
+// kddi : 2014-09-12 KDDI CORPORATION
+kddi
+
+// kerryhotels : 2015-04-30 Kerry Trading Co. Limited
+kerryhotels
+
+// kerrylogistics : 2015-04-09 Kerry Trading Co. Limited
+kerrylogistics
+
+// kerryproperties : 2015-04-09 Kerry Trading Co. Limited
+kerryproperties
+
+// kfh : 2014-12-04 Kuwait Finance House
+kfh
+
+// kia : 2015-07-09 KIA MOTORS CORPORATION
+kia
+
+// kim : 2013-09-23 Afilias Limited
+kim
+
+// kinder : 2014-11-07 Ferrero Trading Lux S.A.
+kinder
+
+// kindle : 2015-06-25 Amazon EU S.à r.l.
+kindle
+
+// kitchen : 2013-09-20 Just Goodbye, LLC
+kitchen
+
+// kiwi : 2013-09-20 DOT KIWI LIMITED
+kiwi
+
+// koeln : 2014-01-09 NetCologne Gesellschaft für Telekommunikation mbH
+koeln
+
+// komatsu : 2015-01-08 Komatsu Ltd.
+komatsu
+
+// kosher : 2015-08-20 Kosher Marketing Assets LLC
+kosher
+
+// kpmg : 2015-04-23 KPMG International Cooperative (KPMG International Genossenschaft)
+kpmg
+
+// kpn : 2015-01-08 Koninklijke KPN N.V.
+kpn
+
+// krd : 2013-12-05 KRG Department of Information Technology
+krd
+
+// kred : 2013-12-19 KredTLD Pty Ltd
+kred
+
+// kuokgroup : 2015-04-09 Kerry Trading Co. Limited
+kuokgroup
+
+// kyknet : 2015-03-05 Electronic Media Network (Pty) Ltd
+kyknet
+
+// kyoto : 2014-11-07 Academic Institution: Kyoto Jyoho Gakuen
+kyoto
+
+// lacaixa : 2014-01-09 CAIXA D'ESTALVIS I PENSIONS DE BARCELONA
+lacaixa
+
+// ladbrokes : 2015-08-06 LADBROKES INTERNATIONAL PLC
+ladbrokes
+
+// lamborghini : 2015-06-04 Automobili Lamborghini S.p.A.
+lamborghini
+
+// lamer : 2015-10-01 The Estée Lauder Companies Inc.
+lamer
+
+// lancaster : 2015-02-12 LANCASTER
+lancaster
+
+// lancia : 2015-07-31 Fiat Chrysler Automobiles N.V.
+lancia
+
+// lancome : 2015-07-23 L'Oréal
+lancome
+
+// land : 2013-09-10 Pine Moon, LLC
+land
+
+// landrover : 2014-11-13 Jaguar Land Rover Ltd
+landrover
+
+// lanxess : 2015-07-30 LANXESS Corporation
+lanxess
+
+// lasalle : 2015-04-02 Jones Lang LaSalle Incorporated
+lasalle
+
+// lat : 2014-10-16 ECOM-LAC Federaciòn de Latinoamèrica y el Caribe para Internet y el Comercio Electrònico
+lat
+
+// latino : 2015-07-30 Dish DBS Corporation
+latino
+
+// latrobe : 2014-06-16 La Trobe University
+latrobe
+
+// law : 2015-01-22 Minds + Machines Group Limited
+law
+
+// lawyer : 2014-03-20
+lawyer
+
+// lds : 2014-03-20 IRI Domain Management, LLC ("Applicant")
+lds
+
+// lease : 2014-03-06 Victor Trail, LLC
+lease
+
+// leclerc : 2014-08-07 A.C.D. LEC Association des Centres Distributeurs Edouard Leclerc
+leclerc
+
+// lefrak : 2015-07-16 LeFrak Organization, Inc.
+lefrak
+
+// legal : 2014-10-16 Blue Falls, LLC
+legal
+
+// lego : 2015-07-16 LEGO Juris A/S
+lego
+
+// lexus : 2015-04-23 TOYOTA MOTOR CORPORATION
+lexus
+
+// lgbt : 2014-05-08 Afilias Limited
+lgbt
+
+// liaison : 2014-10-02 Liaison Technologies, Incorporated
+liaison
+
+// lidl : 2014-09-18 Schwarz Domains und Services GmbH & Co. KG
+lidl
+
+// life : 2014-02-06 Trixy Oaks, LLC
+life
+
+// lifeinsurance : 2015-01-15 American Council of Life Insurers
+lifeinsurance
+
+// lifestyle : 2014-12-11 Lifestyle Domain Holdings, Inc.
+lifestyle
+
+// lighting : 2013-08-27 John McCook, LLC
+lighting
+
+// like : 2014-12-18 Amazon EU S.à r.l.
+like
+
+// lilly : 2015-07-31 Eli Lilly and Company
+lilly
+
+// limited : 2014-03-06 Big Fest, LLC
+limited
+
+// limo : 2013-10-17 Hidden Frostbite, LLC
+limo
+
+// lincoln : 2014-11-13 Ford Motor Company
+lincoln
+
+// linde : 2014-12-04 Linde Aktiengesellschaft
+linde
+
+// link : 2013-11-14 Uniregistry, Corp.
+link
+
+// lipsy : 2015-06-25 Lipsy Ltd
+lipsy
+
+// live : 2014-12-04
+live
+
+// living : 2015-07-30 Lifestyle Domain Holdings, Inc.
+living
+
+// lixil : 2015-03-19 LIXIL Group Corporation
+lixil
+
+// loan : 2014-11-20 dot Loan Limited
+loan
+
+// loans : 2014-03-20 June Woods, LLC
+loans
+
+// locker : 2015-06-04 Dish DBS Corporation
+locker
+
+// locus : 2015-06-25 Locus Analytics LLC
+locus
+
+// loft : 2015-07-30 Annco, Inc.
+loft
+
+// lol : 2015-01-30 Uniregistry, Corp.
+lol
+
+// london : 2013-11-14 Dot London Domains Limited
+london
+
+// lotte : 2014-11-07 Lotte Holdings Co., Ltd.
+lotte
+
+// lotto : 2014-04-10 Afilias Limited
+lotto
+
+// love : 2014-12-22 Merchant Law Group LLP
+love
+
+// lpl : 2015-07-30 LPL Holdings, Inc.
+lpl
+
+// lplfinancial : 2015-07-30 LPL Holdings, Inc.
+lplfinancial
+
+// ltd : 2014-09-25 Over Corner, LLC
+ltd
+
+// ltda : 2014-04-17 DOMAIN ROBOT SERVICOS DE HOSPEDAGEM NA INTERNET LTDA
+ltda
+
+// lundbeck : 2015-08-06 H. Lundbeck A/S
+lundbeck
+
+// lupin : 2014-11-07 LUPIN LIMITED
+lupin
+
+// luxe : 2014-01-09 Top Level Domain Holdings Limited
+luxe
+
+// luxury : 2013-10-17 Luxury Partners, LLC
+luxury
+
+// macys : 2015-07-31 Macys, Inc.
+macys
+
+// madrid : 2014-05-01 Comunidad de Madrid
+madrid
+
+// maif : 2014-10-02 Mutuelle Assurance Instituteur France (MAIF)
+maif
+
+// maison : 2013-12-05 Victor Frostbite, LLC
+maison
+
+// makeup : 2015-01-15 L'Oréal
+makeup
+
+// man : 2014-12-04 MAN SE
+man
+
+// management : 2013-11-07 John Goodbye, LLC
+management
+
+// mango : 2013-10-24 PUNTO FA S.L.
+mango
+
+// market : 2014-03-06
+market
+
+// marketing : 2013-11-07 Fern Pass, LLC
+marketing
+
+// markets : 2014-12-11 IG Group Holdings PLC
+markets
+
+// marriott : 2014-10-09 Marriott Worldwide Corporation
+marriott
+
+// marshalls : 2015-07-16 The TJX Companies, Inc.
+marshalls
+
+// maserati : 2015-07-31 Fiat Chrysler Automobiles N.V.
+maserati
+
+// mattel : 2015-08-06 Mattel Sites, Inc.
+mattel
+
+// mba : 2015-04-02 Lone Hollow, LLC
+mba
+
+// mcd : 2015-07-30 McDonald’s Corporation
+mcd
+
+// mcdonalds : 2015-07-30 McDonald’s Corporation
+mcdonalds
+
+// mckinsey : 2015-07-31 McKinsey Holdings, Inc.
+mckinsey
+
+// med : 2015-08-06 Medistry LLC
+med
+
+// media : 2014-03-06 Grand Glen, LLC
+media
+
+// meet : 2014-01-16
+meet
+
+// melbourne : 2014-05-29 The Crown in right of the State of Victoria, represented by its Department of State Development, Business and Innovation
+melbourne
+
+// meme : 2014-01-30 Charleston Road Registry Inc.
+meme
+
+// memorial : 2014-10-16 Dog Beach, LLC
+memorial
+
+// men : 2015-02-26 Exclusive Registry Limited
+men
+
+// menu : 2013-09-11 Wedding TLD2, LLC
+menu
+
+// meo : 2014-11-07 PT Comunicacoes S.A.
+meo
+
+// metlife : 2015-05-07 MetLife Services and Solutions, LLC
+metlife
+
+// miami : 2013-12-19 Top Level Domain Holdings Limited
+miami
+
+// microsoft : 2014-12-18 Microsoft Corporation
+microsoft
+
+// mini : 2014-01-09 Bayerische Motoren Werke Aktiengesellschaft
+mini
+
+// mint : 2015-07-30 Intuit Administrative Services, Inc.
+mint
+
+// mit : 2015-07-02 Massachusetts Institute of Technology
+mit
+
+// mitsubishi : 2015-07-23 Mitsubishi Corporation
+mitsubishi
+
+// mlb : 2015-05-21 MLB Advanced Media DH, LLC
+mlb
+
+// mls : 2015-04-23 The Canadian Real Estate Association
+mls
+
+// mma : 2014-11-07 MMA IARD
+mma
+
+// mnet : 2015-03-05 Electronic Media Network (Pty) Ltd
+mnet
+
+// mobily : 2014-12-18 GreenTech Consultancy Company W.L.L.
+mobily
+
+// moda : 2013-11-07 United TLD Holdco Ltd.
+moda
+
+// moe : 2013-11-13 Interlink Co., Ltd.
+moe
+
+// moi : 2014-12-18 Amazon EU S.à r.l.
+moi
+
+// mom : 2015-04-16 Uniregistry, Corp.
+mom
+
+// monash : 2013-09-30 Monash University
+monash
+
+// money : 2014-10-16 Outer McCook, LLC
+money
+
+// monster : 2015-09-11 Monster Worldwide, Inc.
+monster
+
+// montblanc : 2014-06-23 Richemont DNS Inc.
+montblanc
+
+// mopar : 2015-07-30 FCA US LLC.
+mopar
+
+// mormon : 2013-12-05 IRI Domain Management, LLC ("Applicant")
+mormon
+
+// mortgage : 2014-03-20
+mortgage
+
+// moscow : 2013-12-19 Foundation for Assistance for Internet Technologies and Infrastructure Development (FAITID)
+moscow
+
+// moto : 2015-06-04 Charleston Road Registry Inc.
+moto
+
+// motorcycles : 2014-01-09 DERMotorcycles, LLC
+motorcycles
+
+// mov : 2014-01-30 Charleston Road Registry Inc.
+mov
+
+// movie : 2015-02-05 New Frostbite, LLC
+movie
+
+// movistar : 2014-10-16 Telefónica S.A.
+movistar
+
+// msd : 2015-07-23 MSD Registry Holdings, Inc.
+msd
+
+// mtn : 2014-12-04 MTN Dubai Limited
+mtn
+
+// mtpc : 2014-11-20 Mitsubishi Tanabe Pharma Corporation
+mtpc
+
+// mtr : 2015-03-12 MTR Corporation Limited
+mtr
+
+// multichoice : 2015-03-12 MultiChoice (Proprietary) Limited
+multichoice
+
+// mutual : 2015-04-02 Northwestern Mutual MU TLD Registry, LLC
+mutual
+
+// mutuelle : 2015-06-18 Fédération Nationale de la Mutualité Française
+mutuelle
+
+// mzansimagic : 2015-03-05 Electronic Media Network (Pty) Ltd
+mzansimagic
+
+// nab : 2015-08-20 National Australia Bank Limited
+nab
+
+// nadex : 2014-12-11 IG Group Holdings PLC
+nadex
+
+// nagoya : 2013-10-24 GMO Registry, Inc.
+nagoya
+
+// naspers : 2015-02-12 Intelprop (Proprietary) Limited
+naspers
+
+// nationwide : 2015-07-23 Nationwide Mutual Insurance Company
+nationwide
+
+// natura : 2015-03-12 NATURA COSMÉTICOS S.A.
+natura
+
+// navy : 2014-03-06 United TLD Holdco Ltd.
+navy
+
+// nba : 2015-07-31 NBA REGISTRY, LLC
+nba
+
+// nec : 2015-01-08 NEC Corporation
+nec
+
+// netbank : 2014-06-26 COMMONWEALTH BANK OF AUSTRALIA
+netbank
+
+// netflix : 2015-06-18 Netflix, Inc.
+netflix
+
+// network : 2013-11-14 Trixy Manor, LLC
+network
+
+// neustar : 2013-12-05 NeuStar, Inc.
+neustar
+
+// new : 2014-01-30 Charleston Road Registry Inc.
+new
+
+// newholland : 2015-09-03 CNH Industrial N.V.
+newholland
+
+// news : 2014-12-18
+news
+
+// next : 2015-06-18 Next plc
+next
+
+// nextdirect : 2015-06-18 Next plc
+nextdirect
+
+// nexus : 2014-07-24 Charleston Road Registry Inc.
+nexus
+
+// nfl : 2015-07-23 NFL Reg Ops LLC
+nfl
+
+// ngo : 2014-03-06 Public Interest Registry
+ngo
+
+// nhk : 2014-02-13 Japan Broadcasting Corporation (NHK)
+nhk
+
+// nico : 2014-12-04 DWANGO Co., Ltd.
+nico
+
+// nike : 2015-07-23 NIKE, Inc.
+nike
+
+// nikon : 2015-05-21 NIKON CORPORATION
+nikon
+
+// ninja : 2013-11-07 United TLD Holdco Ltd.
+ninja
+
+// nissan : 2014-03-27 NISSAN MOTOR CO., LTD.
+nissan
+
+// nissay : 2015-10-29 Nippon Life Insurance Company
+nissay
+
+// nokia : 2015-01-08 Nokia Corporation
+nokia
+
+// northwesternmutual : 2015-06-18 Northwestern Mutual Registry, LLC
+northwesternmutual
+
+// norton : 2014-12-04 Symantec Corporation
+norton
+
+// now : 2015-06-25 Amazon EU S.à r.l.
+now
+
+// nowruz : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti.
+nowruz
+
+// nowtv : 2015-05-14 Starbucks (HK) Limited
+nowtv
+
+// nra : 2014-05-22 NRA Holdings Company, INC.
+nra
+
+// nrw : 2013-11-21 Minds + Machines GmbH
+nrw
+
+// ntt : 2014-10-31 NIPPON TELEGRAPH AND TELEPHONE CORPORATION
+ntt
+
+// nyc : 2014-01-23 The City of New York by and through the New York City Department of Information Technology & Telecommunications
+nyc
+
+// obi : 2014-09-25 OBI Group Holding SE & Co. KGaA
+obi
+
+// observer : 2015-04-30 Guardian News and Media Limited
+observer
+
+// off : 2015-07-23 Johnson Shareholdings, Inc.
+off
+
+// office : 2015-03-12 Microsoft Corporation
+office
+
+// okinawa : 2013-12-05 BusinessRalliart Inc.
+okinawa
+
+// olayan : 2015-05-14 Crescent Holding GmbH
+olayan
+
+// olayangroup : 2015-05-14 Crescent Holding GmbH
+olayangroup
+
+// oldnavy : 2015-07-31 The Gap, Inc.
+oldnavy
+
+// ollo : 2015-06-04 Dish DBS Corporation
+ollo
+
+// omega : 2015-01-08 The Swatch Group Ltd
+omega
+
+// one : 2014-11-07 One.com A/S
+one
+
+// ong : 2014-03-06 Public Interest Registry
+ong
+
+// onl : 2013-09-16 I-Registry Ltd.
+onl
+
+// online : 2015-01-15 DotOnline Inc.
+online
+
+// onyourside : 2015-07-23 Nationwide Mutual Insurance Company
+onyourside
+
+// ooo : 2014-01-09 INFIBEAM INCORPORATION LIMITED
+ooo
+
+// open : 2015-07-31 American Express Travel Related Services Company, Inc.
+open
+
+// oracle : 2014-06-19 Oracle Corporation
+oracle
+
+// orange : 2015-03-12 Orange Brand Services Limited
+orange
+
+// organic : 2014-03-27 Afilias Limited
+organic
+
+// orientexpress : 2015-02-05 Belmond Ltd.
+orientexpress
+
+// origins : 2015-10-01 The Estée Lauder Companies Inc.
+origins
+
+// osaka : 2014-09-04 Interlink Co., Ltd.
+osaka
+
+// otsuka : 2013-10-11 Otsuka Holdings Co., Ltd.
+otsuka
+
+// ott : 2015-06-04 Dish DBS Corporation
+ott
+
+// ovh : 2014-01-16 OVH SAS
+ovh
+
+// page : 2014-12-04 Charleston Road Registry Inc.
+page
+
+// pamperedchef : 2015-02-05 The Pampered Chef, Ltd.
+pamperedchef
+
+// panasonic : 2015-07-30 Panasonic Corporation
+panasonic
+
+// panerai : 2014-11-07 Richemont DNS Inc.
+panerai
+
+// paris : 2014-01-30 City of Paris
+paris
+
+// pars : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti.
+pars
+
+// partners : 2013-12-05 Magic Glen, LLC
+partners
+
+// parts : 2013-12-05 Sea Goodbye, LLC
+parts
+
+// party : 2014-09-11 Blue Sky Registry Limited
+party
+
+// passagens : 2015-03-05 Travel Reservations SRL
+passagens
+
+// pay : 2015-08-27 Amazon EU S.à r.l.
+pay
+
+// payu : 2015-02-12 MIH PayU B.V.
+payu
+
+// pccw : 2015-05-14 PCCW Enterprises Limited
+pccw
+
+// pet : 2015-05-07 Afilias plc
+pet
+
+// pfizer : 2015-09-11 Pfizer Inc.
+pfizer
+
+// pharmacy : 2014-06-19 National Association of Boards of Pharmacy
+pharmacy
+
+// philips : 2014-11-07 Koninklijke Philips N.V.
+philips
+
+// photo : 2013-11-14 Uniregistry, Corp.
+photo
+
+// photography : 2013-09-20 Sugar Glen, LLC
+photography
+
+// photos : 2013-10-17 Sea Corner, LLC
+photos
+
+// physio : 2014-05-01 PhysBiz Pty Ltd
+physio
+
+// piaget : 2014-10-16 Richemont DNS Inc.
+piaget
+
+// pics : 2013-11-14 Uniregistry, Corp.
+pics
+
+// pictet : 2014-06-26 Pictet Europe S.A.
+pictet
+
+// pictures : 2014-03-06 Foggy Sky, LLC
+pictures
+
+// pid : 2015-01-08 Top Level Spectrum, Inc.
+pid
+
+// pin : 2014-12-18 Amazon EU S.à r.l.
+pin
+
+// ping : 2015-06-11 Ping Registry Provider, Inc.
+ping
+
+// pink : 2013-10-01 Afilias Limited
+pink
+
+// pioneer : 2015-07-16 Pioneer Corporation
+pioneer
+
+// pizza : 2014-06-26 Foggy Moon, LLC
+pizza
+
+// place : 2014-04-24 Snow Galley, LLC
+place
+
+// play : 2015-03-05 Charleston Road Registry Inc.
+play
+
+// playstation : 2015-07-02 Sony Computer Entertainment Inc.
+playstation
+
+// plumbing : 2013-09-10 Spring Tigers, LLC
+plumbing
+
+// plus : 2015-02-05 Sugar Mill, LLC
+plus
+
+// pnc : 2015-07-02 PNC Domain Co., LLC
+pnc
+
+// pohl : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG
+pohl
+
+// poker : 2014-07-03 Afilias Domains No. 5 Limited
+poker
+
+// politie : 2015-08-20 Politie Nederland
+politie
+
+// porn : 2014-10-16 ICM Registry PN LLC
+porn
+
+// pramerica : 2015-07-30 Prudential Financial, Inc.
+pramerica
+
+// praxi : 2013-12-05 Praxi S.p.A.
+praxi
+
+// press : 2014-04-03 DotPress Inc.
+press
+
+// prime : 2015-06-25 Amazon EU S.à r.l.
+prime
+
+// prod : 2014-01-23 Charleston Road Registry Inc.
+prod
+
+// productions : 2013-12-05 Magic Birch, LLC
+productions
+
+// prof : 2014-07-24 Charleston Road Registry Inc.
+prof
+
+// progressive : 2015-07-23 Progressive Casualty Insurance Company
+progressive
+
+// promo : 2014-12-18
+promo
+
+// properties : 2013-12-05 Big Pass, LLC
+properties
+
+// property : 2014-05-22 Uniregistry, Corp.
+property
+
+// protection : 2015-04-23
+protection
+
+// pru : 2015-07-30 Prudential Financial, Inc.
+pru
+
+// prudential : 2015-07-30 Prudential Financial, Inc.
+prudential
+
+// pub : 2013-12-12 United TLD Holdco Ltd.
+pub
+
+// pwc : 2015-10-29 PricewaterhouseCoopers LLP
+pwc
+
+// qpon : 2013-11-14 dotCOOL, Inc.
+qpon
+
+// quebec : 2013-12-19 PointQuébec Inc
+quebec
+
+// quest : 2015-03-26 Quest ION Limited
+quest
+
+// qvc : 2015-07-30 QVC, Inc.
+qvc
+
+// racing : 2014-12-04 Premier Registry Limited
+racing
+
+// raid : 2015-07-23 Johnson Shareholdings, Inc.
+raid
+
+// read : 2014-12-18 Amazon EU S.à r.l.
+read
+
+// realestate : 2015-09-11 dotRealEstate LLC
+realestate
+
+// realtor : 2014-05-29 Real Estate Domains LLC
+realtor
+
+// realty : 2015-03-19 Fegistry, LLC
+realty
+
+// recipes : 2013-10-17 Grand Island, LLC
+recipes
+
+// red : 2013-11-07 Afilias Limited
+red
+
+// redstone : 2014-10-31 Redstone Haute Couture Co., Ltd.
+redstone
+
+// redumbrella : 2015-03-26 Travelers TLD, LLC
+redumbrella
+
+// rehab : 2014-03-06 United TLD Holdco Ltd.
+rehab
+
+// reise : 2014-03-13
+reise
+
+// reisen : 2014-03-06 New Cypress, LLC
+reisen
+
+// reit : 2014-09-04 National Association of Real Estate Investment Trusts, Inc.
+reit
+
+// reliance : 2015-04-02 Reliance Industries Limited
+reliance
+
+// ren : 2013-12-12 Beijing Qianxiang Wangjing Technology Development Co., Ltd.
+ren
+
+// rent : 2014-12-04 DERRent, LLC
+rent
+
+// rentals : 2013-12-05 Big Hollow,LLC
+rentals
+
+// repair : 2013-11-07 Lone Sunset, LLC
+repair
+
+// report : 2013-12-05 Binky Glen, LLC
+report
+
+// republican : 2014-03-20 United TLD Holdco Ltd.
+republican
+
+// rest : 2013-12-19 Punto 2012 Sociedad Anonima Promotora de Inversion de Capital Variable
+rest
+
+// restaurant : 2014-07-03 Snow Avenue, LLC
+restaurant
+
+// review : 2014-11-20 dot Review Limited
+review
+
+// reviews : 2013-09-13
+reviews
+
+// rexroth : 2015-06-18 Robert Bosch GMBH
+rexroth
+
+// rich : 2013-11-21 I-Registry Ltd.
+rich
+
+// richardli : 2015-05-14 Pacific Century Asset Management (HK) Limited
+richardli
+
+// ricoh : 2014-11-20 Ricoh Company, Ltd.
+ricoh
+
+// rightathome : 2015-07-23 Johnson Shareholdings, Inc.
+rightathome
+
+// ril : 2015-04-02 Reliance Industries Limited
+ril
+
+// rio : 2014-02-27 Empresa Municipal de Informática SA - IPLANRIO
+rio
+
+// rip : 2014-07-10 United TLD Holdco Ltd.
+rip
+
+// rmit : 2015-11-19 Royal Melbourne Institute of Technology
+rmit
+
+// rocher : 2014-12-18 Ferrero Trading Lux S.A.
+rocher
+
+// rocks : 2013-11-14
+rocks
+
+// rodeo : 2013-12-19 Top Level Domain Holdings Limited
+rodeo
+
+// rogers : 2015-08-06 Rogers Communications Partnership
+rogers
+
+// room : 2014-12-18 Amazon EU S.à r.l.
+room
+
+// rsvp : 2014-05-08 Charleston Road Registry Inc.
+rsvp
+
+// ruhr : 2013-10-02 regiodot GmbH & Co. KG
+ruhr
+
+// run : 2015-03-19 Snow Park, LLC
+run
+
+// rwe : 2015-04-02 RWE AG
+rwe
+
+// ryukyu : 2014-01-09 BusinessRalliart Inc.
+ryukyu
+
+// saarland : 2013-12-12 dotSaarland GmbH
+saarland
+
+// safe : 2014-12-18 Amazon EU S.à r.l.
+safe
+
+// safety : 2015-01-08 Safety Registry Services, LLC.
+safety
+
+// sakura : 2014-12-18 SAKURA Internet Inc.
+sakura
+
+// sale : 2014-10-16
+sale
+
+// salon : 2014-12-11 Outer Orchard, LLC
+salon
+
+// samsclub : 2015-07-31 Wal-Mart Stores, Inc.
+samsclub
+
+// samsung : 2014-04-03 SAMSUNG SDS CO., LTD
+samsung
+
+// sandvik : 2014-11-13 Sandvik AB
+sandvik
+
+// sandvikcoromant : 2014-11-07 Sandvik AB
+sandvikcoromant
+
+// sanofi : 2014-10-09 Sanofi
+sanofi
+
+// sap : 2014-03-27 SAP AG
+sap
+
+// sapo : 2014-11-07 PT Comunicacoes S.A.
+sapo
+
+// sarl : 2014-07-03 Delta Orchard, LLC
+sarl
+
+// sas : 2015-04-02 Research IP LLC
+sas
+
+// save : 2015-06-25 Amazon EU S.à r.l.
+save
+
+// saxo : 2014-10-31 Saxo Bank A/S
+saxo
+
+// sbi : 2015-03-12 STATE BANK OF INDIA
+sbi
+
+// sbs : 2014-11-07 SPECIAL BROADCASTING SERVICE CORPORATION
+sbs
+
+// sca : 2014-03-13 SVENSKA CELLULOSA AKTIEBOLAGET SCA (publ)
+sca
+
+// scb : 2014-02-20 The Siam Commercial Bank Public Company Limited ("SCB")
+scb
+
+// schaeffler : 2015-08-06 Schaeffler Technologies AG & Co. KG
+schaeffler
+
+// schmidt : 2014-04-03 SALM S.A.S.
+schmidt
+
+// scholarships : 2014-04-24 Scholarships.com, LLC
+scholarships
+
+// school : 2014-12-18 Little Galley, LLC
+school
+
+// schule : 2014-03-06 Outer Moon, LLC
+schule
+
+// schwarz : 2014-09-18 Schwarz Domains und Services GmbH & Co. KG
+schwarz
+
+// science : 2014-09-11 dot Science Limited
+science
+
+// scjohnson : 2015-07-23 Johnson Shareholdings, Inc.
+scjohnson
+
+// scor : 2014-10-31 SCOR SE
+scor
+
+// scot : 2014-01-23 Dot Scot Registry Limited
+scot
+
+// seat : 2014-05-22 SEAT, S.A. (Sociedad Unipersonal)
+seat
+
+// secure : 2015-08-27 Amazon EU S.à r.l.
+secure
+
+// security : 2015-05-14
+security
+
+// seek : 2014-12-04 Seek Limited
+seek
+
+// select : 2015-10-08 iSelect Ltd
+select
+
+// sener : 2014-10-24 Sener Ingeniería y Sistemas, S.A.
+sener
+
+// services : 2014-02-27 Fox Castle, LLC
+services
+
+// ses : 2015-07-23 SES
+ses
+
+// seven : 2015-08-06 Seven West Media Ltd
+seven
+
+// sew : 2014-07-17 SEW-EURODRIVE GmbH & Co KG
+sew
+
+// sex : 2014-11-13 ICM Registry SX LLC
+sex
+
+// sexy : 2013-09-11 Uniregistry, Corp.
+sexy
+
+// sfr : 2015-08-13 Societe Francaise du Radiotelephone - SFR
+sfr
+
+// shangrila : 2015-09-03 Shangri‐La International Hotel Management Limited
+shangrila
+
+// sharp : 2014-05-01 Sharp Corporation
+sharp
+
+// shaw : 2015-04-23 Shaw Cablesystems G.P.
+shaw
+
+// shell : 2015-07-30 Shell Information Technology International Inc
+shell
+
+// shia : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti.
+shia
+
+// shiksha : 2013-11-14 Afilias Limited
+shiksha
+
+// shoes : 2013-10-02 Binky Galley, LLC
+shoes
+
+// shopping : 2016-03-31 Uniregistry, Corp.
+shopping
+
+// shouji : 2015-01-08 QIHOO 360 TECHNOLOGY CO. LTD.
+shouji
+
+// show : 2015-03-05 Snow Beach, LLC
+show
+
+// showtime : 2015-08-06 CBS Domains Inc.
+showtime
+
+// shriram : 2014-01-23 Shriram Capital Ltd.
+shriram
+
+// silk : 2015-06-25 Amazon EU S.à r.l.
+silk
+
+// sina : 2015-03-12 Sina Corporation
+sina
+
+// singles : 2013-08-27 Fern Madison, LLC
+singles
+
+// site : 2015-01-15 DotSite Inc.
+site
+
+// ski : 2015-04-09 STARTING DOT LIMITED
+ski
+
+// skin : 2015-01-15 L'Oréal
+skin
+
+// sky : 2014-06-19 Sky IP International Ltd, a company incorporated in England and Wales, operating via its registered Swiss branch
+sky
+
+// skype : 2014-12-18 Microsoft Corporation
+skype
+
+// sling : 2015-07-30 Hughes Satellite Systems Corporation
+sling
+
+// smart : 2015-07-09 Smart Communications, Inc. (SMART)
+smart
+
+// smile : 2014-12-18 Amazon EU S.à r.l.
+smile
+
+// sncf : 2015-02-19 Société Nationale des Chemins de fer Francais S N C F
+sncf
+
+// soccer : 2015-03-26 Foggy Shadow, LLC
+soccer
+
+// social : 2013-11-07 United TLD Holdco Ltd.
+social
+
+// softbank : 2015-07-02 SoftBank Corp.
+softbank
+
+// software : 2014-03-20
+software
+
+// sohu : 2013-12-19 Sohu.com Limited
+sohu
+
+// solar : 2013-11-07 Ruby Town, LLC
+solar
+
+// solutions : 2013-11-07 Silver Cover, LLC
+solutions
+
+// song : 2015-02-26 Amazon EU S.à r.l.
+song
+
+// sony : 2015-01-08 Sony Corporation
+sony
+
+// soy : 2014-01-23 Charleston Road Registry Inc.
+soy
+
+// space : 2014-04-03 DotSpace Inc.
+space
+
+// spiegel : 2014-02-05 SPIEGEL-Verlag Rudolf Augstein GmbH & Co. KG
+spiegel
+
+// spot : 2015-02-26 Amazon EU S.à r.l.
+spot
+
+// spreadbetting : 2014-12-11 IG Group Holdings PLC
+spreadbetting
+
+// srl : 2015-05-07 mySRL GmbH
+srl
+
+// srt : 2015-07-30 FCA US LLC.
+srt
+
+// stada : 2014-11-13 STADA Arzneimittel AG
+stada
+
+// staples : 2015-07-30 Staples, Inc.
+staples
+
+// star : 2015-01-08 Star India Private Limited
+star
+
+// starhub : 2015-02-05 StarHub Ltd
+starhub
+
+// statebank : 2015-03-12 STATE BANK OF INDIA
+statebank
+
+// statefarm : 2015-07-30 State Farm Mutual Automobile Insurance Company
+statefarm
+
+// statoil : 2014-12-04 Statoil ASA
+statoil
+
+// stc : 2014-10-09 Saudi Telecom Company
+stc
+
+// stcgroup : 2014-10-09 Saudi Telecom Company
+stcgroup
+
+// stockholm : 2014-12-18 Stockholms kommun
+stockholm
+
+// storage : 2014-12-22 Self Storage Company LLC
+storage
+
+// store : 2015-04-09 DotStore Inc.
+store
+
+// stream : 2016-01-08 dot Stream Limited
+stream
+
+// studio : 2015-02-11
+studio
+
+// study : 2014-12-11 OPEN UNIVERSITIES AUSTRALIA PTY LTD
+study
+
+// style : 2014-12-04 Binky Moon, LLC
+style
+
+// sucks : 2014-12-22 Vox Populi Registry Inc.
+sucks
+
+// supersport : 2015-03-05 SuperSport International Holdings Proprietary Limited
+supersport
+
+// supplies : 2013-12-19 Atomic Fields, LLC
+supplies
+
+// supply : 2013-12-19 Half Falls, LLC
+supply
+
+// support : 2013-10-24 Grand Orchard, LLC
+support
+
+// surf : 2014-01-09 Top Level Domain Holdings Limited
+surf
+
+// surgery : 2014-03-20 Tin Avenue, LLC
+surgery
+
+// suzuki : 2014-02-20 SUZUKI MOTOR CORPORATION
+suzuki
+
+// swatch : 2015-01-08 The Swatch Group Ltd
+swatch
+
+// swiftcover : 2015-07-23 Swiftcover Insurance Services Limited
+swiftcover
+
+// swiss : 2014-10-16 Swiss Confederation
+swiss
+
+// sydney : 2014-09-18 State of New South Wales, Department of Premier and Cabinet
+sydney
+
+// symantec : 2014-12-04 Symantec Corporation
+symantec
+
+// systems : 2013-11-07 Dash Cypress, LLC
+systems
+
+// tab : 2014-12-04 Tabcorp Holdings Limited
+tab
+
+// taipei : 2014-07-10 Taipei City Government
+taipei
+
+// talk : 2015-04-09 Amazon EU S.à r.l.
+talk
+
+// taobao : 2015-01-15 Alibaba Group Holding Limited
+taobao
+
+// target : 2015-07-31 Target Domain Holdings, LLC
+target
+
+// tatamotors : 2015-03-12 Tata Motors Ltd
+tatamotors
+
+// tatar : 2014-04-24 Limited Liability Company "Coordination Center of Regional Domain of Tatarstan Republic"
+tatar
+
+// tattoo : 2013-08-30 Uniregistry, Corp.
+tattoo
+
+// tax : 2014-03-20 Storm Orchard, LLC
+tax
+
+// taxi : 2015-03-19 Pine Falls, LLC
+taxi
+
+// tci : 2014-09-12 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti.
+tci
+
+// tdk : 2015-06-11 TDK Corporation
+tdk
+
+// team : 2015-03-05 Atomic Lake, LLC
+team
+
+// tech : 2015-01-30 Dot Tech LLC
+tech
+
+// technology : 2013-09-13 Auburn Falls
+technology
+
+// telecity : 2015-02-19 TelecityGroup International Limited
+telecity
+
+// telefonica : 2014-10-16 Telefónica S.A.
+telefonica
+
+// temasek : 2014-08-07 Temasek Holdings (Private) Limited
+temasek
+
+// tennis : 2014-12-04 Cotton Bloom, LLC
+tennis
+
+// teva : 2015-07-02 Teva Pharmaceutical Industries Limited
+teva
+
+// thd : 2015-04-02 Homer TLC, Inc.
+thd
+
+// theater : 2015-03-19 Blue Tigers, LLC
+theater
+
+// theatre : 2015-05-07
+theatre
+
+// theguardian : 2015-04-30 Guardian News and Media Limited
+theguardian
+
+// tiaa : 2015-07-23 Teachers Insurance and Annuity Association of America
+tiaa
+
+// tickets : 2015-02-05 Accent Media Limited
+tickets
+
+// tienda : 2013-11-14 Victor Manor, LLC
+tienda
+
+// tiffany : 2015-01-30 Tiffany and Company
+tiffany
+
+// tips : 2013-09-20 Corn Willow, LLC
+tips
+
+// tires : 2014-11-07 Dog Edge, LLC
+tires
+
+// tirol : 2014-04-24 punkt Tirol GmbH
+tirol
+
+// tjmaxx : 2015-07-16 The TJX Companies, Inc.
+tjmaxx
+
+// tjx : 2015-07-16 The TJX Companies, Inc.
+tjx
+
+// tkmaxx : 2015-07-16 The TJX Companies, Inc.
+tkmaxx
+
+// tmall : 2015-01-15 Alibaba Group Holding Limited
+tmall
+
+// today : 2013-09-20 Pearl Woods, LLC
+today
+
+// tokyo : 2013-11-13 GMO Registry, Inc.
+tokyo
+
+// tools : 2013-11-21 Pioneer North, LLC
+tools
+
+// top : 2014-03-20 Jiangsu Bangning Science & Technology Co.,Ltd.
+top
+
+// toray : 2014-12-18 Toray Industries, Inc.
+toray
+
+// toshiba : 2014-04-10 TOSHIBA Corporation
+toshiba
+
+// total : 2015-08-06 Total SA
+total
+
+// tours : 2015-01-22 Sugar Station, LLC
+tours
+
+// town : 2014-03-06 Koko Moon, LLC
+town
+
+// toyota : 2015-04-23 TOYOTA MOTOR CORPORATION
+toyota
+
+// toys : 2014-03-06 Pioneer Orchard, LLC
+toys
+
+// trade : 2014-01-23 Elite Registry Limited
+trade
+
+// trading : 2014-12-11 IG Group Holdings PLC
+trading
+
+// training : 2013-11-07 Wild Willow, LLC
+training
+
+// travelchannel : 2015-07-02 Lifestyle Domain Holdings, Inc.
+travelchannel
+
+// travelers : 2015-03-26 Travelers TLD, LLC
+travelers
+
+// travelersinsurance : 2015-03-26 Travelers TLD, LLC
+travelersinsurance
+
+// trust : 2014-10-16
+trust
+
+// trv : 2015-03-26 Travelers TLD, LLC
+trv
+
+// tube : 2015-06-11 Latin American Telecom LLC
+tube
+
+// tui : 2014-07-03 TUI AG
+tui
+
+// tunes : 2015-02-26 Amazon EU S.à r.l.
+tunes
+
+// tushu : 2014-12-18 Amazon EU S.à r.l.
+tushu
+
+// tvs : 2015-02-19 T V SUNDRAM IYENGAR  & SONS LIMITED
+tvs
+
+// ubank : 2015-08-20 National Australia Bank Limited
+ubank
+
+// ubs : 2014-12-11 UBS AG
+ubs
+
+// uconnect : 2015-07-30 FCA US LLC.
+uconnect
+
+// unicom : 2015-10-15 China United Network Communications Corporation Limited
+unicom
+
+// university : 2014-03-06 Little Station, LLC
+university
+
+// uno : 2013-09-11 Dot Latin LLC
+uno
+
+// uol : 2014-05-01 UBN INTERNET LTDA.
+uol
+
+// ups : 2015-06-25 UPS Market Driver, Inc.
+ups
+
+// vacations : 2013-12-05 Atomic Tigers, LLC
+vacations
+
+// vana : 2014-12-11 Lifestyle Domain Holdings, Inc.
+vana
+
+// vanguard : 2015-09-03 The Vanguard Group, Inc.
+vanguard
+
+// vegas : 2014-01-16 Dot Vegas, Inc.
+vegas
+
+// ventures : 2013-08-27 Binky Lake, LLC
+ventures
+
+// verisign : 2015-08-13 VeriSign, Inc.
+verisign
+
+// versicherung : 2014-03-20 dotversicherung-registry GmbH
+versicherung
+
+// vet : 2014-03-06
+vet
+
+// viajes : 2013-10-17 Black Madison, LLC
+viajes
+
+// video : 2014-10-16
+video
+
+// vig : 2015-05-14 VIENNA INSURANCE GROUP AG Wiener Versicherung Gruppe
+vig
+
+// viking : 2015-04-02 Viking River Cruises (Bermuda) Ltd.
+viking
+
+// villas : 2013-12-05 New Sky, LLC
+villas
+
+// vin : 2015-06-18 Holly Shadow, LLC
+vin
+
+// vip : 2015-01-22 Minds + Machines Group Limited
+vip
+
+// virgin : 2014-09-25 Virgin Enterprises Limited
+virgin
+
+// visa : 2015-07-30 Visa Worldwide Pte. Limited
+visa
+
+// vision : 2013-12-05 Koko Station, LLC
+vision
+
+// vista : 2014-09-18 Vistaprint Limited
+vista
+
+// vistaprint : 2014-09-18 Vistaprint Limited
+vistaprint
+
+// viva : 2014-11-07 Saudi Telecom Company
+viva
+
+// vivo : 2015-07-31 Telefonica Brasil S.A.
+vivo
+
+// vlaanderen : 2014-02-06 DNS.be vzw
+vlaanderen
+
+// vodka : 2013-12-19 Top Level Domain Holdings Limited
+vodka
+
+// volkswagen : 2015-05-14 Volkswagen Group of America Inc.
+volkswagen
+
+// volvo : 2015-11-12 Volvo Holding Sverige Aktiebolag
+volvo
+
+// vote : 2013-11-21 Monolith Registry LLC
+vote
+
+// voting : 2013-11-13 Valuetainment Corp.
+voting
+
+// voto : 2013-11-21 Monolith Registry LLC
+voto
+
+// voyage : 2013-08-27 Ruby House, LLC
+voyage
+
+// vuelos : 2015-03-05 Travel Reservations SRL
+vuelos
+
+// wales : 2014-05-08 Nominet UK
+wales
+
+// walmart : 2015-07-31 Wal-Mart Stores, Inc.
+walmart
+
+// walter : 2014-11-13 Sandvik AB
+walter
+
+// wang : 2013-10-24 Zodiac Leo Limited
+wang
+
+// wanggou : 2014-12-18 Amazon EU S.à r.l.
+wanggou
+
+// warman : 2015-06-18 Weir Group IP Limited
+warman
+
+// watch : 2013-11-14 Sand Shadow, LLC
+watch
+
+// watches : 2014-12-22 Richemont DNS Inc.
+watches
+
+// weather : 2015-01-08 The Weather Channel, LLC
+weather
+
+// weatherchannel : 2015-03-12 The Weather Channel, LLC
+weatherchannel
+
+// webcam : 2014-01-23 dot Webcam Limited
+webcam
+
+// weber : 2015-06-04 Saint-Gobain Weber SA
+weber
+
+// website : 2014-04-03 DotWebsite Inc.
+website
+
+// wed : 2013-10-01 Atgron, Inc.
+wed
+
+// wedding : 2014-04-24 Top Level Domain Holdings Limited
+wedding
+
+// weibo : 2015-03-05 Sina Corporation
+weibo
+
+// weir : 2015-01-29 Weir Group IP Limited
+weir
+
+// whoswho : 2014-02-20 Who's Who Registry
+whoswho
+
+// wien : 2013-10-28 punkt.wien GmbH
+wien
+
+// wiki : 2013-11-07 Top Level Design, LLC
+wiki
+
+// williamhill : 2014-03-13 William Hill Organization Limited
+williamhill
+
+// win : 2014-11-20 First Registry Limited
+win
+
+// windows : 2014-12-18 Microsoft Corporation
+windows
+
+// wine : 2015-06-18 June Station, LLC
+wine
+
+// winners : 2015-07-16 The TJX Companies, Inc.
+winners
+
+// wme : 2014-02-13 William Morris Endeavor Entertainment, LLC
+wme
+
+// wolterskluwer : 2015-08-06 Wolters Kluwer N.V.
+wolterskluwer
+
+// woodside : 2015-07-09 Woodside Petroleum Limited
+woodside
+
+// work : 2013-12-19 Top Level Domain Holdings Limited
+work
+
+// works : 2013-11-14 Little Dynamite, LLC
+works
+
+// world : 2014-06-12 Bitter Fields, LLC
+world
+
+// wow : 2015-10-08 Amazon EU S.à r.l.
+wow
+
+// wtc : 2013-12-19 World Trade Centers Association, Inc.
+wtc
+
+// wtf : 2014-03-06 Hidden Way, LLC
+wtf
+
+// xbox : 2014-12-18 Microsoft Corporation
+xbox
+
+// xerox : 2014-10-24 Xerox DNHC LLC
+xerox
+
+// xfinity : 2015-07-09 Comcast IP Holdings I, LLC
+xfinity
+
+// xihuan : 2015-01-08 QIHOO 360 TECHNOLOGY CO. LTD.
+xihuan
+
+// xin : 2014-12-11 Elegant Leader Limited
+xin
+
+// xn--11b4c3d : 2015-01-15 VeriSign Sarl
+कॉम
+
+// xn--1ck2e1b : 2015-02-26 Amazon EU S.à r.l.
+セール
+
+// xn--1qqw23a : 2014-01-09 Guangzhou YU Wei Information Technology Co., Ltd.
+佛山
+
+// xn--30rr7y : 2014-06-12 Excellent First Limited
+慈善
+
+// xn--3bst00m : 2013-09-13 Eagle Horizon Limited
+集团
+
+// xn--3ds443g : 2013-09-08 TLD REGISTRY LIMITED
+在线
+
+// xn--3oq18vl8pn36a : 2015-07-02 Volkswagen (China) Investment Co., Ltd.
+大众汽车
+
+// xn--3pxu8k : 2015-01-15 VeriSign Sarl
+点看
+
+// xn--42c2d9a : 2015-01-15 VeriSign Sarl
+คอม
+
+// xn--45q11c : 2013-11-21 Zodiac Scorpio Limited
+八卦
+
+// xn--4gbrim : 2013-10-04 Suhub Electronic Establishment
+موقع
+
+// xn--4gq48lf9j : 2015-07-31 Wal-Mart Stores, Inc.
+一号店
+
+// xn--55qw42g : 2013-11-08 China Organizational Name Administration Center
+公益
+
+// xn--55qx5d : 2013-11-14 Computer Network Information Center of Chinese Academy of Sciences (China Internet Network Information Center)
+公司
+
+// xn--5su34j936bgsg : 2015-09-03 Shangri‐La International Hotel Management Limited
+香格里拉
+
+// xn--5tzm5g : 2014-12-22 Global Website TLD Asia Limited
+网站
+
+// xn--6frz82g : 2013-09-23 Afilias Limited
+移动
+
+// xn--6qq986b3xl : 2013-09-13 Tycoon Treasure Limited
+我爱你
+
+// xn--80adxhks : 2013-12-19 Foundation for Assistance for Internet Technologies and Infrastructure Development (FAITID)
+москва
+
+// xn--80aqecdr1a : 2015-10-21 Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication)
+католик
+
+// xn--80asehdb : 2013-07-14 CORE Association
+онлайн
+
+// xn--80aswg : 2013-07-14 CORE Association
+сайт
+
+// xn--8y0a063a : 2015-03-26 China United Network Communications Corporation Limited
+联通
+
+// xn--9dbq2a : 2015-01-15 VeriSign Sarl
+קום
+
+// xn--9et52u : 2014-06-12 RISE VICTORY LIMITED
+时尚
+
+// xn--9krt00a : 2015-03-12 Sina Corporation
+微博
+
+// xn--b4w605ferd : 2014-08-07 Temasek Holdings (Private) Limited
+淡马锡
+
+// xn--bck1b9a5dre4c : 2015-02-26 Amazon EU S.à r.l.
+ファッション
+
+// xn--c1avg : 2013-11-14 Public Interest Registry
+орг
+
+// xn--c2br7g : 2015-01-15 VeriSign Sarl
+नेट
+
+// xn--cck2b3b : 2015-02-26 Amazon EU S.à r.l.
+ストア
+
+// xn--cg4bki : 2013-09-27 SAMSUNG SDS CO., LTD
+삼성
+
+// xn--czr694b : 2014-01-16 HU YI GLOBAL INFORMATION RESOURCES (HOLDING) COMPANY. HONGKONG LIMITED
+商标
+
+// xn--czrs0t : 2013-12-19 Wild Island, LLC
+商店
+
+// xn--czru2d : 2013-11-21 Zodiac Capricorn Limited
+商城
+
+// xn--d1acj3b : 2013-11-20 The Foundation for Network Initiatives “The Smart Internet”
+дети
+
+// xn--eckvdtc9d : 2014-12-18 Amazon EU S.à r.l.
+ポイント
+
+// xn--efvy88h : 2014-08-22 Xinhua News Agency Guangdong Branch 新华通讯社广东分社
+新闻
+
+// xn--estv75g : 2015-02-19 Industrial and Commercial Bank of China Limited
+工行
+
+// xn--fct429k : 2015-04-09 Amazon EU S.à r.l.
+家電
+
+// xn--fhbei : 2015-01-15 VeriSign Sarl
+كوم
+
+// xn--fiq228c5hs : 2013-09-08 TLD REGISTRY LIMITED
+中文网
+
+// xn--fiq64b : 2013-10-14 CITIC Group Corporation
+中信
+
+// xn--fjq720a : 2014-05-22 Will Bloom, LLC
+娱乐
+
+// xn--flw351e : 2014-07-31 Charleston Road Registry Inc.
+谷歌
+
+// xn--fzys8d69uvgm : 2015-05-14 PCCW Enterprises Limited
+電訊盈科
+
+// xn--g2xx48c : 2015-01-30 Minds + Machines Group Limited
+购物
+
+// xn--gckr3f0f : 2015-02-26 Amazon EU S.à r.l.
+クラウド
+
+// xn--gk3at1e : 2015-10-08 Amazon EU S.à r.l.
+通販
+
+// xn--hxt814e : 2014-05-15 Zodiac Libra Limited
+网店
+
+// xn--i1b6b1a6a2e : 2013-11-14 Public Interest Registry
+संगठन
+
+// xn--imr513n : 2014-12-11 HU YI GLOBAL INFORMATION RESOURCES (HOLDING) COMPANY. HONGKONG LIMITED
+餐厅
+
+// xn--io0a7i : 2013-11-14 Computer Network Information Center of Chinese Academy of Sciences (China Internet Network Information Center)
+网络
+
+// xn--j1aef : 2015-01-15 VeriSign Sarl
+ком
+
+// xn--jlq61u9w7b : 2015-01-08 Nokia Corporation
+诺基亚
+
+// xn--jvr189m : 2015-02-26 Amazon EU S.à r.l.
+食品
+
+// xn--kcrx77d1x4a : 2014-11-07 Koninklijke Philips N.V.
+飞利浦
+
+// xn--kpu716f : 2014-12-22 Richemont DNS Inc.
+手表
+
+// xn--kput3i : 2014-02-13 Beijing RITT-Net Technology Development Co., Ltd
+手机
+
+// xn--mgba3a3ejt : 2014-11-20 Aramco Services Company
+ارامكو
+
+// xn--mgba7c0bbn0a : 2015-05-14 Crescent Holding GmbH
+العليان
+
+// xn--mgbaakc7dvf : 2015-09-03 Emirates Telecommunications Corporation (trading as Etisalat)
+اتصالات
+
+// xn--mgbab2bd : 2013-10-31 CORE Association
+بازار
+
+// xn--mgbb9fbpob : 2014-12-18 GreenTech Consultancy Company W.L.L.
+موبايلي
+
+// xn--mgbca7dzdo : 2015-07-30 Abu Dhabi Systems and Information Centre
+ابوظبي
+
+// xn--mgbi4ecexp : 2015-10-21 Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication)
+كاثوليك
+
+// xn--mgbt3dhd : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti.
+همراه
+
+// xn--mk1bu44c : 2015-01-15 VeriSign Sarl
+닷컴
+
+// xn--mxtq1m : 2014-03-06 Net-Chinese Co., Ltd.
+政府
+
+// xn--ngbc5azd : 2013-07-13 International Domain Registry Pty. Ltd.
+شبكة
+
+// xn--ngbe9e0a : 2014-12-04 Kuwait Finance House
+بيتك
+
+// xn--ngbrx : 2015-11-12 League of Arab States
+عرب
+
+// xn--nqv7f : 2013-11-14 Public Interest Registry
+机构
+
+// xn--nqv7fs00ema : 2013-11-14 Public Interest Registry
+组织机构
+
+// xn--nyqy26a : 2014-11-07 Stable Tone Limited
+健康
+
+// xn--p1acf : 2013-12-12 Rusnames Limited
+рус
+
+// xn--pbt977c : 2014-12-22 Richemont DNS Inc.
+珠宝
+
+// xn--pssy2u : 2015-01-15 VeriSign Sarl
+大拿
+
+// xn--q9jyb4c : 2013-09-17 Charleston Road Registry Inc.
+みんな
+
+// xn--qcka1pmc : 2014-07-31 Charleston Road Registry Inc.
+グーグル
+
+// xn--rhqv96g : 2013-09-11 Stable Tone Limited
+世界
+
+// xn--rovu88b : 2015-02-26 Amazon EU S.à r.l.
+書籍
+
+// xn--ses554g : 2014-01-16
+网址
+
+// xn--t60b56a : 2015-01-15 VeriSign Sarl
+닷넷
+
+// xn--tckwe : 2015-01-15 VeriSign Sarl
+コム
+
+// xn--tiq49xqyj : 2015-10-21 Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication)
+天主教
+
+// xn--unup4y : 2013-07-14 Spring Fields, LLC
+游戏
+
+// xn--vermgensberater-ctb : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG
+vermögensberater
+
+// xn--vermgensberatung-pwb : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG
+vermögensberatung
+
+// xn--vhquv : 2013-08-27 Dash McCook, LLC
+企业
+
+// xn--vuq861b : 2014-10-16 Beijing Tele-info Network Technology Co., Ltd.
+信息
+
+// xn--w4r85el8fhu5dnra : 2015-04-30 Kerry Trading Co. Limited
+嘉里大酒店
+
+// xn--w4rs40l : 2015-07-30 Kerry Trading Co. Limited
+嘉里
+
+// xn--xhq521b : 2013-11-14 Guangzhou YU Wei Information Technology Co., Ltd.
+广东
+
+// xn--zfr164b : 2013-11-08 China Organizational Name Administration Center
+政务
+
+// xperia : 2015-05-14 Sony Mobile Communications AB
+xperia
+
+// xyz : 2013-12-05 XYZ.COM LLC
+xyz
+
+// yachts : 2014-01-09 DERYachts, LLC
+yachts
+
+// yahoo : 2015-04-02 Yahoo! Domain Services Inc.
+yahoo
+
+// yamaxun : 2014-12-18 Amazon EU S.à r.l.
+yamaxun
+
+// yandex : 2014-04-10 YANDEX, LLC
+yandex
+
+// yodobashi : 2014-11-20 YODOBASHI CAMERA CO.,LTD.
+yodobashi
+
+// yoga : 2014-05-29 Top Level Domain Holdings Limited
+yoga
+
+// yokohama : 2013-12-12 GMO Registry, Inc.
+yokohama
+
+// you : 2015-04-09 Amazon EU S.à r.l.
+you
+
+// youtube : 2014-05-01 Charleston Road Registry Inc.
+youtube
+
+// yun : 2015-01-08 QIHOO 360 TECHNOLOGY CO. LTD.
+yun
+
+// zappos : 2015-06-25 Amazon EU S.à r.l.
+zappos
+
+// zara : 2014-11-07 Industria de Diseño Textil, S.A. (INDITEX, S.A.)
+zara
+
+// zero : 2014-12-18 Amazon EU S.à r.l.
+zero
+
+// zip : 2014-05-08 Charleston Road Registry Inc.
+zip
+
+// zippo : 2015-07-02 Zadco Company
+zippo
+
+// zone : 2013-11-14 Outer Falls, LLC
+zone
+
+// zuerich : 2014-11-07 Kanton Zürich (Canton of Zurich)
+zuerich
+
+
+// ===END ICANN DOMAINS===
+// ===BEGIN PRIVATE DOMAINS===
+// (Note: these are in alphabetical order by company name)
+
+// Alces Software Ltd : http://alces-software.com
+// Submitted by Mark J. Titorenko <mark.titorenko@alces-software.com>
+*.compute.estate
+*.alces.network
+
+// Amazon CloudFront : https://aws.amazon.com/cloudfront/
+// Submitted by Donavan Miller <donavanm@amazon.com>
+cloudfront.net
+
+// Amazon Elastic Compute Cloud: https://aws.amazon.com/ec2/
+// Submitted by Luke Wells <lawells@amazon.com>
+ap-northeast-1.compute.amazonaws.com
+ap-northeast-2.compute.amazonaws.com
+ap-southeast-1.compute.amazonaws.com
+ap-southeast-2.compute.amazonaws.com
+cn-north-1.compute.amazonaws.cn
+compute-1.amazonaws.com
+compute.amazonaws.cn
+compute.amazonaws.com
+eu-central-1.compute.amazonaws.com
+eu-west-1.compute.amazonaws.com
+sa-east-1.compute.amazonaws.com
+us-east-1.amazonaws.com
+us-gov-west-1.compute.amazonaws.com
+us-west-1.compute.amazonaws.com
+us-west-2.compute.amazonaws.com
+z-1.compute-1.amazonaws.com
+z-2.compute-1.amazonaws.com
+
+// Amazon Elastic Beanstalk : https://aws.amazon.com/elasticbeanstalk/
+// Submitted by Adam Stein <astein@amazon.com>
+elasticbeanstalk.com
+
+// Amazon Elastic Load Balancing : https://aws.amazon.com/elasticloadbalancing/
+// Submitted by Scott Vidmar <svidmar@amazon.com>
+elb.amazonaws.com
+
+// Amazon S3 : https://aws.amazon.com/s3/
+// Submitted by Luke Wells <lawells@amazon.com>
+s3.amazonaws.com
+s3-ap-northeast-1.amazonaws.com
+s3-ap-northeast-2.amazonaws.com
+s3-ap-southeast-1.amazonaws.com
+s3-ap-southeast-2.amazonaws.com
+s3-eu-central-1.amazonaws.com
+s3-eu-west-1.amazonaws.com
+s3-external-1.amazonaws.com
+s3-external-2.amazonaws.com
+s3-fips-us-gov-west-1.amazonaws.com
+s3-sa-east-1.amazonaws.com
+s3-us-gov-west-1.amazonaws.com
+s3-us-west-1.amazonaws.com
+s3-us-west-2.amazonaws.com
+s3.ap-northeast-2.amazonaws.com
+s3.cn-north-1.amazonaws.com.cn
+s3.eu-central-1.amazonaws.com
+
+// Aptible : https://www.aptible.com/
+// Submitted by Thomas Orozco <thomas@aptible.com>
+on-aptible.com
+
+// AVM : https://avm.de
+// Submitted by Andreas Weise <a.weise@avm.de>
+myfritz.net
+
+// BetaInABox
+// Submitted by Adrian <adrian@betainabox.com>
+betainabox.com
+
+// CentralNic : http://www.centralnic.com/names/domains
+// Submitted by registry <gavin.brown@centralnic.com>
+ae.org
+ar.com
+br.com
+cn.com
+com.de
+com.se
+de.com
+eu.com
+gb.com
+gb.net
+hu.com
+hu.net
+jp.net
+jpn.com
+kr.com
+mex.com
+no.com
+qc.com
+ru.com
+sa.com
+se.com
+se.net
+uk.com
+uk.net
+us.com
+uy.com
+za.bz
+za.com
+
+// Africa.com Web Solutions Ltd : https://registry.africa.com
+// Submitted by Gavin Brown <gavin.brown@centralnic.com>
+africa.com
+
+// iDOT Services Limited : http://www.domain.gr.com
+// Submitted by Gavin Brown <gavin.brown@centralnic.com>
+gr.com
+
+// Radix FZC : http://domains.in.net
+// Submitted by Gavin Brown <gavin.brown@centralnic.com>
+in.net
+
+// US REGISTRY LLC : http://us.org
+// Submitted by Gavin Brown <gavin.brown@centralnic.com>
+us.org
+
+// co.com Registry, LLC : https://registry.co.com
+// Submitted by Gavin Brown <gavin.brown@centralnic.com>
+co.com
+
+// c.la : http://www.c.la/
+c.la
+
+// Citrix : https://citrix.com
+// Submitted by Alex Stoddard <alex.stoddard@citrix.com>
+xenapponazure.com
+
+// cloudControl : https://www.cloudcontrol.com/
+// Submitted by Tobias Wilken <tw@cloudcontrol.com>
+cloudcontrolled.com
+cloudcontrolapp.com
+
+// co.ca : http://registry.co.ca/
+co.ca
+
+// i-registry s.r.o. : http://www.i-registry.cz/
+// Submitted by Martin Semrad <semrad@i-registry.cz>
+co.cz
+
+// CDN77.com : http://www.cdn77.com
+// Submitted by Jan Krpes <jan.krpes@cdn77.com>
+c.cdn77.org
+cdn77-ssl.net
+r.cdn77.net
+rsc.cdn77.org
+ssl.origin.cdn77-secure.org
+
+// CoDNS B.V.
+co.nl
+co.no
+
+// Commerce Guys, SAS
+// Submitted by Damien Tournoud <damien@commerceguys.com>
+*.platform.sh
+
+// Cupcake : https://cupcake.io/
+// Submitted by Jonathan Rudenberg <jonathan@cupcake.io>
+cupcake.is
+
+// cyon GmbH : https://www.cyon.ch/
+// Submitted by Dominic Luechinger <dol@cyon.ch>
+cyon.link
+cyon.site
+
+// Daplie, Inc : https://daplie.com
+// Submitted by AJ ONeal <aj@daplie.com>
+daplie.me
+
+// Dansk.net : http://www.dansk.net/
+// Submitted by Anani Voule <digital@digital.co.dk>
+biz.dk
+co.dk
+firm.dk
+reg.dk
+store.dk
+
+// deSEC : https://desec.io/
+// Submitted by Peter Thomassen <peter@desec.io>
+dedyn.io
+
+// DNShome : https://www.dnshome.de/
+// Submitted by Norbert Auler <mail@dnshome.de>
+dnshome.de
+
+// DreamHost : http://www.dreamhost.com/
+// Submitted by Andrew Farmer <andrew.farmer@dreamhost.com>
+dreamhosters.com
+
+// Drobo : http://www.drobo.com/
+// Submitted by Ricardo Padilha <rpadilha@drobo.com>
+mydrobo.com
+
+// DuckDNS : http://www.duckdns.org/
+// Submitted by Richard Harper <richard@duckdns.org>
+duckdns.org
+
+// DynDNS.com : http://www.dyndns.com/services/dns/dyndns/
+dyndns-at-home.com
+dyndns-at-work.com
+dyndns-blog.com
+dyndns-free.com
+dyndns-home.com
+dyndns-ip.com
+dyndns-mail.com
+dyndns-office.com
+dyndns-pics.com
+dyndns-remote.com
+dyndns-server.com
+dyndns-web.com
+dyndns-wiki.com
+dyndns-work.com
+dyndns.biz
+dyndns.info
+dyndns.org
+dyndns.tv
+at-band-camp.net
+ath.cx
+barrel-of-knowledge.info
+barrell-of-knowledge.info
+better-than.tv
+blogdns.com
+blogdns.net
+blogdns.org
+blogsite.org
+boldlygoingnowhere.org
+broke-it.net
+buyshouses.net
+cechire.com
+dnsalias.com
+dnsalias.net
+dnsalias.org
+dnsdojo.com
+dnsdojo.net
+dnsdojo.org
+does-it.net
+doesntexist.com
+doesntexist.org
+dontexist.com
+dontexist.net
+dontexist.org
+doomdns.com
+doomdns.org
+dvrdns.org
+dyn-o-saur.com
+dynalias.com
+dynalias.net
+dynalias.org
+dynathome.net
+dyndns.ws
+endofinternet.net
+endofinternet.org
+endoftheinternet.org
+est-a-la-maison.com
+est-a-la-masion.com
+est-le-patron.com
+est-mon-blogueur.com
+for-better.biz
+for-more.biz
+for-our.info
+for-some.biz
+for-the.biz
+forgot.her.name
+forgot.his.name
+from-ak.com
+from-al.com
+from-ar.com
+from-az.net
+from-ca.com
+from-co.net
+from-ct.com
+from-dc.com
+from-de.com
+from-fl.com
+from-ga.com
+from-hi.com
+from-ia.com
+from-id.com
+from-il.com
+from-in.com
+from-ks.com
+from-ky.com
+from-la.net
+from-ma.com
+from-md.com
+from-me.org
+from-mi.com
+from-mn.com
+from-mo.com
+from-ms.com
+from-mt.com
+from-nc.com
+from-nd.com
+from-ne.com
+from-nh.com
+from-nj.com
+from-nm.com
+from-nv.com
+from-ny.net
+from-oh.com
+from-ok.com
+from-or.com
+from-pa.com
+from-pr.com
+from-ri.com
+from-sc.com
+from-sd.com
+from-tn.com
+from-tx.com
+from-ut.com
+from-va.com
+from-vt.com
+from-wa.com
+from-wi.com
+from-wv.com
+from-wy.com
+ftpaccess.cc
+fuettertdasnetz.de
+game-host.org
+game-server.cc
+getmyip.com
+gets-it.net
+go.dyndns.org
+gotdns.com
+gotdns.org
+groks-the.info
+groks-this.info
+ham-radio-op.net
+here-for-more.info
+hobby-site.com
+hobby-site.org
+home.dyndns.org
+homedns.org
+homeftp.net
+homeftp.org
+homeip.net
+homelinux.com
+homelinux.net
+homelinux.org
+homeunix.com
+homeunix.net
+homeunix.org
+iamallama.com
+in-the-band.net
+is-a-anarchist.com
+is-a-blogger.com
+is-a-bookkeeper.com
+is-a-bruinsfan.org
+is-a-bulls-fan.com
+is-a-candidate.org
+is-a-caterer.com
+is-a-celticsfan.org
+is-a-chef.com
+is-a-chef.net
+is-a-chef.org
+is-a-conservative.com
+is-a-cpa.com
+is-a-cubicle-slave.com
+is-a-democrat.com
+is-a-designer.com
+is-a-doctor.com
+is-a-financialadvisor.com
+is-a-geek.com
+is-a-geek.net
+is-a-geek.org
+is-a-green.com
+is-a-guru.com
+is-a-hard-worker.com
+is-a-hunter.com
+is-a-knight.org
+is-a-landscaper.com
+is-a-lawyer.com
+is-a-liberal.com
+is-a-libertarian.com
+is-a-linux-user.org
+is-a-llama.com
+is-a-musician.com
+is-a-nascarfan.com
+is-a-nurse.com
+is-a-painter.com
+is-a-patsfan.org
+is-a-personaltrainer.com
+is-a-photographer.com
+is-a-player.com
+is-a-republican.com
+is-a-rockstar.com
+is-a-socialist.com
+is-a-soxfan.org
+is-a-student.com
+is-a-teacher.com
+is-a-techie.com
+is-a-therapist.com
+is-an-accountant.com
+is-an-actor.com
+is-an-actress.com
+is-an-anarchist.com
+is-an-artist.com
+is-an-engineer.com
+is-an-entertainer.com
+is-by.us
+is-certified.com
+is-found.org
+is-gone.com
+is-into-anime.com
+is-into-cars.com
+is-into-cartoons.com
+is-into-games.com
+is-leet.com
+is-lost.org
+is-not-certified.com
+is-saved.org
+is-slick.com
+is-uberleet.com
+is-very-bad.org
+is-very-evil.org
+is-very-good.org
+is-very-nice.org
+is-very-sweet.org
+is-with-theband.com
+isa-geek.com
+isa-geek.net
+isa-geek.org
+isa-hockeynut.com
+issmarterthanyou.com
+isteingeek.de
+istmein.de
+kicks-ass.net
+kicks-ass.org
+knowsitall.info
+land-4-sale.us
+lebtimnetz.de
+leitungsen.de
+likes-pie.com
+likescandy.com
+merseine.nu
+mine.nu
+misconfused.org
+mypets.ws
+myphotos.cc
+neat-url.com
+office-on-the.net
+on-the-web.tv
+podzone.net
+podzone.org
+readmyblog.org
+saves-the-whales.com
+scrapper-site.net
+scrapping.cc
+selfip.biz
+selfip.com
+selfip.info
+selfip.net
+selfip.org
+sells-for-less.com
+sells-for-u.com
+sells-it.net
+sellsyourhome.org
+servebbs.com
+servebbs.net
+servebbs.org
+serveftp.net
+serveftp.org
+servegame.org
+shacknet.nu
+simple-url.com
+space-to-rent.com
+stuff-4-sale.org
+stuff-4-sale.us
+teaches-yoga.com
+thruhere.net
+traeumtgerade.de
+webhop.biz
+webhop.info
+webhop.net
+webhop.org
+worse-than.tv
+writesthisblog.com
+
+// dynv6 : https://dynv6.com
+// Submitted by Dominik Menke <dom@digineo.de> 2016-01-18
+dynv6.net
+
+// EU.org https://eu.org/
+// Submitted by Pierre Beyssac <hostmaster@eu.org>
+eu.org
+al.eu.org
+asso.eu.org
+at.eu.org
+au.eu.org
+be.eu.org
+bg.eu.org
+ca.eu.org
+cd.eu.org
+ch.eu.org
+cn.eu.org
+cy.eu.org
+cz.eu.org
+de.eu.org
+dk.eu.org
+edu.eu.org
+ee.eu.org
+es.eu.org
+fi.eu.org
+fr.eu.org
+gr.eu.org
+hr.eu.org
+hu.eu.org
+ie.eu.org
+il.eu.org
+in.eu.org
+int.eu.org
+is.eu.org
+it.eu.org
+jp.eu.org
+kr.eu.org
+lt.eu.org
+lu.eu.org
+lv.eu.org
+mc.eu.org
+me.eu.org
+mk.eu.org
+mt.eu.org
+my.eu.org
+net.eu.org
+ng.eu.org
+nl.eu.org
+no.eu.org
+nz.eu.org
+paris.eu.org
+pl.eu.org
+pt.eu.org
+q-a.eu.org
+ro.eu.org
+ru.eu.org
+se.eu.org
+si.eu.org
+sk.eu.org
+tr.eu.org
+uk.eu.org
+us.eu.org
+
+// Facebook, Inc.
+// Submitted by Peter Ruibal <public-suffix@fb.com>
+apps.fbsbx.com
+
+// Fastly Inc. http://www.fastly.com/
+// Submitted by Vladimir Vuksan <vladimir@fastly.com>
+a.ssl.fastly.net
+b.ssl.fastly.net
+global.ssl.fastly.net
+a.prod.fastly.net
+global.prod.fastly.net
+
+// Firebase, Inc.
+// Submitted by Chris Raynor <chris@firebase.com>
+firebaseapp.com
+
+// Flynn : https://flynn.io
+// Submitted by Jonathan Rudenberg <jonathan@flynn.io>
+flynnhub.com
+
+// GDS : https://www.gov.uk/service-manual/operations/operating-servicegovuk-subdomains
+// Submitted by David Illsley <david.illsley@digital.cabinet-office.gov.uk>
+service.gov.uk
+
+// GitHub, Inc.
+// Submitted by Patrick Toomey <security@github.com>
+github.io
+githubusercontent.com
+githubcloud.com
+*.api.githubcloud.com
+*.ext.githubcloud.com
+gist.githubcloud.com
+*.githubcloudusercontent.com
+
+// GlobeHosting, Inc.
+// Submitted by Zoltan Egresi <egresi@globehosting.com>
+ro.com
+
+// GoIP DNS Services : http://www.goip.de
+// Submitted by Christian Poulter <milchstrasse@goip.de>
+goip.de
+
+// Google, Inc.
+// Submitted by Eduardo Vela <evn@google.com>
+*.0emm.com
+appspot.com
+blogspot.ae
+blogspot.al
+blogspot.am
+blogspot.ba
+blogspot.be
+blogspot.bg
+blogspot.bj
+blogspot.ca
+blogspot.cf
+blogspot.ch
+blogspot.cl
+blogspot.co.at
+blogspot.co.id
+blogspot.co.il
+blogspot.co.ke
+blogspot.co.nz
+blogspot.co.uk
+blogspot.co.za
+blogspot.com
+blogspot.com.ar
+blogspot.com.au
+blogspot.com.br
+blogspot.com.by
+blogspot.com.co
+blogspot.com.cy
+blogspot.com.ee
+blogspot.com.eg
+blogspot.com.es
+blogspot.com.mt
+blogspot.com.ng
+blogspot.com.tr
+blogspot.com.uy
+blogspot.cv
+blogspot.cz
+blogspot.de
+blogspot.dk
+blogspot.fi
+blogspot.fr
+blogspot.gr
+blogspot.hk
+blogspot.hr
+blogspot.hu
+blogspot.ie
+blogspot.in
+blogspot.is
+blogspot.it
+blogspot.jp
+blogspot.kr
+blogspot.li
+blogspot.lt
+blogspot.lu
+blogspot.md
+blogspot.mk
+blogspot.mr
+blogspot.mx
+blogspot.my
+blogspot.nl
+blogspot.no
+blogspot.pe
+blogspot.pt
+blogspot.qa
+blogspot.re
+blogspot.ro
+blogspot.rs
+blogspot.ru
+blogspot.se
+blogspot.sg
+blogspot.si
+blogspot.sk
+blogspot.sn
+blogspot.td
+blogspot.tw
+blogspot.ug
+blogspot.vn
+cloudfunctions.net
+codespot.com
+googleapis.com
+googlecode.com
+pagespeedmobilizer.com
+withgoogle.com
+withyoutube.com
+
+// Hashbang : https://hashbang.sh
+hashbang.sh
+
+// Heroku : https://www.heroku.com/
+// Submitted by Tom Maher <tmaher@heroku.com>
+herokuapp.com
+herokussl.com
+
+// iki.fi
+// Submitted by Hannu Aronsson <haa@iki.fi>
+iki.fi
+
+// info.at : http://www.info.at/
+biz.at
+info.at
+
+// Michau Enterprises Limited : http://www.co.pl/
+co.pl
+
+// Microsoft : http://microsoft.com
+// Submitted by Barry Dorrans <bdorrans@microsoft.com>
+azurewebsites.net
+azure-mobile.net
+cloudapp.net
+
+// Mozilla Foundation : https://mozilla.org/
+// Submitted by glob <glob@mozilla.com>
+bmoattachments.org
+
+// Neustar Inc.
+// Submitted by Trung Tran <Trung.Tran@neustar.biz>
+4u.com
+
+// ngrok : https://ngrok.com/
+// Submitted by Alan Shreve <alan@ngrok.com>
+ngrok.io
+
+// NFSN, Inc. : https://www.NearlyFreeSpeech.NET/
+// Submitted by Jeff Wheelhouse <support@nearlyfreespeech.net>
+nfshost.com
+
+// nsupdate.info : https://www.nsupdate.info/
+// Submitted by Thomas Waldmann <info@nsupdate.info>
+nsupdate.info
+nerdpol.ovh
+
+// NYC.mn : http://www.information.nyc.mn
+// Submitted by Matthew Brown <mattbrown@nyc.mn>
+nyc.mn
+
+// One Fold Media : http://www.onefoldmedia.com/
+// Submitted by Eddie Jones <eddie@onefoldmedia.com>
+nid.io
+
+// Opera Software, A.S.A.
+// Submitted by Yngve Pettersen <yngve@opera.com>
+operaunite.com
+
+// OutSystems
+// Submitted by Duarte Santos <domain-admin@outsystemscloud.com>
+outsystemscloud.com
+
+// OwnProvider : http://www.ownprovider.com
+// Submitted by Jan Moennich <jan.moennich@ownprovider.com>
+ownprovider.com
+
+// oy.lc
+// Submitted by Charly Coste <changaco@changaco.oy.lc>
+oy.lc
+
+// Pagefront : https://www.pagefronthq.com/
+// Submitted by Jason Kriss <jason@pagefronthq.com>
+pagefrontapp.com
+
+// .pl domains (grandfathered)
+art.pl
+gliwice.pl
+krakow.pl
+poznan.pl
+wroc.pl
+zakopane.pl
+
+// Pantheon Systems, Inc. : https://pantheon.io/
+// Submitted by Gary Dylina <gary@pantheon.io>
+pantheonsite.io
+gotpantheon.com
+
+// Peplink | Pepwave : http://peplink.com/
+// Submitted by Steve Leung <steveleung@peplink.com>
+mypep.link
+
+// prgmr.com : https://prgmr.com/
+// Submitted by Sarah Newman <owner@prgmr.com>
+xen.prgmr.com
+
+// priv.at : http://www.nic.priv.at/
+// Submitted by registry <lendl@nic.at>
+priv.at
+
+// Publication Presse Communication SARL : https://ppcom.fr
+// Submitted by Yaacov Akiba Slama <admin@chirurgiens-dentistes-en-france.fr>
+chirurgiens-dentistes-en-france.fr
+
+// QA2
+// Submitted by Daniel Dent (https://www.danieldent.com/)
+qa2.com
+
+// Rackmaze LLC : https://www.rackmaze.com
+// Submitted by Kirill Pertsev <kika@rackmaze.com>
+rackmaze.com
+rackmaze.net
+
+// Red Hat, Inc. OpenShift : https://openshift.redhat.com/
+// Submitted by Tim Kramer <tkramer@rhcloud.com>
+rhcloud.com
+
+// RethinkDB : https://www.rethinkdb.com/
+// Submitted by Chris Kastorff <info@rethinkdb.com>
+hzc.io
+
+// Sandstorm Development Group, Inc. : https://sandcats.io/
+// Submitted by Asheesh Laroia <asheesh@sandstorm.io>
+sandcats.io
+
+// Service Online LLC : http://drs.ua/
+// Submitted by Serhii Bulakh <support@drs.ua>
+biz.ua
+co.ua
+pp.ua
+
+// SinaAppEngine : http://sae.sina.com.cn/
+// Submitted by SinaAppEngine <saesupport@sinacloud.com>
+sinaapp.com
+vipsinaapp.com
+1kapp.com
+
+// Synology, Inc. : https://www.synology.com/
+// Submitted by Rony Weng <ronyweng@synology.com>
+diskstation.me
+dscloud.biz
+dscloud.me
+dscloud.mobi
+dsmynas.com
+dsmynas.net
+dsmynas.org
+familyds.com
+familyds.net
+familyds.org
+i234.me
+myds.me
+synology.me
+
+// TASK geographical domains (www.task.gda.pl/uslugi/dns)
+gda.pl
+gdansk.pl
+gdynia.pl
+med.pl
+sopot.pl
+
+// TownNews.com domains : http://www.townnews.com
+// Submitted by Dustin Ward <dward@townnews.com>
+bloxcms.com
+townnews-staging.com
+
+// UDR Limited : http://www.udr.hk.com
+// Submitted by registry <hostmaster@udr.hk.com>
+hk.com
+hk.org
+ltd.hk
+inc.hk
+
+// Viprinet Europe GmbH : http://www.viprinet.com
+// Submitted by Simon Kissel <hostmaster@viprinet.com>
+router.management
+
+// Yola : https://www.yola.com/
+// Submitted by Stefano Rivera <stefano@yola.com>
+yolasite.com
+
+// ZaNiC : http://www.za.net/
+// Submitted by registry <hostmaster@nic.za.net>
+za.net
+za.org
+
+// ===END PRIVATE DOMAINS===
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/EricNetwork/data/test_psl.txt	Sat May 22 16:52:45 2021 +0200
@@ -0,0 +1,98 @@
+// Any copyright is dedicated to the Public Domain.
+// http://creativecommons.org/publicdomain/zero/1.0/
+
+// null input.
+checkPublicSuffix(null, null);
+// Mixed case.
+checkPublicSuffix('COM', null);
+checkPublicSuffix('example.COM', 'example.com');
+checkPublicSuffix('WwW.example.COM', 'example.com');
+// Leading dot.
+checkPublicSuffix('.com', null);
+checkPublicSuffix('.example', null);
+checkPublicSuffix('.example.com', null);
+checkPublicSuffix('.example.example', null);
+// Unlisted TLD.
+checkPublicSuffix('example', null);
+checkPublicSuffix('example.example', 'example.example');
+checkPublicSuffix('b.example.example', 'example.example');
+checkPublicSuffix('a.b.example.example', 'example.example');
+// Listed, but non-Internet, TLD.
+//checkPublicSuffix('local', null);
+//checkPublicSuffix('example.local', null);
+//checkPublicSuffix('b.example.local', null);
+//checkPublicSuffix('a.b.example.local', null);
+// TLD with only 1 rule.
+checkPublicSuffix('biz', null);
+checkPublicSuffix('domain.biz', 'domain.biz');
+checkPublicSuffix('b.domain.biz', 'domain.biz');
+checkPublicSuffix('a.b.domain.biz', 'domain.biz');
+// TLD with some 2-level rules.
+checkPublicSuffix('com', null);
+checkPublicSuffix('example.com', 'example.com');
+checkPublicSuffix('b.example.com', 'example.com');
+checkPublicSuffix('a.b.example.com', 'example.com');
+checkPublicSuffix('uk.com', null);
+checkPublicSuffix('example.uk.com', 'example.uk.com');
+checkPublicSuffix('b.example.uk.com', 'example.uk.com');
+checkPublicSuffix('a.b.example.uk.com', 'example.uk.com');
+checkPublicSuffix('test.ac', 'test.ac');
+// TLD with only 1 (wildcard) rule.
+checkPublicSuffix('bd', null);
+checkPublicSuffix('c.bd', null);
+checkPublicSuffix('b.c.bd', 'b.c.bd');
+checkPublicSuffix('a.b.c.bd', 'b.c.bd');
+// More complex TLD.
+checkPublicSuffix('jp', null);
+checkPublicSuffix('test.jp', 'test.jp');
+checkPublicSuffix('www.test.jp', 'test.jp');
+checkPublicSuffix('ac.jp', null);
+checkPublicSuffix('test.ac.jp', 'test.ac.jp');
+checkPublicSuffix('www.test.ac.jp', 'test.ac.jp');
+checkPublicSuffix('kyoto.jp', null);
+checkPublicSuffix('test.kyoto.jp', 'test.kyoto.jp');
+checkPublicSuffix('ide.kyoto.jp', null);
+checkPublicSuffix('b.ide.kyoto.jp', 'b.ide.kyoto.jp');
+checkPublicSuffix('a.b.ide.kyoto.jp', 'b.ide.kyoto.jp');
+checkPublicSuffix('c.kobe.jp', null);
+checkPublicSuffix('b.c.kobe.jp', 'b.c.kobe.jp');
+checkPublicSuffix('a.b.c.kobe.jp', 'b.c.kobe.jp');
+checkPublicSuffix('city.kobe.jp', 'city.kobe.jp');
+checkPublicSuffix('www.city.kobe.jp', 'city.kobe.jp');
+// TLD with a wildcard rule and exceptions.
+checkPublicSuffix('ck', null);
+checkPublicSuffix('test.ck', null);
+checkPublicSuffix('b.test.ck', 'b.test.ck');
+checkPublicSuffix('a.b.test.ck', 'b.test.ck');
+checkPublicSuffix('www.ck', 'www.ck');
+checkPublicSuffix('www.www.ck', 'www.ck');
+// US K12.
+checkPublicSuffix('us', null);
+checkPublicSuffix('test.us', 'test.us');
+checkPublicSuffix('www.test.us', 'test.us');
+checkPublicSuffix('ak.us', null);
+checkPublicSuffix('test.ak.us', 'test.ak.us');
+checkPublicSuffix('www.test.ak.us', 'test.ak.us');
+checkPublicSuffix('k12.ak.us', null);
+checkPublicSuffix('test.k12.ak.us', 'test.k12.ak.us');
+checkPublicSuffix('www.test.k12.ak.us', 'test.k12.ak.us');
+// IDN labels.
+checkPublicSuffix('食狮.com.cn', '食狮.com.cn');
+checkPublicSuffix('食狮.公司.cn', '食狮.公司.cn');
+checkPublicSuffix('www.食狮.公司.cn', '食狮.公司.cn');
+checkPublicSuffix('shishi.公司.cn', 'shishi.公司.cn');
+checkPublicSuffix('公司.cn', null);
+checkPublicSuffix('食狮.中国', '食狮.中国');
+checkPublicSuffix('www.食狮.中国', '食狮.中国');
+checkPublicSuffix('shishi.中国', 'shishi.中国');
+checkPublicSuffix('中国', null);
+// Same as above, but punycoded.
+checkPublicSuffix('xn--85x722f.com.cn', 'xn--85x722f.com.cn');
+checkPublicSuffix('xn--85x722f.xn--55qx5d.cn', 'xn--85x722f.xn--55qx5d.cn');
+checkPublicSuffix('www.xn--85x722f.xn--55qx5d.cn', 'xn--85x722f.xn--55qx5d.cn');
+checkPublicSuffix('shishi.xn--55qx5d.cn', 'shishi.xn--55qx5d.cn');
+checkPublicSuffix('xn--55qx5d.cn', null);
+checkPublicSuffix('xn--85x722f.xn--fiqs8s', 'xn--85x722f.xn--fiqs8s');
+checkPublicSuffix('www.xn--85x722f.xn--fiqs8s', 'xn--85x722f.xn--fiqs8s');
+checkPublicSuffix('shishi.xn--fiqs8s', 'shishi.xn--fiqs8s');
+checkPublicSuffix('xn--fiqs8s', null);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/EricUtilities/EricCache.py	Sat May 22 16:52:45 2021 +0200
@@ -0,0 +1,228 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2017 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing classes used for caching objects.
+"""
+
+from PyQt6.QtCore import QDateTime, QTimer
+
+
+class EricCache:
+    """
+    Class implementing a LRU cache of a specific size.
+    
+    If the maximum number of entries is exceeded, the least recently used item
+    is removed from the cache. A cache hit moves the entry to the front of the
+    cache.
+    """
+    def __init__(self, size=100):
+        """
+        Constructor
+        
+        @param size maximum number of entries that may be stored in the cache
+        @type int
+        @exception ValueError raised to indicate an illegal 'size' parameter
+        """
+        if size < 0:
+            raise ValueError("'size' parameter must be positive.")
+        
+        self.__size = size
+        
+        # internal objects
+        self.__keyList = []
+        self.__store = {}           # stores the cache entries
+        self.__accesStore = {}      # stores the last access date and times
+        self.__hits = 0
+        self.__misses = 0
+        self.__maxsize = 0
+        self.__maxCacheTime = 0     # 0 seconds means aging is disabled
+        
+        self.__cacheTimer = QTimer()
+        self.__cacheTimer.setSingleShot(True)
+        self.__cacheTimer.timeout.connect(self.__pruneCache)
+    
+    def __moveLast(self, key):
+        """
+        Private method to move a cached item to the MRU position.
+        
+        @param key key of the item to be retrieved
+        @type any hashable type that can be used as a dict key
+        """
+        self.__keyList.remove(key)
+        self.__keyList.append(key)
+    
+    def __adjustToSize(self):
+        """
+        Private method to adjust the cache to its size.
+        """
+        if self.__size:
+            removeList = self.__keyList[:-self.__size]
+            self.__keyList = self.__keyList[-self.__size:]
+            for key in removeList:
+                del self.__store[key]
+                del self.__accesStore[key]
+        else:
+            self.reset()
+    
+    def getSize(self):
+        """
+        Public method to get the maximum size of the cache.
+        
+        @return maximum number of entries of the cache
+        @rtype int
+        """
+        return self.__size
+    
+    def setSize(self, newSize):
+        """
+        Public method to change the maximum size of the cache.
+        
+        @param newSize maximum number of entries that may be stored in the
+            cache
+        @type int
+        """
+        if newSize >= 0:
+            self.__size = newSize
+            self.__adjustToSize()
+    
+    def getMaximumCacheTime(self):
+        """
+        Public method to get the maximum time entries may exist in the cache.
+        
+        @return maximum cache time in seconds
+        @rtype int
+        """
+        return self.__maxCacheTime
+    
+    def setMaximumCacheTime(self, time):
+        """
+        Public method to set the maximum time entries may exist in the cache.
+        
+        @param time maximum cache time in seconds
+        @type int
+        """
+        if time != self.__maxCacheTime:
+            self.__cacheTimer.stop()
+            self.__pruneCache()
+            self.__maxCacheTime = time
+            if self.__maxCacheTime > 0:
+                self.__cacheTimer.setInterval(self.__maxCacheTime * 1000)
+                self.__cacheTimer.start()
+    
+    def get(self, key):
+        """
+        Public method to get an entry from the cache given its key.
+        
+        If the key is present in the cache, it is moved to the MRU position.
+        
+        @param key key of the item to be retrieved
+        @type any hashable type that can be used as a dict key
+        @return cached item for the given key or None, if the key is not
+            present
+        @rtype object or None
+        """
+        if key in self.__store:
+            self.__hits += 1
+            self.__moveLast(key)
+            self.__accesStore[key] = QDateTime.currentDateTimeUtc()
+            return self.__store[key]
+        else:
+            self.__misses += 1
+            return None
+    
+    def add(self, key, item):
+        """
+        Public method to add an item to the cache.
+        
+        If the key is already in use, the cached item is replaced by the new
+        one given and is moved to the MRU position
+        
+        @param key key of the item to be retrieved
+        @type any hashable type that can be used as a dict key
+        @param item item to be cached under the given key
+        @type object
+        """
+        if key in self.__store:
+            self.__moveLast(key)
+        else:
+            self.__keyList.append(key)
+        self.__store[key] = item
+        self.__accesStore[key] = QDateTime.currentDateTimeUtc()
+        
+        self.__adjustToSize()
+        
+        self.__maxsize = max(self.__maxsize, len(self.__keyList))
+    
+    def remove(self, key):
+        """
+        Public method to remove an item from the cache.
+        
+        @param key key of the item to be retrieved
+        @type any hashable type that can be used as a dict key
+        """
+        if key in self.__store:
+            del self.__store[key]
+            del self.__accesStore[key]
+            self.__keyList.remove(key)
+    
+    def clear(self):
+        """
+        Public method to clear the cache.
+        """
+        self.__keyList = []
+        self.__store = {}
+        self.__accesStore = {}
+    
+    def reset(self):
+        """
+        Public method to reset the cache.
+        
+        This is like clear() but sets the various counters to their initial
+        value as well.
+        """
+        self.clear()
+        self.__hits = 0
+        self.__misses = 0
+        self.__maxsize = 0
+    
+    def length(self):
+        """
+        Public method to get the current length of the cache.
+        
+        @return current length of the cache
+        @rtype int
+        """
+        return len(self.__keyList)
+    
+    def info(self):
+        """
+        Public method to get some information about the cache.
+        
+        @return dictionary containing the cache info
+        @rtype dict (with keys "hits", "misses", "maxsize", "currsize")
+        """
+        return {
+            "hits": self.__hits,
+            "misses": self.__misses,
+            "maxsize": self.__maxsize,
+            "currsize": self.length(),
+        }
+    
+    def __pruneCache(self):
+        """
+        Private slot to prune outdated cache entries and restart the timer.
+        """
+        if self.__maxCacheTime > 0:
+            current = QDateTime.currentDateTimeUtc()
+            
+            keysToBeDeleted = []
+            for key, lastAccessTime in self.__accesStore.items():
+                if lastAccessTime.secsTo(current) > self.__maxCacheTime:
+                    keysToBeDeleted.append(key)
+            for key in keysToBeDeleted:
+                self.remove(key)
+        
+            self.__cacheTimer.start()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/EricUtilities/EricMutexLocker.py	Sat May 22 16:52:45 2021 +0200
@@ -0,0 +1,50 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2020 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing a context manager locking and unlocking a mutex.
+"""
+
+import contextlib
+
+
+class EricMutexLocker(contextlib.AbstractContextManager):
+    """
+    Class implementing a context manager locking and unlocking a mutex.
+    """
+    def __init__(self, mutex):
+        """
+        Constructor
+        
+        @param mutex reference to the mutex to be locked
+        @type QMutex or QRecursiveMutex
+        """
+        self.__mutex = mutex
+    
+    def __enter__(self):
+        """
+        Special method called when entering the runtime ccontext.
+        
+        @return reference to the context manager object
+        @rtype E5OverrideCursor
+        """
+        self.__mutex.lock()
+        
+        return self
+    
+    def __exit__(self, exc_type, exc_value, traceback):
+        """
+        Special method called when exiting the runtime ccontext.
+        
+        @param exc_type type of an exception raised in the runtime context
+        @param exc_value value of an exception raised in the runtime context
+        @param traceback traceback of an exception raised in the runtime
+            context
+        @return always returns None to not suppress any exception
+        @rtype None
+        """
+        self.__mutex.unlock()
+        
+        return None     # __IGNORE_WARNING_M831__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/EricUtilities/__init__.py	Sat May 22 16:52:45 2021 +0200
@@ -0,0 +1,8 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2017 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Package containing utility modules.
+"""
--- a/eric7/Network/IRC/IrcWidget.py	Sat May 22 12:54:57 2021 +0200
+++ b/eric7/Network/IRC/IrcWidget.py	Sat May 22 16:52:45 2021 +0200
@@ -17,7 +17,7 @@
 from PyQt6.QtNetwork import QTcpSocket, QAbstractSocket
 try:
     from PyQt6.QtNetwork import QSslSocket, QSslConfiguration
-    from E5Network.E5SslErrorHandler import E5SslErrorHandler, E5SslErrorState
+    from EricNetwork.EricSslErrorHandler import EricSslErrorHandler, EricSslErrorState
     SSL_AVAILABLE = True
 except ImportError:
     SSL_AVAILABLE = False
@@ -92,7 +92,7 @@
         
         self.__socket = None
         if SSL_AVAILABLE:
-            self.__sslErrorHandler = E5SslErrorHandler(self)
+            self.__sslErrorHandler = EricSslErrorHandler(self)
         else:
             self.__sslErrorHandler = None
         
@@ -918,7 +918,7 @@
         """
         ignored, defaultChanged = self.__sslErrorHandler.sslErrors(
             errors, self.__server.getName(), self.__server.getPort())
-        if ignored == E5SslErrorState.NOT_IGNORED:
+        if ignored == EricSslErrorState.NOT_IGNORED:
             self.networkWidget.addErrorMessage(
                 self.tr("SSL Error"),
                 self.tr(
@@ -932,7 +932,7 @@
             if defaultChanged:
                 self.__socket.setSslConfiguration(
                     QSslConfiguration.defaultConfiguration())
-            if ignored == E5SslErrorState.USER_IGNORED:
+            if ignored == EricSslErrorState.USER_IGNORED:
                 self.networkWidget.addErrorMessage(
                     self.tr("SSL Error"),
                     self.tr(
--- a/eric7/PipInterface/Pip.py	Sat May 22 12:54:57 2021 +0200
+++ b/eric7/PipInterface/Pip.py	Sat May 22 16:52:45 2021 +0200
@@ -21,9 +21,9 @@
 from E5Gui import E5MessageBox
 from E5Gui.E5Application import e5App
 
-from E5Network.E5NetworkProxyFactory import proxyAuthenticationRequired
+from EricNetwork.EricNetworkProxyFactory import proxyAuthenticationRequired
 try:
-    from E5Network.E5SslErrorHandler import E5SslErrorHandler
+    from EricNetwork.EricSslErrorHandler import EricSslErrorHandler
     SSL_AVAILABLE = True
 except ImportError:
     SSL_AVAILABLE = False
@@ -57,7 +57,7 @@
         self.__networkManager.proxyAuthenticationRequired.connect(
             proxyAuthenticationRequired)
         if SSL_AVAILABLE:
-            self.__sslErrorHandler = E5SslErrorHandler(self)
+            self.__sslErrorHandler = EricSslErrorHandler(self)
             self.__networkManager.sslErrors.connect(
                 self.__sslErrorHandler.sslErrorsReply)
         self.__replies = []
--- a/eric7/PluginManager/PluginManager.py	Sat May 22 12:54:57 2021 +0200
+++ b/eric7/PluginManager/PluginManager.py	Sat May 22 16:52:45 2021 +0200
@@ -25,9 +25,9 @@
 from E5Gui import E5MessageBox
 from E5Gui.E5Application import e5App
 
-from E5Network.E5NetworkProxyFactory import proxyAuthenticationRequired
+from EricNetwork.EricNetworkProxyFactory import proxyAuthenticationRequired
 try:
-    from E5Network.E5SslErrorHandler import E5SslErrorHandler, E5SslErrorState
+    from EricNetwork.EricSslErrorHandler import EricSslErrorHandler, EricSslErrorState
     SSL_AVAILABLE = True
 except ImportError:
     SSL_AVAILABLE = False
@@ -157,7 +157,7 @@
         self.__networkManager.proxyAuthenticationRequired.connect(
             proxyAuthenticationRequired)
         if SSL_AVAILABLE:
-            self.__sslErrorHandler = E5SslErrorHandler(self)
+            self.__sslErrorHandler = EricSslErrorHandler(self)
             self.__networkManager.sslErrors.connect(self.__sslErrors)
         self.__replies = []
         
@@ -1395,7 +1395,7 @@
         @param errors list of SSL errors (list of QSslError)
         """
         ignored = self.__sslErrorHandler.sslErrorsReply(reply, errors)[0]
-        if ignored == E5SslErrorState.NOT_IGNORED:
+        if ignored == EricSslErrorState.NOT_IGNORED:
             self.__downloadCancelled = True
     
     ########################################################################
--- a/eric7/PluginManager/PluginRepositoryDialog.py	Sat May 22 12:54:57 2021 +0200
+++ b/eric7/PluginManager/PluginRepositoryDialog.py	Sat May 22 16:52:45 2021 +0200
@@ -31,9 +31,9 @@
 from E5Gui.E5MainWindow import E5MainWindow
 from E5Gui.E5Application import e5App
 
-from E5Network.E5NetworkProxyFactory import proxyAuthenticationRequired
+from EricNetwork.EricNetworkProxyFactory import proxyAuthenticationRequired
 try:
-    from E5Network.E5SslErrorHandler import E5SslErrorHandler, E5SslErrorState
+    from EricNetwork.EricSslErrorHandler import EricSslErrorHandler, EricSslErrorState
     SSL_AVAILABLE = True
 except ImportError:
     SSL_AVAILABLE = False
@@ -136,7 +136,7 @@
         self.__networkManager.proxyAuthenticationRequired.connect(
             proxyAuthenticationRequired)
         if SSL_AVAILABLE:
-            self.__sslErrorHandler = E5SslErrorHandler(self)
+            self.__sslErrorHandler = EricSslErrorHandler(self)
             self.__networkManager.sslErrors.connect(self.__sslErrors)
         self.__replies = []
         
@@ -689,7 +689,7 @@
         @param errors list of SSL errors (list of QSslError)
         """
         ignored = self.__sslErrorHandler.sslErrorsReply(reply, errors)[0]
-        if ignored == E5SslErrorState.NOT_IGNORED:
+        if ignored == EricSslErrorState.NOT_IGNORED:
             self.__downloadCancel(reply)
     
     def getDownloadedPlugins(self):
--- a/eric7/Plugins/UiExtensionPlugins/Translator/TranslatorEngines/IbmWatsonEngine.py	Sat May 22 12:54:57 2021 +0200
+++ b/eric7/Plugins/UiExtensionPlugins/Translator/TranslatorEngines/IbmWatsonEngine.py	Sat May 22 16:52:45 2021 +0200
@@ -16,7 +16,7 @@
 
 from E5Gui import E5MessageBox
 
-from E5Network.E5NetworkProxyFactory import proxyAuthenticationRequired
+from EricNetwork.EricNetworkProxyFactory import proxyAuthenticationRequired
 
 from .TranslationEngine import TranslationEngine
 
--- a/eric7/Plugins/UiExtensionPlugins/Translator/TranslatorRequest.py	Sat May 22 12:54:57 2021 +0200
+++ b/eric7/Plugins/UiExtensionPlugins/Translator/TranslatorRequest.py	Sat May 22 16:52:45 2021 +0200
@@ -13,7 +13,7 @@
     QNetworkAccessManager, QNetworkRequest, QNetworkReply
 )
 
-from E5Network.E5NetworkProxyFactory import proxyAuthenticationRequired
+from EricNetwork.EricNetworkProxyFactory import proxyAuthenticationRequired
 
 
 class TranslatorRequest(QObject):
--- a/eric7/Plugins/VcsPlugins/vcsPySvn/SvnBlameDialog.py	Sat May 22 12:54:57 2021 +0200
+++ b/eric7/Plugins/VcsPlugins/vcsPySvn/SvnBlameDialog.py	Sat May 22 16:52:45 2021 +0200
@@ -16,7 +16,7 @@
     QHeaderView, QDialog, QDialogButtonBox, QTreeWidgetItem
 )
 
-from E5Utilities.E5MutexLocker import E5MutexLocker
+from EricUtilities.EricMutexLocker import EricMutexLocker
 
 from .SvnDialogMixin import SvnDialogMixin
 from .Ui_SvnBlameDialog import Ui_SvnBlameDialog
@@ -73,7 +73,7 @@
         cwd = os.getcwd()
         os.chdir(dname)
         try:
-            with E5MutexLocker(self.vcs.vcsExecutionMutex):
+            with EricMutexLocker(self.vcs.vcsExecutionMutex):
                 annotations = self.client.annotate(fname)
             for annotation in annotations:
                 author = annotation["author"]
--- a/eric7/Plugins/VcsPlugins/vcsPySvn/SvnChangeListsDialog.py	Sat May 22 12:54:57 2021 +0200
+++ b/eric7/Plugins/VcsPlugins/vcsPySvn/SvnChangeListsDialog.py	Sat May 22 16:52:45 2021 +0200
@@ -16,7 +16,7 @@
 
 from E5Gui.E5OverrideCursor import E5OverrideCursor
 
-from E5Utilities.E5MutexLocker import E5MutexLocker
+from EricUtilities.EricMutexLocker import EricMutexLocker
 
 from .SvnDialogMixin import SvnDialogMixin
 
@@ -82,7 +82,7 @@
         
         with E5OverrideCursor():
             try:
-                with E5MutexLocker(self.vcs.vcsExecutionMutex):
+                with EricMutexLocker(self.vcs.vcsExecutionMutex):
                     entries = self.client.get_changelist(
                         path, depth=pysvn.depth.infinity)
                 for entry in entries:
--- a/eric7/Plugins/VcsPlugins/vcsPySvn/SvnDiffDialog.py	Sat May 22 12:54:57 2021 +0200
+++ b/eric7/Plugins/VcsPlugins/vcsPySvn/SvnDiffDialog.py	Sat May 22 16:52:45 2021 +0200
@@ -20,7 +20,7 @@
 from E5Gui import E5MessageBox, E5FileDialog
 from E5Gui.E5OverrideCursor import E5OverrideCursor
 
-from E5Utilities.E5MutexLocker import E5MutexLocker
+from EricUtilities.EricMutexLocker import EricMutexLocker
 
 from .SvnDialogMixin import SvnDialogMixin
 from .Ui_SvnDiffDialog import Ui_SvnDiffDialog
@@ -210,7 +210,7 @@
                 dname = e5App().getObject('Project').getRelativePath(dname)
                 if dname:
                     dname += "/"
-                with E5MutexLocker(self.vcs.vcsExecutionMutex):
+                with EricMutexLocker(self.vcs.vcsExecutionMutex):
                     for name in fnames:
                         self.__showError(
                             self.tr("Processing file '{0}'...\n").format(name))
--- a/eric7/Plugins/VcsPlugins/vcsPySvn/SvnInfoDialog.py	Sat May 22 12:54:57 2021 +0200
+++ b/eric7/Plugins/VcsPlugins/vcsPySvn/SvnInfoDialog.py	Sat May 22 16:52:45 2021 +0200
@@ -15,7 +15,7 @@
 from PyQt6.QtCore import Qt
 from PyQt6.QtWidgets import QDialog, QApplication
 
-from E5Utilities.E5MutexLocker import E5MutexLocker
+from EricUtilities.EricMutexLocker import EricMutexLocker
 
 from .SvnUtilities import formatTime
 from .SvnDialogMixin import SvnDialogMixin
@@ -61,7 +61,7 @@
         cwd = os.getcwd()
         os.chdir(projectPath)
         try:
-            with E5MutexLocker(self.vcs.vcsExecutionMutex):
+            with EricMutexLocker(self.vcs.vcsExecutionMutex):
                 entries = self.client.info2(fn, recurse=False)
             infoStr = "<table>"
             for path, info in entries:
--- a/eric7/Plugins/VcsPlugins/vcsPySvn/SvnLogBrowserDialog.py	Sat May 22 12:54:57 2021 +0200
+++ b/eric7/Plugins/VcsPlugins/vcsPySvn/SvnLogBrowserDialog.py	Sat May 22 16:52:45 2021 +0200
@@ -20,7 +20,7 @@
 from E5Gui import E5MessageBox
 from E5Gui.E5OverrideCursor import E5OverrideCursor
 
-from E5Utilities.E5MutexLocker import E5MutexLocker
+from EricUtilities.EricMutexLocker import EricMutexLocker
 
 from .SvnUtilities import formatTime, dateFromTime_t
 from .SvnDialogMixin import SvnDialogMixin
@@ -290,7 +290,7 @@
                 nextRev = 0
                 fetched = 0
                 logs = []
-                with E5MutexLocker(self.vcs.vcsExecutionMutex):
+                with EricMutexLocker(self.vcs.vcsExecutionMutex):
                     while fetched < limit:
                         flimit = min(fetchLimit, limit - fetched)
                         revstart = (
--- a/eric7/Plugins/VcsPlugins/vcsPySvn/SvnPropListDialog.py	Sat May 22 12:54:57 2021 +0200
+++ b/eric7/Plugins/VcsPlugins/vcsPySvn/SvnPropListDialog.py	Sat May 22 16:52:45 2021 +0200
@@ -17,7 +17,7 @@
     QWidget, QHeaderView, QApplication, QDialogButtonBox, QTreeWidgetItem
 )
 
-from E5Utilities.E5MutexLocker import E5MutexLocker
+from EricUtilities.EricMutexLocker import EricMutexLocker
 
 from .SvnDialogMixin import SvnDialogMixin
 from .Ui_SvnPropListDialog import Ui_SvnPropListDialog
@@ -120,7 +120,7 @@
         
         cwd = os.getcwd()
         os.chdir(dname)
-        with E5MutexLocker(self.vcs.vcsExecutionMutex):
+        with EricMutexLocker(self.vcs.vcsExecutionMutex):
             try:
                 for name in fnames:
                     proplist = self.client.proplist(name, recurse=recursive)
--- a/eric7/Plugins/VcsPlugins/vcsPySvn/SvnRepoBrowserDialog.py	Sat May 22 12:54:57 2021 +0200
+++ b/eric7/Plugins/VcsPlugins/vcsPySvn/SvnRepoBrowserDialog.py	Sat May 22 16:52:45 2021 +0200
@@ -17,7 +17,7 @@
 from E5Gui import E5MessageBox
 from E5Gui.E5OverrideCursor import E5OverrideCursor
 
-from E5Utilities.E5MutexLocker import E5MutexLocker
+from EricUtilities.EricMutexLocker import EricMutexLocker
 
 from .SvnUtilities import formatTime
 from .SvnDialogMixin import SvnDialogMixin
@@ -151,7 +151,7 @@
         
         with E5OverrideCursor():
             try:
-                with E5MutexLocker(self.vcs.vcsExecutionMutex):
+                with EricMutexLocker(self.vcs.vcsExecutionMutex):
                     entries = self.client.list(url, recurse=False)
                 firstTime = parent == self.repoTree
                 for dirent, _lock in entries:
--- a/eric7/Plugins/VcsPlugins/vcsPySvn/SvnStatusDialog.py	Sat May 22 12:54:57 2021 +0200
+++ b/eric7/Plugins/VcsPlugins/vcsPySvn/SvnStatusDialog.py	Sat May 22 16:52:45 2021 +0200
@@ -22,7 +22,7 @@
 from E5Gui import E5MessageBox
 from E5Gui.E5OverrideCursor import E5OverrideCursor
 
-from E5Utilities.E5MutexLocker import E5MutexLocker
+from EricUtilities.EricMutexLocker import EricMutexLocker
 
 from .SvnConst import svnStatusMap
 from .SvnDialogMixin import SvnDialogMixin
@@ -323,7 +323,7 @@
             cwd = os.getcwd()
             os.chdir(self.dname)
             try:
-                with E5MutexLocker(self.vcs.vcsExecutionMutex):
+                with EricMutexLocker(self.vcs.vcsExecutionMutex):
                     for name in fnames:
                         # step 1: determine changelists and their files
                         changelistsDict = {}
--- a/eric7/Plugins/VcsPlugins/vcsPySvn/SvnTagBranchListDialog.py	Sat May 22 12:54:57 2021 +0200
+++ b/eric7/Plugins/VcsPlugins/vcsPySvn/SvnTagBranchListDialog.py	Sat May 22 16:52:45 2021 +0200
@@ -20,7 +20,7 @@
 
 from E5Gui import E5MessageBox
 
-from E5Utilities.E5MutexLocker import E5MutexLocker
+from EricUtilities.EricMutexLocker import EricMutexLocker
 
 from .SvnUtilities import formatTime
 
@@ -139,7 +139,7 @@
         cwd = os.getcwd()
         os.chdir(dname)
         try:
-            with E5MutexLocker(self.vcs.vcsExecutionMutex):
+            with EricMutexLocker(self.vcs.vcsExecutionMutex):
                 entries = self.client.list(path, recurse=False)
             for dirent, _lock in entries:
                 if dirent["path"] != path:
--- a/eric7/Plugins/VcsPlugins/vcsPySvn/subversion.py	Sat May 22 12:54:57 2021 +0200
+++ b/eric7/Plugins/VcsPlugins/vcsPySvn/subversion.py	Sat May 22 16:52:45 2021 +0200
@@ -20,7 +20,7 @@
 from E5Gui.E5Application import e5App
 from E5Gui import E5MessageBox
 
-from E5Utilities.E5MutexLocker import E5MutexLocker
+from EricUtilities.EricMutexLocker import EricMutexLocker
 
 from VCS.VersionControl import VersionControl
 
@@ -316,7 +316,7 @@
                 client)
             QApplication.processEvents()
         try:
-            with E5MutexLocker(self.vcsExecutionMutex):
+            with EricMutexLocker(self.vcsExecutionMutex):
                 rev = client.import_(".", url, msg, recurse, ignore=True)
             status = True
         except pysvn.ClientError as e:
@@ -392,7 +392,7 @@
                 client)
             QApplication.processEvents()
         try:
-            with E5MutexLocker(self.vcsExecutionMutex):
+            with EricMutexLocker(self.vcsExecutionMutex):
                 client.checkout(url, projectDir, recurse)
             status = True
         except pysvn.ClientError as e:
@@ -457,7 +457,7 @@
             client)
         QApplication.processEvents()
         try:
-            with E5MutexLocker(self.vcsExecutionMutex):
+            with EricMutexLocker(self.vcsExecutionMutex):
                 client.export(url, projectDir, force=True, recurse=recurse)
             status = True
         except pysvn.ClientError as e:
@@ -584,7 +584,7 @@
                 client)
             QApplication.processEvents()
         try:
-            with E5MutexLocker(self.vcsExecutionMutex):
+            with EricMutexLocker(self.vcsExecutionMutex):
                 rev = (
                     client.checkin(
                         fnames, msg, recurse=recurse, keep_locks=keeplocks,
@@ -638,7 +638,7 @@
                 client)
         QApplication.processEvents()
         try:
-            with E5MutexLocker(self.vcsExecutionMutex):
+            with EricMutexLocker(self.vcsExecutionMutex):
                 client.update(fnames, recurse)
         except pysvn.ClientError as e:
             dlg.showError(e.args[0])
@@ -750,7 +750,7 @@
                 client)
             QApplication.processEvents()
         try:
-            with E5MutexLocker(self.vcsExecutionMutex):
+            with EricMutexLocker(self.vcsExecutionMutex):
                 client.add(names, recurse=recurse, force=force,
                            ignore=not noignore)
         except pysvn.ClientError as e:
@@ -858,7 +858,7 @@
             client)
         QApplication.processEvents()
         try:
-            with E5MutexLocker(self.vcsExecutionMutex):
+            with EricMutexLocker(self.vcsExecutionMutex):
                 client.add(names, recurse=recurse, force=force, ignore=ignore)
         except pysvn.ClientError as e:
             dlg.showError(e.args[0])
@@ -895,7 +895,7 @@
                 client)
             QApplication.processEvents()
         try:
-            with E5MutexLocker(self.vcsExecutionMutex):
+            with EricMutexLocker(self.vcsExecutionMutex):
                 client.remove(name, force=force)
             res = True
         except pysvn.ClientError as e:
@@ -957,7 +957,7 @@
                     client, log=log)
                 QApplication.processEvents()
             try:
-                with E5MutexLocker(self.vcsExecutionMutex):
+                with EricMutexLocker(self.vcsExecutionMutex):
                     client.move(name, target, force=force)
                 res = True
             except pysvn.ClientError as e:
@@ -1096,7 +1096,7 @@
                 client, log=log)
             QApplication.processEvents()
             try:
-                with E5MutexLocker(self.vcsExecutionMutex):
+                with EricMutexLocker(self.vcsExecutionMutex):
                     rev = client.copy(reposURL, url)
             except pysvn.ClientError as e:
                 dlg.showError(e.args[0])
@@ -1109,7 +1109,7 @@
                 client, log=log)
             QApplication.processEvents()
             try:
-                with E5MutexLocker(self.vcsExecutionMutex):
+                with EricMutexLocker(self.vcsExecutionMutex):
                     rev = client.remove(url)
             except pysvn.ClientError as e:
                 dlg.showError(e.args[0])
@@ -1160,7 +1160,7 @@
                 client)
             QApplication.processEvents()
             try:
-                with E5MutexLocker(self.vcsExecutionMutex):
+                with EricMutexLocker(self.vcsExecutionMutex):
                     client.revert(name, recurse)
             except pysvn.ClientError as e:
                 dlg.showError(e.args[0])
@@ -1237,7 +1237,7 @@
                         client)
         QApplication.processEvents()
         try:
-            with E5MutexLocker(self.vcsExecutionMutex):
+            with EricMutexLocker(self.vcsExecutionMutex):
                 rev = client.switch(name, url)
             dlg.showMessage(self.tr("Revision {0}.\n").format(rev.number))
         except pysvn.ClientError as e:
@@ -1343,7 +1343,7 @@
             client)
         QApplication.processEvents()
         try:
-            with E5MutexLocker(self.vcsExecutionMutex):
+            with EricMutexLocker(self.vcsExecutionMutex):
                 client.merge(url1, revision1, url2, revision2, fname,
                              recurse=recurse, force=force)
         except pysvn.ClientError as e:
@@ -1484,7 +1484,7 @@
             )
             
             with contextlib.suppress(pysvn.ClientError):
-                with E5MutexLocker(self.vcsExecutionMutex):
+                with EricMutexLocker(self.vcsExecutionMutex):
                     allFiles = client.status(dname, recurse=True, get_all=True,
                                              ignore=True, update=False)
                 dirs = [x for x in names.keys() if os.path.isdir(x)]
@@ -1561,7 +1561,7 @@
             )
             
             with contextlib.suppress(pysvn.ClientError):
-                with E5MutexLocker(self.vcsExecutionMutex):
+                with EricMutexLocker(self.vcsExecutionMutex):
                     allFiles = client.status(dname, recurse=True, get_all=True,
                                              ignore=True, update=False)
                 for file in allFiles:
@@ -1635,7 +1635,7 @@
                         client)
         QApplication.processEvents()
         try:
-            with E5MutexLocker(self.vcsExecutionMutex):
+            with EricMutexLocker(self.vcsExecutionMutex):
                 client.cleanup(name)
         except pysvn.ClientError as e:
             dlg.showError(e.args[0])
@@ -1762,7 +1762,7 @@
         """
         client = pysvn.Client()
         try:
-            with E5MutexLocker(self.vcsExecutionMutex):
+            with EricMutexLocker(self.vcsExecutionMutex):
                 entry = client.info(path)
             url = entry.url
         except pysvn.ClientError:
@@ -1793,7 +1793,7 @@
                         client)
         QApplication.processEvents()
         try:
-            with E5MutexLocker(self.vcsExecutionMutex):
+            with EricMutexLocker(self.vcsExecutionMutex):
                 for name in fnames:
                     client.resolved(name, recurse=recurse)
         except pysvn.ClientError as e:
@@ -1833,7 +1833,7 @@
                 client, log=log)
             QApplication.processEvents()
             try:
-                with E5MutexLocker(self.vcsExecutionMutex):
+                with EricMutexLocker(self.vcsExecutionMutex):
                     client.copy(name, target)
                 res = True
             except pysvn.ClientError as e:
@@ -1907,7 +1907,7 @@
                 client)
             QApplication.processEvents()
             try:
-                with E5MutexLocker(self.vcsExecutionMutex):
+                with EricMutexLocker(self.vcsExecutionMutex):
                     for name in fnames:
                         client.propset(propName, propValue, name,
                                        recurse=recurse, skip_checks=skipchecks)
@@ -1958,7 +1958,7 @@
                 client)
             QApplication.processEvents()
             try:
-                with E5MutexLocker(self.vcsExecutionMutex):
+                with EricMutexLocker(self.vcsExecutionMutex):
                     for name in fnames:
                         client.propdel(propName, name,
                                        recurse=recurse, skip_checks=skipchecks)
@@ -2257,7 +2257,7 @@
             client, parent=parent)
         QApplication.processEvents()
         try:
-            with E5MutexLocker(self.vcsExecutionMutex):
+            with EricMutexLocker(self.vcsExecutionMutex):
                 client.lock(fnames, comment, force=stealIt)
         except pysvn.ClientError as e:
             dlg.showError(e.args[0])
@@ -2293,7 +2293,7 @@
             client, parent=parent)
         QApplication.processEvents()
         try:
-            with E5MutexLocker(self.vcsExecutionMutex):
+            with EricMutexLocker(self.vcsExecutionMutex):
                 client.unlock(fnames, force=breakIt)
         except pysvn.ClientError as e:
             dlg.showError(e.args[0])
@@ -2335,7 +2335,7 @@
             dlg = SvnDialog(self.tr('Relocating'), msg, client)
             QApplication.processEvents()
             try:
-                with E5MutexLocker(self.vcsExecutionMutex):
+                with EricMutexLocker(self.vcsExecutionMutex):
                     if inside:
                         client.switch(projectPath, newUrl)
                     else:
@@ -2387,7 +2387,7 @@
             client)
         QApplication.processEvents()
         try:
-            with E5MutexLocker(self.vcsExecutionMutex):
+            with EricMutexLocker(self.vcsExecutionMutex):
                 for name in names:
                     client.remove_from_changelists(name)
         except pysvn.ClientError as e:
@@ -2423,7 +2423,7 @@
             client)
         QApplication.processEvents()
         try:
-            with E5MutexLocker(self.vcsExecutionMutex):
+            with EricMutexLocker(self.vcsExecutionMutex):
                 for name in names:
                     client.add_to_changelist(
                         name, clname, depth=pysvn.depth.infinity)
@@ -2455,7 +2455,7 @@
         if hasattr(client, 'get_changelist'):
             ppath = e5App().getObject("Project").getProjectPath()
             with contextlib.suppress(pysvn.ClientError):
-                with E5MutexLocker(self.vcsExecutionMutex):
+                with EricMutexLocker(self.vcsExecutionMutex):
                     entries = client.get_changelist(
                         ppath, depth=pysvn.depth.infinity)
                 for entry in entries:
@@ -2478,7 +2478,7 @@
             client)
         QApplication.processEvents()
         try:
-            with E5MutexLocker(self.vcsExecutionMutex):
+            with EricMutexLocker(self.vcsExecutionMutex):
                 client.upgrade(path)
         except pysvn.ClientError as e:
             dlg.showError(e.args[0])
--- a/eric7/Preferences/ConfigurationPages/EmailPage.py	Sat May 22 12:54:57 2021 +0200
+++ b/eric7/Preferences/ConfigurationPages/EmailPage.py	Sat May 22 16:52:45 2021 +0200
@@ -17,7 +17,7 @@
 from E5Gui.E5Application import e5App
 from E5Gui.E5OverrideCursor import E5OverrideCursor
 
-from E5Network.E5GoogleMailHelpers import getInstallCommand, RequiredPackages
+from EricNetwork.EricGoogleMailHelpers import getInstallCommand, RequiredPackages
 
 from .ConfigurationPageBase import ConfigurationPageBase
 from .Ui_EmailPage import Ui_EmailPage
@@ -243,7 +243,7 @@
         """
         if self.__helpDialog is None:
             try:
-                from E5Network.E5GoogleMail import GoogleMailHelp
+                from EricNetwork.EricGoogleMail import GoogleMailHelp
                 helpStr = GoogleMailHelp()
             except ImportError:
                 helpStr = self.tr(
@@ -286,8 +286,8 @@
         self.googleMailCheckBox.setEnabled(True)
         
         try:
-            import E5Network.E5GoogleMail      # __IGNORE_WARNING__
-            from E5Network.E5GoogleMailHelpers import (
+            import EricNetwork.EricGoogleMail      # __IGNORE_WARNING__
+            from EricNetwork.EricGoogleMailHelpers import (
                 isClientSecretFileAvailable
             )
             
--- a/eric7/Preferences/ConfigurationPages/NetworkPage.py	Sat May 22 12:54:57 2021 +0200
+++ b/eric7/Preferences/ConfigurationPages/NetworkPage.py	Sat May 22 16:52:45 2021 +0200
@@ -11,7 +11,7 @@
 
 from E5Gui.E5PathPicker import E5PathPickerModes
 
-from E5Network.E5Ftp import E5FtpProxyType
+from EricNetwork.EricFtp import EricFtpProxyType
 
 from .ConfigurationPageBase import ConfigurationPageBase
 from .Ui_NetworkPage import Ui_NetworkPage
@@ -41,25 +41,25 @@
         self.downloadDirPicker.setMode(E5PathPickerModes.DIRECTORY_MODE)
         
         self.ftpProxyTypeCombo.addItem(
-            self.tr("No FTP Proxy"), E5FtpProxyType.NO_PROXY.value)
+            self.tr("No FTP Proxy"), EricFtpProxyType.NO_PROXY.value)
         self.ftpProxyTypeCombo.addItem(
             self.tr("No Proxy Authentication required"),
-            E5FtpProxyType.NON_AUTHORIZING.value)
+            EricFtpProxyType.NON_AUTHORIZING.value)
         self.ftpProxyTypeCombo.addItem(
-            self.tr("User@Server"), E5FtpProxyType.USER_SERVER.value)
+            self.tr("User@Server"), EricFtpProxyType.USER_SERVER.value)
         self.ftpProxyTypeCombo.addItem(
-            self.tr("SITE"), E5FtpProxyType.SITE.value)
+            self.tr("SITE"), EricFtpProxyType.SITE.value)
         self.ftpProxyTypeCombo.addItem(
-            self.tr("OPEN"), E5FtpProxyType.OPEN.value)
+            self.tr("OPEN"), EricFtpProxyType.OPEN.value)
         self.ftpProxyTypeCombo.addItem(
             self.tr("User@Proxyuser@Server"),
-            E5FtpProxyType.USER_PROXYUSER_SERVER.value)
+            EricFtpProxyType.USER_PROXYUSER_SERVER.value)
         self.ftpProxyTypeCombo.addItem(
-            self.tr("Proxyuser@Server"), E5FtpProxyType.PROXYUSER_SERVER.value)
+            self.tr("Proxyuser@Server"), EricFtpProxyType.PROXYUSER_SERVER.value)
         self.ftpProxyTypeCombo.addItem(
-            self.tr("AUTH and RESP"), E5FtpProxyType.AUTH_RESP.value)
+            self.tr("AUTH and RESP"), EricFtpProxyType.AUTH_RESP.value)
         self.ftpProxyTypeCombo.addItem(
-            self.tr("Bluecoat Proxy"), E5FtpProxyType.BLUECOAT.value)
+            self.tr("Bluecoat Proxy"), EricFtpProxyType.BLUECOAT.value)
         
         # set initial values
         self.downloadDirPicker.setText(Preferences.getUI("DownloadPath"))
@@ -204,7 +204,7 @@
             self.ftpProxyPortSpin.value())
         Preferences.setUI(
             "ProxyType/Ftp",
-            E5FtpProxyType(self.ftpProxyTypeCombo.currentData()))
+            EricFtpProxyType(self.ftpProxyTypeCombo.currentData()))
         Preferences.setUI(
             "ProxyUser/Ftp",
             self.ftpProxyUserEdit.text())
@@ -230,18 +230,18 @@
         
         @param index index of the selected item (integer)
         """
-        proxyType = E5FtpProxyType(self.ftpProxyTypeCombo.itemData(index))
-        self.ftpProxyHostEdit.setEnabled(proxyType != E5FtpProxyType.NO_PROXY)
-        self.ftpProxyPortSpin.setEnabled(proxyType != E5FtpProxyType.NO_PROXY)
+        proxyType = EricFtpProxyType(self.ftpProxyTypeCombo.itemData(index))
+        self.ftpProxyHostEdit.setEnabled(proxyType != EricFtpProxyType.NO_PROXY)
+        self.ftpProxyPortSpin.setEnabled(proxyType != EricFtpProxyType.NO_PROXY)
         self.ftpProxyUserEdit.setEnabled(
-            proxyType not in [E5FtpProxyType.NO_PROXY,
-                              E5FtpProxyType.NON_AUTHORIZING])
+            proxyType not in [EricFtpProxyType.NO_PROXY,
+                              EricFtpProxyType.NON_AUTHORIZING])
         self.ftpProxyPasswordEdit.setEnabled(
-            proxyType not in [E5FtpProxyType.NO_PROXY,
-                              E5FtpProxyType.NON_AUTHORIZING])
+            proxyType not in [EricFtpProxyType.NO_PROXY,
+                              EricFtpProxyType.NON_AUTHORIZING])
         self.ftpProxyAccountEdit.setEnabled(
-            proxyType not in [E5FtpProxyType.NO_PROXY,
-                              E5FtpProxyType.NON_AUTHORIZING])
+            proxyType not in [EricFtpProxyType.NO_PROXY,
+                              EricFtpProxyType.NON_AUTHORIZING])
     
 
 def create(dlg):
--- a/eric7/Preferences/__init__.py	Sat May 22 12:54:57 2021 +0200
+++ b/eric7/Preferences/__init__.py	Sat May 22 16:52:45 2021 +0200
@@ -38,7 +38,7 @@
 
 from E5Gui import E5FileDialog
 
-from E5Network.E5Ftp import E5FtpProxyType
+from EricNetwork.EricFtp import EricFtpProxyType
 
 import Globals
 
@@ -199,7 +199,7 @@
         "ProxyPassword/Http": "",
         "ProxyPassword/Https": "",
         "ProxyPassword/Ftp": "",
-        "ProxyType/Ftp": E5FtpProxyType.NO_PROXY,
+        "ProxyType/Ftp": EricFtpProxyType.NO_PROXY,
         "ProxyAccount/Ftp": "",
         "ProxyExceptions": "localhost,127.0.0.,::1",
         
@@ -1921,7 +1921,7 @@
         return int(prefClass.settings.value(
             "UI/" + key, prefClass.uiDefaults[key]))
     elif key in ["ProxyType/Ftp", ]:
-        return E5FtpProxyType(int(prefClass.settings.value(
+        return EricFtpProxyType(int(prefClass.settings.value(
             "UI/" + key, prefClass.uiDefaults[key].value)))
     elif key in ["ProxyPassword/Http", "ProxyPassword/Https",
                  "ProxyPassword/Ftp", ]:
--- a/eric7/QScintilla/Editor.py	Sat May 22 12:54:57 2021 +0200
+++ b/eric7/QScintilla/Editor.py	Sat May 22 16:52:45 2021 +0200
@@ -29,7 +29,7 @@
 from E5Gui import E5FileDialog, E5MessageBox
 from E5Gui.E5OverrideCursor import E5OverrideCursor
 
-from E5Utilities.E5Cache import E5Cache
+from EricUtilities.EricCache import EricCache
 
 from .QsciScintillaCompat import QsciScintillaCompat
 from .EditorMarkerMap import EditorMarkerMap
@@ -433,7 +433,7 @@
         self.__acText = ""
         self.__acCompletions = set()
         self.__acCompletionsFinished = 0
-        self.__acCache = E5Cache(
+        self.__acCache = EricCache(
             size=Preferences.getEditor("AutoCompletionCacheSize"))
         self.__acCache.setMaximumCacheTime(
             Preferences.getEditor("AutoCompletionCacheTime"))
--- a/eric7/UI/EmailDialog.py	Sat May 22 12:54:57 2021 +0200
+++ b/eric7/UI/EmailDialog.py	Sat May 22 16:52:45 2021 +0200
@@ -146,10 +146,10 @@
         """
         if self.__helpDialog is None:
             try:
-                from E5Network.E5GoogleMail import GoogleMailHelp
+                from EricNetwork.EricGoogleMail import GoogleMailHelp
                 helpStr = GoogleMailHelp()
             except ImportError:
-                from E5Network.E5GoogleMailHelpers import getInstallCommand
+                from EricNetwork.EricGoogleMailHelpers import getInstallCommand
                 helpStr = self.tr(
                     "<p>The Google Mail Client API is not installed."
                     " Use <code>{0}</code> to install it.</p>"
@@ -387,10 +387,10 @@
         @param msg email message to be sent
         @type email.mime.text.MIMEBase
         """
-        from E5Network.E5GoogleMail import E5GoogleMail
+        from EricNetwork.EricGoogleMail import EricGoogleMail
         
         if self.__googleMail is None:
-            self.__googleMail = E5GoogleMail(self)
+            self.__googleMail = EricGoogleMail(self)
             self.__googleMail.sendResult.connect(self.__gmailSendResult)
         
         self.__googleMail.sendMessage(msg)
--- a/eric7/UI/UserInterface.py	Sat May 22 12:54:57 2021 +0200
+++ b/eric7/UI/UserInterface.py	Sat May 22 16:52:45 2021 +0200
@@ -56,11 +56,11 @@
 
 from Tasks.TasksFile import TasksFile
 
-from E5Network.E5NetworkProxyFactory import (
-    E5NetworkProxyFactory, proxyAuthenticationRequired
+from EricNetwork.EricNetworkProxyFactory import (
+    EricNetworkProxyFactory, proxyAuthenticationRequired
 )
 try:
-    from E5Network.E5SslErrorHandler import E5SslErrorHandler, E5SslErrorState
+    from EricNetwork.EricSslErrorHandler import EricSslErrorHandler, EricSslErrorState
     SSL_AVAILABLE = True
 except ImportError:
     SSL_AVAILABLE = False
@@ -223,7 +223,7 @@
         if Preferences.getUI("UseSystemProxy"):
             QNetworkProxyFactory.setUseSystemConfiguration(True)
         else:
-            self.__proxyFactory = E5NetworkProxyFactory()
+            self.__proxyFactory = EricNetworkProxyFactory()
             QNetworkProxyFactory.setApplicationProxyFactory(
                 self.__proxyFactory)
             QNetworkProxyFactory.setUseSystemConfiguration(False)
@@ -727,7 +727,7 @@
         self.__networkManager.proxyAuthenticationRequired.connect(
             proxyAuthenticationRequired)
         if SSL_AVAILABLE:
-            self.__sslErrorHandler = E5SslErrorHandler(self)
+            self.__sslErrorHandler = EricSslErrorHandler(self)
             self.__networkManager.sslErrors.connect(self.__sslErrors)
         self.__replies = []
         
@@ -6202,7 +6202,7 @@
         if Preferences.getUI("UseSystemProxy"):
             QNetworkProxyFactory.setUseSystemConfiguration(True)
         else:
-            self.__proxyFactory = E5NetworkProxyFactory()
+            self.__proxyFactory = EricNetworkProxyFactory()
             QNetworkProxyFactory.setApplicationProxyFactory(
                 self.__proxyFactory)
             QNetworkProxyFactory.setUseSystemConfiguration(False)
@@ -6353,9 +6353,9 @@
         """
         Private slot to show the certificates management dialog.
         """
-        from E5Network.E5SslCertificatesDialog import E5SslCertificatesDialog
-        
-        dlg = E5SslCertificatesDialog(self)
+        from EricNetwork.EricSslCertificatesDialog import EricSslCertificatesDialog
+        
+        dlg = EricSslCertificatesDialog(self)
         dlg.exec()
         
     def __clearPrivateData(self):
@@ -7294,7 +7294,7 @@
         @param errors list of SSL errors (list of QSslError)
         """
         ignored = self.__sslErrorHandler.sslErrorsReply(reply, errors)[0]
-        if ignored == E5SslErrorState.NOT_IGNORED:
+        if ignored == EricSslErrorState.NOT_IGNORED:
             self.__downloadCancelled = True
     
     #######################################
--- a/eric7/Utilities/FtpUtilities.py	Sat May 22 12:54:57 2021 +0200
+++ b/eric7/Utilities/FtpUtilities.py	Sat May 22 16:52:45 2021 +0200
@@ -11,7 +11,7 @@
 
 from PyQt6.QtCore import QObject, QDate, QDateTime, QTime
 
-from E5Network.E5UrlInfo import E5UrlInfo, E5UrlPermission
+from EricNetwork.EricUrlInfo import EricUrlInfo, EricUrlPermission
 
 
 class FtpDirLineParserError(Exception):
@@ -69,7 +69,7 @@
         given URL info object.
         
         @param modeString mode string to be parsed (string)
-        @param urlInfo reference to the URL info object (E5UrlInfo)
+        @param urlInfo reference to the URL info object (EricUrlInfo)
         @exception FtpDirLineParserError Raised if the mode cannot be parsed.
         """
         if len(modeString) != 10:
@@ -80,23 +80,23 @@
         
         permission = 0
         if modeString[1] != '-':
-            permission |= E5UrlPermission.READ_OWNER
+            permission |= EricUrlPermission.READ_OWNER
         if modeString[2] != '-':
-            permission |= E5UrlPermission.WRITE_OWNER
+            permission |= EricUrlPermission.WRITE_OWNER
         if modeString[3] != '-':
-            permission |= E5UrlPermission.EXE_OWNER
+            permission |= EricUrlPermission.EXE_OWNER
         if modeString[4] != '-':
-            permission |= E5UrlPermission.READ_GROUP
+            permission |= EricUrlPermission.READ_GROUP
         if modeString[5] != '-':
-            permission |= E5UrlPermission.WRITE_GROUP
+            permission |= EricUrlPermission.WRITE_GROUP
         if modeString[6] != '-':
-            permission |= E5UrlPermission.EXE_GROUP
+            permission |= EricUrlPermission.EXE_GROUP
         if modeString[7] != '-':
-            permission |= E5UrlPermission.READ_OTHER
+            permission |= EricUrlPermission.READ_OTHER
         if modeString[8] != '-':
-            permission |= E5UrlPermission.WRITE_OTHER
+            permission |= EricUrlPermission.WRITE_OTHER
         if modeString[9] != '-':
-            permission |= E5UrlPermission.EXE_OTHER
+            permission |= EricUrlPermission.EXE_OTHER
         urlInfo.setPermissions(permission)
         
         if modeString[0] == "d":
@@ -128,7 +128,7 @@
         @param monthAbbreviation abbreviation of the month name (string)
         @param day day of the month (string)
         @param yearOrTime string giving the year or a time (string)
-        @param urlInfo reference to the URL info object (E5UrlInfo)
+        @param urlInfo reference to the URL info object (EricUrlInfo)
         @exception FtpDirLineParserError Raised if the month abbreviation is
             not recognized.
         """
@@ -196,7 +196,7 @@
         Private method to parse a Unix style directory listing line.
         
         @param line directory line to be parsed (string)
-        @return URL info object containing the valid data (E5UrlInfo)
+        @return URL info object containing the valid data (EricUrlInfo)
         """
         modeString, nlink, user, group, size, month, day, yearOrTime, name = (
             self.__splitUnixLine(line)
@@ -205,7 +205,7 @@
         if name in [".", ".."]:
             return None
         
-        urlInfo = E5UrlInfo()
+        urlInfo = EricUrlInfo()
         self.__parseUnixMode(modeString, urlInfo)
         self.__parseUnixTime(month, day, yearOrTime, urlInfo)
         urlInfo.setOwner(user)
@@ -230,7 +230,7 @@
         
         @param date date string (string)
         @param time time string (string)
-        @param urlInfo reference to the URL info object (E5UrlInfo)
+        @param urlInfo reference to the URL info object (EricUrlInfo)
         @exception FtpDirLineParserError Raised if either of the strings is not
             recognized.
         """
@@ -260,7 +260,7 @@
         Private method to parse a Windows style directory listing line.
         
         @param line directory line to be parsed (string)
-        @return URL info object containing the valid data (E5UrlInfo)
+        @return URL info object containing the valid data (EricUrlInfo)
         @exception FtpDirLineParserError Raised if the line is not of a
             recognized Windows format.
         """
@@ -274,7 +274,7 @@
         if name in [".", ".."]:
             return None
         
-        urlInfo = E5UrlInfo()
+        urlInfo = EricUrlInfo()
         self.__parseWindowsTime(date, time, urlInfo)
         if dirOrSize.lower() == "<dir>":
             urlInfo.setDir(True)
@@ -293,15 +293,15 @@
         urlInfo.setSymLink(ext == ".lnk")
         
         permissions = (
-            E5UrlPermission.READ_OWNER | E5UrlPermission.WRITE_OWNER |
-            E5UrlPermission.READ_GROUP | E5UrlPermission.WRITE_GROUP |
-            E5UrlPermission.READ_OTHER | E5UrlPermission.WRITE_OTHER
+            EricUrlPermission.READ_OWNER | EricUrlPermission.WRITE_OWNER |
+            EricUrlPermission.READ_GROUP | EricUrlPermission.WRITE_GROUP |
+            EricUrlPermission.READ_OTHER | EricUrlPermission.WRITE_OTHER
         )
         if ext in [".exe", ".com", ".bat", ".cmd"]:
             permissions |= (
-                E5UrlPermission.EXE_OWNER |
-                E5UrlPermission.EXE_GROUP |
-                E5UrlPermission.EXE_OTHER
+                EricUrlPermission.EXE_OWNER |
+                EricUrlPermission.EXE_GROUP |
+                EricUrlPermission.EXE_OTHER
             )
         urlInfo.setPermissions(permissions)
         
@@ -316,7 +316,7 @@
         to Windows style. If that fails as well, an exception is raised.
         
         @param line directory line to be parsed (string)
-        @return URL info object containing the valid data (E5UrlInfo)
+        @return URL info object containing the valid data (EricUrlInfo)
         """
         if self.__ignoreLine(line):
             return None
--- a/eric7/WebBrowser/AdBlock/AdBlockManager.py	Sat May 22 12:54:57 2021 +0200
+++ b/eric7/WebBrowser/AdBlock/AdBlockManager.py	Sat May 22 16:52:45 2021 +0200
@@ -17,7 +17,7 @@
 
 from E5Gui import E5MessageBox
 
-from E5Utilities.E5MutexLocker import E5MutexLocker
+from EricUtilities.EricMutexLocker import EricMutexLocker
 
 from .AdBlockSubscription import AdBlockSubscription
 from .AdBlockUrlInterceptor import AdBlockUrlInterceptor
@@ -149,7 +149,7 @@
         @return flag indicating to block the request
         @rtype bool
         """
-        with E5MutexLocker(self.__mutex):
+        with EricMutexLocker(self.__mutex):
             if not self.isEnabled():
                 return False
             
--- a/eric7/WebBrowser/Network/EricSchemeHandler.py	Sat May 22 12:54:57 2021 +0200
+++ b/eric7/WebBrowser/Network/EricSchemeHandler.py	Sat May 22 16:52:45 2021 +0200
@@ -12,7 +12,7 @@
 
 from E5Gui.E5Application import e5App
 
-from E5Utilities.E5MutexLocker import E5MutexLocker
+from EricUtilities.EricMutexLocker import EricMutexLocker
 
 from ..Tools.WebBrowserTools import (
     getHtmlPage, getJavascript, pixmapFileToDataUrl
@@ -101,7 +101,7 @@
         if self.__loaded:
             return
         
-        with E5MutexLocker(self.__mutex):
+        with EricMutexLocker(self.__mutex):
             if self.__pageName == "adblock":
                 contents = self.__adBlockPage()
             elif self.__pageName in ["home", "start", "startpage"]:
@@ -126,7 +126,7 @@
         @return number of available bytes
         @rtype int
         """
-        with E5MutexLocker(self.__mutex):
+        with EricMutexLocker(self.__mutex):
             return self.__buffer.bytesAvailable()
     
     def readData(self, maxlen):
@@ -136,7 +136,7 @@
         @param maxlen maximum number of bytes to read (integer)
         @return string containing the data (bytes)
         """
-        with E5MutexLocker(self.__mutex):
+        with EricMutexLocker(self.__mutex):
             return self.__buffer.read(maxlen)
     
     def close(self):
--- a/eric7/WebBrowser/Network/NetworkManager.py	Sat May 22 12:54:57 2021 +0200
+++ b/eric7/WebBrowser/Network/NetworkManager.py	Sat May 22 16:52:45 2021 +0200
@@ -19,9 +19,9 @@
 from E5Gui import E5MessageBox
 from E5Gui.E5Application import e5App
 
-from E5Network.E5NetworkProxyFactory import proxyAuthenticationRequired
+from EricNetwork.EricNetworkProxyFactory import proxyAuthenticationRequired
 try:
-    from E5Network.E5SslErrorHandler import E5SslErrorHandler
+    from EricNetwork.EricSslErrorHandler import EricSslErrorHandler
     SSL_AVAILABLE = True
 except ImportError:
     SSL_AVAILABLE = False
@@ -51,9 +51,9 @@
         """
         super().__init__(parent)
         
-        from E5Network.E5NetworkProxyFactory import E5NetworkProxyFactory
+        from EricNetwork.EricNetworkProxyFactory import EricNetworkProxyFactory
         
-        self.__proxyFactory = E5NetworkProxyFactory()
+        self.__proxyFactory = EricNetworkProxyFactory()
         if Preferences.getUI("UseSystemProxy"):
             QNetworkProxyFactory.setUseSystemConfiguration(True)
         else:
@@ -64,7 +64,7 @@
         self.languagesChanged()
         
         if SSL_AVAILABLE:
-            self.__sslErrorHandler = E5SslErrorHandler(self)
+            self.__sslErrorHandler = EricSslErrorHandler(self)
             self.sslErrors.connect(self.__sslErrorHandlingSlot)
         
         self.__temporarilyIgnoredSslErrors = {}
--- a/eric7/WebBrowser/Network/NetworkUrlInterceptor.py	Sat May 22 12:54:57 2021 +0200
+++ b/eric7/WebBrowser/Network/NetworkUrlInterceptor.py	Sat May 22 16:52:45 2021 +0200
@@ -13,7 +13,7 @@
     QWebEngineUrlRequestInterceptor, QWebEngineUrlRequestInfo
 )
 
-from E5Utilities.E5MutexLocker import E5MutexLocker
+from EricUtilities.EricMutexLocker import EricMutexLocker
 
 from ..WebBrowserPage import WebBrowserPage
 
@@ -45,7 +45,7 @@
         @param info URL request information
         @type QWebEngineUrlRequestInfo
         """
-        with E5MutexLocker(self.__mutex):
+        with EricMutexLocker(self.__mutex):
             # Do Not Track feature
             if self.__doNotTrack:
                 info.setHttpHeader(b"DNT", b"1")
@@ -70,7 +70,7 @@
         @param interceptor URL interceptor to be installed
         @type UrlInterceptor
         """
-        with E5MutexLocker(self.__mutex):
+        with EricMutexLocker(self.__mutex):
             if interceptor not in self.__interceptors:
                 self.__interceptors.append(interceptor)
     
@@ -81,7 +81,7 @@
         @param interceptor URL interceptor to be removed
         @type UrlInterceptor
         """
-        with E5MutexLocker(self.__mutex):
+        with EricMutexLocker(self.__mutex):
             if interceptor in self.__interceptors:
                 self.__interceptors.remove(interceptor)
     
@@ -89,7 +89,7 @@
         """
         Private method to load the Network Manager settings.
         """
-        with E5MutexLocker(self.__mutex):
+        with EricMutexLocker(self.__mutex):
             self.__doNotTrack = Preferences.getWebBrowser(
                 "DoNotTrack")
             self.__sendReferer = Preferences.getWebBrowser(
--- a/eric7/WebBrowser/Network/QtHelpSchemeHandler.py	Sat May 22 12:54:57 2021 +0200
+++ b/eric7/WebBrowser/Network/QtHelpSchemeHandler.py	Sat May 22 16:52:45 2021 +0200
@@ -17,7 +17,7 @@
     QWebEngineUrlSchemeHandler, QWebEngineUrlRequestJob
 )
 
-from E5Utilities.E5MutexLocker import E5MutexLocker
+from EricUtilities.EricMutexLocker import EricMutexLocker
 
 QtDocPath = "qthelp://org.qt-project."
 
@@ -173,7 +173,7 @@
                 .encode("utf-8"))
         )
         
-        with E5MutexLocker(self.__mutex):
+        with EricMutexLocker(self.__mutex):
             self.__buffer.setData(data)
             self.__buffer.open(QIODevice.OpenModeFlag.ReadOnly)
             self.open(QIODevice.OpenModeFlag.ReadOnly)
@@ -187,7 +187,7 @@
         @return number of available bytes
         @rtype int
         """
-        with E5MutexLocker(self.__mutex):
+        with EricMutexLocker(self.__mutex):
             return self.__buffer.bytesAvailable()
     
     def readData(self, maxlen):
@@ -197,7 +197,7 @@
         @param maxlen maximum number of bytes to read (integer)
         @return string containing the data (bytes)
         """
-        with E5MutexLocker(self.__mutex):
+        with EricMutexLocker(self.__mutex):
             return self.__buffer.read(maxlen)
     
     def close(self):
--- a/eric7/WebBrowser/SiteInfo/SiteInfoDialog.ui	Sat May 22 12:54:57 2021 +0200
+++ b/eric7/WebBrowser/SiteInfo/SiteInfoDialog.ui	Sat May 22 16:52:45 2021 +0200
@@ -228,7 +228,7 @@
       </attribute>
       <layout class="QVBoxLayout" name="verticalLayout_3">
        <item>
-        <widget class="E5SslCertificatesInfoWidget" name="sslWidget" native="true">
+        <widget class="EricSslCertificatesInfoWidget" name="sslWidget" native="true">
          <property name="focusPolicy">
           <enum>Qt::StrongFocus</enum>
          </property>
@@ -252,9 +252,9 @@
  </widget>
  <customwidgets>
   <customwidget>
-   <class>E5SslCertificatesInfoWidget</class>
+   <class>EricSslCertificatesInfoWidget</class>
    <extends>QWidget</extends>
-   <header>E5Network/E5SslCertificatesInfoWidget.h</header>
+   <header>EricNetwork/EricSslCertificatesInfoWidget.h</header>
    <container>1</container>
   </customwidget>
  </customwidgets>
--- a/eric7/WebBrowser/Sync/FtpSyncHandler.py	Sat May 22 12:54:57 2021 +0200
+++ b/eric7/WebBrowser/Sync/FtpSyncHandler.py	Sat May 22 16:52:45 2021 +0200
@@ -15,7 +15,7 @@
     pyqtSignal, QTimer, QFileInfo, QCoreApplication, QByteArray
 )
 
-from E5Network.E5Ftp import E5Ftp, E5FtpProxyType, E5FtpProxyError
+from EricNetwork.EricFtp import EricFtp, EricFtpProxyType, EricFtpProxyError
 
 from .SyncHandler import SyncHandler
 
@@ -81,20 +81,20 @@
             Preferences.getWebBrowser("SyncFtpIdleTimeout") * 1000)
         self.__idleTimer.timeout.connect(self.__idleTimeout)
         
-        self.__ftp = E5Ftp()
+        self.__ftp = EricFtp()
         
         # do proxy setup
         proxyType = (
-            E5FtpProxyType.NO_PROXY
+            EricFtpProxyType.NO_PROXY
             if not Preferences.getUI("UseProxy") else
             Preferences.getUI("ProxyType/Ftp")
         )
-        if proxyType != E5FtpProxyType.NO_PROXY:
+        if proxyType != EricFtpProxyType.NO_PROXY:
             self.__ftp.setProxy(
                 proxyType,
                 Preferences.getUI("ProxyHost/Ftp"),
                 Preferences.getUI("ProxyPort/Ftp"))
-            if proxyType != E5FtpProxyType.NON_AUTHORIZING:
+            if proxyType != EricFtpProxyType.NON_AUTHORIZING:
                 self.__ftp.setProxyAuthentication(
                     Preferences.getUI("ProxyUser/Ftp"),
                     Preferences.getUI("ProxyPassword/Ftp"),
@@ -114,7 +114,7 @@
                 self.__initialSync()
                 self.__state = "idle"
                 self.__idleTimer.start()
-        except (ftplib.all_errors + (E5FtpProxyError,)) as err:
+        except (ftplib.all_errors + (EricFtpProxyError,)) as err:
             self.syncError.emit(str(err))
     
     def __connectAndLogin(self):
--- a/eric7/WebBrowser/TabManager/TabManagerWidget.py	Sat May 22 12:54:57 2021 +0200
+++ b/eric7/WebBrowser/TabManager/TabManagerWidget.py	Sat May 22 16:52:45 2021 +0200
@@ -21,8 +21,8 @@
     QWidget, QVBoxLayout, QTreeWidget, QTreeWidgetItem, QMenu, QStyle
 )
 
-import E5Network
-from E5Network import E5TldExtractor
+import EricNetwork
+from EricNetwork import EricTldExtractor
 
 from E5Gui.E5Application import e5App
 from E5Gui.E5ClickableLabel import E5ClickableLabel
@@ -84,7 +84,7 @@
         self.__groupType = Preferences.getWebBrowser("TabManagerGroupByType")
         
         if TabManagerWidget._tldExtractor is None:
-            TabManagerWidget._tldExtractor = E5TldExtractor.instance()
+            TabManagerWidget._tldExtractor = EricTldExtractor.instance()
             TabManagerWidget._tldExtractor.setDataSearchPaths([
                 os.path.join(Utilities.getConfigDir(), "web_browser")])
         
@@ -180,7 +180,7 @@
         if not host:
             return urlString + appendStr
         
-        if useHostName or E5Network.isValidAddress(host):
+        if useHostName or EricNetwork.isValidAddress(host):
             if host.lower().startswith("www."):
                 host = host[4:]
         else:
--- a/eric7/WebBrowser/WebBrowserPage.py	Sat May 22 12:54:57 2021 +0200
+++ b/eric7/WebBrowser/WebBrowserPage.py	Sat May 22 16:52:45 2021 +0200
@@ -690,8 +690,8 @@
         @type QPoint
         """
         if SSL_AVAILABLE and self.__sslConfiguration is not None:
-            from E5Network.E5SslInfoWidget import E5SslInfoWidget
-            widget = E5SslInfoWidget(self.url(), self.__sslConfiguration,
+            from EricNetwork.EricSslInfoWidget import EricSslInfoWidget
+            widget = EricSslInfoWidget(self.url(), self.__sslConfiguration,
                                      self.view())
             widget.showAt(pos)
         else:
--- a/eric7/WebBrowser/WebBrowserView.py	Sat May 22 12:54:57 2021 +0200
+++ b/eric7/WebBrowser/WebBrowserView.py	Sat May 22 16:52:45 2021 +0200
@@ -2330,10 +2330,10 @@
             clientCertificateSelection.select(certificates[0])
         else:
             certificate = None
-            from E5Network.E5SslCertificateSelectionDialog import (
-                E5SslCertificateSelectionDialog
+            from EricNetwork.EricSslCertificateSelectionDialog import (
+                EricSslCertificateSelectionDialog
             )
-            dlg = E5SslCertificateSelectionDialog(certificates, self)
+            dlg = EricSslCertificateSelectionDialog(certificates, self)
             if dlg.exec() == QDialog.DialogCode.Accepted:
                 certificate = dlg.getSelectedCertificate()
             
--- a/eric7/WebBrowser/WebBrowserWindow.py	Sat May 22 12:54:57 2021 +0200
+++ b/eric7/WebBrowser/WebBrowserWindow.py	Sat May 22 16:52:45 2021 +0200
@@ -190,7 +190,7 @@
                       Preferences.getUI("StyleSheet"))
         
         # initialize some SSL stuff
-        from E5Network.E5SslUtilities import initSSL
+        from EricNetwork.EricSslUtilities import initSSL
         initSSL()
         
         if WebBrowserWindow._useQtHelp:
--- a/eric7/eric7.py	Sat May 22 12:54:57 2021 +0200
+++ b/eric7/eric7.py	Sat May 22 16:52:45 2021 +0200
@@ -382,7 +382,7 @@
     loc = Startup.loadTranslators(qtTransDir, app, ("qscintilla",))
     
     # Initialize SSL stuff
-    from E5Network.E5SslUtilities import initSSL
+    from EricNetwork.EricSslUtilities import initSSL
     initSSL()
     
     splash.showMessage(QCoreApplication.translate("eric7", "Starting..."))
--- a/scripts/install.py	Sat May 22 12:54:57 2021 +0200
+++ b/scripts/install.py	Sat May 22 16:52:45 2021 +0200
@@ -788,8 +788,8 @@
         
         # copy some data files needed at various places
         copyTree(
-            os.path.join(eric7SourceDir, "E5Network", "data"),
-            os.path.join(cfg['ericDir'], "E5Network", "data"),
+            os.path.join(eric7SourceDir, "EricNetwork", "data"),
+            os.path.join(cfg['ericDir'], "EricNetwork", "data"),
             ['*.dat', '*.txt'])
         copyTree(
             os.path.join(eric7SourceDir, "IconEditor", "cursors"),

eric ide

mercurial