diff --git a/CHANGELOG.fr.md b/CHANGELOG.fr.md
index dcc4889553f00bb238fa2f30c64c5e55ae949ccb..4b14306bfbdc4a3ae61d76e24bbdf599400c248a 100644
--- a/CHANGELOG.fr.md
+++ b/CHANGELOG.fr.md
@@ -15,7 +15,11 @@ et ce projet adhère au [versionnage sémantique](https://semver.org/spec/v2.0.0
 
 ## [Non-publié/Non-Stabilisé] (par [1000i100])
 
-## [Version 3.3.2] - 2022-09-30 (par [1000i100])
+## [Version 3.3.3] - 2022-11-15 (par [1000i100])
+### Corrections
+- les versions 3.3.x antérieur à celle-ci, cherchaient à importer la lib crypto de node depuis le navigateur c'est corrigé.
+
+## [Version 3.3.2] - 2022-11-12 (par [1000i100])
 ### Corrections
 - export de sha256 pour le rendre utilisable par les clients.
 
@@ -94,8 +98,9 @@ et ce projet adhère au [versionnage sémantique](https://semver.org/spec/v2.0.0
 - intégration des librairies de crypto nécessaires
 - calcul de la clef publique correspondant à chaque combinaison de secrets saisie, et comparaison à la clef publique de référence.
 
-[Non-publié/Non-Stabilisé]: https://git.duniter.org/libs/g1lib.js/-/compare/v3.3.2...master
+[Non-publié/Non-Stabilisé]: https://git.duniter.org/libs/g1lib.js/-/compare/v3.3.3...master
 
+[Version 3.3.3]: https://git.duniter.org/libs/g1lib.js/-/compare/v3.3.2...v3.3.3
 [Version 3.3.2]: https://git.duniter.org/libs/g1lib.js/-/compare/v3.3.1...v3.3.2
 [Version 3.3.1]: https://git.duniter.org/libs/g1lib.js/-/compare/v3.3.0...v3.3.1
 [Version 3.3.0]: https://git.duniter.org/libs/g1lib.js/-/compare/v3.2.0...v3.3.0
diff --git a/CI/vendors.js b/CI/vendors.js
index fe694c71348c22bd94db8e3be30338e3bbf52137..6efdb66abe270348ae58211b40ba30308e2f437e 100644
--- a/CI/vendors.js
+++ b/CI/vendors.js
@@ -20,9 +20,16 @@ try {
 }
 
 try {
-	fs.writeFileSync('generated/vendors/@noble-ed25519.mjs',
+	fs.writeFileSync('generated/vendors/@noble-ed25519-node.mjs',
 		(fs.readFileSync('node_modules/@noble/ed25519/lib/esm/index.js', 'utf8'))
-			.replace(`import * as nodeCrypto from 'crypto';`,`let nodeCrypto;\nif(typeof require !== 'undefined') nodeCrypto = require('crypto');`)
+		, 'utf8');
+} catch (error) {
+	console.error(error);
+}
+try {
+	fs.writeFileSync('generated/vendors/@noble-ed25519-browser.mjs',
+		(fs.readFileSync('node_modules/@noble/ed25519/lib/esm/index.js', 'utf8'))
+			.replace(`import * as nodeCrypto from 'crypto';`,`let nodeCrypto;`)
 		, 'utf8');
 } catch (error) {
 	console.error(error);
diff --git a/npm/package.json b/npm/package.json
index 13d812368194d3c6ac6e1a621d0bc27c7c190ba8..3dec726107294b9e8134d8de184b1a0de4aa7887 100644
--- a/npm/package.json
+++ b/npm/package.json
@@ -1,6 +1,6 @@
 {
   "name": "g1lib",
-  "version": "3.3.2",
+  "version": "3.3.3",
   "description": "An ubiquitous static javascript toolbox lib for Ǧ1 / Duniter ecosystem with reliability in mind.",
   "main": "nodejs/all.mjs",
 	"browser": "browser/all.mjs",
diff --git a/package-lock.json b/package-lock.json
index 206ddaef5d000edcf5193b641d41b12df48dddac..52ef04a92aad1ca3976ec880a74bbedd5df3dfa3 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -17,21 +17,21 @@
 			},
 			"devDependencies": {
 				"@jscpd/badge-reporter": "^3.4.5",
-				"ava": "^4.3.3",
+				"ava": "^5.1.0",
 				"badgen": "^3.2.2",
-				"browser-ava": "^1.0.0",
+				"browser-ava": "^1.1.0",
 				"c8": "^7.12.0",
 				"chokidar-cli": "^3.0.0",
 				"es6-plato": "https://github.com/1000i100/es6-plato#master",
 				"eslint-plugin-ava": "^13.2.0",
-				"eslint-plugin-promise": "^6.1.0",
+				"eslint-plugin-promise": "^6.1.1",
 				"eslint-plugin-unicorn": "^44.0.2",
-				"jscpd": "^3.5.0",
+				"jscpd": "^3.5.1",
 				"mkdirp": "^1.0.4",
 				"npm-run-all": "^4.1.5",
-				"rollup": "^3.2.3",
-				"terser": "^5.15.0",
-				"xo": "^0.52.3"
+				"rollup": "^3.3.0",
+				"terser": "^5.15.1",
+				"xo": "^0.52.4"
 			}
 		},
 		"node_modules/@babel/code-frame": {
@@ -47,9 +47,9 @@
 			}
 		},
 		"node_modules/@babel/helper-string-parser": {
-			"version": "7.18.10",
-			"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz",
-			"integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==",
+			"version": "7.19.4",
+			"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz",
+			"integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==",
 			"dev": true,
 			"engines": {
 				"node": ">=6.9.0"
@@ -135,9 +135,9 @@
 			}
 		},
 		"node_modules/@babel/parser": {
-			"version": "7.19.3",
-			"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.3.tgz",
-			"integrity": "sha512-pJ9xOlNWHiy9+FuFP09DEAFbAn4JskgRsVcc169w2xRBC3FRGuQEwjeIMMND9L2zc0iEhO/tGv4Zq+km+hxNpQ==",
+			"version": "7.20.3",
+			"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz",
+			"integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==",
 			"dev": true,
 			"bin": {
 				"parser": "bin/babel-parser.js"
@@ -147,12 +147,12 @@
 			}
 		},
 		"node_modules/@babel/types": {
-			"version": "7.19.3",
-			"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.3.tgz",
-			"integrity": "sha512-hGCaQzIY22DJlDh9CH7NOxgKkFjBk0Cw9xDO1Xmh2151ti7wiGfQ3LauXzL4HP1fmFlTX6XjpRETTpUcv7wQLw==",
+			"version": "7.20.2",
+			"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.2.tgz",
+			"integrity": "sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==",
 			"dev": true,
 			"dependencies": {
-				"@babel/helper-string-parser": "^7.18.10",
+				"@babel/helper-string-parser": "^7.19.4",
 				"@babel/helper-validator-identifier": "^7.19.1",
 				"to-fast-properties": "^2.0.0"
 			},
@@ -329,13 +329,13 @@
 			}
 		},
 		"node_modules/@jscpd/finder": {
-			"version": "3.5.0",
-			"resolved": "https://registry.npmjs.org/@jscpd/finder/-/finder-3.5.0.tgz",
-			"integrity": "sha512-ad6Ilm749Glc0JUDTMmojOHfSC8DRFJaYZZSlA+OOqsYlnqGL1nENKUL7V1hM4vULEsSae8bW16z9Cb7xYJmGw==",
+			"version": "3.5.1",
+			"resolved": "https://registry.npmjs.org/@jscpd/finder/-/finder-3.5.1.tgz",
+			"integrity": "sha512-9+hpaJkr4W90A4h8coS0ibfvUQRk0VvpwrLLNH0+kAJMKk7uYgqFEj/5Agy1kS0VFZwJEnmkXSvWp8NjFqUhGQ==",
 			"dev": true,
 			"dependencies": {
 				"@jscpd/core": "^3.5.0",
-				"@jscpd/tokenizer": "^3.5.0",
+				"@jscpd/tokenizer": "^3.5.1",
 				"blamer": "^1.0.1",
 				"bytes": "^3.1.0",
 				"cli-table3": "^0.6.0",
@@ -357,9 +357,9 @@
 			}
 		},
 		"node_modules/@jscpd/tokenizer": {
-			"version": "3.5.0",
-			"resolved": "https://registry.npmjs.org/@jscpd/tokenizer/-/tokenizer-3.5.0.tgz",
-			"integrity": "sha512-5IQC+jEKw+TT+3sQa6JFKPRyQLHPwgBP14yQn1FeKvVZmxT5fihI7jg92NK6DT0k7yrK9v4Z7qagJ63WP4GVXw==",
+			"version": "3.5.1",
+			"resolved": "https://registry.npmjs.org/@jscpd/tokenizer/-/tokenizer-3.5.1.tgz",
+			"integrity": "sha512-Tj8ehnb4AyfdsfR2w1Lp/62e4AwyMKD53NJ7KpLcmh74BqzfwbDgi7QBNfL9L/FJfhovt24uxG3JNOIEYONixw==",
 			"dev": true,
 			"dependencies": {
 				"@jscpd/core": "^3.5.0",
@@ -367,6 +367,18 @@
 				"spark-md5": "^3.0.1"
 			}
 		},
+		"node_modules/@koa/cors": {
+			"version": "4.0.0",
+			"resolved": "https://registry.npmjs.org/@koa/cors/-/cors-4.0.0.tgz",
+			"integrity": "sha512-Y4RrbvGTlAaa04DBoPBWJqDR5gPj32OOz827ULXfgB1F7piD1MB/zwn8JR2LAnvdILhxUbXbkXGWuNVsFuVFCQ==",
+			"dev": true,
+			"dependencies": {
+				"vary": "^1.1.2"
+			},
+			"engines": {
+				"node": ">= 14.0.0"
+			}
+		},
 		"node_modules/@noble/ed25519": {
 			"version": "1.7.1",
 			"resolved": "https://registry.npmjs.org/@noble/ed25519/-/ed25519-1.7.1.tgz",
@@ -687,9 +699,9 @@
 			}
 		},
 		"node_modules/acorn": {
-			"version": "8.8.0",
-			"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz",
-			"integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==",
+			"version": "8.8.1",
+			"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz",
+			"integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==",
 			"dev": true,
 			"bin": {
 				"acorn": "bin/acorn"
@@ -808,9 +820,9 @@
 			}
 		},
 		"node_modules/ansi-styles": {
-			"version": "6.1.1",
-			"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.1.tgz",
-			"integrity": "sha512-qDOv24WjnYuL+wbwHdlsYZFy+cgPtrYw0Tn7GLORicQp9BkQLzrgI3Pm4VyR9ERZ41YTn7KlMPuL1n05WdZvmg==",
+			"version": "6.2.1",
+			"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
+			"integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
 			"dev": true,
 			"engines": {
 				"node": ">=12"
@@ -951,22 +963,22 @@
 			}
 		},
 		"node_modules/ava": {
-			"version": "4.3.3",
-			"resolved": "https://registry.npmjs.org/ava/-/ava-4.3.3.tgz",
-			"integrity": "sha512-9Egq/d9R74ExrWohHeqUlexjDbgZJX5jA1Wq4KCTqc3wIfpGEK79zVy4rBtofJ9YKIxs4PzhJ8BgbW5PlAYe6w==",
+			"version": "5.1.0",
+			"resolved": "https://registry.npmjs.org/ava/-/ava-5.1.0.tgz",
+			"integrity": "sha512-e5VFrSQ0WBPyZJWRXVrO7RFOizFeNM0t2PORwrPvWtApgkORI6cvGnY3GX1G+lzpd0HjqNx5Jus22AhxVnUMNA==",
 			"dev": true,
 			"dependencies": {
-				"acorn": "^8.7.1",
+				"acorn": "^8.8.1",
 				"acorn-walk": "^8.2.0",
-				"ansi-styles": "^6.1.0",
+				"ansi-styles": "^6.2.1",
 				"arrgv": "^1.0.2",
 				"arrify": "^3.0.0",
 				"callsites": "^4.0.0",
 				"cbor": "^8.1.0",
-				"chalk": "^5.0.1",
+				"chalk": "^5.1.2",
 				"chokidar": "^3.5.3",
 				"chunkd": "^2.0.1",
-				"ci-info": "^3.3.1",
+				"ci-info": "^3.6.1",
 				"ci-parallel-vars": "^1.0.1",
 				"clean-yaml-object": "^0.1.0",
 				"cli-truncate": "^3.1.0",
@@ -975,10 +987,10 @@
 				"concordance": "^5.0.4",
 				"currently-unhandled": "^0.4.1",
 				"debug": "^4.3.4",
-				"del": "^6.1.1",
-				"emittery": "^0.11.0",
-				"figures": "^4.0.1",
-				"globby": "^13.1.1",
+				"del": "^7.0.0",
+				"emittery": "^1.0.1",
+				"figures": "^5.0.0",
+				"globby": "^13.1.2",
 				"ignore-by-default": "^2.1.0",
 				"indent-string": "^5.0.0",
 				"is-error": "^2.2.2",
@@ -988,25 +1000,25 @@
 				"mem": "^9.0.2",
 				"ms": "^2.1.3",
 				"p-event": "^5.0.1",
-				"p-map": "^5.4.0",
+				"p-map": "^5.5.0",
 				"picomatch": "^2.3.1",
 				"pkg-conf": "^4.0.0",
 				"plur": "^5.1.0",
-				"pretty-ms": "^7.0.1",
+				"pretty-ms": "^8.0.0",
 				"resolve-cwd": "^3.0.0",
 				"slash": "^3.0.0",
-				"stack-utils": "^2.0.5",
+				"stack-utils": "^2.0.6",
 				"strip-ansi": "^7.0.1",
 				"supertap": "^3.0.1",
-				"temp-dir": "^2.0.0",
-				"write-file-atomic": "^4.0.1",
-				"yargs": "^17.5.1"
+				"temp-dir": "^3.0.0",
+				"write-file-atomic": "^5.0.0",
+				"yargs": "^17.6.2"
 			},
 			"bin": {
 				"ava": "entrypoints/cli.mjs"
 			},
 			"engines": {
-				"node": ">=12.22 <13 || >=14.17 <15 || >=16.4 <17 || >=18"
+				"node": ">=14.19 <15 || >=16.15 <17 || >=18"
 			},
 			"peerDependencies": {
 				"@ava/typescript": "*"
@@ -1102,23 +1114,25 @@
 			}
 		},
 		"node_modules/browser-ava": {
-			"version": "1.0.0",
-			"resolved": "https://registry.npmjs.org/browser-ava/-/browser-ava-1.0.0.tgz",
-			"integrity": "sha512-gdR+YWG/cTW8v0YiONBF3LJgM/uJfNDg+lRP9gUXTtgPzA7iNRjGx4YmL74dees9qMawsihZmbrY0cO0YLRBaw==",
+			"version": "1.1.0",
+			"resolved": "https://registry.npmjs.org/browser-ava/-/browser-ava-1.1.0.tgz",
 			"dev": true,
 			"dependencies": {
+				"@koa/cors": "^4.0.0",
+				"chalk": "^5.1.2",
 				"commander": "^9.4.1",
 				"es-module-lexer": "^1.0.5",
+				"globby": "^13.1.2",
 				"koa": "^2.13.4",
 				"koa-static": "^5.0.0",
 				"playwright": "^1.27.1",
-				"ws": "^8.9.0"
+				"ws": "^8.11.0"
 			},
 			"bin": {
 				"browser-ava": "src/browser-ava-cli.mjs"
 			},
 			"engines": {
-				"node": ">=16.18.0"
+				"node": ">=16.18.1"
 			}
 		},
 		"node_modules/browser-ava/node_modules/commander": {
@@ -1131,9 +1145,9 @@
 			}
 		},
 		"node_modules/browser-ava/node_modules/es-module-lexer": {
-			"version": "1.0.5",
-			"resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.0.5.tgz",
-			"integrity": "sha512-oxJ+R1DzAw6j4g1Lx70bIKgfoRCX67C51kH2Mx7J4bS7ZzWxkcivXskFspzgKHUj6JUwUTghQgUPy8zTp6mMBw==",
+			"version": "1.1.0",
+			"resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.1.0.tgz",
+			"integrity": "sha512-fJg+1tiyEeS8figV+fPcPpm8WqJEflG3yPU0NOm5xMvrNkuiy7HzX/Ljng4Y0hAoiw4/3hQTCFYw+ub8+a2pRA==",
 			"dev": true
 		},
 		"node_modules/browserslist": {
@@ -1416,9 +1430,9 @@
 			}
 		},
 		"node_modules/chalk": {
-			"version": "5.0.1",
-			"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.0.1.tgz",
-			"integrity": "sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==",
+			"version": "5.1.2",
+			"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.1.2.tgz",
+			"integrity": "sha512-E5CkT4jWURs1Vy5qGJye+XwCkNj7Od3Af7CP6SujMetSMkLs8Do2RWJK5yx1wamHV/op8Rz+9rltjaTQWDnEFQ==",
 			"dev": true,
 			"engines": {
 				"node": "^12.17.0 || ^14.13 || >=16.0.0"
@@ -1704,10 +1718,13 @@
 			"dev": true
 		},
 		"node_modules/ci-info": {
-			"version": "3.4.0",
-			"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.4.0.tgz",
-			"integrity": "sha512-t5QdPT5jq3o262DOQ8zA6E1tlH2upmUc4Hlvrbx1pGYJuiiHl7O7rvVNI+l8HTVhd/q3Qc9vqimkNk5yiXsAug==",
-			"dev": true
+			"version": "3.6.1",
+			"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.6.1.tgz",
+			"integrity": "sha512-up5ggbaDqOqJ4UqLKZ2naVkyqSJQgJi5lwD6b6mM748ysrghDBX0bx/qJTUHzw7zu6Mq4gycviSF5hJnwceD8w==",
+			"dev": true,
+			"engines": {
+				"node": ">=8"
+			}
 		},
 		"node_modules/ci-parallel-vars": {
 			"version": "1.0.1",
@@ -2284,88 +2301,34 @@
 			}
 		},
 		"node_modules/del": {
-			"version": "6.1.1",
-			"resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz",
-			"integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==",
+			"version": "7.0.0",
+			"resolved": "https://registry.npmjs.org/del/-/del-7.0.0.tgz",
+			"integrity": "sha512-tQbV/4u5WVB8HMJr08pgw0b6nG4RGt/tj+7Numvq+zqcvUFeMaIWWOUFltiU+6go8BSO2/ogsB4EasDaj0y68Q==",
 			"dev": true,
 			"dependencies": {
-				"globby": "^11.0.1",
-				"graceful-fs": "^4.2.4",
-				"is-glob": "^4.0.1",
-				"is-path-cwd": "^2.2.0",
-				"is-path-inside": "^3.0.2",
-				"p-map": "^4.0.0",
+				"globby": "^13.1.2",
+				"graceful-fs": "^4.2.10",
+				"is-glob": "^4.0.3",
+				"is-path-cwd": "^3.0.0",
+				"is-path-inside": "^4.0.0",
+				"p-map": "^5.5.0",
 				"rimraf": "^3.0.2",
-				"slash": "^3.0.0"
-			},
-			"engines": {
-				"node": ">=10"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/sindresorhus"
-			}
-		},
-		"node_modules/del/node_modules/aggregate-error": {
-			"version": "3.1.0",
-			"resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
-			"integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
-			"dev": true,
-			"dependencies": {
-				"clean-stack": "^2.0.0",
-				"indent-string": "^4.0.0"
-			},
-			"engines": {
-				"node": ">=8"
-			}
-		},
-		"node_modules/del/node_modules/clean-stack": {
-			"version": "2.2.0",
-			"resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
-			"integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
-			"dev": true,
-			"engines": {
-				"node": ">=6"
-			}
-		},
-		"node_modules/del/node_modules/globby": {
-			"version": "11.1.0",
-			"resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
-			"integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
-			"dev": true,
-			"dependencies": {
-				"array-union": "^2.1.0",
-				"dir-glob": "^3.0.1",
-				"fast-glob": "^3.2.9",
-				"ignore": "^5.2.0",
-				"merge2": "^1.4.1",
-				"slash": "^3.0.0"
+				"slash": "^4.0.0"
 			},
 			"engines": {
-				"node": ">=10"
+				"node": ">=14.16"
 			},
 			"funding": {
 				"url": "https://github.com/sponsors/sindresorhus"
 			}
 		},
