# Stats from current release

Default Server Mode (Decrease detected ✓)

General Overall decrease ✓

|  | zeit/next.js canary v9.1.7 | zeit/next.js refs/tags/v9.1.8-canary.15 | Change |
| - | - | - | - |
| buildDuration | 14.3s | 14.3s | ⚠ +82ms |
| nodeModulesSize | 49 MB | 49 MB | -22 B |

Client Bundles (main, webpack, commons) Overall decrease ✓

|  | zeit/next.js canary v9.1.7 | zeit/next.js refs/tags/v9.1.8-canary.15 | Change |
| - | - | - | - |
| main-HASH.js gzip | 6.43 kB | 5.12 kB | -1.31 kB |
| webpack-HASH.js gzip | 746 B | 746 B | ✓ |
| 4952ddcd88e7..54d3.js gzip | 4.68 kB | 4.68 kB | ✓ |
| commons.HASH.js gzip | 4.06 kB | 4.06 kB | ✓ |
| de003c3a9d30..6ef5.js gzip | 13.8 kB | 13.7 kB | -133 B |
| framework.HASH.js gzip | 39.5 kB | 39.1 kB | -311 B |
| Overall change | 69.2 kB | 67.5 kB | -1.76 kB |

Client Bundles (main, webpack, commons) Modern Overall decrease ✓

|  | zeit/next.js canary v9.1.7 | zeit/next.js refs/tags/v9.1.8-canary.15 | Change |
| - | - | - | - |
| main-HASH.module.js gzip | 5.41 kB | 4.18 kB | -1.24 kB |
| webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
| 4952ddcd88e7..dule.js gzip | 5.56 kB | 5.56 kB | ✓ |
| de003c3a9d30..dule.js gzip | 12.6 kB | 12.5 kB | -113 B |
| framework.HA..dule.js gzip | 39.4 kB | 39.1 kB | -310 B |
| Overall change | 63.7 kB | 62.1 kB | -1.66 kB |

Legacy Client Bundles (polyfills)

|  | zeit/next.js canary v9.1.7 | zeit/next.js refs/tags/v9.1.8-canary.15 | Change |
| - | - | - | - |
| polyfills-HASH.js gzip | 4.76 kB | 4.76 kB | ✓ |
| Overall change | 4.76 kB | 4.76 kB | ✓ |

Client Pages Overall decrease ✓

|  | zeit/next.js canary v9.1.7 | zeit/next.js refs/tags/v9.1.8-canary.15 | Change |
| - | - | - | - |
| _app.js gzip | 1.33 kB | 1.33 kB | ✓ |
| _error.js gzip | 4.07 kB | 4.07 kB | ✓ |
| hooks.js gzip | 779 B | 779 B | ✓ |
| index.js gzip | 222 B | 222 B | ✓ |
| link.js gzip | 2.93 kB | 2.9 kB | -28 B |
| routerDirect.js gzip | 283 B | 283 B | ✓ |
| withRouter.js gzip | 282 B | 282 B | ✓ |
| Overall change | 9.89 kB | 9.87 kB | -28 B |

Client Pages Modern Overall decrease ✓

|  | zeit/next.js canary v9.1.7 | zeit/next.js refs/tags/v9.1.8-canary.15 | Change |
| - | - | - | - |
| _app.module.js gzip | 757 B | 757 B | ✓ |
| _error.module.js gzip | 3.06 kB | 3.06 kB | ✓ |
| hooks.module.js gzip | 371 B | 371 B | ✓ |
| index.module.js gzip | 212 B | 212 B | ✓ |
| link.module.js gzip | 2.49 kB | 2.47 kB | -22 B |
| routerDirect..dule.js gzip | 273 B | 273 B | ✓ |
| withRouter.m..dule.js gzip | 272 B | 272 B | ✓ |
| Overall change | 7.43 kB | 7.41 kB | -22 B |

Client Build Manifests

|  | zeit/next.js canary v9.1.7 | zeit/next.js refs/tags/v9.1.8-canary.15 | Change |
| - | - | - | - |
| _buildManifest.js gzip | 61 B | 61 B | ✓ |
| _buildManife..dule.js gzip | 61 B | 61 B | ✓ |
| Overall change | 122 B | 122 B | ✓ |

Rendered Page Sizes Overall decrease ✓

|  | zeit/next.js canary v9.1.7 | zeit/next.js refs/tags/v9.1.8-canary.15 | Change |
| - | - | - | - |
| index.html gzip | 1.04 kB | 1.02 kB | -15 B |
| link.html gzip | 1.04 kB | 1.03 kB | -13 B |
| withRouter.html gzip | 1.03 kB | 1.01 kB | -18 B |
| Overall change | 3.11 kB | 3.07 kB | -46 B |

#### Diffs

Diff for link.js

```diff
@@ -445,12 +445,8 @@

       var _react = _interopRequireWildcard(__webpack_require__('q1tI'))

-      var _propTypes = _interopRequireDefault(__webpack_require__('17x9'))
-
       var _router = _interopRequireDefault(__webpack_require__('nOHt'))

-      var _rewriteUrlForExport = __webpack_require__('P5f7')
-
       var _utils = __webpack_require__('g/15')

       function isLocal(href) {
@@ -492,6 +488,7 @@
       var observer
       var listeners = new _map['default']()
       var IntersectionObserver = true ? window.IntersectionObserver : undefined
+      var prefetched = {}

       function getObserver() {
         // Return shared instance of IntersectionObserver if already created
@@ -658,10 +655,7 @@
               value: function handleRef(ref) {
                 var _this2 = this

-                var isPrefetched =
-                  _router['default'].router.pageLoader.prefetched[
-                    this.getHref()
-                  ]
+                var isPrefetched = prefetched[this.getHref()]

                 if (this.p && IntersectionObserver && ref && ref.tagName) {
                   this.cleanUpListeners()
@@ -683,7 +677,11 @@
               value: function prefetch() {
                 if (!this.p || false) return // Prefetch the JSON page if asked (only in the client)

-                _router['default'].prefetch(this.getHref())
+                var href = this.getHref()
+
+                _router['default'].prefetch(href)
+
+                prefetched[href] = true
               },
             },
             {
@@ -755,6 +753,7 @@
                 // "<page>/index.html" directly.

                 if (false) {
+                  var rewriteUrlForNextExport
                 }

                 return _react['default'].cloneElement(child, props)
@@ -765,10 +764,8 @@
           return Link
         })(_react.Component)

-      Link.propTypes = void 0
-
       if (false) {
-        var exact, warn
+        var exact, PropTypes, warn
       }

       var _default = Link
```

Diff for link.module.js

```diff
@@ -320,12 +320,8 @@

       var _react = _interopRequireWildcard(__webpack_require__('q1tI'))

-      var _propTypes = _interopRequireDefault(__webpack_require__('17x9'))
-
       var _router = _interopRequireDefault(__webpack_require__('nOHt'))

-      var _rewriteUrlForExport = __webpack_require__('P5f7')
-
       var _utils = __webpack_require__('g/15')

       function isLocal(href) {
@@ -367,6 +363,7 @@
       var observer
       var listeners = new _map.default()
       var IntersectionObserver = true ? window.IntersectionObserver : undefined
+      var prefetched = {}

       function getObserver() {
         // Return shared instance of IntersectionObserver if already created
@@ -500,8 +497,7 @@
         }

         handleRef(ref) {
-          var isPrefetched =
-            _router.default.router.pageLoader.prefetched[this.getHref()]
+          var isPrefetched = prefetched[this.getHref()]

           if (this.p && IntersectionObserver && ref && ref.tagName) {
             this.cleanUpListeners()
@@ -518,7 +514,11 @@
         prefetch() {
           if (!this.p || false) return // Prefetch the JSON page if asked (only in the client)

-          _router.default.prefetch(this.getHref())
+          var href = this.getHref()
+
+          _router.default.prefetch(href)
+
+          prefetched[href] = true
         }

         render() {
@@ -573,16 +573,15 @@
           // "<page>/index.html" directly.

           if (false) {
+            var rewriteUrlForNextExport
           }

           return _react.default.cloneElement(child, props)
         }
       }

-      Link.propTypes = void 0
-
       if (false) {
-        var exact, warn
+        var exact, PropTypes, warn
       }

       var _default = Link
```

Diff for de003c3a9d30..9a.module.js

```diff
@@ -1126,32 +1126,6 @@
       /***/
     },

-    /***/ P5f7: /***/ function(module, exports, __webpack_require__) {
-      'use strict'
-
-      var _Object$defineProperty = __webpack_require__('hfKm')
-
-      _Object$defineProperty(exports, '__esModule', {
-        value: true,
-      })
-
-      function rewriteUrlForNextExport(url) {
-        var [pathname, hash] = url.split('#') // tslint:disable-next-line
-
-        var [path, qs] = pathname.split('?')
-        path = path.replace(/\/$/, '') // Append a trailing slash if this path does not have an extension
-
-        if (!/\.[^/]+\/?$/.test(path)) path += '/'
-        if (qs) path += '?' + qs
-        if (hash) path += '#' + hash
-        return path
-      }
-
-      exports.rewriteUrlForNextExport = rewriteUrlForNextExport
-
-      /***/
-    },
-
     /***/ PBE1: /***/ function(module, exports, __webpack_require__) {
       'use strict'
       // https://github.com/tc39/proposal-promise-finally
@@ -1811,8 +1785,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI

       var utils_1 = __webpack_require__('g/15')

-      var rewrite_url_for_export_1 = __webpack_require__('P5f7')
-
       var is_dynamic_1 = __webpack_require__('/jkW')

       var route_matcher_1 = __webpack_require__('gguc')
@@ -1970,7 +1942,11 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
         } // @deprecated backwards compatibility even though it's a private method.

         static _rewriteUrlForNextExport(url) {
-          return rewrite_url_for_export_1.rewriteUrlForNextExport(url)
+          if (false) {
+            var rewriteUrlForNextExport
+          } else {
+            return url
+          }
         }

         update(route, mod) {
@@ -2050,7 +2026,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
               this.isSsr = false
             } // marking route changes as a navigation start entry

-            if (utils_1.SUPPORTS_PERFORMANCE_USER_TIMING) {
+            if (utils_1.ST) {
               performance.mark('routeChange')
             } // If url and as provided as an object representation,
             // we'll format them into the string version here.
@@ -2064,6 +2040,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
             // "<page>/index.html" directly for the SSR page.

             if (false) {
+              var rewriteUrlForNextExport
             }

             this.abortComponentLoad(as) // If the url change is only related to a hash change
@@ -2226,7 +2203,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
               }

               return this._getData(() =>
-                Component.__NEXT_SPR
+                Component.__N_SSG
                   ? this._getStaticData(as)
                   : this.getInitialProps(
                       Component, // we provide AppTree later so this needs to be `any`
@@ -2377,13 +2354,12 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
               }

               return
-            } // @ts-ignore pathname is always defined
-
-            var route = toRoute(pathname) // Prefetch is not supported in development mode because it would trigger on-demand-entries
+            } // Prefetch is not supported in development mode because it would trigger on-demand-entries

             if (false) {
-            }
+            } // @ts-ignore pathname is always defined

+            var route = toRoute(pathname)
             this.pageLoader.prefetch(route).then(resolve, reject)
           })
         }
@@ -2545,6 +2521,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
       exports.isResSent = isResSent

       async function loadGetInitialProps(App, ctx) {
+        var _a
+
         if (false) {
           var message
         } // when called from _app `ctx` is nested in `ctx`
@@ -2609,9 +2587,9 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
       }

       exports.formatWithValidation = formatWithValidation
-      exports.SUPPORTS_PERFORMANCE = typeof performance !== 'undefined'
-      exports.SUPPORTS_PERFORMANCE_USER_TIMING =
-        exports.SUPPORTS_PERFORMANCE &&
+      exports.SP = typeof performance !== 'undefined'
+      exports.ST =
+        exports.SP &&
         typeof performance.mark === 'function' &&
         typeof performance.measure === 'function'
```

