From 7732b59c90694e9ab0b6cd1f85a9d30f9ad77b26 Mon Sep 17 00:00:00 2001
From: "[1000i100] Millicent Billette" <git@1000i100.fr>
Date: Thu, 24 Aug 2023 03:07:15 +0200
Subject: [PATCH] =?UTF-8?q?v3.0.0-alpha11=20FEAT=20:=20calibrage=20de=20la?=
 =?UTF-8?q?=20taille=20des=20lots=20de=20calcul=20par=20webWorker=20adapt?=
 =?UTF-8?q?=C3=A9=20=C3=A0=20la=20puissance=20de=20chaque=20machine=20FIX?=
 =?UTF-8?q?=20:=20vitesse=20plus=20stable=20(=C3=A9chantillonn=C3=A9e=20su?=
 =?UTF-8?q?r=2010s=20au=20lieu=20de=205s)=20FIX=20:=20moins=20d'affichage?=
 =?UTF-8?q?=20d'erreur=20inutile=20FIX=20:=20fonction=20de=20sauvegarde=20?=
 =?UTF-8?q?masqu=C3=A9e=20(non=20impl=C3=A9ment=C3=A9e)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

TODO:
- urgent : responsive
- cool : auto-save/resume
- optionel : pub offline
- idéalement : doc / guide interactif
---
 package-lock.json                         | 280 ++++++++++++++++++----
 package.json                              |   8 +-
 src/js/logic/search.mjs                   |   8 +-
 src/js/logic/speedBench.mjs               |   2 +-
 src/js/ux/3_inProgress.mjs                |   3 +-
 src/stylus/steps/page_2_inputSecrets.styl |   4 +
 6 files changed, 247 insertions(+), 58 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index cf83c65..fdec880 100755
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,15 +10,15 @@
       },
       "devDependencies": {
         "@fortawesome/fontawesome-free": "^5.15.4",
-        "@rollup/plugin-node-resolve": "^15.0.1",
+        "@rollup/plugin-node-resolve": "^15.2.1",
         "1gallery": "^0.0.8",
-        "asciidoctor": "^2.2.6",
+        "asciidoctor": "^3.0.0",
         "asciidoctor-html5s": "^0.5.1",
         "ejs-cli": "^2.2.3",
-        "mkdirp": "^1.0.4",
+        "mkdirp": "^3.0.1",
         "npm-run-all": "^4.1.5",
         "pretty-ms": "https://github.com/1000i100/pretty-ms#main",
-        "rollup": "^3.9.1",
+        "rollup": "^3.28.1",
         "stylus": "^0.59.0"
       }
     },
@@ -91,6 +91,7 @@
       "resolved": "https://registry.npmjs.org/@asciidoctor/core/-/core-2.2.6.tgz",
       "integrity": "sha512-TmB2K5UfpDpSbCNBBntXzKHcAk2EA3/P68jmWvmJvglVUdkO9V6kTAuXVe12+h6C4GK0ndwuCrHHtEVcL5t6pQ==",
       "dev": true,
+      "peer": true,
       "dependencies": {
         "asciidoctor-opal-runtime": "0.3.3",
         "unxhr": "1.0.1"
@@ -101,6 +102,68 @@
         "yarn": ">=1.1.0"
       }
     },