-		"node_modules/del/node_modules/indent-string": {
-			"version": "4.0.0",
-			"resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
-			"integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
-			"dev": true,
-			"engines": {
-				"node": ">=8"
-			}
-		},
-		"node_modules/del/node_modules/p-map": {
+		"node_modules/del/node_modules/slash": {
 			"version": "4.0.0",
-			"resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
-			"integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
+			"resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz",
+			"integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==",
 			"dev": true,
-			"dependencies": {
-				"aggregate-error": "^3.0.0"
-			},
 			"engines": {
-				"node": ">=10"
+				"node": ">=12"
 			},
 			"funding": {
 				"url": "https://github.com/sponsors/sindresorhus"
@@ -2455,12 +2418,12 @@
 			"peer": true
 		},
 		"node_modules/emittery": {
-			"version": "0.11.0",
-			"resolved": "https://registry.npmjs.org/emittery/-/emittery-0.11.0.tgz",
-			"integrity": "sha512-S/7tzL6v5i+4iJd627Nhv9cLFIo5weAIlGccqJFpnBoDB8U1TF2k5tez4J/QNuxyyhWuFqHg1L84Kd3m7iXg6g==",
+			"version": "1.0.1",
+			"resolved": "https://registry.npmjs.org/emittery/-/emittery-1.0.1.tgz",
+			"integrity": "sha512-2ID6FdrMD9KDLldGesP6317G78K7km/kMcwItRtVFva7I/cSEOIaLpewaUb+YLXVwdAp3Ctfxh/V5zIl1sj7dQ==",
 			"dev": true,
 			"engines": {
-				"node": ">=12"
+				"node": ">=14.16"
 			},
 			"funding": {
 				"url": "https://github.com/sindresorhus/emittery?sponsor=1"
@@ -3729,9 +3692,9 @@
 			}
 		},
 		"node_modules/eslint-plugin-promise": {
-			"version": "6.1.0",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.0.tgz",
-			"integrity": "sha512-NYCfDZF/KHt27p06nFAttgWuFyIDSUMnNaJBIY1FY9GpBFhdT2vMG64HlFguSgcJeyM5by6Yr5csSOuJm60eXQ==",
+			"version": "6.1.1",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz",
+			"integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==",
 			"dev": true,
 			"engines": {
 				"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -4131,16 +4094,16 @@
 			}
 		},
 		"node_modules/figures": {
-			"version": "4.0.1",
-			"resolved": "https://registry.npmjs.org/figures/-/figures-4.0.1.tgz",
-			"integrity": "sha512-rElJwkA/xS04Vfg+CaZodpso7VqBknOYbzi6I76hI4X80RUjkSxO2oAyPmGbuXUppywjqndOrQDl817hDnI++w==",
+			"version": "5.0.0",
+			"resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz",
+			"integrity": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==",
 			"dev": true,
 			"dependencies": {
 				"escape-string-regexp": "^5.0.0",
 				"is-unicode-supported": "^1.2.0"
 			},
 			"engines": {
-				"node": ">=12"
+				"node": ">=14"
 			},
 			"funding": {
 				"url": "https://github.com/sponsors/sindresorhus"
@@ -4347,20 +4310,6 @@
 			"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
 			"dev": true
 		},
-		"node_modules/fsevents": {
-			"version": "2.3.2",
-			"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
-			"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
-			"dev": true,
-			"hasInstallScript": true,
-			"optional": true,
-			"os": [
-				"darwin"
-			],
-			"engines": {
-				"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
-			}
-		},
 		"node_modules/function-bind": {
 			"version": "1.1.1",
 			"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
@@ -5308,21 +5257,27 @@
 			}
 		},
 		"node_modules/is-path-cwd": {
-			"version": "2.2.0",
-			"resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz",
-			"integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==",
+			"version": "3.0.0",
+			"resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-3.0.0.tgz",
+			"integrity": "sha512-kyiNFFLU0Ampr6SDZitD/DwUo4Zs1nSdnygUBqsu3LooL00Qvb5j+UnvApUn/TTj1J3OuE6BTdQ5rudKmU2ZaA==",
 			"dev": true,
 			"engines": {
-				"node": ">=6"
+				"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+			},
+			"funding": {
+				"url": "https://github.com/sponsors/sindresorhus"
 			}
 		},
 		"node_modules/is-path-inside": {
-			"version": "3.0.3",
-			"resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
-			"integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+			"version": "4.0.0",
+			"resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz",
+			"integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==",
 			"dev": true,
 			"engines": {
-				"node": ">=8"
+				"node": ">=12"
+			},
+			"funding": {
+				"url": "https://github.com/sponsors/sindresorhus"
 			}
 		},
 		"node_modules/is-plain-obj": {
@@ -5625,15 +5580,15 @@
 			}
 		},
 		"node_modules/jscpd": {
-			"version": "3.5.0",
-			"resolved": "https://registry.npmjs.org/jscpd/-/jscpd-3.5.0.tgz",
-			"integrity": "sha512-MjGlN7C6vRTimGU1Ud2cjw8nQ0oYBedeiQZ3tTP/FgO1f/4mboXQf6oXgcXG6p8Br3Dy+thRcUBCTXvPvmHrsg==",
+			"version": "3.5.1",
+			"resolved": "https://registry.npmjs.org/jscpd/-/jscpd-3.5.1.tgz",
+			"integrity": "sha512-LCeriLcj26jDaQ58K7p9oMaNP1dsqrEPJkbI0LD/OVjceMJLhDMO3GRAf69uzbnHlhHhufOA+EUb+Wuu5Dc1kA==",
 			"dev": true,
 			"dependencies": {
 				"@jscpd/core": "^3.5.0",
-				"@jscpd/finder": "^3.5.0",
+				"@jscpd/finder": "^3.5.1",
 				"@jscpd/html-reporter": "^3.5.0",
-				"@jscpd/tokenizer": "^3.5.0",
+				"@jscpd/tokenizer": "^3.5.1",
 				"colors": "1.4.0",
 				"commander": "^5.0.0",
 				"fs-extra": "^9.1.0",
@@ -7089,12 +7044,15 @@
 			}
 		},
 		"node_modules/parse-ms": {
-			"version": "2.1.0",
-			"resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz",
-			"integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==",
+			"version": "3.0.0",
+			"resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-3.0.0.tgz",
+			"integrity": "sha512-Tpb8Z7r7XbbtBTrM9UhpkzzaMrqA2VXMT3YChzYltwV3P3pM6t8wl7TvpMnSTosz1aQAdVib7kdoys7vYOPerw==",
 			"dev": true,
 			"engines": {
-				"node": ">=6"
+				"node": ">=12"
+			},
+			"funding": {
+				"url": "https://github.com/sponsors/sindresorhus"
 			}
 		},
 		"node_modules/parseurl": {
@@ -7396,15 +7354,15 @@
 			}
 		},
 		"node_modules/pretty-ms": {
-			"version": "7.0.1",
-			"resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz",
-			"integrity": "sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==",
+			"version": "8.0.0",
+			"resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-8.0.0.tgz",
+			"integrity": "sha512-ASJqOugUF1bbzI35STMBUpZqdfYKlJugy6JBziGi2EE+AL5JPJGSzvpeVXojxrr0ViUYoToUjb5kjSEGf7Y83Q==",
 			"dev": true,
 			"dependencies": {
-				"parse-ms": "^2.1.0"
+				"parse-ms": "^3.0.0"
 			},
 			"engines": {
-				"node": ">=10"
+				"node": ">=14.16"
 			},
 			"funding": {
 				"url": "https://github.com/sponsors/sindresorhus"
@@ -8059,9 +8017,9 @@
 			}
 		},
 		"node_modules/rollup": {
-			"version": "3.2.3",
-			"resolved": "https://registry.npmjs.org/rollup/-/rollup-3.2.3.tgz",
-			"integrity": "sha512-qfadtkY5kl0F5e4dXVdj2D+GtOdifasXHFMiL1SMf9ADQDv5Eti6xReef9FKj+iQPR2pvtqWna57s/PjARY4fg==",
+			"version": "3.3.0",
+			"resolved": "https://registry.npmjs.org/rollup/-/rollup-3.3.0.tgz",
+			"integrity": "sha512-wqOV/vUJCYEbWsXvwCkgGWvgaEnsbn4jxBQWKpN816CqsmCimDmCNJI83c6if7QVD4v/zlyRzxN7U2yDT5rfoA==",
 			"dev": true,
 			"bin": {
 				"rollup": "dist/bin/rollup"
@@ -8383,9 +8341,9 @@
 			"dev": true
 		},
 		"node_modules/stack-utils": {
-			"version": "2.0.5",
-			"resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz",
-			"integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==",
+			"version": "2.0.6",
+			"resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz",
+			"integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==",
 			"dev": true,
 			"dependencies": {
 				"escape-string-regexp": "^2.0.0"
@@ -8706,18 +8664,18 @@
 			}
 		},
 		"node_modules/temp-dir": {
-			"version": "2.0.0",
-			"resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz",
-			"integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==",
+			"version": "3.0.0",
+			"resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz",
+			"integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==",
 			"dev": true,
 			"engines": {
-				"node": ">=8"
+				"node": ">=14.16"
 			}
 		},
 		"node_modules/terser": {
-			"version": "5.15.0",
-			"resolved": "https://registry.npmjs.org/terser/-/terser-5.15.0.tgz",
-			"integrity": "sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA==",
+			"version": "5.15.1",
+			"resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz",
+			"integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==",
 			"dev": true,
 			"dependencies": {
 				"@jridgewell/source-map": "^0.3.2",
@@ -9521,16 +9479,16 @@
 			}
 		},
 		"node_modules/write-file-atomic": {
-			"version": "4.0.2",
-			"resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz",
-			"integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==",
+			"version": "5.0.0",
+			"resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.0.tgz",
+			"integrity": "sha512-R7NYMnHSlV42K54lwY9lvW6MnSm1HSJqZL3xiSgi9E7//FYaI74r2G0rd+/X6VAMkHEdzxQaU5HUOXWUz5kA/w==",
 			"dev": true,
 			"dependencies": {
 				"imurmurhash": "^0.1.4",
 				"signal-exit": "^3.0.7"
 			},
 			"engines": {
-				"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+				"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
 			}
 		},
 		"node_modules/write/node_modules/mkdirp": {
@@ -9546,9 +9504,9 @@
 			}
 		},
 		"node_modules/ws": {
-			"version": "8.9.0",
-			"resolved": "https://registry.npmjs.org/ws/-/ws-8.9.0.tgz",
-			"integrity": "sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg==",
+			"version": "8.11.0",
+			"resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz",
+			"integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==",
 			"dev": true,
 			"engines": {
 				"node": ">=10.0.0"
@@ -9589,9 +9547,9 @@
 			}
 		},
 		"node_modules/xo": {
-			"version": "0.52.3",
-			"resolved": "https://registry.npmjs.org/xo/-/xo-0.52.3.tgz",
-			"integrity": "sha512-liCEteZ5z+QRyh3XzsYWQyxedBHBvx8CDlNvvi+BJz74L0E5/ID2v7JtoX3bD541AlMuOy4e/iWif6hhNGBFNw==",
+			"version": "0.52.4",
+			"resolved": "https://registry.npmjs.org/xo/-/xo-0.52.4.tgz",
+			"integrity": "sha512-5K+2bSy+nPO1fE6TS5KydgqhZ5pyXvO1P6Rw98aflxHi2LFWoShLmDpJOCxSpIP5867LVOCdH/WO+7iXk6/WVQ==",
 			"bundleDependencies": [
 				"@typescript-eslint/eslint-plugin",
 				"@typescript-eslint/parser",
@@ -9688,16 +9646,15 @@
 			"license": "MIT"
 		},
 		"node_modules/xo/node_modules/@typescript-eslint/eslint-plugin": {
-			"version": "5.36.1",
+			"version": "5.39.0",
 			"dev": true,
 			"inBundle": true,
 			"license": "MIT",
 			"dependencies": {
-				"@typescript-eslint/scope-manager": "5.36.1",
-				"@typescript-eslint/type-utils": "5.36.1",
-				"@typescript-eslint/utils": "5.36.1",
+				"@typescript-eslint/scope-manager": "5.39.0",
+				"@typescript-eslint/type-utils": "5.39.0",
+				"@typescript-eslint/utils": "5.39.0",
 				"debug": "^4.3.4",
-				"functional-red-black-tree": "^1.0.1",
 				"ignore": "^5.2.0",
 				"regexpp": "^3.2.0",
 				"semver": "^7.3.7",
@@ -9721,14 +9678,14 @@
 			}
 		},
 		"node_modules/xo/node_modules/@typescript-eslint/parser": {
-			"version": "5.36.1",
+			"version": "5.39.0",
 			"dev": true,
 			"inBundle": true,
 			"license": "BSD-2-Clause",
 			"dependencies": {
-				"@typescript-eslint/scope-manager": "5.36.1",
-				"@typescript-eslint/types": "5.36.1",
-				"@typescript-eslint/typescript-estree": "5.36.1",
+				"@typescript-eslint/scope-manager": "5.39.0",
+				"@typescript-eslint/types": "5.39.0",
+				"@typescript-eslint/typescript-estree": "5.39.0",
 				"debug": "^4.3.4"
 			},
 			"engines": {
@@ -9748,13 +9705,13 @@
 			}
 		},
 		"node_modules/xo/node_modules/@typescript-eslint/scope-manager": {
-			"version": "5.36.1",
+			"version": "5.39.0",
 			"dev": true,
 			"inBundle": true,
 			"license": "MIT",
 			"dependencies": {
-				"@typescript-eslint/types": "5.36.1",
-				"@typescript-eslint/visitor-keys": "5.36.1"
+				"@typescript-eslint/types": "5.39.0",
+				"@typescript-eslint/visitor-keys": "5.39.0"
 			},
 			"engines": {
 				"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -9765,13 +9722,13 @@
 			}
 		},
 		"node_modules/xo/node_modules/@typescript-eslint/type-utils": {
-			"version": "5.36.1",
+			"version": "5.39.0",
 			"dev": true,
 			"inBundle": true,
 			"license": "MIT",
 			"dependencies": {
-				"@typescript-eslint/typescript-estree": "5.36.1",
-				"@typescript-eslint/utils": "5.36.1",
+				"@typescript-eslint/typescript-estree": "5.39.0",
+				"@typescript-eslint/utils": "5.39.0",
 				"debug": "^4.3.4",
 				"tsutils": "^3.21.0"
 			},
@@ -9792,7 +9749,7 @@
 			}
 		},
 		"node_modules/xo/node_modules/@typescript-eslint/types": {
-			"version": "5.36.1",
+			"version": "5.39.0",
 			"dev": true,
 			"inBundle": true,
 			"license": "MIT",
@@ -9805,13 +9762,13 @@
 			}
 		},
 		"node_modules/xo/node_modules/@typescript-eslint/typescript-estree": {
-			"version": "5.36.1",
+			"version": "5.39.0",
 			"dev": true,
 			"inBundle": true,
 			"license": "BSD-2-Clause",
 			"dependencies": {
-				"@typescript-eslint/types": "5.36.1",
-				"@typescript-eslint/visitor-keys": "5.36.1",
+				"@typescript-eslint/types": "5.39.0",
+				"@typescript-eslint/visitor-keys": "5.39.0",
 				"debug": "^4.3.4",
 				"globby": "^11.1.0",
 				"is-glob": "^4.0.3",
@@ -9861,15 +9818,15 @@
 			}
 		},
 		"node_modules/xo/node_modules/@typescript-eslint/utils": {
-			"version": "5.36.1",
+			"version": "5.39.0",
 			"dev": true,
 			"inBundle": true,
 			"license": "MIT",
 			"dependencies": {
 				"@types/json-schema": "^7.0.9",
-				"@typescript-eslint/scope-manager": "5.36.1",
-				"@typescript-eslint/types": "5.36.1",
-				"@typescript-eslint/typescript-estree": "5.36.1",
+				"@typescript-eslint/scope-manager": "5.39.0",
+				"@typescript-eslint/types": "5.39.0",
+				"@typescript-eslint/typescript-estree": "5.39.0",
 				"eslint-scope": "^5.1.1",
 				"eslint-utils": "^3.0.0"
 			},
@@ -9885,12 +9842,12 @@
 			}
 		},
 		"node_modules/xo/node_modules/@typescript-eslint/visitor-keys": {
-			"version": "5.36.1",
+			"version": "5.39.0",
 			"dev": true,
 			"inBundle": true,
 			"license": "MIT",
 			"dependencies": {
-				"@typescript-eslint/types": "5.36.1",
+				"@typescript-eslint/types": "5.39.0",
 				"eslint-visitor-keys": "^3.3.0"
 			},
 			"engines": {
@@ -10086,7 +10043,7 @@
 			}
 		},
 		"node_modules/xo/node_modules/fast-glob": {
-			"version": "3.2.11",
+			"version": "3.2.12",
 			"dev": true,
 			"inBundle": true,
 			"license": "MIT",
@@ -10138,12 +10095,6 @@
 				"url": "https://github.com/sponsors/sindresorhus"
 			}
 		},