Diff for de003c3a9d30..5fa7da92f.js

```diff
@@ -765,41 +765,6 @@
       /***/
     },

-    /***/ P5f7: /***/ function(module, exports, __webpack_require__) {
-      'use strict'
-
-      var _slicedToArray = __webpack_require__('8+Nu')
-
-      var _Object$defineProperty = __webpack_require__('hfKm')
-
-      _Object$defineProperty(exports, '__esModule', {
-        value: true,
-      })
-
-      function rewriteUrlForNextExport(url) {
-        var _url$split = url.split('#'),
-          _url$split2 = _slicedToArray(_url$split, 2),
-          pathname = _url$split2[0],
-          hash = _url$split2[1] // tslint:disable-next-line
-
-        var _pathname$split = pathname.split('?'),
-          _pathname$split2 = _slicedToArray(_pathname$split, 2),
-          path = _pathname$split2[0],
-          qs = _pathname$split2[1]
-
-        path = path.replace(/\/$/, '') // Append a trailing slash if this path does not have an extension
-
-        if (!/\.[^/]+\/?$/.test(path)) path += '/'
-        if (qs) path += '?' + qs
-        if (hash) path += '#' + hash
-        return path
-      }
-
-      exports.rewriteUrlForNextExport = rewriteUrlForNextExport
-
-      /***/
-    },
-
     /***/ PBE1: /***/ function(module, exports, __webpack_require__) {
       'use strict'
       // https://github.com/tc39/proposal-promise-finally
@@ -1475,8 +1440,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI

       var utils_1 = __webpack_require__('g/15')

-      var rewrite_url_for_export_1 = __webpack_require__('P5f7')
-
       var is_dynamic_1 = __webpack_require__('/jkW')

       var route_matcher_1 = __webpack_require__('gguc')
@@ -1740,7 +1703,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
                       _this2.isSsr = false
                     } // marking route changes as a navigation start entry

-                    if (utils_1.SUPPORTS_PERFORMANCE_USER_TIMING) {
+                    if (utils_1.ST) {
                       performance.mark('routeChange')
                     } // If url and as provided as an object representation,
                     // we'll format them into the string version here.
@@ -1756,6 +1719,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
                     // "<page>/index.html" directly for the SSR page.

                     if (false) {
+                      var rewriteUrlForNextExport
                     }

                     _this2.abortComponentLoad(as) // If the url change is only related to a hash change
@@ -1939,7 +1903,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI

                       return _this3
                         ._getData(function() {
-                          return Component.__NEXT_SPR
+                          return Component.__N_SSG
                             ? _this3._getStaticData(as)
                             : _this3.getInitialProps(
                                 Component, // we provide AppTree later so this needs to be `any`
@@ -2125,12 +2089,12 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
                       }

                       return
-                    } // @ts-ignore pathname is always defined
-
-                    var route = toRoute(pathname) // Prefetch is not supported in development mode because it would trigger on-demand-entries
+                    } // Prefetch is not supported in development mode because it would trigger on-demand-entries

                     if (false) {
-                    }
+                    } // @ts-ignore pathname is always defined
+
+                    var route = toRoute(pathname)

                     _this4.pageLoader.prefetch(route).then(resolve, reject)
                   })
@@ -2257,7 +2221,11 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
               {
                 key: '_rewriteUrlForNextExport',
                 value: function _rewriteUrlForNextExport(url) {
-                  return rewrite_url_for_export_1.rewriteUrlForNextExport(url)
+                  if (false) {
+                    var rewriteUrlForNextExport
+                  } else {
+                    return url
+                  }
                 },
               },
             ]
@@ -2414,7 +2382,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
       exports.isResSent = isResSent

       function loadGetInitialProps(App, ctx) {
-        var message, res, props, _message
+        var _a, message, res, props, _message

         return _regeneratorRuntime.async(function loadGetInitialProps$(
           _context
@@ -2427,7 +2395,11 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
                   break
                 }

-                if (!(App.prototype && App.prototype.getInitialProps)) {
+                if (
+                  !((_a = App.prototype) === null || _a === void 0
+                    ? void 0
+                    : _a.getInitialProps)
+                ) {
                   _context.next = 4
                   break
                 }
@@ -2532,9 +2504,9 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
       }

       exports.formatWithValidation = formatWithValidation
-      exports.SUPPORTS_PERFORMANCE = typeof performance !== 'undefined'
-      exports.SUPPORTS_PERFORMANCE_USER_TIMING =
-        exports.SUPPORTS_PERFORMANCE &&
+      exports.SP = typeof performance !== 'undefined'
+      exports.ST =
+        exports.SP &&
         typeof performance.mark === 'function' &&
         typeof performance.measure === 'function'
```

Diff for framework.HASH.js

```diff
@@ -432,100 +432,6 @@
       /***/
     },

-    /***/ '16Al': /***/ function(module, exports, __webpack_require__) {
-      'use strict'
-      /**
-       * Copyright (c) 2013-present, Facebook, Inc.
-       *
-       * This source code is licensed under the MIT license found in the
-       * LICENSE file in the root directory of this source tree.
-       */
-
-      var ReactPropTypesSecret = __webpack_require__('WbBG')
-
-      function emptyFunction() {}
-      function emptyFunctionWithReset() {}
-      emptyFunctionWithReset.resetWarningCache = emptyFunction
-
-      module.exports = function() {
-        function shim(
-          props,
-          propName,
-          componentName,
-          location,
-          propFullName,
-          secret
-        ) {
-          if (secret === ReactPropTypesSecret) {
-            // It is still safe when called from React.
-            return
-          }
-          var err = new Error(
-            'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +
-              'Use PropTypes.checkPropTypes() to call them. ' +
-              'Read more at http://fb.me/use-check-prop-types'
-          )
-          err.name = 'Invariant Violation'
-          throw err
-        }
-        shim.isRequired = shim
-        function getShim() {
-          return shim
-        }
-        // Important!
-        // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.
-        var ReactPropTypes = {
-          array: shim,
-          bool: shim,
-          func: shim,
-          number: shim,
-          object: shim,
-          string: shim,
-          symbol: shim,
-
-          any: shim,
-          arrayOf: getShim,
-          element: shim,
-          elementType: shim,
-          instanceOf: getShim,
-          node: shim,
-          objectOf: getShim,
-          oneOf: getShim,
-          oneOfType: getShim,
-          shape: getShim,
-          exact: getShim,
-
-          checkPropTypes: emptyFunctionWithReset,
-          resetWarningCache: emptyFunction,
-        }
-
-        ReactPropTypes.PropTypes = ReactPropTypes
-
-        return ReactPropTypes
-      }
-
-      /***/
-    },
-
-    /***/ '17x9': /***/ function(module, exports, __webpack_require__) {
-      /**
-       * Copyright (c) 2013-present, Facebook, Inc.
-       *
-       * This source code is licensed under the MIT license found in the
-       * LICENSE file in the root directory of this source tree.
-       */
-
-      if (false) {
-        var throwOnDirectAccess, ReactIs
-      } else {
-        // By explicitly using `prop-types` you are opting into new production behavior.
-        // http://fb.me/prop-types-in-prod
-        module.exports = __webpack_require__('16Al')()
-      }
-
-      /***/
-    },
-
     /***/ QCnb: /***/ function(module, exports, __webpack_require__) {
       'use strict'

@@ -537,22 +443,6 @@
       /***/
     },

-    /***/ WbBG: /***/ function(module, exports, __webpack_require__) {
-      'use strict'
-      /**
-       * Copyright (c) 2013-present, Facebook, Inc.
-       *
-       * This source code is licensed under the MIT license found in the
-       * LICENSE file in the root directory of this source tree.
-       */
-
-      var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'
-
-      module.exports = ReactPropTypesSecret
-
-      /***/
-    },
-
     /***/ i8i4: /***/ function(module, exports, __webpack_require__) {
       'use strict'
```

Diff for framework.HASH.module.js

```diff
@@ -432,100 +432,6 @@
       /***/
     },

-    /***/ '16Al': /***/ function(module, exports, __webpack_require__) {
-      'use strict'
-      /**
-       * Copyright (c) 2013-present, Facebook, Inc.
-       *
-       * This source code is licensed under the MIT license found in the
-       * LICENSE file in the root directory of this source tree.
-       */
-
-      var ReactPropTypesSecret = __webpack_require__('WbBG')
-
-      function emptyFunction() {}
-      function emptyFunctionWithReset() {}
-      emptyFunctionWithReset.resetWarningCache = emptyFunction
-
-      module.exports = function() {
-        function shim(
-          props,
-          propName,
-          componentName,
-          location,
-          propFullName,
-          secret
-        ) {
-          if (secret === ReactPropTypesSecret) {
-            // It is still safe when called from React.
-            return
-          }
-          var err = new Error(
-            'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +
-              'Use PropTypes.checkPropTypes() to call them. ' +
-              'Read more at http://fb.me/use-check-prop-types'
-          )
-          err.name = 'Invariant Violation'
-          throw err
-        }
-        shim.isRequired = shim
-        function getShim() {
-          return shim
-        }
-        // Important!
-        // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.
-        var ReactPropTypes = {
-          array: shim,
-          bool: shim,
-          func: shim,
-          number: shim,
-          object: shim,
-          string: shim,
-          symbol: shim,
-
-          any: shim,
-          arrayOf: getShim,
-          element: shim,
-          elementType: shim,
-          instanceOf: getShim,
-          node: shim,
-          objectOf: getShim,
-          oneOf: getShim,
-          oneOfType: getShim,
-          shape: getShim,
-          exact: getShim,
-
-          checkPropTypes: emptyFunctionWithReset,
-          resetWarningCache: emptyFunction,
-        }
-
-        ReactPropTypes.PropTypes = ReactPropTypes
-
-        return ReactPropTypes
-      }
-
-      /***/
-    },
-
-    /***/ '17x9': /***/ function(module, exports, __webpack_require__) {
-      /**
-       * Copyright (c) 2013-present, Facebook, Inc.
-       *
-       * This source code is licensed under the MIT license found in the
-       * LICENSE file in the root directory of this source tree.
-       */
-
-      if (false) {
-        var throwOnDirectAccess, ReactIs
-      } else {
-        // By explicitly using `prop-types` you are opting into new production behavior.
-        // http://fb.me/prop-types-in-prod
-        module.exports = __webpack_require__('16Al')()
-      }
-
-      /***/
-    },
-
     /***/ QCnb: /***/ function(module, exports, __webpack_require__) {
       'use strict'

@@ -537,22 +443,6 @@
       /***/
     },

-    /***/ WbBG: /***/ function(module, exports, __webpack_require__) {
-      'use strict'
-      /**
-       * Copyright (c) 2013-present, Facebook, Inc.
-       *
-       * This source code is licensed under the MIT license found in the
-       * LICENSE file in the root directory of this source tree.
-       */
-
-      var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'
-
-      module.exports = ReactPropTypesSecret
-
-      /***/
-    },
-
     /***/ i8i4: /***/ function(module, exports, __webpack_require__) {
       'use strict'
```