+    "node_modules/@asciidoctor/opal-runtime": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/@asciidoctor/opal-runtime/-/opal-runtime-3.0.1.tgz",
+      "integrity": "sha512-iW7ACahOG0zZft4A/4CqDcc7JX+fWRNjV5tFAVkNCzwZD+EnFolPaUOPYt8jzadc0+Bgd80cQTtRMQnaaV1kkg==",
+      "dev": true,
+      "dependencies": {
+        "glob": "8.1.0",
+        "unxhr": "1.2.0"
+      },
+      "engines": {
+        "node": ">=16"
+      }
+    },
+    "node_modules/@asciidoctor/opal-runtime/node_modules/brace-expansion": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+      "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+      "dev": true,
+      "dependencies": {
+        "balanced-match": "^1.0.0"
+      }
+    },
+    "node_modules/@asciidoctor/opal-runtime/node_modules/glob": {
+      "version": "8.1.0",
+      "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
+      "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
+      "dev": true,
+      "dependencies": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^5.0.1",
+        "once": "^1.3.0"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/@asciidoctor/opal-runtime/node_modules/minimatch": {
+      "version": "5.1.6",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+      "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+      "dev": true,
+      "dependencies": {
+        "brace-expansion": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/@asciidoctor/opal-runtime/node_modules/unxhr": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/unxhr/-/unxhr-1.2.0.tgz",
+      "integrity": "sha512-6cGpm8NFXPD9QbSNx0cD2giy7teZ6xOkCUH3U89WKVkL9N9rBrWjlCwhR94Re18ZlAop4MOc3WU1M3Hv/bgpIw==",
+      "dev": true,
+      "engines": {
+        "node": ">=8.11"
+      }
+    },
     "node_modules/@fortawesome/fontawesome-free": {
       "version": "5.15.4",
       "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.15.4.tgz",
@@ -112,15 +175,15 @@
       }
     },
     "node_modules/@rollup/plugin-node-resolve": {
-      "version": "15.0.1",
-      "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.0.1.tgz",
-      "integrity": "sha512-ReY88T7JhJjeRVbfCyNj+NXAG3IIsVMsX9b5/9jC98dRP8/yxlZdz7mHZbHk5zHr24wZZICS5AcXsFZAXYUQEg==",
+      "version": "15.2.1",
+      "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.1.tgz",
+      "integrity": "sha512-nsbUg588+GDSu8/NS8T4UAshO6xeaOfINNuXeVHcKV02LJtoRaM1SiOacClw4kws1SFiNhdLGxlbMY9ga/zs/w==",
       "dev": true,
       "dependencies": {
         "@rollup/pluginutils": "^5.0.1",
         "@types/resolve": "1.20.2",
         "deepmerge": "^4.2.2",
-        "is-builtin-module": "^3.2.0",
+        "is-builtin-module": "^3.2.1",
         "is-module": "^1.0.0",
         "resolve": "^1.22.1"
       },
@@ -204,22 +267,21 @@
       }
     },
     "node_modules/asciidoctor": {
-      "version": "2.2.6",
-      "resolved": "https://registry.npmjs.org/asciidoctor/-/asciidoctor-2.2.6.tgz",
-      "integrity": "sha512-EXG3+F2pO21B+COfQmV/WgEgGiy7nG/mJiS/o5DXpaT2q82FRZWPVkbMZrpDvpu4pjXe5c754RbZR9Vz0L0Vtw==",
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/asciidoctor/-/asciidoctor-3.0.0.tgz",
+      "integrity": "sha512-ppOgmac+UnMYO2T5n884+5dcCkqth6aJhIlOUENGTMri9+xa6XV+AoB4BiQCOzI9sDz/42NZ+ki+NPV3jhpbNQ==",
       "dev": true,
       "dependencies": {
         "@asciidoctor/cli": "3.5.0",
-        "@asciidoctor/core": "2.2.6"
+        "@asciidoctor/core": "3.0.0"
       },
       "bin": {
         "asciidoctor": "bin/asciidoctor",
         "asciidoctorjs": "bin/asciidoctor"
       },
       "engines": {
-        "node": ">=8.11",
-        "npm": ">=5.0.0",
-        "yarn": ">=1.1.0"
+        "node": ">=16",
+        "npm": ">=8"
       }
     },
     "node_modules/asciidoctor-html5s": {
@@ -236,6 +298,7 @@
       "resolved": "https://registry.npmjs.org/asciidoctor-opal-runtime/-/asciidoctor-opal-runtime-0.3.3.tgz",
       "integrity": "sha512-/CEVNiOia8E5BMO9FLooo+Kv18K4+4JBFRJp8vUy/N5dMRAg+fRNV4HA+o6aoSC79jVU/aT5XvUpxSxSsTS8FQ==",
       "dev": true,
+      "peer": true,
       "dependencies": {
         "glob": "7.1.3",
         "unxhr": "1.0.1"
@@ -249,6 +312,7 @@
       "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
       "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
       "dev": true,
+      "peer": true,
       "dependencies": {
         "fs.realpath": "^1.0.0",
         "inflight": "^1.0.4",
@@ -261,6 +325,29 @@
         "node": "*"
       }
     },
+    "node_modules/asciidoctor/node_modules/@asciidoctor/core": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/@asciidoctor/core/-/core-3.0.0.tgz",
+      "integrity": "sha512-XcFpti2RSEhEgacvnd6gr+bnNGb5cyFCDRvl01opCyspQJdynCiKxreIKrVBkyYGaBOJ7BFSQY1pZkoFGOj8Lg==",
+      "dev": true,
+      "dependencies": {
+        "@asciidoctor/opal-runtime": "3.0.1",
+        "unxhr": "1.2.0"
+      },
+      "engines": {
+        "node": ">=16",
+        "npm": ">=8"
+      }
+    },
+    "node_modules/asciidoctor/node_modules/unxhr": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/unxhr/-/unxhr-1.2.0.tgz",
+      "integrity": "sha512-6cGpm8NFXPD9QbSNx0cD2giy7teZ6xOkCUH3U89WKVkL9N9rBrWjlCwhR94Re18ZlAop4MOc3WU1M3Hv/bgpIw==",
+      "dev": true,
+      "engines": {
+        "node": ">=8.11"
+      }
+    },
     "node_modules/async": {
       "version": "3.2.4",
       "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz",
@@ -452,6 +539,18 @@
         "ejs-cli": "bin/ejs-cli"
       }
     },