-		"node_modules/xo/node_modules/functional-red-black-tree": {
-			"version": "1.0.1",
-			"dev": true,
-			"inBundle": true,
-			"license": "MIT"
-		},
 		"node_modules/xo/node_modules/glob-parent": {
 			"version": "5.1.2",
 			"dev": true,
@@ -10481,9 +10432,9 @@
 			}
 		},
 		"node_modules/yargs": {
-			"version": "17.6.0",
-			"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.0.tgz",
-			"integrity": "sha512-8H/wTDqlSwoSnScvV2N/JHfLWOKuh5MVla9hqLjK3nsfyy6Y4kDSYSvkU5YCUEPOSnRXfIyx3Sq+B/IWudTo4g==",
+			"version": "17.6.2",
+			"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz",
+			"integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==",
 			"dev": true,
 			"dependencies": {
 				"cliui": "^8.0.1",
@@ -10492,7 +10443,7 @@
 				"require-directory": "^2.1.1",
 				"string-width": "^4.2.3",
 				"y18n": "^5.0.5",
-				"yargs-parser": "^21.0.0"
+				"yargs-parser": "^21.1.1"
 			},
 			"engines": {
 				"node": ">=12"
@@ -10599,9 +10550,9 @@
 			}
 		},
 		"@babel/helper-string-parser": {
-			"version": "7.18.10",
-			"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz",
-			"integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==",
+			"version": "7.19.4",
+			"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz",
+			"integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==",
 			"dev": true
 		},
 		"@babel/helper-validator-identifier": {
@@ -10665,18 +10616,18 @@
 			}
 		},
 		"@babel/parser": {
-			"version": "7.19.3",
-			"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.3.tgz",
-			"integrity": "sha512-pJ9xOlNWHiy9+FuFP09DEAFbAn4JskgRsVcc169w2xRBC3FRGuQEwjeIMMND9L2zc0iEhO/tGv4Zq+km+hxNpQ==",
+			"version": "7.20.3",
+			"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz",
+			"integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==",
 			"dev": true
 		},
 		"@babel/types": {
-			"version": "7.19.3",
-			"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.3.tgz",
-			"integrity": "sha512-hGCaQzIY22DJlDh9CH7NOxgKkFjBk0Cw9xDO1Xmh2151ti7wiGfQ3LauXzL4HP1fmFlTX6XjpRETTpUcv7wQLw==",
+			"version": "7.20.2",
+			"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.2.tgz",
+			"integrity": "sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==",
 			"dev": true,
 			"requires": {
-				"@babel/helper-string-parser": "^7.18.10",
+				"@babel/helper-string-parser": "^7.19.4",
 				"@babel/helper-validator-identifier": "^7.19.1",
 				"to-fast-properties": "^2.0.0"
 			}
@@ -10815,13 +10766,13 @@
 			}
 		},
 		"@jscpd/finder": {
-			"version": "3.5.0",
-			"resolved": "https://registry.npmjs.org/@jscpd/finder/-/finder-3.5.0.tgz",
-			"integrity": "sha512-ad6Ilm749Glc0JUDTMmojOHfSC8DRFJaYZZSlA+OOqsYlnqGL1nENKUL7V1hM4vULEsSae8bW16z9Cb7xYJmGw==",
+			"version": "3.5.1",
+			"resolved": "https://registry.npmjs.org/@jscpd/finder/-/finder-3.5.1.tgz",
+			"integrity": "sha512-9+hpaJkr4W90A4h8coS0ibfvUQRk0VvpwrLLNH0+kAJMKk7uYgqFEj/5Agy1kS0VFZwJEnmkXSvWp8NjFqUhGQ==",
 			"dev": true,
 			"requires": {
 				"@jscpd/core": "^3.5.0",
-				"@jscpd/tokenizer": "^3.5.0",
+				"@jscpd/tokenizer": "^3.5.1",
 				"blamer": "^1.0.1",
 				"bytes": "^3.1.0",
 				"cli-table3": "^0.6.0",
@@ -10843,9 +10794,9 @@
 			}
 		},
 		"@jscpd/tokenizer": {
-			"version": "3.5.0",
-			"resolved": "https://registry.npmjs.org/@jscpd/tokenizer/-/tokenizer-3.5.0.tgz",
-			"integrity": "sha512-5IQC+jEKw+TT+3sQa6JFKPRyQLHPwgBP14yQn1FeKvVZmxT5fihI7jg92NK6DT0k7yrK9v4Z7qagJ63WP4GVXw==",
+			"version": "3.5.1",
+			"resolved": "https://registry.npmjs.org/@jscpd/tokenizer/-/tokenizer-3.5.1.tgz",
+			"integrity": "sha512-Tj8ehnb4AyfdsfR2w1Lp/62e4AwyMKD53NJ7KpLcmh74BqzfwbDgi7QBNfL9L/FJfhovt24uxG3JNOIEYONixw==",
 			"dev": true,
 			"requires": {
 				"@jscpd/core": "^3.5.0",
@@ -10853,6 +10804,15 @@
 				"spark-md5": "^3.0.1"
 			}
 		},