Diff for main-HASH.js

```diff
@@ -95,87 +95,6 @@
       /***/
     },

-    /***/ '/h46': /***/ function(module, exports, __webpack_require__) {
-      // https://tc39.github.io/proposal-setmap-offrom/#sec-map.of
-      __webpack_require__('cHUd')('Map')
-
-      /***/
-    },
-
-    /***/ '0IRE': /***/ function(module, exports, __webpack_require__) {
-      'use strict'
-
-      var _Map = __webpack_require__('LX0d')
-
-      var _classCallCheck = __webpack_require__('/HRN')
-
-      var _createClass = __webpack_require__('WaGi')
-
-      var _Object$defineProperty = __webpack_require__('hfKm')
-
-      _Object$defineProperty(exports, '__esModule', {
-        value: true,
-      })
-
-      var DataManager =
-        /*#__PURE__*/
-        (function() {
-          function DataManager(data) {
-            _classCallCheck(this, DataManager)
-
-            this.data = new _Map(data)
-          }
-
-          _createClass(DataManager, [
-            {
-              key: 'getData',
-              value: function getData() {
-                return this.data
-              },
-            },
-            {
-              key: 'get',
-              value: function get(key) {
-                return this.data.get(key)
-              },
-            },
-            {
-              key: 'set',
-              value: function set(key, value) {
-                this.data.set(key, value)
-              },
-            },
-            {
-              key: 'overwrite',
-              value: function overwrite(data) {
-                this.data = new _Map(data)
-              },
-            },
-          ])
-
-          return DataManager
-        })()
-
-      exports.DataManager = DataManager
-
-      /***/
-    },
-
-    /***/ '8iia': /***/ function(module, exports, __webpack_require__) {
-      // https://github.com/DavidBruant/Map-Set.prototype.toJSON
-      var classof = __webpack_require__('QMMT')
-      var from = __webpack_require__('RRc/')
-      module.exports = function(NAME) {
-        return function toJSON() {
-          if (classof(this) != NAME)
-            throw TypeError(NAME + "#toJSON isn't generic")
-          return from(this)
-        }
-      }
-
-      /***/
-    },
-
     /***/ ApPD: /***/ function(module, exports, __webpack_require__) {
       // 19.1.2.9 Object.getPrototypeOf(O)
       var toObject = __webpack_require__('JB68')
@@ -428,7 +347,7 @@
       exports.renderError = renderError
       exports[
         'default'
-      ] = exports.emitter = exports.ErrorComponent = exports.router = exports.dataManager = exports.version = void 0
+      ] = exports.emitter = exports.router = exports.version = void 0

       var _asyncToGenerator2 = _interopRequireDefault(
         __webpack_require__('+oT+')
@@ -460,12 +379,8 @@

       var _headManagerContext = __webpack_require__('FYa8')

-      var _dataManagerContext = __webpack_require__('qArv')
-
       var _routerContext = __webpack_require__('qOIg')

-      var _dataManager = __webpack_require__('0IRE')
-
       var _querystring = __webpack_require__('s4NR')

       var _isDynamic = __webpack_require__('/jkW')
@@ -479,7 +394,7 @@
         document.getElementById('__NEXT_DATA__').textContent
       )
       window.__NEXT_DATA__ = data
-      var version = '9.1.7'
+      var version = '9.1.8-canary.15'
       exports.version = version
       var props = data.props,
         err = data.err,
@@ -489,9 +404,6 @@
         assetPrefix = data.assetPrefix,
         runtimeConfig = data.runtimeConfig,
         dynamicIds = data.dynamicIds
-      var d = JSON.parse(window.__NEXT_DATA__.dataManager)
-      var dataManager = new _dataManager.DataManager(d)
-      exports.dataManager = dataManager
       var prefix = assetPrefix || '' // With dynamic assetPrefix it's no longer possible to set assetPrefix at the build time
       // So, this is how we do it in the client side at runtime

@@ -526,7 +438,6 @@
       var router
       exports.router = router
       var ErrorComponent
-      exports.ErrorComponent = ErrorComponent
       var Component
       var App, onPerfEntry

@@ -564,7 +475,7 @@
                   (data.nextExport &&
                     ((0, _isDynamic.isDynamicRoute)(router.pathname) ||
                       location.search)) ||
-                  (Component.__NEXT_SPR && location.search)
+                  (Component && Component.__N_SSG && location.search)
                 ) {
                   // update query on mount for exported pages
                   router.replace(
@@ -584,6 +495,7 @@
                       // client-side hydration. Your app should _never_ use this property.
                       // It may change at any time without notice.
                       _h: 1,
+                      shallow: true,
                     }
                   )
                 }
@@ -749,7 +661,6 @@
                                 Component: Component,
                                 props: props,
                                 err: err,
-                                emitter: emitter,
                               })
                             },
                           }
@@ -763,7 +674,6 @@
                           Component: Component,
                           props: props,
                           err: initialErr,
-                          emitter: emitter,
                         }
                         render(renderCtx)
                         return _context.abrupt('return', emitter)
@@ -885,7 +795,7 @@
                     return pageLoader.loadPage('/_error')

                   case 7:
-                    exports.ErrorComponent = ErrorComponent = _context3.sent
+                    ErrorComponent = _context3.sent
                     // In production we do a normal render with the `ErrorComponent` as component.
                     // If we've gotten here upon initial render, we can use the props from the server.
                     // Otherwise, we need to call `getInitialProps` on `App` before mounting.
@@ -945,15 +855,14 @@
       var reactRoot = null

       function renderReactElement(reactEl, domEl) {
-        // mark start of hydrate/render
-        if (_utils.SUPPORTS_PERFORMANCE_USER_TIMING) {
-          performance.mark('beforeRender')
-        }
-
         if (false) {
-          var opts, callback
+          var opts
         } else {
-          // The check for `.hydrate` is there to support React alternatives like preact
+          // mark start of hydrate/render
+          if (_utils.ST) {
+            performance.mark('beforeRender')
+          } // The check for `.hydrate` is there to support React alternatives like preact
+
           if (isInitialRender) {
             _reactDom['default'].hydrate(reactEl, domEl, markHydrateComplete)

@@ -963,12 +872,15 @@
           }
         }

-        if (onPerfEntry && _utils.SUPPORTS_PERFORMANCE_USER_TIMING) {
-          if (!(PerformanceObserver in window)) {
+        if (onPerfEntry && _utils.ST) {
+          if (!('PerformanceObserver' in window)) {
             window.addEventListener('load', function() {
               performance.getEntriesByType('paint').forEach(onPerfEntry)
             })
           } else {
+            performance.getEntriesByType('paint').forEach(onPerfEntry) // Start an observer to catch any paint metrics which may fire _after_
+            // the load event is fired on the window
+
             var observer = new PerformanceObserver(function(list) {
               list.getEntries().forEach(onPerfEntry)
             })
@@ -980,7 +892,7 @@
       }

       function markHydrateComplete() {
-        if (!_utils.SUPPORTS_PERFORMANCE_USER_TIMING) return
+        if (!_utils.ST) return
         performance.mark('afterHydrate') // mark end of hydration

         performance.measure(
@@ -999,7 +911,7 @@
       }

       function markRenderComplete() {
-        if (!_utils.SUPPORTS_PERFORMANCE_USER_TIMING) return
+        if (!_utils.ST) return
         performance.mark('afterRender') // mark end of render

         var navStartEntries = performance.getEntriesByName(
@@ -1064,17 +976,11 @@
               value: (0, _router.makePublicRouterInstance)(router),
             },
             _react['default'].createElement(
-              _dataManagerContext.DataManagerContext.Provider,
+              _headManagerContext.HeadManagerContext.Provider,
               {
-                value: dataManager,
+                value: headManager.updateHead,
               },
-              _react['default'].createElement(
-                _headManagerContext.HeadManagerContext.Provider,
-                {
-                  value: headManager.updateHead,
-                },
-                children
-              )
+              children
             )
           )
         )
@@ -1219,12 +1125,6 @@
       /***/
     },

-    /***/ LX0d: /***/ function(module, exports, __webpack_require__) {
-      module.exports = __webpack_require__('UDep')
-
-      /***/
-    },
-
     /***/ N9n2: /***/ function(module, exports, __webpack_require__) {
       var _Object$create = __webpack_require__('SqZg')

@@ -1255,217 +1155,6 @@
       /***/
     },

-    /***/ 'RRc/': /***/ function(module, exports, __webpack_require__) {
-      var forOf = __webpack_require__('oioR')
-
-      module.exports = function(iter, ITERATOR) {
-        var result = []
-        forOf(iter, false, result.push, result, ITERATOR)
-        return result
-      }
-
-      /***/
-    },
-
-    /***/ UDep: /***/ function(module, exports, __webpack_require__) {
-      __webpack_require__('wgeU')
-      __webpack_require__('FlQf')
-      __webpack_require__('bBy9')
-      __webpack_require__('g33z')
-      __webpack_require__('XLbu')
-      __webpack_require__('/h46')
-      __webpack_require__('dVTT')
-      module.exports = __webpack_require__('WEpk').Map
-
-      /***/
-    },
-
-    /***/ Wu5q: /***/ function(module, exports, __webpack_require__) {
-      'use strict'
-
-      var dP = __webpack_require__('2faE').f
-      var create = __webpack_require__('oVml')
-      var redefineAll = __webpack_require__('XJU/')
-      var ctx = __webpack_require__('2GTP')
-      var anInstance = __webpack_require__('EXMj')
-      var forOf = __webpack_require__('oioR')
-      var $iterDefine = __webpack_require__('MPFp')
-      var step = __webpack_require__('UO39')
-      var setSpecies = __webpack_require__('TJWN')
-      var DESCRIPTORS = __webpack_require__('jmDH')
-      var fastKey = __webpack_require__('6/1s').fastKey
-      var validate = __webpack_require__('n3ko')
-      var SIZE = DESCRIPTORS ? '_s' : 'size'
-
-      var getEntry = function(that, key) {
-        // fast case
-        var index = fastKey(key)
-        var entry
-        if (index !== 'F') return that._i[index]
-        // frozen object case
-        for (entry = that._f; entry; entry = entry.n) {
-          if (entry.k == key) return entry
-        }
-      }
-
-      module.exports = {
-        getConstructor: function(wrapper, NAME, IS_MAP, ADDER) {
-          var C = wrapper(function(that, iterable) {
-            anInstance(that, C, NAME, '_i')
-            that._t = NAME // collection type
-            that._i = create(null) // index
-            that._f = undefined // first entry
-            that._l = undefined // last entry
-            that[SIZE] = 0 // size
-            if (iterable != undefined)
-              forOf(iterable, IS_MAP, that[ADDER], that)
-          })
-          redefineAll(C.prototype, {
-            // 23.1.3.1 Map.prototype.clear()
-            // 23.2.3.2 Set.prototype.clear()
-            clear: function clear() {
-              for (
-                var that = validate(this, NAME),
-                  data = that._i,
-                  entry = that._f;
-                entry;
-                entry = entry.n
-              ) {
-                entry.r = true
-                if (entry.p) entry.p = entry.p.n = undefined
-                delete data[entry.i]
-              }
-              that._f = that._l = undefined
-              that[SIZE] = 0
-            },
-            // 23.1.3.3 Map.prototype.delete(key)
-            // 23.2.3.4 Set.prototype.delete(value)
-            delete: function(key) {
-              var that = validate(this, NAME)
-              var entry = getEntry(that, key)
-              if (entry) {
-                var next = entry.n
-                var prev = entry.p
-                delete that._i[entry.i]
-                entry.r = true
-                if (prev) prev.n = next
-                if (next) next.p = prev
-                if (that._f == entry) that._f = next
-                if (that._l == entry) that._l = prev
-                that[SIZE]--
-              }
-              return !!entry
-            },
-            // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)
-            // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)
-            forEach: function forEach(callbackfn /* , that = undefined */) {
-              validate(this, NAME)
-              var f = ctx(
-                callbackfn,
-                arguments.length > 1 ? arguments[1] : undefined,
-                3
-              )
-              var entry
-              while ((entry = entry ? entry.n : this._f)) {
-                f(entry.v, entry.k, this)
-                // revert to the last existing entry
-                while (entry && entry.r) entry = entry.p
-              }
-            },
-            // 23.1.3.7 Map.prototype.has(key)
-            // 23.2.3.7 Set.prototype.has(value)
-            has: function has(key) {
-              return !!getEntry(validate(this, NAME), key)
-            },
-          })
-          if (DESCRIPTORS)
-            dP(C.prototype, 'size', {
-              get: function() {
-                return validate(this, NAME)[SIZE]
-              },
-            })
-          return C
-        },
-        def: function(that, key, value) {
-          var entry = getEntry(that, key)
-          var prev, index
-          // change existing entry
-          if (entry) {
-            entry.v = value
-            // create new entry
-          } else {
-            that._l = entry = {
-              i: (index = fastKey(key, true)), // <- index
-              k: key, // <- key
-              v: value, // <- value
-              p: (prev = that._l), // <- previous entry
-              n: undefined, // <- next entry
-              r: false, // <- removed
-            }
-            if (!that._f) that._f = entry
-            if (prev) prev.n = entry
-            that[SIZE]++
-            // add to index
-            if (index !== 'F') that._i[index] = entry
-          }
-          return that
-        },
-        getEntry: getEntry,
-        setStrong: function(C, NAME, IS_MAP) {
-          // add .keys, .values, .entries, [@@iterator]
-          // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11
-          $iterDefine(
-            C,
-            NAME,
-            function(iterated, kind) {
-              this._t = validate(iterated, NAME) // target
-              this._k = kind // kind
-              this._l = undefined // previous
-            },
-            function() {
-              var that = this
-              var kind = that._k
-              var entry = that._l
-              // revert to the last existing entry
-              while (entry && entry.r) entry = entry.p
-              // get next entry
-              if (
-                !that._t ||
-                !(that._l = entry = entry ? entry.n : that._t._f)
-              ) {
-                // or finish the iteration
-                that._t = undefined
-                return step(1)
-              }
-              // return step by kind
-              if (kind == 'keys') return step(0, entry.k)
-              if (kind == 'values') return step(0, entry.v)
-              return step(0, [entry.k, entry.v])
-            },
-            IS_MAP ? 'entries' : 'values',
-            !IS_MAP,
-            true
-          )
-
-          // add [@@species], 23.1.2.2, 23.2.2.2
-          setSpecies(NAME)
-        },
-      }
-
-      /***/
-    },
-
-    /***/ XLbu: /***/ function(module, exports, __webpack_require__) {
-      // https://github.com/DavidBruant/Map-Set.prototype.toJSON
-      var $export = __webpack_require__('Y7ZC')
-
-      $export($export.P + $export.R, 'Map', {
-        toJSON: __webpack_require__('8iia')('Map'),
-      })
-
-      /***/
-    },
-
     /***/ ZDA2: /***/ function(module, exports, __webpack_require__) {
       var _typeof = __webpack_require__('iZP3')

@@ -1487,75 +1176,6 @@
       /***/
     },

-    /***/ dVTT: /***/ function(module, exports, __webpack_require__) {
-      // https://tc39.github.io/proposal-setmap-offrom/#sec-map.from
-      __webpack_require__('aPfg')('Map')
-
-      /***/
-    },
-
-    /***/ g33z: /***/ function(module, exports, __webpack_require__) {
-      'use strict'
-
-      var strong = __webpack_require__('Wu5q')
-      var validate = __webpack_require__('n3ko')
-      var MAP = 'Map'
-
-      // 23.1 Map Objects
-      module.exports = __webpack_require__('raTm')(
-        MAP,
-        function(get) {
-          return function Map() {
-            return get(this, arguments.length > 0 ? arguments[0] : undefined)
-          }
-        },
-        {
-          // 23.1.3.6 Map.prototype.get(key)
-          get: function get(key) {
-            var entry = strong.getEntry(validate(this, MAP), key)
-            return entry && entry.v
-          },
-          // 23.1.3.9 Map.prototype.set(key, value)
-          set: function set(key, value) {
-            return strong.def(validate(this, MAP), key === 0 ? 0 : key, value)
-          },
-        },
-        strong,
-        true
-      )
-
-      /***/
-    },
-
-    /***/ qArv: /***/ function(module, exports, __webpack_require__) {
-      'use strict'
-
-      var _Object$defineProperty = __webpack_require__('hfKm')
-
-      var __importStar =
-        (this && this.__importStar) ||
-        function(mod) {
-          if (mod && mod.__esModule) return mod
-          var result = {}
-          if (mod != null)
-            for (var k in mod) {
-              if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]
-            }
-          result['default'] = mod
-          return result
-        }
-
-      _Object$defineProperty(exports, '__esModule', {
-        value: true,
-      })
-
-      var React = __importStar(__webpack_require__('q1tI'))
-
-      exports.DataManagerContext = React.createContext(null)
-
-      /***/
-    },
-
     /***/ yLiY: /***/ function(module, exports, __webpack_require__) {
       'use strict'

@@ -1583,8 +1203,6 @@
     /***/ zmvN: /***/ function(module, exports, __webpack_require__) {
       'use strict'

-      var _regeneratorRuntime = __webpack_require__('ln6h')
-
       var _classCallCheck = __webpack_require__('/HRN')

       var _createClass = __webpack_require__('WaGi')
@@ -1594,10 +1212,6 @@
       exports.__esModule = true
       exports['default'] = void 0

-      var _asyncToGenerator2 = _interopRequireDefault(
-        __webpack_require__('+oT+')
-      )
-
       var _promise = _interopRequireDefault(__webpack_require__('eVuF'))

       var _mitt = _interopRequireDefault(__webpack_require__('dZ6Y'))
@@ -1617,6 +1231,18 @@
             'prefetch'
       var hasNoModule = 'noModule' in document.createElement('script')

+      function normalizeRoute(route) {
+        if (route[0] !== '/') {
+          throw new Error(
+            'Route name should start with a "/", got "' + route + '"'
+          )
+        }
+
+        route = route.replace(/\/index$/, '/')
+        if (route === '/') return route
+        return route.replace(/\/$/, '')
+      }
+
       function appendLink(href, rel, as) {
         return new _promise['default'](function(res, rej, link) {
           link = document.createElement('link')
@@ -1639,7 +1265,6 @@
             this.buildId = buildId
             this.assetPrefix = assetPrefix
             this.pageCache = {}
-            this.prefetched = {}
             this.pageRegisterEvents = (0, _mitt['default'])()
             this.loadingRoutes = {}

@@ -1662,31 +1287,19 @@
             {
               key: 'getDependencies',
               value: function getDependencies(route) {
+                var _this = this
+
                 return this.promisedBuildManifest.then(function(man) {
                   return (
                     (man[route] &&
                       man[route].map(function(url) {
-                        return '/_next/' + encodeURI(url)
+                        return _this.assetPrefix + '/_next/' + encodeURI(url)
                       })) ||
                     []
                   )
                 })
               },
             },
-            {
-              key: 'normalizeRoute',
-              value: function normalizeRoute(route) {
-                if (route[0] !== '/') {
-                  throw new Error(
-                    'Route name should start with a "/", got "' + route + '"'
-                  )
-                }
-
-                route = route.replace(/\/index$/, '/')
-                if (route === '/') return route
-                return route.replace(/\/$/, '')
-              },
-            },
             {
               key: 'loadPage',
               value: function loadPage(route) {
@@ -1698,18 +1311,18 @@
             {
               key: 'loadPageScript',
               value: function loadPageScript(route) {
-                var _this3 = this
+                var _this2 = this

-                route = this.normalizeRoute(route)
+                route = normalizeRoute(route)
                 return new _promise['default'](function(resolve, reject) {
                   var fire = function fire(_ref) {
                     var error = _ref.error,
                       page = _ref.page,
                       mod = _ref.mod

-                    _this3.pageRegisterEvents.off(route, fire)
+                    _this2.pageRegisterEvents.off(route, fire)

-                    delete _this3.loadingRoutes[route]
+                    delete _this2.loadingRoutes[route]

                     if (error) {
                       reject(error)
@@ -1721,7 +1334,7 @@
                     }
                   } // If there's a cached version of the page, let's use it.

-                  var cachedPage = _this3.pageCache[route]
+                  var cachedPage = _this2.pageCache[route]

                   if (cachedPage) {
                     var error = cachedPage.error,
@@ -1736,7 +1349,7 @@
                     return
                   } // Register a listener to get the page

-                  _this3.pageRegisterEvents.on(route, fire) // If the page is loading via SSR, we need to wait for it
+                  _this2.pageRegisterEvents.on(route, fire) // If the page is loading via SSR, we need to wait for it
                   // rather downloading it again.

                   if (
@@ -1747,17 +1360,17 @@
                     return
                   }

-                  if (!_this3.loadingRoutes[route]) {
-                    _this3.loadingRoutes[route] = true
+                  if (!_this2.loadingRoutes[route]) {
+                    _this2.loadingRoutes[route] = true

                     if (true) {
-                      _this3.getDependencies(route).then(function(deps) {
+                      _this2.getDependencies(route).then(function(deps) {
                         deps.forEach(function(d) {
                           if (
                             /\.js$/.test(d) &&
                             !document.querySelector('script[src^="' + d + '"]')
                           ) {
-                            _this3.loadScript(d, route, false)
+                            _this2.loadScript(d, route, false)
                           }

                           if (
@@ -1773,7 +1386,7 @@
                           }
                         })

-                        _this3.loadRoute(route)
+                        _this2.loadRoute(route)
                       })
                     } else {
                     }
@@ -1784,45 +1397,21 @@
             {
               key: 'loadRoute',
               value: function loadRoute(route) {
-                var _this = this
-
-                return (0, _asyncToGenerator2['default'])(
-                  /*#__PURE__*/
-                  _regeneratorRuntime.mark(function _callee() {
-                    var scriptRoute, url
-                    return _regeneratorRuntime.wrap(function _callee$(
-                      _context
-                    ) {
-                      while (1) {
-                        switch ((_context.prev = _context.next)) {
-                          case 0:
-                            route = _this.normalizeRoute(route)
-                            scriptRoute =
-                              route === '/' ? '/index.js' : route + '.js'
-                            url =
-                              _this.assetPrefix +
-                              '/_next/static/' +
-                              encodeURIComponent(_this.buildId) +
-                              '/pages' +
-                              encodeURI(scriptRoute)
-
-                            _this.loadScript(url, route, true)
-
-                          case 4:
-                          case 'end':
-                            return _context.stop()
-                        }
-                      }
-                    },
-                    _callee)
-                  })
-                )()
+                route = normalizeRoute(route)
+                var scriptRoute = route === '/' ? '/index.js' : route + '.js'
+                var url =
+                  this.assetPrefix +
+                  '/_next/static/' +
+                  encodeURIComponent(this.buildId) +
+                  '/pages' +
+                  encodeURI(scriptRoute)
+                this.loadScript(url, route, true)
               },
             },
             {
               key: 'loadScript',
               value: function loadScript(url, route, isPage) {
-                var _this4 = this
+                var _this3 = this

                 var script = document.createElement('script')

@@ -1840,7 +1429,7 @@
                   var error = new Error('Error loading script ' + url)
                   error.code = 'PAGE_LOAD_ERROR'

-                  _this4.pageRegisterEvents.emit(route, {
+                  _this3.pageRegisterEvents.emit(route, {
                     error: error,
                   })
                 }
@@ -1851,7 +1440,7 @@
             {
               key: 'registerPage',
               value: function registerPage(route, regFn) {
-                var _this5 = this
+                var _this4 = this

                 var register = function register() {
                   try {
@@ -1860,15 +1449,15 @@
                       page: mod['default'] || mod,
                       mod: mod,
                     }
-                    _this5.pageCache[route] = pageData
+                    _this4.pageCache[route] = pageData

-                    _this5.pageRegisterEvents.emit(route, pageData)
+                    _this4.pageRegisterEvents.emit(route, pageData)
                   } catch (error) {
-                    _this5.pageCache[route] = {
+                    _this4.pageCache[route] = {
                       error: error,
                     }

-                    _this5.pageRegisterEvents.emit(route, {
+                    _this4.pageRegisterEvents.emit(route, {
                       error: error,
                     })
                   }
@@ -1884,110 +1473,72 @@
             {
               key: 'prefetch',
               value: function prefetch(route, isDependency) {
-                var _this2 = this
+                var _this5 = this

-                return (0, _asyncToGenerator2['default'])(
-                  /*#__PURE__*/
-                  _regeneratorRuntime.mark(function _callee2() {
-                    var cn, url, scriptRoute
-                    return _regeneratorRuntime.wrap(function _callee2$(
-                      _context2
-                    ) {
-                      while (1) {
-                        switch ((_context2.prev = _context2.next)) {
-                          case 0:
-                            if (!(cn = navigator.connection)) {
-                              _context2.next = 3
-                              break
-                            }
-
-                            if (!(cn.saveData || /2g/.test(cn.effectiveType))) {
-                              _context2.next = 3
-                              break
-                            }
-
-                            return _context2.abrupt('return')
-
-                          case 3:
-                            url = _this2.assetPrefix
-
-                            if (isDependency) {
-                              url += route
-                            } else {
-                              route = _this2.normalizeRoute(route)
-                              _this2.prefetched[route] = true
-                              scriptRoute =
-                                (route === '/' ? '/index' : route) + '.js'
-
-                              if (true && hasNoModule) {
-                                scriptRoute = scriptRoute.replace(
-                                  /\.js$/,
-                                  '.module.js'
-                                )
-                              }
-
-                              url +=
-                                '/_next/static/' +
-                                encodeURIComponent(_this2.buildId) +
-                                '/pages' +
-                                encodeURI(scriptRoute)
-                            }
-
-                            if (
-                              !document.querySelector(
-                                'link[rel="' +
-                                  relPrefetch +
-                                  '"][href^="' +
-                                  url +
-                                  '"], script[data-next-page="' +
-                                  route +
-                                  '"]'
-                              )
-                            ) {
-                              _context2.next = 7
-                              break
-                            }
-
-                            return _context2.abrupt('return')
-
-                          case 7:
-                            return _context2.abrupt(
-                              'return',
-                              _promise['default']
-                                .all([
-                                  appendLink(
-                                    url,
-                                    relPrefetch,
-                                    url.match(/\.css$/) ? 'style' : 'script'
-                                  ),
-                                  true &&
-                                    !isDependency &&
-                                    _this2
-                                      .getDependencies(route)
-                                      .then(function(urls) {
-                                        return _promise['default'].all(
-                                          urls.map(function(url) {
-                                            return _this2.prefetch(url, true)
-                                          })
-                                        )
-                                      }),
-                                ])
-                                .then(
-                                  // do not return any data
-                                  function() {}, // swallow prefetch errors
-                                  function() {}
-                                )
-                            )
+                // https://github.com/GoogleChromeLabs/quicklink/blob/453a661fa1fa940e2d2e044452398e38c67a98fb/src/index.mjs#L115-L118
+                // License: Apache 2.0
+                var cn

-                          case 8:
-                          case 'end':
-                            return _context2.stop()
-                        }
-                      }
-                    },
-                    _callee2)
-                  })
-                )()
+                if ((cn = navigator.connection)) {
+                  // Don't prefetch if using 2G or if Save-Data is enabled.
+                  if (cn.saveData || /2g/.test(cn.effectiveType))
+                    return _promise['default'].resolve()
+                }
+
+                var url
+
+                if (isDependency) {
+                  url = route
+                } else {
+                  route = normalizeRoute(route)
+                  var scriptRoute = (route === '/' ? '/index' : route) + '.js'
+
+                  if (true && hasNoModule) {
+                    scriptRoute = scriptRoute.replace(/\.js$/, '.module.js')
+                  }
+
+                  url =
+                    this.assetPrefix +
+                    '/_next/static/' +
+                    encodeURIComponent(this.buildId) +
+                    '/pages' +
+                    encodeURI(scriptRoute)
+                }
+
+                return _promise['default']
+                  .all(
+                    document.querySelector(
+                      'link[rel="' +
+                        relPrefetch +
+                        '"][href^="' +
+                        url +
+                        '"], script[data-next-page="' +
+                        route +
+                        '"]'
+                    )
+                      ? []
+                      : [
+                          appendLink(
+                            url,
+                            relPrefetch,
+                            url.match(/\.css$/) ? 'style' : 'script'
+                          ),
+                          true &&
+                            !isDependency &&
+                            this.getDependencies(route).then(function(urls) {
+                              return _promise['default'].all(
+                                urls.map(function(url) {
+                                  return _this5.prefetch(url, true)
+                                })
+                              )
+                            }),
+                        ]
+                  )
+                  .then(
+                    // do not return any data
+                    function() {}, // swallow prefetch errors
+                    function() {}
+                  )
               },
             },
           ])
```
</details>
<details>
<summary>Diff for <strong>main-HASH.module.js</strong></summary>