+    "node_modules/ejs-cli/node_modules/mkdirp": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+      "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+      "dev": true,
+      "bin": {
+        "mkdirp": "bin/cmd.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
     "node_modules/emoji-regex": {
       "version": "8.0.0",
       "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
@@ -842,9 +941,9 @@
       }
     },
     "node_modules/is-builtin-module": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.0.tgz",
-      "integrity": "sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw==",
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz",
+      "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==",
       "dev": true,
       "dependencies": {
         "builtin-modules": "^3.3.0"
@@ -1074,15 +1173,18 @@
       }
     },
     "node_modules/mkdirp": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
-      "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz",
+      "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==",
       "dev": true,
       "bin": {
-        "mkdirp": "bin/cmd.js"
+        "mkdirp": "dist/cjs/src/bin.js"
       },
       "engines": {
         "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
       }
     },
     "node_modules/ms": {
@@ -1408,9 +1510,9 @@
       }
     },
     "node_modules/rollup": {
-      "version": "3.9.1",
-      "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.9.1.tgz",
-      "integrity": "sha512-GswCYHXftN8ZKGVgQhTFUJB/NBXxrRGgO2NCy6E8s1rwEJ4Q9/VttNqcYfEvx4dTo4j58YqdC3OVztPzlKSX8w==",
+      "version": "3.28.1",
+      "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.28.1.tgz",
+      "integrity": "sha512-R9OMQmIHJm9znrU3m3cpE8uhN0fGdXiawME7aZIpQqvpS/85+Vt1Hq1/yVIcYfOmaQiHjvXkQAoJukvLpau6Yw==",
       "dev": true,
       "bin": {
         "rollup": "dist/bin/rollup"
@@ -1444,9 +1546,9 @@
       "dev": true
     },
     "node_modules/semver": {
-      "version": "5.7.1",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-      "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+      "version": "5.7.2",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+      "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
       "dev": true,
       "bin": {
         "semver": "bin/semver"
@@ -1683,6 +1785,7 @@
       "resolved": "https://registry.npmjs.org/unxhr/-/unxhr-1.0.1.tgz",
       "integrity": "sha512-MAhukhVHyaLGDjyDYhy8gVjWJyhTECCdNsLwlMoGFoNJ3o79fpQhtQuzmAE4IxCMDwraF4cW8ZjpAV0m9CRQbg==",
       "dev": true,
+      "peer": true,
       "engines": {
         "node": ">=8.11"
       }
@@ -1840,11 +1943,61 @@
       "resolved": "https://registry.npmjs.org/@asciidoctor/core/-/core-2.2.6.tgz",
       "integrity": "sha512-TmB2K5UfpDpSbCNBBntXzKHcAk2EA3/P68jmWvmJvglVUdkO9V6kTAuXVe12+h6C4GK0ndwuCrHHtEVcL5t6pQ==",
       "dev": true,
+      "peer": true,
       "requires": {
         "asciidoctor-opal-runtime": "0.3.3",
         "unxhr": "1.0.1"
       }
     },
+    "@asciidoctor/opal-runtime": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/@asciidoctor/opal-runtime/-/opal-runtime-3.0.1.tgz",
+      "integrity": "sha512-iW7ACahOG0zZft4A/4CqDcc7JX+fWRNjV5tFAVkNCzwZD+EnFolPaUOPYt8jzadc0+Bgd80cQTtRMQnaaV1kkg==",
+      "dev": true,
+      "requires": {
+        "glob": "8.1.0",
+        "unxhr": "1.2.0"
+      },
+      "dependencies": {
+        "brace-expansion": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+          "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+          "dev": true,
+          "requires": {
+            "balanced-match": "^1.0.0"
+          }
+        },
+        "glob": {
+          "version": "8.1.0",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
+          "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
+          "dev": true,
+          "requires": {
+            "fs.realpath": "^1.0.0",
+            "inflight": "^1.0.4",
+            "inherits": "2",
+            "minimatch": "^5.0.1",
+            "once": "^1.3.0"
+          }
+        },
+        "minimatch": {
+          "version": "5.1.6",
+          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+          "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+          "dev": true,
+          "requires": {
+            "brace-expansion": "^2.0.1"
+          }
+        },
+        "unxhr": {
+          "version": "1.2.0",
+          "resolved": "https://registry.npmjs.org/unxhr/-/unxhr-1.2.0.tgz",
+          "integrity": "sha512-6cGpm8NFXPD9QbSNx0cD2giy7teZ6xOkCUH3U89WKVkL9N9rBrWjlCwhR94Re18ZlAop4MOc3WU1M3Hv/bgpIw==",
+          "dev": true
+        }
+      }
+    },
     "@fortawesome/fontawesome-free": {
       "version": "5.15.4",
       "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.15.4.tgz",
@@ -1852,15 +2005,15 @@
       "dev": true
     },
     "@rollup/plugin-node-resolve": {
-      "version": "15.0.1",
-      "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.0.1.tgz",
-      "integrity": "sha512-ReY88T7JhJjeRVbfCyNj+NXAG3IIsVMsX9b5/9jC98dRP8/yxlZdz7mHZbHk5zHr24wZZICS5AcXsFZAXYUQEg==",
+      "version": "15.2.1",
+      "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.1.tgz",
+      "integrity": "sha512-nsbUg588+GDSu8/NS8T4UAshO6xeaOfINNuXeVHcKV02LJtoRaM1SiOacClw4kws1SFiNhdLGxlbMY9ga/zs/w==",
       "dev": true,
       "requires": {
         "@rollup/pluginutils": "^5.0.1",
         "@types/resolve": "1.20.2",
         "deepmerge": "^4.2.2",
-        "is-builtin-module": "^3.2.0",
+        "is-builtin-module": "^3.2.1",
         "is-module": "^1.0.0",
         "resolve": "^1.22.1"
       }
@@ -1910,13 +2063,31 @@
       }
     },
     "asciidoctor": {
-      "version": "2.2.6",
-      "resolved": "https://registry.npmjs.org/asciidoctor/-/asciidoctor-2.2.6.tgz",
-      "integrity": "sha512-EXG3+F2pO21B+COfQmV/WgEgGiy7nG/mJiS/o5DXpaT2q82FRZWPVkbMZrpDvpu4pjXe5c754RbZR9Vz0L0Vtw==",
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/asciidoctor/-/asciidoctor-3.0.0.tgz",
+      "integrity": "sha512-ppOgmac+UnMYO2T5n884+5dcCkqth6aJhIlOUENGTMri9+xa6XV+AoB4BiQCOzI9sDz/42NZ+ki+NPV3jhpbNQ==",
       "dev": true,
       "requires": {
         "@asciidoctor/cli": "3.5.0",
-        "@asciidoctor/core": "2.2.6"
+        "@asciidoctor/core": "3.0.0"
+      },
+      "dependencies": {
+        "@asciidoctor/core": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/@asciidoctor/core/-/core-3.0.0.tgz",
+          "integrity": "sha512-XcFpti2RSEhEgacvnd6gr+bnNGb5cyFCDRvl01opCyspQJdynCiKxreIKrVBkyYGaBOJ7BFSQY1pZkoFGOj8Lg==",
+          "dev": true,
+          "requires": {
+            "@asciidoctor/opal-runtime": "3.0.1",
+            "unxhr": "1.2.0"
+          }
+        },
+        "unxhr": {
+          "version": "1.2.0",
+          "resolved": "https://registry.npmjs.org/unxhr/-/unxhr-1.2.0.tgz",
+          "integrity": "sha512-6cGpm8NFXPD9QbSNx0cD2giy7teZ6xOkCUH3U89WKVkL9N9rBrWjlCwhR94Re18ZlAop4MOc3WU1M3Hv/bgpIw==",
+          "dev": true
+        }
       }
     },
     "asciidoctor-html5s": {
@@ -1931,6 +2102,7 @@
       "resolved": "https://registry.npmjs.org/asciidoctor-opal-runtime/-/asciidoctor-opal-runtime-0.3.3.tgz",
       "integrity": "sha512-/CEVNiOia8E5BMO9FLooo+Kv18K4+4JBFRJp8vUy/N5dMRAg+fRNV4HA+o6aoSC79jVU/aT5XvUpxSxSsTS8FQ==",
       "dev": true,
+      "peer": true,
       "requires": {
         "glob": "7.1.3",
         "unxhr": "1.0.1"
@@ -1941,6 +2113,7 @@
           "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
           "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
           "dev": true,
+          "peer": true,
           "requires": {
             "fs.realpath": "^1.0.0",
             "inflight": "^1.0.4",
@@ -2091,6 +2264,14 @@
         "glob": "^7.2.0",
         "mkdirp": "^1.0.4",
         "yargs": "^17.2.1"
+      },
+      "dependencies": {
+        "mkdirp": {
+          "version": "1.0.4",
+          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+          "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+          "dev": true
+        }
       }
     },
     "emoji-regex": {
@@ -2391,9 +2572,9 @@
       }
     },
     "is-builtin-module": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.0.tgz",