+		"@koa/cors": {
+			"version": "4.0.0",
+			"resolved": "https://registry.npmjs.org/@koa/cors/-/cors-4.0.0.tgz",
+			"integrity": "sha512-Y4RrbvGTlAaa04DBoPBWJqDR5gPj32OOz827ULXfgB1F7piD1MB/zwn8JR2LAnvdILhxUbXbkXGWuNVsFuVFCQ==",
+			"dev": true,
+			"requires": {
+				"vary": "^1.1.2"
+			}
+		},
 		"@noble/ed25519": {
 			"version": "1.7.1",
 			"resolved": "https://registry.npmjs.org/@noble/ed25519/-/ed25519-1.7.1.tgz",
@@ -11155,9 +11115,9 @@
 			}
 		},
 		"acorn": {
-			"version": "8.8.0",
-			"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz",
-			"integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==",
+			"version": "8.8.1",
+			"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz",
+			"integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==",
 			"dev": true
 		},
 		"acorn-import-assertions": {
@@ -11235,9 +11195,9 @@
 			"dev": true
 		},
 		"ansi-styles": {
-			"version": "6.1.1",
-			"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.1.tgz",
-			"integrity": "sha512-qDOv24WjnYuL+wbwHdlsYZFy+cgPtrYw0Tn7GLORicQp9BkQLzrgI3Pm4VyR9ERZ41YTn7KlMPuL1n05WdZvmg==",
+			"version": "6.2.1",
+			"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
+			"integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
 			"dev": true
 		},
 		"anymatch": {
@@ -11336,22 +11296,22 @@
 			"dev": true
 		},
 		"ava": {
-			"version": "4.3.3",
-			"resolved": "https://registry.npmjs.org/ava/-/ava-4.3.3.tgz",
-			"integrity": "sha512-9Egq/d9R74ExrWohHeqUlexjDbgZJX5jA1Wq4KCTqc3wIfpGEK79zVy4rBtofJ9YKIxs4PzhJ8BgbW5PlAYe6w==",
+			"version": "5.1.0",
+			"resolved": "https://registry.npmjs.org/ava/-/ava-5.1.0.tgz",
+			"integrity": "sha512-e5VFrSQ0WBPyZJWRXVrO7RFOizFeNM0t2PORwrPvWtApgkORI6cvGnY3GX1G+lzpd0HjqNx5Jus22AhxVnUMNA==",
 			"dev": true,
 			"requires": {
-				"acorn": "^8.7.1",
+				"acorn": "^8.8.1",
 				"acorn-walk": "^8.2.0",
-				"ansi-styles": "^6.1.0",
+				"ansi-styles": "^6.2.1",
 				"arrgv": "^1.0.2",
 				"arrify": "^3.0.0",
 				"callsites": "^4.0.0",
 				"cbor": "^8.1.0",
-				"chalk": "^5.0.1",
+				"chalk": "^5.1.2",
 				"chokidar": "^3.5.3",
 				"chunkd": "^2.0.1",
-				"ci-info": "^3.3.1",
+				"ci-info": "^3.6.1",
 				"ci-parallel-vars": "^1.0.1",
 				"clean-yaml-object": "^0.1.0",
 				"cli-truncate": "^3.1.0",
@@ -11360,10 +11320,10 @@
 				"concordance": "^5.0.4",
 				"currently-unhandled": "^0.4.1",
 				"debug": "^4.3.4",
-				"del": "^6.1.1",
-				"emittery": "^0.11.0",
-				"figures": "^4.0.1",
-				"globby": "^13.1.1",
+				"del": "^7.0.0",
+				"emittery": "^1.0.1",
+				"figures": "^5.0.0",
+				"globby": "^13.1.2",
 				"ignore-by-default": "^2.1.0",
 				"indent-string": "^5.0.0",
 				"is-error": "^2.2.2",
@@ -11373,19 +11333,19 @@
 				"mem": "^9.0.2",
 				"ms": "^2.1.3",
 				"p-event": "^5.0.1",
-				"p-map": "^5.4.0",
+				"p-map": "^5.5.0",
 				"picomatch": "^2.3.1",
 				"pkg-conf": "^4.0.0",
 				"plur": "^5.1.0",
-				"pretty-ms": "^7.0.1",
+				"pretty-ms": "^8.0.0",
 				"resolve-cwd": "^3.0.0",
 				"slash": "^3.0.0",
-				"stack-utils": "^2.0.5",
+				"stack-utils": "^2.0.6",
 				"strip-ansi": "^7.0.1",
 				"supertap": "^3.0.1",
-				"temp-dir": "^2.0.0",
-				"write-file-atomic": "^4.0.1",
-				"yargs": "^17.5.1"
+				"temp-dir": "^3.0.0",
+				"write-file-atomic": "^5.0.0",
+				"yargs": "^17.6.2"
 			}
 		},
 		"babel-walk": {
@@ -11458,17 +11418,19 @@
 			}
 		},
 		"browser-ava": {
-			"version": "1.0.0",
-			"resolved": "https://registry.npmjs.org/browser-ava/-/browser-ava-1.0.0.tgz",
-			"integrity": "sha512-gdR+YWG/cTW8v0YiONBF3LJgM/uJfNDg+lRP9gUXTtgPzA7iNRjGx4YmL74dees9qMawsihZmbrY0cO0YLRBaw==",
+			"version": "1.1.0",
+			"resolved": "https://registry.npmjs.org/browser-ava/-/browser-ava-1.1.0.tgz",
 			"dev": true,
 			"requires": {
+				"@koa/cors": "^4.0.0",
+				"chalk": "^5.1.2",
 				"commander": "^9.4.1",
 				"es-module-lexer": "^1.0.5",
+				"globby": "^13.1.2",
 				"koa": "^2.13.4",
 				"koa-static": "^5.0.0",
 				"playwright": "^1.27.1",
-				"ws": "^8.9.0"
+				"ws": "^8.11.0"
 			},
 			"dependencies": {
 				"commander": {
@@ -11478,9 +11440,9 @@
 					"dev": true
 				},
 				"es-module-lexer": {
-					"version": "1.0.5",
-					"resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.0.5.tgz",
-					"integrity": "sha512-oxJ+R1DzAw6j4g1Lx70bIKgfoRCX67C51kH2Mx7J4bS7ZzWxkcivXskFspzgKHUj6JUwUTghQgUPy8zTp6mMBw==",
+					"version": "1.1.0",
+					"resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.1.0.tgz",
+					"integrity": "sha512-fJg+1tiyEeS8figV+fPcPpm8WqJEflG3yPU0NOm5xMvrNkuiy7HzX/Ljng4Y0hAoiw4/3hQTCFYw+ub8+a2pRA==",
 					"dev": true
 				}
 			}
@@ -11680,9 +11642,9 @@
 			}
 		},
 		"chalk": {
-			"version": "5.0.1",
-			"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.0.1.tgz",
-			"integrity": "sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==",
+			"version": "5.1.2",
+			"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.1.2.tgz",
+			"integrity": "sha512-E5CkT4jWURs1Vy5qGJye+XwCkNj7Od3Af7CP6SujMetSMkLs8Do2RWJK5yx1wamHV/op8Rz+9rltjaTQWDnEFQ==",
 			"dev": true
 		},
 		"character-parser": {
@@ -11902,9 +11864,9 @@
 			"dev": true
 		},
 		"ci-info": {
-			"version": "3.4.0",
-			"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.4.0.tgz",
-			"integrity": "sha512-t5QdPT5jq3o262DOQ8zA6E1tlH2upmUc4Hlvrbx1pGYJuiiHl7O7rvVNI+l8HTVhd/q3Qc9vqimkNk5yiXsAug==",
+			"version": "3.6.1",
+			"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.6.1.tgz",
+			"integrity": "sha512-up5ggbaDqOqJ4UqLKZ2naVkyqSJQgJi5lwD6b6mM748ysrghDBX0bx/qJTUHzw7zu6Mq4gycviSF5hJnwceD8w==",
 			"dev": true
 		},
 		"ci-parallel-vars": {
@@ -12345,65 +12307,26 @@
 			}
 		},
 		"del": {
-			"version": "6.1.1",
-			"resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz",
-			"integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==",
+			"version": "7.0.0",
+			"resolved": "https://registry.npmjs.org/del/-/del-7.0.0.tgz",
+			"integrity": "sha512-tQbV/4u5WVB8HMJr08pgw0b6nG4RGt/tj+7Numvq+zqcvUFeMaIWWOUFltiU+6go8BSO2/ogsB4EasDaj0y68Q==",
 			"dev": true,
 			"requires": {
-				"globby": "^11.0.1",
-				"graceful-fs": "^4.2.4",
-				"is-glob": "^4.0.1",
-				"is-path-cwd": "^2.2.0",
-				"is-path-inside": "^3.0.2",
-				"p-map": "^4.0.0",
+				"globby": "^13.1.2",
+				"graceful-fs": "^4.2.10",
+				"is-glob": "^4.0.3",
+				"is-path-cwd": "^3.0.0",
+				"is-path-inside": "^4.0.0",
+				"p-map": "^5.5.0",
 				"rimraf": "^3.0.2",
-				"slash": "^3.0.0"
+				"slash": "^4.0.0"
 			},
 			"dependencies": {
-				"aggregate-error": {
-					"version": "3.1.0",
-					"resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
-					"integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
-					"dev": true,
-					"requires": {
-						"clean-stack": "^2.0.0",
-						"indent-string": "^4.0.0"
-					}
-				},
-				"clean-stack": {
-					"version": "2.2.0",
-					"resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
-					"integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
-					"dev": true
-				},
-				"globby": {
-					"version": "11.1.0",
-					"resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
-					"integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
-					"dev": true,
-					"requires": {
-						"array-union": "^2.1.0",
-						"dir-glob": "^3.0.1",
-						"fast-glob": "^3.2.9",
-						"ignore": "^5.2.0",
-						"merge2": "^1.4.1",
-						"slash": "^3.0.0"
-					}
-				},
-				"indent-string": {
+				"slash": {
 					"version": "4.0.0",
-					"resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
-					"integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
+					"resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz",
+					"integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==",
 					"dev": true
-				},
-				"p-map": {
-					"version": "4.0.0",
-					"resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
-					"integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
-					"dev": true,
-					"requires": {
-						"aggregate-error": "^3.0.0"
-					}
 				}
 			}
 		},
@@ -12476,9 +12399,9 @@
 			"peer": true
 		},
 		"emittery": {
-			"version": "0.11.0",
-			"resolved": "https://registry.npmjs.org/emittery/-/emittery-0.11.0.tgz",
-			"integrity": "sha512-S/7tzL6v5i+4iJd627Nhv9cLFIo5weAIlGccqJFpnBoDB8U1TF2k5tez4J/QNuxyyhWuFqHg1L84Kd3m7iXg6g==",
+			"version": "1.0.1",
+			"resolved": "https://registry.npmjs.org/emittery/-/emittery-1.0.1.tgz",
+			"integrity": "sha512-2ID6FdrMD9KDLldGesP6317G78K7km/kMcwItRtVFva7I/cSEOIaLpewaUb+YLXVwdAp3Ctfxh/V5zIl1sj7dQ==",
 			"dev": true
 		},
 		"emoji-regex": {
@@ -13525,9 +13448,9 @@
 			}
 		},
 		"eslint-plugin-promise": {
-			"version": "6.1.0",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.0.tgz",
-			"integrity": "sha512-NYCfDZF/KHt27p06nFAttgWuFyIDSUMnNaJBIY1FY9GpBFhdT2vMG64HlFguSgcJeyM5by6Yr5csSOuJm60eXQ==",
+			"version": "6.1.1",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz",
+			"integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==",
 			"dev": true,
 			"requires": {}
 		},