```diff
@@ -69,66 +69,6 @@
       /***/
     },

-    /***/ '/h46': /***/ function(module, exports, __webpack_require__) {
-      // https://tc39.github.io/proposal-setmap-offrom/#sec-map.of
-      __webpack_require__('cHUd')('Map')
-
-      /***/
-    },
-
-    /***/ '0IRE': /***/ function(module, exports, __webpack_require__) {
-      'use strict'
-
-      var _Map = __webpack_require__('LX0d')
-
-      var _Object$defineProperty = __webpack_require__('hfKm')
-
-      _Object$defineProperty(exports, '__esModule', {
-        value: true,
-      })
-
-      class DataManager {
-        constructor(data) {
-          this.data = new _Map(data)
-        }
-
-        getData() {
-          return this.data
-        }
-
-        get(key) {
-          return this.data.get(key)
-        }
-
-        set(key, value) {
-          this.data.set(key, value)
-        }
-
-        overwrite(data) {
-          this.data = new _Map(data)
-        }
-      }
-
-      exports.DataManager = DataManager
-
-      /***/
-    },
-
-    /***/ '8iia': /***/ function(module, exports, __webpack_require__) {
-      // https://github.com/DavidBruant/Map-Set.prototype.toJSON
-      var classof = __webpack_require__('QMMT')
-      var from = __webpack_require__('RRc/')
-      module.exports = function(NAME) {
-        return function toJSON() {
-          if (classof(this) != NAME)
-            throw TypeError(NAME + "#toJSON isn't generic")
-          return from(this)
-        }
-      }
-
-      /***/
-    },
-
     /***/ BMP1: /***/ function(module, exports, __webpack_require__) {
       'use strict'

@@ -310,7 +250,7 @@
       exports.__esModule = true
       exports.render = render
       exports.renderError = renderError
-      exports.default = exports.emitter = exports.ErrorComponent = exports.router = exports.dataManager = exports.version = void 0
+      exports.default = exports.emitter = exports.router = exports.version = void 0

       var _asyncToGenerator2 = _interopRequireDefault(
         __webpack_require__('+oT+')
@@ -342,12 +282,8 @@

       var _headManagerContext = __webpack_require__('FYa8')

-      var _dataManagerContext = __webpack_require__('qArv')
-
       var _routerContext = __webpack_require__('qOIg')

-      var _dataManager = __webpack_require__('0IRE')
-
       var _querystring = __webpack_require__('s4NR')

       var _isDynamic = __webpack_require__('/jkW')
@@ -361,7 +297,7 @@
         document.getElementById('__NEXT_DATA__').textContent
       )
       window.__NEXT_DATA__ = data
-      var version = '9.1.7'
+      var version = '9.1.8-canary.15'
       exports.version = version
       var {
         props,
@@ -373,9 +309,6 @@
         runtimeConfig,
         dynamicIds,
       } = data
-      var d = JSON.parse(window.__NEXT_DATA__.dataManager)
-      var dataManager = new _dataManager.DataManager(d)
-      exports.dataManager = dataManager
       var prefix = assetPrefix || '' // With dynamic assetPrefix it's no longer possible to set assetPrefix at the build time
       // So, this is how we do it in the client side at runtime

@@ -407,7 +340,6 @@
       var router
       exports.router = router
       var ErrorComponent
-      exports.ErrorComponent = ErrorComponent
       var Component
       var App, onPerfEntry

@@ -427,7 +359,7 @@
             (data.nextExport &&
               ((0, _isDynamic.isDynamicRoute)(router.pathname) ||
                 location.search)) ||
-            (Component.__NEXT_SPR && location.search)
+            (Component && Component.__N_SSG && location.search)
           ) {
             // update query on mount for exported pages
             router.replace(
@@ -447,6 +379,7 @@
                 // client-side hydration. Your app should _never_ use this property.
                 // It may change at any time without notice.
                 _h: 1,
+                shallow: true,
               }
             )
           }
@@ -534,7 +467,6 @@
                     Component,
                     props,
                     err,
-                    emitter,
                   })
                 },
               }
@@ -548,7 +480,6 @@
               Component,
               props,
               err: initialErr,
-              emitter,
             }
             render(renderCtx)
             return emitter
@@ -603,9 +534,7 @@
           } // Make sure we log the error to the console, otherwise users can't track down issues.

           console.error(err)
-          exports.ErrorComponent = ErrorComponent = yield pageLoader.loadPage(
-            '/_error'
-          ) // In production we do a normal render with the `ErrorComponent` as component.
+          ErrorComponent = yield pageLoader.loadPage('/_error') // In production we do a normal render with the `ErrorComponent` as component.
           // If we've gotten here upon initial render, we can use the props from the server.
           // Otherwise, we need to call `getInitialProps` on `App` before mounting.

@@ -640,15 +569,14 @@
       var reactRoot = null

       function renderReactElement(reactEl, domEl) {
-        // mark start of hydrate/render
-        if (_utils.SUPPORTS_PERFORMANCE_USER_TIMING) {
-          performance.mark('beforeRender')
-        }
-
         if (false) {
-          var opts, callback
+          var opts
         } else {
-          // The check for `.hydrate` is there to support React alternatives like preact
+          // mark start of hydrate/render
+          if (_utils.ST) {
+            performance.mark('beforeRender')
+          } // The check for `.hydrate` is there to support React alternatives like preact
+
           if (isInitialRender) {
             _reactDom.default.hydrate(reactEl, domEl, markHydrateComplete)

@@ -658,12 +586,15 @@
           }
         }

-        if (onPerfEntry && _utils.SUPPORTS_PERFORMANCE_USER_TIMING) {
-          if (!(PerformanceObserver in window)) {
+        if (onPerfEntry && _utils.ST) {
+          if (!('PerformanceObserver' in window)) {
             window.addEventListener('load', () => {
               performance.getEntriesByType('paint').forEach(onPerfEntry)
             })
           } else {
+            performance.getEntriesByType('paint').forEach(onPerfEntry) // Start an observer to catch any paint metrics which may fire _after_
+            // the load event is fired on the window
+
             var observer = new PerformanceObserver(list => {
               list.getEntries().forEach(onPerfEntry)
             })
@@ -675,7 +606,7 @@
       }

       function markHydrateComplete() {
-        if (!_utils.SUPPORTS_PERFORMANCE_USER_TIMING) return
+        if (!_utils.ST) return
         performance.mark('afterHydrate') // mark end of hydration

         performance.measure(
@@ -694,7 +625,7 @@
       }

       function markRenderComplete() {
-        if (!_utils.SUPPORTS_PERFORMANCE_USER_TIMING) return
+        if (!_utils.ST) return
         performance.mark('afterRender') // mark end of render

         var navStartEntries = performance.getEntriesByName(
@@ -752,17 +683,11 @@
               value: (0, _router.makePublicRouterInstance)(router),
             },
             _react.default.createElement(
-              _dataManagerContext.DataManagerContext.Provider,
+              _headManagerContext.HeadManagerContext.Provider,
               {
-                value: dataManager,
+                value: headManager.updateHead,
               },
-              _react.default.createElement(
-                _headManagerContext.HeadManagerContext.Provider,
-                {
-                  value: headManager.updateHead,
-                },
-                children
-              )
+              children
             )
           )
         )
@@ -847,292 +772,6 @@
       /***/
     },

-    /***/ LX0d: /***/ function(module, exports, __webpack_require__) {
-      module.exports = __webpack_require__('UDep')
-
-      /***/
-    },
-
-    /***/ 'RRc/': /***/ function(module, exports, __webpack_require__) {
-      var forOf = __webpack_require__('oioR')
-
-      module.exports = function(iter, ITERATOR) {
-        var result = []
-        forOf(iter, false, result.push, result, ITERATOR)
-        return result
-      }
-
-      /***/
-    },
-
-    /***/ UDep: /***/ function(module, exports, __webpack_require__) {
-      __webpack_require__('wgeU')
-      __webpack_require__('FlQf')
-      __webpack_require__('bBy9')
-      __webpack_require__('g33z')
-      __webpack_require__('XLbu')
-      __webpack_require__('/h46')
-      __webpack_require__('dVTT')
-      module.exports = __webpack_require__('WEpk').Map
-
-      /***/
-    },
-
-    /***/ Wu5q: /***/ function(module, exports, __webpack_require__) {
-      'use strict'
-
-      var dP = __webpack_require__('2faE').f
-      var create = __webpack_require__('oVml')
-      var redefineAll = __webpack_require__('XJU/')
-      var ctx = __webpack_require__('2GTP')
-      var anInstance = __webpack_require__('EXMj')
-      var forOf = __webpack_require__('oioR')
-      var $iterDefine = __webpack_require__('MPFp')
-      var step = __webpack_require__('UO39')
-      var setSpecies = __webpack_require__('TJWN')
-      var DESCRIPTORS = __webpack_require__('jmDH')
-      var fastKey = __webpack_require__('6/1s').fastKey
-      var validate = __webpack_require__('n3ko')
-      var SIZE = DESCRIPTORS ? '_s' : 'size'
-
-      var getEntry = function(that, key) {
-        // fast case
-        var index = fastKey(key)
-        var entry
-        if (index !== 'F') return that._i[index]
-        // frozen object case
-        for (entry = that._f; entry; entry = entry.n) {
-          if (entry.k == key) return entry
-        }
-      }
-
-      module.exports = {
-        getConstructor: function(wrapper, NAME, IS_MAP, ADDER) {
-          var C = wrapper(function(that, iterable) {
-            anInstance(that, C, NAME, '_i')
-            that._t = NAME // collection type
-            that._i = create(null) // index
-            that._f = undefined // first entry
-            that._l = undefined // last entry
-            that[SIZE] = 0 // size
-            if (iterable != undefined)
-              forOf(iterable, IS_MAP, that[ADDER], that)
-          })
-          redefineAll(C.prototype, {
-            // 23.1.3.1 Map.prototype.clear()
-            // 23.2.3.2 Set.prototype.clear()
-            clear: function clear() {
-              for (
-                var that = validate(this, NAME),
-                  data = that._i,
-                  entry = that._f;
-                entry;
-                entry = entry.n
-              ) {
-                entry.r = true
-                if (entry.p) entry.p = entry.p.n = undefined
-                delete data[entry.i]
-              }
-              that._f = that._l = undefined
-              that[SIZE] = 0
-            },
-            // 23.1.3.3 Map.prototype.delete(key)
-            // 23.2.3.4 Set.prototype.delete(value)
-            delete: function(key) {
-              var that = validate(this, NAME)
-              var entry = getEntry(that, key)
-              if (entry) {
-                var next = entry.n
-                var prev = entry.p
-                delete that._i[entry.i]
-                entry.r = true
-                if (prev) prev.n = next
-                if (next) next.p = prev
-                if (that._f == entry) that._f = next
-                if (that._l == entry) that._l = prev
-                that[SIZE]--
-              }
-              return !!entry
-            },
-            // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)
-            // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)
-            forEach: function forEach(callbackfn /* , that = undefined */) {
-              validate(this, NAME)
-              var f = ctx(
-                callbackfn,
-                arguments.length > 1 ? arguments[1] : undefined,
-                3
-              )
-              var entry
-              while ((entry = entry ? entry.n : this._f)) {
-                f(entry.v, entry.k, this)
-                // revert to the last existing entry
-                while (entry && entry.r) entry = entry.p
-              }
-            },
-            // 23.1.3.7 Map.prototype.has(key)
-            // 23.2.3.7 Set.prototype.has(value)
-            has: function has(key) {
-              return !!getEntry(validate(this, NAME), key)
-            },
-          })
-          if (DESCRIPTORS)
-            dP(C.prototype, 'size', {
-              get: function() {
-                return validate(this, NAME)[SIZE]
-              },
-            })
-          return C
-        },
-        def: function(that, key, value) {
-          var entry = getEntry(that, key)
-          var prev, index
-          // change existing entry
-          if (entry) {
-            entry.v = value
-            // create new entry
-          } else {
-            that._l = entry = {
-              i: (index = fastKey(key, true)), // <- index
-              k: key, // <- key
-              v: value, // <- value
-              p: (prev = that._l), // <- previous entry
-              n: undefined, // <- next entry
-              r: false, // <- removed
-            }
-            if (!that._f) that._f = entry
-            if (prev) prev.n = entry
-            that[SIZE]++
-            // add to index
-            if (index !== 'F') that._i[index] = entry
-          }
-          return that
-        },
-        getEntry: getEntry,
-        setStrong: function(C, NAME, IS_MAP) {
-          // add .keys, .values, .entries, [@@iterator]
-          // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11
-          $iterDefine(
-            C,
-            NAME,
-            function(iterated, kind) {
-              this._t = validate(iterated, NAME) // target
-              this._k = kind // kind
-              this._l = undefined // previous
-            },
-            function() {
-              var that = this
-              var kind = that._k
-              var entry = that._l
-              // revert to the last existing entry
-              while (entry && entry.r) entry = entry.p
-              // get next entry
-              if (
-                !that._t ||
-                !(that._l = entry = entry ? entry.n : that._t._f)
-              ) {
-                // or finish the iteration
-                that._t = undefined
-                return step(1)
-              }
-              // return step by kind
-              if (kind == 'keys') return step(0, entry.k)
-              if (kind == 'values') return step(0, entry.v)
-              return step(0, [entry.k, entry.v])
-            },
-            IS_MAP ? 'entries' : 'values',
-            !IS_MAP,
-            true
-          )
-
-          // add [@@species], 23.1.2.2, 23.2.2.2
-          setSpecies(NAME)
-        },
-      }
-
-      /***/
-    },
-
-    /***/ XLbu: /***/ function(module, exports, __webpack_require__) {
-      // https://github.com/DavidBruant/Map-Set.prototype.toJSON
-      var $export = __webpack_require__('Y7ZC')
-
-      $export($export.P + $export.R, 'Map', {
-        toJSON: __webpack_require__('8iia')('Map'),
-      })
-
-      /***/
-    },
-
-    /***/ dVTT: /***/ function(module, exports, __webpack_require__) {
-      // https://tc39.github.io/proposal-setmap-offrom/#sec-map.from
-      __webpack_require__('aPfg')('Map')
-
-      /***/
-    },
-
-    /***/ g33z: /***/ function(module, exports, __webpack_require__) {
-      'use strict'
-
-      var strong = __webpack_require__('Wu5q')
-      var validate = __webpack_require__('n3ko')
-      var MAP = 'Map'
-
-      // 23.1 Map Objects
-      module.exports = __webpack_require__('raTm')(
-        MAP,
-        function(get) {
-          return function Map() {
-            return get(this, arguments.length > 0 ? arguments[0] : undefined)
-          }
-        },
-        {
-          // 23.1.3.6 Map.prototype.get(key)
-          get: function get(key) {
-            var entry = strong.getEntry(validate(this, MAP), key)
-            return entry && entry.v
-          },
-          // 23.1.3.9 Map.prototype.set(key, value)
-          set: function set(key, value) {
-            return strong.def(validate(this, MAP), key === 0 ? 0 : key, value)
-          },
-        },
-        strong,
-        true
-      )
-
-      /***/
-    },
-
-    /***/ qArv: /***/ function(module, exports, __webpack_require__) {
-      'use strict'
-
-      var _Object$defineProperty = __webpack_require__('hfKm')
-
-      var __importStar =
-        (this && this.__importStar) ||
-        function(mod) {
-          if (mod && mod.__esModule) return mod
-          var result = {}
-          if (mod != null)
-            for (var k in mod) {
-              if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]
-            }
-          result['default'] = mod
-          return result
-        }
-
-      _Object$defineProperty(exports, '__esModule', {
-        value: true,
-      })
-
-      var React = __importStar(__webpack_require__('q1tI'))
-
-      exports.DataManagerContext = React.createContext(null)
-
-      /***/
-    },
-
     /***/ yLiY: /***/ function(module, exports, __webpack_require__) {
       'use strict'

@@ -1165,10 +804,6 @@
       exports.__esModule = true
       exports.default = void 0

-      var _asyncToGenerator2 = _interopRequireDefault(
-        __webpack_require__('+oT+')
-      )
-
       var _promise = _interopRequireDefault(__webpack_require__('eVuF'))

       var _mitt = _interopRequireDefault(__webpack_require__('dZ6Y'))
@@ -1188,6 +823,18 @@
             'prefetch'
       var hasNoModule = 'noModule' in document.createElement('script')

+      function normalizeRoute(route) {
+        if (route[0] !== '/') {
+          throw new Error(
+            'Route name should start with a "/", got "' + route + '"'
+          )
+        }
+
+        route = route.replace(/\/index$/, '/')
+        if (route === '/') return route
+        return route.replace(/\/$/, '')
+      }
+
       function appendLink(href, rel, as) {
         return new _promise.default((res, rej, link) => {
           link = document.createElement('link')
@@ -1206,7 +853,6 @@
           this.buildId = buildId
           this.assetPrefix = assetPrefix
           this.pageCache = {}
-          this.prefetched = {}
           this.pageRegisterEvents = (0, _mitt.default)()
           this.loadingRoutes = {}

@@ -1227,29 +873,19 @@
           return this.promisedBuildManifest.then(
             man =>
               (man[route] &&
-                man[route].map(url => '/_next/' + encodeURI(url))) ||
+                man[route].map(
+                  url => this.assetPrefix + '/_next/' + encodeURI(url)
+                )) ||
               []
           )
         }

-        normalizeRoute(route) {
-          if (route[0] !== '/') {
-            throw new Error(
-              'Route name should start with a "/", got "' + route + '"'
-            )
-          }
-
-          route = route.replace(/\/index$/, '/')
-          if (route === '/') return route
-          return route.replace(/\/$/, '')
-        }
-
         loadPage(route) {
           return this.loadPageScript(route).then(v => v.page)
         }

         loadPageScript(route) {
-          route = this.normalizeRoute(route)
+          route = normalizeRoute(route)
           return new _promise.default((resolve, reject) => {
             var fire = _ref => {
               var { error, page, mod } = _ref
@@ -1322,20 +958,15 @@
         }

         loadRoute(route) {
-          var _this = this
-
-          return (0, _asyncToGenerator2.default)(function*() {
-            route = _this.normalizeRoute(route)
-            var scriptRoute = route === '/' ? '/index.js' : route + '.js'
-            var url =
-              _this.assetPrefix +
-              '/_next/static/' +
-              encodeURIComponent(_this.buildId) +
-              '/pages' +
-              encodeURI(scriptRoute)
-
-            _this.loadScript(url, route, true)
-          })()
+          route = normalizeRoute(route)
+          var scriptRoute = route === '/' ? '/index.js' : route + '.js'
+          var url =
+            this.assetPrefix +
+            '/_next/static/' +
+            encodeURIComponent(this.buildId) +
+            '/pages' +
+            encodeURI(scriptRoute)
+          this.loadScript(url, route, true)
         }

         loadScript(url, route, isPage) {
@@ -1390,39 +1021,38 @@
         }

         prefetch(route, isDependency) {
-          var _this2 = this
-
-          return (0, _asyncToGenerator2.default)(function*() {
-            // https://github.com/GoogleChromeLabs/quicklink/blob/453a661fa1fa940e2d2e044452398e38c67a98fb/src/index.mjs#L115-L118
-            // License: Apache 2.0
-            var cn
-
-            if ((cn = navigator.connection)) {
-              // Don't prefetch if using 2G or if Save-Data is enabled.
-              if (cn.saveData || /2g/.test(cn.effectiveType)) return
-            }
-
-            var url = _this2.assetPrefix
+          // https://github.com/GoogleChromeLabs/quicklink/blob/453a661fa1fa940e2d2e044452398e38c67a98fb/src/index.mjs#L115-L118
+          // License: Apache 2.0
+          var cn
+
+          if ((cn = navigator.connection)) {
+            // Don't prefetch if using 2G or if Save-Data is enabled.
+            if (cn.saveData || /2g/.test(cn.effectiveType))
+              return _promise.default.resolve()
+          }

-            if (isDependency) {
-              url += route
-            } else {
-              route = _this2.normalizeRoute(route)
-              _this2.prefetched[route] = true
-              var scriptRoute = (route === '/' ? '/index' : route) + '.js'
+          var url

-              if (true && hasNoModule) {
-                scriptRoute = scriptRoute.replace(/\.js$/, '.module.js')
-              }
+          if (isDependency) {
+            url = route
+          } else {
+            route = normalizeRoute(route)
+            var scriptRoute = (route === '/' ? '/index' : route) + '.js'

-              url +=
-                '/_next/static/' +
-                encodeURIComponent(_this2.buildId) +
-                '/pages' +
-                encodeURI(scriptRoute)
+            if (true && hasNoModule) {
+              scriptRoute = scriptRoute.replace(/\.js$/, '.module.js')
             }

-            if (
+            url =
+              this.assetPrefix +
+              '/_next/static/' +
+              encodeURIComponent(this.buildId) +
+              '/pages' +
+              encodeURI(scriptRoute)
+          }
+
+          return _promise.default
+            .all(
               document.querySelector(
                 'link[rel="' +
                   relPrefetch +
@@ -1432,33 +1062,27 @@
                   route +
                   '"]'
               )
-            ) {
-              return
-            }
-
-            return _promise.default
-              .all([
-                appendLink(
-                  url,
-                  relPrefetch,
-                  url.match(/\.css$/) ? 'style' : 'script'
-                ),
-                true &&
-                  !isDependency &&
-                  _this2
-                    .getDependencies(route)
-                    .then(urls =>
-                      _promise.default.all(
-                        urls.map(url => _this2.prefetch(url, true))
-                      )
+                ? []
+                : [
+                    appendLink(
+                      url,
+                      relPrefetch,
+                      url.match(/\.css$/) ? 'style' : 'script'
                     ),
-              ])
-              .then(
-                // do not return any data
-                () => {}, // swallow prefetch errors
-                () => {}
-              )
-          })()
+                    true &&
+                      !isDependency &&
+                      this.getDependencies(route).then(urls =>
+                        _promise.default.all(
+                          urls.map(url => this.prefetch(url, true))
+                        )
+                      ),
+                  ]
+            )
+            .then(
+              // do not return any data
+              () => {}, // swallow prefetch errors
+              () => {}
+            )
         }
       }
```
</details>
<details>
<summary>Diff for <strong>index.html</strong></summary>

