Repository: GoogleChrome/lighthouse
Pull request #9923 (2019-11-05 22:50:50)

core: add new base artifact, HostFormFactor
Extracted from #9911.

Needed for #9713


Patch:
diff --git a/docs/configuration.md b/docs/configuration.md
index e49f3174c..51cec5cff 100644
--- a/docs/configuration.md
+++ b/docs/configuration.md
@@ -197,7 +197,7 @@ The groups property controls how to visually group audits within a category. For
 
 The stock Lighthouse configurations can be extended if you only need to make small tweaks, such as adding an audit or skipping an audit, but wish to still run most of what Lighthouse offers. When adding the `extends: 'lighthouse:default'` property to your config, the default passes, audits, groups, and categories will be automatically included, allowing you modify settings or add additional audits to a pass.
 
-Please note that you can only extend from `lighthouse:default` or `lighthouse:full` using the `extends` property. Other internal configs found in the [lighthouse-core/config](https://github.com/GoogleChrome/lighthouse/tree/master/lighthouse-core/config) directory can be used by importing the config object from file reference, or by using the [`--preset`](https://github.com/GoogleChrome/lighthouse#cli-options) CLI flag.
+Please note that you can only extend from `lighthouse:default` using the `extends` property. Other internal configs found in the [lighthouse-core/config](https://github.com/GoogleChrome/lighthouse/tree/master/lighthouse-core/config) directory can be used by importing the config object from file reference, or by using the [`--preset`](https://github.com/GoogleChrome/lighthouse#cli-options) CLI flag.
 
 See [more examples below](#more-examples) to view different types of extensions in action.
 
@@ -208,7 +208,6 @@ See [more examples below](#more-examples) to view different types of extensions
 The best examples are the ones Lighthouse uses itself! There are several reference configuration files that are maintained as part of Lighthouse.
 
 * [lighthouse-core/config/default-config.js](https://github.com/GoogleChrome/lighthouse/blob/master/lighthouse-core/config/default-config.js)
-* [lighthouse-core/config/full-config.js](https://github.com/GoogleChrome/lighthouse/blob/master/lighthouse-core/config/full-config.js)
 * [lighthouse-core/config/lr-desktop-config.js](https://github.com/GoogleChrome/lighthouse/blob/master/lighthouse-core/config/lr-desktop-config.js)
 * [lighthouse-core/config/lr-mobile-config.js](https://github.com/GoogleChrome/lighthouse/blob/master/lighthouse-core/config/lr-mobile-config.js)
 * [lighthouse-core/config/perf-config.js](https://github.com/GoogleChrome/lighthouse/blob/master/lighthouse-core/config/perf-config.js)
diff --git a/docs/readme.md b/docs/readme.md
index 1d379e616..7df910663 100644
--- a/docs/readme.md
+++ b/docs/readme.md
@@ -100,7 +100,7 @@ In order to extend the Lighthouse configuration programmatically, you need to pa
 }
 ```
 
-You can extend base configuration from either [lighthouse:default](https://github.com/GoogleChrome/lighthouse/blob/master/lighthouse-core/config/default-config.js) or [lighthouse:full](https://github.com/GoogleChrome/lighthouse/blob/master/lighthouse-core/config/full-config.js). Alternatively, you can build up your own configuration from scratch to have complete control.
+You can extend base configuration from [lighthouse:default](https://github.com/GoogleChrome/lighthouse/blob/master/lighthouse-core/config/default-config.js), or you can build up your own configuration from scratch to have complete control.
 
 For more information on the types of config you can provide, see [Lighthouse Configuration](https://github.com/GoogleChrome/lighthouse/blob/master/docs/configuration.md).
 
diff --git a/docs/throttling.md b/docs/throttling.md
index 4b24c1d7c..775682829 100644
--- a/docs/throttling.md
+++ b/docs/throttling.md
@@ -14,13 +14,23 @@ These exact figures are used as [Lighthouse's throttling default](https://github
 Within web performance testing, there are four typical styles of throttling:
 
 1. **_Simulated throttling_**, which Lighthouse uses by **default**, uses a simulation of a page load, based on the data observed in the initial unthrottled load. This approach which makes it both very fast and deterministic. However, due to the imperfect nature of predicting alternate execution paths, there is inherent inaccuracy that is summarized in this doc: [Lighthouse Metric Variability and Accuracy](https://docs.google.com/document/d/1BqtL-nG53rxWOI5RO0pItSRPowZVnYJ_gBEQCJ5EeUE/edit). The TLDR: while it's roughly as accurate or better than DevTools throttling for most sites, it suffers from edge cases and a deep investigation to performance should use _Packet-level_ throttling tools.
-1. **_Request-level_** throttling, also referred to as _DevTools throttling_ or in the Audits Panel as _Applied throttling_, is how throttling is implemented with Chrome DevTools. In real mobile connectivity, latency affects things at the packet level rather than the request level. As a result, this throttling isn't highly accurate. It also has a few more downsides that are summarized in [Network Throttling & Chrome - status](https://docs.google.com/document/d/1TwWLaLAfnBfbk5_ZzpGXegPapCIfyzT4MWuZgspKUAQ/edit). The TLDR: while it's a [decent approximation](https://docs.google.com/document/d/10lfVdS1iDWCRKQXPfbxEn4Or99D64mvNlugP1AQuFlE/edit), it's not a sufficient model of a slow connection. The [multipliers used in Lighthouse](https://github.com/GoogleChrome/lighthouse/blob/3be483287a530fb560c843b7299ef9cfe91ce1cc/lighthouse-core/lib/emulation.js#L33-L39) attempt to correct for the differences.
+1. **_Request-level throttling_** , also referred to as **_Applied throttling_** in the Audits panel or _`devtools` throttling_ in Lighthouse configuration, is how throttling is implemented with Chrome DevTools. In real mobile connectivity, latency affects things at the packet level rather than the request level. As a result, this throttling isn't highly accurate. It also has a few more downsides that are summarized in [Network Throttling & Chrome - status](https://docs.google.com/document/d/1TwWLaLAfnBfbk5_ZzpGXegPapCIfyzT4MWuZgspKUAQ/edit). The TLDR: while it's a [decent approximation](https://docs.google.com/document/d/10lfVdS1iDWCRKQXPfbxEn4Or99D64mvNlugP1AQuFlE/edit), it's not a sufficient model of a slow connection. The [multipliers used in Lighthouse](https://github.com/GoogleChrome/lighthouse/blob/3be483287a530fb560c843b7299ef9cfe91ce1cc/lighthouse-core/lib/emulation.js#L33-L39) attempt to correct for the differences.
 1. **_Proxy-level_** throttling tools do not affect UDP data, so they're decent, but not ideal.
 1. **_Packet-level_** throttling tools are able to make the most accurate network simulation. While this approach can model real network conditions most effectively, it also can introduce [more variance](https://docs.google.com/document/d/1BqtL-nG53rxWOI5RO0pItSRPowZVnYJ_gBEQCJ5EeUE/edit) than request-level or simulated throttling. [WebPageTest uses](https://github.com/WPO-Foundation/wptagent/blob/master/docs/remote_trafficshaping.md) packet-level throttling.
 
-Lighthouse, by default, uses simulated throttling as it provides both quick evaluation and minimized variance. However, some may want to experiment with more accurate throttling...
+Lighthouse, by default, uses simulated throttling as it provides both quick evaluation and minimized variance. However, some may want to experiment with more accurate throttling... [Learn more about these throttling types and how they behave in in different scenarios](https://www.debugbear.com/blog/network-throttling-methods).
 
-[Learn more about these throttling types and how they behave in in different scenarios](https://www.debugbear.com/blog/network-throttling-methods).
+## DevTools' Audits Panel Throttling
+
+In Chrome 79 and earlier, you could choose between [the throttling types](#types-of-throttling) of Simulated, Applied, and none.
+
+Starting with Chrome 80, the Audits panel is simplifying the throttling configuration:
+
+1. _Simulated throttling_ remains the default setting. This matches the setup of PageSpeed Insights and the Lighthouse CLI default, so this provides cross-tool consistency.
+1. _No throttling_ is removed as it leads to innacurate scoring and misleading metric results.
+1. Within the Audits panel settings, you can uncheck the _Simulated throttling_ checkbox to use _Applied throttling_. For the moment, we are keeping this _Applied throttling_ option available for users of the [`View Trace` button](https://developers.google.com/web/updates/2018/04/devtools#traces). Under applied throttling, the trace matches the metrics values, whereas under Simulated things do not currently match up.
+
+We plan to improve the experience of viewing a trace under simulated throttling. At that point, the _Applied throttling_ option will be removed and _Simulated throttling_ will be the only option within the DevTools Audits panel. Of course, CLI users can still control the exact [configuration](../#cli-options) of throttling.
 
 ## How do I get packet-level throttling?
 
diff --git a/lighthouse-cli/cli-flags.js b/lighthouse-cli/cli-flags.js
index 1ba0d6050..5588c2c98 100644
--- a/lighthouse-cli/cli-flags.js
+++ b/lighthouse-cli/cli-flags.js
@@ -155,7 +155,7 @@ function getFlags(manualArgv) {
       .choices('output', printer.getValidOutputOptions())
       .choices('emulated-form-factor', ['mobile', 'desktop', 'none'])
       .choices('throttling-method', ['devtools', 'provided', 'simulate'])
-      .choices('preset', ['full', 'perf', 'mixed-content'])
+      .choices('preset', ['perf', 'mixed-content'])
       // force as an array
       // note MUST use camelcase versions or only the kebab-case version will be forced
       .array('blockedUrlPatterns')
diff --git a/lighthouse-core/audits/byte-efficiency/unused-javascript.js b/lighthouse-core/audits/byte-efficiency/unused-javascript.js
index 4e79a0fb9..305d77469 100644
--- a/lighthouse-core/audits/byte-efficiency/unused-javascript.js
+++ b/lighthouse-core/audits/byte-efficiency/unused-javascript.js
@@ -12,7 +12,8 @@ const UIStrings = {
   /** Imperative title of a Lighthouse audit that tells the user to remove JavaScript that is never evaluated during page load. This is displayed in a list of audit titles that Lighthouse generates. */
   title: 'Remove unused JavaScript',
   /** Description of a Lighthouse audit that tells the user *why* they should remove JavaScript that is never needed/evaluated by the browser. This is displayed after a user expands the section to see more. No character length limits. 'Learn More' becomes link text to additional documentation. */
-  description: 'Remove unused JavaScript to reduce bytes consumed by network activity.',
+  description: 'Remove unused JavaScript to reduce bytes consumed by network activity. ' +
+    '[Learn more](https://developers.google.com/web/fundamentals/performance/optimizing-javascript/code-splitting).',
 };
 
 const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);
diff --git a/lighthouse-core/config/config.js b/lighthouse-core/config/config.js
index 0639aed0c..c90743fee 100644
--- a/lighthouse-core/config/config.js
+++ b/lighthouse-core/config/config.js
@@ -7,7 +7,6 @@
 
 const defaultConfigPath = './default-config.js';
 const defaultConfig = require('./default-config.js');
-const fullConfig = require('./full-config.js');
 const constants = require('./constants.js');
 const i18n = require('./../lib/i18n/i18n.js');
 
@@ -30,6 +29,7 @@ const BASE_ARTIFACT_BLANKS = {
   fetchTime: '',
   LighthouseRunWarnings: '',
   TestedAsMobileDevice: '',
+  HostFormFactor: '',
   HostUserAgent: '',
   NetworkUserAgent: '',
   BenchmarkIndex: '',
@@ -314,12 +314,8 @@ class Config {
     // We don't want to mutate the original config object
     configJSON = deepCloneConfigJson(configJSON);
 
-    // Extend the default or full config if specified
-    if (configJSON.extends === 'lighthouse:full') {
-      const explodedFullConfig = Config.extendConfigJSON(deepCloneConfigJson(defaultConfig),
-          deepCloneConfigJson(fullConfig));
-      configJSON = Config.extendConfigJSON(explodedFullConfig, configJSON);
-    } else if (configJSON.extends) {
+    // Extend the default config if specified
+    if (configJSON.extends) {
       configJSON = Config.extendConfigJSON(deepCloneConfigJson(defaultConfig), configJSON);
     }
 
diff --git a/lighthouse-core/config/default-config.js b/lighthouse-core/config/default-config.js
index 59095e491..4e409dad8 100644
--- a/lighthouse-core/config/default-config.js
+++ b/lighthouse-core/config/default-config.js
@@ -127,6 +127,7 @@ const defaultConfig = {
     cpuQuietThresholdMs: 1000,
     gatherers: [
       'css-usage',
+      'js-usage',
       'viewport-dimensions',
       'runtime-exceptions',
       'console-messages',
@@ -275,6 +276,7 @@ const defaultConfig = {
     'byte-efficiency/unminified-css',
     'byte-efficiency/unminified-javascript',
     'byte-efficiency/unused-css-rules',
+    'byte-efficiency/unused-javascript',
     'byte-efficiency/uses-webp-images',
     'byte-efficiency/uses-optimized-images',
     'byte-efficiency/uses-text-compression',
@@ -393,6 +395,7 @@ const defaultConfig = {
         {id: 'unminified-css', weight: 0, group: 'load-opportunities'},
         {id: 'unminified-javascript', weight: 0, group: 'load-opportunities'},
         {id: 'unused-css-rules', weight: 0, group: 'load-opportunities'},
+        {id: 'unused-javascript', weight: 0, group: 'load-opportunities'},
         {id: 'uses-optimized-images', weight: 0, group: 'load-opportunities'},
         {id: 'uses-webp-images', weight: 0, group: 'load-opportunities'},
         {id: 'uses-text-compression', weight: 0, group: 'load-opportunities'},
diff --git a/lighthouse-core/config/full-config.js b/lighthouse-core/config/full-config.js
index 89ba2f57e..9d1e1229d 100644
--- a/lighthouse-core/config/full-config.js
+++ b/lighthouse-core/config/full-config.js
@@ -9,25 +9,6 @@
 const fullConfig = {
   extends: 'lighthouse:default',
   settings: {},
-  passes: [
-    {
-      passName: 'extraPass',
-      gatherers: [
-        'js-usage',
-      ],
-    },
-  ],
-  audits: [
-    'byte-efficiency/unused-javascript',
-  ],
-  // @ts-ignore TODO(bckenny): type extended Config where e.g. category.title isn't required
-  categories: {
-    'performance': {
-      auditRefs: [
-        {id: 'unused-javascript', weight: 0, group: 'load-opportunities'},
-      ],
-    },
-  },
 };
 
 module.exports = fullConfig;
diff --git a/lighthouse-core/gather/gather-runner.js b/lighthouse-core/gather/gather-runner.js
index 03360baeb..8e094289a 100644
--- a/lighthouse-core/gather/gather-runner.js
+++ b/lighthouse-core/gather/gather-runner.js
@@ -456,14 +456,16 @@ class GatherRunner {
 
     const {emulatedFormFactor} = options.settings;
     // Whether Lighthouse was run on a mobile device (i.e. not on a desktop machine).
-    const IsMobileHost = hostUserAgent.includes('Android') || hostUserAgent.includes('Mobile');
+    const HostFormFactor = hostUserAgent.includes('Android') || hostUserAgent.includes('Mobile') ?
+      'mobile' : 'desktop';
     const TestedAsMobileDevice = emulatedFormFactor === 'mobile' ||
-      (emulatedFormFactor !== 'desktop' && IsMobileHost);
+      (emulatedFormFactor !== 'desktop' && HostFormFactor === 'mobile');
 
     return {
       fetchTime: (new Date()).toJSON(),
       LighthouseRunWarnings: [],
       TestedAsMobileDevice,
+      HostFormFactor,
       HostUserAgent: hostUserAgent,
       NetworkUserAgent: '', // updated later
       BenchmarkIndex: 0, // updated later
diff --git a/lighthouse-core/gather/gatherers/js-usage.js b/lighthouse-core/gather/gatherers/js-usage.js
index a1411534b..cd7c67243 100644
--- a/lighthouse-core/gather/gatherers/js-usage.js
+++ b/lighthouse-core/gather/gatherers/js-usage.js
@@ -16,7 +16,7 @@ class JsUsage extends Gatherer {
    */
   async beforePass(passContext) {
     await passContext.driver.sendCommand('Profiler.enable');
-    await passContext.driver.sendCommand('Profiler.startPreciseCoverage');
+    await passContext.driver.sendCommand('Profiler.startPreciseCoverage', {detailed: false});
   }
 
   /**
diff --git a/lighthouse-core/gather/gatherers/seo/font-size.js b/lighthouse-core/gather/gatherers/seo/font-size.js
index d84cdfa73..3e54da271 100644
--- a/lighthouse-core/gather/gatherers/seo/font-size.js
+++ b/lighthouse-core/gather/gatherers/seo/font-size.js
@@ -294,7 +294,14 @@ class FontSize extends Gatherer {
       .sort((a, b) => b.textLength - a.textLength)
       .slice(0, MAX_NODES_SOURCE_RULE_FETCHED)
       .map(async failingNode => {
-        failingNode.cssRule = await fetchSourceRule(driver, failingNode.node);
+        try {
+          const cssRule = await fetchSourceRule(driver, failingNode.node);
+          failingNode.cssRule = cssRule;
+        } catch (err) {
+          // The node was deleted. We don't need to distinguish between lack-of-rule
+          // due to a deleted node vs due to failed attribution, so just set to undefined.
+          failingNode.cssRule = undefined;
+        }
         return failingNode;
       });
 
@@ -338,6 +345,8 @@ class FontSize extends Gatherer {
 
     passContext.driver.off('CSS.styleSheetAdded', onStylesheetAdd);
 
+    // For the nodes whose computed style we could attribute to a stylesheet, assign
+    // the stylsheet to the data.
     analyzedFailingNodesData
       .filter(data => data.cssRule && data.cssRule.styleSheetId)
       // @ts-ignore - guaranteed to exist from the filter immediately above
diff --git a/lighthouse-core/lib/dependency-graph/network-node.js b/lighthouse-core/lib/dependency-graph/network-node.js
index d473224c0..2c3886878 100644
--- a/lighthouse-core/lib/dependency-graph/network-node.js
+++ b/lighthouse-core/lib/dependency-graph/network-node.js
@@ -7,6 +7,7 @@
 
 const BaseNode = require('./base-node.js');
 const NetworkRequest = require('../network-request.js');
+const URL = require('../url-shim.js');
 
 class NetworkNode extends BaseNode {
   /**
@@ -57,6 +58,23 @@ class NetworkNode extends BaseNode {
     return !!this._record.fromDiskCache;
   }
 
+  /**
+   * @return {boolean}
+   */
+  get isNonNetworkProtocol() {
+    return URL.NON_NETWORK_PROTOCOLS.includes(this._record.protocol);
+  }
+
+
+  /**
+   * Returns whether this network record can be downloaded without a TCP connection.
+   * During simulation we treat data coming in over a network connection separately from on-device data.
+   * @return {boolean}
+   */
+  get isConnectionless() {
+    return this.fromDiskCache || this.isNonNetworkProtocol;
+  }
+
   /**
    * @return {boolean}
    */
diff --git a/lighthouse-core/lib/dependency-graph/simulator/simulator.js b/lighthouse-core/lib/dependency-graph/simulator/simulator.js
index f16dd0456..fbce4813a 100644
--- a/lighthouse-core/lib/dependency-graph/simulator/simulator.js
+++ b/lighthouse-core/lib/dependency-graph/simulator/simulator.js
@@ -225,8 +225,8 @@ class Simulator {
 
     if (node.type !== BaseNode.TYPES.NETWORK) throw new Error('Unsupported');
 
-    // If a network request is cached, we can always start it, so skip the connection checks
-    if (!node.fromDiskCache) {
+    // If a network request is connectionless, we can always start it, so skip the connection checks
+    if (!node.isConnectionless) {
       // Start a network request if we're not at max requests and a connection is available
       const numberOfActiveRequests = this._numberInProgress(node.type);
       if (numberOfActiveRequests >= this._maximumConcurrentRequests) return;
@@ -295,10 +295,17 @@ class Simulator {
 
     let timeElapsed = 0;
     if (networkNode.fromDiskCache) {
-      // Rough access time for seeking to location on disk and reading sequentially = 8ms + 20ms/MB
+      // Rough access time for seeking to location on disk and reading sequentially.
+      // 8ms per seek + 20ms/MB
       // @see http://norvig.com/21-days.html#answers
       const sizeInMb = (record.resourceSize || 0) / 1024 / 1024;
       timeElapsed = 8 + 20 * sizeInMb - timingData.timeElapsed;
+    } else if (networkNode.isNonNetworkProtocol) {
+      // Estimates for the overhead of a data URL in Chromium and the decoding time for base64-encoded data.
+      // 2ms per request + 10ms/MB
+      // @see traces on https://dopiaza.org/tools/datauri/examples/index.php
+      const sizeInMb = (record.resourceSize || 0) / 1024 / 1024;
+      timeElapsed = 2 + 10 * sizeInMb - timingData.timeElapsed;
     } else {
       const connection = this._connectionPool.acquireActiveConnectionFromRecord(record);
       const dnsResolutionTime = this._dns.getTimeUntilResolution(record, {
@@ -342,7 +349,7 @@ class Simulator {
     const timingData = this._getTimingData(node);
     const isFinished = timingData.estimatedTimeElapsed === timePeriodLength;
 
-    if (node.type === BaseNode.TYPES.CPU || node.fromDiskCache) {
+    if (node.type === BaseNode.TYPES.CPU || node.isConnectionless) {
       return isFinished
         ? this._markNodeAsComplete(node, totalElapsedTime)
         : (timingData.timeElapsed += timePeriodLength);
diff --git a/lighthouse-core/lib/i18n/i18n.js b/lighthouse-core/lib/i18n/i18n.js
index f4d723ff8..b697bf86a 100644
--- a/lighthouse-core/lib/i18n/i18n.js
+++ b/lighthouse-core/lib/i18n/i18n.js
@@ -291,7 +291,7 @@ function _formatIcuMessage(locale, icuMessageId, uiStringMessage, values = {}) {
 
     // Warn the user that the UIString message != the `en` message ∴ they should update the strings
     if (!LOCALES.en[icuMessageId] || localeMessage !== LOCALES.en[icuMessageId].message) {
-      log.warn('i18n', `Message "${icuMessageId}" does not match its 'en' counterpart. ` +
+      log.verbose('i18n', `Message "${icuMessageId}" does not match its 'en' counterpart. ` +
         `Run 'i18n' to update.`);
     }
   }
diff --git a/lighthouse-core/lib/i18n/locales/en-US.json b/lighthouse-core/lib/i18n/locales/en-US.json
index b4708269d..030800a58 100644
--- a/lighthouse-core/lib/i18n/locales/en-US.json
+++ b/lighthouse-core/lib/i18n/locales/en-US.json
@@ -462,7 +462,7 @@
     "message": "Remove unused CSS"
   },
   "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
-    "message": "Remove unused JavaScript to reduce bytes consumed by network activity."
+    "message": "Remove unused JavaScript to reduce bytes consumed by network activity. [Learn more](https://developers.google.com/web/fundamentals/performance/optimizing-javascript/code-splitting)."
   },
   "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
     "message": "Remove unused JavaScript"
diff --git a/lighthouse-core/lib/i18n/locales/en-XL.json b/lighthouse-core/lib/i18n/locales/en-XL.json
index 22fb421c4..78600b14d 100644
--- a/lighthouse-core/lib/i18n/locales/en-XL.json
+++ b/lighthouse-core/lib/i18n/locales/en-XL.json
@@ -462,7 +462,7 @@
     "message": "R̂ém̂óv̂é ûńûśêd́ ĈŚŜ"
   },
   "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
-    "message": "R̂ém̂óv̂é ûńûśêd́ Ĵáv̂áŜćr̂íp̂t́ t̂ó r̂éd̂úĉé b̂ýt̂éŝ ćôńŝúm̂éd̂ b́ŷ ńêt́ŵór̂ḱ âćt̂ív̂ít̂ý."
+    "message": "R̂ém̂óv̂é ûńûśêd́ Ĵáv̂áŜćr̂íp̂t́ t̂ó r̂éd̂úĉé b̂ýt̂éŝ ćôńŝúm̂éd̂ b́ŷ ńêt́ŵór̂ḱ âćt̂ív̂ít̂ý. [L̂éâŕn̂ ḿôŕê](https://developers.google.com/web/fundamentals/performance/optimizing-javascript/code-splitting)."
   },
   "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
     "message": "R̂ém̂óv̂é ûńûśêd́ Ĵáv̂áŜćr̂íp̂t́"
diff --git a/lighthouse-core/lib/lh-error.js b/lighthouse-core/lib/lh-error.js
index e7d71d8a2..11692a73d 100644
--- a/lighthouse-core/lib/lh-error.js
+++ b/lighthouse-core/lib/lh-error.js
@@ -120,10 +120,7 @@ class LighthouseError extends Error {
     // if we find one, use the friendly LighthouseError definition
     const matchedErrorDefinition = protocolErrors.find(e => e.pattern.test(protocolError.message));
     if (matchedErrorDefinition) {
-      return new LighthouseError(matchedErrorDefinition, {
-        protocolMethod: method,
-        protocolError: protocolError.message,
-      });
+      return new LighthouseError(matchedErrorDefinition);
     }
 
     // otherwise fallback to building a generic Error
diff --git a/lighthouse-core/scripts/build-report-for-autodeployment.js b/lighthouse-core/scripts/build-report-for-autodeployment.js
index 19d65330e..4bfe04077 100644
--- a/lighthouse-core/scripts/build-report-for-autodeployment.js
+++ b/lighthouse-core/scripts/build-report-for-autodeployment.js
@@ -77,6 +77,7 @@ async function generateErrorLHR() {
       `Something went wrong with recording the trace over your page load. Please run Lighthouse again. (NO_FCP)`, // eslint-disable-line max-len
     ],
     TestedAsMobileDevice: true,
+    HostFormFactor: 'desktop',
     HostUserAgent: 'Mozilla/5.0 ErrorUserAgent Chrome/66',
     NetworkUserAgent: 'Mozilla/5.0 ErrorUserAgent Chrome/66',
     BenchmarkIndex: 1000,
diff --git a/lighthouse-core/scripts/roll-to-devtools.sh b/lighthouse-core/scripts/roll-to-devtools.sh
index 2de7ae2d8..00d9bfc3e 100755
--- a/lighthouse-core/scripts/roll-to-devtools.sh
+++ b/lighthouse-core/scripts/roll-to-devtools.sh
@@ -19,11 +19,9 @@ check="\033[96m ✓\033[39m"
 if [[ -n "$1" ]]; then
   frontend_dir="$1"
 else
-  frontend_dir="$chromium_dir/third_party/blink/renderer/devtools/front_end"
+  frontend_dir="$chromium_dir/third_party/devtools-frontend/src/front_end"
 fi
 
-tests_dir="$frontend_dir/../../../web_tests/http/tests/devtools/audits"
-
 if [[ ! -d "$frontend_dir" || ! -a "$frontend_dir/Runtime.js" ]]; then
   echo -e "\033[31m✖ Error!\033[39m"
   echo "This script requires a devtools frontend folder. We didn't find one here:"
diff --git a/proto/sample_v2_round_trip.json b/proto/sample_v2_round_trip.json
index f2ff48b68..6f2262fe7 100644
--- a/proto/sample_v2_round_trip.json
+++ b/proto/sample_v2_round_trip.json
@@ -2851,6 +2851,21 @@
             "scoreDisplayMode": "numeric",
             "title": "Remove unused CSS"
         },
+        "unused-javascript": {
+            "description": "Remove unused JavaScript to reduce bytes consumed by network activity. [Learn more](https://developers.google.com/web/fundamentals/performance/optimizing-javascript/code-splitting).",
+            "details": {
+                "headings": [],
+                "items": [],
+                "overallSavingsBytes": 0.0,
+                "overallSavingsMs": 0.0,
+                "type": "opportunity"
+            },
+            "id": "unused-javascript",
+            "numericValue": 0.0,
+            "score": 1.0,
+            "scoreDisplayMode": "numeric",
+            "title": "Remove unused JavaScript"
+        },
         "use-landmarks": {
             "description": "Landmark elements (<main>, <nav>, etc.) are used to improve the keyboard navigation of the page for assistive technology. [Learn more](https://web.dev/use-landmarks/).",
             "id": "use-landmarks",
@@ -3696,6 +3711,11 @@
                     "id": "unused-css-rules",
                     "weight": 0.0
                 },
+                {
+                    "group": "load-opportunities",
+                    "id": "unused-javascript",
+                    "weight": 0.0
+                },
                 {
                     "group": "load-opportunities",
                     "id": "uses-optimized-images",
@@ -4979,6 +4999,12 @@
                 "name": "lh:audit:unused-css-rules",
                 "startTime": 0.0
             },
+            {
+                "duration": 100.0,
+                "entryType": "measure",
+                "name": "lh:audit:unused-javascript",
+                "startTime": 0.0
+            },
             {
                 "duration": 100.0,
                 "entryType": "measure",
diff --git a/third-party/snyk/snapshot.json b/third-party/snyk/snapshot.json
index 1765ffeba..0aeaa2467 100644
--- a/third-party/snyk/snapshot.json
+++ b/third-party/snyk/snapshot.json
@@ -26,7 +26,7 @@
       {"id":"npm:angular:20130625","severity":"high","semver":{"vulnerable":["<1.1.5"]}}
     ],
     "backbone":[
-      {"id":"npm:backbone:20160523","severity":"medium","semver":{"vulnerable":["<= 0.3.3"]}},
+      {"id":"npm:backbone:20160523","severity":"medium","semver":{"vulnerable":["<0.1.2"]}},
       {"id":"npm:backbone:20110701","severity":"medium","semver":{"vulnerable":["<0.5.0"]}}
     ],
     "bootstrap":[
@@ -42,10 +42,10 @@
       {"id":"SNYK-JS-DOJO-174934","severity":"medium","semver":{"vulnerable":[">=1.0.0 <1.0.3",">=1.1.0 <1.1.2",">=1.2.0 <1.2.4",">=1.3.0 <1.3.3",">=1.4.0 <1.4.2"]}},
       {"id":"SNYK-JS-DOJO-174933","severity":"medium","semver":{"vulnerable":["<1.2.0"]}},
       {"id":"SNYK-JS-DOJO-72305","severity":"medium","semver":{"vulnerable":["<1.14"]}},
-      {"id":"npm:dojo:20180818","severity":"medium","semver":{"vulnerable":["<1.10.10 || >=1.11.0 <1.11.6 || >=1.12.0 <1.12.4 || >=1.13.0 <1.13.1"]}},
+      {"id":"npm:dojo:20180818","severity":"medium","semver":{"vulnerable":["<1.10.10",">=1.11.0 <1.11.6",">=1.12.0 <1.12.4",">=1.13.0 <1.13.1"]}},
       {"id":"npm:dojo:20160523","severity":"medium","semver":{"vulnerable":["<1.1.0"]}},
       {"id":"npm:dojo:20100614-6","severity":"medium","semver":{"vulnerable":["<1.4.2"]}},
-      {"id":"npm:dojo:20100614","severity":"high","semver":{"vulnerable":[">=0.4 <0.4.4 || >=1.0 <1.0.3 || >=1.1 <1.1.2 || >=1.2 <1.2.4 || >=1.3 <1.3.3 || >=1.4 <1.4.2"]}},
+      {"id":"npm:dojo:20100614","severity":"high","semver":{"vulnerable":[">=0.4 <0.4.4",">=1.0 <1.0.3",">=1.1 <1.1.2",">=1.2 <1.2.4",">=1.3 <1.3.3",">=1.4 <1.4.2"]}},
       {"id":"npm:dojo:20090409","severity":"medium","semver":{"vulnerable":["<1.1"]}}
     ],
     "foundation-sites":[
@@ -58,7 +58,7 @@
     ],
     "handlebars":[
       {"id":"SNYK-JS-HANDLEBARS-469063","severity":"high","semver":{"vulnerable":["<4.3.0"]}},
-      {"id":"SNYK-JS-HANDLEBARS-174183","severity":"high","semver":{"vulnerable":["<3.0.7",">=4.1.0 <4.1.2","<4.0.14"]}},
+      {"id":"SNYK-JS-HANDLEBARS-174183","severity":"high","semver":{"vulnerable":[">=3.0.0 <3.0.7",">=4.1.0 <4.1.2",">=4.0.0 <4.0.14"]}},
       {"id":"SNYK-JS-HANDLEBARS-173692","severity":"high","semver":{"vulnerable":["<4.0.13"]}},
       {"id":"npm:handlebars:20151207","severity":"medium","semver":{"vulnerable":["<4.0.0"]}},
       {"id":"npm:handlebars:20110425","severity":"medium","semver":{"vulnerable":["<=1.0.0-beta.3"]}}
@@ -103,8 +103,8 @@
       {"id":"npm:mustache:20110814","severity":"medium","semver":{"vulnerable":["< 0.3.1"]}}
     ],
     "react":[
-      {"id":"npm:react:20150318","severity":"high","semver":{"vulnerable":["<0.14.0"]}},
-      {"id":"npm:react:20131217","severity":"medium","semver":{"vulnerable":[">=0.5.0 <0.5.2 || >=0.4.0 <0.4.2"]}}
+      {"id":"npm:react:20150318","severity":"high","semver":{"vulnerable":[">=0.0.1 <0.14.0"]}},
+      {"id":"npm:react:20131217","severity":"medium","semver":{"vulnerable":[">=0.5.0 <0.5.2",">=0.4.0 <0.4.2"]}}
     ],
     "riot":[
       {"id":"npm:riot:20131114","severity":"medium","semver":{"vulnerable":["<0.9.6"]}}
diff --git a/types/artifacts.d.ts b/types/artifacts.d.ts
index 7985035a1..5153a2565 100644
--- a/types/artifacts.d.ts
+++ b/types/artifacts.d.ts
@@ -29,6 +29,8 @@ declare global {
       LighthouseRunWarnings: string[];
       /** Whether the page was loaded on either a real or emulated mobile device. */
       TestedAsMobileDevice: boolean;
+      /** Device which Chrome is running on. */
+      HostFormFactor: 'desktop'|'mobile';
       /** The user agent string of the version of Chrome used. */
       HostUserAgent: string;
       /** The user agent string that Lighthouse used to load the page. */
diff --git a/types/config.d.ts b/types/config.d.ts
index 88c4c89a5..1d142142c 100644
--- a/types/config.d.ts
+++ b/types/config.d.ts
@@ -14,7 +14,7 @@ declare global {
        * The pre-normalization Lighthouse Config format.
        */
       export interface Json {
-        extends?: 'lighthouse:default' | 'lighthouse:full' | string | boolean;
+        extends?: 'lighthouse:default' | string | boolean;
         settings?: SharedFlagsSettings;
         passes?: PassJson[] | null;
         audits?: Config.AuditJson[] | null;


Test patch:
diff --git a/lighthouse-cli/test/cli/__snapshots__/index-test.js.snap b/lighthouse-cli/test/cli/__snapshots__/index-test.js.snap
index 2f7fc0c3b..c25a964e4 100644
--- a/lighthouse-cli/test/cli/__snapshots__/index-test.js.snap
+++ b/lighthouse-cli/test/cli/__snapshots__/index-test.js.snap
@@ -321,6 +321,9 @@ Object {
     Object {
       "path": "byte-efficiency/unused-css-rules",
     },
+    Object {
+      "path": "byte-efficiency/unused-javascript",
+    },
     Object {
       "path": "byte-efficiency/uses-webp-images",
     },
@@ -799,6 +802,11 @@ Object {
           "id": "unused-css-rules",
           "weight": 0,
         },
+        Object {
+          "group": "load-opportunities",
+          "id": "unused-javascript",
+          "weight": 0,
+        },
         Object {
           "group": "load-opportunities",
           "id": "uses-optimized-images",
@@ -1169,6 +1177,9 @@ Object {
         Object {
           "path": "css-usage",
         },
+        Object {
+          "path": "js-usage",
+        },
         Object {
           "path": "viewport-dimensions",
         },
diff --git a/lighthouse-cli/test/cli/bin-test.js b/lighthouse-cli/test/cli/bin-test.js
index d6b3ce96b..3b70fd1c4 100644
--- a/lighthouse-cli/test/cli/bin-test.js
+++ b/lighthouse-cli/test/cli/bin-test.js
@@ -84,8 +84,8 @@ describe('CLI bin', function() {
     });
 
     it('should load the config from the preset', async () => {
-      cliFlags = {...cliFlags, preset: 'full'};
-      const actualConfig = require('../../../lighthouse-core/config/full-config.js');
+      cliFlags = {...cliFlags, preset: 'mixed-content'};
+      const actualConfig = require('../../../lighthouse-core/config/mixed-content-config.js');
       await bin.begin();
 
       expect(getRunLighthouseArgs()[2]).toEqual(actualConfig);
diff --git a/lighthouse-cli/test/smokehouse/test-definitions/byte-efficiency/byte-config.js b/lighthouse-cli/test/smokehouse/test-definitions/byte-efficiency/byte-config.js
index e41d5136f..47e7ab85b 100644
--- a/lighthouse-cli/test/smokehouse/test-definitions/byte-efficiency/byte-config.js
+++ b/lighthouse-cli/test/smokehouse/test-definitions/byte-efficiency/byte-config.js
@@ -10,7 +10,7 @@
  * Config file for running byte efficiency smokehouse audits.
  */
 const config = {
-  extends: 'lighthouse:full',
+  extends: 'lighthouse:default',
   settings: {
     onlyAudits: [
       'accesskeys', // run axe on the page since we've had problems with interactions
diff --git a/lighthouse-cli/test/smokehouse/test-definitions/dobetterweb/dbw-expectations.js b/lighthouse-cli/test/smokehouse/test-definitions/dobetterweb/dbw-expectations.js
index 33e2b37ea..2e332b4f7 100644
--- a/lighthouse-cli/test/smokehouse/test-definitions/dobetterweb/dbw-expectations.js
+++ b/lighthouse-cli/test/smokehouse/test-definitions/dobetterweb/dbw-expectations.js
@@ -12,6 +12,8 @@
 const expectations = [
   {
     artifacts: {
+      HostFormFactor: 'desktop',
+      TestedAsMobileDevice: true,
       Stacks: [{
         id: 'jquery',
       }, {
diff --git a/lighthouse-cli/test/smokehouse/test-definitions/lantern/lantern-config.js b/lighthouse-cli/test/smokehouse/test-definitions/lantern/lantern-config.js
index af00be13e..41734e930 100644
--- a/lighthouse-cli/test/smokehouse/test-definitions/lantern/lantern-config.js
+++ b/lighthouse-cli/test/smokehouse/test-definitions/lantern/lantern-config.js
@@ -9,7 +9,7 @@
  * Config file for running byte efficiency smokehouse audits.
  */
 module.exports = {
-  extends: 'lighthouse:full',
+  extends: 'lighthouse:default',
   settings: {
     onlyCategories: ['performance'],
     precomputedLanternData: {
diff --git a/lighthouse-core/test/config/config-test.js b/lighthouse-core/test/config/config-test.js
index 712fab886..5b77a4421 100644
--- a/lighthouse-core/test/config/config-test.js
+++ b/lighthouse-core/test/config/config-test.js
@@ -556,7 +556,13 @@ describe('Config', () => {
     assert.deepStrictEqual(config.settings.output, ['html']);
   });
 
-  it('extends the full config', () => {
+  it('does not throw on "lighthouse:full"', () => {
+    const config = new Config({extends: 'lighthouse:full'}, {output: ['html', 'json']});
+    assert.deepStrictEqual(config.settings.throttlingMethod, 'simulate');
+    assert.deepStrictEqual(config.settings.output, ['html', 'json']);
+  });
+
+  it('extends the config', () => {
     class CustomAudit extends Audit {
       static get meta() {
         return {
@@ -574,7 +580,7 @@ describe('Config', () => {
     }
 
     const config = new Config({
-      extends: 'lighthouse:full',
+      extends: 'lighthouse:default',
       audits: [
         CustomAudit,
       ],
@@ -628,7 +634,7 @@ describe('Config', () => {
   it('merges settings with correct priority', () => {
     const config = new Config(
       {
-        extends: 'lighthouse:full',
+        extends: 'lighthouse:default',
         settings: {
           disableStorageReset: true,
           emulatedFormFactor: 'mobile',
diff --git a/lighthouse-core/test/fixtures/lantern-master-computed-values.json b/lighthouse-core/test/fixtures/lantern-master-computed-values.json
index ec6b63803..c52b26c9c 100644
--- a/lighthouse-core/test/fixtures/lantern-master-computed-values.json
+++ b/lighthouse-core/test/fixtures/lantern-master-computed-values.json
@@ -1,9 +1,9 @@
 {
   "sites": [
-    {"url": "https://flipkart.com", "roughEstimateOfFCP": 2661, "optimisticFCP": 2661, "pessimisticFCP": 2661, "roughEstimateOfFMP": 5860, "optimisticFMP": 5860, "pessimisticFMP": 5860, "roughEstimateOfTTI": 11388, "optimisticTTI": 10263, "pessimisticTTI": 12513, "roughEstimateOfTTFCPUI": 10263, "optimisticTTFCPUI": 10263, "pessimisticTTFCPUI": 12513, "roughEstimateOfSI": 6642, "optimisticSI": 3687, "pessimisticSI": 2661, "roughEstimateOfEIL": 766, "optimisticEIL": 957, "pessimisticEIL": 957},
+    {"url": "https://flipkart.com", "roughEstimateOfFCP": 2661, "optimisticFCP": 2661, "pessimisticFCP": 2661, "roughEstimateOfFMP": 5860, "optimisticFMP": 5860, "pessimisticFMP": 5860, "roughEstimateOfTTI": 11313, "optimisticTTI": 10263, "pessimisticTTI": 12363, "roughEstimateOfTTFCPUI": 10263, "optimisticTTFCPUI": 10263, "pessimisticTTFCPUI": 12363, "roughEstimateOfSI": 6642, "optimisticSI": 3687, "pessimisticSI": 2661, "roughEstimateOfEIL": 766, "optimisticEIL": 957, "pessimisticEIL": 957},
     {"url": "https://vine.co/", "roughEstimateOfFCP": 1851, "optimisticFCP": 1851, "pessimisticFCP": 1851, "roughEstimateOfFMP": 4962, "optimisticFMP": 4962, "pessimisticFMP": 4962, "roughEstimateOfTTI": 7846, "optimisticTTI": 6822, "pessimisticTTI": 8869, "roughEstimateOfTTFCPUI": 6822, "optimisticTTFCPUI": 6822, "pessimisticTTFCPUI": 8869, "roughEstimateOfSI": 4097, "optimisticSI": 2246, "pessimisticSI": 1851, "roughEstimateOfEIL": 961, "optimisticEIL": 1202, "pessimisticEIL": 1202},
-    {"url": "https://weather.com/", "roughEstimateOfFCP": 2461, "optimisticFCP": 2461, "pessimisticFCP": 2461, "roughEstimateOfFMP": 2461, "optimisticFMP": 2461, "pessimisticFMP": 2461, "roughEstimateOfTTI": 25680, "optimisticTTI": 23104, "pessimisticTTI": 28255, "roughEstimateOfTTFCPUI": 23104, "optimisticTTFCPUI": 23104, "pessimisticTTFCPUI": 28255, "roughEstimateOfSI": 4936, "optimisticSI": 2561, "pessimisticSI": 2461, "roughEstimateOfEIL": 2146, "optimisticEIL": 2683, "pessimisticEIL": 2683},
-    {"url": "http://www.4399.com/", "roughEstimateOfFCP": 3254, "optimisticFCP": 3254, "pessimisticFCP": 3254, "roughEstimateOfFMP": 3585, "optimisticFMP": 3585, "pessimisticFMP": 3585, "roughEstimateOfTTI": 4875, "optimisticTTI": 3585, "pessimisticTTI": 6165, "roughEstimateOfTTFCPUI": 3585, "optimisticTTFCPUI": 3296, "pessimisticTTFCPUI": 6165, "roughEstimateOfSI": 3254, "optimisticSI": 350, "pessimisticSI": 3254, "roughEstimateOfEIL": 13, "optimisticEIL": 16, "pessimisticEIL": 16},
+    {"url": "https://weather.com/", "roughEstimateOfFCP": 2461, "optimisticFCP": 2461, "pessimisticFCP": 2461, "roughEstimateOfFMP": 2461, "optimisticFMP": 2461, "pessimisticFMP": 2461, "roughEstimateOfTTI": 25692, "optimisticTTI": 23104, "pessimisticTTI": 28279, "roughEstimateOfTTFCPUI": 23104, "optimisticTTFCPUI": 23104, "pessimisticTTFCPUI": 28279, "roughEstimateOfSI": 4936, "optimisticSI": 2561, "pessimisticSI": 2461, "roughEstimateOfEIL": 2146, "optimisticEIL": 2683, "pessimisticEIL": 2683},
+    {"url": "http://www.4399.com/", "roughEstimateOfFCP": 3254, "optimisticFCP": 3254, "pessimisticFCP": 3254, "roughEstimateOfFMP": 3585, "optimisticFMP": 3585, "pessimisticFMP": 3585, "roughEstimateOfTTI": 4971, "optimisticTTI": 3585, "pessimisticTTI": 6356, "roughEstimateOfTTFCPUI": 3585, "optimisticTTFCPUI": 3296, "pessimisticTTFCPUI": 6356, "roughEstimateOfSI": 3254, "optimisticSI": 350, "pessimisticSI": 3254, "roughEstimateOfEIL": 13, "optimisticEIL": 16, "pessimisticEIL": 16},
     {"url": "http://www.4shared.com/", "roughEstimateOfFCP": 4037, "optimisticFCP": 4037, "pessimisticFCP": 4037, "roughEstimateOfFMP": 4037, "optimisticFMP": 4037, "pessimisticFMP": 4037, "roughEstimateOfTTI": 5217, "optimisticTTI": 4973, "pessimisticTTI": 5460, "roughEstimateOfTTFCPUI": 4973, "optimisticTTFCPUI": 4973, "pessimisticTTFCPUI": 5460, "roughEstimateOfSI": 4427, "optimisticSI": 1467, "pessimisticSI": 4037, "roughEstimateOfEIL": 51, "optimisticEIL": 63, "pessimisticEIL": 63},
     {"url": "http://www.56.com/", "roughEstimateOfFCP": 3894, "optimisticFCP": 3894, "pessimisticFCP": 3894, "roughEstimateOfFMP": 3894, "optimisticFMP": 3894, "pessimisticFMP": 3894, "roughEstimateOfTTI": 10587, "optimisticTTI": 4248, "pessimisticTTI": 16926, "roughEstimateOfTTFCPUI": 4248, "optimisticTTFCPUI": 4248, "pessimisticTTFCPUI": 2226, "roughEstimateOfSI": 10565, "optimisticSI": 5917, "pessimisticSI": 3894, "roughEstimateOfEIL": 13, "optimisticEIL": 16, "pessimisticEIL": 16},
     {"url": "http://www.58.com/", "roughEstimateOfFCP": 4249, "optimisticFCP": 4160, "pessimisticFCP": 4338, "roughEstimateOfFMP": 4249, "optimisticFMP": 4160, "pessimisticFMP": 4338, "roughEstimateOfTTI": 4805, "optimisticTTI": 4264, "pessimisticTTI": 5347, "roughEstimateOfTTFCPUI": 4264, "optimisticTTFCPUI": 4264, "pessimisticTTFCPUI": 5347, "roughEstimateOfSI": 7951, "optimisticSI": 3844, "pessimisticSI": 4338, "roughEstimateOfEIL": 29, "optimisticEIL": 16, "pessimisticEIL": 56},
@@ -11,60 +11,60 @@
     {"url": "http://www.addthis.com/", "roughEstimateOfFCP": 2843, "optimisticFCP": 2843, "pessimisticFCP": 2843, "roughEstimateOfFMP": 2843, "optimisticFMP": 2843, "pessimisticFMP": 2843, "roughEstimateOfTTI": 9096, "optimisticTTI": 8167, "pessimisticTTI": 10026, "roughEstimateOfTTFCPUI": 8167, "optimisticTTFCPUI": 8167, "pessimisticTTFCPUI": 10026, "roughEstimateOfSI": 3731, "optimisticSI": 1524, "pessimisticSI": 2843, "roughEstimateOfEIL": 167, "optimisticEIL": 209, "pessimisticEIL": 209},
     {"url": "http://www.alexa.com/", "roughEstimateOfFCP": 6525, "optimisticFCP": 6525, "pessimisticFCP": 6525, "roughEstimateOfFMP": 6847, "optimisticFMP": 6847, "pessimisticFMP": 6847, "roughEstimateOfTTI": 14402, "optimisticTTI": 13274, "pessimisticTTI": 15530, "roughEstimateOfTTFCPUI": 13274, "optimisticTTFCPUI": 13274, "pessimisticTTFCPUI": 15530, "roughEstimateOfSI": 7060, "optimisticSI": 2192, "pessimisticSI": 6525, "roughEstimateOfEIL": 416, "optimisticEIL": 520, "pessimisticEIL": 520},
     {"url": "http://www.amazon.co.jp/", "roughEstimateOfFCP": 3059, "optimisticFCP": 3059, "pessimisticFCP": 3059, "roughEstimateOfFMP": 3163, "optimisticFMP": 3059, "pessimisticFMP": 3268, "roughEstimateOfTTI": 7491, "optimisticTTI": 6221, "pessimisticTTI": 8761, "roughEstimateOfTTFCPUI": 6221, "optimisticTTFCPUI": 6221, "pessimisticTTFCPUI": 8761, "roughEstimateOfSI": 4791, "optimisticSI": 2181, "pessimisticSI": 3059, "roughEstimateOfEIL": 262, "optimisticEIL": 328, "pessimisticEIL": 328},
-    {"url": "http://www.att.com/", "roughEstimateOfFCP": 4945, "optimisticFCP": 4133, "pessimisticFCP": 5758, "roughEstimateOfFMP": 6114, "optimisticFMP": 4917, "pessimisticFMP": 7311, "roughEstimateOfTTI": 28951, "optimisticTTI": 24396, "pessimisticTTI": 33505, "roughEstimateOfTTFCPUI": 24396, "optimisticTTFCPUI": 24396, "pessimisticTTFCPUI": 33505, "roughEstimateOfSI": 16106, "optimisticSI": 9009, "pessimisticSI": 5758, "roughEstimateOfEIL": 1542, "optimisticEIL": 1928, "pessimisticEIL": 1928},
-    {"url": "http://www.bing.com/", "roughEstimateOfFCP": 826, "optimisticFCP": 826, "pessimisticFCP": 826, "roughEstimateOfFMP": 1281, "optimisticFMP": 903, "pessimisticFMP": 1658, "roughEstimateOfTTI": 4849, "optimisticTTI": 4187, "pessimisticTTI": 5512, "roughEstimateOfTTFCPUI": 4187, "optimisticTTFCPUI": 4187, "pessimisticTTFCPUI": 5512, "roughEstimateOfSI": 2263, "optimisticSI": 1412, "pessimisticSI": 826, "roughEstimateOfEIL": 558, "optimisticEIL": 698, "pessimisticEIL": 698},
+    {"url": "http://www.att.com/", "roughEstimateOfFCP": 4547, "optimisticFCP": 3734, "pessimisticFCP": 5359, "roughEstimateOfFMP": 5914, "optimisticFMP": 4718, "pessimisticFMP": 7111, "roughEstimateOfTTI": 28938, "optimisticTTI": 24370, "pessimisticTTI": 33505, "roughEstimateOfTTFCPUI": 24370, "optimisticTTFCPUI": 24370, "pessimisticTTFCPUI": 33505, "roughEstimateOfSI": 15846, "optimisticSI": 9009, "pessimisticSI": 5359, "roughEstimateOfEIL": 1542, "optimisticEIL": 1928, "pessimisticEIL": 1928},
+    {"url": "http://www.bing.com/", "roughEstimateOfFCP": 826, "optimisticFCP": 826, "pessimisticFCP": 826, "roughEstimateOfFMP": 1281, "optimisticFMP": 903, "pessimisticFMP": 1658, "roughEstimateOfTTI": 4775, "optimisticTTI": 4187, "pessimisticTTI": 5363, "roughEstimateOfTTFCPUI": 4187, "optimisticTTFCPUI": 4187, "pessimisticTTFCPUI": 5363, "roughEstimateOfSI": 2263, "optimisticSI": 1412, "pessimisticSI": 826, "roughEstimateOfEIL": 558, "optimisticEIL": 698, "pessimisticEIL": 698},
     {"url": "http://www.blogspot.com/", "roughEstimateOfFCP": 3398, "optimisticFCP": 3398, "pessimisticFCP": 3398, "roughEstimateOfFMP": 3398, "optimisticFMP": 3398, "pessimisticFMP": 3398, "roughEstimateOfTTI": 3852, "optimisticTTI": 3794, "pessimisticTTI": 3910, "roughEstimateOfTTFCPUI": 3794, "optimisticTTFCPUI": 3794, "pessimisticTTFCPUI": 3910, "roughEstimateOfSI": 12140, "optimisticSI": 7272, "pessimisticSI": 3398, "roughEstimateOfEIL": 13, "optimisticEIL": 16, "pessimisticEIL": 16},
     {"url": "http://www.brothersoft.com/", "roughEstimateOfFCP": 1860, "optimisticFCP": 1764, "pessimisticFCP": 1956, "roughEstimateOfFMP": 2626, "optimisticFMP": 2626, "pessimisticFMP": 2626, "roughEstimateOfTTI": 15168, "optimisticTTI": 13200, "pessimisticTTI": 17136, "roughEstimateOfTTFCPUI": 13200, "optimisticTTFCPUI": 13200, "pessimisticTTFCPUI": 17136, "roughEstimateOfSI": 4244, "optimisticSI": 2302, "pessimisticSI": 1956, "roughEstimateOfEIL": 636, "optimisticEIL": 795, "pessimisticEIL": 795},
     {"url": "http://www.china.com.cn/", "roughEstimateOfFCP": 4814, "optimisticFCP": 4166, "pessimisticFCP": 5462, "roughEstimateOfFMP": 4814, "optimisticFMP": 4166, "pessimisticFMP": 5462, "roughEstimateOfTTI": 6893, "optimisticTTI": 4773, "pessimisticTTI": 9012, "roughEstimateOfTTFCPUI": 4814, "optimisticTTFCPUI": 4773, "pessimisticTTFCPUI": 2707, "roughEstimateOfSI": 8687, "optimisticSI": 3848, "pessimisticSI": 5462, "roughEstimateOfEIL": 20, "optimisticEIL": 25, "pessimisticEIL": 25},
-    {"url": "http://www.cnet.com/", "roughEstimateOfFCP": 2162, "optimisticFCP": 1980, "pessimisticFCP": 2343, "roughEstimateOfFMP": 2512, "optimisticFMP": 1980, "pessimisticFMP": 3044, "roughEstimateOfTTI": 24972, "optimisticTTI": 20714, "pessimisticTTI": 29229, "roughEstimateOfTTFCPUI": 20714, "optimisticTTFCPUI": 20714, "pessimisticTTFCPUI": 29229, "roughEstimateOfSI": 4616, "optimisticSI": 2388, "pessimisticSI": 2343, "roughEstimateOfEIL": 1061, "optimisticEIL": 1326, "pessimisticEIL": 1326},
+    {"url": "http://www.cnet.com/", "roughEstimateOfFCP": 2162, "optimisticFCP": 1980, "pessimisticFCP": 2343, "roughEstimateOfFMP": 2512, "optimisticFMP": 1980, "pessimisticFMP": 3044, "roughEstimateOfTTI": 25014, "optimisticTTI": 20714, "pessimisticTTI": 29314, "roughEstimateOfTTFCPUI": 20714, "optimisticTTFCPUI": 20714, "pessimisticTTFCPUI": 29314, "roughEstimateOfSI": 4616, "optimisticSI": 2388, "pessimisticSI": 2343, "roughEstimateOfEIL": 1061, "optimisticEIL": 1326, "pessimisticEIL": 1326},
     {"url": "http://www.cntv.cn/", "roughEstimateOfFCP": 3597, "optimisticFCP": 3597, "pessimisticFCP": 3597, "roughEstimateOfFMP": 3597, "optimisticFMP": 3597, "pessimisticFMP": 3597, "roughEstimateOfTTI": 3747, "optimisticTTI": 3597, "pessimisticTTI": 3897, "roughEstimateOfTTFCPUI": 3597, "optimisticTTFCPUI": 3597, "pessimisticTTFCPUI": 3897, "roughEstimateOfSI": 4475, "optimisticSI": 1705, "pessimisticSI": 3597, "roughEstimateOfEIL": 13, "optimisticEIL": 16, "pessimisticEIL": 16},
     {"url": "http://www.conduit.com/", "roughEstimateOfFCP": 2107, "optimisticFCP": 2107, "pessimisticFCP": 2107, "roughEstimateOfFMP": 2107, "optimisticFMP": 2107, "pessimisticFMP": 2107, "roughEstimateOfTTI": 2811, "optimisticTTI": 2409, "pessimisticTTI": 3212, "roughEstimateOfTTFCPUI": 2409, "optimisticTTFCPUI": 2409, "pessimisticTTFCPUI": 3212, "roughEstimateOfSI": 2929, "optimisticSI": 1292, "pessimisticSI": 2107, "roughEstimateOfEIL": 20, "optimisticEIL": 25, "pessimisticEIL": 25},
     {"url": "http://www.craigslist.org/", "roughEstimateOfFCP": 3541, "optimisticFCP": 3534, "pessimisticFCP": 3548, "roughEstimateOfFMP": 5222, "optimisticFMP": 5101, "pessimisticFMP": 5343, "roughEstimateOfTTI": 5222, "optimisticTTI": 5101, "pessimisticTTI": 5343, "roughEstimateOfTTFCPUI": 5222, "optimisticTTFCPUI": 4801, "pessimisticTTFCPUI": 5343, "roughEstimateOfSI": 3925, "optimisticSI": 1334, "pessimisticSI": 3548, "roughEstimateOfEIL": 97, "optimisticEIL": 16, "pessimisticEIL": 227},
-    {"url": "http://www.dawn.com/", "roughEstimateOfFCP": 3514, "optimisticFCP": 3295, "pessimisticFCP": 3733, "roughEstimateOfFMP": 3514, "optimisticFMP": 3295, "pessimisticFMP": 3733, "roughEstimateOfTTI": 16175, "optimisticTTI": 13751, "pessimisticTTI": 18599, "roughEstimateOfTTFCPUI": 13751, "optimisticTTFCPUI": 13751, "pessimisticTTFCPUI": 18599, "roughEstimateOfSI": 5317, "optimisticSI": 2243, "pessimisticSI": 3733, "roughEstimateOfEIL": 298, "optimisticEIL": 373, "pessimisticEIL": 373},
+    {"url": "http://www.dawn.com/", "roughEstimateOfFCP": 3364, "optimisticFCP": 3144, "pessimisticFCP": 3583, "roughEstimateOfFMP": 3364, "optimisticFMP": 3144, "pessimisticFMP": 3583, "roughEstimateOfTTI": 15911, "optimisticTTI": 13601, "pessimisticTTI": 18221, "roughEstimateOfTTFCPUI": 13601, "optimisticTTFCPUI": 13601, "pessimisticTTFCPUI": 18221, "roughEstimateOfSI": 5220, "optimisticSI": 2243, "pessimisticSI": 3583, "roughEstimateOfEIL": 298, "optimisticEIL": 373, "pessimisticEIL": 373},
     {"url": "http://www.depositfiles.com/", "roughEstimateOfFCP": 8437, "optimisticFCP": 8437, "pessimisticFCP": 8437, "roughEstimateOfFMP": 8437, "optimisticFMP": 8437, "pessimisticFMP": 8437, "roughEstimateOfTTI": 9701, "optimisticTTI": 9551, "pessimisticTTI": 9851, "roughEstimateOfTTFCPUI": 8437, "optimisticTTFCPUI": 1075, "pessimisticTTFCPUI": 1173, "roughEstimateOfSI": 13239, "optimisticSI": 5718, "pessimisticSI": 8437, "roughEstimateOfEIL": 273, "optimisticEIL": 341, "pessimisticEIL": 341},
-    {"url": "http://www.deviantart.com/", "roughEstimateOfFCP": 4321, "optimisticFCP": 4321, "pessimisticFCP": 4321, "roughEstimateOfFMP": 5712, "optimisticFMP": 5712, "pessimisticFMP": 5712, "roughEstimateOfTTI": 32691, "optimisticTTI": 21101, "pessimisticTTI": 44282, "roughEstimateOfTTFCPUI": 9961, "optimisticTTFCPUI": 9961, "pessimisticTTFCPUI": 9961, "roughEstimateOfSI": 6071, "optimisticSI": 2509, "pessimisticSI": 4321, "roughEstimateOfEIL": 624, "optimisticEIL": 780, "pessimisticEIL": 780},
-    {"url": "http://www.dion.ne.jp/", "roughEstimateOfFCP": 8384, "optimisticFCP": 5734, "pessimisticFCP": 11033, "roughEstimateOfFMP": 8384, "optimisticFMP": 5734, "pessimisticFMP": 11033, "roughEstimateOfTTI": 26723, "optimisticTTI": 14518, "pessimisticTTI": 38929, "roughEstimateOfTTFCPUI": 14518, "optimisticTTFCPUI": 14518, "pessimisticTTFCPUI": 26881, "roughEstimateOfSI": 18212, "optimisticSI": 8065, "pessimisticSI": 11033, "roughEstimateOfEIL": 1028, "optimisticEIL": 1285, "pessimisticEIL": 1285},
+    {"url": "http://www.deviantart.com/", "roughEstimateOfFCP": 4321, "optimisticFCP": 4321, "pessimisticFCP": 4321, "roughEstimateOfFMP": 5712, "optimisticFMP": 5712, "pessimisticFMP": 5712, "roughEstimateOfTTI": 32796, "optimisticTTI": 21101, "pessimisticTTI": 44490, "roughEstimateOfTTFCPUI": 9961, "optimisticTTFCPUI": 9961, "pessimisticTTFCPUI": 9961, "roughEstimateOfSI": 6071, "optimisticSI": 2509, "pessimisticSI": 4321, "roughEstimateOfEIL": 624, "optimisticEIL": 780, "pessimisticEIL": 780},
+    {"url": "http://www.dion.ne.jp/", "roughEstimateOfFCP": 8384, "optimisticFCP": 5734, "pessimisticFCP": 11033, "roughEstimateOfFMP": 8384, "optimisticFMP": 5734, "pessimisticFMP": 11033, "roughEstimateOfTTI": 26526, "optimisticTTI": 14518, "pessimisticTTI": 38533, "roughEstimateOfTTFCPUI": 14518, "optimisticTTFCPUI": 14518, "pessimisticTTFCPUI": 26611, "roughEstimateOfSI": 18212, "optimisticSI": 8065, "pessimisticSI": 11033, "roughEstimateOfEIL": 1028, "optimisticEIL": 1285, "pessimisticEIL": 1285},
     {"url": "http://www.domaintools.com/", "roughEstimateOfFCP": 1599, "optimisticFCP": 1599, "pessimisticFCP": 1599, "roughEstimateOfFMP": 2750, "optimisticFMP": 2469, "pessimisticFMP": 3031, "roughEstimateOfTTI": 8329, "optimisticTTI": 8077, "pessimisticTTI": 8581, "roughEstimateOfTTFCPUI": 8077, "optimisticTTFCPUI": 8077, "pessimisticTTFCPUI": 8581, "roughEstimateOfSI": 9504, "optimisticSI": 6225, "pessimisticSI": 1599, "roughEstimateOfEIL": 920, "optimisticEIL": 617, "pessimisticEIL": 1682},
     {"url": "http://www.douban.com/", "roughEstimateOfFCP": 6832, "optimisticFCP": 6832, "pessimisticFCP": 6832, "roughEstimateOfFMP": 6832, "optimisticFMP": 6832, "pessimisticFMP": 6832, "roughEstimateOfTTI": 7997, "optimisticTTI": 7676, "pessimisticTTI": 8318, "roughEstimateOfTTFCPUI": 7676, "optimisticTTFCPUI": 7676, "pessimisticTTFCPUI": 8318, "roughEstimateOfSI": 10560, "optimisticSI": 4549, "pessimisticSI": 6832, "roughEstimateOfEIL": 558, "optimisticEIL": 697, "pessimisticEIL": 697},
-    {"url": "http://www.ebay.com/", "roughEstimateOfFCP": 2985, "optimisticFCP": 2985, "pessimisticFCP": 2985, "roughEstimateOfFMP": 2985, "optimisticFMP": 2985, "pessimisticFMP": 2985, "roughEstimateOfTTI": 8555, "optimisticTTI": 7746, "pessimisticTTI": 9364, "roughEstimateOfTTFCPUI": 7746, "optimisticTTFCPUI": 7746, "pessimisticTTFCPUI": 9364, "roughEstimateOfSI": 4313, "optimisticSI": 1873, "pessimisticSI": 2985, "roughEstimateOfEIL": 187, "optimisticEIL": 233, "pessimisticEIL": 233},
+    {"url": "http://www.ebay.com/", "roughEstimateOfFCP": 2985, "optimisticFCP": 2985, "pessimisticFCP": 2985, "roughEstimateOfFMP": 2985, "optimisticFMP": 2985, "pessimisticFMP": 2985, "roughEstimateOfTTI": 8456, "optimisticTTI": 7746, "pessimisticTTI": 9167, "roughEstimateOfTTFCPUI": 7746, "optimisticTTFCPUI": 7746, "pessimisticTTFCPUI": 9167, "roughEstimateOfSI": 4313, "optimisticSI": 1873, "pessimisticSI": 2985, "roughEstimateOfEIL": 187, "optimisticEIL": 233, "pessimisticEIL": 233},
     {"url": "https://www.ebs.in/IPS/", "roughEstimateOfFCP": 6055, "optimisticFCP": 4233, "pessimisticFCP": 7876, "roughEstimateOfFMP": 6547, "optimisticFMP": 4461, "pessimisticFMP": 8633, "roughEstimateOfTTI": 14549, "optimisticTTI": 7912, "pessimisticTTI": 21185, "roughEstimateOfTTFCPUI": 7912, "optimisticTTFCPUI": 7912, "pessimisticTTFCPUI": 4400, "roughEstimateOfSI": 10318, "optimisticSI": 3892, "pessimisticSI": 7876, "roughEstimateOfEIL": 258, "optimisticEIL": 322, "pessimisticEIL": 322},
-    {"url": "http://www.espn.com/", "roughEstimateOfFCP": 2706, "optimisticFCP": 2706, "pessimisticFCP": 2706, "roughEstimateOfFMP": 3653, "optimisticFMP": 2706, "pessimisticFMP": 4600, "roughEstimateOfTTI": 24654, "optimisticTTI": 21544, "pessimisticTTI": 27764, "roughEstimateOfTTFCPUI": 21544, "optimisticTTFCPUI": 21544, "pessimisticTTFCPUI": 26146, "roughEstimateOfSI": 4175, "optimisticSI": 1904, "pessimisticSI": 2706, "roughEstimateOfEIL": 1316, "optimisticEIL": 1645, "pessimisticEIL": 1645},
+    {"url": "http://www.espn.com/", "roughEstimateOfFCP": 2706, "optimisticFCP": 2706, "pessimisticFCP": 2706, "roughEstimateOfFMP": 3653, "optimisticFMP": 2706, "pessimisticFMP": 4600, "roughEstimateOfTTI": 24553, "optimisticTTI": 21544, "pessimisticTTI": 27563, "roughEstimateOfTTFCPUI": 21544, "optimisticTTFCPUI": 21544, "pessimisticTTFCPUI": 26146, "roughEstimateOfSI": 4175, "optimisticSI": 1904, "pessimisticSI": 2706, "roughEstimateOfEIL": 1316, "optimisticEIL": 1645, "pessimisticEIL": 1645},
     {"url": "http://www.facebook.com/", "roughEstimateOfFCP": 3485, "optimisticFCP": 3485, "pessimisticFCP": 3485, "roughEstimateOfFMP": 3485, "optimisticFMP": 3485, "pessimisticFMP": 3485, "roughEstimateOfTTI": 5230, "optimisticTTI": 4621, "pessimisticTTI": 5838, "roughEstimateOfTTFCPUI": 4621, "optimisticTTFCPUI": 4621, "pessimisticTTFCPUI": 5838, "roughEstimateOfSI": 4254, "optimisticSI": 1599, "pessimisticSI": 3485, "roughEstimateOfEIL": 65, "optimisticEIL": 82, "pessimisticEIL": 82},
     {"url": "http://www.fc2.com/", "roughEstimateOfFCP": 3142, "optimisticFCP": 3142, "pessimisticFCP": 3142, "roughEstimateOfFMP": 3142, "optimisticFMP": 3142, "pessimisticFMP": 3142, "roughEstimateOfTTI": 3439, "optimisticTTI": 3340, "pessimisticTTI": 3538, "roughEstimateOfTTFCPUI": 3340, "optimisticTTFCPUI": 3340, "pessimisticTTFCPUI": 3538, "roughEstimateOfSI": 3816, "optimisticSI": 1446, "pessimisticSI": 3142, "roughEstimateOfEIL": 13, "optimisticEIL": 16, "pessimisticEIL": 16},
-    {"url": "http://www.filestube.com/", "roughEstimateOfFCP": 9178, "optimisticFCP": 8943, "pessimisticFCP": 9414, "roughEstimateOfFMP": 10863, "optimisticFMP": 10463, "pessimisticFMP": 11262, "roughEstimateOfTTI": 24350, "optimisticTTI": 17388, "pessimisticTTI": 31311, "roughEstimateOfTTFCPUI": 17388, "optimisticTTFCPUI": 17388, "pessimisticTTFCPUI": 12474, "roughEstimateOfSI": 12986, "optimisticSI": 5083, "pessimisticSI": 9414, "roughEstimateOfEIL": 1198, "optimisticEIL": 1497, "pessimisticEIL": 1497},
-    {"url": "http://www.foxnews.com/", "roughEstimateOfFCP": 3188, "optimisticFCP": 3188, "pessimisticFCP": 3188, "roughEstimateOfFMP": 3188, "optimisticFMP": 3188, "pessimisticFMP": 3188, "roughEstimateOfTTI": 30683, "optimisticTTI": 22636, "pessimisticTTI": 38731, "roughEstimateOfTTFCPUI": 22636, "optimisticTTFCPUI": 22636, "pessimisticTTFCPUI": 29570, "roughEstimateOfSI": 11505, "optimisticSI": 6916, "pessimisticSI": 3188, "roughEstimateOfEIL": 731, "optimisticEIL": 914, "pessimisticEIL": 914},
-    {"url": "http://www.getpersonas.com/", "roughEstimateOfFCP": 4232, "optimisticFCP": 4221, "pessimisticFCP": 4244, "roughEstimateOfFMP": 6497, "optimisticFMP": 6497, "pessimisticFMP": 6497, "roughEstimateOfTTI": 11146, "optimisticTTI": 9569, "pessimisticTTI": 12722, "roughEstimateOfTTFCPUI": 9569, "optimisticTTFCPUI": 9569, "pessimisticTTFCPUI": 12722, "roughEstimateOfSI": 4621, "optimisticSI": 1509, "pessimisticSI": 4244, "roughEstimateOfEIL": 1510, "optimisticEIL": 1888, "pessimisticEIL": 1888},
-    {"url": "http://www.globo.com/", "roughEstimateOfFCP": 3289, "optimisticFCP": 3289, "pessimisticFCP": 3289, "roughEstimateOfFMP": 3733, "optimisticFMP": 3557, "pessimisticFMP": 3910, "roughEstimateOfTTI": 20256, "optimisticTTI": 17348, "pessimisticTTI": 23164, "roughEstimateOfTTFCPUI": 17348, "optimisticTTFCPUI": 17348, "pessimisticTTFCPUI": 23164, "roughEstimateOfSI": 4859, "optimisticSI": 2122, "pessimisticSI": 3289, "roughEstimateOfEIL": 2070, "optimisticEIL": 2588, "pessimisticEIL": 2588},
+    {"url": "http://www.filestube.com/", "roughEstimateOfFCP": 9178, "optimisticFCP": 8943, "pessimisticFCP": 9414, "roughEstimateOfFMP": 10863, "optimisticFMP": 10463, "pessimisticFMP": 11262, "roughEstimateOfTTI": 24296, "optimisticTTI": 17389, "pessimisticTTI": 31203, "roughEstimateOfTTFCPUI": 17389, "optimisticTTFCPUI": 17389, "pessimisticTTFCPUI": 12474, "roughEstimateOfSI": 12986, "optimisticSI": 5083, "pessimisticSI": 9414, "roughEstimateOfEIL": 1198, "optimisticEIL": 1497, "pessimisticEIL": 1497},
+    {"url": "http://www.foxnews.com/", "roughEstimateOfFCP": 3188, "optimisticFCP": 3188, "pessimisticFCP": 3188, "roughEstimateOfFMP": 3188, "optimisticFMP": 3188, "pessimisticFMP": 3188, "roughEstimateOfTTI": 30537, "optimisticTTI": 22636, "pessimisticTTI": 38439, "roughEstimateOfTTFCPUI": 22636, "optimisticTTFCPUI": 22636, "pessimisticTTFCPUI": 29233, "roughEstimateOfSI": 11505, "optimisticSI": 6916, "pessimisticSI": 3188, "roughEstimateOfEIL": 731, "optimisticEIL": 914, "pessimisticEIL": 914},
+    {"url": "http://www.getpersonas.com/", "roughEstimateOfFCP": 4232, "optimisticFCP": 4221, "pessimisticFCP": 4244, "roughEstimateOfFMP": 6497, "optimisticFMP": 6497, "pessimisticFMP": 6497, "roughEstimateOfTTI": 11063, "optimisticTTI": 9569, "pessimisticTTI": 12556, "roughEstimateOfTTFCPUI": 9569, "optimisticTTFCPUI": 9569, "pessimisticTTFCPUI": 12556, "roughEstimateOfSI": 4621, "optimisticSI": 1509, "pessimisticSI": 4244, "roughEstimateOfEIL": 1510, "optimisticEIL": 1888, "pessimisticEIL": 1888},
+    {"url": "http://www.globo.com/", "roughEstimateOfFCP": 3289, "optimisticFCP": 3289, "pessimisticFCP": 3289, "roughEstimateOfFMP": 3733, "optimisticFMP": 3557, "pessimisticFMP": 3910, "roughEstimateOfTTI": 19850, "optimisticTTI": 17348, "pessimisticTTI": 22352, "roughEstimateOfTTFCPUI": 17348, "optimisticTTFCPUI": 17348, "pessimisticTTFCPUI": 22352, "roughEstimateOfSI": 4859, "optimisticSI": 2122, "pessimisticSI": 3289, "roughEstimateOfEIL": 2070, "optimisticEIL": 2588, "pessimisticEIL": 2588},
     {"url": "http://www.gmx.net/", "roughEstimateOfFCP": 2029, "optimisticFCP": 2029, "pessimisticFCP": 2029, "roughEstimateOfFMP": 2029, "optimisticFMP": 2029, "pessimisticFMP": 2029, "roughEstimateOfTTI": 8828, "optimisticTTI": 7677, "pessimisticTTI": 9980, "roughEstimateOfTTFCPUI": 7677, "optimisticTTFCPUI": 7677, "pessimisticTTFCPUI": 9980, "roughEstimateOfSI": 5290, "optimisticSI": 3015, "pessimisticSI": 2029, "roughEstimateOfEIL": 453, "optimisticEIL": 566, "pessimisticEIL": 566},
-    {"url": "http://www.hatena.ne.jp/", "roughEstimateOfFCP": 1451, "optimisticFCP": 1325, "pessimisticFCP": 1576, "roughEstimateOfFMP": 1788, "optimisticFMP": 1788, "pessimisticFMP": 1788, "roughEstimateOfTTI": 24920, "optimisticTTI": 13420, "pessimisticTTI": 36420, "roughEstimateOfTTFCPUI": 13420, "optimisticTTFCPUI": 13420, "pessimisticTTFCPUI": 4439, "roughEstimateOfSI": 4725, "optimisticSI": 2821, "pessimisticSI": 1576, "roughEstimateOfEIL": 211, "optimisticEIL": 264, "pessimisticEIL": 264},
-    {"url": "http://www.hexun.com/", "roughEstimateOfFCP": 4178, "optimisticFCP": 4178, "pessimisticFCP": 4178, "roughEstimateOfFMP": 5394, "optimisticFMP": 4178, "pessimisticFMP": 6609, "roughEstimateOfTTI": 6974, "optimisticTTI": 6840, "pessimisticTTI": 7107, "roughEstimateOfTTFCPUI": 6840, "optimisticTTFCPUI": 6840, "pessimisticTTFCPUI": 7107, "roughEstimateOfSI": 13345, "optimisticSI": 7771, "pessimisticSI": 4178, "roughEstimateOfEIL": 42, "optimisticEIL": 16, "pessimisticEIL": 88},
+    {"url": "http://www.hatena.ne.jp/", "roughEstimateOfFCP": 1451, "optimisticFCP": 1325, "pessimisticFCP": 1576, "roughEstimateOfFMP": 1788, "optimisticFMP": 1788, "pessimisticFMP": 1788, "roughEstimateOfTTI": 24851, "optimisticTTI": 13420, "pessimisticTTI": 36282, "roughEstimateOfTTFCPUI": 13420, "optimisticTTFCPUI": 13420, "pessimisticTTFCPUI": 4439, "roughEstimateOfSI": 4725, "optimisticSI": 2821, "pessimisticSI": 1576, "roughEstimateOfEIL": 211, "optimisticEIL": 264, "pessimisticEIL": 264},
+    {"url": "http://www.hexun.com/", "roughEstimateOfFCP": 4178, "optimisticFCP": 4178, "pessimisticFCP": 4178, "roughEstimateOfFMP": 5394, "optimisticFMP": 4178, "pessimisticFMP": 6609, "roughEstimateOfTTI": 7191, "optimisticTTI": 6811, "pessimisticTTI": 7571, "roughEstimateOfTTFCPUI": 6811, "optimisticTTFCPUI": 6811, "pessimisticTTFCPUI": 7571, "roughEstimateOfSI": 13345, "optimisticSI": 7771, "pessimisticSI": 4178, "roughEstimateOfEIL": 42, "optimisticEIL": 16, "pessimisticEIL": 88},
     {"url": "http://www.hotfile.com/", "roughEstimateOfFCP": 5063, "optimisticFCP": 4434, "pessimisticFCP": 5692, "roughEstimateOfFMP": 5063, "optimisticFMP": 4434, "pessimisticFMP": 5692, "roughEstimateOfTTI": 7976, "optimisticTTI": 6213, "pessimisticTTI": 9740, "roughEstimateOfTTFCPUI": 6213, "optimisticTTFCPUI": 6213, "pessimisticTTFCPUI": 9740, "roughEstimateOfSI": 10180, "optimisticSI": 4807, "pessimisticSI": 5692, "roughEstimateOfEIL": 104, "optimisticEIL": 126, "pessimisticEIL": 134},
     {"url": "http://www.hp.com/", "roughEstimateOfFCP": 8465, "optimisticFCP": 6953, "pessimisticFCP": 9978, "roughEstimateOfFMP": 9844, "optimisticFMP": 8298, "pessimisticFMP": 11390, "roughEstimateOfTTI": 17358, "optimisticTTI": 15882, "pessimisticTTI": 18834, "roughEstimateOfTTFCPUI": 15882, "optimisticTTFCPUI": 15882, "pessimisticTTFCPUI": 18834, "roughEstimateOfSI": 9592, "optimisticSI": 2398, "pessimisticSI": 9978, "roughEstimateOfEIL": 333, "optimisticEIL": 315, "pessimisticEIL": 517},
-    {"url": "http://www.huffingtonpost.com/", "roughEstimateOfFCP": 3346, "optimisticFCP": 3346, "pessimisticFCP": 3346, "roughEstimateOfFMP": 3346, "optimisticFMP": 3346, "pessimisticFMP": 3346, "roughEstimateOfTTI": 20925, "optimisticTTI": 17455, "pessimisticTTI": 24396, "roughEstimateOfTTFCPUI": 17455, "optimisticTTFCPUI": 17455, "pessimisticTTFCPUI": 16115, "roughEstimateOfSI": 4689, "optimisticSI": 1974, "pessimisticSI": 3346, "roughEstimateOfEIL": 337, "optimisticEIL": 421, "pessimisticEIL": 421},
-    {"url": "http://www.hulu.com/", "roughEstimateOfFCP": 12256, "optimisticFCP": 9521, "pessimisticFCP": 14992, "roughEstimateOfFMP": 14218, "optimisticFMP": 10495, "pessimisticFMP": 17940, "roughEstimateOfTTI": 23027, "optimisticTTI": 20599, "pessimisticTTI": 25456, "roughEstimateOfTTFCPUI": 20599, "optimisticTTFCPUI": 20599, "pessimisticTTFCPUI": 25456, "roughEstimateOfSI": 15256, "optimisticSI": 4115, "pessimisticSI": 14992, "roughEstimateOfEIL": 1254, "optimisticEIL": 1300, "pessimisticEIL": 1835},
+    {"url": "http://www.huffingtonpost.com/", "roughEstimateOfFCP": 3346, "optimisticFCP": 3346, "pessimisticFCP": 3346, "roughEstimateOfFMP": 3346, "optimisticFMP": 3346, "pessimisticFMP": 3346, "roughEstimateOfTTI": 20825, "optimisticTTI": 17254, "pessimisticTTI": 24396, "roughEstimateOfTTFCPUI": 17254, "optimisticTTFCPUI": 17254, "pessimisticTTFCPUI": 16416, "roughEstimateOfSI": 4689, "optimisticSI": 1974, "pessimisticSI": 3346, "roughEstimateOfEIL": 337, "optimisticEIL": 421, "pessimisticEIL": 421},
+    {"url": "http://www.hulu.com/", "roughEstimateOfFCP": 12256, "optimisticFCP": 9521, "pessimisticFCP": 14992, "roughEstimateOfFMP": 14218, "optimisticFMP": 10495, "pessimisticFMP": 17940, "roughEstimateOfTTI": 22930, "optimisticTTI": 20599, "pessimisticTTI": 25261, "roughEstimateOfTTFCPUI": 20599, "optimisticTTFCPUI": 20599, "pessimisticTTFCPUI": 25261, "roughEstimateOfSI": 15256, "optimisticSI": 4115, "pessimisticSI": 14992, "roughEstimateOfEIL": 1254, "optimisticEIL": 1300, "pessimisticEIL": 1835},
     {"url": "http://www.iciba.com/", "roughEstimateOfFCP": 1445, "optimisticFCP": 1445, "pessimisticFCP": 1445, "roughEstimateOfFMP": 1445, "optimisticFMP": 1445, "pessimisticFMP": 1445, "roughEstimateOfTTI": 3517, "optimisticTTI": 3030, "pessimisticTTI": 4004, "roughEstimateOfTTFCPUI": 3030, "optimisticTTFCPUI": 3030, "pessimisticTTFCPUI": 4004, "roughEstimateOfSI": 5012, "optimisticSI": 3088, "pessimisticSI": 1445, "roughEstimateOfEIL": 394, "optimisticEIL": 492, "pessimisticEIL": 492},
     {"url": "http://www.ifeng.com/", "roughEstimateOfFCP": 3576, "optimisticFCP": 3534, "pessimisticFCP": 3619, "roughEstimateOfFMP": 3576, "optimisticFMP": 3534, "pessimisticFMP": 3619, "roughEstimateOfTTI": 5355, "optimisticTTI": 3534, "pessimisticTTI": 7177, "roughEstimateOfTTFCPUI": 3576, "optimisticTTFCPUI": 3494, "pessimisticTTFCPUI": 7177, "roughEstimateOfSI": 3576, "optimisticSI": 879, "pessimisticSI": 3619, "roughEstimateOfEIL": 13, "optimisticEIL": 16, "pessimisticEIL": 16},
     {"url": "http://www.imageshack.us/", "roughEstimateOfFCP": 7087, "optimisticFCP": 6859, "pessimisticFCP": 7315, "roughEstimateOfFMP": 7087, "optimisticFMP": 6859, "pessimisticFMP": 7315, "roughEstimateOfTTI": 9115, "optimisticTTI": 8965, "pessimisticTTI": 9265, "roughEstimateOfTTFCPUI": 8965, "optimisticTTFCPUI": 8965, "pessimisticTTFCPUI": 9265, "roughEstimateOfSI": 7087, "optimisticSI": 1817, "pessimisticSI": 7315, "roughEstimateOfEIL": 1491, "optimisticEIL": 1864, "pessimisticEIL": 1864},
-    {"url": "http://www.irs.gov/", "roughEstimateOfFCP": 2757, "optimisticFCP": 2757, "pessimisticFCP": 2757, "roughEstimateOfFMP": 3906, "optimisticFMP": 3706, "pessimisticFMP": 4106, "roughEstimateOfTTI": 11072, "optimisticTTI": 10097, "pessimisticTTI": 12047, "roughEstimateOfTTFCPUI": 10097, "optimisticTTFCPUI": 10097, "pessimisticTTFCPUI": 12047, "roughEstimateOfSI": 3559, "optimisticSI": 1440, "pessimisticSI": 2757, "roughEstimateOfEIL": 213, "optimisticEIL": 255, "pessimisticEIL": 277},
+    {"url": "http://www.irs.gov/", "roughEstimateOfFCP": 2757, "optimisticFCP": 2757, "pessimisticFCP": 2757, "roughEstimateOfFMP": 3906, "optimisticFMP": 3706, "pessimisticFMP": 4106, "roughEstimateOfTTI": 10997, "optimisticTTI": 10097, "pessimisticTTI": 11897, "roughEstimateOfTTFCPUI": 10097, "optimisticTTFCPUI": 10097, "pessimisticTTFCPUI": 11897, "roughEstimateOfSI": 3559, "optimisticSI": 1440, "pessimisticSI": 2757, "roughEstimateOfEIL": 213, "optimisticEIL": 255, "pessimisticEIL": 277},
     {"url": "http://www.java.com/", "roughEstimateOfFCP": 1268, "optimisticFCP": 1268, "pessimisticFCP": 1268, "roughEstimateOfFMP": 1268, "optimisticFMP": 1268, "pessimisticFMP": 1268, "roughEstimateOfTTI": 3189, "optimisticTTI": 2510, "pessimisticTTI": 3868, "roughEstimateOfTTFCPUI": 2510, "optimisticTTFCPUI": 2510, "pessimisticTTFCPUI": 3868, "roughEstimateOfSI": 2372, "optimisticSI": 1284, "pessimisticSI": 1268, "roughEstimateOfEIL": 13, "optimisticEIL": 16, "pessimisticEIL": 16},
     {"url": "http://www.linkedin.com/", "roughEstimateOfFCP": 4621, "optimisticFCP": 4621, "pessimisticFCP": 4621, "roughEstimateOfFMP": 4621, "optimisticFMP": 4621, "pessimisticFMP": 4621, "roughEstimateOfTTI": 5034, "optimisticTTI": 4875, "pessimisticTTI": 5193, "roughEstimateOfTTFCPUI": 4875, "optimisticTTFCPUI": 4875, "pessimisticTTFCPUI": 5193, "roughEstimateOfSI": 4621, "optimisticSI": 1074, "pessimisticSI": 4621, "roughEstimateOfEIL": 1598, "optimisticEIL": 1998, "pessimisticEIL": 1998},
-    {"url": "http://www.livedoor.jp/", "roughEstimateOfFCP": 3084, "optimisticFCP": 3084, "pessimisticFCP": 3084, "roughEstimateOfFMP": 3084, "optimisticFMP": 3084, "pessimisticFMP": 3084, "roughEstimateOfTTI": 15652, "optimisticTTI": 12720, "pessimisticTTI": 18583, "roughEstimateOfTTFCPUI": 12720, "optimisticTTFCPUI": 12720, "pessimisticTTFCPUI": 18583, "roughEstimateOfSI": 7718, "optimisticSI": 4260, "pessimisticSI": 3084, "roughEstimateOfEIL": 246, "optimisticEIL": 307, "pessimisticEIL": 307},
+    {"url": "http://www.livedoor.jp/", "roughEstimateOfFCP": 3084, "optimisticFCP": 3084, "pessimisticFCP": 3084, "roughEstimateOfFMP": 3084, "optimisticFMP": 3084, "pessimisticFMP": 3084, "roughEstimateOfTTI": 15449, "optimisticTTI": 12720, "pessimisticTTI": 18178, "roughEstimateOfTTFCPUI": 12720, "optimisticTTFCPUI": 12720, "pessimisticTTFCPUI": 18178, "roughEstimateOfSI": 7718, "optimisticSI": 4260, "pessimisticSI": 3084, "roughEstimateOfEIL": 246, "optimisticEIL": 307, "pessimisticEIL": 307},
     {"url": "http://www.liveperson.net/", "roughEstimateOfFCP": 11037, "optimisticFCP": 10841, "pessimisticFCP": 11234, "roughEstimateOfFMP": 11724, "optimisticFMP": 11626, "pessimisticFMP": 11822, "roughEstimateOfTTI": 25782, "optimisticTTI": 19603, "pessimisticTTI": 31961, "roughEstimateOfTTFCPUI": 11724, "optimisticTTFCPUI": 10882, "pessimisticTTFCPUI": 14138, "roughEstimateOfSI": 11037, "optimisticSI": 2248, "pessimisticSI": 11234, "roughEstimateOfEIL": 370, "optimisticEIL": 463, "pessimisticEIL": 463},
-    {"url": "http://www.mail.ru/", "roughEstimateOfFCP": 5150, "optimisticFCP": 5150, "pessimisticFCP": 5150, "roughEstimateOfFMP": 5150, "optimisticFMP": 5150, "pessimisticFMP": 5150, "roughEstimateOfTTI": 10964, "optimisticTTI": 9846, "pessimisticTTI": 12082, "roughEstimateOfTTFCPUI": 9846, "optimisticTTFCPUI": 9846, "pessimisticTTFCPUI": 12082, "roughEstimateOfSI": 8487, "optimisticSI": 3849, "pessimisticSI": 5150, "roughEstimateOfEIL": 38, "optimisticEIL": 48, "pessimisticEIL": 48},
+    {"url": "http://www.mail.ru/", "roughEstimateOfFCP": 5150, "optimisticFCP": 5150, "pessimisticFCP": 5150, "roughEstimateOfFMP": 5150, "optimisticFMP": 5150, "pessimisticFMP": 5150, "roughEstimateOfTTI": 11110, "optimisticTTI": 9846, "pessimisticTTI": 12375, "roughEstimateOfTTFCPUI": 9846, "optimisticTTFCPUI": 9846, "pessimisticTTFCPUI": 12375, "roughEstimateOfSI": 8487, "optimisticSI": 3849, "pessimisticSI": 5150, "roughEstimateOfEIL": 37, "optimisticEIL": 46, "pessimisticEIL": 46},
     {"url": "http://www.maktoob.com/", "roughEstimateOfFCP": 4278, "optimisticFCP": 4278, "pessimisticFCP": 4278, "roughEstimateOfFMP": 4278, "optimisticFMP": 4278, "pessimisticFMP": 4278, "roughEstimateOfTTI": 11438, "optimisticTTI": 10732, "pessimisticTTI": 12145, "roughEstimateOfTTFCPUI": 10732, "optimisticTTFCPUI": 10732, "pessimisticTTFCPUI": 12145, "roughEstimateOfSI": 5496, "optimisticSI": 2118, "pessimisticSI": 4278, "roughEstimateOfEIL": 265, "optimisticEIL": 332, "pessimisticEIL": 332},
     {"url": "http://www.marketgid.com/", "roughEstimateOfFCP": 3552, "optimisticFCP": 3552, "pessimisticFCP": 3552, "roughEstimateOfFMP": 6083, "optimisticFMP": 6083, "pessimisticFMP": 6083, "roughEstimateOfTTI": 8648, "optimisticTTI": 7823, "pessimisticTTI": 9473, "roughEstimateOfTTFCPUI": 7823, "optimisticTTFCPUI": 7823, "pessimisticTTFCPUI": 9473, "roughEstimateOfSI": 5185, "optimisticSI": 2233, "pessimisticSI": 3552, "roughEstimateOfEIL": 226, "optimisticEIL": 283, "pessimisticEIL": 283},
     {"url": "http://www.metacafe.com/", "roughEstimateOfFCP": 1848, "optimisticFCP": 1848, "pessimisticFCP": 1848, "roughEstimateOfFMP": 2048, "optimisticFMP": 2047, "pessimisticFMP": 2049, "roughEstimateOfTTI": 15342, "optimisticTTI": 13549, "pessimisticTTI": 17134, "roughEstimateOfTTFCPUI": 13549, "optimisticTTFCPUI": 13549, "pessimisticTTFCPUI": 17134, "roughEstimateOfSI": 2902, "optimisticSI": 1393, "pessimisticSI": 1848, "roughEstimateOfEIL": 361, "optimisticEIL": 451, "pessimisticEIL": 451},
-    {"url": "http://www.metrolyrics.com/", "roughEstimateOfFCP": 3155, "optimisticFCP": 3056, "pessimisticFCP": 3254, "roughEstimateOfFMP": 3155, "optimisticFMP": 3056, "pessimisticFMP": 3254, "roughEstimateOfTTI": 57192, "optimisticTTI": 39593, "pessimisticTTI": 74790, "roughEstimateOfTTFCPUI": 39593, "optimisticTTFCPUI": 39593, "pessimisticTTFCPUI": 15704, "roughEstimateOfSI": 15355, "optimisticSI": 9636, "pessimisticSI": 3254, "roughEstimateOfEIL": 1134, "optimisticEIL": 1417, "pessimisticEIL": 1417},
+    {"url": "http://www.metrolyrics.com/", "roughEstimateOfFCP": 3155, "optimisticFCP": 3056, "pessimisticFCP": 3254, "roughEstimateOfFMP": 3155, "optimisticFMP": 3056, "pessimisticFMP": 3254, "roughEstimateOfTTI": 57009, "optimisticTTI": 39449, "pessimisticTTI": 74569, "roughEstimateOfTTFCPUI": 39449, "optimisticTTFCPUI": 39449, "pessimisticTTFCPUI": 15769, "roughEstimateOfSI": 15355, "optimisticSI": 9636, "pessimisticSI": 3254, "roughEstimateOfEIL": 1134, "optimisticEIL": 1417, "pessimisticEIL": 1417},
     {"url": "http://www.mlb.com/", "roughEstimateOfFCP": 3023, "optimisticFCP": 2724, "pessimisticFCP": 3322, "roughEstimateOfFMP": 3023, "optimisticFMP": 2724, "pessimisticFMP": 3322, "roughEstimateOfTTI": 30460, "optimisticTTI": 26219, "pessimisticTTI": 34700, "roughEstimateOfTTFCPUI": 8141, "optimisticTTFCPUI": 8141, "pessimisticTTFCPUI": 8792, "roughEstimateOfSI": 7632, "optimisticSI": 4088, "pessimisticSI": 3322, "roughEstimateOfEIL": 689, "optimisticEIL": 861, "pessimisticEIL": 861},
-    {"url": "http://www.mop.com/", "roughEstimateOfFCP": 6918, "optimisticFCP": 6380, "pessimisticFCP": 7456, "roughEstimateOfFMP": 6918, "optimisticFMP": 6380, "pessimisticFMP": 7456, "roughEstimateOfTTI": 21136, "optimisticTTI": 10735, "pessimisticTTI": 31536, "roughEstimateOfTTFCPUI": 10735, "optimisticTTFCPUI": 10735, "pessimisticTTFCPUI": 3194, "roughEstimateOfSI": 10204, "optimisticSI": 4006, "pessimisticSI": 7456, "roughEstimateOfEIL": 828, "optimisticEIL": 1035, "pessimisticEIL": 1035},
+    {"url": "http://www.mop.com/", "roughEstimateOfFCP": 6918, "optimisticFCP": 6380, "pessimisticFCP": 7456, "roughEstimateOfFMP": 6918, "optimisticFMP": 6380, "pessimisticFMP": 7456, "roughEstimateOfTTI": 20936, "optimisticTTI": 10735, "pessimisticTTI": 31136, "roughEstimateOfTTFCPUI": 10735, "optimisticTTFCPUI": 10735, "pessimisticTTFCPUI": 3194, "roughEstimateOfSI": 10204, "optimisticSI": 4006, "pessimisticSI": 7456, "roughEstimateOfEIL": 828, "optimisticEIL": 1035, "pessimisticEIL": 1035},
     {"url": "http://www.mozilla.org/", "roughEstimateOfFCP": 2111, "optimisticFCP": 1755, "pessimisticFCP": 2466, "roughEstimateOfFMP": 2487, "optimisticFMP": 1755, "pessimisticFMP": 3219, "roughEstimateOfTTI": 4300, "optimisticTTI": 4150, "pessimisticTTI": 4449, "roughEstimateOfTTFCPUI": 4150, "optimisticTTFCPUI": 4150, "pessimisticTTFCPUI": 4449, "roughEstimateOfSI": 2993, "optimisticSI": 1172, "pessimisticSI": 2466, "roughEstimateOfEIL": 842, "optimisticEIL": 1053, "pessimisticEIL": 1053},
-    {"url": "http://www.msn.com/", "roughEstimateOfFCP": 2465, "optimisticFCP": 2465, "pessimisticFCP": 2465, "roughEstimateOfFMP": 2563, "optimisticFMP": 2465, "pessimisticFMP": 2661, "roughEstimateOfTTI": 11341, "optimisticTTI": 9536, "pessimisticTTI": 13147, "roughEstimateOfTTFCPUI": 9536, "optimisticTTFCPUI": 9536, "pessimisticTTFCPUI": 13147, "roughEstimateOfSI": 4081, "optimisticSI": 1949, "pessimisticSI": 2465, "roughEstimateOfEIL": 283, "optimisticEIL": 353, "pessimisticEIL": 353},
+    {"url": "http://www.msn.com/", "roughEstimateOfFCP": 2465, "optimisticFCP": 2465, "pessimisticFCP": 2465, "roughEstimateOfFMP": 2563, "optimisticFMP": 2465, "pessimisticFMP": 2661, "roughEstimateOfTTI": 11266, "optimisticTTI": 9536, "pessimisticTTI": 12996, "roughEstimateOfTTFCPUI": 9536, "optimisticTTFCPUI": 9536, "pessimisticTTFCPUI": 12996, "roughEstimateOfSI": 4081, "optimisticSI": 1949, "pessimisticSI": 2465, "roughEstimateOfEIL": 283, "optimisticEIL": 353, "pessimisticEIL": 353},
     {"url": "http://www.netflix.com/", "roughEstimateOfFCP": 2909, "optimisticFCP": 2909, "pessimisticFCP": 2909, "roughEstimateOfFMP": 2909, "optimisticFMP": 2909, "pessimisticFMP": 2909, "roughEstimateOfTTI": 6172, "optimisticTTI": 5613, "pessimisticTTI": 6731, "roughEstimateOfTTFCPUI": 5613, "optimisticTTFCPUI": 5613, "pessimisticTTFCPUI": 6731, "roughEstimateOfSI": 3620, "optimisticSI": 1413, "pessimisticSI": 2909, "roughEstimateOfEIL": 98, "optimisticEIL": 123, "pessimisticEIL": 123},
     {"url": "http://www.nih.gov/", "roughEstimateOfFCP": 4440, "optimisticFCP": 3999, "pessimisticFCP": 4882, "roughEstimateOfFMP": 4440, "optimisticFMP": 3999, "pessimisticFMP": 4882, "roughEstimateOfTTI": 6450, "optimisticTTI": 5884, "pessimisticTTI": 7016, "roughEstimateOfTTFCPUI": 5884, "optimisticTTFCPUI": 5884, "pessimisticTTFCPUI": 7016, "roughEstimateOfSI": 6852, "optimisticSI": 2807, "pessimisticSI": 4882, "roughEstimateOfEIL": 129, "optimisticEIL": 162, "pessimisticEIL": 162},
     {"url": "http://www.ning.com/", "roughEstimateOfFCP": 2711, "optimisticFCP": 2711, "pessimisticFCP": 2711, "roughEstimateOfFMP": 3004, "optimisticFMP": 3004, "pessimisticFMP": 3004, "roughEstimateOfTTI": 13436, "optimisticTTI": 11659, "pessimisticTTI": 15214, "roughEstimateOfTTFCPUI": 11659, "optimisticTTFCPUI": 11659, "pessimisticTTFCPUI": 15214, "roughEstimateOfSI": 3793, "optimisticSI": 1629, "pessimisticSI": 2711, "roughEstimateOfEIL": 274, "optimisticEIL": 343, "pessimisticEIL": 343},
-    {"url": "http://www.nokia.com/", "roughEstimateOfFCP": 5687, "optimisticFCP": 5687, "pessimisticFCP": 5687, "roughEstimateOfFMP": 5888, "optimisticFMP": 5888, "pessimisticFMP": 5888, "roughEstimateOfTTI": 12469, "optimisticTTI": 11132, "pessimisticTTI": 13806, "roughEstimateOfTTFCPUI": 11132, "optimisticTTFCPUI": 11132, "pessimisticTTFCPUI": 13806, "roughEstimateOfSI": 6343, "optimisticSI": 2069, "pessimisticSI": 5687, "roughEstimateOfEIL": 211, "optimisticEIL": 264, "pessimisticEIL": 264},
-    {"url": "http://www.ocn.ne.jp/", "roughEstimateOfFCP": 3343, "optimisticFCP": 3343, "pessimisticFCP": 3343, "roughEstimateOfFMP": 3343, "optimisticFMP": 3343, "pessimisticFMP": 3343, "roughEstimateOfTTI": 7955, "optimisticTTI": 6702, "pessimisticTTI": 9208, "roughEstimateOfTTFCPUI": 6702, "optimisticTTFCPUI": 6702, "pessimisticTTFCPUI": 9208, "roughEstimateOfSI": 5896, "optimisticSI": 2838, "pessimisticSI": 3343, "roughEstimateOfEIL": 75, "optimisticEIL": 94, "pessimisticEIL": 94},
-    {"url": "http://www.onet.pl/", "roughEstimateOfFCP": 4214, "optimisticFCP": 4062, "pessimisticFCP": 4365, "roughEstimateOfFMP": 5121, "optimisticFMP": 4970, "pessimisticFMP": 5273, "roughEstimateOfTTI": 20422, "optimisticTTI": 14282, "pessimisticTTI": 26561, "roughEstimateOfTTFCPUI": 14282, "optimisticTTFCPUI": 14282, "pessimisticTTFCPUI": 14275, "roughEstimateOfSI": 15188, "optimisticSI": 9001, "pessimisticSI": 4365, "roughEstimateOfEIL": 1150, "optimisticEIL": 1437, "pessimisticEIL": 1437},
+    {"url": "http://www.nokia.com/", "roughEstimateOfFCP": 5687, "optimisticFCP": 5687, "pessimisticFCP": 5687, "roughEstimateOfFMP": 5888, "optimisticFMP": 5888, "pessimisticFMP": 5888, "roughEstimateOfTTI": 12370, "optimisticTTI": 11132, "pessimisticTTI": 13608, "roughEstimateOfTTFCPUI": 11132, "optimisticTTFCPUI": 11132, "pessimisticTTFCPUI": 13608, "roughEstimateOfSI": 6343, "optimisticSI": 2069, "pessimisticSI": 5687, "roughEstimateOfEIL": 211, "optimisticEIL": 264, "pessimisticEIL": 264},
+    {"url": "http://www.ocn.ne.jp/", "roughEstimateOfFCP": 3343, "optimisticFCP": 3343, "pessimisticFCP": 3343, "roughEstimateOfFMP": 3343, "optimisticFMP": 3343, "pessimisticFMP": 3343, "roughEstimateOfTTI": 7695, "optimisticTTI": 6702, "pessimisticTTI": 8689, "roughEstimateOfTTFCPUI": 6702, "optimisticTTFCPUI": 6702, "pessimisticTTFCPUI": 8689, "roughEstimateOfSI": 5896, "optimisticSI": 2838, "pessimisticSI": 3343, "roughEstimateOfEIL": 75, "optimisticEIL": 93, "pessimisticEIL": 93},
+    {"url": "http://www.onet.pl/", "roughEstimateOfFCP": 4214, "optimisticFCP": 4062, "pessimisticFCP": 4365, "roughEstimateOfFMP": 5121, "optimisticFMP": 4970, "pessimisticFMP": 5273, "roughEstimateOfTTI": 18530, "optimisticTTI": 14282, "pessimisticTTI": 22779, "roughEstimateOfTTFCPUI": 14282, "optimisticTTFCPUI": 14282, "pessimisticTTFCPUI": 20592, "roughEstimateOfSI": 15188, "optimisticSI": 9001, "pessimisticSI": 4365, "roughEstimateOfEIL": 1150, "optimisticEIL": 1437, "pessimisticEIL": 1437},
     {"url": "http://www.optmd.com/", "roughEstimateOfFCP": 1065, "optimisticFCP": 960, "pessimisticFCP": 1170, "roughEstimateOfFMP": 1065, "optimisticFMP": 960, "pessimisticFMP": 1170, "roughEstimateOfTTI": 1072, "optimisticTTI": 974, "pessimisticTTI": 1170, "roughEstimateOfTTFCPUI": 1065, "optimisticTTFCPUI": 974, "pessimisticTTFCPUI": 1018, "roughEstimateOfSI": 1269, "optimisticSI": 542, "pessimisticSI": 1170, "roughEstimateOfEIL": 13, "optimisticEIL": 16, "pessimisticEIL": 16},
     {"url": "http://www.orange.fr/", "roughEstimateOfFCP": 3776, "optimisticFCP": 3219, "pessimisticFCP": 4333, "roughEstimateOfFMP": 3892, "optimisticFMP": 3219, "pessimisticFMP": 4565, "roughEstimateOfTTI": 15250, "optimisticTTI": 12350, "pessimisticTTI": 18150, "roughEstimateOfTTFCPUI": 12350, "optimisticTTFCPUI": 12350, "pessimisticTTFCPUI": 18150, "roughEstimateOfSI": 9160, "optimisticSI": 4710, "pessimisticSI": 4333, "roughEstimateOfEIL": 433, "optimisticEIL": 541, "pessimisticEIL": 541},
     {"url": "http://www.orkut.com/", "roughEstimateOfFCP": 1463, "optimisticFCP": 1420, "pessimisticFCP": 1506, "roughEstimateOfFMP": 1463, "optimisticFMP": 1420, "pessimisticFMP": 1506, "roughEstimateOfTTI": 2036, "optimisticTTI": 2036, "pessimisticTTI": 2036, "roughEstimateOfTTFCPUI": 2036, "optimisticTTFCPUI": 2036, "pessimisticTTFCPUI": 2036, "roughEstimateOfSI": 1952, "optimisticSI": 873, "pessimisticSI": 1506, "roughEstimateOfEIL": 13, "optimisticEIL": 16, "pessimisticEIL": 16},
@@ -72,32 +72,32 @@
     {"url": "http://www.pcpop.com/", "roughEstimateOfFCP": 2710, "optimisticFCP": 2710, "pessimisticFCP": 2711, "roughEstimateOfFMP": 2710, "optimisticFMP": 2710, "pessimisticFMP": 2711, "roughEstimateOfTTI": 7595, "optimisticTTI": 4791, "pessimisticTTI": 10400, "roughEstimateOfTTFCPUI": 4791, "optimisticTTFCPUI": 4791, "pessimisticTTFCPUI": 10400, "roughEstimateOfSI": 5771, "optimisticSI": 3042, "pessimisticSI": 2711, "roughEstimateOfEIL": 80, "optimisticEIL": 100, "pessimisticEIL": 100},
     {"url": "http://www.pdfqueen.com/", "roughEstimateOfFCP": 2549, "optimisticFCP": 2271, "pessimisticFCP": 2828, "roughEstimateOfFMP": 2549, "optimisticFMP": 2271, "pessimisticFMP": 2828, "roughEstimateOfTTI": 3953, "optimisticTTI": 3803, "pessimisticTTI": 4103, "roughEstimateOfTTFCPUI": 3803, "optimisticTTFCPUI": 3803, "pessimisticTTFCPUI": 4103, "roughEstimateOfSI": 2730, "optimisticSI": 816, "pessimisticSI": 2828, "roughEstimateOfEIL": 13, "optimisticEIL": 16, "pessimisticEIL": 16},
     {"url": "http://www.pptv.com/", "roughEstimateOfFCP": 2925, "optimisticFCP": 2925, "pessimisticFCP": 2925, "roughEstimateOfFMP": 2925, "optimisticFMP": 2925, "pessimisticFMP": 2925, "roughEstimateOfTTI": 8687, "optimisticTTI": 6979, "pessimisticTTI": 10394, "roughEstimateOfTTFCPUI": 6979, "optimisticTTFCPUI": 6979, "pessimisticTTFCPUI": 10394, "roughEstimateOfSI": 11800, "optimisticSI": 7249, "pessimisticSI": 2925, "roughEstimateOfEIL": 623, "optimisticEIL": 779, "pessimisticEIL": 779},
-    {"url": "http://www.rakuten.co.jp/", "roughEstimateOfFCP": 3655, "optimisticFCP": 3655, "pessimisticFCP": 3655, "roughEstimateOfFMP": 3655, "optimisticFMP": 3655, "pessimisticFMP": 3655, "roughEstimateOfTTI": 22747, "optimisticTTI": 13628, "pessimisticTTI": 31866, "roughEstimateOfTTFCPUI": 13628, "optimisticTTFCPUI": 13628, "pessimisticTTFCPUI": 20858, "roughEstimateOfSI": 5651, "optimisticSI": 2518, "pessimisticSI": 3655, "roughEstimateOfEIL": 1283, "optimisticEIL": 1604, "pessimisticEIL": 1604},
-    {"url": "http://www.rakuten.ne.jp/", "roughEstimateOfFCP": 2750, "optimisticFCP": 2686, "pessimisticFCP": 2813, "roughEstimateOfFMP": 2750, "optimisticFMP": 2686, "pessimisticFMP": 2813, "roughEstimateOfTTI": 23108, "optimisticTTI": 13257, "pessimisticTTI": 32958, "roughEstimateOfTTFCPUI": 13257, "optimisticTTFCPUI": 13257, "pessimisticTTFCPUI": 18764, "roughEstimateOfSI": 4733, "optimisticSI": 2253, "pessimisticSI": 2813, "roughEstimateOfEIL": 1719, "optimisticEIL": 2149, "pessimisticEIL": 2149},
+    {"url": "http://www.rakuten.co.jp/", "roughEstimateOfFCP": 3655, "optimisticFCP": 3655, "pessimisticFCP": 3655, "roughEstimateOfFMP": 3655, "optimisticFMP": 3655, "pessimisticFMP": 3655, "roughEstimateOfTTI": 22747, "optimisticTTI": 13628, "pessimisticTTI": 31866, "roughEstimateOfTTFCPUI": 13628, "optimisticTTFCPUI": 13628, "pessimisticTTFCPUI": 20656, "roughEstimateOfSI": 5651, "optimisticSI": 2518, "pessimisticSI": 3655, "roughEstimateOfEIL": 1283, "optimisticEIL": 1604, "pessimisticEIL": 1604},
+    {"url": "http://www.rakuten.ne.jp/", "roughEstimateOfFCP": 2750, "optimisticFCP": 2686, "pessimisticFCP": 2813, "roughEstimateOfFMP": 2750, "optimisticFMP": 2686, "pessimisticFMP": 2813, "roughEstimateOfTTI": 23209, "optimisticTTI": 13257, "pessimisticTTI": 33161, "roughEstimateOfTTFCPUI": 13257, "optimisticTTFCPUI": 13257, "pessimisticTTFCPUI": 18534, "roughEstimateOfSI": 4733, "optimisticSI": 2253, "pessimisticSI": 2813, "roughEstimateOfEIL": 1719, "optimisticEIL": 2149, "pessimisticEIL": 2149},
     {"url": "http://www.scribd.com/", "roughEstimateOfFCP": 2622, "optimisticFCP": 2622, "pessimisticFCP": 2622, "roughEstimateOfFMP": 3810, "optimisticFMP": 3810, "pessimisticFMP": 3810, "roughEstimateOfTTI": 12577, "optimisticTTI": 11222, "pessimisticTTI": 13931, "roughEstimateOfTTFCPUI": 11222, "optimisticTTFCPUI": 11222, "pessimisticTTFCPUI": 13931, "roughEstimateOfSI": 3776, "optimisticSI": 1658, "pessimisticSI": 2622, "roughEstimateOfEIL": 833, "optimisticEIL": 1041, "pessimisticEIL": 1041},
     {"url": "http://www.shopping.com/", "roughEstimateOfFCP": 2287, "optimisticFCP": 2287, "pessimisticFCP": 2287, "roughEstimateOfFMP": 2287, "optimisticFMP": 2287, "pessimisticFMP": 2287, "roughEstimateOfTTI": 2595, "optimisticTTI": 2432, "pessimisticTTI": 2758, "roughEstimateOfTTFCPUI": 2432, "optimisticTTFCPUI": 2432, "pessimisticTTFCPUI": 2758, "roughEstimateOfSI": 2499, "optimisticSI": 902, "pessimisticSI": 2287, "roughEstimateOfEIL": 13, "optimisticEIL": 16, "pessimisticEIL": 16},
-    {"url": "http://www.skype.com/", "roughEstimateOfFCP": 4362, "optimisticFCP": 4362, "pessimisticFCP": 4362, "roughEstimateOfFMP": 4362, "optimisticFMP": 4362, "pessimisticFMP": 4362, "roughEstimateOfTTI": 7554, "optimisticTTI": 6470, "pessimisticTTI": 8638, "roughEstimateOfTTFCPUI": 6470, "optimisticTTFCPUI": 6470, "pessimisticTTFCPUI": 8638, "roughEstimateOfSI": 5568, "optimisticSI": 2131, "pessimisticSI": 4362, "roughEstimateOfEIL": 111, "optimisticEIL": 139, "pessimisticEIL": 139},
+    {"url": "http://www.skype.com/", "roughEstimateOfFCP": 4362, "optimisticFCP": 4362, "pessimisticFCP": 4362, "roughEstimateOfFMP": 4362, "optimisticFMP": 4362, "pessimisticFMP": 4362, "roughEstimateOfTTI": 7454, "optimisticTTI": 6470, "pessimisticTTI": 8438, "roughEstimateOfTTFCPUI": 6470, "optimisticTTFCPUI": 6470, "pessimisticTTFCPUI": 8438, "roughEstimateOfSI": 5568, "optimisticSI": 2131, "pessimisticSI": 4362, "roughEstimateOfEIL": 111, "optimisticEIL": 139, "pessimisticEIL": 139},
     {"url": "http://www.so-net.ne.jp/", "roughEstimateOfFCP": 4713, "optimisticFCP": 3769, "pessimisticFCP": 5658, "roughEstimateOfFMP": 4713, "optimisticFMP": 3769, "pessimisticFMP": 5658, "roughEstimateOfTTI": 12178, "optimisticTTI": 10944, "pessimisticTTI": 13411, "roughEstimateOfTTFCPUI": 10944, "optimisticTTFCPUI": 10944, "pessimisticTTFCPUI": 13411, "roughEstimateOfSI": 8667, "optimisticSI": 3742, "pessimisticSI": 5658, "roughEstimateOfEIL": 1798, "optimisticEIL": 2248, "pessimisticEIL": 2248},
-    {"url": "http://www.softonic.com/", "roughEstimateOfFCP": 3900, "optimisticFCP": 3900, "pessimisticFCP": 3900, "roughEstimateOfFMP": 3900, "optimisticFMP": 3900, "pessimisticFMP": 3900, "roughEstimateOfTTI": 18165, "optimisticTTI": 16989, "pessimisticTTI": 19341, "roughEstimateOfTTFCPUI": 16989, "optimisticTTFCPUI": 16989, "pessimisticTTFCPUI": 19341, "roughEstimateOfSI": 14579, "optimisticSI": 8782, "pessimisticSI": 3900, "roughEstimateOfEIL": 329, "optimisticEIL": 411, "pessimisticEIL": 411},
+    {"url": "http://www.softonic.com/", "roughEstimateOfFCP": 3900, "optimisticFCP": 3900, "pessimisticFCP": 3900, "roughEstimateOfFMP": 3900, "optimisticFMP": 3900, "pessimisticFMP": 3900, "roughEstimateOfTTI": 18057, "optimisticTTI": 16989, "pessimisticTTI": 19125, "roughEstimateOfTTFCPUI": 16989, "optimisticTTFCPUI": 16989, "pessimisticTTFCPUI": 19125, "roughEstimateOfSI": 14579, "optimisticSI": 8782, "pessimisticSI": 3900, "roughEstimateOfEIL": 351, "optimisticEIL": 439, "pessimisticEIL": 439},
     {"url": "http://www.sogou.com/", "roughEstimateOfFCP": 2804, "optimisticFCP": 2804, "pessimisticFCP": 2804, "roughEstimateOfFMP": 2804, "optimisticFMP": 2804, "pessimisticFMP": 2804, "roughEstimateOfTTI": 5086, "optimisticTTI": 4122, "pessimisticTTI": 6050, "roughEstimateOfTTFCPUI": 4122, "optimisticTTFCPUI": 4122, "pessimisticTTFCPUI": 6050, "roughEstimateOfSI": 6731, "optimisticSI": 3684, "pessimisticSI": 2804, "roughEstimateOfEIL": 261, "optimisticEIL": 326, "pessimisticEIL": 326},
     {"url": "http://www.soso.com/", "roughEstimateOfFCP": 2211, "optimisticFCP": 2090, "pessimisticFCP": 2333, "roughEstimateOfFMP": 2211, "optimisticFMP": 2090, "pessimisticFMP": 2333, "roughEstimateOfTTI": 6223, "optimisticTTI": 4540, "pessimisticTTI": 7906, "roughEstimateOfTTFCPUI": 4540, "optimisticTTFCPUI": 4540, "pessimisticTTFCPUI": 5672, "roughEstimateOfSI": 4821, "optimisticSI": 2539, "pessimisticSI": 2333, "roughEstimateOfEIL": 434, "optimisticEIL": 543, "pessimisticEIL": 543},
     {"url": "http://www.symantec.com/", "roughEstimateOfFCP": 4183, "optimisticFCP": 4183, "pessimisticFCP": 4183, "roughEstimateOfFMP": 4183, "optimisticFMP": 4183, "pessimisticFMP": 4183, "roughEstimateOfTTI": 17098, "optimisticTTI": 13508, "pessimisticTTI": 20688, "roughEstimateOfTTFCPUI": 13508, "optimisticTTFCPUI": 13508, "pessimisticTTFCPUI": 20688, "roughEstimateOfSI": 7229, "optimisticSI": 3400, "pessimisticSI": 4183, "roughEstimateOfEIL": 2678, "optimisticEIL": 3348, "pessimisticEIL": 3348},
-    {"url": "http://www.t-online.de/", "roughEstimateOfFCP": 4728, "optimisticFCP": 4365, "pessimisticFCP": 5091, "roughEstimateOfFMP": 5759, "optimisticFMP": 4365, "pessimisticFMP": 7153, "roughEstimateOfTTI": 25870, "optimisticTTI": 23649, "pessimisticTTI": 28090, "roughEstimateOfTTFCPUI": 23649, "optimisticTTFCPUI": 23649, "pessimisticTTFCPUI": 28090, "roughEstimateOfSI": 9735, "optimisticSI": 4768, "pessimisticSI": 5091, "roughEstimateOfEIL": 397, "optimisticEIL": 497, "pessimisticEIL": 497},
-    {"url": "http://www.tabelog.com/", "roughEstimateOfFCP": 4037, "optimisticFCP": 3223, "pessimisticFCP": 4851, "roughEstimateOfFMP": 4037, "optimisticFMP": 3223, "pessimisticFMP": 4851, "roughEstimateOfTTI": 13232, "optimisticTTI": 10615, "pessimisticTTI": 15849, "roughEstimateOfTTFCPUI": 10615, "optimisticTTFCPUI": 10615, "pessimisticTTFCPUI": 15849, "roughEstimateOfSI": 11052, "optimisticSI": 5820, "pessimisticSI": 4851, "roughEstimateOfEIL": 418, "optimisticEIL": 522, "pessimisticEIL": 522},
-    {"url": "http://www.thefreedictionary.com/", "roughEstimateOfFCP": 1696, "optimisticFCP": 1696, "pessimisticFCP": 1696, "roughEstimateOfFMP": 1696, "optimisticFMP": 1696, "pessimisticFMP": 1696, "roughEstimateOfTTI": 21979, "optimisticTTI": 17974, "pessimisticTTI": 25983, "roughEstimateOfTTFCPUI": 17974, "optimisticTTFCPUI": 17974, "pessimisticTTFCPUI": 18220, "roughEstimateOfSI": 3323, "optimisticSI": 1765, "pessimisticSI": 1696, "roughEstimateOfEIL": 523, "optimisticEIL": 654, "pessimisticEIL": 654},
-    {"url": "http://www.thepiratebay.org/", "roughEstimateOfFCP": 3239, "optimisticFCP": 3239, "pessimisticFCP": 3239, "roughEstimateOfFMP": 3239, "optimisticFMP": 3239, "pessimisticFMP": 3239, "roughEstimateOfTTI": 5377, "optimisticTTI": 5002, "pessimisticTTI": 5752, "roughEstimateOfTTFCPUI": 5002, "optimisticTTFCPUI": 5002, "pessimisticTTFCPUI": 5752, "roughEstimateOfSI": 11137, "optimisticSI": 6630, "pessimisticSI": 3239, "roughEstimateOfEIL": 85, "optimisticEIL": 106, "pessimisticEIL": 106},
+    {"url": "http://www.t-online.de/", "roughEstimateOfFCP": 4728, "optimisticFCP": 4365, "pessimisticFCP": 5091, "roughEstimateOfFMP": 5759, "optimisticFMP": 4365, "pessimisticFMP": 7153, "roughEstimateOfTTI": 25846, "optimisticTTI": 23649, "pessimisticTTI": 28044, "roughEstimateOfTTFCPUI": 23649, "optimisticTTFCPUI": 23649, "pessimisticTTFCPUI": 28044, "roughEstimateOfSI": 9735, "optimisticSI": 4768, "pessimisticSI": 5091, "roughEstimateOfEIL": 397, "optimisticEIL": 497, "pessimisticEIL": 497},
+    {"url": "http://www.tabelog.com/", "roughEstimateOfFCP": 4037, "optimisticFCP": 3223, "pessimisticFCP": 4851, "roughEstimateOfFMP": 4037, "optimisticFMP": 3223, "pessimisticFMP": 4851, "roughEstimateOfTTI": 13318, "optimisticTTI": 10615, "pessimisticTTI": 16022, "roughEstimateOfTTFCPUI": 10615, "optimisticTTFCPUI": 10615, "pessimisticTTFCPUI": 16022, "roughEstimateOfSI": 11052, "optimisticSI": 5820, "pessimisticSI": 4851, "roughEstimateOfEIL": 418, "optimisticEIL": 522, "pessimisticEIL": 522},
+    {"url": "http://www.thefreedictionary.com/", "roughEstimateOfFCP": 1696, "optimisticFCP": 1696, "pessimisticFCP": 1696, "roughEstimateOfFMP": 1696, "optimisticFMP": 1696, "pessimisticFMP": 1696, "roughEstimateOfTTI": 21885, "optimisticTTI": 17974, "pessimisticTTI": 25796, "roughEstimateOfTTFCPUI": 17974, "optimisticTTFCPUI": 17974, "pessimisticTTFCPUI": 18209, "roughEstimateOfSI": 3323, "optimisticSI": 1765, "pessimisticSI": 1696, "roughEstimateOfEIL": 523, "optimisticEIL": 654, "pessimisticEIL": 654},
+    {"url": "http://www.thepiratebay.org/", "roughEstimateOfFCP": 3239, "optimisticFCP": 3239, "pessimisticFCP": 3239, "roughEstimateOfFMP": 3239, "optimisticFMP": 3239, "pessimisticFMP": 3239, "roughEstimateOfTTI": 5227, "optimisticTTI": 5002, "pessimisticTTI": 5452, "roughEstimateOfTTFCPUI": 5002, "optimisticTTFCPUI": 5002, "pessimisticTTFCPUI": 5452, "roughEstimateOfSI": 11137, "optimisticSI": 6630, "pessimisticSI": 3239, "roughEstimateOfEIL": 85, "optimisticEIL": 106, "pessimisticEIL": 106},
     {"url": "http://www.thestar.com.my", "roughEstimateOfFCP": 5944, "optimisticFCP": 5774, "pessimisticFCP": 6114, "roughEstimateOfFMP": 6531, "optimisticFMP": 5960, "pessimisticFMP": 7101, "roughEstimateOfTTI": 14839, "optimisticTTI": 11719, "pessimisticTTI": 17959, "roughEstimateOfTTFCPUI": 11719, "optimisticTTFCPUI": 11719, "pessimisticTTFCPUI": 17959, "roughEstimateOfSI": 11724, "optimisticSI": 5714, "pessimisticSI": 6114, "roughEstimateOfEIL": 275, "optimisticEIL": 344, "pessimisticEIL": 344},
-    {"url": "http://www.tianya.cn/", "roughEstimateOfFCP": 2328, "optimisticFCP": 2326, "pessimisticFCP": 2331, "roughEstimateOfFMP": 2328, "optimisticFMP": 2326, "pessimisticFMP": 2331, "roughEstimateOfTTI": 6999, "optimisticTTI": 6062, "pessimisticTTI": 7936, "roughEstimateOfTTFCPUI": 6062, "optimisticTTFCPUI": 6062, "pessimisticTTFCPUI": 7936, "roughEstimateOfSI": 9571, "optimisticSI": 5933, "pessimisticSI": 2331, "roughEstimateOfEIL": 2076, "optimisticEIL": 2595, "pessimisticEIL": 2595},
+    {"url": "http://www.tianya.cn/", "roughEstimateOfFCP": 2328, "optimisticFCP": 2326, "pessimisticFCP": 2331, "roughEstimateOfFMP": 2328, "optimisticFMP": 2326, "pessimisticFMP": 2331, "roughEstimateOfTTI": 6909, "optimisticTTI": 6062, "pessimisticTTI": 7756, "roughEstimateOfTTFCPUI": 6062, "optimisticTTFCPUI": 6062, "pessimisticTTFCPUI": 7756, "roughEstimateOfSI": 9571, "optimisticSI": 5933, "pessimisticSI": 2331, "roughEstimateOfEIL": 2076, "optimisticEIL": 2595, "pessimisticEIL": 2595},
     {"url": "http://www.torrentz.com/", "roughEstimateOfFCP": 605, "optimisticFCP": 605, "pessimisticFCP": 605, "roughEstimateOfFMP": 605, "optimisticFMP": 605, "pessimisticFMP": 605, "roughEstimateOfTTI": 995, "optimisticTTI": 972, "pessimisticTTI": 1017, "roughEstimateOfTTFCPUI": 972, "optimisticTTFCPUI": 972, "pessimisticTTFCPUI": 1067, "roughEstimateOfSI": 1225, "optimisticSI": 773, "pessimisticSI": 605, "roughEstimateOfEIL": 13, "optimisticEIL": 16, "pessimisticEIL": 16},
     {"url": "http://www.tumblr.com/", "roughEstimateOfFCP": 3569, "optimisticFCP": 3569, "pessimisticFCP": 3569, "roughEstimateOfFMP": 3569, "optimisticFMP": 3569, "pessimisticFMP": 3569, "roughEstimateOfTTI": 11811, "optimisticTTI": 11516, "pessimisticTTI": 12106, "roughEstimateOfTTFCPUI": 11516, "optimisticTTFCPUI": 11516, "pessimisticTTFCPUI": 12106, "roughEstimateOfSI": 3861, "optimisticSI": 1280, "pessimisticSI": 3569, "roughEstimateOfEIL": 2035, "optimisticEIL": 2544, "pessimisticEIL": 2544},
     {"url": "http://www.twitpic.com/", "roughEstimateOfFCP": 2177, "optimisticFCP": 2177, "pessimisticFCP": 2177, "roughEstimateOfFMP": 6139, "optimisticFMP": 6139, "pessimisticFMP": 6139, "roughEstimateOfTTI": 7864, "optimisticTTI": 7789, "pessimisticTTI": 7939, "roughEstimateOfTTFCPUI": 7789, "optimisticTTFCPUI": 7789, "pessimisticTTFCPUI": 7939, "roughEstimateOfSI": 3168, "optimisticSI": 1431, "pessimisticSI": 2177, "roughEstimateOfEIL": 981, "optimisticEIL": 1226, "pessimisticEIL": 1226},
     {"url": "http://www.typepad.com/", "roughEstimateOfFCP": 3182, "optimisticFCP": 2126, "pessimisticFCP": 4238, "roughEstimateOfFMP": 3343, "optimisticFMP": 2447, "pessimisticFMP": 4238, "roughEstimateOfTTI": 4421, "optimisticTTI": 3726, "pessimisticTTI": 5117, "roughEstimateOfTTFCPUI": 3726, "optimisticTTFCPUI": 3726, "pessimisticTTFCPUI": 5117, "roughEstimateOfSI": 3852, "optimisticSI": 962, "pessimisticSI": 4238, "roughEstimateOfEIL": 108, "optimisticEIL": 16, "pessimisticEIL": 253},
     {"url": "http://www.verizonwireless.com/", "roughEstimateOfFCP": 2901, "optimisticFCP": 2901, "pessimisticFCP": 2901, "roughEstimateOfFMP": 3654, "optimisticFMP": 3654, "pessimisticFMP": 3654, "roughEstimateOfTTI": 16050, "optimisticTTI": 13945, "pessimisticTTI": 18155, "roughEstimateOfTTFCPUI": 13945, "optimisticTTFCPUI": 13945, "pessimisticTTFCPUI": 18155, "roughEstimateOfSI": 3827, "optimisticSI": 1565, "pessimisticSI": 2901, "roughEstimateOfEIL": 931, "optimisticEIL": 1164, "pessimisticEIL": 1164},
     {"url": "http://www.vevo.com/", "roughEstimateOfFCP": 2261, "optimisticFCP": 2261, "pessimisticFCP": 2261, "roughEstimateOfFMP": 3118, "optimisticFMP": 3118, "pessimisticFMP": 3118, "roughEstimateOfTTI": 24456, "optimisticTTI": 19423, "pessimisticTTI": 29489, "roughEstimateOfTTFCPUI": 19423, "optimisticTTFCPUI": 19423, "pessimisticTTFCPUI": 20335, "roughEstimateOfSI": 4464, "optimisticSI": 2318, "pessimisticSI": 2261, "roughEstimateOfEIL": 2218, "optimisticEIL": 2772, "pessimisticEIL": 2772},
-    {"url": "http://www.weather.com/", "roughEstimateOfFCP": 3726, "optimisticFCP": 3726, "pessimisticFCP": 3726, "roughEstimateOfFMP": 3726, "optimisticFMP": 3726, "pessimisticFMP": 3726, "roughEstimateOfTTI": 28454, "optimisticTTI": 25240, "pessimisticTTI": 31668, "roughEstimateOfTTFCPUI": 25240, "optimisticTTFCPUI": 25240, "pessimisticTTFCPUI": 17090, "roughEstimateOfSI": 6665, "optimisticSI": 3209, "pessimisticSI": 3726, "roughEstimateOfEIL": 2102, "optimisticEIL": 2627, "pessimisticEIL": 2627},
+    {"url": "http://www.weather.com/", "roughEstimateOfFCP": 3726, "optimisticFCP": 3726, "pessimisticFCP": 3726, "roughEstimateOfFMP": 3726, "optimisticFMP": 3726, "pessimisticFMP": 3726, "roughEstimateOfTTI": 28679, "optimisticTTI": 25240, "pessimisticTTI": 32118, "roughEstimateOfTTFCPUI": 25240, "optimisticTTFCPUI": 25240, "pessimisticTTFCPUI": 32118, "roughEstimateOfSI": 6665, "optimisticSI": 3209, "pessimisticSI": 3726, "roughEstimateOfEIL": 2102, "optimisticEIL": 2627, "pessimisticEIL": 2627},
     {"url": "http://www.wikipedia.org/", "roughEstimateOfFCP": 1234, "optimisticFCP": 1234, "pessimisticFCP": 1234, "roughEstimateOfFMP": 1234, "optimisticFMP": 1234, "pessimisticFMP": 1234, "roughEstimateOfTTI": 4416, "optimisticTTI": 4370, "pessimisticTTI": 4461, "roughEstimateOfTTFCPUI": 4370, "optimisticTTFCPUI": 4370, "pessimisticTTFCPUI": 4461, "roughEstimateOfSI": 2494, "optimisticSI": 1387, "pessimisticSI": 1234, "roughEstimateOfEIL": 1682, "optimisticEIL": 2102, "pessimisticEIL": 2102},
     {"url": "http://www.ynet.com/", "roughEstimateOfFCP": 2344, "optimisticFCP": 2344, "pessimisticFCP": 2344, "roughEstimateOfFMP": 2344, "optimisticFMP": 2344, "pessimisticFMP": 2344, "roughEstimateOfTTI": 8096, "optimisticTTI": 4413, "pessimisticTTI": 11780, "roughEstimateOfTTFCPUI": 4413, "optimisticTTFCPUI": 4413, "pessimisticTTFCPUI": 7713, "roughEstimateOfSI": 5079, "optimisticSI": 2718, "pessimisticSI": 2344, "roughEstimateOfEIL": 152, "optimisticEIL": 190, "pessimisticEIL": 190},
     {"url": "http://www.youdao.com/", "roughEstimateOfFCP": 3063, "optimisticFCP": 3063, "pessimisticFCP": 3063, "roughEstimateOfFMP": 3063, "optimisticFMP": 3063, "pessimisticFMP": 3063, "roughEstimateOfTTI": 3063, "optimisticTTI": 3063, "pessimisticTTI": 3063, "roughEstimateOfTTFCPUI": 3063, "optimisticTTFCPUI": 1531, "pessimisticTTFCPUI": 1577, "roughEstimateOfSI": 6467, "optimisticSI": 3376, "pessimisticSI": 3063, "roughEstimateOfEIL": 13, "optimisticEIL": 16, "pessimisticEIL": 16},
-    {"url": "http://www.zol.com.cn/", "roughEstimateOfFCP": 3008, "optimisticFCP": 2109, "pessimisticFCP": 3907, "roughEstimateOfFMP": 3008, "optimisticFMP": 2109, "pessimisticFMP": 3907, "roughEstimateOfTTI": 10341, "optimisticTTI": 6545, "pessimisticTTI": 14136, "roughEstimateOfTTFCPUI": 6545, "optimisticTTFCPUI": 6545, "pessimisticTTFCPUI": 8740, "roughEstimateOfSI": 14233, "optimisticSI": 8531, "pessimisticSI": 3907, "roughEstimateOfEIL": 249, "optimisticEIL": 83, "pessimisticEIL": 539}
+    {"url": "http://www.zol.com.cn/", "roughEstimateOfFCP": 3008, "optimisticFCP": 2109, "pessimisticFCP": 3907, "roughEstimateOfFMP": 3008, "optimisticFMP": 2109, "pessimisticFMP": 3907, "roughEstimateOfTTI": 10292, "optimisticTTI": 6545, "pessimisticTTI": 14039, "roughEstimateOfTTFCPUI": 6545, "optimisticTTFCPUI": 6545, "pessimisticTTFCPUI": 8704, "roughEstimateOfSI": 14233, "optimisticSI": 8531, "pessimisticSI": 3907, "roughEstimateOfEIL": 249, "optimisticEIL": 83, "pessimisticEIL": 539}
   ]
 }
\ No newline at end of file
diff --git a/lighthouse-core/test/gather/gather-runner-test.js b/lighthouse-core/test/gather/gather-runner-test.js
index 8a504ca04..993352e93 100644
--- a/lighthouse-core/test/gather/gather-runner-test.js
+++ b/lighthouse-core/test/gather/gather-runner-test.js
@@ -234,6 +234,38 @@ describe('GatherRunner', function() {
     });
   });
 
+  describe('collects HostFormFactor as an artifact', () => {
+    const requestedUrl = 'https://example.com';
+
+    function test(name, userAgent, expectedValue) {
+      it(name, async () => {
+        const driver = Object.assign({}, fakeDriver, {
+          getBrowserVersion() {
+            return Promise.resolve({userAgent: userAgent});
+          },
+        });
+        const config = new Config({
+          passes: [],
+          settings: {},
+        });
+        const options = {requestedUrl, driver, settings: config.settings};
+
+        const results = await GatherRunner.run(config.passes, options);
+        expect(results.HostFormFactor).toBe(expectedValue);
+      });
+    }
+
+    /* eslint-disable max-len */
+    const IOS_UA = 'Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_2 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) OPiOS/10.2.0.93022 Mobile/11D257 Safari/9537.53';
+    const ANDROID_UA = 'Mozilla/5.0 (Linux; U; Android 4.4.2; en-us; SCH-I535 Build/KOT49H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30';
+    const DESKTOP_UA = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36';
+    /* eslint-enable max-len */
+
+    test('works when running on mobile device', IOS_UA, 'mobile');
+    test('works when running on android device', ANDROID_UA, 'mobile');
+    test('works when running on desktop device', DESKTOP_UA, 'desktop');
+  });
+
   it('sets up the driver to begin emulation when all emulation flags are undefined', () => {
     const tests = {
       calledDeviceEmulation: false,
diff --git a/lighthouse-core/test/lib/dependency-graph/simulator/simulator-test.js b/lighthouse-core/test/lib/dependency-graph/simulator/simulator-test.js
index 808e89ec8..0e3a9c27d 100644
--- a/lighthouse-core/test/lib/dependency-graph/simulator/simulator-test.js
+++ b/lighthouse-core/test/lib/dependency-graph/simulator/simulator-test.js
@@ -118,6 +118,24 @@ describe('DependencyGraph/Simulator', () => {
       assertNodeTiming(result, nodeB, {startTime: 8, endTime: 16});
     });
 
+    it('should simulate data URL network graphs', () => {
+      const url = 'data:image/jpeg;base64,foobar';
+      const protocol = 'data';
+      const parsedURL = {scheme: 'data', host: '', securityOrigin: 'null'};
+      const nodeA = new NetworkNode(request({startTime: 0, endTime: 1, url, parsedURL, protocol}));
+      const nodeB = new NetworkNode(request({startTime: 0, endTime: 3, url, parsedURL, protocol,
+        resourceSize: 1024 * 1024}));
+      nodeA.addDependent(nodeB);
+
+      const simulator = new Simulator({serverResponseTimeByOrigin});
+      const result = simulator.simulate(nodeA);
+
+      // should be ~2ms for A (resourceSize 0), ~12ms for B (resourceSize 1MB)
+      assert.equal(result.timeInMs, 14);
+      assertNodeTiming(result, nodeA, {startTime: 0, endTime: 2});
+      assertNodeTiming(result, nodeB, {startTime: 2, endTime: 14});
+    });
+
     it('should simulate basic CPU queue graphs', () => {
       const nodeA = new NetworkNode(request({}));
       const nodeB = new CpuNode(cpuTask({duration: 100}));
@@ -260,20 +278,20 @@ describe('DependencyGraph/Simulator', () => {
     describe('on a real trace', () => {
       const trace = require('../../../fixtures/traces/progressive-app-m60.json');
       const devtoolsLog = require('../../../fixtures/traces/progressive-app-m60.devtools.log.json');
-      let result;
 
-      beforeAll(async () => {
+      it('should compute a timeInMs', async () => {
         const computedCache = new Map();
         const graph = await PageDependencyGraph.request({trace, devtoolsLog}, {computedCache});
         const simulator = new Simulator({serverResponseTimeByOrigin});
-        result = simulator.simulate(graph);
-      });
-
-      it('should compute a timeInMs', () => {
+        const result = simulator.simulate(graph);
         expect(result.timeInMs).toBeGreaterThan(100);
       });
 
-      it('should sort the task event times', () => {
+      it('should sort the task event times', async () => {
+        const computedCache = new Map();
+        const graph = await PageDependencyGraph.request({trace, devtoolsLog}, {computedCache});
+        const simulator = new Simulator({serverResponseTimeByOrigin});
+        const result = simulator.simulate(graph);
         const nodeTimings = Array.from(result.nodeTimings.entries());
 
         for (let i = 1; i < nodeTimings.length; i++) {
diff --git a/lighthouse-core/test/results/artifacts/artifacts.json b/lighthouse-core/test/results/artifacts/artifacts.json
index 3dae70540..26713ecbc 100644
--- a/lighthouse-core/test/results/artifacts/artifacts.json
+++ b/lighthouse-core/test/results/artifacts/artifacts.json
@@ -1,6 +1,7 @@
 {
   "LighthouseRunWarnings": [],
   "BenchmarkIndex": 1000,
+  "HostFormFactor": "desktop",
   "TestedAsMobileDevice": true,
   "HostUserAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3358.0 Safari/537.36",
   "NetworkUserAgent": "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5 Build/MRA58N) AppleWebKit/537.36(KHTML, like Gecko) Chrome/66.0.3359.30 Mobile Safari/537.36",
@@ -346,6 +347,7 @@
       "requestId": "75994.22"
     }
   ],
+  "JsUsage": [],
   "CSSUsage": {
     "rules": [
       {
diff --git a/lighthouse-core/test/results/sample_v2.json b/lighthouse-core/test/results/sample_v2.json
index ecdf38244..a96b1b6ad 100644
--- a/lighthouse-core/test/results/sample_v2.json
+++ b/lighthouse-core/test/results/sample_v2.json
@@ -2569,6 +2569,22 @@
         "overallSavingsBytes": 0
       }
     },
+    "unused-javascript": {
+      "id": "unused-javascript",
+      "title": "Remove unused JavaScript",
+      "description": "Remove unused JavaScript to reduce bytes consumed by network activity. [Learn more](https://developers.google.com/web/fundamentals/performance/optimizing-javascript/code-splitting).",
+      "score": 1,
+      "scoreDisplayMode": "numeric",
+      "numericValue": 0,
+      "displayValue": "",
+      "details": {
+        "type": "opportunity",
+        "headings": [],
+        "items": [],
+        "overallSavingsMs": 0,
+        "overallSavingsBytes": 0
+      }
+    },
     "uses-webp-images": {
       "id": "uses-webp-images",
       "title": "Serve images in next-gen formats",
@@ -3532,6 +3548,11 @@
           "weight": 0,
           "group": "load-opportunities"
         },
+        {
+          "id": "unused-javascript",
+          "weight": 0,
+          "group": "load-opportunities"
+        },
         {
           "id": "uses-optimized-images",
           "weight": 0,
@@ -5078,6 +5099,12 @@
         "duration": 100,
         "entryType": "measure"
       },
+      {
+        "startTime": 0,
+        "name": "lh:audit:unused-javascript",
+        "duration": 100,
+        "entryType": "measure"
+      },
       {
         "startTime": 0,
         "name": "lh:audit:uses-webp-images",
@@ -6158,6 +6185,12 @@
       "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": [
         "audits[unused-css-rules].description"
       ],
+      "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": [
+        "audits[unused-javascript].title"
+      ],
+      "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": [
+        "audits[unused-javascript].description"
+      ],
       "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": [
         "audits[uses-webp-images].title"
       ],