diff --git a/DEPS b/DEPS
index b7c845d..6d8c28c 100644
--- a/DEPS
+++ b/DEPS
@@ -40,11 +40,11 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling Skia
   # and whatever else without interference from each other.
-  'skia_revision': '6f67fc29eddfb6f415f7e6a86197db5d8c8539ed',
+  'skia_revision': '25272300c308335f2d87c2a70e249965b268bcb0',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling V8
   # and whatever else without interference from each other.
-  'v8_revision': 'e00a560bfeb6217733488898d5b2e7b8e44e5c58',
+  'v8_revision': '80f12f77e878b148d22d70fc5361dbc3117e91a2',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling swarming_client
   # and whatever else without interference from each other.
@@ -64,7 +64,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling PDFium
   # and whatever else without interference from each other.
-  'pdfium_revision': '0370d6b8aab1b7880dd2727e7d9aed04cc358360',
+  'pdfium_revision': '0630447196b898b60103ca634e5c9d034b9d24d1',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling openmax_dl
   # and whatever else without interference from each other.
@@ -96,7 +96,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling catapult
   # and whatever else without interference from each other.
-  'catapult_revision': '50b8d5f68b27f47e657aa871cac6f8fb6a56d96c',
+  'catapult_revision': '683b84f3b6813fe0f7a2379048138876ae0d88c1',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling libFuzzer
   # and whatever else without interference from each other.
@@ -513,7 +513,7 @@
       Var('chromium_git') + '/external/github.com/kennethreitz/requests.git' + '@' + 'f172b30356d821d180fa4ecfa3e71c7274a32de4',
 
     'src/third_party/custom_tabs_client/src':
-      Var('chromium_git') + '/external/github.com/GoogleChrome/custom-tabs-client.git' + '@' + 'e2b6730dad438de70d88b6ae5d33aa0995ba77d1',
+      Var('chromium_git') + '/external/github.com/GoogleChrome/custom-tabs-client.git' + '@' + 'f68fb050a78be781cbaacb7a34a96ca902dda0f3',
 
     'src/third_party/gvr-android-sdk/src':
       Var('chromium_git') + '/external/github.com/googlevr/gvr-android-sdk.git' + '@' + '8d1395957283ee13ebe2bc672ba24e5ca4ec343f',
diff --git a/build/android/pylib/local/device/local_device_instrumentation_test_run.py b/build/android/pylib/local/device/local_device_instrumentation_test_run.py
index 360a4648..645b128 100644
--- a/build/android/pylib/local/device/local_device_instrumentation_test_run.py
+++ b/build/android/pylib/local/device/local_device_instrumentation_test_run.py
@@ -252,25 +252,21 @@
       logcat_url = None
       time_ms = lambda: int(time.time() * 1e3)
       start_ms = time_ms()
-      if self._test_instance.should_save_logcat:
-        stream_name = 'logcat_%s_%s_%s' % (
-            test_name.replace('#', '.'),
-            time.strftime('%Y%m%dT%H%M%S', time.localtime()),
-            device.serial)
-        with logdog_logcat_monitor.LogdogLogcatMonitor(
-            device.adb, stream_name) as logmon:
-          with contextlib_ext.Optional(
-              trace_event.trace(test_name),
-              self._env.trace_output):
-            output = device.StartInstrumentation(
-                target, raw=True, extras=extras, timeout=timeout, retries=0)
-        logcat_url = logmon.GetLogcatURL()
-      else:
+
+      stream_name = 'logcat_%s_%s_%s' % (
+          test_name.replace('#', '.'),
+          time.strftime('%Y%m%dT%H%M%S', time.localtime()),
+          device.serial)
+      with contextlib_ext.Optional(
+          logdog_logcat_monitor.LogdogLogcatMonitor(device.adb, stream_name),
+          self._test_instance.should_save_logcat) as logmon:
         with contextlib_ext.Optional(
             trace_event.trace(test_name),
             self._env.trace_output):
           output = device.StartInstrumentation(
               target, raw=True, extras=extras, timeout=timeout, retries=0)
+        if logmon:
+          logcat_url = logmon.GetLogcatURL()
     finally:
       device.RunShellCommand(
           ['log', '-p', 'i', '-t', _TAG, 'END %s' % test_name],
diff --git a/build/android/pylib/results/json_results.py b/build/android/pylib/results/json_results.py
index 7025a25..4e5c720 100644
--- a/build/android/pylib/results/json_results.py
+++ b/build/android/pylib/results/json_results.py
@@ -100,7 +100,7 @@
           'elapsed_time_ms': r.GetDuration(),
           'output_snippet': r.GetLog(),
           'losless_snippet': '',
-          'output_snippet_base64:': '',
+          'output_snippet_base64': '',
           'tombstones': r.GetTombstonesUrl() or '',
           'logcat_url': r.GetLogcatUrl() or '',
       }
diff --git a/build/config/sanitizers/BUILD.gn b/build/config/sanitizers/BUILD.gn
index a68fc8bf..5b072ce 100644
--- a/build/config/sanitizers/BUILD.gn
+++ b/build/config/sanitizers/BUILD.gn
@@ -200,7 +200,7 @@
     ldflags = []
     if (is_asan) {
       ldflags += [ "-fsanitize=address" ]
-      if (!is_mac && !is_chromeos) {
+      if (!is_mac) {
         ldflags += [ "-fsanitize-address-use-after-scope" ]
       }
     }
@@ -312,7 +312,7 @@
   cflags = []
   if (is_asan) {
     cflags += [ "-fsanitize=address" ]
-    if (!is_mac && !is_chromeos && !is_win) {
+    if (!is_mac && !is_win) {
       cflags += [ "-fsanitize-address-use-after-scope" ]
     }
     if (!asan_globals) {
diff --git a/cc/tiles/gpu_image_decode_cache.cc b/cc/tiles/gpu_image_decode_cache.cc
index 7f75c88..93cdd29 100644
--- a/cc/tiles/gpu_image_decode_cache.cc
+++ b/cc/tiles/gpu_image_decode_cache.cc
@@ -453,6 +453,10 @@
   if (new_data)
     persistent_cache_.Put(image_id, std::move(new_data));
 
+  // Ref the image before creating a task - this ref is owned by the caller, and
+  // it is their responsibility to release it by calling UnrefImage.
+  RefImage(draw_image);
+
   if (task_type == DecodeTaskType::PART_OF_UPLOAD_TASK) {
     // Ref image and create a upload and decode tasks. We will release this ref
     // in UploadTaskCompleted.
@@ -466,9 +470,6 @@
     *task = GetImageDecodeTaskAndRef(draw_image, tracing_info, task_type);
   }
 
-  // Ref the image again - this ref is owned by the caller, and it is their
-  // responsibility to release it by calling UnrefImage.
-  RefImage(draw_image);
   return true;
 }
 
@@ -1260,6 +1261,12 @@
   return image_data->decode.is_locked();
 }
 
+bool GpuImageDecodeCache::IsInInUseCacheForTesting(
+    const DrawImage& image) const {
+  auto found = in_use_cache_.find(GenerateInUseCacheKey(image));
+  return found != in_use_cache_.end();
+}
+
 void GpuImageDecodeCache::OnMemoryStateChange(base::MemoryState state) {
   switch (state) {
     case base::MemoryState::NORMAL:
diff --git a/cc/tiles/gpu_image_decode_cache.h b/cc/tiles/gpu_image_decode_cache.h
index 08dd660..f2b21f1 100644
--- a/cc/tiles/gpu_image_decode_cache.h
+++ b/cc/tiles/gpu_image_decode_cache.h
@@ -151,6 +151,7 @@
   size_t GetDrawImageSizeForTesting(const DrawImage& image);
   void SetImageDecodingFailedForTesting(const DrawImage& image);
   bool DiscardableIsLockedForTesting(const DrawImage& image);
+  bool IsInInUseCacheForTesting(const DrawImage& image) const;
 
  private:
   enum class DecodedDataMode { GPU, CPU };
diff --git a/cc/tiles/gpu_image_decode_cache_unittest.cc b/cc/tiles/gpu_image_decode_cache_unittest.cc
index 34d2b29..aeeb6880 100644
--- a/cc/tiles/gpu_image_decode_cache_unittest.cc
+++ b/cc/tiles/gpu_image_decode_cache_unittest.cc
@@ -1365,5 +1365,31 @@
   cache.UnrefImage(draw_image);
 }
 
+TEST(GpuImageDecodeCacheTest, OutOfRasterDecodeTask) {
+  auto context_provider = TestContextProvider::Create();
+  context_provider->BindToCurrentThread();
+  TestGpuImageDecodeCache cache(context_provider.get());
+
+  sk_sp<SkImage> image = CreateImage(1, 1);
+  bool is_decomposable = true;
+  SkMatrix matrix = CreateMatrix(SkSize::Make(1.0f, 1.0f), is_decomposable);
+  DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
+                       kLow_SkFilterQuality, matrix);
+
+  scoped_refptr<TileTask> task;
+  bool need_unref =
+      cache.GetOutOfRasterDecodeTaskForImageAndRef(draw_image, &task);
+  EXPECT_TRUE(need_unref);
+  EXPECT_TRUE(task);
+  EXPECT_TRUE(cache.IsInInUseCacheForTesting(draw_image));
+
+  // Run the decode task.
+  TestTileTaskRunner::ProcessTask(task.get());
+
+  // The image should remain in the cache till we unref it.
+  EXPECT_TRUE(cache.IsInInUseCacheForTesting(draw_image));
+  cache.UnrefImage(draw_image);
+}
+
 }  // namespace
 }  // namespace cc
diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml
index 59da207c..23444716 100644
--- a/chrome/android/java/AndroidManifest.xml
+++ b/chrome/android/java/AndroidManifest.xml
@@ -797,6 +797,7 @@
               <action android:name="android.support.customtabs.action.CustomTabsService" />
             </intent-filter>
         </service>
+        <service android:name="android.support.customtabs.PostMessageService" />
         <service android:name="org.chromium.chrome.browser.crash.LogcatExtractionService"
                  android:exported="false"/>
         <service android:name="org.chromium.chrome.browser.crash.MinidumpPreparationService"
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/ClientManager.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/ClientManager.java
index a47814ff..9c56a10 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/ClientManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/ClientManager.java
@@ -165,7 +165,7 @@
     public synchronized int postMessage(CustomTabsSessionToken session, String message) {
         SessionParams params = mSessionParams.get(session);
         if (params == null) return CustomTabsService.RESULT_FAILURE_MESSAGING_ERROR;
-        return params.postMessageHandler.postMessage(message);
+        return params.postMessageHandler.postMessageFromClientApp(message);
     }
 
     /**
@@ -262,13 +262,23 @@
     }
 
     /**
-     * See {@link PostMessageHandler#setPostMessageOrigin(Uri)}.
+     * See {@link PostMessageHandler#bindSessionToPostMessageService(Context, String)}.
      */
-    public synchronized void setPostMessageOriginForSession(
+    public synchronized boolean bindToPostMessageServiceForSession(CustomTabsSessionToken session) {
+        SessionParams params = mSessionParams.get(session);
+        if (params == null) return false;
+        return params.postMessageHandler.bindSessionToPostMessageService(
+                mContext, params.packageName);
+    }
+
+    /**
+     * See {@link PostMessageHandler#initializeWithOrigin(Uri)}.
+     */
+    public synchronized void initializeWithPostMessageOriginForSession(
             CustomTabsSessionToken session, Uri origin) {
         SessionParams params = mSessionParams.get(session);
         if (params == null) return;
-        params.postMessageHandler.setPostMessageOrigin(origin);
+        params.postMessageHandler.initializeWithOrigin(origin);
     }
 
     /**
@@ -463,6 +473,9 @@
         SessionParams params = mSessionParams.get(session);
         if (params == null) return;
         mSessionParams.remove(session);
+        if (params.postMessageHandler != null) {
+            params.postMessageHandler.unbindFromContext(mContext);
+        }
         if (params.disconnectCallback != null) params.disconnectCallback.run(session);
         mUidHasCalledWarmup.delete(params.uid);
     }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
index dc3c7dc..199e49d2 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
@@ -966,6 +966,8 @@
             mMainTab = null;
             // mHasCreatedTabEarly == true => mMainTab != null in the rest of the code.
             mHasCreatedTabEarly = false;
+            CustomTabsConnection.getInstance(getApplication()).resetPostMessageHandlerForSession(
+                    mSession, null);
             tab.detachAndStartReparenting(intent, startActivityOptions, finalizeCallback);
         } else {
             // Temporarily allowing disk access while fixing. TODO: http://crbug.com/581860
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java
index 750ce1c..2d629d52 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java
@@ -183,6 +183,7 @@
     }
 
     private boolean newSessionInternal(CustomTabsSessionToken session) {
+        if (session == null) return false;
         ClientManager.DisconnectCallback onDisconnect = new ClientManager.DisconnectCallback() {
             @Override
             public void run(CustomTabsSessionToken session) {
@@ -474,21 +475,22 @@
         return result;
     }
 
-    /**
-     * Sends a request to look for a valid postMessage origin that is associated with the app
-     * owning the given {@link CustomTabsSessionToken}.
-     * @param session The session that the request is associated with
-     * @return Whether the validation request was accepted.
-     */
-    public boolean validatePostMessageOrigin(CustomTabsSessionToken session) {
-        boolean success = validatePostMessageOriginInternal(session);
-        logCall("validatePostMessageOrigin()", success);
+    public boolean requestPostMessageChannel(CustomTabsSessionToken session,
+            Uri postMessageOrigin) {
+        boolean success = requestPostMessageChannelInternal(session, postMessageOrigin);
+        logCall("requestPostMessageChannel() with origin "
+                + (postMessageOrigin != null ? postMessageOrigin.toString() : ""), success);
         return success;
     }
 
-    private boolean validatePostMessageOriginInternal(final CustomTabsSessionToken session) {
+    private boolean requestPostMessageChannelInternal(final CustomTabsSessionToken session,
+            final Uri postMessageOrigin) {
         if (!mWarmupHasBeenCalled.get()) return false;
-        if (!isCallerForegroundOrSelf()) return false;
+        if (!isCallerForegroundOrSelf() && !CustomTabActivity.isActiveSession(session)) {
+            return false;
+        }
+        if (!mClientManager.bindToPostMessageServiceForSession(session)) return false;
+
         final int uid = Binder.getCallingUid();
         ThreadUtils.postOnUiThread(new Runnable() {
             @Override
@@ -496,8 +498,8 @@
                 // If the API is not enabled, we don't set the post message origin, which will
                 // avoid PostMessageHandler initialization and disallow postMessage calls.
                 if (!ChromeFeatureList.isEnabled(ChromeFeatureList.CCT_POST_MESSAGE_API)) return;
-                mClientManager.setPostMessageOriginForSession(
-                        session, acquireOriginForSession(session, uid));
+                mClientManager.initializeWithPostMessageOriginForSession(
+                        session, verifyOriginForSession(session, uid, postMessageOrigin));
             }
         });
         return true;
@@ -506,11 +508,14 @@
     /**
      * Acquire the origin for the client that owns the given session.
      * @param session The session to use for getting client information.
-     * @param clientUID The UID for the client controlling the session.
+     * @param clientUid The UID for the client controlling the session.
+     * @param origin The origin that is suggested by the client. The validated origin may be this or
+     *               a derivative of this.
      * @return The validated origin {@link Uri} for the given session's client.
      */
-    protected Uri acquireOriginForSession(CustomTabsSessionToken session, int clientUID) {
-        if (clientUID == Process.myUid()) return Uri.EMPTY;
+    protected Uri verifyOriginForSession(
+            CustomTabsSessionToken session, int clientUid, Uri origin) {
+        if (clientUid == Process.myUid()) return Uri.EMPTY;
         return null;
     }
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnectionService.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnectionService.java
index a4b5818..ddd11eb 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnectionService.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnectionService.java
@@ -76,9 +76,9 @@
     }
 
     @Override
-    protected boolean validatePostMessageOrigin(CustomTabsSessionToken sessionToken) {
-        if (!isFirstRunDone()) return false;
-        return mConnection.validatePostMessageOrigin(sessionToken);
+    protected boolean requestPostMessageChannel(CustomTabsSessionToken sessionToken,
+            Uri postMessageOrigin) {
+        return mConnection.requestPostMessageChannel(sessionToken, postMessageOrigin);
     }
 
     @Override
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/PostMessageHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/PostMessageHandler.java
index 4013ac4..9329a451 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/PostMessageHandler.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/PostMessageHandler.java
@@ -4,10 +4,13 @@
 
 package org.chromium.chrome.browser.customtabs;
 
+import android.content.Context;
 import android.net.Uri;
 import android.support.customtabs.CustomTabsService;
 import android.support.customtabs.CustomTabsSessionToken;
+import android.support.customtabs.PostMessageServiceConnection;
 
+import org.chromium.base.ContextUtils;
 import org.chromium.base.ThreadUtils;
 import org.chromium.chrome.browser.tab.Tab;
 import org.chromium.content.browser.AppWebMessagePort;
@@ -23,11 +26,13 @@
 /**
  * A class that handles postMessage communications with a designated {@link CustomTabsSessionToken}.
  */
-public class PostMessageHandler {
+public class PostMessageHandler extends PostMessageServiceConnection {
     private static AppWebMessagePortService sService;
 
-    private final CustomTabsSessionToken mSession;
     private final MessageCallback mMessageCallback;
+    private WebContents mWebContents;
+    private boolean mMessageChannelCreated;
+    private boolean mBoundToService;
     private AppWebMessagePort[] mChannel;
     private PostMessageSender mPostMessageSender;
     private PostMessageSenderDelegate mSenderDelegate;
@@ -47,11 +52,11 @@
      *                with.
      */
     public PostMessageHandler(CustomTabsSessionToken session) {
-        mSession = session;
+        super(session);
         mMessageCallback = new MessageCallback() {
             @Override
             public void onMessage(String message, MessagePort[] sentPorts) {
-                mSession.getCallback().onPostMessage(message, null);
+                if (mBoundToService) postMessage(message, null);
             }
         };
     }
@@ -60,9 +65,18 @@
      * Resets the internal state of the handler, linking the associated
      * {@link CustomTabsSessionToken} with a new {@link WebContents} and the {@link Tab} that
      * contains it.
-     * @param webContents The new {@link WebContents} that the session got associated with.
+     * @param webContents The new {@link WebContents} that the session got associated with. If this
+     *                    is null, the handler disconnects and unbinds from service.
      */
     public void reset(final WebContents webContents) {
+        if (webContents == null || webContents.isDestroyed()) {
+            disconnectChannel();
+            unbindFromContext(ContextUtils.getApplicationContext());
+            return;
+        }
+        // Can't reset with the same web contents twice.
+        if (webContents.equals(mWebContents)) return;
+        mWebContents = webContents;
         if (mOrigin == null) return;
         new WebContentsObserver(webContents) {
             private boolean mNavigatedOnce;
@@ -72,62 +86,86 @@
                     boolean isNavigationToDifferentPage, boolean isFragmentNavigation,
                     int statusCode) {
                 if (mNavigatedOnce && isNavigationToDifferentPage && mChannel != null) {
-                    mChannel[0].close();
-                    mChannel = null;
-                    mSenderDelegate = null;
-                    mPostMessageSender = null;
                     webContents.removeObserver(this);
+                    disconnectChannel();
+                    unbindFromContext(ContextUtils.getApplicationContext());
                     return;
                 }
                 mNavigatedOnce = true;
             }
 
             @Override
+            public void renderProcessGone(boolean wasOomProtected) {
+                disconnectChannel();
+                unbindFromContext(ContextUtils.getApplicationContext());
+            }
+
+            @Override
             public void documentLoadedInFrame(long frameId, boolean isMainFrame) {
                 if (!isMainFrame || mChannel != null) return;
-
-                final AppWebMessagePortService service = getAppWebMessagePortService();
-                mChannel = (AppWebMessagePort[]) webContents.createMessageChannel(service);
-                mChannel[0].setMessageCallback(mMessageCallback, null);
-                mSenderDelegate = new PostMessageSenderDelegate() {
-                    @Override
-                    public void postMessageToWeb(
-                            String frameName, String message, String targetOrigin,
-                            int[] sentPortIds) {
-                        webContents.postMessageToFrame(
-                                frameName, message, targetOrigin, sentPortIds);
-                    }
-
-                    @Override
-                    public void onPostMessageQueueEmpty() {}
-
-                    @Override
-                    public boolean isPostMessageSenderReady() {
-                        return true;
-                    }
-                };
-                mPostMessageSender = new PostMessageSender(
-                        mSenderDelegate, getAppWebMessagePortService());
-                service.addObserver(new MessageChannelObserver() {
-                    @Override
-                    public void onMessageChannelCreated() {
-                        service.removeObserver(this);
-                        if (mChannel == null) return;
-                        mPostMessageSender.postMessage(
-                                null, "", "", new AppWebMessagePort[] {mChannel[1]});
-                        mSession.getCallback().onMessageChannelReady(mOrigin, null);
-                    }
-                });
+                initializeWithWebContents(webContents);
             }
         };
     }
 
+    private void initializeWithWebContents(final WebContents webContents) {
+        final AppWebMessagePortService service = getAppWebMessagePortService();
+        mChannel = (AppWebMessagePort[]) webContents.createMessageChannel(service);
+        mChannel[0].setMessageCallback(mMessageCallback, null);
+        mSenderDelegate = new PostMessageSenderDelegate() {
+            @Override
+            public void postMessageToWeb(
+                    String frameName, String message, String targetOrigin,
+                    int[] sentPortIds) {
+                if (webContents.isDestroyed()) {
+                    disconnectChannel();
+                    unbindFromContext(ContextUtils.getApplicationContext());
+                    return;
+                }
+                webContents.postMessageToFrame(
+                        frameName, message, targetOrigin, sentPortIds);
+            }
+
+            @Override
+            public void onPostMessageQueueEmpty() {}
+
+            @Override
+            public boolean isPostMessageSenderReady() {
+                return true;
+            }
+        };
+        mPostMessageSender = new PostMessageSender(
+                mSenderDelegate, getAppWebMessagePortService());
+        service.addObserver(new MessageChannelObserver() {
+            @Override
+            public void onMessageChannelCreated() {
+                service.removeObserver(this);
+                if (mChannel == null) return;
+                mPostMessageSender.postMessage(
+                        null, "", "", new AppWebMessagePort[] {mChannel[1]});
+                mMessageChannelCreated = true;
+                if (mBoundToService) notifyMessageChannelReady(null);
+            }
+        });
+    }
+
+    private void disconnectChannel() {
+        mChannel[0].close();
+        mChannel = null;
+        mSenderDelegate = null;
+        mPostMessageSender = null;
+        mWebContents = null;
+    }
+
     /**
      * Sets the postMessage origin for this session to the given {@link Uri}.
      * @param origin The origin value to be set.
      */
-    public void setPostMessageOrigin(Uri origin) {
+    public void initializeWithOrigin(Uri origin) {
         mOrigin = origin;
+        if (mWebContents != null && !mWebContents.isDestroyed()) {
+            initializeWithWebContents(mWebContents);
+        }
     }
 
     /**
@@ -136,10 +174,13 @@
      * @return The result of the postMessage request. Returning true means the request was accepted,
      *         not necessarily that the postMessage was successful.
      */
-    public int postMessage(final String message) {
+    public int postMessageFromClientApp(final String message) {
         if (mChannel == null || !mChannel[0].isReady() || mChannel[0].isClosed()) {
             return CustomTabsService.RESULT_FAILURE_MESSAGING_ERROR;
         }
+        if (mWebContents == null || mWebContents.isDestroyed()) {
+            return CustomTabsService.RESULT_FAILURE_MESSAGING_ERROR;
+        }
         ThreadUtils.postOnUiThread(new Runnable() {
             @Override
             public void run() {
@@ -151,4 +192,20 @@
         });
         return CustomTabsService.RESULT_SUCCESS;
     }
+
+    @Override
+    public void unbindFromContext(Context context) {
+        if (mBoundToService) super.unbindFromContext(context);
+    }
+
+    @Override
+    public void onPostMessageServiceConnected() {
+        mBoundToService = true;
+        if (mMessageChannelCreated) notifyMessageChannelReady(null);
+    }
+
+    @Override
+    public void onPostMessageServiceDisconnected() {
+        mBoundToService = false;
+    }
 }
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTest.java
index 1e59080..d7dffe51 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTest.java
@@ -83,6 +83,7 @@
 import org.chromium.content.browser.test.util.DOMUtils;
 import org.chromium.content.browser.test.util.JavaScriptUtils;
 import org.chromium.content_public.browser.LoadUrlParams;
+import org.chromium.content_public.browser.WebContentsObserver;
 import org.chromium.net.test.EmbeddedTestServer;
 import org.chromium.net.test.util.TestWebServer;
 
@@ -1041,7 +1042,7 @@
         final CustomTabsSessionToken token =
                 CustomTabsSessionToken.getSessionTokenFromIntent(intent);
         assertTrue(connection.newSession(token));
-        assertTrue(connection.validatePostMessageOrigin(token));
+        assertTrue(connection.requestPostMessageChannel(token, null));
         try {
             startCustomTabActivityWithIntent(intent);
         } catch (InterruptedException e) {
@@ -1074,6 +1075,58 @@
     }
 
     /**
+     * Tests that postMessage channel is not functioning after web contents get destroyed and also
+     * not breaking things.
+     */
+    @SmallTest
+    @RetryOnFailure
+    public void testPostMessageWebContentsDestroyed() throws InterruptedException {
+        final CustomTabsConnection connection = warmUpAndWait();
+        Context context = getInstrumentation().getTargetContext();
+        Intent intent = CustomTabsTestUtils.createMinimalCustomTabIntent(context, mTestPage);
+        final CustomTabsSessionToken token =
+                CustomTabsSessionToken.getSessionTokenFromIntent(intent);
+        assertTrue(connection.newSession(token));
+        assertTrue(connection.requestPostMessageChannel(token, null));
+        try {
+            startCustomTabActivityWithIntent(intent);
+        } catch (InterruptedException e) {
+            fail();
+        }
+        CriteriaHelper.pollInstrumentationThread(new Criteria() {
+            @Override
+            public boolean isSatisfied() {
+                final Tab currentTab = getActivity().getActivityTab();
+                return mTestPage.equals(currentTab.getUrl());
+            }
+        });
+        assertTrue(connection.postMessage(token, "Message", null)
+                == CustomTabsService.RESULT_SUCCESS);
+
+        final CallbackHelper renderProcessCallback = new CallbackHelper();
+        new WebContentsObserver(getActivity().getActivityTab().getWebContents()) {
+            @Override
+            public void renderProcessGone(boolean wasOomProtected) {
+                renderProcessCallback.notifyCalled();
+            }
+        };
+        ThreadUtils.postOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                getActivity().getActivityTab()
+                        .getWebContents().simulateRendererKilledForTesting(false);
+            }
+        });
+        try {
+            renderProcessCallback.waitForCallback(0);
+        } catch (TimeoutException e) {
+            fail();
+        }
+        assertTrue(connection.postMessage(token, "Message", null)
+                == CustomTabsService.RESULT_FAILURE_MESSAGING_ERROR);
+    }
+
+    /**
      * Tests whether validatePostMessageOrigin is necessary for making successful postMessage
      * requests.
      */
@@ -1116,7 +1169,7 @@
         final CustomTabsSessionToken token =
                 CustomTabsSessionToken.getSessionTokenFromIntent(intent);
         assertTrue(connection.newSession(token));
-        assertTrue(connection.validatePostMessageOrigin(token));
+        assertTrue(connection.requestPostMessageChannel(token, null));
         try {
             startCustomTabActivityWithIntent(intent);
         } catch (InterruptedException e) {
@@ -1146,22 +1199,22 @@
     @SmallTest
     @RetryOnFailure
     public void testPostMessageReceivedFromPage() throws InterruptedException {
+        final CallbackHelper messageChannelHelper = new CallbackHelper();
+        final CallbackHelper onPostMessageHelper = new CallbackHelper();
         final String url = mWebServer.setResponse("/test.html", MESSAGE_FROM_PAGE_TO_CHANNEL, null);
         warmUpAndWait();
-        final CallbackHelper channelReadyHelper = new CallbackHelper();
-        final CallbackHelper messageReceivedHelper = new CallbackHelper();
         final CustomTabsSession session = bindWithCallback(new CustomTabsCallback() {
             @Override
-            public void onMessageChannelReady(Uri origin, Bundle extras) {
-                channelReadyHelper.notifyCalled();
+            public void onMessageChannelReady(Bundle extras) {
+                messageChannelHelper.notifyCalled();
             }
 
             @Override
             public void onPostMessage(String message, Bundle extras) {
-                messageReceivedHelper.notifyCalled();
+                onPostMessageHelper.notifyCalled();
             }
         });
-        session.validatePostMessageOrigin();
+        session.requestPostMessageChannel(null);
         Intent intent = new CustomTabsIntent.Builder(session).build().intent;
         intent.setData(Uri.parse(url));
         intent.setComponent(new ComponentName(
@@ -1176,51 +1229,168 @@
         } catch (InterruptedException e) {
             fail();
         }
+
         try {
-            channelReadyHelper.waitForCallback(0);
+            messageChannelHelper.waitForCallback(0);
         } catch (TimeoutException e) {
             fail();
         }
+
         try {
-            messageReceivedHelper.waitForCallback(0);
+            onPostMessageHelper.waitForCallback(0);
         } catch (TimeoutException e) {
             fail();
         }
     }
 
     /**
-     * Tests a postMessage request chain can start while prerendering and continue afterwards.
+     * Tests the postMessage requests sent from the page is received on the client side even though
+     * the request is sent after the page is created.
      */
     @SmallTest
     @RetryOnFailure
-    @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE)
-    public void testPostMessageThroughPrerender() throws InterruptedException {
-        final String url =
-                mWebServer.setResponse("/test.html", TITLE_FROM_POSTMESSAGE_TO_CHANNEL, null);
+    public void testPostMessageReceivedFromPageWithLateRequest() throws InterruptedException {
+        final CallbackHelper messageChannelHelper = new CallbackHelper();
+        final CallbackHelper onPostMessageHelper = new CallbackHelper();
+        final String url = mWebServer.setResponse("/test.html", MESSAGE_FROM_PAGE_TO_CHANNEL, null);
         warmUpAndWait();
-        final CallbackHelper channelReadyHelper = new CallbackHelper();
-        final CallbackHelper messageReceivedHelper = new CallbackHelper();
         final CustomTabsSession session = bindWithCallback(new CustomTabsCallback() {
             @Override
-            public void onMessageChannelReady(Uri origin, Bundle extras) {
-                channelReadyHelper.notifyCalled();
+            public void onMessageChannelReady(Bundle extras) {
+                messageChannelHelper.notifyCalled();
             }
 
             @Override
             public void onPostMessage(String message, Bundle extras) {
-                messageReceivedHelper.notifyCalled();
+                onPostMessageHelper.notifyCalled();
             }
         });
-        session.validatePostMessageOrigin();
-        session.mayLaunchUrl(Uri.parse(url), null, null);
+
+        Intent intent = new CustomTabsIntent.Builder(session).build().intent;
+        intent.setData(Uri.parse(url));
+        intent.setComponent(new ComponentName(
+                getInstrumentation().getTargetContext(), ChromeLauncherActivity.class));
+        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+
         try {
-            channelReadyHelper.waitForCallback(0);
+            startCustomTabActivityWithIntent(intent);
+        } catch (InterruptedException e) {
+            fail();
+        }
+        CriteriaHelper.pollInstrumentationThread(new Criteria() {
+            @Override
+            public boolean isSatisfied() {
+                final Tab currentTab = getActivity().getActivityTab();
+                return url.equals(currentTab.getUrl());
+            }
+        });
+
+        session.requestPostMessageChannel(null);
+
+        try {
+            messageChannelHelper.waitForCallback(0);
         } catch (TimeoutException e) {
             fail();
         }
-        // Initial title update during prerender.
-        assertTrue(session.postMessage("Prerendering ", null)
+
+        try {
+            onPostMessageHelper.waitForCallback(0);
+        } catch (TimeoutException e) {
+            fail();
+        }
+
+        assertTrue(session.postMessage("Message", null)
                 == CustomTabsService.RESULT_SUCCESS);
+    }
+
+    private static final int BEFORE_MAY_LAUNCH_URL = 0;
+    private static final int BEFORE_INTENT = 1;
+    private static final int AFTER_INTENT = 2;
+
+    /**
+     * Tests a postMessage request chain can start while prerendering and continue afterwards.
+     * Request sent before prerendering starts.
+     */
+    @SmallTest
+    @RetryOnFailure
+    @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE)
+    public void testPostMessageThroughPrerenderWithRequestBeforeMayLaunchUrl()
+            throws InterruptedException {
+        sendPostMessageDuringPrerenderTransition(BEFORE_MAY_LAUNCH_URL);
+    }
+
+    /**
+     * Tests a postMessage request chain can start while prerendering and continue afterwards.
+     * Request sent after prerendering starts and before intent launched.
+     */
+    @SmallTest
+    @RetryOnFailure
+    @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE)
+    public void testPostMessageThroughPrerenderWithRequestBeforeIntent()
+            throws InterruptedException {
+        sendPostMessageDuringPrerenderTransition(BEFORE_INTENT);
+    }
+
+    /**
+     * Tests a postMessage request chain can start while prerendering and continue afterwards.
+     * Request sent after intent received.
+     */
+    @SmallTest
+    @RetryOnFailure
+    @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE)
+    public void testPostMessageThroughPrerenderWithRequestAfterIntent()
+            throws InterruptedException {
+        sendPostMessageDuringPrerenderTransition(AFTER_INTENT);
+    }
+
+    private void sendPostMessageDuringPrerenderTransition(int requestTime)
+            throws InterruptedException {
+        final CallbackHelper messageChannelHelper = new CallbackHelper();
+        final String url =
+                mWebServer.setResponse("/test.html", TITLE_FROM_POSTMESSAGE_TO_CHANNEL, null);
+        warmUpAndWait();
+        final CustomTabsSession session = bindWithCallback(new CustomTabsCallback() {
+            @Override
+            public void onMessageChannelReady(Bundle extras) {
+                messageChannelHelper.notifyCalled();
+            }
+        });
+        boolean channelRequested = false;
+        String titleString = "";
+        String currentMessage = "";
+
+        if (requestTime == BEFORE_MAY_LAUNCH_URL) {
+            channelRequested = session.requestPostMessageChannel(null);
+            assertTrue(channelRequested);
+        }
+
+        session.mayLaunchUrl(Uri.parse(url), null, null);
+        try {
+            ensureCompletedPrerenderForUrl(
+                    CustomTabsConnection.getInstance((Application)
+                            getInstrumentation().getTargetContext().getApplicationContext()), url);
+        } catch (Exception e) {
+            fail();
+        }
+
+        if (requestTime == BEFORE_INTENT) {
+            channelRequested = session.requestPostMessageChannel(null);
+            assertTrue(channelRequested);
+        }
+
+        if (channelRequested) {
+            try {
+                messageChannelHelper.waitForCallback(0);
+            } catch (TimeoutException e) {
+                fail();
+            }
+            currentMessage = "Prerendering ";
+            // Initial title update during prerender.
+            assertTrue(session.postMessage(currentMessage, null)
+                    == CustomTabsService.RESULT_SUCCESS);
+            titleString = currentMessage;
+        }
+
         Intent intent = new CustomTabsIntent.Builder(session).build().intent;
         intent.setData(Uri.parse(url));
         intent.setComponent(new ComponentName(
@@ -1231,14 +1401,51 @@
         } catch (InterruptedException e) {
             fail();
         }
+
+        CriteriaHelper.pollInstrumentationThread(new Criteria() {
+            @Override
+            public boolean isSatisfied() {
+                final Tab currentTab = getActivity().getActivityTab();
+                return url.equals(currentTab.getUrl());
+            }
+        });
+
+        if (requestTime == AFTER_INTENT) {
+            channelRequested = session.requestPostMessageChannel(null);
+            assertTrue(channelRequested);
+            try {
+                messageChannelHelper.waitForCallback(0);
+            } catch (TimeoutException e) {
+                fail();
+            }
+        }
+
+        currentMessage = "and loading ";
         // Update title again and verify both updates went through with the channel still intact.
-        assertTrue(session.postMessage("and loading", null)
+        assertTrue(session.postMessage(currentMessage, null)
                 == CustomTabsService.RESULT_SUCCESS);
+        titleString += currentMessage;
+
+        // Request a new channel, verify it was created.
+        session.requestPostMessageChannel(null);
+        try {
+            messageChannelHelper.waitForCallback(1);
+        } catch (TimeoutException e) {
+            fail();
+        }
+
+        currentMessage = "and refreshing";
+        // Update title again and verify both updates went through with the channel still intact.
+        assertTrue(session.postMessage(currentMessage, null)
+                == CustomTabsService.RESULT_SUCCESS);
+        titleString += currentMessage;
+
+        final String title = titleString;
         CriteriaHelper.pollUiThread(new Criteria() {
             @Override
             public boolean isSatisfied() {
                 final Tab currentTab = getActivity().getActivityTab();
-                return "Prerendering and loading".equals(currentTab.getTitle());
+                return title.equals(currentTab.getTitle());
             }
         });
     }
diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp
index b6059e3..7abce3d 100644
--- a/chrome/app/settings_strings.grdp
+++ b/chrome/app/settings_strings.grdp
@@ -612,7 +612,7 @@
       Import
     </message>
     <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_IMPORT_AND_BIND" desc="Label for import and bind button in certificate manager.">
-      Import and Bind to Device
+      Import and Bind
     </message>
     <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_EXPORT" desc="Label for export button in certificate manager.">
       Export
diff --git a/chrome/browser/chromeos/login/ui/simple_web_view_dialog.cc b/chrome/browser/chromeos/login/ui/simple_web_view_dialog.cc
index b7aa5d16..ec4cdc7 100644
--- a/chrome/browser/chromeos/login/ui/simple_web_view_dialog.cc
+++ b/chrome/browser/chromeos/login/ui/simple_web_view_dialog.cc
@@ -296,9 +296,7 @@
 }
 
 void SimpleWebViewDialog::ShowWebsiteSettings(
-    content::WebContents* web_contents,
-    const GURL& virtual_url,
-    const security_state::SecurityInfo& security_info) {
+    content::WebContents* web_contents) {
   NOTIMPLEMENTED();
   // TODO (markusheintz@): implement this
 }
diff --git a/chrome/browser/chromeos/login/ui/simple_web_view_dialog.h b/chrome/browser/chromeos/login/ui/simple_web_view_dialog.h
index 22ca3d9..6ee7b90 100644
--- a/chrome/browser/chromeos/login/ui/simple_web_view_dialog.h
+++ b/chrome/browser/chromeos/login/ui/simple_web_view_dialog.h
@@ -23,10 +23,6 @@
 class ReloadButton;
 class ToolbarModel;
 
-namespace security_state {
-struct SecurityInfo;
-}  // namespace security_state
-
 namespace views {
 class WebView;
 class Widget;
@@ -85,10 +81,7 @@
       ExtensionAction* action) override;
   ContentSettingBubbleModelDelegate* GetContentSettingBubbleModelDelegate()
       override;
-  void ShowWebsiteSettings(
-      content::WebContents* web_contents,
-      const GURL& virtual_url,
-      const security_state::SecurityInfo& security_info) override;
+  void ShowWebsiteSettings(content::WebContents* web_contents) override;
 
   // Implements ChromeToolbarModelDelegate:
   content::WebContents* GetActiveWebContents() const override;
diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc
index 8d9fe637..732779d4 100644
--- a/chrome/browser/extensions/extension_service.cc
+++ b/chrome/browser/extensions/extension_service.cc
@@ -860,6 +860,11 @@
 void ExtensionService::EnableExtension(const std::string& extension_id) {
   CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
 
+  // If the extension is currently reloading, it will be enabled once the reload
+  // is complete.
+  if (reloading_extensions_.count(extension_id) > 0)
+    return;
+
   if (IsExtensionEnabled(extension_id) ||
       extension_prefs_->IsExtensionBlacklisted(extension_id))
     return;
diff --git a/chrome/browser/extensions/extension_service_unittest.cc b/chrome/browser/extensions/extension_service_unittest.cc
index 0433e03a8..abaae912 100644
--- a/chrome/browser/extensions/extension_service_unittest.cc
+++ b/chrome/browser/extensions/extension_service_unittest.cc
@@ -44,6 +44,7 @@
 #include "chrome/browser/chrome_notification_types.h"
 #include "chrome/browser/extensions/blacklist.h"
 #include "chrome/browser/extensions/chrome_app_sorting.h"
+#include "chrome/browser/extensions/chrome_test_extension_loader.h"
 #include "chrome/browser/extensions/component_loader.h"
 #include "chrome/browser/extensions/crx_installer.h"
 #include "chrome/browser/extensions/default_apps.h"
@@ -7098,3 +7099,36 @@
   EXPECT_FALSE(registry()->disabled_extensions().Contains(id));
   EXPECT_FALSE(prefs->HasDisableReason(id, Extension::DISABLE_CORRUPTED));
 }
+
+// Try re-enabling a reloading extension. Regression test for crbug.com/676815.
+TEST_F(ExtensionServiceTest, ReloadAndReEnableExtension) {
+  InitializeEmptyExtensionService();
+
+  // Add an extension in an unpacked location.
+  scoped_refptr<const Extension> extension =
+      extensions::ChromeTestExtensionLoader(profile()).
+          LoadExtension(data_dir().AppendASCII("simple_with_file"));
+  const std::string kExtensionId = extension->id();
+  ASSERT_TRUE(extension);
+  ASSERT_TRUE(extensions::Manifest::IsUnpackedLocation(extension->location()));
+  EXPECT_TRUE(registry()->enabled_extensions().Contains(kExtensionId));
+
+  // Begin the reload process.
+  service()->ReloadExtension(extension->id());
+  EXPECT_TRUE(registry()->disabled_extensions().Contains(kExtensionId));
+
+  // While the extension is reloading, try to re-enable it. This is the flow
+  // that could happen if, e.g., the user hit the enable toggle in the
+  // chrome://extensions page while it was reloading.
+  service()->GrantPermissionsAndEnableExtension(extension.get());
+  EXPECT_FALSE(registry()->enabled_extensions().Contains(kExtensionId));
+
+  // Wait for the reload to complete. This previously crashed (see
+  // crbug.com/676815).
+  base::RunLoop().RunUntilIdle();
+  // The extension should be enabled again...
+  EXPECT_TRUE(registry()->enabled_extensions().Contains(kExtensionId));
+  // ...and should have reloaded (for ease, we just compare the extension
+  // objects).
+  EXPECT_NE(extension, registry()->enabled_extensions().GetByID(kExtensionId));
+}
diff --git a/chrome/browser/printing/pdf_to_emf_converter.cc b/chrome/browser/printing/pdf_to_emf_converter.cc
index d94ec49..64dfd014 100644
--- a/chrome/browser/printing/pdf_to_emf_converter.cc
+++ b/chrome/browser/printing/pdf_to_emf_converter.cc
@@ -112,7 +112,6 @@
       const PdfRenderSettings& settings);
 
   void Start(const scoped_refptr<base::RefCountedMemory>& data,
-             bool print_text_with_gdi,
              const PdfConverter::StartCallback& start_callback);
 
   void GetPage(int page_number,
@@ -169,8 +168,7 @@
       std::unique_ptr<base::File, content::BrowserThread::DeleteOnFileThread>
           temp_file) = 0;
   // Send the messages to Start, GetPage, and Stop.
-  virtual void SendStartMessage(IPC::PlatformFileForTransit transit,
-                                bool print_text_with_gdi) = 0;
+  virtual void SendStartMessage(IPC::PlatformFileForTransit transit) = 0;
   virtual void SendGetPageMessage(int page_number,
                                   IPC::PlatformFileForTransit transit) = 0;
   virtual void SendStopMessage() = 0;
@@ -180,7 +178,7 @@
   void OnPageDone(bool success, float scale_factor);
 
   void OnFailed();
-  void OnTempPdfReady(bool print_text_with_gdi, ScopedTempFile pdf);
+  void OnTempPdfReady(ScopedTempFile pdf);
   void OnTempFileReady(GetPageCallbackData* callback_data,
                        ScopedTempFile temp_file);
 
@@ -220,8 +218,7 @@
   std::unique_ptr<MetafilePlayer> GetFileFromTemp(
       std::unique_ptr<base::File, content::BrowserThread::DeleteOnFileThread>
           temp_file) override;
-  void SendStartMessage(IPC::PlatformFileForTransit transit,
-                        bool print_text_with_gdi) override;
+  void SendStartMessage(IPC::PlatformFileForTransit transit) override;
   void SendGetPageMessage(int page_number,
                           IPC::PlatformFileForTransit transit) override;
   void SendStopMessage() override;
@@ -241,7 +238,6 @@
 
   void Start(const scoped_refptr<base::RefCountedMemory>& data,
              const PdfRenderSettings& conversion_settings,
-             bool print_text_with_gdi,
              const StartCallback& start_callback) override;
 
   void GetPage(int page_number,
@@ -265,7 +261,6 @@
 
   void Start(const scoped_refptr<base::RefCountedMemory>& data,
              const PdfRenderSettings& conversion_settings,
-             bool print_text_with_gdi,
              const StartCallback& start_callback) override;
 
  private:
@@ -361,13 +356,12 @@
 
 void PdfConverterUtilityProcessHostClient::Start(
     const scoped_refptr<base::RefCountedMemory>& data,
-    bool print_text_with_gdi,
     const PdfConverter::StartCallback& start_callback) {
   if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) {
     BrowserThread::PostTask(
         BrowserThread::IO, FROM_HERE,
         base::Bind(&PdfConverterUtilityProcessHostClient::Start, this, data,
-                   print_text_with_gdi, start_callback));
+                   start_callback));
     return;
   }
 
@@ -385,20 +379,16 @@
   BrowserThread::PostTaskAndReplyWithResult(
       BrowserThread::FILE, FROM_HERE,
       base::Bind(&CreateTempPdfFile, data, &temp_dir_),
-      base::Bind(&PdfConverterUtilityProcessHostClient::OnTempPdfReady, this,
-                 print_text_with_gdi));
+      base::Bind(&PdfConverterUtilityProcessHostClient::OnTempPdfReady, this));
 }
 
-void PdfConverterUtilityProcessHostClient::OnTempPdfReady(
-    bool print_text_with_gdi,
-    ScopedTempFile pdf) {
+void PdfConverterUtilityProcessHostClient::OnTempPdfReady(ScopedTempFile pdf) {
   DCHECK_CURRENTLY_ON(BrowserThread::IO);
   if (!utility_process_host_ || !pdf)
     return OnFailed();
   // Should reply with OnPageCount().
   SendStartMessage(
-      IPC::GetPlatformFileForTransit(pdf->GetPlatformFile(), false),
-      print_text_with_gdi);
+      IPC::GetPlatformFileForTransit(pdf->GetPlatformFile(), false));
 }
 
 void PdfConverterUtilityProcessHostClient::OnPageCount(int page_count) {
@@ -574,10 +564,8 @@
 }
 
 void PdfToEmfUtilityProcessHostClient::SendStartMessage(
-    IPC::PlatformFileForTransit transit,
-    bool print_text_with_gdi) {
-  Send(new ChromeUtilityMsg_RenderPDFPagesToMetafiles(transit, settings_,
-                                                      print_text_with_gdi));
+    IPC::PlatformFileForTransit transit) {
+  Send(new ChromeUtilityMsg_RenderPDFPagesToMetafiles(transit, settings_));
 }
 
 void PdfToEmfUtilityProcessHostClient::SendStopMessage() {
@@ -591,7 +579,6 @@
 
 void PdfConverterImpl::Start(const scoped_refptr<base::RefCountedMemory>& data,
                              const PdfRenderSettings& conversion_settings,
-                             bool print_text_with_gdi,
                              const StartCallback& start_callback) {
   DCHECK(!utility_client_.get());
 }
@@ -616,12 +603,11 @@
 void PdfToEmfConverterImpl::Start(
     const scoped_refptr<base::RefCountedMemory>& data,
     const PdfRenderSettings& conversion_settings,
-    bool print_text_with_gdi,
     const StartCallback& start_callback) {
   DCHECK(!utility_client_.get());
   utility_client_ = new PdfToEmfUtilityProcessHostClient(
       weak_ptr_factory_.GetWeakPtr(), conversion_settings);
-  utility_client_->Start(data, print_text_with_gdi, start_callback);
+  utility_client_->Start(data, start_callback);
 }
 
 }  // namespace
diff --git a/chrome/browser/printing/pdf_to_emf_converter.h b/chrome/browser/printing/pdf_to_emf_converter.h
index 3f839ec..76c9e0a 100644
--- a/chrome/browser/printing/pdf_to_emf_converter.h
+++ b/chrome/browser/printing/pdf_to_emf_converter.h
@@ -31,7 +31,6 @@
   // with positive |page_count|. |page_count| is 0 if initialization failed.
   virtual void Start(const scoped_refptr<base::RefCountedMemory>& data,
                      const PdfRenderSettings& conversion_settings,
-                     bool print_text_with_gdi,
                      const StartCallback& start_callback) = 0;
 
   // Requests conversion of the page. |page_number| is 0-base page number in
diff --git a/chrome/browser/printing/print_job.cc b/chrome/browser/printing/print_job.cc
index b00ee482..294fcb1 100644
--- a/chrome/browser/printing/print_job.cc
+++ b/chrome/browser/printing/print_job.cc
@@ -236,10 +236,8 @@
 
   void Start(const scoped_refptr<base::RefCountedMemory>& data,
              const PdfRenderSettings& conversion_settings,
-             bool print_text_with_gdi,
              const PdfConverter::StartCallback& start_callback) {
-    converter_->Start(data, conversion_settings, print_text_with_gdi,
-                      start_callback);
+    converter_->Start(data, conversion_settings, start_callback);
   }
 
   void GetMorePages(const PdfConverter::GetPageCallback& get_page_callback) {
@@ -286,9 +284,12 @@
       base::MakeUnique<PdfConversionState>(page_size, content_area,
           PdfConverter::CreatePdfToEmfConverter());
   const int kPrinterDpi = settings().dpi();
-  PdfRenderSettings settings(content_area, kPrinterDpi, true /* autorotate? */);
+  PdfRenderSettings settings(
+      content_area, kPrinterDpi, /*autorotate=*/true,
+      print_text_with_gdi ? PdfRenderSettings::Mode::GDI_TEXT
+                          : PdfRenderSettings::Mode::NORMAL);
   pdf_conversion_state_->Start(
-      bytes, settings, print_text_with_gdi,
+      bytes, settings,
       base::Bind(&PrintJob::OnPdfConversionStarted, this));
 }
 
diff --git a/chrome/browser/printing/print_preview_pdf_generated_browsertest.cc b/chrome/browser/printing/print_preview_pdf_generated_browsertest.cc
index 9c156a0..57c64e6 100644
--- a/chrome/browser/printing/print_preview_pdf_generated_browsertest.cc
+++ b/chrome/browser/printing/print_preview_pdf_generated_browsertest.cc
@@ -370,7 +370,8 @@
 
       total_height_in_pixels += height_in_pixels;
       gfx::Rect rect(width_in_pixels, height_in_pixels);
-      PdfRenderSettings settings(rect, kDpi, true);
+      PdfRenderSettings settings(rect, kDpi, true,
+                                 PdfRenderSettings::Mode::NORMAL);
 
       int int_max = std::numeric_limits<int>::max();
       if (settings.area.width() > int_max / kColorChannels ||
diff --git a/chrome/browser/printing/pwg_raster_converter.cc b/chrome/browser/printing/pwg_raster_converter.cc
index 1a7200f..4e02959 100644
--- a/chrome/browser/printing/pwg_raster_converter.cc
+++ b/chrome/browser/printing/pwg_raster_converter.cc
@@ -301,7 +301,8 @@
   // by autorotate.
   gfx::Rect area(std::min(page_size.width(), page_size.height()) * scale,
                  std::max(page_size.width(), page_size.height()) * scale);
-  return PdfRenderSettings(area, dpi, true /* autorotate */);
+  return PdfRenderSettings(area, dpi, /*autorotate=*/true,
+                           PdfRenderSettings::Mode::NORMAL);
 }
 
 // static
diff --git a/chrome/browser/resources/settings/about_page/about_page.js b/chrome/browser/resources/settings/about_page/about_page.js
index ef1eb16d..1e53ea6d 100644
--- a/chrome/browser/resources/settings/about_page/about_page.js
+++ b/chrome/browser/resources/settings/about_page/about_page.js
@@ -373,8 +373,12 @@
    * @private
    */
   computeShowCheckUpdates_: function() {
-    return !this.hasCheckedForUpdates_ ||
-        this.checkStatus_(UpdateStatus.FAILED);
+    // Enable the update button if we are in a stale 'updated' status or
+    // update has failed. Disable it otherwise.
+    var staleUpdatedStatus = !this.hasCheckedForUpdates_ &&
+        this.checkStatus_(UpdateStatus.UPDATED);
+
+    return staleUpdatedStatus || this.checkStatus_(UpdateStatus.FAILED);
   },
 
   /**
diff --git a/chrome/browser/resources/settings/certificate_manager_page/certificate_list.html b/chrome/browser/resources/settings/certificate_manager_page/certificate_list.html
index 1e698ad..08343d4 100644
--- a/chrome/browser/resources/settings/certificate_manager_page/certificate_list.html
+++ b/chrome/browser/resources/settings/certificate_manager_page/certificate_list.html
@@ -17,9 +17,14 @@
     <div class="settings-box first">
       <span class="start">
           [[getDescription_(certificateType, certificates)]]</span>
-      <paper-button on-tap="onImportTap_"
+      <paper-button id="import" on-tap="onImportTap_"
           hidden="[[!canImport_(certificateType)]]">
         $i18n{certificateManagerImport}</paper-button>
+<if expr="chromeos">
+      <paper-button id="importAndBind" on-tap="onImportAndBindTap_"
+          hidden="[[!canImportAndBind_(certificateType)]]">
+        $i18n{certificateManagerImportAndBind}</paper-button>
+</if>
     </div>
     <template is="dom-repeat" items="[[certificates]]">
       <settings-certificate-entry model="[[item]]"
diff --git a/chrome/browser/resources/settings/certificate_manager_page/certificate_list.js b/chrome/browser/resources/settings/certificate_manager_page/certificate_list.js
index f9b7b02..82b261fd 100644
--- a/chrome/browser/resources/settings/certificate_manager_page/certificate_list.js
+++ b/chrome/browser/resources/settings/certificate_manager_page/certificate_list.js
@@ -52,6 +52,16 @@
     return this.certificateType != CertificateType.OTHER;
   },
 
+// <if expr="chromeos">
+  /**
+   * @return {boolean}
+   * @private
+   */
+  canImportAndBind_: function() {
+    return this.certificateType == CertificateType.PERSONAL;
+  },
+// </if>
+
   /**
    * Handles a rejected Promise returned from |browserProxy_|.
    * @param {*} error Expects {!CertificatesError|!CertificatesImportError}.
@@ -86,9 +96,24 @@
 
   /** @private */
   onImportTap_: function() {
+    this.handleImport_(false);
+  },
+
+// <if expr="chromeos">
+  /** @private */
+  onImportAndBindTap_: function() {
+    this.handleImport_(true);
+  },
+// </if>
+
+  /**
+   * @param {boolean} useHardwareBacked
+   * @private
+   */
+  handleImport_: function(useHardwareBacked) {
     var browserProxy = settings.CertificatesBrowserProxyImpl.getInstance();
     if (this.certificateType == CertificateType.PERSONAL) {
-      browserProxy.importPersonalCertificate(false).then(
+      browserProxy.importPersonalCertificate(useHardwareBacked).then(
           function(showPasswordPrompt) {
             if (showPasswordPrompt)
               this.dispatchImportActionEvent_(null);
diff --git a/chrome/browser/ui/autofill/chrome_autofill_client.cc b/chrome/browser/ui/autofill/chrome_autofill_client.cc
index f34d661..61375328 100644
--- a/chrome/browser/ui/autofill/chrome_autofill_client.cc
+++ b/chrome/browser/ui/autofill/chrome_autofill_client.cc
@@ -61,6 +61,7 @@
 #include "content/public/browser/android/content_view_core.h"
 #else  // !OS_ANDROID
 #include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/browser_commands.h"
 #include "chrome/browser/ui/webui/signin/login_ui_service_factory.h"
 #include "components/zoom/zoom_controller.h"
 #endif
@@ -69,13 +70,6 @@
 
 namespace autofill {
 
-namespace {
-
-const char kSecurityIndicatorHelpCenterUrl[] =
-    "https://support.google.com/chrome/answer/95617";
-
-}  // anonymous namespace
-
 ChromeAutofillClient::ChromeAutofillClient(content::WebContents* web_contents)
     : content::WebContentsObserver(web_contents),
       unmask_controller_(
@@ -384,6 +378,21 @@
 }
 
 void ChromeAutofillClient::ShowHttpNotSecureExplanation() {
+#if !defined(OS_ANDROID)
+  // On desktop platforms, open Page Info, which briefly explains the HTTP
+  // warning message and provides a link to the Help Center for more details.
+  Browser* browser = chrome::FindBrowserWithWebContents(web_contents());
+  if (browser && chrome::ShowWebsiteSettings(browser, web_contents()))
+    return;
+// Otherwise fall through to the section below that opens the URL directly.
+#endif
+
+  // On Android, where Page Info does not (yet) contain a link to the Help
+  // Center (https://crbug.com/679532), or in corner cases where Page Info is
+  // not shown (for example, no navigation entry), just launch the Help topic
+  // directly.
+  const GURL kSecurityIndicatorHelpCenterUrl(
+      "https://support.google.com/chrome/?p=ui_security_indicator");
   web_contents()->OpenURL(content::OpenURLParams(
       GURL(kSecurityIndicatorHelpCenterUrl), content::Referrer(),
       WindowOpenDisposition::NEW_FOREGROUND_TAB, ui::PAGE_TRANSITION_LINK,
diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc
index ffd30b0..718fcbb 100644
--- a/chrome/browser/ui/browser.cc
+++ b/chrome/browser/ui/browser.cc
@@ -979,6 +979,7 @@
       SessionServiceFactory::GetForProfile(profile_);
   if (session_service)
     session_service->TabClosing(contents);
+  HideValidationMessage(contents);
   content::NotificationService::current()->Notify(
       chrome::NOTIFICATION_TAB_CLOSING,
       content::Source<NavigationController>(&contents->GetController()),
diff --git a/chrome/browser/ui/browser_commands.cc b/chrome/browser/ui/browser_commands.cc
index 6cbdbdda..dd93505c 100644
--- a/chrome/browser/ui/browser_commands.cc
+++ b/chrome/browser/ui/browser_commands.cc
@@ -24,6 +24,7 @@
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/sessions/session_service_factory.h"
 #include "chrome/browser/sessions/tab_restore_service_factory.h"
+#include "chrome/browser/ssl/security_state_tab_helper.h"
 #include "chrome/browser/translate/chrome_translate_client.h"
 #include "chrome/browser/ui/accelerator_utils.h"
 #include "chrome/browser/ui/autofill/save_card_bubble_controller_impl.h"
@@ -60,6 +61,7 @@
 #include "components/favicon/content/content_favicon_driver.h"
 #include "components/google/core/browser/google_util.h"
 #include "components/prefs/pref_service.h"
+#include "components/security_state/core/security_state.h"
 #include "components/sessions/core/live_tab_context.h"
 #include "components/sessions/core/tab_restore_service.h"
 #include "components/signin/core/browser/signin_header_helper.h"
@@ -894,13 +896,21 @@
   browser->GetFindBarController()->Show();
 }
 
-void ShowWebsiteSettings(Browser* browser,
-                         content::WebContents* web_contents,
-                         const GURL& url,
-                         const security_state::SecurityInfo& security_info) {
+bool ShowWebsiteSettings(Browser* browser, content::WebContents* web_contents) {
+  content::NavigationEntry* entry =
+      web_contents->GetController().GetVisibleEntry();
+  if (!entry)
+    return false;
+
+  SecurityStateTabHelper* helper =
+      SecurityStateTabHelper::FromWebContents(web_contents);
+  security_state::SecurityInfo security_info;
+  helper->GetSecurityInfo(&security_info);
+
   browser->window()->ShowWebsiteSettings(
       Profile::FromBrowserContext(web_contents->GetBrowserContext()),
-      web_contents, url, security_info);
+      web_contents, entry->GetVirtualURL(), security_info);
+  return true;
 }
 
 void Print(Browser* browser) {
diff --git a/chrome/browser/ui/browser_commands.h b/chrome/browser/ui/browser_commands.h
index 5b22722b..7c22572 100644
--- a/chrome/browser/ui/browser_commands.h
+++ b/chrome/browser/ui/browser_commands.h
@@ -24,10 +24,6 @@
 class WebContents;
 }
 
-namespace security_state {
-struct SecurityInfo;
-}  // namespace security_state
-
 namespace chrome {
 
 // For all commands, where a tab is not specified, the active tab is assumed.
@@ -106,10 +102,7 @@
 void SavePage(Browser* browser);
 bool CanSavePage(const Browser* browser);
 void ShowFindBar(Browser* browser);
-void ShowWebsiteSettings(Browser* browser,
-                         content::WebContents* web_contents,
-                         const GURL& url,
-                         const security_state::SecurityInfo& security_info);
+bool ShowWebsiteSettings(Browser* browser, content::WebContents* web_contents);
 void Print(Browser* browser);
 bool CanPrint(Browser* browser);
 #if BUILDFLAG(ENABLE_BASIC_PRINTING)
diff --git a/chrome/browser/ui/cocoa/location_bar/location_icon_decoration.mm b/chrome/browser/ui/cocoa/location_bar/location_icon_decoration.mm
index f8379f57..7fdeb40 100644
--- a/chrome/browser/ui/cocoa/location_bar/location_icon_decoration.mm
+++ b/chrome/browser/ui/cocoa/location_bar/location_icon_decoration.mm
@@ -6,7 +6,6 @@
 
 #include "base/strings/sys_string_conversions.h"
 #include "chrome/browser/search/search.h"
-#include "chrome/browser/ssl/security_state_tab_helper.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/browser_commands.h"
 #include "chrome/browser/ui/browser_finder.h"
@@ -15,17 +14,12 @@
 #import "chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.h"
 #include "chrome/grit/generated_resources.h"
 #include "components/favicon/content/content_favicon_driver.h"
-#include "components/security_state/core/security_state.h"
-#include "content/public/browser/navigation_controller.h"
-#include "content/public/browser/navigation_entry.h"
 #include "content/public/browser/web_contents.h"
 #include "skia/ext/skia_utils_mac.h"
 #import "third_party/mozilla/NSPasteboard+Utils.h"
 #include "ui/base/l10n/l10n_util_mac.h"
 #include "ui/gfx/image/image.h"
 
-using content::NavigationController;
-using content::NavigationEntry;
 using content::WebContents;
 
 // The info-bubble point should look like it points to the bottom of the lock
@@ -128,20 +122,8 @@
     return true;
 
   WebContents* tab = owner_->GetWebContents();
-  const NavigationController& controller = tab->GetController();
-  // Important to use GetVisibleEntry to match what's showing in the omnibox.
-  NavigationEntry* nav_entry = controller.GetVisibleEntry();
-  if (!nav_entry)
-    return true;
   Browser* browser = chrome::FindBrowserWithWebContents(tab);
-
-  SecurityStateTabHelper* helper = SecurityStateTabHelper::FromWebContents(tab);
-  DCHECK(helper);
-  security_state::SecurityInfo security_info;
-  helper->GetSecurityInfo(&security_info);
-
-  chrome::ShowWebsiteSettings(browser, tab, nav_entry->GetVirtualURL(),
-                              security_info);
+  chrome::ShowWebsiteSettings(browser, tab);
   return true;
 }
 
diff --git a/chrome/browser/ui/views/location_bar/location_bar_view.h b/chrome/browser/ui/views/location_bar/location_bar_view.h
index 3b8fd61..1d9b7a4 100644
--- a/chrome/browser/ui/views/location_bar/location_bar_view.h
+++ b/chrome/browser/ui/views/location_bar/location_bar_view.h
@@ -91,10 +91,7 @@
         GetContentSettingBubbleModelDelegate() = 0;
 
     // Shows permissions and settings for the given web contents.
-    virtual void ShowWebsiteSettings(
-        content::WebContents* web_contents,
-        const GURL& virtual_url,
-        const security_state::SecurityInfo& security_info) = 0;
+    virtual void ShowWebsiteSettings(content::WebContents* web_contents) = 0;
 
    protected:
     virtual ~Delegate() {}
diff --git a/chrome/browser/ui/views/location_bar/location_icon_view.cc b/chrome/browser/ui/views/location_bar/location_icon_view.cc
index 92e6e2d..d388e2f 100644
--- a/chrome/browser/ui/views/location_bar/location_icon_view.cc
+++ b/chrome/browser/ui/views/location_bar/location_icon_view.cc
@@ -4,7 +4,6 @@
 
 #include "chrome/browser/ui/views/location_bar/location_icon_view.h"
 
-#include "chrome/browser/ssl/security_state_tab_helper.h"
 #include "chrome/browser/ui/view_ids.h"
 #include "chrome/browser/ui/views/location_bar/location_bar_view.h"
 #include "chrome/browser/ui/views/website_settings/website_settings_popup_view.h"
@@ -12,14 +11,10 @@
 #include "chrome/grit/theme_resources.h"
 #include "components/grit/components_scaled_resources.h"
 #include "components/omnibox/browser/omnibox_edit_model.h"
-#include "components/security_state/core/security_state.h"
-#include "content/public/browser/navigation_controller.h"
-#include "content/public/browser/navigation_entry.h"
 #include "content/public/browser/web_contents.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/views/controls/label.h"
 
-using content::NavigationEntry;
 using content::WebContents;
 
 LocationIconView::LocationIconView(const gfx::FontList& font_list,
@@ -106,21 +101,7 @@
   WebContents* contents = location_bar_->GetWebContents();
   if (!contents)
     return false;
-
-  // Important to use GetVisibleEntry to match what's showing in the omnibox.
-  NavigationEntry* entry = contents->GetController().GetVisibleEntry();
-  // The visible entry can be nullptr in the case of window.open("").
-  if (!entry)
-    return false;
-
-  SecurityStateTabHelper* helper =
-      SecurityStateTabHelper::FromWebContents(contents);
-  DCHECK(helper);
-  security_state::SecurityInfo security_info;
-  helper->GetSecurityInfo(&security_info);
-
-  location_bar_->delegate()->ShowWebsiteSettings(
-      contents, entry->GetVirtualURL(), security_info);
+  location_bar_->delegate()->ShowWebsiteSettings(contents);
   return true;
 }
 
diff --git a/chrome/browser/ui/views/toolbar/toolbar_view.cc b/chrome/browser/ui/views/toolbar/toolbar_view.cc
index 49f44a6..27f632ddb 100644
--- a/chrome/browser/ui/views/toolbar/toolbar_view.cc
+++ b/chrome/browser/ui/views/toolbar/toolbar_view.cc
@@ -422,12 +422,8 @@
   return browser_->content_setting_bubble_model_delegate();
 }
 
-void ToolbarView::ShowWebsiteSettings(
-    content::WebContents* web_contents,
-    const GURL& virtual_url,
-    const security_state::SecurityInfo& security_info) {
-  chrome::ShowWebsiteSettings(browser_, web_contents, virtual_url,
-                              security_info);
+void ToolbarView::ShowWebsiteSettings(content::WebContents* web_contents) {
+  chrome::ShowWebsiteSettings(browser_, web_contents);
 }
 
 PageActionImageView* ToolbarView::CreatePageActionImageView(
diff --git a/chrome/browser/ui/views/toolbar/toolbar_view.h b/chrome/browser/ui/views/toolbar/toolbar_view.h
index 1c11cad..1139ee9 100644
--- a/chrome/browser/ui/views/toolbar/toolbar_view.h
+++ b/chrome/browser/ui/views/toolbar/toolbar_view.h
@@ -126,10 +126,7 @@
       ExtensionAction* action) override;
   ContentSettingBubbleModelDelegate* GetContentSettingBubbleModelDelegate()
       override;
-  void ShowWebsiteSettings(
-      content::WebContents* web_contents,
-      const GURL& virtual_url,
-      const security_state::SecurityInfo& security_info) override;
+  void ShowWebsiteSettings(content::WebContents* web_contents) override;
 
   // CommandObserver:
   void EnabledStateChangedForCommand(int id, bool enabled) override;
diff --git a/chrome/browser/ui/webui/welcome_win10_ui.cc b/chrome/browser/ui/webui/welcome_win10_ui.cc
index d5cc294b..8628e5b9 100644
--- a/chrome/browser/ui/webui/welcome_win10_ui.cc
+++ b/chrome/browser/ui/webui/welcome_win10_ui.cc
@@ -8,6 +8,7 @@
 
 #include "base/feature_list.h"
 #include "base/memory/ptr_util.h"
+#include "chrome/browser/browser_process.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/startup/startup_features.h"
 #include "chrome/browser/ui/webui/welcome_win10_handler.h"
@@ -94,10 +95,9 @@
   static const char kDefaultFilePath[] = "default.webp";
   static const char kPinFilePath[] = "pin.webp";
 
-  Profile* profile = Profile::FromWebUI(web_ui);
-
-  // Store that this profile has been shown the Win10 promo page.
-  profile->GetPrefs()->SetBoolean(prefs::kHasSeenWin10PromoPage, true);
+  // Remember that the Win10 promo page has been shown.
+  g_browser_process->local_state()->SetBoolean(prefs::kHasSeenWin10PromoPage,
+                                               true);
 
   // Determine which variation to show.
   bool is_first_run = !UrlContainsKeyValueInQuery(url, "text", "faster");
@@ -132,7 +132,7 @@
   html_source->AddResourcePath("logo-small.png", IDR_PRODUCT_LOGO_64);
   html_source->AddResourcePath("logo-large.png", IDR_PRODUCT_LOGO_128);
 
-  content::WebUIDataSource::Add(profile, html_source);
+  content::WebUIDataSource::Add(Profile::FromWebUI(web_ui), html_source);
 }
 
 WelcomeWin10UI::~WelcomeWin10UI() = default;
diff --git a/chrome/common/chrome_utility_printing_messages.h b/chrome/common/chrome_utility_printing_messages.h
index f1a8ad7..bce3da90 100644
--- a/chrome/common/chrome_utility_printing_messages.h
+++ b/chrome/common/chrome_utility_printing_messages.h
@@ -11,6 +11,7 @@
 #include "build/build_config.h"
 #include "components/printing/common/printing_param_traits_macros.h"
 #include "ipc/ipc_message_macros.h"
+#include "ipc/ipc_param_traits.h"
 #include "ipc/ipc_platform_file.h"
 #include "printing/backend/print_backend.h"
 #include "printing/features/features.h"
@@ -26,6 +27,16 @@
 
 // Preview and Cloud Print messages.
 #if BUILDFLAG(ENABLE_PRINT_PREVIEW)
+IPC_ENUM_TRAITS_MAX_VALUE(printing::PdfRenderSettings::Mode,
+                          printing::PdfRenderSettings::Mode::LAST)
+
+IPC_STRUCT_TRAITS_BEGIN(printing::PdfRenderSettings)
+  IPC_STRUCT_TRAITS_MEMBER(area)
+  IPC_STRUCT_TRAITS_MEMBER(dpi)
+  IPC_STRUCT_TRAITS_MEMBER(autorotate)
+  IPC_STRUCT_TRAITS_MEMBER(mode)
+IPC_STRUCT_TRAITS_END()
+
 IPC_STRUCT_TRAITS_BEGIN(printing::PrinterCapsAndDefaults)
   IPC_STRUCT_TRAITS_MEMBER(printer_capabilities)
   IPC_STRUCT_TRAITS_MEMBER(caps_mime_type)
@@ -69,7 +80,6 @@
 //------------------------------------------------------------------------------
 // Utility process messages:
 // These are messages from the browser to the utility process.
-
 // Tell the utility process to render the given PDF into a PWGRaster.
 IPC_MESSAGE_CONTROL4(ChromeUtilityMsg_RenderPDFPagesToPWGRaster,
                      IPC::PlatformFileForTransit /* Input PDF file */,
@@ -99,10 +109,9 @@
 // Tell the utility process to start rendering the given PDF into a metafile.
 // Utility process would be alive until
 // ChromeUtilityMsg_RenderPDFPagesToMetafiles_Stop message.
-IPC_MESSAGE_CONTROL3(ChromeUtilityMsg_RenderPDFPagesToMetafiles,
+IPC_MESSAGE_CONTROL2(ChromeUtilityMsg_RenderPDFPagesToMetafiles,
                      IPC::PlatformFileForTransit /* input_file */,
-                     printing::PdfRenderSettings /* settings */,
-                     bool /* print_text_with_gdi */)
+                     printing::PdfRenderSettings /* settings */)
 
 // Requests conversion of the next page.
 IPC_MESSAGE_CONTROL2(ChromeUtilityMsg_RenderPDFPagesToMetafiles_GetPage,
diff --git a/chrome/service/cloud_print/print_system_win.cc b/chrome/service/cloud_print/print_system_win.cc
index 7c16abf..2641365 100644
--- a/chrome/service/cloud_print/print_system_win.cc
+++ b/chrome/service/cloud_print/print_system_win.cc
@@ -445,7 +445,9 @@
       // PDF that matches paper size and orientation.
       if (utility_host->StartRenderPDFPagesToMetafile(
               pdf_path,
-              printing::PdfRenderSettings(render_area, render_dpi, false))) {
+              printing::PdfRenderSettings(
+                  render_area, render_dpi, false,
+                  printing::PdfRenderSettings::Mode::NORMAL))) {
         // The object will self-destruct when the child process dies.
         ignore_result(utility_host.release());
       } else {
diff --git a/chrome/service/service_utility_process_host.cc b/chrome/service/service_utility_process_host.cc
index cc8e0ad..8932a87 100644
--- a/chrome/service/service_utility_process_host.cc
+++ b/chrome/service/service_utility_process_host.cc
@@ -99,7 +99,7 @@
       return false;
     return host_->Send(new ChromeUtilityMsg_RenderPDFPagesToMetafiles(
         IPC::TakePlatformFileForTransit(std::move(pdf_file)),
-        conversion_settings, false /* print_text_with_gdi */));
+        conversion_settings));
   }
 
   void GetMorePages() {
diff --git a/chrome/test/data/webui/settings/about_page_tests.js b/chrome/test/data/webui/settings/about_page_tests.js
index dfb4a1d..b094b63 100644
--- a/chrome/test/data/webui/settings/about_page_tests.js
+++ b/chrome/test/data/webui/settings/about_page_tests.js
@@ -380,6 +380,17 @@
           assertTrue(relaunch.hidden);
           assertTrue(relaunchAndPowerwash.hidden);
 
+          // Check that the "Check for updates" button gets hidden for certain
+          // UpdateStatus values, even if the CHECKING state was never
+          // encountered (for example triggering update from crosh command
+          // line).
+          fireStatusChanged(UpdateStatus.UPDATING);
+          assertAllHidden();
+          fireStatusChanged(UpdateStatus.NEARLY_UPDATED);
+          assertTrue(checkForUpdates.hidden);
+          assertFalse(relaunch.hidden);
+          assertTrue(relaunchAndPowerwash.hidden);
+
           fireStatusChanged(UpdateStatus.CHECKING);
           assertAllHidden();
 
diff --git a/chrome/test/data/webui/settings/certificate_manager_page_test.js b/chrome/test/data/webui/settings/certificate_manager_page_test.js
index 9d7177e..8002bf57 100644
--- a/chrome/test/data/webui/settings/certificate_manager_page_test.js
+++ b/chrome/test/data/webui/settings/certificate_manager_page_test.js
@@ -113,8 +113,8 @@
     },
 
     /** @override */
-    importPersonalCertificate: function() {
-      this.methodCalled('importPersonalCertificate');
+    importPersonalCertificate: function(useHardwareBacked) {
+      this.methodCalled('importPersonalCertificate', useHardwareBacked);
       return Promise.resolve(true);
     },
 
@@ -799,13 +799,15 @@
        * @param {boolean} actionEventExpected Whether a
        *     settings.CertificateActionEvent is expected to fire as a result
        *     tapping the Import button.
+       * @param {boolean} bindBtn Whether to click on the import and bind btn.
        */
       function testImportForCertificateType(
-          certificateType, proxyMethodName, actionEventExpected) {
-        element.certificateType = certificateType
+          certificateType, proxyMethodName, actionEventExpected, bindBtn) {
+        element.certificateType = certificateType;
         Polymer.dom.flush();
 
-        var importButton = element.$$('paper-button');
+        var importButton =
+            bindBtn ? element.$$('#importAndBind') : element.$$('#import');
         assertTrue(!!importButton);
 
         var waitForActionEvent = actionEventExpected ?
@@ -813,32 +815,43 @@
             Promise.resolve(null);
 
         MockInteractions.tap(importButton);
-        return browserProxy.whenCalled(proxyMethodName).then(function() {
-          return waitForActionEvent;
-        }).then(function(event) {
-          if (actionEventExpected) {
-            assertEquals(
-                CertificateAction.IMPORT, event.detail.action);
-            assertEquals(certificateType, event.detail.certificateType);
-          }
-        });
+        return browserProxy.whenCalled(proxyMethodName)
+            .then(function(arg) {
+              if (proxyMethodName == 'importPersonalCertificate') {
+                assertNotEquals(arg, undefined);
+                assertEquals(arg, bindBtn);
+              }
+              return waitForActionEvent;
+            })
+            .then(function(event) {
+              if (actionEventExpected) {
+                assertEquals(CertificateAction.IMPORT, event.detail.action);
+                assertEquals(certificateType, event.detail.certificateType);
+              }
+            });
       }
 
       test('ImportButton_Personal', function() {
         return testImportForCertificateType(
-            CertificateType.PERSONAL,
-            'importPersonalCertificate', true);
+            CertificateType.PERSONAL, 'importPersonalCertificate', true, false);
       });
 
+      if (cr.isChromeOS) {
+        test('ImportAndBindButton_Personal', function() {
+          return testImportForCertificateType(
+              CertificateType.PERSONAL, 'importPersonalCertificate', true,
+              true);
+        });
+      }
+
       test('ImportButton_Server', function() {
         return testImportForCertificateType(
-            CertificateType.SERVER, 'importServerCertificate',
-            false);
+            CertificateType.SERVER, 'importServerCertificate', false, false);
       });
 
       test('ImportButton_CA', function() {
         return testImportForCertificateType(
-            CertificateType.CA, 'importCaCertificate', true);
+            CertificateType.CA, 'importCaCertificate', true, false);
       });
     });
   }
diff --git a/chrome/utility/printing_handler.cc b/chrome/utility/printing_handler.cc
index 7dbae1a1..390cd39b 100644
--- a/chrome/utility/printing_handler.cc
+++ b/chrome/utility/printing_handler.cc
@@ -87,10 +87,10 @@
 #if defined(OS_WIN)
 void PrintingHandler::OnRenderPDFPagesToMetafile(
     IPC::PlatformFileForTransit pdf_transit,
-    const PdfRenderSettings& settings,
-    bool print_text_with_gdi) {
+    const PdfRenderSettings& settings) {
   pdf_rendering_settings_ = settings;
-  chrome_pdf::SetPDFUseGDIPrinting(print_text_with_gdi);
+  chrome_pdf::SetPDFUseGDIPrinting(pdf_rendering_settings_.mode ==
+                                   PdfRenderSettings::Mode::GDI_TEXT);
   base::File pdf_file = IPC::PlatformFileForTransitToFile(pdf_transit);
   int page_count = LoadPDF(std::move(pdf_file));
   Send(
diff --git a/chrome/utility/printing_handler.h b/chrome/utility/printing_handler.h
index 99b6eeb..0d71af2 100644
--- a/chrome/utility/printing_handler.h
+++ b/chrome/utility/printing_handler.h
@@ -35,8 +35,7 @@
   // IPC message handlers.
 #if defined(OS_WIN)
   void OnRenderPDFPagesToMetafile(IPC::PlatformFileForTransit pdf_transit,
-                                  const PdfRenderSettings& settings,
-                                  bool print_text_with_gdi);
+                                  const PdfRenderSettings& settings);
   void OnRenderPDFPagesToMetafileGetPage(
       int page_number,
       IPC::PlatformFileForTransit output_file);
diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/autofill/core/browser/autofill_manager.cc
index ffcb8133..ec7b519 100644
--- a/components/autofill/core/browser/autofill_manager.cc
+++ b/components/autofill/core/browser/autofill_manager.cc
@@ -638,7 +638,7 @@
   }
 
   // Show a "Payment not secure" message.
-  if (!is_context_secure && is_http_warning_enabled) {
+  if (!is_context_secure && is_filling_credit_card && is_http_warning_enabled) {
 #if !defined(OS_ANDROID)
     if (!suggestions.empty()) {
       suggestions.insert(suggestions.begin(), Suggestion());
diff --git a/components/autofill/core/browser/autofill_manager_unittest.cc b/components/autofill/core/browser/autofill_manager_unittest.cc
index 834e8a2..3b85c34a 100644
--- a/components/autofill/core/browser/autofill_manager_unittest.cc
+++ b/components/autofill/core/browser/autofill_manager_unittest.cc
@@ -1245,6 +1245,24 @@
       Suggestion("Elvis", "3734 Elvis Presley Blvd.", "", 2));
 }
 
+// Test that the HttpWarning does not appear on non-payment forms.
+TEST_F(AutofillManagerTest, GetProfileSuggestions_EmptyValueNotSecure) {
+  SetHttpWarningEnabled();
+  // Set up our form data.
+  FormData form;
+  test::CreateTestAddressFormData(&form);
+  std::vector<FormData> forms(1, form);
+  FormsSeen(forms);
+
+  const FormFieldData& field = form.fields[0];
+  GetAutofillSuggestions(form, field);
+
+  // Test that we sent the right values to the external delegate.
+  external_delegate_->CheckSuggestions(
+      kDefaultPageID, Suggestion("Charles", "123 Apple St.", "", 1),
+      Suggestion("Elvis", "3734 Elvis Presley Blvd.", "", 2));
+}
+
 // Test that we return only matching address profile suggestions when the
 // selected form field has been partially filled out.
 TEST_F(AutofillManagerTest, GetProfileSuggestions_MatchCharacter) {
diff --git a/components/password_manager/core/browser/password_autofill_manager_unittest.cc b/components/password_manager/core/browser/password_autofill_manager_unittest.cc
index b6d94f2..713b83cd 100644
--- a/components/password_manager/core/browser/password_autofill_manager_unittest.cc
+++ b/components/password_manager/core/browser/password_autofill_manager_unittest.cc
@@ -619,8 +619,8 @@
   password_autofill_manager_->OnShowNotSecureWarning(base::i18n::RIGHT_TO_LEFT,
                                                      element_bounds);
 
-  // Accepting the warning message should trigger a call to open the url and
-  // hide the popup.
+  // Accepting the warning message should trigger a call to open an explanation
+  // of the message and hide the popup.
   EXPECT_CALL(*autofill_client, ShowHttpNotSecureExplanation());
   EXPECT_CALL(*autofill_client, HideAutofillPopup());
   password_autofill_manager_->DidAcceptSuggestion(
@@ -680,8 +680,8 @@
       dummy_key, base::i18n::RIGHT_TO_LEFT, test_username_,
       autofill::IS_PASSWORD_FIELD, element_bounds);
 
-  // Accepting the warning message should trigger a call to open the url and
-  // hide the popup.
+  // Accepting the warning message should trigger a call to open an explanation
+  // of the message and hide the popup.
   EXPECT_CALL(*autofill_client, ShowHttpNotSecureExplanation());
   EXPECT_CALL(*autofill_client, HideAutofillPopup());
   password_autofill_manager_->DidAcceptSuggestion(
@@ -736,8 +736,8 @@
   password_autofill_manager_->OnShowPasswordSuggestions(
       dummy_key, base::i18n::RIGHT_TO_LEFT, test_username_, 0, element_bounds);
 
-  // Accepting the warning message should trigger a call to open the url and
-  // hide the popup.
+  // Accepting the warning message should trigger a call to open an explanation
+  // of the message and hide the popup.
   EXPECT_CALL(*autofill_client, ShowHttpNotSecureExplanation());
   EXPECT_CALL(*autofill_client, HideAutofillPopup());
   password_autofill_manager_->DidAcceptSuggestion(
diff --git a/components/policy/resources/policy_templates.json b/components/policy/resources/policy_templates.json
index f6bcad3..d3881ca2 100644
--- a/components/policy/resources/policy_templates.json
+++ b/components/policy/resources/policy_templates.json
@@ -9306,6 +9306,7 @@
             'per_profile': True,
           },
           'example_value': ['PIN'],
+          'default_for_enterprise_users': [],
           'id': 352,
           'caption': '''Configure allowed quick unlock modes.''',
           'tags': [],
diff --git a/components/policy/tools/generate_policy_source.py b/components/policy/tools/generate_policy_source.py
index 0ad4664..c3544ec3 100755
--- a/components/policy/tools/generate_policy_source.py
+++ b/components/policy/tools/generate_policy_source.py
@@ -666,6 +666,32 @@
     self.properties_nodes = map(partial(self.ResolveID, 3),
         self.properties_nodes)
 
+def _GenerateDefaultValue(value):
+  """Converts a JSON object into a base::Value entry. Returns a tuple, the first
+  entry being a list of declaration statements to define the variable, the
+  second entry being a way to access the variable.
+
+  If no definition is needed, the first return value will be an empty list. If
+  any error occurs, the second return value will be None (ie, no way to fetch
+  the value).
+
+  |value|: The deserialized value to convert to base::Value."""
+  if type(value) == bool or type(value) == int:
+    return [], 'base::MakeUnique<base::FundamentalValue>(%s)' %\
+                    json.dumps(value)
+  elif type(value) == str:
+    return [], 'base::MakeUnique<base::StringValue>("%s")' % value
+  elif type(value) == list:
+    setup = ['auto default_value = base::MakeUnique<base::ListValue>();']
+    for entry in value:
+      decl, fetch = _GenerateDefaultValue(entry)
+      # Nested lists are not supported.
+      if decl:
+        return [], None
+      setup.append('default_value->Append(%s);' % fetch)
+    return setup, 'std::move(default_value)'
+  return [], None
+
 def _WritePolicyConstantSource(policies, os, f, riskTags):
   f.write('#include "components/policy/policy_constants.h"\n'
           '\n'
@@ -743,27 +769,29 @@
 
   for policy in policies:
     if policy.has_enterprise_default:
-      if policy.policy_type == 'Type::BOOLEAN':
-        creation_expression = 'new base::FundamentalValue(%s)' %\
-                              ('true' if policy.enterprise_default else 'false')
-      elif policy.policy_type == 'Type::INTEGER':
-        creation_expression = 'new base::FundamentalValue(%s)' %\
-                              policy.enterprise_default
-      elif policy.policy_type == 'Type::STRING':
-        creation_expression = 'new base::StringValue("%s")' %\
-                              policy.enterprise_default
-      else:
+      declare_default_stmts, fetch_default =\
+          _GenerateDefaultValue(policy.enterprise_default)
+      if not fetch_default:
         raise RuntimeError('Type %s of policy %s is not supported at '
                            'enterprise defaults' % (policy.policy_type,
                                                     policy.name))
+
+      # Convert declare_default_stmts to a string with the correct identation.
+      if declare_default_stmts:
+        declare_default = '    %s\n' % '\n    '.join(declare_default_stmts)
+      else:
+        declare_default = ''
+
       f.write('  if (!policy_map->Get(key::k%s)) {\n'
+              '%s'
               '    policy_map->Set(key::k%s,\n'
               '                    POLICY_LEVEL_MANDATORY,\n'
               '                    POLICY_SCOPE_USER,\n'
               '                    POLICY_SOURCE_ENTERPRISE_DEFAULT,\n'
-              '                    base::WrapUnique(%s),\n'
-              '                    NULL);\n'
-              '  }\n' % (policy.name, policy.name, creation_expression))
+              '                    %s,\n'
+              '                    nullptr);\n'
+              '  }\n' % (policy.name, declare_default, policy.name,
+                         fetch_default))
 
   f.write('}\n'
           '#endif\n\n')
diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn
index 587428e..a8449db 100644
--- a/content/browser/BUILD.gn
+++ b/content/browser/BUILD.gn
@@ -1056,6 +1056,8 @@
     "renderer_host/input/synthetic_gesture_target_mac.mm",
     "renderer_host/input/synthetic_mouse_driver.cc",
     "renderer_host/input/synthetic_mouse_driver.h",
+    "renderer_host/input/synthetic_pen_driver.cc",
+    "renderer_host/input/synthetic_pen_driver.h",
     "renderer_host/input/synthetic_pinch_gesture.cc",
     "renderer_host/input/synthetic_pinch_gesture.h",
     "renderer_host/input/synthetic_pointer_action.cc",
diff --git a/content/browser/android/app_web_message_port_service_impl.cc b/content/browser/android/app_web_message_port_service_impl.cc
index 5e749fea..94f3d89 100644
--- a/content/browser/android/app_web_message_port_service_impl.cc
+++ b/content/browser/android/app_web_message_port_service_impl.cc
@@ -107,10 +107,11 @@
 void AppWebMessagePortServiceImpl::OnMessagePortMessageFilterClosing(
     AppWebMessagePortMessageFilter* filter) {
   DCHECK_CURRENTLY_ON(BrowserThread::IO);
-  for (MessagePorts::iterator iter = ports_.begin(); iter != ports_.end();
-       iter++) {
+  for (MessagePorts::iterator iter = ports_.begin(); iter != ports_.end();) {
     if (iter->second == filter) {
-      ports_.erase(iter);
+      iter = ports_.erase(iter);
+    } else {
+      ++iter;
     }
   }
 }
diff --git a/content/browser/loader/redirect_to_file_resource_handler.cc b/content/browser/loader/redirect_to_file_resource_handler.cc
index a30d9dc..b4018c8 100644
--- a/content/browser/loader/redirect_to_file_resource_handler.cc
+++ b/content/browser/loader/redirect_to_file_resource_handler.cc
@@ -50,8 +50,8 @@
 
 namespace content {
 
-static const int kInitialReadBufSize = 32768;
-static const int kMaxReadBufSize = 524288;
+const int RedirectToFileResourceHandler::kInitialReadBufSize = 32768;
+const int RedirectToFileResourceHandler::kMaxReadBufSize = 524288;
 
 // A separate IO thread object to manage the lifetime of the net::FileStream and
 // the ShareableFileReference. When the handler is destroyed, it asynchronously
@@ -214,18 +214,20 @@
   DCHECK(new_offset <= buf_->capacity());
   buf_->set_offset(new_offset);
 
-  if (BufIsFull()) {
-    did_defer_ = *defer = true;
-    request()->LogBlockedBy("RedirectToFileResourceHandler");
-
-    if (buf_->capacity() == bytes_read) {
-      // The network layer has saturated our buffer in one read. Next time, we
-      // should give it a bigger buffer for it to fill.
-      next_buffer_size_ = std::min(next_buffer_size_ * 2, kMaxReadBufSize);
-    }
+  if (buf_->capacity() == bytes_read) {
+    // The network layer has saturated our buffer in one read. Next time, we
+    // should give it a bigger buffer for it to fill.
+    next_buffer_size_ = std::min(next_buffer_size_ * 2, kMaxReadBufSize);
   }
 
-  return WriteMore();
+  bool success = WriteMore();
+
+  if (success && BufIsFull()) {
+    did_defer_ = *defer = true;
+    request()->LogBlockedBy("RedirectToFileResourceHandler");
+  }
+
+  return success;
 }
 
 void RedirectToFileResourceHandler::OnResponseCompleted(
@@ -242,6 +244,10 @@
   next_handler_->OnResponseCompleted(status, defer);
 }
 
+int RedirectToFileResourceHandler::GetBufferSizeForTesting() const {
+  return buf_->capacity();
+}
+
 void RedirectToFileResourceHandler::DidCreateTemporaryFile(
     base::File::Error error_code,
     std::unique_ptr<net::FileStream> file_stream,
@@ -309,22 +315,19 @@
 
 bool RedirectToFileResourceHandler::WriteMore() {
   DCHECK(writer_);
+
   for (;;) {
     if (write_cursor_ == buf_->offset()) {
       // We've caught up to the network load, but it may be in the process of
       // appending more data to the buffer.
       if (!buf_write_pending_) {
-        if (BufIsFull()) {
-          request()->LogUnblocked();
-          Resume();
-        }
         buf_->set_offset(0);
         write_cursor_ = 0;
       }
-      return true;
+      break;
     }
     if (writer_->is_writing())
-      return true;
+      break;
     DCHECK(write_cursor_ < buf_->offset());
 
     // Create a temporary buffer pointing to a subsection of the data buffer so
@@ -347,12 +350,20 @@
 
     int rv = writer_->Write(wrapped.get(), write_len);
     if (rv == net::ERR_IO_PENDING)
-      return true;
+      break;
     if (rv <= 0)
       return false;
     next_handler_->OnDataDownloaded(rv);
     write_cursor_ += rv;
   }
+
+  // If the request was deferred to allow writing to the file, and the buffer is
+  // no longer full, resume the request.
+  if (did_defer_ && !completed_during_write_ && !BufIsFull()) {
+    request()->LogUnblocked();
+    Resume();
+  }
+  return true;
 }
 
 bool RedirectToFileResourceHandler::BufIsFull() const {
diff --git a/content/browser/loader/redirect_to_file_resource_handler.h b/content/browser/loader/redirect_to_file_resource_handler.h
index 8163a42..bdd59e0 100644
--- a/content/browser/loader/redirect_to_file_resource_handler.h
+++ b/content/browser/loader/redirect_to_file_resource_handler.h
@@ -40,6 +40,10 @@
 class CONTENT_EXPORT RedirectToFileResourceHandler
     : public LayeredResourceHandler {
  public:
+  // Exposed for testing.
+  static const int kInitialReadBufSize;
+  static const int kMaxReadBufSize;
+
   typedef base::Callback<void(const CreateTemporaryFileStreamCallback&)>
       CreateTemporaryFileStreamFunction;
 
@@ -66,6 +70,9 @@
   void OnResponseCompleted(const net::URLRequestStatus& status,
                            bool* defer) override;
 
+  // Returns the size of |buf_|, to make sure it's being increased as expected.
+  int GetBufferSizeForTesting() const;
+
  private:
   void DidCreateTemporaryFile(base::File::Error error_code,
                               std::unique_ptr<net::FileStream> file_stream,
diff --git a/content/browser/loader/redirect_to_file_resource_handler_unittest.cc b/content/browser/loader/redirect_to_file_resource_handler_unittest.cc
new file mode 100644
index 0000000..e8736f2
--- /dev/null
+++ b/content/browser/loader/redirect_to_file_resource_handler_unittest.cc
@@ -0,0 +1,851 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "content/browser/loader/redirect_to_file_resource_handler.h"
+
+#include <algorithm>
+#include <limits>
+#include <memory>
+#include <string>
+#include <vector>
+
+#include "base/bind.h"
+#include "base/callback_helpers.h"
+#include "base/files/file_path.h"
+#include "base/files/file_util.h"
+#include "base/location.h"
+#include "base/logging.h"
+#include "base/macros.h"
+#include "base/memory/ptr_util.h"
+#include "base/memory/ref_counted.h"
+#include "base/memory/weak_ptr.h"
+#include "base/run_loop.h"
+#include "base/strings/string_piece.h"
+#include "base/threading/thread_task_runner_handle.h"
+#include "content/browser/loader/mock_resource_loader.h"
+#include "content/browser/loader/temporary_file_stream.h"
+#include "content/browser/loader/test_resource_handler.h"
+#include "content/public/common/resource_response.h"
+#include "content/public/test/test_browser_thread_bundle.h"
+#include "net/base/completion_callback.h"
+#include "net/base/file_stream.h"
+#include "net/base/io_buffer.h"
+#include "net/base/mime_sniffer.h"
+#include "net/base/net_errors.h"
+#include "net/base/request_priority.h"
+#include "net/url_request/url_request.h"
+#include "net/url_request/url_request_context.h"
+#include "net/url_request/url_request_status.h"
+#include "net/url_request/url_request_test_util.h"
+#include "storage/browser/blob/shareable_file_reference.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "url/gurl.h"
+
+namespace content {
+namespace {
+
+// The maximum size for which the initial read will always be sync, even when
+// the wrote completes asynchronously.  See
+// RedirectToFileResourceHandler::BufIsFull().
+const int kMaxInitialSyncReadSize =
+    RedirectToFileResourceHandler::kInitialReadBufSize -
+    2 * net::kMaxBytesToSniff - 1;
+
+// Used to indicate whether FileStream operations and the lower-layer
+// TestResourceHandler operations should complete immediately or by
+// asynchronously invoking a callback. Each test is run with all operations set
+// by default to each mode, though some tests override the mode of some
+// operations.
+enum class CompletionMode {
+  SYNC,
+  ASYNC,
+};
+
+// Mock in-memory net::FileStream implementation that can be configured to
+// return errors and complete operations synchronously or asynchronously.
+class MockFileStream : public net::FileStream {
+ public:
+  struct OperationResult {
+    OperationResult(int result, CompletionMode completion_mode)
+        : result(result), completion_mode(completion_mode) {}
+
+    OperationResult()
+        : OperationResult(net::ERR_UNEXPECTED, CompletionMode::SYNC) {}
+
+    int result;
+    CompletionMode completion_mode;
+  };
+
+  MockFileStream() : FileStream(base::ThreadTaskRunnerHandle::Get()) {}
+
+  ~MockFileStream() override {
+    EXPECT_EQ(expect_closed_, closed_);
+    // Most of these tests write 32k or more, which is a bit much for the
+    // command line.
+    EXPECT_TRUE(expected_written_data_ == written_data_);
+  }
+
+  // net::FileStream implementation:
+
+  int Open(const base::FilePath& path,
+           int open_flags,
+           const net::CompletionCallback& callback) override {
+    return ReturnResult(open_result_, callback);
+  }
+
+  int Close(const net::CompletionCallback& callback) override {
+    EXPECT_FALSE(closed_);
+    int result = ReturnResult(
+        close_result_,
+        base::BindRepeating(&MockFileStream::SetClosedAndRunCallback,
+                            base::Unretained(this), callback));
+    if (result != net::ERR_IO_PENDING)
+      closed_ = true;
+    return result;
+  }
+
+  bool IsOpen() const override {
+    NOTREACHED();
+    return false;
+  }
+
+  int Seek(int64_t offset,
+           const net::Int64CompletionCallback& callback) override {
+    NOTREACHED();
+    return net::ERR_UNEXPECTED;
+  }
+
+  int Read(net::IOBuffer* buf,
+           int buf_len,
+           const net::CompletionCallback& callback) override {
+    NOTREACHED();
+    return net::ERR_UNEXPECTED;
+  }
+
+  int Write(net::IOBuffer* buf,
+            int buf_len,
+            const net::CompletionCallback& callback) override {
+    // 0-byte writes aren't allowed.
+    EXPECT_GT(buf_len, 0);
+
+    OperationResult write_result = next_write_result_;
+    next_write_result_ = all_write_results_;
+    if (write_result.result > buf_len)
+      write_result.result = buf_len;
+    if (write_result.result > 0)
+      written_data_ += std::string(buf->data(), write_result.result);
+
+    return ReturnResult(write_result, callback);
+  }
+
+  int Flush(const net::CompletionCallback& callback) override {
+    NOTREACHED();
+    return net::ERR_UNEXPECTED;
+  }
+
+  void set_open_result(OperationResult open_result) {
+    open_result_ = open_result;
+  }
+  void set_close_result(OperationResult close_result) {
+    close_result_ = close_result;
+  }
+
+  // Sets the result for all write operations. Returned result is capped at
+  // number of bytes the consumer actually tried to write. Overrides
+  // |next_write_result_|.
+  void set_all_write_results(OperationResult all_write_results) {
+    next_write_result_ = all_write_results_ = all_write_results;
+  }
+
+  // Sets the result of only the next write operation.
+  void set_next_write_result(OperationResult next_write_result) {
+    next_write_result_ = next_write_result;
+  }
+
+  void set_expected_written_data(const std::string& expected_written_data) {
+    expected_written_data_ = expected_written_data;
+  }
+
+  // Sets whether the file should expect to be closed.
+  void set_expect_closed(bool expect_closed) { expect_closed_ = expect_closed; }
+
+ private:
+  void SetClosedAndRunCallback(const net::CompletionCallback& callback,
+                               int result) {
+    EXPECT_FALSE(closed_);
+    closed_ = true;
+    callback.Run(result);
+  }
+
+  int ReturnResult(OperationResult result,
+                   const net::CompletionCallback& callback) {
+    if (result.completion_mode == CompletionMode::SYNC)
+      return result.result;
+    base::ThreadTaskRunnerHandle::Get()->PostTask(
+        FROM_HERE, base::Bind(callback, result.result));
+    return net::ERR_IO_PENDING;
+  }
+
+  OperationResult open_result_;
+  OperationResult close_result_;
+  OperationResult next_write_result_;
+  OperationResult all_write_results_;
+
+  std::string expected_written_data_;
+  std::string written_data_;
+
+  bool expect_closed_ = false;
+  bool closed_ = false;
+
+  DISALLOW_COPY_AND_ASSIGN(MockFileStream);
+};
+
+class RedirectToFileResourceHandlerTest
+    : public testing::TestWithParam<CompletionMode> {
+ public:
+  RedirectToFileResourceHandlerTest()
+      : thread_bundle_(TestBrowserThreadBundle::IO_MAINLOOP),
+        url_request_(
+            url_request_context_.CreateRequest(GURL("foo://bar/"),
+                                               net::DEFAULT_PRIORITY,
+                                               &url_request_delegate_)) {
+    base::CreateTemporaryFile(&temp_file_path_);
+    std::unique_ptr<TestResourceHandler> test_handler =
+        base::MakeUnique<TestResourceHandler>();
+    test_handler->set_expect_on_data_downloaded(true);
+    if (GetParam() == CompletionMode::ASYNC) {
+      // Don't defer OnResponseCompleted, by default, since that's really
+      // unusual.
+      test_handler->set_defer_on_response_started(true);
+      test_handler->set_defer_on_will_start(true);
+    }
+    test_handler_ = test_handler->GetWeakPtr();
+
+    redirect_to_file_handler_ = base::MakeUnique<RedirectToFileResourceHandler>(
+        std::move(test_handler), url_request_.get());
+    mock_loader_ =
+        base::MakeUnique<MockResourceLoader>(redirect_to_file_handler_.get());
+    redirect_to_file_handler_->SetCreateTemporaryFileStreamFunctionForTesting(
+        base::Bind(&RedirectToFileResourceHandlerTest::
+                       SetCreateTemporaryFileStreamCallback,
+                   base::Unretained(this)));
+
+    file_stream_ = base::MakeUnique<MockFileStream>();
+    file_stream_->set_open_result(
+        MockFileStream::OperationResult(net::OK, GetParam()));
+    file_stream_->set_all_write_results(MockFileStream::OperationResult(
+        std::numeric_limits<int>::max(), GetParam()));
+    file_stream_->set_close_result(
+        MockFileStream::OperationResult(net::OK, GetParam()));
+  }
+
+  ~RedirectToFileResourceHandlerTest() override {
+    EXPECT_FALSE(test_handler_->on_read_completed_called());
+
+    // This should post a task to delete the temporary file.
+    redirect_to_file_handler_.reset();
+    mock_loader_.reset();
+    url_request_.reset();
+    // This should delete the temporary file, and ensure
+    // MockFileStream::Cancel() is called.
+    base::RunLoop().RunUntilIdle();
+
+    EXPECT_FALSE(base::PathExists(temp_file_path_));
+  }
+
+  // Creates a test string of the specified length, and sets that as the
+  // expected data written to |file_stream_|.
+  std::string CreateTestData(size_t length) {
+    std::string test_data;
+    test_data.reserve(length);
+    for (size_t i = 0; i < length; ++i)
+      test_data.push_back(static_cast<char>(i % 256));
+    file_stream_->set_expected_written_data(test_data);
+    return test_data;
+  }
+
+  // The "CreateTemporaryFileStream" method invoked by the
+  // RedirectToFileResourceHandler.  Just sets a callback that will be invoked
+  // directly.
+  void SetCreateTemporaryFileStreamCallback(
+      const CreateTemporaryFileStreamCallback& create_file_stream_callback) {
+    create_file_stream_callback_ = create_file_stream_callback;
+  }
+
+  // Simulates starting the request, the response starting, and stream creation
+  // completing with the specified error code. Has |test_handler_| resume the
+  // request, if needed. Returns final status of |mock_loader_|.
+  MockResourceLoader::Status StartAndCreateStream(base::File::Error file_error)
+      WARN_UNUSED_RESULT {
+    DCHECK(file_stream_);
+
+    EXPECT_EQ(MockResourceLoader::Status::CALLBACK_PENDING,
+              mock_loader_->OnWillStart(url_request_->url()));
+
+    file_stream_->set_expect_closed(file_error == base::File::FILE_OK);
+    if (file_error != base::File::FILE_OK)
+      file_stream_ = nullptr;
+    base::ResetAndReturn(&create_file_stream_callback_)
+        .Run(file_error, std::move(file_stream_),
+             // Not really used by the test, but the ResourceHandler expects it
+             // to be non-null.
+             storage::ShareableFileReference::GetOrCreate(
+                 temp_file_path_,
+                 storage::ShareableFileReference::DELETE_ON_FINAL_RELEASE,
+                 base::ThreadTaskRunnerHandle::Get().get())
+                 .get());
+    // If this is an async test, |test_handler_| will defer the OnWillStart
+    // event on success (On error, its OnWillStart method is not called).
+    if (file_error == base::File::FILE_OK &&
+        GetParam() == CompletionMode::ASYNC) {
+      EXPECT_EQ(MockResourceLoader::Status::CALLBACK_PENDING,
+                mock_loader_->status());
+      test_handler_->Resume();
+      mock_loader_->WaitUntilIdleOrCanceled();
+    }
+    EXPECT_NE(MockResourceLoader::Status::CALLBACK_PENDING,
+              mock_loader_->status());
+    return mock_loader_->status();
+  }
+
+  // Convenience wrapper for MockLoader methods that will Resume |test_handler_|
+  // and wait for it to resume the request if running an async test.
+  MockResourceLoader::Status OnResponseStartedAndWaitForResult()
+      WARN_UNUSED_RESULT {
+    mock_loader_->OnResponseStarted(make_scoped_refptr(new ResourceResponse()));
+    if (GetParam() == CompletionMode::ASYNC) {
+      EXPECT_EQ(MockResourceLoader::Status::CALLBACK_PENDING,
+                mock_loader_->status());
+      test_handler_->Resume();
+      mock_loader_->WaitUntilIdleOrCanceled();
+    }
+    EXPECT_NE(MockResourceLoader::Status::CALLBACK_PENDING,
+              mock_loader_->status());
+    return mock_loader_->status();
+  }
+
+  // Utility method that simulates a final 0-byte read and response completed
+  // events, and checks that completion is handled correctly. Expects all data
+  // to already have been written to the file.
+  void CompleteRequestSuccessfully(int expected_total_bytes_downloaded) {
+    // The loader should be idle and all the data should have already been
+    // processed.
+    ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->status());
+    EXPECT_EQ(expected_total_bytes_downloaded,
+              test_handler_->total_bytes_downloaded());
+
+    ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
+    ASSERT_EQ(MockResourceLoader::Status::IDLE,
+              mock_loader_->OnReadCompleted(""));
+    ASSERT_EQ(MockResourceLoader::Status::IDLE,
+              mock_loader_->OnResponseCompleted(
+                  net::URLRequestStatus::FromError(net::OK)));
+    EXPECT_EQ(expected_total_bytes_downloaded,
+              test_handler_->total_bytes_downloaded());
+    EXPECT_EQ(net::URLRequestStatus::SUCCESS,
+              test_handler_->final_status().status());
+  }
+
+ protected:
+  TestBrowserThreadBundle thread_bundle_;
+  base::FilePath temp_file_path_;
+  net::TestURLRequestContext url_request_context_;
+  net::TestDelegate url_request_delegate_;
+  base::WeakPtr<TestResourceHandler> test_handler_;
+  std::unique_ptr<net::URLRequest> url_request_;
+  std::unique_ptr<MockResourceLoader> mock_loader_;
+  std::unique_ptr<RedirectToFileResourceHandler> redirect_to_file_handler_;
+  std::unique_ptr<MockFileStream> file_stream_;
+
+  CreateTemporaryFileStreamCallback create_file_stream_callback_;
+};
+
+TEST_P(RedirectToFileResourceHandlerTest, EmptyBody) {
+  ASSERT_EQ(MockResourceLoader::Status::IDLE,
+            StartAndCreateStream(base::File::FILE_OK));
+  ASSERT_EQ(MockResourceLoader::Status::IDLE,
+            OnResponseStartedAndWaitForResult());
+
+  CompleteRequestSuccessfully(0);
+}
+
+TEST_P(RedirectToFileResourceHandlerTest, SingleBodyRead) {
+  std::string test_data = CreateTestData(kMaxInitialSyncReadSize);
+
+  ASSERT_EQ(MockResourceLoader::Status::IDLE,
+            StartAndCreateStream(base::File::FILE_OK));
+  ASSERT_EQ(MockResourceLoader::Status::IDLE,
+            OnResponseStartedAndWaitForResult());
+
+  ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
+  ASSERT_EQ(MockResourceLoader::Status::IDLE,
+            mock_loader_->OnReadCompleted(test_data));
+  // Wait for the write to complete, in the async case.
+  base::RunLoop().RunUntilIdle();
+
+  CompleteRequestSuccessfully(test_data.size());
+}
+
+TEST_P(RedirectToFileResourceHandlerTest, ManySequentialBodyReads) {
+  const size_t kBytesPerRead = 128;
+  std::string test_data =
+      CreateTestData(RedirectToFileResourceHandler::kInitialReadBufSize);
+
+  ASSERT_EQ(MockResourceLoader::Status::IDLE,
+            StartAndCreateStream(base::File::FILE_OK));
+  ASSERT_EQ(MockResourceLoader::Status::IDLE,
+            OnResponseStartedAndWaitForResult());
+
+  for (size_t offset = 0; offset < test_data.length();
+       offset += kBytesPerRead) {
+    ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
+    size_t length = std::min(kBytesPerRead, test_data.length() - offset);
+    ASSERT_EQ(MockResourceLoader::Status::IDLE,
+              mock_loader_->OnReadCompleted(
+                  base::StringPiece(test_data.data() + offset, length)));
+    // Spin the message loop, to allow async writes to complete.
+    base::RunLoop().RunUntilIdle();
+  }
+
+  CompleteRequestSuccessfully(test_data.size());
+}
+
+TEST_P(RedirectToFileResourceHandlerTest, PartialWrites) {
+  std::string test_data = CreateTestData(kMaxInitialSyncReadSize);
+  file_stream_->set_all_write_results(MockFileStream::OperationResult(
+      RedirectToFileResourceHandler::kInitialReadBufSize / 50, GetParam()));
+
+  ASSERT_EQ(MockResourceLoader::Status::IDLE,
+            StartAndCreateStream(base::File::FILE_OK));
+  ASSERT_EQ(MockResourceLoader::Status::IDLE,
+            OnResponseStartedAndWaitForResult());
+
+  ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
+  ASSERT_EQ(MockResourceLoader::Status::IDLE,
+            mock_loader_->OnReadCompleted(test_data));
+  // Wait for the writes to complete, in the async case.
+  base::RunLoop().RunUntilIdle();
+
+  CompleteRequestSuccessfully(test_data.size());
+}
+
+// Same as above, but read enough data to defer reading the body.
+TEST_P(RedirectToFileResourceHandlerTest, PartialWrites2) {
+  std::string test_data =
+      CreateTestData(RedirectToFileResourceHandler::kInitialReadBufSize);
+  // Async reads, as otherwise reading won't be defered.
+  file_stream_->set_all_write_results(MockFileStream::OperationResult(
+      RedirectToFileResourceHandler::kInitialReadBufSize / 50,
+      CompletionMode::ASYNC));
+
+  ASSERT_EQ(MockResourceLoader::Status::IDLE,
+            StartAndCreateStream(base::File::FILE_OK));
+  ASSERT_EQ(MockResourceLoader::Status::IDLE,
+            OnResponseStartedAndWaitForResult());
+
+  ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
+  ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING,
+            mock_loader_->OnReadCompleted(test_data));
+  // Wait for the writes to complete.
+  base::RunLoop().RunUntilIdle();
+
+  CompleteRequestSuccessfully(test_data.size());
+}
+
+TEST_P(RedirectToFileResourceHandlerTest, ReceiveDataWhileWritingBody) {
+  const int kFirstWriteSize = 100;
+
+  // This test only makes sense when reads are async.
+  file_stream_->set_all_write_results(MockFileStream::OperationResult(
+      std::numeric_limits<int>::max(), CompletionMode::ASYNC));
+
+  // Will use multiple writes, with a combined size such that they don't
+  // saturate the buffer.
+  std::string test_data = CreateTestData(kMaxInitialSyncReadSize);
+
+  ASSERT_EQ(MockResourceLoader::Status::IDLE,
+            StartAndCreateStream(base::File::FILE_OK));
+  ASSERT_EQ(MockResourceLoader::Status::IDLE,
+            OnResponseStartedAndWaitForResult());
+
+  ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
+  ASSERT_EQ(
+      MockResourceLoader::Status::IDLE,
+      mock_loader_->OnReadCompleted(test_data.substr(0, kFirstWriteSize)));
+  // Next read completes before first write succeeds.
+  ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
+  ASSERT_EQ(MockResourceLoader::Status::IDLE,
+            mock_loader_->OnReadCompleted(test_data.substr(
+                kFirstWriteSize, sizeof(test_data) - kFirstWriteSize)));
+  EXPECT_EQ(0, test_handler_->total_bytes_downloaded());
+
+  // Wait for both writes to succeed.
+  base::RunLoop().RunUntilIdle();
+
+  CompleteRequestSuccessfully(test_data.size());
+}
+
+TEST_P(RedirectToFileResourceHandlerTest, ReceiveDataAndDeferWhileWritingBody) {
+  const int kFirstWriteSize = 100;
+
+  // This test only makes sense when reads are async.
+  file_stream_->set_all_write_results(MockFileStream::OperationResult(
+      std::numeric_limits<int>::max(), CompletionMode::ASYNC));
+
+  // Will use multiple writes, with a combined size such that they saturate the
+  // buffer.
+  std::string test_data =
+      CreateTestData(RedirectToFileResourceHandler::kInitialReadBufSize);
+
+  ASSERT_EQ(MockResourceLoader::Status::IDLE,
+            StartAndCreateStream(base::File::FILE_OK));
+  ASSERT_EQ(MockResourceLoader::Status::IDLE,
+            OnResponseStartedAndWaitForResult());
+
+  ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
+  ASSERT_EQ(
+      MockResourceLoader::Status::IDLE,
+      mock_loader_->OnReadCompleted(test_data.substr(0, kFirstWriteSize)));
+  // Next read completes before first write succeeds.
+  ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
+  ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING,
+            mock_loader_->OnReadCompleted(test_data.substr(
+                kFirstWriteSize, sizeof(test_data) - kFirstWriteSize)));
+  EXPECT_EQ(0, test_handler_->total_bytes_downloaded());
+
+  // Wait for both writes to succeed.
+  base::RunLoop().RunUntilIdle();
+  ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->status());
+
+  CompleteRequestSuccessfully(test_data.size());
+}
+
+TEST_P(RedirectToFileResourceHandlerTest,
+       ExpandBufferCapacityManySequentialBodyReads) {
+  // The buffer is only resized when reads are async.
+  file_stream_->set_all_write_results(MockFileStream::OperationResult(
+      std::numeric_limits<int>::max(), CompletionMode::ASYNC));
+
+  const int kInitialReadSize =
+      RedirectToFileResourceHandler::kInitialReadBufSize;
+  const int kMaxReadSize = RedirectToFileResourceHandler::kMaxReadBufSize;
+  int next_read_size = kInitialReadSize;
+  int total_read_bytes = 0;
+  // Populate |read_sizes| with expected buffer sizes if each previous read
+  // filled the entire buffer.
+  std::vector<size_t> read_sizes;
+  while (true) {
+    total_read_bytes += next_read_size;
+    read_sizes.push_back(next_read_size);
+    if (next_read_size == kMaxReadSize)
+      break;
+    next_read_size = std::min(2 * next_read_size, kMaxReadSize);
+  }
+  // Once the max is reached, do another round to make sure it isn't increased.
+  total_read_bytes += kMaxReadSize;
+  read_sizes.push_back(kMaxReadSize);
+
+  std::string test_data = CreateTestData(total_read_bytes);
+
+  ASSERT_EQ(MockResourceLoader::Status::IDLE,
+            StartAndCreateStream(base::File::FILE_OK));
+  ASSERT_EQ(MockResourceLoader::Status::IDLE,
+            OnResponseStartedAndWaitForResult());
+
+  int offset = 0;
+  for (int read_size : read_sizes) {
+    ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
+    ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING,
+              mock_loader_->OnReadCompleted(
+                  base::StringPiece(test_data.data() + offset, read_size)));
+    offset += read_size;
+
+    EXPECT_EQ(read_size, redirect_to_file_handler_->GetBufferSizeForTesting());
+
+    base::RunLoop().RunUntilIdle();
+    ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->status());
+  }
+
+  CompleteRequestSuccessfully(test_data.size());
+}
+
+TEST_P(RedirectToFileResourceHandlerTest, CompletedWhileWritingBody) {
+  // This test only makes sense when reads are async.
+  file_stream_->set_all_write_results(MockFileStream::OperationResult(
+      std::numeric_limits<int>::max(), CompletionMode::ASYNC));
+
+  std::string test_data = CreateTestData(kMaxInitialSyncReadSize);
+
+  ASSERT_EQ(MockResourceLoader::Status::IDLE,
+            StartAndCreateStream(base::File::FILE_OK));
+  ASSERT_EQ(MockResourceLoader::Status::IDLE,
+            OnResponseStartedAndWaitForResult());
+
+  ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
+  ASSERT_EQ(MockResourceLoader::Status::IDLE,
+            mock_loader_->OnReadCompleted(test_data));
+  EXPECT_EQ(0, test_handler_->total_bytes_downloaded());
+
+  // While data is being written to the disk, the request completes.
+  ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
+  ASSERT_EQ(MockResourceLoader::Status::IDLE,
+            mock_loader_->OnReadCompleted(""));
+  ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING,
+            mock_loader_->OnResponseCompleted(
+                net::URLRequestStatus::FromError(net::OK)));
+
+  // Wait for the write to complete and the final status sent to the
+  // TestHandler.
+  base::RunLoop().RunUntilIdle();
+  EXPECT_EQ(static_cast<int>(test_data.size()),
+            test_handler_->total_bytes_downloaded());
+  EXPECT_EQ(net::URLRequestStatus::SUCCESS,
+            test_handler_->final_status().status());
+}
+
+TEST_P(RedirectToFileResourceHandlerTest,
+       CompletedWhileWritingBodyAndWritePending) {
+  const int kFirstWriteSize = 100;
+
+  // This test only makes sense when reads are async.
+  file_stream_->set_all_write_results(MockFileStream::OperationResult(
+      std::numeric_limits<int>::max(), CompletionMode::ASYNC));
+
+  // Will use multiple writes, with a combined size such that they don't
+  // saturate the buffer.
+  std::string test_data = CreateTestData(kMaxInitialSyncReadSize);
+
+  ASSERT_EQ(MockResourceLoader::Status::IDLE,
+            StartAndCreateStream(base::File::FILE_OK));
+  ASSERT_EQ(MockResourceLoader::Status::IDLE,
+            OnResponseStartedAndWaitForResult());
+
+  ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
+  ASSERT_EQ(
+      MockResourceLoader::Status::IDLE,
+      mock_loader_->OnReadCompleted(test_data.substr(0, kFirstWriteSize)));
+  // Next read completes before first write succeeds.
+  ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
+  ASSERT_EQ(MockResourceLoader::Status::IDLE,
+            mock_loader_->OnReadCompleted(test_data.substr(
+                kFirstWriteSize, sizeof(test_data) - kFirstWriteSize)));
+  EXPECT_EQ(0, test_handler_->total_bytes_downloaded());
+
+  // While the first write is still going on, the request completes.
+  ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
+  ASSERT_EQ(MockResourceLoader::Status::IDLE,
+            mock_loader_->OnReadCompleted(""));
+  ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING,
+            mock_loader_->OnResponseCompleted(
+                net::URLRequestStatus::FromError(net::OK)));
+
+  // Wait for both writes to complete and the final status to be sent to the
+  // TestHandler.
+  base::RunLoop().RunUntilIdle();
+  EXPECT_EQ(static_cast<int>(test_data.size()),
+            test_handler_->total_bytes_downloaded());
+  EXPECT_EQ(net::URLRequestStatus::SUCCESS,
+            test_handler_->final_status().status());
+}
+
+TEST_P(RedirectToFileResourceHandlerTest, SingleBodyReadAndFail) {
+  std::string test_data = CreateTestData(kMaxInitialSyncReadSize);
+
+  ASSERT_EQ(MockResourceLoader::Status::IDLE,
+            StartAndCreateStream(base::File::FILE_OK));
+  ASSERT_EQ(MockResourceLoader::Status::IDLE,
+            OnResponseStartedAndWaitForResult());
+
+  ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
+  ASSERT_EQ(MockResourceLoader::Status::IDLE,
+            mock_loader_->OnReadCompleted(test_data));
+
+  // Wait for the write to complete.
+  base::RunLoop().RunUntilIdle();
+  EXPECT_EQ(static_cast<int>(test_data.size()),
+            test_handler_->total_bytes_downloaded());
+
+  // Next read fails and request is torn down synchronously.
+  ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
+  ASSERT_EQ(MockResourceLoader::Status::IDLE,
+            mock_loader_->OnResponseCompleted(
+                net::URLRequestStatus::FromError(net::ERR_FAILED)));
+
+  EXPECT_FALSE(test_handler_->final_status().is_success());
+  EXPECT_EQ(net::ERR_FAILED, test_handler_->final_status().error());
+}
+
+TEST_P(RedirectToFileResourceHandlerTest, FailedWhileWritingBody) {
+  // This test only makes sense when reads are async.
+  file_stream_->set_all_write_results(MockFileStream::OperationResult(
+      std::numeric_limits<int>::max(), CompletionMode::ASYNC));
+
+  std::string test_data = CreateTestData(kMaxInitialSyncReadSize);
+
+  ASSERT_EQ(MockResourceLoader::Status::IDLE,
+            StartAndCreateStream(base::File::FILE_OK));
+  ASSERT_EQ(MockResourceLoader::Status::IDLE,
+            OnResponseStartedAndWaitForResult());
+
+  ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
+  ASSERT_EQ(MockResourceLoader::Status::IDLE,
+            mock_loader_->OnReadCompleted(test_data));
+  EXPECT_EQ(0, test_handler_->total_bytes_downloaded());
+
+  // While data is being written to the disk, the request fails.
+  ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING,
+            mock_loader_->OnResponseCompleted(
+                net::URLRequestStatus::FromError(net::ERR_FAILED)));
+
+  // Wait for the write to complete and the final status sent to the
+  // TestHandler.
+  base::RunLoop().RunUntilIdle();
+  EXPECT_EQ(static_cast<int>(test_data.size()),
+            test_handler_->total_bytes_downloaded());
+  EXPECT_FALSE(test_handler_->final_status().is_success());
+  EXPECT_EQ(net::ERR_FAILED, test_handler_->final_status().error());
+}
+
+TEST_P(RedirectToFileResourceHandlerTest,
+       FailededWhileWritingBodyAndWritePending) {
+  const int kFirstWriteSize = 100;
+
+  // This test only makes sense when reads are async.
+  file_stream_->set_all_write_results(MockFileStream::OperationResult(
+      std::numeric_limits<int>::max(), CompletionMode::ASYNC));
+
+  // Will use multiple writes, with a combined size such that they don't
+  // saturate the buffer.
+  std::string test_data = CreateTestData(kMaxInitialSyncReadSize);
+
+  ASSERT_EQ(MockResourceLoader::Status::IDLE,
+            StartAndCreateStream(base::File::FILE_OK));
+  ASSERT_EQ(MockResourceLoader::Status::IDLE,
+            OnResponseStartedAndWaitForResult());
+
+  ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
+  ASSERT_EQ(
+      MockResourceLoader::Status::IDLE,
+      mock_loader_->OnReadCompleted(test_data.substr(0, kFirstWriteSize)));
+  // Next read completes before first write succeeds.
+  ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
+  ASSERT_EQ(MockResourceLoader::Status::IDLE,
+            mock_loader_->OnReadCompleted(test_data.substr(
+                kFirstWriteSize, sizeof(test_data) - kFirstWriteSize)));
+
+  // While the first write is still going on, the request fails.
+  ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING,
+            mock_loader_->OnResponseCompleted(
+                net::URLRequestStatus::FromError(net::ERR_FAILED)));
+  EXPECT_EQ(0, test_handler_->total_bytes_downloaded());
+
+  // Wait for both writes to complete and the final status to be sent to the
+  // TestHandler.
+  base::RunLoop().RunUntilIdle();
+  EXPECT_EQ(static_cast<int>(test_data.size()),
+            test_handler_->total_bytes_downloaded());
+  EXPECT_FALSE(test_handler_->final_status().is_success());
+  EXPECT_EQ(net::ERR_FAILED, test_handler_->final_status().error());
+}
+
+TEST_P(RedirectToFileResourceHandlerTest, CreateFileFails) {
+  ASSERT_EQ(MockResourceLoader::Status::CANCELED,
+            StartAndCreateStream(base::File::FILE_ERROR_FAILED));
+
+  EXPECT_EQ(0, test_handler_->on_response_completed_called());
+  EXPECT_EQ(net::ERR_FAILED, mock_loader_->error_code());
+  ASSERT_EQ(MockResourceLoader::Status::IDLE,
+            mock_loader_->OnResponseCompleted(
+                net::URLRequestStatus::FromError(net::ERR_FAILED)));
+  EXPECT_EQ(0, test_handler_->total_bytes_downloaded());
+  EXPECT_FALSE(test_handler_->final_status().is_success());
+  EXPECT_EQ(net::ERR_FAILED, test_handler_->final_status().error());
+}
+
+TEST_P(RedirectToFileResourceHandlerTest, FirstWriteFails) {
+  std::string test_data = CreateTestData(kMaxInitialSyncReadSize);
+  file_stream_->set_expected_written_data("");
+  file_stream_->set_next_write_result(
+      MockFileStream::OperationResult(net::ERR_FAILED, GetParam()));
+
+  ASSERT_EQ(MockResourceLoader::Status::IDLE,
+            StartAndCreateStream(base::File::FILE_OK));
+  ASSERT_EQ(MockResourceLoader::Status::IDLE,
+            OnResponseStartedAndWaitForResult());
+
+  ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
+  mock_loader_->OnReadCompleted(test_data);
+  // Wait for the write to complete, in the async case.
+  base::RunLoop().RunUntilIdle();
+  ASSERT_EQ(MockResourceLoader::Status::CANCELED, mock_loader_->status());
+
+  net::Error expected_error;
+  if (GetParam() == CompletionMode::ASYNC) {
+    expected_error = net::ERR_FAILED;
+  } else {
+    // An error cannot be passed up in the synchronous failure case.
+    // TODO(mmenke): That is changing, fix this.
+    expected_error = net::ERR_ABORTED;
+  }
+  EXPECT_EQ(expected_error, mock_loader_->error_code());
+  EXPECT_EQ(0, test_handler_->on_response_completed_called());
+  ASSERT_EQ(MockResourceLoader::Status::IDLE,
+            mock_loader_->OnResponseCompleted(
+                net::URLRequestStatus::FromError(expected_error)));
+  EXPECT_EQ(0, test_handler_->total_bytes_downloaded());
+  EXPECT_FALSE(test_handler_->final_status().is_success());
+  EXPECT_EQ(expected_error, test_handler_->final_status().error());
+}
+
+TEST_P(RedirectToFileResourceHandlerTest, SecondWriteFails) {
+  const int kFirstWriteSize = kMaxInitialSyncReadSize;
+  std::string test_data =
+      CreateTestData(RedirectToFileResourceHandler::kInitialReadBufSize);
+  file_stream_->set_expected_written_data(test_data.substr(0, kFirstWriteSize));
+  file_stream_->set_all_write_results(
+      MockFileStream::OperationResult(net::ERR_FAILED, GetParam()));
+  file_stream_->set_next_write_result(MockFileStream::OperationResult(
+      std::numeric_limits<int>::max(), GetParam()));
+
+  ASSERT_EQ(MockResourceLoader::Status::IDLE,
+            StartAndCreateStream(base::File::FILE_OK));
+  ASSERT_EQ(MockResourceLoader::Status::IDLE,
+            OnResponseStartedAndWaitForResult());
+
+  ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
+  ASSERT_EQ(MockResourceLoader::Status::IDLE,
+            mock_loader_->OnReadCompleted(
+                base::StringPiece(test_data.data(), kFirstWriteSize)));
+  ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
+  mock_loader_->OnReadCompleted(base::StringPiece(
+      test_data.data() + kFirstWriteSize, test_data.size() - kFirstWriteSize));
+  // Wait for the write to complete, in the async case.
+  base::RunLoop().RunUntilIdle();
+  ASSERT_EQ(MockResourceLoader::Status::CANCELED, mock_loader_->status());
+
+  net::Error expected_error;
+  if (GetParam() == CompletionMode::ASYNC) {
+    expected_error = net::ERR_FAILED;
+  } else {
+    // An error cannot be passed up in the synchronous failure case.
+    // TODO(mmenke): That is changing, fix this.
+    expected_error = net::ERR_ABORTED;
+  }
+  EXPECT_EQ(expected_error, mock_loader_->error_code());
+  EXPECT_EQ(0, test_handler_->on_response_completed_called());
+  ASSERT_EQ(MockResourceLoader::Status::IDLE,
+            mock_loader_->OnResponseCompleted(
+                net::URLRequestStatus::FromError(expected_error)));
+  EXPECT_EQ(kFirstWriteSize, test_handler_->total_bytes_downloaded());
+  EXPECT_FALSE(test_handler_->final_status().is_success());
+  EXPECT_EQ(expected_error, test_handler_->final_status().error());
+}
+
+INSTANTIATE_TEST_CASE_P(/* No prefix needed */,
+                        RedirectToFileResourceHandlerTest,
+                        testing::Values(CompletionMode::SYNC,
+                                        CompletionMode::ASYNC));
+
+}  // namespace
+}  // namespace content
diff --git a/content/browser/loader/resource_loader_unittest.cc b/content/browser/loader/resource_loader_unittest.cc
index 96bbb27..9f3d17f 100644
--- a/content/browser/loader/resource_loader_unittest.cc
+++ b/content/browser/loader/resource_loader_unittest.cc
@@ -12,8 +12,6 @@
 #include <utility>
 #include <vector>
 
-#include "base/files/file.h"
-#include "base/files/file_util.h"
 #include "base/location.h"
 #include "base/macros.h"
 #include "base/memory/ptr_util.h"
@@ -22,7 +20,6 @@
 #include "base/single_thread_task_runner.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "content/browser/browser_thread_impl.h"
-#include "content/browser/loader/redirect_to_file_resource_handler.h"
 #include "content/browser/loader/resource_loader_delegate.h"
 #include "content/browser/loader/test_resource_handler.h"
 #include "content/public/browser/client_certificate_delegate.h"
@@ -39,7 +36,6 @@
 #include "ipc/ipc_message.h"
 #include "net/base/chunked_upload_data_stream.h"
 #include "net/base/io_buffer.h"
-#include "net/base/mock_file_stream.h"
 #include "net/base/net_errors.h"
 #include "net/base/request_priority.h"
 #include "net/base/upload_bytes_element_reader.h"
@@ -60,11 +56,8 @@
 #include "net/url_request/url_request_job_factory_impl.h"
 #include "net/url_request/url_request_test_job.h"
 #include "net/url_request/url_request_test_util.h"
-#include "storage/browser/blob/shareable_file_reference.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
-using storage::ShareableFileReference;
-
 namespace content {
 namespace {
 
@@ -349,16 +342,6 @@
   DISALLOW_COPY_AND_ASSIGN(NonChunkedUploadDataStream);
 };
 
-// Fails to create a temporary file with the given error.
-void CreateTemporaryError(
-    base::File::Error error,
-    const CreateTemporaryFileStreamCallback& callback) {
-  base::ThreadTaskRunnerHandle::Get()->PostTask(
-      FROM_HERE,
-      base::Bind(callback, error,
-                 base::Passed(std::unique_ptr<net::FileStream>()), nullptr));
-}
-
 }  // namespace
 
 class ResourceLoaderTest : public testing::Test,
@@ -1441,232 +1424,6 @@
   static_cast<ResourceController*>(loader_.get())->Resume();
 }
 
-class ResourceLoaderRedirectToFileTest : public ResourceLoaderTest {
- public:
-  ResourceLoaderRedirectToFileTest()
-      : file_stream_(NULL),
-        redirect_to_file_resource_handler_(NULL) {
-  }
-
-  ~ResourceLoaderRedirectToFileTest() override {
-    // Releasing the loader should result in destroying the file asynchronously.
-    file_stream_ = nullptr;
-    deletable_file_ = nullptr;
-    loader_.reset();
-
-    // Wait for the task to delete the file to run, and make sure the file is
-    // cleaned up.
-    base::RunLoop().RunUntilIdle();
-    EXPECT_FALSE(base::PathExists(temp_path()));
-  }
-
-  base::FilePath temp_path() const { return temp_path_; }
-  ShareableFileReference* deletable_file() const {
-    return deletable_file_.get();
-  }
-  net::testing::MockFileStream* file_stream() const { return file_stream_; }
-  RedirectToFileResourceHandler* redirect_to_file_resource_handler() const {
-    return redirect_to_file_resource_handler_;
-  }
-
-  std::unique_ptr<ResourceHandler> WrapResourceHandler(
-      std::unique_ptr<TestResourceHandler> leaf_handler,
-      net::URLRequest* request) override {
-    leaf_handler->set_expect_on_data_downloaded(true);
-
-    // Make a temporary file.
-    CHECK(base::CreateTemporaryFile(&temp_path_));
-    int flags = base::File::FLAG_WRITE | base::File::FLAG_TEMPORARY |
-                base::File::FLAG_CREATE_ALWAYS | base::File::FLAG_ASYNC;
-    base::File file(temp_path_, flags);
-    CHECK(file.IsValid());
-
-    // Create mock file streams and a ShareableFileReference.
-    std::unique_ptr<net::testing::MockFileStream> file_stream(
-        new net::testing::MockFileStream(std::move(file),
-                                         base::ThreadTaskRunnerHandle::Get()));
-    file_stream_ = file_stream.get();
-    deletable_file_ = ShareableFileReference::GetOrCreate(
-        temp_path_, ShareableFileReference::DELETE_ON_FINAL_RELEASE,
-        BrowserThread::GetTaskRunnerForThread(BrowserThread::FILE).get());
-
-    // Inject them into the handler.
-    std::unique_ptr<RedirectToFileResourceHandler> handler(
-        new RedirectToFileResourceHandler(std::move(leaf_handler), request));
-    redirect_to_file_resource_handler_ = handler.get();
-    handler->SetCreateTemporaryFileStreamFunctionForTesting(
-        base::Bind(&ResourceLoaderRedirectToFileTest::PostCallback,
-                   base::Unretained(this),
-                   base::Passed(&file_stream)));
-    return std::move(handler);
-  }
-
- private:
-  void PostCallback(std::unique_ptr<net::FileStream> file_stream,
-                    const CreateTemporaryFileStreamCallback& callback) {
-    base::ThreadTaskRunnerHandle::Get()->PostTask(
-        FROM_HERE,
-        base::Bind(callback, base::File::FILE_OK, base::Passed(&file_stream),
-                   base::RetainedRef(deletable_file_)));
-  }
-
-  base::FilePath temp_path_;
-  scoped_refptr<ShareableFileReference> deletable_file_;
-  // These are owned by the ResourceLoader.
-  net::testing::MockFileStream* file_stream_;
-  RedirectToFileResourceHandler* redirect_to_file_resource_handler_;
-};
-
-// Tests that a RedirectToFileResourceHandler works and forwards everything
-// downstream.
-TEST_F(ResourceLoaderRedirectToFileTest, Basic) {
-  // Run it to completion.
-  loader_->StartRequest();
-  raw_ptr_resource_handler_->WaitUntilResponseComplete();
-
-  // Check that the handler forwarded all information to the downstream handler.
-  EXPECT_EQ(
-      temp_path(),
-      raw_ptr_resource_handler_->resource_response()->head.download_file_path);
-  EXPECT_EQ(test_redirect_url(), raw_ptr_resource_handler_->start_url());
-  EXPECT_EQ(net::URLRequestStatus::SUCCESS,
-            raw_ptr_resource_handler_->final_status().status());
-  EXPECT_EQ(test_data().size(), static_cast<size_t>(
-      raw_ptr_resource_handler_->total_bytes_downloaded()));
-
-  // Check that the data was written to the file.
-  std::string contents;
-  ASSERT_TRUE(base::ReadFileToString(temp_path(), &contents));
-  EXPECT_EQ(test_data(), contents);
-}
-
-// Tests that RedirectToFileResourceHandler handles errors in creating the
-// temporary file.
-TEST_F(ResourceLoaderRedirectToFileTest, CreateTemporaryError) {
-  // Swap out the create temporary function.
-  redirect_to_file_resource_handler()->
-      SetCreateTemporaryFileStreamFunctionForTesting(
-          base::Bind(&CreateTemporaryError, base::File::FILE_ERROR_FAILED));
-
-  // Run it to completion.
-  loader_->StartRequest();
-  raw_ptr_resource_handler_->WaitUntilResponseComplete();
-
-  // To downstream, the request was canceled.
-  EXPECT_EQ(net::URLRequestStatus::CANCELED,
-            raw_ptr_resource_handler_->final_status().status());
-  EXPECT_EQ(0, raw_ptr_resource_handler_->total_bytes_downloaded());
-}
-
-// Tests that RedirectToFileResourceHandler handles synchronous write errors.
-TEST_F(ResourceLoaderRedirectToFileTest, WriteError) {
-  file_stream()->set_forced_error(net::ERR_FAILED);
-
-  // Run it to completion.
-  loader_->StartRequest();
-  raw_ptr_resource_handler_->WaitUntilResponseComplete();
-
-  // To downstream, the request was canceled sometime after it started, but
-  // before any data was written.
-  EXPECT_EQ(
-      temp_path(),
-      raw_ptr_resource_handler_->resource_response()->head.download_file_path);
-  EXPECT_EQ(test_redirect_url(), raw_ptr_resource_handler_->start_url());
-  EXPECT_EQ(net::URLRequestStatus::CANCELED,
-            raw_ptr_resource_handler_->final_status().status());
-  EXPECT_EQ(0, raw_ptr_resource_handler_->total_bytes_downloaded());
-}
-
-// Tests that RedirectToFileResourceHandler handles asynchronous write errors.
-TEST_F(ResourceLoaderRedirectToFileTest, WriteErrorAsync) {
-  file_stream()->set_forced_error_async(net::ERR_FAILED);
-
-  // Run it to completion.
-  loader_->StartRequest();
-  raw_ptr_resource_handler_->WaitUntilResponseComplete();
-
-  // To downstream, the request was canceled sometime after it started, but
-  // before any data was written.
-  EXPECT_EQ(
-      temp_path(),
-      raw_ptr_resource_handler_->resource_response()->head.download_file_path);
-  EXPECT_EQ(test_redirect_url(), raw_ptr_resource_handler_->start_url());
-  EXPECT_EQ(net::URLRequestStatus::CANCELED,
-            raw_ptr_resource_handler_->final_status().status());
-  EXPECT_EQ(0, raw_ptr_resource_handler_->total_bytes_downloaded());
-}
-
-// Tests that RedirectToFileHandler defers completion if there are outstanding
-// writes and accounts for errors which occur in that time.
-TEST_F(ResourceLoaderRedirectToFileTest, DeferCompletion) {
-  // Program the MockFileStream to error asynchronously, but throttle the
-  // callback.
-  file_stream()->set_forced_error_async(net::ERR_FAILED);
-  file_stream()->ThrottleCallbacks();
-
-  // Run it as far as it will go.
-  loader_->StartRequest();
-  base::RunLoop().RunUntilIdle();
-
-  // At this point, the request should have completed.
-  EXPECT_EQ(net::URLRequestStatus::SUCCESS,
-            raw_ptr_to_request_->status().status());
-
-  // However, the resource loader stack is stuck somewhere after receiving the
-  // response.
-  EXPECT_EQ(
-      temp_path(),
-      raw_ptr_resource_handler_->resource_response()->head.download_file_path);
-  EXPECT_EQ(test_redirect_url(), raw_ptr_resource_handler_->start_url());
-  EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called());
-  EXPECT_EQ(0, raw_ptr_resource_handler_->total_bytes_downloaded());
-
-  // Now, release the floodgates.
-  file_stream()->ReleaseCallbacks();
-  raw_ptr_resource_handler_->WaitUntilResponseComplete();
-
-  // Although the URLRequest was successful, the leaf handler sees a failure
-  // because the write never completed.
-  EXPECT_EQ(net::URLRequestStatus::CANCELED,
-            raw_ptr_resource_handler_->final_status().status());
-}
-
-// Tests that a RedirectToFileResourceHandler behaves properly when the
-// downstream handler defers OnWillStart.
-TEST_F(ResourceLoaderRedirectToFileTest, DownstreamDeferStart) {
-  // Defer OnWillStart.
-  raw_ptr_resource_handler_->set_defer_on_will_start(true);
-
-  // Run as far as we'll go.
-  loader_->StartRequest();
-  raw_ptr_resource_handler_->WaitUntilDeferred();
-
-  // The request should have stopped at OnWillStart.
-  EXPECT_EQ(test_redirect_url(), raw_ptr_resource_handler_->start_url());
-  EXPECT_FALSE(raw_ptr_resource_handler_->resource_response());
-  EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called());
-  EXPECT_EQ(0, raw_ptr_resource_handler_->total_bytes_downloaded());
-
-  // Now resume the request. Now we complete.
-  raw_ptr_resource_handler_->Resume();
-  raw_ptr_resource_handler_->WaitUntilResponseComplete();
-
-  // Check that the handler forwarded all information to the downstream handler.
-  EXPECT_EQ(
-      temp_path(),
-      raw_ptr_resource_handler_->resource_response()->head.download_file_path);
-  EXPECT_EQ(test_redirect_url(), raw_ptr_resource_handler_->start_url());
-  EXPECT_EQ(net::URLRequestStatus::SUCCESS,
-            raw_ptr_resource_handler_->final_status().status());
-  EXPECT_EQ(test_data().size(), static_cast<size_t>(
-      raw_ptr_resource_handler_->total_bytes_downloaded()));
-
-  // Check that the data was written to the file.
-  std::string contents;
-  ASSERT_TRUE(base::ReadFileToString(temp_path(), &contents));
-  EXPECT_EQ(test_data(), contents);
-}
-
 class EffectiveConnectionTypeResourceLoaderTest : public ResourceLoaderTest {
  public:
   void VerifyEffectiveConnectionType(
diff --git a/content/browser/loader/test_resource_handler.cc b/content/browser/loader/test_resource_handler.cc
index 6cd13a9a..a6c8072 100644
--- a/content/browser/loader/test_resource_handler.cc
+++ b/content/browser/loader/test_resource_handler.cc
@@ -202,6 +202,10 @@
 
 void TestResourceHandler::OnDataDownloaded(int bytes_downloaded) {
   EXPECT_TRUE(expect_on_data_downloaded_);
+  EXPECT_EQ(1, on_will_start_called_);
+  EXPECT_EQ(1, on_response_started_called_);
+  EXPECT_EQ(0, on_response_completed_called_);
+
   total_bytes_downloaded_ += bytes_downloaded;
 }
 
diff --git a/content/browser/renderer_host/input/synthetic_gesture_target_aura.cc b/content/browser/renderer_host/input/synthetic_gesture_target_aura.cc
index d08f690..38ff880 100644
--- a/content/browser/renderer_host/input/synthetic_gesture_target_aura.cc
+++ b/content/browser/renderer_host/input/synthetic_gesture_target_aura.cc
@@ -125,19 +125,34 @@
   return flags;
 }
 
+ui::EventPointerType WebMousePointerTypeToEventPointerType(
+    blink::WebPointerProperties::PointerType type) {
+    if (type == blink::WebPointerProperties::PointerType::Mouse)
+      return ui::EventPointerType::POINTER_TYPE_MOUSE;
+    if (type == blink::WebPointerProperties::PointerType::Pen)
+      return ui::EventPointerType::POINTER_TYPE_PEN;
+    NOTREACHED() << "Unexpected mouse event pointer type";
+    return ui::EventPointerType::POINTER_TYPE_UNKNOWN;
+}
+
 }  // namespace
 
 void SyntheticGestureTargetAura::DispatchWebMouseEventToPlatform(
-      const blink::WebMouseEvent& web_mouse,
-      const ui::LatencyInfo& latency_info) {
-  ui::EventType event_type = WebMouseEventTypeToEventType(web_mouse.type());
-  int flags = WebEventModifiersToEventFlags(web_mouse.modifiers());
+    const blink::WebMouseEvent& web_mouse_event,
+    const ui::LatencyInfo& latency_info) {
+  ui::EventType event_type =
+      WebMouseEventTypeToEventType(web_mouse_event.type());
+  int flags = WebEventModifiersToEventFlags(web_mouse_event.modifiers());
   ui::MouseEvent mouse_event(event_type, gfx::Point(), gfx::Point(),
                              ui::EventTimeForNow(), flags, flags);
-  gfx::PointF location(web_mouse.x * device_scale_factor_,
-                       web_mouse.y * device_scale_factor_);
+  gfx::PointF location(web_mouse_event.x * device_scale_factor_,
+                       web_mouse_event.y * device_scale_factor_);
   mouse_event.set_location_f(location);
   mouse_event.set_root_location_f(location);
+  ui::PointerDetails pointer_details = mouse_event.pointer_details();
+  pointer_details.pointer_type =
+      WebMousePointerTypeToEventPointerType(web_mouse_event.pointerType);
+  mouse_event.set_pointer_details(pointer_details);
 
   aura::Window* window = GetWindow();
   mouse_event.ConvertLocationToTarget(window, window->GetRootWindow());
diff --git a/content/browser/renderer_host/input/synthetic_mouse_driver.cc b/content/browser/renderer_host/input/synthetic_mouse_driver.cc
index bc3537a..ed388a72 100644
--- a/content/browser/renderer_host/input/synthetic_mouse_driver.cc
+++ b/content/browser/renderer_host/input/synthetic_mouse_driver.cc
@@ -8,7 +8,9 @@
 
 namespace content {
 
-SyntheticMouseDriver::SyntheticMouseDriver() : last_modifiers_(0) {}
+SyntheticMouseDriver::SyntheticMouseDriver() : last_modifiers_(0) {
+  mouse_event_.pointerType = blink::WebPointerProperties::PointerType::Mouse;
+}
 
 SyntheticMouseDriver::~SyntheticMouseDriver() {}
 
@@ -26,7 +28,8 @@
   int modifiers =
       SyntheticPointerActionParams::GetWebMouseEventModifier(button);
   mouse_event_ = SyntheticWebMouseEventBuilder::Build(
-      blink::WebInputEvent::MouseDown, x, y, modifiers | last_modifiers_);
+      blink::WebInputEvent::MouseDown, x, y, modifiers | last_modifiers_,
+      mouse_event_.pointerType);
   mouse_event_.clickCount = 1;
   mouse_event_.button =
       SyntheticPointerActionParams::GetWebMouseEventButton(button);
@@ -38,7 +41,8 @@
   blink::WebMouseEvent::Button button = mouse_event_.button;
   int click_count = mouse_event_.clickCount;
   mouse_event_ = SyntheticWebMouseEventBuilder::Build(
-      blink::WebInputEvent::MouseMove, x, y, last_modifiers_);
+      blink::WebInputEvent::MouseMove, x, y, last_modifiers_,
+      mouse_event_.pointerType);
   mouse_event_.button = button;
   mouse_event_.clickCount = click_count;
 }
@@ -49,7 +53,7 @@
   DCHECK_EQ(index, 0);
   mouse_event_ = SyntheticWebMouseEventBuilder::Build(
       blink::WebInputEvent::MouseUp, mouse_event_.x, mouse_event_.y,
-      last_modifiers_);
+      last_modifiers_, mouse_event_.pointerType);
   mouse_event_.clickCount = 1;
   mouse_event_.button =
       SyntheticPointerActionParams::GetWebMouseEventButton(button);
diff --git a/content/browser/renderer_host/input/synthetic_mouse_driver.h b/content/browser/renderer_host/input/synthetic_mouse_driver.h
index 34b8760..a314788 100644
--- a/content/browser/renderer_host/input/synthetic_mouse_driver.h
+++ b/content/browser/renderer_host/input/synthetic_mouse_driver.h
@@ -33,8 +33,10 @@
   bool UserInputCheck(
       const SyntheticPointerActionParams& params) const override;
 
- private:
+ protected:
   blink::WebMouseEvent mouse_event_;
+
+ private:
   unsigned last_modifiers_;
 
   DISALLOW_COPY_AND_ASSIGN(SyntheticMouseDriver);
diff --git a/content/browser/renderer_host/input/synthetic_pen_driver.cc b/content/browser/renderer_host/input/synthetic_pen_driver.cc
new file mode 100644
index 0000000..a144b3b
--- /dev/null
+++ b/content/browser/renderer_host/input/synthetic_pen_driver.cc
@@ -0,0 +1,15 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "content/browser/renderer_host/input/synthetic_pen_driver.h"
+
+namespace content {
+
+SyntheticPenDriver::SyntheticPenDriver() : SyntheticMouseDriver() {
+  mouse_event_.pointerType = blink::WebPointerProperties::PointerType::Pen;
+}
+
+SyntheticPenDriver::~SyntheticPenDriver() {}
+
+}  // namespace content
diff --git a/content/browser/renderer_host/input/synthetic_pen_driver.h b/content/browser/renderer_host/input/synthetic_pen_driver.h
new file mode 100644
index 0000000..d6ece9f0
--- /dev/null
+++ b/content/browser/renderer_host/input/synthetic_pen_driver.h
@@ -0,0 +1,25 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CONTENT_BROWSER_RENDERER_HOST_INPUT_SYNTHETIC_PEN_DRIVER_H_
+#define CONTENT_BROWSER_RENDERER_HOST_INPUT_SYNTHETIC_PEN_DRIVER_H_
+
+#include "base/macros.h"
+#include "content/browser/renderer_host/input/synthetic_mouse_driver.h"
+#include "content/common/content_export.h"
+
+namespace content {
+
+class CONTENT_EXPORT SyntheticPenDriver : public SyntheticMouseDriver {
+ public:
+  SyntheticPenDriver();
+  ~SyntheticPenDriver() override;
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(SyntheticPenDriver);
+};
+
+}  // namespace content
+
+#endif  // CONTENT_BROWSER_RENDERER_HOST_INPUT_SYNTHETIC_PEN_DRIVER_H_
diff --git a/content/browser/renderer_host/input/synthetic_pointer_action_unittest.cc b/content/browser/renderer_host/input/synthetic_pointer_action_unittest.cc
index 6d8bfe1..23e8575 100644
--- a/content/browser/renderer_host/input/synthetic_pointer_action_unittest.cc
+++ b/content/browser/renderer_host/input/synthetic_pointer_action_unittest.cc
@@ -186,7 +186,16 @@
   testing::AssertionResult SyntheticMouseActionDispatchedCorrectly(
       const SyntheticPointerActionParams& param,
       int click_count,
-      std::vector<SyntheticPointerActionParams::Button> buttons) {
+      std::vector<SyntheticPointerActionParams::Button> buttons,
+      SyntheticGestureParams::GestureSourceType source_type =
+          SyntheticGestureParams::MOUSE_INPUT) {
+    if (GetDefaultSyntheticGestureSourceType() != source_type) {
+      return testing::AssertionFailure()
+             << "Pointer source type was "
+             << static_cast<int>(GetDefaultSyntheticGestureSourceType())
+             << ", expected " << static_cast<int>(source_type) << ".";
+    }
+
     if (type_ != ToWebMouseEventType(param.pointer_action_type())) {
       return testing::AssertionFailure()
              << "Pointer type was " << WebInputEvent::GetName(type_)
@@ -215,7 +224,8 @@
       DCHECK_EQ(buttons.size(), 0U);
       return testing::AssertionFailure()
              << "Pointer button was " << static_cast<int>(button_)
-             << ", expected " << (int)WebMouseEvent::Button::NoButton << ".";
+             << ", expected "
+             << static_cast<int>(WebMouseEvent::Button::NoButton) << ".";
     }
 
     int modifiers = 0;
@@ -252,6 +262,18 @@
   WebMouseEvent::Button button_;
 };
 
+class MockSyntheticPointerPenActionTarget
+    : public MockSyntheticPointerMouseActionTarget {
+ public:
+  MockSyntheticPointerPenActionTarget() {}
+  ~MockSyntheticPointerPenActionTarget() override {}
+
+  SyntheticGestureParams::GestureSourceType
+  GetDefaultSyntheticGestureSourceType() const override {
+    return SyntheticGestureParams::PEN_INPUT;
+  }
+};
+
 class SyntheticPointerActionTest : public testing::Test {
  public:
   SyntheticPointerActionTest() {
@@ -641,6 +663,50 @@
   EXPECT_EQ(2, num_failure_);
 }
 
+TEST_F(SyntheticPointerActionTest, PointerPenAction) {
+  CreateSyntheticPointerActionTarget<MockSyntheticPointerPenActionTarget>();
+
+  // Send a pen move.
+  SyntheticPointerActionParams param1 = SyntheticPointerActionParams(
+      SyntheticPointerActionParams::PointerActionType::MOVE);
+  param1.set_position(gfx::PointF(189, 62));
+  params_.PushPointerActionParams(param1);
+
+  // Send a pen down.
+  SyntheticPointerActionParams param2 = SyntheticPointerActionParams(
+      SyntheticPointerActionParams::PointerActionType::PRESS);
+  param2.set_position(gfx::PointF(189, 62));
+  params_.PushPointerActionParams(param2);
+
+  // Send a pen up.
+  SyntheticPointerActionParams param3 = SyntheticPointerActionParams(
+      SyntheticPointerActionParams::PointerActionType::RELEASE);
+  params_.PushPointerActionParams(param3);
+  pointer_action_.reset(new SyntheticPointerAction(params_));
+
+  ForwardSyntheticPointerAction();
+  MockSyntheticPointerPenActionTarget* pointer_pen_target =
+      static_cast<MockSyntheticPointerPenActionTarget*>(target_.get());
+  EXPECT_EQ(1, num_success_);
+  EXPECT_EQ(0, num_failure_);
+  std::vector<SyntheticPointerActionParams::Button> buttons;
+  EXPECT_TRUE(pointer_pen_target->SyntheticMouseActionDispatchedCorrectly(
+      param1, 0, buttons, SyntheticGestureParams::PEN_INPUT));
+
+  ForwardSyntheticPointerAction();
+  EXPECT_EQ(2, num_success_);
+  EXPECT_EQ(0, num_failure_);
+  buttons.push_back(SyntheticPointerActionParams::Button::LEFT);
+  EXPECT_TRUE(pointer_pen_target->SyntheticMouseActionDispatchedCorrectly(
+      param2, 1, buttons, SyntheticGestureParams::PEN_INPUT));
+
+  ForwardSyntheticPointerAction();
+  EXPECT_EQ(3, num_success_);
+  EXPECT_EQ(0, num_failure_);
+  EXPECT_TRUE(pointer_pen_target->SyntheticMouseActionDispatchedCorrectly(
+      param3, 1, buttons, SyntheticGestureParams::PEN_INPUT));
+}
+
 }  // namespace
 
 }  // namespace content
diff --git a/content/browser/renderer_host/input/synthetic_pointer_driver.cc b/content/browser/renderer_host/input/synthetic_pointer_driver.cc
index c59d86b6..cadf8896 100644
--- a/content/browser/renderer_host/input/synthetic_pointer_driver.cc
+++ b/content/browser/renderer_host/input/synthetic_pointer_driver.cc
@@ -6,6 +6,7 @@
 
 #include "base/memory/ptr_util.h"
 #include "content/browser/renderer_host/input/synthetic_mouse_driver.h"
+#include "content/browser/renderer_host/input/synthetic_pen_driver.h"
 #include "content/browser/renderer_host/input/synthetic_touch_driver.h"
 
 namespace content {
@@ -16,14 +17,18 @@
 // static
 std::unique_ptr<SyntheticPointerDriver> SyntheticPointerDriver::Create(
     SyntheticGestureParams::GestureSourceType gesture_source_type) {
-  if (gesture_source_type == SyntheticGestureParams::TOUCH_INPUT) {
-    return base::MakeUnique<SyntheticTouchDriver>();
-  } else if (gesture_source_type == SyntheticGestureParams::MOUSE_INPUT) {
-    return base::MakeUnique<SyntheticMouseDriver>();
-  } else {
-    NOTREACHED() << "Invalid gesture source type";
-    return std::unique_ptr<SyntheticPointerDriver>();
+  switch (gesture_source_type) {
+    case SyntheticGestureParams::TOUCH_INPUT:
+      return base::MakeUnique<SyntheticTouchDriver>();
+    case SyntheticGestureParams::MOUSE_INPUT:
+      return base::MakeUnique<SyntheticMouseDriver>();
+    case SyntheticGestureParams::PEN_INPUT:
+      return base::MakeUnique<SyntheticPenDriver>();
+    case SyntheticGestureParams::DEFAULT_INPUT:
+      return std::unique_ptr<SyntheticPointerDriver>();
   }
+  NOTREACHED();
+  return std::unique_ptr<SyntheticPointerDriver>();
 }
 
 // static
diff --git a/content/browser/storage_partition_impl_unittest.cc b/content/browser/storage_partition_impl_unittest.cc
index 641ca95..8832698 100644
--- a/content/browser/storage_partition_impl_unittest.cc
+++ b/content/browser/storage_partition_impl_unittest.cc
@@ -33,7 +33,7 @@
 
 #if BUILDFLAG(ENABLE_PLUGINS)
 #include "base/memory/ptr_util.h"
-#include "ppapi/shared_impl/ppapi_constants.h"
+#include "ppapi/shared_impl/ppapi_constants.h"  // nogncheck
 #include "storage/browser/fileapi/async_file_util.h"
 #include "storage/browser/fileapi/file_system_context.h"
 #include "storage/browser/fileapi/file_system_operation_context.h"
diff --git a/content/common/input/synthetic_gesture_params.h b/content/common/input/synthetic_gesture_params.h
index 6f9a9887..7dc59fa 100644
--- a/content/common/input/synthetic_gesture_params.h
+++ b/content/common/input/synthetic_gesture_params.h
@@ -40,7 +40,8 @@
     DEFAULT_INPUT,
     TOUCH_INPUT,
     MOUSE_INPUT,
-    GESTURE_SOURCE_TYPE_MAX = MOUSE_INPUT
+    PEN_INPUT,
+    GESTURE_SOURCE_TYPE_MAX = PEN_INPUT
   };
   GestureSourceType gesture_source_type;
 
diff --git a/content/common/input/synthetic_web_input_event_builders.cc b/content/common/input/synthetic_web_input_event_builders.cc
index e7c5f6d..5efaf54 100644
--- a/content/common/input/synthetic_web_input_event_builders.cc
+++ b/content/common/input/synthetic_web_input_event_builders.cc
@@ -29,7 +29,8 @@
     blink::WebInputEvent::Type type,
     int window_x,
     int window_y,
-    int modifiers) {
+    int modifiers,
+    blink::WebPointerProperties::PointerType pointer_type) {
   DCHECK(WebInputEvent::isMouseEventType(type));
   WebMouseEvent result(type, modifiers,
                        ui::EventTimeStampToSeconds(ui::EventTimeForNow()));
@@ -38,7 +39,7 @@
   result.windowX = window_x;
   result.windowY = window_y;
   result.setModifiers(modifiers);
-  result.pointerType = blink::WebPointerProperties::PointerType::Mouse;
+  result.pointerType = pointer_type;
   return result;
 }
 
diff --git a/content/common/input/synthetic_web_input_event_builders.h b/content/common/input/synthetic_web_input_event_builders.h
index 23c8e27..58620d3 100644
--- a/content/common/input/synthetic_web_input_event_builders.h
+++ b/content/common/input/synthetic_web_input_event_builders.h
@@ -20,10 +20,13 @@
 class CONTENT_EXPORT SyntheticWebMouseEventBuilder {
  public:
   static blink::WebMouseEvent Build(blink::WebInputEvent::Type type);
-  static blink::WebMouseEvent Build(blink::WebInputEvent::Type type,
-                                    int window_x,
-                                    int window_y,
-                                    int modifiers);
+  static blink::WebMouseEvent Build(
+      blink::WebInputEvent::Type type,
+      int window_x,
+      int window_y,
+      int modifiers,
+      blink::WebPointerProperties::PointerType pointer_type =
+          blink::WebPointerProperties::PointerType::Mouse);
 };
 
 class CONTENT_EXPORT SyntheticWebMouseWheelEventBuilder {
diff --git a/content/ppapi_plugin/BUILD.gn b/content/ppapi_plugin/BUILD.gn
index 902676a..d87e55b 100644
--- a/content/ppapi_plugin/BUILD.gn
+++ b/content/ppapi_plugin/BUILD.gn
@@ -2,6 +2,10 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+import("//ppapi/features/features.gni")
+
+assert(enable_plugins, "PPAPI plugins must be enabled.")
+
 group("ppapi_plugin") {
   visibility = [ "//content/*" ]  # This is an internal content API.
 
diff --git a/content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsImpl.java b/content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsImpl.java
index cc33b2da..e87694f 100644
--- a/content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsImpl.java
+++ b/content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsImpl.java
@@ -371,6 +371,14 @@
         nativeRequestAccessibilitySnapshot(mNativeWebContentsAndroid, callback);
     }
 
+    @Override
+    @VisibleForTesting
+    public void simulateRendererKilledForTesting(boolean wasOomProtected) {
+        if (mObserverProxy != null) {
+            mObserverProxy.renderProcessGone(wasOomProtected);
+        }
+    }
+
     // root node can be null if parsing fails.
     @CalledByNative
     private static void onAccessibilitySnapshot(AccessibilitySnapshotNode root,
diff --git a/content/public/android/java/src/org/chromium/content_public/browser/WebContents.java b/content/public/android/java/src/org/chromium/content_public/browser/WebContents.java
index f263f059..c8a70ab0 100644
--- a/content/public/android/java/src/org/chromium/content_public/browser/WebContents.java
+++ b/content/public/android/java/src/org/chromium/content_public/browser/WebContents.java
@@ -352,4 +352,12 @@
      */
     public int downloadImage(String url, boolean isFavicon, int maxBitmapSize,
             boolean bypassCache, ImageDownloadCallback callback);
+
+    /**
+     * Issues a fake notification about the renderer being killed.
+     *
+     * @param wasOomProtected True if the renderer was protected from the OS out-of-memory killer
+     *                        (e.g. renderer for the currently selected tab)
+     */
+    public void simulateRendererKilledForTesting(boolean wasOomProtected);
 }
diff --git a/content/public/child/BUILD.gn b/content/public/child/BUILD.gn
index 26d28e54..8084909 100644
--- a/content/public/child/BUILD.gn
+++ b/content/public/child/BUILD.gn
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+import("//ppapi/features/features.gni")
+
 # See //content/BUILD.gn for how this works.
 group("child") {
   if (is_component_build) {
@@ -13,10 +15,10 @@
       ":child_sources",
     ]
     if (!is_android) {
-      public_deps += [
-        "//content/gpu",
-        "//content/ppapi_plugin",
-      ]
+      public_deps += [ "//content/gpu" ]
+    }
+    if (enable_plugins) {
+      public_deps += [ "//content/ppapi_plugin" ]
     }
   }
 }
diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn
index a563ecc..75250780 100644
--- a/content/test/BUILD.gn
+++ b/content/test/BUILD.gn
@@ -1119,6 +1119,7 @@
     "../browser/loader/mock_resource_loader.h",
     "../browser/loader/mojo_async_resource_handler_unittest.cc",
     "../browser/loader/navigation_url_loader_unittest.cc",
+    "../browser/loader/redirect_to_file_resource_handler_unittest.cc",
     "../browser/loader/resource_buffer_unittest.cc",
     "../browser/loader/resource_dispatcher_host_unittest.cc",
     "../browser/loader/resource_loader_unittest.cc",
diff --git a/docs/testing/layout_tests_tips.md b/docs/testing/layout_tests_tips.md
new file mode 100644
index 0000000..8a2ee128
--- /dev/null
+++ b/docs/testing/layout_tests_tips.md
@@ -0,0 +1,301 @@
+# Layout Tests Tips
+
+The recommendations here are intended to help you write new tests that go
+through code review with a minimal number of round trips, remain useful as Blink
+evolves, and serve as an asset (rather than a liability) for the team.
+
+While reading existing layout tests, please keep in mind that they represent
+snapshots taken over many years of an ever-evolving collective opinion of what
+good Web pages and solid tests should look like. Thus, it should not come as a
+surprise that most existing layout tests are not consistent with these
+recommendations, and are not even consistent with each other.
+
+*** note
+This document intentionally uses _should_ a lot more than _must_, as defined in
+[RFC 2119](https://www.ietf.org/rfc/rfc2119.txt). Writing layout tests is a
+careful act of balancing many concerns, and this humble document cannot possibly
+capture the context that rests in the head of an experienced Blink engineer.
+***
+
+## General Principles
+
+This section contains guidelines adopted from
+[Test the Web Forward's Test Format Guidelines](http://testthewebforward.org/docs/test-format-guidelines.html)
+and
+[WebKit's Wiki page on Writing good test cases](https://trac.webkit.org/wiki/Writing%20Layout%20Tests%20for%20DumpRenderTree),
+with Blink-specific flavoring.
+
+### Concise
+
+Tests should be **concise**, without compromising on the principles below. Every
+element and piece of code on the page should be necessary and relevant to what
+is being tested. For example, don't build a fully functional signup form if you
+only need a text field or a button.
+
+Content needed to satisfy the principles below is considered necessary. For
+example, it is acceptable and desirable to add elements that make the test
+self-describing (see below), and to add code that makes the test more reliable
+(see below).
+
+Content that makes test failures easier to debug is considered necessary (to
+maintaining a good development speed), and is both acceptable and desirable.
+
+*** promo
+Conciseness is particularly important for reference tests and pixel tests, as
+the test pages are rendered in an 800x600px viewport. Having content outside the
+viewport is undesirable because the outside content does not get compared, and
+because the resulting scrollbars are platform-specific UI widgets, making the
+test results less reliable.
+***
+
+### Fast
+
+Tests should be as **fast** as possible, without compromising on the principles
+below. Blink has several thousand layout tests that are run in parallel, and
+avoiding unnecessary delays is crucial to keeping our Commit Queue in good
+shape.
+
+Avoid
+[window.setTimeout](https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setTimeout),
+as it wastes time on the testing infrastructure. Instead, use specific event
+handlers, such as
+[window.onload](https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onload),
+to decide when to advance to the next step in a test.
+
+### Reliable
+
+Tests should be **reliable** and yield consistent results for a given
+implementation. Flaky tests slow down your fellow developers' debugging efforts
+and the Commit Queue.
+
+`window.setTimeout` is again a primary offender here. Asides from wasting time
+on a fast system, tests that rely on fixed timeouts can fail when on systems
+that are slower than expected.
+
+When adding or significantly modifying a layout test, use the command below to
+assess its flakiness. While not foolproof, this approach gives you some
+confidence, and giving up CPU cycles for mental energy is a pretty good trade.
+
+```bash
+third_party/WebKit/Tools/Scripts/run-webkit-tests path/to/test.html --repeat-each=100
+```
+
+The
+[PSA on writing reliable layout tests](https://docs.google.com/document/d/1Yl4SnTLBWmY1O99_BTtQvuoffP8YM9HZx2YPkEsaduQ/edit).
+also has good guidelines for writing reliable tests.
+
+### Self-Describing
+
+Tests should be **self-describing**, so that a project member can recognize
+whether a test passes or fails without having to read the specification of the
+feature being tested.
+
+`testharness.js` makes a test self-describing when used correctly. Other types
+of tests, such as reference tests and
+[tests with manual fallback](./layout_tests_with_manual_fallback.md),
+[must be carefully designed](http://testthewebforward.org/docs/test-style-guidelines.html)
+to be self-describing.
+
+### Minimal
+
+Tests should require a **minimal** amount of cognitive effort to read and
+maintain.
+
+Avoid depending on edge case behavior of features that aren't explicitly covered
+by the test. For example, except where testing parsing, tests should contain
+valid markup (no parsing errors).
+
+Tests should provide as much relevant information as possible when failing.
+`testharness.js` tests should prefer
+[rich assert_ functions](https://github.com/w3c/testharness.js/blob/master/docs/api.md#list-of-assertions)
+to combining `assert_true()` with a boolean operator. Using appropriate
+`assert_` functions results in better diagnostic output when the assertion
+fails.
+
+### Cross-Platform
+
+Tests should be as **cross-platform** as reasonably possible. Avoid assumptions
+about device type, screen resolution, etc. Unavoidable assumptions should be
+documented.
+
+When possible, tests should only use Web platform features, as specified
+in the relevant standards. When the Web platform's APIs are insufficient,
+tests should prefer to use WPT extended testing APIs, such as
+`wpt_automation`, over Blink-specific testing APIs.
+
+Test pages should use the HTML5 doctype (`<!doctype html>`) unless they
+specifically cover
+[quirks mode](https://developer.mozilla.org/docs/Quirks_Mode_and_Standards_Mode)
+behavior.
+
+Tests should avoid using features that haven't been shipped by the
+actively-developed major rendering engines (Blink, WebKit, Gecko, Edge). When
+unsure, check [caniuse.com](http://caniuse.com/). By necessity, this
+recommendation does not apply to the feature targeted by the test.
+
+*** note
+It may be tempting have a test for a bleeding-edge feature X depend on feature
+Y, which has only shipped in beta / development versions of various browsers.
+The reasoning would be that all browsers that implement X will have implemented
+Y. Please keep in mind that Chrome has un-shipped features that made it to the
+Beta channel in the past.
+***
+
+*** aside
+[ES2015](http://benmccormick.org/2015/09/14/es5-es6-es2016-es-next-whats-going-on-with-javascript-versioning/)
+is shipped by all major browsers under active development (except for modules),
+so using ES2015 features is acceptable.
+
+At the time of this writing, ES2016 is not fully shipped in all major browsers.
+***
+
+### Self-Contained
+
+Tests must be **self-contained** and not depend on external network resources.
+
+Unless used by multiple test files, CSS and JavaScript should be inlined using
+`<style>` and `<script>` tags. Content shared by multiple tests should be
+placed in a `resources/` directory near the tests that share it. See below for
+using multiple origins in a test.
+
+### File Names
+
+Test **file names** should describe what is being tested.
+
+File names should use `snake-case`, but preserve the case of any embedded API
+names. For example, prefer `document-createElement.html` to
+`document-create-element.html`.
+
+### Character Encoding
+
+Tests should use the UTF-8 **character encoding**, which should be declared by
+`<meta charset=utf-8>`. A `<meta>` tag is not required (but is acceptable) for
+tests that only contain ASCII characters. This guideline does not apply when
+specifically testing encodings.
+
+The `<meta>` tag must be the first child of the document's `<head>` element. In
+documents that do not have an explicit `<head>`, the `<meta>` tag must follow
+the doctype.
+
+## Coding Style
+
+No coding style is enforced for layout tests. This section highlights coding
+style aspects that are not consistent across our layout tests, and suggests some
+defaults for unopinionated developers. When writing layout tests for a new part
+of the codebase, you can minimize review latency by taking a look at existing
+tests, and pay particular attention to these issues. Also beware of per-project
+style guides, such as the
+[ServiceWorker Tests Style guide](https://www.chromium.org/blink/serviceworker/testing).
+
+### Baseline
+
+[Google's JavaScript Style Guide](https://google.github.io/styleguide/jsguide.html)
+and
+[Google's HTML/CSS Style Guide](https://google.github.io/styleguide/htmlcssguide.xml)
+are a reasonable baseline for coding style defaults, with the caveat that layout
+tests do not use Google Closure or JSDoc.
+
+### == vs ===
+
+JavaScript's
+[== operator](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/Comparison_Operators#Equality_())
+performs some
+[type conversion](http://www.ecma-international.org/ecma-262/6.0/#sec-abstract-equality-comparison).
+on its arguments, which might be surprising to readers whose experience centers
+around C++ or Java. The
+[=== operator](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/Comparison_Operators#Identity_strict_equality_())
+is much more similar to `==` in C++.
+
+Using `===` everywhere is an easy default that saves you, your reviewer, and any
+colleague that might have to debug test failures, from having to reason about
+[special cases for ==](http://dorey.github.io/JavaScript-Equality-Table/). At
+the same time, some developers consider `===` to add unnecessary noise when `==`
+would suffice. While `===` should be universally accepted, be flexible if your
+reviewer expresses a strong preference for `==`.
+
+### Let and Const vs Var
+
+JavaScript variable declarations introduced by
+[var](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/var)
+are hoisted to the beginning of their containing function, which may be
+surprising to C++ and Java developers. By contrast,
+[const](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/const)
+and
+[let](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/let)
+declarations are block-scoped, just like in C++ and Java, and have the added
+benefit of expressing mutability intent.
+
+For the reasons above, a reasonable default is to prefer `const` and `let` over
+`var`, with the same caveat as above.
+
+### Strict Mode
+
+JavaScript's
+[strict mode](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Strict_mode),
+activated by adding `'use strict';` to the very top of a script, helps catch
+some errors, such as mistyping a variable name, forgetting to declare a
+variable, or attempting to change a read-only property.
+
+Given that strict mode gives some of the benefits of using a compiler, adding it
+to every test is a good default. This does not apply when specifically testing
+sloppy mode behavior.
+
+Some developers argue that adding the `'use strict';` boilerplate can be
+difficult to remember, weighs down smaller tests, and in many cases running a
+test case is sufficient to discover any mistyped variable names.
+
+### Promises
+
+[Promises](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)
+are a mechanism for structuring asynchronous code. When used correctly, Promises
+avoid some of the
+[issues of callbacks](http://colintoh.com/blog/staying-sane-with-asynchronous-programming-promises-and-generators).
+For these reasons, a good default is to prefer promises over other asynchronous
+code structures.
+
+When using promises, be aware of the
+[execution order subtleties](https://jakearchibald.com/2015/tasks-microtasks-queues-and-schedules/)
+associated with them. Here is a quick summary.
+
+* The function passed to `Promise.new` is executed synchronously, so it finishes
+  before the Promise is created and returned.
+* The functions passed to `then` and `catch` are executed in
+  _separate microtasks_, so they will be executed after the code that resolved
+  or rejected the promise finishes, but before any other event handler.
+
+### Classes
+
+[Classes](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Classes)
+are syntactic sugar for JavaScript's
+[prototypal inheritance](https://developer.mozilla.org/docs/Web/JavaScript/Inheritance_and_the_prototype_chain).
+Compared to manipulating prototypes directly, classes offer a syntax that is
+more familiar to developers coming from other programming languages.
+
+A good default is to prefer classes over other OOP constructs, as they will make
+the code easier to read for many of your fellow Chrome developers. At the same
+time, most layout tests are simple enough that OOP is not justified.
+
+### Character Encoding
+
+When HTML pages do not explicitly declare a character encoding, browsers
+determine the encoding using an
+[encoding sniffing algorithm](https://html.spec.whatwg.org/multipage/syntax.html#determining-the-character-encoding)
+that will surprise most modern Web developers. Highlights include a default
+encoding that depends on the user's locale, and non-standardized
+browser-specific heuristics.
+
+The easiest way to not have to think about any of this is to add
+`<meta charset="utf-8">` to all your tests. This is easier to remember if you
+use a template for your layout tests, rather than writing them from scratch.
+
+## Tests with Manual Feedback
+
+Tests that rely on the testing APIs exposed by WPT or Blink will not work when
+loaded in a standard browser environment. When writing such tests, default to
+having the tests gracefully degrade to manual tests in the absence of the
+testing APIs.
+
+The
+[document on layout tests with manual feedback](./layout_tests_with_manual_fallback.md)
+describes the approach in detail and highlights the trade-off between added test
+weight and ease of debugging.
diff --git a/docs/testing/layout_tests_with_manual_fallback.md b/docs/testing/layout_tests_with_manual_fallback.md
new file mode 100644
index 0000000..1a51d5a0
--- /dev/null
+++ b/docs/testing/layout_tests_with_manual_fallback.md
@@ -0,0 +1,119 @@
+# Layout Tests with Manual Fallback
+
+Some Blink features cannot be automatically tested using the Web Platform. Prime
+examples are the APIs that require
+[user activation](https://html.spec.whatwg.org/multipage/interaction.html#triggered-by-user-activation)
+(also known as _a user gesture_), such as [Full Screen](https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API).
+Automated tests for these Blink features must rely on special APIs, which are
+only exposed in testing environments, and are therefore not available in a
+normal browser session.
+
+A popular pattern used in these tests is to rely on the user to perform some
+manual steps in order to run the test case in a normal browser session. These
+tests are effectively
+[manual tests](http://testthewebforward.org/docs/manual-test.html), with
+additional JavaScript code that automatically performs the desired manual steps,
+when loaded in an environment that exposes the needed testing APIs.
+
+## Motivation
+
+Layout tests that degrade to manual tests in the absence of testing APIs have
+the following benefits.
+
+* The manual test component can be debugged in a normal browser session, using
+  the rich [developer tools](https://developer.chrome.com/devtools). Tests
+  without a manual fallback can only be debugged in the test runner.
+* The manual tests can run in other browsers, making it easy to check whether
+  our behavior matches other browsers.
+* The layout tests can form the basis for manual tests that are contributed to
+  the [Web Platform Tests Project](https://github.com/w3c/web-platform-tests).
+
+Therefore, the desirability of adding a manual fallback to a test heavily
+depends on whether the feature under test is a Web Platform feature or a
+Blink-only feature, and on the developer's working style. The benefits above
+should be weighed against the added design effort needed to build a manual test,
+and the size and complexity introduced by the manual fallback.
+
+## Development Tips
+
+A natural workflow for writing a layout test that gracefully degrades to a
+manual test is to first develop the manual test in a browser, and then add code
+that feature-checks for testing APIs, and uses them to automate the test's
+manual steps.
+
+Manual tests should minimize the chance of user error. This implies keeping the
+manual steps to a minimum, and having simple and clear instructions that
+describe all the configuration changes and user gestures that match the effect
+of the Blink-specific APIs used by the test.
+
+## Example
+
+Below is an example of a fairly minimal test that uses a Blink-Specific API
+(`window.eventSender`), and gracefully degrades to a manual test.
+
+```html
+<!doctype html>
+<meta charset="utf-8">
+<title>DOM: Event.isTrusted for UI events</title>
+<link rel="help" href="https://dom.spec.whatwg.org/#dom-event-istrusted">
+<link rel="help" href="https://dom.spec.whatwg.org/#constructing-events">
+<meta name="assert"
+    content="Event.isTrusted is true for events generated by user interaction">
+<script src="../../resources/testharness.js"></script>
+<script src="../../resources/testharnessreport.js"></script>
+
+<p>Please click on the button below.</p>
+<button>Click Me!</button>
+
+<script>
+'use strict';
+
+setup({ explicit_timeout: true });
+
+promise_test(() => {
+  const button = document.querySelector('button');
+  return new Promise((resolve, reject) => {
+    const button = document.querySelector('button');
+    button.addEventListener('click', (event) => {
+      resolve(event);
+    });
+
+    if (window.eventSender) {
+      eventSender.mouseMoveTo(button.offsetLeft, button.offsetTop);
+      eventSender.mouseDown();
+      eventSender.mouseUp();
+    }
+  }).then((clickEvent) => {
+    assert_true(clickEvent.isTrusted);
+  });
+
+}, 'Click generated by user interaction');
+
+</script>
+```
+
+The test exhibits the following desirable features:
+
+* It has a second specification URL (`<link rel="help">`), because the paragraph
+  that documents the tested feature (referenced by the primary URL) is not very
+  informative on its own.
+* It links to the
+  [WHATWG Living Standard](https://wiki.whatwg.org/wiki/FAQ#What_does_.22Living_Standard.22_mean.3F),
+  rather than to a frozen version of the specification.
+* It contains clear instructions for manually triggering the test conditions.
+  The test starts with a paragraph (`<p>`) that tells the tester exactly what to
+  do, and the `<button>` that needs to be clicked is clearly labeled.
+* It disables the timeout mechanism built into `testharness.js` by calling
+  `setup({ explicit_timeout: true });`
+* It checks for the presence of the Blink-specific testing APIs
+  (`window.eventSender`) before invoking them. The test does not automatically
+  fail when the APIs are not present.
+* It uses [Promises](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)
+  to separate the test setup from the assertions. This is particularly helpful
+  for manual tests that depend on a sequence of events to occur, as Promises
+  offer a composable way to express waiting for asynchronous events that avoids
+  [callback hell](http://stackabuse.com/avoiding-callback-hell-in-node-js/).
+
+Notice that the test is pretty heavy compared to a minimal JavaScript test that
+does not rely on testing APIs. Only use testing APIs when the desired testing
+conditions cannot be set up using Web Platform APIs.
diff --git a/docs/testing/writing_layout_tests.md b/docs/testing/writing_layout_tests.md
index 37e5e2a..6399a7b 100644
--- a/docs/testing/writing_layout_tests.md
+++ b/docs/testing/writing_layout_tests.md
@@ -68,246 +68,24 @@
   Layout tree tests are used as a last resort to test the internal quirks of
   the implementation, and they should be avoided in favor of one of the earlier
   options.
+
 ## General Principles
 
-The principles below are adapted from
-[Test the Web Forward's Test Format Guidelines](http://testthewebforward.org/docs/test-format-guidelines.html)
-and
-[WebKit's Wiki page on Writing good test cases](https://trac.webkit.org/wiki/Writing%20Layout%20Tests%20for%20DumpRenderTree).
-
-*** note
-This document intentionally uses _should_ a lot more than _must_, as defined in
-[RFC 2119](https://www.ietf.org/rfc/rfc2119.txt). Writing layout tests is a
-careful act of balancing many concerns, and this humble document cannot possibly
-capture the context that rests in the head of an experienced Blink engineer.
-***
-
-### Concise
-
-Tests should be **concise**, without compromising on the principles below. Every
-element and piece of code on the page should be necessary and relevant to what
-is being tested. For example, don't build a fully functional signup form if you
-only need a text field or a button.
-
-Content needed to satisfy the principles below is considered necessary. For
-example, it is acceptable and desirable to add elements that make the test
-self-describing (see below), and to add code that makes the test more reliable
-(see below).
-
-Content that makes test failures easier to debug is considered necessary (to
-maintaining a good development speed), and is both acceptable and desirable.
-
-*** promo
-Conciseness is particularly important for reference tests and pixel tests, as
-the test pages are rendered in an 800x600px viewport. Having content outside the
-viewport is undesirable because the outside content does not get compared, and
-because the resulting scrollbars are platform-specific UI widgets, making the
-test results less reliable.
-***
-
-### Fast
-
-Tests should be as **fast** as possible, without compromising on the principles
-below. Blink has several thousand layout tests that are run in parallel, and
-avoiding unnecessary delays is crucial to keeping our Commit Queue in good
-shape.
-
-Avoid
-[window.setTimeout](https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setTimeout),
-as it wastes time on the testing infrastructure. Instead, use specific event
-handlers, such as
-[window.onload](https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onload),
-to decide when to advance to the next step in a test.
-
-### Reliable
-
-Tests should be **reliable** and yield consistent results for a given
-implementation. Flaky tests slow down your fellow developers' debugging efforts
-and the Commit Queue.
-
-`window.setTimeout` is again a primary offender here. Asides from wasting time
-on a fast system, tests that rely on fixed timeouts can fail when on systems
-that are slower than expected.
-
-Follow the guidelines in this
-[PSA on writing reliable layout tests](https://docs.google.com/document/d/1Yl4SnTLBWmY1O99_BTtQvuoffP8YM9HZx2YPkEsaduQ/edit).
-
-### Self-Describing
-
-Tests should be **self-describing**, so that a project member can recognize
-whether a test passes or fails without having to read the specification of the
-feature being tested. `testharness.js` makes a test self-describing when used
-correctly, but tests that degrade to manual tests
-[must be carefully designed](http://testthewebforward.org/docs/test-style-guidelines.html)
-to be self-describing.
-
-### Minimal
-
-Tests should require a **minimal** amount of cognitive effort to read and
-maintain.
-
-Avoid depending on edge case behavior of features that aren't explicitly covered
-by the test. For example, except where testing parsing, tests should contain
-valid markup (no parsing errors).
-
-Tests should provide as much relevant information as possible when failing.
-`testharness.js` tests should prefer
-[rich assert_ functions](https://github.com/w3c/testharness.js/blob/master/docs/api.md#list-of-assertions)
-to combining `assert_true()` with a boolean operator. Using appropriate
-`assert_` functions results in better diagnostic output when the assertion
-fails.
-
-&#x1F6A7; Prefer JavaScript's
-[===](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/Comparison_Operators#Identity_strict_equality_())
-operator to
-[==](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/Comparison_Operators#Equality_())
-so that readers don't have to reason about
-[type conversion](http://www.ecma-international.org/ecma-262/6.0/#sec-abstract-equality-comparison).
-
-*** promo
-The === vs == recommendation is still being discussed on
-[blink-dev](https://groups.google.com/a/chromium.org/d/topic/blink-dev/XsR6PKRrS1E/discussion).
-However, please keep in mind that a fellow developer who has to debug a failing
-test may have to consider the
-[special cases for ==](http://dorey.github.io/JavaScript-Equality-Table/) when
-the types of the two values being compared aren't immediately obvious.
-***
-
-### Cross-Platform
-
-Tests should be as **cross-platform** as reasonably possible. Avoid assumptions
-about device type, screen resolution, etc. Unavoidable assumptions should be
-documented.
-
-When possible, tests should only use Web platform features, as specified
-in the relevant standards. When the Web platform's APIs are insufficient,
-tests should prefer to use WPT extended testing APIs, such as
-`wpt_automation`, over Blink-specific testing APIs.
-
-&#x1F6A7; Tests that use testing APIs should feature-test for the presence of
-those APIs, and gracefully degrade to manual tests (see below) when the testing
-APIs are not available.
-
-Test pages should use the HTML5 doctype (`<!doctype html>`) unless they
-specifically cover
-[quirks mode](https://developer.mozilla.org/docs/Quirks_Mode_and_Standards_Mode)
-behavior.
 
 Tests should be written under the assumption that they will be upstreamed
-to the WPT project. For example, tests should follow the
+to the WPT project. To this end, tests should follow the
 [WPT guidelines](http://testthewebforward.org/docs/writing-tests.html).
 
-Tests should avoid using features that haven't been shipped by the
-actively-developed major rendering engines (Blink, WebKit, Gecko, Edge). When
-unsure, check [caniuse.com](http://caniuse.com/). By necessity, this
-recommendation does not apply to the feature targeted by the test.
 
-*** note
-It may be tempting have a test for a bleeding-edge feature X depend on feature
-Y, which has only shipped in beta / development versions of various browsers.
-The reasoning would be that all browsers that implement X will have implemented
-Y. Please keep in mind that Chrome has un-shipped features that made it to the
-Beta channel in the past.
-***
+There is no style guide that applies to all layout tests. However, some projects
+have adopted style guides, such as the
+[ServiceWorker Tests Style guide](https://www.chromium.org/blink/serviceworker/testing).
 
-Tests that use Blink-specific testing APIs should feature-test for the
-presence of the testing APIs and degrade to
-[manual tests](http://testthewebforward.org/docs/manual-test.html) when
-the testing APIs are not present.
-
-*** promo
-The recommendation to degrade to manual tests is still being discussed on
-[blink-dev](https://groups.google.com/a/chromium.org/d/topic/blink-dev/XsR6PKRrS1E/discussion).
-However, please keep in mind that a manual test can be debugged in the browser,
-whereas a test that does not degrade gracefully can only be debugged in the test
-runner. Fellow project members and future you will thank you for having your
-test work as a manual test.
-***
-
-### Self-Contained
-
-Tests must be **self-contained** and not depend on external network resources.
-
-Unless used by multiple test files, CSS and JavaScript should be inlined using
-`<style>` and `<script>` tags. Content shared by multiple tests should be
-placed in a `resources/` directory near the tests that share it. See below for
-using multiple origins in a test.
-
-### File Names
-
-Test **file names** should describe what is being tested.
-
-File names should use `snake-case`, but preserve the case of any embedded API
-names. For example, prefer `document-createElement.html` to
-`document-create-element.html`.
-
-### Modern Features
-
-Tests should prefer **modern features** in JavaScript and in the Web Platform,
-provided that they meet the recommendations above for cross-platform tests.
-
-Tests should use
-[strict mode](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode)
-for all JavaScript, except when specifically testing sloppy mode behavior.
-Strict mode flags deprecated features and helps catch some errors, such as
-forgetting to declare variables.
-
-&#x1F6A7; JavaScript code should prefer
-[const](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/const)
-and
-[let](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/let)
-over `var`,
-[classes](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Classes)
-over other OOP constructs, and
-[Promises](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)
-over other mechanisms for structuring asynchronous code.
-
-*** promo
-The recommendation to prefer `const` and `let` over `var` is currently being
-discussed on
-[blink-dev](https://groups.google.com/a/chromium.org/d/topic/blink-dev/XsR6PKRrS1E/discussion).
-***
-
-### Character Encoding
-
-&#x1F6A7; Tests should use the UTF-8 **character encoding**, which should be
-declared by `<meta charset=utf-8>`. This does not apply when specifically
-testing encodings.
-
-The `<meta>` tag must be the first child of the document's `<head>` element. In
-documents that do not have an explicit `<head>`, the `<meta>` tag must follow
-the doctype.
-
-When HTML pages do not explicitly declare a character encoding, browsers
-determine the encoding using an
-[encoding sniffing algorithm](https://html.spec.whatwg.org/multipage/syntax.html#determining-the-character-encoding)
-that will surprise most modern Web developers. Highlights include a default
-encoding that depends on the user's locale, and non-standardized
-browser-specific heuristics.
-
-*** promo
-The WPT guidelines state that test files that only contain ASCII characters may
-omit the `<meta>` tag. This exception is currently discussed on
-[blink-dev](https://groups.google.com/a/chromium.org/d/topic/blink-dev/XsR6PKRrS1E/discussion).
-If taking that route, please keep in mind that Firefox currently issues a
-[development tools](https://developer.mozilla.org/en-US/docs/Tools) warning for
-pages without a declared encoding.
-***
-
-### Coding Style
-
-Tests should aim to have a **coding style** that is consistent with
-[Google's JavaScript Style Guide](https://google.github.io/styleguide/jsguide.html),
-and
-[Google's HTML/CSS Style Guide](https://google.github.io/styleguide/htmlcssguide.xml),
-with the following exceptions.
-
-* Rules related to Google Closure and JSDoc do not apply.
-* Modern Web Platform and JavaScript features should be preferred to legacy
-  constructs that target old browsers.
-* Per the JavaScript guide, new tests should also follow any per-project
-  style guide, such as the
-  [ServiceWorker Tests Style guide](https://www.chromium.org/blink/serviceworker/testing).
+Our [document on layout tests tips](./layout_tests_tips.md) summarizes the most
+important WPT guidelines and highlights some JavaScript concepts that are worth
+paying attention to when trying to infer style rules from existing tests. If
+you're unopinionated and looking for a style guide to follow, the document also
+suggests some defaults.
 
 ## JavaScript Tests
 
@@ -337,10 +115,8 @@
 
 ```html
 <!doctype html>
-<meta charset="utf-8">
-<title>JavaScript: the true literal</title>
+<title>JavaScript: the true literal is immutable and equal to itself</title>
 <link rel="help" href="https://tc39.github.io/ecma262/#sec-boolean-literals">
-<meta name="assert" value="The true literal is equal to itself and immutable">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
 <script>
@@ -375,9 +151,6 @@
 
 Some points that are not immediately obvious from the example:
 
-* The `<meta name="assert">` describes the purpose of the entire file, and
-  is not redundant to `<title>`. Don't add a `<meta name="assert">` when the
-  information in the `<title>` is sufficient.
 * When calling an `assert_` function that compares two values, the first
   argument is the actual value (produced by the functionality being tested), and
   the second argument is the expected value (known good, golden). The order
@@ -428,6 +201,11 @@
 cannot be implemented using Web APIs. The WPT project covers some of these cases
 via supplemental testing APIs.
 
+When writing tests that rely on supplemental testing APIs, please consider the
+cost and benefits of having the tests
+[gracefully degrade to manual tests](./layout_tests_with_manual_fallback.md) in
+the absence of the testing APIs.
+
 *** promo
 In many cases, the user gesture is not actually necessary. For example, many
 event handling tests can use
@@ -488,98 +266,6 @@
 
 [![UML of testRunner bindings configuring platform implementation](https://docs.google.com/drawings/u/1/d/1KNRNjlxK0Q3Tp8rKxuuM5mpWf4OJQZmvm9_kpwu_Wwg/export/svg?id=1KNRNjlxK0Q3Tp8rKxuuM5mpWf4OJQZmvm9_kpwu_Wwg&pageid=p)](https://docs.google.com/drawings/d/1KNRNjlxK0Q3Tp8rKxuuM5mpWf4OJQZmvm9_kpwu_Wwg/edit)
 
-### Manual Tests
-
-&#x1F6A7; Whenever possible, tests that rely on (WPT's or Blink's) testing APIs
-should also be usable as
-[manual tests](http://testthewebforward.org/docs/manual-test.html). This makes
-it easy to debug the test, and to check whether our behavior matches other
-browsers.
-
-*** promo
-The recommendation to degrade to manual tests is still being discussed on
-[blink-dev](https://groups.google.com/a/chromium.org/d/topic/blink-dev/XsR6PKRrS1E/discussion).
-However, please keep in mind that a manual test can be debugged in the browser,
-whereas a test that does not degrade gracefully can only be debugged in the test
-runner. Fellow project members and future you will thank you for having your
-test work as a manual test.
-***
-
-Manual tests should minimize the chance of user error. This implies keeping the
-manual steps to a minimum, and having simple and clear instructions that
-describe all the configuration changes and user gestures that match the effect
-of the Blink-specific APIs used by the test.
-
-Below is an example of a fairly minimal test that uses a Blink-Specific API
-(`window.eventSender`), and gracefully degrades to a manual test.
-
-```html
-<!doctype html>
-<meta charset="utf-8">
-<title>DOM: Event.isTrusted for UI events</title>
-<link rel="help" href="https://dom.spec.whatwg.org/#dom-event-istrusted">
-<link rel="help" href="https://dom.spec.whatwg.org/#constructing-events">
-<meta name="assert"
-    content="Event.isTrusted is true for events generated by user interaction">
-<script src="../../resources/testharness.js"></script>
-<script src="../../resources/testharnessreport.js"></script>
-
-<p>Please click on the button below.</p>
-<button>Click Me!</button>
-
-<script>
-'use strict';
-
-setup({ explicit_timeout: true });
-
-promise_test(() => {
-  const button = document.querySelector('button');
-  return new Promise((resolve, reject) => {
-    const button = document.querySelector('button');
-    button.addEventListener('click', (event) => {
-      resolve(event);
-    });
-
-    if (window.eventSender) {
-      eventSender.mouseMoveTo(button.offsetLeft, button.offsetTop);
-      eventSender.mouseDown();
-      eventSender.mouseUp();
-    }
-  }).then((clickEvent) => {
-    assert_true(clickEvent.isTrusted);
-  });
-
-}, 'Click generated by user interaction');
-
-</script>
-```
-
-The test exhibits the following desirable features:
-
-* It has a second specification URL (`<link rel="help">`), because the paragraph
-  that documents the tested feature (referenced by the primary URL) is not very
-  informative on its own.
-* It links to the
-  [WHATWG Living Standard](https://wiki.whatwg.org/wiki/FAQ#What_does_.22Living_Standard.22_mean.3F),
-  rather than to a frozen version of the specification.
-* It contains clear instructions for manually triggering the test conditions.
-  The test starts with a paragraph (`<p>`) that tells the tester exactly what to
-  do, and the `<button>` that needs to be clicked is clearly labeled.
-* It disables the timeout mechanism built into `testharness.js` by calling
-  `setup({ explicit_timeout: true });`
-* It checks for the presence of the Blink-specific testing APIs
-  (`window.eventSender`) before invoking them. The test does not automatically
-  fail when the APIs are not present.
-* It uses [Promises](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)
-  to separate the test setup from the assertions. This is particularly helpful
-  for manual tests that depend on a sequence of events to occur, as Promises
-  offer a composable way to express waiting for asynchronous events that avoids
-  [callback hell](http://stackabuse.com/avoiding-callback-hell-in-node-js/).
-
-Notice that the test is pretty heavy compared to a minimal JavaScript test that
-does not rely on testing APIs. Only use testing APIs when the desired testing
-conditions cannot be set up using Web Platform APIs.
-
 ### Text Test Baselines
 
 By default, all the test cases in a file that uses `testharness.js` are expected
@@ -704,7 +390,6 @@
 
 ```html
 <!doctype html>
-<meta charset="utf-8">
 <link rel="match" href="ol-reversed-expected.html">
 
 <ol reversed>
@@ -718,7 +403,6 @@
 
 ```html
 <!doctype html>
-<meta charset="utf-8">
 
 <ol>
   <li value="3">A</li>
@@ -844,7 +528,6 @@
 
 ```html
 <!doctype html>
-<meta charset="utf-8">
 <style>
 body { font: 10px Ahem; }
 span::after {
diff --git a/ios/chrome/browser/crash_report/crash_restore_helper.mm b/ios/chrome/browser/crash_report/crash_restore_helper.mm
index ad2b05f9..6a66ab7 100644
--- a/ios/chrome/browser/crash_report/crash_restore_helper.mm
+++ b/ios/chrome/browser/crash_report/crash_restore_helper.mm
@@ -288,16 +288,19 @@
       loadWindowFromPath:[self sessionBackupPath]
          forBrowserState:[_tabModel browserState]];
   DCHECK(window);
-  if (!window.unclaimedSessions)
+  NSArray* sessions = window.sessions;
+  if (!sessions.count)
     return;
   sessions::TabRestoreService* const tabRestoreService =
       IOSChromeTabRestoreServiceFactory::GetForBrowserState(_browserState);
   tabRestoreService->LoadTabsFromLastSession();
 
-  while (window.unclaimedSessions) {
+  web::WebState::CreateParams params(_browserState);
+  for (CRWNavigationManagerStorage* session in sessions) {
+    std::unique_ptr<web::WebState> webState =
+        web::WebState::Create(params, session);
     // Add all tabs at the 0 position as the position is relative to an old
     // tabModel.
-    std::unique_ptr<web::WebStateImpl> webState = [window nextSession];
     tabRestoreService->CreateHistoricalTab(
         sessions::IOSLiveTab::GetForWebState(webState.get()), 0);
   }
diff --git a/ios/chrome/browser/sessions/session_service.mm b/ios/chrome/browser/sessions/session_service.mm
index 16f66347..6aaf7d9e 100644
--- a/ios/chrome/browser/sessions/session_service.mm
+++ b/ios/chrome/browser/sessions/session_service.mm
@@ -22,6 +22,7 @@
 #import "ios/web/navigation/crw_session_certificate_policy_manager.h"
 #import "ios/web/navigation/crw_session_controller.h"
 #import "ios/web/navigation/crw_session_entry.h"
+#import "ios/web/public/crw_navigation_manager_storage.h"
 #include "ios/web/public/web_thread.h"
 
 // When C++ exceptions are disabled, the C++ library defines |try| and
@@ -211,8 +212,10 @@
   // class on disk.
   [SessionWindowUnarchiver setClass:[CRWSessionCertificatePolicyManager class]
                        forClassName:@"SessionCertificatePolicyManager"];
-  [SessionWindowUnarchiver setClass:[CRWSessionController class]
+  [SessionWindowUnarchiver setClass:[CRWNavigationManagerStorage class]
                        forClassName:@"SessionController"];
+  [SessionWindowUnarchiver setClass:[CRWNavigationManagerStorage class]
+                       forClassName:@"CRWSessionController"];
   [SessionWindowUnarchiver setClass:[CRWSessionEntry class]
                        forClassName:@"SessionEntry"];
   // TODO(crbug.com/661633): Remove this hack.
diff --git a/ios/chrome/browser/sessions/session_service_unittest.mm b/ios/chrome/browser/sessions/session_service_unittest.mm
index e859046f..20fa053 100644
--- a/ios/chrome/browser/sessions/session_service_unittest.mm
+++ b/ios/chrome/browser/sessions/session_service_unittest.mm
@@ -131,7 +131,7 @@
       [service loadWindowForBrowserState:chrome_browser_state_.get()];
   EXPECT_TRUE(sessionWindow != nil);
   EXPECT_EQ(NSNotFound, static_cast<NSInteger>(sessionWindow.selectedIndex));
-  EXPECT_EQ(0U, sessionWindow.unclaimedSessions);
+  EXPECT_EQ(0U, sessionWindow.sessions.count);
 }
 
 TEST_F(SessionServiceTest, LoadCorruptedWindow) {
diff --git a/ios/chrome/browser/sessions/session_window.h b/ios/chrome/browser/sessions/session_window.h
index ebcc2e3..e2b838d 100644
--- a/ios/chrome/browser/sessions/session_window.h
+++ b/ios/chrome/browser/sessions/session_window.h
@@ -11,30 +11,30 @@
 
 #import "ios/web/web_state/web_state_impl.h"
 
+@class CRWNavigationManagerStorage;
+
 // Encapsulates everything required to save a session "window". For iOS, there
 // will only be one window at a time.
 @interface SessionWindowIOS : NSObject<NSCoding>
 
-// So that ownership transfer of WebStateImpls is explicit, SessionWindows
-// are initialized "empty" (without any sessions) and sessions are added
-// one at a time. For example:
+// Adds a serialized session to be written to disk.  SessionWindows are
+// initialized "empty" (without any sessions) and sessions are added one at a
+// time.  For example:
 //  SessionWindowIOS* window = [[SessionWindow alloc] init];
-//  [window addSession:some_scoped_webstate_ptr.Pass()];
+//  [window addSession:session_storage];
 //  ...
 //  [window setSelectedInex:mySelectedIndex];
-- (void)addSession:(std::unique_ptr<web::WebStateImpl>)session;
+- (void)addSerializedSession:(CRWNavigationManagerStorage*)session;
 
+// Clears all added sessions.
 - (void)clearSessions;
 
-// Takes the first session stored in the reciever, removes it and passes
-// ownership of it to the caller.
-- (std::unique_ptr<web::WebStateImpl>)nextSession;
+// The serialized session objects.
+@property(nonatomic, readonly) NSArray* sessions;
 
 // The currently selected session. NSNotFound if the sessionWindow contains
 // no sessions; otherwise 0 <= |selectedIndex| < |unclaimedSessions|.
 @property(nonatomic) NSUInteger selectedIndex;
-// A count of the remaining sessions that haven't been claimed.
-@property(nonatomic, readonly) NSUInteger unclaimedSessions;
 
 @end
 
diff --git a/ios/chrome/browser/sessions/session_window.mm b/ios/chrome/browser/sessions/session_window.mm
index cef99d5..7334719 100644
--- a/ios/chrome/browser/sessions/session_window.mm
+++ b/ios/chrome/browser/sessions/session_window.mm
@@ -10,6 +10,7 @@
 #include "base/format_macros.h"
 #include "base/location.h"
 #include "base/logging.h"
+#import "base/mac/scoped_nsobject.h"
 #include "ios/chrome/browser/browser_state/chrome_browser_state.h"
 #import "ios/chrome/browser/sessions/NSCoder+Compatibility.h"
 #import "ios/chrome/browser/sessions/session_service.h"
@@ -19,18 +20,19 @@
 
 using web::WebStateImpl;
 
+// Serialization keys.
+NSString* const kSessionsKey = @"sessions";
+NSString* const kSelectedIndexKey = @"selectedIndex";
+
 @interface SessionWindowIOS () {
- @private
-  NSUInteger _selectedIndex;  // Currently selected session.
-  // For SessionWindows created via -initWithSessions:currentIndex:, the
-  // WebStateImpls in |_sessions| are owned by the calling code. When created
-  // via -initwithCoder:, the code which accepts the SessionWindow object
-  // should take or assign ownership of the contents of |_sessions|.
-  std::list<web::WebStateImpl*> _sessions;
+  // Backing objects for properties of the same name.
+  base::scoped_nsobject<NSMutableArray> _sessions;
+  NSUInteger _selectedIndex;
 }
 
-// For testing only. Empties _sessions.
-- (void)clearSessions;
+// Returns whether |index| is valid for a session window with |sessionCount|
+// entries.
+- (BOOL)isIndex:(NSUInteger)index validForSessionCount:(NSUInteger)sessionCount;
 
 @end
 
@@ -40,115 +42,78 @@
 
 - (id)init {
   if ((self = [super init])) {
+    _sessions.reset([[NSMutableArray alloc] init]);
     _selectedIndex = NSNotFound;
   }
   return self;
 }
 
-- (id)initWithCoder:(NSCoder*)aDecoder {
-  self = [super init];
-  if (self) {
-    DCHECK([aDecoder isKindOfClass:[SessionWindowUnarchiver class]]);
-    ios::ChromeBrowserState* browserState =
-        static_cast<SessionWindowUnarchiver*>(aDecoder).browserState;
-    DCHECK(browserState);
-    _selectedIndex = [aDecoder cr_decodeIndexForKey:@"selectedIndex"];
-    base::scoped_nsobject<NSArray> decodedSessionControllers(
-        [[aDecoder decodeObjectForKey:@"sessions"] retain]);
-    for (CRWSessionController* sc in decodedSessionControllers.get()) {
-      WebStateImpl* webState = new WebStateImpl(browserState);
-      webState->GetNavigationManagerImpl().SetSessionController(sc);
-      _sessions.push_back(webState);
-    }
-    DCHECK((_sessions.size() && _selectedIndex < _sessions.size()) ||
-           (_sessions.empty() && _selectedIndex == NSNotFound));
-    // If index is somehow corrupted, reset it to zero.
-    // (note that if |_selectedIndex| == |_sessions.size()|, that's
-    // incorrect because the maximum index of a vector of size |n| is |n-1|).
-    // Empty sessions should have |_selectedIndex| values of NSNotFound.
-    if (_sessions.empty()) {
-      _selectedIndex = NSNotFound;
-    } else if (_selectedIndex >= _sessions.size()) {
-      _selectedIndex = 0;
-    }
-  }
-  return self;
+#pragma mark - Accessors
+
+- (NSArray*)sessions {
+  return [NSArray arrayWithArray:_sessions];
 }
 
-- (void)dealloc {
-  DCHECK(_sessions.empty());
-  [super dealloc];
+- (void)setSelectedIndex:(NSUInteger)selectedIndex {
+  DCHECK([self isIndex:selectedIndex validForSessionCount:[_sessions count]]);
+  _selectedIndex = selectedIndex;
 }
 
-- (void)clearSessions {
-  while (self.unclaimedSessions) {
-    std::unique_ptr<WebStateImpl> webState = [self nextSession];
-    webState.reset();
-  }
-}
+#pragma mark - Public
 
-- (void)encodeWithCoder:(NSCoder*)aCoder {
-  // Destructively pull all of the WebStateImpls out of |_sessions| and hand
-  // off their sessionControllers for archiving. When encoding is complete,
-  // all of the objects in |_sessions| have been destroyed.
-  NSMutableArray* sessionControllers =
-      [NSMutableArray arrayWithCapacity:_sessions.size()];
-  while (self.unclaimedSessions) {
-    std::unique_ptr<WebStateImpl> webState = [self nextSession];
-    CRWSessionController* sessionController =
-        webState->GetNavigationManagerImpl().GetSessionController();
-    [sessionControllers addObject:sessionController];
-
-    // NOTE: WebStateImpl must be destroyed on the UI thread for safety
-    // reasons.
-    web::WebThread::DeleteSoon(web::WebThread::UI, FROM_HERE,
-                               webState.release());
-  }
-
-  [aCoder cr_encodeIndex:_selectedIndex forKey:@"selectedIndex"];
-  [aCoder encodeObject:sessionControllers forKey:@"sessions"];
-}
-
-- (void)addSession:(std::unique_ptr<web::WebStateImpl>)session {
-  DCHECK(session->GetNavigationManagerImpl().GetSessionController());
-  _sessions.push_back(session.release());
+- (void)addSerializedSession:(CRWNavigationManagerStorage*)session {
+  [_sessions addObject:session];
   // Set the selected index to 0 (this session) if this is the first session
   // added.
   if (_selectedIndex == NSNotFound)
     _selectedIndex = 0;
 }
 
-- (void)setSelectedIndex:(NSUInteger)selectedIndex {
-  DCHECK((_sessions.size() && selectedIndex < _sessions.size()) ||
-         (_sessions.empty() && selectedIndex == NSNotFound));
-  _selectedIndex = selectedIndex;
+- (void)clearSessions {
+  [_sessions removeAllObjects];
+  _selectedIndex = NSNotFound;
 }
 
-- (std::unique_ptr<web::WebStateImpl>)nextSession {
-  std::unique_ptr<web::WebStateImpl> session(_sessions.front());
-  _sessions.pop_front();
-  return session;
+#pragma mark - NSCoding
+
+- (id)initWithCoder:(NSCoder*)aDecoder {
+  self = [super init];
+  if (self) {
+    DCHECK([aDecoder isKindOfClass:[SessionWindowUnarchiver class]]);
+    _selectedIndex = [aDecoder cr_decodeIndexForKey:kSelectedIndexKey];
+    _sessions.reset([[aDecoder decodeObjectForKey:kSessionsKey] retain]);
+    DCHECK(
+        [self isIndex:_selectedIndex validForSessionCount:[_sessions count]]);
+    // If index is somehow corrupted, reset it to zero.
+    // (note that if |_selectedIndex| == |_sessions.size()|, that's
+    // incorrect because the maximum index of a vector of size |n| is |n-1|).
+    // Empty sessions should have |_selectedIndex| values of NSNotFound.
+    if (![_sessions count]) {
+      _selectedIndex = NSNotFound;
+    } else if (_selectedIndex >= [_sessions count]) {
+      _selectedIndex = 0;
+    }
+  }
+  return self;
 }
 
-- (NSUInteger)unclaimedSessions {
-  return _sessions.size();
+- (void)encodeWithCoder:(NSCoder*)aCoder {
+  [aCoder cr_encodeIndex:_selectedIndex forKey:kSelectedIndexKey];
+  [aCoder encodeObject:_sessions forKey:kSessionsKey];
 }
 
 #pragma mark -
-#pragma mark Debugging conveniences.
+
+- (BOOL)isIndex:(NSUInteger)index
+    validForSessionCount:(NSUInteger)sessionCount {
+  return (sessionCount && index < sessionCount) ||
+         (!sessionCount && index == NSNotFound);
+}
 
 - (NSString*)description {
-  NSMutableArray* sessionControllers =
-      [NSMutableArray arrayWithCapacity:_sessions.size()];
-  for (auto it = _sessions.begin(); it != _sessions.end(); ++it) {
-    CRWSessionController* sessionController =
-        (*it)->GetNavigationManagerImpl().GetSessionController();
-    [sessionControllers addObject:sessionController];
-  }
-
   return [NSString stringWithFormat:@"selected index: %" PRIuNS
                                      "\nsessions:\n%@\n",
-                                    _selectedIndex, sessionControllers];
+                                    _selectedIndex, _sessions.get()];
 }
 
 @end
diff --git a/ios/chrome/browser/sessions/session_window_unittest.mm b/ios/chrome/browser/sessions/session_window_unittest.mm
index eec800c..eb00a9d 100644
--- a/ios/chrome/browser/sessions/session_window_unittest.mm
+++ b/ios/chrome/browser/sessions/session_window_unittest.mm
@@ -14,7 +14,9 @@
 #include "ios/chrome/browser/browser_state/test_chrome_browser_state.h"
 #import "ios/chrome/browser/sessions/session_service.h"
 #import "ios/web/navigation/crw_session_controller.h"
+#import "ios/web/public/crw_navigation_manager_storage.h"
 #include "ios/web/public/test/test_web_thread_bundle.h"
+#import "ios/web/public/web_state/web_state.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "testing/gtest_mac.h"
 #include "testing/platform_test.h"
@@ -64,14 +66,16 @@
   std::unique_ptr<WebStateImpl> webState2(CreateWebState(@"window2", nil, NO));
   base::scoped_nsobject<SessionWindowIOS> sessionWindow(
       [[SessionWindowIOS alloc] init]);
-  [sessionWindow addSession:std::move(webState1)];
-  [sessionWindow addSession:std::move(webState2)];
+  [sessionWindow
+      addSerializedSession:webState1->BuildSerializedNavigationManager()];
+  [sessionWindow
+      addSerializedSession:webState2->BuildSerializedNavigationManager()];
   [sessionWindow setSelectedIndex:1];
 
   EXPECT_TRUE(sessionWindow.get() != nil);
-  EXPECT_EQ(2U, sessionWindow.get().unclaimedSessions);
+  EXPECT_EQ(2U, sessionWindow.get().sessions.count);
   [sessionWindow clearSessions];
-  EXPECT_EQ(0U, sessionWindow.get().unclaimedSessions);
+  EXPECT_EQ(0U, sessionWindow.get().sessions.count);
 }
 
 TEST_F(SessionWindowIOSTest, CodingEncoding) {
@@ -87,8 +91,10 @@
   std::unique_ptr<WebStateImpl> webState2(CreateWebState(windowName2, nil, NO));
   NSString* openerId2 =
       webState2->GetNavigationManagerImpl().GetSessionController().openerId;
-  [sessionWindow addSession:std::move(webState1)];
-  [sessionWindow addSession:std::move(webState2)];
+  [sessionWindow
+      addSerializedSession:webState1->BuildSerializedNavigationManager()];
+  [sessionWindow
+      addSerializedSession:webState2->BuildSerializedNavigationManager()];
 
   [sessionWindow setSelectedIndex:1];
 
@@ -101,24 +107,16 @@
   SessionWindowIOS* unarchivedObj = [unarchiver decodeObjectForKey:@"root"];
   EXPECT_TRUE(unarchivedObj != nil);
   EXPECT_EQ(unarchivedObj.selectedIndex, sessionWindow.get().selectedIndex);
-  EXPECT_EQ(2U, unarchivedObj.unclaimedSessions);
-  std::unique_ptr<WebStateImpl> unarchivedWebState1 =
-      [unarchivedObj nextSession];
-  EXPECT_EQ(1U, unarchivedObj.unclaimedSessions);
-  CRWSessionController* unarchivedSession1 =
-      unarchivedWebState1->GetNavigationManagerImpl().GetSessionController();
+  NSArray* sessions = unarchivedObj.sessions;
+  ASSERT_EQ(2U, sessions.count);
+  CRWNavigationManagerStorage* unarchivedSession1 = sessions[0];
   EXPECT_NSEQ(windowName1, unarchivedSession1.windowName);
-  EXPECT_NSEQ(openerId1, unarchivedSession1.openerId);
+  EXPECT_NSEQ(openerId1, unarchivedSession1.openerID);
   EXPECT_TRUE(unarchivedSession1.openedByDOM);
 
-  std::unique_ptr<WebStateImpl> unarchivedWebState2 =
-      [unarchivedObj nextSession];
-  EXPECT_EQ(0U, unarchivedObj.unclaimedSessions);
-
-  CRWSessionController* unarchivedSession2 =
-      unarchivedWebState2->GetNavigationManagerImpl().GetSessionController();
+  CRWNavigationManagerStorage* unarchivedSession2 = sessions[1];
   EXPECT_NSEQ(windowName2, unarchivedSession2.windowName);
-  EXPECT_NSEQ(openerId2, unarchivedSession2.openerId);
+  EXPECT_NSEQ(openerId2, unarchivedSession2.openerID);
   EXPECT_FALSE(unarchivedSession2.openedByDOM);
 }
 
diff --git a/ios/chrome/browser/tabs/tab_model.mm b/ios/chrome/browser/tabs/tab_model.mm
index abea5ee..b42dfb37 100644
--- a/ios/chrome/browser/tabs/tab_model.mm
+++ b/ios/chrome/browser/tabs/tab_model.mm
@@ -258,8 +258,10 @@
     _tabs.reset([[NSMutableArray alloc] init]);
     NSNotificationCenter* defaultCenter = [NSNotificationCenter defaultCenter];
     if (window) {
-      while (window.unclaimedSessions) {
-        std::unique_ptr<web::WebStateImpl> webState = [window nextSession];
+      web::WebState::CreateParams params(_browserState);
+      for (CRWNavigationManagerStorage* session in window.sessions) {
+        std::unique_ptr<web::WebState> webState =
+            web::WebState::Create(params, session);
         DCHECK_EQ(webState->GetBrowserState(), _browserState);
         // Restore the CertificatePolicyCache.
         UpdateCertificatePolicyCacheFromWebState(webState.get());
@@ -319,12 +321,15 @@
 - (BOOL)restoreSessionWindow:(SessionWindowIOS*)window {
   DCHECK(_browserState);
   DCHECK(window);
-  if (!window.unclaimedSessions)
+  NSArray* sessions = window.sessions;
+  if (!sessions.count)
     return NO;
   size_t oldCount = [_tabs count];
   size_t index = oldCount;
-  while (window.unclaimedSessions) {
-    std::unique_ptr<web::WebStateImpl> webState = [window nextSession];
+  web::WebState::CreateParams params(_browserState);
+  for (CRWNavigationManagerStorage* session in sessions) {
+    std::unique_ptr<web::WebState> webState =
+        web::WebState::Create(params, session);
     DCHECK_EQ(webState->GetBrowserState(), _browserState);
     Tab* tab = [self insertTabWithWebState:std::move(webState) atIndex:index++];
     tab.webController.usePlaceholderOverlay = YES;
@@ -852,13 +857,10 @@
   // TODO(crbug.com/661986): This could get expensive especially since this
   // window may never be saved (if another call comes in before the delay).
   SessionWindowIOS* window = [[[SessionWindowIOS alloc] init] autorelease];
-  for (Tab* tab in _tabs.get()) {
-    DCHECK(tab.webState);
-    // TODO(crbug.com/454984): remove that cast to web::WebStateImpl once a
-    // public serialisation mechanism is available via web::WebState.
-    std::unique_ptr<web::WebStateImpl> webStateCopy(
-        static_cast<web::WebStateImpl*>(tab.webState)->CopyForSessionWindow());
-    [window addSession:std::move(webStateCopy)];
+  for (Tab* tab in self) {
+    web::WebState* webState = tab.webState;
+    DCHECK(webState);
+    [window addSerializedSession:webState->BuildSerializedNavigationManager()];
   }
   window.selectedIndex = [self indexOfTab:_currentTab];
   return window;
diff --git a/ios/chrome/browser/tabs/tab_model_unittest.mm b/ios/chrome/browser/tabs/tab_model_unittest.mm
index e6460ba..eccd6ae 100644
--- a/ios/chrome/browser/tabs/tab_model_unittest.mm
+++ b/ios/chrome/browser/tabs/tab_model_unittest.mm
@@ -193,7 +193,8 @@
     SessionWindowIOS* window = [[SessionWindowIOS alloc] init];
     for (int i = 0; i < entries; i++) {
       NSString* windowName = [NSString stringWithFormat:@"window %d", i + 1];
-      [window addSession:CreateWebState(windowName)];
+      [window addSerializedSession:CreateWebState(windowName)
+                                       ->BuildSerializedNavigationManager()];
     }
     if (entries)
       [window setSelectedIndex:1];
diff --git a/ios/web/BUILD.gn b/ios/web/BUILD.gn
index ad7c532..b4caf9e 100644
--- a/ios/web/BUILD.gn
+++ b/ios/web/BUILD.gn
@@ -64,6 +64,8 @@
     "navigation/navigation_manager_facade_delegate.h",
     "navigation/navigation_manager_impl.h",
     "navigation/navigation_manager_impl.mm",
+    "navigation/navigation_manager_storage_builder.h",
+    "navigation/navigation_manager_storage_builder.mm",
     "navigation/nscoder_util.h",
     "navigation/nscoder_util.mm",
     "navigation/time_smoother.cc",
@@ -95,6 +97,8 @@
     "public/browser_url_rewriter.h",
     "public/cert_policy.h",
     "public/certificate_policy_cache.h",
+    "public/crw_navigation_manager_storage.h",
+    "public/crw_navigation_manager_storage.mm",
     "public/favicon_status.cc",
     "public/favicon_status.h",
     "public/favicon_url.cc",
diff --git a/ios/web/navigation/crw_session_controller.h b/ios/web/navigation/crw_session_controller.h
index 264a16a..bdfd834 100644
--- a/ios/web/navigation/crw_session_controller.h
+++ b/ios/web/navigation/crw_session_controller.h
@@ -25,7 +25,7 @@
 // DEPRECATED, do not use this class and do not add any methods to it.
 // Use web::NavigationManager instead.
 // TODO(crbug.com/454984): Remove this class.
-@interface CRWSessionController : NSObject<NSCoding, NSCopying>
+@interface CRWSessionController : NSObject<NSCopying>
 
 @property(nonatomic, readonly, copy) NSString* tabId;
 @property(nonatomic, readonly, assign) NSInteger currentNavigationIndex;
diff --git a/ios/web/navigation/crw_session_controller.mm b/ios/web/navigation/crw_session_controller.mm
index 32fd794..bc03108 100644
--- a/ios/web/navigation/crw_session_controller.mm
+++ b/ios/web/navigation/crw_session_controller.mm
@@ -32,19 +32,6 @@
 #error "This file requires ARC support."
 #endif
 
-namespace {
-NSString* const kCertificatePolicyManagerKey = @"certificatePolicyManager";
-NSString* const kCurrentNavigationIndexKey = @"currentNavigationIndex";
-NSString* const kEntriesKey = @"entries";
-NSString* const kLastVisitedTimestampKey = @"lastVisitedTimestamp";
-NSString* const kOpenerIdKey = @"openerId";
-NSString* const kOpenedByDOMKey = @"openedByDOM";
-NSString* const kOpenerNavigationIndexKey = @"openerNavigationIndex";
-NSString* const kPreviousNavigationIndexKey = @"previousNavigationIndex";
-NSString* const kTabIdKey = @"tabId";
-NSString* const kWindowNameKey = @"windowName";
-}  // namespace
-
 @interface CRWSessionController () {
   // Weak pointer back to the owning NavigationManager. This is to facilitate
   // the incremental merging of the two classes.
@@ -110,6 +97,14 @@
 @property(nonatomic, readwrite, strong)
     CRWSessionCertificatePolicyManager* sessionCertificatePolicyManager;
 
+// Expose setters for serialization properties.  These are exposed in a category
+// in NavigationManagerStorageBuilder, and will be removed as ownership of
+// their backing ivars moves to NavigationManagerImpl.
+@property(nonatomic, readwrite, copy) NSString* openerId;
+@property(nonatomic, readwrite, getter=isOpenedByDOM) BOOL openedByDOM;
+@property(nonatomic, readwrite, assign) NSInteger openerNavigationIndex;
+@property(nonatomic, readwrite, assign) NSInteger previousNavigationIndex;
+
 - (NSString*)uniqueID;
 // Removes all entries after currentNavigationIndex_.
 - (void)clearForwardEntries;
@@ -198,59 +193,6 @@
   return self;
 }
 
-- (id)initWithCoder:(NSCoder*)aDecoder {
-  self = [super init];
-  if (self) {
-    NSString* uuid = [aDecoder decodeObjectForKey:kTabIdKey];
-    if (!uuid)
-      uuid = [self uniqueID];
-
-    self.windowName = [aDecoder decodeObjectForKey:kWindowNameKey];
-    _tabId = [uuid copy];
-    _openerId = [[aDecoder decodeObjectForKey:kOpenerIdKey] copy];
-    _openedByDOM = [aDecoder decodeBoolForKey:kOpenedByDOMKey];
-    _openerNavigationIndex =
-        [aDecoder decodeIntForKey:kOpenerNavigationIndexKey];
-    _currentNavigationIndex =
-        [aDecoder decodeIntForKey:kCurrentNavigationIndexKey];
-    _previousNavigationIndex =
-        [aDecoder decodeIntForKey:kPreviousNavigationIndexKey];
-    _pendingEntryIndex = -1;
-    _lastVisitedTimestamp =
-       [aDecoder decodeDoubleForKey:kLastVisitedTimestampKey];
-    NSMutableArray* temp =
-        [NSMutableArray arrayWithArray:
-            [aDecoder decodeObjectForKey:kEntriesKey]];
-    _entries = temp;
-    // Prior to M34, 0 was used as "no index" instead of -1; adjust for that.
-    if (![_entries count])
-      _currentNavigationIndex = -1;
-    _sessionCertificatePolicyManager =
-        [aDecoder decodeObjectForKey:kCertificatePolicyManagerKey];
-    if (!_sessionCertificatePolicyManager) {
-      _sessionCertificatePolicyManager =
-          [[CRWSessionCertificatePolicyManager alloc] init];
-    }
-  }
-  return self;
-}
-
-- (void)encodeWithCoder:(NSCoder*)aCoder {
-  [aCoder encodeObject:_tabId forKey:kTabIdKey];
-  [aCoder encodeObject:_openerId forKey:kOpenerIdKey];
-  [aCoder encodeBool:_openedByDOM forKey:kOpenedByDOMKey];
-  [aCoder encodeInt:_openerNavigationIndex forKey:kOpenerNavigationIndexKey];
-  [aCoder encodeObject:_windowName forKey:kWindowNameKey];
-  [aCoder encodeInt:_currentNavigationIndex forKey:kCurrentNavigationIndexKey];
-  [aCoder encodeInt:_previousNavigationIndex
-             forKey:kPreviousNavigationIndexKey];
-  [aCoder encodeDouble:_lastVisitedTimestamp forKey:kLastVisitedTimestampKey];
-  [aCoder encodeObject:_entries forKey:kEntriesKey];
-  [aCoder encodeObject:_sessionCertificatePolicyManager
-                forKey:kCertificatePolicyManagerKey];
-  // rendererInitiated is deliberately not preserved, as upstream.
-}
-
 - (id)copyWithZone:(NSZone*)zone {
   CRWSessionController* copy = [[[self class] alloc] init];
   copy->_tabId = [_tabId copy];
diff --git a/ios/web/navigation/navigation_manager_impl.h b/ios/web/navigation/navigation_manager_impl.h
index 63479ac..33d4fbe6 100644
--- a/ios/web/navigation/navigation_manager_impl.h
+++ b/ios/web/navigation/navigation_manager_impl.h
@@ -24,15 +24,19 @@
 struct Referrer;
 class NavigationManagerDelegate;
 class NavigationManagerFacadeDelegate;
+class NavigationManagerStorageBuilder;
 
 // Implementation of NavigationManager.
 // Generally mirrors upstream's NavigationController.
 class NavigationManagerImpl : public NavigationManager {
  public:
-  NavigationManagerImpl(NavigationManagerDelegate* delegate,
-                        BrowserState* browser_state);
+  NavigationManagerImpl();
   ~NavigationManagerImpl() override;
 
+  // Setters for NavigationManagerDelegate and BrowserState.
+  void SetDelegate(NavigationManagerDelegate* delegate);
+  void SetBrowserState(BrowserState* browser_state);
+
   // Sets the CRWSessionController that backs this object.
   // Keeps a strong reference to |session_controller|.
   // This method should only be called when deserializing |session_controller|
@@ -138,6 +142,10 @@
   int GetIndexForOffset(int offset) const;
 
  private:
+  // The NavigationManagerStorageBuilder functions require access to
+  // private variables of NavigationManagerImpl.
+  friend NavigationManagerStorageBuilder;
+
   // Returns true if the PageTransition for the underlying navigation item at
   // |index| has ui::PAGE_TRANSITION_IS_REDIRECT_MASK.
   bool IsRedirectItemAtIndex(int index) const;
diff --git a/ios/web/navigation/navigation_manager_impl.mm b/ios/web/navigation/navigation_manager_impl.mm
index 6d7835c..31a3377 100644
--- a/ios/web/navigation/navigation_manager_impl.mm
+++ b/ios/web/navigation/navigation_manager_impl.mm
@@ -70,14 +70,8 @@
   return *this;
 }
 
-NavigationManagerImpl::NavigationManagerImpl(
-    NavigationManagerDelegate* delegate,
-    BrowserState* browser_state)
-    : delegate_(delegate),
-      browser_state_(browser_state),
-      facade_delegate_(nullptr) {
-  DCHECK(browser_state_);
-}
+NavigationManagerImpl::NavigationManagerImpl()
+    : delegate_(nullptr), browser_state_(nullptr), facade_delegate_(nullptr) {}
 
 NavigationManagerImpl::~NavigationManagerImpl() {
   // The facade layer should be deleted before this object.
@@ -86,6 +80,14 @@
   [session_controller_ setNavigationManager:nullptr];
 }
 
+void NavigationManagerImpl::SetDelegate(NavigationManagerDelegate* delegate) {
+  delegate_ = delegate;
+}
+
+void NavigationManagerImpl::SetBrowserState(BrowserState* browser_state) {
+  browser_state_ = browser_state;
+}
+
 void NavigationManagerImpl::SetSessionController(
     CRWSessionController* session_controller) {
   session_controller_.reset(session_controller);
diff --git a/ios/web/navigation/navigation_manager_impl_unittest.mm b/ios/web/navigation/navigation_manager_impl_unittest.mm
index 142da93..e8ca163 100644
--- a/ios/web/navigation/navigation_manager_impl_unittest.mm
+++ b/ios/web/navigation/navigation_manager_impl_unittest.mm
@@ -28,8 +28,9 @@
 // Test fixture for NavigationManagerImpl testing.
 class NavigationManagerTest : public PlatformTest {
  protected:
-  NavigationManagerTest()
-      : manager_(new NavigationManagerImpl(&delegate_, &browser_state_)) {
+  NavigationManagerTest() : manager_(new NavigationManagerImpl()) {
+    manager_->SetDelegate(&delegate_);
+    manager_->SetBrowserState(&browser_state_);
     controller_.reset([[CRWSessionController alloc]
            initWithWindowName:nil
                      openerId:nil
diff --git a/ios/web/navigation/navigation_manager_storage_builder.h b/ios/web/navigation/navigation_manager_storage_builder.h
new file mode 100644
index 0000000..09343271
--- /dev/null
+++ b/ios/web/navigation/navigation_manager_storage_builder.h
@@ -0,0 +1,29 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef IOS_WEB_NAVIGATION_SERIALIZED_NAVIGATION_MANAGER_BUILDER_H_
+#define IOS_WEB_NAVIGATION_SERIALIZED_NAVIGATION_MANAGER_BUILDER_H_
+
+#include <memory>
+
+@class CRWNavigationManagerStorage;
+
+namespace web {
+
+class NavigationManagerImpl;
+
+// Class that can serialize and deserialize NavigationManagers.
+class NavigationManagerStorageBuilder {
+ public:
+  // Creates a serialized NavigationManager from |navigation_manager|.
+  CRWNavigationManagerStorage* BuildSerialization(
+      NavigationManagerImpl* navigation_manager) const;
+  // Creates a NavigationManager from |navigation_manager_storage|.
+  std::unique_ptr<NavigationManagerImpl> BuildNavigationManagerImpl(
+      CRWNavigationManagerStorage* navigation_manager_storage) const;
+};
+
+}  // namespace web
+
+#endif  // IOS_WEB_NAVIGATION_SERIALIZED_NAVIGATION_MANAGER_BUILDER_H_
diff --git a/ios/web/navigation/navigation_manager_storage_builder.mm b/ios/web/navigation/navigation_manager_storage_builder.mm
new file mode 100644
index 0000000..78a37ed
--- /dev/null
+++ b/ios/web/navigation/navigation_manager_storage_builder.mm
@@ -0,0 +1,93 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#import "ios/web/navigation/navigation_manager_storage_builder.h"
+
+#include "base/logging.h"
+#include "base/mac/foundation_util.h"
+#import "ios/web/navigation/crw_session_controller.h"
+#import "ios/web/navigation/crw_session_entry.h"
+#include "ios/web/navigation/navigation_manager_impl.h"
+#import "ios/web/public/crw_navigation_manager_storage.h"
+
+// CRWSessionController's readonly properties redefined as readwrite.  These
+// will be removed and NavigationManagerImpl's ivars will be written directly
+// as this functionality moves from CRWSessionController to
+// NavigationManagerImpl;
+@interface CRWSessionController (ExposedForSerialization)
+@property(nonatomic, readwrite, retain) NSString* tabId;
+@property(nonatomic, readwrite, copy) NSString* openerId;
+@property(nonatomic, readwrite, getter=isOpenedByDOM) BOOL openedByDOM;
+@property(nonatomic, readwrite, assign) NSInteger openerNavigationIndex;
+@property(nonatomic, readwrite, assign) NSInteger currentNavigationIndex;
+@property(nonatomic, readwrite, assign) NSInteger previousNavigationIndex;
+@property(nonatomic, readwrite, retain) NSArray* entries;
+@property(nonatomic, readwrite, retain)
+    CRWSessionCertificatePolicyManager* sessionCertificatePolicyManager;
+@end
+
+namespace web {
+
+CRWNavigationManagerStorage*
+NavigationManagerStorageBuilder::BuildSerialization(
+    NavigationManagerImpl* navigation_manager) const {
+  DCHECK(navigation_manager);
+  CRWNavigationManagerStorage* serialized_navigation_manager =
+      [[CRWNavigationManagerStorage alloc] init];
+  CRWSessionController* session_controller =
+      navigation_manager->GetSessionController();
+  serialized_navigation_manager.tabID = session_controller.tabId;
+  serialized_navigation_manager.openerID = session_controller.openerId;
+  serialized_navigation_manager.openedByDOM = session_controller.openedByDOM;
+  serialized_navigation_manager.openerNavigationIndex =
+      session_controller.openerNavigationIndex;
+  serialized_navigation_manager.windowName = session_controller.windowName;
+  serialized_navigation_manager.currentNavigationIndex =
+      session_controller.currentNavigationIndex;
+  serialized_navigation_manager.previousNavigationIndex =
+      session_controller.previousNavigationIndex;
+  serialized_navigation_manager.lastVisitedTimestamp =
+      session_controller.lastVisitedTimestamp;
+  serialized_navigation_manager.sessionCertificatePolicyManager =
+      session_controller.sessionCertificatePolicyManager;
+  NSMutableArray* entries = [[NSMutableArray alloc] init];
+  // Perform a deep copy of the NavigationItems.
+  for (CRWSessionEntry* entry in session_controller.entries)
+    [entries addObject:[entry copy]];
+  serialized_navigation_manager.entries = entries;
+  return serialized_navigation_manager;
+}
+
+std::unique_ptr<NavigationManagerImpl>
+NavigationManagerStorageBuilder::BuildNavigationManagerImpl(
+    CRWNavigationManagerStorage* navigation_manager_serialization) const {
+  DCHECK(navigation_manager_serialization);
+  base::scoped_nsobject<CRWSessionController> session_controller(
+      [[CRWSessionController alloc] init]);
+  [session_controller setTabId:navigation_manager_serialization.tabID];
+  [session_controller setOpenerId:navigation_manager_serialization.openerID];
+  [session_controller
+      setOpenedByDOM:navigation_manager_serialization.openedByDOM];
+  [session_controller setOpenerNavigationIndex:navigation_manager_serialization
+                                                   .openerNavigationIndex];
+  [session_controller
+      setWindowName:navigation_manager_serialization.windowName];
+  [session_controller setCurrentNavigationIndex:navigation_manager_serialization
+                                                    .currentNavigationIndex];
+  [session_controller
+      setPreviousNavigationIndex:navigation_manager_serialization
+                                     .previousNavigationIndex];
+  [session_controller setLastVisitedTimestamp:navigation_manager_serialization
+                                                  .lastVisitedTimestamp];
+  [session_controller setEntries:navigation_manager_serialization.entries];
+  [session_controller
+      setSessionCertificatePolicyManager:navigation_manager_serialization
+                                             .sessionCertificatePolicyManager];
+  std::unique_ptr<NavigationManagerImpl> navigation_manager(
+      new NavigationManagerImpl());
+  navigation_manager->SetSessionController(session_controller);
+  return navigation_manager;
+}
+
+}  // namespace web
diff --git a/ios/web/net/crw_ssl_status_updater_unittest.mm b/ios/web/net/crw_ssl_status_updater_unittest.mm
index ce4128f..4ff2328 100644
--- a/ios/web/net/crw_ssl_status_updater_unittest.mm
+++ b/ios/web/net/crw_ssl_status_updater_unittest.mm
@@ -80,7 +80,8 @@
     delegate_.reset([[OCMockObject
         mockForProtocol:@protocol(CRWSSLStatusUpdaterDelegate)] retain]);
 
-    nav_manager_.reset(new NavigationManagerImpl(nullptr, GetBrowserState()));
+    nav_manager_.reset(new NavigationManagerImpl());
+    nav_manager_->SetBrowserState(GetBrowserState());
 
     ssl_status_updater_.reset([[CRWSSLStatusUpdater alloc]
         initWithDataSource:data_source_
diff --git a/ios/web/public/crw_navigation_manager_storage.h b/ios/web/public/crw_navigation_manager_storage.h
new file mode 100644
index 0000000..d1425d7
--- /dev/null
+++ b/ios/web/public/crw_navigation_manager_storage.h
@@ -0,0 +1,35 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef IOS_WEB_PUBLIC_CRW_NAVIGATION_MANAGER_STORAGE_H_
+#define IOS_WEB_PUBLIC_CRW_NAVIGATION_MANAGER_STORAGE_H_
+
+#import <Foundation/Foundation.h>
+
+@class CRWSessionCertificatePolicyManager;
+
+// NSCoding-compliant class used to serialize NavigationManager's persisted
+// properties.
+// TODO(crbug.com/685388): Investigate using code from the sessions component.
+@interface CRWNavigationManagerStorage : NSObject<NSCoding>
+
+@property(nonatomic, copy) NSString* tabID;
+@property(nonatomic, copy) NSString* openerID;
+@property(nonatomic, getter=isOpenedByDOM) BOOL openedByDOM;
+@property(nonatomic, assign) NSInteger openerNavigationIndex;
+@property(nonatomic, copy) NSString* windowName;
+@property(nonatomic, assign) NSInteger currentNavigationIndex;
+@property(nonatomic, assign) NSInteger previousNavigationIndex;
+@property(nonatomic, assign) NSTimeInterval lastVisitedTimestamp;
+// TODO(crbug.com/454984): |entries| currently contains CRWSessionEntries.  Once
+// NavigationItemImpls are encoded/decoded using CRWNavigationItemSerializations
+// (analogous to the approach taken with NavigationManager), this will
+// become an array of CRWNavigationItemSerializations.
+@property(nonatomic, copy) NSArray* entries;
+@property(nonatomic, retain)
+    CRWSessionCertificatePolicyManager* sessionCertificatePolicyManager;
+
+@end
+
+#endif  // IOS_WEB_PUBLIC_CRW_NAVIGATION_MANAGER_STORAGE_H_
diff --git a/ios/web/public/crw_navigation_manager_storage.mm b/ios/web/public/crw_navigation_manager_storage.mm
new file mode 100644
index 0000000..18fce13
--- /dev/null
+++ b/ios/web/public/crw_navigation_manager_storage.mm
@@ -0,0 +1,88 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#import "ios/web/public/crw_navigation_manager_storage.h"
+
+#import "ios/web/navigation/crw_session_certificate_policy_manager.h"
+
+#if !defined(__has_feature) || !__has_feature(objc_arc)
+#error "This file requires ARC support."
+#endif
+
+namespace {
+// Serialization keys used in NSCoding functions.
+NSString* const kCertificatePolicyManagerKey = @"certificatePolicyManager";
+NSString* const kCurrentNavigationIndexKey = @"currentNavigationIndex";
+NSString* const kEntriesKey = @"entries";
+NSString* const kLastVisitedTimestampKey = @"lastVisitedTimestamp";
+NSString* const kOpenerIDKey = @"openerId";
+NSString* const kOpenedByDOMKey = @"openedByDOM";
+NSString* const kOpenerNavigationIndexKey = @"openerNavigationIndex";
+NSString* const kPreviousNavigationIndexKey = @"previousNavigationIndex";
+NSString* const kTabIDKey = @"tabId";
+NSString* const kWindowNameKey = @"windowName";
+}
+
+@implementation CRWNavigationManagerStorage
+
+@synthesize tabID = _tabID;
+@synthesize openerID = _openerID;
+@synthesize openedByDOM = _openedByDOM;
+@synthesize openerNavigationIndex = _openerNavigationIndex;
+@synthesize windowName = _windowName;
+@synthesize currentNavigationIndex = _currentNavigationIndex;
+@synthesize previousNavigationIndex = _previousNavigationIndex;
+@synthesize lastVisitedTimestamp = _lastVisitedTimestamp;
+@synthesize entries = _entries;
+@synthesize sessionCertificatePolicyManager = _sessionCertificatePolicyManager;
+
+- (instancetype)initWithCoder:(nonnull NSCoder*)decoder {
+  self = [super init];
+  if (self) {
+    _tabID = [[decoder decodeObjectForKey:kTabIDKey] copy];
+    _windowName = [[decoder decodeObjectForKey:kWindowNameKey] copy];
+    _openerID = [[decoder decodeObjectForKey:kOpenerIDKey] copy];
+    _openedByDOM = [decoder decodeBoolForKey:kOpenedByDOMKey];
+    _openerNavigationIndex =
+        [decoder decodeIntForKey:kOpenerNavigationIndexKey];
+    _currentNavigationIndex =
+        [decoder decodeIntForKey:kCurrentNavigationIndexKey];
+    _previousNavigationIndex =
+        [decoder decodeIntForKey:kPreviousNavigationIndexKey];
+    _lastVisitedTimestamp =
+        [decoder decodeDoubleForKey:kLastVisitedTimestampKey];
+    _entries = [[NSMutableArray alloc]
+        initWithArray:[decoder decodeObjectForKey:kEntriesKey]];
+    // Prior to M34, 0 was used as "no index" instead of -1; adjust for that.
+    if (!_entries.count)
+      _currentNavigationIndex = -1;
+    _sessionCertificatePolicyManager =
+        [decoder decodeObjectForKey:kCertificatePolicyManagerKey];
+    if (!_sessionCertificatePolicyManager) {
+      _sessionCertificatePolicyManager =
+          [[CRWSessionCertificatePolicyManager alloc] init];
+    }
+  }
+  return self;
+}
+
+- (void)encodeWithCoder:(NSCoder*)coder {
+  [coder encodeObject:self.tabID forKey:kTabIDKey];
+  [coder encodeObject:self.openerID forKey:kOpenerIDKey];
+  [coder encodeBool:self.openedByDOM forKey:kOpenedByDOMKey];
+  [coder encodeInt:self.openerNavigationIndex forKey:kOpenerNavigationIndexKey];
+  [coder encodeObject:self.windowName forKey:kWindowNameKey];
+  [coder encodeInt:self.currentNavigationIndex
+            forKey:kCurrentNavigationIndexKey];
+  [coder encodeInt:self.previousNavigationIndex
+            forKey:kPreviousNavigationIndexKey];
+  [coder encodeDouble:self.lastVisitedTimestamp
+               forKey:kLastVisitedTimestampKey];
+  [coder encodeObject:self.entries forKey:kEntriesKey];
+  [coder encodeObject:self.sessionCertificatePolicyManager
+               forKey:kCertificatePolicyManagerKey];
+  // rendererInitiated is deliberately not preserved, as upstream.
+}
+
+@end
diff --git a/ios/web/public/test/fakes/test_web_state.h b/ios/web/public/test/fakes/test_web_state.h
index 63003a39..071b6f7 100644
--- a/ios/web/public/test/fakes/test_web_state.h
+++ b/ios/web/public/test/fakes/test_web_state.h
@@ -38,6 +38,7 @@
   void Stop() override {}
   const NavigationManager* GetNavigationManager() const override;
   NavigationManager* GetNavigationManager() override;
+  CRWNavigationManagerStorage* BuildSerializedNavigationManager() override;
   CRWJSInjectionReceiver* GetJSInjectionReceiver() const override;
   void ExecuteJavaScript(const base::string16& javascript) override;
   void ExecuteJavaScript(const base::string16& javascript,
diff --git a/ios/web/public/test/fakes/test_web_state.mm b/ios/web/public/test/fakes/test_web_state.mm
index 8114e41..9b821db7 100644
--- a/ios/web/public/test/fakes/test_web_state.mm
+++ b/ios/web/public/test/fakes/test_web_state.mm
@@ -68,6 +68,10 @@
   return navigation_manager_.get();
 }
 
+CRWNavigationManagerStorage* TestWebState::BuildSerializedNavigationManager() {
+  return nil;
+}
+
 void TestWebState::SetNavigationManager(
     std::unique_ptr<NavigationManager> navigation_manager) {
   navigation_manager_ = std::move(navigation_manager);
diff --git a/ios/web/public/web_state/web_state.h b/ios/web/public/web_state/web_state.h
index cb31708..75f6e79 100644
--- a/ios/web/public/web_state/web_state.h
+++ b/ios/web/public/web_state/web_state.h
@@ -24,6 +24,7 @@
 class SkBitmap;
 
 @class CRWJSInjectionReceiver;
+@class CRWNavigationManagerStorage;
 @protocol CRWScrollableContent;
 @protocol CRWWebViewProxy;
 typedef id<CRWWebViewProxy> CRWWebViewProxyType;
@@ -98,6 +99,10 @@
 
   // Creates a new WebState.
   static std::unique_ptr<WebState> Create(const CreateParams& params);
+  // Creates a new WebState from a serialized NavigationManager.
+  static std::unique_ptr<WebState> Create(
+      const CreateParams& params,
+      CRWNavigationManagerStorage* session_storage);
 
   ~WebState() override {}
 
@@ -135,6 +140,10 @@
   virtual const NavigationManager* GetNavigationManager() const = 0;
   virtual NavigationManager* GetNavigationManager() = 0;
 
+  // Creates a serialized version of the NavigationManager. The returned value
+  // is autoreleased.
+  virtual CRWNavigationManagerStorage* BuildSerializedNavigationManager() = 0;
+
   // Gets the CRWJSInjectionReceiver associated with this WebState.
   virtual CRWJSInjectionReceiver* GetJSInjectionReceiver() const = 0;
 
diff --git a/ios/web/web_state/web_state_impl.h b/ios/web/web_state/web_state_impl.h
index 2e6d0d3..5fb1dc206 100644
--- a/ios/web/web_state/web_state_impl.h
+++ b/ios/web/web_state/web_state_impl.h
@@ -25,6 +25,7 @@
 #import "ios/web/public/web_state/web_state_delegate.h"
 #include "url/gurl.h"
 
+@class CRWNavigationManagerStorage;
 @class CRWWebController;
 @protocol CRWWebViewProxy;
 @class NSURLRequest;
@@ -62,7 +63,11 @@
 //    writing them out for session saves.
 class WebStateImpl : public WebState, public NavigationManagerDelegate {
  public:
+  // Constructor for WebStateImpls created for new sessions.
   WebStateImpl(BrowserState* browser_state);
+  // Constructor for WebStatesImpls created for deserialized sessions
+  WebStateImpl(BrowserState* browser_state,
+               CRWNavigationManagerStorage* session_storage);
   ~WebStateImpl() override;
 
   // Gets/Sets the CRWWebController that backs this object.
@@ -73,13 +78,6 @@
   WebStateFacadeDelegate* GetFacadeDelegate() const;
   void SetFacadeDelegate(WebStateFacadeDelegate* facade_delegate);
 
-  // Returns a WebStateImpl that doesn't have a browser context, web
-  // controller, or facade set, but which otherwise has the same state variables
-  // as the calling object (including copies of the NavigationManager and its
-  // attendant CRWSessionController).
-  // TODO(crbug.com/546377): Clean up this method.
-  WebStateImpl* CopyForSessionWindow();
-
   // Notifies the observers that a provisional navigation has started.
   void OnProvisionalNavigationStarted(const GURL& url);
 
@@ -206,6 +204,7 @@
   void Stop() override;
   const NavigationManager* GetNavigationManager() const override;
   NavigationManager* GetNavigationManager() override;
+  CRWNavigationManagerStorage* BuildSerializedNavigationManager() override;
   CRWJSInjectionReceiver* GetJSInjectionReceiver() const override;
   void ExecuteJavaScript(const base::string16& javascript) override;
   void ExecuteJavaScript(const base::string16& javascript,
@@ -309,7 +308,8 @@
   // The CRWWebController that backs this object.
   base::scoped_nsobject<CRWWebController> web_controller_;
 
-  NavigationManagerImpl navigation_manager_;
+  // The NavigationManagerImpl that stores session info for this WebStateImpl.
+  std::unique_ptr<NavigationManagerImpl> navigation_manager_;
 
   // |web::WebUIIOS| object for the current page if it is a WebUI page that
   // uses the web-based WebUI framework, or nullptr otherwise.
diff --git a/ios/web/web_state/web_state_impl.mm b/ios/web/web_state/web_state_impl.mm
index 7c0d609..24069a92 100644
--- a/ios/web/web_state/web_state_impl.mm
+++ b/ios/web/web_state/web_state_impl.mm
@@ -15,7 +15,9 @@
 #import "ios/web/navigation/crw_session_controller.h"
 #import "ios/web/navigation/crw_session_entry.h"
 #import "ios/web/navigation/navigation_item_impl.h"
+#import "ios/web/navigation/navigation_manager_storage_builder.h"
 #include "ios/web/public/browser_state.h"
+#import "ios/web/public/crw_navigation_manager_storage.h"
 #import "ios/web/public/image_fetcher/image_data_fetcher.h"
 #import "ios/web/public/java_script_dialog_presenter.h"
 #import "ios/web/public/navigation_item.h"
@@ -49,6 +51,7 @@
   std::unique_ptr<WebStateImpl> web_state(
       new WebStateImpl(params.browser_state));
 
+  // Initialized the new session.
   NSString* window_name = nil;
   NSString* opener_id = nil;
   BOOL opened_by_dom = NO;
@@ -62,17 +65,45 @@
   return std::move(web_state);
 }
 
+/* static */
+std::unique_ptr<WebState> WebState::Create(
+    const CreateParams& params,
+    CRWNavigationManagerStorage* session_storage) {
+  std::unique_ptr<WebStateImpl> web_state(
+      new WebStateImpl(params.browser_state, session_storage));
+
+  // This std::move is required to compile with the version of clang shipping
+  // with Xcode 8.0+. Evalute whether the issue is fixed once a new version of
+  // Xcode is released.
+  return std::move(web_state);
+}
+
 WebStateImpl::WebStateImpl(BrowserState* browser_state)
+    : WebStateImpl(browser_state, nullptr) {}
+
+WebStateImpl::WebStateImpl(BrowserState* browser_state,
+                           CRWNavigationManagerStorage* session_storage)
     : delegate_(nullptr),
       is_loading_(false),
       is_being_destroyed_(false),
       facade_delegate_(nullptr),
       web_controller_(nil),
-      navigation_manager_(this, browser_state),
       interstitial_(nullptr),
       weak_factory_(this) {
+  // Create or deserialize the NavigationManager.
+  if (session_storage) {
+    NavigationManagerStorageBuilder session_storage_builder;
+    navigation_manager_ =
+        session_storage_builder.BuildNavigationManagerImpl(session_storage);
+  } else {
+    navigation_manager_.reset(new NavigationManagerImpl());
+  }
+  navigation_manager_->SetDelegate(this);
+  navigation_manager_->SetBrowserState(browser_state);
+  // Send creation event and create the web controller.
   GlobalWebStateEventTracker::GetInstance()->OnWebStateCreated(this);
   web_controller_.reset([[CRWWebController alloc] initWithWebState:this]);
+  // Set up the image fetcher.
   image_fetcher_ =
       base::MakeUnique<ImageDataFetcher>(web::WebThread::GetBlockingPool());
   image_fetcher_->SetRequestContextGetter(browser_state->GetRequestContext());
@@ -164,12 +195,6 @@
   facade_delegate_ = facade_delegate;
 }
 
-WebStateImpl* WebStateImpl::CopyForSessionWindow() {
-  WebStateImpl* copy = new WebStateImpl(GetBrowserState());
-  copy->GetNavigationManagerImpl().CopyState(&navigation_manager_);
-  return copy;
-}
-
 void WebStateImpl::OnNavigationCommitted(const GURL& url) {
   UpdateHttpResponseHeaders(url);
 }
@@ -310,11 +335,11 @@
 }
 
 NavigationManagerImpl& WebStateImpl::GetNavigationManagerImpl() {
-  return navigation_manager_;
+  return *navigation_manager_;
 }
 
 const NavigationManagerImpl& WebStateImpl::GetNavigationManagerImpl() const {
-  return navigation_manager_;
+  return *navigation_manager_;
 }
 
 void WebStateImpl::CreateWebUI(const GURL& url) {
@@ -346,7 +371,7 @@
   // TODO(stuartmorgan): Implement the NavigationManager logic necessary to
   // match the WebContents implementation of this method.
   DCHECK(Configured());
-  web::NavigationItem* item = navigation_manager_.GetLastCommittedItem();
+  web::NavigationItem* item = navigation_manager_->GetLastCommittedItem();
   return item ? item->GetTitleForDisplay() : empty_string16_;
 }
 
@@ -605,7 +630,7 @@
 }
 
 BrowserState* WebStateImpl::GetBrowserState() const {
-  return navigation_manager_.GetBrowserState();
+  return navigation_manager_->GetBrowserState();
 }
 
 void WebStateImpl::OpenURL(const WebState::OpenURLParams& params) {
@@ -627,6 +652,11 @@
   return &GetNavigationManagerImpl();
 }
 
+CRWNavigationManagerStorage* WebStateImpl::BuildSerializedNavigationManager() {
+  NavigationManagerStorageBuilder session_storage_builder;
+  return session_storage_builder.BuildSerialization(navigation_manager_.get());
+}
+
 CRWJSInjectionReceiver* WebStateImpl::GetJSInjectionReceiver() const {
   return [web_controller_ jsInjectionReceiver];
 }
@@ -664,12 +694,12 @@
 }
 
 const GURL& WebStateImpl::GetVisibleURL() const {
-  web::NavigationItem* item = navigation_manager_.GetVisibleItem();
+  web::NavigationItem* item = navigation_manager_->GetVisibleItem();
   return item ? item->GetVirtualURL() : GURL::EmptyGURL();
 }
 
 const GURL& WebStateImpl::GetLastCommittedURL() const {
-  web::NavigationItem* item = navigation_manager_.GetLastCommittedItem();
+  web::NavigationItem* item = navigation_manager_->GetLastCommittedItem();
   return item ? item->GetVirtualURL() : GURL::EmptyGURL();
 }
 
diff --git a/mojo/edk/system/node_controller.cc b/mojo/edk/system/node_controller.cc
index 25a7c87..cafd604d 100644
--- a/mojo/edk/system/node_controller.cc
+++ b/mojo/edk/system/node_controller.cc
@@ -755,11 +755,15 @@
     CHECK_LE(num_messages_accepted, kMaxAcceptedMessages);
   }
 
-  UMA_HISTOGRAM_CUSTOM_COUNTS("Mojo.System.MessagesAcceptedPerEvent",
-                              static_cast<int32_t>(num_messages_accepted),
-                              1 /* min */,
-                              500 /* max */,
-                              50 /* bucket count */);
+  if (num_messages_accepted >= 4) {
+    // Note: We avoid logging this histogram for the vast majority of cases.
+    // See https://crbug.com/685763 for more context.
+    UMA_HISTOGRAM_CUSTOM_COUNTS("Mojo.System.MessagesAcceptedPerEvent",
+                                static_cast<int32_t>(num_messages_accepted),
+                                1 /* min */,
+                                500 /* max */,
+                                50 /* bucket count */);
+  }
 
   AttemptShutdownIfRequested();
 }
diff --git a/net/BUILD.gn b/net/BUILD.gn
index 218d34b..3c5309ae 100644
--- a/net/BUILD.gn
+++ b/net/BUILD.gn
@@ -349,6 +349,7 @@
     ":net_resources",
     "//base",
     "//net/base/registry_controlled_domains",
+    "//net/data/ssl/wosign:wosign_domains",
     "//third_party/protobuf:protobuf_lite",
     "//url:url_features",
   ]
@@ -4724,6 +4725,7 @@
   defines = []
 
   deps = [
+    ":cert_verify_proc_whitelist_unittest_data",
     ":net",
     ":simple_quic_tools",
     ":test_support",
@@ -5144,6 +5146,21 @@
   }
 }
 
+action_foreach("cert_verify_proc_whitelist_unittest_data") {
+  script = "//net/tools/dafsa/make_dafsa.py"
+  sources = [
+    "//net/cert/cert_verify_proc_whitelist_unittest1.gperf",
+  ]
+  outputs = [
+    "${target_gen_dir}/cert/{{source_name_part}}-inc.cc",
+  ]
+  args = [
+    "{{source}}",
+    rebase_path("${target_gen_dir}/cert/{{source_name_part}}-inc.cc",
+                root_build_dir),
+  ]
+}
+
 # Fuzzers
 
 # This has a global (InitGlobals) that must always be linked in, so
diff --git a/net/cert/cert_verify_proc.cc b/net/cert/cert_verify_proc.cc
index a20ee3f..d946256 100644
--- a/net/cert/cert_verify_proc.cc
+++ b/net/cert/cert_verify_proc.cc
@@ -513,7 +513,7 @@
   }
 
   if (IsNonWhitelistedCertificate(*verify_result->verified_cert,
-                                  verify_result->public_key_hashes)) {
+                                  verify_result->public_key_hashes, hostname)) {
     verify_result->cert_status |= CERT_STATUS_AUTHORITY_INVALID;
     rv = MapCertStatusToNetError(verify_result->cert_status);
   }
diff --git a/net/cert/cert_verify_proc_whitelist.cc b/net/cert/cert_verify_proc_whitelist.cc
index 53489ff..2ba4166 100644
--- a/net/cert/cert_verify_proc_whitelist.cc
+++ b/net/cert/cert_verify_proc_whitelist.cc
@@ -6,6 +6,7 @@
 
 #include <cstdlib>
 
+#include "net/base/lookup_string_in_fixed_set.h"
 #include "net/cert/x509_certificate.h"
 
 namespace net {
@@ -55,27 +56,74 @@
   return memcmp(search_key->data(), element, search_key->size());
 }
 
+namespace wosign {
+#include "net/data/ssl/wosign/wosign_domains-inc.cc"
+}  // namespace
+
 }  // namespace
 
 bool IsNonWhitelistedCertificate(const X509Certificate& cert,
-                                 const HashValueVector& public_key_hashes) {
-  // 2016-10-21 00:00:00 UTC
-  const base::Time last_wosign_cert =
-      base::Time::UnixEpoch() + base::TimeDelta::FromSeconds(1477008000);
-
+                                 const HashValueVector& public_key_hashes,
+                                 base::StringPiece hostname) {
   for (const auto& hash : public_key_hashes) {
     if (hash.tag != HASH_VALUE_SHA256)
       continue;
 
     // Check for WoSign/StartCom certificates.
     if (bsearch(&hash, kWosignKeys, arraysize(kWosignKeys),
-                crypto::kSHA256Length, CompareHashValueToRawHash) != nullptr &&
-        (cert.valid_start().is_null() || cert.valid_start().is_max() ||
-         cert.valid_start() > last_wosign_cert)) {
-      return true;
+                crypto::kSHA256Length, CompareHashValueToRawHash) != nullptr) {
+      // 2016-10-21 00:00:00 UTC
+      const base::Time last_wosign_cert =
+          base::Time::UnixEpoch() + base::TimeDelta::FromSeconds(1477008000);
+
+      // Don't allow new certificates.
+      if (cert.valid_start().is_null() || cert.valid_start().is_max() ||
+          cert.valid_start() > last_wosign_cert) {
+        return true;
+      }
+
+      // Don't allow certificates from non-whitelisted hosts.
+      return !IsWhitelistedHost(wosign::kDafsa, arraysize(wosign::kDafsa),
+                                hostname);
     }
   }
   return false;
 }
 
+bool IsWhitelistedHost(const unsigned char* graph,
+                       size_t graph_length,
+                       base::StringPiece host) {
+  if (host.empty())
+    return false;
+
+  size_t end = host.length();
+
+  // Skip trailing '.', if any.
+  if (host[end - 1] == '.') {
+    --end;
+  }
+
+  // Reverse through each of the domain components, trying to see if the
+  // domain is on the whitelist. For example, the string
+  // "www.domain.example.com" would be processed by first searching
+  // for "com", then "example.com", then "domain.example.com". The
+  // loop will terminate when there are no more distinct label separators,
+  // and thus the final check for "www.domain.example.com".
+  size_t start = end;
+  while (start != 0 &&
+         (start = host.rfind('.', start - 1)) != base::StringPiece::npos) {
+    const char* domain_str = host.data() + start + 1;
+    size_t domain_length = end - start - 1;
+    if (domain_length == 0)
+      return false;
+    if (LookupStringInFixedSet(graph, graph_length, domain_str,
+                               domain_length) != kDafsaNotFound) {
+      return true;
+    }
+  }
+
+  return LookupStringInFixedSet(graph, graph_length, host.data(), end) !=
+         kDafsaNotFound;
+}
+
 }  // namespace net
diff --git a/net/cert/cert_verify_proc_whitelist.h b/net/cert/cert_verify_proc_whitelist.h
index 6456320..2c7dfd5 100644
--- a/net/cert/cert_verify_proc_whitelist.h
+++ b/net/cert/cert_verify_proc_whitelist.h
@@ -8,6 +8,7 @@
 #include <stddef.h>
 #include <stdint.h>
 
+#include "base/strings/string_piece.h"
 #include "crypto/sha2.h"
 #include "net/base/hash_value.h"
 #include "net/base/net_export.h"
@@ -22,10 +23,19 @@
 // unconstrained CA or if it was in the whitelist for that
 // CA.
 // |cert| should be the verified certificate chain, with |public_key_hashes|
-// being the set of hashes of the SPKIs within the verified chain.
+// being the set of hashes of the SPKIs within the verified chain, and
+// |hostname| as the GURL-normalized hostname.
 bool NET_EXPORT_PRIVATE
 IsNonWhitelistedCertificate(const X509Certificate& cert,
-                            const HashValueVector& public_key_hashes);
+                            const HashValueVector& public_key_hashes,
+                            base::StringPiece hostname);
+
+// Returns true if |host| is in (or a subdomain of) a whitelisted host
+// in |graph|, which is a DAFSA constructed by
+// //net/tools/dafsa/make_dafsa.py that is |graph_length| bytes long.
+bool NET_EXPORT_PRIVATE IsWhitelistedHost(const unsigned char* graph,
+                                          size_t graph_length,
+                                          base::StringPiece host);
 
 }  // namespace net
 
diff --git a/net/cert/cert_verify_proc_whitelist_unittest.cc b/net/cert/cert_verify_proc_whitelist_unittest.cc
index 2732035..1ad6a1c 100644
--- a/net/cert/cert_verify_proc_whitelist_unittest.cc
+++ b/net/cert/cert_verify_proc_whitelist_unittest.cc
@@ -14,7 +14,16 @@
 
 namespace {
 
+namespace test1 {
+#include "net/cert/cert_verify_proc_whitelist_unittest1-inc.cc"
+}  // namespace test
+
 TEST(CertVerifyProcWhitelistTest, HandlesWosignCerts) {
+  // The domain must be in the whitelist from
+  // //net/data/ssl/wosign/wosign_domains.gperf
+  const char kWhitelistedDomain[] = "005.tv";
+  const char kNonWhitelistedDomain[] = "006.tv";
+
   scoped_refptr<X509Certificate> cert =
       ImportCertFromFile(GetTestCertsDirectory(), "wosign_before_oct_21.pem");
   ASSERT_TRUE(cert);
@@ -25,12 +34,68 @@
        0x95, 0xa5, 0x99, 0x68, 0xce, 0xf2, 0x34, 0x77, 0x37, 0x79, 0xdf,
        0x51, 0x81, 0xcf, 0x10, 0xfa, 0x64, 0x75, 0x34, 0xbb, 0x65}});
 
-  EXPECT_FALSE(IsNonWhitelistedCertificate(*cert, public_key_hashes));
+  // Domains on the whitelist are allowed, as long as their certificates were
+  // pre-existing before Oct 21, 2016.
+  EXPECT_FALSE(IsNonWhitelistedCertificate(*cert, public_key_hashes,
+                                           kWhitelistedDomain));
+  // Domains not on the whitelist are not allowed, regardless of the validity
+  // period of the certificate.
+  EXPECT_TRUE(IsNonWhitelistedCertificate(*cert, public_key_hashes,
+                                          kNonWhitelistedDomain));
 
   cert = ImportCertFromFile(GetTestCertsDirectory(), "wosign_after_oct_21.pem");
   ASSERT_TRUE(cert);
 
-  EXPECT_TRUE(IsNonWhitelistedCertificate(*cert, public_key_hashes));
+  // No new certificates (after Oct 21, 2016) are all allowed, regardless
+  // of the domain.
+  EXPECT_TRUE(IsNonWhitelistedCertificate(*cert, public_key_hashes,
+                                          kWhitelistedDomain));
+  EXPECT_TRUE(IsNonWhitelistedCertificate(*cert, public_key_hashes,
+                                          kNonWhitelistedDomain));
+
+  // Certificates that aren't issued by WoSign are allowed, regardless of
+  // domain.
+  public_key_hashes[0].data()[0] = 0x14;
+  EXPECT_FALSE(IsNonWhitelistedCertificate(*cert, public_key_hashes,
+                                           kWhitelistedDomain));
+  EXPECT_FALSE(IsNonWhitelistedCertificate(*cert, public_key_hashes,
+                                           kNonWhitelistedDomain));
+}
+
+TEST(CertVerifyProcWhitelistTest, IsWhitelistedHost) {
+  const unsigned char* graph = test1::kDafsa;
+  size_t graph_size = arraysize(test1::kDafsa);
+
+  // Test malformed inputs.
+  EXPECT_FALSE(IsWhitelistedHost(graph, graph_size, ""));
+  EXPECT_FALSE(IsWhitelistedHost(graph, graph_size, "."));
+  EXPECT_FALSE(IsWhitelistedHost(graph, graph_size, ".."));
+
+  // Make sure that TLDs aren't accepted just because a subdomain is.
+  EXPECT_FALSE(IsWhitelistedHost(graph, graph_size, "com"));
+
+  // Test various forms of domain names that GURL will accept for entries in
+  // the graph.
+  EXPECT_TRUE(IsWhitelistedHost(graph, graph_size, "example.com"));
+  EXPECT_TRUE(IsWhitelistedHost(graph, graph_size, "subdomain.example.com"));
+  EXPECT_TRUE(IsWhitelistedHost(graph, graph_size, ".subdomain.example.com"));
+  EXPECT_TRUE(IsWhitelistedHost(graph, graph_size, "example.com."));
+  EXPECT_TRUE(IsWhitelistedHost(graph, graph_size, ".example.com."));
+  EXPECT_TRUE(IsWhitelistedHost(graph, graph_size, "www.example.bar.jp"));
+
+  // Test various prefix/suffices of entries in the graph, but that aren't
+  // themselves domain matches.
+  EXPECT_FALSE(IsWhitelistedHost(graph, graph_size, "anotherexample.com"));
+  EXPECT_FALSE(IsWhitelistedHost(graph, graph_size, "bar.jp"));
+  EXPECT_FALSE(IsWhitelistedHost(graph, graph_size, "example.bar.jp.junk"));
+  EXPECT_FALSE(IsWhitelistedHost(graph, graph_size, "foo.example.bar.jp.junk"));
+
+  // Test various forms of domain names that GURL will accept for entries not
+  // in the graph.
+  EXPECT_FALSE(IsWhitelistedHost(graph, graph_size, "domain.com"));
+  EXPECT_FALSE(IsWhitelistedHost(graph, graph_size, "example..com"));
+  EXPECT_FALSE(IsWhitelistedHost(graph, graph_size, "www.co.uk"));
+  EXPECT_FALSE(IsWhitelistedHost(graph, graph_size, "www..co.uk"));
 }
 
 }  // namespace
diff --git a/net/cert/cert_verify_proc_whitelist_unittest1.gperf b/net/cert/cert_verify_proc_whitelist_unittest1.gperf
new file mode 100644
index 0000000..cfe582a
--- /dev/null
+++ b/net/cert/cert_verify_proc_whitelist_unittest1.gperf
@@ -0,0 +1,9 @@
+%{
+// Copyright (c) 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+%}
+%%
+example.com, 0
+example.bar.jp, 0
+%%
diff --git a/net/data/ssl/wosign/BUILD.gn b/net/data/ssl/wosign/BUILD.gn
new file mode 100644
index 0000000..90d9e986
--- /dev/null
+++ b/net/data/ssl/wosign/BUILD.gn
@@ -0,0 +1,18 @@
+# Copyright (c) 2017 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+action_foreach("wosign_domains") {
+  script = "//net/tools/dafsa/make_dafsa.py"
+  sources = [
+    "wosign_domains.gperf",
+  ]
+  outputs = [
+    "${target_gen_dir}/{{source_name_part}}-inc.cc",
+  ]
+  args = [
+    "{{source}}",
+    rebase_path("${target_gen_dir}/{{source_name_part}}-inc.cc",
+                root_build_dir),
+  ]
+}
diff --git a/net/data/ssl/wosign/wosign_domains.gperf b/net/data/ssl/wosign/wosign_domains.gperf
new file mode 100644
index 0000000..88b2ee3
--- /dev/null
+++ b/net/data/ssl/wosign/wosign_domains.gperf
@@ -0,0 +1,16759 @@
+%{
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// This file contains the set of domains that were issued certificates by
+// WoSign and StartCom-branded CAs and were logged before
+// 2016-10-21 00:00:00 UTC. This list only contains those domains whose
+// certificates were not revoked as of 2016-12-31 and which appear within
+// the Alexa Top 1M dataset as of 2016-12-28.
+%}
+%%
+005.tv, 0
+010100100000.com, 0
+0101shop.com, 0
+01788.net, 0
+01game.com, 0
+01teacher.com, 0
+020leader.com, 0
+02cq.com, 0
+0318ol.com, 0
+0513c.com, 0
+0514soft.com, 0
+05506.com, 0
+0577hr.com, 0
+05.ru, 0
+06681.com, 0
+0678life.com, 0
+07073.com, 0
+0762jr.com, 0
+07zr.com, 0
+0800net.com.br, 0
+0951job.com, 0
+098.pl, 0
+0fees.us, 0
+0web.ir, 0
+10000.com, 0
+10000link.com, 0
+1000bankov.ru, 0
+1000bazi.com, 0
+1000lela.com, 0
+1000pokupok.com, 0
+1000ukg.kz, 0
+10010.org, 0
+10044.cn, 0
+100500miles.ru, 0
+10086.cn, 0
+1008.cn, 0
+100bt.com, 0
+100e.com, 0
+100hub.com, 0
+100-k-1.ru, 0
+100k.net.ua, 0
+100kuskov.ru, 0
+100megabit.ru, 0
+100msh.com, 0
+100steps.net, 0
+100vkusov.ru, 0
+100xuexi.com, 0
+10101111.com, 0
+10155.com, 0
+101.com, 0
+101hr.com, 0
+101ka.com, 0
+101sauna.ru, 0
+101widgets.com, 0
+10333.com, 0
+10brandchina.com, 0
+10gigabit.net, 0
+10to8.com, 0
+110.com, 0
+110disk.net, 0
+11185.cn, 0
+111.com.cn, 0
+11315.com, 0
+115.com, 0
+117o.com, 0
+1-1ads.com, 0
+1-1.su, 0
+11x11.ru, 0
+120na80.cz, 0
+120x.net, 0
+121mai.com, 0
+12301.cn, 0
+123aprende.com, 0
+123.com.cn, 0
+123hjemmeside.dk, 0
+123mov.net, 0
+124zhe.com, 0
+12580.tv, 0
+12582.cn, 0
+125.la, 0
+126.net, 0
+12seemeilen.de, 0
+1300acepro.com, 0
+133448.com, 0
+135qp.com, 0
+1360.com, 0
+139site.com, 0
+1406.kz, 0
+15166.com, 0
+155175.com, 0
+161.ru, 0
+1633.com, 0
+16889999.com, 0
+16hour.com, 0
+16mb.com, 0
+17500.cn, 0
+178448.com, 0
+1791diamonds.com, 0
+17bdc.com, 0
+17doubao.com, 0
+17heli.com, 0
+17house.com, 0
+17huo.com, 0
+17k.com, 0
+17must.com, 0
+17sportweb.com, 0
+17yigo.com, 0
+17zuoye.net, 0
+18183.com, 0
+185sy.com, 0
+189.cn, 0
+189cube.com, 0
+189go.cn, 0
+18zf.com, 0
+1905.com, 0
+190.com, 0
+1919.cn, 0
+1919hdtv.com, 0
+1927.kiev.ua, 0
+197top.com, 0
+19800.com, 0
+19950501.com, 0
+1academy.pro, 0
+1blu.de, 0
+1byone.com, 0
+1byone.co.uk, 0
+1byone.de, 0
+1byone.jp, 0
+1cbit.ru, 0
+1chotel.ru, 0
+1conan.com, 0
+1dxr.com, 0
+1game.ua, 0
+1gb.ua, 0
+1hai.cn, 0
+1huwai.com, 0
+1jbest.com, 0
+1ka.cn, 0
+1kejian.com, 0
+1kxun.mobi, 0
+1more.com, 0
+1-page.com, 0
+1pkk.ru, 0
+1platforma.ru, 0
+1plus1.net, 0
+1plus1.ua, 0
+1popov.ru, 0
+1prime.ru, 0
+1proxy.de, 0
+1september.ru, 0
+1st-attractive.com, 0
+1stwebdesigns.com, 0
+1tempurl.com, 0
+1track.ru, 0
+1tv.co.ua, 0
+1tvcrimea.ru, 0
+1v2d.com, 0
+2016bec.ro, 0
+2016.life, 0
+2100d.com, 0
+2114.com, 0
+212webhost.com, 0
+2144.cn, 0
+21cn.com, 0
+21.co.uk, 0
+21food.cn, 0
+21jrr.com, 0
+21mmo.com, 0
+21vbluecloud.com, 0
+21vianet.com, 0
+21yunwei.com, 0
+22v.net, 0
+22web.org, 0
+230km.ru, 0
+2330.tw, 0
+23356.com, 0
+233.com, 0
+2341.tv, 0
+23yy.com, 0
+247rack.com, 0
+24dx.ru, 0
+24gadget.ru, 0
+24maker.com, 0
+24paybank.com, 0
+25u.com, 0
+27.ua, 0
+29bet.co, 0
+29.ru, 0
+2ap.pl, 0
+2bulu.com, 0
+2cash.ru, 0
+2dfire.com, 0
+2dip.su, 0
+2do2go.ru, 0
+2fh.co, 0
+2gis.ae, 0
+2gis.cl, 0
+2gis.com, 0
+2gis.com.cy, 0
+2gis.cz, 0
+2gis.it, 0
+2gis.kg, 0
+2gis.kz, 0
+2gis.ru, 0
+2gis.ua, 0
+2hi.pl, 0
+2iretegas.it, 0
+2ix.de, 0
+2k2k.cc, 0
+2kom.ru, 0
+2kraski.ru, 0
+2manhua.com, 0
+2mao.cc, 0
+2peak.com, 0
+2plus2.ua, 0
+2proxy.de, 0
+2ryby.pl, 0
+2stick.ru, 0
+2sxvpn.wang, 0
+300188.cn, 0
+300.cn, 0
+3023.com, 0
+30post.com, 0
+310win.com, 0
+315jiage.cn, 0
+32ph.com, 0
+3310.com, 0
+3322.org, 0
+33pol.net, 0
+33rus.ru, 0
+33un.com, 0
+3400.org, 0
+34regiongaz.ru, 0
+34travel.by, 0
+360.cn, 0
+360.com, 0
+360doc.com, 0
+360fdc.com, 0
+360haoyao.com, 0
+360jie.com.cn, 0
+360jk.com, 0
+360kad.com, 0
+360kan.com, 0
+360pay.cn, 0
+360safe.com, 0
+360shouji.com, 0
+360shouzhuan.com, 0
+360totalsecurity.com, 0
+360tpcdn.com, 0
+360zimeiti.com, 0
+361sport.com, 0
+365hsh.com, 0
+365rili.com, 0
+365soke.cn, 0
+365webcall.com, 0
+36fy.com, 0
+36jr.com, 0
+36krcnd.com, 0
+36kr.com, 0
+37k.org, 0
+37ren.com, 0
+39.net, 0
+3arrafni.com, 0
+3bro.info, 0
+3cx.asia, 0
+3cx.com, 0
+3cx.de, 0
+3cx.es, 0
+3cx.eu, 0
+3cx.fr, 0
+3cx.it, 0
+3cx.net, 0
+3cx.ru, 0
+3cx.us, 0
+3cyber.info, 0
+3dcenter.org, 0
+3dmgame.com, 0
+3dnews.ru, 0
+3dyf.com, 0
+3-e.cz, 0
+3e.eu, 0
+3esynaptiq.com, 0
+3ie.fr, 0
+3mang.com, 0
+3proxy.de, 0
+3proxy.ru, 0
+3songshu.com, 0
+3tong.net, 0
+3utilities.com, 0
+4008087799.com, 0
+40407.com, 0
+404content.com, 0
+41.cn, 0
+41q.com, 0
+4231.vn, 0
+42trip.com, 0
+4399om.com, 0
+4399sy.com, 0
+442hz.com, 0
+45so.org, 0
+46etplus.com, 0
+4848438.com, 0
+48.cn, 0
+4all.com, 0
+4c.cn, 0
+4d.com, 0
+4dk.ru, 0
+4gjsq.net, 0
+4hu.com, 0
+4ka.sk, 0
+4nmv.ru, 0
+4paradigm.com, 0
+4pda.uz, 0
+4programmers.net, 0
+4proxy.us, 0
+4px.com, 0
+4qualia.co.jp, 0
+4real.gr, 0
+4ru.es, 0
+4shared-desktop.com, 0
+4tuning.ro, 0
+4uarab.com, 0
+4vision.ru, 0
+50webs.org, 0
+5112017.org, 0
+515to.com, 0
+517.cn, 0
+517na.com, 0
+51baogao.cn, 0
+51bi.com, 0
+51bmb.com, 0
+51.com, 0
+51datakey.com, 0
+51duoduo.com, 0
+51duoying.com, 0
+51eng.com, 0
+51goagent.com, 0
+51gsl.com, 0
+51laibei.com, 0
+51liucheng.com, 0
+51mypc.cn, 0
+51p2b.com, 0
+51pianmen.com, 0
+51rz.com, 0
+51shebao.com, 0
+51tniu.com, 0
+51tuodao.com, 0
+51vip.biz, 0
+51vv.com, 0
+51wnl.com, 0
+51xiaoshuang.com, 0
+51yangsheng.com, 0
+51ykb.com, 0
+51yund.com, 0
+51yunqiang.cn, 0
+520cfc.com, 0
+5262.com, 0
+52bug.cn, 0
+52daohang.com, 0
+52dfg.com, 0
+52ilm.com, 0
+52ilm.vip, 0
+52itstyle.com, 0
+52jbj.com, 0
+52jiaoshi.com, 0
+52joy.org, 0
+52life.cc, 0
+52ml.net, 0
+52spin.com, 0
+531314.com, 0
+550550.ru, 0
+55188.com, 0
+552la.com, 0
+55freehost.com, 0
+55haitao.com, 0
+565656.com, 0
+56p2b.com, 0
+5778.com, 0
+58bank.com, 0
+58cdn.com.cn, 0
+58corp.com, 0
+5900.com.ar, 0
+59pi.com, 0
+59store.com, 0
+5adm.cc, 0
+5c.com.cn, 0
+5di.tv, 0
+5dmat-web.com, 0
+5gbfree.com, 0
+5g-ppp.eu, 0
+5hxn.com, 0
+5idream.net, 0
+5igupiao.com, 0
+5ilog.com, 0
+5karmanov.ru, 0
+5ok.com.ua, 0
+5ppai.com, 0
+5qqksa.com, 0
+5xiaoyuan.cn, 0
+5zig.net, 0
+600280.com, 0
+601601.com, 0
+60500.ru, 0
+6080bo.com, 0
+60-fps.org, 0
+612459.com, 0
+66163.com, 0
+6655.la, 0
+66law.cn, 0
+66.ru, 0
+6789g.com, 0
+68edu.ru, 0
+68kmla.org, 0
+6ack.com, 0
+6a.com, 0
+6d1b.cc, 0
+6kyun.com, 0
+6lib.ru, 0
+6rz.in, 0
+6so.so, 0
+6te.net, 0
+700shin.ru, 0
+7-11.cn, 0
+72du.com, 0
+72e.net, 0
+7311.by, 0
+7618.com, 0
+76.ru, 0
+77169.com, 0
+771dian.com, 0
+77file.com, 0
+7958.com, 0
+7bitcasino.com, 0
+7days.ru, 0
+7ero.org, 0
+7fon.ru, 0
+7i24.com, 0
+7launcher.com, 0
+7moor.com, 0
+7n5.net, 0
+7nujoom.com, 0
+7to.com.tw, 0
+7tor.org, 0
+800best.com, 0
+800pai.com, 0
+80code.com, 0
+80pai.net, 0
+80s.tw, 0
+80uncle.com, 0
+80vps.com, 0
+81mv.com, 0
+85vod.com, 0
+868e.com, 0
+86y.org, 0
+87.cn, 0
+87dyy.com, 0
+8800.org, 0
+8864.com, 0
+8866.org, 0
+890m.com, 0
+8a.hk, 0
+8asyym.com, 0
+8eoe.com, 0
+8gongli.com, 0
+8pig.com, 0
+8solution.de, 0
+8solutions.cloud, 0
+8solutions.de, 0
+8th.com, 0
+8u.cz, 0
+8win.com, 0
+9080.tv, 0
+90music.ir, 0
+9111.ru, 0
+911proxy.com, 0
+91300.com, 0
+9158.com, 0
+9188.com, 0
+91.com, 0
+91game.com, 0
+91huayi.com, 0
+91kds.net, 0
+91moe.com, 0
+91pintuan.com, 0
+91pxb.com, 0
+91ri.org, 0
+91ssfq.com, 0
+91sst.com, 0
+91wii.com, 0
+91wutong.com, 0
+91y.com, 0
+91yun.org, 0
+91yunxiao.com, 0
+92081.org, 0
+921.com, 0
+92ez.com, 0
+9384.com, 0
+945.com, 0
+94cb.com, 0
+9513.com, 0
+9527yy.com, 0
+95579.com, 0
+9597.biz, 0
+96533.com, 0
+9666.cn, 0
+96.lt, 0
+980x.com, 0
+988house.com, 0
+99496.com, 0
+999.com, 0
+999d.com, 0
+99chan.org, 0
+99.com, 0
+9ht.com, 0
+9ifriend.com, 0
+9tour.cn, 0
+9wody.com, 0
+a101.ru, 0
+a2hosted.com, 0
+a2yy.com, 0
+a360.ru, 0
+a4yy.com, 0
+a696.com, 0
+a6adserv.com, 0
+a8z8.com, 0
+a-a-ah.ru, 0
+aaayun.com, 0
+aab-edu.net, 0
+aapig.com.cn, 0
+aasaanjobs.com, 0
+aasfp.com, 0
+aas.org, 0
+aasp.org.br, 0
+aauekpoma.edu.ng, 0
+aazyw.com, 0
+abacusemedia.com, 0
+abadan-ref.ir, 0
+abakan.ru, 0
+abakus-internet-marketing.de, 0
+abble.cn, 0
+abbseo.com, 0
+abbyy.com, 0
+abbyyeu.com, 0
+abbyy-ls.com, 0
+abbyy.ru, 0
+abbyy.ua, 0
+abbyyusa.com, 0
+abc188.com, 0
+abc360.com, 0
+abc6.net, 0
+abcapk.com, 0
+abcb2b.eu, 0
+abcd.bz, 0
+abc.edu.sv, 0
+abclite.net, 0
+abc.re, 0
+abcydia.com, 0
+abelohost.com, 0
+abfar-kh.ir, 0
+abf.cz, 0
+abf.se, 0
+abhiguitar.com, 0
+abidjan911.com, 0
+abileneisd.org, 0
+abit-poisk.org.ua, 0
+abitu.net, 0
+abitur-und-studium.de, 0
+abiyefon.com, 0
+ablecloud.cn, 0
+abletive.com, 0
+abm-com.de, 0
+about-nya.com, 0
+abp.bzh, 0
+abresalamat.ir, 0
+abrites.com, 0
+abs.cn, 0
+absi.be, 0
+absolutbank.ru, 0
+absolutist.com, 0
+absolutist.ru, 0
+abuxiaoxi.com, 0
+abz.ch, 0
+abzone.cz, 0
+academicconf.com, 0
+academy21.ru, 0
+acanomas.com, 0
+accentforex.com, 0
+access.ly, 0
+accounterlive.com, 0
+accuenplatform.com, 0
+acelerato.com, 0
+acer.com, 0
+aceteamwork.com, 0
+acfun.tv, 0
+acg.bz, 0
+acgcss.com, 0
+acg-moe.com, 0
+acgmoon.org, 0
+acgn.ren, 0
+ac.gov.ru, 0
+acgpy.com, 0
+acg.tf, 0
+acilissaati24.com, 0
+ac-illust.com, 0
+acision.com, 0
+acko.net, 0
+acko.ru, 0
+acli.it, 0
+a-closer-look.com, 0
+aclu.org, 0
+acm.ac.uk, 0
+acmcoder.com, 0
+acmhabitat.fr, 0
+acom.pt, 0
+aconcaguapoker.com, 0
+acoola.ru, 0
+acornsau.com.au, 0
+acousticalsurfaces.com, 0
+ac-project.net, 0
+acquadiparma.com, 0
+acronis.com, 0
+acrylicwifi.com, 0
+acsc.az, 0
+acs.si, 0
+acs-tpkg.com, 0
+actilove.ch, 0
+actionnetwork.org, 0
+actiplans.com, 0
+actitime.com, 0
+active24.cz, 0
+active-city.net, 0
+activeeon.com, 0
+activelink.ie, 0
+activemotif.com, 0
+activ.kz, 0
+actonlytics.com, 0
+actoys.net, 0
+acueducto.com.co, 0
+acumatica.com, 0
+acupuncture.org.uk, 0
+ad7.com, 0
+ada.edu.az, 0
+adamas.ru, 0
+adashboard.info, 0
+adbusters.org, 0
+ad.co.kr, 0
+adcom.it, 0
+adctools.com, 0
+adcubum.com, 0
+added-value.com, 0
+addison-electronique.com, 0
+addpipe.com, 0
+addradio.de, 0
+add.re.kr, 0
+addvalue.de, 0
+adept.co.za, 0
+adfreehost.ir, 0
+adic.co.kr, 0
+adicu.com, 0
+adioma.com, 0
+adks.cn, 0
+adkulan.kz, 0
+adllink.com.br, 0
+admagazine.ru, 0
+admgor.nnov.ru, 0
+admin.ch, 0
+adminhost.org, 0
+administrator.de, 0
+adminn.cn, 0
+admin.tomsk.ru, 0
+admissions.fr, 0
+admkrsk.ru, 0
+admoblkaluga.ru, 0
+admon.org, 0
+admsakhalin.ru, 0
+adobeconnect.ir, 0
+adofms.com.au, 0
+adp.com, 0
+adpop-1.com, 0
+adpop.com, 0
+adquisitio.com.mx, 0
+adquisitio.es, 0
+adquisitio.it, 0
+ad-rek.ru, 0
+adriagate.com, 0
+adrs.me, 0
+ads1-adnow.com, 0
+ads2-adnow.com, 0
+ads3-adnow.com, 0
+ads5-adnow.com, 0
+adsanityplugin.com, 0
+adseedata.com, 0
+adselect.ir, 0
+adsender.us, 0
+adsensor.org, 0
+adstarknetwork.com, 0
+aduana.cl, 0
+adukacyja.info, 0
+adultwebmastercenter.biz, 0
+advancedrenamer.com, 0
+advancedtomato.com, 0
+advendor.net, 0
+adverten.com, 0
+adverti.ru, 0
+advertising.management, 0
+adview.cn, 0
+adviqo.com, 0
+advisor.travel, 0
+adways.net, 0
+adwhiztech.com, 0
+adwifi.com.tw, 0
+adwitiyacollection.com, 0
+adxxx.me, 0
+adxxx.org, 0
+ady.az, 0
+ady-co.com, 0
+adygnet.ru, 0
+adzuna.ca, 0
+adzuna.com.au, 0
+adzuna.com.br, 0
+adzuna.co.uk, 0
+adzuna.co.za, 0
+adzuna.de, 0
+adzuna.fr, 0
+adzuna.in, 0
+adzuna.nl, 0
+adzuna.pl, 0
+adzuna.ru, 0
+adzz.me, 0
+aegean.gr, 0
+aegee.org, 0
+aegif.jp, 0
+aelius.com, 0
+ae.org, 0
+aeparser.com, 0
+aepb.gov.cn, 0
+aerial.net, 0
+aerosoft.de, 0
+aertecsolutions.com, 0
+aerztekammer.at, 0
+aesop.com, 0
+aewb.cn, 0
+afagh.info, 0
+afaghnet.ir, 0
+afanti100.com, 0
+afd.berlin, 0
+afflecks.com, 0
+affordplan.com, 0
+afghan123.com, 0
+afphabitat.cl, 0
+afraid.org, 0
+africaintelligence.com, 0
+africaintelligence.fr, 0
+africaninnovation.org, 0
+africanleadershipacademy.org, 0
+africanmeccasafaris.com, 0
+afrimalin.cm, 0
+afrimalin.com.gn, 0
+agantty.com, 0
+agava.net, 0
+agava.ru, 0
+agc-energies.fr, 0
+agearche.ru, 0
+agefi.fr, 0
+agendatrad.org, 0
+agfw.me, 0
+agglo-annecy.fr, 0
+agh.edu.pl, 0
+agilecontents.com, 0
+agimonline.com, 0
+aginomoto.com, 0
+agnesb.com, 0
+agonistes.gr, 0
+agoodme.com, 0
+agora.co.il, 0
+agora-energiewende.de, 0
+agpc28.com, 0
+agrafka.com.ua, 0
+agrant.cn, 0
+agrantsem.com, 0
+agriconomie.com, 0
+agroklub.com, 0
+agro-mash.ru, 0
+agronationale.ru, 0
+agropravda.com, 0
+agrosemfond.ru, 0
+agroxxi.ru, 0
+agts.tv, 0
+agulife.ru, 0
+ahjzu.edu.cn, 0
+ahmia.fi, 0
+ahml.ru, 0
+ahnw.gov.cn, 0
+ahs-de.com, 0
+ahtv.cn, 0
+ahu.edu.cn, 0
+ahvaznovin.ir, 0
+aia.com.sg, 0
+aiaiu.com, 0
+aibing.cc, 0
+ai.ch, 0
+aidaojia.com, 0
+aidl.pw, 0
+aigame100.com, 0
+aihuo360.com, 0
+aiirony.com, 0
+aiisen.com, 0
+aikaiyuan.com, 0
+aikf.com, 0
+aimatech.com, 0
+aimms.com, 0
+aimodel.me, 0
+aim.uz, 0
+ainiseo.com, 0
+aipa.ru, 0
+aipb.org, 0
+air-austral.com, 0
+airbase.ru, 0
+airbusgroup.com, 0
+aircn.org, 0
+aircrack-ng.org, 0
+airdog.com, 0
+airedesantafe.com.ar, 0
+airelf.com.tw, 0
+airgun.org.ua, 0
+airlinegeeks.com, 0
+airly.co, 0
+airmp3.me, 0
+airnet.ru, 0
+air-serenity.com, 0
+airstoc.com, 0
+airtime.pro, 0
+airtribune.com, 0
+airwarriors.com, 0
+airweave.jp, 0
+ais.by, 0
+aisidi.com, 0
+aisne.fr, 0
+aist.net.ru, 0
+ais.ua, 0
+ait.ac.th, 0
+aitech.ac.jp, 0
+ai-thinker.com, 0
+aiwanba.com, 0
+aixifan.com, 0
+aizhuizhui.com, 0
+ajaums.ac.ir, 0
+ajinga.com, 0
+ajmide.com, 0
+ajou.ac.kr, 0
+akademie-bv.de, 0
+akademikerverlag.de, 0
+akado-ural.ru, 0
+akairan.com, 0
+akama.com.tw, 0
+akasakaprince.com, 0
+akb48game.jp, 0
+akcis.org, 0
+akisho.ru, 0
+akket.com, 0
+aknw.de, 0
+akosi.ru, 0
+akson.ru, 0
+aktinos.com, 0
+akud.info, 0
+akusherstvo.ru, 0
+alain-bensoussan.com, 0
+alamesacuba.com, 0
+alapetite.fr, 0
+alarmtrade.ru, 0
+alaska.ua, 0
+alau.kz, 0
+albank.ru, 0
+albedo.pw, 0
+alberlet.hu, 0
+alberthsieh.com, 0
+alberto.gr, 0
+albooked.com, 0
+alcateia.com.br, 0
+alcatelonetouch.com, 0
+alchevsk.net, 0
+alconost.com, 0
+aldebaran.cz, 0
+aldjf.com, 0
+alemtat.kz, 0
+alertachiapas.com, 0
+aler.to, 0
+alexa_host, 0
+alexander-freundeskreis.org, 0
+alexandriava.gov, 0
+alexandrinsky.ru, 0
+alexbloggt.com, 0
+alexbruni.ru, 0
+alexfitness.ru, 0
+alexnettm.org.ua, 0
+alexwz.com, 0
+alexyanovsky.com, 0
+alfabank.kz, 0
+alfacapital.ru, 0
+alfa-forex.ru, 0
+alfatyping.com, 0
+alfred.camera, 0
+algoritma.it, 0
+alhassan.de, 0
+ali213.net, 0
+aliall.ru, 0
+aliapp.com, 0
+aliatic.com, 0
+alibi.by, 0
+alicall.com, 0
+alicomez.com, 0
+alidemo.cn, 0
+aliexsale.ru, 0
+aligo.in, 0
+alinino.az, 0
+aliseed.com, 0
+alittlebit.ru, 0
+alittlebityummy.com, 0
+aliwords.com, 0
+aliyuncs.com, 0
+all4os.com, 0
+allaboutjazz.com, 0
+allaboutparenting.ro, 0
+allananas.ru, 0
+all.biz, 0
+allboxing.ru, 0
+allcoin.com, 0
+allcorp.ru, 0
+alldiscount.info, 0
+alles-vegetarisch.de, 0
+alleyneinc.net, 0
+allfon.org, 0
+allhostings.ru, 0
+alliance-global.com, 0
+allinpay.com, 0
+all-in.xyz, 0
+allmedia.ru, 0
+allmovies.uz, 0
+allnokia.ru, 0
+allobnk.com, 0
+allo.ua, 0
+allplay.uz, 0
+allrad.ru, 0
+allseenalliance.org, 0
+allthefallen.ninja, 0
+alltobid.com, 0
+allure.ru, 0
+allwetterzoo.de, 0
+allyes.com, 0
+almamarket.pl, 0
+almasdarnews.com, 0
+almatv.kz, 0
+almaz.center, 0
+almedina.net, 0
+almin.ru, 0
+almodi.org, 0
+almohtarifdz.com, 0
+alo.ir, 0
+alone.tw, 0
+alpedhueznet.com, 0
+alphabrock.cn, 0
+alphacrc.com, 0
+alphacrew.com, 0
+alpha-network.io, 0
+alphaspel.se, 0
+alpha-wallet.com, 0
+alphest.com, 0
+alpine.com, 0
+alpinelinux.org, 0
+alser.kz, 0
+als-japan.com, 0
+alsyundawy.com, 0
+altarix.ru, 0
+altechna.com, 0
+altegrosky.ru, 0
+altel.kz, 0
+alternatehistory.com, 0
+alternetivo.cz, 0
+altervista.org, 0
+alterway.fr, 0
+altigator.com, 0
+altinkaya.com.tr, 0
+altissia.com, 0
+altlinux.org, 0
+altlinux.ru, 0
+altrk.net, 0
+altruja.de, 0
+altspu.ru, 0
+alt-team.com, 0
+alvanikoku.edu.ng, 0
+alwaysdata.net, 0
+alyzq.com, 0
+amainhobbies.com, 0
+amalgam-fansubs.tk, 0
+amanbo.co.ke, 0
+amanbo.com, 0
+amap.com, 0
+amaroma.it, 0
+amarone.hu, 0
+amazee.io, 0
+amazingradio.com, 0
+amazonaws.com, 0
+ambiente.gob.ar, 0
+amdn.news, 0
+amersport.ru, 0
+amforward.com, 0
+amfostacolo.ro, 0
+amigaosecreto.com.br, 0
+amigo.lv, 0
+amigosdecosat.com, 0
+amikash.ca, 0
+aminidc.com, 0
+amiro.ru, 0
+ammc.ma, 0
+amniran.org, 0
+amocrm.com, 0
+amolf.nl, 0
+amorousgame.com, 0
+amoskadan.cz, 0
+ampfutures.com, 0
+amplexor.com, 0
+ampr.org, 0
+amrita-rus.ru, 0
+amss.ac.cn, 0
+amt.com.cn, 0
+amv.es, 0
+anadea.info, 0
+anadyr.org, 0
+anafarsh.com, 0
+analyticaltrader.com, 0
+anapa-official.ru, 0
+anchel.nl, 0
+ancii.com, 0
+ancor.ru, 0
+andalucia.org, 0
+anderlecht.be, 0
+anderlecht-online.be, 0
+anderssen.ru, 0
+andipartners.com, 0
+andraste.io, 0
+andrewcbancroft.com, 0
+androbit.net, 0
+androidcentral.com, 0
+android-coffee.com, 0
+android-gems.com, 0
+android-help.ru, 0
+android-iphone-recovery.com, 0
+androidlearning.in, 0
+androidlost.com, 0
+andyet.com, 0
+andykamto.com, 0
+anegrinews.ru, 0
+anekdot.ru, 0
+anevia.com, 0
+angara.net, 0
+angellight.com, 0
+anglius.ru, 0
+angrymetalguy.com, 0
+anhuinews.com, 0
+anidesu.ru, 0
+anidex.moe, 0
+animan.uz, 0
+animationclub.ru, 0
+animecharactersdatabase.com, 0
+animeimpulse.com, 0
+animelayer.ru, 0
+anime-pictures.net, 0
+anime-rus.ru, 0
+animetosho.org, 0
+animetreff.de, 0
+anionix.ru, 0
+anitama.cn, 0
+anitoys.com, 0
+anizone.net, 0
+ankaraka.org.tr, 0
+ankerkraut.de, 0
+ankermann.com, 0
+ankiety-tv.pl, 0
+anko3.com, 0
+ankolpakov.ru, 0
+anmb.ro, 0
+annet.pl, 0
+annibuku.com, 0
+annkestore.com, 0
+anoneko.com, 0
+anonimag.es, 0
+anonymox.net, 0
+anotherhome.net, 0
+anovaculinary.com, 0
+anpc.ro, 0
+anpec.org.br, 0
+anritsu.com, 0
+anruan.com, 0
+ansan.ac.kr, 0
+ans.cz, 0
+anseo.cn, 0
+answercenter.ir, 0
+answerconnect.com, 0
+answerconnect.co.uk, 0
+anta.cn, 0
+anta.com, 0
+antagosoft.com, 0
+antclub.org, 0
+anticenz.org, 0
+antiplag.ru, 0
+antizapret.info, 0
+antoshkaspb.ru, 0
+antplanet.ru, 0
+antrak.org.tr, 0
+antshares.org, 0
+antsoul.com, 0
+anturis.com, 0
+anunciobot.com, 0
+anunciosparatodos.com, 0
+anvidelabs.org, 0
+anviz.com, 0
+anwalt24.de, 0
+anyfiles.co, 0
+anysdk.com, 0
+anysports.tv, 0
+anyway.fm, 0
+anzhen.org, 0
+anzhi.com, 0
+aoaoao.me, 0
+aofall.com, 0
+aomygod.com, 0
+aonb.ru, 0
+aor.ca, 0
+aoreteam.com, 0
+aori.ru, 0
+aos.com, 0
+aov.de, 0
+ap1.by, 0
+apabi.com, 0
+apachehaus.com, 0
+apachelounge.com, 0
+apaipian.com, 0
+apalon.com, 0
+apartamenty.kz, 0
+apave.com, 0
+apba.es, 0
+aperza.jp, 0
+apexdc.net, 0
+apex.fr, 0
+apexpoint.com, 0
+apfelwerk.de, 0
+apgsensors.com, 0
+apgsga.ch, 0
+apic.in, 0
+apimatic.io, 0
+apkdigg.co, 0
+apkdy.com, 0
+apk.tw, 0
+aplgo.com, 0
+aplicit.com, 0
+aplikasipc.com, 0
+apmetrix.com, 0
+apn.ru, 0
+apolisglobal.com, 0
+appadhoc.com, 0
+appbase.io, 0
+appbonus.ru, 0
+appcan.cn, 0
+appcelerator.com, 0
+appcoachs.com, 0
+appdated.de, 0
+appdb.cc, 0
+appfollow.io, 0
+appful.io, 0
+app-global.ru, 0
+appier.com, 0
+appier.net, 0
+applico.ru, 0
+applied-research.ru, 0
+applinzi.com, 0
+applysquare.com, 0
+applythis.net, 0
+apppark.cn, 0
+appreal-vr.com, 0
+apps555.com, 0
+appshike.com, 0
+appsmod.com, 0
+appsocks.cn, 0
+appson.ir, 0
+appstar.com.cn, 0
+appvault.com, 0
+apreva.fr, 0
+apricityos.com, 0
+apronline.gov.ar, 0
+apropos-store.com, 0
+aptekarsk.ru, 0
+apur.org, 0
+apusapps.com, 0
+apuscn.com, 0
+apx.fr, 0
+aqha.com, 0
+aql.com, 0
+aqua-calc.com, 0
+aqualogo.ru, 0
+aquariumbg.com, 0
+aquaservice.com, 0
+aqua-shop.ru, 0
+arabshack.com, 0
+aradhost.com, 0
+arado.org, 0
+aranycsillag.net, 0
+aras.com, 0
+arawaza.com, 0
+arb4host.net, 0
+arba.uz, 0
+arbeitsschutz-portal.de, 0
+arbicon.ru, 0
+arbital.ru, 0
+arb-silva.de, 0
+arbuse.ru, 0
+arcadiamedical.ro, 0
+arcadja.com, 0
+arch-anywhere.org, 0
+archboy.org, 0
+archermind.com, 0
+archersbr.com, 0
+archirodon.net, 0
+arcsoft.com.cn, 0
+ardahan.edu.tr, 0
+ardda.gov.az, 0
+ardisson.ir, 0
+areajugones.es, 0
+areeya.co.th, 0
+arefyevstudio.com, 0
+arenabg.ch, 0
+arenabg.com, 0
+arencenter.ir, 0
+ares.com.tw, 0
+argentinacompra.gov.ar, 0
+argentina.gob.ar, 0
+argor.com, 0
+ar.gov, 0
+ariacomputer.ir, 0
+ariansystem.net, 0
+ariejan.net, 0
+arielis.com, 0
+ari.ir, 0
+arindo.net, 0
+aris.ge, 0
+aristo.ru, 0
+aritmos.it, 0
+arize.ir, 0
+arkadium.com, 0
+arkena.com, 0
+arkh-edu.ru, 0
+arkrdigital.com, 0
+arkvpn.wang, 0
+arlan.ru, 0
+arlingtonva.us, 0
+arma3.ru, 0
+armene.com, 0
+armor.kiev.ua, 0
+armorymarek.com, 0
+armtorrent.com, 0
+army.gr, 0
+armysoft.es, 0
+arnotts.ie, 0
+aroundprague.cz, 0
+arpuplus.com, 0
+arqatech.com, 0
+arsacia.ir, 0
+arsenal-sib.ru, 0
+ars-grin.gov, 0
+ars.sicilia.it, 0
+art1st.me, 0
+artar.com.sa, 0
+artcom.de, 0
+art-download.org, 0
+artezio.com, 0
+artfoxlive.com, 0
+artinfo.pl, 0
+artinvestment.ru, 0
+artistravel.eu, 0
+artist.ru, 0
+artlife.ru, 0
+artlords.com, 0
+art-oboi.com.ua, 0
+artonline.ru, 0
+artrade.com, 0
+artreal.ru, 0
+artron.net, 0
+artsadd.com, 0
+arturia.com, 0
+arty.space, 0
+asafaweb.com, 0
+asanak.ir, 0
+asanapps.com, 0
+asandk.com, 0
+asanfile.com, 0
+asanwebhost.com, 0
+asaptickets.com, 0
+ascendcorp.com, 0
+ascendi.pt, 0
+asc.es, 0
+asda.gr, 0
+asendiahk.com, 0
+aseugame.com, 0
+ashampoo.net, 0
+ashanet.org, 0
+asheblog.org, 0
+ashiyue.com, 0
+ashkalov.ru, 0
+ashland.edu, 0
+ashmanov.com, 0
+asiafull.com, 0
+asiago.it, 0
+asiainfo.com, 0
+asiainfo.com.cn, 0
+asiangeo.com, 0
+asiaplus.tj, 0
+asiatech.ir, 0
+asicminermarket.com, 0
+asilmedia.uz, 0
+asirikuy.com, 0
+asjyy.com, 0
+askermekani.com, 0
+askform.cn, 0
+asknlearn.com, 0
+askona.ru, 0
+askthepsych.com, 0
+aslenkov.ru, 0
+aslibra.com, 0
+asomin.net, 0
+asp.be, 0
+asphaltgold.de, 0
+aspiremi.com, 0
+asp.krakow.pl, 0
+aspone.me, 0
+aspswelten.de, 0
+asrock.com, 0
+assai.com.br, 0
+asse.fr, 0
+assistbet.co, 0
+assorti-market.ru, 0
+astana.kz, 0
+astana.tk, 0
+astegiudiziarie.it, 0
+asteriskmx.org, 0
+asteroidos.org, 0
+astralnalog.ru, 0
+astrobites.org, 0
+astrocenter.com, 0
+astrogeo.va.it, 0
+astrohled.cz, 0
+astrology.com, 0
+astro-online.ru, 0
+astropro.ru, 0
+astrosage.com, 0
+astroweb.tv, 0
+astrowi.com, 0
+asurgumus.com, 0
+asus.com.cn, 0
+asuscomm.com, 0
+asusmarket.ru, 0
+aswifter.com, 0
+atabank.com, 0
+ataka.tv, 0
+ataksupermarket.ru, 0
+ataland.com, 0
+atanor.ru, 0
+at-consulting.ru, 0
+atel76.ru, 0
+atempurl.com, 0
+atfbooru.ninja, 0
+atg-corp.com, 0
+ath.cx, 0
+athlenda.com, 0
+athome.lu, 0
+atiyehsazan.ir, 0
+atlanta.ua, 0
+atlanticmetro.net, 0
+atm.gob.ec, 0
+atmyplace.ru, 0
+atnf.csiro.au, 0
+atnifty.com, 0
+atol.ru, 0
+atomuniverse.net, 0
+aton.ru, 0
+atpesercizio.it, 0
+atraining.ru, 0
+atrapalo.com, 0
+atraveo.de, 0
+atrsara.ir, 0
+atservers.net, 0
+atso-net.jp, 0
+attijariwafa.com, 0
+attivonetworks.com, 0
+at.ua, 0
+atua.com.br, 0
+atyourservice.com.cy, 0
+atzenbunker.ws, 0
+auca.kg, 0
+auchandirect.fr, 0
+auchan.net, 0
+auchan.ro, 0
+auchan.ru, 0
+auctionata.com, 0
+audacity-forum.de, 0
+audatex.de, 0
+audials.com, 0
+audiklub.cz, 0
+audinate.com, 0
+audiofreaks.nl, 0
+audiophile.org, 0
+audioveda.ru, 0
+auditionpvs.com, 0
+audit-it.ru, 0
+au.edu.tw, 0
+aufe.edu.cn, 0
+augcg.com, 0
+auis.edu, 0
+aulacenter.com, 0
+aulamejor.com, 0
+auna.de, 0
+auna.fr, 0
+auna.it, 0
+auna-multimedia.co.uk, 0
+auna-multimedia.es, 0
+auno.kz, 0
+auooo.com, 0
+aurora-online.ru, 0
+aurubis.com, 0
+aussiebushwalking.com, 0
+austlink.net, 0
+austral.edu.ar, 0
+australia.com, 0
+australianturfclub.com.au, 0
+austrian.com, 0
+author24.ru, 0
+autoalkatresz.hu, 0
+autoazart.ru, 0
+autobam.ru, 0
+autobase.biz, 0
+autobole.com, 0
+autocash.com, 0
+autocensor.com, 0
+autocharge.ir, 0
+autocont.cz, 0
+autofides.ru, 0
+autoflex.hu, 0
+autofoco.com, 0
+autoforum.com.br, 0
+autohausaz.com, 0
+autoimport31.ru, 0
+autojarov.cz, 0
+autojerry.fi, 0
+autoklad.ua, 0
+autoklub.cz, 0
+autolikeviet.vn, 0
+automic.com, 0
+automotivelinux.org, 0
+autonavi.com, 0
+autonavigator.hu, 0
+autoonline.com, 0
+auto-online.ru, 0
+autopapa.ge, 0
+autopartslist.ru, 0
+autopilot.li, 0
+autoradiopc.it, 0
+autoria.biz, 0
+autoshinavrn.ru, 0
+autospares.lv, 0
+autostels.ru, 0
+autostrong-m.by, 0
+autosup.by, 0
+autosup.ru, 0
+autoteile-teufel.at, 0
+autoteile-teufel.de, 0
+autotoolza.ru, 0
+autotown55.ru, 0
+autotravel.ru, 0
+auto-wiki.ru, 0
+autozi.com, 0
+auxiliadorapredial.com.br, 0
+avaclinic.ru, 0
+avalon.ru, 0
+ava.md, 0
+avance-lg.com, 0
+avanset.com, 0
+avantbrowser.com, 0
+avantel.ru, 0
+avantgarde-labs.de, 0
+ava-saz.ir, 0
+avatanplus.com, 0
+avatan.ru, 0
+avatanshop.ru, 0
+avbt123.com, 0
+avcast.org, 0
+avenard.com, 0
+avenuedesvins.fr, 0
+aversi.ge, 0
+avg.club, 0
+av-gk.ru, 0
+avia.lt, 0
+avia.md, 0
+avianca.com.br, 0
+aviapark.com, 0
+aviationsmilitaires.net, 0
+avic.com, 0
+avic.ir, 0
+avis.pl, 0
+avito.ru, 0
+avlab.pl, 0
+avocat.qc.ca, 0
+avokado.kz, 0
+avokzal.ru, 0
+avonstore.com.br, 0
+avosapps.com, 0
+avra.pl, 0
+av.ru, 0
+avselectro-msk.ru, 0
+avselectro.ru, 0
+avsim.net, 0
+avspare.com, 0
+avtobor.uz, 0
+avtograd.ru, 0
+avtomir.ru, 0
+avtonalogi.ru, 0
+avtoopt.com, 0
+avto.pro, 0
+avtovod.org.ua, 0
+avtovokzal-on-line.ru, 0
+avtovokzaly.ru, 0
+avt.pl, 0
+avvalniaz.ir, 0
+awem.com, 0
+awstaticdn.net, 0
+awwapp.com, 0
+axa.cz, 0
+axelname.ru, 0
+axiangblog.com, 0
+axigen.com, 0
+axiomplus.com.ua, 0
+axiomtelecom.com, 0
+axiomus.ru, 0
+axp.dk, 0
+axzchou.com, 0
+ayla.com.cn, 0
+aytopalencia.es, 0
+ayudatpymes.com, 0
+ayurina.net, 0
+ayz.pl, 0
+azarfam.com, 0
+azasrs.gov, 0
+azcuba.cu, 0
+azersu.az, 0
+azfiles.ru, 0
+azfonts.net, 0
+azfonts.ru, 0
+az.gov, 0
+azimuthotels.com, 0
+azinsurance.az, 0
+azoft.com, 0
+az.pl, 0
+azsigorta.az, 0
+azskmg.kz, 0
+aztu.edu.az, 0
+azure.cn, 0
+azure.com, 0
+b0ne.com, 0
+b1.com.cn, 0
+b1-systems.de, 0
+b2cpl.ru, 0
+b2wdigital.com, 0
+b3log.org, 0
+b4value.net, 0
+b5m.com, 0
+b7yy.com, 0
+b8b8.tv, 0
+b8yy.com, 0
+baba-mail.co.il, 0
+babelsberger-filmgymnasium.de, 0
+babilon-m.tj, 0
+babilon-t.tj, 0
+babosik.ru, 0
+babotorrent.com, 0
+babruisk.com, 0
+babyblog.ru, 0
+babylongirls.co.uk, 0
+babypark.nl, 0
+babysfera.ru, 0
+babysitting24.ch, 0
+bacc1688.com, 0
+back2basics-wow.eu, 0
+bad.watch, 0
+bagevent.com, 0
+baggersmag.com, 0
+bagllerina.com, 0
+ba.gov.br, 0
+bahamsafar.com, 0
+bahmut.com, 0
+baicheng.com, 0
+baidu.com, 0
+baidu.nu, 0
+baidupan.com, 0
+baiduyun.me, 0
+baijiahulian.com, 0
+baijindai.com, 0
+baikal-daily.ru, 0
+baiten.cn, 0
+baitv.com, 0
+baixing.cn, 0
+baixou.com.br, 0
+bajiegc.com, 0
+bakemono-subs.com, 0
+bakkerdehouthandel.nl, 0
+baksman.com, 0
+baktelecom.az, 0
+baku2015.com, 0
+baku2017.com, 0
+bakulev.ru, 0
+balancer.ru, 0
+balassiintezet.hu, 0
+balder.se, 0
+baldtruthtalk.com, 0
+baldwins.co.uk, 0
+balgrist.ch, 0
+balitrand.fr, 0
+balkan.ru, 0
+ballbar.cc, 0
+baltikums.eu, 0
+bamada.net, 0
+bamia.ir, 0
+bamilo.com, 0
+bamper.by, 0
+bananacare.ch, 0
+bancogalicia.com.ar, 0
+bancomoc.mz, 0
+bandaancha.eu, 0
+bang5mai.com, 0
+bangcle.com, 0
+banggood.cn, 0
+banglatext.com, 0
+bangnipai.com, 0
+bangqu.com, 0
+banhai.com, 0
+banif.com.mt, 0
+banio.ir, 0
+banjiajia.com, 0
+bank24.uz, 0
+bankbps.pl, 0
+bankcomat.com, 0
+bankersonline.com, 0
+bank.gov.ua, 0
+bankmandiri.co.id, 0
+bankofbeijing.com.cn, 0
+bankofdl.com, 0
+bankowebezprawie.pl, 0
+bankreferatov.ru, 0
+banks.is, 0
+banmaxiaozhen.com, 0
+banob.ir, 0
+banyantree.com, 0
+bao.cn, 0
+baojia.com, 0
+baomitu.com, 0
+baoyuntong.com, 0
+baozou.com, 0
+baozun.cn, 0
+bappedakaltim.com, 0
+baraodemaua.br, 0
+baratz.es, 0
+barbars.ru, 0
+barbioyunu.com.tr, 0
+barcodeberlin.com, 0
+bareknucklepickups.co.uk, 0
+barnacl.es, 0
+barneos22.ru, 0
+barracuda.digital, 0
+bartin.edu.tr, 0
+bartonccc.edu, 0
+bas.co.jp, 0
+basetis.com, 0
+basezap.com, 0
+bashagroplast.com, 0
+bashkortostan.ru, 0
+basis.com, 0
+baskcompany.ru, 0
+basnet.by, 0
+bast.ru, 0
+basu.ac.ir, 0
+batcave.net, 0
+batiaoyu.com, 0
+battlecomics.co.kr, 0
+battleofballs.com, 0
+battleship-game.org, 0
+baykoreans.com, 0
+baykoreans.net, 0
+baysideonline.com, 0
+baza-artistov.ru, 0
+bazakolejowa.pl, 0
+baza.net, 0
+bazarelentrerriano.com.ar, 0
+bazarknig.ru, 0
+bazhongol.com, 0
+bazhuayu.com, 0
+bbdogroup.ru, 0
+bbmundo.com, 0
+bbonfire.com, 0
+bbport.ru, 0
+bbspro.net, 0
+bbvafrances.com.ar, 0
+bbztx.com, 0
+bcactc.com, 0
+bcamath.org, 0
+bcassessment.ca, 0
+bcat.ge, 0
+bcb5.com, 0
+bccto.me, 0
+bcebos.com, 0
+bch.com.cn, 0
+bch.hn, 0
+bcr.gob.sv, 0
+bcr.ro, 0
+bcsh.com, 0
+bcy.net, 0
+bda.bg, 0
+bdear.xyz, 0
+bdew.net, 0
+bd-film.com, 0
+bdimg.com, 0
+bdjc001.com, 0
+bdo.global, 0
+bdpan.com, 0
+bdpu.org, 0
+bdqn.cn, 0
+bdsmclub.pl, 0
+bdsm-russia.com, 0
+bdstatic.com, 0
+bdsu.de, 0
+bea.aero, 0
+beactive.it, 0
+beamr.com, 0
+beam.tv, 0
+bearworld.co.kr, 0
+beate-uhse.com, 0
+beatsound.ru, 0
+beatstage.com, 0
+beautyjagd.de, 0
+bebehouse.com, 0
+bebekoyunu.com.tr, 0
+bebinak.com, 0
+bebio.pl, 0
+becoder.org, 0
+beejournal.ru, 0
+beeline.ru, 0
+beeteco.com, 0
+beevalley.co.jp, 0
+beevideo.tv, 0
+behe.com, 0
+behranoil.com, 0
+behsaa.com, 0
+behsakala.com, 0
+behtarin.tj, 0
+beibei.com, 0
+beiersdorfgroup.com, 0
+beijingtoday.com.cn, 0
+beitaichufang.com, 0
+beitone.com, 0
+bejbynet.cz, 0
+belgazprombank.by, 0
+belgium.be, 0
+belgraviacentre.com, 0
+belhard.com, 0
+belightsoft.com, 0
+belink.com, 0
+belive.ru, 0
+belle8.com, 0
+bellicon.com, 0
+bellini.fr, 0
+bellpotter.com.au, 0
+belorusskiy-trikotazh.ru, 0
+belregion.ru, 0
+beltranssat.by, 0
+be.ma, 0
+bemanicn.com, 0
+bencil.pro, 0
+benedettis.com, 0
+benefitresource.com, 0
+benefitsystems.bg, 0
+benefitsystems.pl, 0
+beneylu.com, 0
+beneyluschool.net, 0
+bengalimusic.in, 0
+bengbeng.com, 0
+bengtsfors.se, 0
+benlai.com, 0
+benlailife.com, 0
+benmi.com, 0
+benq.com.cn, 0
+benrmatthews.com, 0
+beogradskioglasi.com, 0
+beontop.ae, 0
+berbidvps.ir, 0
+berdyansk.net, 0
+beridver.ru, 0
+berito.ru, 0
+berlin-partner.de, 0
+berlitz.com, 0
+berlitz.de, 0
+bernat.im, 0
+bertinaco.com, 0
+bertina.ir, 0
+bertina.us, 0
+berufe-universum.de, 0
+berui.com, 0
+beselettronica.com, 0
+besmart.az, 0
+besmart.kg, 0
+besmart.kz, 0
+besplatnyeprogrammy.net, 0
+bestcake.com, 0
+best-carnival.ru, 0
+besthosting.ua, 0
+bestload.me, 0
+bestmani.ru, 0
+best-price.com, 0
+bestprice.gr, 0
+bestr.it, 0
+bestsdk.com, 0
+bestsecret.at, 0
+bestsecret.ch, 0
+bestsecret.com, 0
+bestsecret.co.uk, 0
+bestsecret.fr, 0
+bestsecret.se, 0
+bestsolution.at, 0
+bestsub.com, 0
+bestv.cn, 0
+bestwallpapers-hd.com, 0
+bestwatch.ru, 0
+bestwinsoft.com, 0
+betaarchive.com, 0
+betaformazione.com, 0
+beta.gouv.fr, 0
+betawoo.com, 0
+betcity.ru.com, 0
+betcityru.com, 0
+bethowen.ru, 0
+bethplanet.ru, 0
+betina.ir, 0
+bet-minute.com, 0
+betonline.ag, 0
+beton.org, 0
+betprisma.com, 0
+betsbc-24.com, 0
+betsbc42.com, 0
+betscsgo.net, 0
+betsdota2.net, 0
+betsgate.com, 0
+bettingbusiness.ru, 0
+bexio.com, 0
+beyond3d.com, 0
+beyond-edge.com, 0
+beyond.pl, 0
+beyondsoft.com, 0
+beyotime.com, 0
+bezaza.ru, 0
+bezko.ru, 0
+bezlimit.ru, 0
+bezrealitky.cz, 0
+bezuzyteczna.pl, 0
+bfarm.de, 0
+bfgames.biz, 0
+bfh.com.cn, 0
+bfi.org, 0
+bfkh.ru, 0
+bfme-modding.ru, 0
+bftcom.com, 0
+bfun.cn, 0
+bfxdata.com, 0
+bfz.hu, 0
+bg.ac.rs, 0
+bgctv.com.cn, 0
+bget.ru, 0
+bgflash.com, 0
+bgforum.ru, 0
+bgreco.net, 0
+bgtop.net, 0
+bgu.co.il, 0
+bgunb.ru, 0
+bgy.com.cn, 0
+bh3.com, 0
+bialystok.pl, 0
+biapy.com, 0
+biba.de, 0
+bible-center.ru, 0
+bibleonline.ru, 0
+bible.ru, 0
+biblio.by, 0
+biblioclub.ru, 0
+biblionix.com, 0
+biboran.com, 0
+bibs.jp, 0
+bichruletka.ru, 0
+bidnews.cn, 0
+bidoo.com, 0
+bieszczady.pl, 0
+bi-file.ru, 0
+bigangwan.com, 0
+bigbangnews.com, 0
+bighost.ir, 0
+bigmir.net, 0
+bignox.com, 0
+bigotti.ro, 0
+bigpicture.ru, 0
+bigquant.com, 0
+bi-group.kz, 0
+biji.io, 0
+bikecitizens.net, 0
+bikefriday.com, 0
+bikemaster.ru, 0
+bikeroar.com, 0
+bikexpert.ro, 0
+bildungscentrum.de, 0
+bildung-schweiz.ch, 0
+biletix.ru, 0
+biletsofit.ru, 0
+bilibili.com, 0
+bilietai.lt, 0
+biligame.com, 0
+bilimal.kz, 0
+billing.ru, 0
+billin.net, 0
+bilp.fr, 0
+bimacarecard.com, 0
+bimm.uz, 0
+bimt.com, 0
+binarisonori.com, 0
+binaryfruit.com, 0
+binary.ninja, 0
+binb.co, 0
+bingo-boom.ru, 0
+bingoenglish.com, 0
+bingostars.com, 0
+bingyan.net, 0
+binomo.com, 0
+bin.sh, 0
+binus.ac.id, 0
+binzhi.com, 0
+biogena.com, 0
+biopodushka.ru, 0
+biotecan.com, 0
+bioware.ru, 0
+bipc.co.jp, 0
+bipdrive.com, 0
+bipskickers.com, 0
+bipush.com, 0
+birdol.com, 0
+birlikhabergazetesi.com, 0
+birmingham.io, 0
+birulevo.net, 0
+biryerde.biz, 0
+bisaboard.de, 0
+bisafans.de, 0
+bisai.tv, 0
+bislink.ir, 0
+bisoft.com.mx, 0
+bistek.com.br, 0
+bistudio.com, 0
+bistu.edu.cn, 0
+bit2.biz, 0
+bitauto.com, 0
+bitballoon.com, 0
+bitcheese.net, 0
+bitcoin.com, 0
+bitcomet.com, 0
+bitgame.ir, 0
+bit-hdtv.com, 0
+bitinn.net, 0
+bitkan.com, 0
+bitmessage.ch, 0
+bitminter.com, 0
+bitnamiapp.com, 0
+bitovi.com, 0
+bitp.kiev.ua, 0
+bitref.com, 0
+bitrix24.com, 0
+bits-handwerkersoftware.de, 0
+bits-hochschule.de, 0
+bitsighttech.com, 0
+bitskins.com, 0
+bittiraha.fi, 0
+bittorrentfiles.org, 0
+bittv.info, 0
+bittylicious.com, 0
+biyao.com, 0
+biysk22.ru, 0
+bizagi.com, 0
+biz.ht, 0
+bizmate.it, 0
+bizovo.ru, 0
+bizright.co.jp, 0
+biz.tm, 0
+bizws.cn, 0
+bjadks.com, 0
+bjd.com.cn, 0
+bjdx.gov.cn, 0
+bjedu.gov.cn, 0
+bjev.com.cn, 0
+bjhd.gov.cn, 0
+bjitic.com, 0
+bjjlb.org.cn, 0
+bjjtgl.gov.cn, 0
+bjkw.gov.cn, 0
+bjnsf.org, 0
+bjpost.com.cn, 0
+bj-tct.com, 0
+bjtu.edu.cn, 0
+bjwh.gov.cn, 0
+bk55.ru, 0
+bk-media.de, 0
+bkool.com, 0
+blablacar.com, 0
+blablacar.net, 0
+blablacode.ru, 0
+blackanddecker.com.br, 0
+blackberries.ru, 0
+blackberrys.ru, 0
+blackbiz.ws, 0
+blackpixel.com, 0
+blackroosteraudio.com, 0
+blackyau.cc, 0
+blafusel.de, 0
+blagovest-moskva.ru, 0
+blanco.com, 0
+blankslate.io, 0
+bl.ee, 0
+blender.org, 0
+bleujour.com, 0
+bl.gov.cn, 0
+blibao.com, 0
+blinko.ru, 0
+blitz-cinestar-bh.ba, 0
+blitz-cinestar.hr, 0
+blitzcorp.org, 0
+blockchainiz.io, 0
+block.io, 0
+bloemert.com, 0
+blogfeng.com, 0
+blogforacure.com, 0
+blogfuntw.com, 0
+bloggersclub.net, 0
+blogin.co, 0
+blogpage.eu, 0
+blogram.net, 0
+blogrebellen.de, 0
+blogshark.net, 0
+blogs-optimieren.de, 0
+blogsyte.com, 0
+blogun.ru, 0
+bloodcat.com, 0
+bloombex-options.com, 0
+blowtopop.net, 0
+blueandwhitehousepubandhkco.com, 0
+bluecomvn.com, 0
+bluefocusgroup.com, 0
+bluegolf.com, 0
+bluemarblegeo.com, 0
+bluemp.net, 0
+blueprintsys.com, 0
+blueprism.com, 0
+bluereader.org, 0
+bluesales.ru, 0
+blueshop.ca, 0
+blueshop.com.tw, 0
+bluesoft.com.br, 0
+bluevine.com, 0
+bluvacanze.it, 0
+bmbgroup.com, 0
+bme.hu, 0
+bm.lv, 0
+bmobile.ne.jp, 0
+bm.ru, 0
+bm-services.com, 0
+bmwclubmoto.ru, 0
+bmw.com.cn, 0
+bnaat.com, 0
+bndes.gov.br, 0
+bnext.com.tw, 0
+bnisecurities.co.id, 0
+bnq.com.cn, 0
+bn.ru, 0
+bnu.edu.cn, 0
+board24.lg.ua, 0
+boardom.io, 0
+boatingmag.com, 0
+bobs.com.br, 0
+bobsfa.com.br, 0
+boce.cn, 0
+bochkameda.net, 0
+bodc.ac.uk, 0
+boeffla.de, 0
+boeingisback.com, 0
+boerde-berufskolleg.de, 0
+boerse-stuttgart.de, 0
+bog.gov.gh, 0
+bohemiaenergy.cz, 0
+boioiong.com, 0
+bokee.net, 0
+boke.io, 0
+bokeyy.com, 0
+bombardir.ru, 0
+bombardo.ru, 0
+bombato.net, 0
+bomberarena.com, 0
+bomc.top, 0
+bome.com, 0
+bonbg.com, 0
+bonding.de, 0
+bondora.com, 0
+bondora.ee, 0
+bonek.de, 0
+bonitasoft.com, 0
+bonjwa.de, 0
+bonniercorp.com, 0
+bonnier.news, 0
+bonree.com, 0
+bonusesfera.com.br, 0
+bookacan.com, 0
+bookandtrip.ru, 0
+bookandtrip.ua, 0
+bookbet23.com, 0
+bookcdn.com, 0
+bookcity.club, 0
+booked.net, 0
+bookinbudapest.com, 0
+bookingpoint.net, 0
+bookmanager.com, 0
+bookmap.com, 0
+bookmate.com, 0
+book.ru, 0
+booksfree4u.tk, 0
+bookshop.ru, 0
+booksrun.com, 0
+booktory.com, 0
+booktype.pro, 0
+book-ye.com.ua, 0
+bookzone.ro, 0
+boombate.com, 0
+boomer.sk, 0
+boosj.com, 0
+boothamschool.com, 0
+bootstrapstudio.io, 0
+borfast.com, 0
+borges.es, 0
+borimed.com, 0
+borjdental.ir, 0
+bork.ru, 0
+bornemann.net, 0
+borsonline.hu, 0
+bose.res.in, 0
+bosscasino.eu, 0
+botevgrad.com, 0
+botnet.cc, 0
+bot.nu, 0
+botreetechnologies.com, 0
+botscript.ir, 0
+botzone.org, 0
+boukal.cz, 0
+bounceme.net, 0
+bouncepingpong.com, 0
+bourky.cz, 0
+boutique-parfums.fr, 0
+bov.com, 0
+boweihe.me, 0
+bowwowinsurance.com.au, 0
+boxcar.io, 0
+boxed.com, 0
+box-evidence.com, 0
+boxueio.com, 0
+boyans.net, 0
+boyhost.cn, 0
+boypoint.de, 0
+boysonyourscreen.org, 0
+boytrap2.net, 0
+bozhong.com, 0
+boziking.com, 0
+bozza.ru, 0
+bplaced.net, 0
+bpmsg.com, 0
+bq.sg, 0
+braas.de, 0
+brainient.com, 0
+brainpad.co.jp, 0
+brainsoftware.org, 0
+brainwave-research-institute.com, 0
+branchable.com, 0
+brandica.ir, 0
+brandos.se, 0
+brankovucinec.com, 0
+bravecollective.com, 0
+braveineve.com, 0
+bravosupermarket.az, 0
+br.com, 0
+br.de, 0
+breachalarm.com, 0
+breakingmuscle.com, 0
+breitling.co.jp, 0
+bremerhaven.de, 0
+bremsspur.org, 0
+bresser.de, 0
+bretty.de, 0
+brewers.com, 0
+brg14.at, 0
+bricker.info, 0
+bricker.ru, 0
+bricofer.it, 0
+bricomarche.pt, 0
+bridgeresort.ru, 0
+brightbox.com, 0
+brightsignnetwork.com, 0
+brightwallpapers.com.ua, 0
+briian.com, 0
+brilliancce.com, 0
+bringo247.ru, 0
+brn.cz, 0
+broadrichness.com, 0
+brocent.com, 0
+brodude.ru, 0
+broekhuis.nl, 0
+brokersjeans.com, 0
+bromium.com, 0
+brot-fuer-die-welt.de, 0
+brown-eyes.ru, 0
+brownpapertickets.com, 0
+brownsugar.tw, 0
+browserdoktor.de, 0
+browserleaks.com, 0
+browshot.com, 0
+brra.bg, 0
+brrc.ru, 0
+bruderste.in, 0
+brudno.com.ua, 0
+brusnika.ru, 0
+bsau.ru, 0
+bscotch.net, 0
+bsi.si, 0
+bsn.ru, 0
+bspb.ru, 0
+bspect.com, 0
+bstester.com, 0
+bstu.ru, 0
+bsuc.cc, 0
+bsuir.by, 0
+bswj.net, 0
+bt2d.com, 0
+btago.com, 0
+btbtdy.com, 0
+btcfans.com, 0
+btcinv4u.com, 0
+btempurl.com, 0
+btfx.net, 0
+btime.com, 0
+btk-fh.de, 0
+btmgg.com, 0
+btn-muenzen.de, 0
+btpeer.com, 0
+btrans.by, 0
+btsearch.co, 0
+btsearch.me, 0
+btydt.com, 0
+buaa.edu.cn, 0
+bubi.cn, 0
+bucek.name, 0
+buchmann.ch, 0
+bucketlist.org, 0
+buct.edu.cn, 0
+budacode.com, 0
+bud-stroynoy.ru, 0
+buffer.com, 0
+bufs.ac.kr, 0
+bugclose.com, 0
+bugetul.ro, 0
+bugscan.net, 0
+bugtags.com, 0
+bugunneleroldu.com, 0
+buhaoting.com, 0
+buhgalter911.com, 0
+buildabazaar.com, 0
+builder.eu, 0
+builder.hu, 0
+builds.io, 0
+buildyourownguitar.com.au, 0
+bukaba.com, 0
+bukainfo.com, 0
+buklya.com, 0
+bukmacherskie.com, 0
+bulkinkeys.com, 0
+bulkreefsupply.com, 0
+bulletsend.com, 0
+bultannews.com, 0
+bumimi.com, 0
+bundesliga.at, 0
+bunkus.org, 0
+bunz.com, 0
+bupa.com.sa, 0
+bupt.edu.cn, 0
+burenqi.com, 0
+burgerfuel.com, 0
+burgessyachts.com, 0
+burjauto.com, 0
+burningshed.com, 0
+busfor.com, 0
+busfor.pl, 0
+busfor.ru, 0
+business4all.ca, 0
+business-gazeta.ru, 0
+businesshemden.com, 0
+businessinfo.cz, 0
+business-internet.biz, 0
+businessportal.gr, 0
+business-software.com, 0
+businessstudio.ru, 0
+businesstoday.co.ke, 0
+busmap.vn, 0
+busqueda-local.es, 0
+bussoladoinvestidor.com.br, 0
+busybeeschildcare.co.uk, 0
+buyalenovo.com, 0
+buycheapr.com, 0
+buyex.ir, 0
+buyunder500.in, 0
+buzzerbeater.com, 0
+buzzhire.co, 0
+bvbcode.com, 0
+bwt-group.com, 0
+bybbs.org, 0
+byb.cn, 0
+bydauto.com.cn, 0
+bydgoszcz.pl, 0
+byethost10.com, 0
+byethost11.com, 0
+byethost12.com, 0
+byethost13.com, 0
+byethost14.com, 0
+byethost15.com, 0
+byethost16.com, 0
+byethost17.com, 0
+byethost18.com, 0
+byethost22.com, 0
+byethost24.com, 0
+byethost32.com, 0
+byethost3.com, 0
+byethost7.com, 0
+byethost8.com, 0
+byethost9.com, 0
+byfen.com, 0
+byggahus.se, 0
+bygmax.dk, 0
+byside.com, 0
+bytecdn.cn, 0
+byte.fm, 0
+bytemag.ru, 0
+bz-bx.net, 0
+bzgame.cc, 0
+bzs.su, 0
+c2lab.ovh, 0
+c4dcn.com, 0
+c7sky.com, 0
+c9users.io, 0
+caac.net, 0
+caa.edu.cn, 0
+caat.org.uk, 0
+cableforum.co.uk, 0
+cabovillas.com, 0
+cadict.net, 0
+cadstudio.ru, 0
+cafe24.com, 0
+cafekado.ir, 0
+cafetadris.com, 0
+cafeyun.com, 0
+cafiu.org.cn, 0
+cai310.cn, 0
+cai88.com, 0
+caict.ac.cn, 0
+caijing.com.cn, 0
+cailianpress.com, 0
+cailiaoren.com, 0
+caimomo.com, 0
+cainiaoapp.cn, 0
+caisan.io, 0
+caixin.com, 0
+caknun.com, 0
+caktusgroup.com, 0
+calcudoku.org, 0
+calculator-imt.com, 0
+calculatorpi.com, 0
+caldera.com, 0
+californiasciencecenter.org, 0
+callbackhunter.com, 0
+calligra.org, 0
+callnote.net, 0
+calmradio.com, 0
+caltech.edu, 0
+calvarycare.org.au, 0
+calweb.com, 0
+calyptix.com, 0
+camayak.com, 0
+cambiaresearch.com, 0
+cambiaste.com, 0
+cambio.se, 0
+cambodia-airports.aero, 0
+cambsed.net, 0
+camelia.lt, 0
+camellia-sinensis.com, 0
+cameron.edu, 0
+cameronsino.com, 0
+camisetanerd.com, 0
+camlab.co.uk, 0
+camonster.com, 0
+campaignmaster.co.uk, 0
+camping.info, 0
+camping-penhoat.com, 0
+camptocamp.com, 0
+campusgifts.co.uk, 0
+campyokwe.org, 0
+canaan.io, 0
+canadianarchitect.com, 0
+cancer.gov.co, 0
+cancerimagingarchive.net, 0
+candsleads.com, 0
+candy.it, 0
+canfreee.com, 0
+cang.com, 0
+canliligtvseyret.org, 0
+canoe.ie, 0
+canpars.ca, 0
+cantr.net, 0
+can-tv.cn, 0
+can.ua, 0
+caobai.com, 0
+caogen8.co, 0
+caoliuporn.com, 0
+capeanalytics.com, 0
+capitalmadrid.com, 0
+capital-match.com, 0
+capitalsports.de, 0
+captainbook.gr, 0
+captaincontrat.com, 0
+captainverify.com, 0
+captiv8.io, 0
+captivoice.com, 0
+captureone.cn, 0
+caracter.ru, 0
+carambis.com, 0
+carambis.ru, 0
+caravaning-univers.com, 0
+cardcastgame.com, 0
+cardmarket.eu, 0
+cardpay.com, 0
+cardq.co.kr, 0
+card-sharing.ru, 0
+cardwinner.com, 0
+careerindex.jp, 0
+career.lk, 0
+careesma.in, 0
+carefy.com, 0
+careiphone.com, 0
+carfix.ru, 0
+cargeek.ir, 0
+carhire.ie, 0
+caricatura.ru, 0
+caritas.at, 0
+carlab.co.kr, 0
+carnoc.com, 0
+carpediem.cd, 0
+carptime.ru, 0
+carrefourinternet.com, 0
+carreirafashion.com.br, 0
+carsbase.com, 0
+cars.kg, 0
+cars-promo.com, 0
+carta.ro, 0
+carteblanchepartenaires.fr, 0
+cartft.com, 0
+cartridgesave.co.uk, 0
+carus-verlag.com, 0
+car.uz, 0
+casadocodigo.com.br, 0
+casaley.com.mx, 0
+casalomacollege.edu, 0
+cas.cz, 0
+case24.it, 0
+caseloadmanager.com, 0
+cash24.ru, 0
+cashlai.com, 0
+casicloud.com, 0
+casinuevo.net, 0
+caspian.aero, 0
+cass.cn, 0
+castavote.it, 0
+casting360.com, 0
+castrol-original.ru, 0
+casualgamers.club, 0
+catalinahub.net, 0
+catalysts.cc, 0
+catfan.me, 0
+catharinehill.com.br, 0
+cathay-ins.com.cn, 0
+catholic.edu.au, 0
+catie.ac.cr, 0
+catlin.edu, 0
+cattry.com, 0
+catwalkwholesale.com, 0
+cau.edu.cn, 0
+causeway.com, 0
+cavinnash.at, 0
+cawi.fr, 0
+caykaragazetesi.com, 0
+cayneshousewares.com, 0
+cazin.net, 0
+cba.pl, 0
+cbbank.com, 0
+cbc.rs, 0
+cbda.cn, 0
+cbk.waw.pl, 0
+c-brains.jp, 0
+cbri.res.in, 0
+cbsi.com, 0
+cbsig.net, 0
+ccav1.com, 0
+ccav1.me, 0
+ccav.info, 0
+ccb.com, 0
+ccc.ac, 0
+cccamonde.com, 0
+cccampass.com, 0
+ccc.de, 0
+cccm.com, 0
+cccpmo.com, 0
+cccyun.cc, 0
+ccdi.gov.cn, 0
+cce.cz, 0
+ccf.com.cn, 0
+ccgenbr.com.br, 0
+ccit.js.cn, 0
+cclonline.com, 0
+ccpph.com.cn, 0
+cctin.com, 0
+cctld.ru, 0
+cdbbank.az, 0
+cdc.im, 0
+cdcoslm.com, 0
+cdeway.com, 0
+cdfgj.gov.cn, 0
+cdischina.com, 0
+cdmarf.ru, 0
+cdm.org, 0
+cdn3x.com, 0
+cdnbetcity.com, 0
+cdrinfo.pl, 0
+cds.spb.ru, 0
+cdu.edu.ua, 0
+cdut.edu.cn, 0
+cdvcloud.com, 0
+cdvpodarok.ru, 0
+cea.gov.cn, 0
+ceair.com, 0
+ceamadeus.com, 0
+cecb2b.com, 0
+ce.cn, 0
+cedarhd.com, 0
+cedrus.hu, 0
+ceeji.net, 0
+cefa.com, 0
+ce.gov.br, 0
+ceh9.tv, 0
+cehome.com, 0
+cei.com.cn, 0
+cekid.com, 0
+ceknito.cz, 0
+ceknito.sk, 0
+celakaja.lv, 0
+celemony.com, 0
+celera-group.com, 0
+celesc.com.br, 0
+celignes.com, 0
+cellstat.net, 0
+celulardireto.com.br, 0
+censhare.com, 0
+censys.io, 0
+centaline.com.cn, 0
+center-inform.ru, 0
+centeva.com, 0
+cention.se, 0
+centiumsoftware.com, 0
+centminmod.com, 0
+centracom.com, 0
+centralclubs.com, 0
+centralhealth.com.hk, 0
+centralmenu.com.pt, 0
+centralpark.com, 0
+centralstationcrm.net, 0
+centredeliquidationduquebec.com, 0
+centreon.com, 0
+centriohost.com, 0
+centroimpiego.it, 0
+centrora.com, 0
+centrzaimov.ru, 0
+cenynadne.sk, 0
+cephaiti.ht, 0
+cephastanesi.org, 0
+ceph.org.cn, 0
+ceramique.com, 0
+cerfrance.fr, 0
+certbase.de, 0
+certissim.com, 0
+certitudes.org, 0
+cert.org.cn, 0
+cesan.com.br, 0
+cesanta.com, 0
+cesareox.com, 0
+cesco.co.kr, 0
+ces.edu.uy, 0
+cesurformaciononline.com, 0
+cetc.com.cn, 0
+cetera.ru, 0
+ceu.edu.ph, 0
+ceva.com, 0
+ceve-market.org, 0
+cev.lu, 0
+cez.cz, 0
+cez.ro, 0
+cezurity.com, 0
+cf2016.ru, 0
+cfdsupport.com, 0
+cfei.net, 0
+cfldcn.com, 0
+cflex.com, 0
+cfpd.org.cn, 0
+cg976.fr, 0
+cgilfe.it, 0
+cgil.it, 0
+cgpersia.ru, 0
+cgs.gov.cn, 0
+cgu.edu.tw, 0
+chachazhan.com, 0
+chacuo.net, 0
+chadis.com, 0
+chaicp.com, 0
+chainfire.eu, 0
+chains.cc, 0
+chainsea.com.tw, 0
+chain.so, 0
+chaiwubi.com, 0
+chalmers.se, 0
+chal-tec.com, 0
+chamonet.com, 0
+championat.asia, 0
+championscubestore.com, 0
+chamwings.com, 0
+chancheng.gov.cn, 0
+chandashi.com, 0
+chanet.com.cn, 0
+changan.com.cn, 0
+changba.com, 0
+change38.ch, 0
+changeip.net, 0
+changingedu.com, 0
+changyou.com, 0
+chanjet.com, 0
+channeli.in, 0
+chanpin100.com, 0
+chaosforge.org, 0
+chaoshanw.cn, 0
+chapaiming.com, 0
+charogh.com, 0
+charter.com, 0
+chartrank.com, 0
+chat2desk.com, 0
+chataoke.com, 0
+chat-brasil.com, 0
+chatcity.de, 0
+chat-pt.com, 0
+chatruletka.com, 0
+chattermill.io, 0
+chatti.de, 0
+chaturbate.com.br, 0
+chatworld.de, 0
+chaxuntu.com, 0
+chb.com.tw, 0
+chcivyhodnejsienergie.cz, 0
+chdbits.vip, 0
+chd.edu.cn, 0
+che300.com, 0
+cheapjerseysfree.com, 0
+cheatcodesiosandroid.com, 0
+cheatorhackgames.com, 0
+cheatsandhack.info, 0
+cheatsgamehack.info, 0
+chebaba.com, 0
+chebao.com.cn, 0
+checknow.co.uk, 0
+cheers.com.tw, 0
+chefpartyswinger.com, 0
+cheladmin.ru, 0
+chelcenter.ru, 0
+chelm.pl, 0
+chel.ru, 0
+chem99.com, 0
+chemistry.org.tw, 0
+chemweb.com, 0
+chengduair.cc, 0
+chengdu.cn, 0
+chengniu.com, 0
+chengzivr.com, 0
+chennaihalls.in, 0
+chenxingweb.com, 0
+chenyudong.com, 0
+cherinfo.ru, 0
+chernigiv-rada.gov.ua, 0
+cheros.ru, 0
+chers.com.ua, 0
+cherubicsoft.com, 0
+cheryjaguarlandrover.com, 0
+chesspuzzle.net, 0
+chess-samara.ru, 0
+chevy-clan.ru, 0
+chexch.com, 0
+chexiu.cn, 0
+chgaki.ru, 0
+chgik.ru, 0
+chiapas.gob.mx, 0
+chia.ua, 0
+chickenkiller.com, 0
+chicrank.ir, 0
+childdevelop.com.ua, 0
+chiletrabajos.cl, 0
+chillglobal.com, 0
+chinaar.com, 0
+chinabluemix.net, 0
+chinacache.com, 0
+chinacardpos.com, 0
+china-cba.net, 0
+chinachugui.com, 0
+chinacloudapi.cn, 0
+chinacloudapp.cn, 0
+chinacloudsites.cn, 0
+china.com.cn, 0
+chinadaily.com.cn, 0
+chinadance.cn, 0
+chinaeducationexpo.com, 0
+chinaemail.cn, 0
+china-entercom.com, 0
+chinahr.com, 0
+chinahrt.com, 0
+chinamobile.com, 0
+chinancce.com, 0
+chinanetcenter.com, 0
+chinaoct.com, 0
+chinaopple.com, 0
+chinapiwei.com, 0
+chinaports.com, 0
+china-post-track.com, 0
+chinasalestore.com, 0
+china-shftz.gov.cn, 0
+chinaums.com, 0
+chinaunicom.cn, 0
+chinayasha.com, 0
+chineseall.cn, 0
+chinesecio.com, 0
+chinesegamer.net, 0
+chinesetest.cn, 0
+chinlingo.com, 0
+chint.com, 0
+chipfind.ru, 0
+chipic.ir, 0
+chitaitext.ru, 0
+chither.com, 0
+chkaja.com, 0
+chnlanker.com, 0
+chocolissimo.de, 0
+choices360.com, 0
+choisirsonfioul.fr, 0
+chongmoa.com, 0
+chopacho.ru, 0
+chordshub.com, 0
+chorus.ai, 0
+chrdk.ru, 0
+chrihani.com, 0
+chrishogan360.com, 0
+christenenvoorisrael.nl, 0
+christianliebel.com, 0
+christian-luetgens.de, 0
+chronicle.co.zw, 0
+chroniclejournal.com, 0
+chsu.ru, 0
+chtodelat.com, 0
+chuangkit.com, 0
+chuangkoo.com, 0
+chuanke.com, 0
+chu-dijon.fr, 0
+chudobilet.ru, 0
+chudu24.com, 0
+chuhai.edu.hk, 0
+chuhai.hk, 0
+chujianapp.com, 0
+chunk.com.cn, 0
+chuvsu.ru, 0
+chuyhiep.net, 0
+chv.ua, 0
+chytryhonza.cz, 0
+chzu.edu.cn, 0
+ci123.com, 0
+cib.com.cn, 0
+ci-bi.ru, 0
+cicams.ac.cn, 0
+cicon.ru, 0
+cidcode.net, 0
+ciencia-ficcion.com, 0
+ciftlikbank.com, 0
+cifttik.com, 0
+cig.com.cn, 0
+cik.bg, 0
+cimb.com, 0
+cimex.com.cu, 0
+cimt.de, 0
+cindasc.com, 0
+cinecoffee.com, 0
+cinemacity.hu, 0
+cinemapark.ru, 0
+cinematik.net, 0
+cinestarcinemas.rs, 0
+cinoherniklub.cz, 0
+ciob.org, 0
+cipcipstore.it, 0
+ciper.cl, 0
+cipf.es, 0
+circuitodejerez.com, 0
+circulaire-en-ligne.ca, 0
+cirici.com, 0
+ciscoexam.online, 0
+cislink.com, 0
+citadele.lt, 0
+citationprocessingcenter.com, 0
+cit.edu.tw, 0
+citicsf.com, 0
+citictel-cpc.com, 0
+citrio.com, 0
+cits.br, 0
+citsgbt.com, 0
+cittadellasalute.to.it, 0
+cityads.com, 0
+citygf.com, 0
+city.kharkov.ua, 0
+cityshop.com.cn, 0
+citytaxi.az, 0
+city-wohnen.de, 0
+ciu20.org, 0
+ciuvo.com, 0
+civey.com, 0
+civilavia.info, 0
+cizgi.com.tr, 0
+cjh.com.cn, 0
+cjlu.edu.cn, 0
+cjwsjy.com.cn, 0
+ck12info.org, 0
+ck180.com, 0
+ckclouds.com, 0
+ck-modelcars.de, 0
+clammr.com, 0
+clang.cn, 0
+clans.de, 0
+clansweb.com, 0
+clarin.com, 0
+clark-chen.com, 0
+clarocloud.co.za, 0
+classicalarchives.com, 0
+classic-gaming.net, 0
+classit.ro, 0
+classmethod.info, 0
+clayboxltd.com, 0
+clayesmore.com, 0
+cleanenergywire.org, 0
+cleanlinesurf.com, 0
+cleanpix.com, 0
+cleanvoice.ru, 0
+clearcast.co.uk, 0
+clearch.org, 0
+clear-code.com, 0
+clearscore.com, 0
+clearwebstats.com, 0
+clemensotto.com, 0
+cles.jp, 0
+cleveroad.com, 0
+cleversite.ru, 0
+cleversubtitles.ru, 0
+clewm.net, 0
+clickad.info, 0
+clickers.info, 0
+clickpayment.ir, 0
+click.uz, 0
+clickview.com.au, 0
+cliclavoroveneto.it, 0
+client-shop-logistics.ru, 0
+client.xzn.ir, 0
+cli.im, 0
+clilk.com, 0
+climate-kic.org, 0
+clinicbuddy.com, 0
+clio.it, 0
+clip.af, 0
+clippersync.com, 0
+clir.org, 0
+clockshop.ru, 0
+cloud4you.biz, 0
+cloud4y.ru, 0
+cloud86.cn, 0
+cloudapp.net, 0
+cloudcampus.cc, 0
+cloudcc.com, 0
+clouddn.com, 0
+cloudfire.ir, 0
+cloudfront.net, 0
+cloud.geek.nz, 0
+cloudin.cn, 0
+cloudlinux.com, 0
+cloudme.com, 0
+cloud-mine.online, 0
+cloudns.cc, 0
+cloudonaut.io, 0
+cloudparse.com, 0
+cloudrexx.com, 0
+cloudrino.net, 0
+cloudron.io, 0
+cloudsite.ir, 0
+cloudsmart.lu, 0
+cloudsms.com.ng, 0
+cloudsplus.com.cn, 0
+clouds.tf, 0
+cloudtv.bz, 0
+cloudvhost.cn, 0
+cloudware.jp, 0
+cloudxink.com, 0
+club3.cf, 0
+clubdesavantages.fr, 0
+clubs1.bg, 0
+clutchpoints.com, 0
+clzg.cn, 0
+cmaritime.com.cn, 0
+cmbi.com.hk, 0
+cmc.gv.ao, 0
+cmcnu.or.kr, 0
+cmeiwei.com, 0
+cmfchina.com, 0
+cmgame.com, 0
+cmgine.net, 0
+cml.pt, 0
+cmlt.ru, 0
+cmonitor.pl, 0
+cmscafe.ru, 0
+cms.gov.af, 0
+cms-guide.com, 0
+cm-sintra.pt, 0
+cmsky.com, 0
+cmtt.ru, 0
+cmu.ac.th, 0
+cmu.edu, 0
+cmu-edu.eu, 0
+cnaidai.com, 0
+cnbb.com.cn, 0
+cnblogs.com, 0
+cnbluebox.com, 0
+cncf.io, 0
+cndhl.com, 0
+cnexps.com, 0
+cnfeol.com, 0
+cngaosu.com, 0
+cngold.org, 0
+cn-healthcare.com, 0
+cnhnb.com, 0
+cnhubei.com, 0
+cnic.cn, 0
+cnki.net, 0
+cnkrl.cn, 0
+cnl.sk, 0
+cnl.su, 0
+cnl.tv, 0
+cnoa.cn, 0
+cnooc.com.cn, 0
+cnool.net, 0
+cnpatent.com, 0
+cnpq.br, 0
+cnprint.org, 0
+cnpzhe.com, 0
+cnr.cn, 0
+cnseay.com, 0
+cnsecer.com, 0
+cnshb.ru, 0
+cnsuning.com, 0
+cnsuning.com.hk, 0
+cntaiping.com, 0
+cnte.tn, 0
+cnt.my, 0
+cntraveller.ru, 0
+cntv.cn, 0
+cnxct.com, 0
+cnx-software.com, 0
+coaching-foot.com, 0
+coap.kz, 0
+cocha.com, 0
+cocobongo.com, 0
+cocoking.info, 0
+cocoleech.com, 0
+codacy.com, 0
+co.de, 0
+codeaurora.org, 0
+codebeer.ru, 0
+codebox.ir, 0
+codecanyonwp.com, 0
+codecasts.com.br, 0
+codeclic.com, 0
+codeforge.cn, 0
+codeforge.com, 0
+codefresh.io, 0
+code-industry.net, 0
+codelife.me, 0
+codemao.cn, 0
+coderknock.com, 0
+coder-note.com, 0
+code-route.info, 0
+coding-academy.fr, 0
+coding.io, 0
+coduka.de, 0
+coffee-butik.ru, 0
+cofina.pt, 0
+cofm.es, 0
+cofpo.org, 0
+coi.cz, 0
+coinflux.com, 0
+coinjar.com, 0
+coinjar.com.au, 0
+coinkeeper.me, 0
+coinpalace.io, 0
+coinsbank.com, 0
+coins.su, 0
+coinsup.com, 0
+colasoft.com, 0
+colasoft.com.cn, 0
+colbeh.ir, 0
+coldline.hu, 0
+colettehq.com, 0
+colibri.io, 0
+collabora.com, 0
+collaboraoffice.com, 0
+collaborative.org, 0
+collect.ai, 0
+collectivefab.com, 0
+collegeblondin.qc.ca, 0
+collegemarching.com, 0
+collibra.com, 0
+collsk12.org, 0
+colobot.info, 0
+coloproperty.com, 0
+color.com, 0
+colornumbers.ru, 0
+color-print39.ru, 0
+colourlife.com, 0
+colproba.org.ar, 0
+coma.lv, 0
+com.be, 0
+combowombo.ru, 0
+combr.ru, 0
+comein.sk, 0
+comeitaliani.it, 0
+comelite-arch.com, 0
+comelz.com, 0
+comeremcasa.com, 0
+comfone.com, 0
+comicool.cn, 0
+comics-porno.ru, 0
+com.kz, 0
+comlan.com, 0
+comli.com, 0
+comlu.com, 0
+commaster.net, 0
+commcenter.es, 0
+commerceduniya.com, 0
+commonhealth.com.tw, 0
+commonkindness.com, 0
+commotionwireless.net, 0
+comm-tec.de, 0
+communications.support, 0
+compagniedumontblanc.fr, 0
+companeo.be, 0
+companeo.com, 0
+compariimobiliare.ro, 0
+compass.education, 0
+compassplus.ru, 0
+complexityexplorer.org, 0
+comptable-en-ligne.fr, 0
+compulab.co.il, 0
+compumatrix.co, 0
+compumatrix.us.com, 0
+compumed.com.my, 0
+compusoluciones.com, 0
+computerads.ir, 0
+computershop.pisa.it, 0
+computrabajo.com, 0
+computrabajo.com.hn, 0
+com.se, 0
+comss.ru, 0
+comstats.de, 0
+comtech.com.cn, 0
+comtradeshop.com, 0
+comune.siena.it, 0
+comxa.com, 0
+conanwiki.org, 0
+concordemed.com, 0
+conde.com, 0
+condenast.co.uk, 0
+condenast.ru, 0
+confessionsofahomeschooler.com, 0
+confmaster.net, 0
+conglinnet.com, 0
+congm.in, 0
+connectedly.com, 0
+connectify.com, 0
+connectify.me, 0
+co.no, 0
+conpoint.com, 0
+conseil-config.com, 0
+conseq.cz, 0
+conservatoriotorino.gov.it, 0
+construction411.com, 0
+consulimus.de, 0
+consultant.ru, 0
+consumerscompare.org, 0
+contabo.host, 0
+contactlab.com, 0
+conta.mobi, 0
+contao.org, 0
+conte.by, 0
+content-cooperation.com, 0
+continentalcarbonic.com, 0
+contractiq.com, 0
+contragents.ru, 0
+controlerp.org, 0
+controletechniquegratuit.com, 0
+converter.cz, 0
+convex.ru, 0
+coobar.com, 0
+coodoor.com, 0
+coohua.com, 0
+cook-key.de, 0
+cook-key.it, 0
+coolapk.com, 0
+coolapkmarket.com, 0
+coolbaby.ru, 0
+coolion.com, 0
+coolnull.com, 0
+coolyun.com, 0
+coop-game.com, 0
+coop.py, 0
+coore.jp, 0
+copasa.com.br, 0
+copel.net, 0
+copiny.com, 0
+coppenrath-wiese.de, 0
+copr.cn, 0
+co.pt, 0
+copybet.com, 0
+copy.sh, 0
+copytrack.com, 0
+coracle.com, 0
+coradir.com.ar, 0
+coral-club.com, 0
+cordoba.es, 0
+corecodec.com, 0
+coreinfrastructure.org, 0
+corelan.be, 0
+corenominal.org, 0
+corepacks.com, 0
+core-rpg.net, 0
+cornell.edu, 0
+corrections.govt.nz, 0
+corsocomo.com, 0
+cortona3d.com, 0
+co.ru, 0
+cosmobase.ru, 0
+cosmos.ru, 0
+cotonti.com, 0
+counsellingresource.com, 0
+countryclubworld.com, 0
+countrygarden.com.cn, 0
+couponkun.jp, 0
+coursinformatiquepdf.com, 0
+cowlevel.net, 0
+co.za, 0
+cp247.net, 0
+cpanel.ir, 0
+cpapd.org.cn, 0
+cp.com.cn, 0
+cpc.vn, 0
+cpic.com.cn, 0
+cplusplus.me, 0
+cpmchina.co, 0
+cpnv.ch, 0
+cpoc.cn, 0
+cppcc.gov.cn, 0
+cprsweb.com, 0
+cpsite.ru, 0
+cpygames.com, 0
+cq118.com, 0
+cqgh.org, 0
+cqjtu.edu.cn, 0
+cqnews.net, 0
+cqsq.com, 0
+cqtimes.cn, 0
+cqu.edu.cn, 0
+cqupt.edu.cn, 0
+cr911.ru, 0
+cra0vision.net, 0
+crackberry.com, 0
+crack-cheat.ru, 0
+crackhogar.com, 0
+crackingking.com, 0
+craftmann.ru, 0
+crate.io, 0
+craym.eu, 0
+crazycen.com, 0
+crazyguyonabike.com, 0
+crazyhotseeds.com, 0
+crb-dnr.ru, 0
+crcc.cn, 0
+crc.com.cn, 0
+crc.com.hk, 0
+crdclub.su, 0
+creagames.com, 0
+creartest.com, 0
+createjs.cc, 0
+createsurvey.ru, 0
+creativcdn.net, 0
+credit2go.cn, 0
+credit-card.ru, 0
+creditchina.gov.cn, 0
+creditolo.de, 0
+crediton.ge, 0
+creditonline.hu, 0
+crediton.lv, 0
+crefal.edu.mx, 0
+cretaforce.gr, 0
+crevalue.cn, 0
+cribs.me, 0
+cri.cn, 0
+crictracker.com, 0
+crimea.com, 0
+crimea.ru, 0
+criogenizado.com, 0
+crisp.im, 0
+crm-simple.com, 0
+crmtipoftheday.com, 0
+crn.ru, 0
+croc-informatique.fr, 0
+croc.ru, 0
+crocus-hall.ru, 0
+croix-rouge.fr, 0
+cronista.com, 0
+cronobet.com, 0
+cronodeal.ch, 0
+croppola.com, 0
+cross-area.com, 0
+crouse.org, 0
+crous-toulouse.fr, 0
+crowdtangle.com, 0
+crsc.cn, 0
+crt.ru, 0
+crtslt.com, 0
+cruisingworld.com, 0
+cruzados.cl, 0
+crypters.ru, 0
+cryptogods.net, 0
+cryptomator.org, 0
+cryptshare.com, 0
+crystalvoice.sg, 0
+cs12333.com, 0
+csa.fr, 0
+csair.com, 0
+csbaonline.org, 0
+cscec.com, 0
+csc.fi, 0
+cs.co.nz, 0
+csdb.cn, 0
+csd.org.tw, 0
+cse.ru, 0
+csf.fr, 0
+csfunds.com.cn, 0
+csg.cn, 0
+csgoblaze.com, 0
+csgo.com, 0
+csgodestroy.com, 0
+csgofast.com, 0
+csgo-fate.ru, 0
+csgogamers.com, 0
+csgohouse.org, 0
+csgola.com, 0
+csgoloot.com, 0
+csgoshop.com, 0
+csgo.tm, 0
+csh.org.tw, 0
+cshr.com.cn, 0
+cshrss.gov.cn, 0
+cs-htc.com, 0
+csicr.cz, 0
+csie.org, 0
+csi.it, 0
+csi-net.it, 0
+cska.ru, 0
+cskin.net, 0
+csldbz.gov.cn, 0
+cslg.cn, 0
+csmania.ru, 0
+csna.cn, 0
+csob.sk, 0
+csopa.hu, 0
+csrc.ac.cn, 0
+csrc.gov.cn, 0
+csroller.ru, 0
+cssbuy.com, 0
+csscompressor.com, 0
+csserv.ru, 0
+csswg.org, 0
+cstnet.cn, 0
+c-stud.ru, 0
+csumentor.edu, 0
+csvt.qc.ca, 0
+csvw.com, 0
+ct10000.com, 0
+ct8.pl, 0
+ctfeshop.com.cn, 0
+ctfmall.com, 0
+cto1.ru, 0
+ctolib.com, 0
+ctrip.com, 0
+ctrlworks.com, 0
+c-t-s.ru, 0
+ctx.zone, 0
+cubalan.com, 0
+cubeisland.de, 0
+cubingchina.com, 0
+cuc.ac.jp, 0
+cuca.co.ao, 0
+cuccfree.com, 0
+cuc.edu.cn, 0
+cu-elbayadh.dz, 0
+cuentosparadormir.com, 0
+cuevana-movil.com, 0
+cuhk.edu.hk, 0
+cuintouch.com, 0
+cuiqingcai.com, 0
+cuizituan.com, 0
+cuk.pl, 0
+cultizone.fr, 0
+cu.ma, 0
+cumt.edu.cn, 0
+cupcakeproject.com, 0
+cupet.cu, 0
+cup.ir, 0
+cure53.de, 0
+curitzjt.cf, 0
+currencyrate.today, 0
+curriculum-web.com, 0
+curs.md, 0
+cursomeca.com, 0
+cuspy.org, 0
+customs4u.com, 0
+customs.ru, 0
+cuteness.com, 0
+cutestat.com, 0
+cutv.com, 0
+cv.ee, 0
+cv.lv, 0
+cvmc.org, 0
+cvonline.lt, 0
+cvp.com, 0
+cvte.com, 0
+cvut.cz, 0
+cw1.tw, 0
+cwbook.com.tw, 0
+cw.com.tw, 0
+cwdsellier.com, 0
+cwt-online.com.cn, 0
+cx580.com, 0
+cxcyds.com, 0
+cxhxrz.com, 0
+cxstar.com, 0
+cybercrime.gov.ua, 0
+cyberdefense.jp, 0
+cyberduck.io, 0
+cybergun.it, 0
+cyberoam.com, 0
+cyberprofs.com, 0
+cybersitter.com, 0
+cybo.com, 0
+cyclestore.com.es, 0
+cyclestore.co.uk, 0
+cycleworld.com, 0
+cycloneshockey.com, 0
+cycu.edu.tw, 0
+cyklobazar.cz, 0
+cyolito.com, 0
+cyotek.com, 0
+cyscorpions.com, 0
+cytbj.com, 0
+cyut.edu.tw, 0
+czcg.com, 0
+czech.cz, 0
+czechgames.com, 0
+czech-games.net, 0
+czechia.com, 0
+cz-pes.cz, 0
+czsmk.com, 0
+czxiu.com, 0
+d2fan.com, 0
+dabtc.com, 0
+dactylocours.com, 0
+dadaabc.com, 0
+dadacps.com, 0
+dadasoft.net, 0
+daddyleagues.com, 0
+dadget.ru, 0
+daewooenc.com, 0
+daewoong.co.kr, 0
+dafabet.com, 0
+dafangya.com, 0
+dafangya.com.cn, 0
+daft.ie, 0
+dahe.cn, 0
+dahuangbbs.com, 0
+dahuatech.com, 0
+dahuitu.net, 0
+daichuqu.com, 0
+daily-movies.ch, 0
+dailynews.co.th, 0
+dailystandard.com, 0
+dairyfarmgroup.com, 0
+dajia365.com, 0
+dajie.com, 0
+dalasterisk.com, 0
+dalcroze.ch, 0
+dalegames.com, 0
+daling.com, 0
+dalinuosi.lt, 0
+damailicai.com, 0
+dameiketang.com, 0
+damochka.ru, 0
+danar.ru, 0
+danbistore.com, 0
+danceconvention.net, 0
+daneiakartes.info, 0
+danet.vn, 0
+dangbei.com, 0
+dangdang.com, 0
+danilova.pro, 0
+dankstop.com, 0
+dan.me.uk, 0
+danmuji.cn, 0
+dannysite.com, 0
+dansezza.ru, 0
+daoiqi.com, 0
+daojia.com, 0
+daojia.com.cn, 0
+daojia-inc.com, 0
+daoyoudao.com, 0
+dapa.ir, 0
+daparto.de, 0
+dapenti.com, 0
+dapiniu.com, 0
+dapmalaysia.org, 0
+dapurcokelat.com, 0
+daren.pro, 0
+daricheno.com, 0
+darkbyte.ru, 0
+darkko.net, 0
+darklight.online, 0
+dark-night.me, 0
+darkseed.fr, 0
+darksidecc.com, 0
+darktech.org, 0
+dark-time.com, 0
+daroo.by, 0
+daroo.ru, 0
+da.ru, 0
+daryo.uz, 0
+dasannetworks.com, 0
+dataart.com, 0
+datacaciques.com, 0
+datacave.ch, 0
+dataexpress.com.tw, 0
+datagate.ee, 0
+data.gouv.fr, 0
+data.gov.hk, 0
+datagroup.ua, 0
+datakrat.ru, 0
+dataobject.hu, 0
+datapath.io, 0
+dataspeex.de, 0
+datastory.com.cn, 0
+datayes.com, 0
+datayuan.cn, 0
+datazucar.cu, 0
+datek.cn, 0
+datepanchang.com, 0
+datys.cu, 0
+daukce.cz, 0
+daunix.com, 0
+dautermann.io, 0
+daveramsey.com, 0
+davidrm.com, 0
+davidshuttle.com, 0
+davinciapps.com, 0
+davin.work, 0
+davispolk.com, 0
+davra.uz, 0
+dawang.tv, 0
+dawsoncollege.qc.ca, 0
+daxx.com, 0
+daybet24.com, 0
+daybuy.tw, 0
+daycare.com, 0
+daydao.com, 0
+dayezhifu.com, 0
+dayhr.com, 0
+dayin.la, 0
+daythem.edu.vn, 0
+dazzlepod.com, 0
+dba-china.com, 0
+dbappsecurity.com.cn, 0
+dbbest.com, 0
+dbelyaev.ru, 0
+dbface.com, 0
+dbpayment.com, 0
+dbscar.com, 0
+dc.gov, 0
+dcits.com, 0
+dcservices.in, 0
+dctp.tv, 0
+ddc.ac.kr, 0
+dd-dns.de, 0
+ddelivery.ru, 0
+ddit.ac.in, 0
+ddky.com, 0
+ddn.com, 0
+ddnsfree.com, 0
+ddns.info, 0
+ddnsking.com, 0
+ddns.me, 0
+ddns.ms, 0
+ddnss.de, 0
+ddns.us, 0
+ddoddotv.com, 0
+ddo.jp, 0
+ddol.es, 0
+ddoong2.com, 0
+ddpai.com, 0
+de1.cc, 0
+deaftone.com, 0
+dealber.gr, 0
+dealhaitao.com, 0
+deals.mu, 0
+deanza.edu, 0
+dearii.com, 0
+deartanker.com, 0
+deathgrind.club, 0
+debate.com.mx, 0
+debeste.de, 0
+debian-facile.org, 0
+debianforum.ru, 0
+debian-handbook.info, 0
+debian.net, 0
+debtcc.com, 0
+debugme.eu, 0
+de-clic.ro, 0
+decofire.pl, 0
+decoriko.ru, 0
+dedibox.fr, 0
+dedicated.co.za, 0
+dedizones.com, 0
+dedyn.io, 0
+deelkall.com, 0
+deeper.eu, 0
+deepgram.com, 0
+deepin.org, 0
+deepoon.com, 0
+deepss.co, 0
+defcon.ru, 0
+defo.ru, 0
+defre.be, 0
+deg.net, 0
+deichbrand.de, 0
+dejoris.de, 0
+del.ac.id, 0
+delaempokupki.ru, 0
+delfi.ee, 0
+delfi.lt, 0
+delfi.lv, 0
+delhivery.com, 0
+deliveryhero.com, 0
+deliverymuch.com.br, 0
+dell-brand.com, 0
+delmagyar.hu, 0
+deloks.ru, 0
+delovoymir.biz, 0
+delovoy-saransk.ru, 0
+delsa.net, 0
+delta.com.tw, 0
+deltacredit.ru, 0
+delwi-itr.de, 0
+demiart.ru, 0
+demirbank.az, 0
+demis.ru, 0
+demohoster.com, 0
+demoup.com, 0
+denascorp.ru, 0
+denbusiness.ru, 0
+dengivsem.com, 0
+denibertovic.com, 0
+denkwerk.com, 0
+dentaid.es, 0
+dentalspeedgraph.com.br, 0
+deondernemer.nl, 0
+de-oosterpoort.nl, 0
+depit.ru, 0
+depna.com, 0
+depositphotos.com, 0
+deppon.com, 0
+derbysoft.com, 0
+derev-grad.ru, 0
+derinat.ru, 0
+dermustermann.de, 0
+desamais.fr, 0
+descendentstudios.com, 0
+desc-wondo.org, 0
+designeroutlets-wolfsburg.de, 0
+design-hero.ru, 0
+design-sites.ru, 0
+desu.me, 0
+detective-conan-vostfr.info, 0
+detivgorode.ua, 0
+detoatepentrutoti.ro, 0
+detsky-mir.com, 0
+dev2.in, 0
+devbean.net, 0
+devel.cz, 0
+devicelock.com, 0
+devinotele.com, 0
+deviq.com, 0
+deviserweb.com, 0
+devochki-i-igry.ru, 0
+devoffice.com, 0
+devsmm.com, 0
+devuan.org, 0
+dewaele.com, 0
+dezhou.gov.cn, 0
+dezinfo.net, 0
+dfacture.com, 0
+dfb365.com, 0
+df.gov.br, 0
+dfss.com.cn, 0
+dftb.cn, 0
+dg.gov.cn, 0
+dgphoenix.com, 0
+dgprocast.com, 0
+dgso.cn, 0
+dgut.edu.cn, 0
+dgx.io, 0
+dhammacitta.org, 0
+dhb168.com, 0
+dhcp.com.br, 0
+dh.hu, 0
+dhis2.org, 0
+dhs.org, 0
+dhu.edu.cn, 0
+dhyhost.com, 0
+diakoweb.com, 0
+dialnice.info, 0
+diamondkeys.ru, 0
+diandianzu.com, 0
+dian.fm, 0
+dianhun.cn, 0
+dianjia.com, 0
+dianjoy.com, 0
+dianlujitao.com, 0
+dianrui.com, 0
+dianxiaomi.com, 0
+diaox2.com, 0
+diaoyuweng.com, 0
+diarioeltiempo.com.ar, 0
+diarioregistrado.com, 0
+diasporafoundation.org, 0
+dibpak.com, 0
+dicholding.com, 0
+dicoding.com, 0
+diconium.com, 0
+didatrip.com, 0
+diddlefinger.com, 0
+di-digo.com, 0
+didispace.com, 0
+didtheyreadit.com, 0
+didww.com, 0
+didyoumean-generator.com, 0
+die-auto-welt.de, 0
+diedart1.com, 0
+diederichs.com, 0
+diego.hu, 0
+dieselaccess.com, 0
+dieteren.be, 0
+die-tier-welt.com, 0
+digger-online.ru, 0
+digiboy.ir, 0
+digicom.net.ua, 0
+digiexam.com, 0
+digiexam.se, 0
+digift.ru, 0
+digikam.org, 0
+digik.ir, 0
+digitalcourage.de, 0
+digitaldruid.net, 0
+digitalero.rip, 0
+digital-forest.info, 0
+digitalmarketing.jp, 0
+digitalpad.co.jp, 0
+digitas.fr, 0
+digitellmobile.com, 0
+digito.com.tw, 0
+digix.io, 0
+dilekecza.com, 0
+dimensiondata.cloud, 0
+dimonvideo.ru, 0
+dinamicbet.com, 0
+dinaserver.com, 0
+dingdone.com, 0
+dingtalk.com, 0
+dinnerqueen.net, 0
+diocese-frejus-toulon.com, 0
+diocesismalaga.es, 0
+dior.cn, 0
+dipacademy.ru, 0
+dipaul.ru, 0
+dip.jp, 0
+diploma.de, 0
+directcall.com.br, 0
+directemar.cl, 0
+directgames.co.kr, 0
+directg.net, 0
+directnews.gr, 0
+directoriocubano.info, 0
+directoriodelosaltos.net, 0
+directpay.ir, 0
+directreal.sk, 0
+dirindirin.com, 0
+dirox.net, 0
+dirteam.com, 0
+dirtrider.com, 0
+discharge.be, 0
+discotek.club, 0
+discoworld.dk, 0
+disfilm.cz, 0
+diskingressos.com.br, 0
+diskret.de, 0
+diskstation.eu, 0
+diskstation.me, 0
+displayfusion.com, 0
+distance.ru, 0
+districenter.es, 0
+ditujiupian.com, 0
+dituwuyou.com, 0
+diulas.com, 0
+diva-e.com, 0
+diveinedu.com, 0
+divineengine.xyz, 0
+divteam.com, 0
+diychina.org, 0
+diyidan.com, 0
+diyidan.net, 0
+dj66.net, 0
+djcity.com.au, 0
+djdelivery.com, 0
+djduoduo.com, 0
+djfansub.com, 0
+djicorp.com, 0
+djjuniores.com, 0
+dj.ru, 0
+djv.de, 0
+djvu-pdf.com, 0
+djzmz.org, 0
+dk.kz, 0
+dlang.org, 0
+dle-news.ir, 0
+dlinkddns.com, 0
+dlinnov.com, 0
+dlsite.com.tw, 0
+dlt.com, 0
+dm930.com, 0
+dmall.com, 0
+dmc.de, 0
+dm.center, 0
+dmeng.net, 0
+dmnico.cn, 0
+dmww.com, 0
+dndz.tv, 0
+dnevnik.ru, 0
+dniproavia.com, 0
+dnpr.com.ua, 0
+dnr24.su, 0
+dnrsovet.su, 0
+dnsalias.com, 0
+dnsalias.org, 0
+dnsbil.com, 0
+dns.com.cn, 0
+dnscrypt.org, 0
+dns-dns.com, 0
+dnsisp.net, 0
+dnspai.com, 0
+dnsrv.ru, 0
+dnswa.com, 0
+dns.watch, 0
+do1.com.cn, 0
+dobavim.ru, 0
+dobot.cc, 0
+dobreobaly.cz, 0
+docdoc.ru, 0
+docer.com, 0
+dockerapp.io, 0
+docland.ru, 0
+docscrewbanks.com, 0
+docs-for-me.ru, 0
+doctorbormental.ru, 0
+doctorcom.com, 0
+doctormckay.com, 0
+doctorspring.com, 0
+doctrine.fr, 0
+doctu.ru, 0
+documentfoundation.org, 0
+dodohome.com.tw, 0
+dodopal.com, 0
+do.edu.ru, 0
+doefiratv.org, 0
+dogechain.info, 0
+dogovor24.kz, 0
+doguselektrik.com.tr, 0
+doido.ru, 0
+doi.gov, 0
+doity.com.br, 0
+dojobsonline.com, 0
+dojos.org, 0
+doki.co, 0
+dokipedia.ru, 0
+doktordanhaberler.com, 0
+doktornarabote.ru, 0
+dolabank.com, 0
+dollaruz.com, 0
+dolopo.net, 0
+dolorescannon.com, 0
+dom2-lifes.info, 0
+domain.by, 0
+domaintescil.com, 0
+domashke.net, 0
+dom-decora.ru, 0
+domeny.tv, 0
+domex.do, 0
+dominicos.org, 0
+dominos.by, 0
+dominos.com.do, 0
+dominos.ua, 0
+domirobot.com, 0
+dom-land.com, 0
+domob.cn, 0
+domobile.com, 0
+domovid.ru, 0
+domovina.je, 0
+domtain.de, 0
+domtele.com, 0
+donationalerts.ru, 0
+donfishback.com, 0
+dongao.com, 0
+dongeejiao.com, 0
+dongjiang.com.cn, 0
+dongshun3d.com, 0
+dongyoungsang.com, 0
+donjons-tresors.com, 0
+donland.ru, 0
+donnons.org, 0
+donya-digital.com, 0
+dooa.com, 0
+dooland.com, 0
+doppelkopf-palast.de, 0
+doraemoney.com, 0
+dorama.asia, 0
+doremir.com, 0
+dornanet.net, 0
+dornbracht.com, 0
+doroga.tv, 0
+dor.org, 0
+dorsafamily.ir, 0
+doska.chita.ru, 0
+dosnap.com, 0
+dosp.org, 0
+doswap.com, 0
+dota2house.com, 0
+dota2.net, 0
+dota2top.cn, 0
+dothome.co.kr, 0
+dotlan.net, 0
+dotroll.com, 0
+dots-game.org, 0
+dottnet.it, 0
+dotunnel001.com, 0
+dotunnel.com, 0
+dotw.com, 0
+dou-bi.co, 0
+doublemap.com, 0
+doubletwist.com, 0
+doujin.com.tw, 0
+doulike.com, 0
+douran.com, 0
+dowater.com, 0
+dowerandhall.com, 0
+downarchive.link, 0
+down.lc, 0
+downloadatoz.com, 0
+downloadcenter.me, 0
+download-flow.com, 0
+downloadgamesnow.org, 0
+downloadmanager.ir, 0
+download-redtube.eu, 0
+downloads-world.net, 0
+doxue.com, 0
+dozer.cc, 0
+dpap.ro, 0
+dpb.sk, 0
+dpfs.net, 0
+dp.gov.ua, 0
+dpg-physik.de, 0
+dpmb.cz, 0
+dpm.org.cn, 0
+dpo.cz, 0
+dprp.net, 0
+dp.ru, 0
+dpsi.com, 0
+dracoblue.net, 0
+draeger.com, 0
+dragonbound.net, 0
+dragongoserver.net, 0
+dragonknight.ru, 0
+dragonteam.ninja, 0
+dragplus.com, 0
+drakor.com, 0
+draw123.com.tw, 0
+drbd.org, 0
+drdump.com, 0
+dreamaction.co, 0
+dream.ren, 0
+dream-soft.de, 0
+dreifisch.com, 0
+drfakhar.ir, 0
+drgrab.ca, 0
+drgrab.com, 0
+drgrab.com.au, 0
+drgrab.co.nz, 0
+drgrab.co.uk, 0
+driedfloralshop.com, 0
+drillseo.com, 0
+driptip.ru, 0
+dripworks.com, 0
+drive2day.de, 0
+drive-my.com, 0
+driversnout.com, 0
+drlrcs.com, 0
+drofa-ventana.ru, 0
+drogariasnissei.com.br, 0
+drohobych.net, 0
+droi.com, 0
+droidbox.co.uk, 0
+droidboxforums.com, 0
+droidmod.ru, 0
+droidwiki.de, 0
+drom.ru, 0
+drone-forum.com, 0
+droneland.nl, 0
+dronk.ru, 0
+dropscan.de, 0
+drtihanyi.com, 0
+drugscouts.de, 0
+dschool.ru, 0
+dscloud.biz, 0
+dscloud.me, 0
+ds.cn, 0
+dsd.gov.hk, 0
+dshield.org, 0
+dsmynas.com, 0
+dsnews.ua, 0
+dsphere.info, 0
+dsporto.de, 0
+dss.go.th, 0
+dstu.education, 0
+dsty.ac.jp, 0
+dszo.cz, 0
+dszysoft.com, 0
+dtcj.com, 0
+dtcom.com.br, 0
+dtdns.net, 0
+dtempurl.com, 0
+dtest.cz, 0
+dtest.sk, 0
+dtln.ru, 0
+du9l.com, 0
+dualnitro.com, 0
+dualshockers.com, 0
+duanzhihu.com, 0
+duapp.com, 0
+dubna.net, 0
+dubtrack.fm, 0
+duc.cn, 0
+duckdns.org, 0
+duden.de, 0
+duguletian.com, 0
+duhowpi.net, 0
+duia.com, 0
+duiba.com.cn, 0
+duitang.com, 0
+dujin.org, 0
+duke.edu, 0
+dukey.cn, 0
+dumaosheng.com, 0
+duma.tomsk.ru, 0
+dumrt.ru, 0
+dundi.in, 0
+duniapulsa.co, 0
+dunkhome.com, 0
+duobeiyun.com, 0
+duocaitou.com, 0
+duoc.cl, 0
+duoduotv.com, 0
+duohuo.org, 0
+duoluodeyu.com, 0
+duplicationcentre.co.uk, 0
+durdom.in.ua, 0
+dushu.io, 0
+dusign.cn, 0
+dusoyun.com, 0
+dustmoon.com, 0
+dut.edu.ua, 0
+dutpt.com, 0
+duxa.cc, 0
+dva.lu, 0
+dvbank.ru, 0
+dv-com.net, 0
+dvdfab.cn, 0
+dvfu.ru, 0
+dvinaland.ru, 0
+dvr163.com, 0
+dvrdns.org, 0
+dwhd.org, 0
+dwhite.gr, 0
+dwkeji.com, 0
+dx.am, 0
+dxdt.ru, 0
+dx-racer.cz, 0
+dy530.com, 0
+dy886.com, 0
+dy.fi, 0
+dylog.it, 0
+dynabic.com, 0
+dynalias.com, 0
+dynalias.org, 0
+dynamic-dns.net, 0
+dynamo-dresden.de, 0
+dyndns-at-home.com, 0
+dyndns.biz, 0
+dyndns.dk, 0
+dyndns.info, 0
+dyndns-ip.com, 0
+dyndns.pro, 0
+dyndns-remote.com, 0
+dyndns-server.com, 0
+dyndns.tv, 0
+dyndns.ws, 0
+dynns.com, 0
+dynu.com, 0
+dynu.net, 0
+dyn-vpn.de, 0
+dzienniknaukowy.pl, 0
+dzo.com.ua, 0
+dzs.cz, 0
+dzsofts.net, 0
+dzwww.com, 0
+e100.eu, 0
+e123.pw, 0
+e2e4online.ru, 0
+e2say.com, 0
+e2time.net, 0
+e36.lv, 0
+e-actionlearning.jp, 0
+eadaily.com, 0
+eae-publishing.com, 0
+eagleplatform.com, 0
+ean-search.org, 0
+eapteka.ru, 0
+eareview.net, 0
+earthtreksclimbing.com, 0
+easemob.com, 0
+easetou.com, 0
+easeye.com.cn, 0
+easi-services.fr, 0
+eastal.com, 0
+eastcom.com, 0
+eastday.com, 0
+eastmachinery.com, 0
+eastview.com, 0
+eastweb.ir, 0
+easyapi.com, 0
+easyaq.com, 0
+easyaq.org, 0
+easycoding.org, 0
+easycoin.cz, 0
+easydrop.ru, 0
+easyfly.club, 0
+easynotebooks.de, 0
+easynvest.com.br, 0
+easyon.cn, 0
+easypano.com, 0
+easypass.cn, 0
+easypay.bg, 0
+easypm.cn, 0
+easysport.de, 0
+easytaxi.com.br, 0
+easytoys.cz, 0
+easyuni.com, 0
+easywebshop.com, 0
+ebacheca.it, 0
+ebaoquan.org, 0
+ebarrito.com, 0
+ebase.com, 0
+eb.br, 0
+ebesucher.com, 0
+ebesucher.de, 0
+ebesucher.es, 0
+ebesucher.fr, 0
+ebesucher.ru, 0
+ebg.net, 0
+ebible.org, 0
+ebmpapst.com, 0
+ebnevelde.hu, 0
+eboo.ir, 0
+ebookcn.com, 0
+ebottega.it, 0
+ebptt.com, 0
+ebrarbilgisayar.com, 0
+ebs.org.cn, 0
+ebuick.com.cn, 0
+ecall.ch, 0
+ecbiz.ru, 0
+eccom.com.cn, 0
+ecenter.travel, 0
+ecf.asso.fr, 0
+e-chinalife.com, 0
+echo24.cz, 0
+echofabrik.de, 0
+echosante.com, 0
+echoteen.com, 0
+eckert-schulen.de, 0
+eclisse.it, 0
+eclub.se, 0
+ecmsglobal.com, 0
+ecn.cz, 0
+ecnu.edu.cn, 0
+ecodms.de, 0
+ecoin.cc, 0
+ecolex.org, 0
+ecom-labs.com, 0
+ecommerce.gov.ir, 0
+economy.gov.az, 0
+economy.gov.by, 0
+economy.gov.ru, 0
+eco.pt, 0
+ecorepay.cc, 0
+ecovacs-japan.com, 0
+ecovanna.ru, 0
+ecovita.ru, 0
+ecpic.com.cn, 0
+ecplay.com, 0
+ecrm.com.tw, 0
+ecu.ac.uk, 0
+eczhuyin.com, 0
+ed2k.in, 0
+edaixi.cn, 0
+edaixi.com, 0
+edelweiss5.com, 0
+edge-core.com, 0
+edia.nl, 0
+edifier.ru, 0
+edigital.hu, 0
+edinarcoin.com, 0
+editions-ue.com, 0
+edizioni-ai.com, 0
+edj.club, 0
+edmundwatson.com, 0
+edm.uz, 0
+edmw.xyz, 0
+ednet.ns.ca, 0
+edns.com, 0
+edoc2.com, 0
+edooon.com, 0
+edoramedia.com, 0
+edsonqueiroz.com.br, 0
+edt02.net, 0
+edthena.com, 0
+edu35.ru, 0
+edu4school.gr, 0
+edu4schools.gr, 0
+edu53.ru, 0
+edu95.ru, 0
+eduasistent.ro, 0
+educacion.gob.ar, 0
+educationalinitiatives.com, 0
+educatorshandbook.com, 0
+educom.ru, 0
+edu-family.ru, 0
+eduherald.ru, 0
+edu.ky, 0
+edu.kz, 0
+edusite.ru, 0
+edu.sk, 0
+eduspb.com, 0
+edu.te.ua, 0
+edu.tomsk.ru, 0
+eduweb.com.ve, 0
+edznet.com, 0
+eee.com, 0
+eelly.com, 0
+eeload.com, 0
+eenot.com, 0
+eeworld.com.cn, 0
+eexcel.com.hk, 0
+eeyy.com, 0
+efeihu.com, 0
+efenix.cz, 0
+eff.org, 0
+effu.eu, 0
+efko.ru, 0
+efm.de, 0
+eforms.org, 0
+efrei.fr, 0
+efrontlearning.com, 0
+efsol.ru, 0
+efsyn.gr, 0
+efubo.com, 0
+efun.com, 0
+efunfun.com, 0
+efunkr.com, 0
+efuntw.com, 0
+efusion.co.jp, 0
+efw.cn, 0
+efzg.hr, 0
+e-garakuta.net, 0
+egarante.com, 0
+egent.ru, 0
+egmanga.com.tw, 0
+egou.com, 0
+egov66.ru, 0
+egret.com, 0
+egret-labs.org, 0
+egrp365.ru, 0
+egrul-egrip.ru, 0
+ehaoyao.com, 0
+ehbds.gov.cn, 0
+eheyin.com, 0
+ehighsun.com, 0
+ehm.cz, 0
+ehousechina.com, 0
+ehrana.si, 0
+ehrmedijugrupa.lv, 0
+eia.edu.co, 0
+eias.ru, 0
+eichsfeld-gymnasium.de, 0
+eicp.net, 0
+eiffel.com, 0
+eimagine.com, 0
+eink.com, 0
+e-inv.cn, 0
+eircom.net, 0
+eisenbahn.com.br, 0
+ejabberd.im, 0
+ejarehkhodro.com, 0
+ejieban.com, 0
+ejn.gov.ba, 0
+ejsino.com, 0
+ejuice.cz, 0
+ekartki-swiateczne.pl, 0
+eken.com, 0
+e-koncept.ru, 0
+ekr.or.kr, 0
+eksenbilgisayar.com, 0
+ekspresskonto.ee, 0
+eks.sk, 0
+eku8.com, 0
+elabjournal.com, 0
+elaion.ch, 0
+elane.ru, 0
+elar.ru, 0
+elasticbeanstalk.com, 0
+elasticrun.in, 0
+e-lationshop.de, 0
+elblag.pl, 0
+elbrus-zapchasti.ru, 0
+eldawlanews.com, 0
+eldiadehoy.net, 0
+eldorado.com.ua, 0
+eldorar.com, 0
+e-lead.com.tw, 0
+eleadglobal.com, 0
+elec.ru, 0
+electriclove.at, 0
+electroflot.ru, 0
+electrofun.ro, 0
+electro-mpo.ru, 0
+electronic-star.ch, 0
+electronic-star.cz, 0
+electronic-star.es, 0
+electronic-star.fi, 0
+electronic-star.fr, 0
+electronic-star.hr, 0
+electronic-star.hu, 0
+electronic-star.it, 0
+electronic-star.pl, 0
+electronic-star.pt, 0
+electronic-star.ro, 0
+electronic-star.se, 0
+electronic-star.si, 0
+electronic-star.sk, 0
+elegantt.com, 0
+eleks.com, 0
+elektra.ru, 0
+elektronik-star.de, 0
+elektronline.hu, 0
+elemer.ru, 0
+elem.mobi, 0
+elenafurs.ru, 0
+elenet.me, 0
+ele.to, 0
+eletrosom.com, 0
+elevenpaths.com, 0
+elf.com.tw, 0
+elfdict.com, 0
+elga.gr, 0
+elgato.com, 0
+elgaucho.com, 0
+eliademy.com, 0
+elinklaw.com, 0
+eliquidshop.cz, 0
+eliseparts.com, 0
+elitesochi.com, 0
+eliteunitedcrew.org, 0
+elitmus.com, 0
+elit.ro, 0
+elit.ua, 0
+eliv-group.ru, 0
+elkomp.ru, 0
+elkor.lv, 0
+ellco.ru, 0
+elleshop.com.cn, 0
+ellwoodepps.com, 0
+elm327rus.ru, 0
+elma-bpm.ru, 0
+elmarplatense.com, 0
+elmosanat.com, 0
+elnet.by, 0
+eloancn.com, 0
+elotech.com.br, 0
+elpo.net, 0
+elpreciodelagasolina.com, 0
+elsa.org, 0
+elsu.ru, 0
+eltallerdelbit.com, 0
+elte.hu, 0
+eltek.com, 0
+elumbus-reisen.de, 0
+elway.ru, 0
+ely.by, 0
+emailbidding.com, 0
+emailtray.com, 0
+emaintec.com, 0
+e-maker.com.tw, 0
+emao.com, 0
+emaos.de, 0
+emarbox.com, 0
+emarsys.com, 0
+emasa.es, 0
+embdev.net, 0
+embedy.cc, 0
+embl.de, 0
+emccann.net, 0
+emcmos.ru, 0
+emcsthai.com, 0
+emediamusic.com, 0
+emediava.org, 0
+emedi.gr, 0
+emeil.ir, 0
+emeraldmatch.com, 0
+emergencymedicinecases.com, 0
+emg.ru, 0
+emis.co.ao, 0
+emlid.com, 0
+emmalabs.com, 0
+emmaus-france.org, 0
+emnuvens.com.br, 0
+emo.org.tr, 0
+emory.edu, 0
+emos.cz, 0
+empathia.cz, 0
+empathy-portal.de, 0
+empireofcode.com, 0
+empleonuevo.com, 0
+emprana.ru, 0
+empro.com.br, 0
+emsb.qc.ca, 0
+ems.com.br, 0
+ems.network, 0
+emtec.com, 0
+emtelco.co, 0
+emu.ee, 0
+emulatornexus.com, 0
+emza.ru, 0
+enaa.com, 0
+enablecloud.co.uk, 0
+enaces.com, 0
+enact.co.uk, 0
+ename.net, 0
+en-charente-maritime.com, 0
+e-nci.com, 0
+encipher.it, 0
+enco.com, 0
+encoding.com, 0
+endian.com, 0
+endmyopia.org, 0
+endomondo.com, 0
+endplay.com, 0
+endpoint.com, 0
+energietec.eu, 0
+energiezivota.com, 0
+energy.gov.ua, 0
+energylabel.gov.cn, 0
+enflares.com, 0
+engagement.fr, 0
+engineowning.com, 0
+eng.it, 0
+england.nhs.uk, 0
+english-club.tv, 0
+englishtopics.net, 0
+engolit.de, 0
+eniac.ir, 0
+eniyikuafor.com, 0
+enjoitech.com, 0
+enkral.net, 0
+enlaza.mx, 0
+enl.wtf, 0
+en-marche.fr, 0
+e-norvik.eu, 0
+enow.cn, 0
+enportal.de, 0
+enriccorberainstitute.com, 0
+enro-griffins.de, 0
+ensage-forum.ru, 0
+ensartaos.com.ve, 0
+ensg.eu, 0
+entboost.com, 0
+entega.de, 0
+entre-geeks.com, 0
+entreleadership.com, 0
+entsog.eu, 0
+entware.net, 0
+enu.kz, 0
+envirolink.org, 0
+envisioncn.com, 0
+enwebhost.com, 0
+eoft.eu, 0
+eos.ru, 0
+eos-uptrade.de, 0
+eot.su, 0
+epac.to, 0
+epafos.gr, 0
+epam.com, 0
+epanchang.com, 0
+e-pard.com, 0
+epaslaugos.lt, 0
+epast.org, 0
+e-paths.com, 0
+epawaweather.com, 0
+epay.com, 0
+epay.lt, 0
+epcos.com, 0
+epd47.ru, 0
+epe.ir, 0
+epetbar.com, 0
+ephotobay.com, 0
+epicwow.com, 0
+epi.es, 0
+epi.sk, 0
+epita.fr, 0
+epitech.eu, 0
+epizod.ua, 0
+epizy.com, 0
+epm.br, 0
+e-pointchina.com.cn, 0
+epom.com, 0
+epommarket.com, 0
+epos.dk, 0
+epremki.pl, 0
+eprints.org, 0
+eprocurement.gov.gr, 0
+eproton.cz, 0
+epsic.ch, 0
+eptonic.com, 0
+epwk.com, 0
+eq28.cn, 0
+eqbal.ac.ir, 0
+erasmusu.com, 0
+erdalcelebi.com, 0
+ergasianews.gr, 0
+ericom.com, 0
+erinn.biz, 0
+erinome.net, 0
+eronsk.xxx, 0
+eropolis.hu, 0
+eroticen.com, 0
+erp-mz.ru, 0
+erpscan.com, 0
+errrotica.com, 0
+ershouhui.com, 0
+ertyu.org, 0
+esadn.com, 0
+escapefromtarkov.com, 0
+escape-game.org, 0
+escapes.ca, 0
+escience.cn, 0
+escolasecreches.com.br, 0
+escorts2000.com, 0
+escuelassj.com, 0
+esdict.cn, 0
+esearch.me, 0
+eseemodel.com, 0
+e-seenet.com, 0
+esetafrica.com, 0
+eset.kz, 0
+es.gov.br, 0
+eshangke.com, 0
+eshko.kz, 0
+eshraghtranslators.com, 0
+eshuyuan.net, 0
+esiea.fr, 0
+esi.uz, 0
+eskalat24.ru, 0
+eskalat.biz, 0
+eskom.eu, 0
+eso-database.com, 0
+eso.lt, 0
+esotravel.cz, 0
+espaciovino.com.ar, 0
+espago.com, 0
+esper.net, 0
+espol.edu.ec, 0
+esr-case.com, 0
+esri.com, 0
+essaybox.org, 0
+essayedge.com, 0
+essencegold.com.br, 0
+essentialpim.com, 0
+estcard.ee, 0
+estet.ru, 0
+esteveterradas.cat, 0
+estismail.com, 0
+estlandro.cc, 0
+estratosplus.com, 0
+estreams.tv, 0
+est.ua, 0
+estudarfora.org.br, 0
+estudar.org.br, 0
+estudiantesdelaplata.com, 0
+esu10.org, 0
+esu3.org, 0
+esu7.org, 0
+e-svatek.cz, 0
+esxi.gr, 0
+esy.es, 0
+et8.org, 0
+eta.cz, 0
+etaex.com, 0
+etagi.com, 0
+etalab.gouv.fr, 0
+etalasebisnis.com, 0
+etaplius.lt, 0
+etarget.cz, 0
+etb.net.co, 0
+etcnetwork.tv, 0
+etenal.me, 0
+etf.com, 0
+et-forum.org, 0
+eth0.com.br, 0
+ethereal-gaming.com, 0
+ethereumpool.co, 0
+ethfans.org, 0
+eth-gethired.ch, 0
+ethicsoft.it, 0
+ethinking.de, 0
+ethitter.com, 0
+ethst.de, 0
+ethz.ch, 0
+etick.ir, 0
+etland.co.kr, 0
+etong.com, 0
+etongdai.com, 0
+etowns.net, 0
+etowns.org, 0
+etracker.com, 0
+etruel.com, 0
+ets2planet.com, 0
+etsb.qc.ca, 0
+etstory.cn, 0
+etu.ru, 0
+euchost.com, 0
+eudic.net, 0
+eulji.ac.kr, 0
+eunetworks.com, 0
+euobserver.com, 0
+eurabota.com, 0
+eurasia.edu, 0
+eurasiangroup.org, 0
+eureka.lk, 0
+eurekamag.com, 0
+eurekers.com, 0
+eurodir.ru, 0
+eurofirms.es, 0
+eurogalaxy.sk, 0
+eurogest.company, 0
+euronics.cz, 0
+euronics.hu, 0
+euronova-italia.it, 0
+europa2.sk, 0
+europages.com, 0
+europa-market.ru, 0
+europeya.ru, 0
+eurostudy.info, 0
+eurovial.ro, 0
+eu.spb.ru, 0
+euvic.pl, 0
+eval.hu, 0
+evasionssecretes.fr, 0
+eveger.de, 0
+evejiaoben.com, 0
+evenflo.com, 0
+eventact.com, 0
+eventfarm.com, 0
+eventhia.com, 0
+eventim.si, 0
+eventpal.com.tw, 0
+eventsair.com, 0
+eve-online-com.ru, 0
+everest.com.tw, 0
+evergrande.com, 0
+evergreen.ca, 0
+evermarker.com, 0
+evermeet.cx, 0
+eversendai.com, 0
+everycaller.com, 0
+everyday.in.th, 0
+everymatrix.com, 0
+everything.kz, 0
+evget.com, 0
+evibe.in, 0
+evicertia.com, 0
+eviivo.com, 0
+evil0x.com, 0
+eviloctal.com, 0
+eviron.ru, 0
+evn.bg, 0
+evoi.ru, 0
+evolio.ro, 0
+evolix.net, 0
+evolutiontravel.it, 0
+evolveum.com, 0
+evotor.ru, 0
+evo-web.co.uk, 0
+evraz.com, 0
+evroopt.by, 0
+evvnt.com, 0
+evzo.net, 0
+eway-crm.com, 0
+eways.co, 0
+eways.ir, 0
+ewe.de, 0
+ewei.com, 0
+eweiqi.com, 0
+ewon.biz, 0
+exali.de, 0
+examslocal.com, 0
+exane.com, 0
+exaprint.fr, 0
+exapro.com, 0
+exceda.com, 0
+excelcalcs.com, 0
+excelsiorcommerce.com, 0
+exdreams.net, 0
+exehack.net, 0
+exertisireland.ie, 0
+exetools.com, 0
+ex-fs.net, 0
+exileed.com, 0
+eximb.com, 0
+experientia.com, 0
+experitest.com, 0
+experty.com, 0
+explee.com, 0
+exploretunes.com, 0
+explorr.net, 0
+expoforum.ru, 0
+exportimes.com, 0
+exportpages.com, 0
+exportpages.de, 0
+express.com.ar, 0
+express-odarennost.ru, 0
+exrates.me, 0
+extmail.org, 0
+extplorer.net, 0
+extrahop.com, 0
+extremecraft.net, 0
+extremo.club, 0
+eyaos.com, 0
+eyehere.net, 0
+eyou.net, 0
+ezacg.net, 0
+ezaisheng.com, 0
+ezdravkrg.org, 0
+ezfun.xyz, 0
+ezloo.com, 0
+ezmedia.me, 0
+ez.no, 0
+ezotericum.ru, 0
+ezoterikus.hu, 0
+ez-pz.com, 0
+ezwow.org, 0
+ezxing.com, 0
+ezyro.com, 0
+f0x.pw, 0
+f1news.ru, 0
+f3322.net, 0
+f3322.org, 0
+f4yy.com, 0
+f5.si, 0
+fabfab.net, 0
+fabrikaokon.ru, 0
+fabula.club, 0
+fabulous.ch, 0
+fabzat.com, 0
+facebac.com, 0
+facehack.me, 0
+faceit.ir, 0
+facenews.ua, 0
+facens.br, 0
+faceu.mobi, 0
+faceunity.com, 0
+facforpro.com, 0
+fackelmann.de, 0
+facta.com.br, 0
+factcool.com, 0
+factorenergia.com, 0
+factorkon.ir, 0
+factor.ua, 0
+facturamos.com.mx, 0
+factureaza.ro, 0
+fael.edu.br, 0
+fafait.ir, 0
+fainor.com.br, 0
+fairfieldcityschools.com, 0
+fairr.de, 0
+fairtop.in, 0
+faisco.cn, 0
+faisco.com, 0
+fakturyonline.eu, 0
+falconsocial.com, 0
+fals.com.br, 0
+famafutar.hu, 0
+famebit.com, 0
+famerom.ir, 0
+familienshirt.com, 0
+family.com.tw, 0
+familydoctor.com.cn, 0
+familyds.com, 0
+familyds.net, 0
+famo.ir, 0
+famtastic.cz, 0
+famtastic.hr, 0
+famtastic.hu, 0
+famtastic.ro, 0
+famtastic.sk, 0
+fancourier.ro, 0
+fanfic-fr.net, 0
+fanfic.hu, 0
+fanfou.com, 0
+fangamer.com, 0
+fangjie.info, 0
+fangjinsuo.com, 0
+fangrs.com, 0
+fangte.com, 0
+fanhaojia.com, 0
+fanpagesmarket.ru, 0
+fanqier.cn, 0
+fantabobshow.com, 0
+fantasyleague.com, 0
+fantawild.com, 0
+fantazya.net, 0
+fantlab.ru, 0
+fapiao.com, 0
+faponly.com, 0
+fapstor.com, 0
+far800.com, 0
+farakav.com, 0
+farapayamak.ir, 0
+farapic.com, 0
+faraso.org, 0
+fareastone.com.tw, 0
+farebookings.com, 0
+fariasbrito.com.br, 0
+farmaimpex.ru, 0
+farmainstant.com, 0
+farmalisto.com.co, 0
+farmec.ro, 0
+farmnest.com, 0
+farmskins.com, 0
+faro.es, 0
+farsiworld.ir, 0
+fashaoyou.net, 0
+fashion71.net, 0
+fashion.bg, 0
+fashioncompany.rs, 0
+fashionfriends.ch, 0
+fashn.de, 0
+fast-anime.ru, 0
+fastcr.cz, 0
+fasteasy.at, 0
+fasten.com, 0
+fastjet.com, 0
+fastloader.co, 0
+fast-mirror.de, 0
+fastprom.net, 0
+fastread.ru, 0
+fast-report.com, 0
+fastreport.ru, 0
+fasttony.es, 0
+fast-unfollow.com, 0
+fastvideotoscana.it, 0
+fastwebserver.de, 0
+fat.com.tw, 0
+fat-down.ru, 0
+fattor-rc.com.br, 0
+favbet.com, 0
+favera.ru, 0
+favorit.com.ua, 0
+favoritsport.com.ua, 0
+faw-vw.com, 0
+fayea.com, 0
+fayzfm.uz, 0
+fazekas.hu, 0
+fazmusic15.org, 0
+faz-musics.in, 0
+fbresponder.com.br, 0
+fbxos.fr, 0
+fcasd.edu, 0
+fcbarcelona.cz, 0
+fccs.com, 0
+fckrasnodar.ru, 0
+fcm-live.de, 0
+fcn.de, 0
+fcrmedia.ie, 0
+fcsm.ru, 0
+fcstpauli.com, 0
+fct-altai.ru, 0
+fcv.edu.br, 0
+fd114.com, 0
+fdc.com.cn, 0
+fdlx.com, 0
+f-droid.org, 0
+fedpress.ru, 0
+fedsp.com, 0
+fedyay.net, 0
+feedbooks.com, 0
+feedbooks.net, 0
+feedonomics.com, 0
+feedvisor.com, 0
+feelingplace.com, 0
+fee.org, 0
+feidai.com, 0
+feifandy.net, 0
+feifanvpn.com.cn, 0
+feig.de, 0
+feihuo.com, 0
+feijiu.net, 0
+feiliu.com, 0
+fei.sg, 0
+feisovet.ru, 0
+feixueacg.com, 0
+feiyangedu.com, 0
+feiyulian.cn, 0
+felgenshop.de, 0
+felink.com, 0
+feliway.com, 0
+femininesite.ru, 0
+fengbuy.com, 0
+feng.com, 0
+feng-shui.ru, 0
+fengsung.com, 0
+fengzigame.com, 0
+fenjinshe.com, 0
+fensifuwu.com, 0
+fenxiangba.org, 0
+fernsehkritik.tv, 0
+ferrarischule.at, 0
+ferrino.it, 0
+ferrite.ru, 0
+ferrotec.com, 0
+ferro-video.com, 0
+fertagus.pt, 0
+fert.cn, 0
+feste-ip.net, 0
+festima.ru, 0
+fextralife.com, 0
+ffa-assurance.fr, 0
+ffforever.info, 0
+ffh.de, 0
+ffhs.ch, 0
+ffmpeg.org, 0
+ffplum.info, 0
+ffruit.eu, 0
+ffsg.org, 0
+ffxiv.cn, 0
+fgs-impianti.it, 0
+fgup-ohrana.ru, 0
+fh21.com.cn, 0
+fh-diploma.de, 0
+fh-koeln.de, 0
+fhmsolutions.com, 0
+fhnw.ch, 0
+fia.academy, 0
+fialkovod.ru, 0
+fia-net.com, 0
+fiberhome.com, 0
+fibrum.com, 0
+fictiongrill.com, 0
+fictionmania.tv, 0
+fidelity-media.com, 0
+fidelitysalus.it, 0
+fidella.org, 0
+fidion.de, 0
+fieb.org.br, 0
+fieldandstream.com, 0
+fieldnation.com, 0
+fieldschina.com, 0
+fievent.com, 0
+fifanice.com, 0
+fiff.de, 0
+figotan.org, 0
+fileconvoy.com, 0
+filelist.ro, 0
+filemakermagazine.com, 0
+file.pet, 0
+filerooz.com, 0
+fileseek.ca, 0
+filesell.ir, 0
+filesend.to, 0
+filetender.com, 0
+fileup.ir, 0
+file-up.net, 0
+filewave.com, 0
+filkab.com, 0
+fill.ee, 0
+filmcrave.com, 0
+filmesonlinex1.com, 0
+filmistreet.com, 0
+film--izle.com, 0
+film.tv, 0
+film-ussr.ru, 0
+filorga.com, 0
+finansovyesovety.ru, 0
+finas-services.de, 0
+findercom.ru, 0
+findface.me, 0
+findface.pro, 0
+findface.ru, 0
+findlifevalue.com, 0
+findmima.com, 0
+findschool.ca, 0
+findsomeone.co.nz, 0
+findtenders.ru, 0
+findu.com, 0
+findyourtrainer.com, 0
+finestsin.de, 0
+fingent.com, 0
+finkafe.com, 0
+finkzeit.at, 0
+finolog.ru, 0
+fin-partners.ru, 0
+firdi.org.tw, 0
+fire2000.rocks, 0
+firefoxfan.cc, 0
+firehol.org, 0
+firejune.com, 0
+firepoweredgaming.com, 0
+firestock.ru, 0
+firmenkontaktmesse.de, 0
+firmstep.com, 0
+firo.ru, 0
+firstbit.ae, 0
+firstcare.com.cn, 0
+firstcarrental.co.za, 0
+firstleap.cn, 0
+first-moment.de, 0
+firstonetv.eu, 0
+firststage.org, 0
+fischer.com.br, 0
+fisc.md, 0
+fishbattle.net, 0
+fishcn.com, 0
+fisherman-market.ru, 0
+fishifarm.ru, 0
+fishki.net, 0
+fishyforum.com, 0
+fiskarsmarket.ru, 0
+fit.ac.ir, 0
+fitilio.com, 0
+fitnesspell.com, 0
+fitnessplus.ru, 0
+fitnezz.net, 0
+fixcenter.com.ua, 0
+fiza.ir, 0
+fizkult-nn.ru, 0
+fj.cn, 0
+fjcyl.com, 0
+fjdqqb.com, 0
+fjrs.gov.cn, 0
+fju.edu.tw, 0
+flag.org, 0
+flamboyant.com.br, 0
+flamp.ru, 0
+flarumone.com, 0
+flashphoner.com, 0
+flatfy.az, 0
+flatfy.by, 0
+flatfy.kz, 0
+flatfy.pl, 0
+flatfy.ro, 0
+flatfy.ru, 0
+flaticon.es, 0
+flatterer.ru, 0
+flboos.com, 0
+fleeber.com, 0
+fleex.tv, 0
+flexcils.com, 0
+flexibits.com, 0
+flibusta.net, 0
+flickrocket.com, 0
+flight-finder.com, 0
+flinteractive.fr, 0
+flip.id, 0
+flipup.ru, 0
+flipwalls.com.cn, 0
+flixbus.at, 0
+flixbus.be, 0
+flixbus.com, 0
+flixbus.co.uk, 0
+flixbus.cz, 0
+flixbus.de, 0
+flixbus.dk, 0
+flixbus.es, 0
+flixbus.fr, 0
+flixbus.hr, 0
+flixbus.it, 0
+flixbus.nl, 0
+flixbus.pl, 0
+flixbus.ru, 0
+flixbus.se, 0
+flixmobility.com, 0
+flnet.org, 0
+flnka.ru, 0
+floobits.com, 0
+floralinvestment.com, 0
+floraverse.com, 0
+floridelux.ro, 0
+flotalamacarena.com, 0
+flowerpassword.com, 0
+flowerplus.cn, 0
+flow-list.cz, 0
+flowmon.com, 0
+flowtraders.com, 0
+flptrading.net, 0
+fluentcloud.com, 0
+fluffy.is, 0
+fluger.pro, 0
+flukso.net, 0
+fluxbytes.com, 0
+fluxfm.de, 0
+fluxicon.com, 0
+flyco.com, 0
+flycosmos.com, 0
+flyerdevil.de, 0
+flyerpilot.de, 0
+flyingacademy.com, 0
+flyingmag.com, 0
+flymycloud.com, 0
+flynet.by, 0
+flynsarmy.com, 0
+flytcloud.com, 0
+fly.tj, 0
+flyuia.com, 0
+flyvpn.com, 0
+fmach.it, 0
+fmaroof.ir, 0
+fmdisk.net, 0
+fnblasanimas.com, 0
+fnmotol.cz, 0
+foboko.com, 0
+focusmedia.cn, 0
+focus-net.net, 0
+focus.ua, 0
+fodar.ru, 0
+foheart.com, 0
+followmyvote.com, 0
+fonar.tv, 0
+fondazionearching.it, 0
+fond-kino.ru, 0
+f-online.at, 0
+fontenay-sous-bois.fr, 0
+foodband.ru, 0
+foodbrothers.com, 0
+foodclub.ru, 0
+food.co.il, 0
+foodfox.ru, 0
+foodrussia.net, 0
+foody.com.cy, 0
+football-onlain.tv, 0
+footballua.tv, 0
+footbolka.ru, 0
+footway.dk, 0
+footway.fi, 0
+footway.no, 0
+footway.se, 0
+force9.co.uk, 0
+forces-war-records.co.uk, 0
+fordaq.com, 0
+fordclubs.org, 0
+ford-koegler.de, 0
+foresealife.com, 0
+foreveross.com, 0
+forexac.com, 0
+forexclub-russia.ru, 0
+forexsklad.com, 0
+forgerock.com, 0
+forgerock.org, 0
+forgottenbooks.com, 0
+forma2plus.com, 0
+formalytx.com, 0
+format-tv.net, 0
+formo.ua, 0
+formpipe.com, 0
+formsdotstar.com, 0
+formstone.it, 0
+formulalubvi.com, 0
+formulastudent.de, 0
+formz.com, 0
+foroffice.ru, 0
+forotrolls.com, 0
+fortiddns.com, 0
+fortinet.com, 0
+fortiss.org, 0
+fortunebill.com, 0
+forum-3dcenter.org, 0
+forumbee.com, 0
+forum-hardware.de, 0
+forum-laptopy.info.pl, 0
+forum.vn.ua, 0
+forumx.com.br, 0
+forushefile.com, 0
+forus.ru, 0
+for-vk.com, 0
+forward-bank.com, 0
+forwardvelo.ru, 0
+foscam.com, 0
+foscammall.com, 0
+fossee.in, 0
+fossies.org, 0
+fosu.edu.cn, 0
+fotile.com, 0
+fotky-foto.cz, 0
+fotoalbum.ee, 0
+fotoalbum.es, 0
+fotocopy.hu, 0
+fotoev.com, 0
+fotogoroda.net, 0
+fotograf.de, 0
+fotokasten.de, 0
+fotolab.ru, 0
+foton.com.cn, 0
+fotoprivet.com, 0
+fotor.com, 0
+fotor.com.cn, 0
+fotosklad.ru, 0
+fotospektr.ru, 0
+fotostars.me, 0
+foundationsu.com, 0
+founder.com, 0
+founderio.com, 0
+fountainpen.it, 0
+fourglobe.co.jp, 0
+fourierdsl.co.za, 0
+fow.watch, 0
+fox008.com, 0
+foxconn.com, 0
+foxconnmall.com, 0
+foxdeploy.com, 0
+foxitreader.cn, 0
+fox-mall.ru, 0
+foxrenderfarm.com, 0
+foxtrot.com.ua, 0
+fozzy.com, 0
+fpucentral.com, 0
+fqapps.com, 0
+fqproxy.com, 0
+fqrouter2.cn, 0
+frac.tl, 0
+fragfinn.de, 0
+frag-mutti.de, 0
+francedns.com, 0
+franceserv.com, 0
+franceserv.fr, 0
+france-troc.com, 0
+francite.net, 0
+francochinois.com, 0
+frankkingclub.com, 0
+franklincollege.edu, 0
+frankysweb.de, 0
+fraudect.com, 0
+frdic.com, 0
+free521.com, 0
+freebieac.com, 0
+freeboxos.fr, 0
+freebusy.io, 0
+freebytes.com, 0
+freeconferencecall.com, 0
+freeddns.org, 0
+freedns.io, 0
+freedomrussia.org, 0
+freedom-vrn.ru, 0
+freedriver.org, 0
+free-ebooks.net, 0
+free-electrons.com, 0
+freefeed.net, 0
+freefielder.jp, 0
+freefii.de, 0
+free.fr, 0
+freegeoip.net, 0
+free-hack.com, 0
+freehacks.ru, 0
+free-hosting.ir, 0
+freeintro.net, 0
+free-it.ru, 0
+freeje.com, 0
+freekulinar.ru, 0
+freelance.boutique, 0
+freelance.com, 0
+freelancerclub.net, 0
+freelance.ru, 0
+freelance.today, 0
+freemail.gr, 0
+freemaineads.com, 0
+freeman-btc.com, 0
+freepaper.me, 0
+free-pdftoword.com, 0
+freepik.es, 0
+freepost.es, 0
+freeprojectz.com, 0
+free-ro.com, 0
+freesafeip.com, 0
+freeskiers.net, 0
+freesoft-board.to, 0
+freestoriesforkids.com, 0
+freestylersworld.com, 0
+freetemplatesonline.com, 0
+free-torrent.org, 0
+free-torrents.org, 0
+freevar.com, 0
+freevpnxz.com, 0
+freevps.us, 0
+freexf.com, 0
+freezingblue.com, 0
+freie-volksmission.de, 0
+freifunk.net, 0
+frejustoulon.fr, 0
+frekvence1.cz, 0
+frenchkiss.ru, 0
+freshports.org, 0
+freshwatersystems.com, 0
+fr.ht, 0
+friends-forum.com, 0
+fri-gate.org, 0
+frischeis.at, 0
+friskyradio.com, 0
+fritzsch.net, 0
+frogshealth.com, 0
+fromae.com, 0
+frontcam.ru, 0
+frontenddev.org, 0
+fronter.com, 0
+frontpad.ru, 0
+frostland.pro, 0
+froxlor.org, 0
+frozenbyte.com, 0
+frozencpu.com, 0
+frsky-rc.com, 0
+fruct.org, 0
+frugalmechanic.com, 0
+fruitday.com, 0
+fryd.ru, 0
+fryshuset.se, 0
+fs.com, 0
+fsfund.com, 0
+fsfxpackages.com, 0
+fshrss.gov.cn, 0
+fsinf.at, 0
+fsk-ees.ru, 0
+fskn.gov.ru, 0
+fspro.net, 0
+fstrf.ru, 0
+ftbeautycn.com, 0
+ftsafe.com, 0
+ftvyifubi.com, 0
+fuckav.ru, 0
+fuckbilibili.com, 0
+fudan.edu.cn, 0
+fudan.sh.cn, 0
+fuelcellsworks.com, 0
+fugumobile.cn, 0
+fujian.gov.cn, 0
+fujifilm-x.ru, 0
+fukun.org, 0
+fulba.com, 0
+fulgan.com, 0
+fulidang.com, 0
+fulid.net, 0
+fuli.moe, 0
+fuling.com, 0
+fuliren.com, 0
+fuliv8.com, 0
+full-chip.net, 0
+fullprogramindir.biz, 0
+fullsecurity.org, 0
+fumasoft.com, 0
+funcook.com, 0
+fundamenta.hu, 0
+fundamental-research.ru, 0
+funeed.com, 0
+funeralone.com, 0
+funfactory.com, 0
+funfunquiz.com, 0
+fungames-forfree.com, 0
+funiber.org, 0
+funi.com, 0
+funinsta.ru, 0
+funkmeldesystem.de, 0
+funnysocks.ru, 0
+funpot.net, 0
+funradio.sk, 0
+funshion.com, 0
+fun-taiwan.com, 0
+funweek.it, 0
+fuqizy.com, 0
+furfest.org, 0
+furnation.com, 0
+furnation.ru, 0
+fusker.xxx, 0
+fussballfantipp.de, 0
+futbalnet.sk, 0
+futboholic.com, 0
+futboholic.com.ua, 0
+futboholic.ru, 0
+futbolki.ru, 0
+futpack.ru, 0
+fut.ru, 0
+futu5.com, 0
+futunn.com, 0
+futurecovenant.com, 0
+future-processing.pl, 0
+fuwo.com, 0
+fuyaogroup.com, 0
+fvds.ru, 0
+fx678.com, 0
+fx77.com, 0
+fxclub.org, 0
+fx-mt4.info, 0
+fxpan.com, 0
+fxsound.com, 0
+fxteam.ru, 0
+fyber.com, 0
+fyeedu.net, 0
+fync.edu.cn, 0
+fynews.net, 0
+fyygame.pw, 0
+fyysports.com, 0
+fyzhuji.com, 0
+fzdm.com, 0
+gadz.org, 0
+gaeamobile.com, 0
+gaeamobile.net, 0
+gagahi.com, 0
+gainapp.com, 0
+gaiz.com, 0
+galactikka.com, 0
+galaksion.com, 0
+galaktika.ru, 0
+galanz.com, 0
+galax.com, 0
+galaxytech.com, 0
+galgame.co, 0
+galinos.gr, 0
+gallerr.com, 0
+gallery-dump.com, 0
+galpenergia.com, 0
+gals.uz, 0
+game13.com, 0
+game2.cn, 0
+game2.com.cn, 0
+gamed9.com, 0
+gamedreamer.com.tw, 0
+gameforgirl.ru, 0
+gamehitzone.com, 0
+gamehonor.com, 0
+gameindy.com, 0
+gameliebe.com, 0
+gamelumi.com, 0
+gameofbombs.com, 0
+gamereactor.de, 0
+gamereactor.dk, 0
+gamereactor.es, 0
+gamereactor.eu, 0
+gamereactor.fi, 0
+gamereactor.it, 0
+gamereactor.no, 0
+gamereactor.pt, 0
+gamereactor.se, 0
+gamesites.cz, 0
+gamesow.com, 0
+gamesplanet.com, 0
+gamesuit.ru, 0
+gameswelt.at, 0
+gameswelt.ch, 0
+gameswelt.de, 0
+gameswelt.tv, 0
+gameurs.net, 0
+gameware.at, 0
+gamexp.ru, 0
+gamingmasters.org, 0
+gamyun.net, 0
+gannun.cn, 0
+ganso.com.cn, 0
+gansuche.cn, 0
+gaogulou.com, 0
+gaokaopai.com, 0
+gaokaowangbao.com, 0
+gaopeng.com, 0
+gaosouyi.com, 0
+gaotizi.com, 0
+garada.net, 0
+garageentertainment.com.au, 0
+garage-gps.com, 0
+garagemca.org, 0
+garant.by, 0
+garant.ru, 0
+garazh.ir, 0
+garden.org, 0
+garminshop.ir, 0
+gartenhaus-gmbh.de, 0
+garvan.org.au, 0
+gaskrank.tv, 0
+gastrogate.com, 0
+gasu.ru, 0
+gatan.com, 0
+gavag.ru, 0
+gaws.ru, 0
+gaypal.co, 0
+gazeta.ru, 0
+gazprom.ru, 0
+gaz.ru, 0
+gazu.ru, 0
+gba.gov.ar, 0
+gbs.edu, 0
+gcbi.com.cn, 0
+gcnewhorizons.net, 0
+gcp.edu.cn, 0
+gcstech.net, 0
+gcup.ru, 0
+gcx.org, 0
+gd10010.cn, 0
+gd88.org, 0
+gdalpha.com, 0
+gdcuffs.com, 0
+gdekluet.ru, 0
+gdga.gov.cn, 0
+gdgbpx.com, 0
+gd-line.com, 0
+gdsyzx.edu.cn, 0
+gdufs.edu.cn, 0
+gdzelektrik.com.tr, 0
+gear.host, 0
+gearsource.com, 0
+gebeco.de, 0
+gebrauchte-veranstaltungstechnik.de, 0
+geckosoftware.com, 0
+ge.com.cn, 0
+gedichte.com, 0
+gedizelektrik.com.tr, 0
+gedofile.com, 0
+geekbang.org, 0
+geekbrains.ru, 0
+geekie.com.br, 0
+geekielab.com.br, 0
+geekmaze.ru, 0
+geekpeek.net, 0
+geekteam.pro, 0
+geekup.pl, 0
+geekweekconf.com, 0
+geenfc.com, 0
+gefaellt-mir.me, 0
+gegejia.com, 0
+geichina.org, 0
+geilicdn.com, 0
+geizreich.de, 0
+gem4me.com, 0
+gemfury.com, 0
+gemkadeh.com, 0
+gemz.ir, 0
+gench.edu.cn, 0
+genealogieonline.nl, 0
+geneanet.org, 0
+geneawiki.com, 0
+genebang.com, 0
+genecopoeia.com, 0
+generalroca.gov.ar, 0
+generals.mobi, 0
+generationlove.com, 0
+generations-patrimoine.com, 0
+geniesolutions.com.au, 0
+genofond.org, 0
+genomics.cn, 0
+genscript.com, 0
+genscript.com.cn, 0
+genser.ru, 0
+geodata.it, 0
+geoprostor.net, 0
+georgikon.hu, 0
+georgio.fr, 0
+gerald.top, 0
+gerdoo.net, 0
+gerdoosoft.com, 0
+gerencianet.com.br, 0
+german-railroads.de, 0
+germanssky.de, 0
+germanystudy.net, 0
+geru.com.br, 0
+gesamtschule-zeuthen.eu, 0
+ges-bo.de, 0
+geschenkkartenwelt.de, 0
+gesext.de, 0
+get4click.ru, 0
+geta6.net, 0
+getabstract.com, 0
+getadmiral.com, 0
+getawesomesupport.com, 0
+getcoins.win, 0
+getcs16.ru, 0
+getdc.ru, 0
+getfreegate.com, 0
+get-in-it.de, 0
+getinmybelly.com, 0
+getitfree.cn, 0
+getitnow.gr, 0
+getkey.eu, 0
+getline.in, 0
+getmyscript.com, 0
+getriver.com, 0
+getrix.it, 0
+getsitecontrol.com, 0
+getsteam.cards, 0
+get-styles.ru, 0
+gettertools.com, 0
+getter-tools.de, 0
+get-tune.cc, 0
+get-tune.net, 0
+gettune.net, 0
+getujobs.com, 0
+getway.me, 0
+getwox.com, 0
+gewobag.de, 0
+gezergiyim.com, 0
+gfaq.ru, 0
+gfi.es, 0
+gfmrecharge.co.in, 0
+gfw.pics, 0
+gfycat.com, 0
+gg4m.com, 0
+ggbinary.com, 0
+ggcj.com, 0
+ggmgastro.com, 0
+ghac.cn, 0
+ghostforbeginners.com, 0
+ghostry.cn, 0
+ghtinc.com, 0
+gianganh.net, 0
+gibdd.ru, 0
+gicp.net, 0
+gidnetwork.com, 0
+giftcards.eu, 0
+giftman.ru, 0
+giftster.com, 0
+gigabaza.ru, 0
+gigabyte.cn, 0
+gigaleecher.com, 0
+giga-rapid.com, 0
+gigaserver.cz, 0
+gigatribe.com, 0
+gigatron.rs, 0
+gigatronshop.com, 0
+giga.ua, 0
+gigfa.com, 0
+giiwa.org, 0
+gilbo.ru, 0
+gimhoy.com, 0
+gimlet.us, 0
+gimp.org, 0
+gimvic.org, 0
+ginger-cat.ru, 0
+ginsystem.us, 0
+gioc.kiev.ua, 0
+gionee.com, 0
+giordano.com, 0
+gioseppo.com, 0
+gioxx.org, 0
+gipsr.ru, 0
+gira.cc, 0
+gira.com, 0
+gira.de, 0
+girimulya.com, 0
+girl010.com, 0
+girlsdocam.com, 0
+girlsinparis.com, 0
+girsa.ru, 0
+gisclub.tv, 0
+gis-lab.info, 0
+gisroad.com, 0
+gitgud.io, 0
+github.io, 0
+gitlab.cc, 0
+gitsea.com, 0
+giuseppe.cn, 0
+giustizia-amministrativa.it, 0
+givegift.com.hk, 0
+giveyousomecolortoseesee.com, 0
+gizmiz.com, 0
+gizzmoheaven.com, 0
+gjn.cz, 0
+gjs.so, 0
+gjzq.com.cn, 0
+gkk.uz, 0
+gkovd.ru, 0
+gladiators.ru, 0
+glamius.ru, 0
+glamot.cz, 0
+glamour.ru, 0
+glashkoff.com, 0
+glassrpske.com, 0
+glav-dostavka.ru, 0
+glavred.info, 0
+glitchthegame.com, 0
+glitzcloud.com, 0
+glkb.ch, 0
+globaladvisors.biz, 0
+global-customer.com, 0
+globaldynamicmarketing.com, 0
+globalhitss.com, 0
+globalitanalytics.com, 0
+global-katalog.ru, 0
+globalnomadic.com, 0
+globalpartszone.com, 0
+globalpolicy.org, 0
+globex.cn, 0
+globusmax.co.il, 0
+glocalme.com, 0
+gloeckle.de, 0
+glogow.pl, 0
+glopoi.com, 0
+glorioustrainwrecks.com, 0
+glyphter.com, 0
+gmcc.net, 0
+gm-city.ru, 0
+gmdao.cc, 0
+gmg.biz, 0
+gmod.de, 0
+gmtincorp.com, 0
+gmuz.uz, 0
+gnawers.de, 0
+gnewstv.com, 0
+gnome.org, 0
+gntech.ac.kr, 0
+gnway.cc, 0
+gnway.com, 0
+go189.cn, 0
+go2bus.ru, 0
+go2olymp.com, 0
+goanews.com, 0
+goapr.com, 0
+goarmy.co.uk, 0
+gobaidugle.com, 0
+gob.bo, 0
+gob.cl, 0
+gob.do, 0
+gobelinland.fr, 0
+gochengdu.cn, 0
+godata.tw, 0
+godeyes.cn, 0
+godic.net, 0
+god.jp, 0
+godnota.org, 0
+godon.biz, 0
+goeasy.io, 0
+goeducation.com.tw, 0
+goflyla.com, 0
+gogames.me, 0
+gogosu.xyz, 0
+gogovan.sg, 0
+go.gov.br, 0
+gogovpn.org, 0
+gogvo.com, 0
+goingnative.cn, 0
+goip.de, 0
+golbazar.net, 0
+gol.bg, 0
+goldapple.ru, 0
+goldbroker.com, 0
+goldbroker.fr, 0
+goldbroker.it, 0
+golden-monkey.ru, 0
+goldenpages.ie, 0
+goldenpalace.be, 0
+golden-time.ru, 0
+goldflyer.ru, 0
+goldpharma.cn, 0
+goldwind.com.cn, 0
+golo365.com, 0
+golospravdy.com, 0
+golpas.com, 0
+gomefinance.com.cn, 0
+gomehigo.hk, 0
+gomel.today, 0
+gomezacebo-pombo.com, 0
+gomobil.cz, 0
+goncakitap.com.tr, 0
+g-one-inc.com, 0
+gonetis.com, 0
+gongfubb.com, 0
+gonightshift.com, 0
+goocig.com, 0
+good.cc, 0
+goodgame.ru, 0
+goodly.pro, 0
+goodmaoningboy.com, 0
+good-movie.ru, 0
+goodnight.at, 0
+goodsflow.com, 0
+goodtyping.com, 0
+goody25.com, 0
+googto.org, 0
+goo.kz, 0
+gootara.org, 0
+gopas.cz, 0
+gorcenter.spb.ru, 0
+gorcomnet.ru, 0
+gorcom.ru, 0
+gorlice.pl, 0
+go.ro, 0
+gorodche.ru, 0
+gorodovik.com, 0
+gorodtv.net, 0
+goskills.com, 0
+gosmonitor.ru, 0
+gospmr.org, 0
+gossh.net, 0
+gotdns.com, 0
+gotdns.org, 0
+gothicwiki.pw, 0
+gotocdn.com, 0
+gotokeep.com, 0
+gotye.com.cn, 0
+goujiawang.com, 0
+gouv.bj, 0
+gouv.ci, 0
+gov110.cn, 0
+gov35.ru, 0
+gov.cl, 0
+government.bg, 0
+gov.karelia.ru, 0
+gov.kz, 0
+gov.md, 0
+gov.mg, 0
+gov.mw, 0
+govoritmoskva.ru, 0
+gov.ro, 0
+gov.sc, 0
+gov.sk, 0
+gov.taipei, 0
+govvrn.ru, 0
+gow.help, 0
+gp.by, 0
+gpgtools.org, 0
+gpl-express.com, 0
+gpntb.ru, 0
+gppc.ru, 0
+gqget.com, 0
+gq.ru, 0
+graacc.org.br, 0
+graa.ru, 0
+grabberz.com, 0
+grabien.com, 0
+grabitjeeves.com, 0
+graffitishop.it, 0
+graffitishop.net, 0
+gramula.com, 0
+grandcapital.net, 0
+grandest.fr, 0
+grandtheftarma.com, 0
+graphcommons.com, 0
+graphsketch.com, 0
+gravitypayments.com, 0
+gravitytales.com, 0
+gr.ch, 0
+grcrt.net, 0
+greatagroup.com, 0
+greekfestival.gr, 0
+greenbooki.ru, 0
+greengo.hu, 0
+green-japan.com, 0
+greenlightdigital.com, 0
+greenmama.ru, 0
+greenpeace.fr, 0
+greenpeace.org.br, 0
+greetz.be, 0
+greetz.nl, 0
+greg-kennedy.com, 0
+gregsdrivingschool.net, 0
+griddynamics.net, 0
+gridrepublic.org, 0
+gridsum.com, 0
+griffincapital.com, 0
+grimbets.com, 0
+grishko.ru, 0
+grisino.com, 0
+grnet.gr, 0
+grodno.net, 0
+groene.nl, 0
+gronkh-wiki.de, 0
+groov.pl, 0
+grossum.com, 0
+groundspeak.com, 0
+groupboard.com, 0
+groupe-efrei.fr, 0
+groupeleader.com, 0
+groupensia.com, 0
+group-ib.com, 0
+grouppartner.ru, 0
+growfood.pro, 0
+grpl.org, 0
+grsu.by, 0
+gruendl.de, 0
+grupoasv.com, 0
+grupocobra.com, 0
+grupodass.com.br, 0
+grupofrisa.com, 0
+grupoiris.net, 0
+grupomednet.com.br, 0
+gruponzn.com, 0
+gruposanilab.es, 0
+gruposayer.com, 0
+grupovips.com, 0
+gruppoiren.it, 0
+gruppolapastamadre.it, 0
+grupposandonato.it, 0
+gruso.cz, 0
+gruzovichkof.ru, 0
+gs8.com.tw, 0
+gsier.com.cn, 0
+gskj.gov.cn, 0
+gsmarena.com, 0
+gsmhosting.com, 0
+gsn7.jp, 0
+gso-koeln.de, 0
+g-store.ru, 0
+gstu.by, 0
+gtags.net, 0
+gtk.org, 0
+gtsce.com, 0
+gtshina.ru, 0
+gtue.de, 0
+guadaltel.es, 0
+guagua.cn, 0
+guahao.com, 0
+guanba.com, 0
+guangming.com.my, 0
+guap.ru, 0
+guardian.ng, 0
+guavabooking.com, 0
+guazi.com, 0
+gucheng.com, 0
+gucodd.ru, 0
+gudauri.ru, 0
+guerrillamail.com, 0
+guestcentric.net, 0
+gufener.com, 0
+gufs.org, 0
+guge.xxx, 0
+guguke.net, 0
+guidechem.com, 0
+guide.com.ru, 0
+guifibaix.net, 0
+guifi.net, 0
+guiguiw.com, 0
+guihaibk.com, 0
+guilinbank.com.cn, 0
+gulbenkian.pt, 0
+gulfstream.ru, 0
+gulliway.org, 0
+gullprint.com, 0
+gumrf.ru, 0
+gum.ru, 0
+gundam.eu, 0
+gunserver.ru, 0
+guosen.com.cn, 0
+guostrj.ru, 0
+gup.kz, 0
+gup.ru, 0
+gusline.ru, 0
+gusti-cuir.fr, 0
+gusti-lader.se, 0
+gusti-leder.de, 0
+gustullays.ro, 0
+guu.ru, 0
+gv.com.sg, 0
+gvhouse.com, 0
+gvodbox.com, 0
+gw500.com, 0
+gwales.com, 0
+gwdang.com, 0
+gwifi.com.cn, 0
+gwsecu.com, 0
+gwup.net, 0
+gxdlr.gov.cn, 0
+gxi.gov.cn, 0
+gxnews.com.cn, 0
+gxufe.edu.cn, 0
+gxust.edu.cn, 0
+gyb.ch, 0
+gybond.de, 0
+gyenno.com, 0
+gyertyalang.hu, 0
+gym-gbw.de, 0
+gymlit.cz, 0
+gymnasium-ganderkesee.eu, 0
+gymondo.de, 0
+gym-stolz.de, 0
+gym-training.com, 0
+gyroscope.com, 0
+gz163.cn, 0
+gzedu.com, 0
+gzjjzd.gov.cn, 0
+gzjkw.net, 0
+gzkkonline.com, 0
+gzlanen.com, 0
+gzmpc.com, 0
+gzmtr.com, 0
+gznet.com, 0
+gzpot.com, 0
+gzsfj.gov.cn, 0
+gztz.org, 0
+gzwhir.com, 0
+h1n.ru, 0
+h2opal.com, 0
+h3c.com, 0
+h3yun.com, 0
+h5jun.com, 0
+h6app.com, 0
+haadthip.com, 0
+haahi.com, 0
+haa.su, 0
+habari.co.tz, 0
+habbopoop.org, 0
+haberegider.com, 0
+habito.com, 0
+habitos.mx, 0
+habtium.es, 0
+hacam.me, 0
+hack80.com, 0
+hackacheats.com, 0
+hackademics.fr, 0
+hack.chat, 0
+hack-cn.com, 0
+hac-ker.net, 0
+hackerthemes.com, 0
+hackforums.ru, 0
+hackmygame.info, 0
+hacksbycheats.com, 0
+hacksforcheats.info, 0
+hackspark.fr, 0
+hacpai.com, 0
+hadawebshop.hu, 0
+hadiah.me, 0
+hadiko.de, 0
+haendlerschutz.com, 0
+hageltech.com, 0
+hahaxue.com, 0
+haibei.in, 0
+haier.com, 0
+haier.net, 0
+haihangyun.com, 0
+haimanchajian.com, 0
+haiphong.gov.vn, 0
+hairde.cn, 0
+hair.ms, 0
+hair.su, 0
+haisoft.net, 0
+haiziwang.com, 0
+hajduszoboszlo.hu, 0
+ha-lab.com, 0
+hal.ac.jp, 0
+half-moon.org, 0
+halidi.org, 0
+halihali.tv, 0
+hallard.me, 0
+hallenstadion.ch, 0
+halykbank.kz, 0
+ham3d.co, 0
+hamdi.web.id, 0
+hamfiles.co.uk, 0
+hamhire.com, 0
+haminvara.com, 0
+hamlog.ru, 0
+hamradioshop.it, 0
+hamresan.net, 0
+hamromovie.com, 0
+handball4all.de, 0
+handbrake.fr, 0
+hand-china.com, 0
+handel.pro, 0
+handhand.net, 0
+handicap-job.com, 0
+handicap-love.de, 0
+handyparadies.de, 0
+handy.travel, 0
+hanfan.cc, 0
+hanfverband.de, 0
+hangge.com, 0
+hangzhou.com.cn, 0
+hangzhou.gov.cn, 0
+hanhuazu.cc, 0
+hanjutv.com, 0
+hansn.cn, 0
+hanwha.co.kr, 0
+hanyalewat.com, 0
+hao123.com, 0
+hao24.cn, 0
+hao24.com, 0
+hao76.com, 0
+haoche51.com, 0
+haochedai.com, 0
+haodai.com, 0
+haodianpu.com, 0
+haodou.com, 0
+haofang.net, 0
+haohaizi.com, 0
+haoid.cn, 0
+haojs.cc, 0
+haomaiche.com, 0
+haomwei.com, 0
+haoshitong.com, 0
+haoso.com, 0
+haosou.com, 0
+haosuzhou.com, 0
+haowanyou.com, 0
+haoxiana.com, 0
+haoyangmao8.com, 0
+haozhebao.com, 0
+happeak.ru, 0
+happening.im, 0
+happist.com, 0
+happy88.com, 0
+happyelements.cn, 0
+happyelements.com, 0
+happyjuzi.com, 0
+happyme.club, 0
+happyskin.vn, 0
+happyz.me, 0
+harats.ru, 0
+hardgrand.com, 0
+hardtunedstore.com, 0
+hardwarebg.com, 0
+hargawebsite.com, 0
+haribo.com, 0
+harizanov.com, 0
+haroldltd.ru, 0
+harpacrista.org, 0
+harpoongaming.com, 0
+harpost.com, 0
+harvest.org, 0
+hasgeek.com, 0
+hash-c.co.jp, 0
+hashemian.com, 0
+hashflare.io, 0
+hashkiller.co.uk, 0
+hashlearn.com, 0
+hasjob.co, 0
+haskellstack.org, 0
+hassanabul.com, 0
+hassyon.com, 0
+hasznaltauto.hu, 0
+hasznaltautokereso.hu, 0
+hata.mobi, 0
+hatco.ir, 0
+hausaerzteverband.de, 0
+haus-des-meeres.at, 0
+haushaltshilfe24.at, 0
+haust.edu.cn, 0
+havaforum.com, 0
+hawaii.edu, 0
+hawaiipacifichealth.org, 0
+hayatikodla.net, 0
+haykerproductions.de, 0
+haypost.am, 0
+hays-careers.com, 0
+hazeover.com, 0
+hbcsd.org, 0
+hbhtxx.com, 0
+hb-n-tax.gov.cn, 0
+hboeck.de, 0
+hbooker.com, 0
+hbsc.cn, 0
+hbut.edu.cn, 0
+hc360.com, 0
+hcamur.ru, 0
+hcc.edu.tw, 0
+hclugano.ch, 0
+hc.ru, 0
+hcsibir.ru, 0
+hcs.land, 0
+hd123.com, 0
+hdarea.co, 0
+hdb.com, 0
+hdbox.ws, 0
+hdcity.org, 0
+hdclub.org, 0
+hdclub.sk, 0
+hdcmct.org, 0
+hddlife.com, 0
+hddlife.ru, 0
+hdfax.com, 0
+hd.free.fr, 0
+hdhello.com, 0
+hdhome.org, 0
+hdk.cz, 0
+hdktv.org, 0
+hdmoney.cn, 0
+hdmyjob.com, 0
+hdschools.org, 0
+hdshwh.com, 0
+hdslb.com, 0
+hd-spain.com, 0
+hdtmedia.com, 0
+hdw.la, 0
+head.ru, 0
+headstats.com, 0
+healthday.com.au, 0
+health.nz, 0
+heartbowsmakeup.com, 0
+hearthigen.com, 0
+hearth.net, 0
+heateor.com, 0
+heavytools.hu, 0
+hebaodai.com, 0
+hebei.com.cn, 0
+hebergratuit.net, 0
+hebis.de, 0
+hebut.edu.cn, 0
+hec.gov.pk, 0
+hechonghua.com, 0
+hedonism.com, 0
+hefe-und-mehr.de, 0
+heidelbergerwohnen.de, 0
+heidelpay.de, 0
+heiguang.com, 0
+heilsarmee.ch, 0
+hej.sk, 0
+hekko24.pl, 0
+heliguy.com, 0
+heliohost.org, 0
+heliopark.ru, 0
+helios.kz, 0
+hellclan.co.uk, 0
+hellenicnavy.gr, 0
+hellmann.net, 0
+hellocq.net, 0
+hellotalk.com, 0
+hellotars.com, 0
+hellweg.de, 0
+helmo.be, 0
+helpangel.org, 0
+help.com, 0
+help-im.ru, 0
+helpmij.nl, 0
+helprace.com, 0
+helpshift.com, 0
+helsinn.com, 0
+hemden.de, 0
+hentairules.net, 0
+herbies-herbs.com, 0
+herbolariosiempreviva.com, 0
+hercrentals.com, 0
+hermitageshop.ru, 0
+herni.cz, 0
+herokuapp.com, 0
+heureka.cz, 0
+heureka.sk, 0
+heuteinhamburg.de, 0
+heveya.ru, 0
+heweather.com, 0
+hexieshe.com, 0
+hexindai.com, 0
+hey-ai.com, 0
+heysky.cn, 0
+hgame.com, 0
+hgmail.com, 0
+hgsfss.com, 0
+hgyouxi.net, 0
+hh010.com, 0
+hh2.com, 0
+hhos.ru, 0
+hhwforum.hu, 0
+hiapk.com, 0
+hiapphere.com, 0
+hicraft.cn, 0
+hidalgo.gob.mx, 0
+hidata.org, 0
+hide-my-ip.com, 0
+hi-docs.com, 0
+hidolphin.cn, 0
+hifi.fr, 0
+hifi-tower.co.uk, 0
+hifi-tower.ie, 0
+higherlogic.com, 0
+high-minded.net, 0
+highpin.cn, 0
+highscreen.ru, 0
+hightech.fm, 0
+hihocoder.com, 0
+hihotel.asia, 0
+hiknow.com, 0
+hillstonenet.com, 0
+hinabian.com, 0
+hinaloe.net, 0
+hinata-online-community.fr, 0
+hindustansoftware.in, 0
+hinine.com, 0
+hipac.cn, 0
+hi-pda.com, 0
+hipertextual.com, 0
+hipnosenapratica.com.br, 0
+hippocratesinst.org, 0
+hirealestate.es, 0
+hirede.com, 0
+hiredops.com, 0
+hirist.com, 0
+hisense.com, 0
+his.gov.sd, 0
+hismarttv.com, 0
+histmag.org, 0
+histock.tw, 0
+histoire-image.org, 0
+hisunpharm.com, 0
+hitbox.tv, 0
+hitechboard.ru, 0
+hit.edu.cn, 0
+hitonline.ua, 0
+hitour.cc, 0
+hitrust.com.tw, 0
+hitutor.com.tw, 0
+hiyd.com, 0
+hiyowa.com, 0
+hj-qz.com, 0
+hkbf.org, 0
+hkcccc.org, 0
+hkcompany.org, 0
+hkedu.sh.cn, 0
+hk-lawyer.org, 0
+hkl-baumaschinen.de, 0
+hkst.com, 0
+hksuning.com, 0
+hkust.se, 0
+hkzyy.com.cn, 0
+hlamer.ru, 0
+hldns.ru, 0
+hledejinzerat.cz, 0
+hlidacsmluv.cz, 0
+hm.edu, 0
+hnagroup.com, 0
+hnagroup.net, 0
+hnair.com, 0
+hnair.net, 0
+hndnews.com, 0
+hneao.cn, 0
+hnee.de, 0
+hnks.gov.cn, 0
+hnldesign.nl, 0
+hnr.cn, 0
+hnrsks.com, 0
+hnrsks.gov.cn, 0
+hnteacher.net, 0
+hnu.edu.cn, 0
+hobbybrauerversand.de, 0
+hobby-site.com, 0
+hobimasak.info, 0
+hochanda.com, 0
+hochbahn.de, 0
+hochbahn-direkt.de, 0
+hockey30.com, 0
+hoerbiger.com, 0
+hoffmann-group.com, 0
+hoge.cn, 0
+hoippo.km.ua, 0
+hojitoyz.ir, 0
+hokudai.ac.jp, 0
+hola.com, 0
+holarse-linuxgaming.de, 0
+holder.com.ua, 0
+holema.eu, 0
+hol.es, 0
+holidaycalendar.com, 0
+holike.com, 0
+holime.cz, 0
+hollard.co.za, 0
+hollr2099.ga, 0
+holmesreport.com, 0
+holmglad.edu.hk, 0
+hologfx.com, 0
+holyo.org, 0
+homates.com, 0
+home-cloud.me, 0
+homecloud.pl, 0
+homeip.net, 0
+homelinux.com, 0
+homelinux.org, 0
+homemadetools.net, 0
+homemasters.ru, 0
+homemediaserver.ru, 0
+homenet.org, 0
+homepc.it, 0
+home.pl, 0
+homerez.com, 0
+homeserver.com, 0
+homeservice24.ch, 0
+homeunix.com, 0
+homeworkmarket.com, 0
+homeworkshop.org.uk, 0
+honest-fund.com, 0
+hongweipeng.com, 0
+hongxinbao.com, 0
+honor.es, 0
+honxb.com, 0
+hoop.co.uk, 0
+hoor.ir, 0
+hoornews.com, 0
+hoozin.com, 0
+hopdoddy.com, 0
+hopebilling.com, 0
+hoperun.com, 0
+hoplon.com, 0
+hop-sport.pl, 0
+hopto.org, 0
+horabrasil.com.br, 0
+horariodeapertura24.es, 0
+horki.info, 0
+horoscope.com, 0
+horoscopo.com, 0
+horoshee.fm, 0
+hospedando.com, 0
+hospmall.com, 0
+host4africa.com, 0
+host4g.ru, 0
+hostazor.com.tr, 0
+hostcoz.com, 0
+host-ed.me, 0
+hostedpbx.lu, 0
+hostelmanagement.com, 0
+hoste.pl, 0
+hosteurope.de, 0
+hoste.work, 0
+host-food.ru, 0
+hostforweb.com, 0
+hostiman.ru, 0
+hostingasp.pl, 0
+hostinghouse.pl, 0
+hostingkunde.de, 0
+hostingradio.ru, 0
+hostingtime.de, 0
+hosting.ua, 0
+hostit.ir, 0
+hostitsmart.com, 0
+host.kz, 0
+hostminio.es, 0
+hostpair.com, 0
+hostpark.cn, 0
+hostplus.gr, 0
+hostseo.com, 0
+hostserv.eu, 0
+hostsleek.com, 0
+hostsuki.pro, 0
+host-tracker.com, 0
+hostwp.es, 0
+hostzi.com, 0
+hotbikeweb.com, 0
+hotdealsclub.com, 0
+hot-deals.org, 0
+hotelmix.es, 0
+hotelmix.it, 0
+hotelnow.co.kr, 0
+hotels.ru, 0
+hotelston.com, 0
+hotjob.cn, 0
+ho.ua, 0
+houam.com, 0
+houbank.com, 0
+house365.com, 0
+housingcare.org, 0
+houxue.com, 0
+hoverwatch.com, 0
+howarth-timber.co.uk, 0
+how-living.com, 0
+howoo.net, 0
+howtoinstall.co, 0
+hozehkh.com, 0
+hozi.co.za, 0
+hozobzor.com, 0
+hpc.ru, 0
+hp-lexicon.org, 0
+hponline.cz, 0
+hpplay.com.cn, 0
+hpxy.net, 0
+hqhost.net, 0
+hq-patronen.de, 0
+hqvpn.cn, 0
+hrackarna.cz, 0
+hrbeu.edu.cn, 0
+hrc.govt.nz, 0
+hrjuice.com, 0
+hrlocker.com, 0
+hrloo.com, 0
+hrnz.co.nz, 0
+hro.ru, 0
+hrp.hu, 0
+hrpraktijk.nl, 0
+hrs.cn, 0
+hrsd.com, 0
+hrstop.com, 0
+hrstoppro.com, 0
+hrtl.com.cn, 0
+hrtoday.ch, 0
+hrtpayment.com, 0
+hrwhisper.me, 0
+hs21.de, 0
+hsc.gov.ua, 0
+hschinese.com, 0
+h-schmidt.net, 0
+hscloud.cn, 0
+hse.ru, 0
+hs-furtwangen.de, 0
+hslda.org, 0
+hsw.com.au, 0
+hsweb.me, 0
+htche.com, 0
+htfc.com, 0
+htgwf.com, 0
+ht-line.ru, 0
+htl-klu.at, 0
+htmlweb.ru, 0
+hts.ru, 0
+ht-systems.ru, 0
+httv.de, 0
+htv.bg, 0
+htyd50.com, 0
+htzyw.com, 0
+huai123.me, 0
+huajiao.com, 0
+huangwenchao.com.cn, 0
+huangxiaolong.net, 0
+huanhuba.com, 0
+huanqiushuzi.com, 0
+huashengsheng.com, 0
+huawei.com, 0
+huaxi100.com, 0
+huaxincem.com, 0
+huaxing.com, 0
+huayugame.com, 0
+hub-avocat.fr, 0
+hubcity.ir, 0
+hubeikaowu.com, 0
+hublaa.me, 0
+hubpress.ir, 0
+hubsan.com, 0
+hucheck.com, 0
+hudebnibanka.cz, 0
+huhamhire.com, 0
+huijia.edu.cn, 0
+huilianyi.com, 0
+huimaiche.com, 0
+huim.com, 0
+huimei.com, 0
+huimin.cn, 0
+huishoubao.com, 0
+hulsta.com, 0
+humaxasia.com.tw, 0
+humlak.cz, 0
+humlnet.cz, 0
+hunan.gov.cn, 0
+hunarr.co.in, 0
+hundsun.com, 0
+hunhan.kr, 0
+hunjuwang.com, 0
+hunliji.com, 0
+hunterdouglas.com.ar, 0
+hunters.com, 0
+hunters.sx, 0
+huntnews.in, 0
+huntworld.ru, 0
+huodonghezi.com, 0
+huoduan.com, 0
+huoduan.net, 0
+huodull.com, 0
+huorong.cn, 0
+huox.tv, 0
+huoyunren.com, 0
+hushangcaifu.com, 0
+hust.edu.cn, 0
+hustonline.net, 0
+hustvpn.com, 0
+hutamakarya.com, 0
+huway.com, 0
+huxiu.com, 0
+huzhan.com, 0
+hvaonline.net, 0
+hvf-bs.net, 0
+hvngroups.net, 0
+hwu.edu.tw, 0
+hx9999.com, 0
+hxacc.com, 0
+hxsd.com, 0
+hxtao.site, 0
+hybridmedia.be, 0
+hyipchina.com, 0
+hyip.tc, 0
+hyit.edu.cn, 0
+hymer.com, 0
+hymnal.net, 0
+hyperay.cc, 0
+hyperhosting.gr, 0
+hyperledger.org, 0
+hyperreal.info, 0
+hypers.com, 0
+hypetap.com, 0
+hypnoseries.tv, 0
+hypweb.net, 0
+hytc.edu.cn, 0
+hytera.com, 0
+hzfc.gov.cn, 0
+hzg.de, 0
+hzjcb.com, 0
+hzsh.xyz, 0
+i234.me, 0
+i24.cc, 0
+i3dpworld.com, 0
+i3wm.org, 0
+i4th.in.th, 0
+i7vpnn.com, 0
+i8xiaoshi.com, 0
+iachieved.it, 0
+iae.edu.ar, 0
+iaixue.com, 0
+ialf.edu, 0
+ialpa.net, 0
+iamgstore.com, 0
+iamue.com, 0
+iamwhitneywisconsin.com, 0
+iandunn.name, 0
+iapppay.com, 0
+iariss.fr, 0
+iasassessment.com, 0
+iasbs.ac.ir, 0
+ias.com.tr, 0
+iask.in, 0
+iautos.cn, 0
+ib3tv.com, 0
+ibanquan.com, 0
+ibantang.com, 0
+ibanyu.com, 0
+ibaoyin.com, 0
+ibaren.com, 0
+ibaroody.com, 0
+ibayapp.com, 0
+ibb.waw.pl, 0
+ibc-solar.de, 0
+ibdfam.org.br, 0
+ibero.mx, 0
+ibis.net.ua, 0
+ibooked.com.br, 0
+iboxpay.com, 0
+iboys.at, 0
+iboys.cz, 0
+ibpssc.in, 0
+ibroadlink.com, 0
+ibs.re.kr, 0
+ibs.ru, 0
+ibsys.com, 0
+iburger.bz, 0
+i-cad.fr, 0
+icaile.com, 0
+icard.com, 0
+icasa.ru, 0
+icculus.org, 0
+iccup.com, 0
+icc-usa.com, 0
+icdo.org, 0
+ice-apple.com, 0
+iceberg.ru, 0
+ice-fx.com, 0
+icegram.com, 0
+icej.org, 0
+icetrade.by, 0
+iceveil.com, 0
+icewing.cc, 0
+ichess.es, 0
+ichess.net, 0
+iciba.com, 0
+icicilombard.com, 0
+i-circle.net, 0
+ickd.cn, 0
+iclassx.com, 0
+iclei.org, 0
+icn.org.au, 0
+icourse163.org, 0
+icreator.cn, 0
+icrt.cu, 0
+ict.ac.cn, 0
+icta.lk, 0
+ictb.cz, 0
+icult.ru, 0
+icybee.cn, 0
+icy-veins.com, 0
+idaam.com.br, 0
+idaybreak.com, 0
+idda.com.au, 0
+ideabank.by, 0
+ideachess.com, 0
+ideadunes.com, 0
+ideal.az, 0
+idealkaynak.net, 0
+idealsee.com, 0
+idesa.com.py, 0
+idf.il, 0
+idhost.kz, 0
+idiannaomi.com, 0
+idioma.com, 0
+idirecto.es, 0
+idl.pl, 0
+idmarch.org, 0
+idm.party, 0
+idokep.eu, 0
+idokep.hu, 0
+idokep.ro, 0
+idoklad.cz, 0
+idomix.de, 0
+idope.se, 0
+idport.kz, 0
+idreamsky.com, 0
+idshost.fr, 0
+idsurvey.it, 0
+idtdna.com, 0
+id.uz, 0
+idv.biz, 0
+idv.la, 0
+idwpublishing.com, 0
+idx.com.cn, 0
+iecc.com, 0
+iee.lu, 0
+iemag.ru, 0
+ieminc.com, 0
+iesde.com.br, 0
+iesgrancapitan.org, 0
+iesp.edu.br, 0
+ietv.cc, 0
+ifanqiang.cn, 0
+ifanr.com, 0
+ifcmarkets.ae, 0
+ifcmarkets.com, 0
+ifcmarkets.es, 0
+ifcmarkets.ru, 0
+ifcmir.asia, 0
+ifeng.com, 0
+ifinterface.com, 0
+ifj.edu.pl, 0
+ifjing.com, 0
+iflym.com, 0
+iflysse.com, 0
+ifmo.ru, 0
+ifmsa.pl, 0
+ifnet.or.jp, 0
+ifood360.com, 0
+ifreespeed.com, 0
+ifto.edu.br, 0
+ifz.ru, 0
+igma.ru, 0
+ignatianum.edu.pl, 0
+ignitenet.com, 0
+ignorelist.com, 0
+igola.com, 0
+igoos.net, 0
+igps.ru, 0
+i-gram.ir, 0
+igrarniya.ru, 0
+igrovyeavtomatyvulcan.com, 0
+igrow.cn, 0
+igrushki7.com.ua, 0
+igs-aurichwest.de, 0
+igs-buchholz.de, 0
+igs-linden.eu, 0
+igsmelle.net, 0
+ih5.cn, 0
+ihaima.com, 0
+ihep.ac.cn, 0
+ihewro.com, 0
+ihoc.net, 0
+iho.in, 0
+ihonex.com, 0
+ihr-darlehen.de, 0
+ihrscloud.com, 0
+ihuaben.com, 0
+ihuan.me, 0
+ihx99.vip, 0
+iiapple.com, 0
+iica.in, 0
+iicavers.ru, 0
+ii-i.org, 0
+iiit.ac.in, 0
+iimjobs.com, 0
+iinfo.cz, 0
+iinuu.lv, 0
+iirose.com, 0
+iiss.org, 0
+iitb.ac.in, 0
+iitg.ac.in, 0
+iitp.ru, 0
+ijh.cc, 0
+ijser.cn, 0
+ikalogs.ru, 0
+ikapiracy.com, 0
+ikarussecurity.com, 0
+ikc.edu.tr, 0
+ikiapharm.com, 0
+iki.fi, 0
+iklangratiz.com, 0
+iklub.sk, 0
+iknow.jp, 0
+iknow.travel, 0
+ikraikra.ru, 0
+ikros.sk, 0
+iks.ru, 0
+ikuai8.com, 0
+ilab.cn, 0
+ilam.ac.ir, 0
+ilance.com, 0
+ilanni.com, 0
+ilaoyawo.com, 0
+ilcorsaronero.info, 0
+iletisimmakinesi.com, 0
+iliasnet.de, 0
+iligang.cn, 0
+ilizium.com, 0
+illucit.com, 0
+ilook.by, 0
+ilounge.ua, 0
+ilovemum.ru, 0
+iloveoops.com, 0
+ilucca.net, 0
+ilustra.org, 0
+ilvescovado.it, 0
+ilync.cn, 0
+im9.cz, 0
+imafex.sk, 0
+imageban.ru, 0
+images-du-monde.fr, 0
+imag.fr, 0
+imaginacolombia.com, 0
+imaginarium.com.br, 0
+imaginarium.es, 0
+imarket.by, 0
+imarotulos.com, 0
+imas.me, 0
+imatrix.com, 0
+imaxin.com, 0
+imaxmv.com, 0
+imcn.me, 0
+imcopex.com, 0
+imc.tomsk.ru, 0
+imedi.ge, 0
+imeidata.net, 0
+imei-server.com, 0
+imei-server.ru, 0
+ime.moe, 0
+imenidni.eu, 0
+i-meto.com, 0
+imgchr.com, 0
+img.com.br, 0
+img.com.ua, 0
+imikoko.com, 0
+imin.ru, 0
+immigrationvoice.org, 0
+immmmm.com, 0
+immobiliarefull.com, 0
+immobilienscout24.at, 0
+immobilienscout24.de, 0
+immocha.com, 0
+immotransit.be, 0
+imoffice.com, 0
+imore.com, 0
+impactradius.com, 0
+imperator.club, 0
+imperia-sadovoda.ru, 0
+imperiyanews.ru, 0
+imperosoftware.com, 0
+implyingrigged.info, 0
+impresa.pt, 0
+impressorajato.com.br, 0
+improbable.io, 0
+impulse.de, 0
+imspm.com, 0
+imssx.com, 0
+imsxm.com, 0
+imwork.net, 0
+in66.com, 0
+inaani.com, 0
+inap.gob.ar, 0
+in-berlin.de, 0
+inboxinsight.co.uk, 0
+inbucovina.ro, 0
+incaa.gob.ar, 0
+inc.com, 0
+incircle.jp, 0
+inconcertcc.com, 0
+incontrion.com, 0
+inc.ru, 0
+incust.com, 0
+inc-vrdl.iq, 0
+indamail.hu, 0
+indexa.de, 0
+indexforce.com, 0
+index.org.ru, 0
+indiada.ru, 0
+indiatradefair.com, 0
+indieweb.org, 0
+indirads.work, 0
+indir.biz, 0
+indirimkuponum.net, 0
+individualkimsk.com, 0
+indonesianbacktrack.or.id, 0
+indra.com, 0
+indue.com.au, 0
+indusos.com, 0
+ine.gob.gt, 0
+inera.se, 0
+ines.ro, 0
+inet.edu.ar, 0
+i-news.kz, 0
+inf74.ru, 0
+infars.ru, 0
+infiniflux.com, 0
+infiniti.com.cn, 0
+infinitus.com.cn, 0
+infinitycloud.com, 0
+infinixmobility.com, 0
+infino.me, 0
+infiplay.com, 0
+inflibnet.ac.in, 0
+influans.com, 0
+influencerdb.net, 0
+inflyteapp.com, 0
+info241.com, 0
+infobox.ru, 0
+infobusiness2.ru, 0
+infoherman.com, 0
+infoimoveis.com.br, 0
+infokam.su, 0
+infokartta.fi, 0
+infolan.by, 0
+info-leaks.ru, 0
+infomaniak.ch, 0
+infomaniak.com, 0
+infomercados.com, 0
+infometer.org, 0
+infomir.com.ua, 0
+infomir.eu, 0
+infomiruk.co.uk, 0
+infonavit.org.mx, 0
+infoniqa.com, 0
+infon.ru, 0
+infopraca.pl, 0
+infoprotector.com, 0
+inforesheniya.ru, 0
+inforesist.org, 0
+informamolise.com, 0
+informatics.ru, 0
+information-security.fr, 0
+informika.ru, 0
+inform.kz, 0
+inforoutefpt.org, 0
+infoskidka.ru, 0
+infosliv.club, 0
+infosport.ru, 0
+infoteca.it, 0
+infotec.be, 0
+infotec.com.pe, 0
+info.tm, 0
+infovend.ru, 0
+infovip.biz, 0
+infradead.org, 0
+infrymo.com, 0
+inf.ua, 0
+ingegneriareputazionale.com, 0
+ingeteam.com, 0
+ingress-mosaics.com, 0
+ingrnet.com, 0
+inistrack.net, 0
+initkms.ru, 0
+inits.at, 0
+inje.ac.kr, 0
+injntu.com, 0
+inkdrop.info, 0
+inke.cn, 0
+inke.com, 0
+inklestudios.com, 0
+inloox.com, 0
+inloox.de, 0
+inmart.ua, 0
+inmotionhosting.com, 0
+inmyroom.ru, 0
+innab.org, 0
+innerwise.com, 0
+innolux.com, 0
+innopolis.ru, 0
+innotech.co.jp, 0
+innotechx.com, 0
+inobroker.de, 0
+inonu.edu.tr, 0
+inovance.cn, 0
+inovarmais.com, 0
+inovex.de, 0
+inpa.gov.br, 0
+inpayment.ru, 0
+inplat-tech.com, 0
+inpost.ru, 0
+inpsycho.ru, 0
+inres.sk, 0
+inscripcionscc.com, 0
+inscription-facile.com, 0
+insearch.edu.au, 0
+insertcoin.mx, 0
+insert.com.pl, 0
+insgeek.com, 0
+inshanedesigns.com, 0
+insideblog.org, 0
+insideparadeplatz.ch, 0
+insistpost.com, 0
+inspire-energy.com.cn, 0
+inspur.com, 0
+instabot.ir, 0
+instagramtakiphilesi.com, 0
+instahack.me, 0
+instakib.com, 0
+instalex.ru, 0
+instamc.com.br, 0
+instaps.ru, 0
+instawork.com, 0
+instela.com, 0
+instrumentschedule.com, 0
+insurancenewsnet.com, 0
+insynq.com, 0
+intaa.net, 0
+intant.ru, 0
+inteam.com, 0
+intechinfo.fr, 0
+intechnic.com, 0
+integle.com, 0
+integnity.com, 0
+integralmedica.com.br, 0
+intel-academy.ru, 0
+intelek.cz, 0
+intelipost.com.br, 0
+intelligenceonline.com, 0
+intellij.net, 0
+intelsib.ru, 0
+intelvision.sc, 0
+interaction-design.org, 0
+interactivewebs.com, 0
+interaffairs.ru, 0
+interakt.co, 0
+interalpen.com, 0
+interaxions.ru, 0
+intercity.by, 0
+intermaps.com, 0
+international-license.com, 0
+internations.org, 0
+internetkurse-koeln.de, 0
+internetreputation.com, 0
+internet-verschenkmarkt.de, 0
+internetwerk.de, 0
+internorm.com, 0
+interpane.com, 0
+interpreters.travel, 0
+interra.ru, 0
+interspeedia.com, 0
+intersport.es, 0
+intersport.ru, 0
+inters.ru, 0
+intertop.kz, 0
+intertrustgroup.com, 0
+intertwine.it, 0
+intex.in, 0
+inthepicture.com, 0
+inti.co.id, 0
+intimcity.nl, 0
+intinfra.com, 0
+intnet.dj, 0
+intocareers.org, 0
+intorobot.com, 0
+intovps.com, 0
+intred.it, 0
+intt.gob.ve, 0
+intuit.com, 0
+intuit.ru, 0
+intvua.com, 0
+inventec.com, 0
+investservices.ir, 0
+invoicebus.com, 0
+invoiceplane.com, 0
+inwebpro.gr, 0
+inwx.com, 0
+inwx.de, 0
+iobb.net, 0
+iocenter.ru, 0
+ioe.edu.np, 0
+ioinformatics.org, 0
+iok.la, 0
+iol8.com, 0
+ioliu.cn, 0
+iomedia.ru, 0
+iondigi.com, 0
+ionidea.com, 0
+i-on.net, 0
+iooo.hu, 0
+ios.ac.cn, 0
+iosjailbreak.tech, 0
+iotivity.org, 0
+ip138.com, 0
+ip-188-165-217.eu, 0
+ipalfish.com, 0
+ip-approval.com, 0
+ipaslovakia.sk, 0
+ipb.ac.id, 0
+ipcn.org, 0
+ipdisk.co.kr, 0
+iperf.fr, 0
+ipeye.ru, 0
+ipfs.io, 0
+ip-games.ru, 0
+ipinyou.com, 0
+ipipe.ru, 0
+ipmobilea.com, 0
+ipmu.jp, 0
+ipnxnigeria.net, 0
+ipoint.kz, 0
+ippexpo.org, 0
+ippi.com, 0
+ipresta.ir, 0
+ipricegroup.com, 0
+iprim.ru, 0
+iprotime.com, 0
+ipstock.com, 0
+iptel.org, 0
+iptime.org, 0
+ipxe.org, 0
+iqads.ro, 0
+iqbaby.ru, 0
+iqbusiness.net, 0
+iqit-commerce.com, 0
+iqoption.com, 0
+iqor.com, 0
+iqugroup.com, 0
+iranadsco.com, 0
+iranapp.org, 0
+iran-doc.com, 0
+irangpsmap.com, 0
+iranh.ir, 0
+iranicard.com, 0
+irankhodros.com, 0
+irankiai.lt, 0
+iranmap.biz, 0
+iranmodern.com, 0
+iranmohajerat.ir, 0
+iran-music.com, 0
+irannic.org, 0
+iranonymous.org, 0
+iransamaneh.com, 0
+iranserver.com, 0
+iranshao.com, 0
+irantunez.com, 0
+iranweb.co, 0
+iraqinews.com, 0
+irbib.com, 0
+ircity.ru, 0
+irdp.ac.tz, 0
+ireadercity.com, 0
+iredmail.org, 0
+iresis.com, 0
+irfanview.de, 0
+irgups.ru, 0
+irht.ir, 0
+iriding.cc, 0
+iridize.com, 0
+iriney.ru, 0
+irklib.ru, 0
+irk.ru, 0
+irockbunny.com, 0
+ironplanet.com, 0
+ironwifi.com, 0
+iroot.kr, 0
+irpowerweb.com, 0
+irr.ru, 0
+irsahosting.ir, 0
+irsecteam.org, 0
+irserv.ir, 0
+irun.org, 0
+is74.ru, 0
+isaanco.com, 0
+is-a-geek.com, 0
+is-a-geek.org, 0
+is-best.net, 0
+ischool.com.tw, 0
+i-schools.ru, 0
+iscool.co.il, 0
+isea.ru, 0
+iseehd.tv, 0
+isel.pt, 0
+iserv-gis.de, 0
+ishangzu.com, 0
+ishanitech.biz, 0
+ishansong.com, 0
+ishield.cn, 0
+ishinfo.com, 0
+ishoutbox.com, 0
+ishuhui.com, 0
+isiarussia.ru, 0
+isi.edu, 0
+isif-life.com, 0
+iskmarket.com, 0
+iskn.co, 0
+iskyshop.com, 0
+islands.com, 0
+ismdy.com, 0
+isming.me, 0
+isnap.com, 0
+isoffice.cn, 0
+isolux.ru, 0
+isotools.org, 0
+ispbyte.ru, 0
+ispeak.cn, 0
+ispfr.net, 0
+isqchina.cn, 0
+isqchina.com, 0
+isra.edu.pk, 0
+israela.ru, 0
+israfish.com, 0
+issaplus.com, 0
+issdigitalthe.com.br, 0
+istafrica.com, 0
+istanbulbilisim.com.tr, 0
+istanbulfm.com.tr, 0
+istarshine.com, 0
+istarvip.cn, 0
+istek.edu.az, 0
+istic.ac.cn, 0
+istio.com, 0
+istitutodeglinnocenti.it, 0
+istranet.ru, 0
+istt.ir, 0
+istu.edu, 0
+isu.ru, 0
+isuv.de, 0
+iswind.com, 0
+it2b.com.br, 0
+it376.com, 0
+itaita.ru, 0
+italtronik.it, 0
+italy-vms.ru, 0
+itangyi.com, 0
+itb.ac.id, 0
+itbusiness.com.ua, 0
+itcast.cn, 0
+itchannel.pt, 0
+itcinfotech.com, 0
+itc-life.ru, 0
+itcolima.edu.mx, 0
+it-connection.ru, 0
+it.cx, 0
+itdos.com, 0
+iteam.ru, 0
+itec.es, 0
+itecgoi.in, 0
+itechgyan.com, 0
+itechromania.com, 0
+itehk.com.hk, 0
+itelligence.de, 0
+itelon.ru, 0
+ithmz.com, 0
+ithub.hu, 0
+itiankong.net, 0
+itiffany.cc, 0
+itinsight.pt, 0
+itiscali.cz, 0
+itivi.pl, 0
+itjh.net, 0
+it-kb.ru, 0
+itlab.com.br, 0
+itlalaguna.edu.mx, 0
+itmages.ru, 0
+itm.edu, 0
+itmitte.de, 0
+itmo.com, 0
+itmonline.co.in, 0
+itnull.ru, 0
+itotii.com, 0
+itour.cn, 0
+itouzi.com, 0
+itoyun.cn, 0
+itp.ac.cn, 0
+it.pt, 0
+itransition.com, 0
+itresearches.ir, 0
+itrip.com, 0
+itsajten.se, 0
+itshaman.ru, 0
+itshneg.com, 0
+itsk.com, 0
+itsyourshop.ru, 0
+ittour.com.ua, 0
+ittun.com, 0
+it-tv.org, 0
+itugo.com, 0
+itural.ru, 0
+itworx.com, 0
+itwriter.ru, 0
+ityx.de, 0
+itzmx.com, 0
+i.ua, 0
+iubh.de, 0
+iusss.us, 0
+iust.ac.ir, 0
+iustice.net, 0
+iuventa.sk, 0
+iuvui.net, 0
+ivan-site.com, 0
+ivaoru.org, 0
+ivc34.ru, 0
+ivedu.ru, 0
+ivers.ru, 0
+ivest.kz, 0
+iviewui.com, 0
+ivi.ru, 0
+ivolga.tv, 0
+i-vtb.by, 0
+ivteleradio.ru, 0
+iwant.cz, 0
+iwascoding.com, 0
+iwavesystems.com, 0
+iwin.me, 0
+iwo.es, 0
+iwuzhen.org, 0
+iwww.me, 0
+ixdzs.com, 0
+ixingpan.com, 0
+ixinyou.com, 0
+ixiumei.com, 0
+iyibank.com, 0
+iyingdi.com, 0
+iyiou.com, 0
+iyuce.com, 0
+iyuntoo.com, 0
+iyunv.com, 0
+iyunxiao.com, 0
+izhforum.info, 0
+izhuchuang.com, 0
+izim.az, 0
+izmailovo.ru, 0
+izntz.com, 0
+iztwp.com, 0
+izvestia.ru, 0
+j0.cn, 0
+j2e.com, 0
+jaadee.com, 0
+jaai.cn, 0
+jaas.ac.cn, 0
+jabber.ru, 0
+jac.com.cn, 0
+jackcola.org, 0
+jacksonholewy.com, 0
+jaeapp.com, 0
+jaguar.ru, 0
+jahanscan.ir, 0
+jahanserver.com, 0
+jahwa.com.cn, 0
+jakerevans.com, 0
+jakumo.org, 0
+jalf.com, 0
+jamasp.ir, 0
+jambit.com, 0
+jambler.com, 0
+jamesallen.com, 0
+jammer4uk.com, 0
+jana.com, 0
+janfou.com, 0
+ja.nl, 0
+janosh.com, 0
+jantrish.ru, 0
+japandaisuki.com, 0
+japantrek.ru, 0
+japex.ru, 0
+jap-mom.com, 0
+jaranguda.com, 0
+jardinazuayo.fin.ec, 0
+jarjad.ru, 0
+jarltech.de, 0
+jaroslaw.pl, 0
+javacardos.com, 0
+javamilk.com, 0
+javanonline.ir, 0
+javarush.ru, 0
+javascript.ru, 0
+jawset.com, 0
+jazz-shop.ru, 0
+jc-bingo.com, 0
+jci.cc, 0
+jcndev.com, 0
+jconline.cn, 0
+jcouncil.net, 0
+jcy.gov.cn, 0
+jdair.net, 0
+jdbc.tokyo, 0
+jd.com, 0
+jdlf.com.au, 0
+jdriven.com, 0
+jecvay.com, 0
+jee.io, 0
+jejunu.ac.kr, 0
+jelastic.com, 0
+jellyfish.net, 0
+jenkers.com, 0
+jenniczech.com, 0
+jennifersoft.com, 0
+je-papote.com, 0
+jeppson.org, 0
+jerez.es, 0
+jergym.cz, 0
+jerky.com, 0
+jerryspizza.ro, 0
+jester-soft.ws, 0
+jesuislibre.net, 0
+jesus-comes.com, 0
+jetinsta.com, 0
+jetlovers.com, 0
+jetzt.at, 0
+jewcer.org, 0
+jeyserver.com, 0
+jfservice.ru, 0
+jfz.com, 0
+jg-gta.com, 0
+jgospel.net, 0
+jhddg.com, 0
+jhs.ch, 0
+jhsnet.org, 0
+jhu.edu, 0
+jia.com, 0
+jiae.com, 0
+jiahao.me, 0
+jian40.com, 0
+jiandaoyun.com, 0
+jiangmen.gov.cn, 0
+jiangnan.edu.cn, 0
+jianjiaobuluo.com, 0
+jiankang51.cn, 0
+jiankang.com, 0
+jianyezuqiu.cn, 0
+jianzhimao.com, 0
+jiashuangkuaizi.com, 0
+jiashuangkuaizi.com.cn, 0
+jiasule.com, 0
+jiaxincloud.com, 0
+jiayougo.com, 0
+jicin.cz, 0
+jiecao.fm, 0
+jiedaibao.com, 0
+jiedai.cn, 0
+jieliku.com, 0
+jiemodui.com, 0
+jieyitong.cn, 0
+jiitsimplified.com, 0
+jijiys.com, 0
+jike.info, 0
+jikewenku.cn, 0
+jileniao.net, 0
+jiloc.com, 0
+jiluxinqing.com, 0
+jin10.com, 0
+jindl.com.cn, 0
+jingletruck.com, 0
+jingruis.com, 0
+jinkan.org, 0
+jinnong.cn, 0
+jinri.cn, 0
+jinritemai.com, 0
+jinr.ru, 0
+jinshangdai.com, 0
+jinshuju.com, 0
+jinshuju.net, 0
+jinxin99.cn, 0
+jinzhoubank.com, 0
+jios.org, 0
+jisutiyu.com, 0
+jit.edu.cn, 0
+jitterclick.it, 0
+jiu6.com, 0
+jiuguge.com, 0
+jiuxian.com, 0
+jiuzhang.net, 0
+jiuzhilan.com, 0
+jivaro.com, 0
+jixuanran.com, 0
+jj.cn, 0
+jjmmw.com, 0
+jkpan.cc, 0
+jl.gov.cn, 0
+jlmedu.com, 0
+jlnu.edu.cn, 0
+jlpay.com, 0
+jlu.edu.cn, 0
+jluzh.com, 0
+jmc.asia, 0
+jme.com, 0
+jmmama.com.cn, 0
+jmoins.fr, 0
+jmramirez.pro, 0
+jmtw.cc, 0
+jmyan.com, 0
+jnbhgbox.org, 0
+job-63.ru, 0
+jobbik.hu, 0
+jobcluster.de, 0
+jobindo.com, 0
+jobitus.com, 0
+jobmixer.com, 0
+jobnet.com.tw, 0
+job.ru, 0
+job-sbu.org, 0
+jobthai.com, 0
+jodies.de, 0
+jodoplay.com, 0
+joelmediatv.de, 0
+joeyh.name, 0
+johanpaul.net, 0
+joiiup.com, 0
+joinfcloud.com, 0
+joinquant.com, 0
+joins-job.com, 0
+joinsquad.ru, 0
+joker.com, 0
+jokerkartenwelt.de, 0
+jolco.com, 0
+joomlagate.com, 0
+joomlashop.org, 0
+joseantoniomadrigal.com, 0
+josefprusa.cz, 0
+jostle.me, 0
+joubert-change.fr, 0
+joudou.com, 0
+jourdegalop.com, 0
+journeyman.tv, 0
+joybomb.com.tw, 0
+joyfulhonda.com, 0
+joykidshop.com, 0
+joyland.se, 0
+joyme.com, 0
+joyomm.com, 0
+joyoung.com, 0
+joyowo.com, 0
+jozsefattilaszinhaz.hu, 0
+jpgazeta.ru, 0
+jpg.wtf, 0
+jplopsoft.idv.tw, 0
+jpmarumaru.com, 0
+jpmens.net, 0
+jp.net, 0
+jpn.ph, 0
+jpwind.com, 0
+jqpublicblog.com, 0
+jquery.re, 0
+jrj.com.cn, 0
+jrmf360.com, 0
+js7tv.cn, 0
+js99cf.com, 0
+jsbc.com, 0
+jsinfo.net, 0
+jsj.com.cn, 0
+jslib.org.cn, 0
+jsrun.net, 0
+j-stash.club, 0
+jst-hosp.com.cn, 0
+jstv.com, 0
+jsychrss.gov.cn, 0
+jtfa.cn, 0
+jtljia.com, 0
+jtmfoodgroup.com, 0
+jtthink.com, 0
+ju53.com, 0
+juandemariana.org, 0
+juanpi.com, 0
+juanpi.org, 0
+jubaopay.com, 0
+juben108.com, 0
+jubna.com, 0
+jubushoushen.com, 0
+jucaicat.com, 0
+juesheng.com, 0
+juhe.cn, 0
+juick.com, 0
+juicysexstories.com, 0
+juii.net, 0
+juju.com, 0
+julianhuang.cc, 0
+julyedu.com, 0
+jumei.com, 0
+jumin.cc, 0
+juming.com, 0
+jumpingcrab.com, 0
+jumpserver.org, 0
+juneinter.com, 0
+juneyaoair.com, 0
+jung.de, 0
+jungle-world.com, 0
+juniperresearch.com, 0
+juniqe.com, 0
+junkart.in, 0
+junlin.li, 0
+juntong.or.kr, 0
+junzejun.com, 0
+jupem.gov.my, 0
+jupiterhell.com, 0
+jurion.de, 0
+jusha.com, 0
+justarchi.net, 0
+justcoded.com, 0
+just-half-price.dk, 0
+just-hosting.ru, 0
+justhost.ru, 0
+justmoda.ru, 0
+just.social, 0
+justwinit.cn, 0
+juzhao.net, 0
+juzilab.com, 0
+juziplus.net, 0
+jv.ru, 0
+jvstoronto.org, 0
+jvtuiba.com, 0
+jvweb.fr, 0
+jvweb.org, 0
+jxcad.com.cn, 0
+jx.cn, 0
+jxt189.com, 0
+jxzmz.org, 0
+jy391.com, 0
+jyall.com, 0
+jyh.com, 0
+jylc168.com, 0
+jzez100.com, 0
+jzteyao.com, 0
+k12.al.us, 0
+k12.ca.us, 0
+k12china.com, 0
+k12.ia.us, 0
+k12.ma.us, 0
+k12.me.us, 0
+k12.ms.us, 0
+k12.ne.us, 0
+k12.ny.us, 0
+k12.or.us, 0
+k12.pa.us, 0
+k12.va.us, 0
+k1kan.cc, 0
+k31.ru, 0
+k3.cn, 0
+k3idc.com, 0
+k5-conference.com, 0
+k7computing.com, 0
+k8dy.top, 0
+kaartenhuis.nl, 0
+kaartje2go.nl, 0
+kabbalahgroup.info, 0
+kabbalah.info, 0
+kachon.com, 0
+kade.de, 0
+kadinca.club, 0
+kadrovik.ru, 0
+kadu.ru, 0
+kaedea.com, 0
+kaede.jp, 0
+kaercher.com, 0
+kafascript.com, 0
+kafazan.com, 0
+kaganonline.com, 0
+kagawa.jp, 0
+kagirl.cn, 0
+kagithane.bel.tr, 0
+kags.com, 0
+kaifakuai.com, 0
+kaikeba.com, 0
+kaike.la, 0
+kaimi.io, 0
+kaist.ac.kr, 0
+kaixian.tv, 0
+kajot-casino.com, 0
+kajot.cz, 0
+kakolijeciti.com, 0
+kakpravilnosdelat.ru, 0
+kakuro-knacker.de, 0
+kalcaddle.com, 0
+kaleostra.com, 0
+kalibr603.ru, 0
+kaluga-gov.ru, 0
+kalvin.cn, 0
+kalyanamitra.org, 0
+kalyanis.ru, 0
+kalyanmir.ru, 0
+kalyanvkarmane.ru, 0
+kamaran.ru, 0
+kamaz.ru, 0
+kameleoon.com, 0
+kamensktel.ru, 0
+kamenwang.com, 0
+kametsu.com, 0
+kamgov.ru, 0
+kamjachoob.com, 0
+kamo-uniforma.ru, 0
+kamrad.ru, 0
+kanagawa.jp, 0
+kanalizaciyavdome.ru, 0
+kancapos.com, 0
+kancelarskezidle.com, 0
+kancloud.cn, 0
+kandasoft.com, 0
+kandianying.tv, 0
+kaneland.org, 0
+kanet.ru, 0
+kangmei.com.cn, 0
+kangndo.com, 0
+kangou.cn, 0
+kanibaspinar.net.tr, 0
+kannadigaworld.com, 0
+kanyanbao.com, 0
+kanyewestshoe.com, 0
+kanyewestsneakers.com, 0
+kanz.jp, 0
+kaolalicai.cn, 0
+kaomanfen.com, 0
+kaonsoftwares.com, 0
+kaoputou.com, 0
+kaoyan.com, 0
+kapaza.be, 0
+kapitalbank.az, 0
+kapitalbank.uz, 0
+kapitosha.net, 0
+kapten-son.com, 0
+karandash.by, 0
+karaoteca.com, 0
+karate.ru, 0
+karatov.com, 0
+karcher.ru, 0
+karelia.pro, 0
+karex.ru, 0
+kargo.com, 0
+karibiya.ru, 0
+karl.com, 0
+karmagroup.com, 0
+karmania-auto.ir, 0
+karner-dechow.at, 0
+karofilm.ru, 0
+karpvp.net, 0
+kartagrada.ru, 0
+kartasportowa.pl, 0
+kartina.tv, 0
+kartinatv.co.il, 0
+kartinfo.me, 0
+kartkolandia.pl, 0
+kartoteka.by, 0
+karwan.cn, 0
+kasaba.uz, 0
+kasperskyclub.ru, 0
+kaspersky.ru, 0
+kassa.uz, 0
+kassir.kz, 0
+kastnersw.cz, 0
+katacoda.com, 0
+katatelecom.com, 0
+katetooncopywriter.com.au, 0
+kau-boys.com, 0
+kau-boys.de, 0
+kaufen.com, 0
+kaufmann.dk, 0
+kauf.sk, 0
+kaunoenergija.lt, 0
+kautbullinger.de, 0
+kavehglass.com, 0
+kavehome.com, 0
+kawasaki-net.ne.jp, 0
+kazagro.kz, 0
+kazakhmys.kz, 0
+kazakh-zerno.kz, 0
+kaze-travel.co.jp, 0
+kazminerals.com, 0
+kaznau.kz, 0
+kazntu.kz, 0
+kazpost.kz, 0
+kaztranscom.kz, 0
+kaztransoil.kz, 0
+kaztrk.kz, 0
+kb20.cc, 0
+kbb1.com, 0
+kbcnet.rs, 0
+kbdyw.com, 0
+kbrnet.ru, 0
+kbs.co.kr, 0
+kbstar.com, 0
+kbtu.kz, 0
+kcg.gov.tw, 0
+kcloud.me, 0
+kcorp.sk, 0
+kc-shoes.ru, 0
+kcsnet.or.kr, 0
+kddi.com, 0
+kde.org, 0
+kdevelop.org, 0
+kdliker.com, 0
+kdl.org, 0
+kdslife.com, 0
+ke8u.com, 0
+keaz.ru, 0
+kebudayaanindonesia.net, 0
+kechlibar.net, 0
+kedou.com, 0
+keejob.com, 0
+keelbeel.com, 0
+keepfree.de, 0
+keepo.me, 0
+keep.pl, 0
+keft.ru, 0
+kejianet.cn, 0
+kelasexcel.web.id, 0
+kemdikbud.go.id, 0
+kenfor.com, 0
+kenh76.vn, 0
+kenkaitube.com, 0
+kentrade.go.ke, 0
+kepeslap.hu, 0
+kerawa.com, 0
+kerch.net, 0
+keri.re.kr, 0
+kerneleros.com, 0
+kernelnewbies.org, 0
+kernel.org, 0
+kerosoft.com, 0
+ketabrah.ir, 0
+ketabshop.ir, 0
+ketangpai.com, 0
+ketianyun.com, 0
+kevinguanchedarias.com, 0
+kewaimiao.com, 0
+kexindai.com, 0
+key4math.com, 0
+keyboardmaestro.com, 0
+keybr.com, 0
+keylol.com, 0
+keymachine.de, 0
+keysystems.ru, 0
+keytrade.com, 0
+keyweb.de, 0
+keywordinspector.com, 0
+kfc.ru, 0
+kg7.ru, 0
+kgeu.ru, 0
+kgh.on.ca, 0
+kgs-drochtersen.de, 0
+kgsu.ru, 0
+khabshop.com, 0
+khai.edu, 0
+khaneirany.com, 0
+kharidaram.com, 0
+kharidazma.com, 0
+khatvongsong.vn, 0
+kh.edu.tw, 0
+khhq.net, 0
+khidmatnegara.gov.my, 0
+khnu.km.ua, 0
+khosousi.com, 0
+khotkovo.net, 0
+khstu.ru, 0
+khv.gov.ru, 0
+khv.ru, 0
+kia.ru, 0
+kichler.com, 0
+kick9.com, 0
+kick.lv, 0
+kicks-ass.net, 0
+kicksdaily.net, 0
+kickservapp.com, 0
+kickz.com, 0
+kidcheck.com, 0
+kid-control.com, 0
+kiddywood.ru, 0
+kidlogger.net, 0
+kidscasting.com, 0
+kidsmusic.info, 0
+kids-price.ru, 0
+kievcity.gov.ua, 0
+kimsufi.com, 0
+kinderedu.ru, 0
+kindertelefoon.nl, 0
+kineme.net, 0
+kingdee.com, 0
+kingnet.com.tw, 0
+kingoapp.com, 0
+kingpokers.com, 0
+kingsoft.net, 0
+kingss.win, 0
+kingsunsoft.com, 0
+kinhom.com, 0
+kinokosmos.ee, 0
+kinoloop.ru, 0
+kinoluvr.net, 0
+kinomarvel.info, 0
+kinonews.de, 0
+kinopark.kz, 0
+kinopik.info, 0
+kinoscenariy.net, 0
+kinosearch.me, 0
+kinosky.net, 0
+kinosmena.ru, 0
+kinotut.org, 0
+kinovinki.net, 0
+kinozal.cc, 0
+kinozal.website, 0
+kippee.com, 0
+kippnyc.org, 0
+kiprinform.com, 0
+kipspb.ru, 0
+kirmiziperfect.com, 0
+kirpalani.com, 0
+kissandfly.at, 0
+kissandfly.com, 0
+kissandfly.de, 0
+kissfm.md, 0
+kit.ac.jp, 0
+kitchenmag.ru, 0
+kitenet.ru, 0
+kitwee.com, 0
+kiwihk.net, 0
+kiwi.nz, 0
+kiwitaxi.com, 0
+kiwitaxi.ru, 0
+kiyu.tw, 0
+kjb-connect.com, 0
+kjds.com, 0
+kjm6.de, 0
+kjson.com, 0
+kjvvv.kr, 0
+kkguan.com, 0
+kkmcom.ru, 0
+kknyazeva.ru, 0
+kktv8.com, 0
+kku.ac.kr, 0
+kku.ac.th, 0
+klagemauer.tv, 0
+klarstein.com, 0
+klarstein.fr, 0
+klarstein.hu, 0
+klarstein.it, 0
+klarstein.sk, 0
+kla.tv, 0
+klavtorg.ru, 0
+kl.com.ua, 0
+kldp.org, 0
+kl.edu.tw, 0
+kleeneze.co.uk, 0
+kleotour.ru, 0
+kler.pl, 0
+klickmail.com.br, 0
+klick-tipp.com, 0
+klimatex.eu, 0
+klogeschichten.net, 0
+kloud51.com, 0
+klubcytrynki.pl, 0
+klv-oboi.ru, 0
+kmf.com, 0
+kmu.ac.ir, 0
+kmu.gov.ua, 0
+kmuh.org.tw, 0
+kmutt.ac.th, 0
+kmway.com, 0
+knastu.ru, 0
+knet.cn, 0
+kneu.edu.ua, 0
+knigafund.ru, 0
+knightfrank.com, 0
+knighthunter.com, 0
+knigogid.ru, 0
+knigosvet.com, 0
+knowbox.cn, 0
+knowledgehook.com, 0
+knutd.com.ua, 0
+knutd.edu.ua, 0
+knu.ua, 0
+kobayashi.co.jp, 0
+koblist.com, 0
+kochanhaengerwerke.de, 0
+koenig-solutions.com, 0
+kolgot.net, 0
+kolhoz.mobi, 0
+kolosej.si, 0
+komcity.ru, 0
+komersa.lv, 0
+komicolle.org, 0
+komi-news.ru, 0
+komoot.de, 0
+komparify.com, 0
+kompas.si, 0
+komtv.org, 0
+konduit.io, 0
+konicaminolta.com.cn, 0
+konigchain.com, 0
+konstanz.de, 0
+kontestapp.com, 0
+konwerter.net, 0
+konzolokszervize.hu, 0
+koo.cn, 0
+kookit.com, 0
+kookje.ac.kr, 0
+koolearn.com, 0
+kooxpi.com, 0
+kopeysk24.ru, 0
+kopilkaclub.ru, 0
+korea.ac.kr, 0
+koreastardaily.com, 0
+korenpub.com, 0
+koreus.com, 0
+korex.co.kr, 0
+kornit.com, 0
+koronacloud.com, 0
+koshelek.kz, 0
+koshikira.de, 0
+kosice.sk, 0
+kosmos-kino.ru, 0
+kosmos-x.net.ru, 0
+kotitorni.com, 0
+koule.cz, 0
+koulouba.com, 0
+kovrov.net, 0
+kpfu.ru, 0
+kpi.kharkov.ua, 0
+kplus.pro, 0
+kpoly.edu.gh, 0
+kq88.com, 0
+krakow.pl, 0
+kralici.cz, 0
+kralmp3.org, 0
+kramtp.info, 0
+krasgmu.ru, 0
+kraslan.ru, 0
+krasmama.ru, 0
+krasno.ru, 0
+krasview.ru, 0
+krautchan.net, 0
+krebsforum-fuer-angehoerige.de, 0
+kreditech.com, 0
+kre.hu, 0
+kresla-market.ru, 0
+k-res.net, 0
+kr.gov.ua, 0
+krita.org, 0
+krl.co.id, 0
+kro.kr, 0
+krones.com, 0
+krosno.com.pl, 0
+kros.sk, 0
+krsn.ru, 0
+krsu.edu.kg, 0
+kr-ustecky.cz, 0
+krutomer.ru, 0
+ksamata.ru, 0
+ksbao.com, 0
+ksd-i.com, 0
+ksil.com, 0
+ksivi.co, 0
+ksivi.pro, 0
+ksk66.ru, 0
+ksmx.me, 0
+ksoa.net, 0
+kspu.ru, 0
+ksrf.ru, 0
+kss45.ru, 0
+kstp.ir, 0
+kstu.kg, 0
+kstu.ru, 0
+ksu.edu.tw, 0
+ksu.kz, 0
+ksyic.com, 0
+kt.am, 0
+ktb.com.tw, 0
+ktb.co.th, 0
+k-telecom.org, 0
+kth.se, 0
+ktng.com, 0
+ktokogda.com, 0
+ktovkurse.com, 0
+ktze.kz, 0
+kuadro.com.br, 0
+kuaidi.com, 0
+kuaidihelp.com, 0
+kuaidi.hk, 0
+kuaikanmanhua.com, 0
+kuaishou.com, 0
+kuaiyun.cn, 0
+kuaxue.com, 0
+kubaninstrument.ru, 0
+kubankredit.ru, 0
+kubannet.ru, 0
+kubsau.ru, 0
+kubstu.ru, 0
+kucharkaprodceru.cz, 0
+kudo.co.id, 0
+kueiwa.com, 0
+kufatec.de, 0
+kugou.net, 0
+kuguya.com, 0
+kuitao8.com, 0
+kukmin.tv, 0
+kukubt.com, 0
+kuku.lu, 0
+kullsms.com, 0
+kulturniportal.cz, 0
+kumamoto.jp, 0
+kunstnet.de, 0
+kupai.me, 0
+kupi-prodai.kz, 0
+kuponuna.com, 0
+kupplung.at, 0
+kupplung.de, 0
+kuraldisi.com, 0
+kurien.co.kr, 0
+kurier.at, 0
+kursoteka.ru, 0
+kurtizanki.su, 0
+kurzy.sk, 0
+kusuriexpress.com, 0
+kutnahora.cz, 0
+kuvajmo-blogovski.com, 0
+kuwo.cn, 0
+kuz.ua, 0
+kvaclub.ru, 0
+kvado.ru, 0
+kvarnado.ru, 0
+kvartiranasutki.by, 0
+kvartplata.info, 0
+kvcc.edu, 0
+kvernelandgroup.com, 0
+kwant-project.org, 0
+kwps.info, 0
+kws7.com, 0
+kxtui.com, 0
+kyberia.sk, 0
+kyiv.ua, 0
+kylesfileserver.org, 0
+kylos.pl, 0
+kymcolux.com, 0
+kyoceramobile.com, 0
+kyoto-wu.ac.jp, 0
+kysto.com, 0
+kzn.ru, 0
+kzwr.com, 0
+l2jbrasil.com, 0
+l3600.com, 0
+l4m.fr, 0
+laartcc.org, 0
+lab4u.ru, 0
+labazur.com, 0
+labelup.ru, 0
+labelzone.co.uk, 0
+labix.org, 0
+labmedica-patient.fr, 0
+laboradian.com, 0
+labruixador.es, 0
+lacl.fr, 0
+lacompagnie.com, 0
+lacomunity.com, 0
+lacotto.jp, 0
+lada.kz, 0
+ladige.it, 0
+ladya-avto.ru, 0
+ladyband.com, 0
+ladybirds.ru, 0
+ladyclick.ru, 0
+ladyplace.ru, 0
+lae-edu.com, 0
+laekh.de, 0
+lael.be, 0
+lafibre.info, 0
+lagarderob.ru, 0
+lagence.pt, 0
+laguiaw.com, 0
+lagunacity.ru, 0
+lairen.com, 0
+lakana.com, 0
+lalettrea.fr, 0
+lalilali.com, 0
+laltroweb.it, 0
+lambertgroup.ro, 0
+lames.jp, 0
+lamptkes.org, 0
+lan1.de, 0
+lance.moe, 0
+lancloud.ru, 0
+landiannews.com, 0
+landi.com, 0
+landicorp.com, 0
+landmarklondon.co.uk, 0
+landray.com.cn, 0
+landrover.ru, 0
+lanet.lv, 0
+lanet.me, 0
+lanet.ua, 0
+lanfw.com, 0
+langageoral.com, 0
+langate.tv, 0
+langhamhotels.com, 0
+langland.cc, 0
+langren8.com, 0
+lanieri.com, 0
+lanik.us, 0
+lanit.ru, 0
+lanseyujie.com, 0
+lanterncn.cn, 0
+lanzou.com, 0
+laocaibao.com, 0
+laparfumerie.ru, 0
+laplacinte.ro, 0
+laplagnet.com, 0
+lap-publishing.com, 0
+laptopg7.vn, 0
+laptopszaki.hu, 0
+laptopvip.vn, 0
+laravist.com, 0
+laraweb.ir, 0
+lardbucket.org, 0
+largadoemguarapari.com.br, 0
+larinshop.com, 0
+larsjung.de, 0
+larusodejda.ru, 0
+laserbits.com, 0
+laserline.de, 0
+lasignificationprenom.com, 0
+lasindias.com, 0
+laspace.ru, 0
+last2ticket.com, 0
+lastationdeski.com, 0
+latamautos.com, 0
+latetrain.cn, 0
+lativ.com, 0
+lativ.com.tw, 0
+latoquedor.com, 0
+latvenergo.lv, 0
+latymer.co.uk, 0
+laukar.com, 0
+launchaco.com, 0
+lausanne.ch, 0
+lavaradio.com, 0
+lavector.com, 0
+lavitrinedelamode.com, 0
+lawfulpath.com, 0
+law-school.de, 0
+layabox.com, 0
+layouteditor.net, 0
+laziodisu.it, 0
+lazurit.com, 0
+lazyland.net, 0
+lazytool2.com, 0
+lbgoo.com, 0
+lbxcn.com, 0
+lbyx.cn, 0
+lcbk.net, 0
+lcd1.ru, 0
+lcgitsystems.com.br, 0
+lcxzs.cn, 0
+lcygroup.com, 0
+ldap-account-manager.org, 0
+ldcx.net, 0
+ldichina.com, 0
+ldiglobal.org, 0
+leadbit.com, 0
+leadercf.com, 0
+leader-id.ru, 0
+leadermt.ru, 0
+leadingsoft.com, 0
+leadiq.io, 0
+leadsale.com, 0
+leadvertex.ru, 0
+leaf-hide.jp, 0
+league-mastery.com, 0
+leandev.cn, 0
+leangoo.com, 0
+leanlabs.io, 0
+learnamatrol.com, 0
+learnattack.de, 0
+learning2learn.cn, 0
+learninghabitat.org, 0
+learningshop.com, 0
+learnsoci.al, 0
+leavesongs.com, 0
+leawo.com, 0
+leboncoin.fr, 0
+lecake.com, 0
+leclick.ru, 0
+lecloud.com, 0
+lede-project.org, 0
+ledwatts.fr, 0
+leechking.com, 0
+leeet.net, 0
+leet.cc, 0
+leforumcatholique.org, 0
+lefresnoy.net, 0
+legadelfilodoro.it, 0
+legalacts.ru, 0
+legalaid.gov.ua, 0
+legal-alien.ru, 0
+legavolleyfemminile.it, 0
+leg.br, 0
+legendsec.com, 0
+legionowo.pl, 0
+legnica.pl, 0
+legrandchangement.com, 0
+legrandchangement.tv, 0
+lehangart.com, 0
+lehner-versand.ch, 0
+lehrerfortbildung-bw.de, 0
+leibnitz.net, 0
+leicashop.ir, 0
+leidiandian.com, 0
+leiner.at, 0
+leju.com, 0
+lemeids.com, 0
+lemezkucko.hu, 0
+lemoboo.de, 0
+lemonnow.com, 0
+lemonsay.com, 0
+lemurov.net, 0
+lending51.com, 0
+lendio.com, 0
+lendock.com, 0
+lendon.pl, 0
+lenfilm.ru, 0
+leniter.org, 0
+lenizdat.ru, 0
+lennoxintl.com, 0
+lenobl.ru, 0
+lenovo.com, 0
+lenovo.com.cn, 0
+lenreg.ru, 0
+leomadeiras.com.br, 0
+leoneteam.com, 0
+leonrestaurants.co.uk, 0
+leopays.com, 0
+leplandiscret.com, 0
+lepu.cn, 0
+lepumedical.com, 0
+lerevecraze.com, 0
+lesieur.fr, 0
+lesiteimmo.com, 0
+lesk.ru, 0
+lestendances.fr, 0
+lestheatres.net, 0
+lesy.sk, 0
+letgo.com, 0
+letitfly.me, 0
+lets-farm.com, 0
+letsfilm.org, 0
+lets-fish.com, 0
+lets-hunt.com, 0
+letsinvite.xyz, 0
+letstalkpayments.com, 0
+letu.ru, 0
+letu.ua, 0
+leupay.eu, 0
+levelup.in.th, 0
+levneknihy.cz, 0
+lewaimai.com, 0
+lewaos.com, 0
+lewei50.com, 0
+lexdir.com, 0
+lextel.it, 0
+leya.com, 0
+leyifan.com, 0
+leyue100.com, 0
+lfrm.net, 0
+lfs.org.uk, 0
+lgallardo.com, 0
+lgek.ru, 0
+lgg.ru, 0
+lhageek.com, 0
+lh-broker.ru, 0
+lh.or.kr, 0
+lhoroscope.com, 0
+liangxinyao.com, 0
+lianshang.com, 0
+lianyexiuchang.in, 0
+liaohuqiu.net, 0
+libbs.com.br, 0
+libertex.com, 0
+libertex.org, 0
+liberty.me, 0
+libnvkz.ru, 0
+libraryofbabel.info, 0
+library.sh.cn, 0
+libreoffice.org, 0
+libreriacoletti.it, 0
+libri.it, 0
+libro.at, 0
+libroco.it, 0
+libros.ink, 0
+libsdl.org, 0
+libsmr.ru, 0
+libvirt.org, 0
+license.ddns.net, 0
+licenseha.com, 0
+lichanglin.cn, 0
+lider-exp.ru, 0
+lidgroup.ru, 0
+liesegang-partner.de, 0
+lieyunwang.com, 0
+lifan.moe, 0
+life2film.com, 0
+lifefood.eu, 0
+lifehacker.ru, 0
+lifeline.org.au, 0
+life-realty.ru, 0
+lifeseasy.com.cn, 0
+lifestyle4living.de, 0
+lifestyle.ng, 0
+lifetyper.com, 0
+lifo.gr, 0
+ligainternet.ru, 0
+liga.net, 0
+ligerelectronics.com, 0
+lightc.com, 0
+lighthouse.gr, 0
+lightss.co, 0
+lightstar.ru, 0
+ligloo.fr, 0
+liguebretagnebillard.fr, 0
+like4u.ru, 0
+likefifa.ru, 0
+likelo.ws, 0
+likesnew.ru, 0
+likewear.ru, 0
+likinming.com, 0
+lilanz.com, 0
+lileesystems.com, 0
+lilletourism.com, 0
+lima-city.de, 0
+lime-shop.ru, 0
+limh.me, 0
+limijiaoyin.com, 0
+limin.com, 0
+limuzhengxin.com, 0
+linban.com, 0
+lindner-group.com, 0
+linekong.com, 0
+linemedia.ru, 0
+linewell.com, 0
+linghit.com, 0
+lingla.com, 0
+linglongtech.com, 0
+linguanet.ru, 0
+linguarana.com, 0
+linguitronics.com, 0
+linhadefensiva.org, 0
+linkello.com, 0
+linkpc.net, 0
+linkup.com, 0
+linsenpate.de, 0
+lintut.com, 0
+linux62.org, 0
+linuxcenter.kz, 0
+linux.cn, 0
+linuxeye.com, 0
+linuxfoundation.org, 0
+linuxihaa.ir, 0
+linuxito.com, 0
+linux-mips.org, 0
+linux-mm.org, 0
+linux-onlineshop.de, 0
+linuxpl.eu, 0
+linuxsecurity.com, 0
+linuxsoid.com, 0
+linux-tips-and-tricks.de, 0
+linzi.ru, 0
+linzy.ru, 0
+lionfree.net, 0
+lions.de, 0
+liotech.ru, 0
+lipi.go.id, 0
+liqu.com, 0
+liquidation.com, 0
+liquid-life.de, 0
+liquidm.com, 0
+lirise.com, 0
+lirn.net, 0
+lis99.com, 0
+listafirme.ro, 0
+listcarbrands.com, 0
+listenflower.com, 0
+listenod.ru, 0
+listingdomsearch.com, 0
+listupp.com.br, 0
+listupp.es, 0
+listupp.fr, 0
+listupp.it, 0
+listupp.pl, 0
+listupp.ru, 0
+liteforex.com, 0
+liteforex.ru, 0
+litl-admin.ru, 0
+littlecaprice-dreams.com, 0
+littlelunch.de, 0
+littleswan.com, 0
+liturgia.pt, 0
+liu.ba, 0
+liubingyang.com, 0
+liugong.com, 0
+liujason.com, 0
+liujunchen.xyz, 0
+liuzhichao.com, 0
+livacha.com, 0
+livecoding.tv, 0
+livecoins.ru, 0
+livefast.it, 0
+livehome3d.com, 0
+livelivelive.com, 0
+livepda.ru, 0
+liveschool.net, 0
+livescore.com, 0
+livescore.co.uk, 0
+livetyping.com, 0
+living-bots.net, 0
+livingnaturally.com, 0
+livrenet.ru, 0
+liwai.com, 0
+lixin.edu.cn, 0
+liyang.io, 0
+liyathabara.com, 0
+liyunde.com, 0
+lizhenwang.cn, 0
+lizhenwang.com, 0
+lizhi.fm, 0
+lizhi.io, 0
+lizhiweike.com, 0
+lizi.com, 0
+lizihang.com, 0
+ljscripts.com, 0
+ljsilvers.com, 0
+lj-top.ru, 0
+lkker.com, 0
+lks-tv.ru, 0
+llamayamovil.com, 0
+lmcservers.com, 0
+lmdinteractive.com, 0
+lmt.lv, 0
+lncc.br, 0
+lnka.cn, 0
+lnu.edu.cn, 0
+lnu.edu.ua, 0
+lo9.de, 0
+loadedmovies.com, 0
+loadup.ru, 0
+loadxtreme.ph, 0
+localau.com, 0
+loccitane.cn, 0
+lockinchina.com, 0
+locojoy.com, 0
+locpg.hk, 0
+locutorioonline.es, 0
+loe.lviv.ua, 0
+loganmarchione.com, 0
+logcg.com, 0
+logic-games.spb.ru, 0
+logicmelon.com, 0
+logico.cloud, 0
+logindex.com, 0
+loginto.me, 0
+logobaker.ru, 0
+logodashi.com, 0
+logoip.de, 0
+logomatic.fr, 0
+logos.net, 0
+logre.eu, 0
+loh-group.com, 0
+lojasegmento.com.br, 0
+lojaskd.com.br, 0
+loji.com, 0
+lokalebasen.dk, 0
+lol5s.com, 0
+loldan.com, 0
+loli-h.com, 0
+lomax.cz, 0
+londontheatredirect.com, 0
+longfor.com, 0
+longsys.com, 0
+lookfor.kz, 0
+looknij.in, 0
+loongair.cn, 0
+loopbyte.com, 0
+loramobile.de, 0
+lords.mobi, 0
+loreal.net, 0
+lostcut.net, 0
+lostiempos.com, 0
+loto.ro, 0
+lottery.gov.cn, 0
+lottorich.co.kr, 0
+loudsound.ru, 0
+louisacoffee.com.tw, 0
+louisiana.edu, 0
+louisiana.gov, 0
+lovean.com, 0
+lovehd.top, 0
+loveliv.es, 0
+lovelivewiki.com, 0
+loveota.com, 0
+love-piano.ru, 0
+lovepresent.ru, 0
+loveq.cn, 0
+loveslife.biz, 0
+loveu.tw, 0
+lowcostparking.eu, 0
+lowcygier.pl, 0
+lowyinstitute.org, 0
+loxforum.com, 0
+loyalsoldier.me, 0
+lpcorp.com, 0
+lpcware.com, 0
+lpgenerator.ru, 0
+lrts.net, 0
+lsjsoso.com, 0
+lskc.edu.hk, 0
+lsoft.hu, 0
+ltdtickets.com, 0
+ltd.ua, 0
+ltsu.org, 0
+lua.org, 0
+luatminhgia.com.vn, 0
+lublin.eu, 0
+lucca.fr, 0
+luciad.com, 0
+ludado.com, 0
+ludwig.guru, 0
+luebeck.de, 0
+lufficc.com, 0
+lugasat.org.ua, 0
+lugons.org, 0
+luisfm.es, 0
+luluyou.com, 0
+lumenvox.com, 0
+lundalogik.com, 0
+lundao.com, 0
+lun.ua, 0
+luogu.org, 0
+luohuedu.net, 0
+luolei.org, 0
+luoxiao123.cn, 0
+lurenet.ua, 0
+lurkmo.re, 0
+lurkmore.co, 0
+lurkmore.net, 0
+lurkmore.ru, 0
+lurkmore.so, 0
+lurkmore.to, 0
+lusen.com, 0
+lush.com.ua, 0
+lusilusi.com, 0
+luviaglobal.com, 0
+luxedition.ru, 0
+luxoft.com, 0
+luxottica.com, 0
+luxuqing.com, 0
+luzhou.com, 0
+lv9.org, 0
+lvbeivpn.cc, 0
+lvbeivpn.cn, 0
+lvcgroup.com, 0
+lvwenhan.com, 0
+lvxia.me, 0
+lvyouquan.cn, 0
+lwl12.com, 0
+lwl.org, 0
+lwxshow.com, 0
+lxx1.com, 0
+lyad.fr, 0
+lyblog.net, 0
+lybomudr.ru, 0
+lyceefrancais.at, 0
+lyceefrancais.org.uk, 0
+lyceum62.ru, 0
+lyfboat.com, 0
+lylinux.org, 0
+lysa-hora.cz, 0
+lzhaofu.cn, 0
+lzu.edu.cn, 0
+m19aixin.com, 0
+m1net.com.sg, 0
+m247.com, 0
+m24.ru, 0
+m2c.ru, 0
+m2indonesia.com, 0
+m2mled.net, 0
+m3guo.com, 0
+maansun.com, 0
+mabangerp.com, 0
+ma.by, 0
+macau-airport.com, 0
+maccentre.ru, 0
+macgames.fr, 0
+mach3.jp, 0
+machinalis.com, 0
+machula.ru, 0
+maco.eu, 0
+macpeers.com, 0
+macphun.com, 0
+macprime.ch, 0
+macroscop.com, 0
+mac-status.de, 0
+macx86.cn, 0
+macx.cn, 0
+macx.ws, 0
+madailicai.com, 0
+madefire.com, 0
+madeinua.org, 0
+mad-gamble.net, 0
+madisoft.it, 0
+madison.ru, 0
+madurodam.nl, 0
+madvaper.ru, 0
+madwave.ru, 0
+maeda-atsuko.cn, 0
+maedchenflohmarkt.de, 0
+maemo.org, 0
+magazindoberman.ru, 0
+magazinlinz.ru, 0
+magcity74.ru, 0
+magecom.net, 0
+magenting.com, 0
+maggioli.it, 0
+magicalgirlsubs.de, 0
+magiccardmarket.eu, 0
+magicdoorss.com, 0
+magickartenmarkt.de, 0
+magiclen.org, 0
+magicstreams.gr, 0
+magicutilities.net, 0
+magimetrics.com, 0
+magnya.com, 0
+magtu.ru, 0
+mahluklar.org, 0
+mahor.ru, 0
+mahost.ca, 0
+mahua.com, 0
+maihaoche.com, 0
+mail3admin.de, 0
+mail-archive.com, 0
+mailasail.com, 0
+mailbox.hu, 0
+mailermailer.com, 0
+mail.gov.af, 0
+mail.kz, 0
+mailpile.is, 0
+maimemo.com, 0
+maimiaotech.com, 0
+mainbox.com, 0
+mainkeys.net, 0
+mainstreamdata.com, 0
+maiotaku.com, 0
+mai.ru, 0
+maiseed.com, 0
+makedonias.gr, 0
+makedreamprofits.ru, 0
+makeevka.com, 0
+makeii.com, 0
+makeupgroup.cz, 0
+maki-chan.de, 0
+makkhichoose.com, 0
+makler.md, 0
+makler.ua, 0
+maknails.ru, 0
+makovka.com.ua, 0
+maksatbilgi.com, 0
+maktab.tj, 0
+malaga.es, 0
+malchish.org, 0
+maliactu.info, 0
+maliburumdrinks.com, 0
+malina.ru, 0
+malloom.com, 0
+mamanam.com, 0
+mamantena.ru, 0
+mamazin.com.ua, 0
+mambaby.com, 0
+mamsy.ru, 0
+manabii.info, 0
+mandarinaduck.com, 0
+m-and-d.com, 0
+mangapanda.info, 0
+mango.com, 0
+mangoerp.com, 0
+mangooutlet.com, 0
+maniac-forum.de, 0
+manifest.ge, 0
+mann.tv, 0
+manprogress.com, 0
+manqian.cn, 0
+mans.edu.eg, 0
+manstrong.com.tw, 0
+manticgames.com, 0
+mantoufan.com, 0
+manuskri.tn, 0
+manybot.io, 0
+manzana.ua, 0
+maoming.gov.cn, 0
+maori.nz, 0
+mapado.com, 0
+mapamista.org.ua, 0
+mapbar.com, 0
+mapbase.ru, 0
+maplewood.com, 0
+mappingmegan.com, 0
+mapshop.ir, 0
+maralhost.com, 0
+maralhost.marketing, 0
+maratsafin.pro, 0
+marbeho.com, 0
+marburg.de, 0
+marcaentradas.com, 0
+marcopinheiro.com, 0
+marcopol.pl, 0
+marelepescar.ro, 0
+marfeel.com, 0
+marietta.edu, 0
+mariinsky.ru, 0
+mariinsky.tv, 0
+marijuanagrowing.eu, 0
+marine-conservation.org, 0
+marinelink.com, 0
+maritimeprofessional.com, 0
+markaz.uz, 0
+marketgoo.com, 0
+market.hu, 0
+marketinsight.it, 0
+marketmind.at, 0
+marketsmaster.org, 0
+markiza.sk, 0
+marklogic.com, 0
+markova.com, 0
+mark.ru, 0
+marktplatz-mittelstand.de, 0
+markum.net, 0
+marlinmag.com, 0
+marshrutka.com.ua, 0
+marthadebayle.com, 0
+martinezloriente.com, 0
+marwell.org.uk, 0
+marya.ru, 0
+masalnews.ir, 0
+mascheronistore.it, 0
+mashhad724.ir, 0
+mashhad.me, 0
+masivapp.com, 0
+maslahatim.uz, 0
+masnegocio.com, 0
+maspormas.com, 0
+massaget.kz, 0
+massengeschmack.tv, 0
+mastera-rukodeliya.ru, 0
+mastercity.ru, 0
+masterofsoccer.com, 0
+masterphone.ru, 0
+master-tao.com, 0
+masterzx.com, 0
+masutaka.net, 0
+matekmindenkinek.hu, 0
+matrixcalc.org, 0
+matrix-vision.com, 0
+matrony.ru, 0
+mauiarts.org, 0
+mavn.is, 0
+mawenjian.net, 0
+mawqe3.net, 0
+maxcuties.top, 0
+maxi.by, 0
+maxicard.ua, 0
+maxi-sale.ru, 0
+maxjia.com, 0
+maxmilhas.com.br, 0
+maxserv.com, 0
+maxst.com, 0
+maxtrack.uz, 0
+maxxipoint.com, 0
+maxzon.ru, 0
+mayflower.de, 0
+maytoni.ru, 0
+mazda.at, 0
+mazda.ch, 0
+mazda.de, 0
+mazdaeur.com, 0
+mazda.fr, 0
+mazda.hr, 0
+mazsihisz.hu, 0
+m-bet.co.tz, 0
+mbfilm.ir, 0
+mbhs.edu, 0
+mblox.com, 0
+mbo.com.ph, 0
+mbwar.com, 0
+mcafeestore.com, 0
+mc-auto.ru, 0
+mcbot.gq, 0
+mcb.ru, 0
+mccme.ru, 0
+mcdir.ru, 0
+mcdonalds.cz, 0
+mcent.com, 0
+mcetv.fr, 0
+mcfuzhu.net, 0
+mcgen.eu, 0
+mcguirksgolf.com, 0
+m-classic.com, 0
+mclc.ir, 0
+mcmaster.ca, 0
+mcncc.com, 0
+mcocmod.net, 0
+mconvert.net, 0
+m-cosmetica.ru, 0
+mcplay.cn, 0
+mcscostruzioni.it, 0
+mct.gov.az, 0
+mcu.edu.tw, 0
+mcx.ru, 0
+mdic.gov.br, 0
+mdict.cn, 0
+mdlivre.com.br, 0
+mdman.cc, 0
+mdog.mobi, 0
+mdolls.mobi, 0
+mdrv.ru, 0
+mdt-dodin.ru, 0
+mdv.de, 0
+meabilis.fr, 0
+measurementlab.net, 0
+meatbox.co.kr, 0
+mebeel.ru, 0
+mebelion.ru, 0
+mebel-top.ru, 0
+mecare.cn, 0
+mecbsegov.in, 0
+mecbsekvs.in, 0
+mechanization.ru, 0
+mectronica.it, 0
+medansatu.com, 0
+medbanks.cn, 0
+medbox.ru, 0
+medeintegra.com, 0
+medgadgets.ru, 0
+mediabak.com, 0
+mediabinn.com, 0
+mediabks.com, 0
+mediadec.com, 0
+mediafaze.com, 0
+mediagazer.com, 0
+mediagemm.com, 0
+mediahitt.com, 0
+mediakee.com, 0
+medialid.com, 0
+medialog.fr, 0
+mediaquelle.at, 0
+mediaraven.be, 0
+mediaresearch.se, 0
+mediascanner.net, 0
+mediasity.co, 0
+mediate.com, 0
+mediatoday.ru, 0
+mediatop.ws, 0
+mediavex.com, 0
+mediaweb.ru, 0
+mediazenn.com, 0
+medicalvideos.us, 0
+medicinalegal.gov.co, 0
+medicina.ru, 0
+medienrecht-urheberrecht.de, 0
+medieval-europe.eu, 0
+mediker.kz, 0
+medion.com, 0
+medjouel.com, 0
+medlibrary.org, 0
+medmag.ru, 0
+medmastery.com, 0
+medmedicine.it, 0
+medmeeting.org, 0
+mednet.ru, 0
+medscape.ru, 0
+medspros.ru, 0
+meduza.io, 0
+meekan.com, 0
+meest.us, 0
+meetfighters.com, 0
+meetme.com, 0
+meetshared.com, 0
+mef.net, 0
+megacampus.ru, 0
+megafilmes4k.com.br, 0
+mega-f.ru, 0
+megaglest.org, 0
+megaleech.us, 0
+megaline-films.kz, 0
+megaline.kg, 0
+megalink.ru, 0
+megamag.by, 0
+megamart.az, 0
+megameh.com, 0
+megaplan.by, 0
+megaplan.ru, 0
+megaterem.ru, 0
+megatheme.ir, 0
+megatrack.ru, 0
+megazat.com, 0
+megcart.com, 0
+me.gov.ar, 0
+mehrschool.com, 0
+meibu.net, 0
+meidebi.com, 0
+meideng.net, 0
+meiduimall.com, 0
+meigongyun.com, 0
+meijisp.jp, 0
+meilele.com, 0
+meinezwangsversteigerung.de, 0
+meinfernbus.de, 0
+meipian.cn, 0
+meipian.me, 0
+meishi.cc, 0
+meishij.net, 0
+meister.de, 0
+meitu.com, 0
+meix.com, 0
+meiyijia.com.cn, 0
+meizu.cn, 0
+meizu.com, 0
+melastampi.it, 0
+melenky.ru, 0
+mel.fm, 0
+melhorembarque.com.br, 0
+melodiak.hu, 0
+meloman.kz, 0
+memedai.cn, 0
+memeorandum.com, 0
+mena.org.eg, 0
+menariniapac.com, 0
+mendikat.net, 0
+mengdouwang.cn, 0
+mengniu.com.cn, 0
+mengzhu.tv, 0
+mensa.es, 0
+mensa.hu, 0
+menschen-leben.at, 0
+mephi.ru, 0
+mercadopme.com.br, 0
+mercedes-benz.ua, 0
+mercurial-scm.org, 0
+merici.ca, 0
+merproject.org, 0
+mersen.com, 0
+mertcangokgoz.com, 0
+mesago.de, 0
+mesalva.com, 0
+mesec.cz, 0
+mes.edu.cu, 0
+meshok.net, 0
+meshok.ru, 0
+meslekhocam.com, 0
+mestam.info, 0
+metabo.su, 0
+metapix.net, 0
+metasix.com.br, 0
+metasix.solutions, 0
+meten.cn, 0
+meteobox.cz, 0
+meteocontrol.de, 0
+meteorad.ru, 0
+meteor.ie, 0
+metin2.tc, 0
+metragi.ru, 0
+metricskey.net, 0
+metro.cl, 0
+metrol.jp, 0
+metropol.co.ke, 0
+metropole.cz, 0
+metropolitan.bg, 0
+metrosantiago.cl, 0
+metrosphera.ru, 0
+metroui.org.ua, 0
+metrouusor.com, 0
+metservice.com, 0
+metstr.com, 0
+mew.su, 0
+mexicoo.mx, 0
+mf8.biz, 0
+mfa.gov.by, 0
+mfb.io, 0
+mfc-74.ru, 0
+mfc74.ru, 0
+mfcto.ru, 0
+mferma.ru, 0
+mfor.hu, 0
+mfortune.co.uk, 0
+mf.uz, 0
+mgameday.com, 0
+mgb.bg, 0
+mgou.ru, 0
+mg-pen.com, 0
+mgpu.ru, 0
+mgts.ru, 0
+mgutm.ru, 0
+mguu.ru, 0
+mgvision.com, 0
+mhecy.com, 0
+mhelp.kz, 0
+mhliving.ru, 0
+mhp.com.ua, 0
+mhr-developer.com, 0
+mhunters.com, 0
+miacugra.ru, 0
+mia.gov.az, 0
+miamed.de, 0
+miamidade.gov, 0
+mianfeiwucan.org, 0
+mianshui365.com, 0
+miantiao.me, 0
+mianvpn.com, 0
+miaomiao520.cn, 0
+miaoyueyue.com, 0
+miascarpa.ru, 0
+miass.ru, 0
+mibd-gold.com, 0
+mibew.org, 0
+micasaverde.com, 0
+mic.co.at, 0
+michaelwest.com.au, 0
+michalsons.com, 0
+michelf.ca, 0
+michiganlabs.com, 0
+micous.com, 0
+microline.hr, 0
+microsoft.com, 0
+microsoftonline.cn, 0
+micros.uz, 0
+midaijihua.com, 0
+midea.com, 0
+midrub.com, 0
+miestilo.ru, 0
+mie-u.ac.jp, 0
+mightysignal.com, 0
+mignews.com.ua, 0
+migocorp.com, 0
+migros.ch, 0
+migu.cn, 0
+mihanwebserver.com, 0
+mihoyo.com, 0
+miit.gov.cn, 0
+mijnhva.nl, 0
+mikatiming.de, 0
+mikenopa.com, 0
+mikrocontroller.net, 0
+mikrotik-bg.net, 0
+mikrovps.hu, 0
+mikroways.net, 0
+mik.ua, 0
+mikulas.sk, 0
+mila.by, 0
+milanpassport.com.ua, 0
+militaryzone.ru, 0
+miloserdie.ru, 0
+mima.re, 0
+mimemoi.com, 0
+mimikko.cn, 0
+minbank.ru, 0
+minceraft.cl, 0
+mindai.com, 0
+mindasset.com, 0
+mindcont.com, 0
+mindjet.com, 0
+mindmeld.com, 0
+mindnode.com, 0
+mindoktor.se, 0
+mindresearch.org, 0
+mindstore.io, 0
+mineblue.com, 0
+mine.bz, 0
+mineconcapes.net, 0
+minecraft-alex.ru, 0
+minecrafting.ru, 0
+minecraftiplist.com, 0
+minecraft-moscow.com, 0
+minelist.kr, 0
+minem.gob.ar, 0
+mine.nu, 0
+mine-online.pw, 0
+minervanetworks.com, 0
+mines.edu, 0
+minfin.com.ua, 0
+mingdianwu8.com, 0
+mingkyaa.com, 0
+mingli.ru, 0
+mingyuanyun.com, 0
+mini189.cn, 0
+mini-koleso.ru, 0
+minimalart.cn, 0
+mininfra.gov.rw, 0
+mininterior.gob.ar, 0
+mininterior.gov.ar, 0
+miniyun.cn, 0
+minq.info, 0
+minsal.cl, 0
+minsk.by, 0
+mintrans.ru, 0
+mintrud.karelia.ru, 0
+minuporno.com, 0
+minus33.com, 0
+minv.sk, 0
+minyo.us, 0
+minzdravsakhalin.ru, 0
+mioji.com, 0
+mios.com, 0
+mipa.de, 0
+mipa-paints.com, 0
+mipko.ru, 0
+mipt.ru, 0
+mipuf.es, 0
+miracal.ru, 0
+mirage.ru, 0
+miranda-ng.org, 0
+mirante.net.br, 0
+mirapri.com, 0
+miraton.ua, 0
+mirbeer.ru, 0
+mirchar.ru, 0
+mirgaza.ru, 0
+miridei.com, 0
+mirkrestikom.ru, 0
+mirkvartir.ru, 0
+mirndv.ru, 0
+mir.partners, 0
+mirpchel.com, 0
+mirsushi.com, 0
+mis66.ru, 0
+missevan.com, 0
+missfresh.cn, 0
+missland.com, 0
+mista.ru, 0
+misterhorse.tv, 0
+misterspex.ch, 0
+misterspex.com, 0
+misterspex.co.uk, 0
+misterspex.de, 0
+misterspex.es, 0
+misterspex.fr, 0
+misterspex.nl, 0
+mist-game.ru, 0
+misuland.com, 0
+mi-sys.com, 0
+mit.com.mm, 0
+mit.edu, 0
+mitsubishielectric.com, 0
+mittwaldserver.info, 0
+mitusky.com, 0
+mitutoyo.eu, 0
+mit.uz, 0
+mitwork.kz, 0
+miu.ac.ir, 0
+miui.com, 0
+miuipro.ru, 0
+miutour.com, 0
+mivitec.net, 0
+mivlgu.ru, 0
+mivocloud.com, 0
+mixdrop.ru, 0
+mixupload.com, 0
+mixxx.org, 0
+miyagi.es, 0
+miyagi.jp, 0
+miyijia.com, 0
+mizban24.net, 0
+mizbansite.com, 0
+mjbang.cn, 0
+mj-king.net, 0
+mkb.ru, 0
+mke.hu, 0
+mkf.com, 0
+mk.gov.ua, 0
+mk-host.com, 0
+mkn.de, 0
+mkrada.gov.ua, 0
+mkvcorporation.com, 0
+mkvtoolnix.download, 0
+mlbeta.com, 0
+mlhang.com, 0
+mlife.by, 0
+mljia.cn, 0
+mljiadev.cn, 0
+mlpmerch.com, 0
+mlsdev.com, 0
+mma.su, 0
+mmbank.ru, 0
+mmcs.pro, 0
+mmdai.com, 0
+mmet.cn, 0
+mmgp.com, 0
+mmgp.ru, 0
+mmk.ru, 0
+mmo4me.net, 0
+mmorpgitalia.it, 0
+mmotraffic.com, 0
+mmtrix.com, 0
+mmyuer.com, 0
+mnbaa.com, 0
+mnb.hu, 0
+mnb.mn, 0
+mnd.cz, 0
+mnenie.su, 0
+mne.ru, 0
+mngz.ru, 0
+mnogokarat.ru, 0
+mnt.ee, 0
+mo2g.com, 0
+mo9.com, 0
+moahr.cn, 0
+mobazi.ir, 0
+mobcb.com, 0
+mob.com, 0
+mobdisc.com, 0
+mobialia.com, 0
+mobiamo.com, 0
+mobibrw.com, 0
+mobicheckin.com, 0
+mobicom.mn, 0
+mobile-harddisk.nl, 0
+mobilenations.com, 0
+mobileshop.ir, 0
+mobil-helden.de, 0
+mobilnost.hr, 0
+mobinnet.net, 0
+mobit.dp.ua, 0
+mobi-to-pdf.com, 0
+mobius.studio, 0
+mobomarket.net, 0
+mobopan.cn, 0
+mobsoftffree.xyz, 0
+mobtakeran.com, 0
+mobwall.com.ua, 0
+mockuai.com, 0
+mockup.io, 0
+modablaj.com, 0
+modayiz.com, 0
+mod.bg, 0
+modcom.kz, 0
+moddota.com, 0
+modelmen.ru, 0
+modelon.com, 0
+modeltag.com, 0
+modmcpe.net, 0
+modmed.com, 0
+modstore.pro, 0
+modularcircuits.com, 0
+modum.by, 0
+modxcloud.com, 0
+modx.com, 0
+modx.pro, 0
+modx.ru, 0
+moe-acg.cc, 0
+moegirl.org, 0
+moe.hm, 0
+moemesto.ru, 0
+moe-navi.jp, 0
+moesk.ru, 0
+mofac-alfred.com, 0
+mofang.com, 0
+mofangge.com, 0
+mofanghr.com, 0
+moguta.ru, 0
+moha.gov.my, 0
+mohammad-toluei.ir, 0
+mohande3.com, 0
+mohandeseit.ir, 0
+mohmo.net, 0
+mohmoshop.net, 0
+mohurd.gov.cn, 0
+moikit.com, 0
+moi-uni.ru, 0
+mojdoktor.gov.rs, 0
+mojeid.cz, 0
+mojichina.com, 0
+mojilala.com, 0
+mokpo.ac.kr, 0
+mokylin.com, 0
+molbase.cn, 0
+molbase.com, 0
+moleskines.ru, 0
+molnet.ru, 0
+molochnoe.ru, 0
+momic.me, 0
+momo-net.com, 0
+monamie.kz, 0
+mondiaspora.net, 0
+mondovantaggio.com, 0
+mondraker.com, 0
+monema.it, 0
+monerohash.com, 0
+monetizus.com, 0
+moneydashboard.com, 0
+moneyman.es, 0
+moneyman.ge, 0
+moneyman.kz, 0
+moneyman.pl, 0
+money-man.ru, 0
+moneyman.ru, 0
+moneyplatform.com, 0
+mongeneraliste.be, 0
+mon.gov.ru, 0
+mon.gov.ua, 0
+monifymedia.com, 0
+monitoring-plugins.org, 0
+monitor-polski.pl, 0
+monitorsanywhere.com, 0
+monitorulcj.ro, 0
+monkey-live.com, 0
+monkeytravel.com, 0
+monkkee.com, 0
+monolife.ru, 0
+monopoly-one.com, 0
+monstandardfacile.com, 0
+monsters-tk.net, 0
+montclair.edu, 0
+mooban.cn, 0
+moocollege.com, 0
+moodleschule.de, 0
+moodviewer.com, 0
+moojing.com, 0
+moonback.ru, 0
+moonfly.net, 0
+moonseo.cn, 0
+mooo.com, 0
+mooseframework.com, 0
+mooseframework.org, 0
+moovel.com, 0
+moovweb.com, 0
+mopaasapp.com, 0
+mopaas.com, 0
+moparscape.org, 0
+mopubi.com, 0
+morebooks.de, 0
+morefirm.ru, 0
+morepiva.ua, 0
+moretv.com.cn, 0
+morfans.cn, 0
+morgan.edu, 0
+morgoth.ru, 0
+morph.io, 0
+morznet.com, 0
+moscow.ovh, 0
+moscowteslaclub.ru, 0
+moseeker.com, 0
+mos-gorsud.ru, 0
+mos-kino.ru, 0
+mosmoda.com.tr, 0
+mosolymp.ru, 0
+mosreg.ru, 0
+mos.ru, 0
+mossport.ru, 0
+mostinfo.net, 0
+mosturflot.ru, 0
+motarjeminiran.com, 0
+motchallenge.net, 0
+motocms.com, 0
+motof.cn, 0
+motomaxonlineshop.com, 0
+motorbit.com, 0
+motorcyclistonline.com, 0
+motor-oel-guenstig.de, 0
+moto-scuter.ru, 0
+motosdetrabajo.com.mx, 0
+motoslave.net, 0
+motot.net, 0
+mountainduck.io, 0
+mountfield.cz, 0
+mountfield.sk, 0
+mountyhall.com, 0
+mousesports.com, 0
+mouwasat.com, 0
+movavi.com, 0
+moviejie.com, 0
+movielala.com, 0
+moviemaps.org, 0
+movienthusiast.com, 0
+movietend.com, 0
+movilizer.com, 0
+moviran.org, 0
+movitech.cn, 0
+movit-tech.com, 0
+movnow.com, 0
+moxacg.com, 0
+moxiaonai.cn, 0
+moyoyo.com, 0
+moyuniver.ru, 0
+mozaika.dn.ua, 0
+mozaik.info.hu, 0
+mozanaplo.hu, 0
+mozaweb.com, 0
+mozaweb.hu, 0
+mozayka.com.ua, 0
+moz.gov.ua, 0
+mozilla.community, 0
+mp3bass.ru, 0
+mp3.cc, 0
+mp3kw.com, 0
+mp3nta.com, 0
+mp3.pm, 0
+mp3-telechargement.net, 0
+mp4la.net, 0
+mp.br, 0
+mpets.mobi, 0
+mp.gov.in, 0
+mpgu.info, 0
+mpgu.org, 0
+mplayerhq.hu, 0
+mplife.com, 0
+mpsj99.com, 0
+mptool.cn, 0
+mpt.ru, 0
+mqlforum.com, 0
+mratwork.com, 0
+mrcode.ir, 0
+mrcraig.xyz, 0
+mrcredits.ru, 0
+mrecorder.com, 0
+mrgfd.org.ua, 0
+mritd.me, 0
+mrju.cn, 0
+mrlong.cc, 0
+mrmo.cc, 0
+mrmondialisation.org, 0
+m.ro, 0
+mrporn.com, 0
+mrtimemaker.com, 0
+mrush.mobi, 0
+mr-world.com, 0
+mr-wu.cn, 0
+ms0571.com, 0
+msa.gov.cn, 0
+msalkirov.ru, 0
+msd25.com, 0
+msdi.cn, 0
+msignitechina.com, 0
+msig.sg, 0
+msilab.net, 0
+msk.su, 0
+m-sku.com, 0
+msl.ua, 0
+msmsu.ru, 0
+m-stat.gr, 0
+msu.ru, 0
+msv-duisburg.de, 0
+msxf.com, 0
+mta.mn, 0
+mta-sa.org, 0
+mta.ua, 0
+mt-bbs.com, 0
+mtcsys.com, 0
+mtechpro.com, 0
+mte.gov.br, 0
+mt.gov.br, 0
+mtgpulse.com, 0
+mti.co.jp, 0
+mtis.by, 0
+mti.ua, 0
+mtn.co.za, 0
+mtrend.ru, 0
+mtroyal.ca, 0
+mts.by, 0
+mts.ru, 0
+mts.tm, 0
+mtuci.ru, 0
+mtv235.com, 0
+mubrr.com.br, 0
+mucangjun.com, 0
+mucfc.com, 0
+muchong.com, 0
+mueller-of.de, 0
+muh.ru, 0
+muis.gov.sg, 0
+mujglock.com, 0
+mujin.co.jp, 0
+mujot.net, 0
+mu-kingdom.com, 0
+mukolin.cz, 0
+muloqot.uz, 0
+multiloginapp.com, 0
+multinet.dp.ua, 0
+multi-net.ru, 0
+multi-online.ru, 0
+multiplay.ru, 0
+multirama.gr, 0
+multirom.me, 0
+multisport.cz, 0
+multitest.me, 0
+multitest.ua, 0
+multitran.com, 0
+multitran.ru, 0
+multiupload.biz, 0
+multiwork.org, 0
+mumayi.com, 0
+mumble.ru, 0
+mumms.com, 0
+mums.ac.ir, 0
+mun.ca, 0
+mundialvac.com, 0
+muniao.com, 0
+munzinger.de, 0
+muppetism.com, 0
+muquan.net, 0
+murabba.com, 0
+murad.com, 0
+murdoch.edu.au, 0
+murm.pro, 0
+musa24.fi, 0
+musc.edu, 0
+musclebearporn.com, 0
+museumsbund.de, 0
+music-all.ir, 0
+music-group.com, 0
+musicland.ru, 0
+musicnota.ru, 0
+musicshelf.jp, 0
+musikazblai.com, 0
+musik-promotion.net, 0
+musiland.cn, 0
+mutlucell.com, 0
+mutterhaus.de, 0
+muv.ac, 0
+muyingzhijia.com, 0
+muzhiso.com, 0
+muzikata.net, 0
+muziker.com, 0
+muziker.es, 0
+muziker.pt, 0
+muziker.si, 0
+muziker.sk, 0
+muzikum.eu, 0
+muzkom.ru, 0
+muzlan.ru, 0
+muzmix.com, 0
+muzoic.com, 0
+muzoic.org, 0
+muzrec.com, 0
+muz.uz, 0
+mvbits.com, 0
+mvmv.com.tw, 0
+mvs.gov.ua, 0
+mvu.com.br, 0
+mwa.co.th, 0
+mwee.cn, 0
+mw-light.ru, 0
+mxp.tw, 0
+mxyun.com, 0
+my3ds.pl, 0
+my3gb.com, 0
+my3w.com, 0
+my891.com, 0
+m-yabe.com, 0
+myaiji.com, 0
+myanimeshelf.com, 0
+myanmarmp3.net, 0
+myanmore.com, 0
+myanonamouse.net, 0
+myartsonline.com, 0
+myasustor.com, 0
+myauto.ge, 0
+mybanker.dk, 0
+mybb.de, 0
+mybodygraph.com, 0
+myboracayguide.com, 0
+mybox.ru, 0
+mycat.io, 0
+my-cccp.ru, 0
+mycos.com, 0
+mydailymanga.com, 0
+myddns.com, 0
+myddns.ru, 0
+mydns.jp, 0
+mydreamplus.com, 0
+myds.me, 0
+my-eclipse.cn, 0
+myfirms.su, 0
+myfolio.com, 0
+myfoscam.com, 0
+myfoscam.org, 0
+myfreeproject.com, 0
+myfritz.net, 0
+myftb.de, 0
+myftp.biz, 0
+myftp.org, 0
+mygalgame.com, 0
+mygarage.ro, 0
+mygaste.com, 0
+my-gateway.de, 0
+mygiftcard.ru, 0
+mygiftcardsplus.com, 0
+mygjp.com, 0
+my.gov.cn, 0
+mygzb.com, 0
+myhloli.com, 0
+myhome.cx, 0
+myhomeworkapp.com, 0
+myihor.ru, 0
+myimmitracker.com, 0
+myindiacoupons.com, 0
+myjar.com, 0
+myjeeva.com, 0
+myjino.ru, 0
+myjob.uz, 0
+mykhg.de, 0
+mykitchen.am, 0
+myl.com.cn, 0
+mylifeorganized.net, 0
+mymoria.de, 0
+mymru.ca, 0
+mynetgear.com, 0
+mynetname.net, 0
+mynewcompany.com, 0
+mynj.cn, 0
+myop.cf, 0
+myowndns.info, 0
+myparcels.net, 0
+myparcels.ru, 0
+mypet-online.ru, 0
+my-phone-finder.com, 0
+myphotobook.ch, 0
+myphotobook.de, 0
+myphotobook.fr, 0
+myphotobook.it, 0
+myphotos.cc, 0
+mypoints.com, 0
+mypoolin.com, 0
+mypos.eu, 0
+mypost4u.com, 0
+my-private-network.co.uk, 0
+myprom.ru, 0
+myqcloud.com, 0
+myqnapcloud.com, 0
+myrenova.com, 0
+myrescue.net, 0
+myrusakov.ru, 0
+mysav.eu, 0
+myschoolapp.com, 0
+myschoolcdn.com, 0
+mysecuritycamera.com, 0
+myseldon.com, 0
+my-servers.us, 0
+mysisel.com, 0
+mysocialbook.com, 0
+mysocio.ru, 0
+mysocrat.com, 0
+mysof.net, 0
+myspiegel.de, 0
+myss.club, 0
+mytextmusic.com, 0
+mythware.com, 0
+mytickets.ae, 0
+my.to, 0
+mytokri.com, 0
+myvapedeal.com, 0
+my.vg, 0
+myviasat.ru, 0
+myvimir.ru, 0
+mywed.ru, 0
+mywinamp.com, 0
+mywire.org, 0
+mywishboard.com, 0
+mywork.com.vn, 0
+mywpku.com, 0
+myxs.net, 0
+myxzy.com, 0
+myyearbook.com, 0
+myzqb.cn, 0
+myzte.com, 0
+mz19.ru, 0
+mzmoney.com, 0
+mzoo.mobi, 0
+mztgame.com, 0
+mzt.ru, 0
+mz-web.de, 0
+n0l.hu, 0
+n131adserv.com, 0
+n142adserv.com, 0
+n152adserv.com, 0
+n156adserv.com, 0
+n158adserv.com, 0
+n159adserv.com, 0
+n19adshostnet.com, 0
+n214adserv.com, 0
+n24.ru, 0
+n264adserv.com, 0
+n280adserv.com, 0
+n329adserv.com, 0
+n4bb.com, 0
+n56adshostnet.com, 0
+n64adserv.com, 0
+n99adshostnet.com, 0
+nabezky.sk, 0
+naca.com, 0
+nacalynx.com, 0
+nacao.org.cn, 0
+nacta.edu.cn, 0
+nadesne.ru, 0
+nadloc.kz, 0
+naftan.by, 0
+naiadmmm.com, 0
+naifl.ru, 0
+naikuber.com, 0
+naimies.com, 0
+naim.ru, 0
+najlepszefoto.pl, 0
+nalogcodex.ru, 0
+nalog.ru, 0
+namava.ir, 0
+namba.kg, 0
+named.cn, 0
+nametests.com, 0
+namhuy.net, 0
+namidensetsu.com, 0
+nanaiki.ru, 0
+nanguo.cn, 0
+nanhai.gov.cn, 0
+nanhutravel.com, 0
+nani.com.tw, 0
+nanoo.tv, 0
+nano-pad.ru, 0
+nanopool.org, 0
+nanosemantics.ru, 0
+nanrenwa.com, 0
+na-olimpe.ru, 0
+naomi24.com.ua, 0
+nap6.com, 0
+napa.com, 0
+napai.cn, 0
+napensii.ua, 0
+napratica.org.br, 0
+narfu.ru, 0
+narkom.net, 0
+narkom.pro, 0
+narkom.tv, 0
+narod-expert.ru, 0
+naroi.ru, 0
+nartac.com, 0
+nas-broker.com, 0
+nasejidelna.cz, 0
+nasf.ru, 0
+nas.gov.ua, 0
+nashanyanya.ru, 0
+nashaplaneta.net, 0
+nashural.ru, 0
+nasm.us, 0
+nastroi.net, 0
+nat123.net, 0
+natalie-tours.ru, 0
+natapp.cn, 0
+nationsgame.net, 0
+nativeads.com, 0
+native-network.net, 0
+nativerootsdispensary.com, 0
+natlot.be, 0
+natm.ru, 0
+natron.fr, 0
+nattule.com, 0
+natural-sciences.ru, 0
+naturalwellbeing.com, 0
+natureacoeur.fr, 0
+nauchu-gotovit.ru, 0
+nau.edu.ua, 0
+nauka.gov.pl, 0
+naumen.ru, 0
+nav.by, 0
+naviextras.com, 0
+navigate.de, 0
+navikey.org, 0
+naviki.org, 0
+navrcholu.cz, 0
+nayavideo.com, 0
+nazk.gov.ua, 0
+nazuby.cz, 0
+nazwa.pl, 0
+nbastats.info, 0
+nbd.com.cn, 0
+nbdeli.com, 0
+nbedu.gov.cn, 0
+nbepb.gov.cn, 0
+nbhis.com, 0
+nbikemsu.ru, 0
+nbmetro.com, 0
+nbn.org.il, 0
+nbrc.ac.in, 0
+nca.gov.tw, 0
+ncas.or.kr, 0
+ncca.ie, 0
+ncfgroup.com, 0
+nchkz.ru, 0
+ncihealth.cn, 0
+ncku.edu.tw, 0
+ncnu.edu.tw, 0
+ncomputing.com, 0
+nctu.edu.tw, 0
+ncu.edu.tw, 0
+ncyu.edu.tw, 0
+ndcnc.gov.cn, 0
+nd.gr, 0
+ndhu.edu.tw, 0
+ndi.org, 0
+ndrc.gov.cn, 0
+ndr.de, 0
+ndv.ru, 0
+nea.gov.cn, 0
+nearadio.no, 0
+nebopro.ru, 0
+neco.tech, 0
+nectarin.ru, 0
+necy.eu, 0
+nedes.sk, 0
+neftekamsk.ru, 0
+neigou.com, 0
+nejlepsiceny.cz, 0
+nekto.me, 0
+nemaloknig.info, 0
+nemidoonam.com, 0
+nemzetiszinhaz.hu, 0
+neocron-game.com, 0
+neocube-russia.ru, 0
+neoebiz.co.kr, 0
+neoferr.com, 0
+neoflex.ru, 0
+neolant.ru, 0
+neoline.ru, 0
+neotriad.com, 0
+neoway.com.br, 0
+nephila.it, 0
+nepszava.hu, 0
+nestoilgroup.com, 0
+net46.net, 0
+net9.org, 0
+net-agenta.ru, 0
+netangels.ru, 0
+netatmo.com, 0
+netau.net, 0
+netbalancer.com, 0
+netbox.cz, 0
+netcraft.com, 0
+netease.com, 0
+netease.im, 0
+neteasy.pl, 0
+neteng.co, 0
+net-film.ru, 0
+nethesis.it, 0
+nethouse.ru, 0
+netim.com, 0
+netim.fr, 0
+netim.net, 0
+netiyi.com, 0
+net-load.com, 0
+netmaid.com.sg, 0
+netnea.com, 0
+netoearth.com, 0
+netpioneer.de, 0
+netplus.ch, 0
+netplus.tv, 0
+netsdl.com, 0
+netsh.org, 0
+netsparkmobile.com, 0
+netsun.com, 0
+nettoplast.ru, 0
+netvolante.jp, 0
+net-well.ru, 0
+netwi.ru, 0
+networkguru.ru, 0
+networkhealth.com, 0
+netxms.org, 0
+netzpolitik.org, 0
+netztest.at, 0
+neu.edu.cn, 0
+neura.edu.au, 0
+neurocogtrials.com, 0
+neurogroove.info, 0
+neuronup.com, 0
+neusoft.com, 0
+neusoft.edu.cn, 0
+neutrik.com, 0
+neutrium.net, 0
+nevalink.net, 0
+nevsedni-svet.cz, 0
+newalive.net, 0
+newbd.com, 0
+newchama.com, 0
+newchic.com, 0
+newdefend.com, 0
+newfrog.com, 0
+newhistorian.com, 0
+newhopegroup.com, 0
+newhorizonindia.edu, 0
+newhorizons.ae, 0
+newifi.com, 0
+newikis.com, 0
+newinform.com, 0
+newmanity.com, 0
+newmanvip.com, 0
+newm.co.kr, 0
+newmobilelife.com, 0
+new-retail.ru, 0
+new-rock-france.com, 0
+new-rus.tv, 0
+newsbin.com, 0
+news.cn, 0
+newscom.com, 0
+newsdog.today, 0
+news-for.me, 0
+newsghana.com.gh, 0
+newsko.ru, 0
+newsone.ua, 0
+newsprom.ru, 0
+newssummedup.com, 0
+news.tj, 0
+newstral.com, 0
+newszeit.com, 0
+newtab.club, 0
+newtimes.ru, 0
+newtranx.com, 0
+newz-complex.org, 0
+nexsoft.com.tr, 0
+nex-tech.com, 0
+nextgis.com, 0
+nextlayer.at, 0
+nextmail.ru, 0
+nextmp.net, 0
+nexusenergia.com, 0
+neytron.com, 0
+nezavisne.com, 0
+nfc-tag-shop.de, 0
+nfls.com.cn, 0
+nfmedia.com, 0
+nfo.so, 0
+nfs.com.ru, 0
+nfshost.com, 0
+nfsplanet.com, 0
+ngaaron.com, 0
+ngagelive.com, 0
+ngame.cn, 0
+ngamew.com, 0
+ngbit.com, 0
+ng-erp.com, 0
+nginx.org, 0
+ngmk.uz, 0
+ngmu.ru, 0
+ngonline.cn, 0
+ngp-ua.info, 0
+ngrok.cc, 0
+ngrok.io, 0
+nh.ee, 0
+niarela.net, 0
+niazerooz.com, 0
+nibs.ac.cn, 0
+nicaifu.com, 0
+nic.cz, 0
+nicdn.de, 0
+nicebnb.com, 0
+nicecotedazur.org, 0
+nic.edu, 0
+nicelabel.com, 0
+nic.gob.ar, 0
+nickstories.de, 0
+nicolawealth.com, 0
+nicpars.ir, 0
+nic.tr, 0
+nicweb.net, 0
+nidami.com, 0
+nie.edu.sg, 0
+night-ladies.ru, 0
+nightwolves.ru, 0
+nihaoshijie.com.cn, 0
+nijiero-ch.com, 0
+niji.fr, 0
+nikan.ir, 0
+nikonians.org, 0
+niks.by, 0
+nilokala.com, 0
+nimaboke.com, 0
+nina.gov.pl, 0
+ninja250.org, 0
+ninjamock.com, 0
+ninjaromeo.com, 0
+nintendo.es, 0
+nip.io, 0
+nipkipro.ru, 0
+nipne.ro, 0
+nippon-antenna.co.jp, 0
+niracloud.com, 0
+nirhtu.ru, 0
+nirt.res.in, 0
+nitec.kz, 0
+nitecore.com, 0
+nitk.ac.in, 0
+nitrokey.com, 0
+nitroserv.com, 0
+niubide.com, 0
+niuche.com, 0
+niu.cl, 0
+niume.com, 0
+niva-club.net, 0
+niwi.nz, 0
+nixpro.by, 0
+nix.ru, 0
+nixstore.ru, 0
+nj13z.cn, 0
+njd1.com, 0
+njit.edu.cn, 0
+njmu.edu.cn, 0
+n-joy.de, 0
+njucs-os.tk, 0
+nju.edu.cn, 0
+njust.edu.cn, 0
+nkforex.com, 0
+nkon.nl, 0
+nku.cn, 0
+nlb.mk, 0
+nl.ua, 0
+nmdn.net, 0
+nmedik.org, 0
+nmetau.edu.ua, 0
+nmg.gov.cn, 0
+nmm-hd.org, 0
+nmn.tw, 0
+nmzh.net, 0
+nnbbxx.net, 0
+nng.com, 0
+nnovosti.info, 0
+no1lounges.com, 0
+no1muse.com, 0
+noao.edu, 0
+nobleocarina.net, 0
+no-bs.de, 0
+nochi.com, 0
+nococoti.org, 0
+noda.me, 0
+nodelog.cn, 0
+nodevice.com, 0
+nodevice.com.pt, 0
+nodevice.es, 0
+nodevice.fr, 0
+nodevice.it, 0
+nodevice.jp, 0
+nody.me, 0
+nohoobag.com, 0
+no-ip.biz, 0
+no-ip.ca, 0
+no-ip.com, 0
+noip.me, 0
+no-ip.net, 0
+noisefm.ru, 0
+nolog.com, 0
+nomadit.co.uk, 0
+nomensa.com, 0
+nominic.ru, 0
+nomisma.it, 0
+nomnomka.ru, 0
+nomorelyrics.net, 0
+nonfiction.fr, 0
+noniu.com, 0
+non.li, 0
+nonli.com, 0
+nonstop-recruitment.com, 0
+noonbora.xyz, 0
+noor.net, 0
+noor-publishing.com, 0
+norakrolika.ru, 0
+norbar.com, 0
+norbit.ru, 0
+nordstar.ru, 0
+nordvpn.com, 0
+nordwindairlines.ru, 0
+norilsk-city.ru, 0
+noringa.ru, 0
+norma.uz, 0
+nornik.ru, 0
+northghost.com, 0
+norvik.eu, 0
+no-shave.org, 0
+nostromo.io, 0
+nota11.com.br, 0
+notaire.be, 0
+notariat.ru, 0
+notaris.be, 0
+notebooksbilliger.de, 0
+note-pad.net, 0
+noticiasx7.com, 0
+notifyfox.com, 0
+notifyninja.com, 0
+notik.ru, 0
+notmuchmail.org, 0
+notre-siecle.com, 0
+novabizz.com, 0
+novaenergia.net, 0
+nova.net.cn, 0
+novatek.ru, 0
+novatour.ru, 0
+novayaopera.ru, 0
+noveinzeraty.cz, 0
+novex.com.gt, 0
+novgorod.ru, 0
+novline.ru, 0
+novobyt.ru, 0
+novonordisk.com, 0
+novotelecom.ru, 0
+novreg.ru, 0
+nowcoder.com, 0
+nowecor.de, 0
+now.im, 0
+nowlink.it, 0
+noxue.com, 0
+npc.gov.cn, 0
+np.gov.ua, 0
+npmcompare.com, 0
+nps.edu, 0
+nptu.edu.tw, 0
+npu.ac.th, 0
+npu.gov.ua, 0
+nqu.edu.tw, 0
+nrada.gov.ua, 0
+nrcc.org, 0
+nrhh.org, 0
+ns48.pl, 0
+nsccsz.gov.cn, 0
+nsc.ru, 0
+nsfocus.com, 0
+nsimg.net, 0
+nsk.ru, 0
+nsk.su, 0
+nsktarelka.ru, 0
+nso.edu, 0
+nso.ru, 0
+nssm.cc, 0
+nstarikov.ru, 0
+nstu.ru, 0
+nsu.edu.cn, 0
+nsuem.ru, 0
+nsupdate.info, 0
+nsw.edu.au, 0
+nsw.gov.au, 0
+n-sysdes.co.jp, 0
+ntbg.org, 0
+ntbprov.go.id, 0
+ntex.tw, 0
+ntk-intourist.ru, 0
+ntm.ir, 0
+ntnu.edu.tw, 0
+ntnu.no, 0
+ntpc.edu.tw, 0
+ntp-servers.net, 0
+ntrqq.net, 0
+ntrun.com, 0
+ntt-it.co.jp, 0
+ntt.pl, 0
+ntu.edu.tw, 0
+ntv.ru, 0
+nu3.at, 0
+nu3.ch, 0
+nu3.com, 0
+nu3.de, 0
+nu3.fr, 0
+nuaa.edu.cn, 0
+nuageapp.com, 0
+nuance-nts.com, 0
+nucrf.ru, 0
+nudt.edu.cn, 0
+nuestracasa.com.co, 0
+nuevaeps.com.co, 0
+nugalis.com, 0
+nuipogoda.ru, 0
+nuk.edu.tw, 0
+nulling.space, 0
+number2.com, 0
+nung.edu.ua, 0
+nurotan.kz, 0
+nut.cc, 0
+nutspace.com, 0
+nutz.cn, 0
+nuu.uz, 0
+nux.ro, 0
+nva-hk.com, 0
+nvrnet.ru, 0
+nw.ru, 0
+nwtc.edu, 0
+nwt.cz, 0
+nxlog.co, 0
+nxrom.us, 0
+nyaki.ru, 0
+nyaso.com, 0
+nyc.ny.us, 0
+nydusvpn.com.cn, 0
+nyitvatartas24.hu, 0
+nysoftland.com.cn, 0
+nyugat.hu, 0
+nyxcosmetic.com.ua, 0
+nzb.cat, 0
+nzcompany.org, 0
+n-z.jp, 0
+o12.pl, 0
+o2.cz, 0
+o2label.ru, 0
+o2switch.net, 0
+oakandfort.ca, 0
+oakandfort.com, 0
+oaklynschool.org, 0
+oaseatm.com.ar, 0
+oasiscatalog.com, 0
+oat.ru, 0
+oball.ru, 0
+obambu.com, 0
+obbtest.com, 0
+obd2-shop.eu, 0
+obiz.com.tw, 0
+obukhov.ru, 0
+obyava.ua, 0
+ob-zor.ru, 0
+ocamlcore.org, 0
+oca.org, 0
+ocas.ca, 0
+occ.com.mx, 0
+oceanfilmtour.com, 0
+oceanic.com.br, 0
+oceanoptics.cn, 0
+oceanoptics.com, 0
+ocenschiki-i-eksperty.ru, 0
+ochenprosto.ru, 0
+ochkov.net, 0
+oclaro.com, 0
+ocmax.sk, 0
+ocrking.com, 0
+ocrosoft.com, 0
+ocrsdk.com, 0
+ocry.com, 0
+ocs.ru, 0
+oddle.me, 0
+oddpi.com, 0
+oddsoddsodds.com, 0
+odessa.gov.ua, 0
+odessa-life.od.ua, 0
+odiaweb.in, 0
+odin.ru, 0
+odisha.gov.in, 0
+od.no, 0
+odontosystem.com.br, 0
+odoo-community.org, 0
+oe24.at, 0
+oeag.at, 0
+oefb.at, 0
+oeh-wu.at, 0
+oei.es, 0
+oe.if.ua, 0
+oem-oil.com, 0
+oevg-versteigerungen.at, 0
+ofamni.com, 0
+ofb.uz, 0
+ofcard.com, 0
+ofertaschevrolet.com.br, 0
+ofertasdeemprego.pt, 0
+ofertasdetrabajosyempleos.com, 0
+offcn.com, 0
+office-4-sale.de, 0
+officeevolution.com, 0
+officen.kr, 0
+officeplus.cn, 0
+officetotalshop.com.br, 0
+officeweb365.com, 0
+off.net.mk, 0
+offquattro.com, 0
+ofigenno.com, 0
+o-film.com, 0
+ofk18.ru, 0
+oformi.net, 0
+ofo.so, 0
+ofoto.org, 0
+oftendining.com, 0
+ogilvy.com.cn, 0
+ogilvy.it, 0
+oglaszamy24.pl, 0
+ogmem.com, 0
+ogrn.ru, 0
+ohgaki.net, 0
+ohtuleht.ee, 0
+oichinote.com, 0
+oicp.net, 0
+oieau.fr, 0
+oieau.org, 0
+oilchoice.ru, 0
+oitibs.com, 0
+okabashi.com, 0
+okair.net, 0
+okb1.ru, 0
+okbuy.com, 0
+ok-crimea.ru, 0
+okfun.org, 0
+okhosting.com, 0
+okidoki.ee, 0
+okidoki.ru, 0
+okoutris.gr, 0
+oktawave.com, 0
+oktell.ru, 0
+okupdate.ru, 0
+okwave.co.jp, 0
+okwave.jp, 0
+okwoo.com, 0
+okwu.edu, 0
+olark.com, 0
+olay.com.tr, 0
+olaytv.com.tr, 0
+olcdn.net, 0
+oldbk.ru, 0
+oldboyedu.com, 0
+old-games.ru, 0
+olico.it, 0
+olimex.com, 0
+olimpiada.ru, 0
+olimpt4.info, 0
+olimp.us, 0
+ollbiz.com, 0
+oll.tv, 0
+olympiaodos.gr, 0
+olz.by, 0
+om1.ru, 0
+omadaalithias.gr, 0
+omct.org, 0
+ome.tv, 0
+omgmobc.com, 0
+omgpu.ru, 0
+omgtu.ru, 0
+omk.ru, 0
+omnia.online, 0
+omnicomm.ru, 0
+omnikportal.com, 0
+omniscriptum.com, 0
+omnitron-systems.com, 0
+omsk.com, 0
+omskportal.ru, 0
+omskzan.ru, 0
+omsys.com.cn, 0
+omvapors.com, 0
+on5.ir, 0
+onaft.edu.ua, 0
+onda.ma, 0
+ondonnedesnouvelles.com, 0
+onechina.xyz, 0
+onego.ru, 0
+one.gov.hk, 0
+oneinstack.com, 0
+oneland.su, 0
+one-news.net, 0
+oneniceapp.com, 0
+onepiece.com.pl, 0
+one.pl, 0
+oneplus.cn, 0
+onepluscorp.cn, 0
+oneshield.com, 0
+onestic.com, 0
+onetrum.com, 0
+onevisionimaging.com, 0
+oneway.mobi, 0
+onfiles.me, 0
+onion.to, 0
+onligamez.ru, 0
+online2pdf.com, 0
+online-apteka.com.ua, 0
+onlinecomics.ru, 0
+online.cq.cn, 0
+onlinedizi.co, 0
+onlinefilerepair.com, 0
+online-go.com, 0
+onlinehome-server.com, 0
+onlinehome-server.info, 0
+online.kz, 0
+onlinelabs.ir, 0
+onlinemizban.net, 0
+online-olimpiada.ru, 0
+onlinepatent.ru, 0
+onlinepbx.ru, 0
+onlinepng.com, 0
+onlineproxy.eu, 0
+onlineservers.ir, 0
+online.tm, 0
+onlinetopgame.com, 0
+onlinetv.ru, 0
+onlinewebfonts.com, 0
+onloon.net, 0
+onlybird.com, 0
+onlyfans.com, 0
+onlyhot.net, 0
+onlylady.com, 0
+onlymobiles.com, 0
+onlymult.com, 0
+onlysasta.com, 0
+onmovie.ge, 0
+on.net, 0
+onnibus.com, 0
+onofis.com, 0
+onpage.org, 0
+ontariocolleges.ca, 0
+ont.by, 0
+onthewifi.com, 0
+onyx-boox.ru, 0
+oodii.com, 0
+oo.gd, 0
+ooi.moe, 0
+oomoe.moe, 0
+oostende.be, 0
+opapopa.ru, 0
+opava.cz, 0
+op.cz, 0
+open4u.ru, 0
+open.ac.uk, 0
+openal.org, 0
+openapis.org, 0
+openarch.nl, 0
+openasapp.net, 0
+openbadges.it, 0
+opencart2x.ru, 0
+opencartfrm.com, 0
+opencart.ir, 0
+opencartmodul.net, 0
+opencpu.org, 0
+opencsw.org, 0
+opendaylight.org, 0
+openlanguage.com, 0
+openledger.info, 0
+openlp.org, 0
+open-mind.ir, 0
+openmodelica.org, 0
+openneo.net, 0
+opennet.ru, 0
+opennicproject.org, 0
+open-o.org, 0
+openpediatrics.org, 0
+openprocurement.org, 0
+openproject.org, 0
+openproject-stage.com, 0
+open-real-estate.info, 0
+openreceptores.com, 0
+opensignal.com, 0
+opensource-excellence.com, 0
+openssource.info, 0
+openstat.com, 0
+opentopcart.com, 0
+opentown.org, 0
+opentraintimes.com, 0
+openttdcoop.org, 0
+opentutorials.org, 0
+openvz.org, 0
+openweb.co.za, 0
+openwrt.org, 0
+opera-online.com, 0
+opnfv.org, 0
+opogame.com, 0
+opole.pl, 0
+opolskie.pl, 0
+oponylux.pl, 0
+oporaua.org, 0
+oportuna.com, 0
+oppo.com, 0
+opportunitynetwork.com, 0
+opsteel.cn, 0
+opsview.com, 0
+optima.cz, 0
+optimism.ru, 0
+optimoney.ru, 0
+optiopay.com, 0
+opus.co.jp, 0
+orange-business.ru, 0
+orange.ci, 0
+orange.jo, 0
+orange-prem.com, 0
+orange-servicespace.com, 0
+orange-social.com, 0
+oraridiapertura24.it, 0
+orbita.dn.ua, 0
+orderbird.com, 0
+orderkleeneze.co.uk, 0
+orderonline.cn, 0
+ordinec.ru, 0
+oregonstudentaid.gov, 0
+orel.ru, 0
+orenu.co.il, 0
+orfeo-toolbox.org, 0
+orfogrammka.ru, 0
+organicawater.com, 0
+orgprint.com, 0
+oriental-dreamworks.com, 0
+orientdienst.de, 0
+orionnet.ru, 0
+oriwiki.net, 0
+ormansu.gov.tr, 0
+oroundo.com, 0
+orsk-adm.ru, 0
+orsk.ru, 0
+ortaid.fr, 0
+or.tl, 0
+ortn.edu, 0
+orzdream.com, 0
+orz.hm, 0
+osaifu.com, 0
+oschadbank.ua, 0
+oschina.io, 0
+oschina.net, 0
+osd.at, 0
+osf-global.com, 0
+osirisshoes.com, 0
+osmbuildings.org, 0
+osmocom.org, 0
+osnova.tv, 0
+os-scape.com, 0
+osstech.co.jp, 0
+osu.ru, 0
+osvita.ua, 0
+osx86.cn, 0
+osx.hk, 0
+oszk.hu, 0
+otanice.com, 0
+otani.co, 0
+otarikkoc.com, 0
+otdelkino.ru, 0
+otelrus.ru, 0
+otenko.com, 0
+otmechalka.com, 0
+otpbank.com.ua, 0
+otpbank.ro, 0
+otr-files.de, 0
+otr-ratte.de, 0
+otr.ru, 0
+ottino.com, 0
+otyrar.kz, 0
+oucnet.cn, 0
+ouistock.fr, 0
+oum.ru, 0
+ouo.us, 0
+oupeng.com, 0
+our-dream.cn, 0
+ourgold.ru, 0
+ourjnu.com, 0
+ourmind.ru, 0
+ourocg.cn, 0
+oursays.com, 0
+ourstage.com, 0
+oursweb.net, 0
+ourutec.com, 0
+ourwalrus.com, 0
+outdoorlife.com, 0
+outdoorvoices.com, 0
+outfittery.ch, 0
+outfittery.com, 0
+outfittery.de, 0
+outlook.cn, 0
+outside.cf, 0
+ovdinfo.org, 0
+overhear.club, 0
+overnightprints.com, 0
+overstockart.com, 0
+overtechnologies.com, 0
+overthewire.org, 0
+overture.org, 0
+overwall.cc, 0
+overwiki.ru, 0
+ovh.ca, 0
+ovh.net, 0
+ovi.su, 0
+ovomedia.tv, 0
+ovotv.com, 0
+ow2.org, 0
+ow365.cn, 0
+owen.ru, 0
+owk.cz, 0
+owox.com, 0
+ows.farm, 0
+ox.ac.uk, 0
+oxge.net, 0
+oxy.edu, 0
+oyasu.info, 0
+oypo.nl, 0
+oyunlarim.com.tr, 0
+ozgrozer.com, 0
+ozon.ru, 0
+p2bt.com, 0
+p2pnet.pl, 0
+p2psearchers.com, 0
+p30rank.ir, 0
+p7.de, 0
+paci.gov.kw, 0
+pacogames.com, 0
+pacreception.com, 0
+pactera.com, 0
+pactwork.com, 0
+paddez.com, 0
+paddlepalace.com, 0
+paderno.com, 0
+pados.hu, 0
+paetep.com, 0
+pagedmeble.pl, 0
+pages-24.fr, 0
+pages24.mx, 0
+pages24.pl, 0
+page-weight.ru, 0
+pagewizz.com, 0
+paginesi.it, 0
+pagoda.com.cn, 0
+pagostad.gob.ar, 0
+pa.gov.br, 0
+pagro.at, 0
+pah.org.pl, 0
+paidui.com, 0
+paiq.nl, 0
+palemoon.org, 0
+paleoforum.ru, 0
+palettegear.com, 0
+palexpo.ch, 0
+palizafzar.com, 0
+palobby.com, 0
+panc.cc, 0
+panchemodan.ru, 0
+pancr.ru, 0
+panda.tv, 0
+pandatv.com, 0
+pandemic-legion.pl, 0
+paneco.mx, 0
+pangora.com, 0
+panolapse360.com, 0
+panono.com, 0
+panqis.cn, 0
+panypay.ir, 0
+panzar.ru, 0
+paoding.cc, 0
+pa-online.it, 0
+paopaoche.net, 0
+papapiqueetmamancoud.fr, 0
+papapt.com, 0
+paparazziuav.org, 0
+papayamobile.com, 0
+papeleriaarte.com, 0
+paperdl.com, 0
+paperhive.org, 0
+paperpass.com, 0
+paperplane.io, 0
+paper-republic.org, 0
+papersearch.net, 0
+papersogay.com, 0
+papierovetasky-vrecka.sk, 0
+paradisep30.ir, 0
+paragon-software.com, 0
+paralelnipolis.cz, 0
+paran.com, 0
+paraninfo.es, 0
+parano.be, 0
+paraplan.ru, 0
+paratype.com, 0
+parcamarketim.com, 0
+parcelapp.net, 0
+parcelchina.co.uk, 0
+parcheggilowcost.it, 0
+pardazmizban.com, 0
+parenting.com.tw, 0
+parents.org.gr, 0
+parfumerika.ru, 0
+parfum-lider.ru, 0
+parfumuri-timisoara.ro, 0
+paristamil.com, 0
+parks.org.il, 0
+parmisit.com, 0
+parmismedia3.com, 0
+parscanada.com, 0
+parseapp.com, 0
+parsec.tv, 0
+parsine.com, 0
+parsmags.com, 0
+parsregister.ir, 0
+pars-server.com, 0
+partkeepr.org, 0
+part-kom.ru, 0
+partnerchoice.co.uk, 0
+partoserver.com, 0
+parts66.ru, 0
+parts-kobo.com, 0
+partsrunner.de, 0
+pasaiaport.eus, 0
+pasaz24.pl, 0
+pasionfutbol.com, 0
+pasona.com.tw, 0
+pas.org.my, 0
+pasp.ru, 0
+pass4sures.com, 0
+pass7.cf, 0
+pass.is, 0
+passkit.com, 0
+passportindex.org, 0
+passwordrecoverytools.com, 0
+passwordrevelator.net, 0
+pastaoyunu.com.tr, 0
+pastebox.in, 0
+patagames.com, 0
+pateks.info, 0
+patentamt.at, 0
+pathfinder.gr, 0
+patiotuerca.com, 0
+patpat.com, 0
+patriarchia.ru, 0
+patrimoniocultural.pt, 0
+patronbase.com, 0
+patroneer.com, 0
+patschool.com, 0
+pau.edu.ng, 0
+pavilion.com.bd, 0
+pawnmail.com, 0
+paxsz.com, 0
+payad.me, 0
+payamkutah.com, 0
+payapal.ir, 0
+paybao.com.tw, 0
+paybone.cn, 0
+paycheckcity.com, 0
+paycom.uz, 0
+paykeeper.ru, 0
+payline.ir, 0
+paymentwall.com, 0
+paymoon.com, 0
+payner.bg, 0
+paypersale.ru, 0
+paypertrail.com, 0
+payrexx.com, 0
+payroll-taxes.com, 0
+payscale.com, 0
+paywithpoli.com, 0
+pb86.net, 0
+pb.gov.br, 0
+pbplus.me, 0
+pbs-video.com, 0
+pbvusd.net, 0
+pbwiki.com, 0
+pc1ads.com, 0
+pc2ads.com, 0
+pc3ads.com, 0
+pc6.com, 0
+pcask.ru, 0
+pcauto.com.cn, 0
+pcbaby.com.cn, 0
+pcfun.ro, 0
+pcgames.com.cn, 0
+pcgarage.ro, 0
+pcgho.com, 0
+pchelp.zone, 0
+pchome.com, 0
+pchome.net, 0
+pchouse.com.cn, 0
+pci-suntektech.com, 0
+pcjoy.cn, 0
+pclady.com.cn, 0
+pclender.com, 0
+pcmag.ru, 0
+pcmarket.com.hk, 0
+pcmax.jp, 0
+pcnala.com, 0
+pc-online.co.il, 0
+pconline.com.cn, 0
+pc-radio.ru, 0
+pcradio.ru, 0
+pcsolottoresulttoday.com, 0
+pcstore.com.tw, 0
+pcvideo.com.cn, 0
+pcv.pt, 0
+pcweek.ru, 0
+pcworld.com.vn, 0
+pdaclub.pl, 0
+pdalife.ru, 0
+pdfm.net, 0
+pdlada.ru, 0
+pdn.ac.lk, 0
+pecs.hu, 0
+peergrade.io, 0
+pegast.com.ua, 0
+pegastour.ru, 0
+pegasus.de, 0
+pegasusknight.com, 0
+pegasusshop.de, 0
+pegatroncorp.com, 0
+pegitboard.com, 0
+pe.hu, 0
+p-e.kr, 0
+pelago.events, 0
+peliculas.cc, 0
+pelock.com, 0
+pelotok.net, 0
+penflip.com, 0
+penjualan.web.id, 0
+pensadordeapuestas.com, 0
+penshop.cz, 0
+pensioneram.info, 0
+pentesterschool.ir, 0
+pentestit.ru, 0
+peo.hu, 0
+peopleandconnection.com, 0
+peopleandlaw.ru, 0
+pepperkoko.com, 0
+peralppay.com, 0
+perevody-deneg.ru, 0
+perfekto.ru, 0
+performancehorizon.com, 0
+performia.com, 0
+peristeri.gr, 0
+permedu.ru, 0
+permprofi.ru, 0
+perqasje.com, 0
+persiangig.com, 0
+persiantools.com, 0
+person.com, 0
+personeelssysteem.nl, 0
+perspektiva-inva.ru, 0
+perssist.com, 0
+pervouralsk.ru, 0
+pesapal.com, 0
+pescms.com, 0
+pesc.ru, 0
+peshkupauje.com, 0
+pes.spb.ru, 0
+petdesk.com, 0
+peterkin.com.au, 0
+petersen.org, 0
+petkusuri.com, 0
+petradiamonds.com, 0
+petrimazepa.com, 0
+petrokimia-gresik.com, 0
+petromap.ru, 0
+petroren.com, 0
+petrsu.ru, 0
+petsoftware.net, 0
+petwellbeing.com, 0
+peugeot.com.cn, 0
+peugeot.it, 0
+peykasa.ir, 0
+pfconcept.com, 0
+pf-enclave.org, 0
+pfsw.com, 0
+pfthost.com, 0
+pgpru.com, 0
+pgsha.ru, 0
+pgw.jp, 0
+pgzs.com, 0
+phaistosnetworks.gr, 0
+phalconphp.com, 0
+pharminnotech.com, 0
+pharosmaris.net, 0
+phase-6.de, 0
+phcorner.net, 0
+phdl.net, 0
+phicomm.com, 0
+philipp-plein.com, 0
+philmorehost.net, 0
+philo.at, 0
+philofacile.com, 0
+phi-sci.com, 0
+phoenicis.com.ua, 0
+phoenix-dnr.ru, 0
+phoenixtree.com.cn, 0
+photo-ac.com, 0
+photobox.com, 0
+photocase.com, 0
+photocase.de, 0
+photographers.ua, 0
+photolemur.com, 0
+photonomy.ru, 0
+photophoto.cn, 0
+photoprocenter.ru, 0
+photorank.me, 0
+photosex.biz, 0
+photoshop-master.ru, 0
+photo-toolbox.com, 0
+photoworld.com.cn, 0
+php2.cc, 0
+phpcaptcha.org, 0
+phpclub.ru, 0
+phpdr.net, 0
+php-friends.de, 0
+phpinfo.me, 0
+phpmywind.com, 0
+phpnet.us, 0
+phps.kr, 0
+phpwind.me, 0
+phpxy.com, 0
+phtg.ch, 0
+phyks.me, 0
+phystech.edu, 0
+phystech.international, 0
+pi3g.com, 0
+picantecooking.com, 0
+picclick.de, 0
+picload.org, 0
+picnic.ly, 0
+picovico.com, 0
+picovr.com, 0
+picowork.com, 0
+picp.net, 0
+pictureview.com, 0
+pidak.cz, 0
+pidgin.im, 0
+pieas.edu.pk, 0
+piemex.net, 0
+pierotofy.it, 0
+pigcms.com, 0
+pikperfect.com, 0
+piktab.com, 0
+pilaipiwang.com, 0
+pila.pl, 0
+piligrim.ua, 0
+pilotgroup.net, 0
+pilot-theatre.com, 0
+piluli.ru, 0
+pinakothek.de, 0
+pine4.net, 0
+pine.fm, 0
+ping-admin.ru, 0
+pingan.com.cn, 0
+pingan.com.hk, 0
+pingpongx.com, 0
+pingstart.com, 0
+pingvin.pro, 0
+pingxx.com, 0
+pinkcasino.co.uk, 0
+pinpool.ir, 0
+pinsmedical.com, 0
+pinzhi365.com, 0
+pioneer-life.ir, 0
+pios.gov.pl, 0
+pipi.cn, 0
+pippkro.ru, 0
+piratebuhta.cc, 0
+pirateking.online, 0
+piratenpad.de, 0
+piratenpartei.de, 0
+piratepay.ir, 0
+pirateproxy.club, 0
+piratepublic.com, 0
+piratskastranka.si, 0
+pirobase.de, 0
+pirogov-dvorik.ru, 0
+pisofttech.com, 0
+pitbullguitars.com, 0
+pitchvision.com, 0
+pitersmoke.ru, 0
+pitupitu.pl, 0
+piuis.ru, 0
+pi-usa.us, 0
+pivnidenicek.cz, 0
+pixabay.com, 0
+pixelplus.ru, 0
+pixi.eu, 0
+pizzahut.be, 0
+pizzahut.com.ph, 0
+pizzamanager.eu, 0
+pjbc.gob.mx, 0
+pjeveracruz.gob.mx, 0
+pji.co.kr, 0
+pjn.gov.ar, 0
+pjud.cl, 0
+pjw.io, 0
+pkget.com, 0
+pkgh.edu.ru, 0
+pk.gov.pl, 0
+pkm.gov.gr, 0
+pkmn.net, 0
+pkmnreborn.com, 0
+pkpai.com, 0
+pkpai.kr, 0
+pkr.com, 0
+pks.id, 0
+pku.edu.cn, 0
+pkuh6.cn, 0
+placesrf.ru, 0
+placla.cz, 0
+plac-official.com, 0
+plagiarism-detector.com, 0
+plagly.com, 0
+plainjs.com, 0
+plainviewisd.org, 0
+plak.co.za, 0
+plan1.ru, 0
+planet3dnow.de, 0
+planetakino.ua, 0
+planeta-online.tv, 0
+planeta.tv, 0
+planetawrestling.com, 0
+planetemu.net, 0
+planete-zemlya.ru, 0
+planetkde.org, 0
+planet-kob.ru, 0
+planet-mcpe.net, 0
+planet.nl, 0
+planetofhotels.com, 0
+planetvampire.com, 0
+plan.io, 0
+planplus.cn, 0
+planujemywesele.pl, 0
+plarium.com, 0
+plasma-mobile.org, 0
+plasp.com, 0
+plasters.ru, 0
+plastics.ua, 0
+plastinka.com, 0
+plasway.com, 0
+plates4less.co.uk, 0
+platformaofd.ru, 0
+platon.sk, 0
+playa-games.com, 0
+playamedia.com, 0
+playgb.com, 0
+playgwent.cn, 0
+playinitium.com, 0
+playlist24.ru, 0
+playpass.be, 0
+playsport.cc, 0
+playstation.com, 0
+playstation.com.hk, 0
+playstore-api.com, 0
+playtomax.com, 0
+playzhan.com, 0
+plccenter.com, 0
+plobalapps.com, 0
+plocan.eu, 0
+pluie-solide.com, 0
+pluimen.nl, 0
+plumgrid.com, 0
+plus.com, 0
+plusgsm.com.br, 0
+plusmaster.ir, 0
+plus-plus.tv, 0
+ply.st, 0
+pm7.com, 0
+pmail.idv.tw, 0
+pmit.cn, 0
+pmlp.gov.lv, 0
+pndk.in, 0
+pneumax.ru, 0
+pnpapps.net, 0
+pnu.edu.ru, 0
+pnzreg.ru, 0
+pobedavkusa.ru, 0
+pocketbook-int.com, 0
+pocketdice.io, 0
+pocketlive.tv, 0
+podarit.net, 0
+podarit-prazdniki.ru, 0
+podari-zhizn.ru, 0
+poda.tv, 0
+podnikatel.cz, 0
+poems.co.id, 0
+poetrylabs.com, 0
+pofu.ru, 0
+pogazam.ru, 0
+pogliad.ua, 0
+pogovorim.net, 0
+poidem.ru, 0
+pointslab.org, 0
+poisk.ru, 0
+pokatne.pl, 0
+poke8.com, 0
+pokebip.com, 0
+pokedextracker.com, 0
+pokegosurewin.net, 0
+pokemoncardmarket.eu, 0
+pokemongomap.live, 0
+pokemonworld.ru, 0
+pokerdiscover.com, 0
+pokermatch.com, 0
+pokermoscow.ru, 0
+pokevision.hk, 0
+pokupo.ru, 0
+poland.travel, 0
+polarion.com, 0
+polar.org.cn, 0
+polessu.by, 0
+polibr.com.br, 0
+police.gov.ua, 0
+poliklinika45.ru, 0
+polime.it, 0
+politeka.net, 0
+politiadefrontiera.ro, 0
+politics.co.uk, 0
+polito.it, 0
+poliupg.ac.id, 0
+polocai.com, 0
+poloskaos.com, 0
+polovinka.org, 0
+polscygracze.pl, 0
+polska.lu, 0
+polska.travel, 0
+poltava.info, 0
+polus.com.ru, 0
+polus.su, 0
+polycn.com, 0
+polycomp.bg, 0
+polygongroup.com, 0
+polyv.net, 0
+pomelloapp.com, 0
+pomodoneapp.com, 0
+pomogi.org, 0
+pomorsu.ru, 0
+pomotodo.com, 0
+pomurec.com, 0
+ponosa.net, 0
+ponroy.com, 0
+p-on.ru, 0
+pontosido.com, 0
+pop136.com, 0
+pop800.com, 0
+popart.hk, 0
+popdg.com, 0
+popel-studio.com, 0
+popeyesdelivery.com.sg, 0
+popfax.com, 0
+popgo.space, 0
+popmog.com, 0
+popmotor.ru, 0
+popname.cz, 0
+popphoto.com, 0
+popsci.com, 0
+popunder24.com, 0
+popunder.net, 0
+porn0sex.net, 0
+porn4you.xxx, 0
+pornbase.info, 0
+pornfay.com, 0
+pornhublive.com, 0
+porno-gif.ru, 0
+porno-sex-online.com, 0
+pornvideos247.com, 0
+portail-familles.net, 0
+portaleperilcittadino.it, 0
+portal-preobrazenie.ru, 0
+portaltvto.com, 0
+portalwifi.com, 0
+portaportal.com, 0
+portfoliofinancial.hu, 0
+portfolio.hu, 0
+portodeimbituba.com.br, 0
+portoitapoa.com.br, 0
+portonave.com.br, 0
+portsdebalears.com, 0
+poshk.ru, 0
+positivoinformatica.com.br, 0
+posn.or.th, 0
+pos-shop.ru, 0
+postcalc.ru, 0
+postcross.me, 0
+postech.ac.kr, 0
+posteo.de, 0
+postgrespro.ru, 0
+postgresql.jp, 0
+postimees.ee, 0
+post.kz, 0
+postleitzahl.org, 0
+postmarket.kz, 0
+posuta.com, 0
+potemki.com, 0
+potokar.si, 0
+potsdam.de, 0
+potsdam.edu, 0
+pouyanit.com, 0
+povarenok.ru, 0
+pow88.com, 0
+powereasy.net, 0
+poweredbyclear.com, 0
+powerliftingiran.ir, 0
+powernet.com.ru, 0
+pozapisi.ru, 0
+poznan.pl, 0
+pp100.com, 0
+ppgame.com, 0
+ppm.cn, 0
+pptake.com, 0
+pptfans.cn, 0
+pptmall.net, 0
+ppt.ru, 0
+pptv.com, 0
+ppvke.com, 0
+ppypp.com, 0
+ppzuche.com, 0
+praegnanz.de, 0
+praktiker.hu, 0
+prala.pl, 0
+prankies.com, 0
+prasac.com.kh, 0
+pravda.sk, 0
+pravosudje.ba, 0
+pravsha.by, 0
+prawda2.info, 0
+prb.bg, 0
+prcjx.cn, 0
+prefis.sk, 0
+prego-services.de, 0
+prehraj.to, 0
+preis24.de, 0
+preissuche24.info, 0
+preistalent.de, 0
+premier-kladionica.com, 0
+premiumy.pl, 0
+prepaidcard.com.mm, 0
+preparedpantry.com, 0
+prepfactory.com, 0
+preporucamo.com, 0
+presidence.bj, 0
+presidencia.gov.co, 0
+pressenews.fr, 0
+prestigeflowers.co.uk, 0
+prestigehampers.co.uk, 0
+prestigio.com, 0
+presto-apps.com, 0
+pretenziy.ru, 0
+prettyporno.net, 0
+prettysecrets.com, 0
+prezentacii.org, 0
+prezi-dent.ru, 0
+pr.gov.br, 0
+pricefx.eu, 0
+pricett.com, 0
+primacom.de, 0
+primaseller.com, 0
+primat.cz, 0
+primeapps.in, 0
+primeins.gr, 0
+primeminister.kz, 0
+primeton.com, 0
+print100.com, 0
+printer-spb.ru, 0
+printmod.ru, 0
+print-post.com, 0
+printui.com, 0
+prinzeugen.net, 0
+priscillaelmusical.es, 0
+prisonlegalnews.org, 0
+prissa.com.mx, 0
+priusfreunde.de, 0
+privatedns.biz, 0
+private-immobilienangebote.de, 0
+privatelink.de, 0
+privatportal.sk, 0
+privesc.eu, 0
+privet.com, 0
+privoz.pl, 0
+prizel.ru, 0
+prizrenpost.com, 0
+prncloud.com, 0
+prnwatch.com, 0
+pro2e.com.tw, 0
+proball.ru, 0
+proberry.ru, 0
+pro-bike.ru, 0
+probiznesmen.ru, 0
+procd.net, 0
+process-one.net, 0
+proc.ru, 0
+procvetok.com, 0
+prodaman.ru, 0
+prodj.com.ua, 0
+produccion.gob.ar, 0
+productimpossible.com, 0
+profbuh8.ru, 0
+professionals-security.com, 0
+proffstore.com, 0
+profhariz.com, 0
+profibeer.ru, 0
+proficredit.cz, 0
+profile.ir, 0
+profine-group.com, 0
+profitero.com, 0
+profitquery.com, 0
+profi.travel, 0
+profitserver.ru, 0
+profizoo.cz, 0
+profpoint.ru, 0
+proftpd.org, 0
+prog-8.com, 0
+progamer.ru, 0
+proginov.fr, 0
+proglas.cz, 0
+prognoznazavtra.ru, 0
+prognoz.ru, 0
+pro-gorod.ru, 0
+programcini.com, 0
+programmy.club, 0
+programster.org, 0
+progs-shool.ru, 0
+prohelvetia.ch, 0
+proimei.info, 0
+projectagora.com, 0
+projectfacts.de, 0
+projectfly.co.uk, 0
+projecthax.com, 0
+projectsatbangalore.com, 0
+projectsmd.in, 0
+proliancesurgeons.com, 0
+prologicwebdesign.com, 0
+promentconsulting.com, 0
+promodo.com, 0
+promo.it, 0
+promosigratis.net, 0
+promostore.de, 0
+promptcloud.com, 0
+pronetdigital.com.br, 0
+pronosticoextendido.net, 0
+prontotour.com, 0
+proofpoint.com, 0
+proofy.io, 0
+propertytorenovate.co.uk, 0
+propertywala.com, 0
+property.works, 0
+prophpbb.com, 0
+pro-porno.net, 0
+pro-psixology.ru, 0
+proshivka.pro, 0
+prosmart.by, 0
+prospective.ch, 0
+prospero.ru, 0
+prostitutkifor.me, 0
+prostitutkixxx.org, 0
+prostovpn.org, 0
+prota4u.org, 0
+prota.info, 0
+prota.space, 0
+protect-software.com, 0
+protegetuordenador.com, 0
+protek.ru, 0
+protiprudu.org, 0
+protolabs.com, 0
+provadaordem.com.br, 0
+provectus.com, 0
+proviasnac.gob.pe, 0
+provincia.biella.it, 0
+provinciasondrio.gov.it, 0
+proweb.kz, 0
+proxmox.com, 0
+proxy-base.com, 0
+proxy-base.org, 0
+proxy-listen.de, 0
+proxylite.net, 0
+proxyssl.org, 0
+prsa.pl, 0
+prusa3d.com, 0
+prusa3d.cz, 0
+prusa3d.it, 0
+prusaprinters.org, 0
+przemekz.pl, 0
+psa-photo.org, 0
+psarips.com, 0
+psati.ru, 0
+psbl.org, 0
+ps-box.ru, 0
+psd1.org, 0
+psd2htmlconverter.com, 0
+psefan.com, 0
+psikologofisi.com, 0
+psim.us, 0
+pskovedu.ru, 0
+pskovline.ru, 0
+psmanaged.com, 0
+psne.jp, 0
+psnine.com, 0
+pspro.ir, 0
+pspx.ru, 0
+psru.ac.th, 0
+ps-sale.ru, 0
+pss.sk, 0
+p-stats.com, 0
+pstorage.space, 0
+pstu.ru, 0
+psu.ac.th, 0
+psu.by, 0
+psu.kz, 0
+psu.ru, 0
+psuti.ru, 0
+psy525.cn, 0
+psylab.cc, 0
+psysovet.ru, 0
+pszone.fr, 0
+pte.hu, 0
+pthor.ch, 0
+pti.org.br, 0
+ptsecurity.com, 0
+pttreader.com, 0
+ptyxjy.com, 0
+puahome.com, 0
+publbox.com, 0
+publiacqua.it, 0
+publiccloud.com.br, 0
+public-cyprus.com.cy, 0
+public.gr, 0
+publicitas.ch, 0
+publicitas.com, 0
+publicvm.com, 0
+publishernews.ru, 0
+pubprosud.fr, 0
+pub.ro, 0
+pubyun.com, 0
+puc.edu, 0
+puc-rio.br, 0
+pudding.cc, 0
+pudong.gov.cn, 0
+pu.edu.tw, 0
+puet.edu.ua, 0
+pullywood.com, 0
+pulsar.guru, 0
+pulsepad.com.ua, 0
+punchbaby.com, 0
+punjab.gov.pk, 0
+punto.ar, 0
+punycoder.com, 0
+purchasebear.com, 0
+purdue.edu, 0
+pure-ana.com, 0
+puredata.info, 0
+pureftpd.org, 0
+puregamemedia.fr, 0
+purepassion.ru, 0
+puretechltd.com, 0
+purgatoryresort.com, 0
+puritys.me, 0
+purnov.com, 0
+pushall.ru, 0
+pushclouds.cc, 0
+put.ac.ir, 0
+putanastars.net, 0
+putao.com, 0
+putihome.org, 0
+putler.com, 0
+puxbao.com, 0
+pvision.ru, 0
+pvr8.ir, 0
+pwlab.com, 0
+pwnz.org, 0
+pxgrids.com, 0
+pycon.org, 0
+pypa.io, 0
+pypi.org, 0
+pythian.com, 0
+pythonanywhere.com, 0
+python.org, 0
+pythontutor.com, 0
+pyw.cn, 0
+pyyx.com, 0
+pzacademy.com, 0
+pz.gov.ua, 0
+pzoom.com, 0
+pzu.com.ua, 0
+q1.com, 0
+q32.link, 0
+q4yy.com, 0
+q9tech.com, 0
+qapa.fr, 0
+qazit.com, 0
+qbear.ru, 0
+qbsw.sk, 0
+qc.to, 0
+qdac.cc, 0
+qdaily.com, 0
+qdcdc.com, 0
+qdealit.com, 0
+qdgjj.com, 0
+qdingzhi.com, 0
+qdu.edu.cn, 0
+qduoj.com, 0
+qdxin.cn, 0
+qeeka.com, 0
+qfang.com, 0
+qfiz.win, 0
+qhfz.edu.cn, 0
+qhimg.com, 0
+qhmsg.com, 0
+qiankunhaoche.com, 0
+qianmi.com, 0
+qianqian.com, 0
+qichacha.com, 0
+qichetong.com, 0
+qida.com, 0
+qidaile.com, 0
+qidapp.cn, 0
+qierukou.com, 0
+qietu.cn, 0
+qiezzi.com, 0
+qifu.me, 0
+qihoo.net, 0
+qihu.com, 0
+qijianvpnn.com, 0
+qikan.com, 0
+qikoo.com, 0
+qiku.com, 0
+qiling.org, 0
+qilong.com, 0
+qima-inc.com, 0
+qin27.com, 0
+qing5.com, 0
+qinggukeji.com, 0
+qingguo.com, 0
+qingk.cn, 0
+qingningzi.com, 0
+qingtaoke.com, 0
+qingting.fm, 0
+qingyunvpn.com, 0
+qingzhuyi.com, 0
+qinqinbaby.com, 0
+qinsmoon.com, 0
+qinzhou.gov.cn, 0
+qip.ru, 0
+qispine.com, 0
+qitt.ru, 0
+qiushibaike.com, 0
+qizhao.com, 0
+qlcl.edu.vn, 0
+qlean.ru, 0
+qlmoney.com, 0
+qls.com.au, 0
+qlu.edu.cn, 0
+qnapclub.it, 0
+qnap.community, 0
+qnbar.com, 0
+qnet.it, 0
+qnoddns.org.cn, 0
+qoop.me, 0
+qortex.com, 0
+qov.tw, 0
+qpolitical.com, 0
+qqyou.com, 0
+qrcb.com.cn, 0
+qrd.by, 0
+qrp-labs.com, 0
+qrserver.com, 0
+qrz.ru, 0
+qsban.cn, 0
+qsng.cn, 0
+qspfw.com, 0
+qsrmagazine.com, 0
+qswoo.com, 0
+qtdev.org, 0
+qtech.ru, 0
+qth.spb.ru, 0
+quadcept.com, 0
+qualaroo.com, 0
+qualiteconstruction.com, 0
+quality.co.jp, 0
+qualitytelecom.es, 0
+quankan.tv, 0
+quanmin.tv, 0
+queeky.com, 0
+queer.de, 0
+queezie.com, 0
+queisser.ru, 0
+quentrix.com, 0
+quepasada.cc, 0
+quepasanoticias.com, 0
+queromaisdicas.com.br, 0
+querylist.cc, 0
+questoria.ru, 0
+qugirl.com, 0
+quickchange.cc, 0
+quickclickhosting.com, 0
+quickim.co.il, 0
+quickmobile.com, 0
+quickqx.net, 0
+quicktickets.ru, 0
+quik.ru, 0
+quilt.idv.tw, 0
+quintagroup.com, 0
+quint.dk, 0
+quirinale.it, 0
+quitoque.fr, 0
+quizgroup.com, 0
+quizofkings.com, 0
+quizzclub.com, 0
+quji.com, 0
+qumaiyao.com, 0
+qumi.com, 0
+quna.com, 0
+qunar.com, 0
+qunar.it, 0
+qunarzz.com, 0
+qunhequnhe.com, 0
+qun.hk, 0
+qupai.me, 0
+qupeiyin.cn, 0
+qupeiyin.com, 0
+qutke.com, 0
+quumii.com, 0
+quyiyuan.com, 0
+quyundong.com, 0
+qxiazai.com, 0
+qycloud.com.cn, 0
+qycn.com, 0
+qydev.com, 0
+qyvideo.net, 0
+qzzn.com, 0
+r23.ru, 0
+r4ruby.com, 0
+r52.ru, 0
+r99.no, 0
+rabita.az, 0
+rabotakaliningrad.ru, 0
+rabota.tomsk.ru, 0
+racco.com.br, 0
+racedepartment.com, 0
+racefornuts.com, 0
+rachelcruze.com, 0
+rachum.com, 0
+radarservices.com, 0
+radec.com.mx, 0
+rad.eu, 0
+radia.sk, 0
+radicalphilosophy.com, 0
+radicasys.com, 0
+radicenter.eu, 0
+radikal.ru, 0
+radimrehurek.com, 0
+radinpars.com, 0
+radinsan.com, 0
+radio1.si, 0
+radio5.com.pl, 0
+radioantena.si, 0
+radio.cn, 0
+radioheart.ru, 0
+radiojackie.com, 0
+radiola.audio, 0
+radiolan.sk, 0
+radiopotok.ru, 0
+radio-shop.ru, 0
+radioskonto.lv, 0
+radioson.ru, 0
+radiostudent.si, 0
+radiotrucker.com, 0
+radioweb.jp, 0
+rad-net.de, 0
+radom.pl, 0
+radpardazesh.com, 0
+raduga-ufa.ru, 0
+radver.ru, 0
+ra.ee, 0
+raf.edu.rs, 0
+ragan.com, 0
+ragazzeinvendita.com, 0
+rageline.com, 0
+rahvaraamat.ee, 0
+rahyarserver.com, 0
+raiffeisen.ru, 0
+rai.it, 0
+rails365.net, 0
+rainbow-ic.biz, 0
+rainfly.cn, 0
+rainintl.com, 0
+rainyman.net, 0
+rajagiritech.ac.in, 0
+rajax.me, 0
+rajveteranu.cz, 0
+rallets.com, 0
+ranbot.hk, 0
+rand.com, 0
+randymc.de, 0
+ranez.ru, 0
+rangde.org, 0
+raphaelhertzog.com, 0
+rapida.ru, 0
+rapidomaine.biz, 0
+rapidomaine.fr, 0
+rapidpich.ir, 0
+rapidshopper.ca, 0
+rapidsms.org, 0
+rapidswholesale.com, 0
+rapixel.com, 0
+rara.jp, 0
+raremaps.com, 0
+rare-technologies.com, 0
+rarupload.com, 0
+rasana.ir, 0
+raschet.by, 0
+rashtak.ir, 0
+raskesider.no, 0
+ratbv.ro, 0
+ratesphere.com, 0
+ratioform.de, 0
+ratowealth.com, 0
+ratpdev.com, 0
+raviplacement.com, 0
+ravnaqbank.uz, 0
+rayaneh.com, 0
+rayanpack.com, 0
+raybt.ru, 0
+rayshobby.net, 0
+rayvision.com, 0
+razumei.ru, 0
+rbauto.ru, 0
+rbc.ch, 0
+rbc.ua, 0
+rblive.de, 0
+rbrauto.ru, 0
+rbru.ac.th, 0
+rbt.asia, 0
+rcf.it, 0
+rcforum.ru, 0
+rcfp.org, 0
+rcitsakha.ru, 0
+rcntec.com, 0
+rcokoit.ru, 0
+rcscomponents.kiev.ua, 0
+rcsearch.ru, 0
+rc-sme.ru, 0
+rctw.net, 0
+rcxue.com, 0
+rd-forum.ru, 0
+rdf.ru, 0
+rdfzcygj.cn, 0
+rdrom.ru, 0
+rdrop.com, 0
+reachoutandread.org, 0
+readfree.me, 0
+readnotify.com, 0
+readovka.ru, 0
+reagent.com.cn, 0
+realblackfriday.ru, 0
+realestate.ru, 0
+realeyz.de, 0
+realfevr.com, 0
+realgreenled.com, 0
+realidadvenezolana.com, 0
+realistic.photos, 0
+realschulebayern.de, 0
+realsociedad.com, 0
+realtycalendar.ru, 0
+realtyvision.ru, 0
+realweb.ru, 0
+reasondigital.com, 0
+reber.com, 0
+rebex.net, 0
+rebooo.com, 0
+reca.ca, 0
+recaro-cs.com, 0
+rechargedeal.in, 0
+redbook.tw, 0
+redcafestore.com, 0
+redcom.ru, 0
+reddingo.com, 0
+redesul.com.br, 0
+red-gate.com, 0
+redhome.cc, 0
+redirectme.net, 0
+redmatter.com, 0
+rednager.xyz, 0
+rednoise.org, 0
+redserver.su, 0
+redshift3d.com, 0
+redsign.ru, 0
+redtubelive.com, 0
+redzoneaction.org, 0
+reedoun.com, 0
+reeleezee.nl, 0
+refdb.ru, 0
+reflexplanning.com, 0
+refog.com, 0
+reformagkh.ru, 0
+refurb.me, 0
+refurb-tracker.com, 0
+regard.ru, 0
+regel.it, 0
+regenbogen.com, 0
+regione.fvg.it, 0
+regione.puglia.it, 0
+regionoperator.ru, 0
+regionsanmartin.gob.pe, 0
+regiontrud.ru, 0
+registrodirecto.es, 0
+registru.md, 0
+registry.net.za, 0
+regruhosting.ru, 0
+regtaim.ru, 0
+rehau-portal.ru, 0
+reifensuche.com, 0
+reikartz.com, 0
+reimu.net, 0
+reincarnationics.com, 0
+reinforce.cn, 0
+reiseguiden.no, 0
+reisenthel.com, 0
+rekab.ir, 0
+rekini.lv, 0
+reklama-online.ru, 0
+relap.io, 0
+remediobarato.com, 0
+remisesetprivileges.fr, 0
+remont3.ru, 0
+remora.cx, 0
+remorques-discount.com, 0
+remotewebaccess.com, 0
+rem.uz, 0
+remzona.by, 0
+renate.cc, 0
+renault.ru, 0
+renderfarming.net, 0
+renderpeople.com, 0
+rendezvenyhelyszinek.hu, 0
+rendi.hu, 0
+renegades-ast.it, 0
+renegraeber.de, 0
+renhe.cn, 0
+renjk.com, 0
+rennsimulanten.de, 0
+renovolive.com, 0
+renren66.com, 0
+renren.com, 0
+renrencui.org, 0
+renshuu.org, 0
+rentacenter.com, 0
+rentalhomes.com, 0
+rentbay.co.za, 0
+rentbook.co.za, 0
+rentner-die-zocken.de, 0
+rentong.com.tw, 0
+renwey.com, 0
+repaik.com, 0
+repetiruem.ru, 0
+repetitors.info, 0
+replaymod.com, 0
+reportbee.com, 0
+reportermagazin.cz, 0
+reportuk.org, 0
+researchcatalogue.net, 0
+researchgateway.ac.nz, 0
+researchmfg.com, 0
+reseauenscene.fr, 0
+reseguiden.se, 0
+resertrip.com, 0
+reservationcounter.com, 0
+reska.co.id, 0
+res-mods.ru, 0
+resmush.it, 0
+resortragaz.ch, 0
+respondi.com, 0
+restate.ru, 0
+restore.com.ua, 0
+restore-iphone-data.com, 0
+resto.ru, 0
+restosducoeur.org, 0
+restostar.com, 0
+restr.net, 0
+resumegames.com, 0
+reteaste.tv, 0
+retently.com, 0
+retouch-weblab.com, 0
+retrojeans.com, 0
+retrovisionlatino.net, 0
+ret.ru, 0
+revda-info.ru, 0
+reveal-sound.com, 0
+revell.de, 0
+reverse4you.org, 0
+reviewtrackers.com, 0
+revision.co.zw, 0
+revistamoi.com, 0
+revizto.com, 0
+revolt.tv, 0
+rewriteim.jp, 0
+reyhansoft.com, 0
+rezeptwelt.de, 0
+rezo-zero.com, 0
+rfchost.com, 0
+rfei.ru, 0
+rfelements.com, 0
+rf.gd, 0
+rfgsi.com, 0
+rficb.ru, 0
+rfj.ch, 0
+rfmeteo.ru, 0
+rgsu.ru, 0
+rgtfo-me.it, 0
+rgups.ru, 0
+rgyan.com, 0
+rgz.one, 0
+rhbrasil.com.br, 0
+rhcloud.com, 0
+rhh520.cn, 0
+rhoen-klinikum-ag.com, 0
+ria.com, 0
+ricercare-imprese.it, 0
+ridero.eu, 0
+ridersdeal.com, 0
+riffle.be, 0
+riftcat.com, 0
+rigaskarte.info, 0
+rightathome.net, 0
+rightknights.com, 0
+right-to-love.name, 0
+rigol.com, 0
+rigpa.org, 0
+rii.kz, 0
+rijigu.com, 0
+rimi.lt, 0
+rincondelatecnologia.com, 0
+rings.ru, 0
+riolis.ru, 0
+ripn.net, 0
+ripost.hu, 0
+rippletek.com, 0
+risan-penza.ru, 0
+risda.gov.my, 0
+riseba.lv, 0
+risenenergy.com, 0
+rising-gods.de, 0
+risk.az, 0
+risparmiatelo.it, 0
+riss.ru, 0
+riteforge.com, 0
+ritehite.com, 0
+ritekit.com, 0
+rite.ly, 0
+ritepush.com, 0
+ritetag.com, 0
+ritlabs.com, 0
+ritmo.ir, 0
+ritmonexx.ru, 0
+rivalfox.com, 0
+rivalregions.com, 0
+rixcloud.com, 0
+rizhiyi.com, 0
+rjb.ch, 0
+rj.gov.br, 0
+rjh.com.cn, 0
+rk1.ru, 0
+rk.gov.ru, 0
+rkiau.ac.ir, 0
+rkomi.ru, 0
+rlp.de, 0
+rls.tv, 0
+rlu.ru, 0
+rmc.edu.my, 0
+rmis36.ru, 0
+rmu.edu, 0
+rmutsb.ac.th, 0
+rmutsv.ac.th, 0
+rnarod.su, 0
+rncb.ru, 0
+rn.gov.br, 0
+rnids.rs, 0
+rnp.br, 0
+rnz.de, 0
+roadoor.com, 0
+roadrules.com.ua, 0
+robfors.com, 0
+robodesk.biz, 0
+robofinist.ru, 0
+roboforex.ae, 0
+roboforex.co.id, 0
+roboforex.com, 0
+roboforex.ru, 0
+robom.ru, 0
+roboname.com, 0
+robot-trading.de, 0
+robrobinette.com, 0
+roche.com, 0
+roche.de, 0
+rock-chips.com, 0
+rocketbeans.tv, 0
+rocketchange.ru, 0
+rocket-exp.com, 0
+rockhard.de, 0
+roc.nl, 0
+rodina.tv, 0
+roebx.com, 0
+roederer.fr, 0
+rohan.co.uk, 0
+rohost.com, 0
+roidmi.com, 0
+roiland.com, 0
+roklen24.cz, 0
+rolecosplay.com, 0
+rolotec.ch, 0
+romana.ru, 0
+roman.com.tr, 0
+romanrm.net, 0
+romeo1052.net, 0
+romhacking.ru, 0
+romme-palast.de, 0
+ronasit.com, 0
+roncoo.com, 0
+ronc.ru, 0
+rongcapital.cn, 0
+ronghedai.com, 0
+rongkecloud.com, 0
+roninwear.com, 0
+root86.com, 0
+root9b.com, 0
+root.bg, 0
+root.cz, 0
+rootnerds.com, 0
+rootshell.be, 0
+roov.org, 0
+roowei.com, 0
+rooydad.org, 0
+rooyeshnews.com, 0
+ropestore.com.br, 0
+roposo.com, 0
+rosalab.ru, 0
+rosalinux.ru, 0
+rosan.com, 0
+rosario3.com, 0
+rosariocultura.gob.ar, 0
+rosario.gov.ar, 0
+roscadastr.com, 0
+roscosmos.ru, 0
+roseltorg.ru, 0
+rosen-group.com, 0
+rosinter.ru, 0
+rosix.ru, 0
+rosjb.com, 0
+roskazna.ru, 0
+roskonkursy.ru, 0
+rosminzdrav.ru, 0
+rosneft-lubricants.ru, 0
+rosrealt.ru, 0
+rosreestr.ru, 0
+rossia.org, 0
+rossiya-airlines.com, 0
+rossoverdi.com, 0
+rostec.ru, 0
+rosterbot.com, 0
+rostobr.ru, 0
+rostov-gorod.ru, 0
+rostrud.ru, 0
+roszavod.ru, 0
+rotfront.su, 0
+rot-weiss-erfurt.de, 0
+routdata.com, 0
+routemobile.com, 0
+routeradar.nl, 0
+routerclub.com, 0
+rouxa365.gr, 0
+royal-forest.org, 0
+royalkids.fr, 0
+royalquest.com, 0
+royalquest.ru, 0
+royalrobbins.com, 0
+royaninstitute.org, 0
+rozanehshop.ir, 0
+rozhlas.cz, 0
+rpg-city.de, 0
+rpicn.org, 0
+rpn.gov.ru, 0
+rp.ru, 0
+rpsofts.com, 0
+rqbao.com, 0
+rqnoj.cn, 0
+rrabbit.cc, 0
+rrc24.com, 0
+rrc.ru, 0
+rrjc.com, 0
+rscc.ru, 0
+rsc.org.uk, 0
+rsmu.ru, 0
+rsnet.ru, 0
+rs.ro, 0
+rsr-olymp.ru, 0
+rs.ru, 0
+rssi.ru, 0
+r-stahl.com, 0
+rst.com.pl, 0
+rstore.in, 0
+rtc.bt, 0
+rte.ie, 0
+rtfund.com, 0
+rt-mart.com.cn, 0
+rtn.ch, 0
+rtr.at, 0
+rt.ru, 0
+rt-thread.org, 0
+rtv.rs, 0
+rtvs.sk, 0
+ru.ac.bd, 0
+ruan8.com, 0
+ruanman.net, 0
+ruanmei.com, 0
+rubarius.ru, 0
+ruberi.ru, 0
+rubezh.ru, 0
+rubhoz.com, 0
+rubikscube.info, 0
+ru-board.com, 0
+rubot.ovh, 0
+ruby-china.org, 0
+ruby-doc.org, 0
+ruby-forum.com, 0
+rubygroupe.jp, 0
+rucountry.ru, 0
+rudnikov.com, 0
+rugion.ru, 0
+ruguoapp.com, 0
+ruijie.com.cn, 0
+ru.is, 0
+rukzakoff.ru, 0
+rula.net, 0
+rulaws.ru, 0
+rummycircle.com, 0
+runeapps.org, 0
+ru.net, 0
+runff.com, 0
+runivers.ru, 0
+runningquotient.com, 0
+ruonu.com, 0
+ruooo.com, 0
+rupar.puglia.it, 0
+rusanu.com, 0
+rusat.com, 0
+rusdosug.com, 0
+ruselectronics.ru, 0
+rusempire.ru, 0
+rusevik.ru, 0
+rusfolder.com, 0
+rusfont.ru, 0
+rushydro.ru, 0
+rushy.fr, 0
+rusnano.com, 0
+rusnavi.org, 0
+ruspo.ru, 0
+rusreinfo.ru, 0
+russian-belgium.be, 0
+russian.space, 0
+russkaja-ohota.ru, 0
+rust1.ru, 0
+rustelekom.net, 0
+rustest.ru, 0
+rusticae.es, 0
+rustorrents.info, 0
+rutracker.cr, 0
+rutracker.net, 0
+rutracker.org, 0
+ruvape.club, 0
+ruvr.ru, 0
+ruweber.ru, 0
+rvm.io, 0
+r-v-s.su, 0
+rvv.de, 0
+rwth-aachen.de, 0
+ryady.ru, 0
+rybbaby.com, 0
+rybnik.pl, 0
+rynek-rolny.pl, 0
+rz.com, 0
+rzd-bonus.ru, 0
+rzeszow.pl, 0
+rzgmu.ru, 0
+s1homes.com, 0
+s3d4.cn, 0
+s4yy.com, 0
+saafi.com, 0
+sabayon.org, 0
+sabbuy.com, 0
+sabinahuang.com, 0
+sac.net.cn, 0
+sac.org.ar, 0
+sad6sotok.ru, 0
+sadaf22.com, 0
+sadalestikls.lv, 0
+sadc.int, 0
+sadeco.ir, 0
+sadkomed.ru, 0
+sadlyunfriended.com, 0
+sadovnik.mobi, 0
+sa.edu.au, 0
+saemes.fr, 0
+saezlive.net, 0
+safariran.ir, 0
+safarme.com, 0
+safc.com, 0
+safe2choose.org, 0
+safebridge.net, 0
+safedog.cn, 0
+safegoldgroup.com, 0
+safelayer.com, 0
+safer-networking.org, 0
+saferoadplus.com, 0
+safetree.com.cn, 0
+safe-ws.eu, 0
+saguenay.ca, 0
+sahamyab.com, 0
+sa-help.com, 0
+sahra.org.za, 0
+saibaba.org, 0
+saicgmac.com, 0
+saic-gm.com, 0
+saicmaxus.com, 0
+sai.co.za, 0
+saihs.edu.tw, 0
+sailingworld.com, 0
+saimanet.kg, 0
+saimatelecom.kg, 0
+saintpaul.edu, 0
+saintsouth.net, 0
+saipujianshen.com, 0
+saitama-u.ac.jp, 0
+saitreport.ru, 0
+saix.net, 0
+sakhalinenergy.ru, 0
+sakhtafzarmag.com, 0
+sak.sk, 0
+sakura.ne.jp, 0
+salairemoyen.com, 0
+salam.sch.ir, 0
+salatigakota.go.id, 0
+saldocuentarut.com, 0
+saleshood.com, 0
+sallyq.com.tw, 0
+salmon.com, 0
+salomon.ro, 0
+salon24.pl, 0
+salongweb.com, 0
+salonwith.com, 0
+salto.bz, 0
+saltwatersportsman.com, 0
+saludnqn.gob.ar, 0
+salzburgerland.com, 0
+samaraintour.ru, 0
+sambaum.ch, 0
+samberi.com, 0
+samedi.de, 0
+samemes.com.br, 0
+samenblog.com, 0
+sameroom.io, 0
+samesound.ru, 0
+samgasu.ru, 0
+samgau.com, 0
+samgups.ru, 0
+samihost.com, 0
+samohodoff.ru, 0
+samo.ru, 0
+sa-mp-servers.com, 0
+samregion.ru, 0
+samsung-fun.ru, 0
+samuraj-cz.com, 0
+samvirkebryggeriet.no, 0
+sandai.net, 0
+sandbox-immobilienscout24.de, 0
+sanderstechnology.com, 0
+sandilands.info, 0
+sandino.net, 0
+sandpay.com.cn, 0
+sangfor.com, 0
+sangfor.com.cn, 0
+sangoma.com, 0
+sangon.com, 0
+sanistaal.com, 0
+sanjieke.cn, 0
+sankai.com, 0
+sanog.org, 0
+sanquan.com, 0
+sanstv.ru, 0
+santaclaus-embassy.com, 0
+santech.ru, 0
+santegidio.org, 0
+sanwen8.cn, 0
+sanwen.net, 0
+sapagroup.com, 0
+sapient.com, 0
+sapo.pt, 0
+sarasavi.lk, 0
+sardex.net, 0
+sarnovosti.ru, 0
+saro.me, 0
+sarrc.ru, 0
+sarvserver.com, 0
+sarvssl.com, 0
+sasac.gov.cn, 0
+saschina.org, 0
+sasek.tv, 0
+saske.sk, 0
+saskialund.de, 0
+sata.direct, 0
+satc.edu.br, 0
+sat-chit-ananda.org, 0
+satellogic.com, 0
+satel.pl, 0
+satisfaction-fnac.com, 0
+satka74.ru, 0
+satlyk.org, 0
+sat-online.ch, 0
+satterley.com.au, 0
+saturn-r.ru, 0
+satway.ru, 0
+saucontds.com, 0
+saudubna.ru, 0
+savage.ru, 0
+savechange.ru, 0
+savehrolling.com, 0
+saverglass.com, 0
+saveur.com, 0
+savevpn.cc, 0
+savjee.be, 0
+sa-voice.com, 0
+savoir-inutile.com, 0
+savvytime.com, 0
+sayamatravel.com, 0
+saystory.co.kr, 0
+sbar.com.cn, 0
+sbarjatiya.com, 0
+sb-dji.com, 0
+sberbankaktivno.ru, 0
+sberbank-ast.ru, 0
+sberbank.ua, 0
+sberinsurance-online.ru, 0
+sbk-studio.de, 0
+sbras.ru, 0
+sbrf.com.ua, 0
+sbroker.de, 0
+sbro.me, 0
+sbsart.com, 0
+sbs.edu.cn, 0
+sbsub.com, 0
+sbwml.cn, 0
+sbx-media.com, 0
+scala-ffb.de, 0
+scalebay.ru, 0
+scaleforum.ru, 0
+scalp-trading.com, 0
+scam.su, 0
+scanadu.com, 0
+scanbot.io, 0
+scand.com, 0
+scbn.org, 0
+scenedownloads.pw, 0
+scga.gov.cn, 0
+sc.gov.cn, 0
+schaeferhunde.de, 0
+schaffenburg.org, 0
+schaffner.com, 0
+schafkopf-palast.de, 0
+schieb.de, 0
+schlemann.com, 0
+schneider-electric.cn, 0
+schneider-electric.com, 0
+schneidersladen.de, 0
+schnick-schnack-schnuck.net, 0
+schokokeks.org, 0
+school2100.com, 0
+schooldeskus.com, 0
+school.nz, 0
+schoolofhaskell.com, 0
+schoolpal.cn, 0
+school-scout.de, 0
+schoolsoft.com, 0
+schornsteinfabrik.de, 0
+schule.de, 0
+schullv.de, 0
+schul-webportal.de, 0
+schwarzkopf.de, 0
+schweizmobil.ch, 0
+sci99.com, 0
+science-education.ru, 0
+science.ma, 0
+scienceontheweb.net, 0
+scientificrussia.ru, 0
+scientology.net, 0
+sci-hub.ac, 0
+sci-nnov.ru, 0
+scloud.ru, 0
+scmcc.com.cn, 0
+sc-nm.si, 0
+scoffoni.net, 0
+scoop.co.nz, 0
+scoop.it, 0
+scoop.ng, 0
+scorecloud.com, 0
+scotthelme.co.uk, 0
+scottlogic.com, 0
+scotweb.co.uk, 0
+scout.org.hk, 0
+scoutwiki.org, 0
+scrabble-word-finder.com, 0
+scrcu.com.cn, 0
+screen9.com, 0
+screenbid.com, 0
+screencastify.com, 0
+screenshotlink.ru, 0
+screenstore.tk, 0
+scriptbuy.ir, 0
+scriptmania.com, 0
+scriptux.ir, 0
+scrunch.com, 0
+scryde.ru, 0
+scsb.com.tw, 0
+scs-laboutique.com, 0
+scssoft.com, 0
+sctu.edu.cn, 0
+sctv.com, 0
+scubadiving.com, 0
+scu.edu.cn, 0
+scut.edu.cn, 0
+sdada.edu.cn, 0
+sde.ru, 0
+sdewt.com, 0
+sdf.org, 0
+sdi.bg, 0
+sdk.cn, 0
+sdl.com, 0
+sdln.net, 0
+sdnu.edu.cn, 0
+sdska.ru, 0
+sdsmt.edu, 0
+sdsz.com.cn, 0
+sd.ua, 0
+sdu.edu.cn, 0
+sdvor.com, 0
+sdwfhrss.gov.cn, 0
+sdw.org, 0
+sd-xbmc.org, 0
+sdyunban.com, 0
+se7enkills.net, 0
+se7en.ws, 0
+seacadets.org, 0
+sea.com.ua, 0
+seafile.com, 0
+sea-group.org, 0
+seamwork.com, 0
+searates.com, 0
+searchanise.com, 0
+searchevolution.com, 0
+search-for-it.com, 0
+searchmedia.ws, 0
+searchx.ch, 0
+searu.org, 0
+seasiaconsulting.com, 0
+seasone.ru, 0
+seaters.com, 0
+seattle.gov, 0
+seatwave.com, 0
+seatwave.de, 0
+seatwave.es, 0
+seatwave.ie, 0
+seatwave.it, 0
+seayo.com, 0
+sebastian.expert, 0
+sebraemg.com.br, 0
+sec.gob.mx, 0
+seckin.com.tr, 0
+seclub.org, 0
+second24.ru, 0
+secp.gov.pk, 0
+secpulse.com, 0
+secretescapes.com, 0
+secureauthservice.com, 0
+securehost.ir, 0
+securelink.be, 0
+securenowindia.com, 0
+secureordering.com, 0
+secureprofile.ru, 0
+securerwsoft.de, 0
+secureserver.net, 0
+securitasdirect.fr, 0
+securitythinkerz.com, 0
+secutix.com, 0
+secv.com, 0
+sec-wiki.com, 0
+secye.com, 0
+sedittyhair.com, 0
+sedmitza.ru, 0
+sedns.cn, 0
+seec.com.tw, 0
+seeed.cc, 0
+seeleit.com, 0
+seemallorca.com, 0
+seetv.tv, 0
+seeyon.com, 0
+seezislab.com, 0
+se.gov.br, 0
+seg-social.pt, 0
+segurancajato.com.br, 0
+seibert-media.net, 0
+seidal.com, 0
+seidensticker.com, 0
+seis.ac.cn, 0
+seiyon.net, 0
+sejdemse.net, 0
+sekorm.com, 0
+sektaschool.ru, 0
+seldatdirect.com, 0
+selectedrecs.com, 0
+selenic.com, 0
+selestial.com, 0
+selfhost.bz, 0
+selfhost.de, 0
+selfhost.eu, 0
+selfhtml.org, 0
+selfip.biz, 0
+selfip.com, 0
+selfip.net, 0
+selfip.org, 0
+selfmadetrip.com, 0
+selfnation.ch, 0
+selfrance.org, 0
+sellercloud.com, 0
+sellercloudlocal.com, 0
+sellercube.com, 0
+sellerlabs.com, 0
+sellermania.com, 0
+seller-online.com, 0
+sellfile.ir, 0
+selpics.com, 0
+selzir.com, 0
+sem-bw.org, 0
+semesteratsea.org, 0
+semiaccurate.com, 0
+semicvetic.com, 0
+semilab.hu, 0
+seminuevos.com, 0
+semmel.de, 0
+sem-tem.ru, 0
+senado.gov.br, 0
+senai.br, 0
+sendpulse.com, 0
+sendsay.ru, 0
+sendsms.az, 0
+sendyit.com, 0
+sengled.com, 0
+sense.com, 0
+sensorika.uz, 0
+sensorytechnologies.com, 0
+sentres.com, 0
+seodollars.com, 0
+seofangfa.com, 0
+seolib.ru, 0
+seomon.com, 0
+seo-protools.com, 0
+seopult.pro, 0
+seopult.ru, 0
+seo-summary.de, 0
+seoul.co.kr, 0
+seo-united.de, 0
+seowhy.com, 0
+sepidwebhost.com, 0
+septgame.com, 0
+seresco.es, 0
+serg-casper.ru, 0
+sergeisokolov.com, 0
+serifgungor.com, 0
+serj.ws, 0
+sertification.org, 0
+servebbs.com, 0
+servebeer.com, 0
+serveftp.com, 0
+serveftp.net, 0
+serveftp.org, 0
+servegame.com, 0
+servehttp.com, 0
+servel.cl, 0
+serveminecraft.net, 0
+server4u.cz, 0
+server4you.de, 0
+server4you.net, 0
+serverdale.com, 0
+server-he.de, 0
+server.ir, 0
+serveriran.net, 0
+server-it.net, 0
+servernesia.com, 0
+servernews.ru, 0
+serveromat.com, 0
+serverprofi24.com, 0
+serverprofi24.de, 0
+serverprofi24.net, 0
+server-sponsoring.com, 0
+service-schematics.ru, 0
+servispckupka.cz, 0
+servisvk.ru, 0
+servyou.com.cn, 0
+sestosg.net, 0
+setca.org, 0
+setia.pl, 0
+setmore.com, 0
+setonhill.edu, 0
+setti.info, 0
+seu.edu.cn, 0
+se-unsa.org, 0
+sevaft.cn, 0
+sevastopol.press, 0
+sev-eishockey.de, 0
+seven-sky.net, 0
+severstalgroup.com, 0
+sevidi.ru, 0
+sevpolitforum.ru, 0
+sevsu.ru, 0
+sevt.cz, 0
+sexacg.com, 0
+sexchats.ru, 0
+sexhotgames.com, 0
+sexkompas.me, 0
+sexlikereal.com, 0
+seznamzbozi.cz, 0
+sfacg.com, 0
+sf-addon.com, 0
+sfe8.com, 0
+sfedu.ru, 0
+sf-express.com, 0
+sff.gr, 0
+sfgame.cz, 0
+sfgame.de, 0
+sfgame.es, 0
+sfgame.fr, 0
+sfgame.gr, 0
+sfgame.hu, 0
+sfgame.it, 0
+sfgame.net, 0
+sfgame.pl, 0
+sfgame.ru, 0
+sfgame.sk, 0
+sfgame.us, 0
+sfgame.web.tr, 0
+sf-helper.com, 0
+sflep.com, 0
+sf-misis.ru, 0
+sformat.ru, 0
+sfs.gov.ua, 0
+sfuh.tk, 0
+sfu-kras.ru, 0
+sfworldwide.com, 0
+sfy.ru, 0
+sg-autorepondeur.com, 0
+sgcc.com.cn, 0
+sgcc.uz, 0
+sgd.de, 0
+sgeb.bg, 0
+sglgroup.com, 0
+sgmw.com.cn, 0
+sgroshi.com.ua, 0
+sguo.com, 0
+sg-video.com, 0
+sgyy.com.cn, 0
+shab.ch, 0
+shade3d.jp, 0
+shadeyouvpn.com, 0
+shadowcraft.ru, 0
+shadowfly.org, 0
+shadowpad.jp, 0
+shadowsky.site, 0
+shadowsock.club, 0
+shadowsocks.im, 0
+shahinsoft.ir, 0
+shahroodut.ac.ir, 0
+shairart.com, 0
+shallmap.com, 0
+shamana.co, 0
+shanbay.com, 0
+shandongair.com.cn, 0
+shanghaidisneyresort.com, 0
+shanghai-electric.com, 0
+shanghaitech.edu.cn, 0
+shantou.gov.cn, 0
+shaogood.com, 0
+shaozi.info, 0
+shapingrain.com, 0
+sharaland.ru, 0
+sharcnet.ca, 0
+shardsonline.com, 0
+sharedbox.com, 0
+shareinstock.com, 0
+shareitforpcdl.com, 0
+sharengo.it, 0
+sharepoint.cn, 0
+sharesdk.cn, 0
+sharklasers.com, 0
+shatel.ir, 0
+shatelland.com, 0
+shatura.com, 0
+shatura.ru, 0
+shayuvpnn.com, 0
+shdf.gov.cn, 0
+shd.ru, 0
+shebaoonline.com, 0
+sheedantivirus.ir, 0
+sheencity.com, 0
+shengcaijinrong.com, 0
+shengchifoundation.org, 0
+shengjingvip.com, 0
+shengri.cn, 0
+shengyeji.com, 0
+shenzhan.in, 0
+shenzhenware.com, 0
+shenzhong.net, 0
+sherbrooke.qc.ca, 0
+sheridanc.on.ca, 0
+sherlock-holm.es, 0
+sherweb.com, 0
+shetabha.com, 0
+shgb.gov.cn, 0
+shgcx.org, 0
+sh.gov.cn, 0
+shhyolkovo.ru, 0
+shiep.edu.cn, 0
+shiftelearning.com, 0
+shiftinglight.com, 0
+shiftphones.com, 0
+shikimori.org, 0
+shimadzu.com.cn, 0
+shina.ru, 0
+shineon.cc, 0
+shinezone.com, 0
+shintorg48.ru, 0
+shippable.com, 0
+shipxy.com, 0
+shiqichan.com, 0
+shiqichuban.com, 0
+shirazwebhost.com, 0
+shirazwebhost.ir, 0
+shitou.com, 0
+shlyahten.ru, 0
+shmarathon.com, 0
+shmh.gov.cn, 0
+shmtu.edu.cn, 0
+shmu.sk, 0
+shockmodels.su, 0
+shoe.org, 0
+shoessale.com.ua, 0
+shomaresaz.ir, 0
+shom.fr, 0
+shooshmall.com, 0
+shooter.cn, 0
+shoot-n-joy.ru, 0
+shopandroid.com, 0
+shop-apotheke.com, 0
+shopbuilder.cz, 0
+shopbuilder.hr, 0
+shopbuilder.ro, 0
+shopbuilder.sk, 0
+shopcar.ir, 0
+shopdutyfree.eu, 0
+shop.hu, 0
+shopinamerica.am, 0
+shoplex.com, 0
+shop-lining.com, 0
+shop-logistics.ru, 0
+shopmania.bg, 0
+shopmania.biz, 0
+shopmania.com, 0
+shopmania.com.br, 0
+shopmania.com.mx, 0
+shopmania.co.uk, 0
+shopmania.co.za, 0
+shopmania.de, 0
+shopmania.es, 0
+shopmania.fr, 0
+shopmania.hr, 0
+shopmania.hu, 0
+shopmania.in, 0
+shopmania.it, 0
+shopmania.nl, 0
+shopmania.pl, 0
+shopmania.pt, 0
+shopmania.ro, 0
+shopmania.rs, 0
+shopmaster2.ru, 0
+shopnctest.com, 0
+shopozz.ru, 0
+shoppal.in, 0
+shoptimize.in, 0
+shop.unas.hu, 0
+shopvote.de, 0
+shorten.id, 0
+short.id, 0
+shost.ca, 0
+shoujichahao.com, 0
+shoujiduoduo.com, 0
+shouqianba.com, 0
+shouqu.me, 0
+shoushang.com, 0
+shouyeren.org, 0
+showapi.com, 0
+showjet.ru, 0
+showpark.info, 0
+showradyo.com.tr, 0
+shox.hu, 0
+shpt188.com, 0
+shrinktheweb.com, 0
+shtorm.com, 0
+shtrih-m.ru, 0
+shtukishop.ru, 0
+shuaigay.top, 0
+shuax.com, 0
+shufe.edu.cn, 0
+shunde.gov.cn, 0
+shunwang.com, 0
+shunxingkeji.com, 0
+shupl.edu.cn, 0
+shurup.net.ua, 0
+shuxuejia.com, 0
+shwebook.com, 0
+shwilling.com, 0
+shyaway.com, 0
+shyling.com, 0
+siamchart.com, 0
+siaranku.com, 0
+sia.ru, 0
+siasun.com, 0
+siava.ru, 0
+siberianet.ru, 0
+sibername.com, 0
+sibintek.ru, 0
+sibpsa.ru, 0
+sibsau.ru, 0
+sibstrin.ru, 0
+sibsutis.ru, 0
+sibvaleo.tv, 0
+sicau.edu.cn, 0
+sickoo.com, 0
+sicofi.com.mx, 0
+sidechef.com, 0
+sidex.ru, 0
+sidsavara.com, 0
+siedlce.pl, 0
+siedle.de, 0
+sielok.hu, 0
+sigaretnik.ru, 0
+sigfox.com, 0
+sigmabeauty.com, 0
+sigmasport.com, 0
+signfiles.com, 0
+sigsiu.net, 0
+sihaidiaoyu.com, 0
+sikoauktioner.se, 0
+silagames.com, 0
+silamp.it, 0
+silextimes.com, 0
+silhouette-ac.com, 0
+silijiren.info, 0
+silk.co, 0
+silkenowak.de, 0
+sil.org.pg, 0
+siluyuncang.com, 0
+silverspoons.ru, 0
+sim-auf-reisen.de, 0
+simm.ac.cn, 0
+simpatias.org, 0
+simple-aja.info, 0
+simplefx.com, 0
+simplemachines.ru, 0
+simplementegenial.cc, 0
+simpleminecraft.ru, 0
+simplenetkeeper.com, 0
+simplesite.com, 0
+simpleso.gr, 0
+simple-talk.com, 0
+simplewebrtc.com, 0
+simplix.info, 0
+simplix.ks.ua, 0
+simplytest.me, 0
+simpress.com.br, 0
+simuwang.com, 0
+sinaapp.com, 0
+sina.com.cn, 0
+sinam.net, 0
+sinchew.com.my, 0
+sindiconet.com.br, 0
+sinerji.gen.tr, 0
+sinica.edu.tw, 0
+sininonton.com, 0
+sinochem.com, 0
+sinofsx.com, 0
+sinonimus.ru, 0
+sinopec.com, 0
+sinopharm.com, 0
+sinosig.com, 0
+sinosoft.info, 0
+sintagespareas.gr, 0
+sintek-nn.ru, 0
+sinyi.com.tw, 0
+sioeye.cn, 0
+sioeye.com, 0
+sipac.gov.cn, 0
+sipo.gov.cn, 0
+sipsolutions.net, 0
+sipwise.com, 0
+sirvoy.com, 0
+sisalu.com.br, 0
+si-shell.net, 0
+sistel.es, 0
+sistemagorod.ru, 0
+sistemdestekuzmani.com, 0
+sisustusweb.ee, 0
+site40.net, 0
+site88.net, 0
+siteclinic.ru, 0
+siteencore.com, 0
+siteguarding.com, 0
+sitelement.sk, 0
+siterobot.com, 0
+site.ua, 0
+sito.ir, 0
+situstarget.com, 0
+siwatcher.ru, 0
+siwe.com.cn, 0
+sixsenses.com, 0
+sixtea.com, 0
+sjcamhd.com, 0
+sjc.edu.hk, 0
+sjedu.cn, 0
+sjtu.cn, 0
+sjtu.edu.cn, 0
+sjz.io, 0
+sk3w.se, 0
+skalnik.pl, 0
+skat-palast.de, 0
+skat-ups.ru, 0
+skauting.cz, 0
+skbank.com.tw, 0
+skechers.cn, 0
+sketchengine.co.uk, 0
+sketchpark.ru, 0
+skierniewice.pl, 0
+skifmusic.ru, 0
+skinak.ir, 0
+skincrates.com, 0
+skinpay.com, 0
+skinrenewal.co.za, 0
+skiosvetimany.cz, 0
+skiprefer.com, 0
+sk.kz, 0
+skn1.com, 0
+sknt.ru, 0
+skobbler.com, 0
+skobeeff.ru, 0
+skoda.com.cn, 0
+skoda.lv, 0
+skokie68.org, 0
+skoltech.ru, 0
+skr.de, 0
+skritter.com, 0
+skrivanek.cz, 0
+sktelecom.com, 0
+skuonline.ru, 0
+sky4buy.com, 0
+skyany.com, 0
+skybuy.ru, 0
+skycenter.aero, 0
+skydreamer.fr, 0
+skydreamer.info, 0
+skyf-host.com, 0
+skyfox.org, 0
+skygear.ru, 0
+skyinsurance.co.uk, 0
+skyluxtravel.com, 0
+skynetonline.solutions, 0
+skyocean.com, 0
+skyprep.com, 0
+skyrim-online.com, 0
+skytells.net, 0
+skywayinvestgroup.com, 0
+slack.com, 0
+slack-files.com, 0
+slack-imgs.com, 0
+slack-redir.net, 0
+slacky.eu, 0
+slatarow.de, 0
+slaters.co.uk, 0
+slav-dom.ru, 0
+slavia.by, 0
+slavyansk2.ru, 0
+slavyanskaya-kultura.ru, 0
+sldc.eu, 0
+sleep-calculator.com, 0
+slevadne.cz, 0
+slevhouse.cz, 0
+slicedinvoices.com, 0
+slidego.com, 0
+slide-life.ru, 0
+slinuxer.com, 0
+slio.cn, 0
+slitheriogameplay.com, 0
+slotboss.co.uk, 0
+slotboss.se, 0
+sloty-besplatno.net, 0
+slovodel.com, 0
+slunecnice.cz, 0
+slv.cz, 0
+small.kz, 0
+smarket.net.cn, 0
+smarp.com, 0
+smarpshare.com, 0
+smartafisha.ru, 0
+smartapps.fr, 0
+smartdollar.com, 0
+smartdot.com, 0
+smartdrugsforcollege.com, 0
+smarterdeal.co.uk, 0
+smartflowsheet.com, 0
+smarthosts.org, 0
+smarthoverboarder.fr, 0
+smarthoverboarder.it, 0
+smartisan.com, 0
+smartjobboard.com, 0
+smartlab.co.za, 0
+smartland.am, 0
+smartlog.jp, 0
+smartmedia.ws, 0
+smartmetrics.co, 0
+smart.net.ly, 0
+smartnweb.de, 0
+smartserials.com, 0
+smarttbot.com, 0
+smarty.cz, 0
+smartytoys.ru, 0
+smash.com, 0
+sma.so, 0
+smasurf.com, 0
+smath.info, 0
+sm.de, 0
+smec-cn.com, 0
+smed.ru, 0
+smetnoedelo.ru, 0
+smeup.com, 0
+sm.gov.cn, 0
+sm.gov.ua, 0
+smh.re, 0
+smi2.ru, 0
+sm-komandor.ru, 0
+smmplanner.com, 0
+smokepack.ru, 0
+smokingirl.org, 0
+smoothscroll.net, 0
+smotreshka.tv, 0
+smotri.com, 0
+smotriuchis.ru, 0
+smow.de, 0
+smsbrana.cz, 0
+smsdengi.com, 0
+smshare.fr, 0
+smshosting.it, 0
+smsmoney.ee, 0
+smspinigai.lt, 0
+sms-track.ru, 0
+smstronic.com, 0
+smter.ru, 0
+sm.ua, 0
+smuc.ac.kr, 0
+smvdu.ac.in, 0
+smxe.cn, 0
+smydh.cn, 0
+smyl.es, 0
+snacksbazzar.com, 0
+snacktools.net, 0
+snaga.si, 0
+snap2sex.nl, 0
+snapapp.com, 0
+snapchatonlineloginz.com, 0
+snapgene.com, 0
+snappii.com, 0
+snh48.com, 0
+snips.ai, 0
+snoska.ru, 0
+snowsports.org, 0
+snowtrails.com, 0
+snpmarket.com, 0
+snptc.com, 0
+snrt.ma, 0
+snssdk.com, 0
+snu.ac.kr, 0
+snugr.be, 0
+snv.sk, 0
+soargames.com, 0
+sobi.pro, 0
+sobs.com.au, 0
+sobt5.org, 0
+sobug.com, 0
+soccer-plaza.jp, 0
+sociafluence.com, 0
+social-health.net, 0
+social-net.me, 0
+socialquantum.ru, 0
+socialssap.org, 0
+socialsweethearts.de, 0
+socialtheater.com, 0
+socialtools.ru, 0
+social-touch.com, 0
+societe.com, 0
+socionet.ru, 0
+so.com, 0
+sodrk.ru, 0
+soe.com.ua, 0
+sofa-framework.org, 0
+sofotos.org, 0
+softconf.com, 0
+softether.net, 0
+softkey.ru, 0
+softline.com.pl, 0
+softlinegroup.com, 0
+softmath.com, 0
+softonit.ru, 0
+softros.com, 0
+softserveinc.com, 0
+softwareschmiede.org, 0
+softwaresystems.com, 0
+software.travel, 0
+sog-ict.nl, 0
+sogo.com.tw, 0
+sogou.com, 0
+so.gov.pl, 0
+sohucs.com, 0
+soireejumpin.fr, 0
+soiro.ru, 0
+sojson.com, 0
+sojump.cn, 0
+sojump.com, 0
+sojump.hk, 0
+sokka.cn, 0
+sokolniki.com, 0
+sokolov.ru, 0
+soku.com, 0
+solarcentury.com, 0
+solarianprogrammer.com, 0
+solarmanpv.com, 0
+solax-portal.com, 0
+solestruck.com, 0
+solidapps.co.uk, 0
+solidot.org, 0
+solid-profit.com, 0
+soloaffitti.it, 0
+solonetwork.com.br, 0
+solvege.net, 0
+solvvy.com, 0
+somebox.ru, 0
+somitel.pt, 0
+somonair.com, 0
+sonapresse.com, 0
+songo.com, 0
+sonikelf.ru, 0
+sonnenstaatland.com, 0
+soonnet.org, 0
+soorati.com, 0
+soorensystem.ir, 0
+sopot.pl, 0
+soprasteria.com, 0
+soroki.com, 0
+sorucevapla.com, 0
+sorz.org, 0
+sosista.com, 0
+sosobta.cn, 0
+sosobtc.com, 0
+sosowifi.com, 0
+sos.pl, 0
+sostronk.com, 0
+sotel.de, 0
+soti.net, 0
+sotis-online.ru, 0
+sotovikmobile.ru, 0
+soujuw.com, 0
+soujuw.net, 0
+soulkeepers.eu, 0
+soundcloudgroups.com, 0
+soundcream.net, 0
+soundgasm.net, 0
+so-ups.ru, 0
+sourcefabric.org, 0
+sourceguardian.ir, 0
+soushiti.com, 0
+southernexposure.com, 0
+southernfund.com, 0
+southmoney.com, 0
+southplainscollege.edu, 0
+souyidai.com, 0
+souz-m.ru, 0
+sov5.com, 0
+sovkusom.ru, 0
+sovtime.ru, 0
+soyoung.com, 0
+sp2all.ru, 0
+sp2.org, 0
+spacebagel.com, 0
+spacedock.info, 0
+spaceinvasion.info, 0
+spacem.cn, 0
+spaceorigin.fr, 0
+spaces.ru, 0
+spaceweb.hu, 0
+spac.me, 0
+spagobi.org, 0
+spagoworld.org, 0
+spanishprograms.com, 0
+spankwiki.org, 0
+spankwirecams.com, 0
+spanwords.info, 0
+spar.ch, 0
+sparcs.org, 0
+spar-dich-schlau.de, 0
+sparinc.com, 0
+sparkasse-landshut.de, 0
+spark.ru, 0
+sparrowsms.com, 0
+spawtz.com, 0
+spaziorc.net, 0
+spbappo.ru, 0
+spbgasu.ru, 0
+spbgut.ru, 0
+spbstu.ru, 0
+spb.su, 0
+spbu.ru, 0
+spbvedomosti.ru, 0
+spca.org.hk, 0
+spddl.de, 0
+spdns.de, 0
+spdns.org, 0
+speak-up.com, 0
+specialist.ru, 0
+spec-komp.com, 0
+specregion.ru, 0
+speech-guru.com, 0
+speechpad.pw, 0
+speechpad.ru, 0
+speedify.com, 0
+speedinvoice3.net, 0
+speedx.co, 0
+speedyshare.com, 0
+speeed.cn, 0
+speiyou.cn, 0
+speiyou.com, 0
+sperasoft.com, 0
+spesifikasiharga.com, 0
+spfu.gov.ua, 0
+sp.gov.br, 0
+sphero.com, 0
+spi0n.com, 0
+spigit.com, 0
+spihk.com, 0
+spikcompany.ru, 0
+spiketime.de, 0
+spinbackup.com, 0
+spir.fr, 0
+spitalspiridon.ro, 0
+spi.uz, 0
+spk.ru, 0
+splatterladder.com, 0
+splento.com, 0
+spl.info, 0
+splio.com, 0
+splitmetrics.com, 0
+splius.lt, 0
+spoilertime.com, 0
+spolo.org, 0
+spongepowered.org, 0
+sponsorpay.com, 0
+sportbedarf.de, 0
+sportbro.cc, 0
+sportcity74.ru, 0
+sportdiver.com, 0
+sportfishingmag.com, 0
+sportfort.ru, 0
+sporthit.ru, 0
+sportourism.id, 0
+sportovnidum.cz, 0
+sportovnivozy.cz, 0
+sportplayer.io, 0
+sportrider.com, 0
+sport-sante.fr, 0
+sportsbet.com.au, 0
+sportsbetting.ag, 0
+sportsbikeshop.co.uk, 0
+sportsboom.tv, 0
+sportse.ru, 0
+sportspar.de, 0
+sports.ru, 0
+sportvision.rs, 0
+spot.im, 0
+spotsoon.com, 0
+sprashivai.ru, 0
+spravka333333.ru, 0
+spravka-mdv.ru, 0
+spravkatver.ru, 0
+spray.pk, 0
+spring96.org, 0
+springstreetads.com, 0
+sprintground.com, 0
+sprintinet.ru, 0
+sprit.org, 0
+sprucemeadows.com, 0
+spruethmagers.com, 0
+sprut.ru, 0
+spsdmasna.cz, 0
+spsd.net, 0
+spsejecna.cz, 0
+spsostrov.cz, 0
+spsr.ru, 0
+spurssh.com, 0
+sputnikipogrom.com, 0
+spybot.info, 0
+spyshop.pl, 0
+spyzer.ru, 0
+sqli.com, 0
+sqlitebrowser.org, 0
+sqlservercentral.com, 0
+s-quad.com, 0
+squick.me, 0
+squidge.org, 0
+squiresgardencentres.co.uk, 0
+squirt.org, 0
+squnity.com, 0
+sqybus.fr, 0
+sram.com, 0
+srb2.org, 0
+srcf.net, 0
+srgame.cc, 0
+srh-hochschule-berlin.de, 0
+srlabs.de, 0
+srovnanicen.cz, 0
+srt.gob.ar, 0
+srvgame.ru, 0
+sscat.cn, 0
+ssdax.com, 0
+ssd-life.com, 0
+ssd-life.ru, 0
+sse.com.cn, 0
+sseinfo.com, 0
+ssh91.net, 0
+sshida.com, 0
+s-shot.ru, 0
+ssig33.com, 0
+ssjoy.org, 0
+ssjsq.net, 0
+sskaje.me, 0
+ssl-brn.de, 0
+ssllabs.com, 0
+sslpost.com, 0
+sslunblocker.com, 0
+ssm.gob.mx, 0
+ssmu.ru, 0
+ssn.gob.ar, 0
+ssorz.com, 0
+sspaas.com, 0
+sspanda.com, 0
+ssrj.com, 0
+ssr-russia.ru, 0
+ssspeed.net, 0
+sstl.co.uk, 0
+ssuu.org, 0
+ssvpn.vip, 0
+ssw.com.au, 0
+ss.wtf, 0
+stac.co.ao, 0
+stackage.org, 0
+stacktile.io, 0
+stadium.ru, 0
+stadtfeuerwehr-weiz.at, 0
+stadt-helmstedt.de, 0
+stadtmobil.de, 0
+stadttheater-giessen.de, 0
+staffpoint.fi, 0
+staforceteam.ru, 0
+stagend.com, 0
+stahl.de, 0
+stairways.com, 0
+stalcraft.ru, 0
+stalker.land, 0
+stalker-shop.ru, 0
+stamboomforum.nl, 0
+stample.co, 0
+stampsy.com, 0
+standa.lt, 0
+standardfacile.com, 0
+stanford.edu, 0
+stanfy.com, 0
+stanmus.ru, 0
+staradworld.com, 0
+staramba.com, 0
+staraya-moneta.ru, 0
+starchefs.com, 0
+star-citizens.de, 0
+starduster.me, 0
+starfandom.com, 0
+star-force.com, 0
+stargard.pl, 0
+stargatesys.com, 0
+starislandgames.com, 0
+starleaf.com, 0
+starline-online.ru, 0
+starlink.ru, 0
+starmediafilm.com, 0
+stars-cloud.com, 0
+starship.xyz, 0
+startcomca.com, 0
+startcom.org, 0
+startdedicated.com, 0
+startdedicated.de, 0
+startdedicated.net, 0
+startsearch.org, 0
+startsmile.ru, 0
+startssl.com, 0
+startss.today, 0
+startus.cc, 0
+state.ak.us, 0
+state-of-mind.de, 0
+state.or.us, 0
+statfuse.com, 0
+statgrad.org, 0
+status301.net, 0
+statusmoto.ru, 0
+stat.uz, 0
+staubli.com, 0
+stavregion.ru, 0
+stayfriends.de, 0
+stayge.net, 0
+stays.io, 0
+stb.com.mk, 0
+st-clair.net, 0
+stcn.com, 0
+stealthy.co, 0
+steam.az, 0
+steambroker.com, 0
+steammoney.com, 0
+steamrepcn.com, 0
+steam-trader.com, 0
+steelalborz.com, 0
+steelorse.com, 0
+stefanini.com, 0
+steinberg.de, 0
+steinberg.fr, 0
+steinberg.net, 0
+steinigke.de, 0
+stelderverspeek.com, 0
+stellenticket.de, 0
+stepan.com, 0
+stepclub.ru, 0
+stephencleary.com, 0
+stephenwebster.com, 0
+sterlinginfosystems.com, 0
+stetsom.com.br, 0
+stevecookhealth.com, 0
+stevejenkins.com, 0
+stewardship.com, 0
+stfalcon.com, 0
+stforex.com, 0
+sth.ac.at, 0
+stickyadstv.com, 0
+stiesia.ac.id, 0
+stirileprotv.ro, 0
+stiripesurse.ro, 0
+stis.ac.id, 0
+st-link.com.cn, 0
+stlouisfed.org, 0
+stluke.com.ph, 0
+sto.cc, 0
+stockfuse.com, 0
+stockinthechannel.com, 0
+stockinthechannel.co.uk, 0
+sto.cn, 0
+stolle.ru, 0
+stoloto.ru, 0
+stomatorg.ru, 0
+stom.ru, 0
+storeapps.org, 0
+storemags.com, 0
+storii.com, 0
+stormss.us, 0
+stormway.ru, 0
+stor.re, 0
+storymixmedia.com, 0
+storyworth.com, 0
+stradeanas.it, 0
+strafbuch.de, 0
+strangled.net, 0
+strategya.com, 0
+strategyanalytics.com, 0
+strategy-p.co.jp, 0
+stratoserver.net, 0
+stray.love, 0
+str.by, 0
+streamatehelp.com, 0
+streamatemodels.com, 0
+streamcatcher.de, 0
+streamcraft.net, 0
+streamenergybilling.com, 0
+streamify.me, 0
+streamingtank.com, 0
+streamjar.tv, 0
+streampub.net, 0
+streeetchypants.com, 0
+streetbank.com, 0
+streetmeatasia.com, 0
+strelkacard.ru, 0
+stressfree.pl, 0
+strmama.ru, 0
+stroeerdigitalpublishing.de, 0
+stroi-baza.ru, 0
+stroi-ka.by, 0
+stroitelstvosovety.ru, 0
+strollup.in, 0
+stronazen.pl, 0
+stronger.se, 0
+stroygigant.ru, 0
+stroylandiya.ru, 0
+stroysvoimirukami.ru, 0
+strunz.com, 0
+sts-niendorf.de, 0
+studierenplus.de, 0
+studio-fashion.com, 0
+studiorent.ru, 0
+studio-seo.org, 0
+studybay.com, 0
+studystays.com.au, 0
+stu.edu.vn, 0
+stuffio.com, 0
+stuq.org, 0
+sturmtools.ru, 0
+stusz.com, 0
+stuttcars.com, 0
+stylingandroid.com, 0
+stylished.de, 0
+su0.ru, 0
+suanfazu.com, 0
+subfactory.fr, 0
+sublinet.com, 0
+submail.cn, 0
+subnets.ru, 0
+suche6.ch, 0
+sudact.ru, 0
+suda.edu.cn, 0
+sudanzip.com, 0
+sudmed.ru, 0
+sudoku-knacker.de, 0
+suedostschweiz.ch, 0
+su.edu, 0
+sues.edu.cn, 0
+sufficientvelocity.com, 0
+suffieldacademy.org, 0
+sugon.com, 0
+suitaweb.net, 0
+suiyueyule.com, 0
+suketiawan.com, 0
+sukl.sk, 0
+sulinet.hu, 0
+sulrevendas.com.br, 0
+sumanet.cz, 0
+sumaou.com, 0
+sumavision.com, 0
+sumdu.edu.ua, 0
+summa-prefis.com, 0
+sumochka.com, 0
+sumpay.cn, 0
+sumtel.ru, 0
+sunagesh.com, 0
+sunallies.com, 0
+sunbox.cc, 0
+suncco.com, 0
+sundaynews.co.zw, 0
+sundray.com.cn, 0
+sundukup.ru, 0
+sunfar.com.tw, 0
+suninfo.com, 0
+suning.cn, 0
+suning.com, 0
+suninian.com, 0
+sunkei.edu.hk, 0
+sunland.org.cn, 0
+sunlands.com, 0
+sunmnet.com, 0
+sunny-dessous.de, 0
+sunnyos.com, 0
+sunrav.ru, 0
+sunrise74.com, 0
+sunshine-live.de, 0
+sunskypars.ir, 0
+suntech-power.com, 0
+suntektech.com, 0
+sunwenqi.cn, 0
+suonuo.net, 0
+supaprice.co.uk, 0
+supardi.net, 0
+supbiotech.fr, 0
+supcon.com, 0
+superb.net, 0
+superbotanik.net, 0
+super-cena.rs, 0
+superguiaargentina.com.ar, 0
+superhosting.cz, 0
+supermagnete.at, 0
+supermagnete.ch, 0
+supermagnete.de, 0
+supermagnete.es, 0
+supermagnete.fr, 0
+supermagnete.it, 0
+supermap.com, 0
+supernano.com, 0
+superpedestrian.com, 0
+superphysique.org, 0
+supersoused.cz, 0
+supersyntages.gr, 0
+supertelahd.com, 0
+supertransporte.gov.co, 0
+supervia.com.br, 0
+super-warez.net, 0
+superweibu.com, 0
+supl.biz, 0
+suplementosbrasil.org, 0
+suppore.cn, 0
+sura.ru, 0
+surbtc.com, 0
+surebak.com, 0
+sureserver.com, 0
+suresupport.com, 0
+surfingbird.com, 0
+surfingbird.ru, 0
+surlybrewing.com, 0
+surong360.com, 0
+suroot.com, 0
+surpk.ru, 0
+surplussales.com, 0
+surprizim.net, 0
+surtime.com, 0
+surveylegend.com, 0
+survivaldub.com, 0
+sushishop.ru, 0
+sustc.edu.cn, 0
+sust.edu.cn, 0
+susu.ru, 0
+sut.ru, 0
+suuntoshop.ir, 0
+suwalki.pl, 0
+suwon.ac.kr, 0
+suws.org.uk, 0
+suxilog.com, 0
+suzlon.com, 0
+suzuki-china.com, 0
+sv98.de, 0
+svadbagolik.ru, 0
+svadebka.ws, 0
+svarecky-obchod.cz, 0
+svarforum.cz, 0
+svastour.ru, 0
+svcc.edu, 0
+sv.co, 0
+sven.de, 0
+svenskenergi.se, 0
+sverbihina.com, 0
+svetofor.info, 0
+svetosila.ru, 0
+s-vfu.ru, 0
+svgc.ru, 0
+svicenter.com, 0
+svijet-medija.hr, 0
+svirel.org, 0
+svlfg.de, 0
+svmed.spb.ru, 0
+svobodni.cz, 0
+svoy-golos.ru, 0
+svp-team.com, 0
+svsbb.sk, 0
+svyaznoy.ru, 0
+svyturioarena.lt, 0
+svzt.ru, 0
+swagbucks.com, 0
+swagelok.com.cn, 0
+swamiji.tv, 0
+swannetoscar.com, 0
+swan.sk, 0
+swcszx.com, 0
+sweatband.com, 0
+sweek.com, 0
+sweet211.ru, 0
+swfmax.com, 0
+swfr.de, 0
+swidnik.pl, 0
+swiftirc.net, 0
+swiftzer.net, 0
+swi.mx, 0
+swis.cn, 0
+swissgolden.com, 0
+swissmedical.com.ar, 0
+swjoy.com, 0
+swjtu.edu.cn, 0
+swoop.com, 0
+swpu.edu.cn, 0
+sws.cz, 0
+swsu.org, 0
+swsu.ru, 0
+swu.edu.cn, 0
+swufe.edu.cn, 0
+swust.edu.cn, 0
+sxcert.com, 0
+sxchfz.com, 0
+sxe-injected.com, 0
+sxrczx.com, 0
+syau.edu.cn, 0
+sydneynewyearseve.com, 0
+sygic.com, 0
+sygnity.pl, 0
+syischina.com, 0
+symmetry.com, 0
+symphonic-net.com, 0
+symptoma.com, 0
+synchronkartei.de, 0
+synchronoss.com, 0
+syncis.com, 0
+syncthing.net, 0
+sync-video.com, 0
+syndriver.com, 0
+synergize.co, 0
+synevo.by, 0
+synlab.org.cn, 0
+synology.me, 0
+syronex.com, 0
+sysadmin.ru, 0
+sys-advisor.com, 0
+sys-con.com, 0
+sysfx.com, 0
+syslinux.org, 0
+syssel.net, 0
+systech.hu, 0
+systec.ru, 0
+systena.co.jp, 0
+systextil.com.br, 0
+systtech.ru, 0
+systutorials.com, 0
+sysucc.org.cn, 0
+sysu.edu.cn, 0
+sytes.net, 0
+syure.com, 0
+sz12333.gov.cn, 0
+sz189.cn, 0
+szaic.gov.cn, 0
+szamlakozpont.hu, 0
+szcredit.com.cn, 0
+szcredit.org.cn, 0
+szeged.hu, 0
+szft.gov.cn, 0
+szgaj.cn, 0
+szgalaxy.com, 0
+sz.gov.cn, 0
+szgs.gov.cn, 0
+szhome.com, 0
+sziit.edu.cn, 0
+sz-its.cn, 0
+szjs.gov.cn, 0
+szjzz.gov.cn, 0
+szmb.gov.cn, 0
+szm.com, 0
+szmqs.gov.cn, 0
+szn-ural.ru, 0
+szone-online.net, 0
+szone-online.so, 0
+szpilot.com.cn, 0
+szrtc.cn, 0
+szsce.si, 0
+szscjg.gov.cn, 0
+szse.cn, 0
+szsi.gov.cn, 0
+szsti.gov.cn, 0
+sztb.gov.cn, 0
+szu.edu.cn, 0
+szvc.com.cn, 0
+szweb.cn, 0
+szweiflr.cn, 0
+sz-ybbs.ac.at, 0
+szybko.pl, 0
+szzfgjj.com, 0
+t2bot.ru, 0
+t2cksec.net, 0
+t4vps.eu, 0
+t4-wiki.de, 0
+table.co, 0
+tablepress.org, 0
+tabletki.ua, 0
+tablette-store.com, 0
+tabloidpulsa.co.id, 0
+tabnak.ir, 0
+tabris.ru, 0
+tabsbook.ru, 0
+tabstabs.com, 0
+tacr.cz, 0
+tactileo.fr, 0
+ta.de, 0
+tado.com, 0
+tagancity.ru, 0
+tagan.ru, 0
+tagplus.com.br, 0
+tagul.com, 0
+taifedu.gov.sa, 0
+taifungbank.com, 0
+tailtarget.com, 0
+taimen.com, 0
+taimyr24.ru, 0
+taipeifubon.com.tw, 0
+taipit.ru, 0
+taizhou.gov.cn, 0
+tajinfo.org, 0
+takcloud.com, 0
+takeeateasy.be, 0
+takeeateasy.fr, 0
+takibu.com, 0
+taknet.ir, 0
+takprosto.cc, 0
+taktaktak.ru, 0
+taktaserver.ir, 0
+takufile.com, 0
+talicai.com, 0
+talkabroad.com, 0
+talkfunnel.com, 0
+talkingcoder.com, 0
+talkingdata.com, 0
+talkmate.com, 0
+taller.su, 0
+tallynine.com, 0
+talon.by, 0
+tamasha.ir, 0
+tamera.org, 0
+tamilrockers.in, 0
+tangrui.wang, 0
+tangtao.net.cn, 0
+tanteng.me, 0
+tanzpol.org, 0
+taobao-0.com, 0
+taobaokhv.ru, 0
+taoche.com, 0
+taocrm.com, 0
+taodaxiang.com, 0
+taofl.cn, 0
+taokezhushou.com, 0
+taomee.com, 0
+taoqian123.com, 0
+taoqueqiao.com, 0
+taoshijie.com, 0
+taotaosou.com, 0
+taozj.org, 0
+tapgerine.com, 0
+tapki.com, 0
+ta.pl, 0
+tapochek.net, 0
+tappx.com, 0
+tarelki.com.ua, 0
+targethunter.net, 0
+tarlogic.com, 0
+tarr.hu, 0
+taschibra.com.br, 0
+tas-ix.net, 0
+taskobox.com, 0
+taskrow.com, 0
+tasnim.co, 0
+tataelxsi.co.in, 0
+tatar-inform.ru, 0
+tatar.ru, 0
+tatenergosbyt.ru, 0
+tatler.ru, 0
+tatneft.ru, 0
+tattelecom.ru, 0
+tattoomaster-shop.ru, 0
+tatukgis.com, 0
+tauernspakaprun.com, 0
+tavanir.org.ir, 0
+taxfreeshops.jp, 0
+taximaxim.com, 0
+taxisaturn.ru, 0
+taxnet.ru, 0
+taxo-parei-sto-kranio.com, 0
+taydoo-photographic.de, 0
+tayfunozer.com, 0
+taylors.edu.my, 0
+tazablog.com, 0
+tazzobikes.com, 0
+tbsign.cn, 0
+tca.com.br, 0
+tcc-clan.de, 0
+tcc.com.ua, 0
+tcdn.co, 0
+tc.edu.tw, 0
+tcgolestan.ir, 0
+tchkcdn.com, 0
+tci-dm.jp, 0
+tcl.com, 0
+tclkuyu.com, 0
+tczew.pl, 0
+tdf.fr, 0
+tdk.com, 0
+tdmu.edu.ua, 0
+tdx.com.cn, 0
+tdyun.com, 0
+teacher-of-russia.ru, 0
+teachersammy.com, 0
+teachers.io, 0
+teachfirst.de, 0
+teachvideo.ru, 0
+team29.org, 0
+teambition.net, 0
+teammelli.ir, 0
+teamshub.com, 0
+teamspeak-connection.de, 0
+team-ulm.de, 0
+teamxlink.co.uk, 0
+teanazar.com, 0
+teasermedia.net, 0
+teatrviktuka.ru, 0
+tecadmin.net, 0
+tecart.de, 0
+teccart.qc.ca, 0
+techglimpse.com, 0
+techloop.io, 0
+techmart.ir, 0
+techmeme.com, 0
+techno4ever.fm, 0
+technoblood.com, 0
+technocity.ru, 0
+techno-co.ru, 0
+technodom.kz, 0
+techold.ru, 0
+tech-on-air.com, 0
+techprom.ru, 0
+techraptor.net, 0
+techshot.ir, 0
+techwarelabs.com, 0
+techytalk.info, 0
+tecnoandroid.it, 0
+tecnohardclan.com, 0
+tecnolegis.com, 0
+tecno-mobile.com, 0
+tecnova.com.br, 0
+tecpt.com, 0
+tecsanpedro.edu.mx, 0
+tedliou.com, 0
+tedox.de, 0
+teflexpress.co.uk, 0
+teg.cn, 0
+tehiku.nz, 0
+tehnika4u.ru, 0
+tehnocentr.ru, 0
+tehnoland.lv, 0
+tehnomaks.ru, 0
+tehnomarket-ural.ru, 0
+tehnomir.com.ua, 0
+tehnorama.ru, 0
+tehnosila.ru, 0
+tehnoskarb.com.ua, 0
+tehprime.ru, 0
+tehrannews.ir, 0
+tekirdagnethaber.com, 0
+tekken-net.kr, 0
+teknic.com, 0
+teknikbilimler.net, 0
+teknokrat.ac.id, 0
+teknomobil.org, 0
+teknostation.net, 0
+tekscan.com, 0
+tekzen.com.tr, 0
+telconet.net, 0
+tele2.kz, 0
+telecable.es, 0
+telecamera.ru, 0
+telecentro.com.ar, 0
+telecom.by, 0
+telecomjs.com, 0
+telecom.kz, 0
+telefen.com, 0
+telefonica.de, 0
+telegraf.uz, 0
+telegramfriends.com, 0
+telekarta.tv, 0
+telekom.com, 0
+telekritika.ua, 0
+telemw.com, 0
+telenet.be, 0
+telenet.ru, 0
+telenor.dk, 0
+teleos.ru, 0
+tele-plus.ru, 0
+teleport.org, 0
+teleschau.de, 0
+teletal.hu, 0
+teletrade-asia.com, 0
+teletrade-dj.com, 0
+teletrade.ru, 0
+telin.co.id, 0
+telkomsel.com, 0
+tellefsen.net, 0
+telonko.com, 0
+telsome.es, 0
+teltec.de, 0
+template-help.com, 0
+templatemonster.com, 0
+templates.com, 0
+tempodisconti.it, 0
+temptationgifts.com, 0
+tencent.click, 0
+tendata.cn, 0
+tenddata.com, 0
+tenderplan.ru, 0
+tengrinews.kz, 0
+tennis-classim.net, 0
+tennisplayer.net, 0
+tenpointcrossbows.com, 0
+tensquaregames.com, 0
+tentorium.ru, 0
+tenvis.com, 0
+tera-byte.com, 0
+teralytics.net, 0
+teraserver.ir, 0
+tercihkitabevi.com, 0
+terema.com.br, 0
+teremok.ru, 0
+terra.im, 0
+terra.org, 0
+terrapinn.com, 0
+terredepeche.com, 0
+tesbuys.com, 0
+teshehui.com, 0
+tesli.com, 0
+tesoon.com, 0
+tesser.ru, 0
+testberichte.de, 0
+testdebit.info, 0
+testerhome.com, 0
+testforhost.com, 0
+testfreaks.com, 0
+test-hf.su, 0
+testkrok.org.ua, 0
+testomato.com, 0
+testvelocidad.eu, 0
+testwo.com, 0
+tetimes.com, 0
+tetranet.com.ua, 0
+tet.tv, 0
+teutloff-bs.de, 0
+texnoera.com, 0
+text-compare.com, 0
+textgears.com, 0
+textory.io, 0
+text.ru, 0
+tezign.com, 0
+tf2mart.net, 0
+tfb.ru, 0
+tfedu.net, 0
+tfm.ro, 0
+tfreeca2.com, 0
+tfshops.com, 0
+tfzq.com, 0
+tga-arsh.ir, 0
+tgl.ru, 0
+tgram.ru, 0
+th7.cn, 0
+thaiadpoint.com, 0
+thaibulksms.com, 0
+thaicsgo.com, 0
+thaigovno.com, 0
+thajsky-raj.cz, 0
+thalesgroup.com, 0
+thalia.hu, 0
+thali.ch, 0
+thanks-shine.com, 0
+thatvidieu.com, 0
+the5fire.com, 0
+thebeautyeffect.com, 0
+thebeautyplace.com, 0
+thebeerplanet.com.br, 0
+thebigchoice.com, 0
+thebigplans.ru, 0
+theblueprint.ru, 0
+thebreakroom.org, 0
+the-bride.ru, 0
+thecheat.co.kr, 0
+thecodecampus.de, 0
+thecoffeecompass.com, 0
+thecompletewebhosting.com, 0
+thecryptochat.net, 0
+thecus.com, 0
+thecustomizewindows.com, 0
+thedoschool.org, 0
+thedrakehotel.ca, 0
+theearthawaits.com, 0
+thefirstgive.com, 0
+thegeeksalive.com, 0
+theidentitypages.com, 0
+the-impish-ink.de, 0
+theindependentsf.com, 0
+thejesuitpost.org, 0
+thekcs.net, 0
+the-ken.com, 0
+thekua.com, 0
+thelibrarystore.com, 0
+thelife.com, 0
+thelongdark.ru, 0
+themaclife.com, 0
+themall.bg, 0
+themall.it, 0
+themefarmer.com, 0
+themient.com, 0
+themill.com, 0
+themusic.today, 0
+thenct.org.za, 0
+thenews.kz, 0
+theparkingspot.com, 0
+theprayerbook.info, 0
+theqarena.com, 0
+therange.co.uk, 0
+therealistictrader.com, 0
+therme.sk, 0
+thermomix.com, 0
+thesecretsofyoga.com, 0
+thesocietea.org, 0
+thesparxitsolutions.com, 0
+thestar.com.my, 0
+thestation.ru, 0
+thesycon.de, 0
+theteenboy.com, 0
+thewaiting-room.net, 0
+thewalrus.ru, 0
+thewatchtv.com, 0
+thewebtemplate.com, 0
+thg-kiel.de, 0
+thiememeulenhoff.nl, 0
+thinformatics.com, 0
+thinkingstorm.com, 0
+thinklocal.co.za, 0
+thinkmobiles.com, 0
+thinstuff.com, 0
+thirtymall.com, 0
+thisismyjam.com, 0
+thmmy.gr, 0
+thngs.co, 0
+thosmos.org, 0
+threema.ch, 0
+thruhere.net, 0
+thtf.com.cn, 0
+thuis.nl, 0
+thumbalizr.com, 0
+thumbnail-download.com, 0
+thunderforest.com, 0
+thunderquote.com, 0
+thunderstorm.pw, 0
+thus.ch, 0
+thuthuatvoz.com, 0
+ti8m.ch, 0
+tiancity.com, 0
+tianhong.cn, 0
+tianjinwe.com, 0
+tiantian8.com, 0
+tiantian.tv, 0
+tianti.io, 0
+tianyabagua.cn, 0
+tianyancha.com, 0
+tibame.com, 0
+ticka.it, 0
+tickeos.de, 0
+ticketflap.com, 0
+ticketgo.com.tw, 0
+tickets.az, 0
+tickets.com.tr, 0
+tickets.co.th, 0
+tickets.kz, 0
+tickets.pl, 0
+tickets.ru, 0
+tickets.ua, 0
+tickmill.com, 0
+tickmill.co.uk, 0
+ticp.net, 0
+ticsystem.co, 0
+ticwear.com, 0
+tidbits.com, 0
+tiendatiger.es, 0
+tienve.org, 0
+tierschutz-shop.de, 0
+tiff.net, 0
+tigase.org, 0
+tigergaming.com, 0
+tigra66.ru, 0
+tigrimigri.com, 0
+tilaa.com, 0
+tilab.com, 0
+timeface.cn, 0
+timeledger.com, 0
+timemanagement.es, 0
+time-master.ru, 0
+timepill.net, 0
+time.sc, 0
+timetoact.de, 0
+timetotrade.com, 0
+timios.com, 0
+timr.com, 0
+tingyun.com, 0
+tinkerpatch.com, 0
+tinned-software.net, 0
+tinohempel.de, 0
+tinper.org, 0
+tinycammonitor.com, 0
+tion.ru, 0
+tipdm.com, 0
+tiplanet.org, 0
+tipplap.hu, 0
+tipsport.sk, 0
+tiseagles.com, 0
+tiskarik.cz, 0
+tiss.edu, 0
+tiszacipo.hu, 0
+tita.com, 0
+titanic-magazin.de, 0
+titanix.net, 0
+titanpad.com, 0
+titans-servers.com, 0
+titrari.ro, 0
+titus.de, 0
+tixforgigs.com, 0
+tiyubisai.com, 0
+tizen.org, 0
+tjfdc.com.cn, 0
+tjms.jus.br, 0
+tjmt.jus.br, 0
+tjosm.com, 0
+tjournal.ru, 0
+tjpa.jus.br, 0
+tjto.jus.br, 0
+tju.edu.cn, 0
+tkbbank.ru, 0
+tk-chel.ru, 0
+tkgorod.ru, 0
+tl50.com, 0
+tlgrm.es, 0
+tlgrm.eu, 0
+tlgrm.ru, 0
+tlinx.cn, 0
+t-l.ru, 0
+tlushim.co.il, 0
+tmcaz.com, 0
+tmcnet.com, 0
+tmea.org, 0
+tmetric.com, 0
+tmg.nl, 0
+tmm-express.com, 0
+tmon.co.kr, 0
+tmoncorp.com, 0
+tmp.com, 0
+tmpyh.com, 0
+tmsf.com, 0
+tms.pl, 0
+tmweb.ru, 0
+tmy123.com, 0
+tn.edu.tw, 0
+tn.kz, 0
+tnpu.edu.ua, 0
+tns.lv, 0
+tns-ua.com, 0
+tntmusic.ru, 0
+tntrade.sk, 0
+tny.im, 0
+tobacco.com.cn, 0
+tobaccofreekids.org, 0
+tobem.jp, 0
+tobitcoin.biz, 0
+tochka.net, 0
+tocpeople.com, 0
+tode.cz, 0
+todoautos.com.pe, 0
+todogrowled.com, 0
+todojuguete.es, 0
+tofour.net, 0
+togas.com, 0
+togojoy.com, 0
+to.gov.br, 0
+tohkalove.com, 0
+toi-moi.com, 0
+toislam.ws, 0
+tokaweb.ir, 0
+tokheim.com, 0
+tokiohotel-fanclub.de, 0
+toko.edu.tw, 0
+tokotoukan.com, 0
+tokyo-city.ru, 0
+tokyo.jp, 0
+tokyonothot.com, 0
+tokyotower.co.jp, 0
+tolk-a.com, 0
+tol.org, 0
+tomato.it, 0
+tomica.ru, 0
+tomintech.ru, 0
+tomoon.cn, 0
+tom.ru, 0
+tomsarkgh.am, 0
+tomsk.gov.ru, 0
+ton.eu, 0
+tongbu.com, 0
+tongda2000.com, 0
+tonghuacun.com, 0
+tongji.cn, 0
+tongji.edu.cn, 0
+tonusclub.ru, 0
+tonyhead.com, 0
+tonytemplates.com, 0
+toobug.net, 0
+toontownrewritten.com, 0
+toorot.com, 0
+tootoo.cn, 0
+top1game.com, 0
+top54.city, 0
+top55.info, 0
+top-channel.tv, 0
+topchrono.biz, 0
+topease.net, 0
+topfiles.ws, 0
+tophouse.ru, 0
+topide.com, 0
+top-inspector.ru, 0
+topkeren.com, 0
+toplist.cz, 0
+toplist.sk, 0
+topmedia.uz, 0
+topmovies31.xyz, 0
+topschool.com, 0
+top-shop.ru, 0
+top.st, 0
+top-technologies.ru, 0
+topthink.com, 0
+topwatch.ru, 0
+topzone.pw, 0
+torah-box.com, 0
+torchystacos.com, 0
+toread.com.cn, 0
+torgpit.ru, 0
+torhub.net, 0
+torquato.de, 0
+torrentbit.net, 0
+torrento.org, 0
+torrentsafe.com, 0
+torrentsgame.net, 0
+torrent-tv.in.ua, 0
+torshovsport.no, 0
+torun.pl, 0
+tosunkaya.com, 0
+totalk12.com, 0
+totaltele.com, 0
+toteme.com, 0
+totheglory.im, 0
+totogaming.am, 0
+touch-device.ru, 0
+touhou-online.net, 0
+touki.ru, 0
+tour-box.ru, 0
+touricoholidays.com, 0
+tourismthailand.org, 0
+tourister.ru, 0
+tourolib.org, 0
+toutapprendre.com, 0
+toutemonannee.com, 0
+toutrix.com, 0
+touzi.com, 0
+tovid.io, 0
+towerhamlets.sch.uk, 0
+toyota.si, 0
+toyshop.cz, 0
+toysperiod.com, 0
+tpay.me, 0
+tpg.ua, 0
+tplaboratorioquimico.com, 0
+tplink.com, 0
+tp-link.com.cn, 0
+tpprf.ru, 0
+tproger.ru, 0
+tpsgv.be, 0
+tpu.ru, 0
+tq.cn, 0
+trabzonspor.org.tr, 0
+trackglobe.com, 0
+trackingmore.com, 0
+trackmanic.com, 0
+trackntrade.com, 0
+trackofthewolf.com, 0
+trackpadmagic.com, 0
+trackvia.com, 0
+tractorpoint.com, 0
+tracuuhoso.com, 0
+trade-groups.ru, 0
+trademachines.com, 0
+trademachines.de, 0
+trademachines.es, 0
+trademe.co.nz, 0
+traderacademy.ru, 0
+traderguide.in, 0
+tradesmax.com, 0
+tradesystemjp.com, 0
+traditio.wiki, 0
+tradzone.net, 0
+trafficrouter.io, 0
+traffic.ru, 0
+trafficstore.com, 0
+traficantes.net, 0
+trafi.com, 0
+trailerloop.de, 0
+trainpix.org, 0
+tramitesadistancia.gob.ar, 0
+trandent.com, 0
+transantiago.cl, 0
+transelectrica.ro, 0
+transformaniatime.com, 0
+transformify.org, 0
+transgd.com.cn, 0
+transindex.ro, 0
+translatesong.com, 0
+transmissionbt.com, 0
+transparencytoolkit.org, 0
+transportes.gov.br, 0
+transposh.org, 0
+transvilles.com, 0
+trantect.com, 0
+travelata.ru, 0
+travelbook.de, 0
+travelclub.es, 0
+travelcodex.com, 0
+travelsim.com, 0
+travelsim.ua, 0
+traystatus.com, 0
+trc.com, 0
+tre-al.jus.br, 0
+treasury.govt.nz, 0
+treatstock.com, 0
+trecnutrition.com, 0
+trecone.com, 0
+treds.co.uk, 0
+trendmagazin.ch, 0
+trendsideas.com, 0
+trenino-rosso-bernina.it, 0
+treolan.ru, 0
+tresorit.com, 0
+tretyakovgallery.ru, 0
+trexle.com, 0
+trialssherpabot.net, 0
+trian.net, 0
+trianz.com, 0
+triblio.com, 0
+tribuna.com, 0
+trifork.com, 0
+trinitigame.com, 0
+trinitydesktop.org, 0
+trinity-parts.ru, 0
+trioo.com, 0
+tripinview.com, 0
+tripplus.cc, 0
+tripsecrets.ru, 0
+tripsta.com, 0
+tripsta.net, 0
+trishara.com, 0
+tritiumnet.org, 0
+triumf.ca, 0
+triya.ru, 0
+tri-z.ru, 0
+trkraduga.ru, 0
+troi.de, 0
+trojmiasto.pl, 0
+trollhattan.se, 0
+trovamoda.com, 0
+trovoacademy.com, 0
+trt16.jus.br, 0
+trt22.jus.br, 0
+trt23.jus.br, 0
+trt24.jus.br, 0
+trtworld.com, 0
+truba.com, 0
+trucksale.ru, 0
+trucnet.com, 0
+trud.bg, 0
+trueconf.com, 0
+truefitness.com, 0
+true.io, 0
+truelaunchbar.com, 0
+truffls.de, 0
+trusek.com, 0
+trus-tech.com, 0
+trust-holod.ru, 0
+trustie.net, 0
+trustpay.eu, 0
+trustutn.org, 0
+tryndex.kz, 0
+trystack.cn, 0
+trytek.ru, 0
+ts3.cloud, 0
+tsagi.ru, 0
+tsargrad.tv, 0
+tsb.kz, 0
+tsci.com.cn, 0
+ts-coach.com, 0
+tseaudio.com, 0
+tse.moe, 0
+tsemporium.com, 0
+tsf.org.tr, 0
+tsign.cn, 0
+tsinetwork.ca, 0
+tsinghua.edu.cn, 0
+ts.kg, 0
+tsk-praha.cz, 0
+tsn.at, 0
+tsn.ua, 0
+tspu.ru, 0
+tssgroup.sk, 0
+tstn.ru, 0
+tsu.ac.th, 0
+tsu.edu, 0
+ttdoc.cn, 0
+ttdyy.tv, 0
+tthd.org, 0
+ttkd.cn, 0
+ttkdex.com, 0
+ttlsa.com, 0
+ttl.tj, 0
+tts.lt, 0
+ttwanda.com, 0
+ttyplus.com, 0
+ttz.com, 0
+ttzx.tv, 0
+tuan800.com, 0
+tuanche.com, 0
+tuanimg.com, 0
+tuars.com, 0
+tubeadvertising.eu, 0
+tubemate-download.com, 0
+tubeshopitalia.it, 0
+tuchuang.org, 0
+tucson-club.ru, 0
+tudelft.nl, 0
+tudip.com, 0
+tudor.lu, 0
+tudou.com, 0
+tuggle.co, 0
+tugraz.at, 0
+tuhocmang.com, 0
+tuigirl.com, 0
+tuit.uz, 0
+tu.koszalin.pl, 0
+tularegion.org, 0
+tulipsport.com, 0
+tuliu.com, 0
+tulotero.es, 0
+tuluoluo.com, 0
+tumar.fm, 0
+tumba.ch, 0
+tumix.ru, 0
+tunayachting.com.tr, 0
+tuneeca.com, 0
+tunestotube.com, 0
+tungee.com, 0
+tuningblog.eu, 0
+tunisietelecom.tn, 0
+tuntron.com, 0
+tuputech.com, 0
+turboconsult.cz, 0
+turbojetbooking.com, 0
+turbo-tec.eu, 0
+turchese.it, 0
+turiba.lv, 0
+turkegitimsen.org.tr, 0
+turkiyeburslari.gov.tr, 0
+turkiye.gov.tr, 0
+turku.center, 0
+turris.cz, 0
+tursvodka.ru, 0
+turtleacademy.com, 0
+tusdk.com, 0
+tushev.org, 0
+tus.si, 0
+tusur.ru, 0
+tutanota.com, 0
+tutanota.de, 0
+tutor.cz, 0
+tuttocollezioni.com, 0
+tuttoformazione.com, 0
+tutuapp.com, 0
+tutuapp.vip, 0
+tu-varna.bg, 0
+tuv.com, 0
+tuwlab.com, 0
+tuxedocomputers.com, 0
+tv189.com, 0
+tv5.zp.ua, 0
+tvalacarta.info, 0
+tvcollect.me, 0
+tvcom.cz, 0
+tvdom.tv, 0
+tvfeed.in, 0
+tvfinternational.com, 0
+tv-impulse.ru, 0
+tvk6.ru, 0
+tv-nasha.ru, 0
+tvoe.ru, 0
+tvoi-instrument.com, 0
+tvoysad.ru, 0
+tvpublica.com.ar, 0
+tvsale.ru, 0
+tvservice.org, 0
+tvtune.net, 0
+tw1.ru, 0
+twbbs.org, 0
+twc.edu.hk, 0
+tweakboxapp.com, 0
+tweepsmap.com, 0
+twgg.org, 0
+twgogo.org, 0
+twickets.co.uk, 0
+twicopy.org, 0
+twistedmatrix.com, 0
+twitteroauth.com, 0
+twomini.com, 0
+twotiger.com, 0
+twrx.ru, 0
+twt.de, 0
+twzoa.info, 0
+txhack.cn, 0
+txiaohe.cn, 0
+txslicai.com, 0
+txslicai.com.cn, 0
+txvpn.top, 0
+txvpn.wang, 0
+tyc.edu.tw, 0
+tychy.pl, 0
+tynsoe.org, 0
+tyntec.com, 0
+typcn.com, 0
+typecho.me, 0
+typecodes.com, 0
+typhon.net, 0
+typo3.org, 0
+typografos.gr, 0
+typtest.ru, 0
+tyresystem.de, 0
+tyr.gift, 0
+tysa.ru, 0
+tyumedia.ru, 0
+tzbao.com, 0
+tzit.cn, 0
+tzqby.xyz, 0
+tzrl.com, 0
+tzyee.com, 0
+u9yy.com, 0
+uabc.mx, 0
+uade.edu.ar, 0
+uaes.com, 0
+ua.fm, 0
+ua.gov.tr, 0
+uakino.net, 0
+ualinux.com, 0
+uama.com.cn, 0
+uamaster.com, 0
+uapa.ru, 0
+uapeer.eu, 0
+uatoday.tv, 0
+ubejournal.biz, 0
+uberchord.com, 0
+uberfacil.com, 0
+uberspace.de, 0
+ubiobio.cl, 0
+uboachan.net, 0
+ub.ua, 0
+ubuntu-gr.org, 0
+ubuntukylin.com, 0
+uc.ac.id, 0
+ucasal.edu.ar, 0
+ucbuyco.com, 0
+uc.cl, 0
+ucdok.com, 0
+uc.edu, 0
+uce.edu.ec, 0
+uchat.co.kr, 0
+uchile.cl, 0
+uchil.net, 0
+uchiuroki.ru, 0
+uci.cu, 0
+uciran.ir, 0
+uclv.cu, 0
+uclv.edu.cu, 0
+ucoin.net, 0
+ucol.mx, 0
+ucoz.com, 0
+ucoz.net, 0
+ucoz.ru, 0
+ucpaas.com, 0
+uc.pt, 0
+ucptt.com, 0
+ucw.cz, 0
+uczc.cn, 0
+udg.edu, 0
+udg.mx, 0
+udinra.com, 0
+udi.pl, 0
+udmprof.ru, 0
+u-doktora.ru, 0
+uds18.ru, 0
+uedsc.com, 0
+uef.edu.vn, 0
+ueh.edu.vn, 0
+uel.br, 0
+uelzener.de, 0
+uem.mz, 0
+ueq.com, 0
+uer.ca, 0
+uerj.br, 0
+uesocc.edu.sv, 0
+uestc.edu.cn, 0
+ueuo.com, 0
+ufa1.ru, 0
+ufa.ie, 0
+ufanet.ru, 0
+ufcfan.org, 0
+ufg.br, 0
+ufh.com.cn, 0
+ufibox.com, 0
+ufight.gr, 0
+ufmg.br, 0
+ufms.br, 0
+ufmt.br, 0
+ufoots.com, 0
+ufosend.com, 0
+ufpa.br, 0
+ufpb.br, 0
+ufrr.br, 0
+ufs.br, 0
+ufscar.br, 0
+ufs-online.ru, 0
+uft.edu.br, 0
+ufu.br, 0
+ufvjm.edu.br, 0
+ugg2nd.de, 0
+ugirls.com, 0
+ugm.ac.id, 0
+ugmk-telecom.ru, 0
+ugranow.ru, 0
+ugx-mods.com, 0
+uhc.gg, 0
+uhdog.com, 0
+uhrforum.de, 0
+ui001.com, 0
+uia.org, 0
+uilim.ru, 0
+uji.es, 0
+ujipin.com, 0
+ujs.edu.cn, 0
+uk2group.com, 0
+ukbiz.top, 0
+ukc.gov.ua, 0
+ukdefencejournal.org.uk, 0
+ukim.edu.mk, 0
+ukim.mk, 0
+ukipme.com, 0
+u-kor.cn, 0
+ukravto.ua, 0
+ukrdc.net, 0
+ukrdomen.com, 0
+ukrmap.biz, 0
+ukrmedia.center, 0
+ukroboronprom.com.ua, 0
+ukrstat.gov.ua, 0
+ukrtelecom.ua, 0
+uk.to, 0
+ulanovka.ru, 0
+ulbra.br, 0
+ulivingstyle.com, 0
+ulpgc.es, 0
+ultiboss.jp, 0
+ultimate-community.de, 0
+ultimedecathlon.com, 0
+ultradox.com, 0
+ulugov.uz, 0
+ulyaoth.net, 0
+umail.uz, 0
+umanis.com, 0
+umantis.com, 0
+umbro.com.br, 0
+umc.br, 0
+umich.mx, 0
+uminho.pt, 0
+umkbw.de, 0
+umnieroditeli.ru, 0
+umpay.com, 0
+umukunzi.rw, 0
+umu.se, 0
+umweltinstitut.org, 0
+um.wroc.pl, 0
+unacar.mx, 0
+unachi.ac.pa, 0
+unam.edu.ar, 0
+unam.mx, 0
+unand.ac.id, 0
+unas.bg, 0
+unas.eu, 0
+unas.hu, 0
+unasus.gov.br, 0
+unblockall.com, 0
+unblockbook.biz, 0
+unblockcn.com, 0
+unca.edu, 0
+unctv.org, 0
+undelete-file.ru, 0
+undiksha.ac.id, 0
+undip.ac.id, 0
+undo.it, 0
+unecon.ru, 0
+uned.es, 0
+unesp.br, 0
+unet.by, 0
+unet.cz, 0
+unet.edu.ve, 0
+unexplainablestore.com, 0
+ung.si, 0
+uni-altai.ru, 0
+unian.info, 0
+unian.net, 0
+unian.ua, 0
+uniara.com.br, 0
+uni-augsburg.de, 0
+uniba.it, 0
+uniba.sk, 0
+unibratec.edu.br, 0
+unic.ac.cy, 0
+unicamp.br, 0
+unicard.ge, 0
+unic.edu.ru, 0
+unicef-irc.org, 0
+unicen.edu.ar, 0
+uniconf.ru, 0
+unideb.hu, 0
+unident.se, 0
+uni.edu.ni, 0
+unifemm.edu.br, 0
+unifenas.br, 0
+unifesp.br, 0
+uniforminsignia.org, 0
+uni-frankfurt.de, 0
+uni-freiburg.de, 0
+unigroup.com.cn, 0
+uni-heidelberg.de, 0
+unihost.com, 0
+uni-kassel.de, 0
+unila.edu.mx, 0
+unilever.com, 0
+unilever.com.cn, 0
+uni-lj.si, 0
+unimagdalena.edu.co, 0
+uni-mainz.de, 0
+unimal.ac.id, 0
+uni-mb.si, 0
+unimedmaringa.com.br, 0
+unimednatal.com.br, 0
+unimedribeirao.net, 0
+unimedrio.com.br, 0
+unimontes.br, 0
+uni-mysore.ac.in, 0
+uni-net.com.tw, 0
+unionesarda.it, 0
+unionpay.com, 0
+unionpayintl.com, 0
+unipdu.ac.id, 0
+unipus.cn, 0
+uniqa.ro, 0
+unisi.it, 0
+uni-sofia.bg, 0
+unisonserver.com, 0
+unistroyrf.ru, 0
+unitbv.ro, 0
+unitconverterpro.com, 0
+unitech-mo.ru, 0
+unitedbank.cn, 0
+united-host.de, 0
+unitequipment.com, 0
+unitins.br, 0
+unitraklub.pl, 0
+unium.ru, 0
+univadis.de, 0
+univap.br, 0
+universal-job.ch, 0
+universal.se, 0
+universiada.eu, 0
+universitego.com, 0
+university.kg, 0
+universityofsantamonica.edu, 0
+universtudio.ru, 0
+univertv.org, 0
+uniview.com, 0
+univille.edu.br, 0
+uni-weimar.de, 0
+unix4lyfe.org, 0
+unixstorm.org, 0
+uniyar.ac.ru, 0
+unlimitedworld.de, 0
+unlp.edu.ar, 0
+unmo.ba, 0
+unode50.com, 0
+unoentrerios.com.ar, 0
+unpa.me, 0
+unq.edu.ar, 0
+unr.edu.ar, 0
+unrulydude.com, 0
+unsa.org, 0
+untan.ac.id, 0
+unternehmertum.de, 0
+untis.at, 0
+unybook.com, 0
+unyoo.com, 0
+unyp.cz, 0
+uoc.gr, 0
+uooc.online, 0
+uop.edu.jo, 0
+uoradea.ro, 0
+up3d.com, 0
+upaep.mx, 0
+upagge.com, 0
+upaiyun.com, 0
+upb.edu.co, 0
+upc.edu.cn, 0
+upchina.com, 0
+upclinic.ru, 0
+upclve.com, 0
+upcomingcons.com, 0
+updressed.com, 0
+upendo.tv, 0
+upenny.cn, 0
+upessencia.com.br, 0
+upg-ploiesti.ro, 0
+upit.ro, 0
+uplab.ru, 0
+upla.cl, 0
+upl.uz, 0
+upm.my, 0
+upp.edu.mx, 0
+uprav.ru, 0
+uprm.edu, 0
+upromania.ro, 0
+upr.si, 0
+upservers.net, 0
+upsrv.ru, 0
+upward.org, 0
+upxin.net, 0
+uqer.io, 0
+uralairlines.ru, 0
+ural.net, 0
+uralplit.ru, 0
+uralpolit.ru, 0
+uran.ua, 0
+urban3p.ru, 0
+urbanterror.info, 0
+urbaonline.com, 0
+urbistat.it, 0
+urc.ac.ru, 0
+ur.de, 0
+ureport.in, 0
+urfu.ru, 0
+urgent-curier.ro, 0
+url.ph, 0
+url.tw, 0
+urmia.ir, 0
+urokidoma.org, 0
+ursprung.at, 0
+urssaf.fr, 0
+urss.ru, 0
+urwork.cn, 0
+usabilitytools.com, 0
+usa.cc, 0
+usach.cl, 0
+usaedu.net, 0
+usaip.eu, 0
+usc.edu, 0
+usc.edu.cn, 0
+useed.fr, 0
+usefulblogging.com, 0
+useley.com, 0
+usembassy.gov, 0
+usens.com, 0
+userbase.be, 0
+userful.com, 0
+usermd.net, 0
+users.pub, 0
+useso.com, 0
+usfleettracking.com, 0
+us.jobs, 0
+uslugi.mosreg.ru, 0
+uspard.com, 0
+usp.br, 0
+usports.ru, 0
+ustalk.com, 0
+ustc.edu.cn, 0
+ustclug.org, 0
+ustcsoft.com, 0
+us.to, 0
+u-strasbg.fr, 0
+ustrotting.com, 0
+usu.edu, 0
+usuhs.edu, 0
+usurt.ru, 0
+usx.edu.cn, 0
+utags.edu.mx, 0
+utaipei.edu.tw, 0
+uta-net.com, 0
+utazom.com, 0
+utazzitthon.hu, 0
+utb.ru, 0
+utbs.ws, 0
+utgjiu.ro, 0
+uticanational.com, 0
+utmn.ru, 0
+utn.edu.ar, 0
+utorrent.info, 0
+utorrent-russian.com, 0
+utouu.com, 0
+utp.br, 0
+utp.edu.br, 0
+utsource.net, 0
+utwente.nl, 0
+uulian.com, 0
+uuoobe.kr, 0
+uurun.com, 0
+uuu.com.tw, 0
+uvanet.br, 0
+uv.cl, 0
+uvm.cl, 0
+uwdress.com, 0
+uwebdesign.ru, 0
+uwec.edu, 0
+uwewe.com, 0
+uwm.edu.pl, 0
+uwow.biz, 0
+uwowhead.ru, 0
+uxiaor.com, 0
+uxin.com, 0
+uxinuxin.com, 0
+uxuejiaoyu.cc, 0
+uxuejiaoyu.com, 0
+uybor.uz, 0
+uyun.cn, 0
+uzasne-darky.cz, 0
+uzbekenergo.uz, 0
+uzcard.uz, 0
+uzer.me, 0
+uzex.uz, 0
+uzfor.net, 0
+uzh.ch, 0
+uzinfocom.uz, 0
+uznature.uz, 0
+uztelecom.uz, 0
+uztor.net, 0
+v1.cn, 0
+v1game.cn, 0
+v1.ru, 0
+v1.spb.ru, 0
+v2v.net, 0
+v5cg.com, 0
+v5kf.com, 0
+vaecn.com, 0
+vagas.pro, 0
+vahdeals.com, 0
+vainahtelecom.ru, 0
+valahia.ro, 0
+vala-network.eu, 0
+valetudo.ru, 0
+vallexm.ru, 0
+valsun.cn, 0
+valuehost.ru, 0
+vam.ac.uk, 0
+vanet.eu.com, 0
+vanfun.com, 0
+vansfans.cn, 0
+vapez.ro, 0
+vapteke.ru, 0
+vardex.ru, 0
+variable.pp.ua, 0
+variety-store.ru, 0
+variflight.com, 0
+varton.ru, 0
+varus.ua, 0
+vasco.com, 0
+vasco.eu, 0
+vashgorod.ru, 0
+vatrus.info, 0
+vatti.com.cn, 0
+vavato.com, 0
+vavruska.info, 0
+v-avto.ru, 0
+vayaentradas.com, 0
+vaz.ru, 0
+vbg.de, 0
+vbill.cn, 0
+vbordele.org, 0
+vbs-hobby.fr, 0
+vbuddisme.ru, 0
+vbz.hr, 0
+vc4a.com, 0
+vc-enable.co.uk, 0
+vcfboard.com, 0
+vclhk.com, 0
+vc.ru, 0
+vctms.co.uk, 0
+vdongchina.com, 0
+vdv-kavkaz.ru, 0
+vedanta.org, 0
+veeam.com, 0
+veekn.com, 0
+veeseo.com, 0
+veeshop.ro, 0
+veestro.com, 0
+veganisme.org, 0
+vegeweb.org, 0
+vehicle-rent.com, 0
+vejska.cz, 0
+veka.ru, 0
+vekrosta.ru, 0
+velex.ir, 0
+velosite.ru, 0
+veloxnet.hu, 0
+venco.com.pl, 0
+vendev.info, 0
+vendor.kz, 0
+venetolavoro.it, 0
+venez.fr, 0
+venganzasdelpasado.com.ar, 0
+venompvp.org, 0
+vent-al.ru, 0
+vente-privee.com, 0
+vento.ru, 0
+venturesafrica.com, 0
+verbinet.com, 0
+verbraucherschutz.de, 0
+verbraucherzentrale.it, 0
+verespg.hu, 0
+vergleichen-und-sparen.de, 0
+vericant.com, 0
+verifiedinvesting.com, 0
+verifiedvolunteers.com, 0
+veripark.com, 0
+versand-status.de, 0
+version6.ru, 0
+verybank.ru, 0
+verycloud.cn, 0
+verygames.net, 0
+veschichka.com, 0
+vestacp.com, 0
+vesti.kz, 0
+vestiprim.ru, 0
+vestum.ru, 0
+vexer.ru, 0
+veyseloglu.az, 0
+vfavk.net, 0
+vfe.cc, 0
+vfl.ru, 0
+v-front.de, 0
+vgg.ru, 0
+vgn.at, 0
+vhall.com, 0
+vhod.cc, 0
+vhostgo.com, 0
+vhost.wf, 0
+viacep.com.br, 0
+via.de, 0
+viadurini.it, 0
+viaflats.com, 0
+viajas.com, 0
+viaprinto.de, 0
+vibease.com, 0
+vibus.de, 0
+vic.edu.au, 0
+vic.gov.au, 0
+vicp.cc, 0
+vicp.io, 0
+vicp.net, 0
+victorz.ru, 0
+vidanet.hu, 0
+vidapositiva.com, 0
+vide-greniers.org, 0
+videoboom.cc, 0
+videochaty.ru, 0
+videociety.de, 0
+videoforme.ru, 0
+videogamesawesome.com, 0
+videoigr.net, 0
+videojatekbolt.hu, 0
+videojj.com, 0
+videolist.am, 0
+video-nvidia.com, 0
+videoplusfrance.com, 0
+videoregforum.ru, 0
+videoseed.ru, 0
+videosmile.ru, 0
+videostir.com, 0
+videvo.net, 0
+vidido.ua, 0
+vidmatedownloadapp.com, 0
+vidonme.cn, 0
+vidown.cn, 0
+vidproxy.com, 0
+vidri.com.sv, 0
+vid.ru, 0
+viemar.com.br, 0
+vietget.net, 0
+vietmap.vn, 0
+vietpn.com, 0
+viewdns.net, 0
+viewlayer.cn, 0
+viewnetcam.com, 0
+vifnet.pl, 0
+vigodnee.ru, 0
+viis.lv, 0
+vikingco.com, 0
+vikingcruises.com, 0
+vikingrivercruises.com, 0
+vilavi.com, 0
+vilaviniteca.es, 0
+villacarte.com, 0
+villamariavivo.com, 0
+ville-courbevoie.fr, 0
+ville-gennevilliers.fr, 0
+vilniausenergija.lt, 0
+vilynx.com, 0
+vimcar.com, 0
+vimcar.de, 0
+vimentis.ch, 0
+vimp.com, 0
+vinamsolutions.com, 0
+vinastar.net, 0
+vincross.com, 0
+viniti.ru, 0
+vin.li, 0
+vipautoliker.com, 0
+vipbaiduyun.com, 0
+vipc.cn, 0
+v-ipc.ru, 0
+vipedp2.com, 0
+vipfreepremium.com, 0
+vipgaming.ru, 0
+vipip.ru, 0
+vip-member.net, 0
+vipmro.net, 0
+vipreading.com, 0
+vipshop.com, 0
+vipsmt.com, 0
+vipspravka.org, 0
+vipvpn.racing, 0
+vip-weapon.ru, 0
+vip-wifi.com, 0
+vipwifi.com, 0
+vira20.ir, 0
+virag.si, 0
+viral-alert.com, 0
+viralsection.com, 0
+virink.com, 0
+virnet.co.za, 0
+virten.net, 0
+virt-manager.org, 0
+virt-mir.ru, 0
+virtual-college.co.uk, 0
+virtuallyboring.com, 0
+virtualsoccer.ru, 0
+virtuemart.net, 0
+virtuosgames.com, 0
+virtuozzo.com, 0
+virus-removal-guide.com, 0
+virus-removal-guide.net, 0
+visaszales.lv, 0
+visicom.com, 0
+vision.com.tw, 0
+visitantalya.com, 0
+visitporno.net, 0
+vismedia.ru, 0
+vistula.edu.pl, 0
+visual3d.cn, 0
+visualead.com, 0
+visualwatermark.com, 0
+vitacom.ro, 0
+vitalia.cz, 0
+vitalitygames.com, 0
+vitamax.ru, 0
+vitaminking.com.au, 0
+vitek.ru, 0
+vitnik.com, 0
+vitreum.lv, 0
+viva.com.do, 0
+vivasexe.com, 0
+vivavivu.com, 0
+vivaxis.com, 0
+vivendi.com, 0
+viventor.com, 0
+vivo.xyz, 0
+vivt.ru, 0
+vizio.com, 0
+vizzlo.com, 0
+vjiangyin.net, 0
+vkernel.ro, 0
+v-key.com, 0
+vkfake.ru, 0
+vki.at, 0
+vkjust.com, 0
+vko.cn, 0
+vkonline.ru, 0
+vkreg.ru, 0
+vladislav.ua, 0
+vladis.ru, 0
+vladmama.ru, 0
+vlc.de, 0
+vlc-forum.de, 0
+vlion.cn, 0
+vludus.com, 0
+vluki.ru, 0
+vmcsubastas.com, 0
+vmmo.ru, 0
+vmoe.info, 0
+vmou.ac.in, 0
+vmovier.cc, 0
+vnc.biz, 0
+vn.cz, 0
+vnebo.mobi, 0
+vnet.cn, 0
+vnmu.edu.ua, 0
+vnutri.org, 0
+vobile.cn, 0
+voc.com.cn, 0
+vocier.com, 0
+vodafone.it, 0
+vodjk.com, 0
+vodokanal.kiev.ua, 0
+voffka.com, 0
+vogu35.ru, 0
+vogue.ru, 0
+voicecloud.cn, 0
+voiceofgreaterassam.com, 0
+voice-server.ru, 0
+voipgateapi.com, 0
+voipgate.com, 0
+volgadmin.ru, 0
+volga-dnepr.com, 0
+volganet.ru, 0
+volgaspot.ru, 0
+volksbuehne-berlin.de, 0
+volksschauspiele.de, 0
+volkswagen.de, 0
+volkszaehler.org, 0
+volleyball-verband.de, 0
+volnistye.ru, 0
+volnorez.com, 0
+volosfull.ru, 0
+voltmarket.ru, 0
+voltra.by, 0
+vonvon.me, 0
+vooc.net, 0
+voodoo.com, 0
+voodoo.community, 0
+voprosoff.net, 0
+voriginale.tv, 0
+vorlagen.de, 0
+vorwaerts.de, 0
+vorwerk.at, 0
+vorwerk.com, 0
+vorwerk.co.uk, 0
+vorwerk.cz, 0
+vorwerk.de, 0
+vorwerk.es, 0
+vorwerk.fr, 0
+vorwerk.it, 0
+vostok.ru, 0
+votobo.com, 0
+votonia.ru, 0
+votrube.ru, 0
+voubs.bg, 0
+voxbone.com, 0
+voximplant.com, 0
+voxygen.fr, 0
+voyhoy.com, 0
+voz48.xyz, 0
+vp.gov.lv, 0
+vpndaquan.net.cn, 0
+vpngatecn.com, 0
+vpnhot.com, 0
+vpnmaster.cn, 0
+vpnme.me, 0
+vpnxx.net, 0
+vpo.ca, 0
+vpphoangha.vn, 0
+vprka.com, 0
+vps-10.com, 0
+vpsgroups.com, 0
+vpsi.cloud, 0
+vpsps.com, 0
+vpsville.ru, 0
+vqs.com, 0
+vrach42.ru, 0
+vrame.org, 0
+vrheads.com, 0
+vrn.ru, 0
+vrsa.lt, 0
+v-running.com, 0
+vsactivity.com, 0
+vsadu.ru, 0
+vsathletics.com, 0
+vsbt174.ru, 0
+vsdaria.com, 0
+vse.cz, 0
+vse.fm, 0
+vsehristiane.com, 0
+vsei.ua, 0
+vsekroham.ru, 0
+vseloterei.com, 0
+vsemayki.com, 0
+vsem.cz, 0
+vsemetri.com, 0
+vsepro1s.ru, 0
+vserpg.ru, 0
+vserver.de, 0
+vsesorta.ru, 0
+vsestudent.cz, 0
+vshabakeh.com, 0
+vsibiri.info, 0
+vsim.lt, 0
+vslg.cz, 0
+vslu.ru, 0
+vsopen.ru, 0
+vso-software.fr, 0
+vspp.cz, 0
+vsu.by, 0
+vsu.ru, 0
+vtambove.ru, 0
+vtb.az, 0
+vtb-bank.by, 0
+vtb-bank.kz, 0
+vtbnpf.ru, 0
+vtech.com, 0
+vtechda.com, 0
+vt.edu, 0
+vten.ru, 0
+vtkbank.ru, 0
+vtrhome.net, 0
+vtrois.com, 0
+vtrspeed.com, 0
+vtrspeed.net, 0
+vtrus.net, 0
+vttl.be, 0
+vtt.ru, 0
+vtverdohleb.org.ua, 0
+vucdjursland.dk, 0
+vucke.sk, 0
+vuze.camera, 0
+vv881.com, 0
+vvic.com, 0
+vvo.aero, 0
+vvoso.com, 0
+vvsu.ru, 0
+vvwall.com, 0
+vw-bus.ru, 0
+vwr.com, 0
+vxianchang.cn, 0
+vydy.net, 0
+vyos.io, 0
+vyos.net, 0
+vzlomcheats.com, 0
+vzlomcheatshack.com, 0
+vzlom-igr.com, 0
+w1.fi, 0
+w3cboy.com, 0
+w3template.ir, 0
+w69b.com, 0
+wacai.com, 0
+wacaiyun.com, 0
+wacom.pl, 0
+wadmz.com, 0
+wa.edu.au, 0
+wagner-group.com, 0
+wahaha.com.cn, 0
+waikato.ac.nz, 0
+waiqin365.com, 0
+waitalone.cn, 0
+waitsun.com, 0
+waixingrenlc.com, 0
+wakeboardingmag.com, 0
+wakku.to, 0
+walatao.com, 0
+walibi.nl, 0
+walkclass.com, 0
+wallbox.ru, 0
+wall.cz, 0
+wallegro.ru, 0
+wallpai.com, 0
+wallpaperfusion.com, 0
+wallpapers.pub, 0
+wally.me, 0
+wan5d.com, 0
+wanadev.fr, 0
+wanchongchong.com, 0
+wancom.net.pk, 0
+wanderland.ch, 0
+wandoujia.com, 0
+wanfangdata.com.cn, 0
+wang1314.com, 0
+wangfujing.com, 0
+wangfz.com, 0
+wang-guanjia.com, 0
+wanghailin.cn, 0
+wanghualang.com, 0
+wangjubao.com, 0
+wangjunfeng.com, 0
+wangye.org, 0
+wanhu.com.cn, 0
+wankr.com.cn, 0
+wanmei.com, 0
+wanxiaohong.cn, 0
+wanzi.tv, 0
+waqu.com, 0
+warabi.or.jp, 0
+warcis.com, 0
+wardahshop.com, 0
+warez-bb.org, 0
+warlegend.net, 0
+warmen.cc, 0
+warspear-online.com, 0
+wartapost.com, 0
+warwick.ac.uk, 0
+wasai.org, 0
+washabich.de, 0
+wa-sta.net, 0
+wasu.com, 0
+watches.ru, 0
+watchhyper.com, 0
+watchrecon.com, 0
+waterskimag.com, 0
+watsons.com.tw, 0
+watsons.ua, 0
+watsupafrica.com, 0
+wave.io, 0
+waww.ir, 0
+waylens.com, 0
+waysofhistory.com, 0
+wazizu.com, 0
+wb21.com, 0
+wb-community.com, 0
+wb-fernstudium.de, 0
+wbiao.cn, 0
+wciu.com, 0
+wdj168.com, 0
+wdw88.com, 0
+wdwd.com, 0
+we7.cc, 0
+wealthnavi.com, 0
+wearemarketing.com, 0
+weaver.com.cn, 0
+web4008.com, 0
+web4.hu, 0
+webads.eu, 0
+webalfa.net, 0
+web-alpha.com, 0
+webanetlabs.net, 0
+webanketa.com, 0
+webartex.ru, 0
+webassign.com, 0
+webassign.net, 0
+webbankir.com, 0
+webb-site.com, 0
+webcamfuck.me, 0
+webceo.com, 0
+webdavsystem.com, 0
+webdesign.org, 0
+webd.pl, 0
+webdux.com, 0
+webeden.co.uk, 0
+webei.cn, 0
+web-entity.com, 0
+webernetz.net, 0
+web-experiment.info, 0
+webfoss.com, 0
+webfungame.com, 0
+webhop.me, 0
+webhop.net, 0
+webhostbox.net, 0
+webhostingdiscussion.net, 0
+webid-gateway.de, 0
+webid-solutions.de, 0
+webim.ru, 0
+webinar.fm, 0
+webin.info, 0
+weblap-keszites.co.hu, 0
+webmaster.kitchen, 0
+webmaster-ucoz.ru, 0
+weborama.com, 0
+weborama.fr, 0
+webpass.net, 0
+webpixeltechnologies.com, 0
+webplatform.org, 0
+webpro.co.jp, 0
+webptt.com, 0
+webraketa.com, 0
+web-republic.de, 0
+we.bs, 0
+webscore.ru, 0
+webseiten.cc, 0
+webseo.com, 0
+websequencediagrams.com, 0
+web-service4u.de, 0
+websistent.com, 0
+website.tk, 0
+websmsapp.com, 0
+webspacecontrol.com, 0
+webstarterz.com, 0
+webstrane.info, 0
+webstream.eu, 0
+webtatic.com, 0
+webtechub.com, 0
+webtemp.no, 0
+webterren.com, 0
+web-tinker.com, 0
+webtm.ru, 0
+webtransfer.com, 0
+webtre.com, 0
+webtrn.cn, 0
+webtropia.com, 0
+webuntis.com, 0
+weclassroom.com, 0
+weclick.ir, 0
+weco.net, 0
+weddywood.ru, 0
+wedgewoodbanquet.com, 0
+wednet.edu, 0
+wedos.com, 0
+wedos.net, 0
+weeaboo.com, 0
+weeazy.com, 0
+weekdone.com, 0
+weeker.jp, 0
+weflow.io, 0
+weibo.cn, 0
+weiboyi.com, 0
+weichai.com, 0
+weicps.cn, 0
+weidian.com, 0
+weiguda.com, 0
+weijuju.com, 0
+weimi.cc, 0
+weiosx.com, 0
+weiphone.com, 0
+weiphone.net, 0
+weismarkets.com, 0
+weitaming.com, 0
+weixinshu.com, 0
+weiyin.cc, 0
+wejherowo.pl, 0
+wek.ru, 0
+welcomechile.com, 0
+welcomeuruguay.com, 0
+welfulloutdoors.com, 0
+welian.com, 0
+welldonesoft.com, 0
+wellgames.com, 0
+wellingtoncdsb.ca, 0
+wellnessfitnessnutritionstore.com, 0
+welovedance.ru, 0
+wendashi.cc, 0
+wenidc.com, 0
+wenjf.com, 0
+wenjuan.com, 0
+wenjuan.net, 0
+wenming.cn, 0
+wenzelnet.de, 0
+wenzhanghui.com, 0
+werkswelt.de, 0
+weru.de, 0
+wesmirch.com, 0
+westcall.net, 0
+westcall.spb.ru, 0
+westend.hu, 0
+westhome.spb.ru, 0
+westland.ru, 0
+westsib.ru, 0
+westtown.edu, 0
+westwin.com, 0
+west.xyz, 0
+wettforum.info, 0
+wetu.com, 0
+weyes.cn, 0
+weyes.com.cn, 0
+wffuture.ru, 0
+wfu.edu, 0
+wg263.com, 0
+wget.ca, 0
+wghostk.com, 0
+wg-volunteers.ru, 0
+wgwinto.com, 0
+wh1.su, 0
+whalevpn.cc, 0
+whaley.cn, 0
+whaller.com, 0
+whatled.com, 0
+whatpulse.org, 0
+whatshelp.io, 0
+whhd.gov.cn, 0
+whir.net, 0
+whiskybase.com, 0
+whitelabelwebserver.com, 0
+whitetown.com, 0
+whmcsadmintheme.com, 0
+whnet.edu.cn, 0
+whois7.ru, 0
+wholikesu.net, 0
+whoneedstv.com, 0
+wh.to, 0
+whu.edu.cn, 0
+whyun.com, 0
+wiaa.com, 0
+wiair.com, 0
+wiconnect.fr, 0
+wicp.net, 0
+wicwuzhen.cn, 0
+wide.ad.jp, 0
+widoobiz.com, 0
+widuu.com, 0
+wienit.at, 0
+wifimapper.com, 0
+wifispc.com, 0
+wig-supplier.com, 0
+wigwam.com, 0
+wiidatabase.de, 0
+wiipu.com, 0
+wikem.org, 0
+wik-end.com, 0
+wiki8.com, 0
+wikiart.org, 0
+wikimart.ru, 0
+wikimonde.com, 0
+wikin.cn, 0
+wikiscan.org, 0
+wikishoper.ru, 0
+wikium.ru, 0
+wildbags.ru, 0
+wilddogapp.com, 0
+wildo.ru, 0
+williamlong.info, 0
+winasdaq.com, 0
+winbo.cn, 0
+winbo.top, 0
+wincatalog.com, 0
+wincomi.com, 0
+windobona.at, 0
+windows10screensavers.net, 0
+windowsazure.cn, 0
+windowsbox.hu, 0
+windowscentral.com, 0
+windowsforum.kr, 0
+windows-phone.su, 0
+windows-security.org, 0
+windows-soft.ru, 0
+windscribe.com, 0
+wineselectors.com.au, 0
+winesou.com, 0
+winestreet.ru, 0
+wingoads.com, 0
+wingroad.ru, 0
+wingsofart.ru, 0
+wingtech.com, 0
+winhelp.us, 0
+winhong.com, 0
+winneryun.com, 0
+winnetnews.com, 0
+winni.in, 0
+winployee.com, 0
+wintalent.cn, 0
+winxuan.com, 0
+winyer.cn, 0
+wiscom.com.cn, 0
+wisconsinhistory.org, 0
+wise2c.com, 0
+wisecrm.com, 0
+wisemedia.cn, 0
+wisenjoy.com, 0
+wishmindr.com, 0
+withmybaby.com, 0
+wittur.com.cn, 0
+wittycircle.com, 0
+witze-charts.de, 0
+wizardfox.net, 0
+wizardofodds.com, 0
+wizardofvegas.com, 0
+wizzley.com, 0
+wjdaily.com, 0
+wkbins.com, 0
+wkinfo.com.cn, 0
+wko.at, 0
+wktk.so, 0
+wkzuche.com, 0
+wlcpu.com, 0
+wlwx.cn, 0
+wmasteru.org, 0
+wmd.ru, 0
+wmrs.ru, 0
+wm.ru, 0
+wmv-dresden.de, 0
+wnmu.edu, 0
+wnp.com.hk, 0
+woax-it.com, 0
+woca.club, 0
+wodzislaw.pl, 0
+wogibtswas.de, 0
+woheni.de, 0
+wolfpaulus.com, 0
+wolf.ua, 0
+wolterskluwer.de, 0
+womanadvice.ru, 0
+woman.ru, 0
+womenonweb.org, 0
+womenshairlossproject.com, 0
+wondershare.cn, 0
+wonsterscript.com, 0
+woodgears.ca, 0
+woodward.edu, 0
+wooplus.com, 0
+wordassociations.net, 0
+work28.com, 0
+workaround.org, 0
+workingmother.com, 0
+worklohas.com, 0
+work-microwave.com, 0
+workout-italia.it, 0
+worksection.com, 0
+work-way.com, 0
+worldcubeassociation.org, 0
+worldoftrucks.ru, 0
+worldserial.info, 0
+worldskills.ru, 0
+worldtravelserver.com, 0
+world-xxx.com, 0
+woshidai.com, 0
+wosign.com, 0
+wo.tc, 0
+wotcase.ru, 0
+wotreplays.ru, 0
+wots.com.ua, 0
+wovn.io, 0
+wowdsgn.com, 0
+wowgirls.com, 0
+wow-impulse.net, 0
+wowtrack.org, 0
+wowtv.sx, 0
+wowworks.ru, 0
+wowzonegc.ir, 0
+woyun.la, 0
+woy-wo.uz, 0
+wpcp.org, 0
+wpdesigner.ir, 0
+wpiao.cn, 0
+wpmayor.com, 0
+wppage.ru, 0
+wpscdn.cn, 0
+wps.cn, 0
+wp-statistics.com, 0
+wpweb.com, 0
+wpweixin.net, 0
+wpzhiku.com, 0
+wpzt.cn, 0
+wrealu24.pl, 0
+wrestling-infos.de, 0
+wroclaw.pl, 0
+wrps.org, 0
+wsdltophp.com, 0
+wsgf.org, 0
+wsgjp.com.cn, 0
+wsgvet.com, 0
+wsisp.net, 0
+wsloan.com, 0
+wsms.ru, 0
+wso.wroc.pl, 0
+wstvb.com, 0
+wszuie.pl, 0
+wtfismyip.com, 0
+wtigga.com, 0
+wtsolutions.cn, 0
+wtu.edu.cn, 0
+wuage.com, 0
+wuestenrot.sk, 0
+wug.cz, 0
+wulian.cc, 0
+wumart.com, 0
+wuminhao.com, 0
+wunderkarten.de, 0
+wunschimmo.de, 0
+wunschkuechen24.de, 0
+wusa5.com, 0
+wust.edu.cn, 0
+wusunyinyue.cn, 0
+wutnews.net, 0
+wuyatv.com, 0
+wuzhicms.com, 0
+wvo-dbg.de, 0
+wware.org, 0
+www.astrakhan.ru, 0
+www.chita.ru, 0
+www.gov.lk, 0
+www.uz, 0
+wxchina.com, 0
+wxdm.net, 0
+wxfenxiao.com, 0
+wxliu.com, 0
+wxrrd.com, 0
+wxwgood.com, 0
+wycliffe.org.au, 0
+wykxsw.com, 0
+wyscout.com, 0
+wzhrss.gov.cn, 0
+x25.pl, 0
+x431.com, 0
+x4jdm.com, 0
+x5aa.com, 0
+x5.ru, 0
+x64dbg.com, 0
+xaau.edu.cn, 0
+xacbank.com, 0
+xaecong.com, 0
+xakfor.net, 0
+xalapa.gob.mx, 0
+xalkiadakis.gr, 0
+xalqbank.az, 0
+xanlosch.de, 0
+xap.com, 0
+xarakiri.ru, 0
+xbls.ninja, 0
+xbmc-kodi.cz, 0
+xbpmo.com, 0
+xbsafe.cn, 0
+xchange.cc, 0
+xcloud.cc, 0
+xcloudgame.com, 0
+xd.com, 0
+xdevs.com, 0
+xdf.cn, 0
+x-diesel.com, 0
+xdjd.cn, 0
+xeenho.com, 0
+xenderdownloadapp.com, 0
+xenderdownloads.com, 0
+xenforo.rocks, 0
+xenics.com, 0
+xenos.org, 0
+xf315.org, 0
+xfce.org, 0
+xfile.ro, 0
+xfplay.com, 0
+xfsub.com, 0
+xfxb.net, 0
+xg1.li, 0
+xgate.com.hk, 0
+xgen.hu, 0
+xgimi.com, 0
+xgm.guru, 0
+xhecom.com, 0
+xhmart.com, 0
+xhu.edu.cn, 0
+xialuoli.com, 0
+xiamenair.com, 0
+xiangha.com, 0
+xiangjins.com, 0
+xiangta.cc, 0
+xiangzhan.com, 0
+xianrou.com, 0
+xianyugame.com, 0
+xiaobingss.com, 0
+xiaodao.la, 0
+xiaoduotech.com, 0
+xiaoheiban.cn, 0
+xiaoji001.com, 0
+xiaokakeji.com, 0
+xiaokaxiu.com, 0
+xiaolaoer.com, 0
+xiaomilaile.com, 0
+xiaomishu.com, 0
+xiaopinjuben.com, 0
+xiaoyaoji.com.cn, 0
+xiaoying.tv, 0
+xiaoyoucai.com, 0
+xiaozhu.com, 0
+xiaoz.me, 0
+xiashu.cc, 0
+xiazai3.net, 0
+xiazaidown.com, 0
+xibao100.com, 0
+xibaoxiao.com, 0
+xici.com, 0
+xici.net, 0
+xicp.cn, 0
+xicp.net, 0
+xidorn.com, 0
+ximalaya.com, 0
+xincheping.com, 0
+xinchou.com, 0
+xin.com, 0
+xinedome.de, 0
+xineurope.com, 0
+xinfuka.net, 0
+xingk.cc, 0
+xingshulin.com, 0
+xingyun.net, 0
+xingzikeji.com, 0
+xinhua08.com, 0
+xinhuamed.com.cn, 0
+xinhuanet.com, 0
+xinhua.org, 0
+xinit.ru, 0
+xiniugushi.com, 0
+xinmin.cn, 0
+xinqixi.com, 0
+xinshangshangxin.com, 0
+xinux.net, 0
+xinxindai.com, 0
+xiph.org, 0
+xitieba.com, 0
+xiu8.com, 0
+xiu.com, 0
+xixi123.com, 0
+xiyoucn.com, 0
+xizi.com, 0
+xjatc.com, 0
+xjnu.edu.cn, 0
+xjtag.com, 0
+xjtlu.edu.cn, 0
+xjtu.edu.cn, 0
+xju.edu.cn, 0
+xjy.cn, 0
+xkb.com.cn, 0
+xlm.pl, 0
+xl.pt, 0
+xlzd.me, 0
+xmcimg.com, 0
+xmeye.net, 0
+xmisp.com, 0
+xmjl.com, 0
+xmjydj.com, 0
+xmmandarinonline.com, 0
+xm-n-tax.gov.cn, 0
+xmp.net, 0
+xmpp.jp, 0
+xmpp.org, 0
+xmt.cn, 0
+xmusik.me, 0
+xmyuzhou.com.cn, 0
+xn--12c4db3b2bb9h.net, 0
+xn--1-btbl6aqcj8hc.xn--p1ai, 0
+xn--2i0b10rwthi7fqvp1hd.com, 0
+xn--41a.ws, 0
+xn------7cdbxfuat6afkbmmhefunjo4bs9u.xn--p1ai, 0
+xn----7sbabalf0fh7h4b.xn--p1ai, 0
+xn--80aaaac8algcbgbck3fl0q.xn--p1ai, 0
+xn--80aaej4apiv2bzg.xn--p1ai, 0
+xn--80abemlex2i.xn--p1ai, 0
+xn--80accn9dh.xn--90ais, 0
+xn--80aealaaatcuj2bbdbr2agjd6hzh.xn--p1ai, 0
+xn--80aeopmfjx.xn--80aswg, 0
+xn--80ahclcbajtrv5ae6c.xn--p1ai, 0
+xn----8sbbilafpyxcf8a.xn--p1ai, 0
+xn--90agc8a6d.xn--d1acj3b, 0
+xn--90agrrk8e.xn--p1ai, 0
+xn--b1a3bf.xn--p1ai, 0
+xn--b1acdcqi5ci.xn--p1ai, 0
+xn--c1acndtdamdoc1ib.xn--p1ai, 0
+xn--c1afjenhpy1e1a.xn--p1ai, 0
+xn--c1arjr.xn--p1ai, 0
+xn--c1avg.xn--p1ai, 0
+xn--d1acnqm.xn--j1amh, 0
+xn----dtbofgvdd5ah.xn--p1ai, 0
+xn--e1agfw6a0bt.xn--p1ai, 0
+xn--e1apcdqc2g.xn--p1ai, 0
+xn--f1ae4a2b.xn--p1ai, 0
+xn--i2ru8q2qg.com, 0
+xnw.com, 0
+xn----ymcba3adxu7lezvuj.sa.com, 0
+xocka.ru, 0
+x-omics.org, 0
+xopom.com, 0
+xosobinhduong.com.vn, 0
+xpg.com.br, 0
+xpir.ru, 0
+xpsss.com, 0
+xquartz.org, 0
+xrea.com, 0
+xrnm.com, 0
+xrule34.com, 0
+xs4all.nl, 0
+xsdzq.cn, 0
+xskygames.pl, 0
+xsph.ru, 0
+xssec.org, 0
+xsteach.com, 0
+xsunucu.com, 0
+xtbg.ac.cn, 0
+xtcrm.com, 0
+xtern.ru, 0
+xthor.bz, 0
+xtion.net, 0
+xtrade.com, 0
+xtrance.info, 0
+xtreme.pt, 0
+xtrim.ru, 0
+xtrlarge.com, 0
+xtronics.com, 0
+xuanlove.net, 0
+xuanruanjian.com, 0
+xuanwo.org, 0
+xubiji.com, 0
+xueda.com, 0
+xueshandai.com, 0
+xujc.com, 0
+xuni99.com, 0
+xunjiepdf.com, 0
+xunleiyy.com, 0
+xunyou.com, 0
+xura.com, 0
+xuri.me, 0
+xuulm.com, 0
+xuuue.cn, 0
+xvhost.com, 0
+xvid.com, 0
+xvideoslive.com, 0
+xwall.pro, 0
+xweb.cn, 0
+xwhosp.com.cn, 0
+xwiki.com, 0
+xwiki.org, 0
+xwis.net, 0
+xwjr.com, 0
+xwsd.com, 0
+xxshe.com, 0
+xxt.cn, 0
+xxx3tube.com, 0
+xxxooo.link, 0
+xyaz.cn, 0
+xydeyou.com, 0
+xyfunds.com.cn, 0
+xyiege.com, 0
+xyu.tv, 0
+xyy001.com, 0
+xyzq.com.cn, 0
+xzcblog.com, 0
+xz.gov.cn, 0
+xzmc.edu.cn, 0
+xzn.ir, 0
+y3600.com, 0
+yablyk.com, 0
+yabumi.cc, 0
+yachtbooker.com, 0
+yachtingmagazine.com, 0
+yachtsys.com, 0
+yaduo.com, 0
+yagla.ru, 0
+yaguo.ru, 0
+yahooeu.org, 0
+yahooeu.ru, 0
+yaidu.ru, 0
+yakitoriya.ru, 0
+yalova.edu.tr, 0
+yamaha-motor.co.th, 0
+yamobi.ru, 0
+yanagou.com, 0
+yanfabu.com, 0
+yangchangxi.com, 0
+yangcong345.com, 0
+yangshitianqi.com, 0
+yangtuner.com, 0
+yangzhou.gov.cn, 0
+yanimsoft.ir, 0
+yanke.info, 0
+yanny.link, 0
+yanue.net, 0
+yaociyuan.com, 0
+yaoex.com, 0
+yaomaitong.cn, 0
+yaostrov.ru, 0
+yaou369.com, 0
+yaozh.com, 0
+ya-pluss.ru, 0
+yarcom.ru, 0
+yar-edudep.ru, 0
+yarik-sat.ru, 0
+yastaff.ru, 0
+yat-net.com, 0
+yatong.info, 0
+yatta.de, 0
+yavix.ru, 0
+yavuz-selim.com, 0
+yazuo.com, 0
+ybook.vn, 0
+ybren.com, 0
+ybtcard.com, 0
+ybu.edu.cn, 0
+yburlan.ru, 0
+ycgame.com, 0
+ydidc.top, 0
+ydniu.com, 0
+ydy7.com, 0
+ydybt.net, 0
+yeahka.com, 0
+yealink.com, 0
+yeastar.com, 0
+yeeyi.com, 0
+yeezon.com, 0
+yeezyboost750sale.net, 0
+yeezytrainers.net, 0
+yeint.ru, 0
+yellowdog.co, 0
+yephy.com, 0
+yepster.me, 0
+yerevan.am, 0
+yeshigeek.com, 0
+yesilgazete.org, 0
+yesmywine.com, 0
+yestae.com, 0
+yeti.com, 0
+yfcloud.com, 0
+yfdxs.com, 0
+ygopro.co, 0
+ygqq.com, 0
+ygyhg.com, 0
+yhcd.net, 0
+yht.co.jp, 0
+yhz66.com, 0
+yibei.com, 0
+yibizi.com, 0
+yicai.com, 0
+yiche.com, 0
+yicp.io, 0
+yidai.com, 0
+yidianda.com, 0
+yifile.com, 0
+yifufaka.com, 0
+yigoonet.com, 0
+yiguo.com, 0
+yihu.cn, 0
+yiiframework.com.ua, 0
+yijiakan.com, 0
+yikuaiqu.com, 0
+yilingshop.com, 0
+yilingsj.com, 0
+yilushang.net, 0
+yiminbang.com, 0
+yimishiji.com, 0
+yimu100.com, 0
+yingxiong.com, 0
+yingyanso.com, 0
+yinhu.com, 0
+yiqifa.com, 0
+yiqiniu.com, 0
+yiran.com, 0
+yishu.com, 0
+yisi148.com, 0
+yiso.me, 0
+yit.com, 0
+yithemes.com, 0
+yiyult.com, 0
+yiyunbaby.cn, 0
+yizhihongxing.com, 0
+yjc.ir, 0
+yjk.im, 0
+yjsnpi.nu, 0
+ylc.edu.tw, 0
+ylsoftware.com, 0
+ymanz.com, 0
+ymg360.com, 0
+ymq365.com, 0
+ynairport.com, 0
+ynet.com, 0
+ynet.sk, 0
+yngou.com, 0
+yngs.gov.cn, 0
+ynjy.cn, 0
+ynlib.cn, 0
+ynnu.edu.cn, 0
+ynot.com, 0
+ynszlyy.com, 0
+ynu.edu.cn, 0
+yo-ad.cn, 0
+yoga.com, 0
+yoga-masters.com, 0
+yohotour.com, 0
+yokogawa.com, 0
+yoncu.com, 0
+yongche.org, 0
+yonghappy.com, 0
+yonghui.cn, 0
+yongjinbao.com.cn, 0
+yonyou.com, 0
+yonyouup.com, 0
+yoochoose.com, 0
+yoochoose.net, 0
+yooooo.us, 0
+yooread.com, 0
+yooz.fr, 0
+yotuku.cn, 0
+youchew.net, 0
+youdao.com, 0
+youdian.in, 0
+yougou.com, 0
+youguoquan.com, 0
+youhack.ru, 0
+youhaosuda.com, 0
+youhaovip.com, 0
+youhuashu.com, 0
+youidraw.com, 0
+youjizzlive.com, 0
+youkeshu.com, 0
+youkeyun.com, 0
+youku.com, 0
+you-mp3.net, 0
+youngwriterssociety.com, 0
+youread.me, 0
+yourmechanic.com, 0
+your-pictionary.com, 0
+yoursafe.cn, 0
+your-server.de, 0
+yourski.ru, 0
+yourtion.com, 0
+youscan.io, 0
+youss.co, 0
+youtubers.me, 0
+youwager.eu, 0
+youweather.com, 0
+youxia.org, 0
+youxi.com, 0
+youxiniao.com, 0
+youyuanapp.com, 0
+youzhuan.com, 0
+yovole.com, 0
+yoya.com, 0
+yoyi.com.cn, 0
+yoytourdumonde.fr, 0
+ypc.edu.cn, 0
+yper.co, 0
+ypfbtransporte.com, 0
+ypmate.com, 0
+ypt.or.id, 0
+yq24.net, 0
+yrce.cn, 0
+yrom.net, 0
+ys137.com, 0
+ys7.com, 0
+yscredit.com, 0
+ysepay.com, 0
+ysmu.ru, 0
+ysn.ru, 0
+ysu.edu.cn, 0
+ytdestek.com, 0
+ytvpn.net.cn, 0
+yu0123456.com, 0
+yuadon.com, 0
+yuanbao365.com, 0
+yuanlai521.com, 0
+yubaibaii.com, 0
+yueing.org, 0
+yuejiadai.com, 0
+yueus.com, 0
+yuewen.com, 0
+yufan.me, 0
+yugcontract.ua, 0
+yugiohcardmarket.eu, 0
+yugiohgameonline.com.br, 0
+yuhong.com.cn, 0
+yui-nya.com, 0
+yulong.com, 0
+yumama.com, 0
+yunaq.com, 0
+yunaw.com, 0
+yunbore.com, 0
+yuncaijing.com, 0
+yundun.cn, 0
+yundun.com, 0
+yuneec.cn, 0
+yunhou.com, 0
+yunifang.com, 0
+yunjiazheng.com, 0
+yunjiweidian.com, 0
+yunpan.cn, 0
+yunserver.com, 0
+yunshanmeicai.com, 0
+yuntech.edu.tw, 0
+yuntoo.com, 0
+yunyichong.com, 0
+yunyuejuan.net, 0
+yunyy.cc, 0
+yunzhijia.com, 0
+yusen-logistics.com, 0
+yushuangqi.com, 0
+yusupov-palace.ru, 0
+yutong.com, 0
+yuuby.com, 0
+yuugames.com.cn, 0
+yuying360.com, 0
+yuyue.com.cn, 0
+yuzhoutuofu.com, 0
+ywhuo.com, 0
+ywtywt.com, 0
+ywu.cn, 0
+yxlady.com, 0
+yxsvpn.com, 0
+yy4480.org, 0
+yy6080.org, 0
+yybei.cn, 0
+yywkt.org, 0
+yznu.cn, 0
+z0download.com, 0
+z3news.com, 0
+zaba.hr, 0
+zabedu.ru, 0
+zabi.cz, 0
+zaixiaoren.com, 0
+zajecaronline.com, 0
+zakka.com.tw, 0
+zakonyprolidi.cz, 0
+zakopane.pl, 0
+zamel.pl, 0
+zampdsp.com, 0
+zankhakasia.ru, 0
+zaodula.com, 0
+zaoshu.io, 0
+zapable.com, 0
+zap-hosting.com, 0
+za.pl, 0
+zap.md, 0
+zapr.in, 0
+zapster.it, 0
+zapster.ru, 0
+zapto.org, 0
+zarayef.com, 0
+zarfund.com, 0
+zargaripour.com, 0
+zarinp.al, 0
+zarovi.cz, 0
+zarulem.by, 0
+zastavok.net, 0
+zatlanka.cz, 0
+zatunen.com, 0
+zavod.co.rs, 0
+zaymer.ru, 0
+zaymiprosto.ru, 0
+zbgl.net, 0
+zbj.com, 0
+zbytb.com, 0
+zc8hr.com, 0
+zcckj.com, 0
+zcmu.edu.cn, 0
+zczj.com, 0
+zdfans.com, 0
+zdomo.com, 0
+zdorov.li, 0
+zdraivery.ru, 0
+zdrav26.ru, 0
+zdrav36.ru, 0
+zdrav.spb.ru, 0
+zdrojak.cz, 0
+zdsoft.com, 0
+zdw.krakow.pl, 0
+ze.am, 0
+zebrablinds.ca, 0
+zebraboss.com, 0
+zeeandco.co.uk, 0
+zeemono.com, 0
+zeitnitz.eu, 0
+zelenaya.net, 0
+zelluloza.ru, 0
+zen.co.uk, 0
+zenden.ru, 0
+zendmin.com, 0
+zeneakademia.hu, 0
+zengram.ru, 0
+zenhotels.com, 0
+zenitel.com, 0
+zenius.net, 0
+zenmate.com, 0
+zenpage.cn, 0
+zenserv.fr, 0
+zentaizone.com, 0
+zephyrproject.org, 0
+zepire.com, 0
+zepo.ir, 0
+zerobest.net, 0
+zerohour-productions.net, 0
+zero.kz, 0
+zetail.com.tw, 0
+zetes.com, 0
+zeto.com.ua, 0
+zfilm-hd.net, 0
+zf-projects.ru, 0
+zgboke.com, 0
+zggtxhw.com, 0
+zgny.com.cn, 0
+zgpingshu.com, 0
+zh30.com, 0
+zhacker.net, 0
+zhaishuge.com, 0
+zhanad.com, 0
+zhangge.net, 0
+zhangziran.com, 0
+zhaodl.xyz, 0
+zhaoj.in, 0
+zhaokeli.com, 0
+zhaopin.com, 0
+zhaorannote.cn, 0
+zhaoshangdai.com, 0
+zhaosuliao.com, 0
+zhbor.com, 0
+zhcw.com, 0
+zhe800.com, 0
+zhenai.com, 0
+zhenfund.com, 0
+zhengjie.com, 0
+zhengxianjun.com, 0
+zhibs.net, 0
+zhidx.com, 0
+zhihedongfang.com, 0
+zhiku8.com, 0
+zhimei360.com, 0
+zhique.com, 0
+zhisheji.com, 0
+zhitanska.com, 0
+zhitouwang.cn, 0
+zhiwei.li, 0
+zhiwo.com, 0
+zhiyanblog.com, 0
+zhizaoyun.com, 0
+zhizishe.com, 0
+zhiziyun.com, 0
+zhizuobiao.com, 0
+zhjtong.com, 0
+zhong5.cn, 0
+zhongan.com, 0
+zhonganonline.com, 0
+zhongguowangshi.com, 0
+zhongjiu.cn, 0
+zhongye.net, 0
+zhongziso.com, 0
+zhou92.com, 0
+zhoulujun.cn, 0
+zhovner.com, 0
+zhuang.ba, 0
+zhuankezhijia.com, 0
+zhuanyejun.com, 0
+zhuanyejun.net, 0
+zhuatieba.com, 0
+zhubaoleyuan.com, 0
+zhufaner.com, 0
+zhujike.com, 0
+zhujiwu.me, 0
+zhuna.cn, 0
+zhushou001.com, 0
+zhuwei.me, 0
+zhuzi.me, 0
+zhyk.ru, 0
+ziferblat.net, 0
+zige.la, 0
+ziguangcn.com, 0
+zigzag.kr, 0
+zijilai.com.cn, 0
+zik.ua, 0
+zilanhua.com, 0
+zilingo.com, 0
+zinceuro.sk, 0
+zionrd.com, 0
+zip-anime.xyz, 0
+zip-area.com, 0
+zipbob.net, 0
+zip.ch, 0
+ziping.ir, 0
+zipy.co.il, 0
+zitian.cn, 0
+ziwork.com, 0
+ziy.cc, 0
+ziyonet.uz, 0
+ziyoufang.com, 0
+ziyuanmao.com, 0
+zj.com, 0
+zjds.gov.cn, 0
+zjjt365.com, 0
+zjjw.com, 0
+zjmax.com, 0
+zjport.gov.cn, 0
+zjsafety.gov.cn, 0
+zju.edu.cn, 0
+zjuqsc.com, 0
+zjut.edu.cn, 0
+zju.tools, 0
+zjzwfw.gov.cn, 0
+zkteco.com, 0
+zkungfu.com, 0
+zlatmax.ru, 0
+zlavadna.sk, 0
+zlfund.cn, 0
+zlqh.com, 0
+zlx3323.top, 0
+zm123.com, 0
+zmap.io, 0
+zmirrordemo.com, 0
+zmodo.com, 0
+znakomstva.ru, 0
+znaxyar.ru, 0
+znds.com, 0
+znojmo.cz, 0
+zntec.cn, 0
+zockerbuden.community, 0
+zoc-max.sk, 0
+zodgame.us, 0
+zodio.com, 0
+zol.com.cn, 0
+zomake.com, 0
+zomro.com, 0
+zonakz.net, 0
+zonazvuka.ru, 0
+zone-game.info, 0
+zoobax.com, 0
+zoo-bazar.com, 0
+zoodshoor.com, 0
+zoo.gr, 0
+zoolnews.com, 0
+zoomlion.com, 0
+zoomsquare.com, 0
+zoomsquare.de, 0
+zoossoft.cn, 0
+zori.pt, 0
+zor.uz, 0
+zoublog.com, 0
+zoznamrealit.sk, 0
+zoznamtovaru.sk, 0
+z-payment.com, 0
+z-payment.info, 0
+zph.com.cn, 0
+zproxy.de, 0
+zpua.com.ua, 0
+zqgame.com, 0
+zqu.edu.cn, 0
+zqzhibo.com, 0
+zrbao.com, 0
+zrss.si, 0
+zryhyy.com.cn, 0
+zsben.cz, 0
+zsedu.net, 0
+zs.gov.cn, 0
+zsnet.com, 0
+zsnso.ru, 0
+zt.com, 0
+ztedevice.com, 0
+z-telecom.net, 0
+z-terra.ru, 0
+ztgame.com, 0
+ztmao.com, 0
+ztm.poznan.pl, 0
+ztydata.cn, 0
+zuadr.com, 0
+zuanbank.com, 0
+zu.edu.ua, 0
+zug4.me, 0
+zugunder.com, 0
+zuimc.com, 0
+zun.com, 0
+zupoec.com, 0
+zurich.at, 0
+zust.edu.cn, 0
+zveronline.ru, 0
+zvuk.me, 0
+zwettl.at, 0
+zwwysoft.com, 0
+zxcnw.com, 0
+zxc.science, 0
+zxdl.pw, 0
+zxerp.com, 0
+zx-pk.ru, 0
+zxtsg.com, 0
+zxzxzx.info, 0
+zy127.com, 0
+zycao.com, 0
+zychal.net, 0
+zyctd.com, 0
+zye.cc, 0
+zygames.com, 0
+zylsl.com, 0
+zyns.com, 0
+zype.com, 0
+zyq108.com, 0
+zyxel.by, 0
+zyxr.com, 0
+zzidc.com, 0
+zz.vc, 0
+zzy.cn, 0
+zzz.com.ua, 0
+zzz.sk, 0
+%%
diff --git a/net/http2/decoder/decode_buffer_test.cc b/net/http2/decoder/decode_buffer_test.cc
index a4d10d7c..a7279656 100644
--- a/net/http2/decoder/decode_buffer_test.cc
+++ b/net/http2/decoder/decode_buffer_test.cc
@@ -16,6 +16,7 @@
 
 namespace net {
 namespace test {
+namespace {
 
 enum class TestEnumClass32 {
   kValue1 = 1,
@@ -374,5 +375,6 @@
 }
 #endif  // GTEST_HAS_DEATH_TEST && !defined(NDEBUG)
 
+}  // namespace
 }  // namespace test
 }  // namespace net
diff --git a/net/http2/decoder/decode_http2_structures_test.cc b/net/http2/decoder/decode_http2_structures_test.cc
index 0a76bdc..1c84cf7 100644
--- a/net/http2/decoder/decode_http2_structures_test.cc
+++ b/net/http2/decoder/decode_http2_structures_test.cc
@@ -47,11 +47,13 @@
  protected:
   typedef S Structure;
 
-  StructureDecoderTest() {
+  StructureDecoderTest() : random_decode_count_(100) {
+    CHECK_LE(random_decode_count_, 1000u * 1000u) << "That should be plenty!";
     // IF the test adds more data after the encoded structure, stop as
     // soon as the structure is decoded.
     stop_decode_on_done_ = true;
   }
+  ~StructureDecoderTest() override {}
 
   // Reset the decoding to the start of the structure, and overwrite the
   // current contents of |structure_|, in to which we'll decode the buffer.
@@ -165,6 +167,7 @@
 
   // Generate
   void TestDecodingRandomizedStructures(size_t count) {
+    EXPECT_LT(count, 1000u * 1000u) << "That should be plenty!";
     for (size_t i = 0; i < count && !HasFailure(); ++i) {
       Structure input;
       Randomize(&input);
@@ -172,6 +175,11 @@
     }
   }
 
+  void TestDecodingRandomizedStructures() {
+    TestDecodingRandomizedStructures(random_decode_count_);
+  }
+
+  const size_t random_decode_count_;
   uint32_t decode_offset_ = 0;
   S structure_;
   size_t fast_decode_count_ = 0;
@@ -218,7 +226,7 @@
 }
 
 TEST_F(FrameHeaderDecoderTest, DecodesRandomized) {
-  TestDecodingRandomizedStructures(100);
+  TestDecodingRandomizedStructures();
 }
 
 //------------------------------------------------------------------------------
@@ -255,7 +263,7 @@
 }
 
 TEST_F(PriorityFieldsDecoderTest, DecodesRandomized) {
-  TestDecodingRandomizedStructures(100);
+  TestDecodingRandomizedStructures();
 }
 
 //------------------------------------------------------------------------------
@@ -287,7 +295,7 @@
 }
 
 TEST_F(RstStreamFieldsDecoderTest, DecodesRandomized) {
-  TestDecodingRandomizedStructures(100);
+  TestDecodingRandomizedStructures();
 }
 
 //------------------------------------------------------------------------------
@@ -323,7 +331,7 @@
 }
 
 TEST_F(SettingFieldsDecoderTest, DecodesRandomized) {
-  TestDecodingRandomizedStructures(100);
+  TestDecodingRandomizedStructures();
 }
 
 //------------------------------------------------------------------------------
@@ -355,7 +363,7 @@
 }
 
 TEST_F(PushPromiseFieldsDecoderTest, DecodesRandomized) {
-  TestDecodingRandomizedStructures(100);
+  TestDecodingRandomizedStructures();
 }
 
 //------------------------------------------------------------------------------
@@ -395,7 +403,7 @@
 }
 
 TEST_F(PingFieldsDecoderTest, DecodesRandomized) {
-  TestDecodingRandomizedStructures(100);
+  TestDecodingRandomizedStructures();
 }
 
 //------------------------------------------------------------------------------
@@ -443,7 +451,7 @@
 }
 
 TEST_F(GoAwayFieldsDecoderTest, DecodesRandomized) {
-  TestDecodingRandomizedStructures(100);
+  TestDecodingRandomizedStructures();
 }
 
 //------------------------------------------------------------------------------
@@ -475,10 +483,12 @@
   {
     // Increment has R-bit (reserved for future use) set, which
     // should be cleared by the decoder.
+    // clang-format off
     const char kData[] = {
-        0xffu, 0xffu, 0xffu,
-        0xffu,  // Window Size Increment: max uint31 and R-bit
+        // Window Size Increment: max uint31 and R-bit
+        0xffu, 0xffu, 0xffu, 0xffu,
     };
+    // clang-format on
     DecodeLeadingStructure(kData);
     if (!HasFailure()) {
       EXPECT_EQ(StreamIdMask(), structure_.window_size_increment);
@@ -487,7 +497,7 @@
 }
 
 TEST_F(WindowUpdateFieldsDecoderTest, DecodesRandomized) {
-  TestDecodingRandomizedStructures(100);
+  TestDecodingRandomizedStructures();
 }
 
 //------------------------------------------------------------------------------
@@ -526,7 +536,7 @@
 }
 
 TEST_F(AltSvcFieldsDecoderTest, DecodesRandomized) {
-  TestDecodingRandomizedStructures(100);
+  TestDecodingRandomizedStructures();
 }
 
 }  // namespace
diff --git a/net/http2/decoder/decode_status.cc b/net/http2/decoder/decode_status.cc
index 99a1de0b5..74b2380 100644
--- a/net/http2/decoder/decode_status.cc
+++ b/net/http2/decoder/decode_status.cc
@@ -5,6 +5,7 @@
 #include "net/http2/decoder/decode_status.h"
 
 #include "base/logging.h"
+#include "net/http2/tools/http2_bug_tracker.h"
 
 namespace net {
 
@@ -20,8 +21,8 @@
   // Since the value doesn't come over the wire, only a programming bug should
   // result in reaching this point.
   int unknown = static_cast<int>(v);
-  LOG(DFATAL) << "Unknown DecodeStatus " << unknown << std::hex << unknown;
-  return out << "UnknownDecodeStatus(" << unknown << ")";
+  HTTP2_BUG << "Unknown DecodeStatus " << unknown;
+  return out << "DecodeStatus(" << unknown << ")";
 }
 
 }  // namespace net
diff --git a/net/http2/decoder/http2_frame_decoder.cc b/net/http2/decoder/http2_frame_decoder.cc
index fe24f91..46275027 100644
--- a/net/http2/decoder/http2_frame_decoder.cc
+++ b/net/http2/decoder/http2_frame_decoder.cc
@@ -5,6 +5,7 @@
 #include "net/http2/decoder/http2_frame_decoder.h"
 
 #include "net/http2/http2_constants.h"
+#include "net/http2/tools/http2_bug_tracker.h"
 
 namespace net {
 
@@ -19,7 +20,11 @@
     case Http2FrameDecoder::State::kDiscardPayload:
       return out << "kDiscardPayload";
   }
-  return out << static_cast<int>(v);
+  // Since the value doesn't come over the wire, only a programming bug should
+  // result in reaching this point.
+  int unknown = static_cast<int>(v);
+  HTTP2_BUG << "Http2FrameDecoder::State " << unknown;
+  return out << "Http2FrameDecoder::State(" << unknown << ")";
 }
 
 Http2FrameDecoder::Http2FrameDecoder(Http2FrameDecoderListener* listener)
diff --git a/net/http2/decoder/payload_decoders/altsvc_payload_decoder.cc b/net/http2/decoder/payload_decoders/altsvc_payload_decoder.cc
index fe0e8c2..10f6b48 100644
--- a/net/http2/decoder/payload_decoders/altsvc_payload_decoder.cc
+++ b/net/http2/decoder/payload_decoders/altsvc_payload_decoder.cc
@@ -28,7 +28,11 @@
     case AltSvcPayloadDecoder::PayloadState::kResumeDecodingStruct:
       return out << "kResumeDecodingStruct";
   }
-  return out << static_cast<int>(v);
+  // Since the value doesn't come over the wire, only a programming bug should
+  // result in reaching this point.
+  int unknown = static_cast<int>(v);
+  HTTP2_BUG << "Invalid AltSvcPayloadDecoder::PayloadState: " << unknown;
+  return out << "AltSvcPayloadDecoder::PayloadState(" << unknown << ")";
 }
 
 DecodeStatus AltSvcPayloadDecoder::StartDecodingPayload(
diff --git a/net/http2/decoder/payload_decoders/data_payload_decoder.cc b/net/http2/decoder/payload_decoders/data_payload_decoder.cc
index 60b8a714..794973b 100644
--- a/net/http2/decoder/payload_decoders/data_payload_decoder.cc
+++ b/net/http2/decoder/payload_decoders/data_payload_decoder.cc
@@ -26,7 +26,11 @@
     case DataPayloadDecoder::PayloadState::kSkipPadding:
       return out << "kSkipPadding";
   }
-  return out << static_cast<int>(v);
+  // Since the value doesn't come over the wire, only a programming bug should
+  // result in reaching this point.
+  int unknown = static_cast<int>(v);
+  HTTP2_BUG << "Invalid DataPayloadDecoder::PayloadState: " << unknown;
+  return out << "DataPayloadDecoder::PayloadState(" << unknown << ")";
 }
 
 DecodeStatus DataPayloadDecoder::StartDecodingPayload(FrameDecoderState* state,
diff --git a/net/http2/decoder/payload_decoders/goaway_payload_decoder.cc b/net/http2/decoder/payload_decoders/goaway_payload_decoder.cc
index f5b597f..c3c4e8a 100644
--- a/net/http2/decoder/payload_decoders/goaway_payload_decoder.cc
+++ b/net/http2/decoder/payload_decoders/goaway_payload_decoder.cc
@@ -28,9 +28,11 @@
     case GoAwayPayloadDecoder::PayloadState::kResumeDecodingFixedFields:
       return out << "kResumeDecodingFixedFields";
   }
-
-  NOTREACHED();
-  return out;
+  // Since the value doesn't come over the wire, only a programming bug should
+  // result in reaching this point.
+  int unknown = static_cast<int>(v);
+  HTTP2_BUG << "Invalid GoAwayPayloadDecoder::PayloadState: " << unknown;
+  return out << "GoAwayPayloadDecoder::PayloadState(" << unknown << ")";
 }
 
 DecodeStatus GoAwayPayloadDecoder::StartDecodingPayload(
diff --git a/net/http2/decoder/payload_decoders/headers_payload_decoder.cc b/net/http2/decoder/payload_decoders/headers_payload_decoder.cc
index eff1d3b..b09bf63c 100644
--- a/net/http2/decoder/payload_decoders/headers_payload_decoder.cc
+++ b/net/http2/decoder/payload_decoders/headers_payload_decoder.cc
@@ -30,7 +30,11 @@
     case HeadersPayloadDecoder::PayloadState::kSkipPadding:
       return out << "kSkipPadding";
   }
-  return out << static_cast<int>(v);
+  // Since the value doesn't come over the wire, only a programming bug should
+  // result in reaching this point.
+  int unknown = static_cast<int>(v);
+  HTTP2_BUG << "Invalid HeadersPayloadDecoder::PayloadState: " << unknown;
+  return out << "HeadersPayloadDecoder::PayloadState(" << unknown << ")";
 }
 
 DecodeStatus HeadersPayloadDecoder::StartDecodingPayload(
diff --git a/net/http2/decoder/payload_decoders/settings_payload_decoder_test.cc b/net/http2/decoder/payload_decoders/settings_payload_decoder_test.cc
index 4d26e1b..6f065c6 100644
--- a/net/http2/decoder/payload_decoders/settings_payload_decoder_test.cc
+++ b/net/http2/decoder/payload_decoders/settings_payload_decoder_test.cc
@@ -142,8 +142,8 @@
 
 // Decode a SETTINGS frame with lots of fields.
 TEST_F(SettingsPayloadDecoderTest, ManySettings) {
-  const uint32_t num_settings = 100;
-  const uint32_t size = Http2SettingFields::EncodedSize() * num_settings;
+  const size_t num_settings = 100;
+  const size_t size = Http2SettingFields::EncodedSize() * num_settings;
   Http2FrameHeader header(size, Http2FrameType::SETTINGS,
                           RandFlags(),  // & ~Http2FrameFlag::FLAG_ACK,
                           RandStreamId());
diff --git a/net/http2/hpack/decoder/hpack_decoder_string_buffer.cc b/net/http2/hpack/decoder/hpack_decoder_string_buffer.cc
index 346a862..e38f42d 100644
--- a/net/http2/hpack/decoder/hpack_decoder_string_buffer.cc
+++ b/net/http2/hpack/decoder/hpack_decoder_string_buffer.cc
@@ -7,6 +7,7 @@
 #include <utility>
 
 #include "base/logging.h"
+#include "net/http2/tools/http2_bug_tracker.h"
 
 using base::StringPiece;
 using std::string;
@@ -22,9 +23,12 @@
       return out << "COLLECTING";
     case HpackDecoderStringBuffer::State::COMPLETE:
       return out << "COMPLETE";
-    default:
-      return out << "Unknown HpackDecoderStringBuffer::State!";
   }
+  // Since the value doesn't come over the wire, only a programming bug should
+  // result in reaching this point.
+  int unknown = static_cast<int>(v);
+  HTTP2_BUG << "Invalid HpackDecoderStringBuffer::State: " << unknown;
+  return out << "HpackDecoderStringBuffer::State(" << unknown << ")";
 }
 
 std::ostream& operator<<(std::ostream& out,
@@ -38,9 +42,12 @@
       return out << "BUFFERED";
     case HpackDecoderStringBuffer::Backing::STATIC:
       return out << "STATIC";
-    default:
-      return out << "Unknown HpackDecoderStringBuffer::Backing!";
   }
+  // Since the value doesn't come over the wire, only a programming bug should
+  // result in reaching this point.
+  auto v2 = static_cast<int>(v);
+  HTTP2_BUG << "Invalid HpackDecoderStringBuffer::Backing: " << v2;
+  return out << "HpackDecoderStringBuffer::Backing(" << v2 << ")";
 }
 
 HpackDecoderStringBuffer::HpackDecoderStringBuffer()
diff --git a/printing/pdf_render_settings.h b/printing/pdf_render_settings.h
index d9e8f9e7..60425ec 100644
--- a/printing/pdf_render_settings.h
+++ b/printing/pdf_render_settings.h
@@ -5,6 +5,9 @@
 #ifndef PRINTING_PDF_RENDER_SETTINGS_H_
 #define PRINTING_PDF_RENDER_SETTINGS_H_
 
+#include <stdint.h>
+
+#include "ipc/ipc_message_macros.h"
 #include "ipc/ipc_message_utils.h"
 #include "ipc/ipc_param_traits.h"
 #include "printing/printing_export.h"
@@ -16,45 +19,28 @@
 
 // Defining PDF rendering settings.
 struct PdfRenderSettings {
-  PdfRenderSettings() : dpi(0), autorotate(false) {}
-  PdfRenderSettings(gfx::Rect area, int dpi, bool autorotate)
-      : area(area), dpi(dpi), autorotate(autorotate) {}
+  enum Mode {
+    NORMAL = 0,
+#if defined(OS_WIN)
+    GDI_TEXT,
+    LAST = GDI_TEXT,
+#else
+    LAST = NORMAL,
+#endif
+  };
+
+  PdfRenderSettings() : dpi(0), autorotate(false), mode(Mode::NORMAL) {}
+  PdfRenderSettings(gfx::Rect area, int dpi, bool autorotate, Mode mode)
+      : area(area), dpi(dpi), autorotate(autorotate), mode(mode) {}
   ~PdfRenderSettings() {}
 
   gfx::Rect area;
   int dpi;
   bool autorotate;
+  Mode mode;
 };
 
 }  // namespace printing
 
-namespace IPC {
-template <>
-struct ParamTraits<printing::PdfRenderSettings> {
-  typedef printing::PdfRenderSettings param_type;
-  static void Write(base::Pickle* m, const param_type& p) {
-    WriteParam(m, p.area);
-    WriteParam(m, p.dpi);
-    WriteParam(m, p.autorotate);
-  }
-
-  static bool Read(const base::Pickle* m,
-                   base::PickleIterator* iter,
-                   param_type* r) {
-    return ReadParam(m, iter, &r->area) &&
-        ReadParam(m, iter, &r->dpi) &&
-        ReadParam(m, iter, &r->autorotate);
-  }
-
-  static void Log(const param_type& p, std::string* l) {
-    LogParam(p.area, l);
-    l->append(", ");
-    LogParam(p.dpi, l);
-    l->append(", ");
-    LogParam(p.autorotate, l);
-  }
-};
-
-}  // namespace IPC
-
 #endif  // PRINTING_PDF_RENDER_SETTINGS_H_
+
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json
index 1ebd4ac..7584d36 100644
--- a/testing/variations/fieldtrial_testing_config.json
+++ b/testing/variations/fieldtrial_testing_config.json
@@ -2260,6 +2260,21 @@
             ]
         }
     ],
+    "SiteIsolationForExtensions": [
+        {
+            "platforms": [
+                "chromeos",
+                "linux",
+                "mac",
+                "win"
+            ],
+            "experiments": [
+                {
+                    "name": "Enabled"
+                }
+            ]
+        }
+    ],
     "SpeculativeLaunchServiceWorker": [
         {
             "platforms": [
diff --git a/third_party/WebKit/LayoutTests/compositing/squashing/clipping-ancestor.html b/third_party/WebKit/LayoutTests/compositing/squashing/clipping-ancestor.html
index 470938c..505179e 100644
--- a/third_party/WebKit/LayoutTests/compositing/squashing/clipping-ancestor.html
+++ b/third_party/WebKit/LayoutTests/compositing/squashing/clipping-ancestor.html
@@ -8,9 +8,6 @@
     if (window.testRunner)
         testRunner.dumpAsText();
 
-    if (window.internals)
-        internals.settings.setLayerSquashingEnabled(true);
-
     function dumpLayers()
     {
         var layersResult = document.getElementById('layers');
diff --git a/third_party/WebKit/LayoutTests/webaudio/resources/audit.js b/third_party/WebKit/LayoutTests/webaudio/resources/audit.js
index 6bfaa9e..3c81576c 100644
--- a/third_party/WebKit/LayoutTests/webaudio/resources/audit.js
+++ b/third_party/WebKit/LayoutTests/webaudio/resources/audit.js
@@ -198,7 +198,9 @@
       this._result = Boolean(condition);
       this._detail = this._result ? passDetail : failDetail;
       this._buildResultText();
-      return this._finalize();
+      this._finalize();
+
+      return this._result;
     }
 
     get result () {
diff --git a/third_party/WebKit/LayoutTests/webaudio/unit-tests/audit-expected.txt b/third_party/WebKit/LayoutTests/webaudio/unit-tests/audit-expected.txt
index 94558f3..ac6a487 100644
--- a/third_party/WebKit/LayoutTests/webaudio/unit-tests/audit-expected.txt
+++ b/third_party/WebKit/LayoutTests/webaudio/unit-tests/audit-expected.txt
@@ -24,10 +24,12 @@
 PASS   2 is greater than or equal to 2. 
 PASS   1 is less than 2. 
 PASS   1 is less than or equal to 1. 
+PASS   1 is equal to 1. 
+PASS   should(1).beEqualTo(1) is true. 
 PASS   Decoding audio data with no argument rejected correctly with TypeError: Failed to execute 'decodeAudioData' on 'BaseAudioContext': 1 argument required, but only 0 present.. 
 PASS   Suspending OAC with no argument rejected correctly with TypeError. 
 PASS   Start OAC rendering resolved correctly. 
-PASS < [basic] All assertions passed. (total 16 assertions) 
+PASS < [basic] All assertions passed. (total 18 assertions) 
 PASS # AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully. 
 Harness: the test ran to completion.
 
diff --git a/third_party/WebKit/LayoutTests/webaudio/unit-tests/audit-failures-expected.txt b/third_party/WebKit/LayoutTests/webaudio/unit-tests/audit-failures-expected.txt
index 86d52e3..09accc9 100644
--- a/third_party/WebKit/LayoutTests/webaudio/unit-tests/audit-failures-expected.txt
+++ b/third_party/WebKit/LayoutTests/webaudio/unit-tests/audit-failures-expected.txt
@@ -13,10 +13,12 @@
 FAIL X 1 is not greater than or equal to 2. Got 1. assert_true: expected true got false
 FAIL X 2 is not less than 1. Got 2. assert_true: expected true got false
 FAIL X 2 is not less than or equal to 1. Got 2. assert_true: expected true got false
+FAIL X 1 is not equal to 2. Got 1. assert_true: expected true got false
+FAIL X should(1).beEqualTo(2) is not true. Got false. assert_true: expected true got false
 FAIL X Decoding audio data with no argument rejected incorrectly with TypeError: Failed to execute 'decodeAudioData' on 'BaseAudioContext': 1 argument required, but only 0 present.. Got undefined. assert_true: expected true got false
 FAIL X Suspending OAC with no argument rejected correctly but got TypeError instead of IndexSizeError. Got undefined. assert_true: expected true got false
 FAIL X Start OAC rendering resolved incorrectly. Got undefined. assert_true: expected true got false
-FAIL < [basic-failure] 14 out of 14 assertions were failed. assert_true: expected true got false
+FAIL < [basic-failure] 16 out of 16 assertions were failed. assert_true: expected true got false
 PASS > [numerical-failures] Testing numerical assertion failures. 
 FAIL X 0 is not close to 0.1 within a relative error of 0 (RelErr=1). Got 0. assert_true: expected true got false
 FAIL X The measured decibel is not close to 62 within a relative error of 0.01 (RelErr=0.04838709677419355). Got 59. assert_true: expected true got false
diff --git a/third_party/WebKit/LayoutTests/webaudio/unit-tests/audit-failures.html b/third_party/WebKit/LayoutTests/webaudio/unit-tests/audit-failures.html
index 903edf9..8c5e955 100644
--- a/third_party/WebKit/LayoutTests/webaudio/unit-tests/audit-failures.html
+++ b/third_party/WebKit/LayoutTests/webaudio/unit-tests/audit-failures.html
@@ -34,6 +34,7 @@
       should(1).beGreaterThanOrEqualTo(2);
       should(2).beLessThan(1);
       should(2).beLessThanOrEqualTo(1);
+      should(should(1).beEqualTo(2), 'should(1).beEqualTo(2)').beTrue();
 
       let oac = new OfflineAudioContext(1, 128, 44100);
       Promise.all([
diff --git a/third_party/WebKit/LayoutTests/webaudio/unit-tests/audit.html b/third_party/WebKit/LayoutTests/webaudio/unit-tests/audit.html
index 7e4c831..e0e3f529 100644
--- a/third_party/WebKit/LayoutTests/webaudio/unit-tests/audit.html
+++ b/third_party/WebKit/LayoutTests/webaudio/unit-tests/audit.html
@@ -28,6 +28,7 @@
       should(2).beGreaterThanOrEqualTo(2);
       should(1).beLessThan(2);
       should(1).beLessThanOrEqualTo(1);
+      should(should(1).beEqualTo(1), 'should(1).beEqualTo(1)').beTrue();
 
       let oac = new OfflineAudioContext(1, 128, 44100);
       Promise.all([
diff --git a/third_party/WebKit/Source/core/frame/ImageBitmap.cpp b/third_party/WebKit/Source/core/frame/ImageBitmap.cpp
index cb40713..8b290ef 100644
--- a/third_party/WebKit/Source/core/frame/ImageBitmap.cpp
+++ b/third_party/WebKit/Source/core/frame/ImageBitmap.cpp
@@ -21,8 +21,15 @@
 
 namespace blink {
 
-static const char* imageOrientationFlipY = "flipY";
-static const char* imageBitmapOptionNone = "none";
+constexpr const char* kImageOrientationFlipY = "flipY";
+constexpr const char* kImageBitmapOptionNone = "none";
+constexpr const char* kImageBitmapOptionDefault = "default";
+constexpr const char* kImageBitmapOptionPremultiply = "premultiply";
+constexpr const char* kImageBitmapOptionResizeQualityHigh = "high";
+constexpr const char* kImageBitmapOptionResizeQualityMedium = "medium";
+constexpr const char* kImageBitmapOptionResizeQualityPixelated = "pixelated";
+constexpr const char* kSRGBImageBitmapColorSpaceConversion = "srgb";
+constexpr const char* kLinearRGBImageBitmapColorSpaceConversion = "linear-rgb";
 
 namespace {
 
@@ -56,35 +63,37 @@
                            Optional<IntRect> cropRect,
                            IntSize sourceSize) {
   ParsedOptions parsedOptions;
-  if (options.imageOrientation() == imageOrientationFlipY) {
+  if (options.imageOrientation() == kImageOrientationFlipY) {
     parsedOptions.flipY = true;
   } else {
     parsedOptions.flipY = false;
-    DCHECK(options.imageOrientation() == imageBitmapOptionNone);
+    DCHECK(options.imageOrientation() == kImageBitmapOptionNone);
   }
-  if (options.premultiplyAlpha() == imageBitmapOptionNone) {
+  if (options.premultiplyAlpha() == kImageBitmapOptionNone) {
     parsedOptions.premultiplyAlpha = false;
   } else {
     parsedOptions.premultiplyAlpha = true;
-    DCHECK(options.premultiplyAlpha() == "default" ||
-           options.premultiplyAlpha() == "premultiply");
+    DCHECK(options.premultiplyAlpha() == kImageBitmapOptionDefault ||
+           options.premultiplyAlpha() == kImageBitmapOptionPremultiply);
   }
 
-  if (options.colorSpaceConversion() != imageBitmapOptionNone) {
+  if (options.colorSpaceConversion() != kImageBitmapOptionNone) {
     if (!RuntimeEnabledFeatures::experimentalCanvasFeaturesEnabled() ||
         !RuntimeEnabledFeatures::colorCorrectRenderingEnabled()) {
-      DCHECK_EQ(options.colorSpaceConversion(), "default");
+      DCHECK_EQ(options.colorSpaceConversion(), kImageBitmapOptionDefault);
       if (RuntimeEnabledFeatures::colorCorrectRenderingDefaultModeEnabled()) {
         parsedOptions.dstColorSpace = ColorBehavior::globalTargetColorSpace();
         parsedOptions.dstColorType = SkColorType::kN32_SkColorType;
       }
     } else {
-      if (options.colorSpaceConversion() == "default" ||
-          options.colorSpaceConversion() == "srgb") {
+      if (options.colorSpaceConversion() == kImageBitmapOptionDefault ||
+          options.colorSpaceConversion() ==
+              kSRGBImageBitmapColorSpaceConversion) {
         parsedOptions.dstColorSpace =
             SkColorSpace::MakeNamed(SkColorSpace::kSRGB_Named);
         parsedOptions.dstColorType = SkColorType::kN32_SkColorType;
-      } else if (options.colorSpaceConversion() == "linear-rgb") {
+      } else if (options.colorSpaceConversion() ==
+                 kLinearRGBImageBitmapColorSpaceConversion) {
         parsedOptions.dstColorSpace =
             SkColorSpace::MakeNamed(SkColorSpace::kSRGBLinear_Named);
         parsedOptions.dstColorType = SkColorType::kRGBA_F16_SkColorType;
@@ -129,11 +138,11 @@
   }
   parsedOptions.shouldScaleInput = true;
 
-  if (options.resizeQuality() == "high")
+  if (options.resizeQuality() == kImageBitmapOptionResizeQualityHigh)
     parsedOptions.resizeQuality = kHigh_SkFilterQuality;
-  else if (options.resizeQuality() == "medium")
+  else if (options.resizeQuality() == kImageBitmapOptionResizeQualityMedium)
     parsedOptions.resizeQuality = kMedium_SkFilterQuality;
-  else if (options.resizeQuality() == "pixelated")
+  else if (options.resizeQuality() == kImageBitmapOptionResizeQualityPixelated)
     parsedOptions.resizeQuality = kNone_SkFilterQuality;
   else
     parsedOptions.resizeQuality = kLow_SkFilterQuality;
@@ -557,7 +566,7 @@
   if (dstBufferSizeHasOverflow(parsedOptions))
     return;
 
-  if (options.colorSpaceConversion() == imageBitmapOptionNone) {
+  if (options.colorSpaceConversion() == kImageBitmapOptionNone) {
     m_image = cropImageAndApplyColorSpaceConversion(
         input.get(), parsedOptions, PremultiplyAlpha, ColorBehavior::ignore());
   } else {
diff --git a/third_party/WebKit/Source/core/frame/Settings.json5 b/third_party/WebKit/Source/core/frame/Settings.json5
index 7ddfe07..1cde79f6 100644
--- a/third_party/WebKit/Source/core/frame/Settings.json5
+++ b/third_party/WebKit/Source/core/frame/Settings.json5
@@ -570,13 +570,6 @@
       initial: false,
     },
 
-    // FIXME: This is a temporary flag and should be removed
-    // when squashing is ready. (crbug.com/261605)
-    {
-      name: "layerSquashingEnabled",
-      initial: false,
-    },
-
     // Clients that execute script should call ScriptController::canExecuteScripts()
     // instead of this function. ScriptController::canExecuteScripts() checks the
     // HTML sandbox, plugin sandboxing, and other important details.
diff --git a/third_party/WebKit/Source/core/layout/ScrollAnchor.cpp b/third_party/WebKit/Source/core/layout/ScrollAnchor.cpp
index 84badd5..68b2bb22 100644
--- a/third_party/WebKit/Source/core/layout/ScrollAnchor.cpp
+++ b/third_party/WebKit/Source/core/layout/ScrollAnchor.cpp
@@ -76,18 +76,17 @@
     localBounds = toLayoutBox(layoutObject)->borderBoxRect();
     if (!layoutObject->hasOverflowClip()) {
       // borderBoxRect doesn't include overflow content and floats.
-      LayoutUnit maxHeight =
-          std::max(localBounds.height(),
-                   toLayoutBox(layoutObject)->layoutOverflowRect().height());
+      LayoutUnit maxY =
+          std::max(localBounds.maxY(),
+                   toLayoutBox(layoutObject)->layoutOverflowRect().maxY());
       if (layoutObject->isLayoutBlockFlow() &&
           toLayoutBlockFlow(layoutObject)->containsFloats()) {
         // Note that lowestFloatLogicalBottom doesn't include floating
         // grandchildren.
-        maxHeight = std::max(
-            maxHeight,
-            toLayoutBlockFlow(layoutObject)->lowestFloatLogicalBottom());
+        maxY = std::max(
+            maxY, toLayoutBlockFlow(layoutObject)->lowestFloatLogicalBottom());
       }
-      localBounds.setHeight(maxHeight);
+      localBounds.shiftMaxYEdgeTo(maxY);
     }
   } else if (layoutObject->isText()) {
     // TODO(skobes): Use first and last InlineTextBox only?
diff --git a/third_party/WebKit/Source/core/layout/ScrollAnchorTest.cpp b/third_party/WebKit/Source/core/layout/ScrollAnchorTest.cpp
index 19de045..59fce49 100644
--- a/third_party/WebKit/Source/core/layout/ScrollAnchorTest.cpp
+++ b/third_party/WebKit/Source/core/layout/ScrollAnchorTest.cpp
@@ -575,6 +575,31 @@
             scrollAnchor(viewport).anchorObject());
 }
 
+// Test that we account for the origin of the layout overflow rect when
+// computing bounds for possible descent.
+TEST_P(ScrollAnchorTest, NegativeLayoutOverflow) {
+  setBodyInnerHTML(
+      "<style>"
+      "    body { height: 1200px; }"
+      "    #header { position: relative; height: 100px; }"
+      "    #evil { position: relative; "
+      "      top: -900px; height: 1000px; width: 100px; }"
+      "    #changer { height: 100px; }"
+      "    #anchor { height: 100px; background-color: green }"
+      "</style>"
+      "<div id='header'>"
+      "    <div id='evil'></div>"
+      "</div>"
+      "<div id='changer'></div>"
+      "<div id='anchor'></div>");
+
+  ScrollableArea* viewport = layoutViewport();
+
+  scrollLayoutViewport(ScrollOffset(0, 250));
+  setHeight(document().getElementById("changer"), 200);
+  EXPECT_EQ(350, viewport->scrollOffsetInt().height());
+}
+
 // Test that we descend into zero-height containers that have floating content.
 TEST_P(ScrollAnchorTest, DescendsIntoContainerWithFloat) {
   setBodyInnerHTML(
diff --git a/third_party/WebKit/Source/core/testing/InternalSettings.cpp b/third_party/WebKit/Source/core/testing/InternalSettings.cpp
index 6958a27..dc12dca 100644
--- a/third_party/WebKit/Source/core/testing/InternalSettings.cpp
+++ b/third_party/WebKit/Source/core/testing/InternalSettings.cpp
@@ -79,7 +79,6 @@
           RuntimeEnabledFeatures::langAttributeAwareFormControlUIEnabled()),
       m_imagesEnabled(settings->getImagesEnabled()),
       m_defaultVideoPosterURL(settings->getDefaultVideoPosterURL()),
-      m_originalLayerSquashingEnabled(settings->getLayerSquashingEnabled()),
       m_originalImageAnimationPolicy(settings->getImageAnimationPolicy()),
       m_originalScrollTopLeftInteropEnabled(
           RuntimeEnabledFeatures::scrollTopLeftInteropEnabled()),
diff --git a/third_party/WebKit/Source/core/testing/InternalSettings.h b/third_party/WebKit/Source/core/testing/InternalSettings.h
index b8b617a8..fff2cebb 100644
--- a/third_party/WebKit/Source/core/testing/InternalSettings.h
+++ b/third_party/WebKit/Source/core/testing/InternalSettings.h
@@ -70,7 +70,6 @@
     bool m_langAttributeAwareFormControlUIEnabled;
     bool m_imagesEnabled;
     String m_defaultVideoPosterURL;
-    bool m_originalLayerSquashingEnabled;
     ImageAnimationPolicy m_originalImageAnimationPolicy;
     bool m_originalScrollTopLeftInteropEnabled;
     bool m_originalCompositorWorkerEnabled;
diff --git a/third_party/WebKit/Source/devtools/front_end/cookie_table/CookiesTable.js b/third_party/WebKit/Source/devtools/front_end/cookie_table/CookiesTable.js
index 924330a0..a8b16f5 100644
--- a/third_party/WebKit/Source/devtools/front_end/cookie_table/CookiesTable.js
+++ b/third_party/WebKit/Source/devtools/front_end/cookie_table/CookiesTable.js
@@ -33,31 +33,48 @@
  */
 CookieTable.CookiesTable = class extends UI.VBox {
   /**
-   * @param {boolean} expandable
+   * @param {boolean} readOnly
    * @param {function()=} refreshCallback
    * @param {function()=} selectedCallback
+   * @param {string=} cookieDomain
    */
-  constructor(expandable, refreshCallback, selectedCallback) {
+  constructor(readOnly, refreshCallback, selectedCallback, cookieDomain) {
     super();
 
-    var readOnly = expandable;
+    this._readOnly = readOnly;
     this._refreshCallback = refreshCallback;
+    this._cookieDomain = cookieDomain;
 
     var columns = /** @type {!Array<!DataGrid.DataGrid.ColumnDescriptor>} */ ([
       {
         id: 'name',
         title: Common.UIString('Name'),
         sortable: true,
-        disclosure: expandable,
+        disclosure: !this._readOnly,
         sort: DataGrid.DataGrid.Order.Ascending,
         longText: true,
-        weight: 24
+        weight: 24,
+        editable: !this._readOnly
       },
-      {id: 'value', title: Common.UIString('Value'), sortable: true, longText: true, weight: 34},
-      {id: 'domain', title: Common.UIString('Domain'), sortable: true, weight: 7},
-      {id: 'path', title: Common.UIString('Path'), sortable: true, weight: 7},
-      {id: 'expires', title: Common.UIString('Expires / Max-Age'), sortable: true, weight: 7},
-      {id: 'size', title: Common.UIString('Size'), sortable: true, align: DataGrid.DataGrid.Align.Right, weight: 7}, {
+      {
+        id: 'value',
+        title: Common.UIString('Value'),
+        sortable: true,
+        longText: true,
+        weight: 34,
+        editable: !this._readOnly
+      },
+      {id: 'domain', title: Common.UIString('Domain'), sortable: true, weight: 7, editable: !this._readOnly},
+      {id: 'path', title: Common.UIString('Path'), sortable: true, weight: 7, editable: !this._readOnly},
+      {
+        id: 'expires',
+        title: Common.UIString('Expires / Max-Age'),
+        sortable: true,
+        weight: 7,
+        editable: !this._readOnly
+      },
+      {id: 'size', title: Common.UIString('Size'), sortable: true, align: DataGrid.DataGrid.Align.Right, weight: 7},
+      {
         id: 'httpOnly',
         title: Common.UIString('HTTP'),
         sortable: true,
@@ -80,10 +97,10 @@
       }
     ]);
 
-    if (readOnly) {
+    if (this._readOnly) {
       this._dataGrid = new DataGrid.DataGrid(columns);
     } else {
-      this._dataGrid = new DataGrid.DataGrid(columns, undefined, this._onDeleteCookie.bind(this), refreshCallback);
+      this._dataGrid = new DataGrid.DataGrid(columns, this._onUpdateCookie.bind(this), this._onDeleteCookie.bind(this), refreshCallback);
       this._dataGrid.setRowContextMenuCallback(this._onRowContextMenu.bind(this));
     }
 
@@ -94,6 +111,8 @@
       this._dataGrid.addEventListener(DataGrid.DataGrid.Events.SelectedNode, selectedCallback, this);
 
     this._nextSelectedCookie = /** @type {?SDK.Cookie} */ (null);
+    /** @type {?string} */
+    this._lastEditedColumnId = null;
 
     this._dataGrid.asWidget().show(this.element);
     this._data = [];
@@ -112,9 +131,11 @@
    * @param {!DataGrid.DataGridNode} node
    */
   _onRowContextMenu(contextMenu, node) {
-    if (node === this._dataGrid.creationNode)
+    if (node.isCreationNode)
       return;
-    var domain = node.cookie.domain();
+
+    const cookie = node.cookie;
+    const domain = cookie.domain();
     if (domain) {
       contextMenu.appendItem(
           Common.UIString.capitalize('Clear ^all from "%s"', domain), this._clearAndRefresh.bind(this, domain));
@@ -158,9 +179,18 @@
     }
   }
 
+  /**
+   * @override
+   */
+  willHide() {
+    this._lastEditedColumnId = null;
+  }
+
   _rebuildTable() {
     var selectedCookie = this._nextSelectedCookie || this.selectedCookie();
+    var lastEditedColumnId = this._lastEditedColumnId;
     this._nextSelectedCookie = null;
+    this._lastEditedColumnId = null;
     this._dataGrid.rootNode().removeChildren();
     for (var i = 0; i < this._data.length; ++i) {
       var item = this._data[i];
@@ -180,20 +210,25 @@
         groupNode.selectable = true;
         this._dataGrid.rootNode().appendChild(groupNode);
         groupNode.element().classList.add('row-group');
-        this._populateNode(groupNode, item.cookies, selectedCookie);
+        this._populateNode(groupNode, item.cookies, selectedCookie, lastEditedColumnId);
         groupNode.expand();
       } else {
-        this._populateNode(this._dataGrid.rootNode(), item.cookies, selectedCookie);
+        this._populateNode(this._dataGrid.rootNode(), item.cookies, selectedCookie, lastEditedColumnId);
       }
     }
+    if (selectedCookie && lastEditedColumnId && !this._dataGrid.selectedNode)
+      this._addInactiveNode(this._dataGrid.rootNode(), selectedCookie, lastEditedColumnId);
+    if (!this._readOnly)
+      this._dataGrid.addCreationNode(false);
   }
 
   /**
    * @param {!DataGrid.DataGridNode} parentNode
    * @param {?Array.<!SDK.Cookie>} cookies
    * @param {?SDK.Cookie} selectedCookie
+   * @param {?string} lastEditedColumnId
    */
-  _populateNode(parentNode, cookies, selectedCookie) {
+  _populateNode(parentNode, cookies, selectedCookie, lastEditedColumnId) {
     parentNode.removeChildren();
     if (!cookies)
       return;
@@ -204,11 +239,28 @@
       var cookieNode = this._createGridNode(cookie);
       parentNode.appendChild(cookieNode);
       if (selectedCookie && selectedCookie.name() === cookie.name() && selectedCookie.domain() === cookie.domain() &&
-          selectedCookie.path() === cookie.path())
+          selectedCookie.path() === cookie.path()) {
         cookieNode.select();
+        if (lastEditedColumnId !== null)
+          this._dataGrid.startEditingNextEditableColumnOfDataGridNode(cookieNode, lastEditedColumnId);
+      }
     }
   }
 
+  /**
+   * @param {!DataGrid.DataGridNode} parentNode
+   * @param {!SDK.Cookie} cookie
+   * @param {?string} editedColumnId
+   */
+  _addInactiveNode(parentNode, cookie, editedColumnId) {
+    const cookieNode = this._createGridNode(cookie);
+    parentNode.appendChild(cookieNode);
+    cookieNode.select();
+    cookieNode.setInactive(true);
+    if (editedColumnId !== null)
+      this._dataGrid.startEditingNextEditableColumnOfDataGridNode(cookieNode, editedColumnId);
+  }
+
   _totalSize(cookies) {
     var totalSize = 0;
     for (var i = 0; cookies && i < cookies.length; ++i)
@@ -297,7 +349,7 @@
       else if (cookie.expires())
         data.expires = new Date(cookie.expires()).toISOString();
       else
-        data.expires = Common.UIString('Session');
+        data.expires = CookieTable.CookiesTable._expiresSessionValue;
     }
     data.size = cookie.size();
     const checkmark = '\u2713';
@@ -320,8 +372,117 @@
     this._refresh();
   }
 
+  /**
+   * @param {!DataGrid.DataGridNode} editingNode
+   * @param {string} columnIdentifier
+   * @param {string} oldText
+   * @param {string} newText
+   */
+  _onUpdateCookie(editingNode, columnIdentifier, oldText, newText) {
+    this._lastEditedColumnId = columnIdentifier;
+    this._setDefaults(editingNode);
+    if (this._isValidCookieData(editingNode.data))
+      this._saveNode(editingNode);
+    else
+      editingNode.setDirty(true);
+  }
+
+  /**
+   * @param {!DataGrid.DataGridNode} node
+   */
+  _setDefaults(node) {
+    if (node.data.name === null)
+      node.data.name = '';
+    if (node.data.value === null)
+      node.data.value = '';
+    if (node.data.domain === null)
+      node.data.domain = this._cookieDomain;
+    if (node.data.path === null)
+      node.data.path = '/';
+    if (node.data.expires === null)
+      node.data.expires = CookieTable.CookiesTable._expiresSessionValue;
+  }
+
+  /**
+   * @param {!DataGrid.DataGridNode} node
+   */
+  _saveNode(node) {
+    var oldCookie = node.cookie;
+    var newCookie = this._createCookieFromData(node.data);
+    if (oldCookie && (newCookie.name() !== oldCookie.name() || newCookie.url() !== oldCookie.url()))
+      oldCookie.remove();
+    node.cookie = newCookie;
+    newCookie.save(success => {
+      if (success)
+        this._refresh();
+      else
+        node.setDirty(true);
+    });
+    this._nextSelectedCookie = newCookie;
+  }
+
+  /**
+   * @param {!Object.<string, *>} data
+   * @returns {SDK.Cookie}
+   */
+  _createCookieFromData(data) {
+    var target = SDK.targetManager.targets(SDK.Target.Capability.Network)[0];
+    var cookie = new SDK.Cookie(target, data.name, data.value, null);
+    cookie.addAttribute('domain', data.domain);
+    cookie.addAttribute('path', data.path);
+    if (data.expires && data.expires !== CookieTable.CookiesTable._expiresSessionValue)
+      cookie.addAttribute('expires', (new Date(data.expires)).toUTCString());
+    if (data.httpOnly)
+      cookie.addAttribute('httpOnly');
+    if (data.secure)
+      cookie.addAttribute('secure');
+    if (data.sameSite)
+      cookie.addAttribute('sameSite', data.sameSite);
+    cookie.setSize(data.name.length + data.value.length);
+    return cookie;
+  }
+
+  /**
+   * @param {!Object.<string, *>} data
+   * @returns {boolean}
+   */
+  _isValidCookieData(data) {
+    return (data.name || data.value) && this._isValidDomain(data.domain) && this._isValidPath(data.path) && this._isValidDate(data.expires);
+  }
+
+  /**
+   * @param {string} domain
+   * @returns {boolean}
+   */
+  _isValidDomain(domain) {
+    if (!domain)
+      return true;
+    var parsedURL = ('http://' + domain).asParsedURL();
+    return !!parsedURL && parsedURL.domain() === domain;
+  }
+
+  /**
+   * @param {string} path
+   * @returns {boolean}
+   */
+  _isValidPath(path) {
+    var parsedURL = ('http://example.com' + path).asParsedURL();
+    return !!parsedURL && parsedURL.path === path;
+  }
+
+  /**
+   * @param {string} date
+   * @returns {boolean}
+   */
+  _isValidDate(date) {
+    return date === '' || date === CookieTable.CookiesTable._expiresSessionValue || !isNaN(Date.parse(date));
+  }
+
   _refresh() {
     if (this._refreshCallback)
       this._refreshCallback();
   }
 };
+
+/** @const */
+CookieTable.CookiesTable._expiresSessionValue = Common.UIString('Session');
\ No newline at end of file
diff --git a/third_party/WebKit/Source/devtools/front_end/data_grid/DataGrid.js b/third_party/WebKit/Source/devtools/front_end/data_grid/DataGrid.js
index 51ac5eef..6d413311 100644
--- a/third_party/WebKit/Source/devtools/front_end/data_grid/DataGrid.js
+++ b/third_party/WebKit/Source/devtools/front_end/data_grid/DataGrid.js
@@ -310,6 +310,18 @@
   }
 
   /**
+   * @param {!DataGrid.DataGridNode} node
+   * @param {string} columnIdentifier
+   */
+  startEditingNextEditableColumnOfDataGridNode(node, columnIdentifier) {
+    const column = this._columns[columnIdentifier];
+    const cellIndex = this._visibleColumnsArray.indexOf(column);
+    const nextEditableColumn = this._nextEditableColumn(cellIndex);
+    if (nextEditableColumn !== -1)
+      this._startEditingColumnOfDataGridNode(node, nextEditableColumn);
+  }
+
+  /**
    * @param {!Node} target
    */
   _startEditing(target) {
@@ -367,7 +379,7 @@
     }
     var column = this._columns[columnId];
     var cellIndex = this._visibleColumnsArray.indexOf(column);
-    var textBeforeEditing = /** @type {string} */ (this._editingNode.data[columnId]);
+    var textBeforeEditing = /** @type {string} */ (this._editingNode.data[columnId] || '');
     var currentEditingNode = this._editingNode;
 
     /**
@@ -1221,6 +1233,10 @@
     this._expanded = false;
     /** @type {boolean} */
     this._selected = false;
+    /** @type {boolean} */
+    this._dirty = false;
+    /** @type {boolean} */
+    this._inactive = false;
     /** @type {number|undefined} */
     this._depth;
     /** @type {boolean|undefined} */
@@ -1282,6 +1298,10 @@
       this._element.classList.add('selected');
     if (this.revealed)
       this._element.classList.add('revealed');
+    if (this.dirty)
+      this._element.classList.add('dirty');
+    if (this.inactive)
+      this._element.classList.add('inactive');
     return this._element;
   }
 
@@ -1366,6 +1386,51 @@
   /**
    * @return {boolean}
    */
+  isDirty() {
+    return this._dirty;
+  }
+
+  /**
+   * @param {boolean} dirty
+   */
+  setDirty(dirty) {
+    if (this._dirty === dirty)
+      return;
+    this._dirty = dirty;
+    if (!this._element)
+      return;
+    if (dirty)
+      this._element.classList.add('dirty');
+    else
+      this._element.classList.remove('dirty');
+  }
+
+
+  /**
+   * @return {boolean}
+   */
+  isInactive() {
+    return this._inactive;
+  }
+
+  /**
+   * @param {boolean} inactive
+   */
+  setInactive(inactive) {
+    if (this._inactive === inactive)
+      return;
+    this._inactive = inactive;
+    if (!this._element)
+      return;
+    if (inactive)
+      this._element.classList.add('inactive');
+    else
+      this._element.classList.remove('inactive');
+  }
+
+  /**
+   * @return {boolean}
+   */
   hasChildren() {
     return this._hasChildren;
   }
diff --git a/third_party/WebKit/Source/devtools/front_end/data_grid/dataGrid.css b/third_party/WebKit/Source/devtools/front_end/data_grid/dataGrid.css
index 83ca802..65b9b334 100644
--- a/third_party/WebKit/Source/devtools/front_end/data_grid/dataGrid.css
+++ b/third_party/WebKit/Source/devtools/front_end/data_grid/dataGrid.css
@@ -228,6 +228,21 @@
     -webkit-mask-position: -20px -96px;
 }
 
+.data-grid tr.inactive {
+    color: rgb(128, 128, 128);
+    font-style: italic;
+}
+
+.data-grid tr.dirty {
+    background-color: hsl(0, 100%, 92%);
+    color: red;
+    font-style: normal;
+}
+
+.data-grid:focus tr.selected.dirty {
+    background-color: hsl(0, 100%, 70%);
+}
+
 .data-grid-resizer {
     position: absolute;
     top: 0;
diff --git a/third_party/WebKit/Source/devtools/front_end/resources/CookieItemsView.js b/third_party/WebKit/Source/devtools/front_end/resources/CookieItemsView.js
index 93237c0..3043976 100644
--- a/third_party/WebKit/Source/devtools/front_end/resources/CookieItemsView.js
+++ b/third_party/WebKit/Source/devtools/front_end/resources/CookieItemsView.js
@@ -57,13 +57,6 @@
     this._treeElement = treeElement;
     this._cookieDomain = cookieDomain;
 
-    this._emptyWidget = new UI.EmptyWidget(
-        cookieDomain ?
-            Common.UIString('This site has no cookies.') :
-            Common.UIString(
-                'By default cookies are disabled for local files.\nYou could override this by starting the browser with --enable-file-cookies command line flag.'));
-    this._emptyWidget.show(this.element);
-
     this.element.addEventListener('contextmenu', this._contextMenu.bind(this), true);
   }
 
@@ -121,25 +114,15 @@
     this._cookies = allCookies;
     this._totalSize = allCookies.reduce((size, cookie) => size + cookie.size(), 0);
 
-    if (!this._cookies.length) {
-      // Nothing to show.
-      this._emptyWidget.show(this.element);
-      this._filterButton.setEnabled(false);
-      this._clearButton.setEnabled(false);
-      this._deleteButton.setEnabled(false);
-      if (this._cookiesTable)
-        this._cookiesTable.detach();
-      return;
-    }
-
     if (!this._cookiesTable) {
+      const parsedURL = this._cookieDomain.asParsedURL();
+      const domain = parsedURL ? parsedURL.host : '';
       this._cookiesTable =
-          new CookieTable.CookiesTable(false, this._update.bind(this), this._enableDeleteButton.bind(this));
+          new CookieTable.CookiesTable(false, this._update.bind(this), this._enableDeleteButton.bind(this), domain);
     }
 
     var shownCookies = this._filterCookies(this._cookies);
     this._cookiesTable.setCookies(shownCookies);
-    this._emptyWidget.detach();
     this._filterBar.show(this.element);
     this._cookiesTable.show(this.element);
     this._treeElement.subtitle =
diff --git a/third_party/WebKit/Source/devtools/front_end/resources/ResourcesPanel.js b/third_party/WebKit/Source/devtools/front_end/resources/ResourcesPanel.js
index 867b1534..357ba474 100644
--- a/third_party/WebKit/Source/devtools/front_end/resources/ResourcesPanel.js
+++ b/third_party/WebKit/Source/devtools/front_end/resources/ResourcesPanel.js
@@ -395,7 +395,7 @@
    */
   addCookieDocument(frame) {
     var parsedURL = frame.url.asParsedURL();
-    if (!parsedURL)
+    if (!parsedURL || (parsedURL.scheme !== 'http' && parsedURL.scheme !== 'https' && parsedURL.scheme !== 'file'))
       return;
 
     var domain = parsedURL.securityOrigin();
diff --git a/third_party/WebKit/Source/devtools/front_end/sdk/CookieParser.js b/third_party/WebKit/Source/devtools/front_end/sdk/CookieParser.js
index 3a0f35825..e9b03b9f 100644
--- a/third_party/WebKit/Source/devtools/front_end/sdk/CookieParser.js
+++ b/third_party/WebKit/Source/devtools/front_end/sdk/CookieParser.js
@@ -250,10 +250,11 @@
   }
 
   /**
-   * @return {string}
+   * @return {!Protocol.Network.CookieSameSite}
    */
   sameSite() {
-    return this._attributes['samesite'];
+    // TODO(allada) This should not rely on _attributes and instead store them individually.
+    return /** @type {!Protocol.Network.CookieSameSite} */ (this._attributes['samesite']);
   }
 
   /**
@@ -287,7 +288,7 @@
   }
 
   /**
-   * @return {string}
+   * @return {number}
    */
   expires() {
     return this._attributes['expires'];
@@ -308,6 +309,13 @@
   }
 
   /**
+   * @return {string}
+   */
+  url() {
+    return (this.secure() ? 'https://' : 'http://') + this.domain() + this.path();
+  }
+
+  /**
    * @param {number} size
    */
   setSize(size) {
@@ -349,8 +357,29 @@
    * @param {function(?Protocol.Error)=} callback
    */
   remove(callback) {
-    this._target.networkAgent().deleteCookie(
-        this.name(), (this.secure() ? 'https://' : 'http://') + this.domain() + this.path(), callback);
+    this._target.networkAgent().deleteCookie(this.name(), this.url(), callback);
+  }
+
+  /**
+   * @param {function(boolean)=} callback
+   */
+  save(callback) {
+    var domain = this.domain();
+    if (!domain.startsWith('.'))
+      domain = '';
+    var expires = undefined;
+    if (this.expires())
+      expires = Math.floor(Date.parse(this.expires()) / 1000);
+    this._target.networkAgent().setCookie(this.url(), this.name(), this.value(), domain, this.path(), this.secure(),
+      this.httpOnly(), this.sameSite(), expires, mycallback);
+
+    /**
+     * @param {?Protocol.Error} error
+     * @param {boolean} success
+     */
+    function mycallback(error, success) {
+      callback(error ? false : success);
+    }
   }
 };
 
diff --git a/third_party/WebKit/Source/devtools/front_end/ui/View.js b/third_party/WebKit/Source/devtools/front_end/ui/View.js
index 1e157e93..cbad416 100644
--- a/third_party/WebKit/Source/devtools/front_end/ui/View.js
+++ b/third_party/WebKit/Source/devtools/front_end/ui/View.js
@@ -464,7 +464,9 @@
     this.registerRequiredCSS('ui/viewContainers.css');
 
     this._titleElement = createElementWithClass('div', 'expandable-view-title');
-    this._titleElement.textContent = view.title();
+    this._titleExpandIcon = UI.Icon.create('smallicon-triangle-right', 'title-expand-icon');
+    this._titleElement.appendChild(this._titleExpandIcon);
+    this._titleElement.createTextChild(view.title());
     this._titleElement.tabIndex = 0;
     this._titleElement.addEventListener('click', this._toggleExpanded.bind(this), false);
     this._titleElement.addEventListener('keydown', this._onTitleKeyDown.bind(this), false);
@@ -500,6 +502,7 @@
     if (this._titleElement.classList.contains('expanded'))
       return this._materialize();
     this._titleElement.classList.add('expanded');
+    this._titleExpandIcon.setIconType('smallicon-triangle-down');
     return this._materialize().then(() => this._widget.show(this.element));
   }
 
@@ -507,6 +510,7 @@
     if (!this._titleElement.classList.contains('expanded'))
       return;
     this._titleElement.classList.remove('expanded');
+    this._titleExpandIcon.setIconType('smallicon-triangle-right');
     this._materialize().then(() => this._widget.detach());
   }
 
diff --git a/third_party/WebKit/Source/devtools/front_end/ui/viewContainers.css b/third_party/WebKit/Source/devtools/front_end/ui/viewContainers.css
index 68213b8..5de186d 100644
--- a/third_party/WebKit/Source/devtools/front_end/ui/viewContainers.css
+++ b/third_party/WebKit/Source/devtools/front_end/ui/viewContainers.css
@@ -57,31 +57,8 @@
     display: none;
 }
 
-.expandable-view-title::before {
-    -webkit-mask-image: url(Images/toolbarButtonGlyphs.png);
-    -webkit-mask-size: 352px 168px;
-    background-color: #888;
-    float: left;
-    width: 11px;
-    height: 11px;
+.title-expand-icon {
     margin-right: 2px;
-    content: "a";
-    color: transparent;
-    flex-shrink: 0;
-}
-
-@media (-webkit-min-device-pixel-ratio: 1.1) {
-.expandable-view-title::before {
-    -webkit-mask-image: url(Images/toolbarButtonGlyphs_2x.png);
-}
-} /* media */
-
-.expandable-view-title::before {
-    -webkit-mask-position: -4px -96px;
-}
-
-.expandable-view-title.expanded::before {
-    -webkit-mask-position: -20px -96px;
 }
 
 .expandable-view-title > .toolbar {
diff --git a/third_party/WebKit/public/web/WebSettings.h b/third_party/WebKit/public/web/WebSettings.h
index 178f6fd..ef17af89 100644
--- a/third_party/WebKit/public/web/WebSettings.h
+++ b/third_party/WebKit/public/web/WebSettings.h
@@ -190,7 +190,6 @@
   virtual void setJavaScriptCanAccessClipboard(bool) = 0;
   virtual void setJavaScriptCanOpenWindowsAutomatically(bool) = 0;
   virtual void setJavaScriptEnabled(bool) = 0;
-  void setLayerSquashingEnabled(bool) {}
   virtual void setLoadsImagesAutomatically(bool) = 0;
   virtual void setLoadWithOverviewMode(bool) = 0;
   virtual void setShouldReuseGlobalForUnownedMainFrame(bool) = 0;
diff --git a/third_party/custom_tabs_client/BUILD.gn b/third_party/custom_tabs_client/BUILD.gn
index a53bd6b..f98ff51 100644
--- a/third_party/custom_tabs_client/BUILD.gn
+++ b/third_party/custom_tabs_client/BUILD.gn
@@ -50,6 +50,8 @@
     "src/customtabs/src/android/support/customtabs/CustomTabsServiceConnection.java",
     "src/customtabs/src/android/support/customtabs/CustomTabsSession.java",
     "src/customtabs/src/android/support/customtabs/CustomTabsSessionToken.java",
+    "src/customtabs/src/android/support/customtabs/PostMessageService.java",
+    "src/customtabs/src/android/support/customtabs/PostMessageServiceConnection.java",
   ]
   deps = [
     "//third_party/android_tools:android_support_annotations_java",
@@ -67,5 +69,6 @@
   sources = [
     "$java_in_dir/ICustomTabsCallback.aidl",
     "$java_in_dir/ICustomTabsService.aidl",
+    "$java_in_dir/IPostMessageService.aidl",
   ]
 }
diff --git a/third_party/custom_tabs_client/OWNERS b/third_party/custom_tabs_client/OWNERS
index c319c21..11c280d 100644
--- a/third_party/custom_tabs_client/OWNERS
+++ b/third_party/custom_tabs_client/OWNERS
@@ -1,3 +1,6 @@
 lizeb@chromium.org
 pasko@chromium.org
 yusufo@chromium.org
+
+per-file *.aidl=set noparent
+per-file *.aidl=file://ipc/SECURITY_OWNERS
diff --git a/third_party/custom_tabs_client/common.aidl b/third_party/custom_tabs_client/common.aidl
index 1dff5e9..5566e8c 100644
--- a/third_party/custom_tabs_client/common.aidl
+++ b/third_party/custom_tabs_client/common.aidl
@@ -4,3 +4,4 @@
 
 interface android.support.customtabs.ICustomTabsService;
 interface android.support.customtabs.ICustomTabsCallback;
+interface android.support.customtabs.IPostMessageService;
diff --git a/tools/ipc_fuzzer/fuzzer/fuzzer.cc b/tools/ipc_fuzzer/fuzzer/fuzzer.cc
index 08e99d3..5dc6012 100644
--- a/tools/ipc_fuzzer/fuzzer/fuzzer.cc
+++ b/tools/ipc_fuzzer/fuzzer/fuzzer.cc
@@ -1505,23 +1505,6 @@
 };
 
 template <>
-struct FuzzTraits<printing::PdfRenderSettings> {
-  static bool Fuzz(printing::PdfRenderSettings* p, Fuzzer* fuzzer) {
-    gfx::Rect area = p->area;
-    int dpi = p->dpi;
-    bool autorotate = p->autorotate;
-    if (!FuzzParam(&area, fuzzer))
-      return false;
-    if (!FuzzParam(&dpi, fuzzer))
-      return false;
-    if (!FuzzParam(&autorotate, fuzzer))
-      return false;
-    *p = printing::PdfRenderSettings(area, dpi, autorotate);
-    return true;
-  }
-};
-
-template <>
 struct FuzzTraits<SkBitmap> {
   static bool Fuzz(SkBitmap* p, Fuzzer* fuzzer) {
     // TODO(mbarbella): This should actually do something.
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml
index 8c8876c4..5797b34 100644
--- a/tools/metrics/histograms/histograms.xml
+++ b/tools/metrics/histograms/histograms.xml
@@ -28393,6 +28393,7 @@
     Number of internal Mojo system messages processed synchronously during a
     single execution of NodeController::AcceptIncomingMessages(). This is called
     any time an event requires internal Mojo system messages to be pumped.
+    Values below 4 are no longer logged.
   </summary>
 </histogram>
 
diff --git a/ui/file_manager/file_manager/background/js/device_handler.js b/ui/file_manager/file_manager/background/js/device_handler.js
index bbdb598..1b3f2d5 100644
--- a/ui/file_manager/file_manager/background/js/device_handler.js
+++ b/ui/file_manager/file_manager/background/js/device_handler.js
@@ -20,8 +20,10 @@
       this.onDeviceChanged_.bind(this));
   chrome.fileManagerPrivate.onMountCompleted.addListener(
       this.onMountCompleted_.bind(this));
+  chrome.notifications.onClicked.addListener(
+      this.onNotificationClicked_.bind(this));
   chrome.notifications.onButtonClicked.addListener(
-      this.onNotificationButtonClicked_.bind(this));
+      this.onNotificationClicked_.bind(this));
 }
 
 DeviceHandler.prototype = {
@@ -42,10 +44,12 @@
  * @param {string} title String ID of title.
  * @param {string} message String ID of message.
  * @param {string=} opt_buttonLabel String ID of the button label.
+ * @param {boolean=} opt_isClickable True if the notification body is clickable.
  * @constructor
  * @struct
  */
-DeviceHandler.Notification = function(prefix, title, message, opt_buttonLabel) {
+DeviceHandler.Notification = function(
+    prefix, title, message, opt_buttonLabel, opt_isClickable) {
   /**
    * Prefix of notification ID.
    * @type {string}
@@ -71,6 +75,12 @@
   this.buttonLabel = opt_buttonLabel || null;
 
   /**
+   * True if the notification body is clickable.
+   * @type {boolean}
+   */
+  this.isClickable = opt_isClickable || false;
+
+  /**
    * Queue of API call.
    * @type {AsyncUtil.Queue}
    * @private
@@ -86,7 +96,8 @@
     'deviceNavigation',
     'REMOVABLE_DEVICE_DETECTION_TITLE',
     'REMOVABLE_DEVICE_NAVIGATION_MESSAGE',
-    'REMOVABLE_DEVICE_NAVIGATION_BUTTON_LABEL');
+    'REMOVABLE_DEVICE_NAVIGATION_BUTTON_LABEL',
+    true);
 
 /**
  * @type {DeviceHandler.Notification}
@@ -97,7 +108,8 @@
         'deviceNavigation',
         'REMOVABLE_DEVICE_DETECTION_TITLE',
         'REMOVABLE_DEVICE_NAVIGATION_MESSAGE_READONLY_POLICY',
-        'REMOVABLE_DEVICE_NAVIGATION_BUTTON_LABEL');
+        'REMOVABLE_DEVICE_NAVIGATION_BUTTON_LABEL',
+        true);
 
 /**
  * @type {DeviceHandler.Notification}
@@ -107,7 +119,8 @@
     'deviceImport',
     'REMOVABLE_DEVICE_DETECTION_TITLE',
     'REMOVABLE_DEVICE_IMPORT_MESSAGE',
-    'REMOVABLE_DEVICE_IMPORT_BUTTON_LABEL');
+    'REMOVABLE_DEVICE_IMPORT_BUTTON_LABEL',
+    true);
 
 /**
  * @type {DeviceHandler.Notification}
@@ -236,7 +249,8 @@
         title: str(this.title),
         message: message || str(this.message),
         iconUrl: chrome.runtime.getURL('/common/images/icon96.png'),
-        buttons: buttons
+        buttons: buttons,
+        isClickable: this.isClickable
       },
       callback);
 };
@@ -490,7 +504,7 @@
                       // auto-import is disabled in Photos app.
                       if (!appEnabled) {
                         this.openMediaDirectory_(
-                            metadata.volumeId, directory.fullPath);
+                            metadata.volumeId, null, directory.fullPath);
                       }
                     }.bind(this));
           }.bind(this))
@@ -515,37 +529,35 @@
 };
 
 /**
- * Handles notification button click.
+ * Handles notification body or button click.
  * @param {string} id ID of the notification.
  * @private
  */
-DeviceHandler.prototype.onNotificationButtonClicked_ = function(id) {
+DeviceHandler.prototype.onNotificationClicked_ = function(id) {
   var pos = id.indexOf(':');
   var type = id.substr(0, pos);
   var devicePath = id.substr(pos + 1);
   if (type === 'deviceNavigation' || type === 'deviceFail') {
     chrome.notifications.clear(id, function() {});
-    var event = new Event(DeviceHandler.VOLUME_NAVIGATION_REQUESTED);
-    event.devicePath = devicePath;
-    this.dispatchEvent(event);
+    this.openMediaDirectory_(null, devicePath, null);
   } else if (type === 'deviceImport') {
     chrome.notifications.clear(id, function() {});
-    var event = new Event(DeviceHandler.VOLUME_NAVIGATION_REQUESTED);
-    event.devicePath = devicePath;
-    event.filePath = 'DCIM';
-    this.dispatchEvent(event);
+    this.openMediaDirectory_(null, devicePath, 'DCIM');
   }
 };
 
 /**
- * Handles notification button click.
- * @param {string} volumeId
- * @param {string} path
+ * Opens a directory on removable media.
+ * @param {?string} volumeId
+ * @param {?string} devicePath
+ * @param {?string} filePath
  * @private
  */
-DeviceHandler.prototype.openMediaDirectory_ = function(volumeId, path) {
+DeviceHandler.prototype.openMediaDirectory_ =
+    function(volumeId, devicePath, filePath) {
   var event = new Event(DeviceHandler.VOLUME_NAVIGATION_REQUESTED);
   event.volumeId = volumeId;
-  event.filePath = path;
+  event.devicePath = devicePath;
+  event.filePath = filePath;
   this.dispatchEvent(event);
 };
diff --git a/ui/file_manager/file_manager/background/js/device_handler_unittest.js b/ui/file_manager/file_manager/background/js/device_handler_unittest.js
index 5802c04..0128634 100644
--- a/ui/file_manager/file_manager/background/js/device_handler_unittest.js
+++ b/ui/file_manager/file_manager/background/js/device_handler_unittest.js
@@ -71,9 +71,9 @@
   var promise = chrome.notifications.resolver.promise.then(
       function(notifications) {
           assertEquals(1, Object.keys(notifications).length);
-          assertEquals(
-              'DEVICE_NAVIGATION',
-              notifications['deviceNavigation:/device/path'].message);
+          var options = notifications['deviceNavigation:/device/path'];
+          assertEquals('DEVICE_NAVIGATION', options.message);
+          assertTrue(options.isClickable);
       });
 
   reportPromise(promise, callback);
@@ -598,6 +598,30 @@
                    'hardUnplugged:/device/path'].message);
 }
 
+function testNotificationClicked(callback) {
+  var devicePath = '/device/path';
+  var notificationId = 'deviceNavigation:' + devicePath;
+
+  // Add a listener for navigation-requested events.
+  var resolver = new importer.Resolver();
+  handler.addEventListener(
+      DeviceHandler.VOLUME_NAVIGATION_REQUESTED,
+      function(event) {
+        resolver.resolve(event);
+      });
+
+  // Call the notification-body-clicked handler and check that the
+  // navigation-requested event is dispatched.
+  chrome.notifications.onClicked.dispatch(notificationId);
+  var promise = resolver.promise.then(
+      function(event) {
+        assertEquals(null, event.volumeId);
+        assertEquals(devicePath, event.devicePath);
+        assertEquals(null, event.filePath);
+      });
+  reportPromise(promise, callback);
+}
+
 /**
  * @param {!VolumeManagerCommon.VolumeType} volumeType
  * @param {string} volumeId
@@ -657,6 +681,11 @@
           this.dispatch = listener;
         }
       },
+      onClicked: {
+        addListener: function(listener) {
+          this.dispatch = listener;
+        }
+      },
       getAll: function(callback) {
         callback([]);
       }
diff --git a/ui/gfx/color_space.cc b/ui/gfx/color_space.cc
index 9a307ddb..2bf317b 100644
--- a/ui/gfx/color_space.cc
+++ b/ui/gfx/color_space.cc
@@ -13,26 +13,6 @@
 
 namespace gfx {
 
-namespace {
-
-SkColorSpaceTransferFn InvertTransferFn(SkColorSpaceTransferFn fn) {
-  SkColorSpaceTransferFn fn_inv = {0};
-  if (fn.fA > 0 && fn.fG > 0) {
-    double a_to_the_g = pow(fn.fA, fn.fG);
-    fn_inv.fA = 1.f / a_to_the_g;
-    fn_inv.fB = -fn.fE / a_to_the_g;
-    fn_inv.fG = 1.f / fn.fG;
-  }
-  fn_inv.fD = fn.fC * fn.fD + fn.fF;
-  fn_inv.fE = -fn.fB / fn.fA;
-  if (fn.fC != 0) {
-    fn_inv.fC = 1.f / fn.fC;
-    fn_inv.fF = -fn.fF / fn.fC;
-  }
-  return fn_inv;
-}
-};
-
 ColorSpace::PrimaryID ColorSpace::PrimaryIDFromInt(int primary_id) {
   if (primary_id < 0 || primary_id > static_cast<int>(PrimaryID::LAST))
     return PrimaryID::UNKNOWN;
@@ -61,7 +41,6 @@
 }
 
 ColorSpace::ColorSpace() {
-  memset(custom_transfer_params_, 0, sizeof(custom_transfer_params_));
   memset(custom_primary_matrix_, 0, sizeof(custom_primary_matrix_));
 }
 
@@ -73,8 +52,8 @@
       transfer_(transfer),
       matrix_(matrix),
       range_(range) {
-  memset(custom_transfer_params_, 0, sizeof(custom_transfer_params_));
   memset(custom_primary_matrix_, 0, sizeof(custom_primary_matrix_));
+  // TODO: Set profile_id_
 }
 
 ColorSpace::ColorSpace(int primaries, int transfer, int matrix, RangeID range)
@@ -82,8 +61,8 @@
       transfer_(TransferIDFromInt(transfer)),
       matrix_(MatrixIDFromInt(matrix)),
       range_(range) {
-  memset(custom_transfer_params_, 0, sizeof(custom_transfer_params_));
   memset(custom_primary_matrix_, 0, sizeof(custom_primary_matrix_));
+  // TODO: Set profile_id_
 }
 
 ColorSpace::ColorSpace(const ColorSpace& other)
@@ -93,8 +72,6 @@
       range_(other.range_),
       icc_profile_id_(other.icc_profile_id_),
       sk_color_space_(other.sk_color_space_) {
-  memcpy(custom_transfer_params_, other.custom_transfer_params_,
-         sizeof(custom_transfer_params_));
   memcpy(custom_primary_matrix_, other.custom_primary_matrix_,
          sizeof(custom_primary_matrix_));
 }
@@ -147,10 +124,6 @@
       memcmp(custom_primary_matrix_, other.custom_primary_matrix_,
              sizeof(custom_primary_matrix_)))
     return false;
-  if (transfer_ == TransferID::CUSTOM &&
-      memcmp(custom_transfer_params_, other.custom_transfer_params_,
-             sizeof(custom_transfer_params_)))
-    return false;
   return true;
 }
 
@@ -189,15 +162,6 @@
     if (primary_result > 0)
       return false;
   }
-  if (transfer_ == TransferID::CUSTOM) {
-    int transfer_result =
-        memcmp(custom_transfer_params_, other.custom_transfer_params_,
-               sizeof(custom_transfer_params_));
-    if (transfer_result < 0)
-      return true;
-    if (transfer_result > 0)
-      return false;
-  }
   return false;
 }
 
@@ -216,221 +180,4 @@
   return icc_profile.GetColorSpace();
 }
 
-void ColorSpace::GetPrimaryMatrix(SkMatrix44* to_XYZD50) const {
-  SkColorSpacePrimaries primaries = {0};
-  switch (primaries_) {
-    case ColorSpace::PrimaryID::CUSTOM:
-      to_XYZD50->set3x3RowMajorf(custom_primary_matrix_);
-      return;
-
-    case ColorSpace::PrimaryID::RESERVED0:
-    case ColorSpace::PrimaryID::RESERVED:
-    case ColorSpace::PrimaryID::UNSPECIFIED:
-    case ColorSpace::PrimaryID::UNKNOWN:
-    case ColorSpace::PrimaryID::BT709:
-      // BT709 is our default case. Put it after the switch just
-      // in case we somehow get an id which is not listed in the switch.
-      // (We don't want to use "default", because we want the compiler
-      //  to tell us if we forgot some enum values.)
-      primaries.fRX = 0.640f;
-      primaries.fRY = 0.330f;
-      primaries.fGX = 0.300f;
-      primaries.fGY = 0.600f;
-      primaries.fBX = 0.150f;
-      primaries.fBY = 0.060f;
-      primaries.fWX = 0.3127f;
-      primaries.fWY = 0.3290f;
-      break;
-
-    case ColorSpace::PrimaryID::BT470M:
-      primaries.fRX = 0.67f;
-      primaries.fRY = 0.33f;
-      primaries.fGX = 0.21f;
-      primaries.fGY = 0.71f;
-      primaries.fBX = 0.14f;
-      primaries.fBY = 0.08f;
-      primaries.fWX = 0.31f;
-      primaries.fWY = 0.316f;
-      break;
-
-    case ColorSpace::PrimaryID::BT470BG:
-      primaries.fRX = 0.64f;
-      primaries.fRY = 0.33f;
-      primaries.fGX = 0.29f;
-      primaries.fGY = 0.60f;
-      primaries.fBX = 0.15f;
-      primaries.fBY = 0.06f;
-      primaries.fWX = 0.3127f;
-      primaries.fWY = 0.3290f;
-      break;
-
-    case ColorSpace::PrimaryID::SMPTE170M:
-    case ColorSpace::PrimaryID::SMPTE240M:
-      primaries.fRX = 0.630f;
-      primaries.fRY = 0.340f;
-      primaries.fGX = 0.310f;
-      primaries.fGY = 0.595f;
-      primaries.fBX = 0.155f;
-      primaries.fBY = 0.070f;
-      primaries.fWX = 0.3127f;
-      primaries.fWY = 0.3290f;
-      break;
-
-    case ColorSpace::PrimaryID::FILM:
-      primaries.fRX = 0.681f;
-      primaries.fRY = 0.319f;
-      primaries.fGX = 0.243f;
-      primaries.fGY = 0.692f;
-      primaries.fBX = 0.145f;
-      primaries.fBY = 0.049f;
-      primaries.fWX = 0.310f;
-      primaries.fWY = 0.136f;
-      break;
-
-    case ColorSpace::PrimaryID::BT2020:
-      primaries.fRX = 0.708f;
-      primaries.fRY = 0.292f;
-      primaries.fGX = 0.170f;
-      primaries.fGY = 0.797f;
-      primaries.fBX = 0.131f;
-      primaries.fBY = 0.046f;
-      primaries.fWX = 0.3127f;
-      primaries.fWY = 0.3290f;
-      break;
-
-    case ColorSpace::PrimaryID::SMPTEST428_1:
-      primaries.fRX = 1.0f;
-      primaries.fRY = 0.0f;
-      primaries.fGX = 0.0f;
-      primaries.fGY = 1.0f;
-      primaries.fBX = 0.0f;
-      primaries.fBY = 0.0f;
-      primaries.fWX = 1.0f / 3.0f;
-      primaries.fWY = 1.0f / 3.0f;
-      break;
-
-    case ColorSpace::PrimaryID::SMPTEST431_2:
-      primaries.fRX = 0.680f;
-      primaries.fRY = 0.320f;
-      primaries.fGX = 0.265f;
-      primaries.fGY = 0.690f;
-      primaries.fBX = 0.150f;
-      primaries.fBY = 0.060f;
-      primaries.fWX = 0.314f;
-      primaries.fWY = 0.351f;
-      break;
-
-    case ColorSpace::PrimaryID::SMPTEST432_1:
-      primaries.fRX = 0.680f;
-      primaries.fRY = 0.320f;
-      primaries.fGX = 0.265f;
-      primaries.fGY = 0.690f;
-      primaries.fBX = 0.150f;
-      primaries.fBY = 0.060f;
-      primaries.fWX = 0.3127f;
-      primaries.fWY = 0.3290f;
-      break;
-
-    case ColorSpace::PrimaryID::XYZ_D50:
-      primaries.fRX = 1.0f;
-      primaries.fRY = 0.0f;
-      primaries.fGX = 0.0f;
-      primaries.fGY = 1.0f;
-      primaries.fBX = 0.0f;
-      primaries.fBY = 0.0f;
-      primaries.fWX = 0.34567f;
-      primaries.fWY = 0.35850f;
-      break;
-  }
-  primaries.toXYZD50(to_XYZD50);
-}
-
-bool ColorSpace::GetTransferFunction(SkColorSpaceTransferFn* fn) const {
-  // Default to F(x) = pow(x, 1)
-  fn->fA = 1;
-  fn->fB = 0;
-  fn->fC = 1;
-  fn->fD = 0;
-  fn->fE = 0;
-  fn->fF = 0;
-  fn->fG = 1;
-
-  switch (transfer_) {
-    case ColorSpace::TransferID::CUSTOM:
-      fn->fA = custom_transfer_params_[0];
-      fn->fB = custom_transfer_params_[1];
-      fn->fC = custom_transfer_params_[2];
-      fn->fD = custom_transfer_params_[3];
-      fn->fE = custom_transfer_params_[4];
-      fn->fF = custom_transfer_params_[5];
-      fn->fG = custom_transfer_params_[6];
-      return true;
-    case ColorSpace::TransferID::LINEAR:
-      return true;
-    case ColorSpace::TransferID::GAMMA22:
-      fn->fG = 2.2f;
-      return true;
-    case ColorSpace::TransferID::GAMMA24:
-      fn->fG = 2.4f;
-      return true;
-    case ColorSpace::TransferID::GAMMA28:
-      fn->fG = 2.8f;
-      return true;
-    case ColorSpace::TransferID::RESERVED0:
-    case ColorSpace::TransferID::RESERVED:
-    case ColorSpace::TransferID::UNSPECIFIED:
-    case ColorSpace::TransferID::UNKNOWN:
-    // All unknown values default to BT709
-    case ColorSpace::TransferID::BT709:
-    case ColorSpace::TransferID::SMPTE170M:
-    case ColorSpace::TransferID::BT2020_10:
-    case ColorSpace::TransferID::BT2020_12:
-      fn->fA = 0.909672431050f;
-      fn->fB = 0.090327568950f;
-      fn->fC = 0.222222222222f;
-      fn->fD = 0.081242862158f;
-      fn->fG = 2.222222222222f;
-      return true;
-    case ColorSpace::TransferID::SMPTE240M:
-      fn->fA = 0.899626676224f;
-      fn->fB = 0.100373323776f;
-      fn->fC = 0.250000000000f;
-      fn->fD = 0.091286342118f;
-      fn->fG = 2.222222222222f;
-      return true;
-    case ColorSpace::TransferID::IEC61966_2_1:
-      fn->fA = 0.947867345704f;
-      fn->fB = 0.052132654296f;
-      fn->fC = 0.077399380805f;
-      fn->fD = 0.040449937172f;
-      fn->fG = 2.400000000000f;
-      return true;
-    case ColorSpace::TransferID::SMPTEST428_1:
-      fn->fA = 0.225615407568f;
-      fn->fE = -1.091041666667f;
-      fn->fG = 2.600000000000f;
-      return true;
-    case ColorSpace::TransferID::IEC61966_2_4:
-      // This could potentially be represented the same as IEC61966_2_1, but
-      // it handles negative values differently.
-      break;
-    case ColorSpace::TransferID::ARIB_STD_B67:
-    case ColorSpace::TransferID::BT1361_ECG:
-    case ColorSpace::TransferID::LOG:
-    case ColorSpace::TransferID::LOG_SQRT:
-    case ColorSpace::TransferID::SMPTEST2084:
-    case ColorSpace::TransferID::SMPTEST2084_NON_HDR:
-      break;
-  }
-
-  return false;
-}
-
-bool ColorSpace::GetInverseTransferFunction(SkColorSpaceTransferFn* fn) const {
-  if (!GetTransferFunction(fn))
-    return false;
-  *fn = InvertTransferFn(*fn);
-  return true;
-}
-
 }  // namespace gfx
diff --git a/ui/gfx/color_space.h b/ui/gfx/color_space.h
index d7b2bd97..df90dab 100644
--- a/ui/gfx/color_space.h
+++ b/ui/gfx/color_space.h
@@ -150,8 +150,6 @@
   static MatrixID MatrixIDFromInt(int matrix_id);
 
   static ColorSpace CreateSRGB();
-  static ColorSpace CreateCustom(const SkMatrix44& to_XYZD50,
-                                 const SkColorSpaceTransferFn& fn);
   // scRGB is like RGB, but linear and values outside of 0-1 are allowed.
   // scRGB is normally used with fp16 textures.
   static ColorSpace CreateSCRGBLinear();
@@ -172,23 +170,14 @@
   const sk_sp<SkColorSpace>& ToSkColorSpace() const { return sk_color_space_; }
   static ColorSpace FromSkColorSpace(const sk_sp<SkColorSpace>& sk_color_space);
 
-  void GetPrimaryMatrix(SkMatrix44* to_XYZD50) const;
-  bool GetTransferFunction(SkColorSpaceTransferFn* fn) const;
-  bool GetInverseTransferFunction(SkColorSpaceTransferFn* fn) const;
-
  private:
   PrimaryID primaries_ = PrimaryID::UNSPECIFIED;
   TransferID transfer_ = TransferID::UNSPECIFIED;
   MatrixID matrix_ = MatrixID::UNSPECIFIED;
   RangeID range_ = RangeID::LIMITED;
 
-  // Only used if primaries_ is PrimaryID::CUSTOM.
-  float custom_primary_matrix_[9];
-
-  // Only used if transfer_ is TransferID::CUSTOM. This array consists of the A
-  // through G entries of the SkColorSpaceTransferFn structure in alphabetical
-  // order.
-  float custom_transfer_params_[7];
+  // Only used if primaries_ == PrimaryID::CUSTOM
+  float custom_primary_matrix_[12];
 
   // This is used to look up the ICCProfile from which this ColorSpace was
   // created, if possible.
diff --git a/ui/gfx/color_transform.cc b/ui/gfx/color_transform.cc
index 4d36fe29..3a63643 100644
--- a/ui/gfx/color_transform.cc
+++ b/ui/gfx/color_transform.cc
@@ -21,14 +21,6 @@
 
 namespace gfx {
 
-float EvalSkTransferFn(const SkColorSpaceTransferFn& fn, float x) {
-  if (x < 0)
-    return 0;
-  if (x < fn.fD)
-    return fn.fC * x + fn.fF;
-  return powf(fn.fA * x + fn.fB, fn.fG) + fn.fE;
-}
-
 Transform Invert(const Transform& t) {
   Transform ret = t;
   if (!t.GetInverse(&ret)) {
@@ -37,12 +29,180 @@
   return ret;
 }
 
-float FromLinear(ColorSpace::TransferID id, float v) {
+GFX_EXPORT Transform GetPrimaryMatrix(ColorSpace::PrimaryID id) {
+  SkColorSpacePrimaries primaries = {0};
+  switch (id) {
+    case ColorSpace::PrimaryID::CUSTOM:
+      NOTREACHED();
+
+    case ColorSpace::PrimaryID::RESERVED0:
+    case ColorSpace::PrimaryID::RESERVED:
+    case ColorSpace::PrimaryID::UNSPECIFIED:
+    case ColorSpace::PrimaryID::UNKNOWN:
+    case ColorSpace::PrimaryID::BT709:
+      // BT709 is our default case. Put it after the switch just
+      // in case we somehow get an id which is not listed in the switch.
+      // (We don't want to use "default", because we want the compiler
+      //  to tell us if we forgot some enum values.)
+      primaries.fRX = 0.640f;
+      primaries.fRY = 0.330f;
+      primaries.fGX = 0.300f;
+      primaries.fGY = 0.600f;
+      primaries.fBX = 0.150f;
+      primaries.fBY = 0.060f;
+      primaries.fWX = 0.3127f;
+      primaries.fWY = 0.3290f;
+      break;
+
+    case ColorSpace::PrimaryID::BT470M:
+      primaries.fRX = 0.67f;
+      primaries.fRY = 0.33f;
+      primaries.fGX = 0.21f;
+      primaries.fGY = 0.71f;
+      primaries.fBX = 0.14f;
+      primaries.fBY = 0.08f;
+      primaries.fWX = 0.31f;
+      primaries.fWY = 0.316f;
+      break;
+
+    case ColorSpace::PrimaryID::BT470BG:
+      primaries.fRX = 0.64f;
+      primaries.fRY = 0.33f;
+      primaries.fGX = 0.29f;
+      primaries.fGY = 0.60f;
+      primaries.fBX = 0.15f;
+      primaries.fBY = 0.06f;
+      primaries.fWX = 0.3127f;
+      primaries.fWY = 0.3290f;
+      break;
+
+    case ColorSpace::PrimaryID::SMPTE170M:
+    case ColorSpace::PrimaryID::SMPTE240M:
+      primaries.fRX = 0.630f;
+      primaries.fRY = 0.340f;
+      primaries.fGX = 0.310f;
+      primaries.fGY = 0.595f;
+      primaries.fBX = 0.155f;
+      primaries.fBY = 0.070f;
+      primaries.fWX = 0.3127f;
+      primaries.fWY = 0.3290f;
+      break;
+
+    case ColorSpace::PrimaryID::FILM:
+      primaries.fRX = 0.681f;
+      primaries.fRY = 0.319f;
+      primaries.fGX = 0.243f;
+      primaries.fGY = 0.692f;
+      primaries.fBX = 0.145f;
+      primaries.fBY = 0.049f;
+      primaries.fWX = 0.310f;
+      primaries.fWY = 0.136f;
+      break;
+
+    case ColorSpace::PrimaryID::BT2020:
+      primaries.fRX = 0.708f;
+      primaries.fRY = 0.292f;
+      primaries.fGX = 0.170f;
+      primaries.fGY = 0.797f;
+      primaries.fBX = 0.131f;
+      primaries.fBY = 0.046f;
+      primaries.fWX = 0.3127f;
+      primaries.fWY = 0.3290f;
+      break;
+
+    case ColorSpace::PrimaryID::SMPTEST428_1:
+      primaries.fRX = 1.0f;
+      primaries.fRY = 0.0f;
+      primaries.fGX = 0.0f;
+      primaries.fGY = 1.0f;
+      primaries.fBX = 0.0f;
+      primaries.fBY = 0.0f;
+      primaries.fWX = 1.0f / 3.0f;
+      primaries.fWY = 1.0f / 3.0f;
+      break;
+
+    case ColorSpace::PrimaryID::SMPTEST431_2:
+      primaries.fRX = 0.680f;
+      primaries.fRY = 0.320f;
+      primaries.fGX = 0.265f;
+      primaries.fGY = 0.690f;
+      primaries.fBX = 0.150f;
+      primaries.fBY = 0.060f;
+      primaries.fWX = 0.314f;
+      primaries.fWY = 0.351f;
+      break;
+
+    case ColorSpace::PrimaryID::SMPTEST432_1:
+      primaries.fRX = 0.680f;
+      primaries.fRY = 0.320f;
+      primaries.fGX = 0.265f;
+      primaries.fGY = 0.690f;
+      primaries.fBX = 0.150f;
+      primaries.fBY = 0.060f;
+      primaries.fWX = 0.3127f;
+      primaries.fWY = 0.3290f;
+      break;
+
+    case ColorSpace::PrimaryID::XYZ_D50:
+      primaries.fRX = 1.0f;
+      primaries.fRY = 0.0f;
+      primaries.fGX = 0.0f;
+      primaries.fGY = 1.0f;
+      primaries.fBX = 0.0f;
+      primaries.fBY = 0.0f;
+      primaries.fWX = 0.34567f;
+      primaries.fWY = 0.35850f;
+      break;
+  }
+
+  SkMatrix44 matrix;
+  primaries.toXYZD50(&matrix);
+  return Transform(matrix);
+}
+
+GFX_EXPORT float FromLinear(ColorSpace::TransferID id, float v) {
   switch (id) {
     case ColorSpace::TransferID::SMPTEST2084_NON_HDR:
       // Should already be handled.
+      NOTREACHED();
+    case ColorSpace::TransferID::CUSTOM:
+    // TODO(hubbe): Actually implement custom transfer functions.
+    case ColorSpace::TransferID::RESERVED0:
+    case ColorSpace::TransferID::RESERVED:
+    case ColorSpace::TransferID::UNSPECIFIED:
+    case ColorSpace::TransferID::UNKNOWN:
+    // All unknown values default to BT709
+
+    case ColorSpace::TransferID::BT709:
+    case ColorSpace::TransferID::SMPTE170M:
+    case ColorSpace::TransferID::BT2020_10:
+    case ColorSpace::TransferID::BT2020_12:
+      // BT709 is our "default" cause, so put the code after the switch
+      // to avoid "control reaches end of non-void function" errors.
       break;
 
+    case ColorSpace::TransferID::GAMMA22:
+      v = fmax(0.0f, v);
+      return powf(v, 1.0f / 2.2f);
+
+    case ColorSpace::TransferID::GAMMA28:
+      v = fmax(0.0f, v);
+      return powf(v, 1.0f / 2.8f);
+
+    case ColorSpace::TransferID::SMPTE240M: {
+      v = fmax(0.0f, v);
+      float a = 1.11157219592173128753f;
+      float b = 0.02282158552944503135f;
+      if (v <= b) {
+        return 4.0f * v;
+      } else {
+        return a * powf(v, 0.45f) - (a - 1.0f);
+      }
+    }
+
+    case ColorSpace::TransferID::LINEAR:
+      return v;
+
     case ColorSpace::TransferID::LOG:
       if (v < 0.01f)
         return 0.0f;
@@ -78,6 +238,16 @@
       }
     }
 
+    case ColorSpace::TransferID::IEC61966_2_1: {  // SRGB
+      v = fmax(0.0f, v);
+      float a = 1.055f;
+      float b = 0.0031308f;
+      if (v < b) {
+        return 12.92f * v;
+      } else {
+        return a * powf(v, 1.0f / 2.4f) - (a - 1.0f);
+      }
+    }
     case ColorSpace::TransferID::SMPTEST2084: {
       // Go from scRGB levels to 0-1.
       v *= 80.0f / 10000.0f;
@@ -90,6 +260,10 @@
       return powf((c1 + c2 * powf(v, m1)) / (1.0f + c3 * powf(v, m1)), m2);
     }
 
+    case ColorSpace::TransferID::SMPTEST428_1:
+      v = fmax(0.0f, v);
+      return powf(48.0f * v + 52.37f, 1.0f / 2.6f);
+
     // Spec: http://www.arib.or.jp/english/html/overview/doc/2-STD-B67v1_0.pdf
     case ColorSpace::TransferID::ARIB_STD_B67: {
       const float a = 0.17883277f;
@@ -102,16 +276,62 @@
         return a * log(v - b) + c;
     }
 
-    default:
-      // Handled by SkColorSpaceTransferFn.
-      break;
+    // Chrome-specific values below
+    case ColorSpace::TransferID::GAMMA24:
+      v = fmax(0.0f, v);
+      return powf(v, 1.0f / 2.4f);
   }
-  NOTREACHED();
-  return 0;
+
+  v = fmax(0.0f, v);
+  float a = 1.099296826809442f;
+  float b = 0.018053968510807f;
+  if (v <= b) {
+    return 4.5f * v;
+  } else {
+    return a * powf(v, 0.45f) - (a - 1.0f);
+  }
 }
 
-float ToLinear(ColorSpace::TransferID id, float v) {
+GFX_EXPORT float ToLinear(ColorSpace::TransferID id, float v) {
   switch (id) {
+    case ColorSpace::TransferID::CUSTOM:
+    // TODO(hubbe): Actually implement custom transfer functions.
+    case ColorSpace::TransferID::RESERVED0:
+    case ColorSpace::TransferID::RESERVED:
+    case ColorSpace::TransferID::UNSPECIFIED:
+    case ColorSpace::TransferID::UNKNOWN:
+    // All unknown values default to BT709
+
+    case ColorSpace::TransferID::BT709:
+    case ColorSpace::TransferID::SMPTE170M:
+    case ColorSpace::TransferID::BT2020_10:
+    case ColorSpace::TransferID::BT2020_12:
+      // BT709 is our "default" cause, so put the code after the switch
+      // to avoid "control reaches end of non-void function" errors.
+      break;
+
+    case ColorSpace::TransferID::GAMMA22:
+      v = fmax(0.0f, v);
+      return powf(v, 2.2f);
+
+    case ColorSpace::TransferID::GAMMA28:
+      v = fmax(0.0f, v);
+      return powf(v, 2.8f);
+
+    case ColorSpace::TransferID::SMPTE240M: {
+      v = fmax(0.0f, v);
+      float a = 1.11157219592173128753f;
+      float b = 0.02282158552944503135f;
+      if (v <= FromLinear(ColorSpace::TransferID::SMPTE240M, b)) {
+        return v / 4.0f;
+      } else {
+        return powf((v + a - 1.0f) / a, 1.0f / 0.45f);
+      }
+    }
+
+    case ColorSpace::TransferID::LINEAR:
+      return v;
+
     case ColorSpace::TransferID::LOG:
       if (v < 0.0f)
         return 0.0f;
@@ -147,6 +367,17 @@
       }
     }
 
+    case ColorSpace::TransferID::IEC61966_2_1: {  // SRGB
+      v = fmax(0.0f, v);
+      float a = 1.055f;
+      float b = 0.0031308f;
+      if (v < FromLinear(ColorSpace::TransferID::IEC61966_2_1, b)) {
+        return v / 12.92f;
+      } else {
+        return powf((v + a - 1.0f) / a, 2.4f);
+      }
+    }
+
     case ColorSpace::TransferID::SMPTEST2084: {
       v = fmax(0.0f, v);
       float m1 = (2610.0f / 4096.0f) / 4.0f;
@@ -164,6 +395,14 @@
       return v;
     }
 
+    case ColorSpace::TransferID::SMPTEST428_1:
+      return (powf(v, 2.6f) - 52.37f) / 48.0f;
+
+    // Chrome-specific values below
+    case ColorSpace::TransferID::GAMMA24:
+      v = fmax(0.0f, v);
+      return powf(v, 2.4f);
+
     case ColorSpace::TransferID::SMPTEST2084_NON_HDR:
       v = fmax(0.0f, v);
       return fmin(2.3f * pow(v, 2.8f), v / 5.0f + 0.8f);
@@ -182,13 +421,16 @@
       }
       return v_;
     }
-
-    default:
-      // Handled by SkColorSpaceTransferFn.
-      break;
   }
-  NOTREACHED();
-  return 0;
+
+  v = fmax(0.0f, v);
+  float a = 1.099296826809442f;
+  float b = 0.018053968510807f;
+  if (v < FromLinear(ColorSpace::TransferID::BT709, b)) {
+    return v / 4.5f;
+  } else {
+    return powf((v + a - 1.0f) / a, 1.0f / 0.45f);
+  }
 }
 
 GFX_EXPORT Transform GetTransferMatrix(ColorSpace::MatrixID id) {
@@ -375,10 +617,8 @@
 
 class ColorTransformFromLinear : public ColorTransformInternal {
  public:
-  explicit ColorTransformFromLinear(ColorSpace::TransferID transfer,
-                                    const SkColorSpaceTransferFn& fn,
-                                    bool fn_valid)
-      : transfer_(transfer), fn_(fn), fn_valid_(fn_valid) {}
+  explicit ColorTransformFromLinear(ColorSpace::TransferID transfer)
+      : transfer_(transfer) {}
   bool Prepend(ColorTransformInternal* prev) override {
     return prev->Join(*this);
   }
@@ -386,34 +626,22 @@
   bool IsNull() override { return transfer_ == ColorSpace::TransferID::LINEAR; }
 
   void transform(ColorTransform::TriStim* colors, size_t num) override {
-    if (fn_valid_) {
-      for (size_t i = 0; i < num; i++) {
-        colors[i].set_x(EvalSkTransferFn(fn_, colors[i].x()));
-        colors[i].set_y(EvalSkTransferFn(fn_, colors[i].y()));
-        colors[i].set_z(EvalSkTransferFn(fn_, colors[i].z()));
-      }
-    } else {
-      for (size_t i = 0; i < num; i++) {
-        colors[i].set_x(FromLinear(transfer_, colors[i].x()));
-        colors[i].set_y(FromLinear(transfer_, colors[i].y()));
-        colors[i].set_z(FromLinear(transfer_, colors[i].z()));
-      }
+    for (size_t i = 0; i < num; i++) {
+      colors[i].set_x(FromLinear(transfer_, colors[i].x()));
+      colors[i].set_y(FromLinear(transfer_, colors[i].y()));
+      colors[i].set_z(FromLinear(transfer_, colors[i].z()));
     }
   }
 
  private:
   friend class ColorTransformToLinear;
   ColorSpace::TransferID transfer_;
-  SkColorSpaceTransferFn fn_;
-  bool fn_valid_ = false;
 };
 
 class ColorTransformToLinear : public ColorTransformInternal {
  public:
-  explicit ColorTransformToLinear(ColorSpace::TransferID transfer,
-                                  const SkColorSpaceTransferFn& fn,
-                                  bool fn_valid)
-      : transfer_(transfer), fn_(fn), fn_valid_(fn_valid) {}
+  explicit ColorTransformToLinear(ColorSpace::TransferID transfer)
+      : transfer_(transfer) {}
 
   bool Prepend(ColorTransformInternal* prev) override {
     return prev->Join(*this);
@@ -449,13 +677,7 @@
   }
 
   void transform(ColorTransform::TriStim* colors, size_t num) override {
-    if (fn_valid_) {
-      for (size_t i = 0; i < num; i++) {
-        colors[i].set_x(EvalSkTransferFn(fn_, colors[i].x()));
-        colors[i].set_y(EvalSkTransferFn(fn_, colors[i].y()));
-        colors[i].set_z(EvalSkTransferFn(fn_, colors[i].z()));
-      }
-    } else if (transfer_ == ColorSpace::TransferID::SMPTEST2084_NON_HDR) {
+    if (transfer_ == ColorSpace::TransferID::SMPTEST2084_NON_HDR) {
       for (size_t i = 0; i < num; i++) {
         ColorTransform::TriStim ret(ToLinear(transfer_, colors[i].x()),
                                     ToLinear(transfer_, colors[i].y()),
@@ -481,8 +703,6 @@
 
  private:
   ColorSpace::TransferID transfer_;
-  SkColorSpaceTransferFn fn_;
-  bool fn_valid_ = false;
 };
 
 // BT2020 Constant Luminance is different than most other
@@ -638,9 +858,17 @@
 class ColorSpaceToColorSpaceTransform {
  public:
   static Transform GetPrimaryTransform(const ColorSpace& c) {
-    SkMatrix44 sk_matrix;
-    c.GetPrimaryMatrix(&sk_matrix);
-    return Transform(sk_matrix);
+    if (c.primaries_ == ColorSpace::PrimaryID::CUSTOM) {
+      return Transform(c.custom_primary_matrix_[0], c.custom_primary_matrix_[1],
+                       c.custom_primary_matrix_[2], c.custom_primary_matrix_[3],
+                       c.custom_primary_matrix_[4], c.custom_primary_matrix_[5],
+                       c.custom_primary_matrix_[6], c.custom_primary_matrix_[7],
+                       c.custom_primary_matrix_[8], c.custom_primary_matrix_[9],
+                       c.custom_primary_matrix_[10],
+                       c.custom_primary_matrix_[11], 0.0f, 0.0f, 0.0f, 1.0f);
+    } else {
+      return GetPrimaryMatrix(c.primaries_);
+    }
   }
 
   static void ColorSpaceToColorSpace(ColorSpace from,
@@ -683,18 +911,11 @@
 
       // TODO(hubbe): shrink gamuts here (never stretch gamuts)
     }
-
     builder->Append(base::MakeUnique<ColorTransformMatrix>(
         GetRangeAdjustMatrix(from.range_, from.matrix_)));
-
     builder->Append(base::MakeUnique<ColorTransformMatrix>(
         Invert(GetTransferMatrix(from.matrix_))));
-
-    SkColorSpaceTransferFn to_linear_fn;
-    bool to_linear_fn_valid = from.GetTransferFunction(&to_linear_fn);
-    builder->Append(base::MakeUnique<ColorTransformToLinear>(
-        from.transfer_, to_linear_fn, to_linear_fn_valid));
-
+    builder->Append(base::MakeUnique<ColorTransformToLinear>(from.transfer_));
     if (from.matrix_ == ColorSpace::MatrixID::BT2020_CL) {
       // BT2020 CL is a special case.
       builder->Append(base::MakeUnique<ColorTransformFromBT2020CL>());
@@ -709,14 +930,9 @@
       builder->Append(base::MakeUnique<ColorTransformToBT2020CL>());
     }
 
-    SkColorSpaceTransferFn from_linear_fn;
-    bool from_linear_fn_valid = to.GetInverseTransferFunction(&from_linear_fn);
-    builder->Append(base::MakeUnique<ColorTransformFromLinear>(
-        to.transfer_, from_linear_fn, from_linear_fn_valid));
-
+    builder->Append(base::MakeUnique<ColorTransformFromLinear>(to.transfer_));
     builder->Append(
         base::MakeUnique<ColorTransformMatrix>(GetTransferMatrix(to.matrix_)));
-
     builder->Append(base::MakeUnique<ColorTransformMatrix>(
         Invert(GetRangeAdjustMatrix(to.range_, to.matrix_))));
   }
@@ -812,33 +1028,4 @@
   return builder.GetTransform();
 }
 
-// static
-float ColorTransform::ToLinearForTesting(ColorSpace::TransferID transfer,
-                                         float v) {
-  ColorSpace space(ColorSpace::PrimaryID::BT709, transfer,
-                   ColorSpace::MatrixID::RGB, ColorSpace::RangeID::FULL);
-  SkColorSpaceTransferFn to_linear_fn;
-  bool to_linear_fn_valid = space.GetTransferFunction(&to_linear_fn);
-  ColorTransformToLinear to_linear_transform(transfer, to_linear_fn,
-                                             to_linear_fn_valid);
-  TriStim color(v, v, v);
-  to_linear_transform.transform(&color, 1);
-  return color.x();
-}
-
-// static
-float ColorTransform::FromLinearForTesting(ColorSpace::TransferID transfer,
-                                           float v) {
-  ColorSpace space(ColorSpace::PrimaryID::BT709, transfer,
-                   ColorSpace::MatrixID::RGB, ColorSpace::RangeID::FULL);
-  SkColorSpaceTransferFn from_linear_fn;
-  bool from_linear_fn_valid = space.GetInverseTransferFunction(&from_linear_fn);
-
-  ColorTransformFromLinear from_linear_transform(transfer, from_linear_fn,
-                                                 from_linear_fn_valid);
-  TriStim color(v, v, v);
-  from_linear_transform.transform(&color, 1);
-  return color.x();
-}
-
 }  // namespace gfx
diff --git a/ui/gfx/color_transform.h b/ui/gfx/color_transform.h
index 1d99617..092608c 100644
--- a/ui/gfx/color_transform.h
+++ b/ui/gfx/color_transform.h
@@ -9,12 +9,13 @@
 #include <stdint.h>
 
 #include "build/build_config.h"
-#include "ui/gfx/color_space.h"
 #include "ui/gfx/geometry/point3_f.h"
 #include "ui/gfx/gfx_export.h"
 
 namespace gfx {
 
+class ColorSpace;
+
 class GFX_EXPORT ColorTransform {
  public:
   enum class Intent { INTENT_ABSOLUTE, INTENT_PERCEPTUAL, TEST_NO_OPT };
@@ -32,9 +33,6 @@
       const ColorSpace& from,
       const ColorSpace& to,
       Intent intent);
-
-  static float ToLinearForTesting(ColorSpace::TransferID id, float v);
-  static float FromLinearForTesting(ColorSpace::TransferID id, float v);
 };
 }  // namespace gfx
 
diff --git a/ui/gfx/color_transform_unittest.cc b/ui/gfx/color_transform_unittest.cc
index 63ba82a8..c992687 100644
--- a/ui/gfx/color_transform_unittest.cc
+++ b/ui/gfx/color_transform_unittest.cc
@@ -13,7 +13,10 @@
 namespace gfx {
 
 // Internal functions, exposted for testing.
+GFX_EXPORT Transform GetPrimaryMatrix(ColorSpace::PrimaryID id);
 GFX_EXPORT Transform GetTransferMatrix(ColorSpace::MatrixID id);
+GFX_EXPORT float ToLinear(ColorSpace::TransferID id, float v);
+GFX_EXPORT float FromLinear(ColorSpace::TransferID id, float v);
 
 ColorSpace::PrimaryID all_primaries[] = {
     ColorSpace::PrimaryID::BT709,        ColorSpace::PrimaryID::BT470M,
@@ -114,7 +117,6 @@
   ICCProfile srgb_icc = ICCProfileForTestingSRGB();
   ColorSpace sRGB = srgb_icc.GetColorSpace();
   ColorSpace sRGB2 = sRGB;
-  const float kEpsilon = 1.5f / 255.f;
 
   // Prevent sRGB2 from using a cached ICC profile.
   sRGB2.icc_profile_id_ = 0;
@@ -124,27 +126,27 @@
 
   ColorTransform::TriStim tmp(1.0f, 1.0f, 1.0f);
   t->transform(&tmp, 1);
-  EXPECT_NEAR(tmp.x(), 1.0f, kEpsilon);
-  EXPECT_NEAR(tmp.y(), 1.0f, kEpsilon);
-  EXPECT_NEAR(tmp.z(), 1.0f, kEpsilon);
+  EXPECT_NEAR(tmp.x(), 1.0f, 0.001f);
+  EXPECT_NEAR(tmp.y(), 1.0f, 0.001f);
+  EXPECT_NEAR(tmp.z(), 1.0f, 0.001f);
 
   tmp = ColorTransform::TriStim(1.0f, 0.0f, 0.0f);
   t->transform(&tmp, 1);
-  EXPECT_NEAR(tmp.x(), 1.0f, kEpsilon);
-  EXPECT_NEAR(tmp.y(), 0.0f, kEpsilon);
-  EXPECT_NEAR(tmp.z(), 0.0f, kEpsilon);
+  EXPECT_NEAR(tmp.x(), 1.0f, 0.001f);
+  EXPECT_NEAR(tmp.y(), 0.0f, 0.001f);
+  EXPECT_NEAR(tmp.z(), 0.0f, 0.001f);
 
   tmp = ColorTransform::TriStim(0.0f, 1.0f, 0.0f);
   t->transform(&tmp, 1);
-  EXPECT_NEAR(tmp.x(), 0.0f, kEpsilon);
-  EXPECT_NEAR(tmp.y(), 1.0f, kEpsilon);
-  EXPECT_NEAR(tmp.z(), 0.0f, kEpsilon);
+  EXPECT_NEAR(tmp.x(), 0.0f, 0.001f);
+  EXPECT_NEAR(tmp.y(), 1.0f, 0.001f);
+  EXPECT_NEAR(tmp.z(), 0.0f, 0.001f);
 
   tmp = ColorTransform::TriStim(0.0f, 0.0f, 1.0f);
   t->transform(&tmp, 1);
-  EXPECT_NEAR(tmp.x(), 0.0f, kEpsilon);
-  EXPECT_NEAR(tmp.y(), 0.0f, kEpsilon);
-  EXPECT_NEAR(tmp.z(), 1.0f, kEpsilon);
+  EXPECT_NEAR(tmp.x(), 0.0f, 0.001f);
+  EXPECT_NEAR(tmp.y(), 0.0f, 0.001f);
+  EXPECT_NEAR(tmp.z(), 1.0f, 0.001f);
 }
 
 TEST(SimpleColorSpace, UnknownToSRGB) {
@@ -172,6 +174,18 @@
   EXPECT_GT(tmp.z(), tmp.y());
 }
 
+class PrimaryTest : public testing::TestWithParam<ColorSpace::PrimaryID> {};
+
+TEST_P(PrimaryTest, checkInvertible) {
+  EXPECT_EQ(GetPrimaryMatrix(GetParam()).matrix().get(3, 3), 1.0f);
+  // Check that all primary matrices are invertable.
+  EXPECT_TRUE(GetPrimaryMatrix(GetParam()).IsInvertible());
+}
+
+INSTANTIATE_TEST_CASE_P(ColorSpace,
+                        PrimaryTest,
+                        testing::ValuesIn(all_primaries));
+
 class MatrixTest : public testing::TestWithParam<ColorSpace::MatrixID> {};
 
 TEST_P(MatrixTest, checkInvertible) {
@@ -188,8 +202,8 @@
 
 TEST_P(TransferTest, basicTest) {
   for (float x = 0.0f; x <= 1.0f; x += 1.0f / 128.0f) {
-    float linear = ColorTransform::ToLinearForTesting(GetParam(), x);
-    float x2 = ColorTransform::FromLinearForTesting(GetParam(), linear);
+    float linear = ToLinear(GetParam(), x);
+    float x2 = FromLinear(GetParam(), linear);
     EXPECT_NEAR(x, x2, 0.001f);
   }
 }
diff --git a/ui/gfx/icc_profile.cc b/ui/gfx/icc_profile.cc
index 645b569..c5e84d1 100644
--- a/ui/gfx/icc_profile.cc
+++ b/ui/gfx/icc_profile.cc
@@ -9,8 +9,6 @@
 #include "base/containers/mru_cache.h"
 #include "base/lazy_instance.h"
 #include "base/synchronization/lock.h"
-#include "third_party/skia/include/core/SkData.h"
-#include "third_party/skia/include/core/SkICC.h"
 #include "ui/gfx/color_transform.h"
 
 namespace gfx {
@@ -45,7 +43,17 @@
 ICCProfile::~ICCProfile() = default;
 
 bool ICCProfile::operator==(const ICCProfile& other) const {
-  return data_ == data_;
+  if (type_ != other.type_)
+    return false;
+  switch (type_) {
+    case Type::INVALID:
+      return true;
+    case Type::FROM_COLOR_SPACE:
+      return color_space_ == other.color_space_;
+    case Type::FROM_DATA:
+      return data_ == other.data_;
+  }
+  return false;
 }
 
 bool ICCProfile::operator!=(const ICCProfile& other) const {
@@ -53,37 +61,37 @@
 }
 
 // static
-ICCProfile ICCProfile::FromData(const void* data, size_t size) {
-  if (!IsValidProfileLength(size)) {
-    if (size != 0)
-      DLOG(ERROR) << "Invalid ICC profile length: " << size << ".";
+ICCProfile ICCProfile::FromData(const char* data, size_t size) {
+  ICCProfile icc_profile;
+  if (IsValidProfileLength(size)) {
+    icc_profile.type_ = Type::FROM_DATA;
+    icc_profile.data_.insert(icc_profile.data_.begin(), data, data + size);
+  } else {
     return ICCProfile();
   }
 
-  uint64_t new_profile_id = 0;
-  const char* data_as_char = reinterpret_cast<const char*>(data);
-  {
-    // Linearly search the cached ICC profiles to find one with the same data.
-    // If it exists, re-use its id and touch it in the cache.
-    Cache& cache = g_cache.Get();
-    base::AutoLock lock(cache.lock);
-    for (auto iter = cache.id_to_icc_profile_mru.begin();
-         iter != cache.id_to_icc_profile_mru.end(); ++iter) {
-      const std::vector<char>& iter_data = iter->second.data_;
-      if (iter_data.size() != size || memcmp(data, iter_data.data(), size))
-        continue;
-      auto found = cache.id_to_icc_profile_mru.Get(iter->second.id_);
-      return found->second;
+  Cache& cache = g_cache.Get();
+  base::AutoLock lock(cache.lock);
+
+  // Linearly search the cached ICC profiles to find one with the same data.
+  // If it exists, re-use its id and touch it in the cache.
+  for (auto iter = cache.id_to_icc_profile_mru.begin();
+       iter != cache.id_to_icc_profile_mru.end(); ++iter) {
+    if (icc_profile.data_ == iter->second.data_) {
+      icc_profile = iter->second;
+      cache.id_to_icc_profile_mru.Get(icc_profile.id_);
+      return icc_profile;
     }
-    new_profile_id = cache.next_unused_id++;
   }
 
   // Create a new cached id and add it to the cache.
-  ICCProfile icc_profile;
-  icc_profile.id_ = new_profile_id;
-  icc_profile.data_.insert(icc_profile.data_.begin(), data_as_char,
-                           data_as_char + size);
-  icc_profile.ComputeColorSpaceAndCache();
+  icc_profile.id_ = cache.next_unused_id++;
+  icc_profile.color_space_ =
+      ColorSpace(ColorSpace::PrimaryID::CUSTOM, ColorSpace::TransferID::CUSTOM,
+                 ColorSpace::MatrixID::RGB, ColorSpace::RangeID::FULL);
+  icc_profile.color_space_.icc_profile_id_ = icc_profile.id_;
+  icc_profile.color_space_.sk_color_space_ = SkColorSpace::MakeICC(data, size);
+  cache.id_to_icc_profile_mru.Put(icc_profile.id_, icc_profile);
   return icc_profile;
 }
 
@@ -104,32 +112,19 @@
   if (color_space.icc_profile_id_) {
     Cache& cache = g_cache.Get();
     base::AutoLock lock(cache.lock);
+
     auto found = cache.id_to_icc_profile_mru.Get(color_space.icc_profile_id_);
-    if (found != cache.id_to_icc_profile_mru.end())
+    if (found != cache.id_to_icc_profile_mru.end()) {
       return found->second;
+    }
   }
 
-  // Otherwise, construct an ICC profile based on the best approximated
-  // primaries and matrix.
-  SkMatrix44 to_XYZD50_matrix;
-  color_space.GetPrimaryMatrix(&to_XYZD50_matrix);
-  SkColorSpaceTransferFn fn;
-  if (!color_space.GetTransferFunction(&fn)) {
-    DLOG(ERROR) << "Failed to get ColorSpace transfer function for ICCProfile.";
-    return ICCProfile();
-  }
-
-  sk_sp<SkData> data = SkICC::WriteToICC(fn, to_XYZD50_matrix);
-  if (!data) {
-    DLOG(ERROR) << "Failed to create SkICC.";
-    return ICCProfile();
-  }
-
-  // gfx::ColorTransform assumes that this will return an empty profile for any
-  // color space that was not constructed from an ICC profile.
-  // TODO(ccameron): Fix this assumption.
-  // return FromData(data->data(), data->size());
-  return ICCProfile();
+  // TODO(ccameron): Support constructing ICC profiles from arbitrary ColorSpace
+  // objects.
+  ICCProfile icc_profile;
+  icc_profile.type_ = gfx::ICCProfile::Type::FROM_COLOR_SPACE;
+  icc_profile.color_space_ = color_space;
+  return icc_profile;
 }
 
 ICCProfile ICCProfile::FromSkColorSpace(sk_sp<SkColorSpace> color_space) {
@@ -153,7 +148,6 @@
 
   // TODO(ccameron): Support constructing ICC profiles from arbitrary
   // SkColorSpace objects.
-  DLOG(ERROR) << "Failed to find ICC profile matching SkColorSpace.";
   return icc_profile;
 }
 
@@ -161,85 +155,68 @@
   return data_;
 }
 
-const ColorSpace& ICCProfile::GetColorSpace() const {
-  // Move this ICC profile to the most recently used end of the cache,
-  // inserting if needed.
-  if (id_) {
+ColorSpace ICCProfile::GetColorSpace() const {
+  if (type_ == Type::INVALID)
+    return gfx::ColorSpace();
+  if (type_ == Type::FROM_COLOR_SPACE)
+    return color_space_;
+
+  ColorSpace color_space = color_space_;
+
+  // Move this ICC profile to the most recently used end of the cache.
+  {
     Cache& cache = g_cache.Get();
     base::AutoLock lock(cache.lock);
+
     auto found = cache.id_to_icc_profile_mru.Get(id_);
     if (found == cache.id_to_icc_profile_mru.end())
-      found = cache.id_to_icc_profile_mru.Put(id_, *this);
-  }
-  return color_space_;
-}
-
-void ICCProfile::ComputeColorSpaceAndCache() {
-  if (!id_)
-    return;
-
-  // If this already exists in the cache, just update its |color_space_|.
-  {
-    Cache& cache = g_cache.Get();
-    base::AutoLock lock(cache.lock);
-    auto found = cache.id_to_icc_profile_mru.Get(id_);
-    if (found != cache.id_to_icc_profile_mru.end()) {
-      color_space_ = found->second.color_space_;
-      return;
-    }
+      cache.id_to_icc_profile_mru.Put(id_, *this);
   }
 
-  // Compute the color space.
-  color_space_ = gfx::ColorSpace(
-      ColorSpace::PrimaryID::CUSTOM, ColorSpace::TransferID::CUSTOM,
+  ColorSpace unity_colorspace(
+      ColorSpace::PrimaryID::CUSTOM, ColorSpace::TransferID::LINEAR,
       ColorSpace::MatrixID::RGB, ColorSpace::RangeID::FULL);
-  color_space_.icc_profile_id_ = id_;
-  color_space_.sk_color_space_ =
-      SkColorSpace::MakeICC(data_.data(), data_.size());
+  unity_colorspace.custom_primary_matrix_[0] = 1.0f;
+  unity_colorspace.custom_primary_matrix_[1] = 0.0f;
+  unity_colorspace.custom_primary_matrix_[2] = 0.0f;
+  unity_colorspace.custom_primary_matrix_[3] = 0.0f;
 
-  sk_sp<SkICC> sk_icc = SkICC::Make(data_.data(), data_.size());
-  if (sk_icc) {
-    bool result;
-    SkMatrix44 to_XYZD50_matrix;
-    result = sk_icc->toXYZD50(&to_XYZD50_matrix);
-    if (result) {
-      for (int row = 0; row < 3; ++row) {
-        for (int col = 0; col < 3; ++col) {
-          color_space_.custom_primary_matrix_[3 * row + col] =
-              to_XYZD50_matrix.get(row, col);
-        }
-      }
-    } else {
-      // Just say that the primaries were the sRGB primaries if we can't
-      // extract them.
-      color_space_.primaries_ = ColorSpace::PrimaryID::BT709;
-      DLOG(ERROR) << "Unable to handle ICCProfile primaries.";
-    }
-    SkColorSpaceTransferFn fn;
-    result = sk_icc->isNumericalTransferFn(&fn);
-    if (result) {
-      color_space_.custom_transfer_params_[0] = fn.fA;
-      color_space_.custom_transfer_params_[1] = fn.fB;
-      color_space_.custom_transfer_params_[2] = fn.fC;
-      color_space_.custom_transfer_params_[3] = fn.fD;
-      color_space_.custom_transfer_params_[4] = fn.fE;
-      color_space_.custom_transfer_params_[5] = fn.fF;
-      color_space_.custom_transfer_params_[6] = fn.fG;
-    } else {
-      // Just say that the transfer function was sRGB if we cannot read it.
-      // TODO(ccameron): Use a least squares approximation of the transfer
-      // function when it is not numerical.
-      color_space_.transfer_ = ColorSpace::TransferID::IEC61966_2_1;
-      DLOG(ERROR) << "Unable to handle ICCProfile transfer function.";
-    }
-  }
+  unity_colorspace.custom_primary_matrix_[4] = 0.0f;
+  unity_colorspace.custom_primary_matrix_[5] = 1.0f;
+  unity_colorspace.custom_primary_matrix_[6] = 0.0f;
+  unity_colorspace.custom_primary_matrix_[7] = 0.0f;
 
-  // Add to the cache.
-  {
-    Cache& cache = g_cache.Get();
-    base::AutoLock lock(cache.lock);
-    cache.id_to_icc_profile_mru.Put(id_, *this);
-  }
+  unity_colorspace.custom_primary_matrix_[8] = 0.0f;
+  unity_colorspace.custom_primary_matrix_[9] = 0.0f;
+  unity_colorspace.custom_primary_matrix_[10] = 1.0f;
+  unity_colorspace.custom_primary_matrix_[11] = 0.0f;
+
+  // This will look up and use the ICC profile.
+  std::unique_ptr<ColorTransform> transform(ColorTransform::NewColorTransform(
+      color_space, unity_colorspace, ColorTransform::Intent::INTENT_ABSOLUTE));
+
+  ColorTransform::TriStim tmp[4];
+  tmp[0].set_x(1.0f);
+  tmp[1].set_y(1.0f);
+  tmp[2].set_z(1.0f);
+  transform->transform(tmp, arraysize(tmp));
+
+  color_space.custom_primary_matrix_[0] = tmp[0].x() - tmp[3].x();
+  color_space.custom_primary_matrix_[1] = tmp[1].x() - tmp[3].x();
+  color_space.custom_primary_matrix_[2] = tmp[2].x() - tmp[3].x();
+  color_space.custom_primary_matrix_[3] = tmp[3].x();
+
+  color_space.custom_primary_matrix_[4] = tmp[0].y() - tmp[3].y();
+  color_space.custom_primary_matrix_[5] = tmp[1].y() - tmp[3].y();
+  color_space.custom_primary_matrix_[6] = tmp[2].y() - tmp[3].y();
+  color_space.custom_primary_matrix_[7] = tmp[3].y();
+
+  color_space.custom_primary_matrix_[8] = tmp[0].z() - tmp[3].z();
+  color_space.custom_primary_matrix_[9] = tmp[1].z() - tmp[3].z();
+  color_space.custom_primary_matrix_[10] = tmp[2].z() - tmp[3].z();
+  color_space.custom_primary_matrix_[11] = tmp[3].z();
+
+  return color_space;
 }
 
 // static
diff --git a/ui/gfx/icc_profile.h b/ui/gfx/icc_profile.h
index c6170c61..e719c16 100644
--- a/ui/gfx/icc_profile.h
+++ b/ui/gfx/icc_profile.h
@@ -23,6 +23,10 @@
 
 namespace gfx {
 
+namespace mojom {
+class ICCProfileDataView;
+}
+
 // Used to represent a full ICC profile, usually retrieved from a monitor. It
 // can be lossily compressed into a ColorSpace object. This structure should
 // only be sent from higher-privilege processes to lower-privilege processes,
@@ -50,13 +54,14 @@
   // Internally, this will make an effort to create an identical ICCProfile
   // to the one that created |color_space|, but this is not guaranteed.
   static ICCProfile FromColorSpace(const gfx::ColorSpace& color_space);
+  static ICCProfile FromSkColorSpace(sk_sp<SkColorSpace> color_space);
 
   // Create directly from profile data.
-  static ICCProfile FromData(const void* icc_profile, size_t size);
+  static ICCProfile FromData(const char* icc_profile, size_t size);
 
   // This will perform a potentially-lossy conversion to a more compact color
   // space representation.
-  const ColorSpace& GetColorSpace() const;
+  ColorSpace GetColorSpace() const;
 
   const std::vector<char>& GetData() const;
 
@@ -67,25 +72,36 @@
   static bool CachedProfilesNeedUpdate();
 #endif
 
- private:
-  // TODO(ccameron): Remove this function once its callerrs are gone.
-  static ICCProfile FromSkColorSpace(sk_sp<SkColorSpace> color_space);
-  static bool IsValidProfileLength(size_t length);
-  void ComputeColorSpaceAndCache();
+  enum class Type {
+    // This is not a valid profile.
+    INVALID,
+    // This is from a gfx::ColorSpace. This ensures that GetColorSpace returns
+    // the exact same object as was used to create this.
+    FROM_COLOR_SPACE,
+    // This was created from ICC profile data.
+    FROM_DATA,
+    LAST = FROM_DATA
+  };
 
-  // This globally identifies this ICC profile. It is used to look up this ICC
-  // profile from a ColorSpace object created from it. The object is invalid if
-  // |id_| is zero.
-  uint64_t id_ = 0;
+ private:
+  static bool IsValidProfileLength(size_t length);
+
+  Type type_ = Type::INVALID;
+  gfx::ColorSpace color_space_;
   std::vector<char> data_;
 
-  gfx::ColorSpace color_space_;
+  // This globally identifies this ICC profile. It is used to look up this ICC
+  // profile from a ColorSpace object created from it.
+  uint64_t id_ = 0;
 
   FRIEND_TEST_ALL_PREFIXES(SimpleColorSpace, BT709toSRGBICC);
   FRIEND_TEST_ALL_PREFIXES(SimpleColorSpace, GetColorSpace);
   friend int ::LLVMFuzzerTestOneInput(const uint8_t*, size_t);
   friend class ColorSpace;
   friend struct IPC::ParamTraits<gfx::ICCProfile>;
+  friend struct IPC::ParamTraits<gfx::ICCProfile::Type>;
+  friend struct mojo::StructTraits<gfx::mojom::ICCProfileDataView,
+                                   gfx::ICCProfile>;
 };
 
 }  // namespace gfx
diff --git a/ui/gfx/ipc/color/gfx_param_traits.cc b/ui/gfx/ipc/color/gfx_param_traits.cc
index 657adc32..6129e1d 100644
--- a/ui/gfx/ipc/color/gfx_param_traits.cc
+++ b/ui/gfx/ipc/color/gfx_param_traits.cc
@@ -16,10 +16,10 @@
   GetParamSize(s, p.matrix_);
   GetParamSize(s, p.range_);
   GetParamSize(s, p.icc_profile_id_);
-  if (p.primaries_ == gfx::ColorSpace::PrimaryID::CUSTOM)
-    s->AddData(sizeof(p.custom_primary_matrix_));
-  if (p.transfer_ == gfx::ColorSpace::TransferID::CUSTOM)
-    s->AddData(sizeof(p.custom_transfer_params_));
+  if (p.primaries_ == gfx::ColorSpace::PrimaryID::CUSTOM) {
+    for (int i = 0; i < 12; i++)
+      GetParamSize(s, p.custom_primary_matrix_[i]);
+  }
 }
 
 void ParamTraits<gfx::ColorSpace>::Write(base::Pickle* m,
@@ -30,12 +30,8 @@
   WriteParam(m, p.range_);
   WriteParam(m, p.icc_profile_id_);
   if (p.primaries_ == gfx::ColorSpace::PrimaryID::CUSTOM) {
-    m->WriteBytes(reinterpret_cast<const char*>(p.custom_primary_matrix_),
-                  sizeof(p.custom_primary_matrix_));
-  }
-  if (p.transfer_ == gfx::ColorSpace::TransferID::CUSTOM) {
-    m->WriteBytes(reinterpret_cast<const char*>(p.custom_transfer_params_),
-                  sizeof(p.custom_transfer_params_));
+    for (int i = 0; i < 12; i++)
+      WriteParam(m, p.custom_primary_matrix_[i]);
   }
 }
 
@@ -52,18 +48,12 @@
     return false;
   if (!ReadParam(m, iter, &r->icc_profile_id_))
     return false;
+
   if (r->primaries_ == gfx::ColorSpace::PrimaryID::CUSTOM) {
-    const char* data = nullptr;
-    if (!iter->ReadBytes(&data, sizeof(r->custom_primary_matrix_)))
-      return false;
-    memcpy(r->custom_primary_matrix_, data, sizeof(r->custom_primary_matrix_));
-  }
-  if (r->transfer_ == gfx::ColorSpace::TransferID::CUSTOM) {
-    const char* data = nullptr;
-    if (!iter->ReadBytes(&data, sizeof(r->custom_transfer_params_)))
-      return false;
-    memcpy(r->custom_transfer_params_, data,
-           sizeof(r->custom_transfer_params_));
+    for (int i = 0; i < 12; i++) {
+      if (!ReadParam(m, iter, r->custom_primary_matrix_ + i))
+        return false;
+    }
   }
   return true;
 }
@@ -73,36 +63,6 @@
   l->append("<gfx::ColorSpace>");
 }
 
-void ParamTraits<gfx::ICCProfile>::GetSize(base::PickleSizer* s,
-                                           const gfx::ICCProfile& p) {
-  GetParamSize(s, p.id_);
-  GetParamSize(s, p.data_);
-}
-
-void ParamTraits<gfx::ICCProfile>::Write(base::Pickle* m,
-                                         const gfx::ICCProfile& p) {
-  WriteParam(m, p.id_);
-  WriteParam(m, p.data_);
-}
-
-bool ParamTraits<gfx::ICCProfile>::Read(const base::Pickle* m,
-                                        base::PickleIterator* iter,
-                                        gfx::ICCProfile* r) {
-  if (!ReadParam(m, iter, &r->id_))
-    return false;
-  if (!ReadParam(m, iter, &r->data_))
-    return false;
-  // Ensure that this entry is added to the global ICC profile cache, if it
-  // is not there already.
-  r->ComputeColorSpaceAndCache();
-  return true;
-}
-
-void ParamTraits<gfx::ICCProfile>::Log(const gfx::ICCProfile& p,
-                                       std::string* l) {
-  l->append("<gfx::ICCProfile>");
-}
-
 }  // namespace IPC
 
 // Generate param traits size methods.
diff --git a/ui/gfx/ipc/color/gfx_param_traits.h b/ui/gfx/ipc/color/gfx_param_traits.h
index 8021258..81b6301 100644
--- a/ui/gfx/ipc/color/gfx_param_traits.h
+++ b/ui/gfx/ipc/color/gfx_param_traits.h
@@ -29,17 +29,6 @@
   static void Log(const param_type& p, std::string* l);
 };
 
-template <>
-struct GFX_IPC_COLOR_EXPORT ParamTraits<gfx::ICCProfile> {
-  typedef gfx::ICCProfile param_type;
-  static void GetSize(base::PickleSizer* s, const param_type& p);
-  static void Write(base::Pickle* m, const param_type& p);
-  static bool Read(const base::Pickle* m,
-                   base::PickleIterator* iter,
-                   param_type* r);
-  static void Log(const param_type& p, std::string* l);
-};
-
 }  // namespace IPC
 
 #endif  // UI_GFX_IPC_COLOR_GFX_PARAM_TRAITS_H_
diff --git a/ui/gfx/ipc/color/gfx_param_traits_macros.h b/ui/gfx/ipc/color/gfx_param_traits_macros.h
index 7c1ba7c6..fcc8243 100644
--- a/ui/gfx/ipc/color/gfx_param_traits_macros.h
+++ b/ui/gfx/ipc/color/gfx_param_traits_macros.h
@@ -24,6 +24,15 @@
 IPC_ENUM_TRAITS_MAX_VALUE(gfx::ColorSpace::RangeID,
                           gfx::ColorSpace::RangeID::LAST);
 
+IPC_ENUM_TRAITS_MAX_VALUE(gfx::ICCProfile::Type, gfx::ICCProfile::Type::LAST);
+
+IPC_STRUCT_TRAITS_BEGIN(gfx::ICCProfile)
+  IPC_STRUCT_TRAITS_MEMBER(type_)
+  IPC_STRUCT_TRAITS_MEMBER(color_space_)
+  IPC_STRUCT_TRAITS_MEMBER(data_)
+  IPC_STRUCT_TRAITS_MEMBER(id_)
+IPC_STRUCT_TRAITS_END()
+
 #undef IPC_MESSAGE_EXPORT
 #define IPC_MESSAGE_EXPORT
 
diff --git a/ui/gfx/mojo/OWNERS b/ui/gfx/mojo/OWNERS
index 34d76d9..e7a266d 100644
--- a/ui/gfx/mojo/OWNERS
+++ b/ui/gfx/mojo/OWNERS
@@ -5,5 +5,3 @@
 per-file *.mojom=file://ipc/SECURITY_OWNERS
 per-file *_struct_traits*.*=set noparent
 per-file *_struct_traits*.*=file://ipc/SECURITY_OWNERS
-per-file *.typemap=set noparent
-per-file *.typemap=file://ipc/SECURITY_OWNERS
diff --git a/ui/gfx/mojo/icc_profile.mojom b/ui/gfx/mojo/icc_profile.mojom
index 62684b4..72aaba5 100644
--- a/ui/gfx/mojo/icc_profile.mojom
+++ b/ui/gfx/mojo/icc_profile.mojom
@@ -6,5 +6,11 @@
 
 import "ui/gfx/mojo/color_space.mojom";
 
-[Native]
-struct ICCProfile;
+struct ICCProfile {
+  [Native]
+  enum Type;
+  gfx.mojom.ColorSpace color_space;
+  Type type;
+  string data;
+  uint64 id;
+};
diff --git a/ui/gfx/mojo/icc_profile.typemap b/ui/gfx/mojo/icc_profile.typemap
index 33776951d..fd74b34 100644
--- a/ui/gfx/mojo/icc_profile.typemap
+++ b/ui/gfx/mojo/icc_profile.typemap
@@ -4,12 +4,17 @@
 
 mojom = "//ui/gfx/mojo/icc_profile.mojom"
 public_headers = [ "//ui/gfx/icc_profile.h" ]
-traits_headers = [ "//ui/gfx/ipc/color/gfx_param_traits.h" ]
+traits_headers = [ "//ui/gfx/mojo/icc_profile_struct_traits.h" ]
+sources = [
+  "//ui/gfx/mojo/icc_profile_struct_traits.cc",
+]
 public_deps = [
-  "//ipc",
   "//ui/gfx",
 ]
 deps = [
   "//ui/gfx/ipc/color",
 ]
-type_mappings = [ "gfx.mojom.ICCProfile=gfx::ICCProfile" ]
+type_mappings = [
+  "gfx.mojom.ICCProfile.Type=gfx::ICCProfile::Type",
+  "gfx.mojom.ICCProfile=gfx::ICCProfile",
+]
diff --git a/ui/gfx/mojo/icc_profile_struct_traits.cc b/ui/gfx/mojo/icc_profile_struct_traits.cc
new file mode 100644
index 0000000..e612f36
--- /dev/null
+++ b/ui/gfx/mojo/icc_profile_struct_traits.cc
@@ -0,0 +1,30 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ui/gfx/mojo/icc_profile_struct_traits.h"
+
+#include <algorithm>
+
+#include "mojo/public/cpp/bindings/string_data_view.h"
+
+namespace mojo {
+
+using Traits = StructTraits<gfx::mojom::ICCProfileDataView, gfx::ICCProfile>;
+
+// static
+bool Traits::Read(gfx::mojom::ICCProfileDataView data, gfx::ICCProfile* out) {
+  if (!data.ReadType(&out->type_))
+    return false;
+  if (!data.ReadColorSpace(&out->color_space_))
+    return false;
+  out->id_ = data.id();
+
+  mojo::StringDataView view;
+  data.GetDataDataView(&view);
+  out->data_.resize(view.size());
+  std::copy(view.storage(), view.storage() + view.size(), out->data_.begin());
+  return true;
+}
+
+}  // namespace mojo
diff --git a/ui/gfx/mojo/icc_profile_struct_traits.h b/ui/gfx/mojo/icc_profile_struct_traits.h
new file mode 100644
index 0000000..b80e1e87
--- /dev/null
+++ b/ui/gfx/mojo/icc_profile_struct_traits.h
@@ -0,0 +1,38 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef UI_GFX_MOJO_ICC_PROFILE_STRUCT_TRAITS_H_
+#define UI_GFX_MOJO_ICC_PROFILE_STRUCT_TRAITS_H_
+
+#include <algorithm>
+#include <memory>
+
+#include "base/strings/string_piece.h"
+#include "mojo/public/cpp/bindings/struct_traits.h"
+#include "ui/gfx/icc_profile.h"
+#include "ui/gfx/ipc/color/gfx_param_traits.h"
+#include "ui/gfx/mojo/icc_profile.mojom.h"
+
+namespace mojo {
+
+template <>
+struct StructTraits<gfx::mojom::ICCProfileDataView, gfx::ICCProfile> {
+  static gfx::ICCProfile::Type type(const gfx::ICCProfile& profile) {
+    return profile.type_;
+  }
+  static gfx::ColorSpace color_space(const gfx::ICCProfile& profile) {
+    return profile.color_space_;
+  }
+  static base::StringPiece data(const gfx::ICCProfile& profile) {
+    return base::StringPiece(profile.data_.data(), profile.data_.size());
+  }
+  static uint64_t id(const gfx::ICCProfile& profile) { return profile.id_; }
+
+  static bool Read(gfx::mojom::ICCProfileDataView data,
+                   gfx::ICCProfile* profile);
+};
+
+}  // namespace mojo
+
+#endif  // UI_GFX_MOJO_ICC_PROFILE_STRUCT_TRAITS_H_
diff --git a/ui/views/controls/menu/menu_controller.cc b/ui/views/controls/menu/menu_controller.cc
index 79ff77c..aa002f2 100644
--- a/ui/views/controls/menu/menu_controller.cc
+++ b/ui/views/controls/menu/menu_controller.cc
@@ -1026,14 +1026,18 @@
   // Only attempt to close if the MenuHost said to.
   if (should_close) {
     if (showing_) {
-      // Close showing widgets.
+      // During a drag operation there are several ways in which this can be
+      // canceled and deleted. Verify that this is still active before closing
+      // the widgets.
       if (GetActiveInstance() == this) {
+        base::WeakPtr<MenuController> this_ref = AsWeakPtr();
         CloseAllNestedMenus();
         Cancel(EXIT_ALL);
-      }
-      // The above may have deleted us. If not perform a full shutdown.
-      if (GetActiveInstance() == this)
+        // The above may have deleted us. If not perform a full shutdown.
+        if (!this_ref)
+          return;
         ExitAsyncRun();
+      }
     } else if (exit_type_ == EXIT_ALL) {
       // We may have been canceled during the drag. If so we still need to fully
       // shutdown.
@@ -1062,9 +1066,10 @@
   event->StopPropagation();
 
   if (event->type() == ui::ET_KEY_PRESSED) {
+    base::WeakPtr<MenuController> this_ref = AsWeakPtr();
     OnKeyDown(event->key_code());
-    // Menu controller might have been deleted.
-    if (!GetActiveInstance())
+    // Key events can lead to this being deleted.
+    if (!this_ref)
       return ui::POST_DISPATCH_NONE;
 
     // Do not check mnemonics if the Alt or Ctrl modifiers are pressed. For
@@ -1074,8 +1079,8 @@
     if (exit_type() == EXIT_NONE && (flags & kKeyFlagsMask) == 0) {
       base::char16 c = event->GetCharacter();
       SelectByChar(c);
-      // Menu controller might have been deleted.
-      if (!GetActiveInstance())
+      // SelectByChar can lead to this being deleted.
+      if (!this_ref)
         return ui::POST_DISPATCH_NONE;
     }
   }
@@ -1112,6 +1117,11 @@
   return cancel_all_timer_.IsRunning();
 }
 
+void MenuController::ClearStateForTest() {
+  state_ = State();
+  pending_state_ = State();
+}
+
 // static
 void MenuController::TurnOffMenuSelectionHoldForTest() {
   menu_selection_hold_time_ms = -1;
@@ -1249,12 +1259,13 @@
   StopScrolling();
   int drag_ops = item->GetDelegate()->GetDragOperations(item);
   did_initiate_drag_ = true;
+  base::WeakPtr<MenuController> this_ref = AsWeakPtr();
   // TODO(varunjain): Properly determine and send DRAG_EVENT_SOURCE below.
   item->GetWidget()->RunShellDrag(NULL, data, widget_loc, drag_ops,
       ui::DragDropTypes::DRAG_EVENT_SOURCE_MOUSE);
-  // MenuController may have been deleted if |async_run_| so check for an active
-  // instance before accessing member variables.
-  if (GetActiveInstance() == this)
+  // MenuController may have been deleted if |async_run_| so check before
+  // accessing member variables.
+  if (this_ref)
     did_initiate_drag_ = false;
 }
 
@@ -1415,10 +1426,11 @@
   if (!hot_view)
     return false;
 
+  base::WeakPtr<MenuController> this_ref = AsWeakPtr();
   ui::Accelerator accelerator(ui::VKEY_RETURN, ui::EF_NONE);
   hot_view->AcceleratorPressed(accelerator);
   // An accelerator may have canceled the menu after activation.
-  if (GetActiveInstance()) {
+  if (this_ref) {
     CustomButton* button = static_cast<CustomButton*>(hot_view);
     SetHotTrackedButton(button);
   }
@@ -2384,9 +2396,13 @@
 
 #if defined(OS_WIN)
   if (event->IsMouseEvent() || event->IsTouchEvent()) {
+    base::WeakPtr<MenuController> this_ref = AsWeakPtr();
     bool async_run = async_run_;
     if (state_.item) {
       state_.item->GetRootMenuItem()->GetSubmenu()->ReleaseCapture();
+      // We're going to close and we own the event capture. We need to repost
+      // the event, otherwise the window the user clicked on won't get the
+      // event.
       RepostEventImpl(event, screen_loc, native_view, window);
     } else {
       // We some times get an event after closing all the menus. Ignore it. Make
@@ -2395,13 +2411,8 @@
       DCHECK(!source->GetWidget()->IsVisible());
     }
 
-    // We're going to close and we own the event capture. We need to repost the
-    // event, otherwise the window the user clicked on won't get the event.
-    //  RepostEvent(source, event, screen_loc, native_view, window);
-    // MenuController may have been deleted if |async_run_| so check for an
-    // active
-    // instance before accessing member variables.
-    if (!GetActiveInstance()) {
+    // Reposting the event may have deleted this, if so exit.
+    if (!this_ref) {
       DCHECK(async_run);
       return;
     }
@@ -2579,22 +2590,25 @@
   // However as |delegate| can outlive this, it must still be notified of the
   // menu closing so that it can perform teardown.
   int accept_event_flags = accept_event_flags_;
+  base::WeakPtr<MenuController> this_ref = AsWeakPtr();
   MenuItemView* result = ExitMenuRun();
   delegate->OnMenuClosed(internal::MenuControllerDelegate::NOTIFY_DELEGATE,
                          result, accept_event_flags);
-  // MenuController may have been deleted by |delegate|.
-  if (GetActiveInstance() && nested && exit_type_ == EXIT_ALL)
+  // |delegate| may have deleted this.
+  if (this_ref && nested && exit_type_ == EXIT_ALL)
     ExitAsyncRun();
 }
 
 MenuItemView* MenuController::ExitMenuRun() {
+  base::WeakPtr<MenuController> this_ref = AsWeakPtr();
+
   // Release the lock which prevents Chrome from shutting down while the menu is
   // showing.
   if (async_run_ && ViewsDelegate::GetInstance())
     ViewsDelegate::GetInstance()->ReleaseRef();
 
   // Releasing the lock can result in Chrome shutting down, deleting this.
-  if (!GetActiveInstance())
+  if (!this_ref)
     return nullptr;
 
   // Close any open menus.
diff --git a/ui/views/controls/menu/menu_controller.h b/ui/views/controls/menu/menu_controller.h
index 30b9889..697e9a5 100644
--- a/ui/views/controls/menu/menu_controller.h
+++ b/ui/views/controls/menu/menu_controller.h
@@ -14,6 +14,7 @@
 
 #include "base/compiler_specific.h"
 #include "base/macros.h"
+#include "base/memory/weak_ptr.h"
 #include "base/timer/timer.h"
 #include "build/build_config.h"
 #include "ui/events/event.h"
@@ -56,7 +57,9 @@
 // MenuController is used internally by the various menu classes to manage
 // showing, selecting and drag/drop for menus. All relevant events are
 // forwarded to the MenuController from SubmenuView and MenuHost.
-class VIEWS_EXPORT MenuController : public WidgetObserver {
+class VIEWS_EXPORT MenuController
+    : public base::SupportsWeakPtr<MenuController>,
+      public WidgetObserver {
  public:
   // Enumeration of how the menu should exit.
   enum ExitType {
@@ -186,6 +189,10 @@
   // Only used for testing.
   bool IsCancelAllTimerRunningForTest();
 
+  // Only used for testing. Clears |state_| and |pending_state_| without
+  // notifying any menu items.
+  void ClearStateForTest();
+
   // Only used for testing.
   static void TurnOffMenuSelectionHoldForTest();
 
diff --git a/ui/views/controls/menu/menu_runner_impl.cc b/ui/views/controls/menu/menu_runner_impl.cc
index 9061663..a247d512 100644
--- a/ui/views/controls/menu/menu_runner_impl.cc
+++ b/ui/views/controls/menu/menu_runner_impl.cc
@@ -62,8 +62,7 @@
 
     // Verify that the MenuController is still active. It may have been
     // destroyed out of order.
-    if (MenuController::GetActiveInstance()) {
-      DCHECK(controller_);
+    if (controller_) {
       // Release is invoked when MenuRunner is destroyed. Assume this is
       // happening because the object referencing the menu has been destroyed
       // and the menu button is no longer valid.
@@ -126,8 +125,8 @@
   }
   controller->SetAsyncRun(async_);
   controller->set_is_combobox((run_types & MenuRunner::COMBOBOX) != 0);
-  controller_ = controller;
-  menu_->set_controller(controller_);
+  controller_ = controller->AsWeakPtr();
+  menu_->set_controller(controller_.get());
   menu_->PrepareForRun(owns_controller_,
                        has_mnemonics,
                        !for_drop_ && ShouldShowMnemonics(button));
@@ -187,9 +186,9 @@
   menu_->RemoveEmptyMenus();
   menu_->set_controller(nullptr);
 
-  if (owns_controller_) {
+  if (owns_controller_ && controller_) {
     // We created the controller and need to delete it.
-    delete controller_;
+    delete controller_.get();
     owns_controller_ = false;
   }
   controller_ = nullptr;
diff --git a/ui/views/controls/menu/menu_runner_impl.h b/ui/views/controls/menu/menu_runner_impl.h
index a113d09..8312f42 100644
--- a/ui/views/controls/menu/menu_runner_impl.h
+++ b/ui/views/controls/menu/menu_runner_impl.h
@@ -86,7 +86,7 @@
   bool for_drop_;
 
   // The controller.
-  MenuController* controller_;
+  base::WeakPtr<MenuController> controller_;
 
   // Do we own the controller?
   bool owns_controller_;
diff --git a/ui/views/controls/menu/menu_runner_unittest.cc b/ui/views/controls/menu/menu_runner_unittest.cc
index 3551e11..7b0503f5 100644
--- a/ui/views/controls/menu/menu_runner_unittest.cc
+++ b/ui/views/controls/menu/menu_runner_unittest.cc
@@ -13,6 +13,7 @@
 #include "base/strings/utf_string_conversions.h"
 #include "ui/base/ui_base_types.h"
 #include "ui/events/test/event_generator.h"
+#include "ui/views/controls/menu/menu_controller.h"
 #include "ui/views/controls/menu/menu_delegate.h"
 #include "ui/views/controls/menu/menu_item_view.h"
 #include "ui/views/controls/menu/menu_runner_impl.h"
@@ -365,7 +366,7 @@
 
   // Hide the controller so we can test out of order destruction.
   MenuControllerTestApi menu_controller;
-  menu_controller.Hide();
+  menu_controller.SetShowing(false);
 
   // This destroyed MenuController
   menu_runner->OnMenuClosed(internal::MenuControllerDelegate::NOTIFY_DELEGATE,
@@ -376,5 +377,48 @@
   menu_runner->Release();
 }
 
+// Tests that when there are two separate MenuControllers, and the active one is
+// deleted first, that shutting down the MenuRunner of the original
+// MenuController properly closes its controller. This should not crash on ASAN
+// bots.
+TEST_F(MenuRunnerImplTest, MenuRunnerDestroyedWithNoActiveController) {
+  internal::MenuRunnerImpl* menu_runner =
+      new internal::MenuRunnerImpl(menu_item_view());
+  EXPECT_EQ(MenuRunner::NORMAL_EXIT,
+            menu_runner->RunMenuAt(owner(), nullptr, gfx::Rect(),
+                                   MENU_ANCHOR_TOPLEFT, MenuRunner::ASYNC));
+
+  // Hide the menu, and clear its item selection state.
+  MenuControllerTestApi menu_controller;
+  menu_controller.SetShowing(false);
+  menu_controller.ClearState();
+
+  std::unique_ptr<TestMenuDelegate> menu_delegate2(new TestMenuDelegate);
+  MenuItemView* menu_item_view2 = new MenuItemView(menu_delegate2.get());
+  menu_item_view2->AppendMenuItemWithLabel(1, base::ASCIIToUTF16("One"));
+
+  internal::MenuRunnerImpl* menu_runner2 =
+      new internal::MenuRunnerImpl(menu_item_view2);
+  EXPECT_EQ(MenuRunner::NORMAL_EXIT,
+            menu_runner2->RunMenuAt(owner(), nullptr, gfx::Rect(),
+                                    MENU_ANCHOR_TOPLEFT,
+                                    MenuRunner::ASYNC | MenuRunner::FOR_DROP));
+
+  EXPECT_NE(menu_controller.controller(), MenuController::GetActiveInstance());
+  menu_controller.SetShowing(true);
+
+  // Close the runner with the active menu first.
+  menu_runner2->Release();
+  // Even though there is no active menu, this should still cleanup the
+  // controller that it created.
+  menu_runner->Release();
+
+  // This is not expected to run, however this is from the origin ASAN stack
+  // traces. So regressions will be caught with the same stack trace.
+  if (menu_controller.controller())
+    menu_controller.controller()->CancelAll();
+  EXPECT_EQ(nullptr, menu_controller.controller());
+}
+
 }  // namespace test
 }  // namespace views
diff --git a/ui/views/corewm/tooltip_controller.cc b/ui/views/corewm/tooltip_controller.cc
index a52c806..bd400e9 100644
--- a/ui/views/corewm/tooltip_controller.cc
+++ b/ui/views/corewm/tooltip_controller.cc
@@ -308,6 +308,7 @@
                          &tooltip_text_whitespace_trimmed_);
     if (tooltip_text_whitespace_trimmed_.empty()) {
       tooltip_->Hide();
+      tooltip_defer_timer_.Stop();
     } else if (tooltip_show_delayed_) {
       // Initialize the one-shot timer to show the tooltip in a while.
       // If there is already a request queued then cancel it and post the new
diff --git a/ui/views/corewm/tooltip_controller_unittest.cc b/ui/views/corewm/tooltip_controller_unittest.cc
index 97a3351..2f48dbe 100644
--- a/ui/views/corewm/tooltip_controller_unittest.cc
+++ b/ui/views/corewm/tooltip_controller_unittest.cc
@@ -206,6 +206,25 @@
   EXPECT_EQ(GetWindow(), helper_->GetTooltipWindow());
 }
 
+TEST_F(TooltipControllerTest, HideEmptyTooltip) {
+  // TODO: these tests use GetContext(). That should go away for aura-mus
+  // client. http://crbug.com/663781.
+  if (IsMus())
+    return;
+
+  view_->set_tooltip_text(ASCIIToUTF16("Tooltip Text"));
+  EXPECT_EQ(base::string16(), helper_->GetTooltipText());
+  EXPECT_EQ(NULL, helper_->GetTooltipWindow());
+
+  generator_->MoveMouseToCenterOf(GetWindow());
+  generator_->MoveMouseBy(1, 0);
+  EXPECT_TRUE(helper_->IsTooltipVisible());
+
+  view_->set_tooltip_text(ASCIIToUTF16("    "));
+  generator_->MoveMouseBy(1, 0);
+  EXPECT_FALSE(helper_->IsTooltipVisible());
+}
+
 #if defined(OS_CHROMEOS)
 // crbug.com/664370.
 TEST_F(TooltipControllerTest, MaxWidth) {
diff --git a/ui/views/test/menu_test_utils.cc b/ui/views/test/menu_test_utils.cc
index 0f6178ab..3b69f3b 100644
--- a/ui/views/test/menu_test_utils.cc
+++ b/ui/views/test/menu_test_utils.cc
@@ -47,15 +47,21 @@
 
 // MenuControllerTestApi ------------------------------------------------------
 
-MenuControllerTestApi::MenuControllerTestApi() {}
+MenuControllerTestApi::MenuControllerTestApi()
+    : controller_(MenuController::GetActiveInstance()->AsWeakPtr()) {}
 
 MenuControllerTestApi::~MenuControllerTestApi() {}
 
-void MenuControllerTestApi::Hide() {
-  MenuController* controller = MenuController::GetActiveInstance();
-  if (!controller)
+void MenuControllerTestApi::ClearState() {
+  if (!controller_)
     return;
-  controller->showing_ = false;
+  controller_->ClearStateForTest();
+}
+
+void MenuControllerTestApi::SetShowing(bool showing) {
+  if (!controller_)
+    return;
+  controller_->showing_ = showing;
 }
 
 }  // namespace test
diff --git a/ui/views/test/menu_test_utils.h b/ui/views/test/menu_test_utils.h
index b671827..6a7dbfa 100644
--- a/ui/views/test/menu_test_utils.h
+++ b/ui/views/test/menu_test_utils.h
@@ -6,9 +6,13 @@
 #define UI_VIEWS_TEST_MENU_TEST_UTILS_H_
 
 #include "base/macros.h"
+#include "base/memory/weak_ptr.h"
 #include "ui/views/controls/menu/menu_delegate.h"
 
 namespace views {
+
+class MenuController;
+
 namespace test {
 
 // Test implementation of MenuDelegate that tracks calls to MenuDelegate, along
@@ -52,17 +56,29 @@
   DISALLOW_COPY_AND_ASSIGN(TestMenuDelegate);
 };
 
-// Test api which can be used to hide the active MenuController, without
-// performing normal shutdown.
+// Test api which caches the currently active MenuController. Can be used to
+// toggle visibility, and to clear seletion states, without performing full
+// shutdown. This is used to simulate menus with varing states, such as during
+// drags, without performing the entire operation. Used to test strange shutdown
+// ordering.
 class MenuControllerTestApi {
  public:
   MenuControllerTestApi();
   ~MenuControllerTestApi();
 
-  // Tells the active MenuController to consider itself not showing.
-  void Hide();
+  MenuController* controller() { return controller_.get(); };
+
+  // Clears out the current and pending states, without notifying the associated
+  // menu items.
+  void ClearState();
+
+  // Toggles the internal showing state of |controller_| without attempting
+  // to change associated Widgets.
+  void SetShowing(bool showing);
 
  private:
+  base::WeakPtr<MenuController> controller_;
+
   DISALLOW_COPY_AND_ASSIGN(MenuControllerTestApi);
 };
 
diff --git a/ui/webui/resources/PRESUBMIT.py b/ui/webui/resources/PRESUBMIT.py
index 2ea4cee..7a7e28b 100644
--- a/ui/webui/resources/PRESUBMIT.py
+++ b/ui/webui/resources/PRESUBMIT.py
@@ -75,5 +75,6 @@
 def _CommonChecks(input_api, output_api):
   results = []
   results += _CheckForTranslations(input_api, output_api)
-  results += input_api.canned_checks.CheckPatchFormatted(input_api, output_api)
+  results += input_api.canned_checks.CheckPatchFormatted(input_api, output_api,
+                                                         check_js=True)
   return results