```diff
@@ -21,13 +21,13 @@
     />
     <link
       rel="preload"
-      href="/_next/static/runtime/webpack-7928590be3ef2e55b835.module.js"
+      href="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js"
       as="script"
       crossorigin="anonymous"
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/framework.9c9aa574c484a7d0240e.module.js"
+      href="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js"
       as="script"
       crossorigin="anonymous"
     />
@@ -39,13 +39,13 @@
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.08c4064758778ec3689a.module.js"
+      href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.c5cfe57ad45f291e53e4.module.js"
       as="script"
       crossorigin="anonymous"
     />
     <link
       rel="preload"
-      href="/_next/static/runtime/main-6c919dd5a10cd6022375.module.js"
+      href="/_next/static/runtime/main-99b0cb5e34f4c0acb752.module.js"
       as="script"
       crossorigin="anonymous"
     />
@@ -53,7 +53,7 @@

Hello world 👋

```
</details>
<details>
<summary>Diff for <strong>link.html</strong></summary>

```diff
@@ -21,13 +21,13 @@
     />
     <link
       rel="preload"
-      href="/_next/static/runtime/webpack-7928590be3ef2e55b835.module.js"
+      href="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js"
       as="script"
       crossorigin="anonymous"
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/framework.9c9aa574c484a7d0240e.module.js"
+      href="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js"
       as="script"
       crossorigin="anonymous"
     />
@@ -39,13 +39,13 @@
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.08c4064758778ec3689a.module.js"
+      href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.c5cfe57ad45f291e53e4.module.js"
       as="script"
       crossorigin="anonymous"
     />
     <link
       rel="preload"
-      href="/_next/static/runtime/main-6c919dd5a10cd6022375.module.js"
+      href="/_next/static/runtime/main-99b0cb5e34f4c0acb752.module.js"
       as="script"
       crossorigin="anonymous"
     />
@@ -58,7 +58,7 @@

```
</details>
<details>
<summary>Diff for <strong>withRouter.html</strong></summary>