-      "integrity": "sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw==",
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz",
+      "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==",
       "dev": true,
       "requires": {
         "builtin-modules": "^3.3.0"
@@ -2548,9 +2729,9 @@
       }
     },
     "mkdirp": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
-      "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz",
+      "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==",
       "dev": true
     },
     "ms": {
@@ -2787,9 +2968,9 @@
       }
     },
     "rollup": {
-      "version": "3.9.1",
-      "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.9.1.tgz",
-      "integrity": "sha512-GswCYHXftN8ZKGVgQhTFUJB/NBXxrRGgO2NCy6E8s1rwEJ4Q9/VttNqcYfEvx4dTo4j58YqdC3OVztPzlKSX8w==",
+      "version": "3.28.1",
+      "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.28.1.tgz",
+      "integrity": "sha512-R9OMQmIHJm9znrU3m3cpE8uhN0fGdXiawME7aZIpQqvpS/85+Vt1Hq1/yVIcYfOmaQiHjvXkQAoJukvLpau6Yw==",
       "dev": true,
       "requires": {
         "fsevents": "~2.3.2"
@@ -2813,9 +2994,9 @@
       "dev": true
     },
     "semver": {
-      "version": "5.7.1",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-      "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+      "version": "5.7.2",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+      "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
       "dev": true
     },
     "shebang-command": {
@@ -2991,7 +3172,8 @@
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/unxhr/-/unxhr-1.0.1.tgz",
       "integrity": "sha512-MAhukhVHyaLGDjyDYhy8gVjWJyhTECCdNsLwlMoGFoNJ3o79fpQhtQuzmAE4IxCMDwraF4cW8ZjpAV0m9CRQbg==",
-      "dev": true
+      "dev": true,
+      "peer": true
     },
     "validate-npm-package-license": {
       "version": "3.0.4",
diff --git a/package.json b/package.json
index 23bbb5a..751e62a 100755
--- a/package.json
+++ b/package.json
@@ -20,15 +20,15 @@
   },
   "devDependencies": {
     "@fortawesome/fontawesome-free": "^5.15.4",
-    "@rollup/plugin-node-resolve": "^15.0.1",
+    "@rollup/plugin-node-resolve": "^15.2.1",
     "1gallery": "^0.0.8",
-    "asciidoctor": "^2.2.6",
+    "asciidoctor": "^3.0.0",
     "asciidoctor-html5s": "^0.5.1",
     "ejs-cli": "^2.2.3",
-    "mkdirp": "^1.0.4",
+    "mkdirp": "^3.0.1",
     "npm-run-all": "^4.1.5",
     "pretty-ms": "https://github.com/1000i100/pretty-ms#main",
-    "rollup": "^3.9.1",
+    "rollup": "^3.28.1",
     "stylus": "^0.59.0"
   }
 }