@@ -13751,9 +13674,9 @@
 			}
 		},
 		"figures": {
-			"version": "4.0.1",
-			"resolved": "https://registry.npmjs.org/figures/-/figures-4.0.1.tgz",
-			"integrity": "sha512-rElJwkA/xS04Vfg+CaZodpso7VqBknOYbzi6I76hI4X80RUjkSxO2oAyPmGbuXUppywjqndOrQDl817hDnI++w==",
+			"version": "5.0.0",
+			"resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz",
+			"integrity": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==",
 			"dev": true,
 			"requires": {
 				"escape-string-regexp": "^5.0.0",
@@ -13911,13 +13834,6 @@
 			"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
 			"dev": true
 		},
-		"fsevents": {
-			"version": "2.3.2",
-			"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
-			"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
-			"dev": true,
-			"optional": true
-		},
 		"function-bind": {
 			"version": "1.1.1",
 			"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
@@ -14597,15 +14513,15 @@
 			}
 		},
 		"is-path-cwd": {
-			"version": "2.2.0",
-			"resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz",
-			"integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==",
+			"version": "3.0.0",
+			"resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-3.0.0.tgz",
+			"integrity": "sha512-kyiNFFLU0Ampr6SDZitD/DwUo4Zs1nSdnygUBqsu3LooL00Qvb5j+UnvApUn/TTj1J3OuE6BTdQ5rudKmU2ZaA==",
 			"dev": true
 		},
 		"is-path-inside": {
-			"version": "3.0.3",
-			"resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
-			"integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+			"version": "4.0.0",
+			"resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz",
+			"integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==",
 			"dev": true
 		},
 		"is-plain-obj": {
@@ -14828,15 +14744,15 @@
 			}
 		},
 		"jscpd": {
-			"version": "3.5.0",
-			"resolved": "https://registry.npmjs.org/jscpd/-/jscpd-3.5.0.tgz",
-			"integrity": "sha512-MjGlN7C6vRTimGU1Ud2cjw8nQ0oYBedeiQZ3tTP/FgO1f/4mboXQf6oXgcXG6p8Br3Dy+thRcUBCTXvPvmHrsg==",
+			"version": "3.5.1",
+			"resolved": "https://registry.npmjs.org/jscpd/-/jscpd-3.5.1.tgz",
+			"integrity": "sha512-LCeriLcj26jDaQ58K7p9oMaNP1dsqrEPJkbI0LD/OVjceMJLhDMO3GRAf69uzbnHlhHhufOA+EUb+Wuu5Dc1kA==",
 			"dev": true,
 			"requires": {
 				"@jscpd/core": "^3.5.0",
-				"@jscpd/finder": "^3.5.0",
+				"@jscpd/finder": "^3.5.1",
 				"@jscpd/html-reporter": "^3.5.0",
-				"@jscpd/tokenizer": "^3.5.0",
+				"@jscpd/tokenizer": "^3.5.1",
 				"colors": "1.4.0",
 				"commander": "^5.0.0",
 				"fs-extra": "^9.1.0",
@@ -15911,9 +15827,9 @@
 			}
 		},
 		"parse-ms": {
-			"version": "2.1.0",
-			"resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz",
-			"integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==",
+			"version": "3.0.0",
+			"resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-3.0.0.tgz",
+			"integrity": "sha512-Tpb8Z7r7XbbtBTrM9UhpkzzaMrqA2VXMT3YChzYltwV3P3pM6t8wl7TvpMnSTosz1aQAdVib7kdoys7vYOPerw==",
 			"dev": true
 		},
 		"parseurl": {
@@ -16105,12 +16021,12 @@
 			}
 		},
 		"pretty-ms": {
-			"version": "7.0.1",
-			"resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz",
-			"integrity": "sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==",
+			"version": "8.0.0",
+			"resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-8.0.0.tgz",
+			"integrity": "sha512-ASJqOugUF1bbzI35STMBUpZqdfYKlJugy6JBziGi2EE+AL5JPJGSzvpeVXojxrr0ViUYoToUjb5kjSEGf7Y83Q==",
 			"dev": true,
 			"requires": {
-				"parse-ms": "^2.1.0"
+				"parse-ms": "^3.0.0"
 			}
 		},
 		"progress": {
@@ -16627,9 +16543,9 @@
 			}
 		},
 		"rollup": {
-			"version": "3.2.3",
-			"resolved": "https://registry.npmjs.org/rollup/-/rollup-3.2.3.tgz",
-			"integrity": "sha512-qfadtkY5kl0F5e4dXVdj2D+GtOdifasXHFMiL1SMf9ADQDv5Eti6xReef9FKj+iQPR2pvtqWna57s/PjARY4fg==",
+			"version": "3.3.0",
+			"resolved": "https://registry.npmjs.org/rollup/-/rollup-3.3.0.tgz",
+			"integrity": "sha512-wqOV/vUJCYEbWsXvwCkgGWvgaEnsbn4jxBQWKpN816CqsmCimDmCNJI83c6if7QVD4v/zlyRzxN7U2yDT5rfoA==",
 			"dev": true,
 			"requires": {
 				"fsevents": "~2.3.2"
@@ -16877,9 +16793,9 @@
 			"dev": true
 		},
 		"stack-utils": {
-			"version": "2.0.5",
-			"resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz",
-			"integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==",
+			"version": "2.0.6",
+			"resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz",
+			"integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==",
 			"dev": true,
 			"requires": {
 				"escape-string-regexp": "^2.0.0"
@@ -17116,15 +17032,15 @@
 			"dev": true
 		},
 		"temp-dir": {
-			"version": "2.0.0",
-			"resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz",
-			"integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==",
+			"version": "3.0.0",
+			"resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz",
+			"integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==",
 			"dev": true
 		},
 		"terser": {
-			"version": "5.15.0",
-			"resolved": "https://registry.npmjs.org/terser/-/terser-5.15.0.tgz",
-			"integrity": "sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA==",
+			"version": "5.15.1",
+			"resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz",
+			"integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==",
 			"dev": true,
 			"requires": {
 				"@jridgewell/source-map": "^0.3.2",
@@ -17748,9 +17664,9 @@
 			}
 		},
 		"write-file-atomic": {
-			"version": "4.0.2",
-			"resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz",
-			"integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==",
+			"version": "5.0.0",
+			"resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.0.tgz",
+			"integrity": "sha512-R7NYMnHSlV42K54lwY9lvW6MnSm1HSJqZL3xiSgi9E7//FYaI74r2G0rd+/X6VAMkHEdzxQaU5HUOXWUz5kA/w==",
 			"dev": true,
 			"requires": {
 				"imurmurhash": "^0.1.4",
@@ -17758,9 +17674,9 @@
 			}
 		},
 		"ws": {
-			"version": "8.9.0",
-			"resolved": "https://registry.npmjs.org/ws/-/ws-8.9.0.tgz",
-			"integrity": "sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg==",
+			"version": "8.11.0",
+			"resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz",
+			"integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==",
 			"dev": true,
 			"requires": {}
 		},
@@ -17781,9 +17697,9 @@
 			"dev": true
 		},
 		"xo": {
-			"version": "0.52.3",
-			"resolved": "https://registry.npmjs.org/xo/-/xo-0.52.3.tgz",
-			"integrity": "sha512-liCEteZ5z+QRyh3XzsYWQyxedBHBvx8CDlNvvi+BJz74L0E5/ID2v7JtoX3bD541AlMuOy4e/iWif6hhNGBFNw==",
+			"version": "0.52.4",
+			"resolved": "https://registry.npmjs.org/xo/-/xo-0.52.4.tgz",
+			"integrity": "sha512-5K+2bSy+nPO1fE6TS5KydgqhZ5pyXvO1P6Rw98aflxHi2LFWoShLmDpJOCxSpIP5867LVOCdH/WO+7iXk6/WVQ==",
 			"dev": true,
 			"requires": {
 				"@eslint/eslintrc": "^1.3.0",
@@ -17853,15 +17769,14 @@
 					"dev": true
 				},
 				"@typescript-eslint/eslint-plugin": {
-					"version": "5.36.1",
+					"version": "5.39.0",
 					"bundled": true,
 					"dev": true,
 					"requires": {
-						"@typescript-eslint/scope-manager": "5.36.1",
-						"@typescript-eslint/type-utils": "5.36.1",
-						"@typescript-eslint/utils": "5.36.1",
+						"@typescript-eslint/scope-manager": "5.39.0",
+						"@typescript-eslint/type-utils": "5.39.0",
+						"@typescript-eslint/utils": "5.39.0",
 						"debug": "^4.3.4",
-						"functional-red-black-tree": "^1.0.1",
 						"ignore": "^5.2.0",
 						"regexpp": "^3.2.0",
 						"semver": "^7.3.7",
@@ -17869,48 +17784,48 @@
 					}
 				},
 				"@typescript-eslint/parser": {
-					"version": "5.36.1",
+					"version": "5.39.0",
 					"bundled": true,
 					"dev": true,
 					"requires": {
-						"@typescript-eslint/scope-manager": "5.36.1",
-						"@typescript-eslint/types": "5.36.1",
-						"@typescript-eslint/typescript-estree": "5.36.1",
+						"@typescript-eslint/scope-manager": "5.39.0",
+						"@typescript-eslint/types": "5.39.0",
+						"@typescript-eslint/typescript-estree": "5.39.0",
 						"debug": "^4.3.4"
 					}
 				},
 				"@typescript-eslint/scope-manager": {
-					"version": "5.36.1",
+					"version": "5.39.0",
 					"bundled": true,
 					"dev": true,
 					"requires": {
-						"@typescript-eslint/types": "5.36.1",
-						"@typescript-eslint/visitor-keys": "5.36.1"
+						"@typescript-eslint/types": "5.39.0",
+						"@typescript-eslint/visitor-keys": "5.39.0"
 					}
 				},
 				"@typescript-eslint/type-utils": {
-					"version": "5.36.1",
+					"version": "5.39.0",
 					"bundled": true,
 					"dev": true,
 					"requires": {
-						"@typescript-eslint/typescript-estree": "5.36.1",
-						"@typescript-eslint/utils": "5.36.1",
+						"@typescript-eslint/typescript-estree": "5.39.0",
+						"@typescript-eslint/utils": "5.39.0",
 						"debug": "^4.3.4",
 						"tsutils": "^3.21.0"
 					}
 				},
 				"@typescript-eslint/types": {
-					"version": "5.36.1",
+					"version": "5.39.0",
 					"bundled": true,
 					"dev": true
 				},
 				"@typescript-eslint/typescript-estree": {
-					"version": "5.36.1",
+					"version": "5.39.0",
 					"bundled": true,
 					"dev": true,
 					"requires": {
-						"@typescript-eslint/types": "5.36.1",
-						"@typescript-eslint/visitor-keys": "5.36.1",
+						"@typescript-eslint/types": "5.39.0",
+						"@typescript-eslint/visitor-keys": "5.39.0",
 						"debug": "^4.3.4",
 						"globby": "^11.1.0",
 						"is-glob": "^4.0.3",
@@ -17939,24 +17854,24 @@
 					}
 				},
 				"@typescript-eslint/utils": {
-					"version": "5.36.1",
+					"version": "5.39.0",
 					"bundled": true,
 					"dev": true,
 					"requires": {
 						"@types/json-schema": "^7.0.9",
-						"@typescript-eslint/scope-manager": "5.36.1",
-						"@typescript-eslint/types": "5.36.1",
-						"@typescript-eslint/typescript-estree": "5.36.1",
+						"@typescript-eslint/scope-manager": "5.39.0",
+						"@typescript-eslint/types": "5.39.0",
+						"@typescript-eslint/typescript-estree": "5.39.0",
 						"eslint-scope": "^5.1.1",
 						"eslint-utils": "^3.0.0"
 					}
 				},
 				"@typescript-eslint/visitor-keys": {
-					"version": "5.36.1",
+					"version": "5.39.0",
 					"bundled": true,
 					"dev": true,
 					"requires": {
-						"@typescript-eslint/types": "5.36.1",
+						"@typescript-eslint/types": "5.39.0",
 						"eslint-visitor-keys": "^3.3.0"
 					}
 				},
@@ -18074,7 +17989,7 @@
 					"dev": true
 				},
 				"fast-glob": {
-					"version": "3.2.11",
+					"version": "3.2.12",
 					"bundled": true,
 					"dev": true,
 					"requires": {
@@ -18111,11 +18026,6 @@
 						"path-exists": "^5.0.0"
 					}
 				},
-				"functional-red-black-tree": {
-					"version": "1.0.1",
-					"bundled": true,
-					"dev": true
-				},
 				"glob-parent": {
 					"version": "5.1.2",
 					"bundled": true,
@@ -18308,9 +18218,9 @@
 			"dev": true
 		},
 		"yargs": {
-			"version": "17.6.0",
-			"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.0.tgz",
-			"integrity": "sha512-8H/wTDqlSwoSnScvV2N/JHfLWOKuh5MVla9hqLjK3nsfyy6Y4kDSYSvkU5YCUEPOSnRXfIyx3Sq+B/IWudTo4g==",
+			"version": "17.6.2",
+			"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz",
+			"integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==",
 			"dev": true,
 			"requires": {
 				"cliui": "^8.0.1",
@@ -18319,7 +18229,7 @@
 				"require-directory": "^2.1.1",
 				"string-width": "^4.2.3",
 				"y18n": "^5.0.5",
-				"yargs-parser": "^21.0.0"
+				"yargs-parser": "^21.1.1"
 			},
 			"dependencies": {
 				"ansi-regex": {
diff --git a/package.json b/package.json
index fa47028dd62361ee6af6fc8c9f7fa0870e9ce264..5531d9977a4c0a1b0cc3b1f96cb239642d29ee05 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
 		"test:production:npm:nodejs:clean": "rm -rf generated/npm/nodejs/*.test*.mjs",
 		"test:browser": "run-s test:browser:**",
 		"test:browser:cp": "cp generated/tmpBrowser/*.test*.mjs generated/npm/browser/",
-		"test:browser:test": "cd generated/npm/browser/ && browser-ava **.test.mjs --chromium --firefox",
+		"test:browser:test": "cd generated/npm/browser/ && PORT=8478 browser-ava **.test.mjs --chromium --firefox",
 		"test:browser:test-e2e": "cd generated/npm/browser/ && browser-ava **.test-e2e.mjs --chromium --firefox",
 		"test:browser:clean": "rm -rf generated/npm/browser/*.test*.mjs",
 		"watch": "chokidar src/* -c \"npm run test:dev:runTests\"",
@@ -49,21 +49,21 @@
 	},
 	"devDependencies": {
 		"@jscpd/badge-reporter": "^3.4.5",
-		"ava": "^4.3.3",
+		"ava": "^5.1.0",
 		"badgen": "^3.2.2",
-		"browser-ava": "^1.0.0",
+		"browser-ava": "^1.1.0",
 		"c8": "^7.12.0",
 		"chokidar-cli": "^3.0.0",
 		"es6-plato": "https://github.com/1000i100/es6-plato#master",
 		"eslint-plugin-ava": "^13.2.0",
-		"eslint-plugin-promise": "^6.1.0",
+		"eslint-plugin-promise": "^6.1.1",
 		"eslint-plugin-unicorn": "^44.0.2",
-		"jscpd": "^3.5.0",
+		"jscpd": "^3.5.1",
 		"mkdirp": "^1.0.4",
 		"npm-run-all": "^4.1.5",
-		"rollup": "^3.2.3",
-		"terser": "^5.15.0",
-		"xo": "^0.52.3"
+		"rollup": "^3.3.0",
+		"terser": "^5.15.1",
+		"xo": "^0.52.4"
 	},
 	"disabledDependenciesTODOAddComplexityQualityCheck": {
 		"ecma-nacl": "^2.5.0",
diff --git a/src/context-dependant/generics.mjs b/src/context-dependant/generics.mjs
index 56ac2abaf15198bfb3607170ddc5689f3807ea17..f1d617ef1f1779bc30d80628f6c15358dbb899b3 100644
--- a/src/context-dependant/generics.mjs
+++ b/src/context-dependant/generics.mjs
@@ -1,3 +1,2 @@
-export const fetch = async () => 0;
-export const random = async () => 0;
-export const sha512 = async () => 0;
+import {fetch,random, ed25519} from './only-nodejs.mjs';
+export {fetch,random, ed25519};
diff --git a/src/context-dependant/only-browser.mjs b/src/context-dependant/only-browser.mjs
index 6c9ab8bd08f55866212147bbeda78eb87070c307..83a68d63fab795444540d8309786b97c3b3da9d4 100644
--- a/src/context-dependant/only-browser.mjs
+++ b/src/context-dependant/only-browser.mjs
@@ -1,3 +1,19 @@
-export async function fetch(...args) {
-	return window.fetch(...args); // eslint-disable-line no-undef
+import * as ed25519 from '../../generated/vendors/@noble-ed25519-browser.mjs';
+
+const fetch = window.fetch;
+
+async function random(u8a,bytes){
+	if(!u8a && !bytes) return Math.random();
+	if(!bytes && typeof u8a === "number"){
+		bytes = u8a;
+		u8a = new Uint8Array(bytes);
+	}
+	const QUOTA = 65536;
+	const n = bytes;
+	const v = new Uint8Array(bytes);
+	for (let i = 0; i < n; i += QUOTA) crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));
+	for (let i = 0; i < n; i++) u8a[i] = v[i];
+	return u8a;
 }
+
+export {fetch, random, ed25519}
diff --git a/src/context-dependant/only-nodejs.mjs b/src/context-dependant/only-nodejs.mjs
index 5f230885920a0eec5e2b75b136463d57a46fcb2b..0f19ea1096487c4ceffee77020327fc1acf64b5a 100644
--- a/src/context-dependant/only-nodejs.mjs
+++ b/src/context-dependant/only-nodejs.mjs
@@ -1,2 +1,19 @@
 import fetch from '../../node_modules/node-fetch/lib/index.mjs';
-export {fetch};
+import * as ed25519 from '../../generated/vendors/@noble-ed25519-node.mjs';
+
+//import fetch from '../../node_modules/node-fetch/src/index.js';
+//import fetch from 'node-fetch';
+//import crypto from "crypto";
+export {fetch,random, ed25519};
+
+function random(u8a,bytes){
+	if(!u8a && !bytes) return Math.random();
+	if(!bytes && typeof u8a === "number"){
+		bytes = u8a;
+		u8a = new Uint8Array(bytes); // Buffer pour les vieilles versions de node
+	}
+	const n = bytes;
+	const v = crypto.randomBytes(n);
+	for (let i = 0; i < n; i++) u8a[i] = v[i];
+	return u8a;
+}
diff --git a/src/crypto.mjs b/src/crypto.mjs
index 4ae9c8f504809ccd0502803338f09a195fd012d9..32067a98bdf11a6e67d75d487d40908827e2b56e 100644
--- a/src/crypto.mjs
+++ b/src/crypto.mjs
@@ -3,10 +3,12 @@
 import scrypt from '../generated/vendors/scrypt.mjs';
 import sha256 from '../node_modules/js-sha256/src/sha256.mjs';
 import nacl from '../generated/vendors/nacl.mjs';
-import * as ed25519 from '../node_modules/@noble/ed25519/lib/esm/index.js';
-import sha from '../node_modules/js-sha256/src/sha256.mjs';
-// Alt import * as ed25519 from '../node_modules/noble-ed25519/index.mjs';
+import {convertPublicKey, convertSecretKey} from '../node_modules/ed2curve/src/index.mjs';
+//import {convertPublicKey} from '../node_modules/ed2curve-esm/dist-src/index.mjs';
 import {b58, b64} from './basex.mjs';
+import {random, ed25519} from './context-dependant/generics.mjs';
+nacl.setPRNG(random);
+export const mockRandom = nacl.setPRNG;
 
 export {b58, b64, sha256};
 
@@ -124,12 +126,15 @@ export function onlyPubKey(pubKeyWithChecksum){
 export function isDuniterPubKey(b58pubKey){
 	return /^[A-HJ-NP-Za-km-z1-9]{43,44}$/.test(b58pubKey) && b58.decode(b58pubKey).length <=32;
 }
+export function checkEd25519PubKey(b58pubKey){
+	const binPubKey = pubKey2bin(b58pubKey);
+	ed25519.Point.fromHex(binPubKey);
+	return true;
+}
 export function isEd25519PubKey(b58pubKey){
 	try{
-		const binPubKey = pubKey2bin(b58pubKey);
-		ed25519.Point.fromHex(binPubKey);
+		return checkEd25519PubKey(b58pubKey);
 	} catch (e){return false;}
-	return true;
 }
 
 export function checkKey(pubKey, checkRawPubKey= true) {