```diff
@@ -21,13 +21,13 @@
     />
     <link
       rel="preload"
-      href="/_next/static/runtime/webpack-7928590be3ef2e55b835.module.js"
+      href="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js"
       as="script"
       crossorigin="anonymous"
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/framework.9c9aa574c484a7d0240e.module.js"
+      href="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js"
       as="script"
       crossorigin="anonymous"
     />
@@ -39,13 +39,13 @@
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.08c4064758778ec3689a.module.js"
+      href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.c5cfe57ad45f291e53e4.module.js"
       as="script"
       crossorigin="anonymous"
     />
     <link
       rel="preload"
-      href="/_next/static/runtime/main-6c919dd5a10cd6022375.module.js"
+      href="/_next/static/runtime/main-99b0cb5e34f4c0acb752.module.js"
       as="script"
       crossorigin="anonymous"
     />
@@ -53,7 +53,7 @@

I use withRouter

```

Serverless Mode (Decrease detected ✓)

General Overall decrease ✓

|  | zeit/next.js canary v9.1.7 | zeit/next.js refs/tags/v9.1.8-canary.15 | Change |
| - | - | - | - |
| buildDuration | 14.9s | 14.7s | -263ms |
| nodeModulesSize | 49 MB | 49 MB | -22 B |

Client Bundles (main, webpack, commons) Overall decrease ✓

