Skip to content

Commit

Permalink
v12.0.10-canary.2
Browse files Browse the repository at this point in the history
  • Loading branch information
styfle committed Feb 1, 2022
1 parent e0095fa commit 9498946
Show file tree
Hide file tree
Showing 15 changed files with 22 additions and 22 deletions.
2 changes: 1 addition & 1 deletion lerna.json
Expand Up @@ -16,5 +16,5 @@
"registry": "https://registry.npmjs.org/"
}
},
"version": "12.0.10-canary.1"
"version": "12.0.10-canary.2"
}
2 changes: 1 addition & 1 deletion packages/create-next-app/package.json
@@ -1,6 +1,6 @@
{
"name": "create-next-app",
"version": "12.0.10-canary.1",
"version": "12.0.10-canary.2",
"keywords": [
"react",
"next",
Expand Down
4 changes: 2 additions & 2 deletions packages/eslint-config-next/package.json
@@ -1,6 +1,6 @@
{
"name": "eslint-config-next",
"version": "12.0.10-canary.1",
"version": "12.0.10-canary.2",
"description": "ESLint configuration used by NextJS.",
"main": "index.js",
"license": "MIT",
Expand All @@ -9,7 +9,7 @@
"directory": "packages/eslint-config-next"
},
"dependencies": {
"@next/eslint-plugin-next": "12.0.10-canary.1",
"@next/eslint-plugin-next": "12.0.10-canary.2",
"@rushstack/eslint-patch": "^1.0.8",
"@typescript-eslint/parser": "^5.0.0",
"eslint-import-resolver-node": "^0.3.4",
Expand Down
2 changes: 1 addition & 1 deletion packages/eslint-plugin-next/package.json
@@ -1,6 +1,6 @@
{
"name": "@next/eslint-plugin-next",
"version": "12.0.10-canary.1",
"version": "12.0.10-canary.2",
"description": "ESLint plugin for NextJS.",
"main": "lib/index.js",
"license": "MIT",
Expand Down
2 changes: 1 addition & 1 deletion packages/next-bundle-analyzer/package.json
@@ -1,6 +1,6 @@
{
"name": "@next/bundle-analyzer",
"version": "12.0.10-canary.1",
"version": "12.0.10-canary.2",
"main": "index.js",
"license": "MIT",
"repository": {
Expand Down
2 changes: 1 addition & 1 deletion packages/next-codemod/package.json
@@ -1,6 +1,6 @@
{
"name": "@next/codemod",
"version": "12.0.10-canary.1",
"version": "12.0.10-canary.2",
"license": "MIT",
"dependencies": {
"chalk": "4.1.0",
Expand Down
2 changes: 1 addition & 1 deletion packages/next-env/package.json
@@ -1,6 +1,6 @@
{
"name": "@next/env",
"version": "12.0.10-canary.1",
"version": "12.0.10-canary.2",
"keywords": [
"react",
"next",
Expand Down
2 changes: 1 addition & 1 deletion packages/next-mdx/package.json
@@ -1,6 +1,6 @@
{
"name": "@next/mdx",
"version": "12.0.10-canary.1",
"version": "12.0.10-canary.2",
"main": "index.js",
"license": "MIT",
"repository": {
Expand Down
2 changes: 1 addition & 1 deletion packages/next-plugin-storybook/package.json
@@ -1,6 +1,6 @@
{
"name": "@next/plugin-storybook",
"version": "12.0.10-canary.1",
"version": "12.0.10-canary.2",
"repository": {
"url": "vercel/next.js",
"directory": "packages/next-plugin-storybook"
Expand Down
2 changes: 1 addition & 1 deletion packages/next-polyfill-module/package.json
@@ -1,6 +1,6 @@
{
"name": "@next/polyfill-module",
"version": "12.0.10-canary.1",
"version": "12.0.10-canary.2",
"description": "A standard library polyfill for ES Modules supporting browsers (Edge 16+, Firefox 60+, Chrome 61+, Safari 10.1+)",
"main": "dist/polyfill-module.js",
"license": "MIT",
Expand Down
2 changes: 1 addition & 1 deletion packages/next-polyfill-nomodule/package.json
@@ -1,6 +1,6 @@
{
"name": "@next/polyfill-nomodule",
"version": "12.0.10-canary.1",
"version": "12.0.10-canary.2",
"description": "A polyfill for non-dead, nomodule browsers.",
"main": "dist/polyfill-nomodule.js",
"license": "MIT",
Expand Down
2 changes: 1 addition & 1 deletion packages/next-swc/package.json
@@ -1,6 +1,6 @@
{
"name": "@next/swc",
"version": "12.0.10-canary.1",
"version": "12.0.10-canary.2",
"private": true,
"scripts": {
"build-native": "napi build --platform --cargo-name next_swc_napi native",
Expand Down
14 changes: 7 additions & 7 deletions packages/next/package.json
@@ -1,6 +1,6 @@
{
"name": "next",
"version": "12.0.10-canary.1",
"version": "12.0.10-canary.2",
"description": "The React Framework",
"main": "./dist/server/next.js",
"license": "MIT",
Expand Down Expand Up @@ -71,7 +71,7 @@
]
},
"dependencies": {
"@next/env": "12.0.10-canary.1",
"@next/env": "12.0.10-canary.2",
"caniuse-lite": "^1.0.30001283",
"postcss": "8.4.5",
"styled-jsx": "5.0.0",
Expand Down Expand Up @@ -119,11 +119,11 @@
"@hapi/accept": "5.0.2",
"@napi-rs/cli": "1.2.1",
"@napi-rs/triples": "1.0.3",
"@next/polyfill-module": "12.0.10-canary.1",
"@next/polyfill-nomodule": "12.0.10-canary.1",
"@next/react-dev-overlay": "12.0.10-canary.1",
"@next/react-refresh-utils": "12.0.10-canary.1",
"@next/swc": "12.0.10-canary.1",
"@next/polyfill-module": "12.0.10-canary.2",
"@next/polyfill-nomodule": "12.0.10-canary.2",
"@next/react-dev-overlay": "12.0.10-canary.2",
"@next/react-refresh-utils": "12.0.10-canary.2",
"@next/swc": "12.0.10-canary.2",
"@peculiar/webcrypto": "1.1.7",
"@taskr/clear": "1.1.0",
"@taskr/esnext": "1.1.0",
Expand Down
2 changes: 1 addition & 1 deletion packages/react-dev-overlay/package.json
@@ -1,6 +1,6 @@
{
"name": "@next/react-dev-overlay",
"version": "12.0.10-canary.1",
"version": "12.0.10-canary.2",
"description": "A development-only overlay for developing React applications.",
"repository": {
"url": "vercel/next.js",
Expand Down
2 changes: 1 addition & 1 deletion packages/react-refresh-utils/package.json
@@ -1,6 +1,6 @@
{
"name": "@next/react-refresh-utils",
"version": "12.0.10-canary.1",
"version": "12.0.10-canary.2",
"description": "An experimental package providing utilities for React Refresh.",
"repository": {
"url": "vercel/next.js",
Expand Down

1 comment on commit 9498946

@ijjk
Copy link
Member

@ijjk ijjk commented on 9498946 Feb 1, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Stats from current release

Default Build (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary v12.0.9 vercel/next.js refs/heads/canary Change
buildDuration 18.4s 18s -383ms
buildDurationCached 4.6s 4.7s ⚠️ +102ms
nodeModulesSize 358 MB 358 MB ⚠️ +11.4 kB
Page Load Tests Overall increase ✓
vercel/next.js canary v12.0.9 vercel/next.js refs/heads/canary Change
/ failed reqs 0 0
/ total time (seconds) 4.549 4.426 -0.12
/ avg req/sec 549.61 564.86 +15.25
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 2.301 2.238 -0.06
/error-in-render avg req/sec 1086.39 1116.94 +30.55
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary v12.0.9 vercel/next.js refs/heads/canary Change
450.HASH.js gzip 179 B 179 B
framework-HASH.js gzip 42.2 kB 42.2 kB
main-HASH.js gzip 27.2 kB 27.2 kB ⚠️ +18 B
webpack-HASH.js gzip 1.44 kB 1.44 kB
Overall change 71 kB 71 kB ⚠️ +18 B
Legacy Client Bundles (polyfills)
vercel/next.js canary v12.0.9 vercel/next.js refs/heads/canary Change
polyfills-HASH.js gzip 31 kB 31 kB
Overall change 31 kB 31 kB
Client Pages Overall decrease ✓
vercel/next.js canary v12.0.9 vercel/next.js refs/heads/canary Change
_app-HASH.js gzip 1.37 kB 1.37 kB
_error-HASH.js gzip 194 B 194 B
amp-HASH.js gzip 312 B 312 B
css-HASH.js gzip 326 B 326 B
dynamic-HASH.js gzip 2.37 kB 2.37 kB
head-HASH.js gzip 350 B 350 B
hooks-HASH.js gzip 919 B 919 B
image-HASH.js gzip 4.94 kB 4.94 kB -4 B
index-HASH.js gzip 263 B 263 B
link-HASH.js gzip 2.19 kB 2.19 kB
routerDirect..HASH.js gzip 321 B 321 B
script-HASH.js gzip 383 B 383 B
withRouter-HASH.js gzip 318 B 318 B
85e02e95b279..7e3.css gzip 107 B 107 B
Overall change 14.4 kB 14.4 kB -4 B
Client Build Manifests Overall decrease ✓
vercel/next.js canary v12.0.9 vercel/next.js refs/heads/canary Change
_buildManifest.js gzip 460 B 459 B -1 B
Overall change 460 B 459 B -1 B
Rendered Page Sizes Overall decrease ✓
vercel/next.js canary v12.0.9 vercel/next.js refs/heads/canary Change
index.html gzip 531 B 530 B -1 B
link.html gzip 545 B 544 B -1 B
withRouter.html gzip 526 B 525 B -1 B
Overall change 1.6 kB 1.6 kB -3 B

Diffs

Diff for _buildManifest.js
@@ -12,7 +12,7 @@ self.__BUILD_MANIFEST = {
   ],
   "/head": ["static\u002Fchunks\u002Fpages\u002Fhead-7100d3b2a548f0e4.js"],
   "/hooks": ["static\u002Fchunks\u002Fpages\u002Fhooks-538d621a0e670391.js"],
-  "/image": ["static\u002Fchunks\u002Fpages\u002Fimage-b1f110951983876f.js"],
+  "/image": ["static\u002Fchunks\u002Fpages\u002Fimage-53463827ccaef972.js"],
   "/link": ["static\u002Fchunks\u002Fpages\u002Flink-f0a2c3bb0706d8b2.js"],
   "/routerDirect": [
     "static\u002Fchunks\u002Fpages\u002FrouterDirect-76232dd6bc335a24.js"
Diff for image-HASH.js
@@ -225,6 +225,7 @@
         }
         return target;
       }
+      var loadedImageURLs = new Set();
       var allImgs = new Map();
       var perfObserver;
       var emptyDataURL =
@@ -439,6 +440,7 @@
               if (!imgRef.current) {
                 return;
               }
+              loadedImageURLs.add(src);
               if (placeholder === "blur") {
                 img.style.filter = "";
                 img.style.backgroundSize = "";
@@ -515,7 +517,6 @@
             "placeholder",
             "blurDataURL"
           ]);
-        var ref4;
         var imgRef = (0, _react).useRef(null);
         var rest = all;
         var layout = sizes ? "responsive" : "intrinsic";
@@ -560,12 +561,7 @@
           unoptimized = true;
           isLazy = false;
         }
-        if (
-          true &&
-          ((ref4 = imgRef.current) === null || ref4 === void 0
-            ? void 0
-            : ref4.complete)
-        ) {
+        if (true && loadedImageURLs.has(src)) {
           isLazy = false;
         }
         if (false) {
@@ -666,9 +662,8 @@
             wrapperStyle.maxWidth = "100%";
             hasSizer = true;
             sizerStyle.maxWidth = "100%";
-            // url encoded svg is a little bit shorten than base64 encoding
-            sizerSvgUrl = "data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 version=%271.1%27 width=%27"
-              .concat(widthInt, "%27 height=%27")
+            sizerSvgUrl = "data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%27"
+              .concat(widthInt, "%27%20height=%27")
               .concat(heightInt, "%27/%3e");
           } else if (layout === "fixed") {
             // <Image src="i.png" width="100" height="100" layout="fixed" />
Diff for main-HASH.js
@@ -628,7 +628,7 @@
         document.getElementById("__NEXT_DATA__").textContent
       );
       window.__NEXT_DATA__ = data;
-      var version = "12.0.9";
+      var version = "12.0.10-canary.2";
       exports.version = version;
       var looseToArray = function(input) {
         return [].slice.call(input);
@@ -3876,6 +3876,28 @@
       /***/
     },
 
+    /***/ 8887: /***/ function(__unused_webpack_module, exports) {
+      "use strict";
+
+      Object.defineProperty(exports, "__esModule", {
+        value: true
+      });
+      exports.getObjectClassLabel = getObjectClassLabel;
+      exports.isPlainObject = isPlainObject;
+      function getObjectClassLabel(value) {
+        return Object.prototype.toString.call(value);
+      }
+      function isPlainObject(value) {
+        if (getObjectClassLabel(value) !== "[object Object]") {
+          return false;
+        }
+        var prototype = Object.getPrototypeOf(value);
+        return prototype === null || prototype === Object.prototype;
+      } //# sourceMappingURL=is-plain-object.js.map
+
+      /***/
+    },
+
     /***/ 5660: /***/ function(__unused_webpack_module, exports) {
       "use strict";
 
@@ -9062,7 +9084,7 @@
       });
       exports["default"] = isError;
       exports.getProperError = getProperError;
-      var _isPlainObject = __webpack_require__(2288);
+      var _isPlainObject = __webpack_require__(8887);
       function isError(err) {
         return (
           typeof err === "object" &&
@@ -9089,30 +9111,6 @@
       /***/
     },
 
-    /***/ 2288: /***/ function(__unused_webpack_module, exports) {
-      "use strict";
-
-      Object.defineProperty(exports, "__esModule", {
-        value: true
-      });
-      exports.getObjectClassLabel = getObjectClassLabel;
-      exports.isPlainObject = isPlainObject;
-      function getObjectClassLabel(value) {
-        return Object.prototype.toString.call(value);
-      }
-      function isPlainObject(value) {
-        if (getObjectClassLabel(value) !== "[object Object]") {
-          return false;
-        }
-        const prototype = Object.getPrototypeOf(value);
-        return prototype === null || prototype === Object.prototype;
-      }
-
-      //# sourceMappingURL=is-plain-object.js.map
-
-      /***/
-    },
-
     /***/ 4522: /***/ function(
       __unused_webpack_module,
       exports,
Diff for index.html
@@ -19,7 +19,7 @@
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/main-dda21bde619fccde.js"
+      src="/_next/static/chunks/main-fa4c6c05decc26a4.js"
       defer=""
     ></script>
     <script
Diff for link.html
@@ -19,7 +19,7 @@
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/main-dda21bde619fccde.js"
+      src="/_next/static/chunks/main-fa4c6c05decc26a4.js"
       defer=""
     ></script>
     <script
Diff for withRouter.html
@@ -19,7 +19,7 @@
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/main-dda21bde619fccde.js"
+      src="/_next/static/chunks/main-fa4c6c05decc26a4.js"
       defer=""
     ></script>
     <script

Default Build with SWC (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary v12.0.9 vercel/next.js refs/heads/canary Change
buildDuration 23.4s 22.8s -582ms
buildDurationCached 4.6s 4.6s ⚠️ +38ms
nodeModulesSize 358 MB 358 MB ⚠️ +11.4 kB
Page Load Tests Overall decrease ⚠️
vercel/next.js canary v12.0.9 vercel/next.js refs/heads/canary Change
/ failed reqs 0 0
/ total time (seconds) 4.481 4.446 -0.04
/ avg req/sec 557.97 562.27 +4.3
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 2.219 2.363 ⚠️ +0.14
/error-in-render avg req/sec 1126.6 1058.17 ⚠️ -68.43
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary v12.0.9 vercel/next.js refs/heads/canary Change
450.HASH.js gzip 179 B 179 B
framework-HASH.js gzip 42.3 kB 42.3 kB
main-HASH.js gzip 27.3 kB 27.3 kB ⚠️ +15 B
webpack-HASH.js gzip 1.44 kB 1.44 kB
Overall change 71.3 kB 71.3 kB ⚠️ +15 B
Legacy Client Bundles (polyfills)
vercel/next.js canary v12.0.9 vercel/next.js refs/heads/canary Change
polyfills-HASH.js gzip 31 kB 31 kB
Overall change 31 kB 31 kB
Client Pages Overall increase ⚠️
vercel/next.js canary v12.0.9 vercel/next.js refs/heads/canary Change
_app-HASH.js gzip 1.35 kB 1.35 kB
_error-HASH.js gzip 180 B 180 B
amp-HASH.js gzip 305 B 305 B
css-HASH.js gzip 321 B 321 B
dynamic-HASH.js gzip 2.36 kB 2.36 kB
head-HASH.js gzip 342 B 342 B
hooks-HASH.js gzip 911 B 911 B
image-HASH.js gzip 4.97 kB 4.98 kB ⚠️ +11 B
index-HASH.js gzip 256 B 256 B
link-HASH.js gzip 2.21 kB 2.21 kB
routerDirect..HASH.js gzip 314 B 314 B
script-HASH.js gzip 375 B 375 B
withRouter-HASH.js gzip 309 B 309 B
85e02e95b279..7e3.css gzip 107 B 107 B
Overall change 14.3 kB 14.3 kB ⚠️ +11 B
Client Build Manifests Overall decrease ✓
vercel/next.js canary v12.0.9 vercel/next.js refs/heads/canary Change
_buildManifest.js gzip 459 B 458 B -1 B
Overall change 459 B 458 B -1 B
Rendered Page Sizes Overall decrease ✓
vercel/next.js canary v12.0.9 vercel/next.js refs/heads/canary Change
index.html gzip 531 B 531 B
link.html gzip 545 B 543 B -2 B
withRouter.html gzip 526 B 525 B -1 B
Overall change 1.6 kB 1.6 kB -3 B

Diffs

Diff for _buildManifest.js
@@ -12,7 +12,7 @@ self.__BUILD_MANIFEST = {
   ],
   "/head": ["static\u002Fchunks\u002Fpages\u002Fhead-7100d3b2a548f0e4.js"],
   "/hooks": ["static\u002Fchunks\u002Fpages\u002Fhooks-538d621a0e670391.js"],
-  "/image": ["static\u002Fchunks\u002Fpages\u002Fimage-b1f110951983876f.js"],
+  "/image": ["static\u002Fchunks\u002Fpages\u002Fimage-53463827ccaef972.js"],
   "/link": ["static\u002Fchunks\u002Fpages\u002Flink-f0a2c3bb0706d8b2.js"],
   "/routerDirect": [
     "static\u002Fchunks\u002Fpages\u002FrouterDirect-76232dd6bc335a24.js"
Diff for image-HASH.js
@@ -225,6 +225,7 @@
         }
         return target;
       }
+      var loadedImageURLs = new Set();
       var allImgs = new Map();
       var perfObserver;
       var emptyDataURL =
@@ -439,6 +440,7 @@
               if (!imgRef.current) {
                 return;
               }
+              loadedImageURLs.add(src);
               if (placeholder === "blur") {
                 img.style.filter = "";
                 img.style.backgroundSize = "";
@@ -515,7 +517,6 @@
             "placeholder",
             "blurDataURL"
           ]);
-        var ref4;
         var imgRef = (0, _react).useRef(null);
         var rest = all;
         var layout = sizes ? "responsive" : "intrinsic";
@@ -560,12 +561,7 @@
           unoptimized = true;
           isLazy = false;
         }
-        if (
-          true &&
-          ((ref4 = imgRef.current) === null || ref4 === void 0
-            ? void 0
-            : ref4.complete)
-        ) {
+        if (true && loadedImageURLs.has(src)) {
           isLazy = false;
         }
         if (false) {
@@ -666,9 +662,8 @@
             wrapperStyle.maxWidth = "100%";
             hasSizer = true;
             sizerStyle.maxWidth = "100%";
-            // url encoded svg is a little bit shorten than base64 encoding
-            sizerSvgUrl = "data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 version=%271.1%27 width=%27"
-              .concat(widthInt, "%27 height=%27")
+            sizerSvgUrl = "data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%27"
+              .concat(widthInt, "%27%20height=%27")
               .concat(heightInt, "%27/%3e");
           } else if (layout === "fixed") {
             // <Image src="i.png" width="100" height="100" layout="fixed" />
Diff for main-HASH.js
@@ -628,7 +628,7 @@
         document.getElementById("__NEXT_DATA__").textContent
       );
       window.__NEXT_DATA__ = data;
-      var version = "12.0.9";
+      var version = "12.0.10-canary.2";
       exports.version = version;
       var looseToArray = function(input) {
         return [].slice.call(input);
@@ -3876,6 +3876,28 @@
       /***/
     },
 
+    /***/ 8887: /***/ function(__unused_webpack_module, exports) {
+      "use strict";
+
+      Object.defineProperty(exports, "__esModule", {
+        value: true
+      });
+      exports.getObjectClassLabel = getObjectClassLabel;
+      exports.isPlainObject = isPlainObject;
+      function getObjectClassLabel(value) {
+        return Object.prototype.toString.call(value);
+      }
+      function isPlainObject(value) {
+        if (getObjectClassLabel(value) !== "[object Object]") {
+          return false;
+        }
+        var prototype = Object.getPrototypeOf(value);
+        return prototype === null || prototype === Object.prototype;
+      } //# sourceMappingURL=is-plain-object.js.map
+
+      /***/
+    },
+
     /***/ 5660: /***/ function(__unused_webpack_module, exports) {
       "use strict";
 
@@ -9062,7 +9084,7 @@
       });
       exports["default"] = isError;
       exports.getProperError = getProperError;
-      var _isPlainObject = __webpack_require__(2288);
+      var _isPlainObject = __webpack_require__(8887);
       function isError(err) {
         return (
           typeof err === "object" &&
@@ -9089,30 +9111,6 @@
       /***/
     },
 
-    /***/ 2288: /***/ function(__unused_webpack_module, exports) {
-      "use strict";
-
-      Object.defineProperty(exports, "__esModule", {
-        value: true
-      });
-      exports.getObjectClassLabel = getObjectClassLabel;
-      exports.isPlainObject = isPlainObject;
-      function getObjectClassLabel(value) {
-        return Object.prototype.toString.call(value);
-      }
-      function isPlainObject(value) {
-        if (getObjectClassLabel(value) !== "[object Object]") {
-          return false;
-        }
-        const prototype = Object.getPrototypeOf(value);
-        return prototype === null || prototype === Object.prototype;
-      }
-
-      //# sourceMappingURL=is-plain-object.js.map
-
-      /***/
-    },
-
     /***/ 4522: /***/ function(
       __unused_webpack_module,
       exports,
Diff for index.html
@@ -19,7 +19,7 @@
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/main-dda21bde619fccde.js"
+      src="/_next/static/chunks/main-fa4c6c05decc26a4.js"
       defer=""
     ></script>
     <script
Diff for link.html
@@ -19,7 +19,7 @@
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/main-dda21bde619fccde.js"
+      src="/_next/static/chunks/main-fa4c6c05decc26a4.js"
       defer=""
     ></script>
     <script
Diff for withRouter.html
@@ -19,7 +19,7 @@
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/main-dda21bde619fccde.js"
+      src="/_next/static/chunks/main-fa4c6c05decc26a4.js"
       defer=""
     ></script>
     <script

Please sign in to comment.