diff --git a/src/js/logic/search.mjs b/src/js/logic/search.mjs
index 2c51e98..7b865e1 100644
--- a/src/js/logic/search.mjs
+++ b/src/js/logic/search.mjs
@@ -1,9 +1,10 @@
 import {resetWorkers, sendToWorker, subscribe} from "./workerManager.mjs";
 import {pubKey} from "../ux/1_pubKey.mjs";
 import getDico, {genDico} from "./dico.mjs";
+import getCombiPerSec from "./speedBench.mjs";
 
 export let searchRunning = false;
-export let tested;
+export let tested = 0;
 export let departTime=0;
 export let endTime;
 export let found;
@@ -18,6 +19,7 @@ export function duplicateCount() {
 }
 
 export async function startSearch() {
+  const batchSize = Math.max(1,Math.round(getCombiPerSec()/navigator.hardwareConcurrency));
   await sleep(300);
   departTime = Date.now();
   tested = 0;
@@ -44,7 +46,7 @@ export async function startSearch() {
       continue;
     }
     batch.push({idSec, pass, index});
-    if(batch.length===navigator.hardwareConcurrency){
+    if(batch.length===batchSize){
       await sendToWorker('batchBruteForce',{batch});
       batch = [];
     }
@@ -103,7 +105,7 @@ async function wakeLock(){
 }
 async function releaseWakeLock(){
   document.removeEventListener('visibilitychange', wakeLock);
-  if('wakeLock' in navigator){
+  if('wakeLock' in navigator && wakeLockHandler){
     await wakeLockHandler.release();
     wakeLockHandler = null;
   }
diff --git a/src/js/logic/speedBench.mjs b/src/js/logic/speedBench.mjs
index f4b1364..cb020b7 100644
--- a/src/js/logic/speedBench.mjs
+++ b/src/js/logic/speedBench.mjs
@@ -22,7 +22,7 @@ async function startBench(){
   for(let idSec of pub) for (let pass of pub) {
     if(globalSpeed) return;
     batch.push({idSec,pass});
-    if(batch.length===navigator.hardwareConcurrency){
+    if(batch.length===5){
       await sendToWorker('batchBruteForce',{bench:true,batch});
       batch = [];
     }
diff --git a/src/js/ux/3_inProgress.mjs b/src/js/ux/3_inProgress.mjs
index 0c31a78..e6b637e 100644
--- a/src/js/ux/3_inProgress.mjs
+++ b/src/js/ux/3_inProgress.mjs
@@ -13,6 +13,7 @@ const progressColor = getComputedStyle(document.querySelector('.success h3')).co
 const progressBar = document.getElementById('progress_bar');
 const bgColor = getComputedStyle(progressBar).backgroundColor;
 const timing = [];
+const shortDelay = 10*1000;
 const longTiming = [];
 const longDelay = 60*1000;
 function showProgress(){
@@ -24,7 +25,7 @@ function showProgress(){
   const now = Date.now();
   timing.push({time:now,tested:tested});
   longTiming.push({time:now,tested:tested});
-  while(timing[0].time < now-5000) timing.shift();
+  while(timing[0].time < now-shortDelay) timing.shift();
   while(longTiming[0].time < now-longDelay) longTiming.shift();
   document.getElementById('timeSpent').innerHTML = timeFormat(now-departTime)
   const globalSpeed = tested/(now-departTime)*1000;
diff --git a/src/stylus/steps/page_2_inputSecrets.styl b/src/stylus/steps/page_2_inputSecrets.styl
index 320e847..6ec2246 100755
--- a/src/stylus/steps/page_2_inputSecrets.styl
+++ b/src/stylus/steps/page_2_inputSecrets.styl
@@ -1,3 +1,7 @@
+#roGrp_save
+  display none !important
+// tant que l'option n'est pas fonctionnelle, autant ne pas l'afficher.
+
 #testkey
   text-align: center
 
-- 
GitLab