|  | zeit/next.js canary v9.1.7 | zeit/next.js refs/tags/v9.1.8-canary.15 | Change |
| - | - | - | - |
| main-HASH.js gzip | 6.43 kB | 5.12 kB | -1.31 kB |
| webpack-HASH.js gzip | 746 B | 746 B | ✓ |
| 4952ddcd88e7..54d3.js gzip | 4.68 kB | 4.68 kB | ✓ |
| commons.HASH.js gzip | 4.06 kB | 4.06 kB | ✓ |
| de003c3a9d30..6ef5.js gzip | 13.8 kB | N/A | N/A |
| framework.HASH.js gzip | 39.5 kB | 39.1 kB | -311 B |
| de003c3a9d30..e54b.js gzip | N/A | 13.7 kB | N/A |
| Overall change | 69.2 kB | 67.5 kB | -1.62 kB |

Client Bundles (main, webpack, commons) Modern Overall decrease ✓

|  | zeit/next.js canary v9.1.7 | zeit/next.js refs/tags/v9.1.8-canary.15 | Change |
| - | - | - | - |
| main-HASH.module.js gzip | 5.41 kB | 4.18 kB | -1.24 kB |
| webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
| 4952ddcd88e7..dule.js gzip | 5.56 kB | 5.56 kB | ✓ |
| de003c3a9d30..dule.js gzip | 12.6 kB | N/A | N/A |
| framework.HA..dule.js gzip | 39.4 kB | 39.1 kB | -310 B |
| de003c3a9d30..dule.js gzip | N/A | 12.5 kB | N/A |
| Overall change | 63.7 kB | 62.1 kB | -1.54 kB |

Legacy Client Bundles (polyfills)

|  | zeit/next.js canary v9.1.7 | zeit/next.js refs/tags/v9.1.8-canary.15 | Change |
| - | - | - | - |
| polyfills-HASH.js gzip | 4.76 kB | 4.76 kB | ✓ |
| Overall change | 4.76 kB | 4.76 kB | ✓ |

Client Pages Overall decrease ✓

