Merge mozilla-central to inbound. a=merge CLOSED TREE
authorOana Pop Rus <opoprus@mozilla.com>
Fri, 01 Mar 2019 00:08:19 +0200
changeset 461868 08157bb630a6626773395db07862b7de3d43a3db
parent 461867 b9f41b8dd43ce371409b8d1c2d0b1c133c7e45a7 (current diff)
parent 461748 98d4803bb2de7fcdb0096ddeedaefd29d0fd5fd4 (diff)
child 461869 d32503125d279a4729ddd5f2e62dd9a1a2f04d65
push id35631
push userrgurzau@mozilla.com
push dateFri, 01 Mar 2019 13:06:03 +0000
treeherdermozilla-central@d4e19870e27f [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmerge
milestone67.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Merge mozilla-central to inbound. a=merge CLOSED TREE
taskcluster/ci/source-test/mocha.yml
testing/talos/talos/tests/tabswitch/tps.manifest
toolkit/content/widgets/tree.js
--- a/browser/app/blocklist.xml
+++ b/browser/app/blocklist.xml
@@ -1,10 +1,10 @@
 <?xml version='1.0' encoding='UTF-8'?>
-<blocklist lastupdate="1550866974800" xmlns="http://www.mozilla.org/2006/addons-blocklist">
+<blocklist lastupdate="1551250023025" xmlns="http://www.mozilla.org/2006/addons-blocklist">
   <emItems>
     <emItem blockID="i334" id="{0F827075-B026-42F3-885D-98981EE7B1AE}">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
     <emItem blockID="i1211" id="flvto@hotger.com">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="1"/>
@@ -2507,16 +2507,36 @@
     <emItem blockID="27917953-17fb-4ffc-bcf1-5fc2727174b4" id="restore.old@youtube.com">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
     <emItem blockID="9600b4cd-da02-4947-a4f5-c56c657ba197" id="{5288d05d-253f-4675-be3b-152bf02aa3ec}">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
+    <emItem blockID="5b3fe8de-6d05-4d95-a6d2-cd5695f1b0c0" id="{157cd8f9-48f0-43a1-9bcf-c4316753e083}">
+      <prefs/>
+      <versionRange minVersion="0" maxVersion="*" severity="3"/>
+    </emItem>
+    <emItem blockID="32227de6-a7bf-454c-bf44-4478ddd96abe" id="{4603d01d-ae80-4653-9288-d5ef98b99a17}">
+      <prefs/>
+      <versionRange minVersion="0" maxVersion="*" severity="3"/>
+    </emItem>
+    <emItem blockID="ec121e9e-d56d-436b-bb2d-735fdcff3c03" id="/^((\{8387ccbe-b9ac-438d-b049-c86b30a6dacb\})|(\{2ef58672-740c-46bd-a50d-b9880986b574\})|(\{7ff51e81-f4b1-4682-9f45-43a771d80748\})|(\{ecb03616-f3c2-4580-99dd-6a233047abdd\})|(\{850be3a2-ca5f-47ad-838c-fe39b006e0da\})|(\{df9f6ab1-c82c-41d4-85ce-86dcfe839ce9\})|(\{a59679da-f097-4db4-b2bc-6ad7b645e127\}))$/">
+      <prefs/>
+      <versionRange minVersion="0" maxVersion="*" severity="3"/>
+    </emItem>
+    <emItem blockID="7bb234b0-cfda-4a23-bf02-9c82fb3500a3" id="{9d7cfde2-39ae-11e9-bde0-02427e2eba50}">
+      <prefs/>
+      <versionRange minVersion="0" maxVersion="*" severity="3"/>
+    </emItem>
+    <emItem blockID="37252271-9e38-46a9-b23a-2b6d7048c0db" id="/^((\{e0686c32-99b4-44d8-972f-88bf08b68f88\})|(\{b2225e4c-9d1d-472b-8aeb-5ff203bcff9a\}))$/">
+      <prefs/>
+      <versionRange minVersion="0" maxVersion="*" severity="3"/>
+    </emItem>
   </emItems>
   <pluginItems>
     <pluginItem blockID="p332">
       <match exp="libflashplayer\.so" name="filename"/>
       <match exp="^Shockwave Flash 11.(0|1) r[0-9]{1,3}$" name="description"/>
       <infoURL>https://get.adobe.com/flashplayer/</infoURL>
       <versionRange severity="0" vulnerabilitystatus="1">
         <targetApplication id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}">
--- a/browser/base/content/browser-ctrlTab.js
+++ b/browser/base/content/browser-ctrlTab.js
@@ -88,18 +88,19 @@ var tabPreviewPanelHelper = {
   },
   _popuphiding(host) {
     if ("suspendGUI" in host)
       host.suspendGUI();
 
     if (host._prevFocus) {
       Services.focus.setFocus(host._prevFocus, Ci.nsIFocusManager.FLAG_NOSCROLL);
       host._prevFocus = null;
-    } else
+    } else {
       gBrowser.selectedBrowser.focus();
+    }
 
     if (host.tabToSelect) {
       gBrowser.selectedTab = host.tabToSelect;
       host.tabToSelect = null;
     }
   },
 };
 
--- a/browser/base/content/browser-fullScreenAndPointerLock.js
+++ b/browser/base/content/browser-fullScreenAndPointerLock.js
@@ -512,19 +512,19 @@ var FullScreen = {
 
   _setPopupOpen(aEvent) {
     // Popups should only veto chrome collapsing if they were opened when the chrome was not collapsed.
     // Otherwise, they would not affect chrome and the user would expect the chrome to go away.
     // e.g. we wouldn't want the autoscroll icon firing this event, so when the user
     // toggles chrome when moving mouse to the top, it doesn't go away again.
     if (aEvent.type == "popupshown" && !FullScreen._isChromeCollapsed &&
         aEvent.target.localName != "tooltip" && aEvent.target.localName != "window" &&
-        aEvent.target.getAttribute("nopreventnavboxhide") != "true")
+        aEvent.target.getAttribute("nopreventnavboxhide") != "true") {
       FullScreen._isPopupOpen = true;
-    else if (aEvent.type == "popuphidden" && aEvent.target.localName != "tooltip" &&
+    } else if (aEvent.type == "popuphidden" && aEvent.target.localName != "tooltip" &&
              aEvent.target.localName != "window") {
       FullScreen._isPopupOpen = false;
       // Try again to hide toolbar when we close the popup.
       FullScreen.hideNavToolbox(true);
     }
   },
 
   get navToolboxHidden() {
--- a/browser/base/content/browser-places.js
+++ b/browser/base/content/browser-places.js
@@ -789,19 +789,19 @@ var BookmarksEventHandler = {
       if (cell.row == -1)
         return false;
       node = tree.view.nodeForTreeIndex(cell.row);
       cropped = tree.isCellCropped(cell.row, cell.col);
     } else {
       // Check whether the tooltipNode is a Places node.
       // In such a case use it, otherwise check for targetURI attribute.
       var tooltipNode = aDocument.tooltipNode;
-      if (tooltipNode._placesNode)
+      if (tooltipNode._placesNode) {
         node = tooltipNode._placesNode;
-      else {
+      } else {
         // This is a static non-Places node.
         targetURI = tooltipNode.getAttribute("targetURI");
       }
     }
 
     if (!node && !targetURI)
       return false;
 
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -2786,18 +2786,19 @@ function UpdateUrlbarSearchSplitterState
       splitter.id = "urlbar-search-splitter";
       splitter.setAttribute("resizebefore", "flex");
       splitter.setAttribute("resizeafter", "flex");
       splitter.setAttribute("skipintoolbarset", "true");
       splitter.setAttribute("overflows", "false");
       splitter.className = "chromeclass-toolbar-additional";
     }
     urlbar.parentNode.insertBefore(splitter, ibefore);
-  } else if (splitter)
+  } else if (splitter) {
     splitter.remove();
+  }
 }
 
 function UpdatePageProxyState() {
   if (gURLBar && gURLBar.value != gLastValidURLStr) {
     SetPageProxyState("invalid", true);
   }
 }
 
@@ -3965,19 +3966,19 @@ const BrowserSearch = {
 
     var engines = (hidden ? browser.hiddenEngines : browser.engines) || [];
 
     engines.push({ uri: engine.href,
                    title: engine.title,
                    get icon() { return browser.mIconURL; },
                  });
 
-    if (hidden)
+    if (hidden) {
       browser.hiddenEngines = engines;
-    else {
+    } else {
       browser.engines = engines;
       if (browser == gBrowser.selectedBrowser)
         this.updateOpenSearchBadge();
     }
   },
 
   /**
    * Update the browser UI to show whether or not additional engines are
@@ -5401,19 +5402,19 @@ nsBrowserAccess.prototype = {
   _openURIInNewTab(aURI, aReferrer, aReferrerPolicy, aIsPrivate,
                    aIsExternal, aForceNotRemote = false,
                    aUserContextId = Ci.nsIScriptSecurityManager.DEFAULT_USER_CONTEXT_ID,
                    aOpenerWindow = null, aOpenerBrowser = null,
                    aTriggeringPrincipal = null, aNextTabParentId = 0, aName = "", aCsp = null) {
     let win, needToFocusWin;
 
     // try the current window.  if we're in a popup, fall back on the most recent browser window
-    if (window.toolbar.visible)
+    if (window.toolbar.visible) {
       win = window;
-    else {
+    } else {
       win = BrowserWindowTracker.getTopWindow({private: aIsPrivate});
       needToFocusWin = true;
     }
 
     if (!win) {
       // we couldn't find a suitable window, a new one needs to be opened.
       return null;
     }
--- a/browser/base/content/pageinfo/pageInfo.js
+++ b/browser/base/content/pageinfo/pageInfo.js
@@ -474,19 +474,19 @@ async function makeGeneralTab(metaViewRo
 
   // get the document characterset
   var encoding = docInfo.characterSet;
   document.getElementById("encodingtext").value = encoding;
 
   let length = metaViewRows.length;
 
   var metaGroup = document.getElementById("metaTags");
-  if (!length)
+  if (!length) {
     metaGroup.style.visibility = "hidden";
-  else {
+  } else {
     document.l10n.setAttributes(document.getElementById("metaTagsCaption"),
                                 "general-meta-tags", {"tags": length});
 
     var metaTree = document.getElementById("metatree");
     metaTree.view = gMetaView;
 
     // Add the metaViewRows onto the general tab's meta info tree.
     gMetaView.addRows(metaViewRows);
@@ -911,29 +911,30 @@ function makePreview(row) {
 }
 
 function makeBlockImage(url) {
   var permissionManager = Cc[PERMISSION_CONTRACTID]
                             .getService(nsIPermissionManager);
 
   var checkbox = document.getElementById("blockImage");
   var imagePref = Services.prefs.getIntPref("permissions.default.image");
-  if (!(/^https?:/.test(url)) || imagePref == 2)
+  if (!(/^https?:/.test(url)) || imagePref == 2) {
     // We can't block the images from this host because either is is not
     // for http(s) or we don't load images at all
     checkbox.hidden = true;
-  else {
+  } else {
     var uri = Services.io.newURI(url);
     if (uri.host) {
       checkbox.hidden = false;
       document.l10n.setAttributes(checkbox, "media-block-image", {"website": uri.host});
       var perm = permissionManager.testPermission(uri, "image");
       checkbox.checked = perm == nsIPermissionManager.DENY_ACTION;
-    } else
+    } else {
       checkbox.hidden = true;
+    }
   }
 }
 
 var imagePermissionObserver = {
   observe(aSubject, aTopic, aData) {
     if (document.getElementById("mediaPreviewBox").collapsed)
       return;
 
@@ -960,18 +961,19 @@ function getContentTypeFromHeaders(cache
   return type && type[1];
 }
 
 function setItemValue(id, value) {
   var item = document.getElementById(id);
   if (value) {
     item.parentNode.collapsed = false;
     item.value = value;
-  } else
+  } else {
     item.parentNode.collapsed = true;
+  }
 }
 
 function formatNumber(number) {
   return (+number).toLocaleString(); // coerce number to a numeric value before calling toLocaleString()
 }
 
 function formatDate(datestr, unknown) {
   var date = new Date(datestr);
--- a/browser/base/content/pageinfo/permissions.js
+++ b/browser/base/content/pageinfo/permissions.js
@@ -33,23 +33,25 @@ var permissionObserver = {
 function onLoadPermission(uri, principal) {
   var permTab = document.getElementById("permTab");
   if (SitePermissions.isSupportedURI(uri)) {
     gPermURI = uri;
     gPermPrincipal = principal;
     var hostText = document.getElementById("hostText");
     hostText.value = gPermURI.displayPrePath;
 
-    for (var i of gPermissions)
+    for (var i of gPermissions) {
       initRow(i);
+    }
     Services.obs.addObserver(permissionObserver, "perm-changed");
     onUnloadRegistry.push(onUnloadPermission);
     permTab.hidden = false;
-  } else
+  } else {
     permTab.hidden = true;
+  }
 }
 
 function onUnloadPermission() {
   Services.obs.removeObserver(permissionObserver, "perm-changed");
 
   if (gUsageRequest) {
     gUsageRequest.cancel();
     gUsageRequest = null;
--- a/browser/base/content/pageinfo/security.js
+++ b/browser/base/content/pageinfo/security.js
@@ -233,18 +233,19 @@ function securityOnLoad(uri, windowInfo)
     document.getElementById("security-identity-validity-row").hidden = true;
   }
 
   /* Manage the View Cert button*/
   var viewCert = document.getElementById("security-view-cert");
   if (info.cert) {
     security._cert = info.cert;
     viewCert.collapsed = false;
-  } else
+  } else {
     viewCert.collapsed = true;
+  }
 
   /* Set Privacy & History section text */
 
   // Only show quota usage data for websites, not internal sites.
   if (uri.scheme == "http" || uri.scheme == "https") {
     SiteDataManager.updateSites().then(() => security._updateSiteDataInfo());
   } else {
     document.getElementById("security-privacy-sitedata-row").hidden = true;
@@ -311,19 +312,18 @@ function securityOnLoad(uri, windowInfo)
 }
 
 function setText(id, value) {
   var element = document.getElementById(id);
   if (!element)
     return;
   if (element.localName == "textbox" || element.localName == "label")
     element.value = value;
-  else {
+  else
     element.textContent = value;
-  }
 }
 
 function viewCertHelper(parent, cert) {
   if (!cert)
     return;
 
   Services.ww.openWindow(parent, "chrome://pippki/content/certViewer.xul",
                          "_blank", "centerscreen,chrome", cert);
--- a/browser/base/content/test/general/contextmenu_common.js
+++ b/browser/base/content/test/general/contextmenu_common.js
@@ -167,19 +167,20 @@ function checkMenuItem(actualItem, actua
           icon = tmp;
         }
         is(icon, expectedEnabled.icon,
            "checking item #" + index / 2 + " (" + expectedItem + ") icon attr value");
         is(actualEnabled.checked, expectedEnabled.checked,
            "checking item #" + index / 2 + " (" + expectedItem + ") has checked attr");
         is(actualEnabled.disabled, expectedEnabled.disabled,
            "checking item #" + index / 2 + " (" + expectedItem + ") has disabled attr");
-    } else if (expectedEnabled != null)
+    } else if (expectedEnabled != null) {
         is(actualEnabled, expectedEnabled,
            "checking item #" + index / 2 + " (" + expectedItem + ") enabled state");
+    }
 }
 
 /*
  * checkMenu - checks to see if the specified <menupopup> contains the
  * expected items and state.
  * expectedItems is a array of (1) item IDs and (2) a boolean specifying if
  * the item is enabled or not (or null to ignore it). Submenus can be checked
  * by providing a nested array entry after the expected <menu> ID.
--- a/browser/base/content/test/webrtc/browser_devices_get_user_media.js
+++ b/browser/base/content/test/webrtc/browser_devices_get_user_media.js
@@ -272,19 +272,19 @@ var gTests = [
       Assert.deepEqual((await getMediaCaptureState()), expected,
                        "expected " + Object.keys(expected).join(" and ") +
                        " to be shared");
 
       function checkDevicePermissions(aDevice, aExpected) {
         let Perms = Services.perms;
         let uri = gBrowser.selectedBrowser.documentURI;
         let devicePerms = Perms.testExactPermission(uri, aDevice);
-        if (aExpected === undefined)
+        if (aExpected === undefined) {
           is(devicePerms, Perms.UNKNOWN_ACTION, "no " + aDevice + " persistent permissions");
-        else {
+        } else {
           is(devicePerms, aExpected ? Perms.ALLOW_ACTION : Perms.DENY_ACTION,
              aDevice + " persistently " + (aExpected ? "allowed" : "denied"));
         }
         Perms.remove(uri, aDevice);
       }
       checkDevicePermissions("microphone", aExpectedAudioPerm);
       checkDevicePermissions("camera", aExpectedVideoPerm);
 
--- a/browser/components/BrowserContentHandler.jsm
+++ b/browser/components/BrowserContentHandler.jsm
@@ -384,41 +384,43 @@ nsBrowserContentHandler.prototype = {
 
     var chromeParam = cmdLine.handleFlagWithParam("chrome", false);
     if (chromeParam) {
       // Handle old preference dialog URLs.
       if (chromeParam == "chrome://browser/content/pref/pref.xul" ||
           chromeParam == "chrome://browser/content/preferences/preferences.xul") {
         openPreferences(cmdLine, {origin: "commandLineLegacy"});
         cmdLine.preventDefault = true;
-      } else try {
-        let resolvedURI = resolveURIInternal(cmdLine, chromeParam);
-        let isLocal = uri => {
-          let localSchemes = new Set(["chrome", "file", "resource"]);
-          if (uri instanceof Ci.nsINestedURI) {
-            uri = uri.QueryInterface(Ci.nsINestedURI).innerMostURI;
+      } else {
+        try {
+          let resolvedURI = resolveURIInternal(cmdLine, chromeParam);
+          let isLocal = uri => {
+            let localSchemes = new Set(["chrome", "file", "resource"]);
+            if (uri instanceof Ci.nsINestedURI) {
+              uri = uri.QueryInterface(Ci.nsINestedURI).innerMostURI;
+            }
+            return localSchemes.has(uri.scheme);
+          };
+          if (isLocal(resolvedURI)) {
+            // If the URI is local, we are sure it won't wrongly inherit chrome privs
+            let features = "chrome,dialog=no,all" + this.getFeatures(cmdLine);
+            // Provide 1 null argument, as openWindow has a different behavior
+            // when the arg count is 0.
+            let argArray = Cc["@mozilla.org/array;1"]
+                            .createInstance(Ci.nsIMutableArray);
+            argArray.appendElement(null);
+            Services.ww.openWindow(null, resolvedURI.spec, "_blank", features, argArray);
+            cmdLine.preventDefault = true;
+          } else {
+            dump("*** Preventing load of web URI as chrome\n");
+            dump("    If you're trying to load a webpage, do not pass --chrome.\n");
           }
-          return localSchemes.has(uri.scheme);
-        };
-        if (isLocal(resolvedURI)) {
-          // If the URI is local, we are sure it won't wrongly inherit chrome privs
-          let features = "chrome,dialog=no,all" + this.getFeatures(cmdLine);
-          // Provide 1 null argument, as openWindow has a different behavior
-          // when the arg count is 0.
-          let argArray = Cc["@mozilla.org/array;1"]
-                           .createInstance(Ci.nsIMutableArray);
-          argArray.appendElement(null);
-          Services.ww.openWindow(null, resolvedURI.spec, "_blank", features, argArray);
-          cmdLine.preventDefault = true;
-        } else {
-          dump("*** Preventing load of web URI as chrome\n");
-          dump("    If you're trying to load a webpage, do not pass --chrome.\n");
+        } catch (e) {
+          Cu.reportError(e);
         }
-      } catch (e) {
-        Cu.reportError(e);
       }
     }
     if (cmdLine.handleFlag("preferences", false)) {
       openPreferences(cmdLine, {origin: "commandLineLegacy"});
       cmdLine.preventDefault = true;
     }
     if (cmdLine.handleFlag("silent", false))
       cmdLine.preventDefault = true;
--- a/browser/components/customizableui/test/browser_884402_customize_from_overflow.js
+++ b/browser/components/customizableui/test/browser_884402_customize_from_overflow.js
@@ -13,17 +13,17 @@ registerCleanupFunction(function() {
 add_task(async function() {
   overflowPanel.setAttribute("animate", "false");
 
   originalWindowWidth = window.outerWidth;
   let navbar = document.getElementById(CustomizableUI.AREA_NAVBAR);
   ok(!navbar.hasAttribute("overflowing"), "Should start with a non-overflowing toolbar.");
   window.resizeTo(400, window.outerHeight);
 
-  await waitForCondition(() => navbar.hasAttribute("overflowing"));
+  await TestUtils.waitForCondition(() => navbar.hasAttribute("overflowing"));
   ok(navbar.hasAttribute("overflowing"), "Should have an overflowing toolbar.");
 
   let chevron = document.getElementById("nav-bar-overflow-button");
   let shownPanelPromise = promisePanelElementShown(window, overflowPanel);
   chevron.click();
   await shownPanelPromise;
 
   let contextMenu = document.getElementById("customizationPanelItemContextMenu");
@@ -56,17 +56,17 @@ add_task(async function() {
 
   let sidebarButtonPlacement = CustomizableUI.getPlacementOfWidget("sidebar-button");
   ok(sidebarButtonPlacement, "Sidebar button should still have a placement");
   is(sidebarButtonPlacement && sidebarButtonPlacement.area,
      CustomizableUI.AREA_FIXED_OVERFLOW_PANEL, "Sidebar button should be pinned now");
   CustomizableUI.reset();
 
   // In some cases, it can take a tick for the navbar to overflow again. Wait for it:
-  await waitForCondition(() => navbar.hasAttribute("overflowing"));
+  await TestUtils.waitForCondition(() => navbar.hasAttribute("overflowing"));
   ok(navbar.hasAttribute("overflowing"), "Should have an overflowing toolbar.");
 
   sidebarButtonPlacement = CustomizableUI.getPlacementOfWidget("sidebar-button");
   ok(sidebarButtonPlacement, "Sidebar button should still have a placement");
   is(sidebarButtonPlacement && sidebarButtonPlacement.area, "nav-bar", "Sidebar button should be back in the navbar now");
 
   is(sidebarButton.getAttribute("overflowedItem"), "true", "Sidebar button should still be overflowed");
 });
--- a/browser/components/extensions/test/browser/browser-common.ini
+++ b/browser/components/extensions/test/browser/browser-common.ini
@@ -52,17 +52,17 @@ skip-if = os == 'linux' && debug # Bug 1
 [browser_ext_browserAction_contextMenu.js]
 # bug 1369197
 skip-if = os == 'linux'
 [browser_ext_browserAction_disabled.js]
 [browser_ext_browserAction_incognito.js]
 [browser_ext_browserAction_pageAction_icon.js]
 [browser_ext_browserAction_pageAction_icon_permissions.js]
 [browser_ext_browserAction_popup.js]
-skip-if = (debug && os == 'linux' && bits == 32) || (os == 'win' && !debug) # Bug 1313372, win: Bug 1285500
+skip-if = (debug && os == 'linux' && bits == 32) # Bug 1313372
 [browser_ext_browserAction_popup_port.js]
 [browser_ext_browserAction_popup_preload.js]
 skip-if = (os == 'win' && !debug) || (verify && debug && (os == 'mac')) # bug 1352668
 [browser_ext_browserAction_popup_resize.js]
 [browser_ext_browserAction_popup_resize_bottom.js]
 skip-if = debug # Bug 1522164
 [browser_ext_browserAction_simple.js]
 [browser_ext_browserAction_telemetry.js]
--- a/browser/components/extensions/test/browser/browser_ext_browserAction_popup_preload.js
+++ b/browser/components/extensions/test/browser/browser_ext_browserAction_popup_preload.js
@@ -4,17 +4,17 @@
 "use strict";
 
 let scriptPage = url => `<html><head><meta charset="utf-8"><script src="${url}"></script></head><body>${url}</body></html>`;
 
 add_task(async function testBrowserActionClickCanceled() {
   let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, "http://example.com/");
 
   // Make sure the mouse isn't hovering over the browserAction widget.
-  EventUtils.synthesizeMouseAtCenter(gURLBar, {type: "mouseover"}, window);
+  EventUtils.synthesizeMouseAtCenter(gURLBar.textbox, {type: "mouseover"}, window);
 
   let extension = ExtensionTestUtils.loadExtension({
     manifest: {
       "browser_action": {
         "default_popup": "popup.html",
         "browser_style": true,
       },
       "permissions": ["activeTab"],
@@ -82,17 +82,17 @@ add_task(async function testBrowserActio
 
   await extension.unload();
 
   BrowserTestUtils.removeTab(tab);
 });
 
 add_task(async function testBrowserActionDisabled() {
   // Make sure the mouse isn't hovering over the browserAction widget.
-  EventUtils.synthesizeMouseAtCenter(gURLBar, {type: "mouseover"}, window);
+  EventUtils.synthesizeMouseAtCenter(gURLBar.textbox, {type: "mouseover"}, window);
 
   let extension = ExtensionTestUtils.loadExtension({
     manifest: {
       "browser_action": {
         "default_popup": "popup.html",
         "browser_style": true,
       },
     },
@@ -190,17 +190,17 @@ add_task(async function testBrowserActio
     },
   });
 
   let win = await BrowserTestUtils.openNewBrowserWindow();
   await BrowserTestUtils.loadURI(win.gBrowser.selectedBrowser, "http://example.com/");
   await BrowserTestUtils.browserLoaded(win.gBrowser.selectedBrowser);
 
   // Make sure the mouse isn't hovering over the browserAction widget.
-  EventUtils.synthesizeMouseAtCenter(win.gURLBar, {type: "mouseover"}, win);
+  EventUtils.synthesizeMouseAtCenter(win.gURLBar.textbox, {type: "mouseover"}, win);
 
   await extension.startup();
 
   let widget = getBrowserActionWidget(extension).forWindow(win);
   EventUtils.synthesizeMouseAtCenter(widget.node, {type: "mousedown", button: 0}, win);
 
   await new Promise(resolve => setTimeout(resolve, 100));
 
@@ -226,17 +226,17 @@ add_task(async function testClosePopupDu
       "popup.js": function() {
         browser.test.sendMessage("popup_loaded");
         window.close();
       },
     },
   });
 
   // Make sure the mouse isn't hovering over the browserAction widget.
-  EventUtils.synthesizeMouseAtCenter(gURLBar, {type: "mouseover"}, window);
+  EventUtils.synthesizeMouseAtCenter(gURLBar.textbox, {type: "mouseover"}, window);
 
   await extension.startup();
 
   const {GlobalManager, Management: {global: {browserActionFor}}} = ChromeUtils.import("resource://gre/modules/Extension.jsm", null);
 
   let ext = GlobalManager.extensionMap.get(extension.id);
   let browserAction = browserActionFor(ext);
 
--- a/browser/components/extensions/test/browser/browser_ext_browserAction_telemetry.js
+++ b/browser/components/extensions/test/browser/browser_ext_browserAction_telemetry.js
@@ -184,17 +184,17 @@ add_task(async function testBrowserActio
   is(histogram.snapshot().sum, 0,
      `No data recorded for histogram: ${RESULT_HISTOGRAM}.`);
   is(Object.keys(histogramKeyed).length, 0,
      `No data recorded for histogram: ${RESULT_HISTOGRAM_KEYED}.`);
 
   await extension.startup();
 
   // Make sure the mouse isn't hovering over the browserAction widget to start.
-  EventUtils.synthesizeMouseAtCenter(gURLBar, {type: "mouseover"}, window);
+  EventUtils.synthesizeMouseAtCenter(gURLBar.textbox, {type: "mouseover"}, window);
 
   let widget = getBrowserActionWidget(extension).forWindow(window);
 
   // Hover the mouse over the browserAction widget and then move it away.
   EventUtils.synthesizeMouseAtCenter(widget.node, {type: "mouseover", button: 0}, window);
   EventUtils.synthesizeMouseAtCenter(widget.node, {type: "mouseout", button: 0}, window);
   EventUtils.synthesizeMouseAtCenter(document.documentElement, {type: "mousemove"}, window);
 
--- a/browser/components/extensions/test/browser/browser_ext_commands_execute_browser_action.js
+++ b/browser/components/extensions/test/browser/browser_ext_commands_execute_browser_action.js
@@ -1,15 +1,15 @@
 /* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* vim: set sts=2 sw=2 et tw=80: */
 "use strict";
 
 async function testExecuteBrowserActionWithOptions(options = {}) {
   // Make sure the mouse isn't hovering over the browserAction widget.
-  EventUtils.synthesizeMouseAtCenter(gURLBar, {type: "mouseover"}, window);
+  EventUtils.synthesizeMouseAtCenter(gURLBar.textbox, {type: "mouseover"}, window);
 
   let extensionOptions = {};
 
   extensionOptions.manifest = {
     "commands": {
       "_execute_browser_action": {
         "suggested_key": {
           "default": "Alt+Shift+J",
--- a/browser/components/extensions/test/browser/browser_ext_incognito_views.js
+++ b/browser/components/extensions/test/browser/browser_ext_incognito_views.js
@@ -1,15 +1,15 @@
 /* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* vim: set sts=2 sw=2 et tw=80: */
 "use strict";
 
 add_task(async function testIncognitoViews() {
   // Make sure the mouse isn't hovering over the browserAction widget.
-  EventUtils.synthesizeMouseAtCenter(gURLBar, {type: "mouseover"}, window);
+  EventUtils.synthesizeMouseAtCenter(gURLBar.textbox, {type: "mouseover"}, window);
 
   let extension = ExtensionTestUtils.loadExtension({
     manifest: {
       "permissions": ["tabs"],
       "browser_action": {
         "default_popup": "popup.html",
       },
     },
--- a/browser/components/extensions/test/browser/browser_ext_omnibox.js
+++ b/browser/components/extensions/test/browser/browser_ext_omnibox.js
@@ -1,12 +1,14 @@
 /* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* vim: set sts=2 sw=2 et tw=80: */
 "use strict";
 
+const {UrlbarTestUtils} = ChromeUtils.import("resource://testing-common/UrlbarTestUtils.jsm");
+
 add_task(async function() {
   // This keyword needs to be unique to prevent history entries from unrelated
   // tests from appearing in the suggestions list.
   let keyword = "VeryUniqueKeywordThatDoesNeverMatchAnyTestUrl";
 
   let extension = ExtensionTestUtils.loadExtension({
     manifest: {
       "omnibox": {
@@ -76,47 +78,44 @@ add_task(async function() {
          `Expected "${event}" to have fired with text: "${expected.text}".`);
     }
     if (expected.disposition) {
       is(actual.disposition, expected.disposition,
          `Expected "${event}" to have fired with disposition: "${expected.disposition}".`);
     }
   }
 
-  async function waitForAutocompleteResultAt(index) {
-    let searchString = gURLBar.controller.searchString;
-    await BrowserTestUtils.waitForCondition(
-      () => gURLBar.popup.richlistbox.itemChildren.length > index &&
-            gURLBar.popup.richlistbox.itemChildren[index].getAttribute("ac-text") == searchString,
-      `Waiting for the autocomplete result for "${searchString}" at [${index}] to appear`);
+  async function waitForResult(index, searchString) {
+    let result = await UrlbarTestUtils.getDetailsOfResultAt(window, index);
     // Ensure the addition is complete, for proper mouse events on the entries.
     await new Promise(resolve => window.requestIdleCallback(resolve, {timeout: 1000}));
-    return gURLBar.popup.richlistbox.itemChildren[index];
+    return result;
   }
 
-  async function promiseClickOnItem(item, details) {
+  async function promiseClickOnItem(index, details) {
     // The Address Bar panel is animated and updated on a timer, thus it may not
     // yet be listening to events when we try to click on it.  This uses a
     // polling strategy to repeat the click, if it doesn't go through.
     let clicked = false;
-    item.addEventListener("mousedown", () => { clicked = true; }, {once: true});
+    let element = await UrlbarTestUtils.waitForAutocompleteResultAt(window, index);
+    element.addEventListener("mousedown", () => { clicked = true; }, {once: true});
     while (!clicked) {
-      EventUtils.synthesizeMouseAtCenter(item, details);
+      EventUtils.synthesizeMouseAtCenter(element, details);
       await new Promise(r => window.requestIdleCallback(r, {timeout: 1000}));
     }
   }
 
   let inputSessionSerial = 0;
   async function startInputSession() {
     gURLBar.focus();
     gURLBar.value = keyword;
     EventUtils.sendString(" ");
     await expectEvent("on-input-started-fired");
     // Always use a different input at every invokation, so that
-    // waitForAutocompleteResultAt can distinguish different cases.
+    // waitForResult can distinguish different cases.
     let char = ((inputSessionSerial++) % 10).toString();
     EventUtils.sendString(char);
 
     await expectEvent("on-input-changed-fired", {text: char});
     return char;
   }
 
   async function testInputEvents() {
@@ -182,88 +181,85 @@ add_task(async function() {
         suggestion: {
           description: expectedText,
         },
       });
       await extension.awaitMessage("default-suggestion-set");
     }
 
     let text = await startInputSession();
-    await waitForAutocompleteResultAt(0);
-
-    let item = gURLBar.popup.richlistbox.itemChildren[0];
+    let result = await waitForResult(0);
 
-    is(item.getAttribute("title"), expectedText,
-       `Expected heuristic result to have title: "${expectedText}".`);
+    Assert.equal(result.displayed.title, expectedText,
+                 `Expected heuristic result to have title: "${expectedText}".`);
 
-    is(item.getAttribute("displayurl"), `${keyword} ${text}`,
-       `Expected heuristic result to have displayurl: "${keyword} ${text}".`);
+    Assert.equal(result.displayed.action, `${keyword} ${text}`,
+                 `Expected heuristic result to have displayurl: "${keyword} ${text}".`);
 
     let promiseEvent = expectEvent("on-input-entered-fired", {
       text,
       disposition: "currentTab",
     });
-    await promiseClickOnItem(item, {});
+    await promiseClickOnItem(0, {});
     await promiseEvent;
   }
 
   async function testDisposition(suggestionIndex, expectedDisposition, expectedText) {
     await startInputSession();
-    await waitForAutocompleteResultAt(suggestionIndex);
+    await waitForResult(suggestionIndex);
 
     // Select the suggestion.
     EventUtils.synthesizeKey("KEY_ArrowDown", {repeat: suggestionIndex});
 
     let promiseEvent = expectEvent("on-input-entered-fired", {
       text: expectedText,
       disposition: expectedDisposition,
     });
 
-    let item = gURLBar.popup.richlistbox.itemChildren[suggestionIndex];
     if (expectedDisposition == "currentTab") {
-      await promiseClickOnItem(item, {});
+      await promiseClickOnItem(suggestionIndex, {});
     } else if (expectedDisposition == "newForegroundTab") {
-      await promiseClickOnItem(item, {accelKey: true});
+      await promiseClickOnItem(suggestionIndex, {accelKey: true});
     } else if (expectedDisposition == "newBackgroundTab") {
-      await promiseClickOnItem(item, {shiftKey: true, accelKey: true});
+      await promiseClickOnItem(suggestionIndex, {shiftKey: true, accelKey: true});
     }
     await promiseEvent;
   }
 
   async function testSuggestions(info) {
     extension.sendMessage("set-synchronous", {synchronous: false});
     await extension.awaitMessage("set-synchronous-set");
 
-    function expectSuggestion({content, description}, index) {
-      let item = gURLBar.popup.richlistbox.itemChildren[index + 1]; // Skip the heuristic result.
-
-      ok(!!item, "Expected item to exist");
-      is(item.getAttribute("title"), description,
-         `Expected suggestion to have title: "${description}".`);
-
-      is(item.getAttribute("displayurl"), `${keyword} ${content}`,
-         `Expected suggestion to have displayurl: "${keyword} ${content}".`);
+    let text = await startInputSession();
+    if (!UrlbarPrefs.get("quantumbar")) {
+      // TODO Bug 1530338: We can't yet wait for a specific result for the
+      // quantumbar. Therefore we just skip this for now.
+      await waitForResult(0);
     }
 
-    let text = await startInputSession();
-    // Even if the results are generated asynchronously,
-    // the heuristic result should always be present.
-    await waitForAutocompleteResultAt(0);
-
     extension.sendMessage(info.test);
     await extension.awaitMessage("test-ready");
 
-    await waitForAutocompleteResultAt(info.suggestions.length - 1);
-    info.suggestions.forEach(expectSuggestion);
+    await waitForResult(info.suggestions.length - 1);
+    // Skip the heuristic result.
+    let index = 1;
+    for (let {content, description} of info.suggestions) {
+      let item = await UrlbarTestUtils.getDetailsOfResultAt(window, index);
+      Assert.equal(item.displayed.title, description,
+                   `Expected suggestion to have title: "${description}".`);
+      Assert.equal(item.displayed.action, `${keyword} ${content}`,
+                   `Expected suggestion to have displayurl: "${keyword} ${content}".`);
+      index++;
+    }
 
     let promiseEvent = expectEvent("on-input-entered-fired", {
       text,
       disposition: "currentTab",
     });
-    await promiseClickOnItem(gURLBar.popup.richlistbox.itemChildren[0], {});
+    await promiseClickOnItem(0, {});
     await promiseEvent;
   }
 
   await extension.startup();
 
   await SimpleTest.promiseFocus(window);
 
   await testInputEvents();
--- a/browser/components/extensions/test/browser/browser_ext_sidebarAction_incognito.js
+++ b/browser/components/extensions/test/browser/browser_ext_sidebarAction_incognito.js
@@ -1,62 +1,61 @@
 /* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* vim: set sts=2 sw=2 et tw=80: */
 "use strict";
 
-async function testIncognito(incognitoOverride) {
+add_task(async function test_sidebarAction_not_allowed() {
   SpecialPowers.pushPrefEnv({set: [
     ["extensions.allowPrivateBrowsingByDefault", false],
   ]});
 
   let extension = ExtensionTestUtils.loadExtension({
-    incognitoOverride,
     manifest: {
       sidebar_action: {
         default_panel: "sidebar.html",
       },
     },
     background() {
       browser.test.onMessage.addListener(async pbw => {
         await browser.test.assertRejects(browser.sidebarAction.setTitle({
           windowId: pbw.windowId, title: "test",
-        }), /Invalid window ID/, "should not be able to set title");
+        }), /Invalid window ID/, "should not be able to set title with windowId");
         await browser.test.assertRejects(browser.sidebarAction.setTitle({
           tabId: pbw.tabId, title: "test",
         }), /Invalid tab ID/, "should not be able to set title");
         await browser.test.assertRejects(browser.sidebarAction.getTitle({
           windowId: pbw.windowId,
-        }), /Invalid window ID/, "should not be able to get title");
+        }), /Invalid window ID/, "should not be able to get title with windowId");
         await browser.test.assertRejects(browser.sidebarAction.getTitle({
           tabId: pbw.tabId,
-        }), /Invalid tab ID/, "should not be able to get title");
+        }), /Invalid tab ID/, "should not be able to get title with tabId");
 
         await browser.test.assertRejects(browser.sidebarAction.setIcon({
           windowId: pbw.windowId, path: "test",
-        }), /Invalid window ID/, "should not be able to set icon");
+        }), /Invalid window ID/, "should not be able to set icon with windowId");
         await browser.test.assertRejects(browser.sidebarAction.setIcon({
           tabId: pbw.tabId, path: "test",
-        }), /Invalid tab ID/, "should not be able to set icon");
+        }), /Invalid tab ID/, "should not be able to set icon with tabId");
 
         await browser.test.assertRejects(browser.sidebarAction.setPanel({
           windowId: pbw.windowId, panel: "test",
-        }), /Invalid window ID/, "should not be able to set panel");
+        }), /Invalid window ID/, "should not be able to set panel with windowId");
         await browser.test.assertRejects(browser.sidebarAction.setPanel({
           tabId: pbw.tabId, panel: "test",
-        }), /Invalid tab ID/, "should not be able to set panel");
+        }), /Invalid tab ID/, "should not be able to set panel with tabId");
         await browser.test.assertRejects(browser.sidebarAction.getPanel({
           windowId: pbw.windowId,
-        }), /Invalid window ID/, "should not be able to get panel");
+        }), /Invalid window ID/, "should not be able to get panel with windowId");
         await browser.test.assertRejects(browser.sidebarAction.getPanel({
           tabId: pbw.tabId,
-        }), /Invalid tab ID/, "should not be able to get panel");
+        }), /Invalid tab ID/, "should not be able to get panel with tabId");
 
         await browser.test.assertRejects(browser.sidebarAction.isOpen({
           windowId: pbw.windowId,
-        }), /Invalid window ID/, "should not be able to determine openness");
+        }), /Invalid window ID/, "should not be able to determine openness with windowId");
 
         browser.test.notifyPass("pass");
       });
     },
     files: {
       "sidebar.html": `
         <!DOCTYPE html>
         <html>
@@ -76,31 +75,19 @@ async function testIncognito(incognitoOv
       },
     },
   });
 
   await extension.startup();
   let sidebarID = `${makeWidgetId(extension.id)}-sidebar-action`;
   ok(SidebarUI.sidebars.has(sidebarID), "sidebar exists in non-private window");
 
-  let winData = await getIncognitoWindow("about:blank");
+  let winData = await getIncognitoWindow();
 
   let hasSidebar = winData.win.SidebarUI.sidebars.has(sidebarID);
-  if (incognitoOverride == "spanning") {
-    ok(hasSidebar, "sidebar exists in private window");
-  } else {
-    ok(!hasSidebar, "sidebar does not exist in private window");
-    // Test API access to private window data.
-    extension.sendMessage(winData.details);
-    await extension.awaitFinish("pass");
-  }
+  ok(!hasSidebar, "sidebar does not exist in private window");
+  // Test API access to private window data.
+  extension.sendMessage(winData.details);
+  await extension.awaitFinish("pass");
 
   await BrowserTestUtils.closeWindow(winData.win);
   await extension.unload();
-}
-
-add_task(async function test_sidebarAction_not_allowed() {
-  await testIncognito();
 });
-
-add_task(async function test_sidebarAction_allowed() {
-  await testIncognito("spanning");
-});
--- a/browser/components/extensions/test/browser/head.js
+++ b/browser/components/extensions/test/browser/head.js
@@ -667,17 +667,17 @@ async function startIncognitoMonitorExte
     },
     incognitoOverride: "not_allowed",
     background,
   });
   await extension.startup();
   return extension;
 }
 
-async function getIncognitoWindow(url) {
+async function getIncognitoWindow(url = "about:privatebrowsing") {
   // Since events will be limited based on incognito, we need a
   // spanning extension to get the tab id so we can test access failure.
 
   // avoid linting issue with background
   /* eslint-disable no-use-before-define */
   function background(expectUrl) {
     browser.tabs.onUpdated.addListener((tabId, changeInfo, tab) => {
       if (changeInfo.status === "complete" && tab.url === expectUrl) {
--- a/browser/components/places/PlacesUIUtils.jsm
+++ b/browser/components/places/PlacesUIUtils.jsm
@@ -746,18 +746,19 @@ var PlacesUIUtils = {
           title = host + (fileName ?
                            (host ? "/" + this.ellipsis + "/" : "") + fileName :
                            uri.pathQueryRef);
         }
       } catch (e) {
         // Use (no title) for non-standard URIs (data:, javascript:, ...)
         title = "";
       }
-    } else
+    } else {
       title = aNode.title;
+    }
 
     return title || this.getString("noTitle");
   },
 
   shouldShowTabsFromOtherComputersMenuitem() {
     let weaveOK = Weave.Status.checkSetup() != Weave.CLIENT_NOT_CONFIGURED &&
                   Weave.Svc.Prefs.get("firstSync", "") != "notReady";
     return weaveOK;
--- a/browser/components/places/content/browserPlacesViews.js
+++ b/browser/components/places/content/browserPlacesViews.js
@@ -364,18 +364,19 @@ PlacesViewBase.prototype = {
 
         element.appendChild(popup);
         element.className = "menu-iconic bookmark-item";
         if (typeof this.options.extraClasses.entry == "string") {
           element.classList.add(this.options.extraClasses.entry);
         }
 
         this._domNodes.set(aPlacesNode, popup);
-      } else
+      } else {
         throw "Unexpected node";
+      }
 
       element.setAttribute("label", PlacesUIUtils.getBestTitle(aPlacesNode));
 
       let icon = aPlacesNode.icon;
       if (icon)
         element.setAttribute("image", icon);
     }
 
@@ -1568,31 +1569,31 @@ PlacesToolbar.prototype = {
       let ind = this._dropIndicator;
       ind.parentNode.collapsed = false;
       let halfInd = ind.clientWidth / 2;
       let translateX;
       if (this.isRTL) {
         halfInd = Math.ceil(halfInd);
         translateX = 0 - this._rootElt.getBoundingClientRect().right - halfInd;
         if (this._rootElt.firstElementChild) {
-          if (dropPoint.beforeIndex == -1)
+          if (dropPoint.beforeIndex == -1) {
             translateX += this._rootElt.lastElementChild.getBoundingClientRect().left;
-          else {
+          } else {
             translateX += this._rootElt.children[dropPoint.beforeIndex]
                               .getBoundingClientRect().right;
           }
         }
       } else {
         halfInd = Math.floor(halfInd);
         translateX = 0 - this._rootElt.getBoundingClientRect().left +
                      halfInd;
         if (this._rootElt.firstElementChild) {
-          if (dropPoint.beforeIndex == -1)
+          if (dropPoint.beforeIndex == -1) {
             translateX += this._rootElt.lastElementChild.getBoundingClientRect().right;
-          else {
+          } else {
             translateX += this._rootElt.children[dropPoint.beforeIndex]
                               .getBoundingClientRect().left;
           }
         }
       }
 
       ind.style.transform = "translate(" + Math.round(translateX) + "px)";
       ind.style.marginInlineStart = (-ind.clientWidth) + "px";
--- a/browser/components/places/content/menu.xml
+++ b/browser/components/places/content/menu.xml
@@ -438,18 +438,19 @@
         let newMarginTop = 0;
         if (scrollDir == 0) {
           let elt = this.firstElementChild;
           while (elt && event.screenY > elt.screenY +
                                         elt.boxObject.height / 2)
             elt = elt.nextElementSibling;
           newMarginTop = elt ? elt.screenY - this._scrollBox.screenY :
                                scrollbox.height;
-        } else if (scrollDir == 1)
+        } else if (scrollDir == 1) {
           newMarginTop = scrollbox.height;
+        }
 
         // Set the new marginTop based on arrowscrollbox.
         newMarginTop += scrollbox.y - this._scrollBox.boxObject.y;
         this._indicatorBar.firstElementChild.style.marginTop = newMarginTop + "px";
         this._indicatorBar.hidden = false;
 
         event.preventDefault();
         event.stopPropagation();
--- a/browser/components/places/content/places-tree.js
+++ b/browser/components/places/content/places-tree.js
@@ -455,19 +455,19 @@
         nodesURIChecked.push(containerURI);
 
         var wasOpen = container.containerOpen;
         if (!wasOpen)
           container.containerOpen = true;
         for (var i = 0; i < container.childCount; ++i) {
           var child = container.getChild(i);
           var childURI = child.uri;
-          if (childURI == placeURI)
+          if (childURI == placeURI) {
             return child;
-          else if (PlacesUtils.nodeIsContainer(child)) {
+          } else if (PlacesUtils.nodeIsContainer(child)) {
             var nested = findNode(PlacesUtils.asContainer(child), nodesURIChecked);
             if (nested)
               return nested;
           }
         }
 
         if (!wasOpen)
           container.containerOpen = false;
@@ -476,19 +476,19 @@
       }
 
       var container = this.result.root;
       console.assert(container, "No result, cannot select place URI!");
       if (!container)
         return;
 
       var child = findNode(container, []);
-      if (child)
+      if (child) {
         this.selectNode(child);
-      else {
+      } else {
         // If the specified child could not be located, clear the selection
         var selection = this.view.selection;
         selection.clearSelection();
       }
     }
 
     /**
      * Causes a particular node to be selected in the tree, resulting in all
--- a/browser/components/places/content/treeView.js
+++ b/browser/components/places/content/treeView.js
@@ -61,18 +61,19 @@ PlacesTreeView.prototype = {
     let selection = this.selection;
     if (selection)
       selection.selectEventsSuppressed = true;
 
     if (!this._rootNode.containerOpen) {
       // This triggers containerStateChanged which then builds the visible
       // section.
       this._rootNode.containerOpen = true;
-    } else
+    } else {
       this.invalidateContainer(this._rootNode);
+    }
 
     // "Activate" the sorting column and update commands.
     this.sortingChanged(this._result.sortingMode);
 
     if (selection)
       selection.selectEventsSuppressed = false;
   },
 
@@ -1186,19 +1187,19 @@ PlacesTreeView.prototype = {
           case PlacesUtils.virtualAllBookmarksGuid:
           case PlacesUtils.virtualHistoryGuid:
           case PlacesUtils.virtualDownloadsGuid:
           case PlacesUtils.virtualTagsGuid:
             properties += ` OrganizerQuery_${node.bookmarkGuid}`;
             break;
           }
         }
-      } else if (nodeType == Ci.nsINavHistoryResultNode.RESULT_TYPE_SEPARATOR)
+      } else if (nodeType == Ci.nsINavHistoryResultNode.RESULT_TYPE_SEPARATOR) {
         properties += " separator";
-      else if (PlacesUtils.nodeIsURI(node)) {
+      } else if (PlacesUtils.nodeIsURI(node)) {
         properties += " " + PlacesUIUtils.guessUrlSchemeForUI(node.uri);
       }
 
       this._cellProperties.set(node, properties);
     }
 
     return props + " " + properties;
   },
--- a/browser/components/places/tests/browser/browser_bookmarksProperties.js
+++ b/browser/components/places/tests/browser/browser_bookmarksProperties.js
@@ -431,18 +431,19 @@ function open_properties_dialog(test) {
       case ACTION_ADD:
         if (test.sidebar == SIDEBAR_BOOKMARKS_ID) {
           if (test.itemType == TYPE_FOLDER)
             command = "placesCmd_new:folder";
           else if (test.itemType == TYPE_BOOKMARK)
             command = "placesCmd_new:bookmark";
           else
             Assert.ok(false, "You didn't set a valid itemType for adding an item");
-        } else
+        } else {
           command = "placesCmd_createBookmark";
+        }
         break;
       default:
         Assert.ok(false, "You didn't set a valid action for this test");
     }
     // Ensure command is enabled for this node.
     Assert.ok(tree.controller.isCommandEnabled(command),
        " command '" + command + "' on current selected node is enabled");
 
--- a/browser/components/pocket/content/pktApi.jsm
+++ b/browser/components/pocket/content/pktApi.jsm
@@ -133,19 +133,19 @@ var pktApi = (function() {
       *                         to create/update.
       * @param {string} value   String containing the value you want to give
       *                         the key you are creating/updating.
       */
     function setSetting(key, value) {
         // TODO : Move this to sqlite or a local file so it's not editable (and is safer)
         // https://developer.mozilla.org/en-US/Add-ons/Overlay_Extensions/XUL_School/Local_Storage
 
-        if (!value)
+        if (!value) {
             prefBranch.clearUserPref(key);
-        else {
+        } else {
             // We use complexValue as tags can have utf-8 characters in them
             prefBranch.setStringPref(key, value);
         }
     }
 
     /**
      * Auth
      */
--- a/browser/components/preferences/in-content/main.js
+++ b/browser/components/preferences/in-content/main.js
@@ -1547,19 +1547,19 @@ var gMainPane = {
   /**
    * Load the set of handlers defined by the application datastore.
    */
   _loadApplicationHandlers() {
     for (let wrappedHandlerInfo of gHandlerService.enumerate()) {
       let type = wrappedHandlerInfo.type;
 
       let handlerInfoWrapper;
-      if (type in this._handledTypes)
+      if (type in this._handledTypes) {
         handlerInfoWrapper = this._handledTypes[type];
-      else {
+      } else {
         handlerInfoWrapper = new HandlerInfoWrapper(type, wrappedHandlerInfo);
         this._handledTypes[type] = handlerInfoWrapper;
       }
 
       handlerInfoWrapper.handledOnlyByPlugin = false;
     }
   },
 
--- a/browser/components/preferences/in-content/privacy.js
+++ b/browser/components/preferences/in-content/privacy.js
@@ -655,25 +655,26 @@ var gPrivacyPane = {
 
   /**
    * Initialize the history mode menulist based on the privacy preferences
    */
   initializeHistoryMode() {
     let mode;
     let getVal = aPref => Preferences.get(aPref).value;
 
-    if (getVal("privacy.history.custom"))
+    if (getVal("privacy.history.custom")) {
       mode = "custom";
-    else if (this._checkHistoryValues(this.prefsForKeepingHistory)) {
+    } else if (this._checkHistoryValues(this.prefsForKeepingHistory)) {
       if (getVal("browser.privatebrowsing.autostart"))
         mode = "dontremember";
       else
         mode = "remember";
-    } else
+    } else {
       mode = "custom";
+    }
 
     document.getElementById("historyMode").value = mode;
   },
 
   /**
    * Update the selected pane based on the history mode menulist
    */
   updateHistoryModePane() {
--- a/browser/components/preferences/languages.js
+++ b/browser/components/preferences/languages.js
@@ -181,19 +181,19 @@ var gLanguagesDialog = {
     var arrayOfPrefs = preference.value.toLowerCase().split(/\s*,\s*/);
     for (var i = 0; i < arrayOfPrefs.length; ++i ) {
       if (arrayOfPrefs[i] == selectedID)
         return;
     }
 
     this._selectedItemID = selectedID;
 
-    if (preference.value == "")
+    if (preference.value == "") {
       preference.value = selectedID;
-    else {
+    } else {
       arrayOfPrefs.unshift(selectedID);
       preference.value = arrayOfPrefs.join(",");
     }
 
     this._acceptLanguages[selectedID] = true;
     this._availableLanguages.selectedItem = null;
 
     // Rebuild the available list with the added item removed...
--- a/browser/components/search/content/searchbar.js
+++ b/browser/components/search/content/searchbar.js
@@ -352,18 +352,19 @@ class MozSearchbar extends MozXULElement
     this.addEventListener("command", (event) => {
       const target = event.originalTarget;
       if (target.engine) {
         this.currentEngine = target.engine;
       } else if (target.classList.contains("addengine-item")) {
         // Select the installed engine if the installation succeeds.
         Services.search.addEngine(target.getAttribute("uri"), null,
           target.getAttribute("src"), false).then(engine => this.currentEngine = engine);
-      } else
+      } else {
         return;
+      }
 
       this.focus();
       this.select();
     });
 
     this.addEventListener("DOMMouseScroll", (event) => {
       if (event.getModifierState("Accel")) {
         this.selectEngine(event, event.detail > 0);
--- a/browser/components/search/test/browser/browser_addEngine.js
+++ b/browser/components/search/test/browser/browser_addEngine.js
@@ -90,16 +90,17 @@ var gTests = [
 ];
 
 var gCurrentTest = null;
 function nextTest() {
   if (gTests.length) {
     gCurrentTest = gTests.shift();
     info("Running " + gCurrentTest.name);
     gCurrentTest.run();
-  } else
+  } else {
     executeSoon(finish);
+  }
 }
 
 function test() {
   waitForExplicitFinish();
   gSS.init().then(nextTest);
 }
--- a/browser/components/sessionstore/ContentSessionStore.jsm
+++ b/browser/components/sessionstore/ContentSessionStore.jsm
@@ -13,40 +13,29 @@ ChromeUtils.import("resource://gre/modul
 function debug(msg) {
   Services.console.logStringMessage("SessionStoreContent: " + msg);
 }
 
 ChromeUtils.defineModuleGetter(this, "ContentRestore",
   "resource:///modules/sessionstore/ContentRestore.jsm");
 ChromeUtils.defineModuleGetter(this, "SessionHistory",
   "resource://gre/modules/sessionstore/SessionHistory.jsm");
-ChromeUtils.defineModuleGetter(this, "Utils",
-  "resource://gre/modules/sessionstore/Utils.jsm");
 
 // A bound to the size of data to store for DOM Storage.
 const DOM_STORAGE_LIMIT_PREF = "browser.sessionstore.dom_storage_limit";
 
 // This pref controls whether or not we send updates to the parent on a timeout
 // or not, and should only be used for tests or debugging.
 const TIMEOUT_DISABLED_PREF = "browser.sessionstore.debug.no_auto_updates";
 
 const PREF_INTERVAL = "browser.sessionstore.interval";
 
 const kNoIndex = Number.MAX_SAFE_INTEGER;
 const kLastIndex = Number.MAX_SAFE_INTEGER - 1;
 
-/**
- * A function that will recursively call |cb| to collect data for all
- * non-dynamic frames in the current frame/docShell tree.
- */
-function mapFrameTree(mm, callback) {
-  let [data] = Utils.mapFrameTree(mm.content, callback);
-  return data;
-}
-
 class Handler {
   constructor(store) {
     this.store = store;
   }
 
   get contentRestore() {
     return this.store.contentRestore;
   }
@@ -336,17 +325,17 @@ class ScrollPositionListener extends Han
     this.messageQueue.push("scroll", () => this.collect());
   }
 
   onPageLoadStarted() {
     this.messageQueue.push("scroll", () => null);
   }
 
   collect() {
-    return mapFrameTree(this.mm, SessionStoreUtils.collectScrollPosition);
+    return SessionStoreUtils.collectScrollPosition(this.mm.content);
   }
 }
 
 /**
  * Listens for changes to input elements. Whenever the value of an input
  * element changes we will re-collect data for the current frame tree and send
  * a message to the parent process.
  *
@@ -374,17 +363,17 @@ class FormDataListener extends Handler {
     this.messageQueue.push("formdata", () => this.collect());
   }
 
   onPageLoadStarted() {
     this.messageQueue.push("formdata", () => null);
   }
 
   collect() {
-    return mapFrameTree(this.mm, SessionStoreUtils.collectFormData);
+    return SessionStoreUtils.collectFormData(this.mm.content);
   }
 }
 
 /**
  * Listens for changes to docShell capabilities. Whenever a new load is started
  * we need to re-check the list of capabilities and send message when it has
  * changed.
  *
--- a/browser/components/sessionstore/content/aboutSessionRestore.js
+++ b/browser/components/sessionstore/content/aboutSessionRestore.js
@@ -202,18 +202,19 @@ function onListClick(aEvent) {
     let accelKey = AppConstants.platform == "macosx" ?
                    aEvent.metaKey :
                    aEvent.ctrlKey;
     if ((aEvent.button == 1 || aEvent.button == 0 && aEvent.detail == 2 || accelKey) &&
         cell.col.id == "title" &&
         !treeView.isContainer(cell.row)) {
       restoreSingleTab(cell.row, aEvent.shiftKey);
       aEvent.stopPropagation();
-    } else if (cell.col.id == "restore")
+    } else if (cell.col.id == "restore") {
       toggleRowChecked(cell.row);
+    }
   }
 }
 
 function onListKeyDown(aEvent) {
   switch (aEvent.keyCode) {
   case KeyEvent.DOM_VK_SPACE:
     toggleRowChecked(document.getElementById("tabList").currentIndex);
     // Prevent page from scrolling on the space key.
--- a/browser/components/translation/LanguageDetector.jsm
+++ b/browser/components/translation/LanguageDetector.jsm
@@ -76,19 +76,19 @@ var workerManager = {
 
     this._idleTimeout = setTimeout(this._flushWorker.bind(this), IDLE_TIMEOUT);
   },
 
   // Immediately terminate the worker, as long as there no pending
   // results. Otherwise, reschedule termination until after the next
   // idle timeout.
   _flushWorker() {
-    if (this.detectionQueue.length)
+    if (this.detectionQueue.length) {
       this.flushWorker();
-    else {
+    } else {
       if (this._worker)
         this._worker.terminate();
 
       this._worker = null;
       this._workerReadyPromise = null;
       this._idleTimeout = null;
     }
   },
--- a/browser/components/translation/content/translation-notification.js
+++ b/browser/components/translation/content/translation-notification.js
@@ -276,19 +276,19 @@ class MozTranslationNotification extends
   showTranslation() {
     this.translation.showTranslatedContent();
     this._handleButtonHiding();
   }
 
   optionsShowing() {
     // Get the source language name.
     let lang;
-    if (this.state == Translation.STATE_OFFER)
+    if (this.state == Translation.STATE_OFFER) {
       lang = this._getAnonElt("detectedLanguage").value;
-    else {
+    } else {
       lang = this._getAnonElt("fromLanguage").value;
 
       // If we have never attempted to translate the page before the
       // service became unavailable, "fromLanguage" isn't set.
       if (!lang && this.state == Translation.STATE_UNAVAILABLE)
         lang = this.translation.detectedLanguage;
     }
 
--- a/browser/components/urlbar/UrlbarController.jsm
+++ b/browser/components/urlbar/UrlbarController.jsm
@@ -8,16 +8,17 @@ var EXPORTED_SYMBOLS = [
   "UrlbarController",
 ];
 
 const {XPCOMUtils} = ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 const {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm");
 XPCOMUtils.defineLazyModuleGetters(this, {
   AppConstants: "resource://gre/modules/AppConstants.jsm",
   BrowserUsageTelemetry: "resource:///modules/BrowserUsageTelemetry.jsm",
+  ExtensionSearchHandler: "resource://gre/modules/ExtensionSearchHandler.jsm",
   PlacesUtils: "resource://gre/modules/PlacesUtils.jsm",
   UrlbarPrefs: "resource:///modules/UrlbarPrefs.jsm",
   UrlbarProvidersManager: "resource:///modules/UrlbarProvidersManager.jsm",
   UrlbarUtils: "resource:///modules/UrlbarUtils.jsm",
   URLBAR_SELECTED_RESULT_TYPES: "resource:///modules/BrowserUsageTelemetry.jsm",
 });
 
 const TELEMETRY_1ST_RESULT = "PLACES_AUTOCOMPLETE_1ST_RESULT_TIME_MS";
@@ -103,29 +104,37 @@ class UrlbarController {
     this._notify("onQueryStarted", queryContext);
     await this.manager.startQuery(queryContext, this);
     this._notify("onQueryFinished", queryContext);
     return queryContext;
   }
 
   /**
    * Cancels an in-progress query. Note, queries may continue running if they
-   * can't be canceled.
+   * can't be cancelled.
+   *
+   * @param {UrlbarUtils.CANCEL_REASON} [reason]
+   *   The reason the query was cancelled.
    */
-  cancelQuery() {
+  cancelQuery(reason) {
     if (!this._lastQueryContext) {
       return;
     }
 
     TelemetryStopwatch.cancel(TELEMETRY_1ST_RESULT, this._lastQueryContext);
     TelemetryStopwatch.cancel(TELEMETRY_6_FIRST_RESULTS, this._lastQueryContext);
 
     this.manager.cancelQuery(this._lastQueryContext);
     this._notify("onQueryCancelled", this._lastQueryContext);
     delete this._lastQueryContext;
+
+    if (reason == UrlbarUtils.CANCEL_REASON.BLUR &&
+        ExtensionSearchHandler.hasActiveInputSession()) {
+      ExtensionSearchHandler.handleInputCancelled();
+    }
   }
 
   /**
    * Receives results from a query.
    *
    * @param {UrlbarQueryContext} queryContext The query details.
    */
   receiveResults(queryContext) {
--- a/browser/components/urlbar/UrlbarInput.jsm
+++ b/browser/components/urlbar/UrlbarInput.jsm
@@ -148,17 +148,16 @@ class UrlbarInput {
   /**
    * Applies styling to the text in the urlbar input, depending on the text.
    */
   formatValue() {
     this.valueFormatter.update();
   }
 
   closePopup() {
-    this.controller.cancelQuery();
     this.view.close();
   }
 
   focus() {
     this.inputField.focus();
   }
 
   blur() {
@@ -366,16 +365,19 @@ class UrlbarInput {
           isSuggestion: !!result.payload.suggestion,
           alias: result.payload.keyword,
         };
         const engine = Services.search.getEngineByName(result.payload.engine);
         this._recordSearch(engine, event, actionDetails);
         break;
       }
       case UrlbarUtils.RESULT_TYPE.OMNIBOX: {
+        // The urlbar needs to revert to the loaded url when a command is
+        // handled by the extension.
+        this.handleRevert();
         // We don't directly handle a load when an Omnibox API result is picked,
         // instead we forward the request to the WebExtension itself, because
         // the value may not even be a url.
         // We pass the keyword and content, that actually is the retrieved value
         // prefixed by the keyword. ExtensionSearchHandler uses this keyword
         // redundancy as a sanity check.
         ExtensionSearchHandler.handleInputEntered(result.payload.keyword,
                                                   result.payload.content,
@@ -945,17 +947,17 @@ class UrlbarInput {
 
     insertLocation.insertAdjacentElement("afterend", pasteAndGo);
   }
 
   // Event handlers below.
 
   _on_blur(event) {
     this.formatValue();
-    this.closePopup();
+    this.view.close(UrlbarUtils.CANCEL_REASON.BLUR);
   }
 
   _on_focus(event) {
     this._updateUrlTooltip();
 
     this.formatValue();
   }
 
--- a/browser/components/urlbar/UrlbarUtils.jsm
+++ b/browser/components/urlbar/UrlbarUtils.jsm
@@ -109,16 +109,22 @@ var UrlbarUtils = {
 
   // IME composition states.
   COMPOSITION: {
     NONE: 1,
     COMPOSING: 2,
     COMMIT: 3,
   },
 
+  // This defines possible reasons for canceling a query.
+  CANCEL_REASON: {
+    // 1 is intentionally left in case we want a none/undefined/other later.
+    BLUR: 2,
+  },
+
   /**
    * Adds a url to history as long as it isn't in a private browsing window,
    * and it is valid.
    *
    * @param {string} url The url to add to history.
    * @param {nsIDomWindow} window The window from where the url is being added.
    */
   addToUrlbarHistory(url, window) {
--- a/browser/components/urlbar/UrlbarView.jsm
+++ b/browser/components/urlbar/UrlbarView.jsm
@@ -167,19 +167,24 @@ class UrlbarView {
         break;
       }
       row = next;
     }
     this._selectItem(row);
   }
 
   /**
-   * Closes the autocomplete results popup.
+   * Closes the autocomplete popup, cancelling the query if necessary.
+   *
+   * @param {UrlbarUtils.CANCEL_REASON} [cancelReason]
+   *   Indicates if this close is being triggered as a result of a user action
+   *   which would cancel a query, e.g. on blur.
    */
-  close() {
+  close(cancelReason) {
+    this.controller.cancelQuery(cancelReason);
     this.panel.hidePopup();
   }
 
   // UrlbarController listener methods.
   onQueryStarted(queryContext) {
     this._rows.style.minHeight = this._getBoundsWithoutFlushing(this._rows).height + "px";
   }
 
@@ -459,16 +464,19 @@ class UrlbarView {
         setAction(bundle.formatStringFromName("searchWithEngine",
                                               [result.payload.engine], 1));
         break;
       case UrlbarUtils.RESULT_TYPE.KEYWORD:
         if (result.payload.input.trim() == result.payload.keyword) {
           setAction(bundle.GetStringFromName("visit"));
         }
         break;
+      case UrlbarUtils.RESULT_TYPE.OMNIBOX:
+        setAction(result.payload.content);
+        break;
       default:
         if (result.heuristic) {
           setAction(bundle.GetStringFromName("visit"));
         } else {
           setURL();
         }
         break;
     }
--- a/browser/components/urlbar/tests/UrlbarTestUtils.jsm
+++ b/browser/components/urlbar/tests/UrlbarTestUtils.jsm
@@ -294,17 +294,17 @@ class UrlbarAbstraction {
 
   promiseSearchComplete() {
     if (this.quantumbar) {
       return this.urlbar.lastQueryContextPromise;
     }
     return BrowserTestUtils.waitForCondition(
       () => this.urlbar.controller.searchStatus >=
               Ci.nsIAutoCompleteController.STATUS_COMPLETE_NO_MATCH,
-      "waiting urlbar search to complete");
+      "waiting urlbar search to complete", 100, 50);
   }
 
   async promiseResultAt(index) {
     if (!this.quantumbar) {
       // In the legacy address bar, old results are replaced when new results
       // arrive, thus it's possible for a result to be present but refer to
       // a previous query. This ensures the given result refers to the current
       // query by checking its query string against the string being searched
--- a/browser/modules/test/browser/browser_UsageTelemetry_urlbar.js
+++ b/browser/modules/test/browser/browser_UsageTelemetry_urlbar.js
@@ -39,19 +39,19 @@ async function clickURLBarSuggestion(res
   await UrlbarTestUtils.promiseSearchComplete(window);
 
   const count = UrlbarTestUtils.getResultCount(window);
   for (let i = 0; i < count; i++) {
     let result = await UrlbarTestUtils.getDetailsOfResultAt(window, i);
     if (result.displayed.title == resultTitle) {
       // This entry is the search suggestion we're looking for.
       let element = await UrlbarTestUtils.waitForAutocompleteResultAt(window, i);
-      if (button == 1)
+      if (button == 1) {
         EventUtils.synthesizeMouseAtCenter(element, {});
-      else if (button == 2) {
+      } else if (button == 2) {
         EventUtils.synthesizeMouseAtCenter(element, {type: "mousedown", button: 2});
       }
       return;
     }
   }
 }
 
 /**
--- a/browser/themes/shared/tabs.inc.css
+++ b/browser/themes/shared/tabs.inc.css
@@ -671,17 +671,17 @@
 }
 
 /* Tab bar scroll arrows */
 
 .tabbrowser-arrowscrollbox > .scrollbutton-up,
 .tabbrowser-arrowscrollbox > .scrollbutton-down {
   list-style-image: url(chrome://browser/skin/arrow-left.svg) !important;
   -moz-context-properties: fill, fill-opacity;
-  fill: currentColor;
+  fill: var(--lwt-toolbarbutton-icon-fill, currentColor);
   fill-opacity: var(--toolbarbutton-icon-fill-opacity);
   color: inherit;
 }
 
 .tabbrowser-arrowscrollbox > .scrollbutton-up:-moz-locale-dir(rtl),
 .tabbrowser-arrowscrollbox > .scrollbutton-down:-moz-locale-dir(ltr) {
   transform: scaleX(-1);
 }
--- a/devtools/client/debugger/new/package.json
+++ b/devtools/client/debugger/new/package.json
@@ -6,19 +6,16 @@
     "url": "git://github.com/firefox-devtools/debugger.html.git",
     "type": "git"
   },
   "bugs": {
     "url": "https://github.com/firefox-devtools/debugger.html/issues"
   },
   "homepage": "https://github.com/firefox-devtools/debugger.html#readme",
   "engineStrict": true,
-  "engines": {
-    "node": ">=10.15.0"
-  },
   "scripts": {
     "start": "node bin/dev-server",
     "start-app": "TARGET=application node bin/dev-server",
     "flow": "flow",
     "eslint-check": "eslint --print-config .eslintrc.js | eslint-config-prettier-check",
     "prettier": "node bin/prettier.js",
     "license-check": "devtools-license-check",
     "links": "ls -l node_modules/ | grep ^l || echo 'no linked packages'",
--- a/devtools/client/debugger/new/src/test/tests-setup.js
+++ b/devtools/client/debugger/new/src/test/tests-setup.js
@@ -37,21 +37,22 @@ import { clearDocuments } from "../utils
 import { clearHistory } from "./utils/history";
 
 import env from "devtools-environment/test-flag";
 env.testing = true;
 
 const rootPath = path.join(__dirname, "../../");
 
 function getL10nBundle() {
-  const read = file => readFileSync(path.join(__dirname, file));
+  const read = file => readFileSync(path.join(rootPath, file));
+
   try {
-    return read("../../assets/panel/debugger.properties");
+    return read("./assets/panel/debugger.properties");
   } catch (e) {
-    return read("../../../../locales/en-us/debugger.properties");
+    return read("../../locales/en-US/debugger.properties");
   }
 }
 
 global.DebuggerConfig = {};
 global.L10N = require("devtools-launchpad").L10N;
 global.L10N.setBundle(getL10nBundle());
 global.jasmine.DEFAULT_TIMEOUT_INTERVAL = 20000;
 global.performance = { now: () => 0 };
@@ -106,8 +107,25 @@ function mockIndexeddDB() {
   return {
     open: () => ({}),
     getItem: async key => store[key],
     setItem: async (key, value) => {
       store[key] = value;
     }
   };
 }
+
+// NOTE: We polyfill finally because TRY uses node 8
+if (!global.Promise.prototype.finally) {
+  global.Promise.prototype.finally = function finallyPolyfill(callback) {
+    var constructor = this.constructor;
+
+    return this.then(function(value) {
+        return constructor.resolve(callback()).then(function() {
+          return value;
+        });
+      }, function(reason) {
+        return constructor.resolve(callback()).then(function() {
+          throw reason;
+        });
+      });
+  };
+}
--- a/devtools/client/inspector/fonts/fonts.js
+++ b/devtools/client/inspector/fonts/fonts.js
@@ -57,16 +57,19 @@ const HISTOGRAM_FONT_TYPE_DISPLAYED = "D
 
 class FontInspector {
   constructor(inspector, window) {
     this.cssProperties = inspector.cssProperties;
     this.document = window.document;
     this.inspector = inspector;
     // Set of unique keyword values supported by designated font properties.
     this.keywordValues = new Set(this.getFontPropertyValueKeywords());
+    // Selected node in the markup view. For text nodes, this points to their parent node
+    // element. Font faces and font properties for this node will be shown in the editor.
+    this.node = null;
     this.nodeComputedStyle = {};
     this.pageStyle = this.inspector.pageStyle;
     this.ruleViewTool = this.inspector.getPanel("ruleview");
     this.ruleView = this.ruleViewTool.view;
     this.selectedRule = null;
     this.store = this.inspector.store;
     // Map CSS property names and variable font axis names to methods that write their
     // corresponding values to the appropriate TextProperty from the Rule view.
@@ -157,18 +160,18 @@ class FontInspector {
       value = await this.convertUnits(property, value, fromUnit, "px");
       fromUnit = "px";
     }
 
     // Whether the conversion is done from pixels.
     const fromPx = fromUnit === "px";
     // Determine the target CSS unit for conversion.
     const unit = toUnit === "px" ? fromUnit : toUnit;
-    // NodeFront instance of selected element.
-    const node = this.inspector.selection.nodeFront;
+    // NodeFront instance of selected/target element.
+    const node = this.node;
     // Reference node based on which to convert relative sizes like "em" and "%".
     const referenceNode = (property === "line-height") ? node : node.parentNode();
     // Default output value to input value for a 1-to-1 conversion as a guard against
     // unrecognized CSS units. It will not be correct, but it will also not break.
     let out = value;
     // Computed style for reference node used for conversion of "em", "rem", "%".
     let computedStyle;
 
@@ -291,16 +294,17 @@ class FontInspector {
   destroy() {
     this.inspector.selection.off("new-node-front", this.onNewNode);
     this.inspector.sidebar.off("fontinspector-selected", this.onNewNode);
     this.ruleView.off("property-value-updated", this.onRulePropertyUpdated);
     gDevTools.off("theme-switched", this.onThemeChanged);
 
     this.document = null;
     this.inspector = null;
+    this.node = null;
     this.nodeComputedStyle = {};
     this.pageStyle = null;
     this.ruleView = null;
     this.selectedRule = null;
     this.store = null;
     this.writers.clear();
     this.writers = null;
   }
@@ -535,27 +539,16 @@ class FontInspector {
    *
    * @return {Boolean}
    */
   isPanelVisible() {
     return this.inspector &&
            this.inspector.sidebar &&
            this.inspector.sidebar.getCurrentTabID() === "fontinspector";
   }
-  /**
-   * Check if a selected node exists and fonts can apply to it.
-   *
-   * @return {Boolean}
-   */
-  isSelectedNodeValid() {
-    return this.inspector &&
-           this.inspector.selection.nodeFront &&
-           this.inspector.selection.isConnected() &&
-           this.inspector.selection.isElementNode();
-  }
 
   /**
    * Upon a new node selection, log some interesting telemetry probes.
    */
   logTelemetryProbesOnNewNode() {
     const { fontEditor } = this.store.getState();
     const { telemetry } = this.inspector;
 
@@ -649,20 +642,40 @@ class FontInspector {
     let writer;
     values.map(obj => {
       writer = this.getWriterForProperty(obj.axis);
       writer(obj.value.toString());
     });
   }
 
   /**
-   * Selection 'new-node' event handler.
+   * Event handler for "new-node-front" event fired when a new node is selected in the
+   * markup view.
+   *
+   * Sets the selected node for which font faces and font properties will be
+   * shown in the font editor. If the selection is a text node, use its parent element.
+   *
+   * Triggers a refresh of the font editor and font overview if the panel is visible.
    */
   onNewNode() {
     this.ruleView.off("property-value-updated", this.onRulePropertyUpdated);
+    // First, reset the selected node.
+    this.node = null;
+    // Then attempt to assign a selected node according to its type.
+    const selection = this.inspector && this.inspector.selection;
+    if (selection && selection.isConnected()) {
+      if (selection.isElementNode()) {
+        this.node = selection.nodeFront;
+      }
+
+      if (selection.isTextNode()) {
+        this.node = selection.nodeFront.parentNode();
+      }
+    }
+
     if (this.isPanelVisible()) {
       Promise.all([this.update(), this.refreshFontEditor()]).then(() => {
         this.logTelemetryProbesOnNewNode();
       }).catch(e => console.error(e));
     }
   }
 
   /**
@@ -748,19 +761,17 @@ class FontInspector {
         // calls to the function.
         this.onToggleFontHighlight = () => {};
         return;
       }
     }
 
     try {
       if (show) {
-        const node = isForCurrentElement
-                   ? this.inspector.selection.nodeFront
-                   : this.inspector.walker.rootNode;
+        const node = isForCurrentElement ? this.node : this.inspector.walker.rootNode;
 
         await this.fontsHighlighter.show(node, {
           CSSFamilyName: font.CSSFamilyName,
           name: font.name,
         });
       } else {
         await this.fontsHighlighter.hide();
       }
@@ -780,46 +791,37 @@ class FontInspector {
   }
 
   /**
    * Update the state of the font editor with:
    * - the fonts which apply to the current node;
    * - the computed style CSS font properties of the current node.
    *
    * This method is called:
-   * - during initial setup;
    * - when a new node is selected;
    * - when any property is changed in the Rule view.
    * For the latter case, we compare between the latest computed style font properties
    * and the ones already in the store to decide if to update the font editor state.
    */
   async refreshFontEditor() {
-    if (!this.store || !this.isSelectedNodeValid()) {
-      // If the selection is a TextNode, switch selection to be its parent node.
-      if (this.inspector.selection.isTextNode()) {
-        const selection = this.inspector.selection;
-        selection.setNodeFront(selection.nodeFront.parentNode());
-        return;
-      }
-
+    if (!this.node) {
       this.store.dispatch(resetFontEditor());
       return;
     }
 
     const options = {};
     if (this.pageStyle.supportsFontVariations) {
       options.includeVariations = true;
     }
 
-    const node = this.inspector.selection.nodeFront;
-    const fonts = await this.getFontsForNode(node, options);
+    const fonts = await this.getFontsForNode(this.node, options);
 
     try {
       // Get computed styles for the selected node, but filter by CSS font properties.
-      this.nodeComputedStyle = await this.pageStyle.getComputed(node, {
+      this.nodeComputedStyle = await this.pageStyle.getComputed(this.node, {
         filterProperties: FONT_PROPERTIES,
       });
     } catch (e) {
       // Because getComputed is async, there is a chance the font editor was
       // destroyed while we were waiting. If that happened, just bail out
       // silently.
       if (!this.document) {
         return;
@@ -837,33 +839,32 @@ class FontInspector {
     // Clear any references to writer methods and CSS declarations because the node's
     // styles may have changed since the last font editor refresh.
     this.writers.clear();
 
     // If the Rule panel is not visible, the selected element's rule models may not have
     // been created yet. For example, in 2-pane mode when Fonts is opened as the default
     // panel. Select the current node to force the Rule view to create the rule models.
     if (!this.ruleViewTool.isSidebarActive()) {
-      await this.ruleView.selectElement(node, false);
+      await this.ruleView.selectElement(this.node, false);
     }
 
     // Select the node's inline style as the rule where to write property value changes.
     this.selectedRule =
       this.ruleView.rules.find(rule => rule.domRule.type === ELEMENT_STYLE);
 
     const properties = await this.getFontProperties();
     // Assign writer methods to each axis defined in font-variation-settings.
     const axes = parseFontVariationAxes(properties["font-variation-settings"]);
     Object.keys(axes).map(axis => {
       this.writers.set(axis, this.getWriterForAxis(axis));
     });
 
-    this.store.dispatch(updateFontEditor(fonts, properties, node.actorID));
-    const isPseudo = this.inspector.selection.isPseudoElementNode();
-    this.store.dispatch(setEditorDisabled(isPseudo));
+    this.store.dispatch(updateFontEditor(fonts, properties, this.node.actorID));
+    this.store.dispatch(setEditorDisabled(this.node.isPseudoElement));
 
     this.inspector.emit("fonteditor-updated");
     // Listen to manual changes in the Rule view that could update the Font Editor state
     this.ruleView.on("property-value-updated", this.onRulePropertyUpdated);
   }
 
   /**
    * Capture the state of all variation axes. Allows the user to return to this state with
@@ -877,17 +878,17 @@ class FontInspector {
   async update() {
     // Stop refreshing if the inspector or store is already destroyed.
     if (!this.inspector || !this.store) {
       return;
     }
 
     let allFonts = [];
 
-    if (!this.isSelectedNodeValid()) {
+    if (!this.node) {
       this.store.dispatch(updateFonts(allFonts));
       return;
     }
 
     const { fontOptions } = this.store.getState();
     const { previewText } = fontOptions;
 
     const options = {
--- a/devtools/client/inspector/fonts/test/browser_fontinspector_text-node.js
+++ b/devtools/client/inspector/fonts/test/browser_fontinspector_text-node.js
@@ -11,16 +11,17 @@ const TEST_URI = URL_ROOT + "doc_browser
 add_task(async function() {
   const { inspector, view } = await openFontInspectorForURL(TEST_URI);
   const viewDoc = view.document;
 
   info("Select the first text node of <body>");
   const bodyNode = await getNodeFront("body", inspector);
   const { nodes } = await inspector.walker.children(bodyNode);
   const onInspectorUpdated = inspector.once("fontinspector-updated");
+  info("Select the text node");
   await selectNode(nodes[0], inspector);
 
   info("Waiting for font editor to render");
   await onInspectorUpdated;
 
   const textFonts = getUsedFontsEls(viewDoc);
 
   info("Select the <body> element");
--- a/devtools/client/locales/en-US/netmonitor.properties
+++ b/devtools/client/locales/en-US/netmonitor.properties
@@ -931,25 +931,25 @@ netmonitor.context.copyAsCurl=Copy as cU
 netmonitor.context.copyAsCurl.accesskey=C
 
 # LOCALIZATION NOTE (netmonitor.context.copyRequestHeaders): This is the label displayed
 # on the context menu that copies the selected item's request headers
 netmonitor.context.copyRequestHeaders=Copy Request Headers
 
 # LOCALIZATION NOTE (netmonitor.context.copyRequestHeaders.accesskey): This is the access key
 # for the Copy Request Headers menu item displayed in the context menu for a request
-netmonitor.context.copyRequestHeaders.accesskey=Q
+netmonitor.context.copyRequestHeaders.accesskey=q
 
 # LOCALIZATION NOTE (netmonitor.context.copyResponseHeaders): This is the label displayed
 # on the context menu that copies the selected item's response headers
 netmonitor.context.copyResponseHeaders=Copy Response Headers
 
 # LOCALIZATION NOTE (netmonitor.context.copyResponseHeaders.accesskey): This is the access key
 # for the Copy Response Headers menu item displayed in the context menu for a response
-netmonitor.context.copyResponseHeaders.accesskey=S
+netmonitor.context.copyResponseHeaders.accesskey=s
 
 # LOCALIZATION NOTE (netmonitor.context.copyResponse): This is the label displayed
 # on the context menu that copies the selected response as a string
 netmonitor.context.copyResponse=Copy Response
 
 # LOCALIZATION NOTE (netmonitor.context.copyResponse.accesskey): This is the access key
 # for the Copy Response menu item displayed in the context menu for a request
 netmonitor.context.copyResponse.accesskey=R
@@ -963,25 +963,25 @@ netmonitor.context.copyImageAsDataUri=Co
 netmonitor.context.copyImageAsDataUri.accesskey=I
 
 # LOCALIZATION NOTE (netmonitor.context.saveImageAs): This is the label displayed
 # on the context menu that save the Image
 netmonitor.context.saveImageAs=Save Image As
 
 # LOCALIZATION NOTE (netmonitor.context.saveImageAs.accesskey): This is the access key
 # for the Copy Image As Data URI menu item displayed in the context menu for a request
-netmonitor.context.saveImageAs.accesskey=V
+netmonitor.context.saveImageAs.accesskey=v
 
 # LOCALIZATION NOTE (netmonitor.context.copyAllAsHar): This is the label displayed
 # on the context menu that copies all as HAR format
 netmonitor.context.copyAllAsHar=Copy All As HAR
 
 # LOCALIZATION NOTE (netmonitor.context.copyAllAsHar.accesskey): This is the access key
 # for the Copy All As HAR menu item displayed in the context menu for a network panel
-netmonitor.context.copyAllAsHar.accesskey=O
+netmonitor.context.copyAllAsHar.accesskey=o
 
 # LOCALIZATION NOTE (netmonitor.context.saveAllAsHar): This is the label displayed
 # on the context menu that saves all as HAR format
 netmonitor.context.saveAllAsHar=Save All As HAR
 
 # LOCALIZATION NOTE (netmonitor.context.saveAllAsHar.accesskey): This is the access key
 # for the Save All As HAR menu item displayed in the context menu for a network panel
 netmonitor.context.saveAllAsHar.accesskey=H
--- a/devtools/docs/SUMMARY.md
+++ b/devtools/docs/SUMMARY.md
@@ -22,16 +22,17 @@
   * [Filing good bugs](./contributing/filing-good-bugs.md)
   * [Investigating performance issues](./contributing/performance.md)
   * [Writing efficient React code](./contributing/react-performance-tips.md)
 * [Automated tests](tests/README.md)
   * Running tests
     * [`xpcshell`](tests/xpcshell.md)
     * [Chrome mochitests](tests/mochitest-chrome.md)
     * [DevTools mochitests](tests/mochitest-devtools.md)
+    * [Tips](tests/tips.md)
   * [Writing tests](tests/writing-tests.md)
   * [Debugging intermittent failures](tests/debugging-intermittents.md)
   * [Performance tests (DAMP)](tests/performance-tests.md)
     * [Writing a new test](tests/writing-perf-tests.md)
 * [Files and directories](files/README.md)
   * [Adding New Files](files/adding-files.md)
 * [Tool Architectures](tools/tools.md)
   * [Inspector](tools/inspector.md)
new file mode 100644
--- /dev/null
+++ b/devtools/docs/tests/tips.md
@@ -0,0 +1,22 @@
+# Automated tests: Tips
+
+If you run tests in debug mode, e.g. when debugging memory leaks, the test logs are often dominated by `++DOMWINDOW`, `++DOCSHELL`, `--DOMWINDOW`, `--DOCSHELL` lines.
+
+These lines pollute the test logs making it difficult to find real problems. They also slow down our tests because they are not useful for debugging DevTools issues.
+
+You can add this to your `.zshrc` or `.bashrc` to disable them:
+
+```bash
+# Disable those annoying +++DOMWINDOW and +++DOCSHELL printfs from Firefox logs
+export MOZ_QUIET=1
+```
+
+You can also send `MOZ_QUIET` when you push to try&hellip; it makes the logs easier to read and makes the tests run faster because there is so much less logging.
+
+Example try syntax containing `MOZ_QUIET`:
+
+```
+./mach try -b do -p linux,linux64,macosx64,win32,win64 \
+  -u xpcshell,mochitest-bc,mochitest-e10s-bc,mochitest-dt,mochitest-chrome \
+  -t damp-e10s --setenv MOZ_QUIET=1
+```
--- a/devtools/shared/specs/targets/addon.js
+++ b/devtools/shared/specs/targets/addon.js
@@ -25,11 +25,22 @@ const addonTargetSpec = generateActorSpe
       request: {},
       response: {},
     },
     push: {
       request: {},
       response: RetVal("json"),
     },
   },
+
+  events: {
+    // The thread actor is no longer emitting newSource event in the name of the target
+    // actor (bug 1269919), but as we may still connect to older servers which still do,
+    // we have to keep it being mentioned here. Otherwise the event is considered as a
+    // response to a request and confuses the packet ordering.
+    // We can remove that once FF57 is no longer supported.
+    newSource: {
+      type: "newSource",
+    },
+  },
 });
 
 exports.addonTargetSpec = addonTargetSpec;
--- a/devtools/shared/specs/targets/browsing-context.js
+++ b/devtools/shared/specs/targets/browsing-context.js
@@ -131,15 +131,24 @@ const browsingContextTargetSpecPrototype
       type: "tabDetached",
       // This is to make browser_dbg_navigation.js to work as it expect to
       // see a packet object when listening for tabDetached
       from: Option(0, "string"),
     },
     workerListChanged: {
       type: "workerListChanged",
     },
+
+    // The thread actor is no longer emitting newSource event in the name of the target
+    // actor (bug 1269919), but as we may still connect to older servers which still do,
+    // we have to keep it being mentioned here. Otherwise the event is considered as a
+    // response to a request and confuses the packet ordering.
+    // We can remove that once FF57 is no longer supported.
+    newSource: {
+      type: "newSource",
+    },
   },
 };
 
 const browsingContextTargetSpec = generateActorSpec(browsingContextTargetSpecPrototype);
 
 exports.browsingContextTargetSpecPrototype = browsingContextTargetSpecPrototype;
 exports.browsingContextTargetSpec = browsingContextTargetSpec;
--- a/devtools/shared/specs/targets/content-process.js
+++ b/devtools/shared/specs/targets/content-process.js
@@ -19,12 +19,21 @@ const contentProcessTargetSpec = generat
       response: RetVal("contentProcessTarget.workers"),
     },
   },
 
   events: {
     workerListChanged: {
       type: "workerListChanged",
     },
+
+    // The thread actor is no longer emitting newSource event in the name of the target
+    // actor (bug 1269919), but as we may still connect to older servers which still do,
+    // we have to keep it being mentioned here. Otherwise the event is considered as a
+    // response to a request and confuses the packet ordering.
+    // We can remove that once FF57 is no longer supported.
+    newSource: {
+      type: "newSource",
+    },
   },
 });
 
 exports.contentProcessTargetSpec = contentProcessTargetSpec;
--- a/devtools/shared/specs/targets/worker.js
+++ b/devtools/shared/specs/targets/worker.js
@@ -31,12 +31,21 @@ const workerTargetSpec = generateActorSp
 
   events: {
     // WorkerTargetActor still uses old sendActorEvent function,
     // but it should use emit instead.
     // Do not emit a `close` event as Target class emit this event on destroy
     "worker-close": {
       type: "close",
     },
+
+    // The thread actor is no longer emitting newSource event in the name of the target
+    // actor (bug 1269919), but as we may still connect to older servers which still do,
+    // we have to keep it being mentioned here. Otherwise the event is considered as a
+    // response to a request and confuses the packet ordering.
+    // We can remove that once FF57 is no longer supported.
+    newSource: {
+      type: "newSource",
+    },
   },
 });
 
 exports.workerTargetSpec = workerTargetSpec;
--- a/dom/chrome-webidl/SessionStoreUtils.webidl
+++ b/dom/chrome-webidl/SessionStoreUtils.webidl
@@ -72,25 +72,25 @@ namespace SessionStoreUtils {
    * Collects scroll position data for any given |frame| in the frame hierarchy.
    *
    * @param document (DOMDocument)
    *
    * @return {scroll: "x,y"} e.g. {scroll: "100,200"}
    *         Returns null when there is no scroll data we want to store for the
    *         given |frame|.
    */
-  SSScrollPositionDict collectScrollPosition(Document document);
+  CollectedData? collectScrollPosition(WindowProxy window);
 
   /**
    * Restores scroll position data for any given |frame| in the frame hierarchy.
    *
    * @param frame (DOMWindow)
    * @param value (object, see collectScrollPosition())
    */
-  void restoreScrollPosition(Window frame, optional SSScrollPositionDict data);
+  void restoreScrollPosition(Window frame, optional CollectedData data);
 
   /**
    * Collect form data for a given |frame| *not* including any subframes.
    *
    * The returned object may have an "id", "xpath", or "innerHTML" key or a
    * combination of those three. Form data stored under "id" is for input
    * fields with id attributes. Data stored under "xpath" is used for input
    * fields that don't have a unique id and need to be queried using XPath.
@@ -100,23 +100,22 @@ namespace SessionStoreUtils {
    *   {
    *     id: {input1: "value1", input3: "value3"},
    *     xpath: {
    *       "/xhtml:html/xhtml:body/xhtml:input[@name='input2']" : "value2",
    *       "/xhtml:html/xhtml:body/xhtml:input[@name='input4']" : "value4"
    *     }
    *   }
    *
-   * @param  doc
-   *         DOMDocument instance to obtain form data for.
    * @return object
-   *         Form data encoded in an object.
+   *         Returns null when there is no scroll data
    */
-  CollectedFormData collectFormData(Document document);
-  boolean restoreFormData(Document document, optional CollectedFormData data);
+  CollectedData? collectFormData(WindowProxy window);
+
+  boolean restoreFormData(Document document, optional CollectedData data);
 
   /**
    * Updates all sessionStorage "super cookies"
    * @param content
    *        A tab's global, i.e. the root frame we want to collect for.
    * @return Returns a nested object that will have hosts as keys and per-origin
    *         session storage data as strings. For example:
    *         {"https://example.com^userContextId=1": {"key": "value", "my_number": "123"}}
@@ -130,34 +129,33 @@ namespace SessionStoreUtils {
    * @param aStorageData
    *        A nested object with storage data to be restored that has hosts as
    *        keys and per-origin session storage data as strings. For example:
    *        {"https://example.com^userContextId=1": {"key": "value", "my_number": "123"}}
    */
    void restoreSessionStorage(nsIDocShell docShell, record<DOMString, record<DOMString, DOMString>> data);
 };
 
-dictionary SSScrollPositionDict {
-  ByteString scroll;
-};
-
 dictionary CollectedFileListValue
 {
   required DOMString type;
   required sequence<DOMString> fileList;
 };
 
 dictionary CollectedNonMultipleSelectValue
 {
   required long selectedIndex;
   required DOMString value;
 };
 
 // object contains either a CollectedFileListValue or a CollectedNonMultipleSelectValue or Sequence<DOMString>
 typedef (DOMString or boolean or object) CollectedFormDataValue;
 
-dictionary CollectedFormData
+dictionary CollectedData
 {
+  ByteString scroll;
   record<DOMString, CollectedFormDataValue> id;
   record<DOMString, CollectedFormDataValue> xpath;
   DOMString innerHTML;
   ByteString url;
+  // mChildren contains CollectedData instances
+  sequence<object?> children;
 };
--- a/dom/html/nsGenericHTMLElement.cpp
+++ b/dom/html/nsGenericHTMLElement.cpp
@@ -1974,16 +1974,20 @@ bool nsGenericHTMLFormElement::IsElement
     case eMouseOut:
     case eMouseEnter:
     case eMouseLeave:
     case ePointerMove:
     case ePointerOver:
     case ePointerOut:
     case ePointerEnter:
     case ePointerLeave:
+    case eTransitionCancel:
+    case eTransitionEnd:
+    case eTransitionRun:
+    case eTransitionStart:
     case eWheel:
     case eLegacyMouseLineOrPageScroll:
     case eLegacyMousePixelScroll:
       return false;
     default:
       break;
   }
 
--- a/dom/media/MediaData.cpp
+++ b/dom/media/MediaData.cpp
@@ -62,24 +62,25 @@ bool AudioData::AdjustForStartTime(int64
   mOriginalTime -= startTimeOffset;
   if (mTrimWindow) {
     *mTrimWindow -= startTimeOffset;
   }
   return MediaData::AdjustForStartTime(aStartTime);
 }
 
 bool AudioData::SetTrimWindow(const media::TimeInterval& aTrim) {
+  MOZ_DIAGNOSTIC_ASSERT(aTrim.mStart.IsValid() && aTrim.mEnd.IsValid(),
+                        "An overflow occurred on the provided TimeInterval");
   if (!mAudioData) {
     // MoveableData got called. Can no longer work on it.
     return false;
   }
   const size_t originalFrames = mAudioData.Length() / mChannels;
   const TimeUnit originalDuration = FramesToTimeUnit(originalFrames, mRate);
-  if (!aTrim.mStart.IsValid() || !aTrim.mEnd.IsValid() ||
-      aTrim.mStart < mOriginalTime ||
+  if (aTrim.mStart < mOriginalTime ||
       aTrim.mEnd > mOriginalTime + originalDuration) {
     return false;
   }
 
   auto trimBefore = TimeUnitToFrames(aTrim.mStart - mOriginalTime, mRate);
   auto trimAfter = aTrim.mEnd == GetEndTime()
                        ? originalFrames
                        : TimeUnitToFrames(aTrim.mEnd - mOriginalTime, mRate);
--- a/dom/media/mp4/Index.cpp
+++ b/dom/media/mp4/Index.cpp
@@ -404,17 +404,20 @@ Index::Index(const IndiceWrapper& aIndic
         return;
       }
       if (indice.sync || mIsAudio) {
         haveSync = true;
       }
       if (!haveSync) {
         continue;
       }
-
+      if (indice.start_composition == indice.end_composition) {
+        // Ignore this sample as it doesn't account for the buffered range.
+        continue;
+      }
       Sample sample;
       sample.mByteRange =
           MediaByteRange(indice.start_offset, indice.end_offset);
       sample.mCompositionRange = MP4Interval<Microseconds>(
           indice.start_composition, indice.end_composition);
       sample.mDecodeTime = indice.start_decode;
       sample.mSync = indice.sync || mIsAudio;
       // FIXME: Make this infallible after bug 968520 is done.
--- a/editor/libeditor/tests/test_CF_HTML_clipboard.html
+++ b/editor/libeditor/tests/test_CF_HTML_clipboard.html
@@ -137,19 +137,19 @@ function runTest() {
         win.focus();
       }, 0);
     }, {once: true});
     iframe.srcdoc = "foo";
   }, SimpleTest.finish);
 }
 
 var isMac = ("nsILocalFileMac" in SpecialPowers.Ci);
-if (isMac)
+if (isMac) {
   SimpleTest.waitForFocus(runTest);
-else {
+} else {
   // This test is not yet supported on non-Mac platforms, see bug 574005.
   todo(false, "Test not supported on this platform");
   SimpleTest.finish();
 }
 
 </script>
 </pre>
 </body>
--- a/editor/libeditor/tests/test_bug520189.html
+++ b/editor/libeditor/tests/test_bug520189.html
@@ -534,19 +534,19 @@ var tests = [
     payload: microdataPayload,
     rootElement() { return document.getElementById("yyyy").contentDocument.documentElement; },
     checkResult(html) { is(html.indexOf("name"), -1, "Should have dropped name."); is(html.indexOf("rel"), -1, "Should have dropped rel."); isnot(html.indexOf("itemprop"), -1, "Should not have dropped itemprop."); },
   },
 ];
 
 function doNextTest() {
   /* global testCounter:true */
-  if (typeof testCounter == "undefined")
+  if (typeof testCounter == "undefined") {
     testCounter = 0;
-  else if (++testCounter == tests.length) {
+  } else if (++testCounter == tests.length) {
     SimpleTest.finish();
     return;
   }
 
   runTest(tests[testCounter]);
 
   doNextTest();
 }
@@ -556,18 +556,19 @@ function getLoadContext() {
   return SpecialPowers.wrap(window).docShell.QueryInterface(Ci.nsILoadContext);
 }
 
 function runTest(test) {
   var elem = document.getElementById(test.id);
   if ("isIFrame" in test) {
     elem.contentDocument.designMode = "on";
     elem.contentWindow.focus();
-  } else
+  } else {
     elem.focus();
+  }
 
   var trans = SpecialPowers.Cc["@mozilla.org/widget/transferable;1"]
                            .createInstance(SpecialPowers.Ci.nsITransferable);
   trans.init(getLoadContext());
   var data = SpecialPowers.Cc["@mozilla.org/supports-string;1"]
                           .createInstance(SpecialPowers.Ci.nsISupportsString);
   data.data = test.payload;
   trans.addDataFlavor("text/html");
--- a/gfx/layers/apz/src/APZCTreeManager.cpp
+++ b/gfx/layers/apz/src/APZCTreeManager.cpp
@@ -1463,16 +1463,17 @@ nsEventStatus APZCTreeManager::ReceiveIn
 
         // Update the out-parameters so they are what the caller expects.
         apzc->GetGuid(aOutTargetGuid);
         tapInput.mPoint = *untransformedPoint;
       }
       break;
     }
     case KEYBOARD_INPUT: {
+      aEvent.mLayersId = mFocusState.GetFocusLayersId();
       // Disable async keyboard scrolling when accessibility.browsewithcaret is
       // enabled
       if (!gfxPrefs::APZKeyboardEnabled() ||
           gfxPrefs::AccessibilityBrowseWithCaret()) {
         APZ_KEY_LOG("Skipping key input from invalid prefs\n");
         return result;
       }
 
--- a/gfx/layers/apz/src/APZInputBridge.cpp
+++ b/gfx/layers/apz/src/APZInputBridge.cpp
@@ -179,16 +179,17 @@ nsEventStatus APZInputBridge::ReceiveInp
 
       KeyboardInput input(keyboardEvent);
 
       nsEventStatus status =
           ReceiveInputEvent(input, aOutTargetGuid, aOutInputBlockId);
 
       keyboardEvent.mFlags.mHandledByAPZ = input.mHandledByAPZ;
       keyboardEvent.mFocusSequenceNumber = input.mFocusSequenceNumber;
+      aEvent.mLayersId = input.mLayersId;
       return status;
     }
     default: {
       UpdateWheelTransaction(aEvent.mRefPoint, aEvent.mMessage);
       ProcessUnhandledEvent(&aEvent.mRefPoint, aOutTargetGuid,
                             &aEvent.mFocusSequenceNumber, &aEvent.mLayersId);
       return nsEventStatus_eIgnore;
     }
--- a/gfx/layers/apz/src/FocusState.cpp
+++ b/gfx/layers/apz/src/FocusState.cpp
@@ -215,10 +215,16 @@ Maybe<ScrollableLayerGuid> FocusState::G
 
 bool FocusState::CanIgnoreKeyboardShortcutMisses() const {
   APZThreadUtils::AssertOnControllerThread();
   MutexAutoLock lock(mMutex);
 
   return IsCurrent(lock) && !mFocusHasKeyEventListeners;
 }
 
+LayersId FocusState::GetFocusLayersId() const {
+  MutexAutoLock lock(mMutex);
+
+  return mFocusLayersId;
+}
+
 }  // namespace layers
 }  // namespace mozilla
--- a/gfx/layers/apz/src/FocusState.h
+++ b/gfx/layers/apz/src/FocusState.h
@@ -120,16 +120,18 @@ class FocusState final {
   Maybe<ScrollableLayerGuid> GetVerticalTarget() const;
 
   /**
    * Gets whether it is safe to not increment the focus sequence number for an
    * unmatched keyboard event.
    */
   bool CanIgnoreKeyboardShortcutMisses() const;
 
+  LayersId GetFocusLayersId() const;
+
  private:
   /**
    * Whether the current focus state is known to be current or else if an event
    * has been processed that could change the focus but we have not received an
    * update with a new confirmed target.
    * This can only be called by methods that have already acquired mMutex; they
    * have to pass their lock as compile-time proof.
    */
--- a/js/src/builtin/Array.js
+++ b/js/src/builtin/Array.js
@@ -18,20 +18,20 @@ function ArrayIndexOf(searchElement/*, f
     var n = arguments.length > 1 ? ToInteger(arguments[1]) + 0 : 0;
 
     /* Step 6. */
     if (n >= len)
         return -1;
 
     var k;
     /* Step 7. */
-    if (n >= 0)
+    if (n >= 0) {
         k = n;
     /* Step 8. */
-    else {
+    } else {
         /* Step a. */
         k = len + n;
         /* Step b. */
         if (k < 0)
             k = 0;
     }
 
     /* Step 9. */
--- a/js/src/builtin/ReflectParse.cpp
+++ b/js/src/builtin/ReflectParse.cpp
@@ -1934,18 +1934,17 @@ bool ASTSerializer::variableDeclaration(
 }
 
 bool ASTSerializer::variableDeclarator(ParseNode* pn, MutableHandleValue dst) {
   ParseNode* patternNode;
   ParseNode* initNode;
 
   if (pn->isKind(ParseNodeKind::Name)) {
     patternNode = pn;
-    initNode = pn->as<NameNode>().initializer();
-    MOZ_ASSERT_IF(initNode, pn->pn_pos.encloses(initNode->pn_pos));
+    initNode = nullptr;
   } else if (pn->isKind(ParseNodeKind::AssignExpr)) {
     AssignmentNode* assignNode = &pn->as<AssignmentNode>();
     patternNode = assignNode->left();
     initNode = assignNode->right();
     MOZ_ASSERT(pn->pn_pos.encloses(patternNode->pn_pos));
     MOZ_ASSERT(pn->pn_pos.encloses(initNode->pn_pos));
   } else {
     /* This happens for a destructuring declarator in a for-in/of loop. */
--- a/js/src/frontend/BinASTParser.cpp
+++ b/js/src/frontend/BinASTParser.cpp
@@ -2624,17 +2624,21 @@ JS::Result<ParseNode*> BinASTParser<Tok>
   MOZ_ASSERT(pc_->isFunctionBox());
 
   ParseContext::Scope lexicalScope(cx_, pc_, usedNames_);
   BINJS_TRY(lexicalScope.init(pc_));
   ListNode* params;
   ListNode* body;
   MOZ_TRY(parseGetterContents(length, &params, &body));
   MOZ_TRY(prependDirectivesToBody(body, directives));
-  BINJS_MOZ_TRY_DECL(method, buildFunction(start, kind, name, params, body));
+  BINJS_TRY_DECL(lexicalScopeData,
+                 NewLexicalScopeData(cx_, lexicalScope, alloc_, pc_));
+  BINJS_TRY_DECL(bodyScope, handler_.newLexicalScope(*lexicalScopeData, body));
+  BINJS_MOZ_TRY_DECL(method,
+                     buildFunction(start, kind, name, params, bodyScope));
   BINJS_TRY_DECL(result, handler_.newObjectMethodOrPropertyDefinition(
                              name, method, accessorType));
   return result;
 }
 
 template <typename Tok>
 JS::Result<ParseNode*> BinASTParser<Tok>::parseInterfaceEagerMethod(
     const size_t start, const BinKind kind, const BinFields& fields) {
@@ -2686,17 +2690,21 @@ JS::Result<ParseNode*> BinASTParser<Tok>
   MOZ_ASSERT(pc_->isFunctionBox());
 
   ParseContext::Scope lexicalScope(cx_, pc_, usedNames_);
   BINJS_TRY(lexicalScope.init(pc_));
   ListNode* params;
   ListNode* body;
   MOZ_TRY(parseFunctionOrMethodContents(length, &params, &body));
   MOZ_TRY(prependDirectivesToBody(body, directives));
-  BINJS_MOZ_TRY_DECL(method, buildFunction(start, kind, name, params, body));
+  BINJS_TRY_DECL(lexicalScopeData,
+                 NewLexicalScopeData(cx_, lexicalScope, alloc_, pc_));
+  BINJS_TRY_DECL(bodyScope, handler_.newLexicalScope(*lexicalScopeData, body));
+  BINJS_MOZ_TRY_DECL(method,
+                     buildFunction(start, kind, name, params, bodyScope));
   BINJS_TRY_DECL(result, handler_.newObjectMethodOrPropertyDefinition(
                              name, method, accessorType));
   return result;
 }
 
 template <typename Tok>
 JS::Result<ParseNode*> BinASTParser<Tok>::parseInterfaceEagerSetter(
     const size_t start, const BinKind kind, const BinFields& fields) {
@@ -2741,17 +2749,21 @@ JS::Result<ParseNode*> BinASTParser<Tok>
   MOZ_ASSERT(pc_->isFunctionBox());
 
   ParseContext::Scope lexicalScope(cx_, pc_, usedNames_);
   BINJS_TRY(lexicalScope.init(pc_));
   ListNode* params;
   ListNode* body;
   MOZ_TRY(parseSetterContents(length, &params, &body));
   MOZ_TRY(prependDirectivesToBody(body, directives));
-  BINJS_MOZ_TRY_DECL(method, buildFunction(start, kind, name, params, body));
+  BINJS_TRY_DECL(lexicalScopeData,
+                 NewLexicalScopeData(cx_, lexicalScope, alloc_, pc_));
+  BINJS_TRY_DECL(bodyScope, handler_.newLexicalScope(*lexicalScopeData, body));
+  BINJS_MOZ_TRY_DECL(method,
+                     buildFunction(start, kind, name, params, bodyScope));
   BINJS_TRY_DECL(result, handler_.newObjectMethodOrPropertyDefinition(
                              name, method, accessorType));
   return result;
 }
 
 template <typename Tok>
 JS::Result<ParseNode*> BinASTParser<Tok>::parseInterfaceEmptyStatement(
     const size_t start, const BinKind kind, const BinFields& fields) {
@@ -4239,19 +4251,21 @@ JS::Result<ParseNode*> BinASTParser<Tok>
 
   BINJS_MOZ_TRY_DECL(init, parseOptionalExpression());
 
   ParseNode* result;
   if (binding->isKind(ParseNodeKind::Name)) {
     // `var foo [= bar]``
     NameNode* bindingNameNode = &binding->template as<NameNode>();
     MOZ_TRY(checkBinding(bindingNameNode->atom()->asPropertyName()));
-    result = bindingNameNode;
     if (init) {
-      BINJS_TRY(handler_.finishInitializerAssignment(bindingNameNode, init));
+      BINJS_TRY_VAR(
+          result, handler_.finishInitializerAssignment(bindingNameNode, init));
+    } else {
+      result = bindingNameNode;
     }
   } else {
     // `var pattern = bar`
     if (!init) {
       // Here, `init` is required.
       return raiseMissingField("VariableDeclarator (with non-trivial pattern)",
                                BinField::Init);
     }
--- a/js/src/frontend/BinSource.yaml
+++ b/js/src/frontend/BinSource.yaml
@@ -1001,18 +1001,22 @@ EagerGetter:
   inherits: EagerMethod
 
 EagerMethod:
   init: |
     const auto syntax = FunctionSyntaxKind::Method;
     const auto accessorType = AccessorType::None;
   inherits: EagerFunctionExpression
   build: |
+    BINJS_TRY_DECL(lexicalScopeData,
+                   NewLexicalScopeData(cx_, lexicalScope, alloc_, pc_));
+    BINJS_TRY_DECL(bodyScope,
+                   handler_.newLexicalScope(*lexicalScopeData, body));
     BINJS_MOZ_TRY_DECL(method,
-                       buildFunction(start, kind, name, params, body));
+                       buildFunction(start, kind, name, params, bodyScope));
     BINJS_TRY_DECL(result,
                    handler_.newObjectMethodOrPropertyDefinition(name, method,
                                                                 accessorType));
 
 EagerSetter:
   init: |
     const auto syntax = FunctionSyntaxKind::Setter;
     const bool isGenerator = false;
@@ -1598,19 +1602,21 @@ VariableDeclaration:
 
 VariableDeclarator:
   build: |
     ParseNode* result;
     if (binding->isKind(ParseNodeKind::Name)) {
       // `var foo [= bar]``
       NameNode* bindingNameNode = &binding->template as<NameNode>();
       MOZ_TRY(checkBinding(bindingNameNode->atom()->asPropertyName()));
-      result = bindingNameNode;
       if (init) {
-        BINJS_TRY(handler_.finishInitializerAssignment(bindingNameNode, init));
+        BINJS_TRY_VAR(result,
+                      handler_.finishInitializerAssignment(bindingNameNode, init));
+      } else {
+        result = bindingNameNode;
       }
     } else {
       // `var pattern = bar`
       if (!init) {
         // Here, `init` is required.
         return raiseMissingField("VariableDeclarator (with non-trivial pattern)",
                                  BinField::Init);
       }
--- a/js/src/frontend/BytecodeEmitter.cpp
+++ b/js/src/frontend/BytecodeEmitter.cpp
@@ -4020,46 +4020,59 @@ bool BytecodeEmitter::emitTemplateString
 
   return true;
 }
 
 bool BytecodeEmitter::emitDeclarationList(ListNode* declList) {
   MOZ_ASSERT(declList->isOp(JSOP_NOP));
 
   for (ParseNode* decl : declList->contents()) {
-    if (decl->isKind(ParseNodeKind::AssignExpr)) {
+    ParseNode* pattern;
+    ParseNode* initializer;
+    if (decl->isKind(ParseNodeKind::Name)) {
+      pattern = decl;
+      initializer = nullptr;
+    } else {
       MOZ_ASSERT(decl->isOp(JSOP_NOP));
 
       AssignmentNode* assignNode = &decl->as<AssignmentNode>();
-      ListNode* pattern = &assignNode->left()->as<ListNode>();
+      pattern = assignNode->left();
+      initializer = assignNode->right();
+    }
+
+    if (pattern->isKind(ParseNodeKind::Name)) {
+      // initializer can be null here.
+      if (!emitSingleDeclaration(declList, &pattern->as<NameNode>(),
+                                 initializer)) {
+        return false;
+      }
+    } else {
+      MOZ_ASSERT(decl->isOp(JSOP_NOP));
       MOZ_ASSERT(pattern->isKind(ParseNodeKind::ArrayExpr) ||
                  pattern->isKind(ParseNodeKind::ObjectExpr));
-
-      if (!updateSourceCoordNotes(assignNode->right()->pn_pos.begin)) {
+      MOZ_ASSERT(initializer != nullptr);
+
+      if (!updateSourceCoordNotes(initializer->pn_pos.begin)) {
         return false;
       }
       if (!markStepBreakpoint()) {
         return false;
       }
-      if (!emitTree(assignNode->right())) {
-        return false;
-      }
-
-      if (!emitDestructuringOps(pattern, DestructuringDeclaration)) {
+      if (!emitTree(initializer)) {
+        return false;
+      }
+
+      if (!emitDestructuringOps(&pattern->as<ListNode>(),
+                                DestructuringDeclaration)) {
         return false;
       }
 
       if (!emit1(JSOP_POP)) {
         return false;
       }
-    } else {
-      NameNode* name = &decl->as<NameNode>();
-      if (!emitSingleDeclaration(declList, name, name->initializer())) {
-        return false;
-      }
     }
   }
   return true;
 }
 
 bool BytecodeEmitter::emitSingleDeclaration(ListNode* declList, NameNode* decl,
                                             ParseNode* initializer) {
   MOZ_ASSERT(decl->isKind(ParseNodeKind::Name));
@@ -5301,18 +5314,27 @@ bool BytecodeEmitter::emitInitializeForI
   if (!updateSourceCoordNotes(target->pn_pos.begin)) {
     return false;
   }
 
   MOZ_ASSERT(target->isForLoopDeclaration());
   target = parser->astGenerator().singleBindingFromDeclaration(
       &target->as<ListNode>());
 
+  NameNode* nameNode = nullptr;
   if (target->isKind(ParseNodeKind::Name)) {
-    NameNode* nameNode = &target->as<NameNode>();
+    nameNode = &target->as<NameNode>();
+  } else if (target->isKind(ParseNodeKind::AssignExpr)) {
+    AssignmentNode* assignNode = &target->as<AssignmentNode>();
+    if (assignNode->left()->is<NameNode>()) {
+      nameNode = &assignNode->left()->as<NameNode>();
+    }
+  }
+
+  if (nameNode) {
     NameOpEmitter noe(this, nameNode->name(), NameOpEmitter::Kind::Initialize);
     if (!noe.prepareForRhs()) {
       return false;
     }
     if (noe.emittedBindOp()) {
       // Per-iteration initialization in for-in/of loops computes the
       // iteration value *before* initializing.  Thus the initializing
       // value may be buried under a bind-specific value on the stack.
@@ -5435,33 +5457,35 @@ bool BytecodeEmitter::emitForIn(ForNode*
   ForInEmitter forIn(this, headLexicalEmitterScope);
 
   // Annex B: Evaluate the var-initializer expression if present.
   // |for (var i = initializer in expr) { ... }|
   ParseNode* forInTarget = forInHead->kid1();
   if (parser->astGenerator().isDeclarationList(forInTarget)) {
     ParseNode* decl = parser->astGenerator().singleBindingFromDeclaration(
         &forInTarget->as<ListNode>());
-    if (decl->isKind(ParseNodeKind::Name)) {
-      if (ParseNode* initializer = decl->as<NameNode>().initializer()) {
+    if (decl->isKind(ParseNodeKind::AssignExpr)) {
+      AssignmentNode* assignNode = &decl->as<AssignmentNode>();
+      if (assignNode->left()->is<NameNode>()) {
+        NameNode* nameNode = &assignNode->left()->as<NameNode>();
+        ParseNode* initializer = assignNode->right();
         MOZ_ASSERT(
             forInTarget->isKind(ParseNodeKind::VarStmt),
             "for-in initializers are only permitted for |var| declarations");
 
         if (!updateSourceCoordNotes(decl->pn_pos.begin)) {
           return false;
         }
 
-        NameNode* nameNode = &decl->as<NameNode>();
         NameOpEmitter noe(this, nameNode->name(),
                           NameOpEmitter::Kind::Initialize);
         if (!noe.prepareForRhs()) {
           return false;
         }
-        if (!emitInitializer(initializer, decl)) {
+        if (!emitInitializer(initializer, nameNode)) {
           return false;
         }
         if (!noe.emitAssignment()) {
           return false;
         }
 
         // Pop the initializer.
         if (!emit1(JSOP_POP)) {
--- a/js/src/frontend/FullParseHandler.h
+++ b/js/src/frontend/FullParseHandler.h
@@ -874,18 +874,25 @@ class FullParseHandler {
 
   bool isUsableAsObjectPropertyName(Node node) {
     return node->isKind(ParseNodeKind::NumberExpr) ||
            node->isKind(ParseNodeKind::ObjectPropertyName) ||
            node->isKind(ParseNodeKind::StringExpr) ||
            node->isKind(ParseNodeKind::ComputedName);
   }
 
-  inline MOZ_MUST_USE bool finishInitializerAssignment(NameNodeType nameNode,
-                                                       Node init);
+  AssignmentNodeType finishInitializerAssignment(NameNodeType nameNode,
+                                                 Node init) {
+    MOZ_ASSERT(nameNode->isKind(ParseNodeKind::Name));
+    MOZ_ASSERT(!nameNode->isInParens());
+
+    checkAndSetIsDirectRHSAnonFunction(init);
+
+    return newAssignment(ParseNodeKind::AssignExpr, nameNode, init);
+  }
 
   void setBeginPosition(Node pn, Node oth) {
     setBeginPosition(pn, oth->pn_pos.begin);
   }
   void setBeginPosition(Node pn, uint32_t begin) {
     pn->pn_pos.begin = begin;
     MOZ_ASSERT(pn->pn_pos.begin <= pn->pn_pos.end);
   }
@@ -1022,27 +1029,12 @@ inline bool FullParseHandler::setLastFun
   if (!pn) {
     return false;
   }
 
   body->replaceLast(pn);
   return true;
 }
 
-inline bool FullParseHandler::finishInitializerAssignment(NameNodeType nameNode,
-                                                          Node init) {
-  MOZ_ASSERT(nameNode->isKind(ParseNodeKind::Name));
-  MOZ_ASSERT(!nameNode->isInParens());
-
-  checkAndSetIsDirectRHSAnonFunction(init);
-
-  nameNode->setInitializer(init);
-  nameNode->setOp(JSOP_SETNAME);
-
-  /* The declarator's position must include the initializer. */
-  nameNode->pn_pos.end = init->pn_pos.end;
-  return true;
-}
-
 }  // namespace frontend
 }  // namespace js
 
 #endif /* frontend_FullParseHandler_h */
--- a/js/src/frontend/NameFunctions.cpp
+++ b/js/src/frontend/NameFunctions.cpp
@@ -414,19 +414,17 @@ class NameResolver : public ParseNodeVis
     if (!isImport && item && item->isKind(ParseNodeKind::ExportBatchSpecStmt)) {
       MOZ_ASSERT(item->is<NullaryNode>());
     } else {
       for (ParseNode* item : pn->contents()) {
         BinaryNode* spec = &item->as<BinaryNode>();
         MOZ_ASSERT(spec->isKind(isImport ? ParseNodeKind::ImportSpec
                                          : ParseNodeKind::ExportSpec));
         MOZ_ASSERT(spec->left()->isKind(ParseNodeKind::Name));
-        MOZ_ASSERT(!spec->left()->as<NameNode>().initializer());
         MOZ_ASSERT(spec->right()->isKind(ParseNodeKind::Name));
-        MOZ_ASSERT(!spec->right()->as<NameNode>().initializer());
       }
     }
 #endif
     return true;
   }
 
  public:
   MOZ_MUST_USE bool visitImportSpecList(ListNode* pn) {
--- a/js/src/frontend/ParseNode.cpp
+++ b/js/src/frontend/ParseNode.cpp
@@ -306,53 +306,51 @@ void NameNode::dumpImpl(GenericPrinter& 
     case ParseNodeKind::Name:
     case ParseNodeKind::PrivateName:  // atom() already includes the '#', no
                                       // need to specially include it.
     case ParseNodeKind::PropertyNameExpr:
       if (!atom()) {
         out.put("#<null name>");
       } else if (getOp() == JSOP_GETARG && atom()->length() == 0) {
         // Dump destructuring parameter.
-        static const char ZeroLengthPrefix[] = "(#<zero-length name> ";
-        constexpr size_t ZeroLengthPrefixLength =
-            ArrayLength(ZeroLengthPrefix) - 1;
-        out.put(ZeroLengthPrefix);
-        DumpParseTree(initializer(), out, indent + ZeroLengthPrefixLength);
-        out.printf(")");
+        static const char ZeroLengthName[] = "(#<zero-length name>)";
+        out.put(ZeroLengthName);
       } else {
         JS::AutoCheckCannotGC nogc;
         if (atom()->hasLatin1Chars()) {
           DumpName(out, atom()->latin1Chars(nogc), atom()->length());
         } else {
           DumpName(out, atom()->twoByteChars(nogc), atom()->length());
         }
       }
       return;
 
     case ParseNodeKind::LabelStmt: {
-      const char* name = parseNodeNames[size_t(getKind())];
-      out.printf("(%s ", name);
-      atom()->dumpCharsNoNewline(out);
-      indent += strlen(name) + atom()->length() + 2;
-      DumpParseTree(initializer(), out, indent);
-      out.printf(")");
+      this->as<LabeledStatement>().dumpImpl(out, indent);
       return;
     }
 
     default: {
       const char* name = parseNodeNames[size_t(getKind())];
-      out.printf("(%s ", name);
-      indent += strlen(name) + 2;
-      DumpParseTree(initializer(), out, indent);
-      out.printf(")");
+      out.printf("(%s)", name);
       return;
     }
   }
 }
 
+void LabeledStatement::dumpImpl(GenericPrinter& out, int indent) {
+  const char* name = parseNodeNames[size_t(getKind())];
+  out.printf("(%s ", name);
+  atom()->dumpCharsNoNewline(out);
+  out.printf(" ");
+  indent += strlen(name) + atom()->length() + 3;
+  DumpParseTree(statement(), out, indent);
+  out.printf(")");
+}
+
 void LexicalScopeNode::dumpImpl(GenericPrinter& out, int indent) {
   const char* name = parseNodeNames[size_t(getKind())];
   out.printf("(%s [", name);
   int nameIndent = indent + strlen(name) + 3;
   if (!isEmptyScope()) {
     LexicalScope::Data* bindings = scopeBindings();
     for (uint32_t i = 0; i < bindings->length; i++) {
       JSAtom* name = bindings->trailingNames[i].name();
--- a/js/src/frontend/ParseNode.h
+++ b/js/src/frontend/ParseNode.h
@@ -791,65 +791,47 @@ class NullaryNode : public ParseNode {
   }
 
 #ifdef DEBUG
   void dumpImpl(GenericPrinter& out, int indent);
 #endif
 };
 
 class NameNode : public ParseNode {
-  JSAtom* atom_;         /* lexical name or label atom */
-  ParseNode* initOrStmt; /* var initializer, argument default, or label
-                            statement target */
-
- protected:
-  NameNode(ParseNodeKind kind, JSOp op, JSAtom* atom, ParseNode* initOrStmt,
-           const TokenPos& pos)
-      : ParseNode(kind, op, pos), atom_(atom), initOrStmt(initOrStmt) {
-    MOZ_ASSERT(is<NameNode>());
-  }
+  JSAtom* atom_; /* lexical name or label atom */
 
  public:
   NameNode(ParseNodeKind kind, JSOp op, JSAtom* atom, const TokenPos& pos)
-      : ParseNode(kind, op, pos), atom_(atom), initOrStmt(nullptr) {
+      : ParseNode(kind, op, pos), atom_(atom) {
     MOZ_ASSERT(is<NameNode>());
   }
 
   static bool test(const ParseNode& node) {
     return node.typeCode() == TypeCode::Name;
   }
 
   static constexpr TypeCode classTypeCode() { return TypeCode::Name; }
 
   template <typename Visitor>
   bool accept(Visitor& visitor) {
-    if (initOrStmt) {
-      if (!visitor.visit(initOrStmt)) {
-        return false;
-      }
-    }
     return true;
   }
 
 #ifdef DEBUG
   void dumpImpl(GenericPrinter& out, int indent);
 #endif
 
   JSAtom* atom() const { return atom_; }
 
   PropertyName* name() const {
     MOZ_ASSERT(isKind(ParseNodeKind::Name));
     return atom()->asPropertyName();
   }
 
-  ParseNode* initializer() const { return initOrStmt; }
-
   void setAtom(JSAtom* atom) { atom_ = atom; }
-
-  void setInitializer(ParseNode* init) { initOrStmt = init; }
 };
 
 inline bool ParseNode::isName(PropertyName* name) const {
   return getKind() == ParseNodeKind::Name && as<NameNode>().name() == name;
 }
 
 class UnaryNode : public ParseNode {
   ParseNode* kid_;
@@ -1591,28 +1573,45 @@ class LexicalScopeNode : public ParseNod
   ParseNode* scopeBody() const { return body; }
 
   void setScopeBody(ParseNode* body) { this->body = body; }
 
   bool isEmptyScope() const { return !bindings; }
 };
 
 class LabeledStatement : public NameNode {
+  ParseNode* statement_;
+
  public:
   LabeledStatement(PropertyName* label, ParseNode* stmt, uint32_t begin)
-      : NameNode(ParseNodeKind::LabelStmt, JSOP_NOP, label, stmt,
-                 TokenPos(begin, stmt->pn_pos.end)) {}
+      : NameNode(ParseNodeKind::LabelStmt, JSOP_NOP, label,
+                 TokenPos(begin, stmt->pn_pos.end)),
+        statement_(stmt) {}
 
   PropertyName* label() const { return atom()->asPropertyName(); }
 
-  ParseNode* statement() const { return initializer(); }
+  ParseNode* statement() const { return statement_; }
 
   static bool test(const ParseNode& node) {
     return node.isKind(ParseNodeKind::LabelStmt);
   }
+
+  template <typename Visitor>
+  bool accept(Visitor& visitor) {
+    if (statement_) {
+      if (!visitor.visit(statement_)) {
+        return false;
+      }
+    }
+    return true;
+  }
+
+#ifdef DEBUG
+  void dumpImpl(GenericPrinter& out, int indent);
+#endif
 };
 
 // Inside a switch statement, a CaseClause is a case-label and the subsequent
 // statements. The same node type is used for DefaultClauses. The only
 // difference is that their caseExpression() is null.
 class CaseClause : public BinaryNode {
  public:
   CaseClause(ParseNode* expr, ParseNode* stmts, uint32_t begin)
--- a/js/src/frontend/Parser.cpp
+++ b/js/src/frontend/Parser.cpp
@@ -4092,85 +4092,83 @@ GeneralParser<ParseHandler, Unit>::decla
   if (!init) {
     return null();
   }
 
   return handler_.newAssignment(ParseNodeKind::AssignExpr, pattern, init);
 }
 
 template <class ParseHandler, typename Unit>
-bool GeneralParser<ParseHandler, Unit>::initializerInNameDeclaration(
+typename ParseHandler::Node
+GeneralParser<ParseHandler, Unit>::initializerInNameDeclaration(
     NameNodeType binding, DeclarationKind declKind, bool initialDeclaration,
     YieldHandling yieldHandling, ParseNodeKind* forHeadKind,
     Node* forInOrOfExpression) {
   MOZ_ASSERT(anyChars.isCurrentTokenType(TokenKind::Assign));
 
   uint32_t initializerOffset;
   if (!tokenStream.peekOffset(&initializerOffset, TokenStream::Operand)) {
-    return false;
+    return null();
   }
 
   Node initializer = assignExpr(forHeadKind ? InProhibited : InAllowed,
                                 yieldHandling, TripledotProhibited);
   if (!initializer) {
-    return false;
+    return null();
   }
 
   if (forHeadKind && initialDeclaration) {
     bool isForIn, isForOf;
     if (!matchInOrOf(&isForIn, &isForOf)) {
-      return false;
+      return null();
     }
 
     // An initialized declaration can't appear in a for-of:
     //
     //   for (var/let/const x = ... of ...); // BAD
     if (isForOf) {
       errorAt(initializerOffset, JSMSG_OF_AFTER_FOR_LOOP_DECL);
-      return false;
+      return null();
     }
 
     if (isForIn) {
       // Lexical declarations in for-in loops can't be initialized:
       //
       //   for (let/const x = ... in ...); // BAD
       if (DeclarationKindIsLexical(declKind)) {
         errorAt(initializerOffset, JSMSG_IN_AFTER_LEXICAL_FOR_DECL);
-        return false;
+        return null();
       }
 
       // This leaves only initialized for-in |var| declarations.  ES6
       // forbids these; later ES un-forbids in non-strict mode code.
       *forHeadKind = ParseNodeKind::ForIn;
       if (!strictModeErrorAt(initializerOffset,
                              JSMSG_INVALID_FOR_IN_DECL_WITH_INIT)) {
-        return false;
+        return null();
       }
 
       *forInOrOfExpression =
           expressionAfterForInOrOf(ParseNodeKind::ForIn, yieldHandling);
       if (!*forInOrOfExpression) {
-        return false;
+        return null();
       }
     } else {
       *forHeadKind = ParseNodeKind::ForHead;
     }
   }
 
   return handler_.finishInitializerAssignment(binding, initializer);
 }
 
 template <class ParseHandler, typename Unit>
-typename ParseHandler::NameNodeType
-GeneralParser<ParseHandler, Unit>::declarationName(DeclarationKind declKind,
-                                                   TokenKind tt,
-                                                   bool initialDeclaration,
-                                                   YieldHandling yieldHandling,
-                                                   ParseNodeKind* forHeadKind,
-                                                   Node* forInOrOfExpression) {
+typename ParseHandler::Node GeneralParser<ParseHandler, Unit>::declarationName(
+    DeclarationKind declKind, TokenKind tt, bool initialDeclaration,
+    YieldHandling yieldHandling, ParseNodeKind* forHeadKind,
+    Node* forInOrOfExpression) {
   // Anything other than possible identifier is an error.
   if (!TokenKindIsPossibleIdentifier(tt)) {
     error(JSMSG_NO_VARIABLE_NAME);
     return null();
   }
 
   RootedPropertyName name(cx_, bindingIdentifier(yieldHandling));
   if (!name) {
@@ -4192,23 +4190,27 @@ GeneralParser<ParseHandler, Unit>::decla
   //
   // Therefore get the token here as Operand.
   bool matched;
   if (!tokenStream.matchToken(&matched, TokenKind::Assign,
                               TokenStream::Operand)) {
     return null();
   }
 
+  Node declaration;
   if (matched) {
-    if (!initializerInNameDeclaration(binding, declKind, initialDeclaration,
-                                      yieldHandling, forHeadKind,
-                                      forInOrOfExpression)) {
+    declaration = initializerInNameDeclaration(
+        binding, declKind, initialDeclaration, yieldHandling, forHeadKind,
+        forInOrOfExpression);
+    if (!declaration) {
       return null();
     }
   } else {
+    declaration = binding;
+
     if (initialDeclaration && forHeadKind) {
       bool isForIn, isForOf;
       if (!matchInOrOf(&isForIn, &isForOf)) {
         return null();
       }
 
       if (isForIn) {
         *forHeadKind = ParseNodeKind::ForIn;
@@ -4236,17 +4238,17 @@ GeneralParser<ParseHandler, Unit>::decla
   }
 
   // Note the declared name after knowing whether or not we are in a for-of
   // loop, due to special early error semantics in Annex B.3.5.
   if (!noteDeclaredName(name, declKind, namePos)) {
     return null();
   }
 
-  return binding;
+  return declaration;
 }
 
 template <class ParseHandler, typename Unit>
 typename ParseHandler::ListNodeType
 GeneralParser<ParseHandler, Unit>::declarationList(
     YieldHandling yieldHandling, ParseNodeKind kind,
     ParseNodeKind* forHeadKind /* = nullptr */,
     Node* forInOrOfExpression /* = nullptr */) {
--- a/js/src/frontend/Parser.h
+++ b/js/src/frontend/Parser.h
@@ -1195,28 +1195,26 @@ class MOZ_STACK_CLASS GeneralParser : pu
   // for-in/of loop head, returning the iterated expression in
   // |*forInOrOfExpression|.  (An "initial declaration" is the first
   // declaration in a declaration list: |a| but not |b| in |var a, b|, |{c}|
   // but not |d| in |let {c} = 3, d|.)
   Node declarationPattern(DeclarationKind declKind, TokenKind tt,
                           bool initialDeclaration, YieldHandling yieldHandling,
                           ParseNodeKind* forHeadKind,
                           Node* forInOrOfExpression);
-  NameNodeType declarationName(DeclarationKind declKind, TokenKind tt,
-                               bool initialDeclaration,
-                               YieldHandling yieldHandling,
-                               ParseNodeKind* forHeadKind,
-                               Node* forInOrOfExpression);
+  Node declarationName(DeclarationKind declKind, TokenKind tt,
+                       bool initialDeclaration, YieldHandling yieldHandling,
+                       ParseNodeKind* forHeadKind, Node* forInOrOfExpression);
 
   // Having parsed a name (not found in a destructuring pattern) declared by
   // a declaration, with the current token being the '=' separating the name
   // from its initializer, parse and bind that initializer -- and possibly
   // consume trailing in/of and subsequent expression, if so directed by
   // |forHeadKind|.
-  bool initializerInNameDeclaration(NameNodeType binding,
+  Node initializerInNameDeclaration(NameNodeType binding,
                                     DeclarationKind declKind,
                                     bool initialDeclaration,
                                     YieldHandling yieldHandling,
                                     ParseNodeKind* forHeadKind,
                                     Node* forInOrOfExpression);
 
   Node expr(InHandling inHandling, YieldHandling yieldHandling,
             TripledotHandling tripledotHandling,
--- a/js/src/frontend/SyntaxParseHandler.h
+++ b/js/src/frontend/SyntaxParseHandler.h
@@ -512,19 +512,19 @@ class SyntaxParseHandler {
     return NodeGeneric;
   }
 
   TernaryNodeType newForInOrOfHead(ParseNodeKind kind, Node target,
                                    Node iteratedExpr, const TokenPos& pos) {
     return NodeGeneric;
   }
 
-  MOZ_MUST_USE bool finishInitializerAssignment(NameNodeType nameNode,
-                                                Node init) {
-    return true;
+  AssignmentNodeType finishInitializerAssignment(NameNodeType nameNode,
+                                                 Node init) {
+    return NodeUnparenthesizedAssignment;
   }
 
   void setBeginPosition(Node pn, Node oth) {}
   void setBeginPosition(Node pn, uint32_t begin) {}
 
   void setEndPosition(Node pn, Node oth) {}
   void setEndPosition(Node pn, uint32_t end) {}
 
--- a/js/src/jit/BaselineCompiler.cpp
+++ b/js/src/jit/BaselineCompiler.cpp
@@ -26,16 +26,17 @@
 #include "vm/EnvironmentObject.h"
 #include "vm/Interpreter.h"
 #include "vm/JSFunction.h"
 #include "vm/TraceLogging.h"
 #include "vtune/VTuneWrapper.h"
 
 #include "jit/BaselineFrameInfo-inl.h"
 #include "jit/MacroAssembler-inl.h"
+#include "jit/VMFunctionList-inl.h"
 #include "vm/Interpreter-inl.h"
 #include "vm/JSScript-inl.h"
 #include "vm/NativeObject-inl.h"
 #include "vm/TypeInference-inl.h"
 
 using namespace js;
 using namespace js::jit;
 
@@ -579,20 +580,18 @@ void BaselineInterpreterCodeGen::storeFr
 
   // Push frame descriptor based on the full frame size.
   masm.makeFrameDescriptor(scratch1, FrameType::BaselineJS,
                            ExitFrameLayout::Size());
   masm.push(scratch1);
 }
 
 template <typename Handler>
-bool BaselineCodeGen<Handler>::callVM(const VMFunction& fun,
-                                      CallVMPhase phase) {
-  TrampolinePtr code = cx->runtime()->jitRuntime()->getVMWrapper(fun);
-
+bool BaselineCodeGen<Handler>::callVM(const VMFunctionData& fun,
+                                      TrampolinePtr code, CallVMPhase phase) {
 #ifdef DEBUG
   // Assert prepareVMCall() has been called.
   MOZ_ASSERT(inCall_);
   inCall_ = false;
 
   // Assert the frame does not have an override pc when we're executing JIT
   // code.
   {
@@ -660,16 +659,31 @@ bool BaselineCodeGen<Handler>::callVM(co
     masm.assumeUnreachable("BaselineFrame shouldn't override pc after VM call");
     masm.bind(&ok);
   }
 #endif
 
   return handler.appendRetAddrEntry(cx, RetAddrEntry::Kind::CallVM, callOffset);
 }
 
+template <typename Handler>
+bool BaselineCodeGen<Handler>::callVM(const VMFunction& fun,
+                                      CallVMPhase phase) {
+  TrampolinePtr code = cx->runtime()->jitRuntime()->getVMWrapper(fun);
+  return callVM(fun, code, phase);
+}
+
+template <typename Handler>
+template <typename Fn, Fn fn>
+bool BaselineCodeGen<Handler>::callVM(CallVMPhase phase) {
+  VMFunctionId fnId = VMFunctionToId<Fn, fn>::id;
+  TrampolinePtr code = cx->runtime()->jitRuntime()->getVMWrapper(fnId);
+  return callVM(GetVMFunction(fnId), code, phase);
+}
+
 typedef bool (*CheckOverRecursedBaselineFn)(JSContext*, BaselineFrame*);
 static const VMFunction CheckOverRecursedBaselineInfo =
     FunctionInfo<CheckOverRecursedBaselineFn>(CheckOverRecursedBaseline,
                                               "CheckOverRecursedBaseline");
 
 template <typename Handler>
 bool BaselineCodeGen<Handler>::emitStackCheck() {
   // If this is the late stack check for a frame which contains an early stack
@@ -882,30 +896,28 @@ void BaselineCompilerCodeGen::loadResume
   masm.move32(Imm32(GET_RESUMEINDEX(handler.pc())), dest);
 }
 
 template <>
 void BaselineInterpreterCodeGen::loadResumeIndexBytecodeOperand(Register dest) {
   MOZ_CRASH("NYI: interpreter loadResumeIndexBytecodeOperand");
 }
 
-typedef bool (*DebugPrologueFn)(JSContext*, BaselineFrame*, jsbytecode*, bool*);
-static const VMFunction DebugPrologueInfo =
-    FunctionInfo<DebugPrologueFn>(jit::DebugPrologue, "DebugPrologue");
-
 template <typename Handler>
 bool BaselineCodeGen<Handler>::emitDebugPrologue() {
   auto ifDebuggee = [this]() {
     // Load pointer to BaselineFrame in R0.
     masm.loadBaselineFramePtr(BaselineFrameReg, R0.scratchReg());
 
     prepareVMCall();
     pushBytecodePCArg();
     pushArg(R0.scratchReg());
-    if (!callVM(DebugPrologueInfo)) {
+
+    using Fn = bool (*)(JSContext*, BaselineFrame*, jsbytecode*, bool*);
+    if (!callVM<Fn, jit::DebugPrologue>()) {
       return false;
     }
 
     // Fix up the RetAddrEntry appended by callVM for on-stack recompilation.
     handler.markLastRetAddrEntryKind(RetAddrEntry::Kind::DebugPrologue);
 
     // If the stub returns |true|, we have to return the value stored in the
     // frame's return value slot.
@@ -1004,43 +1016,35 @@ bool BaselineCompilerCodeGen::initEnviro
   return true;
 }
 
 template <>
 bool BaselineInterpreterCodeGen::initEnvironmentChain() {
   MOZ_CRASH("NYI: interpreter initEnvironmentChain");
 }
 
-typedef bool (*InterruptCheckFn)(JSContext*);
-static const VMFunction InterruptCheckInfo =
-    FunctionInfo<InterruptCheckFn>(InterruptCheck, "InterruptCheck");
-
 template <typename Handler>
 bool BaselineCodeGen<Handler>::emitInterruptCheck() {
   frame.syncStack(0);
 
   Label done;
   masm.branch32(Assembler::Equal, AbsoluteAddress(cx->addressOfInterruptBits()),
                 Imm32(0), &done);
 
   prepareVMCall();
-  if (!callVM(InterruptCheckInfo)) {
+
+  using Fn = bool (*)(JSContext*);
+  if (!callVM<Fn, InterruptCheck>()) {
     return false;
   }
 
   masm.bind(&done);
   return true;
 }
 
-typedef bool (*IonCompileScriptForBaselineFn)(JSContext*, BaselineFrame*,
-                                              jsbytecode*);
-static const VMFunction IonCompileScriptForBaselineInfo =
-    FunctionInfo<IonCompileScriptForBaselineFn>(IonCompileScriptForBaseline,
-                                                "IonCompileScriptForBaseline");
-
 template <>
 bool BaselineCompilerCodeGen::emitWarmUpCounterIncrement() {
   // Emit no warm-up counter increments or bailouts if Ion is not
   // enabled, or if the script will never be Ion-compileable
 
   if (!handler.maybeIonCompileable()) {
     return true;
   }
@@ -1094,17 +1098,18 @@ bool BaselineCompilerCodeGen::emitWarmUp
     // To call stubs we need to have an opcode. This code handles the
     // prologue and there is no dedicatd opcode present. Therefore use an
     // annotated vm call.
     prepareVMCall();
 
     pushBytecodePCArg();
     masm.PushBaselineFramePtr(BaselineFrameReg, R0.scratchReg());
 
-    if (!callVM(IonCompileScriptForBaselineInfo)) {
+    using Fn = bool (*)(JSContext*, BaselineFrame*, jsbytecode*);
+    if (!callVM<Fn, IonCompileScriptForBaseline>()) {
       return false;
     }
 
     // Annotate the RetAddrEntry as warmup counter.
     handler.markLastRetAddrEntryKind(RetAddrEntry::Kind::WarmupCounter);
   }
   masm.bind(&skipCall);
 
@@ -1777,70 +1782,55 @@ bool BaselineCodeGen<Handler>::emit_JSOP
 }
 
 template <typename Handler>
 bool BaselineCodeGen<Handler>::emit_JSOP_NULL() {
   frame.push(NullValue());
   return true;
 }
 
-typedef bool (*ThrowCheckIsObjectFn)(JSContext*, CheckIsObjectKind);
-static const VMFunction ThrowCheckIsObjectInfo =
-    FunctionInfo<ThrowCheckIsObjectFn>(ThrowCheckIsObject,
-                                       "ThrowCheckIsObject");
-
 template <typename Handler>
 bool BaselineCodeGen<Handler>::emit_JSOP_CHECKISOBJ() {
   frame.syncStack(0);
   masm.loadValue(frame.addressOfStackValue(-1), R0);
 
   Label ok;
   masm.branchTestObject(Assembler::Equal, R0, &ok);
 
   prepareVMCall();
 
   pushUint8BytecodeOperandArg();
-  if (!callVM(ThrowCheckIsObjectInfo)) {
+
+  using Fn = bool (*)(JSContext*, CheckIsObjectKind);
+  if (!callVM<Fn, ThrowCheckIsObject>()) {
     return false;
   }
 
   masm.bind(&ok);
   return true;
 }
 
-typedef bool (*CheckIsCallableFn)(JSContext*, HandleValue, CheckIsCallableKind);
-static const VMFunction CheckIsCallableInfo =
-    FunctionInfo<CheckIsCallableFn>(CheckIsCallable, "CheckIsCallable");
-
 template <typename Handler>
 bool BaselineCodeGen<Handler>::emit_JSOP_CHECKISCALLABLE() {
   frame.syncStack(0);
   masm.loadValue(frame.addressOfStackValue(-1), R0);
 
   prepareVMCall();
 
   pushUint8BytecodeOperandArg();
   pushArg(R0);
-  if (!callVM(CheckIsCallableInfo)) {
+
+  using Fn = bool (*)(JSContext*, HandleValue, CheckIsCallableKind);
+  if (!callVM<Fn, CheckIsCallable>()) {
     return false;
   }
 
   return true;
 }
 
-typedef bool (*ThrowUninitializedThisFn)(JSContext*, BaselineFrame* frame);
-static const VMFunction ThrowUninitializedThisInfo =
-    FunctionInfo<ThrowUninitializedThisFn>(BaselineThrowUninitializedThis,
-                                           "BaselineThrowUninitializedThis");
-
-typedef bool (*ThrowInitializedThisFn)(JSContext*);
-static const VMFunction ThrowInitializedThisInfo =
-    FunctionInfo<ThrowInitializedThisFn>(BaselineThrowInitializedThis,
-                                         "BaselineThrowInitializedThis");
-
 template <typename Handler>
 bool BaselineCodeGen<Handler>::emit_JSOP_CHECKTHIS() {
   frame.syncStack(0);
   masm.loadValue(frame.addressOfStackValue(-1), R0);
 
   return emitCheckThis(R0);
 }
 
@@ -1859,53 +1849,52 @@ bool BaselineCodeGen<Handler>::emitCheck
     masm.branchTestMagic(Assembler::Equal, val, &thisOK);
   } else {
     masm.branchTestMagic(Assembler::NotEqual, val, &thisOK);
   }
 
   prepareVMCall();
 
   if (reinit) {
-    if (!callVM(ThrowInitializedThisInfo)) {
+    using Fn = bool (*)(JSContext*);
+    if (!callVM<Fn, BaselineThrowInitializedThis>()) {
       return false;
     }
   } else {
     masm.loadBaselineFramePtr(BaselineFrameReg, val.scratchReg());
     pushArg(val.scratchReg());
 
-    if (!callVM(ThrowUninitializedThisInfo)) {
+    using Fn = bool (*)(JSContext*, BaselineFrame*);
+    if (!callVM<Fn, BaselineThrowUninitializedThis>()) {
       return false;
     }
   }
 
   masm.bind(&thisOK);
   return true;
 }
 
-typedef bool (*ThrowBadDerivedReturnFn)(JSContext*, HandleValue);
-static const VMFunction ThrowBadDerivedReturnInfo =
-    FunctionInfo<ThrowBadDerivedReturnFn>(jit::ThrowBadDerivedReturn,
-                                          "ThrowBadDerivedReturn");
-
 template <typename Handler>
 bool BaselineCodeGen<Handler>::emit_JSOP_CHECKRETURN() {
   MOZ_ASSERT_IF(handler.maybeScript(),
                 handler.maybeScript()->isDerivedClassConstructor());
 
   // Load |this| in R0, return value in R1.
   frame.popRegsAndSync(1);
   emitLoadReturnValue(R1);
 
   Label done, returnOK;
   masm.branchTestObject(Assembler::Equal, R1, &done);
   masm.branchTestUndefined(Assembler::Equal, R1, &returnOK);
 
   prepareVMCall();
   pushArg(R1);
-  if (!callVM(ThrowBadDerivedReturnInfo)) {
+
+  using Fn = bool (*)(JSContext*, HandleValue);
+  if (!callVM<Fn, ThrowBadDerivedReturn>()) {
     return false;
   }
   masm.assumeUnreachable("Should throw on bad derived constructor return");
 
   masm.bind(&returnOK);
 
   if (!emitCheckThis(R0)) {
     return false;
@@ -1914,21 +1903,16 @@ bool BaselineCodeGen<Handler>::emit_JSOP
   // Store |this| in the return value slot.
   masm.storeValue(R0, frame.addressOfReturnValue());
   masm.or32(Imm32(BaselineFrame::HAS_RVAL), frame.addressOfFlags());
 
   masm.bind(&done);
   return true;
 }
 
-typedef bool (*GetFunctionThisFn)(JSContext*, BaselineFrame*,
-                                  MutableHandleValue);
-static const VMFunction GetFunctionThisInfo = FunctionInfo<GetFunctionThisFn>(
-    jit::BaselineGetFunctionThis, "BaselineGetFunctionThis");
-
 template <typename Handler>
 bool BaselineCodeGen<Handler>::emit_JSOP_FUNCTIONTHIS() {
   MOZ_ASSERT_IF(handler.maybeFunction(), !handler.maybeFunction()->isArrow());
 
   frame.pushThis();
 
   auto boxThis = [this]() {
     // Load |thisv| in R0. Skip the call if it's already an object.
@@ -1936,47 +1920,43 @@ bool BaselineCodeGen<Handler>::emit_JSOP
     frame.popRegsAndSync(1);
     masm.branchTestObject(Assembler::Equal, R0, &skipCall);
 
     prepareVMCall();
     masm.loadBaselineFramePtr(BaselineFrameReg, R1.scratchReg());
 
     pushArg(R1.scratchReg());
 
-    if (!callVM(GetFunctionThisInfo)) {
+    using Fn = bool (*)(JSContext*, BaselineFrame*, MutableHandleValue);
+    if (!callVM<Fn, BaselineGetFunctionThis>()) {
       return false;
     }
 
     masm.bind(&skipCall);
     frame.push(R0);
     return true;
   };
 
   // In strict mode code, |this| is left alone.
   return emitTestScriptFlag(JSScript::ImmutableFlags::Strict, false, boxThis,
                             R2.scratchReg());
 }
 
-typedef void (*GetNonSyntacticGlobalThisFn)(JSContext*, HandleObject,
-                                            MutableHandleValue);
-static const VMFunction GetNonSyntacticGlobalThisInfo =
-    FunctionInfo<GetNonSyntacticGlobalThisFn>(js::GetNonSyntacticGlobalThis,
-                                              "GetNonSyntacticGlobalThis");
-
 template <typename Handler>
 bool BaselineCodeGen<Handler>::emit_JSOP_GLOBALTHIS() {
   frame.syncStack(0);
 
   auto getNonSyntacticThis = [this]() {
     prepareVMCall();
 
     masm.loadPtr(frame.addressOfEnvironmentChain(), R0.scratchReg());
     pushArg(R0.scratchReg());
 
-    if (!callVM(GetNonSyntacticGlobalThisInfo)) {
+    using Fn = void (*)(JSContext*, HandleObject, MutableHandleValue);
+    if (!callVM<Fn, GetNonSyntacticGlobalThis>()) {
       return false;
     }
 
     frame.push(R0);
     return true;
   };
   auto getGlobalThis = [this]() {
     loadGlobalThisValue(R0);
--- a/js/src/jit/BaselineCompiler.h
+++ b/js/src/jit/BaselineCompiler.h
@@ -341,18 +341,23 @@ class BaselineCodeGen {
 
   void prepareVMCall();
 
   void storeFrameSizeAndPushDescriptor(uint32_t frameBaseSize, uint32_t argSize,
                                        const Address& frameSizeAddr,
                                        Register scratch1, Register scratch2);
 
   enum CallVMPhase { POST_INITIALIZE, CHECK_OVER_RECURSED };
+  bool callVM(const VMFunctionData& fun, TrampolinePtr code,
+              CallVMPhase phase = POST_INITIALIZE);
   bool callVM(const VMFunction& fun, CallVMPhase phase = POST_INITIALIZE);
 
+  template <typename Fn, Fn fn>
+  bool callVM(CallVMPhase phase = POST_INITIALIZE);
+
   bool callVMNonOp(const VMFunction& fun, CallVMPhase phase = POST_INITIALIZE) {
     if (!callVM(fun, phase)) {
       return false;
     }
     handler.markLastRetAddrEntryKind(RetAddrEntry::Kind::NonOpCallVM);
     return true;
   }
 
--- a/js/src/jit/CodeGenerator.cpp
+++ b/js/src/jit/CodeGenerator.cpp
@@ -8907,18 +8907,18 @@ void JitRuntime::generateDoubleToInt32Va
   masm.convertDoubleToInt32(FloatReg0, R1.scratchReg(), &done,
                             /* negativeZeroCheck = */ false);
   masm.tagValue(JSVAL_TYPE_INT32, R1.scratchReg(), R0);
 
   masm.bind(&done);
   masm.abiret();
 }
 
-bool JitRuntime::generateTLEventVM(MacroAssembler& masm, const VMFunction& f,
-                                   bool enter) {
+bool JitRuntime::generateTLEventVM(MacroAssembler& masm,
+                                   const VMFunctionData& f, bool enter) {
 #ifdef JS_TRACE_LOGGING
   bool vmEventEnabled = TraceLogTextIdEnabled(TraceLogger_VM);
   bool vmSpecificEventEnabled = TraceLogTextIdEnabled(TraceLogger_VMSpecific);
 
   if (vmEventEnabled || vmSpecificEventEnabled) {
     AllocatableRegisterSet regs(RegisterSet::Volatile());
     Register loggerReg = regs.takeAnyGeneral();
     masm.Push(loggerReg);
--- a/js/src/jit/Ion.cpp
+++ b/js/src/jit/Ion.cpp
@@ -281,23 +281,32 @@ bool JitRuntime::initialize(JSContext* c
 
   JitSpew(JitSpew_Codegen, "# Emitting interpreter stub");
   generateInterpreterStub(masm);
 
   JitSpew(JitSpew_Codegen, "# Emitting double-to-int32-value stub");
   generateDoubleToInt32ValueStub(masm);
 
   JitSpew(JitSpew_Codegen, "# Emitting VM function wrappers");
+  if (!generateVMWrappers(cx, masm)) {
+    return false;
+  }
+
+  // TODO(bug 1530937): remove this after converting all VM functions.
   for (VMFunction* fun = VMFunction::functions; fun; fun = fun->next) {
     if (functionWrappers_->has(fun)) {
       // Duplicate VMFunction definition. See VMFunction::hash.
       continue;
     }
     JitSpew(JitSpew_Codegen, "# VM function wrapper (%s)", fun->name());
-    if (!generateVMWrapper(cx, masm, *fun)) {
+    uint32_t offset;
+    if (!generateVMWrapper(cx, masm, *fun, &offset)) {
+      return false;
+    }
+    if (!functionWrappers_->putNew(fun, offset)) {
       return false;
     }
   }
 
   JitSpew(JitSpew_Codegen, "# Emitting profiler exit frame tail stub");
   Label profilerExitTail;
   generateProfilerExitFrameTailStub(masm, &profilerExitTail);
 
--- a/js/src/jit/JitFrames.cpp
+++ b/js/src/jit/JitFrames.cpp
@@ -1017,17 +1017,18 @@ static void TraceIonICCallFrame(JSTracer
 
 #ifdef JS_CODEGEN_MIPS32
 uint8_t* alignDoubleSpillWithOffset(uint8_t* pointer, int32_t offset) {
   uint32_t address = reinterpret_cast<uint32_t>(pointer);
   address = (address - offset) & ~(ABIStackAlignment - 1);
   return reinterpret_cast<uint8_t*>(address);
 }
 
-static void TraceJitExitFrameCopiedArguments(JSTracer* trc, const VMFunction* f,
+static void TraceJitExitFrameCopiedArguments(JSTracer* trc,
+                                             const VMFunctionData* f,
                                              ExitFooterFrame* footer) {
   uint8_t* doubleArgs = reinterpret_cast<uint8_t*>(footer);
   doubleArgs = alignDoubleSpillWithOffset(doubleArgs, sizeof(intptr_t));
   if (f->outParam == Type_Handle) {
     doubleArgs -= sizeof(Value);
   }
   doubleArgs -= f->doubleByRefArgs() * sizeof(double);
 
@@ -1039,17 +1040,18 @@ static void TraceJitExitFrameCopiedArgum
       } else {
         MOZ_ASSERT(f->argRootType(explicitArg) == VMFunction::RootNone);
       }
       doubleArgs += sizeof(double);
     }
   }
 }
 #else
-static void TraceJitExitFrameCopiedArguments(JSTracer* trc, const VMFunction* f,
+static void TraceJitExitFrameCopiedArguments(JSTracer* trc,
+                                             const VMFunctionData* f,
                                              ExitFooterFrame* footer) {
   // This is NO-OP on other platforms.
 }
 #endif
 
 static void TraceJitExitFrame(JSTracer* trc, const JSJitFrameIter& frame) {
   ExitFooterFrame* footer = frame.exitFrame()->footer();
 
@@ -1122,17 +1124,17 @@ static void TraceJitExitFrame(JSTracer* 
   if (frame.isBareExit()) {
     // Nothing to trace. Fake exit frame pushed for VM functions with
     // nothing to trace on the stack.
     return;
   }
 
   MOZ_ASSERT(frame.exitFrame()->isWrapperExit());
 
-  const VMFunction* f = footer->function();
+  const VMFunctionData* f = footer->function();
   MOZ_ASSERT(f);
 
   // Trace arguments of the VM wrapper.
   uint8_t* argBase = frame.exitFrame()->argBase();
   for (uint32_t explicitArg = 0; explicitArg < f->explicitArgs; explicitArg++) {
     switch (f->argRootType(explicitArg)) {
       case VMFunction::RootNone:
         break;
--- a/js/src/jit/JitFrames.h
+++ b/js/src/jit/JitFrames.h
@@ -12,16 +12,17 @@
 #include "jit/JSJitFrameIter.h"
 #include "vm/JSContext.h"
 #include "vm/JSFunction.h"
 
 namespace js {
 namespace jit {
 
 struct SafepointSlotEntry;
+struct VMFunctionData;
 
 enum CalleeTokenTag {
   CalleeToken_Function = 0x0,  // untagged
   CalleeToken_FunctionConstructing = 0x1,
   CalleeToken_Script = 0x2
 };
 
 // Any CalleeToken with this bit set must be CalleeToken_Script.
@@ -413,34 +414,34 @@ enum class ExitFrameType : uint8_t {
   VMFunction = 0xFD,
   LazyLink = 0xFE,
   Bare = 0xFF,
 };
 
 // GC related data used to keep alive data surrounding the Exit frame.
 class ExitFooterFrame {
   // Stores the ExitFrameType or, for ExitFrameType::VMFunction, the
-  // VMFunction*.
+  // VMFunctionData*.
   uintptr_t data_;
 
  public:
   static inline size_t Size() { return sizeof(ExitFooterFrame); }
   void setBareExitFrame() { data_ = uintptr_t(ExitFrameType::Bare); }
   ExitFrameType type() const {
     static_assert(sizeof(ExitFrameType) == sizeof(uint8_t),
                   "Code assumes ExitFrameType fits in a byte");
     if (data_ > UINT8_MAX) {
       return ExitFrameType::VMFunction;
     }
     MOZ_ASSERT(ExitFrameType(data_) != ExitFrameType::VMFunction);
     return ExitFrameType(data_);
   }
-  inline const VMFunction* function() const {
+  inline const VMFunctionData* function() const {
     MOZ_ASSERT(type() == ExitFrameType::VMFunction);
-    return reinterpret_cast<const VMFunction*>(data_);
+    return reinterpret_cast<const VMFunctionData*>(data_);
   }
 
   // This should only be called for function()->outParam == Type_Handle
   template <typename T>
   T* outParam() {
     uint8_t* address = reinterpret_cast<uint8_t*>(this);
     address = alignDoubleSpillWithOffset(address, sizeof(intptr_t));
     return reinterpret_cast<T*>(address - sizeof(T));
--- a/js/src/jit/JitRealm.h
+++ b/js/src/jit/JitRealm.h
@@ -23,16 +23,18 @@
 #include "js/GCHashTable.h"
 #include "js/Value.h"
 #include "vm/Stack.h"
 
 namespace js {
 namespace jit {
 
 class FrameSizeClass;
+struct VMFunctionData;
+enum class VMFunctionId;
 
 struct EnterJitData {
   explicit EnterJitData(JSContext* cx)
       : jitcode(nullptr),
         osrFrame(nullptr),
         calleeToken(nullptr),
         maxArgv(nullptr),
         maxArgc(0),
@@ -138,16 +140,20 @@ class JitRuntime {
   // Code for trampolines and VMFunction wrappers.
   WriteOnceData<JitCode*> trampolineCode_;
 
   // Map VMFunction addresses to the offset of the wrapper in
   // trampolineCode_.
   using VMWrapperMap = HashMap<const VMFunction*, uint32_t, VMFunction>;
   WriteOnceData<VMWrapperMap*> functionWrappers_;
 
+  // Maps VMFunctionId to the offset of the wrapper code in trampolineCode_.
+  using VMWrapperOffsets = Vector<uint32_t, 0, SystemAllocPolicy>;
+  VMWrapperOffsets functionWrapperOffsets_;
+
   // Global table of jitcode native address => bytecode address mappings.
   UnprotectedData<JitcodeGlobalTable*> jitcodeGlobalTable_;
 
 #ifdef DEBUG
   // The number of possible bailing places encounters before forcefully bailing
   // in that place. Zero means inactive.
   MainThreadData<uint32_t> ionBailAfter_;
 #endif
@@ -185,25 +191,28 @@ class JitRuntime {
   void generateInvalidator(MacroAssembler& masm, Label* bailoutTail);
   uint32_t generatePreBarrier(JSContext* cx, MacroAssembler& masm,
                               MIRType type);
   void generateMallocStub(MacroAssembler& masm);
   void generateFreeStub(MacroAssembler& masm);
   JitCode* generateDebugTrapHandler(JSContext* cx);
   JitCode* generateBaselineDebugModeOSRHandler(
       JSContext* cx, uint32_t* noFrameRegPopOffsetOut);
+
   bool generateVMWrapper(JSContext* cx, MacroAssembler& masm,
-                         const VMFunction& f);
+                         const VMFunctionData& f, uint32_t* wrapperOffset);
+  bool generateVMWrappers(JSContext* cx, MacroAssembler& masm);
 
-  bool generateTLEventVM(MacroAssembler& masm, const VMFunction& f, bool enter);
+  bool generateTLEventVM(MacroAssembler& masm, const VMFunctionData& f,
+                         bool enter);
 
-  inline bool generateTLEnterVM(MacroAssembler& masm, const VMFunction& f) {
+  inline bool generateTLEnterVM(MacroAssembler& masm, const VMFunctionData& f) {
     return generateTLEventVM(masm, f, /* enter = */ true);
   }
-  inline bool generateTLExitVM(MacroAssembler& masm, const VMFunction& f) {
+  inline bool generateTLExitVM(MacroAssembler& masm, const VMFunctionData& f) {
     return generateTLEventVM(masm, f, /* enter = */ false);
   }
 
   uint32_t startTrampolineCode(MacroAssembler& masm);
 
   TrampolinePtr trampolineCode(uint32_t offset) const {
     MOZ_ASSERT(offset > 0);
     MOZ_ASSERT(offset < trampolineCode_->instructionsSize());
@@ -222,16 +231,22 @@ class JitRuntime {
 
   ExecutableAllocator& execAlloc() { return execAlloc_.ref(); }
 
   IonCompilationId nextCompilationId() {
     return IonCompilationId(nextCompilationId_++);
   }
 
   TrampolinePtr getVMWrapper(const VMFunction& f) const;
+
+  TrampolinePtr getVMWrapper(const VMFunctionId funId) const {
+    MOZ_ASSERT(trampolineCode_);
+    return trampolineCode(functionWrapperOffsets_[size_t(funId)]);
+  }
+
   JitCode* debugTrapHandler(JSContext* cx);
   JitCode* getBaselineDebugModeOSRHandler(JSContext* cx);
   void* getBaselineDebugModeOSRHandlerAddress(JSContext* cx, bool popFrameReg);
 
   TrampolinePtr getGenericBailoutHandler() const {
     return trampolineCode(bailoutHandlerOffset_);
   }
 
--- a/js/src/jit/MacroAssembler-inl.h
+++ b/js/src/jit/MacroAssembler-inl.h
@@ -255,17 +255,17 @@ uint32_t MacroAssembler::buildFakeExitFr
   MOZ_ASSERT(framePushed() == initialDepth + ExitFrameLayout::Size());
   return retAddr;
 }
 
 // ===============================================================
 // Exit frame footer.
 
 void MacroAssembler::enterExitFrame(Register cxreg, Register scratch,
-                                    const VMFunction* f) {
+                                    const VMFunctionData* f) {
   MOZ_ASSERT(f);
   linkExitFrame(cxreg, scratch);
   // Push VMFunction pointer, to mark arguments.
   Push(ImmPtr(f));
 }
 
 void MacroAssembler::enterFakeExitFrame(Register cxreg, Register scratch,
                                         ExitFrameType type) {
--- a/js/src/jit/MacroAssembler.h
+++ b/js/src/jit/MacroAssembler.h
@@ -709,19 +709,19 @@ class MacroAssembler : public MacroAssem
   // Exit frame footer.
   //
   // When calling outside the Jit we push an exit frame. To mark the stack
   // correctly, we have to push additional information, called the Exit frame
   // footer, which is used to identify how the stack is marked.
   //
   // See JitFrames.h, and MarkJitExitFrame in JitFrames.cpp.
 
-  // Push stub code and the VMFunction pointer.
+  // Push stub code and the VMFunctionData pointer.
   inline void enterExitFrame(Register cxreg, Register scratch,
-                             const VMFunction* f);
+                             const VMFunctionData* f);
 
   // Push an exit frame token to identify which fake exit frame this footer
   // corresponds to.
   inline void enterFakeExitFrame(Register cxreg, Register scratch,
                                  ExitFrameType type);
 
   // Push an exit frame token for a native call.
   inline void enterFakeExitFrameForNative(Register cxreg, Register scratch,
new file mode 100644
--- /dev/null
+++ b/js/src/jit/VMFunctionList-inl.h
@@ -0,0 +1,69 @@
+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
+ * vim: set ts=8 sts=2 et sw=2 tw=80:
+ * 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 http://mozilla.org/MPL/2.0/. */
+
+#include "jit/BaselineIC.h"
+#include "jit/JitRealm.h"
+#include "jit/VMFunctions.h"
+#include "vm/Interpreter.h"
+
+#include "jit/BaselineFrame-inl.h"
+#include "vm/Interpreter-inl.h"
+
+namespace js {
+namespace jit {
+
+// List of all VM functions to be used with callVM. Each entry stores the name
+// (must be unique, used for the VMFunctionId enum and profiling) and the C++
+// function to be called. This list must be sorted on the name field.
+#define VMFUNCTION_LIST(_)                                                   \
+  _(BaselineDebugPrologue, js::jit::DebugPrologue)                           \
+  _(BaselineGetFunctionThis, js::jit::BaselineGetFunctionThis)               \
+  _(BaselineThrowInitializedThis, js::jit::BaselineThrowInitializedThis)     \
+  _(BaselineThrowUninitializedThis, js::jit::BaselineThrowUninitializedThis) \
+  _(CheckIsCallable, js::jit::CheckIsCallable)                               \
+  _(CheckOverRecursedBaseline, js::jit::CheckOverRecursedBaseline)           \
+  _(GetNonSyntacticGlobalThis, js::GetNonSyntacticGlobalThis)                \
+  _(InterruptCheck, js::jit::InterruptCheck)                                 \
+  _(IonCompileScriptForBaseline, js::jit::IonCompileScriptForBaseline)       \
+  _(ThrowBadDerivedReturn, js::jit::ThrowBadDerivedReturn)                   \
+  _(ThrowCheckIsObject, js::ThrowCheckIsObject)
+
+enum class VMFunctionId {
+#define DEF_ID(name, fp) name,
+  VMFUNCTION_LIST(DEF_ID)
+#undef DEF_ID
+      Count
+};
+
+// Define the VMFunctionToId template to map from signature + function to
+// the VMFunctionId. This lets us verify the consumer/codegen code matches
+// the C++ signature.
+template <typename Function, Function fun>
+struct VMFunctionToId;  // Error on this line? Forgot to update VMFUNCTION_LIST?
+
+// GCC warns when the signature does not have matching attributes (for example
+// MOZ_MUST_USE). Squelch this warning to avoid a GCC-only footgun.
+#if MOZ_IS_GCC
+#  pragma GCC diagnostic push
+#  pragma GCC diagnostic ignored "-Wignored-attributes"
+#endif
+
+// Note: the use of ::fp instead of fp is intentional to enforce use of
+// fully-qualified names in the list above.
+#define DEF_TEMPLATE(name, fp)                             \
+  template <>                                              \
+  struct VMFunctionToId<decltype(&(::fp)), ::fp> {         \
+    static constexpr VMFunctionId id = VMFunctionId::name; \
+  };
+VMFUNCTION_LIST(DEF_TEMPLATE)
+#undef DEF_TEMPLATE
+
+#if MOZ_IS_GCC
+#  pragma GCC diagnostic pop
+#endif
+
+}  // namespace jit
+}  // namespace js
--- a/js/src/jit/VMFunctions.cpp
+++ b/js/src/jit/VMFunctions.cpp
@@ -19,29 +19,137 @@
 #include "vm/Debugger.h"
 #include "vm/EqualityOperations.h"  // js::StrictlyEqual
 #include "vm/Interpreter.h"
 #include "vm/SelfHosting.h"
 #include "vm/TraceLogging.h"
 
 #include "jit/BaselineFrame-inl.h"
 #include "jit/JitFrames-inl.h"
+#include "jit/VMFunctionList-inl.h"
 #include "vm/Debugger-inl.h"
 #include "vm/Interpreter-inl.h"
 #include "vm/NativeObject-inl.h"
 #include "vm/StringObject-inl.h"
 #include "vm/TypeInference-inl.h"
 #include "vm/UnboxedObject-inl.h"
 
 using namespace js;
 using namespace js::jit;
 
 namespace js {
 namespace jit {
 
+// Helper template to build the VMFunctionData for a function.
+template <typename... Args>
+struct VMFunctionDataHelper;
+
+template <class R, typename... Args>
+struct VMFunctionDataHelper<R (*)(JSContext*, Args...)>
+    : public VMFunctionData {
+  using Fun = R (*)(JSContext*, Args...);
+
+  static constexpr DataType returnType() { return TypeToDataType<R>::result; }
+  static constexpr DataType outParam() {
+    return OutParamToDataType<typename LastArg<Args...>::Type>::result;
+  }
+  static constexpr RootType outParamRootType() {
+    return OutParamToRootType<typename LastArg<Args...>::Type>::result;
+  }
+  static constexpr size_t NbArgs() { return LastArg<Args...>::nbArgs; }
+  static constexpr size_t explicitArgs() {
+    return NbArgs() - (outParam() != Type_Void ? 1 : 0);
+  }
+  static constexpr uint32_t argumentProperties() {
+    return BitMask<TypeToArgProperties, uint32_t, 2, Args...>::result;
+  }
+  static constexpr uint32_t argumentPassedInFloatRegs() {
+    return BitMask<TypeToPassInFloatReg, uint32_t, 2, Args...>::result;
+  }
+  static constexpr uint64_t argumentRootTypes() {
+    return BitMask<TypeToRootType, uint64_t, 3, Args...>::result;
+  }
+  constexpr VMFunctionDataHelper(Fun fun, const char* name,
+                                 PopValues extraValuesToPop = PopValues(0))
+      : VMFunctionData((void*)fun, name, explicitArgs(), argumentProperties(),
+                       argumentPassedInFloatRegs(), argumentRootTypes(),
+                       outParam(), outParamRootType(), returnType(),
+                       extraValuesToPop.numValues, NonTailCall) {}
+  constexpr VMFunctionDataHelper(Fun fun, const char* name,
+                                 MaybeTailCall expectTailCall,
+                                 PopValues extraValuesToPop = PopValues(0))
+      : VMFunctionData((void*)fun, name, explicitArgs(), argumentProperties(),
+                       argumentPassedInFloatRegs(), argumentRootTypes(),
+                       outParam(), outParamRootType(), returnType(),
+                       extraValuesToPop.numValues, expectTailCall) {}
+};
+
+// GCC warns when the signature does not have matching attributes (for example
+// MOZ_MUST_USE). Squelch this warning to avoid a GCC-only footgun.
+#if MOZ_IS_GCC
+#  pragma GCC diagnostic push
+#  pragma GCC diagnostic ignored "-Wignored-attributes"
+#endif
+
+// Generate VMFunctionData array.
+static constexpr VMFunctionData vmFunctions[] = {
+#define DEF_VMFUNCTION(name, fp) \
+  VMFunctionDataHelper<decltype(&(::fp))>(::fp, #name),
+    VMFUNCTION_LIST(DEF_VMFUNCTION)
+#undef DEF_VMFUNCTION
+};
+
+#if MOZ_IS_GCC
+#  pragma GCC diagnostic pop
+#endif
+
+const VMFunctionData& GetVMFunction(VMFunctionId id) {
+  return vmFunctions[size_t(id)];
+}
+
+bool JitRuntime::generateVMWrappers(JSContext* cx, MacroAssembler& masm) {
+  // Generate all VM function wrappers.
+
+  static constexpr size_t NumVMFunctions = size_t(VMFunctionId::Count);
+
+  if (!functionWrapperOffsets_.reserve(NumVMFunctions)) {
+    return false;
+  }
+
+#ifdef DEBUG
+  const char* lastName = nullptr;
+#endif
+
+  for (size_t i = 0; i < NumVMFunctions; i++) {
+    VMFunctionId id = VMFunctionId(i);
+    const VMFunctionData& fun = GetVMFunction(id);
+
+#ifdef DEBUG
+    // Assert the list is sorted by name.
+    if (lastName) {
+      MOZ_ASSERT(strcmp(lastName, fun.name()) < 0,
+                 "VM function list must be sorted by name");
+    }
+    lastName = fun.name();
+#endif
+
+    JitSpew(JitSpew_Codegen, "# VM function wrapper (%s)", fun.name());
+
+    uint32_t offset;
+    if (!generateVMWrapper(cx, masm, fun, &offset)) {
+      return false;
+    }
+
+    MOZ_ASSERT(functionWrapperOffsets_.length() == size_t(id));
+    functionWrapperOffsets_.infallibleAppend(offset);
+  }
+
+  return true;
+}
+
 // Statics are initialized to null.
 /* static */ VMFunction* VMFunction::functions;
 
 AutoDetectInvalidation::AutoDetectInvalidation(JSContext* cx,
                                                MutableHandleValue rval)
     : cx_(cx),
       ionScript_(GetTopJitJSScript(cx)->ionScript()),
       rval_(rval),
--- a/js/src/jit/VMFunctions.h
+++ b/js/src/jit/VMFunctions.h
@@ -50,16 +50,18 @@ struct PopValues {
 
   explicit constexpr PopValues(uint8_t numValues) : numValues(numValues) {}
 };
 
 enum MaybeTailCall : bool { TailCall, NonTailCall };
 
 // [SMDOC] JIT-to-C++ Function Calls. (callVM)
 //
+// TODO(bug 1530937): update this comment after converting all VM functions.
+//
 // Sometimes it is easier to reuse C++ code by calling VM's functions. Calling a
 // function from the VM can be achieved with the use of callWithABI but this is
 // discouraged when the called functions might trigger exceptions and/or
 // garbage collections which are expecting to walk the stack. VMFunctions and
 // callVM are interfaces provided to handle the exception handling and register
 // the stack end (JITActivation) such that walking the stack is made possible.
 //
 // A VMFunction is a structure which contains the necessary information needed
@@ -118,21 +120,19 @@ enum MaybeTailCall : bool { TailCall, No
 //
 //      masm.Push(id);
 //      masm.Push(obj);
 //      if (!callVM(FooInfo)) {
 //          return false;
 //      }
 //
 // After this, the result value is in the return value register.
-struct VMFunction {
-  // Global linked list of all VMFunctions.
-  static VMFunction* functions;
-  VMFunction* next;
 
+// Data for a VM function. All VMFunctionDatas are stored in a constexpr array.
+struct VMFunctionData {
   // Address of the C function.
   void* wrapped;
 
 #if defined(JS_JITSPEW) || defined(JS_TRACE_LOGGING)
   // Informative name of the wrapped function. The name should not be present
   // in release builds in order to save memory.
   const char* name_;
 #endif
@@ -288,62 +288,86 @@ struct VMFunction {
     // few loop iterations)
     while (n) {
       count++;
       n &= n - 1;
     }
     return count;
   }
 
-  constexpr VMFunction(void* wrapped, const char* name, uint32_t explicitArgs,
-                       uint32_t argumentProperties,
-                       uint32_t argumentPassedInFloatRegs,
-                       uint64_t argRootTypes, DataType outParam,
-                       RootType outParamRootType, DataType returnType,
-                       uint8_t extraValuesToPop = 0,
-                       MaybeTailCall expectTailCall = NonTailCall)
-      : next(nullptr),
-        wrapped(wrapped),
+  constexpr VMFunctionData(void* wrapped, const char* name,
+                           uint32_t explicitArgs, uint32_t argumentProperties,
+                           uint32_t argumentPassedInFloatRegs,
+                           uint64_t argRootTypes, DataType outParam,
+                           RootType outParamRootType, DataType returnType,
+                           uint8_t extraValuesToPop = 0,
+                           MaybeTailCall expectTailCall = NonTailCall)
+      : wrapped(wrapped),
 #if defined(JS_JITSPEW) || defined(JS_TRACE_LOGGING)
         name_(name),
 #endif
         argumentRootTypes(argRootTypes),
         argumentProperties(argumentProperties),
         argumentPassedInFloatRegs(argumentPassedInFloatRegs),
         explicitArgs(explicitArgs),
         outParamRootType(outParamRootType),
         outParam(outParam),
         returnType(returnType),
         extraValuesToPop(extraValuesToPop),
         expectTailCall(expectTailCall) {
+    // Check for valid failure/return type.
+    MOZ_ASSERT_IF(outParam != Type_Void,
+                  returnType == Type_Void || returnType == Type_Bool);
+    MOZ_ASSERT(returnType == Type_Void || returnType == Type_Bool ||
+               returnType == Type_Object);
   }
 
-  VMFunction(const VMFunction& o)
-      : next(functions),
-        wrapped(o.wrapped),
+  // Note: clang-tidy suggests using |= auto| here but that generates extra
+  // static initializers for old-style VMFunction definitions with Clang. We can
+  // do this after bug 1530937 converts all of them.
+  constexpr VMFunctionData(const VMFunctionData& o)
+      : wrapped(o.wrapped),
 #if defined(JS_JITSPEW) || defined(JS_TRACE_LOGGING)
         name_(o.name_),
 #endif
         argumentRootTypes(o.argumentRootTypes),
         argumentProperties(o.argumentProperties),
         argumentPassedInFloatRegs(o.argumentPassedInFloatRegs),
         explicitArgs(o.explicitArgs),
         outParamRootType(o.outParamRootType),
         outParam(o.outParam),
         returnType(o.returnType),
         extraValuesToPop(o.extraValuesToPop),
         expectTailCall(o.expectTailCall) {
+  }
+};
+
+// TODO(bug 1530937): remove VMFunction and FunctionInfo after converting all VM
+// functions to the new design.
+struct VMFunction : public VMFunctionData {
+  // Global linked list of all VMFunctions.
+  static VMFunction* functions;
+  VMFunction* next;
+
+  constexpr VMFunction(void* wrapped, const char* name, uint32_t explicitArgs,
+                       uint32_t argumentProperties,
+                       uint32_t argumentPassedInFloatRegs,
+                       uint64_t argRootTypes, DataType outParam,
+                       RootType outParamRootType, DataType returnType,
+                       uint8_t extraValuesToPop = 0,
+                       MaybeTailCall expectTailCall = NonTailCall)
+      : VMFunctionData(wrapped, name, explicitArgs, argumentProperties,
+                       argumentPassedInFloatRegs, argRootTypes, outParam,
+                       outParamRootType, returnType, extraValuesToPop,
+                       expectTailCall),
+        next(nullptr) {}
+
+  VMFunction(const VMFunction& o) : VMFunctionData(o), next(functions) {
     // Add this to the global list of VMFunctions.
     functions = this;
-
-    // Check for valid failure/return type.
-    MOZ_ASSERT_IF(outParam != Type_Void,
-                  returnType == Type_Void || returnType == Type_Bool);
-    MOZ_ASSERT(returnType == Type_Void || returnType == Type_Bool ||
-               returnType == Type_Object);
   }
 
   typedef const VMFunction* Lookup;
 
   static HashNumber hash(const VMFunction* f) {
     // The hash is based on the wrapped function, not the VMFunction*, to
     // avoid generating duplicate wrapper code.
     HashNumber hash = 0;
@@ -776,23 +800,16 @@ template <>
 struct OutParamToRootType<MutableHandleObject> {
   static const VMFunction::RootType result = VMFunction::RootObject;
 };
 template <>
 struct OutParamToRootType<MutableHandleString> {
   static const VMFunction::RootType result = VMFunction::RootString;
 };
 
-template <class>
-struct MatchContext {};
-template <>
-struct MatchContext<JSContext*> {
-  static const bool valid = true;
-};
-
 // Extract the last element of a list of types.
 template <typename... ArgTypes>
 struct LastArg;
 
 template <>
 struct LastArg<> {
   typedef void Type;
   static constexpr size_t nbArgs = 0;
@@ -839,19 +856,19 @@ struct BitMask<Each, ResultType, Shift, 
 };
 
 // Extract VMFunction properties based on the signature of the function. The
 // properties are used to generate the logic for calling the VM function, and
 // also for marking the stack during GCs.
 template <typename... Args>
 struct FunctionInfo;
 
-template <class R, class Context, typename... Args>
-struct FunctionInfo<R (*)(Context, Args...)> : public VMFunction {
-  typedef R (*pf)(Context, Args...);
+template <class R, typename... Args>
+struct FunctionInfo<R (*)(JSContext*, Args...)> : public VMFunction {
+  using pf = R (*)(JSContext*, Args...);
 
   static DataType returnType() { return TypeToDataType<R>::result; }
   static DataType outParam() {
     return OutParamToDataType<typename LastArg<Args...>::Type>::result;
   }
   static RootType outParamRootType() {
     return OutParamToRootType<typename LastArg<Args...>::Type>::result;
   }
@@ -869,27 +886,23 @@ struct FunctionInfo<R (*)(Context, Args.
     return BitMask<TypeToRootType, uint64_t, 3, Args...>::result;
   }
   explicit FunctionInfo(pf fun, const char* name,
                         PopValues extraValuesToPop = PopValues(0))
       : VMFunction(JS_FUNC_TO_DATA_PTR(void*, fun), name, explicitArgs(),
                    argumentProperties(), argumentPassedInFloatRegs(),
                    argumentRootTypes(), outParam(), outParamRootType(),
                    returnType(), extraValuesToPop.numValues, NonTailCall) {
-    static_assert(MatchContext<Context>::valid,
-                  "Invalid cx type in VMFunction");
   }
   explicit FunctionInfo(pf fun, const char* name, MaybeTailCall expectTailCall,
                         PopValues extraValuesToPop = PopValues(0))
       : VMFunction(JS_FUNC_TO_DATA_PTR(void*, fun), name, explicitArgs(),
                    argumentProperties(), argumentPassedInFloatRegs(),
                    argumentRootTypes(), outParam(), outParamRootType(),
                    returnType(), extraValuesToPop.numValues, expectTailCall) {
-    static_assert(MatchContext<Context>::valid,
-                  "Invalid cx type in VMFunction");
   }
 };
 
 class AutoDetectInvalidation {
   JSContext* cx_;
   IonScript* ionScript_;
   MutableHandleValue rval_;
   bool disabled_;
@@ -1221,12 +1234,16 @@ extern const VMFunction AddOrUpdateSpars
 extern const VMFunction GetSparseElementHelperInfo;
 
 extern const VMFunction ToNumberInfo;
 extern const VMFunction ToNumericInfo;
 
 // TailCall VMFunctions
 extern const VMFunction DoConcatStringObjectInfo;
 
+enum class VMFunctionId;
+
+extern const VMFunctionData& GetVMFunction(VMFunctionId id);
+
 }  // namespace jit
 }  // namespace js
 
 #endif /* jit_VMFunctions_h */
--- a/js/src/jit/arm/Trampoline-arm.cpp
+++ b/js/src/jit/arm/Trampoline-arm.cpp
@@ -699,20 +699,21 @@ JitRuntime::BailoutTable JitRuntime::gen
 void JitRuntime::generateBailoutHandler(MacroAssembler& masm,
                                         Label* bailoutTail) {
   bailoutHandlerOffset_ = startTrampolineCode(masm);
 
   GenerateBailoutThunk(masm, NO_FRAME_SIZE_CLASS_ID, bailoutTail);
 }
 
 bool JitRuntime::generateVMWrapper(JSContext* cx, MacroAssembler& masm,
-                                   const VMFunction& f) {
+                                   const VMFunctionData& f,
+                                   uint32_t* wrapperOffset) {
   MOZ_ASSERT(functionWrappers_);
 
-  uint32_t wrapperOffset = startTrampolineCode(masm);
+  *wrapperOffset = startTrampolineCode(masm);
 
   AllocatableGeneralRegisterSet regs(Register::Codes::WrapperMask);
 
   static_assert(
       (Register::Codes::VolatileMask & ~Register::Codes::WrapperMask) == 0,
       "Wrapper register set must be a superset of Volatile register set.");
 
   // The context is the first argument; r0 is the first argument register.
@@ -888,17 +889,17 @@ bool JitRuntime::generateVMWrapper(JSCon
     masm.speculationBarrier();
   }
 
   masm.leaveExitFrame();
   masm.retn(Imm32(sizeof(ExitFrameLayout) +
                   f.explicitStackSlots() * sizeof(void*) +
                   f.extraValuesToPop * sizeof(Value)));
 
-  return functionWrappers_->putNew(&f, wrapperOffset);
+  return true;
 }
 
 uint32_t JitRuntime::generatePreBarrier(JSContext* cx, MacroAssembler& masm,
                                         MIRType type) {
   uint32_t offset = startTrampolineCode(masm);
 
   masm.pushReturnAddress();
 
--- a/js/src/jit/arm64/Trampoline-arm64.cpp
+++ b/js/src/jit/arm64/Trampoline-arm64.cpp
@@ -528,20 +528,21 @@ JitRuntime::BailoutTable JitRuntime::gen
 void JitRuntime::generateBailoutHandler(MacroAssembler& masm,
                                         Label* bailoutTail) {
   bailoutHandlerOffset_ = startTrampolineCode(masm);
 
   GenerateBailoutThunk(masm, bailoutTail);
 }
 
 bool JitRuntime::generateVMWrapper(JSContext* cx, MacroAssembler& masm,
-                                   const VMFunction& f) {
+                                   const VMFunctionData& f,
+                                   uint32_t* wrapperOffset) {
   MOZ_ASSERT(functionWrappers_);
 
-  uint32_t wrapperOffset = startTrampolineCode(masm);
+  *wrapperOffset = startTrampolineCode(masm);
 
   // Avoid conflicts with argument registers while discarding the result after
   // the function call.
   AllocatableGeneralRegisterSet regs(Register::Codes::WrapperMask);
 
   static_assert(
       (Register::Codes::VolatileMask & ~Register::Codes::WrapperMask) == 0,
       "Wrapper register set must be a superset of the Volatile register set.");
@@ -728,17 +729,17 @@ bool JitRuntime::generateVMWrapper(JSCon
     masm.speculationBarrier();
   }
 
   masm.leaveExitFrame();
   masm.retn(Imm32(sizeof(ExitFrameLayout) +
                   f.explicitStackSlots() * sizeof(void*) +
                   f.extraValuesToPop * sizeof(Value)));
 
-  return functionWrappers_->putNew(&f, wrapperOffset);
+  return true;
 }
 
 uint32_t JitRuntime::generatePreBarrier(JSContext* cx, MacroAssembler& masm,
                                         MIRType type) {
   uint32_t offset = startTrampolineCode(masm);
 
   MOZ_ASSERT(PreBarrierReg == r1);
   Register temp1 = r2;
--- a/js/src/jit/none/Trampoline-none.cpp
+++ b/js/src/jit/none/Trampoline-none.cpp
@@ -35,17 +35,17 @@ void JitRuntime::generateExceptionTailSt
 void JitRuntime::generateBailoutTailStub(MacroAssembler&, Label*) {
   MOZ_CRASH();
 }
 void JitRuntime::generateProfilerExitFrameTailStub(MacroAssembler&, Label*) {
   MOZ_CRASH();
 }
 
 bool JitRuntime::generateVMWrapper(JSContext*, MacroAssembler&,
-                                   const VMFunction&) {
+                                   const VMFunctionData&, uint32_t*) {
   MOZ_CRASH();
 }
 
 FrameSizeClass FrameSizeClass::FromDepth(uint32_t) { MOZ_CRASH(); }
 FrameSizeClass FrameSizeClass::ClassLimit() { MOZ_CRASH(); }
 uint32_t FrameSizeClass::frameSize() const { MOZ_CRASH(); }
 
 BailoutFrameInfo::BailoutFrameInfo(const JitActivationIterator& iter,
--- a/js/src/jit/x64/Trampoline-x64.cpp
+++ b/js/src/jit/x64/Trampoline-x64.cpp
@@ -586,20 +586,21 @@ JitRuntime::BailoutTable JitRuntime::gen
 void JitRuntime::generateBailoutHandler(MacroAssembler& masm,
                                         Label* bailoutTail) {
   bailoutHandlerOffset_ = startTrampolineCode(masm);
 
   GenerateBailoutThunk(masm, NO_FRAME_SIZE_CLASS_ID, bailoutTail);
 }
 
 bool JitRuntime::generateVMWrapper(JSContext* cx, MacroAssembler& masm,
-                                   const VMFunction& f) {
+                                   const VMFunctionData& f,
+                                   uint32_t* wrapperOffset) {
   MOZ_ASSERT(functionWrappers_);
 
-  uint32_t wrapperOffset = startTrampolineCode(masm);
+  *wrapperOffset = startTrampolineCode(masm);
 
   // Avoid conflicts with argument registers while discarding the result after
   // the function call.
   AllocatableGeneralRegisterSet regs(Register::Codes::WrapperMask);
 
   static_assert(
       (Register::Codes::VolatileMask & ~Register::Codes::WrapperMask) == 0,
       "Wrapper register set must be a superset of Volatile register set");
@@ -767,17 +768,17 @@ bool JitRuntime::generateVMWrapper(JSCon
     masm.speculationBarrier();
   }
 
   masm.leaveExitFrame();
   masm.retn(Imm32(sizeof(ExitFrameLayout) +
                   f.explicitStackSlots() * sizeof(void*) +
                   f.extraValuesToPop * sizeof(Value)));
 
-  return functionWrappers_->putNew(&f, wrapperOffset);
+  return true;
 }
 
 uint32_t JitRuntime::generatePreBarrier(JSContext* cx, MacroAssembler& masm,
                                         MIRType type) {
   uint32_t offset = startTrampolineCode(masm);
 
   MOZ_ASSERT(PreBarrierReg == rdx);
   Register temp1 = rax;
--- a/js/src/jit/x86/Trampoline-x86.cpp
+++ b/js/src/jit/x86/Trampoline-x86.cpp
@@ -603,20 +603,21 @@ JitRuntime::BailoutTable JitRuntime::gen
 void JitRuntime::generateBailoutHandler(MacroAssembler& masm,
                                         Label* bailoutTail) {
   bailoutHandlerOffset_ = startTrampolineCode(masm);
 
   GenerateBailoutThunk(masm, NO_FRAME_SIZE_CLASS_ID, bailoutTail);
 }
 
 bool JitRuntime::generateVMWrapper(JSContext* cx, MacroAssembler& masm,
-                                   const VMFunction& f) {
+                                   const VMFunctionData& f,
+                                   uint32_t* wrapperOffset) {
   MOZ_ASSERT(functionWrappers_);
 
-  uint32_t wrapperOffset = startTrampolineCode(masm);
+  *wrapperOffset = startTrampolineCode(masm);
 
   // Avoid conflicts with argument registers while discarding the result after
   // the function call.
   AllocatableGeneralRegisterSet regs(Register::Codes::WrapperMask);
 
   static_assert(
       (Register::Codes::VolatileMask & ~Register::Codes::WrapperMask) == 0,
       "Wrapper register set must be a superset of Volatile register set.");
@@ -781,17 +782,17 @@ bool JitRuntime::generateVMWrapper(JSCon
     masm.speculationBarrier();
   }
 
   masm.leaveExitFrame();
   masm.retn(Imm32(sizeof(ExitFrameLayout) +
                   f.explicitStackSlots() * sizeof(void*) +
                   f.extraValuesToPop * sizeof(Value)));
 
-  return functionWrappers_->putNew(&f, wrapperOffset);
+  return true;
 }
 
 uint32_t JitRuntime::generatePreBarrier(JSContext* cx, MacroAssembler& masm,
                                         MIRType type) {
   uint32_t offset = startTrampolineCode(masm);
 
   MOZ_ASSERT(PreBarrierReg == edx);
   Register temp1 = eax;
--- a/js/src/jslibmath.h
+++ b/js/src/jslibmath.h
@@ -31,14 +31,23 @@ inline double NumberDiv(double a, double
   return a / b;
 }
 
 inline double NumberMod(double a, double b) {
   AutoUnsafeCallWithABI unsafe(UnsafeABIStrictness::AllowPendingExceptions);
   if (b == 0) {
     return JS::GenericNaN();
   }
-  return fmod(a, b);
+  double r = fmod(a, b);
+#if defined(XP_WIN)
+  // Some versions of Windows (Win 10 v1803, v1809) miscompute the sign of zero
+  // results from fmod. The sign should match the sign of the LHS. This bug
+  // only affects 64-bit builds. See bug 1527007.
+  if (mozilla::IsPositiveZero(r) && mozilla::IsNegative(a)) {
+    return -0.0;
+  }
+#endif
+  return r;
 }
 
 }  // namespace js
 
 #endif /* jslibmath_h */
new file mode 100644
--- /dev/null
+++ b/js/src/tests/non262/expressions/constant-folded-labeled-statement.js
@@ -0,0 +1,14 @@
+var BUGNUMBER = 1499448;
+var summary = "Constant folder should fold labeled statements";
+
+print(BUGNUMBER + ": " + summary);
+
+if (typeof disassemble === "function") {
+    var code = disassemble(() => { x: 2+2; });
+
+    if (typeof reportCompare === "function")
+        reportCompare(true, /int8 4/.test(code));
+}
+
+if (typeof reportCompare === "function")
+    reportCompare(true, true);
--- a/js/src/wasm/AsmJS.cpp
+++ b/js/src/wasm/AsmJS.cpp
@@ -604,20 +604,16 @@ static inline PropertyName* ObjectNormal
   return BinaryLeft(pn)->as<NameNode>().atom()->asPropertyName();
 }
 
 static inline ParseNode* ObjectNormalFieldInitializer(ParseNode* pn) {
   MOZ_ASSERT(IsNormalObjectField(pn));
   return BinaryRight(pn);
 }
 
-static inline ParseNode* MaybeInitializer(ParseNode* pn) {
-  return pn->as<NameNode>().initializer();
-}
-
 static inline bool IsUseOfName(ParseNode* pn, PropertyName* name) {
   return pn->isName(name);
 }
 
 static inline bool IsIgnoredDirectiveName(JSContext* cx, JSAtom* atom) {
   return atom != cx->names().useStrict;
 }
 
@@ -3035,31 +3031,35 @@ static bool CheckGlobalDotImport(ModuleV
 
   if (baseName != m.importArgumentName()) {
     return m.fail(base, "expected global or import name");
   }
 
   return m.addFFI(varName, field);
 }
 
-static bool CheckModuleGlobal(ModuleValidatorShared& m, ParseNode* var,
+static bool CheckModuleGlobal(ModuleValidatorShared& m, ParseNode* decl,
                               bool isConst) {
+  if (!decl->isKind(ParseNodeKind::AssignExpr)) {
+    return m.fail(decl, "module import needs initializer");
+  }
+  AssignmentNode* assignNode = &decl->as<AssignmentNode>();
+
+  ParseNode* var = assignNode->left();
+
   if (!var->isKind(ParseNodeKind::Name)) {
     return m.fail(var, "import variable is not a plain name");
   }
 
   PropertyName* varName = var->as<NameNode>().name();
   if (!CheckModuleLevelName(m, var, varName)) {
     return false;
   }
 
-  ParseNode* initNode = MaybeInitializer(var);
-  if (!initNode) {
-    return m.fail(var, "module import needs initializer");
-  }
+  ParseNode* initNode = assignNode->right();
 
   if (IsNumericLiteral(m, initNode)) {
     return CheckGlobalVariableInitConstant(m, varName, initNode, isConst);
   }
 
   if (initNode->isKind(ParseNodeKind::BitOrExpr) ||
       initNode->isKind(ParseNodeKind::PosExpr) ||
       initNode->isKind(ParseNodeKind::CallExpr)) {
@@ -3249,34 +3249,38 @@ static bool CheckFinalReturn(FunctionVal
       !IsVoid(f.returnedType())) {
     return f.fail(lastNonEmptyStmt,
                   "void incompatible with previous return type");
   }
 
   return true;
 }
 
-static bool CheckVariable(FunctionValidatorShared& f, ParseNode* var,
+static bool CheckVariable(FunctionValidatorShared& f, ParseNode* decl,
                           ValTypeVector* types, Vector<NumLit>* inits) {
+  if (!decl->isKind(ParseNodeKind::AssignExpr)) {
+    return f.failName(
+        decl, "var '%s' needs explicit type declaration via an initial value",
+        decl->as<NameNode>().name());
+  }
+  AssignmentNode* assignNode = &decl->as<AssignmentNode>();
+
+  ParseNode* var = assignNode->left();
+
   if (!var->isKind(ParseNodeKind::Name)) {
     return f.fail(var, "local variable is not a plain name");
   }
 
   PropertyName* name = var->as<NameNode>().name();
 
   if (!CheckIdentifier(f.m(), var, name)) {
     return false;
   }
 
-  ParseNode* initNode = MaybeInitializer(var);
-  if (!initNode) {
-    return f.failName(
-        var, "var '%s' needs explicit type declaration via an initial value",
-        name);
-  }
+  ParseNode* initNode = assignNode->right();
 
   NumLit lit;
   if (!IsLiteralOrConst(f, initNode, &lit)) {
     return f.failName(
         var, "var '%s' initializer must be literal or const literal", name);
   }
 
   if (!lit.valid()) {
@@ -6149,23 +6153,31 @@ static bool CheckFunctions(ModuleValidat
       return false;
     }
   }
 
   return CheckAllFunctionsDefined(m);
 }
 
 template <typename Unit>
-static bool CheckFuncPtrTable(ModuleValidator<Unit>& m, ParseNode* var) {
+static bool CheckFuncPtrTable(ModuleValidator<Unit>& m, ParseNode* decl) {
+  if (!decl->isKind(ParseNodeKind::AssignExpr)) {
+    return m.fail(decl, "function-pointer table must have initializer");
+  }
+  AssignmentNode* assignNode = &decl->as<AssignmentNode>();
+
+  ParseNode* var = assignNode->left();
+
   if (!var->isKind(ParseNodeKind::Name)) {
     return m.fail(var, "function-pointer table name is not a plain name");
   }
 
-  ParseNode* arrayLiteral = MaybeInitializer(var);
-  if (!arrayLiteral || !arrayLiteral->isKind(ParseNodeKind::ArrayExpr)) {
+  ParseNode* arrayLiteral = assignNode->right();
+
+  if (!arrayLiteral->isKind(ParseNodeKind::ArrayExpr)) {
     return m.fail(
         var, "function-pointer table's initializer must be an array literal");
   }
 
   unsigned length = ListLength(arrayLiteral);
 
   if (!IsPowerOfTwo(length)) {
     return m.failf(arrayLiteral,
--- a/js/xpconnect/src/XPCShellImpl.cpp
+++ b/js/xpconnect/src/XPCShellImpl.cpp
@@ -9,16 +9,17 @@
 #include "jsfriendapi.h"
 #include "js/CharacterEncoding.h"
 #include "js/CompilationAndEvaluation.h"
 #include "js/ContextOptions.h"
 #include "js/Printf.h"
 #include "js/PropertySpec.h"
 #include "mozilla/ChaosMode.h"
 #include "mozilla/dom/ScriptSettings.h"
+#include "mozilla/IOInterposer.h"
 #include "mozilla/Preferences.h"
 #include "nsServiceManagerUtils.h"
 #include "nsComponentManagerUtils.h"
 #include "nsExceptionHandler.h"
 #include "nsIServiceManager.h"
 #include "nsIFile.h"
 #include "nsString.h"
 #include "nsIDirectoryService.h"
@@ -1070,16 +1071,20 @@ int XRE_XPCShellMain(int argc, char** ar
   gErrFile = stderr;
   gOutFile = stdout;
   gInFile = stdin;
 
   NS_LogInit();
 
   mozilla::LogModule::Init(argc, argv);
 
+  // This guard ensures that all threads that attempt to register themselves
+  // with the IOInterposer will be properly tracked.
+  mozilla::IOInterposerInit ioInterposerGuard;
+
 #ifdef MOZ_GECKO_PROFILER
   char aLocal;
   profiler_init(&aLocal);
 #endif
 
 #ifdef MOZ_ASAN_REPORTER
   PR_SetEnv("MOZ_DISABLE_ASAN_REPORTER=1");
 #endif
--- a/memory/replace/dmd/DMD.cpp
+++ b/memory/replace/dmd/DMD.cpp
@@ -178,17 +178,17 @@ class InfallibleAllocPolicy {
 
   template <class T>
   static T* new_() {
     void* mem = malloc_(sizeof(T));
     return new (mem) T;
   }
 
   template <class T, typename P1>
-  static T* new_(P1 aP1) {
+  static T* new_(const P1& aP1) {
     void* mem = malloc_(sizeof(T));
     return new (mem) T(aP1);
   }
 
   template <class T>
   static void delete_(T* aPtr) {
     if (aPtr) {
       aPtr->~T();
--- a/mobile/android/chrome/geckoview/GeckoViewContentChild.js
+++ b/mobile/android/chrome/geckoview/GeckoViewContentChild.js
@@ -89,19 +89,18 @@ class GeckoViewContentChild extends Geck
     removeEventListener("MozDOMFullscreen:Exit", this);
     removeEventListener("MozDOMFullscreen:Exited", this);
     removeEventListener("MozDOMFullscreen:Request", this);
     removeEventListener("contextmenu", this, { capture: true });
   }
 
   collectSessionState() {
     let history = SessionHistory.collect(docShell);
-    let [formdata, scrolldata] = this.Utils.mapFrameTree(
-        content, SessionStoreUtils.collectFormData,
-        SessionStoreUtils.collectScrollPosition);
+    let formdata = SessionStoreUtils.collectFormData(content);
+    let scrolldata = SessionStoreUtils.collectScrollPosition(content);
 
     // Save the current document resolution.
     let zoom = 1;
     let domWindowUtils = content.windowUtils;
     zoom = domWindowUtils.getResolution();
     scrolldata = scrolldata || {};
     scrolldata.zoom = {};
     scrolldata.zoom.resolution = zoom;
--- a/mobile/android/components/SessionStore.js
+++ b/mobile/android/components/SessionStore.js
@@ -872,17 +872,17 @@ SessionStore.prototype = {
     let data = aBrowser.__SS_data;
     if (!data || data.entries.length == 0) {
       sendEvent(aBrowser, "SSTabInputCaptured");
       return;
     }
 
     // Store the form data.
     let content = aBrowser.contentWindow;
-    let [formdata] = Utils.mapFrameTree(content, SessionStoreUtils.collectFormData);
+    let formdata = SessionStoreUtils.collectFormData(content);
     formdata = PrivacyFilter.filterFormData(formdata || {});
 
     // If we found any form data, main content or frames, let's save it
     if (formdata && Object.keys(formdata).length) {
       data.formdata = formdata;
       log("onTabInput() ran for tab " + aWindow.BrowserApp.getTabForBrowser(aBrowser).id);
       this.saveStateDelayed();
     }
@@ -911,18 +911,17 @@ SessionStore.prototype = {
 
     // Neither bother if we're yet to restore the previous scroll position.
     if (aBrowser.__SS_restoreDataOnLoad || aBrowser.__SS_restoreDataOnPageshow) {
       return;
     }
 
     // Save the scroll position itself.
     let content = aBrowser.contentWindow;
-    let [scrolldata] =
-        Utils.mapFrameTree(content, SessionStoreUtils.collectScrollPosition);
+    let scrolldata = SessionStoreUtils.collectScrollPosition(content);
     scrolldata = scrolldata || {};
 
     // Save the current document resolution.
     let zoom = 1;
     zoom = content.windowUtils.getResolution();
     scrolldata.zoom = {};
     scrolldata.zoom.resolution = zoom;
     log("onTabScroll() zoom level: " + zoom);
--- a/security/manager/ssl/StaticHPKPins.h
+++ b/security/manager/ssl/StaticHPKPins.h
@@ -1166,9 +1166,9 @@ static const TransportSecurityPreload kP
   { "za.search.yahoo.com", false, true, false, -1, &kPinset_yahoo },
   { "zh.search.yahoo.com", false, true, false, -1, &kPinset_yahoo },
 };
 
 // Pinning Preload List Length = 488;
 
 static const int32_t kUnknownId = -1;
 
-static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1559564490988000);
+static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1559823648419000);
--- a/security/manager/ssl/nsSTSPreloadList.inc
+++ b/security/manager/ssl/nsSTSPreloadList.inc
@@ -3,17 +3,17 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /*****************************************************************************/
 /* This is an automatically generated file. If you're not                    */
 /* nsSiteSecurityService.cpp, you shouldn't be #including it.                */
 /*****************************************************************************/
 
 #include <stdint.h>
-const PRTime gPreloadListExpirationTime = INT64_C(1561983685194000);
+const PRTime gPreloadListExpirationTime = INT64_C(1562242843560000);
 %%
 0-1.party, 1
 000books.net, 1
 00100010.net, 1
 0010100.net, 1
 00120012.net, 1
 00130013.net, 1
 00140014.net, 1
@@ -65,17 +65,20 @@ 02327.net, 1
 02375.net, 1
 023sec.com, 1
 02607.com, 1
 026122.com, 1
 02638.net, 1
 029inno.com, 1
 02smh.com, 1
 03-09-2016.wedding, 1
+03012.net, 1
+03018.net, 1
 03170317.com, 1
+035711630.xyz, 1
 0391315.com, 1
 046569.com, 1
 04911701.cn, 1
 04sun.com, 1
 050.ca, 1
 050869.com, 1
 050media.nl, 1
 0511315.net, 1
@@ -126,16 +129,17 @@ 068957.com, 1
 069657.com, 1
 069676.com, 1
 06se.com, 1
 070709.net, 1
 0708p.com, 1
 070968.com, 1
 070986.com, 1
 0720p.com, 1
+0736ks.com, 1
 077768.net, 1
 0788yh.com, 1
 0792112.com, 1
 079606.com, 1
 079607.com, 1
 0798rcw.com, 1
 0809yh.com, 1
 081115.com, 1
@@ -173,18 +177,20 @@ 085950.com, 1
 086807.com, 1
 086907.com, 1
 087010.com, 1
 087059.com, 1
 087065.com, 1
 087540.com, 1
 087569.com, 1
 087580.com, 1
+08845.cc, 1
 08detaxe.fr, 1
 09115.com, 1
+095598.cc, 1
 09892.net, 1
 098955.com, 1
 0akarma.me, 1
 0au.de, 1
 0c3.de, 1
 0cdn.ga, 1
 0day.agency, 1
 0day.su, 1
@@ -325,16 +331,18 @@ 12train.com, 1
 12vpn.net, 1
 130.ua, 1
 130032.com, 1
 130212.com, 1
 130232.com, 1
 130497.xyz, 1
 131934.com, 1
 131954.com, 1
+13214.cc, 1
+132301.com, 1
 132302.com, 1
 132kv.ch, 1
 13318522.com, 1
 133294.com, 1
 133492.com, 1
 133846.xyz, 1
 1359826938.rsc.cdn77.org, 1
 135vv.com, 1
@@ -401,24 +409,24 @@ 168bet9.com, 1
 168bo9.com, 1
 168bo9.net, 1
 168esb.com, 1
 174.net.nz, 1
 174343.com, 1
 1750studios.com, 0
 1768calc.com.au, 1
 177603.com, 1
+17kpw.cc, 1
 17xile.com, 1
 1811559.com, 1
 182162.com, 1
 1844329061.rsc.cdn77.org, 1
 1876996.com, 1
 188198.net, 1
 1888zr.com, 1
-1889p.com, 1
 188da.com, 1
 188dv.com, 1
 1895media.com, 1
 189dv.com, 1
 189fc.com, 1
 18f.gov, 1
 18f.gsa.gov, 0
 191090.com, 1
@@ -469,17 +477,16 @@ 1of16.de, 1
 1on1on1.de, 1
 1on1on1.tv, 1
 1p.ro, 0
 1panorama.ru, 1
 1para.net, 1
 1password.ca, 1
 1password.com, 1
 1password.eu, 1
-1plus-agency.com, 1
 1pw.ca, 1
 1px.tv, 1
 1q2w.nl, 1
 1q365a.com, 1
 1r.is, 1
 1rs.nl, 1
 1salland.nl, 1
 1scope.com, 1
@@ -574,16 +581,18 @@ 2600edinburgh.org, 1
 2600hq.com, 1
 260887.com, 1
 263.info, 1
 2718282.net, 1
 27728522.com, 1
 28-industries.com, 1
 281180.de, 1
 2858958.com, 1
+286.com, 1
+288game.net, 1
 28peaks.com, 1
 28spots.net, 1
 291167.xyz, 1
 2912.nl, 1
 29227.com, 1
 2948.ca, 1
 297computers.com, 1
 2991236.com, 1
@@ -606,17 +615,16 @@ 2chan.jp, 1
 2cv-fahrer.de, 1
 2fm.ie, 1
 2fm.radio, 1
 2fraud.pro, 1
 2g1s.net, 1
 2gen.com, 1
 2h-nagoya.org, 1
 2heartsbookings.co.uk, 1
-2hypeenterprises.com, 1
 2kgwf.fi, 1
 2krueger.de, 1
 2li.ch, 1
 2manydots.nl, 1
 2mb.solutions, 1
 2melo.fr, 1
 2mir.com, 1
 2nains.ch, 1
@@ -631,16 +639,17 @@ 2tuu.com, 1
 2ulcceria.nl, 1
 2wheel.com, 1
 2y.fi, 1
 3-dot-careapp1-146314.appspot.com, 1
 300m.com, 0
 301.technology, 1
 302422.com, 1
 303112.com, 1
+303312.com, 1
 303422.com, 1
 304122.com, 1
 304322.com, 1
 304622.com, 1
 3056999.com, 1
 309422.com, 1
 30hzcollective.com, 1
 310422.com, 1
@@ -678,16 +687,17 @@ 33445.com, 1
 33445111.com, 1
 33445222.com, 1
 33445333.com, 1
 33445444.com, 1
 3351p.com, 1
 336yh.com, 1
 338393.com, 1
 338da.com, 1
+338sa.com, 1
 33jiasu.com, 1
 340422.com, 1
 340622.com, 1
 340922.com, 1
 341422.com, 1
 341433.com, 1
 341533.com, 1
 341633.com, 1
@@ -737,27 +747,30 @@ 360-staffing.com, 1
 360live.fr, 1
 360rail.nl, 1
 360vrs.com, 1
 360woodworking.com, 1
 365365.com, 1
 365beautyworld.com, 1
 365daysreview.com, 1
 365healthworld.com, 1
-365propertybuyer.co.uk, 1
+365propertybuyer.co.uk, 0
 365skulls.com, 1
 370422.com, 1
 371422.com, 1
 371cloud.com, 1
 373422.com, 1
 374933.com, 1
 375422.com, 1
 376208.com, 1
 376557.com, 1
+377625.com, 1
+377632.com, 1
 377813.com, 1
+378553.com, 1
 379700.com, 1
 380422.com, 1
 3839.ca, 1
 3880p.com, 1
 38888msc.com, 1
 388da.com, 1
 38sihu.com, 0
 390422.com, 1
@@ -868,16 +881,17 @@ 441jz.com, 0
 442887.com, 1
 442jz.com, 0
 443887.com, 1
 443jz.com, 0
 444887.com, 1
 445887.com, 1
 44sec.com, 1
 451.ooo, 1
+4553.com, 1
 4553vip.com, 1
 46fa.com, 1
 4706666.com, 1
 4716666.com, 1
 4726666.com, 1
 4736666.com, 1
 4756666.com, 1
 4786666.com, 1
@@ -893,20 +907,22 @@ 4baby.com.br, 1
 4c-haircare.com, 1
 4d2.xyz, 1
 4dbygg.se, 1
 4eyes.ch, 1
 4fit.ro, 1
 4flex.info, 1
 4freepress.com, 1
 4g-server.eu, 0
+4garage.com.br, 1
 4hmediaproductions.com, 1
 4host.ch, 1
 4kprojektory.cz, 1
 4loc.us, 1
+4lock.com.br, 1
 4mm.org, 1
 4o5.xyz, 1
 4plebs.moe, 1
 4project.co.il, 1
 4share.tv, 1
 4sics.se, 1
 4th-ave-studio.com, 1
 4thdc.com, 1
@@ -942,16 +958,17 @@ 50north.de, 1
 50plusnet.nl, 1
 514122.com, 1
 514522.com, 1
 514622.com, 1
 514922.com, 1
 515422.com, 1
 516422.com, 1
 517vpn.cn, 1
+518.com.tw, 1
 51877.net, 1
 519422.com, 1
 51acg.eu.org, 1
 51aifuli.com, 1
 51guaq.com, 1
 51tiaojiu.com, 1
 5214889.com, 1
 5214889.net, 1
@@ -1126,18 +1143,16 @@ 6547733.com, 1
 6547744.com, 1
 6547755.com, 1
 6547766.com, 1
 6548855.com, 1
 6548877.com, 1
 656088.com, 1
 659422.com, 1
 65d88.com, 1
-6602p.com, 1
-6603p.com, 1
 66136.com, 1
 6616fc.com, 1
 662607.xyz, 1
 6633445.com, 1
 6652566.com, 1
 6660111.ru, 1
 666668722.com, 1
 666omg.com, 1
@@ -1165,19 +1180,21 @@ 694622.com, 1
 694922.com, 1
 6969.us, 1
 69759.com, 1
 698da.com, 1
 69928.com, 1
 6997896.com, 1
 69butterfly.com, 1
 69fps.gg, 1
+69games.xxx, 1
 69mentor.com, 1
 69wasted.net, 1
 6bwcp.com, 1
+6dec.gc.ca, 1
 6hzx.com, 1
 6ird.com, 1
 6lo.zgora.pl, 1
 6t-montjoye.org, 1
 700.az, 1
 701605.com, 1
 704233.com, 1
 7045.com, 1
@@ -1206,51 +1223,52 @@ 72ty.com, 1
 72ty.net, 1
 730433.com, 1
 731433.com, 1
 732433.com, 1
 735433.com, 1
 736433.com, 1
 738433.com, 1
 739433.com, 1
-73info.com, 1
 740833.com, 1
 741833.com, 1
 742833.com, 1
 743833.com, 1
 74th.jp, 1
 755k3.com, 1
+756337.com, 1
 762.ch, 1
 7717a.com, 1
 7733445.com, 1
 7770b.com, 1
 7770t.com, 1
 777coin.com, 1
 783lab.com, 1
+787637.com, 1
 787k3.com, 1
 7885765.com, 1
 7891553.com, 1
 7891997.com, 1
 7898666.com, 1
 797715.com, 1
 79ch.com, 1
 7careconnect.com, 1
 7delights.com, 1
 7delights.in, 1
+7ferfer.com.br, 1
 7geese.com, 1
 7graus.pt, 1
 7kicks.com, 1
 7kovrikov.ru, 1
 7milesglobal.com, 1
 7nw.eu, 1
 7plus.com.au, 1
 7proxies.com, 1
 7qly.com, 1
 7sons.de, 1
-7thcircledesigns.com, 1
 7trade8.com, 1
 7x24servis.com, 1
 8003pay.com, 1
 804322.com, 1
 8080883.com, 1
 8080889.com, 1
 80883.cc, 1
 80887.cc, 1
@@ -1280,17 +1298,16 @@ 8522.com, 1
 8522club.com, 1
 8522hk.com, 1
 8522ph.com, 1
 8522top.com, 1
 8522tw.com, 1
 8522usa.com, 1
 85383838.com, 1
 8560.be, 1
-86286286.com, 1
 86499.com, 1
 8649955.com, 1
 8649966.com, 1
 8649977.com, 1
 8688fc.com, 1
 86metro.ru, 1
 8722.am, 1
 8722am.com, 1
@@ -1449,16 +1466,17 @@ 8ung.online, 1
 8xx.bet, 1
 8xx.io, 1
 8xx888.com, 1
 8xxbet.net, 1
 8xxxxxxx.com, 1
 8y.network, 1
 8yun.cf, 1
 9-11commission.gov, 1
+901543.com, 1
 903422.com, 1
 905422.com, 1
 908.la, 1
 9090819.com, 1
 90r.jp, 1
 91-freedom.com, 1
 910kj.com, 1
 9118.com, 1
@@ -1506,31 +1524,36 @@ 9788876.com, 1
 9822.am, 1
 9822.bz, 1
 9822am.com, 1
 9822cn.com, 1
 9822hk.com, 1
 9822ph.com, 1
 9822tw.com, 1
 9822usa.com, 1
+984.ch, 1
 9867666.com, 1
 98laba.com, 0
 98laba.net, 0
 9918883.com, 1
 9933445.com, 1
 9950p.com, 1
 99599.fi, 1
 99599.net, 1
 998081.com, 1
+998sa.com, 1
 9998722.com, 1
 99998522.com, 1
 99999822.com, 1
 999998722.com, 1
+999salon.co, 1
+999salon.com, 1
 99buffets.com, 1
 99rst.org, 1
+99spokes.com, 1
 99wxt.com, 1
 9bingo.net, 1
 9box.jp, 1
 9farm.com, 1
 9fvip.net, 1
 9hosts.net, 1
 9iwan.net, 1
 9jajuice.com, 1
@@ -1572,16 +1595,17 @@ a4sound.com, 1
 a632079.me, 1
 a7la-chat.com, 1
 a7m2.me, 1
 a8q.org, 1
 aa-tour.ru, 1
 aa43d.cn, 1
 aa6688.net, 1
 aaapl.com, 1
+aabanet.com.br, 1
 aaben-bank.dk, 1
 aabenbank.dk, 1
 aacfree.com, 1
 aacs-design.com, 1
 aadw.de, 1
 aaex.cloud, 1
 aagetransport.no, 1
 aalalbayt.com, 1
@@ -1608,16 +1632,19 @@ aaronkimmig.de, 1
 aaronroyle.com, 1
 aaronsilber.me, 1
 aarvinproperties.com, 1
 aatf.us, 1
 aati.be, 1
 aati.info, 1
 aavienna.com, 1
 ab-photography.nl, 1
+ab288.com, 1
+ab2888.cn, 1
+ab28s.com, 1
 abaapplianceservice.com, 1
 abaaustin.com, 1
 ababyco.com.hr, 1
 abacusbouncycastle.co.uk, 1
 abacustech.co.jp, 1
 abandonedmines.gov, 1
 abasalehngo.com, 1
 abasky.net, 1
@@ -1721,16 +1748,17 @@ aboutyou.at, 1
 aboutyou.be, 1
 aboutyou.ch, 1
 aboutyou.de, 1
 aboutyou.nl, 1
 aboveaverageplumbing.com, 1
 abox-kb.com, 1
 abpis.hr, 1
 abracadabra.co.jp, 0
+abrakidabra.com.br, 1
 abraxan.pro, 1
 abrilect.com, 1
 abristolgeek.co.uk, 1
 abseits.org, 1
 absolem.cc, 0
 absolutcruceros.com, 1
 absoluteautobody.com, 1
 absolutedouble.co.uk, 1
@@ -1764,16 +1792,17 @@ ac0g.dyndns.org, 1
 aca-creative.co.uk, 1
 academiadebomberosonline.com, 1
 academicexperts.us, 1
 academichealthscience.net, 1
 academie-de-police.ch, 1
 academkin.com, 1
 academytv.com.au, 1
 acaeum.com, 1
+acampar.com.br, 1
 acaonegocios.com.br, 1
 acaptureservices.com, 1
 acara-yoga.de, 1
 acareer.in, 1
 acat.io, 1
 acbrussels-used.be, 1
 accbay.com, 1
 accelaway.com, 1
@@ -1822,16 +1851,17 @@ acedog.co, 1
 acefreightco.com, 1
 aceinflatables.com, 1
 aceinstituteonline.com, 1
 acelpb.com, 1
 acem.org.au, 1
 acemobileforce.com, 1
 acemypaper.com, 1
 acen.eu, 1
+acendealuz.com.br, 1
 acerentalandsales.com, 1
 acerislaw.com, 1
 acessoeducacao.com, 1
 acfun.eu.org, 1
 acg.mn, 1
 acg.sb, 0
 acg.social, 1
 acg1080.com, 1
@@ -1862,17 +1892,16 @@ acinq.co, 1
 ackermann.ch, 1
 ackis.duckdns.org, 0
 acklandstainless.com.au, 1
 acl.gov, 1
 acl.ink, 1
 aclu.org, 0
 acluva.org, 0
 acme.beer, 1
-acmexyz123.info, 1
 acnpacific.com, 1
 acodess.com, 1
 aconnor.xyz, 1
 acordes.online, 1
 acorncastles.co.uk, 1
 acorncredentialing.com, 1
 acorntreecare.com, 1
 acoshift.com, 1
@@ -2139,16 +2168,17 @@ advanced-fleet-services.com, 1
 advanced-online.eu, 1
 advanced-scribes.com, 1
 advanced.info, 1
 advanceddieselspokane.com, 1
 advanceddisposables.co.uk, 1
 advancedoneroofing.com, 1
 advancedprotectionkey.com, 1
 advancedprotectionsecuritykey.com, 1
+advancedseotool.it, 1
 advancedsurgicalconsultantsllc.com, 1
 advancedweb.hu, 1
 advancedwriters.com, 1
 advanceworx.com, 1
 advancis.net, 1
 advancyte.com, 1
 advantagehomeexteriors.com, 1
 advara.com, 1
@@ -2162,20 +2192,22 @@ adventureally.com, 1
 adventurecreators.com, 1
 adventuredrives.com, 1
 adventureforest.co.nz, 1
 adventureforest.de, 0
 adventureforest.nz, 1
 adventuregamers.com, 1
 adventurenow.nl, 1
 adventures.de, 1
+adventures.is, 0
 adventureswithlillie.ca, 1
 adventurousway.com, 1
 advertis.biz, 1
 advertisemant.com, 1
+adviserplus.com, 1
 advocate-europe.eu, 1
 advocaten-avocats.be, 1
 advocatenalkmaar.org, 1
 advocator.ca, 1
 advocoeurdehaan.nl, 1
 advogatech.com.br, 1
 advokat-romanov.com, 1
 advtran.com, 1
@@ -2235,16 +2267,17 @@ aerobotz.com, 1
 aeronautix.com, 1
 aeronote.net, 1
 aeropole.de, 1
 aeropole.eu, 1
 aerosimexperience.com, 1
 aerospace-schools.com, 1
 aerotechcoatings.com, 1
 aertel.ie, 1
+aessencia.com.br, 1
 aestheticdr.org, 1
 aesthetx.com, 1
 aestore.by, 1
 aesym.de, 1
 aeternus.tech, 1
 aetherc0r3.eu, 1
 aethonan.pro, 1
 aetoscg.com, 1
@@ -2575,32 +2608,34 @@ airbnb.ru, 1
 airbnb.se, 1
 airbnb.tools, 1
 airbnbchina.cn, 1
 airbnbopen.com, 1
 airborne-inflatables.co.uk, 1
 airbossofamerica.com, 1
 airclass.com, 1
 aircomms.com, 1
+airconsalberton.co.za, 1
 airductclean.com, 0
 airductcleaning-fresno.com, 1
 airductcleaninggrandprairie.com, 1
 airductcleaningirving.com, 1
 airdur.eu, 1
 aireaseleaks.org, 1
 airedaleterrier.com.br, 1
 airetvie.com, 1
 airfax.io, 1
 airhart.me, 1
 airhelp.com, 1
 airhorn.de, 1
 airi-tabei.com, 1
 airicy.com, 1
 airikai.com, 1
 airlibre-parachutisme.com, 1
+airlinesettlement.com, 1
 airmail.cc, 1
 airmaxinflatables.com, 1
 airnow.gov, 1
 airpbx.com, 1
 airplay-inflatable-hire.co.uk, 1
 airplayradio.nl, 1
 airport-charlotte.com, 1
 airpurifierproductsonline.com, 1
@@ -2740,17 +2775,16 @@ alarna.de, 1
 alasdelalma.com.co, 1
 alaskafishinglodges.net, 1
 alaskajewelry.com, 1
 alasta.info, 1
 alastairs-place.net, 1
 alauda-home.de, 1
 alaundeil.xyz, 1
 alaxyjewellers.co.za, 1
-alb-flirt.de, 1
 albanboye.info, 1
 albanesi.it, 1
 albbounce.co.uk, 1
 albersdruck.de, 1
 albertathome.org, 1
 albertbogdanowicz.pl, 1
 albertcuyp-markt.amsterdam, 1
 albertify.xyz, 1
@@ -2766,16 +2800,17 @@ alcatelonetouch.us, 1
 alchimic.ch, 1
 alcnutrition.com, 1
 alco-united.com, 1
 alcoholapi.com, 1
 alcolecapital.com, 1
 alcorao.org, 1
 alcouponest.com, 1
 aldiabcs.com, 1
+aldien.com.br, 1
 aldo-vandini.de, 1
 aldomedia.com, 1
 aldorr.net, 0
 aldous-huxley.com, 1
 aleax.me, 1
 alecel.de, 1
 alecpap.com, 1
 alecpapierniak.com, 1
@@ -2786,17 +2821,17 @@ aleksib.fi, 1
 alela.fr, 1
 aleph.land, 1
 alerbon.net, 1
 alertboxx.com, 1
 alertonline.nl, 1
 alerts.sg, 1
 alertwire.com, 1
 alesia-formation.fr, 1
-alessandroz.ddns.net, 1
+alessandroonline.com.br, 1
 aletm.it, 1
 alex-ross.co.uk, 1
 alex4386.us, 1
 alex97000.de, 1
 alexander-beck.eu, 1
 alexanderb.info, 1
 alexandermuetzel.de, 1
 alexanderneng.de, 1
@@ -2840,17 +2875,16 @@ alexmroberts.net, 1
 alexn.org, 1
 alexpavel.com, 1
 alexpnixon.com, 1
 alexpotter.net, 1
 alexs.de, 1
 alexschroeder.ch, 1
 alexsergeyev.com, 1
 alexsexton.com, 1
-alexsinnott.me, 1
 alextaffe.com, 1
 alexthayne.co.uk, 1
 alextjam.es, 1
 alextsang.net, 1
 alexvdveen.nl, 1
 alexvetter.de, 1
 alexwardweb.com, 1
 alexwilliams.tech, 0
@@ -2885,16 +2919,18 @@ alicemaywebdesign.com.au, 1
 alicestudio.it, 1
 alicetone.net, 1
 alicialab.org, 1
 alieke.design, 1
 alienation.biz, 1
 alienflight.com, 1
 alienslab.net, 1
 alienstat.com, 1
+alienvision.com.br, 1
+alighierirescaldina.it, 1
 alignrs.com, 1
 aliim.gdn, 1
 alijammusic.com, 1
 alikulov.me, 1
 alilialili.ga, 1
 alinasmusicstudio.com, 1
 alinbu.net, 1
 alinode.com, 1
@@ -2911,40 +2947,45 @@ aljaspod.com, 1
 aljaspod.hu, 1
 aljaspod.net, 1
 aljweb.com, 1
 alkacoin.net, 1
 all-connect.net, 0
 all-fashion-schools.com, 1
 all-markup-news.com, 1
 all4hardware4u.de, 1
+all878.com, 1
 allaboutfunuk.com, 1
 allaboutswing.co.uk, 1
 allaboutswing.com, 1
 allaboutthekink.org, 1
 allactioneventhire.co.uk, 1
 allamericanmuslim.com, 1
 allamericanpaintingplus.com, 1
 allamericanprotection.net, 1
 allamericatrans.com, 1
 allangirvan.net, 1
 allarmi.roma.it, 1
 allbenjoy.de, 1
+allbetgame.cn, 1
+allbetgaming.com, 1
 allbounceandplay.co.uk, 1
 allbouncesurrey.co.uk, 1
 allbrandbrand.com, 1
 allbursaries.co.za, 1
 allbusiness.com, 1
 allcapa.org, 1
 allcarecorrectionalpharmacy.com, 1
 allcarepharmacy.com, 1
+allcinema.jp, 1
 allcleanservices.ca, 1
 allcloud.com, 1
 allcovered.nl, 1
 alldewall.de, 1
+alldigitalsolutions.com, 1
 alldm.ru, 1
 alle.bg, 1
 allemobieleproviders.nl, 1
 allemoz.com, 1
 allemoz.fr, 1
 allenosgood.com, 1
 allenscaravans.co.uk, 1
 allensun.org, 1
@@ -3093,16 +3134,18 @@ altahrim.net, 1
 altair.fi, 1
 altapina.com, 0
 altaplana.be, 1
 altbinaries.com, 1
 altedirect.com, 1
 alter-news.fr, 1
 alterbaum.net, 1
 altered.network, 1
+altered.si, 1
+alternador.com.br, 1
 alternative.bike, 1
 alternative.hosting, 1
 alternativebit.fr, 1
 alternativedev.ca, 1
 alternativehosting.ca, 1
 alternativehosting.com, 1
 alternativeinternet.ca, 1
 alternativet.party, 1
@@ -3136,16 +3179,18 @@ alvcs.com, 1
 alviano.com, 1
 alvicom.hu, 1
 alvn.ga, 1
 alvosec.com, 1
 alwaysdry.com.au, 1
 alwayslookingyourbest.com, 1
 alwaysmine.fi, 1
 alwaysonssl.com, 1
+alxlegal.com, 1
+alxpresentes.com.br, 1
 alxu.ca, 1
 alyoung.com, 1
 alza.at, 1
 alza.co.uk, 1
 alza.cz, 1
 alza.de, 1
 alza.hu, 1
 alza.sk, 1
@@ -3157,16 +3202,17 @@ am2s.fr, 1
 am3.se, 1
 ama.ne.jp, 1
 amadoraslindas.com, 1
 amadvice.com, 1
 amaforro.com, 1
 amagdic.com, 1
 amagical.net, 0
 amaiz.com, 1
+amal2019.com, 1
 amalficoastchauffeur.com, 1
 amalfilapiazzetta.it, 1
 amalfipositanoboatrental.com, 1
 amalfirock.it, 1
 amalfitabula.it, 1
 amaliagamis.com, 1
 amanatrustbooks.org.uk, 1
 amandadamsphotography.com, 1
@@ -3341,16 +3387,17 @@ analyticum.net, 1
 analyzemyfriends.com, 1
 ananas.gq, 1
 ananke.io, 1
 anankecosmetics.com, 1
 anantshri.info, 1
 ananyoo.com, 1
 anarajaoui.ma, 1
 anarchistischegroepnijmegen.nl, 0
+anarchistos.tk, 1
 anarchyrp.life, 1
 anarka.org, 1
 anassiriphotography.com, 0
 anastasia-shamara.ru, 1
 anatoray.com, 1
 ance.lv, 1
 ancel.io, 1
 ancestramil.fr, 1
@@ -3695,17 +3742,17 @@ antonchen.com, 1
 antonellabb.eu, 1
 antonin.one, 1
 antonio-gartenbau.de, 1
 antonjuulnaber.dk, 1
 antonok.com, 1
 antota.lt, 1
 antragsgruen.de, 1
 antraxx.ee, 1
-antroposboutique.it, 1
+antroposofica.com.br, 1
 anttitenhunen.com, 1
 antvklik.com, 1
 antyblokada.pl, 1
 anulowano.pl, 1
 anvartay.com, 0
 anwalt.us, 1
 anwaltsindex.com, 1
 anxietyspace.com, 1
@@ -3892,17 +3939,19 @@ appt.ch, 1
 apptomics.com, 1
 apptoutou.com, 1
 appuals.com, 1
 appui-de-fenetre.fr, 1
 appveyor.com, 1
 appzoojoo.be, 1
 apratimsaha.com, 1
 aprefix.com, 1
+aprendiendoforexhoy.com, 1
 apretatuercas.es, 1
+aprogend.com.br, 1
 aproposcomputing.com, 1
 aprovpn.com, 1
 aprr.org, 1
 aprsdroid.org, 1
 aprz.de, 1
 apsa.paris, 1
 apstudynotes.org, 1
 aptitudetests.org, 1
@@ -3942,20 +3991,22 @@ arab.dating, 1
 arabhardware.net, 1
 arabicxz.com, 1
 arabsexi.info, 1
 arachina.com, 1
 arackiralama.name.tr, 1
 arados.de, 1
 arai21.net, 1
 araleeniken.com, 1
+aramado.com, 1
 aramido.de, 1
 aranchhomes.com, 1
 aranel.me, 1
 aranycsillag.net, 1
+araraexpress.com.br, 1
 araratour.com, 1
 araro.ch, 1
 araseifudousan.com, 1
 arawaza.com, 0
 arawaza.info, 1
 araxis.com, 1
 arbeitsch.eu, 1
 arbeitskreis-asyl-eningen.de, 1
@@ -4070,16 +4121,17 @@ arletalibrary.com, 1
 arlingtonelectric.com, 1
 arlingtonwine.net, 1
 arm.gov, 1
 armadaquadrat.com, 1
 armandsdiscount.com, 1
 armanozak.com, 1
 armansfinejewellery.com, 1
 armansfinejewellery.com.au, 1
+armarinhovirtual.com.br, 1
 armazemdaminiatura.com.br, 1
 armbrust.me, 1
 armedpoet.com, 1
 armenians.online, 1
 armeo.top, 1
 armil.it, 1
 armin-cme.de, 1
 armin-cpe.de, 1
@@ -4105,16 +4157,17 @@ arno-klein.fr, 1
 arno.pm, 1
 arnoldkontz-occasions.lu, 1
 arnonerba.com, 1
 arnor.org, 1
 arnoudraeven.nl, 1
 arnoudvandalen.nl, 1
 arnsmedia.nl, 1
 arocloud.de, 1
+arod.tk, 1
 arogov.com, 1
 arogyadhamhealth.com, 1
 arokha.com, 1
 aromacos.ch, 1
 aromatlas.com, 1
 aron.host, 1
 aroonchande.com, 1
 aros.pl, 1
@@ -4138,16 +4191,17 @@ arrow-api.nl, 1
 arrowfastener.com, 1
 arrowgrove.com, 1
 arrowheadaddict.com, 1
 arrowheadflats.com, 1
 arrowit.net, 1
 arrowwebprojects.nl, 1
 arschkrebs.org, 1
 arsenal.ru, 1
+arshell.me, 1
 arsk1.com, 1
 arslankaynakmetal.com, 1
 arsplus.ru, 0
 arswb.men, 1
 art-auction.jp, 1
 art-et-culture.ch, 1
 art-pix.com, 1
 art-pix.de, 1
@@ -4160,53 +4214,58 @@ artdeco-photo.com, 1
 arte-soft.co, 1
 artea.ga, 1
 arteaga.co.uk, 1
 arteaga.eu, 1
 arteaga.me, 1
 arteaga.tech, 1
 arteaga.uk, 1
 arteaga.xyz, 1
+artebel.com.br, 1
 artecat.ch, 1
 artedellavetrina.it, 1
 artedona.com, 1
 arteequipamientos.com.uy, 1
 artefakt.es, 1
+artefeita.com.br, 1
 arteinstudio.it, 1
 artelt.com, 1
 artemis.re, 1
 arterienundvenen.ch, 1
 arteshow.ch, 1
 artetrama.com, 0
 artfabrics.com, 1
 artforum.sk, 1
 artfullyelegant.com, 1
 arthan.me, 1
 arthermitage.org, 1
 arthur.cn, 1
 arthurlaw.ca, 1
 arthurmelo.com, 0
+arthuryidi.com, 1
 articaexports.com, 1
 articu.no, 1
 artificial.army, 1
 artificialgrassandlandscaping.com, 1
 artik.cloud, 1
 artimpact.ch, 1
 artioml.net, 1
 artionet.ch, 1
 artis-game.net, 1
 artisan-cheminees-poeles-design.fr, 1
 artisanhd.com, 1
 artisans-libres.com, 1
 artisansoftaste.com, 1
 artisavotins.com, 1
 artisense.de, 1
 artistagenda.com, 1
+artistedeparis.fr, 1
 artisticedgegranite.net, 1
 artistrunwebsite.com, 1
+artiwear.com.tw, 1
 artlantis.nl, 1
 artleading.ru, 1
 artlego.com, 1
 artlifeisgood.com, 1
 artlogo.biz, 1
 artlogo.cz, 1
 artlogo.sk, 1
 artmanager.dk, 1
@@ -4288,16 +4347,17 @@ ashessin.com, 1
 ashleakunowski.com, 1
 ashleyadum.com, 1
 ashleyedisonuk.com, 1
 ashleyfoley.photography, 1
 ashleymadison.com, 1
 ashleythouret.com, 1
 ashlocklawgroup.com, 1
 ashmportfolio.com, 1
+ashtonc.ca, 1
 ashutoshmishra.org, 1
 asia-gazette.com, 1
 asia-global-risk.com, 1
 asia.dating, 1
 asiaheavens.com, 1
 asialeonding.at, 1
 asian-industry.eu, 1
 asianodor.com, 1
@@ -4328,16 +4388,17 @@ asksatya.com, 1
 askv6.net, 1
 askvg.com, 1
 askwhy.cz, 1
 askwhy.eu, 1
 aslinfinity.com, 1
 asm-x.com, 0
 asmbsurvey.com, 1
 asmdz.com, 1
+asmeets.nl, 1
 asmood.net, 1
 asoul.tw, 1
 aspargesgaarden.no, 1
 aspatrimoine.com, 1
 aspcl.ch, 1
 aspectcontext.com, 1
 aspectuw.com.au, 1
 asperti.com, 1
@@ -4390,17 +4451,16 @@ astenotarili.online, 1
 astenretail.com, 1
 asthon.cn, 1
 astral-imperium.uk, 1
 astral.org.pl, 1
 astrath.net, 1
 astrea-voetbal-groningen.nl, 1
 astroalloys.com.au, 1
 astrology42.com, 1
-astropaykasa.org, 1
 astroscopy.ch, 1
 astrosnail.pt.eu.org, 1
 astrovandalistas.cc, 1
 astural.org, 1
 astutikhonda.com, 1
 astutr.co, 1
 asuclassfinder.com, 1
 asucrews.com, 1
@@ -4415,16 +4475,18 @@ asvsa.ch, 1
 asws.nl, 1
 asylbarn.no, 1
 asystent-dzierzawy.pl, 1
 at.search.yahoo.com, 0
 at1.co, 1
 at7s.me, 1
 ataber.pw, 1
 atac.no, 1
+atacadocervejeiro.com.br, 1
+atacadodesandalias.com.br, 1
 atacadooptico.com.br, 1
 atallo.com, 1
 atallo.es, 1
 ataton.ch, 1
 atc.cuneo.it, 1
 atc.io, 1
 atchleyjazz.com, 1
 atchleyjazz.org, 1
@@ -4511,16 +4573,17 @@ atolm.net, 1
 atom-china.org, 1
 atom.solutions, 1
 atom86.net, 1
 atombase.org, 1
 atomic-bounce.com, 1
 atomic.red, 1
 atomicbounce.co.uk, 1
 atomism.com, 1
+atorcidabrasileira.com.br, 1
 atplonline.co, 1
 atpnutrition.com, 1
 atracaosexshop.com.br, 1
 atraining.ru, 1
 atraverscugy.ch, 1
 atrevillot.com, 1
 atrinik.org, 1
 atsoftware.de, 1
@@ -4529,17 +4592,16 @@ attac.us, 1
 atte.fi, 1
 attendantdesign.com, 1
 attendu.cz, 1
 attention.horse, 1
 attilagyorffy.com, 1
 attilavandervelde.nl, 1
 attinderdhillon.com, 1
 attitudes-bureaux.fr, 1
-attogtech.com, 1
 attorney.org.il, 1
 attwood.org, 1
 atviras.lt, 0
 atvirtual.at, 1
 atvsafety.gov, 1
 atwar-mod.com, 1
 atwonline.org, 1
 atxchirocoverage.com, 1
@@ -4694,16 +4756,17 @@ autod.hu, 1
 autodalmacija.com, 1
 autodidactic.ai, 1
 autodidacticstudios.com, 1
 autodidacticstudios.net, 1
 autodidacticstudios.org, 1
 autoecoledumontblanc.com, 1
 autoentrepreneurinfo.com, 1
 autoepc.ro, 1
+autoeshop.eu, 1
 autoi.ch, 1
 autoinsurancehavasu.com, 1
 autokeyreplacementsanantonio.com, 1
 autokovrik-diskont.ru, 1
 autolawetawroclaw.pl, 1
 autoledky.sk, 1
 automaan.nl, 1
 automacity.com, 1
@@ -4719,16 +4782,17 @@ autoosijek.com, 1
 autopapo.com.br, 1
 autoparts.im, 1
 autoparts.sh, 1
 autoparts.wf, 1
 autoprice.info, 0
 autoprogconsortium.ga, 1
 autoproshouston.com, 1
 autorando.com, 1
+autorepairseattle.com, 1
 autorijschoolrichardschut.nl, 1
 autos-mertens.com, 1
 autosaan.ro, 1
 autoschadeschreuder.nl, 1
 autoscuola.roma.it, 1
 autosecurityfinance.com, 1
 autoshinka72.ru, 1
 autoshopsolutions.com, 1
@@ -4850,16 +4914,17 @@ awaremi-tai.com, 1
 awaresec.com, 1
 awaresec.no, 1
 awarify.io, 1
 awarify.me, 1
 awaro.net, 1
 awbouncycastlehire.com, 1
 awecademy.org, 1
 awei.pub, 1
+awen.me, 1
 awesome-coconut-software.fr, 1
 awesomebouncycastles.co.uk, 1
 awesomesit.es, 1
 awf0.xyz, 1
 awic.ca, 1
 awk.tw, 1
 awksolutions.com, 1
 awningcanopyus.com, 1
@@ -4892,17 +4957,16 @@ axispara-bg.com, 1
 axolotlfarm.org, 0
 axon-toumpa.gr, 1
 axonholdingse.eu, 1
 axre.de, 1
 axrec.de, 1
 axtux.tk, 1
 axxial.tk, 1
 ay-net.jp, 1
-ayahya.me, 1
 ayamchikchik.com, 1
 ayanomimi.com, 1
 aycomba.de, 1
 ayesh.me, 1
 ayesh.win, 1
 aying.love, 1
 ayj.solutions, 1
 aykutcevik.com, 1
@@ -4911,16 +4975,17 @@ aylavblog.com, 1
 aylesburycastlehire.co.uk, 1
 aymerick.fr, 1
 aymericlagier.com, 1
 ayon.group, 1
 ayothemes.com, 1
 ayrohq.com, 1
 ayrshirebouncycastlehire.co.uk, 1
 ayumindev.net, 1
+ayumix3.xyz, 1
 ayurveda-mantry.com, 1
 ayurveda101.com, 0
 az-moga.bg, 1
 az-vinyl-boden.de, 1
 az.search.yahoo.com, 0
 azabani.com, 1
 azadliq.info, 1
 azarus.ch, 1
@@ -4928,36 +4993,39 @@ azazy.net, 0
 azgfd.com, 1
 azia.info, 1
 aziende.com.ar, 1
 azimut.fr, 1
 azino777.ru, 1
 azizvicdan.com, 0
 azlk-team.ru, 1
 azmusica.biz, 1
+aznews.site, 1
 azort.com, 1
 azrazalea.net, 1
 azsgeniedev.azurewebsites.net, 1
 azso.pro, 1
 azsupport.com, 1
 aztraslochi.it, 1
 aztrix.me, 1
 azu-l.com, 1
 azu-l.jp, 1
 azuki.cloud, 1
 azukie.com, 1
 azurecrimson.com, 1
 azuriasky.com, 1
 azuriasky.net, 1
+azurlane.cool, 1
 azuxul.fr, 1
 azzorti.com, 1
 azzurrapelletterie.it, 1
 b-b-law.com, 1
 b-boom.nl, 1
 b-cyclesshop.ch, 1
+b-dd.com, 1
 b-entropy.com, 1
 b-freerobux.ga, 1
 b-pi.duckdns.org, 1
 b-root-force.de, 1
 b-services.net, 1
 b-ticket.ch, 1
 b0618.com, 1
 b0618.net, 1
@@ -5188,16 +5256,17 @@ bahnbonus-praemienwelt.de, 1
 bahnenimbild.de, 1
 bahnenimbild.eu, 1
 bahnhelden.de, 1
 bahninrotweissrot.at, 1
 bahnmagazine.de, 1
 baiduo.com, 1
 baifubao.com, 1
 baiker.info, 1
+bailakomigo.com.br, 1
 baildonbouncycastles.co.uk, 1
 baildonhottubs.co.uk, 1
 baileebee.com, 1
 baileybae.com, 1
 bailonga.com, 1
 bairdzhang.com, 1
 baitaplamvan.com, 1
 baitcon.com, 1
@@ -5216,28 +5285,30 @@ bakersafari.co, 1
 bakeup.be, 1
 bakibal.com, 1
 bakim.li, 1
 bakingstone.com, 1
 bakkerinjebuurt.be, 1
 bakongcondo.com, 1
 balade-commune.ch, 1
 baladecommune.ch, 1
+balancascia.com.br, 1
 balance7.jp, 1
 balancedbrawl.net, 1
 balancenaturalhealthclinic.ca, 1
 balboa.io, 1
 balcaonet.com.br, 1
 balcarek.pl, 1
 balconnr.com, 1
 balconsverdun.com, 1
 baldwin.com.au, 1
 baleen.us, 1
 balia.de, 1
 balicekzdravi.cz, 1
+balidesignshop.com.br, 1
 balikonos.cz, 1
 balinese.dating, 1
 balist.es, 1
 balivillassanur.com, 1
 baliyano.com, 1
 balkonien.org, 1
 ball-bizarr.de, 1
 ball3d.es, 1
@@ -5269,30 +5340,31 @@ bamily.rocks, 1
 bamtoki.com, 1
 bananavapes.com, 1
 bananice.moe, 1
 bananium.fr, 1
 banburybid.com, 1
 bancacrs.it, 1
 bancobai.ao, 1
 bancoctt.pt, 1
+bancomap.ch, 1
 bancor.network, 1
 bandagastrica.es, 1
 bandally.net, 1
 bandarifamily.com, 1
+bandeira1.com.br, 1
 banderasdelmundo.xyz, 1
 bandgap.io, 1
 bandiga.it, 1
 bandito.re, 1
 banes.ch, 1
 bangdream.ga, 1
 bangkok-dark-night.com, 1
 bangkok.dating, 1
 bangkokcity.de, 1
-bangorfederal.com, 0
 bangridho.com, 1
 bangumi.co, 1
 bangyu.wang, 1
 banham.co.uk, 1
 banham.com, 1
 bani99.com, 1
 banjostringiz.com, 1
 bank, 1
@@ -5388,16 +5460,17 @@ barprive.com, 1
 barqo.co, 1
 barracuda.blog, 1
 barracuda.com.tr, 1
 barrera.io, 1
 barriofut.com, 1
 barrydenicola.com, 1
 barryswebdesign.co.uk, 1
 bars.kh.ua, 1
+barsashop.com.br, 1
 barsgroup.com, 1
 barsil.de, 1
 barslecht.com, 1
 barslecht.nl, 1
 barss.io, 1
 bart-f.com, 1
 barta.me, 1
 bartbania.com, 1
@@ -5457,16 +5530,17 @@ bat909.net, 1
 bat9vip.com, 1
 bat9vip.net, 1
 batcave.tech, 1
 batch.com, 1
 batfoundry.com, 1
 bati-alu.fr, 1
 batiburrillo.net, 1
 batipresta.ch, 1
+batistareisfloresonline.com.br, 1
 batlab.ch, 1
 batolis.com, 1
 batook.org, 1
 batschu.de, 1
 batten.eu.org, 1
 batterystaple.pw, 1
 battle-game.com, 1
 battleboxx.com, 0
@@ -5606,26 +5680,28 @@ be9966.com, 1
 beacham.online, 1
 beachcitycastles.com, 1
 beachfutbolclub.com, 1
 beacinsight.com, 1
 beadare.com, 1
 beadare.nl, 1
 beaglesecurity.com, 1
 beagreenbean.co.uk, 1
+beaker.coffee, 1
 bealpha.pl, 1
 beamer-discount.de, 1
 beamitapp.com, 1
 beamstat.com, 1
 beanbagaa.com, 1
 beanbot.party, 1
 beanilla.com, 1
 beanjuice.me, 1
 beans-one.com, 0
 bearcms.com, 1
+bearcosports.com.br, 1
 bearded.sexy, 1
 beardic.cn, 1
 bearingworks.com, 1
 bearlakelife.com, 1
 beasel.biz, 1
 beastiejob.com, 1
 beastowner.li, 1
 beatfeld.de, 1
@@ -5639,16 +5715,17 @@ beauty24.de, 1
 beautybear.dk, 1
 beautyby.tv, 1
 beautyevent.fr, 1
 beautykat.ru, 1
 beaverdamautos.com, 1
 beavertales.ca, 1
 bebeautiful.business, 1
 bebef.de, 1
+bebefofuxo.com.br, 1
 bebes.uno, 1
 bebest.gov, 1
 bebetrotteur.com, 1
 bebout.domains, 1
 bebout.pw, 1
 beccajoshwedding.com, 1
 beckenhamcastles.co.uk, 1
 beckerantiques.com, 1
@@ -5706,25 +5783,27 @@ beerjet.ro, 1
 beerjet.sk, 1
 beerjetcz.cz, 1
 beerly.eu, 1
 beerradar.no, 1
 beerradar.party, 1
 beersandco.ch, 1
 beersconf.com, 1
 beerview.ga, 1
+beeswarmrehoming.com.au, 1
 beeswax-orgone.com, 1
 beetgroup.id, 1
 beethoveninlove.com, 1
 beetman.net, 1
 beeutifulparties.co.uk, 1
 beexfit.com, 1
 beezkneezcastles.co.uk, 1
 beeznest.com, 1
 befoodsafe.gov, 1
+beforesunrise.de, 1
 beforeyoueatoc.com, 1
 beframed.ch, 1
 befreewifi.info, 1
 befundonline.de, 1
 begabungsfoerderung.info, 1
 begbie.com, 1
 beginner.nl, 1
 behamepresrdce.sk, 1
@@ -5736,50 +5815,49 @@ behna24hodin.cz, 1
 behoreal.cz, 1
 bei18.com, 1
 beichtgenerator.de, 1
 beijing.dating, 1
 beijinglug.club, 1
 beinad.com, 1
 beinad.ru, 1
 beisance.com, 1
-bejarano.io, 1
 belacapa.com.br, 1
 belanglos.de, 1
 belani.eu, 1
 belanja.express, 1
 belarto.be, 1
 belarto.de, 1
 belarto.es, 1
 belarto.fr, 1
 belarto.it, 1
 belarto.nl, 1
 belarto.pl, 1
 belastingdienst-in-beeld.nl, 1
 belastingmiddeling.nl, 1
 belavis.com, 1
 beleggingspanden-financiering.nl, 1
 belegit.org, 1
+belezashopping.com.br, 1
 belfastbounce.co.uk, 1
 belfastlocks.com, 1
 belfasttechservices.co.uk, 1
 belfor-probleme.de, 1
 belge.rs, 1
 belgers.com, 1
 belhopro.be, 1
 belics.com, 1
 belien-tweedehandswagens.be, 1
 believablebook.com, 0
 believersweb.org, 1
 bell.id.au, 1
 bella.network, 1
 bellaklein.de, 1
 bellamodeling.com, 1
 bellavistaoutdoor.com, 1
-belle-lingerie.co.uk, 1
 bellinghamdetailandglass.com, 1
 belloy.ch, 1
 belloy.net, 1
 bellthrogh.com, 1
 bellthrough.com, 1
 belly-button-piercings.com, 1
 bellyandbrain.amsterdam, 1
 belmontgoessolar.org, 1
@@ -5815,16 +5893,17 @@ bendigoland.com.au, 1
 bendingtheending.com, 1
 bendix.co, 1
 bendyworks.com, 1
 beneathvt.com, 1
 benedict-balzer.de, 1
 benediktgeissler.de, 1
 benefitshub.io, 1
 benefitshub.xyz, 1
+benepiscinas.com.br, 1
 beneri.se, 1
 benevisim.com, 1
 benevita.bio, 1
 benevita.life, 1
 benevita.live, 1
 benevita.organic, 1
 benewpro.com, 1
 benfairclough.com, 1
@@ -5881,17 +5960,16 @@ beoordelingen.be, 1
 bep.gov, 1
 bepenak.com, 1
 bephoenix.org.uk, 1
 bepsvpt.me, 1
 bequiia.com, 1
 beranovi.com, 1
 berasavocate.com, 1
 beraten-entwickeln-steuern.de, 1
-berati.tv, 1
 beratungswelt.dvag, 1
 berdaguermontes.eu, 0
 berdu.id, 1
 bereginy.com.ua, 1
 beretech.fr, 1
 berg-freunde.at, 1
 berg-freunde.ch, 1
 bergenhave.nl, 1
@@ -5907,44 +5985,44 @@ bergfreunde.nl, 1
 bergfreunde.no, 1
 bergfreunde.se, 1
 berglust-pur.de, 1
 bergmanbeachproperties.com, 1
 bergstoneware.com, 1
 berichtsheft-vorlage.de, 1
 berikod.ru, 1
 beringsoegaard.dk, 0
-berlin-flirt.de, 1
 berlin-kohlefrei.de, 1
 berlin.dating, 1
 bermeitinger.eu, 1
 bermos.net, 1
 bermytraq.bm, 1
 berna.fr, 1
 bernadetteanderes.ch, 1
+bernar.do, 1
 bernardcontainers.be, 1
 bernarddickens.com, 1
 bernardez-photo.com, 1
 bernardgo.com, 1
 bernardo.fm, 1
 bernat.ch, 1
 bernat.im, 1
 bernd-leitner-fotodesign.com, 1
 bernd-leitner-fotodesign.de, 1
 bernd-leitner.de, 1
 berndklaus.at, 1
 bernhard-seidenspinner.de, 1
 bernhardkau.de, 1
 bernhardluginbuehl.ch, 1
 bernhardluginbuehl.com, 1
 bernieware.de, 1
+bernyweb.net, 1
 berodes.be, 1
 berr.yt, 1
 berra.se, 1
-berruezoabogados.com, 1
 berrus.com, 1
 berry.cat, 1
 berrypay.com, 1
 bersierservices.ch, 1
 bersotavocats.fr, 1
 berst.cz, 1
 berthabailey.com, 1
 berthelier.me, 1
@@ -6002,31 +6080,31 @@ best2pay.net, 1
 best66.me, 1
 bestattungen-kammerer.de, 1
 bestattungshaus-kammerer.de, 1
 bestautoinsurance.com, 1
 bestbatteriesonline.com, 1
 bestbefore.com, 1
 bestbestbitcoin.com, 1
 bestbrakes.com, 1
-bestbridal.top, 1
+bestbyte.com.br, 1
 bestcellular.com, 0
-bestdating.today, 0
+bestdating.today, 1
+bestdoc.com.br, 1
 bestdownloadscenter.com, 1
 bestelectricnd.com, 1
 bestellipticalmachinereview.info, 1
 bestemailmarketingsoftware.org, 1
 bestesb.com, 1
 bestesb.net, 1
 bestessaycheap.com, 1
 bestessayhelp.com, 1
 bestfitnesswatchreview.info, 1
 bestfriendsequality.org, 1
 bestgiftever.ca, 1
-bestgifts4you.com, 1
 besthotsales.com, 1
 besti.it, 1
 bestiahosting.com, 1
 bestinductioncooktop.us, 1
 bestinshowing.com, 1
 bestinsider.net, 1
 bestinver.es, 0
 bestjumptrampolines.be, 1
@@ -6039,20 +6117,20 @@ bestoliveoils.com, 1
 bestpal.eu, 1
 bestparking.xyz, 1
 bestpartyhire.com, 1
 bestperfumebrands.com, 1
 bestpig.fr, 1
 bestplumbing.com, 1
 bestpractice.domains, 1
 bestschools.io, 1
-bestschools.top, 1
 bestseries.tv, 1
 bestshoesmix.com, 1
 bestwebsite.gallery, 1
+besuccessful.ch, 1
 bet-99.cc, 1
 bet-99.com, 1
 bet-99.net, 1
 bet.eu, 1
 bet168wy.com, 1
 bet168wy.net, 1
 bet909.com, 1
 bet990.com, 1
@@ -6175,17 +6253,16 @@ bg-sexologia.com, 1
 bgbaby.net, 1
 bgbhsf.top, 1
 bgenlisted.com, 1
 bgeo.io, 1
 bgfashion.net, 1
 bgfoto.info, 1
 bghost.xyz, 1
 bgkoleda.bg, 1
-bglsingles.de, 1
 bgmn.me, 1
 bgp.ee, 1
 bgp.space, 1
 bgr34.cz, 1
 bgtgames.com, 1
 bgtoyou.com, 1
 bguidinger.com, 1
 bgwfans.com, 1
@@ -6246,16 +6323,17 @@ bielefailed.de, 1
 bien-etre-sante.info, 1
 bienici.com, 1
 bienoubien.org, 1
 biensenvue.com, 1
 bienstar.tv, 1
 bierbaumer.net, 1
 biergaizi.info, 1
 bierochs.org, 1
+bierwebshop.be, 1
 bieser.ch, 1
 biester.pro, 1
 bieumau.net, 1
 bifrost.cz, 1
 biftin.net, 1
 big-andy.co.uk, 1
 big-bounce.co.uk, 1
 big-fluglaerm-hamburg.de, 1
@@ -6268,29 +6346,31 @@ bigbrotherawards.nl, 1
 bigcakes.dk, 1
 bigclassaction.com, 1
 bigdinosaur.org, 1
 bigerbio.com, 1
 biggreenexchange.com, 1
 bighouse-events.co.uk, 1
 bight.ca, 1
 bigideasnetwork.com, 1
+bigio.com.br, 1
 biglou.com, 0
 bignumworks.com, 1
 bigorbitgallery.org, 1
 bigserp.com, 1
 bigshopper.com, 1
 bigshopper.nl, 1
 bigshort.org, 1
 bigsisterchannel.com, 1
 bigskylifestylerealestate.com, 1
 bigskymontanalandforsale.com, 1
 bihub.io, 1
 biilo.com, 1
 bijancompany.com, 1
+bijoux.com.br, 1
 bijouxcherie.com, 1
 biju-neko.jp, 1
 bijuteriicualint.ro, 1
 bike-discount.de, 1
 bike-kurse.ch, 1
 bike-shack.com, 1
 bikebay.it, 1
 bikehistory.org, 1
@@ -6418,16 +6498,17 @@ biology-colleges.com, 1
 biomag.it, 1
 biomasscore.com, 1
 biomathalliance.org, 1
 biomed-hospital.ch, 1
 biomed.ch, 1
 biometrics.es, 1
 biomin.co.uk, 1
 biomodra.cz, 1
+bionima.com, 1
 biopreferred.gov, 1
 biopronut.com, 1
 biopsychiatry.com, 1
 bioresonanz-ibiza.com, 1
 biosafe.ch, 1
 biosbits.org, 1
 bioshine.com.sg, 1
 bioshome.de, 1
@@ -6505,16 +6586,17 @@ bitcoin.asia, 1
 bitcoin.ch, 1
 bitcoin.co.nz, 1
 bitcoin.de, 1
 bitcoin.im, 1
 bitcoin.info, 1
 bitcoin.org, 1
 bitcoin.us, 1
 bitcoinbitcoin.com, 1
+bitcoincasinos.pro, 1
 bitcoincore.org, 1
 bitcoinec.info, 1
 bitcoinfees.net, 1
 bitcoinindia.com, 1
 bitcoinjpn.com, 1
 bitcoinkarlsruhe.de, 1
 bitcoinrealestate.com.au, 1
 bitcointhefts.com, 1
@@ -6736,16 +6818,17 @@ blatnice.ml, 1
 blatnice.tk, 1
 blaudev.es, 1
 blauerhunger.de, 1
 blayne.me, 1
 blayneallan.com, 1
 blazeit.io, 1
 blazing.cz, 1
 blazor.nl, 1
+blblblblbl.fr, 1
 bleaching-tipps.de, 1
 bleche-onlineshop.at, 1
 bleche-onlineshop.de, 1
 blechinger.io, 1
 blechschmidt.saarland, 1
 bleep.zone, 1
 blenderinsider.com, 1
 blenderrecipereviews.com, 1
@@ -6819,16 +6902,17 @@ blog.gov.uk, 1
 blog.gparent.org, 1
 blog.linode.com, 0
 blog.lookout.com, 0
 blogabout.ru, 1
 blogaid.net, 1
 bloganchoi.com, 1
 blogarts.net, 1
 blogbooker.com, 1
+blogcast.com, 1
 blogconcours.net, 1
 blogcuaviet.com, 1
 blogdelosjuguetes.com, 1
 blogdeyugioh.com, 1
 blogdieconomia.it, 1
 blogdimoda.com, 1
 blogdimotori.it, 1
 blogexpert.ca, 1
@@ -6920,35 +7004,36 @@ blumenfeldart.com, 1
 blumiges-fischbachtal.de, 0
 blundell.wedding, 1
 bluntandsnakes.com, 1
 blupig.net, 1
 bluproducts.com.es, 1
 blurringexistence.net, 1
 blusens.com, 1
 blusmurf.net, 1
+blutopia.xyz, 0
 blyat.science, 1
 blyth.me.uk, 1
 blzrk.com, 1
 bm-i.ch, 1
 bm-immo.ch, 1
 bmhglobal.com.au, 1
 bminton.is-a-geek.net, 1
 bmk-kramsach.at, 1
 bmoattachments.org, 1
 bmone.net, 1
 bmriv.com, 1
 bmros.com.ar, 1
-bmw-motorradclub-seefeld.de, 1
 bmwcolors.com, 1
 bn1digital.co.uk, 1
 bn4t.me, 1
 bnb-buddy.nl, 1
 bnboy.cn, 1
 bnbsinflatablehire.co.uk, 1
+bnck.me, 1
 bngs.pl, 1
 bngsecure.com, 1
 bnin.org, 1
 bnjscastles.co.uk, 1
 bnstree.com, 1
 bnty.net, 1
 bnzblowermotors.com, 1
 bo1689.com, 1
@@ -7079,31 +7164,33 @@ bonnyprints.ch, 1
 bonnyprints.es, 1
 bonnyprints.fr, 1
 bonobo.cz, 1
 bonprix.co.uk, 1
 bonqoeur.ca, 1
 bonrecipe.com, 1
 bonsaimedia.nl, 1
 bonsi.net, 1
+bonus.pl, 1
 bonux.co, 1
 boobox.xyz, 1
 boodmo.com, 1
 boof.com, 0
 boogaerdtmakelaars.nl, 1
 boogiebouncecastles.co.uk, 1
 book-in-hotel.com, 1
 booker.ly, 1
 bookingapp.be, 1
 bookingapp.nl, 1
 bookingready.com, 1
 bookingslog.com, 1
 bookingworldspeakers.com, 1
 bookluk.com, 1
 bookmein.in, 1
+bookofdenim.com, 1
 bookourdjs.com, 1
 bookreport.ga, 1
 booksearch.jp, 1
 booksinthefridge.at, 1
 booksouthafrica.travel, 1
 booktracker-org.appspot.com, 1
 bookwitty.social, 1
 bookzaga.com, 1
@@ -7153,16 +7240,17 @@ borisschapira.com, 1
 borja.io, 1
 born2bounce.co.uk, 1
 bornandgrazed.com, 1
 borneodictionary.com, 1
 bornfiber.dk, 1
 bornhack.dk, 1
 borrelpartybus.nl, 1
 borysek.net, 1
+borysenko.se, 1
 borzoi.com.br, 1
 bosabosa.org, 1
 boschee.net, 1
 boscoyacht.ch, 1
 boskeopolis-stories.com, 1
 boss.az, 1
 bostadsportal.se, 1
 bostonadvisors.com, 1
@@ -7222,17 +7310,16 @@ bouncebookings.com.au, 1
 bouncecrazy.ie, 1
 bouncejumpboston.co.uk, 1
 bouncekingdom.co.uk, 1
 bouncemaniaevents.co.uk, 1
 bouncemaniainflatables.co.uk, 1
 bouncemonkeys.co.uk, 1
 bouncenortheast.co.uk, 1
 bouncenpaint.co.uk, 1
-bouncenslidenortheast.co.uk, 1
 bouncepartycastles.com, 1
 bounceroosevents.co.uk, 1
 bouncers-bouncycastlehire.co.uk, 1
 bouncesouthwales.co.uk, 1
 bouncesquad.co.uk, 1
 bouncetasticuk.co.uk, 1
 bouncetheparty.co.uk, 1
 bounceunlimited.co.uk, 1
@@ -7306,16 +7393,17 @@ bountiful.gov, 1
 bountyfactory.io, 1
 bourasse.fr, 1
 bourdon.fr.eu.org, 1
 bournefun.co.uk, 1
 bourqu.in, 1
 bourse-aux-jouets.org, 0
 bourse-aux-vetements.org, 0
 bourse-puericulture.org, 0
+boutiquedecanetas.com.br, 1
 boutiqueguenaelleverdin.com, 1
 boutoncoupdepoing.fr, 1
 bouw.live, 1
 bouzouada.com, 1
 bouzouks.net, 1
 bovenwebdesign.nl, 1
 bowdens.me, 1
 bowedwallcrackrepair.com, 1
@@ -7347,16 +7435,17 @@ boz.nl, 0
 bozdoz.com, 1
 bozit.com.au, 1
 bozosbouncycastles.co.uk, 1
 bpa.gov, 1
 bpadvisors.eu, 1
 bpastudies.org, 1
 bpo.ovh, 1
 bpol-forum.de, 1
+bpreguica.com.br, 1
 bps.vc, 1
 bpvboekje.nl, 1
 bqcp.net, 1
 bqp.io, 1
 bqr.ch, 1
 bqtoolbox.com, 1
 br-miyamoto.spdns.org, 1
 br.search.yahoo.com, 0
@@ -7392,16 +7481,17 @@ brainserve.ch, 1
 brainserve.com, 1
 brainserve.swiss, 1
 brainsik.net, 1
 brainster.co, 1
 braintensive.com, 1
 brainvoyagermusic.com, 1
 brainwav.es, 1
 brainwork.space, 1
+brainyapp.net, 1
 brakemanpro.com, 1
 brakpanplumber24-7.co.za, 1
 brakstad.org, 1
 bralnik.com, 1
 brambogaerts.nl, 1
 bramburek.net, 1
 bramhallsamusements.com, 1
 brammingfys.dk, 1
@@ -7431,16 +7521,17 @@ brandtrapselfie.nl, 1
 brandweerfraneker.nl, 1
 brandweertrainingen.nl, 1
 brandweeruitgeest.nl, 1
 brank.as, 1
 branw.xyz, 0
 brasal.ma, 1
 brasalcosmetics.com, 1
 brashear.me, 1
+brasilbombas.com.br, 1
 brasildxn.com.br, 1
 brasileiro.ca, 1
 brasserie-mino.fr, 1
 brasspipedreams.org, 1
 bratislava-airport-taxi.com, 1
 bratteng.me, 1
 bratteng.xyz, 1
 bratvanov.com, 1
@@ -7452,18 +7543,20 @@ braunwarth.info, 1
 brava.bg, 1
 brave-foods.ch, 1
 brave-foods.com, 1
 brave.com, 1
 bravebaby.com.au, 1
 bravehearts.org.au, 1
 braviskindenjeugd.nl, 1
 bravisziekenhuis.nl, 0
+bravor.pe, 1
 brazenfol.io, 1
 brazilian.dating, 1
+brazillens.com, 1
 brazoriabar.org, 1
 brb.city, 1
 brck.nl, 1
 brd.ro, 1
 breadandlife.org, 1
 breadofgod.org, 1
 breakingtech.it, 1
 breakpoint.at, 1
@@ -7482,16 +7575,17 @@ brecknell.org, 1
 breda.computer, 1
 bredvid.no, 1
 breechdepot.com, 0
 breest.net, 1
 breeyn.com, 1
 brefy.com, 1
 brege.org, 1
 breitband.bz.it, 1
+breizh.me, 1
 brejoc.com, 1
 brelahotelberulia.com, 1
 bremen-restaurants.de, 1
 bremensaki.com, 1
 bremerfriedensforum.de, 1
 brendanbatliner.com, 1
 brendanscherer.com, 1
 brenden.net.au, 1
@@ -7604,16 +7698,17 @@ brody.digital, 1
 brody.ninja, 1
 broersma.com, 1
 broerweb.nl, 1
 broeselei.at, 1
 brokenhands.io, 1
 brokernet.ie, 0
 brokervalues.com, 1
 brompton-cocktail.com, 1
+bronetb2b.com.br, 1
 bronevichok.ru, 1
 bronwynlewis.com, 1
 broodbesteld.nl, 1
 brookehatton.com, 0
 brookframework.org, 1
 brooklynrealestateblog.com, 1
 brossman.it, 1
 brossmanit.com, 1
@@ -7714,16 +7809,17 @@ btc2secure.com, 1
 btcarmory.com, 1
 btcbolsa.com, 1
 btcontract.com, 1
 btcp.space, 1
 btcpop.co, 1
 btine.tk, 1
 btio.pw, 0
 btku.org, 1
+btmstore.com.br, 1
 btnissanparts.com, 1
 btorrent.xyz, 1
 btrb.ml, 1
 btsapem.com, 1
 btshe.net, 1
 btsoft.eu, 1
 btsow.com, 0
 bttc.co.uk, 1
@@ -7785,16 +7881,17 @@ buffaloautomation.com, 1
 buffaloturf.com.au, 1
 buffetbouc.com, 1
 bug.blue, 1
 bug.ee, 1
 bugcrowd.com, 1
 bugginslab.co.uk, 1
 bugs.chromium.org, 1
 bugsmashed.com, 1
+bugu.org, 1
 bugwie.com, 1
 bugzil.la, 1
 bugzilla.mozilla.org, 1
 build.chromium.org, 1
 buildbox.io, 1
 buildbytes.com, 1
 buildfaith.ca, 1
 buildhoscaletraingi.com, 1
@@ -7944,16 +8041,17 @@ butzies.ddnss.org, 1
 buurtgenotencollectief.nl, 1
 buurtpreventiefraneker.nl, 1
 buxum-communication.ch, 1
 buy-out.jp, 1
 buy2dollars.com, 1
 buybike.shop, 1
 buycarpet.shop, 1
 buycbd.store, 1
+buycoins.top, 1
 buycook.shop, 1
 buydissertations.com, 1
 buyebook.xyz, 1
 buyerdocs.com, 1
 buyessay.org, 1
 buyessays.net, 1
 buyharpoon.com, 1
 buyhealth.shop, 1
@@ -8031,30 +8129,32 @@ bypetula.cz, 1
 byr.moe, 1
 byrko.cz, 1
 byrko.sk, 1
 byronkg.us, 1
 byrtz.de, 1
 bysb.net, 1
 bytanchan.com, 1
 byte-time.com, 1
+byte.nl, 1
 byte128.com, 1
 bytearts.net, 0
 bytebucket.org, 1
 bytecode.no, 1
 bytecrafter.com, 1
 bytecrafter.net, 1
 byteflies.com, 1
 bytegoing.com, 1
 bytejail.com, 1
 bytema.cz, 1
 bytema.eu, 1
 bytema.re, 1
 bytema.sk, 1
 bytemix.cloud, 1
+bytenoc.nl, 1
 bytepen.com, 1
 bytes.co, 1
 bytes.fyi, 1
 bytesatwork.de, 1
 byteshark.org, 1
 byteshift.ca, 1
 bytesign.de, 1
 bytesizedalex.com, 1
@@ -8114,16 +8214,17 @@ cabinet-bedin.com, 1
 cabinetfurnituree.com, 1
 cablehighspeed.net, 1
 cablemod.com, 1
 cablesandkits.com, 1
 cabotfinancial.co.uk, 1
 cacao-chocolate.com, 1
 cacao.supply, 1
 cacaolalina.com, 1
+cacaumidade.com.br, 1
 cacd.eu, 1
 caceis.bank, 1
 cachacacha.com, 1
 cachedview.nl, 1
 cachetagalong.com, 1
 cachethome.com, 1
 cachetur.no, 1
 cackette.com, 1
@@ -8131,32 +8232,34 @@ cacn.pw, 1
 cacr.pw, 1
 cad-noerdlingen.de, 1
 cadafamilia.de, 1
 cadams.io, 1
 cadcreations.co.ke, 1
 cadetsge.ch, 1
 cadmail.nl, 1
 cadman.pw, 1
+cadmanlaw.com, 1
 cadooz.com, 1
 cadorama.fr, 1
 cadoth.net, 1
 cadre.com, 1
 cadsys.net, 1
 cadusilva.com, 1
 caerostris.com, 1
 caerus.ws, 1
 caesarkabalan.com, 1
 cafe-service.ru, 0
 cafechesscourt.com, 1
 cafedupont.be, 1
 cafedupont.co.uk, 1
 cafedupont.de, 1
 cafedupont.nl, 1
 cafeimsueden.de, 1
+cafejulian.com, 1
 cafelandia.net, 1
 cafeobscura.nl, 1
 caferagazzi.de, 1
 caferestor.com, 1
 cafericoy.com, 1
 cafesdomundo.pt, 1
 cafeterasbaratas.net, 1
 caffeinatedcode.com, 1
@@ -8196,16 +8299,17 @@ calatoruldigital.ro, 1
 calc.pw, 1
 calcasieuparish.gov, 1
 calcedge.com, 1
 calcinacci.com, 1
 calcoolator.pl, 1
 calculadoraconversor.com, 1
 calcularis.ch, 1
 calculateaspectratio.com, 1
+calculates.org, 1
 calculatoaresecondhand.xyz, 1
 calculator-imt.com, 1
 calculator.tf, 1
 calcworkshop.com, 1
 caldaro.de, 1
 caldecotevillagehall.co.uk, 1
 caldoletto.com, 1
 caleb.cx, 1
@@ -8245,17 +8349,19 @@ calluna.nl, 1
 calminteractive.fr, 1
 calmtech.com, 1
 calories.org, 1
 calotte-academy.com, 1
 calrotaract.org, 1
 calvin.my, 1
 calvinallen.net, 0
 calypso-tour.net, 1
+calypsohost.net, 1
 calyxengineers.com, 1
+calyxinstitute.org, 0
 calzadonline1-latam.com, 1
 calzadonline1.com, 1
 camara360grados.com, 1
 camaradivisas.com, 1
 camaras.uno, 1
 camarilloelectric.com, 1
 camarilloelectrical.com, 1
 camarilloexteriorlighting.com, 1
@@ -8275,18 +8381,21 @@ cambridgesecuritygroup.org, 1
 cambuslangharriers.org, 1
 camcapital.com, 1
 camconn.cc, 1
 camdesign.pl, 1
 camel2243.com, 1
 camelliaflowers.com.au, 1
 camelservers.com, 1
 cameo-membership.uk, 1
+cameraviva.com.br, 1
+cameroonlounge.com, 1
 camerweb.es, 1
 camilomodzz.net, 1
+camisetasmalwee.com.br, 1
 camolist.com, 1
 camp-pleinsoleil.ch, 1
 camp.co.uk, 1
 campaign-ad.com, 1
 campaign.gov.uk, 1
 campaignagent.com.au, 1
 campaignhelpdesk.org, 1
 campaignwiki.org, 1
@@ -8308,16 +8417,17 @@ campingcarlovers.com, 1
 campinghuntingshooting.com, 1
 campingskyhooks.com, 1
 campistry.net, 1
 campsoulfestival.com, 1
 campula.cz, 1
 campus-discounts.com, 1
 campus-finance.com, 1
 campusdrugprevention.gov, 1
+campusfit.co, 1
 campuswire.com, 1
 campvana.com, 1
 campwabashi.org, 1
 camshowdir.com, 1
 camshowdir.to, 1
 camshowhub.com, 1
 camshowhub.to, 1
 camshowstorage.com, 1
@@ -8434,17 +8544,16 @@ captivationtheory.com, 1
 capturapp.com, 0
 capture-app.com, 1
 captured-symphonies.com, 1
 capturethepen.co.uk, 1
 capuchinox.com, 1
 caputo.com, 1
 caputodesign.com, 1
 car-insurance-quotes.biz, 1
-car-shop.top, 1
 car.info, 1
 car24.de, 1
 car24portal.de, 1
 carassure.de, 1
 carauctionnetwork.com, 1
 carauctionsalabama.com, 1
 carauctionscarolina.com, 1
 carauctionsgeorgia.com, 1
@@ -8471,17 +8580,16 @@ cardelmar.com, 1
 cardelmar.de, 1
 cardelmar.es, 1
 cardexchangesolutions.com, 1
 cardioc.ru, 1
 cardios.srv.br, 1
 cardloan-manual.net, 1
 cardranking.jp, 1
 cardrecovery.fr, 1
-cardse.net, 1
 cardsolutionsbh.com.br, 1
 cardwars.hu, 1
 cardxl.be, 1
 cardxl.de, 1
 cardxl.fr, 1
 cardxl.nl, 1
 care-spot.biz, 1
 care-spot.com, 1
@@ -8558,16 +8666,17 @@ carlovanwyk.com, 1
 carmelrise.co.uk, 1
 carnaticalifornia.com, 1
 carnet-du-voyageur.com, 1
 carnildo.com, 1
 caroes.be, 1
 caroffer.ch, 1
 carol-lambert.com, 1
 carolcappelletti.com, 1
+carolcestas.com, 1
 caroli.biz, 1
 caroli.com, 1
 caroli.info, 1
 caroli.name, 1
 caroli.net, 1
 carolina.cz, 1
 carolinaclimatecontrolsc.com, 1
 carolynjoyce.com.au, 1
@@ -8585,16 +8694,18 @@ carroattrezzimilanodaluiso.it, 1
 carrouselcompany.fr, 1
 cars4salecy.com, 1
 carseatchecks.ca, 1
 carshippingcarriers.com, 1
 carson-aviation-adventures.com, 1
 carson-matthews.co.uk, 1
 carsoug.com, 1
 carspneu.cz, 1
+carteirasedistintivos.com.br, 1
+cartelloni.roma.it, 1
 carterdan.net, 1
 carterorland.com, 1
 carterstad.se, 1
 cartertonscouts.org.nz, 1
 cartesentreprises-unicef.fr, 1
 carthedral.com, 1
 cartierplan.ga, 0
 carto.la, 1
@@ -8619,21 +8730,25 @@ casa-lunchbreak.de, 1
 casa-mea-inteligenta.ro, 1
 casaamor.ph, 1
 casaanastasia.ro, 1
 casabouquet.com, 1
 casacameo.com, 0
 casacazoleiro.com, 1
 casacochecurro.com, 1
 casadasportasejanelas.com, 1
+casadoarbitro.com.br, 1
 casadopulpo.com, 1
+casadowifi.com.br, 1
+casaessencias.com.br, 1
 casalborgo.it, 1
 casalindamex.com, 1
 casalunchbreak.de, 1
 casamariposaspi.com, 1
+casapalla.com.br, 1
 casasuara.com, 1
 casasuleletrodomesticos.com.br, 1
 casbia.info, 1
 casbuijs.nl, 1
 casburggraaf.com, 0
 casc.cz, 1
 cascadesjobcorpscca.com, 1
 cascavelle.fr, 1
@@ -8691,16 +8806,17 @@ castible.de, 1
 castle-engine.io, 1
 castlecapers.com.au, 1
 castlecms.io, 1
 castleking.net, 1
 castlekingdomstockport.co.uk, 1
 castlekingkent.co.uk, 1
 castlemail.io, 1
 castleparty.co.uk, 1
+castlepointanime.com, 1
 castles-in-the-sky.co.uk, 1
 castles4kidz.com, 1
 castles4rascalsiow.co.uk, 1
 castlesrus-kent.com, 1
 castleswa.com.au, 1
 casualdesignsfurniture.com, 1
 casusgrillcaribbean.com, 1
 cat.net, 1
@@ -8709,16 +8825,17 @@ cat93.com, 1
 catalog.beer, 1
 catalogobiblioteca.com, 1
 catalogoreina.com, 1
 catalogosvirtualesonline.com, 1
 catalyconv.com, 1
 catalyst-ecommerce.com, 0
 catalystapp.co, 1
 catbold.space, 1
+catbox.moe, 1
 catbull.com, 1
 catburton.co.uk, 1
 catchers.cc, 1
 catchersgear.com, 1
 catchhimandkeephim.com, 1
 catchief.com, 1
 catchkol.com, 1
 catcontent.cloud, 1
@@ -8766,16 +8883,18 @@ cavac.at, 1
 cavalierkingcharlesspaniel.com.br, 1
 cave-reynard.ch, 1
 cavzodiaco.com.br, 1
 caxalt.com, 1
 caylercapital.com, 1
 cazaviajes.es, 1
 cazes.info, 1
 cb-crochet.com, 1
+cb1388.com, 1
+cb1588.com, 1
 cbbank.com, 1
 cbc-hire.co.uk, 1
 cbcf.info, 1
 cbd.casa, 1
 cbd.supply, 1
 cbdcontact.eu, 1
 cbdcontact.pl, 1
 cbdev.de, 1
@@ -8836,17 +8955,16 @@ cdn6.de, 1
 cdncompanies.com, 1
 cdnjs.com, 1
 cdnk39.com, 1
 cdns.cloud, 1
 cdnsys.net, 1
 cdom.de, 1
 cdsdigital.de, 1
 cdshining.com, 1
-cdu-wilgersdorf.de, 1
 cduckett.net, 1
 cdvl.org, 1
 ce-agentur.de, 0
 ce-pimkie.fr, 1
 ceanimalhealth.com, 1
 cebz.org, 1
 cecame.ch, 1
 ceciliacolombara.com, 1
@@ -8891,16 +9009,17 @@ cennelley.com, 1
 cennelly.com, 1
 censurfridns.dk, 1
 censurfridns.nu, 1
 censys.io, 1
 centa-am.com, 1
 centaur.de, 1
 centennialradon.com, 1
 centennialseptic.com, 1
+centermk.ru, 1
 centerpereezd.ru, 0
 centerperson.org, 1
 centerpoint.ovh, 1
 centio.bg, 1
 centision.com, 1
 centos.cz, 1
 centos.pub, 1
 centos.tips, 1
@@ -8916,20 +9035,20 @@ centralpoint.be, 0
 centralpoint.nl, 0
 centralstatecu.org, 1
 centralvoice.org, 1
 centrationgame.com, 1
 centredaccueil.fr, 1
 centreoeil.ch, 1
 centrepointorguk-dev.azurewebsites.net, 1
 centrobill.com, 1
+centrodoinstalador.com.br, 1
 centroecuestrecastellar.com, 1
 centrojovencuenca.es, 1
 centrolavoro.org, 1
-centromasterin.com, 1
 centroperugia.gr, 1
 centrosocialferrel.pt, 1
 centrumhodinek.cz, 1
 centruvechisv.ro, 1
 centsi.io, 1
 centum.no, 1
 centura.de, 1
 centurialeonina.com, 1
@@ -8984,24 +9103,26 @@ ces-ltd.co.uk, 1
 cesantias.co, 1
 cesboard.com, 1
 cesdb.com, 1
 cesipagano.com, 1
 ceskepivnesety.sk, 1
 ceskepivnisety.cz, 1
 ceso-saco.com, 1
 cesobaly.cz, 1
+cestasedelicias.com.br, 1
 cestunmetier.ch, 1
 cetamol.com, 1
 ceu.edu, 0
 cevo.com.hr, 1
 ceyizlikelisleri.com, 1
 cf-ide.de, 1
 cf-tm.net, 1
 cfan.space, 1
+cfc-swc.gc.ca, 1
 cfda.gov, 1
 cfdcre5.org, 1
 cfh.com, 1
 cfigura.com, 1
 cflsystems.com, 1
 cfno.org, 1
 cfo.gov, 1
 cfpa-formation.fr, 1
@@ -9050,16 +9171,17 @@ chaisystems.net, 1
 chaizhikang.com, 1
 chaletdemontagne.org, 1
 chaletmanager.com, 1
 chaletpierrot.ch, 1
 chaleur.com, 1
 chalker.io, 1
 chalkfestival.org, 0
 challengeblog.org, 1
+challengeclothing.com.br, 1
 challengeskins.com, 1
 challstrom.com, 1
 chamathellawala.com, 1
 chambion.ch, 1
 chameleon-ents.co.uk, 1
 chameth.com, 1
 chamicro.com, 1
 champdogs.co.uk, 1
@@ -9138,16 +9260,17 @@ charlottesvillehorsefarms.com, 1
 charlotteswimmingpoolbuilder.com, 1
 charlylou.de, 1
 charmander.me, 1
 charmingsaul.com, 1
 charmyadesara.com, 1
 charonsecurity.com, 1
 charr.xyz, 1
 chars.ga, 0
+charset.org, 1
 charta-digitale-vernetzung.de, 1
 charteroak.org, 1
 chartkick.com, 1
 chartpen.com, 1
 chartsy.de, 1
 chartwellestate.com, 1
 charuru.moe, 0
 chasafilli.ch, 1
@@ -9240,16 +9363,17 @@ checkmyessays.com, 1
 checkmyhttps.net, 1
 checkmyip.com, 1
 checkmypsoriasis.com, 1
 checkout.google.com, 1
 checkpoint-tshirt.com, 1
 checkras.tk, 1
 checkrente.nl, 1
 checkspf.net, 1
+checktechnology.com.au, 1
 checktype.com, 1
 checkui.com, 1
 checkyourmath.com, 1
 checkyourmeds.com, 1
 checkyourprivilege.org, 1
 checkyourreps.org, 1
 checookies.com, 1
 checos.co.uk, 1
@@ -9260,29 +9384,31 @@ cheela.org, 1
 cheem.co.uk, 1
 cheeseemergency.co.uk, 1
 cheesefusion.com, 1
 cheesypicsbooths.co.uk, 1
 cheetahwerx.com, 1
 cheez.systems, 1
 cheezflix.uk, 1
 chefwear.com, 1
+chefz.co, 1
 chehalemgroup.com, 1
 cheladmin.ru, 1
 chelema.xyz, 1
 chellame.com, 1
 chellame.fr, 1
 cheltenhambouncycastles.co.uk, 1
 cheltik.ru, 1
 chemco.mu, 1
 chemicalcrux.org, 1
 chemicalguys-ruhrpott.de, 1
 chemiphys.com, 1
 chemistry-schools.com, 1
 chenapartment.com, 1
+chengarda.com, 1
 chengl.com, 1
 chengxindong.com, 1
 chenkun.pro, 1
 chenky.com, 1
 chenna.me, 1
 chennien.com, 1
 chenpei.org, 1
 chenqinghua.com, 1
@@ -9326,17 +9452,16 @@ chiboard.co, 1
 chibr.eu, 1
 chic-leather.com, 1
 chicagoemergencyclosings.com, 1
 chicagolug.org, 1
 chicagostudentactivists.org, 1
 chicisimo.com, 1
 chicolawfirm.com, 1
 chicurrichi.com, 1
-chiemgauflirt.de, 1
 chif16.at, 1
 chikan-beacon.net, 1
 chikazawa.info, 1
 chikory.com, 1
 childcare.gov, 1
 childcounseling.org, 1
 childcustodylegalaid.org, 1
 childno.de, 1
@@ -9359,17 +9484,16 @@ chima.us, 1
 chimeratool.com, 1
 chimerity.com, 1
 chimho.de, 1
 chimpanzee.net, 1
 china-line.org, 1
 chinacdn.org, 1
 chinahighlights.ru, 1
 chinaspaceflight.com, 1
-chinatrademarkoffice.com, 1
 chinawhale.com, 1
 ching.tv, 1
 chinookwebdesign.ca, 1
 chint.ai, 1
 chinternet.xyz, 1
 chinwag.im, 1
 chinwag.org, 1
 chipcore.com, 0
@@ -9397,16 +9521,17 @@ chloehorler.com, 1
 chloescastles.co.uk, 1
 chlth.com, 1
 chmielarz.it, 1
 chmsoft.com.ua, 1
 chmsoft.ru, 1
 chmurakotori.ml, 1
 choc-o-lush.co.uk, 1
 chocgu.com, 1
+chocodecor.com.br, 1
 chocolah.com.au, 0
 chocolat-suisse.ch, 1
 chocolat.work, 1
 chocolatesandhealth.com, 1
 chocolatier-tristan.ch, 1
 chocolytech.info, 1
 chocotough.nl, 1
 chocoweb.net, 1
@@ -9516,16 +9641,17 @@ christtheredeemer.us, 1
 christwaycounseling.com, 1
 chrisupjohn.xyz, 1
 chrisvannooten.tk, 1
 chriswald.com, 1
 chriswarrick.com, 1
 chriswbarry.com, 1
 chriswells.io, 1
 chromaryu.net, 0
+chromaxa.com, 1
 chromcraft-revington.com, 1
 chrome, 1
 chrome-devtools-frontend.appspot.com, 1
 chrome.com, 1
 chrome.google.com, 1
 chromebookchart.com, 1
 chromebooksforwork.com, 1
 chromeworld.ru, 1
@@ -9572,16 +9698,17 @@ ciancode.com, 1
 ciania.pl, 1
 cianmawhinney.me, 1
 cianmawhinney.xyz, 1
 ciansc.com, 1
 ciaracode.com, 1
 ciat.no, 0
 cibercactus.com, 1
 cica.es, 1
+cichol.com, 1
 ciclista.roma.it, 1
 cidbot.com, 1
 ciderclub.com, 1
 cidersus.com.ec, 1
 cie-theatre-montfaucon.ch, 1
 ciel.pro, 1
 cielbleu.org, 1
 cielly.com, 1
@@ -9648,42 +9775,46 @@ circle-people.com, 1
 circlebox.rocks, 1
 circu.ml, 1
 circulatedigital.com, 1
 circule.cc, 1
 cirfi.com, 1
 ciri.com.co, 1
 cirrus0.de, 1
 cirujanooral.com, 1
+cirurgicagervasio.com.br, 1
+cirurgicalucena.com.br, 1
+cirurgicasalutar.com.br, 1
+cirurgicavirtual.com.br, 1
 cisa.gov, 1
 ciscodude.net, 1
 cisoaid.com, 1
 cisofy.com, 1
 cispeo.org, 1
 ciss.ltd, 1
 cisum-cycling.com, 1
 cisy.me, 1
 citadelnet.works, 1
 citas-adultas.com, 1
 citationgurus.com, 1
 citcuit.in, 1
 citfin.cz, 1
 cities.cl, 1
 citimarinestore.com, 1
-citizen-cam.de, 1
 citizensbankal.com, 1
 citizenscience.gov, 0
 citizenscience.org, 1
 citizensgbr.org, 1
 citizenslasvegas.com, 1
 citizensleague.org, 1
 citizenspact.eu, 1
 citizing.org, 1
 citrusui.me, 1
 cittadesign.com, 0
+citton.com.br, 1
 city-adm.lviv.ua, 1
 city-walks.info, 1
 citya.com, 1
 citybeat.de, 1
 citycreek.studio, 1
 citydance.ee, 1
 cityextra.com.au, 1
 cityfloorsupply.com, 1
@@ -9756,16 +9887,17 @@ clanwarz.com, 1
 clapping-rhymes.com, 1
 clarkwinkelmann.com, 1
 clase3.tk, 1
 clash.lol, 1
 clashersrepublic.com, 1
 class.com.au, 1
 classdojo.com, 1
 classic-yacht-charters.com, 1
+classical-guitar-school.com, 1
 classicalpilates.ca, 1
 classics.io, 1
 classictheatrecumbria.co.uk, 1
 classpoint.cz, 1
 classroom.google.com, 1
 classroomconductor.com, 1
 classroomcountdown.co.nz, 1
 classteaching.com.au, 1
@@ -9815,20 +9947,22 @@ clemovementlaw.com, 1
 cles-asso.fr, 1
 cles.jp, 1
 clevelandokla.com, 1
 clevergod.net, 1
 clevertarget.ru, 1
 cleververmarkten.com, 1
 cleververmarkten.de, 1
 clevisto.com, 1
+clevvi.com.au, 1
 cleysense.com, 1
 clic-et-site.com, 1
 clic-music.com, 1
 clicandfioul.com, 1
+clich.cn, 1
 clicheshishalounge.co.uk, 1
 click-licht.de, 1
 click2order.co.uk, 1
 click4web.com, 1
 clickclickphish.com, 1
 clickclock.cc, 1
 clickenergy.com.au, 1
 clickingmad.com, 1
@@ -9964,16 +10098,17 @@ club-is.ru, 1
 club-premiere.com, 1
 club-reduc.com, 1
 club-slow.jp, 1
 club-yy.com, 1
 club103.ch, 1
 clubcorsavenezuela.com, 1
 clubdelzapato.com, 1
 clubdeslecteurs.net, 1
+clubedalutashop.com, 1
 clubefiel.com.br, 1
 clubempleos.com, 1
 clubeohara.com, 1
 clubfamily.de, 1
 clubgalaxy.futbol, 0
 clubiconkenosha.com, 1
 clubmate.rocks, 1
 clubmini.jp, 1
@@ -10183,17 +10318,16 @@ codyevanscomputer.com, 1
 codymoniz.com, 1
 codyqx4.com, 1
 codyscafesb.com, 1
 coens.me.uk, 1
 coentropic.com, 1
 coeus.cloud, 1
 cofbev.com, 1
 coffee-mamenoki.jp, 1
-coffeeandteabrothers.com, 1
 coffeetime.fun, 1
 coffeist.com, 1
 cogala.eu, 1
 cogent.cc, 1
 cogilog.com, 1
 cogitoltd.com, 1
 cognicom-gaming.com, 1
 cognitip.com, 1
@@ -10225,17 +10359,20 @@ coinflux.com, 1
 coingate.com, 1
 coinjar-sandbox.com, 1
 coinlist.co, 0
 coinloan.io, 1
 coinmewallet.com, 1
 coinpit.io, 1
 coinroom.com, 1
 coins2001.ru, 1
+coinsmat.com, 1
+coinsz.co, 1
 coinx.pro, 1
+coisabakana.com.br, 1
 coisasdemulher.org, 1
 cojam.ru, 1
 cojo.eu, 1
 cokebar.info, 1
 coker.com.au, 1
 col.la, 1
 colaborativa.tv, 1
 colapsys.net, 1
@@ -10243,16 +10380,17 @@ colarelli.ch, 1
 colasjourdain.fr, 1
 colcomm.com, 1
 coldaddy.com, 1
 coldawn.com, 0
 coldcardwallet.com, 1
 coldfff.com, 1
 coldhak.ca, 1
 coldiario.com, 1
+coldlasers.org, 1
 coldstreamcreekfarm.com, 1
 colectivointerconductual.com, 1
 colegiocierp.com.br, 0
 colemak.com, 1
 colengo.com, 1
 colf.online, 1
 colibris.xyz, 1
 colinchartier.com, 1
@@ -10284,16 +10422,17 @@ collectiblebeans.com, 1
 collectorknives.net, 1
 collectorsystems.com, 1
 colleencornez.com, 1
 collegeconnexxions.com.au, 1
 collegenavigator.gov, 1
 collegepaperworld.com, 1
 collegeprospectsofcentralindiana.com, 1
 collegereligionandphilosophy.com, 1
+collegesecretary.cn, 1
 collegesecretary.com, 1
 collegestationhomes.com, 1
 collinel-hossari.com, 1
 collinelhossari.com, 1
 collinklippel.com, 1
 collinmbarrett.com, 1
 collins.kg, 1
 colo-tech.com, 1
@@ -10306,16 +10445,17 @@ colorblindprogramming.com, 1
 colorbrush.ru, 1
 colorcodedlyrics.com, 1
 colorectalcompounding.com, 1
 colorfuldots.com, 1
 colorguni.com, 1
 colorhexa.com, 1
 coloringnotebook.com, 0
 coloristcafe.com, 1
+colors3d.com, 1
 colorsbycarin.com, 1
 colossal-events.co.uk, 1
 colotimes.com, 1
 colourfulcastles.co.uk, 1
 colpacpackaging.com, 1
 colson-occasions.be, 1
 coltellisurvival.com, 1
 coltonrb.com, 1
@@ -10349,42 +10489,46 @@ comestoarra.com, 1
 cometbot.cf, 1
 cometcache.com, 1
 cometonovascotia.ca, 1
 comevius.com, 1
 comevius.org, 1
 comevius.xyz, 1
 comff.net, 1
 comfintouch.com, 1
+comflores.com.br, 1
 comfortmastersinsulation.com, 1
 comfun.net, 1
 comfypc.com, 1
 comhack.com, 1
 comicspornos.com, 1
 comicspornow.com, 1
 comicspornoxxx.com, 1
 comicwiki.dk, 1
+comidina.com, 1
 comiq.io, 1
 comiteaintriathlon.fr, 1
+comiteexpertes.gc.ca, 1
 comm.cx, 1
 commania.co.kr, 1
 commco.nl, 1
 commechezvous.ch, 1
 commerce.gov, 1
 commercezen.com, 1
 commercial-academy.fr, 1
 commeunamour.com, 1
 commissaris-vraagbaak.nl, 1
 commissionagenda.com, 1
 commitsandrebases.com, 1
 common.io, 1
 commoncode.com.au, 1
 commoncode.io, 1
 commoncore4kids.com, 1
 commonspace.la, 1
+communalconsulting.org, 1
 communityblog.fedoraproject.org, 1
 communitycodeofconduct.com, 1
 communityflow.info, 1
 communitymanagertorrejon.com, 1
 communote.net, 1
 como-se-escribe.com, 1
 comoaliviareldolor.de, 1
 comoculosdesol.pt, 1
@@ -10442,16 +10586,18 @@ compliancerisksoftware.co.uk, 1
 complt.xyz, 1
 componentshop.co.uk, 1
 compostatebien.com.ar, 1
 compoundingrxusa.com, 1
 compraneta.com, 0
 compraporinternet.online, 1
 comprarefiereygana.com, 1
 comprarimpresoras-3d.com, 1
+comprasoffie.com.br, 1
+compreautomacao.com.br, 1
 compree.com, 1
 comprefitasadere.com.br, 1
 comprehensiveihc.com, 1
 compromised.com, 1
 compservice.in.ua, 1
 comptrollerofthecurrency.gov, 1
 comptu.com, 1
 compubench.com, 1
@@ -10497,37 +10643,40 @@ concordsoftwareleasing.com, 1
 concretehermit.com, 0
 concretelevelingsystems.com, 1
 concreterepairatlanta.com, 1
 concreterepairconcreteraising.com, 1
 concursopublico.com.br, 1
 concursos.com.br, 1
 concursosabertos.com.br, 1
 concursuri.biz, 1
+condecom.com.br, 1
 condepenalba.com, 0
 condesaelectronics.com, 1
 condolencemessages.net, 1
 condominiosi.it, 1
 condominioweb.com, 1
 condosforcash.com, 1
 condroz-motors.be, 1
 conectadev.com, 1
+conectar.ru, 1
 conectumfinanse.pl, 1
 conejovalleyelectrical.com, 1
 conejovalleyelectrician.com, 1
 conejovalleyexteriorlighting.com, 1
 conejovalleylandscapelighting.com, 1
 conejovalleylighting.com, 1
 conejovalleyoutdoorlighting.com, 1
 conexiontransporte.com, 1
 conference.dnsfor.me, 1
 confiancefoundation.org, 1
 confidential.network, 1
 config.schokokeks.org, 0
 confiwall.de, 1
+conformax.com.br, 1
 conformist.jp, 1
 confucio.cl, 1
 congafasdesol.com, 1
 congineer.com, 1
 congobunkering.com, 1
 conju.cat, 1
 conjugacao.com.br, 1
 conkret.ch, 1
@@ -10599,16 +10748,17 @@ construction-student.co.uk, 1
 constructionjobs.com, 1
 constructive.men, 1
 consul.io, 1
 consulenza.pro, 1
 consultation.biz.tr, 1
 consultcelerity.com, 1
 consultimator.com, 1
 consultimedia.de, 1
+consulting-cloud.com, 1
 consultoriadeseguranca.com.br, 1
 consultoriosodontologicos.com.br, 1
 consultpetkov.com, 1
 consulvation.com, 1
 consumeractionlawgroup.com, 1
 consumerfiles.com, 1
 consumersentinel.gov, 1
 consuwijzer.nl, 1
@@ -10630,16 +10780,17 @@ contourheating.co.uk, 1
 contrabass.net, 1
 contractdigital.co.uk, 1
 contractormountain.com, 1
 contractwriters.com, 1
 contraspin.co.nz, 1
 contratatupoliza.com, 1
 contributor.google.com, 1
 controlarlaansiedad.com, 1
+controlautocom.com.br, 1
 controlbooth.com, 1
 controle.net, 1
 controleer-maar-een-ander.nl, 1
 controllertech.com, 1
 controltickets.com.br, 1
 contunda.de, 1
 conv2pdf.com, 1
 convergence.fi, 1
@@ -10735,16 +10886,17 @@ coresolutions.ca, 1
 coresos.com, 1
 coreum.ca, 1
 coreyjmahler.com, 1
 corgi.party, 1
 coribi.com, 1
 corinastefan.ro, 1
 corinnanese.de, 1
 corintech.net, 1
+coriolis.ch, 1
 corisu.co, 1
 corkedwinebar.com, 1
 corksoncolumbus.com, 1
 corl3ss.com, 1
 corlija.com, 1
 corlinde.nl, 1
 corlitocaffe.de, 1
 cornercircle.co.uk, 1
@@ -10875,17 +11027,16 @@ cowboyim.com, 1
 coweo.cz, 1
 coworking-luzern.ch, 1
 coxcapitalmanagement.com, 1
 coxxs.me, 1
 coxxs.moe, 1
 coya.tw, 1
 cozmaadrian.ro, 1
 cozo.me, 1
-cozyeggdesigns.com, 1
 cp-st-martin.be, 1
 cpahunt.com, 0
 cpaneltips.com, 1
 cpap.com, 1
 cpasperdu.com, 1
 cpbanq.com, 1
 cpbapremiocaduceo.com.ar, 1
 cpcheats.co, 1
@@ -10947,16 +11098,17 @@ craftyphotons.net, 1
 crag.com.tw, 1
 craigary.net, 1
 craigbates.co.uk, 1
 craigfrancis.co.uk, 1
 craigleclaireteam.com, 1
 craigrouse.com, 1
 craigwfox.com, 1
 cralarm.de, 1
+cramersoft.com, 1
 crandall.io, 1
 cranems.com.ua, 1
 cranforddental.com, 1
 cranshafengin.com, 1
 crapouill.es, 1
 crashboy.ws, 1
 cratss.co.uk, 1
 crawcial.de, 1
@@ -11032,16 +11184,17 @@ creators.co, 1
 creators.direct, 1
 creatorswave.com, 1
 creatujoya.com, 1
 crecips.com, 1
 credential.eu, 1
 credex.bg, 1
 credigo.se, 1
 crediteo.pl, 1
+creditkarma.com, 1
 creditos-rapidos.com, 1
 creditozen.es, 1
 creditozen.mx, 1
 creditproautos.com, 0
 creditscoretalk.com, 1
 creditta.com, 1
 credittoken.io, 1
 creeks-coworking.com, 1
@@ -11239,16 +11392,17 @@ cscdn.net, 1
 csd-sevnica.si, 1
 csehnyelv.hu, 1
 cselzer.com, 1
 csengle.de, 1
 csfcloud.com, 1
 csfd.cz, 1
 csfloors.co.uk, 1
 csfm.com, 1
+csgf.ru, 1
 csgo.design, 1
 csgo.help, 1
 csgo.su, 0
 csgo77.com, 1
 csgoswap.com, 1
 csgotwister.com, 1
 csharpmarc.net, 1
 cshopify.com, 1
@@ -11326,26 +11480,26 @@ cubile.xyz, 1
 cubing.net, 1
 cublick.com, 1
 cubos.io, 0
 cubostecnologia.com, 0
 cubostecnologia.com.br, 0
 cubua.com, 1
 cuckoopalace.cn, 1
 cuddlingyaks.com, 1
+cueca.com.br, 1
+cuecasonline.com.br, 1
 cuegee.com, 1
 cuentasmutualamr.org.ar, 1
 cuetoems.com, 1
 cuibonobo.com, 1
-cultiv.nl, 1
 cultivo.bio, 1
 cultofd50.org, 1
 cultofperf.org.uk, 1
 cultura10.com, 1
-culture-school.top, 1
 culturedcode.com, 1
 culturerain.com, 1
 cultureroll.com, 1
 culturesouthwest.org.uk, 1
 cumberlandrivertales.com, 1
 cumplegenial.com, 1
 cumshots-video.ru, 1
 cumtd.com, 1
@@ -11609,17 +11763,16 @@ d0xq.com, 1
 d0xq.net, 1
 d2.gg, 1
 d2ph.com, 1
 d2qa61rbluifiq.cloudfront.net, 1
 d2s.uk, 1
 d3lab.net, 1
 d3x.pw, 1
 d3xt3r01.tk, 1
-d3xx3r.de, 1
 d42.no, 1
 d4done.com, 1
 d4fx.de, 1
 d4rkdeagle.tk, 1
 d4wson.com, 1
 d4x.de, 1
 d66.nl, 1
 d6c5yfulmsbv6.cloudfront.net, 1
@@ -11823,16 +11976,17 @@ dannycairns.com, 1
 dannyrohde.de, 1
 dannystevens.co.uk, 1
 danotage.tv, 1
 danoz.net, 1
 danpiel.net, 1
 dansage.co, 1
 danscomp.com, 1
 dansdiscounttools.com, 1
+dansedesalonsaintave.fr, 1
 danselibre.net, 1
 danselibre.org, 1
 danseressen.nl, 1
 dansk777.dk, 1
 danskoferie.dk, 1
 danskoya.com, 1
 danslan.org, 1
 danstillman.com, 1
@@ -11856,16 +12010,17 @@ dara-berlin.de, 1
 daracokorilo.com, 1
 daravk.ch, 1
 darbi.org, 1
 darbtech.net, 1
 darc-mak.de, 1
 darchoods.net, 0
 darcymarshall.com, 1
 dare.deals, 1
+daren.com.br, 1
 dareyou.be, 1
 darf.nl, 1
 dariaburger.de, 1
 darinkotter.com, 1
 darioackermann.ch, 1
 darioclip.com, 1
 dariosirangelo.me, 1
 darioturchetti.me, 1
@@ -11875,17 +12030,16 @@ dark-vision.cz, 1
 dark.ninja, 1
 darkag.ovh, 1
 darkcores.net, 1
 darkdestiny.ch, 1
 darkengine.io, 1
 darkengine.net, 1
 darkerlystormy.com, 1
 darkerstormy.com, 1
-darkestproductions.net, 1
 darkeststar.org, 1
 darkfire.ch, 1
 darkishgreen.com, 1
 darklaunch.com, 1
 darknessflickers.com, 1
 darknetlive.com, 1
 darknight.blog, 1
 darkrisks.com, 1
@@ -11897,17 +12051,16 @@ darkside.re, 1
 darkspacelab.com, 1
 darktime.ru, 1
 darkwater.info, 1
 darkwebnews.com, 1
 darkx.me, 1
 darlo.co.uk, 0
 darmgesundheit.ch, 1
 darom.jp, 1
-daropia.org, 1
 darrenellis.xyz, 1
 darrenm.net, 1
 darrienworth.com, 1
 darshnam.com, 0
 dart-tanke.com, 1
 dart-tanke.de, 1
 dartcode.org, 1
 dartetdemetiers.fr, 1
@@ -11921,22 +12074,24 @@ darylcumbo.net, 1
 das-forum24.de, 1
 das-mediale-haus.de, 1
 das-sommercamp.de, 1
 dasgeestig.nl, 1
 dashboard.run, 1
 dashboard.yt, 1
 dashcloud.co, 1
 dashdrive.net, 1
+dashlane.com, 1
 dashnearby.com, 1
 dashwebconsulting.com, 1
 dasignsource.com, 1
 dasinternetluegt.at, 1
 dasteichwerk.at, 1
 dasug.de, 1
+dat4u.de, 1
 data-detox.com, 1
 data-detox.de, 1
 data-wing.ga, 0
 data.bayern, 1
 data.gov, 1
 data.govt.nz, 1
 data.haus, 1
 data.world, 1
@@ -12014,16 +12169,17 @@ datovyaudit.cz, 1
 datumou-osusume.com, 1
 datumou-recipe.com, 1
 datumstudio.jp, 1
 daubecity.de, 1
 daubehosting.de, 1
 dave-pearce.com, 1
 daveaglick.com, 1
 davecardwell.com, 1
+daveedave.de, 1
 davelynes.com, 1
 daveoc64.co.uk, 1
 daveops.net, 1
 davepage.me.uk, 1
 davepearce.com, 1
 daverandom.com, 1
 davescomputertips.com, 1
 davesharpe.com, 1
@@ -12099,21 +12255,22 @@ dawson-floridavilla.co.uk, 1
 dax.guide, 1
 daxpatterns.com, 1
 daycontactlens.com, 1
 daydream.team, 1
 daylightpirates.org, 1
 dayman.net, 1
 daymprove.life, 1
 dayofdays.be, 1
+dayofthegirl.gc.ca, 1
 days.one, 1
 daysoftheyear.com, 1
+daywalkers-photography.de, 1
 dazz.it, 1
 dazzit.ca, 1
-dazzit.com, 1
 dazzit.net, 1
 dazzit.org, 1
 dazzit.xyz, 1
 db-sanity.com, 1
 db-works.nl, 1
 db.ci, 1
 dbapress.org, 1
 dbaron.org, 1
@@ -12142,16 +12299,17 @@ dc-elektro.de, 1
 dc-elektro.eu, 1
 dc-occasies.be, 1
 dc-solution.de, 0
 dc1.com.br, 1
 dc562.org, 1
 dc585.info, 1
 dcain.me, 1
 dcards.in.th, 1
+dcautomacao.com.br, 1
 dcbouncycastles.co.uk, 1
 dcc.cat, 1
 dccommunity.de, 1
 dcepler.net, 1
 dchatelain.ch, 1
 dchest.org, 1
 dckd.nl, 1
 dcl.re, 1
@@ -12249,16 +12407,17 @@ debigare.com, 1
 debora-singkreis.de, 1
 deborahmarinelli.eu, 1
 debron-ot.nl, 1
 debrusoft.ch, 1
 debt.com, 1
 debtrecycling.com.au, 1
 debuemon.com, 1
 debuis.nl, 1
+dec6.gc.ca, 1
 decaffeinated.io, 1
 decalquai.ch, 1
 decay24.de, 1
 dechat.nl, 1
 decher.de, 1
 decidetreatment.org, 1
 decimatechnologies.eu, 1
 decis.fr, 1
@@ -12270,16 +12429,17 @@ decock-usedcars.be, 1
 decodeanddestroy.com, 1
 decompiled.de, 1
 decoora.com, 1
 decor-d.com, 1
 decor-live.ru, 1
 decoratingadvice.co.uk, 1
 decoratore.roma.it, 1
 decoratrix.com, 1
+decorestilo.com.br, 1
 decorincasa.com.br, 1
 decormiernissanparts.com, 1
 decorumcomics.com, 1
 decosoftware.com, 1
 decrousaz-ceramique.ch, 1
 decrypto.net, 1
 decs.es, 1
 dede.ml, 1
@@ -12322,16 +12482,17 @@ deer.team, 1
 deerfieldapartmentsstl.com, 1
 deezeno.com, 1
 def-pos.ru, 1
 defcon.org, 1
 defcongroups.org, 1
 defeestboek.nl, 1
 defendas.com, 1
 defender-pro.com, 1
+defendersz.com, 1
 defendinnovation.org, 1
 defendtheweb.co.uk, 1
 defero.io, 1
 defi-metier.org, 1
 defimetier.fr, 1
 define-atheism.com, 1
 define-atheist.com, 1
 defineatheism.com, 1
@@ -12349,16 +12510,17 @@ deftig-und-fein.de, 1
 deftnerd.com, 1
 defuse.ca, 1
 defxing.net, 1
 degata.com, 1
 degeberg.com, 1
 degeberg.dk, 1
 degen-elektrotechnik.de, 1
 degit.de, 1
+degoticapunk.xyz, 1
 degoulet.net, 1
 degraafschapdierenartsen.nl, 1
 degracetechnologie.com, 1
 degrasboom.nl, 1
 degressif.com, 1
 degroupage.info, 1
 dehopre.com, 1
 deidee.nl, 1
@@ -12397,17 +12559,16 @@ deliandiver.org, 1
 deliberatedigital.com, 1
 deliciisanatoase.ro, 1
 deliciousmedia.co.uk, 1
 deliciousmedia.net, 1
 delicioustable.com, 1
 delid.cz, 1
 delitto.top, 1
 delivery.co.at, 1
-deliveryiquique.cl, 1
 dellipaoli.com, 1
 delogo.nl, 1
 deloittequant.com, 0
 delorenzi.dk, 1
 delphine.dance, 1
 delta-data.ch, 1
 delta-smart.ch, 1
 delta.ru, 1
@@ -12531,17 +12692,16 @@ derekheld.com, 1
 derekkent.com, 1
 derekseaman.com, 1
 derekseaman.studio, 1
 dergeilstestammderwelt.de, 1
 derhil.de, 1
 derivativeshub.pro, 1
 derive.cc, 1
 derivedata.com, 1
-derk-jan.com, 1
 derkuki.de, 1
 derma-expert.eu, 1
 dermacarecomplex.com, 1
 dermapuur.nl, 1
 dermato.floripa.br, 1
 dermatologie-morges.ch, 1
 dermediq.nl, 1
 dermopigmentista.it, 1
@@ -12605,16 +12765,17 @@ destinationsofnewyorkstate.com, 1
 destinattorneyjohngreene.com, 1
 destinoytarot.com, 1
 destinyofthephoenix.me, 0
 desu.ne.jp, 1
 desuchan.eu, 1
 desuchan.org, 1
 desveja.com.br, 1
 det-te.ch, 1
+detalhecomercio.com.br, 1
 detalika.ru, 1
 detalyedesigngroup.com, 1
 detecmon.com, 1
 detecte-fuite.ch, 1
 detecte.ch, 1
 detectefuite.ch, 1
 detectify.com, 0
 detectivedesk.com.au, 1
@@ -12655,17 +12816,16 @@ dev-greavesindia.pantheonsite.io, 1
 dev-gutools.co.uk, 1
 dev-pulse-mtn.pantheonsite.io, 1
 dev-sev-web.pantheonsite.io, 1
 dev-tek.de, 1
 devafterdark.com, 1
 devagency.fr, 1
 devalps.eu, 1
 devb.nl, 1
-devcast.io, 0
 devcf.com, 1
 devcoins.org, 1
 devct.cz, 0
 devcu.com, 1
 devcu.net, 1
 devdesco.com, 1
 devdoodle.net, 1
 devel.cz, 1
@@ -12682,16 +12842,17 @@ developfx.com, 1
 developmentaid.org, 1
 developmentsites.melbourne, 1
 develops.co.il, 1
 developyourelement.com, 1
 develux.com, 1
 develux.net, 1
 devh.de, 1
 devh.net, 1
+deviajesturismo.com, 1
 deviant.email, 1
 devillers-occasions.be, 1
 devils-point.de, 1
 devilshakerz.com, 1
 deviltraxxx.de, 1
 devinfo.net, 0
 devirc.net, 1
 deviser.wang, 1
@@ -12714,16 +12875,17 @@ devragu.com, 1
 devrandom.net, 1
 devries.one, 1
 devsjournal.com, 1
 devsrvr.ru, 1
 devstaff.gr, 1
 devstroke.io, 1
 devswag.io, 1
 devtestfan1.gov, 1
+devtoys.ru, 1
 devtty.org, 1
 devzero.io, 1
 dewaard.de, 1
 dewalch.net, 1
 dewapress.com, 1
 dewebwerf.nl, 1
 dewinter.com, 1
 dex.top, 1
@@ -12900,16 +13062,17 @@ diethood.com, 1
 dieti.net, 1
 dietlin.com, 1
 dietrich.cx, 1
 dieumfrage.com, 1
 different.cz, 0
 differenta.ro, 0
 diffnow.com, 1
 difoosion.com, 1
+difusordeambientes.com.br, 1
 digcit.org, 1
 digdata.de, 1
 dighans.com, 1
 digiarc.net, 1
 digibild.ch, 1
 digibones.be, 1
 digibull.email, 1
 digibull.link, 1
@@ -12993,20 +13156,23 @@ diju.ch, 1
 dilberkebab.co.uk, 1
 dildoexperten.se, 1
 diletec.com.br, 1
 dilichen.fr, 1
 diligo.ch, 1
 dillewijnzwapak.nl, 1
 dillonkorman.com, 1
 diluv.com, 1
+dimagrimentoincorso.it, 1
 dimanet.fr, 1
 dimanss47.net, 1
+dimdom.com.br, 1
 dime-staging.com, 1
 dime.io, 1
+dimeponline.com.br, 1
 dimeshop.nl, 1
 dimez.ru, 1
 dimiskovska.de, 1
 dimitrihomes.com, 1
 dimmersagourahills.com, 1
 dimmerscalabasas.com, 1
 dimmersdosvientos.com, 1
 dimmershiddenhills.com, 1
@@ -13162,16 +13328,17 @@ dissident.host, 1
 dist-it.com, 1
 dist.torproject.org, 0
 disti.com, 1
 distiduffer.org, 1
 distillery.com, 1
 distinctdesign2009.com, 1
 distinctivephotography.com.au, 1
 distinguishedprisoner.com, 1
+distribuidoracristal.com.br, 1
 distribuidoraplus.com, 1
 distribuidorveterinario.es, 1
 distrilogservices.com, 1
 distro.fr, 1
 ditch.ch, 1
 ditelbat.com, 1
 diti.me, 1
 ditisabc.nl, 1
@@ -13185,27 +13352,29 @@ divegearexpress.com, 1
 divegearexpress.net, 1
 diveidc.com, 1
 diveplan.org, 1
 divergenz.org, 1
 diversifiedproduct.com, 1
 diversityflags.com, 1
 diversityflags.com.au, 1
 diversityflags.nz, 1
+divertiagua.com.br, 1
 divewithfrank.com, 1
 divi-experte.de, 1
 dividendz.net, 1
 divinasaiamodas.com.br, 1
 divinegames.studio, 1
 divineglowinghealth.com, 1
 divinemercyparishvld.com, 1
 diving.photo, 1
 divingwithnic.com, 1
 divisuite.com, 1
 divorcelawyersformen.com, 1
+divvymonkey.com, 1
 diwei.vip, 1
 dixi.fi, 1
 dixibox.com, 1
 dixmag.com, 1
 diybook.at, 1
 diycc.org, 1
 diymediahome.org, 1
 diyosun.com, 1
@@ -13397,23 +13566,25 @@ dogan.ch, 0
 dogcontrol.ca, 1
 dogcratereview.info, 1
 doge.me, 1
 doge.town, 1
 dogear.ch, 1
 dogft.com, 1
 doggedbyirs.com, 1
 doggo.cloud, 1
+doggo.dance, 1
 doggroomingcourse.com, 1
 dogmap.jp, 1
 dogodki.today, 1
 dogoo.com, 1
 dogpawstudio.com, 1
 dogprograms.net, 1
 dogrescuegreece.nl, 1
+dogworld.com.br, 1
 dohanews.co, 1
 doihavetoputonpants.com, 1
 doitauto.de, 1
 dojifish.space, 1
 dojin.nagoya, 1
 dojozendebourges.fr, 1
 dokelio-idf.fr, 1
 doki.space, 1
@@ -13476,26 +13647,28 @@ dominikaner-vechta.de, 1
 dominikkulaga.pl, 1
 dominioanimal.com.br, 1
 dominionregistries.domains, 1
 dominique-haas.fr, 0
 dominoknihy.cz, 1
 dominomatrix.com, 1
 domix.fun, 1
 domizx.de, 1
+dommascate.com.br, 1
 dommelschbierfusten.nl, 1
 domob.eu, 1
 domodeco.fr, 1
 domodedovo.travel, 1
 domop.cc, 1
 domop.net, 1
 domop.org, 1
 domovitae.io, 1
 domovitae.nl, 1
 domprojects.com, 1
+domquixoteepi.com.br, 1
 domscripting.com, 1
 domster.com, 1
 domus-global.com, 1
 domus-global.cz, 1
 domwkwiatach.pl, 1
 domy-drewniane-kanadyjskie.pl, 1
 domyassignments.com, 1
 domycasestudy.com, 1
@@ -13661,16 +13834,17 @@ dounats.com, 1
 douzer.de, 1
 douzer.industries, 1
 dovenzorgmalawi.nl, 1
 dovro.de, 1
 dowell.media, 1
 dowellconsulting.com, 1
 dowhatmakegood.de, 1
 dowling.nz, 1
+download.dk, 1
 downloadaja.com, 1
 downloadgamemods.com, 1
 downloadgram.com, 1
 downloadhindimovie.com, 1
 downloadhindimovie.net, 1
 downloadhindimovies.net, 1
 downloads.zdnet.com, 1
 downloadsoftwaregratisan.com, 1
@@ -13679,17 +13853,16 @@ downthe.pub, 1
 downtimerobot.com, 1
 downtimerobot.nl, 1
 downtownautospecialists.com, 1
 downtownstevenspoint.org, 1
 downtownvernon.com, 1
 dox-box.eu, 1
 doxal.ro, 1
 doyoucheck.com, 0
-doyouedc.com, 1
 doyoulyft.com, 1
 doyoutax.com, 1
 doypacky.cz, 1
 doze-cloud.tech, 1
 dozecloud.com, 1
 dp.cx, 1
 dp2.com.br, 1
 dpd.com.pl, 1
@@ -13852,16 +14025,17 @@ drewapianostudio.com, 1
 dreweryinc.com, 1
 drewsilcock.co.uk, 1
 drewzar.com, 1
 dreyfussplasticsurgery.com, 1
 drezzy.it, 1
 drfranciscofonseca.com.br, 1
 drfrey.ch, 1
 drgdrp.com, 1
+drgiyaseddin.com, 1
 drgn.li, 1
 drgn.no, 1
 drgrace.ca, 1
 drhathazi.hu, 1
 drheibel.com, 1
 drhoseyni.com, 1
 driesjtuver.nl, 1
 driessoftsec.tk, 1
@@ -13919,16 +14093,17 @@ droidgyan.com, 1
 droidhere.com, 1
 droidim.com, 0
 droidwave.com, 1
 droidwiki.de, 1
 drone-it.net, 1
 dronebl.org, 1
 droneland.nl, 1
 dronepit.dk, 1
+dronesz.co, 1
 droni.cz, 1
 dronnet.com, 0
 dronografia.es, 1
 dronova-art.ru, 1
 droomhuis-in-zuid-holland-kopen.nl, 1
 drop.com, 1
 dropbox.com, 1
 dropboxer.net, 1
@@ -14143,19 +14318,21 @@ dustri.org, 1
 dustycloth.com, 1
 dustygroove.com, 1
 dustyro.se, 1
 dustyspokesbnb.ca, 1
 dustywilson.com, 1
 dutch.desi, 1
 dutch1.nl, 1
 dutchdare.nl, 1
+dutchessuganda.com, 1
 dutchfoodie.nl, 1
 dutchforkrunners.com, 1
 dutchrank.nl, 1
+dutchsailors.com, 1
 dutchwanderers.nl, 1
 dutchweballiance.nl, 1
 duval.paris, 1
 duyao.de, 0
 dv189.com, 1
 dvbris.co.uk, 1
 dvbris.com, 1
 dvdinmotion.com, 1
@@ -14188,17 +14365,16 @@ dybuster.com, 1
 dybuster.de, 1
 dybuster.es, 1
 dybuster.it, 1
 dybuster.se, 1
 dycoa.com, 1
 dyeager.org, 1
 dyktig.as, 1
 dyktig.no, 1
-dylanboudro.com, 1
 dylancl.cf, 1
 dylangattey.com, 0
 dylankatz.com, 1
 dylanknoll.ca, 1
 dylanspcrepairs.com, 1
 dylanwise.net, 1
 dylmye.me, 0
 dym.asia, 1
@@ -14272,19 +14448,19 @@ dzsula.hu, 1
 dzyabchenko.com, 1
 dzyszla.pl, 1
 e-baraxolka.ru, 1
 e-bikesdirect.co.uk, 1
 e-biografias.net, 1
 e-borneoshop.com, 1
 e-briancon.com, 1
 e-colle.info, 1
+e-cottage.com.br, 1
 e-enterprise.gov, 1
 e-gemeinde.at, 1
-e-hon.link, 1
 e-id.ee, 1
 e-lambre.com, 1
 e-learningbs.com, 1
 e-lifetechnology.com, 1
 e-mak.eu, 1
 e-migration.ch, 1
 e-ptn.com, 1
 e-speak24.pl, 1
@@ -14338,20 +14514,22 @@ eagleindustriesltd.com, 1
 eaglemessaging.com, 1
 eagleridgecampground.com, 1
 eaglesecurity.com, 1
 eagletechz.com.br, 1
 eaglewreck.info, 1
 eaglexiang.org, 1
 eagleyecs.com, 1
 eaimty.com, 1
+ealadel.com, 1
 ealev.de, 1
 eallion.com, 1
 eames-clayton.us, 1
 eapestudioweb.com, 1
+earfolds.com, 1
 earl.org.uk, 1
 earlydocs.com, 1
 earlyyearshub.com, 1
 earmarks.gov, 1
 earn.com, 1
 earn.wiki, 1
 earth-people.org, 1
 earthsystemprediction.gov, 1
@@ -14457,16 +14635,17 @@ ecardoo.de, 1
 ecardoo.net, 1
 ecardoo.org, 1
 ecchidreams.com, 1
 ecclesia-koeln.de, 1
 ecco-verde.com, 0
 eccux.com, 1
 ecdn.cz, 1
 ecelembrou.ovh, 1
+ecfnorte.com.br, 1
 ecfunstalls.com, 1
 echarity.ae, 1
 echatta.net, 1
 echatta.org, 1
 echi.pw, 1
 echidna-rocktools.eu, 1
 echo-security.co, 1
 echo.cc, 1
@@ -14515,16 +14694,17 @@ ecogen.net.au, 1
 ecoheatcool.co.uk, 1
 ecohostingservices.uk, 1
 ecolala.my, 1
 ecole-attalens.ch, 1
 ecole-iaf.fr, 1
 ecoledusabbat.org, 1
 ecolemathurincordier.com, 1
 ecombustibil.ro, 1
+ecomia.dk, 1
 ecompen.co.za, 1
 ecomycie.com, 1
 econativa.pt, 1
 economiafinanzas.com, 1
 economias.pt, 1
 economic-sanctions.com, 1
 economicinclusion.gov, 1
 economics-colleges.com, 1
@@ -14620,16 +14800,17 @@ edsm.net, 1
 edstep.com, 1
 edtech-hub.com, 1
 edtechwebb.com, 1
 edu-kingdom.com, 1
 edu6.cloud, 1
 eduard-dopler.de, 1
 eduardnikolenko.com, 1
 eduardnikolenko.ru, 1
+edubras.com.br, 1
 educacionvirtual.com.ar, 1
 educatek.es, 1
 educateyourskin.com, 1
 educationevolving.org, 1
 educationfutures.com, 1
 educationmalaysia.co.uk, 1
 educationunlimited.com, 1
 educator-one.com, 1
@@ -14726,16 +14907,17 @@ eftopia.org, 1
 egablo.black, 1
 egamespw.com, 1
 egami.ch, 1
 eganassociates.com.au, 1
 egarden.it, 1
 egb.at, 0
 egbert.net, 1
 egeozcan.com, 1
+eges.eu, 1
 egg-ortho.ch, 1
 eggblast.com, 1
 eggert.org, 0
 eggplant.today, 1
 eggqvq.com, 1
 egicloud.com, 1
 egles.eu, 1
 eglisedenantes.fr, 1
@@ -14750,16 +14932,18 @@ egrojsoft.info, 1
 egrp365.ru, 1
 egumenita.ro, 1
 egw-ceramica.de, 1
 egweb.tv, 1
 ehaccp.it, 1
 ehandel.com, 1
 ehazi.hu, 1
 ehbssl.com, 1
+ehcommerce.com, 1
+ehcommerce.org, 1
 eheliche-disziplin.schule, 1
 ehertz.uk, 1
 ehipaa.com, 1
 ehlacademy.org, 1
 ehmsen.nu, 1
 ehmtheblueline.com, 1
 ehne.de, 1
 ehomusicgear.com, 1
@@ -14782,16 +14966,17 @@ eickhofcolumbaria.com, 1
 eidolons.org, 1
 eifel.website, 1
 eifelindex.de, 0
 eigenbubi.de, 1
 eigenpul.se, 1
 eigenpulse.com, 1
 eighty-aid.com, 1
 eightyfour.ca, 1
+eightysoft.de, 1
 eigpropertyauctions.co.uk, 1
 eihaikyo.com, 1
 eika.as, 1
 eikounoayumi.jp, 1
 eilandprojectkeukens.nl, 1
 eilhan.com, 1
 eimacs.com, 1
 einaros.is, 1
@@ -14852,28 +15037,30 @@ eksisozluk.com, 1
 ekuatorial.com, 1
 ekyu.moe, 1
 ekz-crosstour.ch, 1
 ekzarta.ru, 1
 ekzcrosstour.ch, 1
 el-cell.com, 1
 el-hossari.com, 1
 el-news.de, 1
+elaboratefiction.com, 1
 eladgames.com, 1
 eladlak-ingatlan.com, 1
 elagplus.com, 1
 elainerock.com, 1
 elaon.de, 1
 elars.de, 1
 elarvee.xyz, 1
 elaxy-online.de, 1
 elb500ttl.nl, 1
 elbaal.gov, 1
 elbetech.net, 1
 elblogdegoyo.mx, 1
+elburgozagalicos.com, 1
 elcambiador.es, 1
 elcontadorsac.com, 1
 eldapoint.co.uk, 1
 eldenelesat.com, 1
 eldercare.gov, 1
 elderjustice.gov, 1
 elderoost.com, 1
 eldertons.co.uk, 1
@@ -14951,17 +15138,16 @@ electricimagination.co.uk, 1
 electriclakesherwood.com, 1
 electricmalibu.com, 1
 electricmoorpark.com, 1
 electricnewburypark.com, 1
 electricoakpark.com, 1
 electricsimivalley.com, 1
 electricthousandoaks.com, 1
 electricwestlakevillage.com, 1
-electro-pak.com.pk, 1
 electronic-ignition-system.com, 1
 electronicafacil.net, 1
 electronicfasteners.com, 1
 electrostatics.com, 1
 electrotainment.com, 1
 eled.io, 1
 elefandt.com, 1
 elefantevoador.com, 1
@@ -15016,16 +15202,18 @@ elerizoentintado.es, 0
 eletesstilus.hu, 1
 eletor.com, 1
 eletor.pl, 1
 eletrochape.com.br, 1
 elettricista-roma.it, 1
 elettricista-roma.org, 1
 eleusis-zur-verschwiegenheit.de, 1
 elevateandprosper.com, 1
+elevationcreative.net, 1
+elevationfilms.net, 1
 elevator.ee, 1
 elevatoraptitudetest.com, 1
 elexprimidor.com, 1
 elexwong.com, 1
 elfe.de, 1
 elfnon.com, 1
 elfring.eu, 1
 elfussports.com, 1
@@ -15213,17 +15401,16 @@ emily.moe, 1
 emilyjohnson.ga, 1
 emilypennock.com, 1
 eminhuseynov.com, 1
 emirabiz.com, 0
 emirichardson.com, 1
 emisia.com, 1
 emivauthey.com, 1
 emkanrecords.com, 1
-emkei.cz, 1
 emkrivoy.com, 1
 emma-o.com, 1
 emma.ca, 1
 emma.ly, 1
 emmababy420.com, 1
 emmagraystore.com, 1
 emmanuelle-et-julien.ch, 1
 emmehair.com, 1
@@ -15245,16 +15432,20 @@ empherino.net, 1
 empire-univ.com, 1
 empire24.co, 1
 empireauto-2000.com, 1
 emploi-collectivites.fr, 1
 employeeexpress.gov, 1
 employer.gov, 1
 employer.guru, 1
 employer411.com, 1
+emporiodascalcinhas.com.br, 1
+emporiodosperfumes.com.br, 1
+emporioonline.com.br, 1
+emporiopatanegra.com.br, 1
 emporioviverbem.com.br, 0
 empower.net, 1
 empowerdb.com, 1
 emprechtinger.com, 1
 emprego.pt, 1
 empregosrj.com, 1
 emprunterlivre.ci, 1
 empyrean-advisors.com, 1
@@ -15271,17 +15462,16 @@ en-crypt.me, 1
 en-maktoob.search.yahoo.com, 0
 en4rab.co.uk, 1
 en4u.org, 1
 enaah.de, 1
 enalean.com, 1
 enamae.net, 1
 enbecom.net, 1
 enbulleiugnen.com, 1
-encens.boutique, 1
 encfs.win, 1
 encircleapp.com, 1
 encnet.de, 1
 encode.host, 1
 encodecloud.net, 1
 encoderx.uk, 1
 encore.io, 0
 encouragemarketing.com, 1
@@ -15310,16 +15500,17 @@ endlessvideo.com, 1
 endofinternet.goip.de, 1
 endofnet.org, 1
 endofodo.goip.de, 1
 endoftenancycleaninglondon.co.uk, 1
 endoftennancycleaning.co.uk, 1
 endohaus.us, 1
 endspamwith.us, 1
 enduranceday.be, 1
+endviolence.gc.ca, 1
 endzeit-architekten.com, 0
 eneamarcantoni.com, 1
 enemiesoflight.de, 1
 energie-sante.ch, 1
 energiekeurplus.nl, 1
 energisammenslutningen.dk, 1
 energy-drink-magazin.de, 1
 energy-in-balance.eu, 1
@@ -15423,16 +15614,17 @@ entercenter.ru, 1
 enterprisey.enterprises, 1
 entersoftsecurity.com, 1
 entersynapse.com, 1
 entheogens.com, 1
 entheorie.net, 1
 enthusiaformazione.com, 1
 entradaweb.cl, 1
 entrainr.com, 1
+entravex.com, 1
 entrecieletpierres.com, 1
 entreprise-toiture-clement.fr, 1
 entropia.de, 0
 entrusted.io, 1
 entryboss.cc, 1
 entrypoint.sh, 1
 entwickler.land, 1
 enuchi.jp, 1
@@ -15460,16 +15652,17 @@ eoonglobalresources.jp, 1
 eopugetsound.org, 0
 eos-classic.io, 1
 eosol.de, 1
 eosol.net, 1
 eosol.services, 1
 eosolutions.co, 1
 epa.com.es, 1
 epasar.my, 0
+epaslaugos.lt, 1
 epassafe.com, 1
 epave.paris, 1
 epay.bg, 1
 epaygateway.net, 1
 epdeveloperchallenge.com, 1
 ephesusbreeze.com, 1
 epi-lichtblick.de, 1
 epi.one, 1
@@ -15496,16 +15689,18 @@ epilis.gr, 1
 epinesdeparadis.com, 1
 epiphanyofourlordchurch.com, 1
 epiphyte.network, 1
 episkevh-plaketas.gr, 1
 epistas.com, 1
 epistas.de, 1
 epitesz.co, 1
 epiteugma.com, 1
+epitome.cc, 1
+epitome.games, 1
 epizentrum.work, 1
 epizentrum.works, 1
 epmcentroitalia.it, 1
 epo32.ru, 1
 epoch.com, 1
 epolitiker.com, 1
 epos-distributor.co.uk, 1
 epos.az, 1
@@ -15544,17 +15739,19 @@ eqorg.com, 1
 equalcloud.com, 1
 equallove.me, 1
 equalparts.eu, 1
 equeim.ru, 1
 equidam.com, 1
 equinecoaching.ca, 1
 equinetherapy.ca, 1
 equinox.io, 1
+equipandoloja.net.br, 1
 equipedefrance.tv, 1
+equipeferramentas.com.br, 1
 equk.co.uk, 1
 er-mgmt.com, 1
 er-music.com, 1
 er.tl, 1
 er1s.xyz, 1
 erad.fr, 1
 erasmo.info, 1
 erasmusplusrooms.com, 1
@@ -15566,25 +15763,26 @@ ereader.uno, 1
 erecciontotalal100.com, 1
 erectiepillenwinkel.nl, 1
 erethon.com, 1
 erf-neuilly.com, 1
 ergo-open.de, 1
 ergobyte.eu, 1
 ergobyte.gr, 1
 ergodark.com, 1
+ergovita.com.br, 1
+ergovitanet.com.br, 1
 eriador.io, 1
 ericabrahamsen.net, 1
 ericairwin.com, 1
 ericdiao.com, 1
 erichogue.ca, 1
 erichorstmanshof.nl, 1
 ericjohnltd.com, 1
 erick.blog, 1
-ericleuthardt.com, 1
 ericloud.tk, 1
 erico.jp, 1
 ericoc.com, 1
 erics.site, 1
 ericspeidel.de, 1
 ericwie.se, 1
 ericyl.com, 1
 eridanus.uk, 1
@@ -15799,30 +15997,32 @@ escortlistings.us, 1
 escortlistingsuk.co.uk, 1
 escortmantra.com, 1
 escritoriodearte.com, 0
 escuelabiblica.com, 1
 escyr.top, 1
 esd.cc, 1
 esdenera.com, 1
 esdiscuss.org, 1
+esdvfootloose.nl, 1
 eservices-greece.com, 1
 eseth.de, 1
 esg-abi2001.de, 1
 esgen.org, 1
 esgr.in, 1
 esh.ink, 1
 eshigami.com, 1
 eshobe.com, 1
 eshop-prices.com, 1
 eshspotatoes.com, 1
 eshtapay.com, 1
 esibun.net, 1
 esigmbh.de, 1
 esigtorg.ru, 1
+esim.cz, 1
 esite.ch, 1
 eskdale.net, 1
 eskriett.com, 1
 eslint.org, 1
 esmincg2t1.com, 1
 esmoney.cc, 1
 esmoney.me, 1
 esoa.net, 1
@@ -15847,16 +16047,17 @@ espanolseguros.com, 1
 espanova.com, 1
 espci.fr, 1
 especificosba.com.ar, 1
 espehus.dk, 1
 espenandersen.no, 1
 espgg.org, 1
 espigol.org, 1
 espiritugay.com, 1
+esport-agency.fr, 1
 esport-battlefield.com, 1
 esports-network.de, 1
 espower.com.sg, 1
 espritrait.com, 1
 esquirou-trieves.fr, 1
 esrhd.com, 1
 esrinfo.com, 1
 esrs.gov, 1
@@ -15873,16 +16074,17 @@ essaylib.com, 1
 essaynews.com, 1
 essaypro.net, 1
 essayscam.org, 1
 essayshark.com, 0
 essaytalk.com, 1
 essaywriting.biz, 1
 essenalablog.de, 1
 essenceofvitalitydetox.com, 1
+essenciasparis.com.br, 1
 essential12.com, 1
 essentialoilsimports.com, 1
 essentiel-physique.com, 1
 esseriumani.com, 1
 essex.cc, 1
 essexcosmeticdentists.co.uk, 0
 essite.net, 1
 esslm.sk, 1
@@ -15899,20 +16101,22 @@ estate360.co.tz, 1
 estateczech-eu.ru, 1
 estcequejailaflemme.fr, 0
 estcequonmetenprodaujourdhui.info, 1
 esteam.se, 1
 estedafah.com, 1
 estefan.dyndns.org, 1
 esteladigital.com, 1
 esterilizacion-perros.es, 1
+esteticanorte.com.br, 1
 estetista.net, 1
 estherlew.is, 1
 esthernariyoshi.com, 1
 esthesoleil.jp, 1
+estilopack-loja.com.br, 1
 estoic.net, 1
 estonia.net, 1
 estoniantrade.ee, 1
 estonoentraenelexamen.com, 1
 estoppels.com, 1
 estoqueinformatica.com.br, 1
 estraks.com, 1
 estrietoit.com, 0
@@ -16065,16 +16269,17 @@ europeanpreppers.com, 1
 europeantimberconnectors.ca, 1
 europeantransportmanagement.com, 1
 europeanwineresource.com, 1
 europeos.es, 1
 europetravelservice.co.uk, 1
 europop.com, 1
 eurora.de, 1
 eurorecambios24.com, 1
+euroroad17.dk, 1
 euroscot.de, 1
 euroshop.or.at, 1
 euroskano.nl, 1
 eurostrategy.vn.ua, 1
 eurotime.ua, 1
 eurotramp.com, 1
 eurotravelstar.eu, 1
 eurousa.us, 1
@@ -16166,16 +16371,17 @@ everythinq.com, 1
 everytrycounts.gov, 1
 everywhere.cloud, 1
 eveshaiwu.com, 1
 eveshamglass.co.uk, 1
 eveswell.com, 1
 evexia.xyz, 1
 evidence-based.review, 1
 evidencebased.net, 1
+evidenceusa.com.br, 1
 evidencija.ba, 1
 evidentiasoftware.com, 1
 evilbeasts.ru, 1
 evilbunnyfufu.com, 1
 evileden.com, 1
 evilized.de, 1
 evilmartians.com, 1
 evilness.nl, 1
@@ -16300,16 +16506,17 @@ expeditiegrensland.nl, 1
 experienceoutdoors.org.uk, 1
 experienceoz.com.au, 1
 experise.fr, 1
 expert-korovin.ru, 1
 expert.cz, 1
 experteasy.com.au, 1
 expertnews.info, 1
 expertofficefitouts.com.au, 1
+expertpanel.gc.ca, 1
 expertsverts.com, 1
 expertvagabond.com, 1
 expertviolinteacher.com, 1
 expii.com, 1
 expiscor.solutions, 1
 explodie.org, 1
 explodingcamera.com, 1
 exploflex.com.br, 1
@@ -16324,16 +16531,17 @@ exploravacations.in, 1
 explorebigideas.com, 1
 exploremonero.com, 1
 exploringenderby.com, 1
 expmind.co.in, 1
 expo-america.ru, 1
 expo-asia.ru, 1
 expo-europe.ru, 1
 expo-larionov.org, 1
+exponentialnews.net, 1
 expoort.co.uk, 1
 expoort.com, 1
 expoort.com.br, 1
 expoort.es, 1
 expoort.fr, 1
 expoort.it, 1
 expopodium.com, 1
 exporta.cz, 1
@@ -16406,16 +16614,18 @@ eyenote.gov, 1
 eyeonid.com, 1
 eyep.me, 1
 eyes-berg.ch, 1
 eyes-berg.com, 1
 eyesandearsrescue.org, 1
 eynio.com, 1
 eyona.com, 1
 eyps.net, 1
+eyrelles-tissus.com, 1
+eythorsson.com, 1
 eytosh.net, 1
 eyyit.com, 0
 eyyubyilmaz.com, 1
 ez3d.eu, 1
 ezakazivanje.rs, 1
 ezdog.press, 1
 ezequiel-garzon.net, 1
 ezesec.com, 1
@@ -16458,18 +16668,16 @@ f88yule5.com, 1
 f88yule6.com, 1
 f88yule7.com, 1
 f88yule8.com, 1
 fa-works.com, 1
 fabbro-roma.org, 1
 fabbro.roma.it, 1
 faber.org.ru, 1
 fabian-fingerle.de, 1
-fabian-klose.com, 1
-fabian-klose.de, 1
 fabian-klose.net, 1
 fabian-kluge.de, 1
 fabianackle.ch, 1
 fabianasantiago.com, 1
 fabianbeiner.com, 0
 fabianbeiner.de, 0
 fabianfranke.de, 1
 fabiankoeppen.com, 1
@@ -16486,16 +16694,18 @@ fabriziorocca.com, 1
 fabriziorocca.it, 1
 fabrykowski.com, 1
 fabrysociety.org, 1
 fabse.net, 1
 fabulouslyyouthfulskin.com, 1
 fabulouslyyouthfulskineyeserum.com, 1
 facai666.cc, 1
 facai888.cc, 1
+facanabota.com, 1
+facanabota.com.br, 1
 facarospauls.com, 1
 faccess.it, 1
 facciadastile.it, 1
 face-fashion.de, 1
 face-mania.com, 1
 facealacrise.fr, 1
 facebattle.com, 1
 facebook-atom.appspot.com, 1
@@ -16504,23 +16714,25 @@ facebook.com, 0
 facebydrh.com, 1
 facebylouise.co.uk, 1
 facekungfu.com, 1
 facepainting.gr, 1
 facepalmsecurity.com, 1
 facepunch.org, 1
 facerepo.com, 1
 faceresources.org, 1
+facesdr.com, 1
 facesnf.com, 1
 fach-journalist.de, 1
 fachmann-umzuege.de, 1
 fachschaftslisten.at, 1
 fachschaftslisten.org, 1
 facialexercising.com, 1
 facil.services, 0
+faciledireto.com.br, 1
 facilities.fr, 1
 facilitiessurvey.org, 1
 facilitrak.com, 1
 facility-service-muenchen.de, 1
 facingbipolar.com, 1
 fackovcova.cz, 1
 fackovcova.eu, 1
 fackovcova.sk, 1
@@ -16547,16 +16759,17 @@ faehler.de, 1
 faelix.net, 1
 faerb.it, 1
 faerie-art.com, 1
 faeriecakes.be, 1
 faeservice.eu, 1
 fafarishoptrading.com, 1
 fafatiger.com, 1
 fag.wtf, 1
+faggut.gg, 1
 fahnamporn.com, 1
 fahnen-fanwelt.de, 1
 fahrenwal.de, 1
 fahrenwalde.de, 1
 fahrschule-laux.de, 1
 fahrwerk.io, 1
 fai.gov, 1
 faidanoi.it, 1
@@ -16577,16 +16790,17 @@ fairssl.se, 1
 fairviewmotel-simcoe.com, 1
 fairydust.space, 1
 faithcentercogop.net, 1
 faithgrowth.com, 1
 faithindemocracy.eu, 0
 faithleaks.org, 1
 faithmissionaries.com, 1
 faithwatch.org, 1
+faixaazul.com, 1
 fakeapple.nl, 1
 fakeduckpond.com, 1
 fakeemergency.com, 1
 fakerli.com, 1
 fakti.bg, 1
 faktotum.tech, 1
 fakturi.com, 1
 fakturoid.cz, 1
@@ -16612,17 +16826,16 @@ fallenangelspirits.com, 1
 fallenmystic.com, 1
 fallenspirits.co.uk, 1
 falling.se, 1
 fallofthecitadel.com, 1
 false.in.net, 1
 falsum.net, 1
 fam-kreibich.de, 1
 fam-stemmer.de, 0
-fam-weyer.de, 1
 famcloud.de, 1
 famdouma.nl, 1
 fameng.nl, 1
 famep.gov, 1
 famer.me, 1
 fameus.fr, 1
 fameuxhosting.co.uk, 1
 famfi.co, 1
@@ -16686,32 +16899,34 @@ fantasyspectrum.com, 1
 fantasysportsnews.org, 1
 fantopia.club, 1
 fantraxhq.com, 1
 fanvoice.com, 1
 fanyina.cn, 1
 fanyina.com, 1
 fanyue123.tk, 1
 fanz.pro, 1
+fanzhencha.com, 1
 fanzlive.com, 1
 fap.no, 1
 faq.ie, 1
 faq.lookout.com, 0
 fara.gov, 1
 faradji.nu, 1
 faradome.ws, 1
 faradrive.ir, 1
 faraonplay5.com, 1
 faraonplay7.com, 1
 faraonplay8.com, 1
 faraslot8.com, 1
 faraslot8.net, 1
 farcecrew.de, 1
 farces.com, 0
 faretravel.co.uk, 1
+farfallapets.com.br, 1
 farfetchos.com, 1
 fargtorget.se, 1
 farhadexchange.com, 1
 farhood.org, 1
 farid.is, 1
 farizizhan.com, 1
 farleybrass.com.au, 1
 farleymetals.com.au, 1
@@ -16770,17 +16985,19 @@ fassi-sport.it, 1
 fast-host.net, 1
 fast-pro.co.jp, 1
 fastaim.de, 1
 fastbackmbg.be, 1
 fastbackmbm.be, 1
 fastblit.com, 1
 fastcash.com.br, 1
 fastcomcorp.com, 1
+fastcommerce.org, 1
 fastconfirm.com, 1
+fastconv.com, 1
 fastcp.top, 1
 fastest-hosting.co.uk, 1
 fastforwardsociety.nl, 1
 fastforwardthemes.com, 1
 fastinviter.com, 1
 fastlike.co, 1
 fastmail.com, 0
 fastonline.ro, 1
@@ -16792,16 +17009,17 @@ faszienrollen-info.de, 0
 fatalerrorcoded.eu, 1
 fateandirony.com, 1
 fatecdevday.com.br, 1
 fatedata.com, 1
 fateitalia.it, 1
 fatherhood.gov, 1
 fathers4equalrights.org, 1
 fatidique.com, 1
+fatimamoldes.com.br, 1
 fatmixx.com, 1
 fator25.com.br, 1
 fatowltees.com, 1
 fatox.de, 1
 faucetbox.com, 0
 faui2k17.de, 0
 faultlines.org, 1
 faulty.equipment, 1
@@ -16816,25 +17034,27 @@ fbcdn.net, 1
 fbcfairburn.com, 1
 fbcopy.com, 1
 fbf.gov, 1
 fbi.gov, 1
 fbigame.com, 1
 fbiic.gov, 1
 fbijobs.gov, 1
 fbo.gov, 1
+fboerman.nl, 1
 fbrief.org, 1
 fbsbx.com, 1
 fbtholdings.com, 1
 fburl.com, 1
 fbwgynplus.com, 1
 fbwgynplus.com.au, 1
 fc.media, 1
 fca-tools.com, 1
 fcapartsdb.com, 1
+fcbarcelona.cz, 1
 fcburk.de, 1
 fccarbon.com, 1
 fcdn.nl, 1
 fcforum.net, 1
 fcingolstadt.de, 1
 fcitasc.com, 1
 fcosinus.com, 1
 fcprovadia.com, 1
@@ -16844,27 +17064,29 @@ fdaregs.com, 1
 fdevs.ch, 1
 fdicig.gov, 1
 fdicoig.gov, 1
 fdlibre.eu, 1
 fdms.gov, 1
 fdn.one, 1
 fdos.me, 1
 fdp-brig-glis.ch, 1
+fdpbrig.ch, 1
 fdresearch.ca, 1
 fdsys.gov, 0
 feac.us, 1
 feaden.me, 1
 feandc.com, 1
 fearby.com, 1
 fearghus.org, 1
 fearsomegaming.com, 1
 feastr-dev.de, 1
 feastr.de, 1
 feastr.io, 1
+feat.agency, 1
 featherweightlabs.com, 1
 featuredmen.com, 0
 feb.gov, 1
 fedbizopps.gov, 1
 fedcenter.gov, 1
 federalinvestments.gov, 1
 federaljobs.gov, 1
 federalreserve.gov, 1
@@ -16889,34 +17111,37 @@ feedbin.com, 0
 feedermarket.net, 1
 feedfall.com, 1
 feedhq.org, 1
 feedkovacs.hu, 1
 feedough.com, 1
 feedstringer.com, 1
 feedthefuture.gov, 1
 feeeei.com, 1
+feeg-wage.gc.ca, 1
 feegg.com.br, 1
 feek.fit, 1
 feel-events.com, 1
 feel.aero, 1
 feelgood-workouts.de, 1
 feelmom.com, 1
 feeltennis.net, 1
 feen.us, 1
 feepod.com, 1
 feeriedesign-event.com, 1
 feestbierfusten.nl, 1
 feetpa.ws, 1
 feezmodo.com, 0
 fefelovalex.ru, 1
+feg-wge.gc.ca, 1
 fegame.eu, 1
 fegame.mobi, 1
 fegame.net, 1
 fegame.nl, 1
+fegc-wgec.gc.ca, 1
 fegli.gov, 1
 fehngarten.de, 1
 feigling.net, 0
 feildel.fr, 1
 feilen.de, 1
 feirlane.org, 0
 feisbed.com, 1
 feisim.com, 1
@@ -16935,29 +17160,32 @@ felicifia.org, 1
 felinepc.com, 1
 felistirnavia.sk, 1
 felix-hirner.de, 1
 felixaufreisen.de, 1
 felixbarta.de, 1
 felixcrux.com, 1
 felixgenicio.com, 1
 felixkauer.de, 1
+felixklein.com, 1
 felixqu.com, 1
 felixsanz.com, 1
 felixseele.de, 1
 felsing.net, 1
 felsmalerei.net, 1
 femaex.com.br, 1
 femanca.com, 1
 femastudios.com, 1
 femdombbw.com, 1
 femiluna.com, 1
 feminina.pt, 1
 feminism.lgbt, 1
 feministwiki.org, 1
+femmes-women.gc.ca, 1
+femmes.gc.ca, 1
 femtomind.com, 1
 fence-stlouis.com, 1
 feng-hhcm.com, 1
 feng-in.com, 1
 feng-in.net, 1
 feng.si, 1
 fengyadi.com, 1
 fengyi.tel, 1
@@ -16975,16 +17203,17 @@ ferienchalet-wallis.ch, 1
 ferienhaeuser-krummin.de, 1
 ferienhaus-polchow-ruegen.de, 0
 ferienhausprovence.ch, 1
 ferienwohnung-hafeninsel-stralsund.de, 1
 ferienwohnung-wiesengrund.eu, 1
 ferienwohnungen-lastminute.de, 1
 feriespotter.dk, 1
 ferm-rotterdam.nl, 1
+fermabel.com.br, 1
 fermanacuratampaparts.com, 1
 fernandes.org, 1
 fernandob.com, 1
 fernandobarata.pt, 1
 fernandobarillas.com, 1
 fernandomiguel.net, 1
 feross.net, 1
 feross.org, 1
@@ -17033,16 +17262,17 @@ ff-getzersdorf.at, 1
 ff-obersunzing-niedersunzing.de, 1
 ff14-mstdn.xyz, 0
 ffb.gov, 1
 ffbsee.net, 1
 ffh.me, 1
 ffiec.gov, 1
 ffis.me, 1
 ffkoenigsberg.de, 1
+fflone.com, 1
 ffmradio.de, 1
 ffprofile.com, 1
 ffrev.de, 1
 ffsociety.nl, 1
 ffta.eu, 1
 ffw-zeven.de, 1
 ffzeven.de, 1
 fgdc.gov, 1
@@ -17165,16 +17395,17 @@ finagosolo.com, 1
 final-expense-quotes.com, 1
 finalprice.net, 1
 finalrewind.org, 1
 finalx.nl, 1
 finance-colleges.com, 1
 financejobs.ch, 1
 financepark.ch, 1
 financewithcromulent.com, 1
+financialfreedomaus.com, 1
 financniexperti.sk, 1
 finansa.no, 1
 finanstilsynet.dk, 1
 finch.am, 1
 finchi.de, 1
 finchnest.co.uk, 1
 find-job-in.com, 1
 find-mba.com, 1
@@ -17206,16 +17437,17 @@ finenet.com.tw, 1
 finesoon.net, 1
 finevegashomes.com, 1
 finewineonline.com, 1
 finfev.de, 1
 finflix.net, 1
 finform.ch, 1
 fingerscrossed.style, 1
 fini-de-jouer.ch, 1
+finilaviolence.gc.ca, 1
 finisron.in, 1
 finkelstein.fr, 1
 finkmartin.com, 1
 finlandcook.online, 1
 finlandcook.top, 1
 finn.io, 1
 finnclass.cz, 1
 finneas.net, 1
@@ -17321,16 +17553,17 @@ fit-4u.ch, 1
 fit-mit-nina.com, 1
 fit-mit-system.eu, 1
 fit365.jp, 0
 fitchannel.com, 1
 fitinclass.com, 1
 fitkram.cz, 1
 fitness-challenge.co.uk, 1
 fitness.gov, 1
+fitnessunder50.com, 1
 fitrate.site, 1
 fitseven.ru, 1
 fittelo.cz, 1
 fitzsim.org, 1
 fiuxy.bz, 1
 fiuxy.co, 1
 fiuxy.me, 1
 fiuxy.org, 1
@@ -17417,16 +17650,17 @@ fleetcor.fr, 1
 fleetcor.hu, 1
 fleetcor.lu, 1
 fleetcor.nl, 1
 fleetcor.pl, 1
 fleetcor.sk, 1
 fleetcorcards.be, 1
 fleetsmith.com, 1
 fleetssl.com, 1
+fleetyards.net, 1
 flehm.de, 1
 fleisch.club, 1
 flemingtonaudiparts.com, 1
 flers-agglo.fr, 1
 flerstourisme.fr, 1
 fletcherdigital.com, 1
 fletchto99.com, 1
 fletemaritimo.online, 1
@@ -17464,19 +17698,17 @@ fliino.net, 1
 fliino.org, 1
 fliio.com, 1
 flikmsg.co, 1
 flinch.io, 1
 fling.dating, 1
 flip.kim, 1
 flipneus.net, 1
 fliptable.org, 1
-flirt-norden.de, 1
 flirtee.net, 1
-flirtfaces.de, 1
 flirtos.de, 1
 flixports.com, 1
 flmortgagebank.com, 1
 floatationlocations.com, 1
 floaternet.com, 1
 flockbox.club, 1
 flocktofedora.org, 1
 floersheimer-openair.de, 1
@@ -17504,16 +17736,17 @@ florentynadawn.co.uk, 1
 floresvilleedc.org, 1
 florian-bachelet.fr, 1
 florian-thie.de, 1
 florian2833z.de, 1
 floriankarmen.com, 1
 floriankeller.de, 1
 florianmitrea.uk, 1
 florianschmitt.ca, 1
+floriantanner.ch, 1
 floridafabrication.net, 1
 floridafieros.org, 1
 floridagulfbeachrealty.com, 1
 floridahomesinvest.com, 1
 floridasexhealth.com, 1
 florinapp.com, 1
 florinlungu.it, 1
 florismoo.nl, 1
@@ -17576,16 +17809,17 @@ flyss.net, 1
 flyssh.net, 1
 flyswoop.com, 1
 flyt.online, 1
 flytoadventures.com, 1
 fm-cdn.de, 1
 fm.ie, 1
 fmapplication.com, 1
 fmarchal.fr, 1
+fmbilder.se, 1
 fmc.gov, 1
 fmdance.cl, 1
 fminsight.net, 1
 fmodoux.biz, 1
 fmstr.ml, 1
 fmussatmd.com, 1
 fnanen.net, 1
 fnbnokomis.com, 1
@@ -17616,16 +17850,17 @@ fojing.com, 1
 fojt.cz, 1
 fojtova.cz, 1
 fojtovi.cz, 1
 fokan.be, 1
 fokep.no, 1
 fokkusu.fi, 1
 fol.tf, 1
 folio.no, 1
+foliumbiosciences.com, 1
 foljeton.dk, 1
 folk.as, 1
 folkadelic.de, 1
 follandviolins.com, 1
 followback.net, 1
 follower98.ir, 1
 followerrocket.com, 1
 followersya.com, 1
@@ -17779,16 +18014,17 @@ forum3.ru, 1
 forumvoordemocratie.nl, 1
 forvisualdesign.com, 1
 forward-fly-fishing.ch, 1
 foryouandyourcustomers.com, 1
 foryourhealthybody.com, 1
 fosaudit.com, 1
 foscamcanada.com, 1
 fosdem.org, 1
+fosgreece.com, 1
 foshanshequ.com, 0
 fossewayflowers.co.uk, 1
 fossewayflowers.com, 1
 fossforward.com, 1
 fossilfreeyale.org, 1
 fosterpark.ca, 1
 fotella.com, 1
 fotikpro.ru, 1
@@ -17798,17 +18034,16 @@ foto-leitner.com, 1
 foto-leitner.de, 1
 foto-robitsch.at, 1
 foto-roma.ru, 1
 foto.by, 1
 fotoboxvysocina.cz, 1
 fotofaerie.net, 1
 fotoflits.net, 1
 fotografechristha.nl, 1
-fotografiadellalucerossa.com, 1
 fotografiamakro.pl, 1
 fotohome.dk, 1
 fotokomorkomania.pl, 1
 fotoleitner.com, 1
 fotoleitner.de, 1
 fotonjan.com, 1
 fotostravestisbr.com, 1
 fotostudio-leitner.com, 1
@@ -17983,17 +18218,16 @@ free.com.tw, 1
 free8.xyz, 1
 freeassangenow.org, 1
 freeasyshop.com, 1
 freebarrettbrown.org, 1
 freebcard.com, 1
 freeben666.fr, 1
 freebetoffers.co.uk, 1
 freebies.id, 1
-freeblog.me, 1
 freebookmakersbetsandbonuses.com.au, 1
 freeboson.org, 1
 freebsdbrasil.com.br, 1
 freebus.org, 1
 freecam2cam.site, 1
 freecloud.at, 1
 freecookies.nl, 1
 freedev.cz, 1
@@ -18171,16 +18405,17 @@ frogsonamission.de, 1
 froh.co.jp, 1
 frokenblomma.se, 1
 frolov.net, 1
 frolova.org, 1
 from-the-net.com, 1
 fromix.de, 1
 fromlemaytoz.com, 1
 fromscratch.rocks, 1
+fromthemonks.com, 1
 fromthesoutherncross.com, 1
 fronteers.nl, 0
 frontier-ad.co.jp, 1
 frontier.bet, 1
 frontierdiscount.com, 1
 frontiers.nl, 1
 frontline.cloud, 1
 frontlinemessenger.com, 1
@@ -18297,16 +18532,17 @@ fukuko.biz, 1
 fukuko.xyz, 1
 fukushimacoffee.com, 1
 fulfilmentcrowd.com, 1
 fulgenzis.com, 1
 fuliwang.info, 1
 fuliwang.us, 1
 full-race.com, 1
 full-stack.ninja, 1
+fullautomotivo.com.br, 1
 fullbundle.com, 1
 fullereno.com, 1
 fullerlife.org.uk, 1
 fullfilez.com, 1
 fullhost.com, 1
 fullhub.ru, 1
 fullmatch.net, 1
 fullnitrous.com, 1
@@ -18329,16 +18565,17 @@ funadvisor.ca, 1
 funadvisorfrance.com, 1
 funandbounce.com, 1
 funatic.nl, 1
 funbouncelincs.co.uk, 1
 funchestra.at, 0
 functional.cc, 1
 functions-online.com, 1
 fundacionfranciscofiasco.org, 1
+fundavi.jp, 1
 fundayltd.com, 1
 fundays.nl, 1
 fundchan.com, 1
 fundeego.com, 1
 fundort.ch, 1
 funds.ddns.net, 1
 funfactorleeds.co.uk, 1
 funfair.io, 1
@@ -18481,16 +18718,17 @@ fysiomassageoosterhout.nl, 1
 fysiotherapieholtenbroek.nl, 1
 fysiotherapienieuwveen.nl, 1
 fysiotherapierossum.nl, 1
 fysiovdberg.nl, 1
 fysuite.com, 1
 fytcart.com, 1
 fzbrweb.cz, 1
 fzhyzamt.com, 1
+fztopsec.com, 1
 fzx750.ru, 1
 g-ds.de, 1
 g-m-w.eu, 1
 g-p-design.com, 1
 g-rom.net, 1
 g.co, 1
 g01.in.ua, 1
 g0881.com, 1
@@ -18592,16 +18830,17 @@ gallerify.eu, 1
 galletasgabi.com.mx, 0
 galleyfoods.com, 1
 gallicrooster.com, 1
 gallifreyapp.co.uk, 1
 gallifreypermaculture.com.au, 1
 gallmeyer-consulting.com, 1
 gallun-shop.com, 1
 galoserver.org, 1
+galpaoap.com.br, 1
 galvingao.com, 1
 gam3rs.de, 1
 gamberorosso.menu, 1
 gambetti.fr, 1
 gambit.pro, 1
 gambitnash.co.uk, 1
 gambitnash.com, 1
 gambitprint.com, 1
@@ -18632,26 +18871,28 @@ gameguardian.net, 1
 gameharbor.duckdns.org, 1
 gameharbor.eu, 1
 gameindustry.de, 1
 gameisbest.jp, 1
 gamekaitori.jp, 1
 gamekeepers.cz, 1
 gamekeysuche.de, 1
 gamemodding.com, 1
+gamenauta.com.br, 1
 gamenerd.net, 1
 gameofbay.org, 1
 gamepad.com.br, 1
 gameplaysforkids.com, 1
 gamepreorders.com, 1
 gamequest.info, 1
 gamer-portal.com, 1
 gamercredo.com, 1
 gamereader.de, 1
 gamerepublic.hu, 1
+gameres.com, 1
 gamerezo.com, 1
 gamerwares.com, 1
 gamerzdot.com, 1
 games4theworld.org, 1
 gamesaviour.com, 1
 gamesdepartment.co.uk, 1
 gameserver-sponsor.me, 1
 gameshowchallenge.ie, 1
@@ -18908,18 +19149,20 @@ geiser-family.ch, 1
 geitenijs.com, 1
 gekosoft.eu, 1
 gelb-computer.de, 1
 geld-im-blick.de, 1
 geld24.nl, 1
 geldimblick.de, 1
 geldteveel.eu, 1
 geleenbeekdal.nl, 1
+geleia-real.com, 1
 geli-graphics.com, 1
 gelis.ch, 1
+gelodosul.com.br, 1
 gelog-software.de, 0
 gelonghui.com, 1
 geloofindemocratie.nl, 0
 geluidsstudio.com, 1
 geluk.io, 1
 gelukkigehonden.nl, 1
 gem-indonesia.net, 0
 gem-info.fr, 1
@@ -18982,17 +19225,17 @@ genosse-einhorn.de, 1
 genossen.ru, 1
 genoveve.de, 1
 gensend.com, 1
 gensenwedding.jp, 1
 genshiken-itb.org, 1
 gensicke.de, 1
 genslerapps.com, 1
 genslerwisp.com, 1
-gensokyo.chat, 1
+gensokyo.chat, 0
 gensokyo.re, 1
 gensonline.eu, 1
 gentianes.ch, 1
 gentoo-blog.de, 1
 gentooblog.de, 1
 genusshotel-riegersburg.at, 1
 genxnotes.com, 1
 geocar.com, 1
@@ -19073,17 +19316,16 @@ get-erp.ru, 1
 get-it-live.com, 1
 get-it-live.de, 1
 get-link.info, 1
 get-on.bid, 1
 get-refer.com, 1
 get.how, 1
 get2getha.org, 1
 get4x.com, 1
-geta.pub, 1
 getbonfire.com, 1
 getbooks.co.il, 1
 getbox.me, 1
 getbreadcrumbs.com, 1
 getbrowink.com, 1
 getbutterfly.com, 1
 getcloak.com, 0
 getcolq.com, 1
@@ -19109,16 +19351,17 @@ getgeek.no, 1
 getgeek.nu, 1
 getgeek.pl, 1
 gethow.org, 1
 gethttpsforfree.com, 1
 geti2p.com, 1
 getidmcc.com, 1
 getimgs.com, 1
 getinphase.com, 1
+getintopc.com, 1
 getitlive.de, 1
 getitpeople.com, 1
 getlawyered.com.au, 1
 getleanflorida.gov, 1
 getmango.com, 1
 getmdl.io, 1
 getmerch.eu, 1
 getmovil.com, 1
@@ -19225,25 +19468,27 @@ giardinaggio.napoli.it, 1
 giardiniere.bologna.it, 1
 giardiniere.milano.it, 1
 gibraltar.at, 1
 gichigamigames.com, 1
 gicl.dk, 1
 gidari.shop, 1
 giddyaunt.net, 1
 giebel.it, 1
+giemall.com, 1
 gierds.de, 1
 giethoorn.com, 1
 gietvloergarant.nl, 0
 gifino.fr, 1
 giftcard.net, 1
 giftcardgranny.com, 1
 giftedconsortium.com, 1
 giftking.nl, 0
 giftlist.guru, 1
+giftmaniabrilhos.com.br, 1
 gifts.best, 1
 gifts365.co.uk, 1
 giftsn.com.sg, 0
 giftya.com, 1
 gifudodo.com, 1
 gifzilla.net, 0
 gig-raiffeisen.de, 1
 gig.ru, 0
@@ -19260,16 +19505,17 @@ gigis-pizzeria.de, 1
 gigis.cloud, 1
 gigiscloud.servebeer.com, 1
 giglink.club, 1
 gigolodavid.be, 1
 gigseekr.com, 1
 gigtroll.eu, 1
 gijsbertus.com, 1
 gijswesterman.nl, 1
+gikovatelojavirtual.com.br, 1
 gilangcp.com, 0
 gileadpac.com, 1
 gilescountytn.gov, 1
 giliamor.com, 1
 gilium.com, 1
 gillesdesnoyers.com, 1
 gillesmorelle.com, 1
 gillfamily.de, 1
@@ -19371,16 +19617,17 @@ glabiatoren-kst.de, 1
 glaciernursery.com, 1
 gladwellentertainments.co.uk, 1
 gladysstrickland.com, 1
 glahcks.com, 1
 glamguru.co.il, 1
 glamguru.world, 1
 glamour4you.de, 1
 glamourdaze.com, 1
+glamouria.com.br, 1
 glasdon.com, 1
 glasen-hardt.de, 1
 glasfaser-im-hanseviertel.de, 1
 glasgestaltung.biz, 1
 glasner.photo, 1
 glaspe.com, 1
 glass.google.com, 1
 glasschmuck-millefiori.de, 1
@@ -19418,25 +19665,27 @@ global-village.koeln, 1
 globalbridge-japan.com, 1
 globalcanineregistry.com, 1
 globalchokepoints.org, 1
 globalcomix.com, 1
 globalgivingtime.com, 1
 globalgovernancewatch.org, 1
 globalhealth.gov, 1
 globalhorses.de, 1
+globalinvestigations.co.uk, 1
 globalipaction.ch, 1
 globalisierung-fakten.de, 1
 globalitac.com, 1
 globalityinvestment.com, 1
 globalmoneyapp.com, 1
 globalno.me, 1
 globalnomadvintage.com, 1
 globalonetechnology.com, 1
 globalperspectivescanada.com, 1
+globalprojetores.com.br, 1
 globalresearchcouncil.org, 1
 globalresistancecorporation.com, 1
 globaltennis.ca, 1
 globalventil.com, 1
 globalvisions-events.ch, 1
 globalvisions-events.com, 1
 globcoin.io, 1
 globelink-group.com, 1
@@ -19451,17 +19700,16 @@ gloomyspark.com, 1
 gloomyvancouver.com, 1
 gloria.tv, 1
 glosiko.com, 1
 glossopnorthendafc.co.uk, 1
 glotech.co.uk, 1
 glotechkitchens.co.uk, 1
 glotechrepairs.co.uk, 1
 glu3cifer.rocks, 1
-glueck-im-norden.de, 1
 gluecksgriff-taschen.de, 1
 glueckskindter.de, 1
 gluedtomusic.com, 1
 gluit.de, 1
 glutenfreelife.co.nz, 1
 glutenfreevr.com, 1
 glykofridis.nl, 1
 glyph.ws, 1
@@ -19471,23 +19719,25 @@ gm.search.yahoo.com, 0
 gmacedo.com, 1
 gmail.com, 0
 gmanukyan.com, 1
 gmbh-kiekin.de, 1
 gmc.uy, 1
 gmccar.it, 1
 gmcd.co, 1
 gmdu.net, 1
+gme.one, 1
 gmind.ovh, 1
 gmod.de, 1
 gmpark.dk, 1
 gmpartsdb.com, 1
 gmslparking.co.uk, 1
 gmta.nl, 1
 gmtplus.co.za, 1
+gmuh.fr, 1
 gmw-hannover.de, 1
 gmw-ingenieurbuero.de, 1
 gmx.at, 1
 gmx.ch, 1
 gmx.co.uk, 1
 gmx.com, 1
 gmx.de, 1
 gmx.es, 1
@@ -19562,16 +19812,17 @@ goerres2014.de, 1
 goetemp.de, 1
 goetic.space, 1
 goettinger-biergarten.de, 1
 goffrie.com, 1
 gofigure.fr, 0
 goflipr.com, 1
 goflo.net, 1
 gofoiayourself.org, 1
+gogetssl.com, 0
 gogle-analytics.com, 1
 gogleapis.com, 1
 gogoodyear.eu, 1
 gogroopie.com, 1
 gogroopie.ie, 1
 gogrow.com, 1
 gogsat.com, 1
 gohon.org, 1
@@ -19626,17 +19877,16 @@ gomelphoto.com, 1
 gommista.roma.it, 1
 gondawa.com, 1
 gondelvaartdwarsgracht.nl, 1
 gongjianwei.com, 1
 gongjuhao.com, 1
 gonx.dk, 0
 gonzalesca.gov, 1
 goo.gl, 1
-good-tips.pro, 1
 good588.com, 1
 gooday.life, 1
 gooddomainna.me, 1
 goodfeels.net, 1
 goodhealthtv.com, 1
 goodiesoftware.xyz, 1
 goodquote.gq, 1
 goodryb.top, 1
@@ -19685,17 +19935,16 @@ goshawkdb.io, 1
 goshin-group.co.jp, 1
 goshow.tv, 1
 gosnipe.com, 1
 gosolockpicks.com, 1
 gospelfollower.com, 1
 gospelofmark.ch, 1
 gospelvestcination.de, 1
 gostaffer.com, 1
-gostargazing.co.uk, 1
 gostest.org, 0
 gostudy.net, 1
 gosu.pro, 1
 gosuland.org, 1
 got-tty.de, 1
 goteborgsklassikern.se, 1
 gotech.com.eg, 0
 gothamlimo.com, 1
@@ -19752,17 +20001,19 @@ gps.com.br, 1
 gpsarena.ro, 1
 gpscamera.nl, 1
 gpsfix.cz, 1
 gpsolarpanels.com, 1
 gpsvideocanada.com, 1
 gpureport.cz, 1
 gpws.ovh, 1
 gpyy.net, 1
+gqmstore.com.br, 1
 gr.search.yahoo.com, 0
+gr8engineer2b.com, 1
 gra2.com, 1
 graandco.com, 0
 graasp.net, 0
 grabacabpa.com, 1
 grabi.ga, 1
 grace-wan.com, 1
 gracebaking.com, 0
 gracedays.org, 1
@@ -19823,16 +20074,17 @@ grannys-stats.com, 1
 grannyshouse.de, 1
 grantcooper.com, 1
 grantdb.ca, 1
 granth.io, 1
 grantmorrison.net, 1
 grantplatform.com, 1
 grantsplatform.com, 1
 granular.ag, 1
+graonatural.com.br, 1
 grapee.jp, 1
 grapeintentions.com, 1
 grapevine.is, 1
 graph.org, 1
 graphcommons.com, 1
 graphene.software, 1
 graphic-schools.com, 1
 graphic-shot.com, 1
@@ -20361,16 +20613,17 @@ hackerone-user-content.com, 1
 hackerone.at, 1
 hackerone.blog, 1
 hackerone.com, 1
 hackerone.net, 1
 hackerone.org, 1
 hackerschat.net, 1
 hackerstxt.org, 1
 hackettrecipes.com, 1
+hackgins.com, 1
 hackingand.coffee, 0
 hackingdh.com, 1
 hackingondemand.com, 1
 hackingsafe.com, 1
 hackmd.io, 1
 hackmeimfamo.us, 1
 hackmeplz.com, 1
 hackreone.com, 1
@@ -20433,16 +20686,17 @@ halacs.hu, 1
 halbich.design, 1
 halcyonsbastion.com, 1
 haleo.net, 1
 half-logic.eu.org, 1
 half.host, 1
 halfco.de, 1
 halfhosting.de, 1
 halfwaythere.eu, 1
+halitopuroprodutos.com.br, 1
 halkirkbouncycastles.co.uk, 1
 halkyon.net, 1
 hallelujahsoftware.com, 1
 halletienne.fr, 1
 hallhuber.com, 1
 halliday.work, 1
 halligladen.de, 1
 hallmarkestates.ca, 1
@@ -20483,16 +20737,17 @@ handgelenkbandage-test.de, 1
 handicaps-ensemble.org, 1
 handknit.com.np, 1
 handlecoin.com, 1
 handleidingkwijt.com, 1
 handmade-workshop.de, 1
 handmadehechoamano.com, 1
 handmadetutorials.ro, 1
 handyglas.com, 1
+handyklinik.info, 1
 handymanlondonplease.co.uk, 1
 handynummer-info.ch, 1
 handynummer.online, 1
 handysex.live, 1
 handyticket.de, 1
 hanfox.co.uk, 0
 hanfverband-erfurt.de, 1
 hang333.moe, 1
@@ -20534,16 +20789,17 @@ hanyibo.com, 1
 hanying6.com, 1
 hanys.xyz, 1
 hanzcollection.online, 1
 hanzubon.jp, 1
 hao-zhang.com, 1
 haocq3.com, 1
 haogoodair.ca, 1
 haoqi.men, 1
+haorenka.org, 1
 haozhang.org, 1
 haozhexie.com, 1
 haozi.me, 1
 haozijing.com, 1
 hapheemraadssingel.nl, 1
 hapijs.cn, 1
 hapissl.com, 1
 hapivm.com, 1
@@ -20588,17 +20844,16 @@ hardfalcon.net, 1
 hardforum.com, 1
 hardh.at, 1
 hardhat.io, 1
 hardrain980.com, 1
 hardtfrieden.de, 1
 hardtime.ru, 1
 hardwareschotte.de, 1
 harekaze.info, 1
-harelmallac.com, 1
 harelmallacglobal.com, 1
 haribilalic.com, 1
 harilova.fr, 1
 harion.fr, 1
 harisht.me, 0
 haritsa.co.id, 1
 harjitbhogal.com, 1
 harlor.de, 1
@@ -20771,32 +21026,32 @@ hdrtranscon.com, 1
 hds-lan.de, 1
 hdtwinks.com, 1
 hdv.paris, 1
 hdwallpapers.net, 1
 hdy.nz, 1
 heaaart.com, 1
 head.org, 1
 head.ru, 1
+headforcloud.com, 1
 headjapan.com, 1
 headlinepublishing.be, 1
 headshopinternational.com, 1
 headshotharp.de, 1
 healike.hk, 1
 health-and-beauty-news.net, 1
 health-match.com.au, 1
 health-plan-news.com, 1
 health.gov, 1
 health.graphics, 1
 healthand-beautynews.net, 1
 healthandskinbeauty.com, 1
 healthcare.gov, 0
 healthcultureexpo.com, 1
 healthdata.gov, 1
-healtheals.com, 1
 healtheffectsofasbestos.com, 1
 healthery.com, 1
 healthfinder.gov, 1
 healthfoam.com, 1
 healthgames.co.uk, 1
 healthiergenerations.co.uk, 1
 healthit.gov, 1
 healthmatchapp.com, 1
@@ -20811,23 +21066,23 @@ healthyfitfood.com, 1
 healthypeople.gov, 1
 healthyrecharge.com, 1
 healthyteame.com, 1
 heap.zone, 1
 heapkeeper.org, 1
 hearinghelpexpress.com, 1
 hearingshofar.com, 1
 hearmeraw.uk, 1
-heartbeat24.de, 1
 heartgames.pl, 1
 heartlandbiomed.com, 1
 heartmdinstitute.com, 1
 heartsintrueharmony.com, 1
 heartsucker.com, 0
 hearttruth.gov, 1
+heartview.com.br, 1
 heartwoodart.com, 1
 hearty.blog, 1
 hearty.ga, 1
 hearty.gq, 1
 hearty.ink, 1
 hearty.me, 1
 hearty.ml, 1
 hearty.ooo, 1
@@ -20895,17 +21150,16 @@ heimonen.eu, 1
 heimprofis.de, 1
 heinemeier.dk, 1
 heinpost.nl, 0
 heinzelmann.co, 1
 heiraten-gardasee.de, 1
 heiraten-venedig.de, 1
 heisenberg.co, 1
 heissluft-fritteuse.com, 1
-heistheguy.com, 1
 heitepriem.info, 1
 heitland-it.de, 1
 heiwa-valve.co.jp, 0
 hejahanif.se, 1
 hejianpeng.cn, 1
 hejsupport.se, 1
 heka.ai, 1
 hekeki.com, 1
@@ -20951,17 +21205,19 @@ helloyemek.com, 1
 hellsgamers.pw, 1
 hellsh.com, 1
 help.simpletax.ca, 1
 help207.xyz, 1
 helpantiaging.com, 1
 helpconnect.com.au, 1
 helpekwendenihospital.com, 1
 helpmij.cf, 1
+helprocleaningservices.com, 1
 helpscoutdocs.com, 1
+helpstarloja.com.br, 1
 helptasker.com, 1
 helptasker.net, 1
 helptasker.ru, 1
 helpwithinsomnia.org, 1
 helpwithmybank.gov, 1
 helsenorge.no, 1
 helserbrothers.com, 1
 helsingfors.guide, 1
@@ -21067,34 +21323,32 @@ herrtxbias.org, 1
 hertsbouncycastles.com, 1
 hertz.bj, 1
 herzbotschaft.de, 1
 herzfuersoziales.at, 1
 herzig.cc, 1
 herzogglass.com, 1
 herzwacht.de, 1
 hesaplama.net, 1
-hessen-liebe.de, 1
 hesslag.com, 1
 hestervanderheijden.nl, 1
 hestia-systeme.be, 1
 hestia-systeme.com, 1
 hestia-systeme.eu, 1
 hestia-systeme.fr, 1
 hesyifei.com, 1
 hetene.nl, 1
 hethely.ch, 1
 hetluisterbos.be, 1
 hetmeisjeachterpauw.nl, 1
 hetmer.cz, 1
 hetzflix.stream, 1
 heute-kaufen.de, 1
 heute.training, 1
 hevertonfreitas.com.br, 1
-hex.nl, 1
 hexacon.io, 1
 hexadecimal.tech, 1
 hexagon-e.com, 1
 hexapt.com, 1
 hexclock.io, 1
 hexcode.in, 1
 hexed.it, 1
 hexiaohu.cn, 1
@@ -21137,31 +21391,33 @@ hhmmmm.de, 1
 hhs.gov, 1
 hhuitvaart.nl, 1
 hialatv.com, 1
 hibari.moe, 1
 hiccupsandjuice.co.uk, 1
 hickorywinecellar.com, 1
 hicl.org, 1
 hicoria.com, 1
+hicts.nl, 1
 hidbo.de, 1
 hiddendepth.ie, 1
 hiddenhillselectric.com, 1
 hiddenhillselectrical.com, 1
 hiddenhillselectrician.com, 1
 hiddenhillsexteriorlighting.com, 1
 hiddenhillslandscapelighting.com, 1
 hiddenhillslighting.com, 1
 hiddenhillsoutdoorlighting.com, 1
 hiddenmalta.net, 1
 hideallip.com, 1
 hidedd.com, 1
 hideo54.com, 1
 hideouswebsite.com, 1
 hideout.agency, 0
+hidroshop.com.br, 1
 hieu.com.au, 1
 hig.gov, 1
 higgsboson.tk, 1
 higgstools.org, 1
 highair.net, 1
 higherpress.org, 1
 highland-webcams.com, 1
 highlandparkcog.org, 1
@@ -21172,17 +21428,16 @@ highlightsfootball.com, 1
 highlnk.com, 1
 highspeed-arnsberg.de, 1
 highspeedinternet.my, 1
 hightechbasementsystems.com, 1
 hightechgadgets.net, 1
 hightimes.com, 1
 highwaytohoell.de, 1
 higilopocht.li, 1
-hijackpost.com, 1
 hikarukujo.com, 1
 hike.pics, 1
 hikerone.com, 1
 hikinggearlab.com, 1
 hikingguy.com, 1
 hilahdih.cz, 1
 hilaolu.com, 1
 hilaryhutler.com, 1
@@ -21202,16 +21457,17 @@ hilnu.com, 1
 hiltonarubabeachservices.com, 1
 himalaya-cross.com, 1
 himalaya.video, 1
 himcy.ga, 1
 himecorazon.com, 1
 himekomi.com, 1
 himiku.com, 1
 hin10.com, 1
+hinaryazan.com, 1
 hinata-hidetoshi.com, 1
 hindi-movie.org, 1
 hindimoviedownload.net, 1
 hindimovieonline.net, 1
 hingle.me, 1
 hintergrundbewegung.de, 1
 hinterhofbu.de, 1
 hinterposemuckel.de, 1
@@ -21256,22 +21512,24 @@ historia-arte.com, 1
 historiasdepueblo.es, 1
 history-schools.com, 1
 history.google.com, 1
 history.gov, 1
 history.pe, 1
 hitandhealth.nl, 1
 hitchpin.com, 1
 hitchunion.org, 1
+hitechgr.eu, 1
 hiteco.com, 1
 hiteshbrahmbhatt.com, 1
 hititgunesi-tr.com, 1
 hitmanstat.us, 1
 hitn.at, 1
 hitoapi.cc, 0
+hitocom.net.br, 1
 hitokoto-mania.com, 1
 hitokoto.cn, 1
 hitomecha.com, 1
 hitrek.ml, 1
 hitter-lauzon.com, 1
 hitter.family, 1
 hitterfamily.com, 1
 hiv-symptome.de, 1
@@ -21283,26 +21541,24 @@ hiverlune.net, 1
 hiwiki.tk, 1
 hiyacar.co.uk, 1
 hiyobi.me, 1
 hiyuki2578.net, 1
 hizzacked.xxx, 1
 hj-mosaiques.be, 1
 hj.rs, 1
 hj3455.com, 1
-hj99vip.com, 1
 hjartasmarta.se, 1
 hjes.com.ve, 1
 hjkbm.cn, 1
 hjort.land, 1
 hjortland.org, 1
 hjphoto.co.uk, 1
 hjtky.cn, 1
 hjw-kunstwerk.de, 1
-hjyl9898.com, 1
 hk.search.yahoo.com, 0
 hkas.org.hk, 1
 hkbsurgery.com, 1
 hkdobrev.com, 1
 hkr.at, 1
 hks-projekt.at, 1
 hks.pw, 1
 hktech.com, 1
@@ -21336,16 +21592,17 @@ hnonline.sk, 1
 hnrk.io, 1
 hnyp.hu, 1
 hoaas.no, 1
 hoarding.me, 1
 hoathienthao.com, 1
 hoathienthao.vn, 1
 hobby-drechselei.de, 1
 hobbyspeed.com, 1
+hoberg.ch, 1
 hochdorf-tennis.de, 1
 hochhaus.us, 1
 hochoukikikiraku.com, 1
 hochyi.com, 1
 hochzeit-dana-laurens.de, 1
 hochzeitsfotograf-deinfoto.ch, 1
 hochzeitsplanerin-hamburg.de, 1
 hockeyapp.ch, 1
@@ -21372,17 +21629,16 @@ hogarthdavieslloyd.com, 1
 hoge.se, 1
 hogepad.com, 1
 hogl.dk, 1
 hogrebe.de, 1
 hogwarts.io, 1
 hohenleimbach.de, 1
 hohm.in, 1
 hohnet.com, 0
-hoikuen-now.top, 1
 hoiquanadida.com, 1
 hoish.in, 0
 hoken-wakaru.jp, 1
 hokioisecurity.com, 1
 hokung.xyz, 1
 hokusya.com, 1
 holadinero.es, 1
 holadinero.mx, 1
@@ -21448,16 +21704,17 @@ homecheck.gr, 1
 homecoming.city, 1
 homecompost.in, 1
 homefacialpro.com, 0
 homegardeningforum.com, 1
 homegardenresort.nl, 1
 homegreenmark.com, 1
 homehuntertoronto.com, 1
 homeimagician.com.au, 1
+homelab.farm, 1
 homelabquotes.com, 1
 homeland.ie, 1
 homem-viril.com, 1
 homeodynamics.com, 1
 homeofjones.net, 1
 homeogenium.com, 1
 homeownersinsurancenevada.com, 1
 homeownersinsurancenv.com, 1
@@ -21535,44 +21792,46 @@ hoponmedia.de, 1
 hopps.me, 1
 hoppyx.com, 1
 hopzone.net, 1
 hor.website, 1
 horaceli.com, 1
 horackova.info, 1
 horairetrain.fr, 1
 hord.ca, 1
-horecaapparatuurkobezuijen.nl, 1
 horecatiger.eu, 1
 horeco.com, 1
 horeizai.net, 1
 horgenberg.com, 1
 horizonhomes-samui.com, 1
 horizonlawncare.tk, 1
 horizonresourcesinc.com, 1
 horizonshypnosis.ca, 1
 horizzon.cloud, 1
 horkel.cf, 1
 horn.co, 1
 hornertranslations.com, 1
 hornyforhanzo.com, 1
+horoca.net, 1
 horodance.dk, 1
 horrell.ca, 1
 horrendous-servers.com, 1
 horror-forum.de, 1
 horrormovies.gr, 1
 horrorserv.com, 1
 horsegateway.com, 1
 horsehunter.co.uk, 1
 horstmanshof.eu, 1
 horton-brasses.com, 1
 horvathd.eu, 1
 horvatnyelvkonyv.hu, 1
 hory.me, 1
 horza.org, 1
+hoshimaq.com.br, 1
+hoshimaquinas.com.br, 1
 hoshinplan.com, 1
 hoshisato.com, 1
 hosiet.me, 1
 hosmussynergie.nl, 0
 hospitalhomelottery.org, 1
 hospitality-colleges.com, 1
 hostadvice.com, 1
 hostam.link, 1
@@ -21641,16 +21900,17 @@ hotelsinbuxton.com, 1
 hotelsinformer.com, 1
 hotelsinncoventry.com, 1
 hotelsolinebrela.com, 1
 hotelvalena.com, 1
 hotelvillaluisa.de, 1
 hotesb.com, 1
 hotesb.net, 1
 hothbricks.com, 1
+hothiphopmusic.com, 1
 hotjuice.com, 1
 hotnewhiphop.com, 1
 hoto.us, 1
 hoton.in, 1
 hotornot.com, 1
 hotplate.co.nz, 1
 hotplug.gr, 1
 hottaro.com, 1
@@ -21808,17 +22068,16 @@ httpswatch.ca, 1
 httpswatch.com, 1
 httptest.net, 1
 hu.search.yahoo.com, 0
 hu8188.com, 1
 hu8518.com, 1
 hu8555.com, 1
 hu8588.com, 1
 hu8777.com, 1
-hu8bet.com, 1
 hu8hu8.com, 1
 hua-in.com, 1
 hua-in.net, 1
 hua-li88.com, 1
 hua-li88.net, 1
 huabianwa.com, 1
 huagati.com, 1
 huahinpropertylisting.com, 1
@@ -21863,16 +22122,17 @@ hudingyuan.cn, 1
 hudrydum.cz, 1
 hudsonfaceandeye.com, 1
 huduser.gov, 1
 huendeleskopfhuette.de, 1
 huersch.com, 1
 hues-in-lee.de, 1
 huffduffer.com, 1
 huffsinsurance.com, 1
+hugh-dancy.com, 1
 hughtodd.ink, 1
 hugi.is, 1
 huglen.info, 1
 hugo.pro, 1
 hugo6.com, 1
 hugofs.com, 1
 hugolynx.fr, 1
 hugonote.ml, 1
@@ -21937,16 +22197,17 @@ humblebee.uk, 1
 humblebee.us, 1
 humblebeeshop.ca, 1
 humblebeeshop.com.au, 1
 humbledot.com, 1
 humboldthomeguide.com, 1
 humboldtmfg.com, 1
 humeur.de, 1
 humexe.com, 1
+humio.com, 1
 hummingbird.services, 1
 hummy.tv, 1
 humpchies.com, 1
 humpen.se, 1
 humppakone.com, 1
 hund.io, 1
 hundeformel.de, 1
 hundesport-psvhalle.de, 1
@@ -21992,23 +22253,23 @@ huwcbjones.co.uk, 1
 huwcbjones.uk, 1
 huwjones.me, 1
 huxcoconstruction.com, 1
 huxley.net, 1
 huynhviet.com, 1
 huyvu.nl, 1
 huzurmetal.net, 1
 hvdbox.de, 1
+hvenetworks.cf, 1
 hveradistributions.com, 1
 hverdagogkink.no, 1
 hvh.no, 1
 hvmk.nl, 1
 hvrint.de, 1
 hvtuananh.com, 1
-hwaddress.com, 1
 hwag-pb.de, 1
 hwlibre.com, 1
 hx53.de, 1
 hxp.io, 1
 hxsf.me, 1
 hxying.com, 1
 hy1.com, 1
 hybridiyhdistys.fi, 1
@@ -22062,29 +22323,31 @@ hypotecnicentrum.cz, 1
 hypothecairelening.net, 1
 hypotheekbond.nl, 1
 hypotheques24.ch, 1
 hypothes.is, 1
 hypothesis.link, 1
 hypothyroidmom.com, 1
 hyr.mn, 1
 hysh.jp, 1
+hysolate.com, 1
 hytale.com, 1
 hyundai.no, 1
 hyvanilmankampaamo.fi, 1
 hyvinvointineuvoja.fi, 1
 hyvive.com, 1
 hyyen.com, 1
 hztgzz.com, 1
 i--b.com, 1
 i-0v0.in, 1
 i-aloks.ru, 1
 i-geld.de, 1
 i-hakul.net, 1
 i-logic.co.jp, 0
+i-meto.com, 1
 i-office.com.vn, 1
 i-proswiss.com, 1
 i-red.info, 1
 i-scream.space, 1
 i-sports.cz, 1
 i-stats.net, 1
 i-telligence.de, 1
 i-verbi.it, 1
@@ -22160,16 +22423,21 @@ iberiaversicherungen.com, 1
 ibericaderedes.es, 1
 ibericarbenet.es, 1
 ibericarcuzco.es, 1
 ibericarcuzcomini.es, 1
 ibericarempresas.es, 1
 ibericarformula.es, 1
 ibericargestoso.es, 1
 ibericarmotors.es, 1
+ibericarmotorsmalaga.es, 1
+ibericarmovilcentro.es, 1
+ibericarmovilsur.es, 1
+ibericarreicomsa.es, 1
+ibericartechnik.es, 1
 ibestreview.com, 1
 ibexcore.com, 1
 ibigawamizueco.com, 1
 ibin.co, 1
 ibiz.mk, 1
 iblackfriday.ro, 1
 ibna.online, 1
 ibodyiq.com, 1
@@ -22190,41 +22458,45 @@ ibykos.com, 1
 ic-lighting.com.au, 1
 ic-spares.com, 1
 ic3.gov, 1
 icafecash.com, 1
 icanhasht.ml, 1
 icarlos.net, 1
 icasture.top, 1
 icbemp.gov, 1
+icci.info, 1
 iccpublisher.com, 1
 icdp.org.ua, 1
 ice.xyz, 1
 icebat.dyndns.org, 1
 iceberg.academy, 1
 icebook.co.uk, 1
 icebound.win, 1
 icecars.net, 1
 icecontrol.ro, 1
 icedream.tech, 1
+icelandicasian.com, 1
 iceloch.com, 1
 icetiger.eu, 1
 icewoman.net, 1
 ich-hab-die-schnauze-voll-von-der-suche-nach-ner-kurzen-domain.de, 1
 ich-tanke.de, 1
 ichasco.com, 1
 ichbinein.org, 1
 ichbinkeinreh.de, 1
 ichmachdas.net, 1
 ickerseashop.com, 1
+iclart.com, 1
 iclinic.ua, 1
 icloudlogin.com, 1
 icmhd.ch, 1
 icmp2018.org, 1
 icmshoptrend.com, 0
+icnc.ga, 0
 icnsoft.cf, 1
 icnsoft.ga, 1
 icnsoft.ml, 1
 icnsoft.org, 1
 icobench.com, 1
 icodeconnect.com, 1
 icoh.it, 1
 iconomi.net, 1
@@ -22256,17 +22528,17 @@ id.fedoraproject.org, 0
 id.mayfirst.org, 0
 id.search.yahoo.com, 0
 id7.fr, 1
 idaeus.eu, 1
 idahoansforliberty.net, 1
 idarv.com, 1
 idaspis.com, 1
 idatha.de, 1
-idblab.tk, 1
+idbs.com, 1
 idc-business.be, 1
 idc.yn.cn, 1
 idconsult.nl, 1
 idcrane.com, 1
 iddconnect.com, 1
 iddconnect.org, 1
 ideadozz.hu, 1
 ideal-envelopes.co.uk, 0
@@ -22355,18 +22627,16 @@ if0.ru, 1
 ifan.ch, 1
 ifan.ws, 1
 ifangpei.cn, 1
 ifangpei.com.cn, 1
 ifasec.de, 0
 ifcfg.jp, 1
 ifcfg.me, 1
 ifelse.io, 1
-ifengge.cn, 1
-ifengge.me, 1
 ifgcdn.com, 1
 ifibe.com, 1
 ifightsurveillance.com, 1
 ifightsurveillance.net, 1
 ifightsurveillance.org, 1
 ifixe.ch, 1
 iflare.de, 1
 ifly.pw, 1
@@ -22480,17 +22750,16 @@ ikkbb.de, 1
 ikke-coach.nl, 1
 ikkev.de, 1
 ikkoku.de, 1
 iklive.org, 0
 ikmx.net, 1
 iknet.top, 1
 ikparis.com, 1
 ikraenglish.com, 0
-iktisatbank.com, 1
 ikudo.top, 1
 ikulist.me, 1
 ikumi.us, 1
 ikuuuu.com, 1
 ikvts.de, 1
 ikwilthepiratebay.org, 1
 ikzoekeengoedkopeauto.nl, 1
 ila.fi, 1
@@ -22594,16 +22863,17 @@ imask.ml, 1
 imawhale.com, 1
 imbianchino.roma.it, 1
 imbrian.org, 1
 imbushuo.net, 1
 imcsi.cn, 1
 imcsx.co, 1
 imdemos.com, 1
 ime.moe, 1
+imedes.de, 1
 imedi.co.uk, 1
 imedi.it, 1
 imediafly.com, 1
 imedikament.de, 1
 imeds.pl, 1
 imefuniversitario.org, 1
 imeid.de, 0
 imex-dtp.com, 1
@@ -22658,16 +22928,17 @@ imobile3.com, 1
 imokuri123.com, 1
 imoner.com, 1
 imoner.ga, 1
 imouto.my, 0
 imouyang.com, 1
 impact.health.nz, 1
 impacter.eu, 1
 impactfestival.be, 1
+impactingsports.com, 1
 impactpub.ch, 1
 impakho.com, 1
 impas.se, 1
 impelup.com, 1
 impendulo.org, 1
 impera.at, 1
 imperdin.com, 1
 imperdintechnologies.com, 1
@@ -22956,16 +23227,17 @@ infranoto.com, 1
 infranox.com, 1
 infrapass.com, 1
 infrapeer.com, 1
 infrapilot.com, 1
 infraping.com, 1
 infrapirtis.lt, 1
 infrarank.com, 1
 infrarank.net, 1
+infraredradiant.com, 1
 infraspin.com, 1
 infratank.com, 1
 infratask.com, 1
 infrathink.com, 1
 infratrip.com, 1
 infravibe.com, 1
 infravideo.com, 1
 infravoce.com, 1
@@ -22993,16 +23265,17 @@ ingolonde.pw, 1
 ingoschlueter.de, 1
 ingredientdaddy.ro, 1
 ingridbai.me, 1
 inhaltsangabe.de, 1
 inheritestate.com, 1
 inhouseents.co.uk, 1
 iniiter.com, 1
 inima.org, 1
+iningrui.com, 1
 inios.fr, 1
 inishbofin.ie, 1
 initq.net, 1
 initramfs.io, 1
 initrd.net, 1
 inixal.com, 1
 injapan.nl, 1
 injigo.com, 0
@@ -23049,17 +23322,16 @@ innovaptor.com, 1
 innovate-indonesia.com, 1
 innovation-workshop.ro, 1
 innovation.gov, 1
 innovativebuildingsolutions.co.za, 1
 innovativeideaz.org, 1
 innover.se, 1
 innovere.co.uk, 1
 innovum.cz, 0
-innsalzachsingles.de, 1
 innwan.com, 1
 inoa8.com, 1
 inobun.jp, 1
 inondation.ch, 1
 inorder.website, 1
 inovatecsystems.com, 1
 inoxandco.com, 1
 inoxdesign.fr, 1
@@ -23077,18 +23349,20 @@ insblauehinein.nl, 1
 inschrijfformulier.com, 1
 inscomers.net, 1
 inscribe.ai, 1
 inscripcionessena.com, 1
 insecret.co.ua, 1
 insecret.com.ua, 1
 insecret.trade, 1
 insecure.org.je, 1
+insegne.roma.it, 1
 insertcoins.net, 1
 insgesamt.net, 1
+inshapenutrition.com.br, 1
 inside19.com, 1
 insideaudit.com, 1
 insidebedroom.com, 1
 insidesolutions.nl, 1
 insidethefirewall.tk, 1
 insighti.com, 1
 insighti.eu, 1
 insighti.org, 1
@@ -23202,16 +23476,17 @@ interaffairs.com, 1
 interaktiva.fi, 1
 interasistmen.se, 1
 interchangedesign.com, 1
 intercom.com, 1
 intercom.io, 1
 interessengemeinschaft-pregelstrasse.tk, 1
 interessiert-uns.net, 1
 interfloraservices.co.uk, 1
+interflores.com.br, 1
 interfug.de, 1
 intergenx.co.uk, 1
 intergenx.com, 1
 intergenx.org, 1
 intergenx.org.uk, 1
 intergozd.si, 1
 interguard.net, 1
 interiery-waters.cz, 1
@@ -23368,17 +23643,21 @@ iodine.com, 1
 iodu.re, 1
 iofort.com, 1
 iojo.net, 1
 ioliver.co.uk, 1
 iomedia.ch, 1
 iompost.com, 1
 iomstamps.com, 1
 ionc.ca, 1
+iondrey.cf, 1
+iondrey.ga, 1
+iondrey.gq, 1
 iondrey.ml, 1
+iondrey.tk, 1
 ionlabs.kr, 1
 ionovia.de, 1
 ionspin.com, 1
 ionx.co.uk, 1
 ioover.net, 1
 iosartstudios.gr, 1
 iosjailbreakiphone.com, 1
 ioslo.net, 1
@@ -23544,17 +23823,16 @@ iservicio.mx, 1
 iseulde.com, 1
 isfff.com, 1
 isfriday.com, 1
 isg-tech.com, 1
 isgp-studies.com, 1
 ishamf.com, 1
 ishangirdhar.com, 1
 ishiharaken.com, 1
-ishland.com, 1
 ishome.org, 1
 ishtarfreya.com, 1
 isif-ostewg.org, 1
 isil.fi, 1
 isimonbrown.co.uk, 1
 isincheck.com, 1
 isinolsun.com, 1
 isisfighters.info, 1
@@ -23804,17 +24082,16 @@ ivanbenito.com, 1
 ivanboi.com, 1
 ivancacic.com, 0
 ivanilla.org, 1
 ivanmeade.com, 1
 ivanpolchenko.com, 1
 ivaoru.org, 1
 ivfausland.de, 1
 ivfmeds.com, 1
-ivi.mx, 0
 ivig.com.br, 1
 ivo.co.za, 1
 ivopetkov.com, 1
 ivor.io, 1
 ivor.is, 1
 ivorvanhese.com, 1
 ivorvanhese.nl, 1
 ivoryonsunset.com, 1
@@ -23834,17 +24111,17 @@ iwantexchange.com, 1
 iwantpayments.com, 1
 iwanttoliveinabunker.com, 1
 iwanttrack.com, 1
 iwascoding.com, 1
 iwascoding.de, 1
 iwatchcops.com, 1
 iwatchcops.org, 1
 iwch.tk, 1
-iwebolutions.com, 1
+iwd.gc.ca, 1
 iwell.de, 1
 iwex.swiss, 1
 iwizerunek.pl, 1
 iworos.com, 1
 iwos.io, 1
 iww.me, 1
 iww.mx, 1
 iwyc.cn, 1
@@ -23866,16 +24143,17 @@ iyn.me, 1
 iyouewo.com, 1
 iyoumu.top, 1
 iyuanbao.net, 1
 iz8mbw.net, 1
 izanah.com, 1
 izevg.ru, 1
 izhaojie.com, 1
 izodiacsigns.com, 1
+izolpoznan.pl, 1
 izuba.info, 1
 izumi.tv, 1
 izxxs.com, 1
 izxxs.net, 1
 izxzw.net, 1
 izzys.casa, 1
 j-elliott.co.uk, 1
 j-navi.com, 1
@@ -24152,24 +24430,26 @@ jaszbereny-vechta.eu, 1
 jateng.press, 1
 javalestari.com, 1
 javamilk.com, 1
 javascriptlab.fr, 1
 javfree.me, 1
 javi.pro, 1
 javierburgos.net, 1
 javierlorente.es, 1
+javik.net, 1
 jawn.ca, 1
 jaxfstk.com, 1
 jaxxnet.co.uk, 1
 jaxxnet.org, 1
 jaybrokers.com, 1
 jaycouture.com, 1
 jayf.de, 1
 jayfreestone.com, 0
+jayharkess.uk, 1
 jayharris.ca, 1
 jaymecd.rocks, 1
 jaypandit.me, 1
 jayrl.com, 1
 jaysaw.me, 1
 jaysenjohnson.com, 1
 jaytx.com, 1
 jayxon.com, 1
@@ -24313,16 +24593,17 @@ jennythebaker.com, 1
 jenolson.net, 1
 jenprace.cz, 1
 jens.hk, 1
 jensrex.dk, 1
 jepertinger-itconsulting.de, 1
 jeproteste.info, 1
 jeremiahbenes.com, 1
 jeremy-chen.org, 1
+jeremy.codes, 1
 jeremy.hu, 1
 jeremybentham.com, 1
 jeremybloomfield.co.uk, 1
 jeremyc.ca, 0
 jeremycantu.com, 1
 jeremycrews.com, 1
 jeremynally.com, 1
 jeremyness.com, 1
@@ -24389,16 +24670,17 @@ jgregory.co.uk, 1
 jgwb.de, 1
 jgwb.eu, 1
 jhalderm.com, 1
 jhaveri.net, 1
 jhburton.co.uk, 1
 jhcommunitysports.co.uk, 1
 jhe.li, 1
 jhermsmeier.de, 1
+jhill.de, 1
 jhollandtranslations.com, 1
 jhservicos.net.br, 1
 jhuang.me, 1
 jhwestover.com, 1
 ji0vwl.net, 1
 jiacl.com, 1
 jiahao.codes, 1
 jialinwu.com, 0
@@ -24412,16 +24694,17 @@ jianyuan.pro, 1
 jiaqiang.vip, 1
 jiatingtrading.com, 1
 jiazhao.ga, 1
 jicaivvip.com, 1
 jichi.io, 1
 jichi000.win, 1
 jie.dance, 1
 jieyang2016.com, 1
+jif.gc.ca, 1
 jigsawdevelopments.com, 1
 jiid.ga, 1
 jikegu.com, 1
 jimbiproducts.com, 1
 jimbraaten.com, 1
 jimbutlerkiaparts.com, 1
 jimdorf.com, 1
 jime-hlavou.cz, 1
@@ -24436,16 +24719,17 @@ jimslop.nl, 1
 jinancy.fr, 1
 jinanshen.com, 1
 jinbo123.com, 0
 jinbowiki.org, 1
 jing-in.com, 1
 jing-in.net, 1
 jing.su, 1
 jingjo.com.au, 1
+jingyunbank.com, 1
 jinja.ai, 1
 jinkuru.net, 1
 jinliming.ml, 1
 jino-jossy.appspot.com, 1
 jinshuju.net, 1
 jintaiyang123.org, 1
 jiogo.com, 1
 jiosongs.biz, 1
@@ -24663,25 +24947,27 @@ jokesbykids.com, 1
 jokescoff.com, 1
 jokewignand.nl, 1
 joliettech.com, 1
 jollausers.de, 1
 jolle.io, 1
 jollygoodspudz.ca, 1
 jollykidswobbleworld.co.uk, 1
 jolokia.ch, 1
+jomibe.de, 1
 jomo.tv, 1
 jomofojo.co, 1
 jomofojo.com, 1
 jonahperez.com, 1
 jonale.net, 1
 jonandnoraswedding.com, 1
 jonas-thelemann.de, 1
 jonas-wenk.de, 0
 jonas.me, 1
+jonasberger.com, 1
 jonaskjodt.com, 1
 jonasled.de, 1
 jonaswitmer.ch, 1
 jonathan-apps.com, 1
 jonathancarter.org, 1
 jonathandupree.com, 1
 jonathanha.as, 1
 jonathanj.nl, 1
@@ -24693,16 +24979,17 @@ jonathanschle.de, 1
 jonathanscott.me, 1
 jonathanselea.se, 1
 jonathanwisdom.com, 1
 jonblankenship.com, 1
 jondarby.com, 1
 jondevin.com, 1
 jondowdle.com, 1
 jonesborostatebank.com, 0
+jonesopolis.xyz, 1
 jonespayne.com, 0
 jonferwerda.net, 1
 jonfor.net, 1
 jong030.nl, 1
 jongbloed.nl, 1
 jongcs.com, 1
 jongpay.com, 1
 jonilar.com, 1
@@ -24778,16 +25065,18 @@ joshtriplett.org, 1
 joshua-kuepper.de, 1
 joshua.bio, 1
 joshuadmiller.info, 1
 joshuameunier.com, 1
 joshuarogers.net, 1
 josoansi.de, 1
 jouetspetitechanson.com, 1
 journalism-schools.com, 1
+journeedesfilles.gc.ca, 1
+journeyfriday.rocks, 1
 journeytomastery.net, 1
 jouwpaardenbak.nl, 1
 jovani.com, 0
 joviam.com, 1
 jovic.hamburg, 1
 joworld.net, 1
 joyful.house, 1
 joyfulexpressions.gallery, 1
@@ -24801,16 +25090,17 @@ jpbe.de, 1
 jpcrochetapparel.com, 1
 jpdeharenne.be, 1
 jpeg.io, 1
 jpgangbang.com, 1
 jphandjob.com, 1
 jplesbian.com, 1
 jpmelos.com, 1
 jpmelos.com.br, 1
+jpmguitarshop.com.br, 1
 jpod.cc, 1
 jpoirierlavoie.ca, 1
 jpph.org, 1
 jpralves.net, 1
 jps-selection.co.uk, 1
 jps-selection.com, 1
 jps-selection.eu, 1
 jpshop.ru, 1
@@ -24841,22 +25131,25 @@ jschoi.org, 1
 jschumacher.info, 1
 jsd-cog.org, 1
 jsdelivr.com, 1
 jsdelivr.net, 1
 jselby.net, 1
 jsent.co.uk, 1
 jsevilleja.org, 1
 jsjyhzy.cc, 1
+jsk26.ru, 1
 jskier.com, 0
 jskoelliken.ch, 1
 jsmetallerie.fr, 1
 jsnfwlr.com, 1
 jsnfwlr.io, 1
+json.download, 1
 jsonsinc.com, 1
+jsproxy.tk, 1
 jss.moe, 1
 jsteward.moe, 1
 jstore.ch, 1
 jsvr.tk, 0
 jsxc.ch, 1
 jtcat.com, 1
 jtcjewelry.com, 1
 jtconsultancy.sg, 1
@@ -24897,17 +25190,16 @@ juergenspecht.com, 1
 juergenspecht.de, 1
 jugendfeuerwehr-vechta.de, 1
 jugendhackt.org, 1
 jugendsuenden.info, 1
 jugh.de, 1
 juhakoho.com, 1
 juice.codes, 1
 juk.life, 0
-juku-info.top, 1
 juku-wing.jp, 1
 jule-spil.dk, 1
 julenlanda.com, 0
 julestern.com, 1
 julian-post.de, 1
 julian-uphoff.de, 1
 julian-weigle.de, 1
 juliangonggrijp.com, 1
@@ -24941,17 +25233,16 @@ julius-zoellner.de, 1
 jullensgroningen.com, 1
 julm.de, 1
 juls.cloud, 1
 jultube.de, 1
 jumbopan.com, 1
 jumbopan.net, 1
 jumboquid.co.uk, 1
 jump-zone.co.uk, 1
-jump.bg, 0
 jump.wtf, 1
 jump4funinflatables.co.uk, 1
 jumpandbounce.co.uk, 1
 jumpandjivechildrensparties.co.uk, 1
 jumparoundbouncycastles.co.uk, 1
 jumparty.co.uk, 1
 jumpeasy.com.au, 1
 jumperoos.co.uk, 1
@@ -25012,16 +25303,17 @@ justgalak.org, 1
 justice.gov, 1
 justice4assange.com, 1
 justin-tech.com, 1
 justinellingwood.com, 1
 justinfreid.com, 1
 justinho.com, 1
 justinmuturifoundation.org, 1
 justinstandring.com, 1
+justmade.com.br, 1
 justmensgloves.com, 1
 justnu.se, 0
 justonce.net, 1
 justpaste.it, 1
 justsmart.io, 1
 justsome.info, 1
 justtalk.site, 1
 justthinktwice.gov, 0
@@ -25095,45 +25387,46 @@ k9swx.com, 1
 kaamoscreations.com, 1
 kaangenc.me, 1
 kaany.io, 1
 kaasbesteld.nl, 1
 kaatha-kamrater.se, 1
 kab-s.de, 1
 kabaca.design, 1
 kabarlinux.id, 1
+kabashop.com.br, 1
 kabat-fans.cz, 1
 kabeltv.co.nz, 1
 kabeuchi.com, 1
 kabos.art, 1
 kabu-abc.com, 1
 kabulpress.org, 1
 kabus.org, 1
 kacgal.com, 1
 kachelfm.nl, 1
 kachlikova2.cz, 1
 kack.website, 1
 kadhambam.in, 1
 kado-ya.jp, 1
-kaeru-seitai.com, 1
 kaffeekrone.de, 1
 kafoom.de, 1
 kagitreklam.com, 1
 kagucho.net, 1
 kaheim.de, 1
 kai-ratzeburg.de, 1
 kaibol.com, 1
 kaigojj.com, 1
+kaihub.tech, 1
 kaika-facilitymanagement.de, 1
 kaikei7.com, 1
 kaileymslusser.com, 1
 kainetsoft.com, 1
 kainz.be, 1
 kairion.de, 0
-kairostecnologia.com.br, 1
+kaisab.com, 1
 kaisakura.net, 1
 kaisev.net, 0
 kaitol.click, 1
 kaiusaltd.com, 1
 kaivac-emea.com, 1
 kaizenreporting.com, 1
 kaizeronion.com, 1
 kajak.land, 1
@@ -25141,16 +25434,17 @@ kajlovo.cz, 1
 kaka.farm, 1
 kakao-karten.de, 1
 kakaravaara.fi, 1
 kakie-gobocha.jp, 1
 kakie-kolesa.ru, 1
 kakolightingmuseum.or.jp, 1
 kakoo-media.nl, 1
 kakoomedia.nl, 1
+kaktuskola.se, 1
 kakuto.me, 1
 kalakarclub.com, 1
 kalamos-psychiatrie.be, 1
 kalashcards.com, 1
 kalastus.com, 1
 kaleidomarketing.com, 0
 kaleidoscope.co.uk, 1
 kaleidoskop-freiburg.de, 1
@@ -25284,16 +25578,17 @@ karmabaker.com, 1
 karmaflux.com, 1
 karmainsurance.ca, 1
 karmaplatform.com, 1
 karmaspa.se, 1
 karn.nu, 1
 karneid.info, 1
 karoverwaltung.de, 1
 karpanhellas.com, 0
+karrot.world, 1
 kars.ooo, 1
 karsofsystems.com, 1
 karsten-voigt.de, 1
 karta-paliwowa.pl, 1
 kartacha.com, 1
 kartar.net, 0
 kartatopia.com, 1
 kartec.com, 1
@@ -25308,16 +25603,17 @@ kashinavi.com, 1
 kashis.com.au, 0
 kashmirobserver.net, 1
 kasko.io, 1
 kasnoffskinclinic.com, 1
 kassa.at, 1
 kastankaoffice.cz, 1
 kastelruth.biz, 1
 kastemperaturen.ga, 1
+kastgroup.com, 1
 kastorsky.ru, 1
 kat.marketing, 1
 katagena.com, 1
 katalogbajugamismu.com, 1
 katalogbutikker.dk, 1
 katarsisuib.no, 1
 katata-kango.ac.jp, 1
 katcleaning.com.au, 1
@@ -25383,16 +25679,17 @@ kazek.com.pl, 1
 kazekprzewozy.pl, 1
 kazu.click, 1
 kazuhirohigashi.com, 1
 kazumi.ooo, 1
 kazumi.ro, 1
 kazy111.info, 1
 kb3.net, 1
 kb3030.com, 1
+kb5151.com, 1
 kb88.com, 1
 kba-online.de, 1
 kbb-ev.de, 1
 kbbouncycastlehire.co.uk, 1
 kbcequitas.hu, 1
 kbfl.org, 1
 kbit.dk, 1
 kbjorklu.com, 1
@@ -25444,16 +25741,17 @@ keepa.com, 1
 keeperapp.com, 1
 keeperklan.com, 0
 keepersecurity.com, 1
 keepingtheplot.co.uk, 1
 keepiteasy.eu, 1
 keepitsecure24.com, 1
 keepleft.gr, 1
 keepsight.org.au, 1
+keevault.pm, 1
 keevitaja.com, 1
 keeweb.info, 1
 keez.cf, 1
 keezin.ga, 1
 keganthorrez.com, 1
 kehlenbach.net, 1
 keian.tk, 1
 keifel.de, 1
@@ -25566,16 +25864,18 @@ ketty-voyance.com, 1
 keutel.net, 1
 kevertje.net, 1
 kevin-darmor.eu, 1
 kevin-ta.com, 1
 kevinapease.com, 1
 kevinbowers.me, 1
 kevinbusse.de, 1
 kevincox.ca, 0
+kevincramer.net, 1
+kevindavid.org, 1
 kevindekoninck.com, 0
 kevindienst.blog, 1
 kevinfoley.cc, 1
 kevinfoley.org, 1
 kevingsky.com, 1
 kevinhill.nl, 1
 kevinhq.com, 1
 kevinkla.es, 1
@@ -25587,16 +25887,17 @@ kevinpirnie.com, 0
 kevinrandles.com, 1
 kevinratcliff.com, 1
 kevyn.lu, 1
 kexueboy.com, 1
 keybase.io, 1
 keybored.co, 1
 keybored.me, 1
 keycdn.com, 1
+keycenter.com.br, 1
 keycontainers.co.za, 1
 keyerror.com, 1
 keygen.sh, 1
 keyholdingservices.co.uk, 1
 keyhomechecker.com, 1
 keyihao.cn, 1
 keyinfo.io, 1
 keylaserinstitute.com, 1
@@ -25604,37 +25905,39 @@ keylength.com, 1
 keymach.com, 1
 keys.fedoraproject.org, 1
 keys.jp, 1
 keys247.co.uk, 1
 keyserver.sexy, 0
 keysofart.com, 1
 keystoneok.com, 0
 keysupport.org, 1
+keywalker.co.jp, 1
 keywebdesign.nl, 1
 kf7joz.com, 1
 kfassessment.com, 1
 kffs.ru, 1
 kfirba.me, 1
 kforesund.se, 1
 kfv-kiel.de, 0
 kfz-hantschel.de, 1
+kfz-service-wachtmann.de, 1
 kg7.pl, 1
 kgm-irm.be, 1
 kgnk.ru, 1
 kgv-schlauroth.de, 1
 khaledgarbaya.net, 0
 khanovaskola.cz, 1
 khas.co.uk, 1
 khasiatmanfaat.com, 1
 kheshtar.pl, 1
 khetzal.info, 1
 khg-orchester.de, 1
 khipu.com, 1
-khmb.ru, 0
+khmb.ru, 1
 khojirdesign.ir, 1
 khorne.me, 1
 khosla.uk, 1
 khoury-dulla.ch, 1
 khs1994.com, 1
 khslaw.com, 1
 khudothiswanpark.vn, 1
 khushiandjoel.com, 1
@@ -25725,16 +26028,17 @@ kimmel.in, 1
 kimono-rental-one.com, 1
 kimoota.net, 0
 kimotodental.com, 1
 kimsufi-jordi.tk, 1
 kimtran.kim, 1
 kin.life, 1
 kin.pet, 1
 kinautas.com, 1
+kindconcentrates.com, 1
 kinderarzt-berlin-zia.de, 1
 kinderbasar-luhe.de, 1
 kinderchor-bayreuth.de, 1
 kinderjugendfreizeitverein.de, 1
 kinderkleding.news, 1
 kinderpneumologie.ch, 1
 kindertagespflege-rasselbande-halle.de, 1
 kinderzahn-bogenhausen.de, 1
@@ -25848,16 +26152,17 @@ kiteadventure.nl, 1
 kiteschoolamsterdam.nl, 1
 kiteschooledam.nl, 1
 kiteschoolijmuiden.nl, 1
 kiteschoolkatwijk.nl, 1
 kiteschoolnoordwijk.nl, 1
 kiteschoolschellinkhout.nl, 1
 kiteschoolwijkaanzee.nl, 1
 kiteschoolzandvoort.nl, 1
+kitpartners.com, 1
 kitsapsolutions.com, 1
 kittmedia.com, 1
 kittpress.com, 1
 kittyhacker101.tk, 1
 kivitelezesbiztositas.hu, 1
 kiwi.com, 1
 kiwi.digital, 1
 kiwi.global, 1
@@ -25871,21 +26176,22 @@ kizomba.info, 1
 kizzycode.de, 1
 kj-prince.com, 1
 kjaer.io, 1
 kjarni.cc, 1
 kjarrval.is, 1
 kjchernov.info, 1
 kjellner.com, 1
 kjellvn.net, 1
+kjmedia.dk, 1
 kjnotes.com, 1
 kjoglum.me, 1
 kk-neudorf-duissern.de, 0
 kk.in.th, 1
-kkaufmann.de, 0
+kk.sb, 1
 kki.org, 1
 kkovacs.eu, 1
 kkr-bridal.net, 1
 kkren.me, 1
 kks-karlstadt.de, 1
 kksg.com, 1
 kkull.tv, 1
 kkws.co, 1
@@ -26088,16 +26394,17 @@ kokumoto.com, 1
 kolania.com, 1
 kolania.de, 1
 kolania.net, 1
 kolaykaydet.com, 1
 kolbeck.tk, 1
 kolbeinsson.se, 1
 kolcsey.eu, 1
 kolektivbrand.com, 1
+kolibrisolutions.nl, 1
 kolin.org, 1
 kolizaskrap.bg, 1
 kolja-engelmann.de, 1
 koljakrekow.de, 1
 kolkataflowermall.com, 1
 kollawat.me, 1
 kollect.ie, 1
 kollega.it, 1
@@ -26107,16 +26414,17 @@ kolonie-am-stadtpark.de, 1
 kolorbon.com, 1
 kolozsvaricsuhe.hu, 1
 kolpingsfamilie-vechta-maria-frieden.de, 1
 koluke.co, 1
 koluke.com, 1
 komall.net, 1
 komelin.com, 1
 komenamanda.de, 1
+kometia.com, 1
 komget.net, 0
 komicloud.com, 1
 komidoc.com, 1
 komiksbaza.pl, 1
 kominfo.go.id, 1
 kominfo.net, 0
 kominki-sauny.pl, 1
 komintek.ru, 1
@@ -26334,16 +26642,17 @@ kristofba.ch, 1
 kristofdv.be, 1
 kritikawebu.cz, 1
 kritikos.io, 1
 krizevci.info, 1
 krk-media.pl, 0
 krmeni.cz, 0
 kroell.net, 1
 krokedil.se, 1
+kromamoveis.com.br, 1
 kromonos.net, 0
 krony.de, 1
 kronych.cz, 1
 kroon.email, 1
 kropkait.pl, 1
 krouzkyliduska.cz, 0
 krrn.de, 1
 krsn.de, 1
@@ -26530,16 +26839,17 @@ kx197.com, 1
 kxah35.com, 1
 kxnrl.com, 1
 kyberna.xyz, 1
 kybi.sk, 1
 kydara.com, 1
 kyle.place, 1
 kyledrake.net, 1
 kylegutschow.com, 1
+kylejohnson.io, 1
 kylelaker.com, 1
 kylerwood.com, 1
 kylinj.com, 0
 kylling.io, 1
 kynaston.org.uk, 1
 kynastonwedding.co.uk, 1
 kyobostory-events.com, 1
 kyoko.org, 1
@@ -26581,16 +26891,17 @@ la-fenice-neheim.de, 1
 la-ganiere.com, 1
 la-kaz-a-velo.fr, 1
 la-laitonnerie.com, 1
 la-maison.ch, 1
 la-maison.eu, 1
 la-petite-entreprise.com, 1
 la-tourmaline.ch, 1
 laac.io, 1
+laan247.dk, 1
 laassari.me, 0
 laatikko.io, 1
 laatjeniethackmaken.nl, 1
 labande-annonce.fr, 1
 labanochjonas.se, 1
 labanskoller.se, 1
 labanskollermark.se, 1
 labcenter.com, 1
@@ -26621,16 +26932,17 @@ lacasseroy.com, 1
 lacaveducinquantenaire.com, 1
 lacetsfun.com, 1
 lacetsroses.ch, 1
 laceysfarm.ie, 1
 lachainedesentrepreneurs.fr, 1
 lachawoj.de, 1
 lachlan-harris.com, 1
 lachlan.com, 1
+lachlanallison.com, 1
 lachosetypo.com, 1
 lachyoga-schwieberdingen.de, 1
 lacicloud.net, 1
 lacigf.org, 1
 laclaque.ch, 1
 lacledeslan.com, 0
 lacledor.ch, 1
 laclefdor.ch, 1
@@ -26707,16 +27019,17 @@ lakesherwoodelectrician.com, 1
 lakesherwoodexteriorlighting.com, 1
 lakesherwoodlandscapelighting.com, 1
 lakesherwoodlighting.com, 1
 lakesherwoodoutdoorlighting.com, 1
 lakeshowlife.com, 1
 lakewoodcityglass.com, 1
 lakewoodcomputerservices.com, 1
 lakkt.de, 1
+lakonia.com.br, 1
 lalalab.com, 1
 lalaya.fr, 1
 laled.ch, 1
 lalucioledigitale.com, 1
 lalunaonlinebr.com, 1
 lalunecreative.com, 1
 lalyre-corcelles.ch, 1
 lamafioso.com, 1
@@ -26769,16 +27082,17 @@ landchecker.com.au, 1
 landell.ml, 1
 landflair-magazin.de, 1
 landhaus-christmann.de, 1
 landhaus-havelse.de, 1
 landinfo.no, 1
 landingear.com, 1
 landlordy.com, 1
 landofelves.net, 1
+landoncreekapartments.com, 1
 landrovermerriamparts.com, 1
 landscape-photography.org, 1
 landscapelightingagoura.com, 1
 landscapelightingagourahills.com, 1
 landscapelightingcalabasas.com, 1
 landscapelightingcamarillo.com, 1
 landscapelightingconejovalley.com, 1
 landscapelightingdosvientos.com, 1
@@ -26853,16 +27167,17 @@ laraigneedusoir.com, 1
 laranara.se, 1
 laranjada.org, 1
 laraveldirectory.com, 1
 laravelsaas.com, 1
 larbertbaptist.org, 1
 lareclame.fr, 1
 larepublicacultural.es, 1
 lares.com, 1
+laresistencia.xyz, 1
 largescaleforums.com, 1
 largeviewer.com, 1
 lariposte.org, 1
 lariscus.eu, 1
 larondinedisinfestazione.com, 1
 larotayogaming.com, 1
 larptreff.de, 1
 larraz.es, 1
@@ -26870,16 +27185,17 @@ larryli.cn, 1
 larrysalibra.com, 1
 lars-ewald.com, 1
 lars-mense.de, 1
 lars.cloud, 1
 lars.moi, 1
 larsbauer.xyz, 1
 larsklene.nl, 1
 larsklint.com, 1
+lartduportrait.fr, 1
 laruga.co.uk, 1
 larvatoken.org, 1
 lasalle.wa.edu.au, 1
 lasarmas.com, 1
 lasavonnerieducroisic.fr, 1
 lascana.co.uk, 1
 lasereyess.net, 1
 laserhealthsolutions.com, 1
@@ -26952,16 +27268,17 @@ launchpad-app2.com, 1
 launchpadder2.com, 1
 laupv.online, 1
 lauraandwill.wedding, 0
 lauraenvoyage.fr, 1
 laurakashiwase.com, 1
 lauraofrank.com, 1
 laurasplacefamilysupport.org.au, 1
 laurelblack.com, 1
+laurencball.com, 1
 laurenceplouffe.com, 1
 laurenlobue.com, 1
 laurensvanderblom.nl, 1
 lauriemilne.com, 1
 lauriuc.sk, 1
 lausannedentiste.ch, 1
 lausannelovers.ch, 1
 laussat.de, 1
@@ -27084,32 +27401,33 @@ leadquest.nl, 1
 leaf-consulting.de, 1
 leafandseed.co.uk, 1
 leafans.tk, 0
 leafinote.com, 1
 leafland.co.nz, 1
 leakedminecraft.net, 1
 leakforums.net, 1
 leaks.directory, 1
-leamsigc.com, 1
+leamsigc.com, 0
 leanclub.org, 1
 leandre.cn, 1
 leankit.com, 1
 leanplando.com, 1
 leaodarodesia.com.br, 1
 leap-it.be, 1
 leapandjump.co.uk, 1
 learndev.info, 1
 learnedhacker.com, 1
 learnerdriving.com, 0
 learnflakes.net, 1
 learnforestry.com, 1
 learning-id.com, 1
 learningis1.st, 1
 learninglaw.com, 1
+learningman.top, 1
 learnlux.com, 1
 learnpianogreece.com, 1
 learnplayground.com, 1
 learntale.com, 1
 learnthetruth.tk, 1
 learntotradethemarket.com, 1
 learntube.cz, 1
 leaseit24.com, 1
@@ -27137,20 +27455,22 @@ lebosse.me, 1
 lebourgeo.is, 1
 lecannabiste.com, 1
 lechaudrondupertuis.ch, 1
 lechiennoir.net, 1
 lecoinchocolat.com, 1
 lectricecorrectrice.com, 1
 led-jihlava.cz, 1
 led.xyz, 1
+ledecologie.com.br, 1
 ledeguisement.com, 1
 lederer-it.com, 1
 ledlampor365.se, 1
 ledlight.com, 1
+ledscontato.com.br, 1
 ledwereld.nl, 1
 lee-fuller.co.uk, 1
 leeaaronsrealestate.com, 1
 leebiblestudycenter.co.uk, 1
 leebiblestudycenter.com, 1
 leebiblestudycentre.co.uk, 1
 leebiblestudycentre.com, 1
 leebiblestudycentre.net, 1
@@ -27183,17 +27503,16 @@ lega-dental.com, 1
 legabot.fr, 1
 legadental.com, 1
 legaillart.fr, 1
 legal.farm, 1
 legalcontrol.info, 1
 legaldesk.com, 1
 legaleus.co.uk, 1
 legalforms.ng, 1
-legalinmotion.es, 1
 legalrobot-uat.com, 1
 legalrobot.com, 1
 legaltip.eu, 1
 legatofmrc.fr, 1
 legendesdechine.ch, 1
 legendofkrystal.com, 1
 legends-game.ru, 0
 legible.es, 1
@@ -27364,16 +27683,17 @@ lets-bounce.com, 1
 lets-go-acoustic.de, 1
 lets-ktai.jp, 1
 lets.ninja, 1
 lets.nu, 1
 letsbounceuk.com, 1
 letsdebug.net, 1
 letsdocode.com, 1
 letsencrypt-for-cpanel.com, 1
+letsflyinto.space, 1
 letsgame.nl, 1
 letsgetchecked.com, 1
 letsgetintouch.com, 1
 letsgowhilewereyoung.com, 1
 letshome.mx, 1
 letskick.ru, 1
 letsnet.org, 1
 letson.me, 1
@@ -27384,20 +27704,20 @@ letssackcancer.org, 1
 letstalkcounseling.com, 1
 letterbox-online.de, 1
 letterdance.de, 1
 letteringinstitute.com, 1
 lettersblogatory.com, 1
 lettland-firma.com, 1
 lettori.club, 1
 leu.to, 0
+leuchtmann.ch, 1
 leuenhagen.com, 1
 leulu.com, 1
 leumi-how-to.co.il, 1
-leuthardtfamily.com, 1
 levans.fr, 1
 levanscatering.com, 0
 level-10.de, 1
 level6.me, 1
 levelaccordingly.com, 1
 levelonetrainingandfitness.com, 1
 leveluplv.com, 1
 leveluprails.com, 1
@@ -27428,26 +27748,28 @@ lexicography.online, 1
 lexpartsofac.com, 1
 lexpierce.social, 1
 lexway.pk, 1
 leymaritima.com, 1
 lezard-com.fr, 1
 lezdomsm.com, 1
 lfashion.eu, 1
 lfaz.org, 1
+lffweb.ga, 1
 lfgss.com, 1
 lfrconseil.com, 1
 lg-waps.go.jp, 1
 lg-waps.jp, 1
 lg0.site, 1
 lgbt-colleges.com, 1
 lgbt.io, 1
 lgbt.ventures, 1
 lgbtq.cool, 1
 lghfinancialstrategy.ch, 1
+lgpecasoriginais.com.br, 1
 lgsg.us, 1
 lhajn.cz, 1
 lhakustik.se, 1
 lhalbert.xyz, 1
 lhamaths.online, 1
 lhasaapso.com.br, 1
 lhconsult.tk, 0
 lheinrich.org, 1
@@ -27491,17 +27813,19 @@ libertas-tech.com, 1
 libgame.com, 1
 libmpq.org, 1
 libnull.com, 1
 libra.com, 1
 library-quest.com, 1
 libraryextension.com, 1
 libraryfreedomproject.org, 0
 librarytools.com, 0
+libravatar.org, 1
 librazy.org, 1
+libre-innovation.org, 1
 libre-service.de, 1
 libre.cr, 1
 libre.university, 1
 libreboot.org, 1
 librebox.de, 1
 libreduca.com, 1
 librelamp.com, 1
 libremail.nl, 1
@@ -27549,17 +27873,16 @@ lieberwirth.biz, 1
 lied8.eu, 1
 liehuojun.com, 1
 liemen.net, 1
 lieren4x4.nl, 1
 lierrmm.space, 1
 lieuu.com, 1
 lifanov.com, 1
 life-emotions.pt, 1
-life-like.com, 1
 life29.com, 1
 lifeartstudios.net, 1
 lifebetweenlives.com.au, 1
 lifeboxhealthcare.co.uk, 1
 lifecism.com, 1
 lifefoto.de, 1
 lifegrip.com.au, 1
 lifeinhex.com, 1
@@ -27568,16 +27891,18 @@ lifeisabug.com, 1
 lifekiss.ru, 1
 lifelenz.com, 1
 lifematenutrition.com, 1
 lifemstyle.com, 1
 lifenexto.com, 1
 lifeqa.net, 1
 lifequotes-uk.co.uk, 1
 lifereset.it, 1
+lifesafety.com.br, 1
+lifeslonglist.com, 1
 lifestyle7788.com, 1
 lifestylecent.com, 1
 lifestylefinancial.ca, 1
 lifestyler.me, 1
 lifetree.network, 1
 lifeupgame.fr, 1
 lifeventure.co.uk, 1
 lifewithdyna.com, 1
@@ -27682,16 +28007,17 @@ linan.info, 1
 linan.me, 1
 linan.site, 1
 linasjourney.com, 1
 lincdavis.com, 1
 linchpin-it.com, 1
 lincnaarzorg.nl, 1
 lincoln.com.cn, 1
 lincoln.mx, 1
+lincolnboolefoundation.org, 1
 lincolncountytn.gov, 1
 lincolnfinewines.com, 1
 lincolnpedsgroup.com, 1
 lincolnsfh.com, 1
 lincolnwayflorist.com, 1
 lindalap.fi, 1
 lindaolsson.com, 1
 lindemann.space, 1
@@ -27707,17 +28033,19 @@ lindskogen.se, 1
 lindy.co, 0
 line-wise.com, 1
 line.biz, 1
 line.co.nz, 1
 lineageos.org, 1
 linearaudio.net, 1
 linearaudio.nl, 1
 linearmap.com, 1
+lingerie.com.br, 1
 lingeriesilhouette.com, 1
+lingolia.com, 0
 lingotaxi.com, 1
 lingting.vip, 1
 linguatrip.com, 0
 lingvo-svoboda.ru, 1
 linherest.tk, 1
 linhua.org, 1
 link-sanitizer.com, 1
 link.ba, 1
@@ -27863,30 +28191,36 @@ littleqiu.net, 1
 littleredpenguin.com, 1
 littleredsbakeshop.com, 1