|  | zeit/next.js canary v9.1.7 | zeit/next.js refs/tags/v9.1.8-canary.15 | Change |
| - | - | - | - |
| _app.js gzip | 1.33 kB | 1.33 kB | ✓ |
| _error.js gzip | 4.07 kB | 4.07 kB | ✓ |
| hooks.js gzip | 779 B | 779 B | ✓ |
| index.js gzip | 222 B | 222 B | ✓ |
| link.js gzip | 2.93 kB | 2.9 kB | -28 B |
| routerDirect.js gzip | 283 B | 283 B | ✓ |
| withRouter.js gzip | 282 B | 282 B | ✓ |
| Overall change | 9.89 kB | 9.87 kB | -28 B |

Client Pages Modern Overall decrease ✓

|  | zeit/next.js canary v9.1.7 | zeit/next.js refs/tags/v9.1.8-canary.15 | Change |
| - | - | - | - |
| _app.module.js gzip | 757 B | 757 B | ✓ |
| _error.module.js gzip | 3.06 kB | 3.06 kB | ✓ |
| hooks.module.js gzip | 371 B | 371 B | ✓ |
| index.module.js gzip | 212 B | 212 B | ✓ |
| link.module.js gzip | 2.49 kB | 2.47 kB | -22 B |
| routerDirect..dule.js gzip | 273 B | 273 B | ✓ |
| withRouter.m..dule.js gzip | 272 B | 272 B | ✓ |
| Overall change | 7.43 kB | 7.41 kB | -22 B |

Client Build Manifests

|  | zeit/next.js canary v9.1.7 | zeit/next.js refs/tags/v9.1.8-canary.15 | Change |
| - | - | - | - |
| _buildManifest.js gzip | 61 B | 61 B | ✓ |
| _buildManife..dule.js gzip | 61 B | 61 B | ✓ |
| Overall change | 122 B | 122 B | ✓ |

Serverless bundles Overall decrease ✓

|  | zeit/next.js canary v9.1.7 | zeit/next.js refs/tags/v9.1.8-canary.15 | Change |
| - | - | - | - |
| _error.js gzip | 78.9 kB | 77.8 kB | -1.12 kB |
| hooks.html gzip | 1.07 kB | 1.05 kB | -18 B |
| index.js gzip | 79.1 kB | 78 kB | -1.16 kB |
| link.js gzip | 81.3 kB | 80.4 kB | -913 B |
| routerDirect.js gzip | 79.2 kB | 78.1 kB | -1.15 kB |
| withRouter.js gzip | 79.3 kB | 78.1 kB | -1.2 kB |
| Overall change | 399 kB | 393 kB | -5.57 kB |


Successfully deployed to following URLs:

* https://pollen-tracker-p1wmj0bvd.now.sh
* https://pollen-tracker.now.sh
* https://pollen-tracker.dblechoc.now.sh
* https://pollen-tracker-git-master.dblechoc.now.sh


Successfully deployed to following URLs:

* https://datocms-plugin-board-subtitles-pa1xe2hhq.now.sh
* https://datocms-plugin-board-subtitles.symbio.now.sh
* https://datocms-plugin-board-subtitles-git-master.symbio.now.sh


I check It with 2.5.2 and 2.6.3, and work good.
Bye Renzo


I can revert ?

Or make a pull request with revert + fix ?


b.t.w. I think we might have had this discussion before, but I think it a little counter intuitive to have a port called `XYZ-7.0` install a version 7.1...

Not necessarily suggesting we change anything now, for the current ports, but going forward I would suggest we drop the `.0` from the name of the clang ports, for future versions (i.e. make them similar to how we name the gcc ports). So the next clang/llvm/lldb ports should be named `XYZ-10` and not `XYZ-10.0`....


in just case DRY


Successfully deployed to following URLs:

* https://iiwt-505v8fa81.now.sh
* https://iiwt.now.sh
* https://iiwt.bsba.now.sh
* https://iiwt-git-master.bsba.now.sh


Successfully deployed to following URLs:

* https://flip-coin-react-app-kjca1z28x.now.sh
* https://flip-coin-react-app.now.sh
* https://flip-coin-react-app.adev00.now.sh
* https://flip-coin-react-app-git-master.adev00.now.sh


Что улучшить:
1. Сетка из картинок вообще не адаптивна. По заданию она должна быть 4 - 3 - 2 -1 элементов в ряд при уменьшении экрана.
2. Если находишься на 1-й странице или на последней, то все еще можно нажимать на стрелки.
3. В консоли все равно возникает ошибка (хоть все вроде как и работает) `ReferenceError: options is not defined` на строке `index.js:102`.
4. Твой `preloader` лучше показывать не вверху экрана, а вместо всей сетки из картинок, пока они загружаются.


---
layout: slide
title: "Welcome to our second slide!"
---
Your text
Use the left arrow to go back!


update made on sit


Hi Deyan,

this is indeed due to a difference between our and your setup: We have one folder where all of our tools are downloaded and installed to, as well as a second folder containing only symbolic links to those tools currently in use. This designated `link` folder is part of our `$PATH` so that tools can be easily called on. However, JAR files need to be executed by java, which the system does not (know to) do by default. That is why you are getting that error when calling the JAR directly. To make this symlink-based system work for JAR files, we place the `run_jar.sh` file in the same folder as the respective JAR (in this case the `picard.jar` file) and symlink the `run_jar.sh` instead of the JAR:

(In your case this might look something like this:)
```
mv /data/links/picard-2.18.26  /data/tools/
cp run_jar.sh  /data/tools/picard-2.18.26/run_picard-2.18.26.sh
cd /data/links
ln -s ../tools/picard-2.18.26/run_picard-2.18.26.sh  picard
export PATH="/data/links:$PATH"
```

A call to `picard` will then execute `run_picard-2.18.26.sh`, which in turn acts as a wrapper script that calls on the JAR file residing in the same folder (`picard.jar`) using `java -jar`. Any parameter or argument supplied to the wrapper will also be forwarded to the JAR.

You can of course also define your tools via `profile` files if you prefer, but that will probably mess with many of the scripts in my repo, as they typically require tools to be contained in `$PATH`. Also, the first stage of all pipelines is meant to list all tools in the designated symlink folder so that their versions will be logged in the bpipe logs for future reference.

Hope this helps, and let me know otherwise,
TJ


Successfully deployed to following URLs:

* https://itrainstation-17vvz0fjt.now.sh
* https://itrainstation.now.sh
* https://itrainstation.malikfaizanhaider.now.sh
* https://itrainstation-git-master.malikfaizanhaider.now.sh


If "$USER" is _not_ set, it doesn't matter if `[` or `[[` is used, it will still trigger an error as both `[ =` and `[[ =` are invalid.

This should have double quotes for `$USER` (as it should be parsed). If this is done, then there is no need to switch to the UNIX incompatible `[[` but `[` should just work.

i.e:
```
 if [ "$USER" == 'root' ]; then
```

Reference: https://stackoverflow.com/questions/13617843/


keyboard


Successfully deployed to following URLs:

* https://haywire-frjqvm4os.now.sh
* https://haywire.now.sh
* https://haywire.dagwoodsandwich56.now.sh
* https://haywire-git-master.dagwoodsandwich56.now.sh


Breaks back-compatibility. This change must also introduce change to composer.json, as this script relies on 3rd party module which may not have this.


@JuliaRegistrator register


:clap:


This commit has been deployed to DigitalOcean Spaces for easy reviewing.

| [kubernetes-tool](https://community-tools.sfo2.digitaloceanspaces.com/commits/kubernetes-tool/c04253897dfa7b8cdb543da1054d2ebaea15aa44/index.html) |
|---|


自动构建 [auto-dragalia-78117408.zip](https://circleci.com/gh/NateScarlet/auto-dragalia/846/artifacts/0/home/circleci/project/artifacts/auto-dragalia-78117408.zip)


Come to think of it, I have been using SBT for ABOUT that long. 😉 😆


Registration pull request created: [JuliaRegistries/General/7981](https://github.com/JuliaRegistries/General/pull/7981)

After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.

This will be done automatically if [Julia TagBot](https://github.com/apps/julia-tagbot) is installed, or can be done manually through the github interface, or via:
```
git tag -a v0.1.0 -m "<description of version>" ab65523ef2a1d2ee50de8ea0c8a8ed7e1aaa7095
git push origin v0.1.0
```


Each project media in the database? Shouldn't this be in a rake task instead?


Failed to assign a domain to your deployment due to the following error:

~~~
Deployment not found.
~~~

([Learn more](https://zeit.co/dtox-consulting/zenunu/78rbd6iir) or [visit](https://zenunu-78rbd6iir.now.sh) the non-aliased deployment)


Failed to assign a domain to your deployment due to the following error:

~~~
Deployment not found.
~~~

([Learn more](https://zeit.co/dtox-consulting/zenunu/9wfrisfnd) or [visit](https://zenunu-9wfrisfnd.now.sh) the non-aliased deployment)


Why the name ‘is_settable’ instead of ‘is_built’?


just a note - it's not "capture escape reduction", it's a statscore :)


Successfully deployed to following URLs:

* https://style-case-f3jhzm8bf.now.sh
* https://style-case.now.sh
* https://style-case.chadsaglam.now.sh
* https://style-case-git-master.chadsaglam.now.sh


Probably a consequence of history where versions were called 3.0, 3.1, 3.2, ... and then versioning was somehow changed. The gcc compiled underwent something similar starting with gcc 5.

Probably changing the name to `clang-X` rather than `clang-X.0` makes sense.


TeamCity MAS / MAS [Build 1.1.0.542-MAS-178-update-node](https://teamcity.nice.org.uk/viewLog.html?buildId=64300&buildTypeId=Mas_Mas) outcome was **SUCCESS**
Summary: Tests passed: 5 Build time: 00:01:11


### Workflows & Completion Times
**sleeps** completed after *5.704 seconds*


What do you mean ?


There is a lot of returning values by expression without semicolon in rust. I think it's one of those peculiarities it's worth getting used to.


Please move me to alumni as well :)


Successfully deployed to following URLs:

* https://api-cx5tjonu7.now.sh
* https://api.komfy.now.sh
* https://api-git-master.komfy.now.sh


I guess with `.iterator()` it works better, ok


Successfully deployed to following URLs:

* https://national-parks-lzawwmj44.now.sh
* https://national-parks.now.sh
* https://national-parks.jsnkng.now.sh
* https://national-parks-git-master.jsnkng.now.sh


Successfully deployed to following URLs:

* https://leerob-m49sf6px3.now.sh
* https://leerob.io
* https://www.leerob.io
* https://leerob.leerob1.now.sh
* https://leerob-git-master.leerob1.now.sh


No worries. I wasn't sure if this was the best way to go about it but I needed to get something up so I could remove duplicates in the application that I'm working on. Thanks!


hello


Successfully deployed to following URLs:

* https://nano-fmr27dz9l.now.sh
* https://nano.jianzhao.org
* https://nano.cbdyzj.now.sh
* https://nano-git-master.cbdyzj.now.sh


You are right. Someone should define where and how to write some interesting use cases.
I'm not sure if the tests are a good place for complex scenarios, but the example would be.


Successfully deployed to following URLs:

* https://kolabiq-k1ziv2du0.now.sh
* https://kolabiq.now.sh
* https://kolabiq.mikolaj-kubera.now.sh
* https://kolabiq-git-master.mikolaj-kubera.now.sh