From 024e648d905dcc120741530042810352508d2583 Mon Sep 17 00:00:00 2001 From: KrayzeeKev Date: Thu, 2 Mar 2023 19:42:56 +1100 Subject: [PATCH 001/186] test: assume priv ports start at 1024 if it can't be changed An update to test/parallel/test-cluster-bind-privileged-port.js checks the lowest privileged port to ensure 42 is privileged This only works on kernels > 4.1. On older kernels, this is locked at 1024 so the check is not needed. Fixes: https://github.com/nodejs/node/issues/45838 PR-URL: https://github.com/nodejs/node/pull/46536 Reviewed-By: Luigi Pinca --- test/parallel/test-cluster-bind-privileged-port.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/test/parallel/test-cluster-bind-privileged-port.js b/test/parallel/test-cluster-bind-privileged-port.js index 11a8aa6659335e..c971b7656f1221 100644 --- a/test/parallel/test-cluster-bind-privileged-port.js +++ b/test/parallel/test-cluster-bind-privileged-port.js @@ -27,9 +27,14 @@ const net = require('net'); const { readFileSync } = require('fs'); if (common.isLinux) { - const unprivilegedPortStart = parseInt(readFileSync('/proc/sys/net/ipv4/ip_unprivileged_port_start')); - if (unprivilegedPortStart <= 42) { - common.skip('Port 42 is unprivileged'); + try { + const unprivilegedPortStart = parseInt(readFileSync('/proc/sys/net/ipv4/ip_unprivileged_port_start')); + if (unprivilegedPortStart <= 42) { + common.skip('Port 42 is unprivileged'); + } + } catch { + // Do nothing, feature doesn't exist, minimum is 1024 so 42 is usable. + // Continue... } } From ac6ceff6100ca45b22e6ab9a36bf0798ed398277 Mon Sep 17 00:00:00 2001 From: Tony Gorez Date: Thu, 2 Mar 2023 13:10:59 +0100 Subject: [PATCH 002/186] tools: refactor dep_updaters PR-URL: https://github.com/nodejs/node/pull/46488 Reviewed-By: Antoine du Hamel Reviewed-By: Darshan Sen --- .github/workflows/tools.yml | 46 ++++++++++----------------- tools/dep_updaters/update-eslint.sh | 23 +++++++++++--- tools/dep_updaters/update-libuv.sh | 35 ++++++++++++++++---- tools/dep_updaters/update-postject.sh | 22 ++++++++++--- tools/dep_updaters/update-simdutf.sh | 29 ++++++++++++----- 5 files changed, 100 insertions(+), 55 deletions(-) diff --git a/.github/workflows/tools.yml b/.github/workflows/tools.yml index eb10935828722f..84193a6b32181c 100644 --- a/.github/workflows/tools.yml +++ b/.github/workflows/tools.yml @@ -21,12 +21,10 @@ jobs: subsystem: tools label: tools run: | - NEW_VERSION=$(npm view eslint dist-tags.latest) - CURRENT_VERSION=$(node -p "require('./tools/node_modules/eslint/package.json').version") - if [ "$NEW_VERSION" != "$CURRENT_VERSION" ]; then - echo "NEW_VERSION=$NEW_VERSION" >> $GITHUB_ENV - ./tools/dep_updaters/update-eslint.sh - fi + ./tools/dep_updaters/update-eslint.sh > temp-output + cat temp-output + tail -n1 temp-output | grep "NEW_VERSION=" >> "$GITHUB_ENV" || true + rm temp-output - id: corepack subsystem: deps label: dependencies @@ -81,12 +79,10 @@ jobs: subsystem: deps,test label: test run: | - NEW_VERSION=$(npm view postject dist-tags.latest) - CURRENT_VERSION=$(node -p "require('./test/fixtures/postject-copy/node_modules/postject/package.json').version") - if [ "$NEW_VERSION" != "$CURRENT_VERSION" ]; then - echo "NEW_VERSION=$NEW_VERSION" >> $GITHUB_ENV - ./tools/dep_updaters/update-postject.sh - fi + ./tools/dep_updaters/update-postject.sh > temp-output + cat temp-output + tail -n1 temp-output | grep "NEW_VERSION=" >> "$GITHUB_ENV" || true + rm temp-output - id: base64 subsystem: deps label: dependencies @@ -122,28 +118,18 @@ jobs: subsystem: deps label: dependencies run: | - NEW_VERSION=$(gh api repos/libuv/libuv/releases/latest -q '.tag_name|ltrimstr("v")') - VERSION_H="./deps/uv/include/uv/version.h" - CURRENT_MAJOR_VERSION=$(grep "#define UV_VERSION_MAJOR" $VERSION_H | sed -n "s/^.*MAJOR \(.*\)/\1/p") - CURRENT_MINOR_VERSION=$(grep "#define UV_VERSION_MINOR" $VERSION_H | sed -n "s/^.*MINOR \(.*\)/\1/p") - CURRENT_PATCH_VERSION=$(grep "#define UV_VERSION_PATCH" $VERSION_H | sed -n "s/^.*PATCH \(.*\)/\1/p") - CURRENT_SUFFIX_VERSION=$(grep "#define UV_VERSION_SUFFIX" $VERSION_H | sed -n "s/^.*SUFFIX \"\(.*\)\"/\1/p") - SUFFIX_STRING=$([[ -z "$CURRENT_SUFFIX_VERSION" ]] && echo "" || echo "-$CURRENT_SUFFIX_VERSION") - CURRENT_VERSION="$CURRENT_MAJOR_VERSION.$CURRENT_MINOR_VERSION.$CURRENT_PATCH_VERSION$SUFFIX_STRING" - if [ "$NEW_VERSION" != "$CURRENT_VERSION" ]; then - echo "NEW_VERSION=$NEW_VERSION" >> $GITHUB_ENV - ./tools/dep_updaters/update-libuv.sh "$NEW_VERSION" - fi + ./tools/dep_updaters/update-libuv.sh > temp-output + cat temp-output + tail -n1 temp-output | grep "NEW_VERSION=" >> "$GITHUB_ENV" || true + rm temp-output - id: simdutf subsystem: deps label: dependencies run: | - NEW_VERSION=$(gh api repos/simdutf/simdutf/releases/latest -q '.tag_name|ltrimstr("v")') - CURRENT_VERSION=$(grep "#define SIMDUTF_VERSION" ./deps/simdutf/simdutf.h | sed -n "s/^.*VERSION \(.*\)/\1/p") - if [ "$NEW_VERSION" != "$CURRENT_VERSION" ]; then - echo "NEW_VERSION=$NEW_VERSION" >> $GITHUB_ENV - ./tools/dep_updaters/update-simdutf.sh "$NEW_VERSION" - fi + ./tools/dep_updaters/update-simdutf.sh > temp-output + cat temp-output + tail -n1 temp-output | grep "NEW_VERSION=" >> "$GITHUB_ENV" || true + rm temp-output - id: ada subsystem: deps label: dependencies diff --git a/tools/dep_updaters/update-eslint.sh b/tools/dep_updaters/update-eslint.sh index 7d536ef50212ab..b3025bb8ff9e7e 100755 --- a/tools/dep_updaters/update-eslint.sh +++ b/tools/dep_updaters/update-eslint.sh @@ -7,6 +7,20 @@ set -ex +ROOT=$(cd "$(dirname "$0")/../.." && pwd) + +[ -z "$NODE" ] && NODE="$ROOT/out/Release/node" +[ -x "$NODE" ] || NODE=$(command -v node) +NPM="$ROOT/deps/npm/bin/npm-cli.js" + +NEW_VERSION=$("$NODE" "$NPM" view eslint dist-tags.latest) +CURRENT_VERSION=$("$NODE" -p "require('./tools/node_modules/eslint/package.json').version") + +if [ "$NEW_VERSION" = "$CURRENT_VERSION" ]; then + echo "Skipped because ESlint is on the latest version." + exit 0 +fi + cd "$( dirname "$0" )" || exit rm -rf ../node_modules/eslint ( @@ -14,11 +28,6 @@ rm -rf ../node_modules/eslint mkdir eslint-tmp cd eslint-tmp || exit - ROOT="$PWD/../../.." - [ -z "$NODE" ] && NODE="$ROOT/out/Release/node" - [ -x "$NODE" ] || NODE=$(command -v node) - NPM="$ROOT/deps/npm/bin/npm-cli.js" - "$NODE" "$NPM" init --yes "$NODE" "$NPM" install \ @@ -63,3 +72,7 @@ rm -rf ../node_modules/eslint mv eslint-tmp/node_modules/eslint ../node_modules/eslint rm -rf eslint-tmp/ + +# The last line of the script should always print the new version, +# as we need to add it to $GITHUB_ENV variable. +echo "NEW_VERSION=$NEW_VERSION" diff --git a/tools/dep_updaters/update-libuv.sh b/tools/dep_updaters/update-libuv.sh index ae7fe9a76cac4e..a7ab4de930fc41 100755 --- a/tools/dep_updaters/update-libuv.sh +++ b/tools/dep_updaters/update-libuv.sh @@ -4,12 +4,29 @@ set -e BASE_DIR=$(cd "$(dirname "$0")/../.." && pwd) DEPS_DIR="$BASE_DIR/deps" -LIBUV_VERSION=$1 +[ -z "$NODE" ] && NODE="$BASE_DIR/out/Release/node" +[ -x "$NODE" ] || NODE=$(command -v node) -if [ "$#" -le 0 ]; then - echo "Error: please provide an libuv version to update to" - echo " e.g. $0 1.44.2" - exit 1 +NEW_VERSION="$("$NODE" --input-type=module <<'EOF' +const res = await fetch('https://api.github.com/repos/libuv/libuv/releases/latest'); +if (!res.ok) throw new Error(`FetchError: ${res.status} ${res.statusText}`, { cause: res }); +const { tag_name } = await res.json(); +console.log(tag_name.replace('v', '')); +EOF +)" + +VERSION_H="$DEPS_DIR/uv/include/uv/version.h" +CURRENT_MAJOR_VERSION=$(grep "#define UV_VERSION_MAJOR" "$VERSION_H" | sed -n "s/^.*MAJOR \(.*\)/\1/p") +CURRENT_MINOR_VERSION=$(grep "#define UV_VERSION_MINOR" "$VERSION_H" | sed -n "s/^.*MINOR \(.*\)/\1/p") +CURRENT_PATCH_VERSION=$(grep "#define UV_VERSION_PATCH" "$VERSION_H" | sed -n "s/^.*PATCH \(.*\)/\1/p") +CURRENT_IS_RELEASE=$(grep "#define UV_VERSION_IS_RELEASE" "$VERSION_H" | sed -n "s/^.*RELEASE \(.*\)/\1/p") +CURRENT_SUFFIX_VERSION=$(grep "#define UV_VERSION_SUFFIX" "$VERSION_H" | sed -n "s/^.*SUFFIX \"\(.*\)\"/\1/p") +SUFFIX_STRING=$([ "$CURRENT_IS_RELEASE" = 1 ] || [ -z "$CURRENT_SUFFIX_VERSION" ] && echo "" || echo "-$CURRENT_SUFFIX_VERSION") +CURRENT_VERSION="$CURRENT_MAJOR_VERSION.$CURRENT_MINOR_VERSION.$CURRENT_PATCH_VERSION$SUFFIX_STRING" + +if [ "$NEW_VERSION" = "$CURRENT_VERSION" ]; then + echo "Skipped because libuv is on the latest version." + exit 0 fi echo "Making temporary workspace..." @@ -27,7 +44,7 @@ trap cleanup INT TERM EXIT cd "$WORKSPACE" echo "Fetching libuv source archive..." -curl -sL "https://api.github.com/repos/libuv/libuv/tarball/v$LIBUV_VERSION" | tar xzf - +curl -sL "https://api.github.com/repos/libuv/libuv/tarball/v$NEW_VERSION" | tar xzf - mv libuv-libuv-* uv echo "Replacing existing libuv (except GYP build files)" @@ -40,5 +57,9 @@ echo "" echo "Please git add uv, commit the new version:" echo "" echo "$ git add -A deps/uv" -echo "$ git commit -m \"deps: update libuv to $LIBUV_VERSION\"" +echo "$ git commit -m \"deps: update libuv to $NEW_VERSION\"" echo "" + +# The last line of the script should always print the new version, +# as we need to add it to $GITHUB_ENV variable. +echo "NEW_VERSION=$NEW_VERSION" diff --git a/tools/dep_updaters/update-postject.sh b/tools/dep_updaters/update-postject.sh index 66b207f9666636..f7a63ce1816cf9 100755 --- a/tools/dep_updaters/update-postject.sh +++ b/tools/dep_updaters/update-postject.sh @@ -7,16 +7,24 @@ set -ex +ROOT=$(cd "$(dirname "$0")/../.." && pwd) +[ -z "$NODE" ] && NODE="$ROOT/out/Release/node" +[ -x "$NODE" ] || NODE=$(command -v node) +NPM="$ROOT/deps/npm/bin/npm-cli.js" + +NEW_VERSION=$("$NODE" "$NPM" view postject dist-tags.latest) +CURRENT_VERSION=$("$NODE" -p "require('./test/fixtures/postject-copy/node_modules/postject/package.json').version") + +if [ "$NEW_VERSION" = "$CURRENT_VERSION" ]; then + echo "Skipped because Postject is on the latest version." + exit 0 +fi + cd "$( dirname "$0" )/../.." || exit rm -rf test/fixtures/postject-copy mkdir test/fixtures/postject-copy cd test/fixtures/postject-copy || exit -ROOT="$PWD/../../.." -[ -z "$NODE" ] && NODE="$ROOT/out/Release/node" -[ -x "$NODE" ] || NODE=$(command -v node) -NPM="$ROOT/deps/npm/bin/npm-cli.js" - "$NODE" "$NPM" init --yes "$NODE" "$NPM" install --no-bin-links --ignore-scripts postject @@ -27,3 +35,7 @@ rm -rf deps/postject mkdir deps/postject cp test/fixtures/postject-copy/node_modules/postject/LICENSE deps/postject cp test/fixtures/postject-copy/node_modules/postject/dist/postject-api.h deps/postject + +# The last line of the script should always print the new version, +# as we need to add it to $GITHUB_ENV variable. +echo "NEW_VERSION=$NEW_VERSION" diff --git a/tools/dep_updaters/update-simdutf.sh b/tools/dep_updaters/update-simdutf.sh index d502558b474479..d9e97cb21e4e60 100755 --- a/tools/dep_updaters/update-simdutf.sh +++ b/tools/dep_updaters/update-simdutf.sh @@ -4,12 +4,21 @@ set -e BASE_DIR=$(cd "$(dirname "$0")/../.." && pwd) DEPS_DIR="$BASE_DIR/deps" -SIMDUTF_VERSION=$1 +[ -z "$NODE" ] && NODE="$BASE_DIR/out/Release/node" +[ -x "$NODE" ] || NODE=$(command -v node) -if [ "$#" -le 0 ]; then - echo "Error: please provide an simdutf version to update to" - echo " e.g. $0 2.0.3" - exit 1 +NEW_VERSION="$("$NODE" --input-type=module <<'EOF' +const res = await fetch('https://api.github.com/repos/simdutf/simdutf/releases/latest'); +if (!res.ok) throw new Error(`FetchError: ${res.status} ${res.statusText}`, { cause: res }); +const { tag_name } = await res.json(); +console.log(tag_name.replace('v', '')); +EOF +)" +CURRENT_VERSION=$(grep "#define SIMDUTF_VERSION" "$DEPS_DIR/simdutf/simdutf.h" | sed -n "s/^.*VERSION \"\(.*\)\"/\1/p") + +if [ "$NEW_VERSION" = "$CURRENT_VERSION" ]; then + echo "Skipped because simdutf is on the latest version." + exit 0 fi echo "Making temporary workspace..." @@ -24,8 +33,8 @@ cleanup () { trap cleanup INT TERM EXIT -SIMDUTF_REF="v$SIMDUTF_VERSION" -SIMDUTF_ZIP="simdutf-$SIMDUTF_VERSION.zip" +SIMDUTF_REF="v$NEW_VERSION" +SIMDUTF_ZIP="simdutf-$NEW_VERSION.zip" SIMDUTF_LICENSE="LICENSE-MIT" cd "$WORKSPACE" @@ -48,5 +57,9 @@ echo "" echo "Please git add simdutf, commit the new version:" echo "" echo "$ git add -A deps/simdutf" -echo "$ git commit -m \"deps: update simdutf to $SIMDUTF_VERSION\"" +echo "$ git commit -m \"deps: update simdutf to $NEW_VERSION\"" echo "" + +# The last line of the script should always print the new version, +# as we need to add it to $GITHUB_ENV variable. +echo "NEW_VERSION=$NEW_VERSION" From 0abe5ecacbec39f078750d87a2ff8ad5e9b8ce0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Radek=20Barto=C5=88?= Date: Thu, 2 Mar 2023 14:23:11 +0100 Subject: [PATCH 003/186] build: fix Visual Studio installation detection for Arm64 PR-URL: https://github.com/nodejs/node/pull/46420 Reviewed-By: James M Snell Reviewed-By: Richard Lau --- tools/msvs/vswhere_usability_wrapper.cmd | 8 ++++++-- vcbuild.bat | 10 +++++----- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/tools/msvs/vswhere_usability_wrapper.cmd b/tools/msvs/vswhere_usability_wrapper.cmd index 45ca5b2164a3b3..b5dcf7f42a06c6 100644 --- a/tools/msvs/vswhere_usability_wrapper.cmd +++ b/tools/msvs/vswhere_usability_wrapper.cmd @@ -5,7 +5,7 @@ @if not defined DEBUG_HELPER @ECHO OFF setlocal -if "%~2"=="prerelease" set VSWHERE_WITH_PRERELEASE=1 +if "%~3"=="prerelease" set VSWHERE_WITH_PRERELEASE=1 set "InstallerPath=%ProgramFiles(x86)%\Microsoft Visual Studio\Installer" if not exist "%InstallerPath%" set "InstallerPath=%ProgramFiles%\Microsoft Visual Studio\Installer" if not exist "%InstallerPath%" goto :no-vswhere @@ -13,7 +13,11 @@ if not exist "%InstallerPath%" goto :no-vswhere set "Path=%Path%;%InstallerPath%" where vswhere 2> nul > nul if errorlevel 1 goto :no-vswhere -set VSWHERE_REQ=-requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 +if "%2"=="arm64" ( + set VSWHERE_REQ=-requires Microsoft.VisualStudio.Component.VC.Tools.ARM64 +) else ( + set VSWHERE_REQ=-requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 +) set VSWHERE_PRP=-property installationPath set VSWHERE_LMT=-version %1 vswhere -prerelease > nul diff --git a/vcbuild.bat b/vcbuild.bat index dc9ff39ed6644c..858b54cc23c57c 100644 --- a/vcbuild.bat +++ b/vcbuild.bat @@ -242,12 +242,12 @@ if defined noprojgen if defined nobuild goto :after-build set msvs_host_arch=x86 if _%PROCESSOR_ARCHITECTURE%_==_AMD64_ set msvs_host_arch=amd64 if _%PROCESSOR_ARCHITEW6432%_==_AMD64_ set msvs_host_arch=amd64 +if _%PROCESSOR_ARCHITECTURE%_==_ARM64_ set msvs_host_arch=arm64 @rem usually vcvarsall takes an argument: host + '_' + target set vcvarsall_arg=%msvs_host_arch%_%target_arch% -@rem unless both host and target are x64 +@rem unless both the host and the target are the same if %target_arch%==x64 if %msvs_host_arch%==amd64 set vcvarsall_arg=amd64 -@rem also if both are x86 -if %target_arch%==x86 if %msvs_host_arch%==x86 set vcvarsall_arg=x86 +if %target_arch%==%msvs_host_arch% set vcvarsall_arg=%target_arch% @rem Look for Visual Studio 2022 :vs-set-2022 @@ -257,7 +257,7 @@ echo Looking for Visual Studio 2022 @rem cleared first as vswhere_usability_wrapper.cmd doesn't when it fails to @rem detect the version searched for if not defined target_env set "VCINSTALLDIR=" -call tools\msvs\vswhere_usability_wrapper.cmd "[17.0,18.0)" "prerelease" +call tools\msvs\vswhere_usability_wrapper.cmd "[17.0,18.0)" %target_arch% "prerelease" if "_%VCINSTALLDIR%_" == "__" goto vs-set-2019 set "WIXSDKDIR=%WIX%\SDK\VS2017" if defined msi ( @@ -297,7 +297,7 @@ echo Looking for Visual Studio 2019 @rem cleared first as vswhere_usability_wrapper.cmd doesn't when it fails to @rem detect the version searched for if not defined target_env set "VCINSTALLDIR=" -call tools\msvs\vswhere_usability_wrapper.cmd "[16.0,17.0)" "prerelease" +call tools\msvs\vswhere_usability_wrapper.cmd "[16.0,17.0)" %target_arch% "prerelease" if "_%VCINSTALLDIR%_" == "__" goto msbuild-not-found set "WIXSDKDIR=%WIX%\SDK\VS2017" if defined msi ( From 7bd909b603475aeba1d97da3e08cdcde3339fc19 Mon Sep 17 00:00:00 2001 From: Yagiz Nizipli Date: Thu, 2 Mar 2023 08:23:23 -0500 Subject: [PATCH 004/186] url: set `formatUrl` method as no side effect MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/46884 Reviewed-By: Anna Henningsen Reviewed-By: Ruben Bridgewater Reviewed-By: Colin Ihrig Reviewed-By: Tiancheng "Timothy" Gu Reviewed-By: Tobias Nießen --- src/node_url.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/node_url.cc b/src/node_url.cc index 1e8f6772fb8e6e..014a758b7df258 100644 --- a/src/node_url.cc +++ b/src/node_url.cc @@ -313,7 +313,7 @@ void Initialize(Local target, void* priv) { SetMethod(context, target, "parse", Parse); SetMethod(context, target, "updateUrl", UpdateUrl); - SetMethod(context, target, "formatUrl", FormatUrl); + SetMethodNoSideEffect(context, target, "formatUrl", FormatUrl); SetMethodNoSideEffect(context, target, "domainToASCII", DomainToASCII); SetMethodNoSideEffect(context, target, "domainToUnicode", DomainToUnicode); From 3803b028dda9d7f3bf06836b5ad4522ff1ae0cb3 Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Thu, 2 Mar 2023 15:31:08 +0100 Subject: [PATCH 005/186] src: share common code paths for SEA and embedder script Since SEA is very similar in principle to embedding functionality, it makes sense to share code paths where possible. This commit does so and addresses a `TODO` while doing so. It also adds a utility to directly run CJS code to the embedder startup callback, which comes in handy for this purpose. Finally, this commit is breaking because it aligns the behavior of `require()`ing internal modules; previously, embedders could use the `require` function that they received to do so. (If this is not considered breaking because accessing internals is not covered by the API, then this would need ABI compatibility patches for becoming fully non-breaking.) PR-URL: https://github.com/nodejs/node/pull/46825 Reviewed-By: Darshan Sen Reviewed-By: Joyee Cheung Reviewed-By: James M Snell Reviewed-By: Minwoo Jung --- lib/internal/main/embedding.js | 18 ++++++ lib/internal/main/environment.js | 13 ----- lib/internal/main/mksnapshot.js | 11 +++- .../main/single_executable_application.js | 55 ------------------- lib/internal/util/embedding.js | 47 ++++++++++++++++ src/api/environment.cc | 16 +++--- src/env-inl.h | 10 ++-- src/env.h | 6 +- src/node.cc | 35 +++--------- src/node.h | 4 +- src/node_builtins.cc | 29 +++------- src/node_main_instance.cc | 12 +++- src/node_sea.cc | 52 ++++-------------- src/node_sea.h | 2 + src/node_snapshotable.cc | 14 +++-- test/embedding/test-embedding.js | 5 ++ 16 files changed, 145 insertions(+), 184 deletions(-) create mode 100644 lib/internal/main/embedding.js delete mode 100644 lib/internal/main/environment.js delete mode 100644 lib/internal/main/single_executable_application.js create mode 100644 lib/internal/util/embedding.js diff --git a/lib/internal/main/embedding.js b/lib/internal/main/embedding.js new file mode 100644 index 00000000000000..aa3f06cca10f99 --- /dev/null +++ b/lib/internal/main/embedding.js @@ -0,0 +1,18 @@ +'use strict'; +const { + prepareMainThreadExecution, + markBootstrapComplete, +} = require('internal/process/pre_execution'); +const { isSea } = internalBinding('sea'); +const { emitExperimentalWarning } = require('internal/util'); +const { embedderRequire, embedderRunCjs } = require('internal/util/embedding'); +const { getEmbedderEntryFunction } = internalBinding('mksnapshot'); + +prepareMainThreadExecution(false, true); +markBootstrapComplete(); + +if (isSea()) { + emitExperimentalWarning('Single executable application'); +} + +return getEmbedderEntryFunction()(embedderRequire, embedderRunCjs); diff --git a/lib/internal/main/environment.js b/lib/internal/main/environment.js deleted file mode 100644 index 0be982bfb6d25d..00000000000000 --- a/lib/internal/main/environment.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -// This runs necessary preparations to prepare a complete Node.js context -// that depends on run time states. -// It is currently only intended for preparing contexts for embedders. - -const { - prepareMainThreadExecution, - markBootstrapComplete -} = require('internal/process/pre_execution'); - -prepareMainThreadExecution(); -markBootstrapComplete(); diff --git a/lib/internal/main/mksnapshot.js b/lib/internal/main/mksnapshot.js index 928b3fd13f91d4..08d483dcff4e76 100644 --- a/lib/internal/main/mksnapshot.js +++ b/lib/internal/main/mksnapshot.js @@ -119,16 +119,25 @@ function main() { const { prepareMainThreadExecution } = require('internal/process/pre_execution'); + const path = require('path'); let serializeMainFunction = getEmbedderEntryFunction(); const serializeMainArgs = [requireForUserSnapshot]; if (serializeMainFunction) { // embedded case prepareMainThreadExecution(false, false); + // TODO(addaleax): Make this `embedderRunCjs` once require('module') + // is supported in snapshots. + const filename = process.execPath; + const dirname = path.dirname(filename); + function minimalRunCjs(source) { + const fn = compileSerializeMain(filename, source); + return fn(requireForUserSnapshot, filename, dirname); + } + serializeMainArgs.push(minimalRunCjs); } else { prepareMainThreadExecution(true, false); const file = process.argv[1]; - const path = require('path'); const filename = path.resolve(file); const dirname = path.dirname(filename); const source = readFileSync(file, 'utf-8'); diff --git a/lib/internal/main/single_executable_application.js b/lib/internal/main/single_executable_application.js deleted file mode 100644 index d9604cff720d2f..00000000000000 --- a/lib/internal/main/single_executable_application.js +++ /dev/null @@ -1,55 +0,0 @@ -'use strict'; -const { - prepareMainThreadExecution, - markBootstrapComplete, -} = require('internal/process/pre_execution'); -const { getSingleExecutableCode } = internalBinding('sea'); -const { emitExperimentalWarning } = require('internal/util'); -const { Module, wrapSafe } = require('internal/modules/cjs/loader'); -const { codes: { ERR_UNKNOWN_BUILTIN_MODULE } } = require('internal/errors'); - -prepareMainThreadExecution(false, true); -markBootstrapComplete(); - -emitExperimentalWarning('Single executable application'); - -// This is roughly the same as: -// -// const mod = new Module(filename); -// mod._compile(contents, filename); -// -// but the code has been duplicated because currently there is no way to set the -// value of require.main to module. -// -// TODO(RaisinTen): Find a way to deduplicate this. - -const filename = process.execPath; -const contents = getSingleExecutableCode(); -const compiledWrapper = wrapSafe(filename, contents); - -const customModule = new Module(filename, null); -customModule.filename = filename; -customModule.paths = Module._nodeModulePaths(customModule.path); - -const customExports = customModule.exports; - -function customRequire(path) { - if (!Module.isBuiltin(path)) { - throw new ERR_UNKNOWN_BUILTIN_MODULE(path); - } - - return require(path); -} - -customRequire.main = customModule; - -const customFilename = customModule.filename; - -const customDirname = customModule.path; - -compiledWrapper( - customExports, - customRequire, - customModule, - customFilename, - customDirname); diff --git a/lib/internal/util/embedding.js b/lib/internal/util/embedding.js new file mode 100644 index 00000000000000..139d4c7a25fb7c --- /dev/null +++ b/lib/internal/util/embedding.js @@ -0,0 +1,47 @@ +'use strict'; +const { codes: { ERR_UNKNOWN_BUILTIN_MODULE } } = require('internal/errors'); +const { Module, wrapSafe } = require('internal/modules/cjs/loader'); + +// This is roughly the same as: +// +// const mod = new Module(filename); +// mod._compile(contents, filename); +// +// but the code has been duplicated because currently there is no way to set the +// value of require.main to module. +// +// TODO(RaisinTen): Find a way to deduplicate this. + +function embedderRunCjs(contents) { + const filename = process.execPath; + const compiledWrapper = wrapSafe(filename, contents); + + const customModule = new Module(filename, null); + customModule.filename = filename; + customModule.paths = Module._nodeModulePaths(customModule.path); + + const customExports = customModule.exports; + + embedderRequire.main = customModule; + + const customFilename = customModule.filename; + + const customDirname = customModule.path; + + return compiledWrapper( + customExports, + embedderRequire, + customModule, + customFilename, + customDirname); +} + +function embedderRequire(path) { + if (!Module.isBuiltin(path)) { + throw new ERR_UNKNOWN_BUILTIN_MODULE(path); + } + + return require(path); +} + +module.exports = { embedderRequire, embedderRunCjs }; diff --git a/src/api/environment.cc b/src/api/environment.cc index 8aa1385f548c4d..2f4d7a5c7fe3f1 100644 --- a/src/api/environment.cc +++ b/src/api/environment.cc @@ -528,17 +528,15 @@ MaybeLocal LoadEnvironment( return StartExecution(env, cb); } -MaybeLocal LoadEnvironment( - Environment* env, - const char* main_script_source_utf8) { - CHECK_NOT_NULL(main_script_source_utf8); +MaybeLocal LoadEnvironment(Environment* env, + std::string_view main_script_source_utf8) { + CHECK_NOT_NULL(main_script_source_utf8.data()); return LoadEnvironment( env, [&](const StartExecutionCallbackInfo& info) -> MaybeLocal { - std::string name = "embedder_main_" + std::to_string(env->thread_id()); - env->builtin_loader()->Add(name.c_str(), main_script_source_utf8); - Realm* realm = env->principal_realm(); - - return realm->ExecuteBootstrapper(name.c_str()); + Local main_script = + ToV8Value(env->context(), main_script_source_utf8).ToLocalChecked(); + return info.run_cjs->Call( + env->context(), Null(env->isolate()), 1, &main_script); }); } diff --git a/src/env-inl.h b/src/env-inl.h index 1d7a502b35aafd..68dfb3a4d57113 100644 --- a/src/env-inl.h +++ b/src/env-inl.h @@ -406,14 +406,12 @@ inline builtins::BuiltinLoader* Environment::builtin_loader() { return &builtin_loader_; } -inline const StartExecutionCallback& -Environment::embedder_mksnapshot_entry_point() const { - return embedder_mksnapshot_entry_point_; +inline const StartExecutionCallback& Environment::embedder_entry_point() const { + return embedder_entry_point_; } -inline void Environment::set_embedder_mksnapshot_entry_point( - StartExecutionCallback&& fn) { - embedder_mksnapshot_entry_point_ = std::move(fn); +inline void Environment::set_embedder_entry_point(StartExecutionCallback&& fn) { + embedder_entry_point_ = std::move(fn); } inline double Environment::new_async_id() { diff --git a/src/env.h b/src/env.h index 95ffa357ab05b4..c0e28d6c2ee751 100644 --- a/src/env.h +++ b/src/env.h @@ -948,8 +948,8 @@ class Environment : public MemoryRetainer { #endif // HAVE_INSPECTOR - inline const StartExecutionCallback& embedder_mksnapshot_entry_point() const; - inline void set_embedder_mksnapshot_entry_point(StartExecutionCallback&& fn); + inline const StartExecutionCallback& embedder_entry_point() const; + inline void set_embedder_entry_point(StartExecutionCallback&& fn); inline void set_process_exit_handler( std::function&& handler); @@ -1133,7 +1133,7 @@ class Environment : public MemoryRetainer { std::unique_ptr principal_realm_ = nullptr; builtins::BuiltinLoader builtin_loader_; - StartExecutionCallback embedder_mksnapshot_entry_point_; + StartExecutionCallback embedder_entry_point_; // Used by allocate_managed_buffer() and release_managed_buffer() to keep // track of the BackingStore for a given pointer. diff --git a/src/node.cc b/src/node.cc index 3f1b28a8a1815f..2aba7333d92513 100644 --- a/src/node.cc +++ b/src/node.cc @@ -277,22 +277,17 @@ MaybeLocal StartExecution(Environment* env, StartExecutionCallback cb) { if (cb != nullptr) { EscapableHandleScope scope(env->isolate()); + // TODO(addaleax): pass the callback to the main script more directly, + // e.g. by making StartExecution(env, builtin) parametrizable + env->set_embedder_entry_point(std::move(cb)); + auto reset_entry_point = + OnScopeLeave([&]() { env->set_embedder_entry_point({}); }); - if (env->isolate_data()->options()->build_snapshot) { - // TODO(addaleax): pass the callback to the main script more directly, - // e.g. by making StartExecution(env, builtin) parametrizable - env->set_embedder_mksnapshot_entry_point(std::move(cb)); - auto reset_entry_point = - OnScopeLeave([&]() { env->set_embedder_mksnapshot_entry_point({}); }); + const char* entry = env->isolate_data()->options()->build_snapshot + ? "internal/main/mksnapshot" + : "internal/main/embedding"; - return StartExecution(env, "internal/main/mksnapshot"); - } - - if (StartExecution(env, "internal/main/environment").IsEmpty()) return {}; - return scope.EscapeMaybe(cb({ - env->process_object(), - env->builtin_module_require(), - })); + return scope.EscapeMaybe(StartExecution(env, entry)); } // TODO(joyeecheung): move these conditions into JS land and let the @@ -312,18 +307,6 @@ MaybeLocal StartExecution(Environment* env, StartExecutionCallback cb) { first_argv = env->argv()[1]; } -#ifndef DISABLE_SINGLE_EXECUTABLE_APPLICATION - if (sea::IsSingleExecutable()) { - // TODO(addaleax): Find a way to reuse: - // - // LoadEnvironment(Environment*, const char*) - // - // instead and not add yet another main entry point here because this - // already duplicates existing code. - return StartExecution(env, "internal/main/single_executable_application"); - } -#endif - if (first_argv == "inspect") { return StartExecution(env, "internal/main/inspect"); } diff --git a/src/node.h b/src/node.h index 635e5349f4ee88..c3a81076d54ed6 100644 --- a/src/node.h +++ b/src/node.h @@ -682,6 +682,7 @@ NODE_EXTERN std::unique_ptr GetInspectorParentHandle( struct StartExecutionCallbackInfo { v8::Local process_object; v8::Local native_require; + v8::Local run_cjs; }; using StartExecutionCallback = @@ -691,8 +692,7 @@ NODE_EXTERN v8::MaybeLocal LoadEnvironment( Environment* env, StartExecutionCallback cb); NODE_EXTERN v8::MaybeLocal LoadEnvironment( - Environment* env, - const char* main_script_source_utf8); + Environment* env, std::string_view main_script_source_utf8); NODE_EXTERN void FreeEnvironment(Environment* env); // Set a callback that is called when process.exit() is called from JS, diff --git a/src/node_builtins.cc b/src/node_builtins.cc index e9bf8a5a0e0b7e..0439fff5115bd9 100644 --- a/src/node_builtins.cc +++ b/src/node_builtins.cc @@ -185,17 +185,14 @@ static std::string OnDiskFileName(const char* id) { MaybeLocal BuiltinLoader::LoadBuiltinSource(Isolate* isolate, const char* id) const { auto source = source_.read(); -#ifdef NODE_BUILTIN_MODULES_PATH - if (strncmp(id, "embedder_main_", strlen("embedder_main_")) == 0) { -#endif // NODE_BUILTIN_MODULES_PATH - const auto source_it = source->find(id); - if (UNLIKELY(source_it == source->end())) { - fprintf(stderr, "Cannot find native builtin: \"%s\".\n", id); - ABORT(); - } - return source_it->second.ToStringChecked(isolate); -#ifdef NODE_BUILTIN_MODULES_PATH +#ifndef NODE_BUILTIN_MODULES_PATH + const auto source_it = source->find(id); + if (UNLIKELY(source_it == source->end())) { + fprintf(stderr, "Cannot find native builtin: \"%s\".\n", id); + ABORT(); } + return source_it->second.ToStringChecked(isolate); +#else // !NODE_BUILTIN_MODULES_PATH std::string filename = OnDiskFileName(id); std::string contents; @@ -395,12 +392,6 @@ MaybeLocal BuiltinLoader::LookupAndCompile(Local context, FIXED_ONE_BYTE_STRING(isolate, "internalBinding"), FIXED_ONE_BYTE_STRING(isolate, "primordials"), }; - } else if (strncmp(id, "embedder_main_", strlen("embedder_main_")) == 0) { - // Synthetic embedder main scripts from LoadEnvironment(): process, require - parameters = { - FIXED_ONE_BYTE_STRING(isolate, "process"), - FIXED_ONE_BYTE_STRING(isolate, "require"), - }; } else { // others: exports, require, module, process, internalBinding, primordials parameters = { @@ -457,12 +448,6 @@ MaybeLocal BuiltinLoader::CompileAndCall(Local context, realm->builtin_module_require(), realm->internal_binding_loader(), realm->primordials()}; - } else if (strncmp(id, "embedder_main_", strlen("embedder_main_")) == 0) { - // Synthetic embedder main scripts from LoadEnvironment(): process, require - arguments = { - realm->process_object(), - realm->builtin_module_require(), - }; } else { // This should be invoked with the other CompileAndCall() methods, as // we are unable to generate the arguments. diff --git a/src/node_main_instance.cc b/src/node_main_instance.cc index 5a4d127ffe3e43..f0dc6ca275b007 100644 --- a/src/node_main_instance.cc +++ b/src/node_main_instance.cc @@ -9,6 +9,7 @@ #include "node_internals.h" #include "node_options-inl.h" #include "node_realm.h" +#include "node_sea.h" #include "node_snapshot_builder.h" #include "node_snapshotable.h" #include "node_v8_platform-inl.h" @@ -86,7 +87,16 @@ ExitCode NodeMainInstance::Run() { void NodeMainInstance::Run(ExitCode* exit_code, Environment* env) { if (*exit_code == ExitCode::kNoFailure) { - LoadEnvironment(env, StartExecutionCallback{}); + bool is_sea = false; +#ifndef DISABLE_SINGLE_EXECUTABLE_APPLICATION + if (sea::IsSingleExecutable()) { + is_sea = true; + LoadEnvironment(env, sea::FindSingleExecutableCode()); + } +#endif + if (!is_sea) { + LoadEnvironment(env, StartExecutionCallback{}); + } *exit_code = SpinEventLoopInternal(env).FromMaybe(ExitCode::kGenericUserError); diff --git a/src/node_sea.cc b/src/node_sea.cc index 18b661ce4ff31d..b65620d1ff9684 100644 --- a/src/node_sea.cc +++ b/src/node_sea.cc @@ -4,8 +4,6 @@ #include "node_external_reference.h" #include "node_internals.h" #include "node_union_bytes.h" -#include "simdutf.h" -#include "v8.h" // The POSTJECT_SENTINEL_FUSE macro is a string of random characters selected by // the Node.js project that is present only once in the entire binary. It is @@ -19,7 +17,6 @@ #include #include #include -#include #if !defined(DISABLE_SINGLE_EXECUTABLE_APPLICATION) @@ -29,9 +26,11 @@ using v8::Local; using v8::Object; using v8::Value; -namespace { +namespace node { +namespace sea { -const std::string_view FindSingleExecutableCode() { +std::string_view FindSingleExecutableCode() { + CHECK(IsSingleExecutable()); static const std::string_view sea_code = []() -> std::string_view { size_t size; #ifdef __APPLE__ @@ -49,44 +48,14 @@ const std::string_view FindSingleExecutableCode() { return sea_code; } -void GetSingleExecutableCode(const FunctionCallbackInfo& args) { - node::Environment* env = node::Environment::GetCurrent(args); - - static const std::string_view sea_code = FindSingleExecutableCode(); - - if (sea_code.empty()) { - return; - } - - // TODO(joyeecheung): Use one-byte strings for ASCII-only source to save - // memory/binary size - using UTF16 by default results in twice of the size - // than necessary. - static const node::UnionBytes sea_code_union_bytes = - []() -> node::UnionBytes { - size_t expected_u16_length = - simdutf::utf16_length_from_utf8(sea_code.data(), sea_code.size()); - auto out = std::make_shared>(expected_u16_length); - size_t u16_length = simdutf::convert_utf8_to_utf16( - sea_code.data(), - sea_code.size(), - reinterpret_cast(out->data())); - out->resize(u16_length); - return node::UnionBytes{out}; - }(); - - args.GetReturnValue().Set( - sea_code_union_bytes.ToStringChecked(env->isolate())); -} - -} // namespace - -namespace node { -namespace sea { - bool IsSingleExecutable() { return postject_has_resource(); } +void IsSingleExecutable(const FunctionCallbackInfo& args) { + args.GetReturnValue().Set(IsSingleExecutable()); +} + std::tuple FixupArgsForSEA(int argc, char** argv) { // Repeats argv[0] at position 1 on argv as a replacement for the missing // entry point file path. @@ -113,12 +82,11 @@ void Initialize(Local target, Local unused, Local context, void* priv) { - SetMethod( - context, target, "getSingleExecutableCode", GetSingleExecutableCode); + SetMethod(context, target, "isSea", IsSingleExecutable); } void RegisterExternalReferences(ExternalReferenceRegistry* registry) { - registry->Register(GetSingleExecutableCode); + registry->Register(IsSingleExecutable); } } // namespace sea diff --git a/src/node_sea.h b/src/node_sea.h index 97bf0115e0f0d4..aa0f20204743c0 100644 --- a/src/node_sea.h +++ b/src/node_sea.h @@ -5,12 +5,14 @@ #if !defined(DISABLE_SINGLE_EXECUTABLE_APPLICATION) +#include #include namespace node { namespace sea { bool IsSingleExecutable(); +std::string_view FindSingleExecutableCode(); std::tuple FixupArgsForSEA(int argc, char** argv); } // namespace sea diff --git a/src/node_snapshotable.cc b/src/node_snapshotable.cc index e6323a128f5ba4..ee327867378952 100644 --- a/src/node_snapshotable.cc +++ b/src/node_snapshotable.cc @@ -1444,19 +1444,25 @@ void SerializeSnapshotableObjects(Realm* realm, namespace mksnapshot { +// NB: This is also used by the regular embedding codepath. void GetEmbedderEntryFunction(const FunctionCallbackInfo& args) { Environment* env = Environment::GetCurrent(args); Isolate* isolate = env->isolate(); - if (!env->embedder_mksnapshot_entry_point()) return; + if (!env->embedder_entry_point()) return; MaybeLocal jsfn = Function::New(isolate->GetCurrentContext(), [](const FunctionCallbackInfo& args) { Environment* env = Environment::GetCurrent(args); Local require_fn = args[0]; + Local runcjs_fn = args[1]; CHECK(require_fn->IsFunction()); - CHECK(env->embedder_mksnapshot_entry_point()); - env->embedder_mksnapshot_entry_point()( - {env->process_object(), require_fn.As()}); + CHECK(runcjs_fn->IsFunction()); + MaybeLocal retval = env->embedder_entry_point()( + {env->process_object(), + require_fn.As(), + runcjs_fn.As()}); + if (!retval.IsEmpty()) + args.GetReturnValue().Set(retval.ToLocalChecked()); }); if (!jsfn.IsEmpty()) args.GetReturnValue().Set(jsfn.ToLocalChecked()); } diff --git a/test/embedding/test-embedding.js b/test/embedding/test-embedding.js index 498c05fdebf377..9dfaad6c2ab27f 100644 --- a/test/embedding/test-embedding.js +++ b/test/embedding/test-embedding.js @@ -40,6 +40,11 @@ assert.strictEqual( child_process.spawnSync(binary, ['throw new Error()']).status, 1); +// Cannot require internals anymore: +assert.strictEqual( + child_process.spawnSync(binary, ['require("lib/internal/test/binding")']).status, + 1); + assert.strictEqual( child_process.spawnSync(binary, ['process.exitCode = 8']).status, 8); From 53116b3b4d77a50a499495344943c1a383ff405f Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Fri, 3 Mar 2023 01:10:19 +0900 Subject: [PATCH 006/186] src: fix missing trailing , PR-URL: https://github.com/nodejs/node/pull/46909 Reviewed-By: Jiawen Geng Reviewed-By: Darshan Sen Reviewed-By: Marco Ippolito Reviewed-By: Luigi Pinca --- node.gyp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/node.gyp b/node.gyp index 9d486a019222f2..f6aff6e550d977 100644 --- a/node.gyp +++ b/node.gyp @@ -693,7 +693,7 @@ 'src/util-inl.h', # Dependency headers 'deps/v8/include/v8.h', - 'deps/postject/postject-api.h' + 'deps/postject/postject-api.h', # javascript files to make for an even more pleasant IDE experience '<@(library_files)', '<@(deps_files)', From a8c3d03df0e839178f1046f9123d29c31779f2dd Mon Sep 17 00:00:00 2001 From: legendecas Date: Fri, 10 Feb 2023 01:00:32 +0800 Subject: [PATCH 007/186] src: fix negative nodeTiming milestone values PR-URL: https://github.com/nodejs/node/pull/46588 Fixes: https://github.com/nodejs/node/issues/45958 Refs: https://github.com/nodejs/node/pull/43781 Reviewed-By: James M Snell Reviewed-By: Minwoo Jung --- src/env.cc | 7 +-- src/env.h | 17 +++++-- src/node_perf.cc | 5 +- src/node_perf_common.h | 2 + .../test-perf-hooks-worker-timeorigin.js | 8 ++-- test/parallel/test-performance-nodetiming.js | 46 +++++++++++++++++++ 6 files changed, 73 insertions(+), 12 deletions(-) create mode 100644 test/parallel/test-performance-nodetiming.js diff --git a/src/env.cc b/src/env.cc index 8af50e2f1b0181..efeccad346475a 100644 --- a/src/env.cc +++ b/src/env.cc @@ -671,8 +671,9 @@ Environment::Environment(IsolateData* isolate_data, stream_base_state_(isolate_, StreamBase::kNumStreamBaseStateFields, MAYBE_FIELD_PTR(env_info, stream_base_state)), - time_origin_(PERFORMANCE_NOW()), - time_origin_timestamp_(GetCurrentTimeInMicroseconds()), + time_origin_(performance::performance_process_start), + time_origin_timestamp_(performance::performance_process_start_timestamp), + environment_start_(PERFORMANCE_NOW()), flags_(flags), thread_id_(thread_id.id == static_cast(-1) ? AllocateEnvironmentThreadId().id @@ -803,7 +804,7 @@ void Environment::InitializeMainContext(Local context, set_exiting(false); performance_state_->Mark(performance::NODE_PERFORMANCE_MILESTONE_ENVIRONMENT, - time_origin_); + environment_start_); performance_state_->Mark(performance::NODE_PERFORMANCE_MILESTONE_NODE_START, per_process::node_start_time); diff --git a/src/env.h b/src/env.h index c0e28d6c2ee751..bf16b48fa24b0b 100644 --- a/src/env.h +++ b/src/env.h @@ -846,9 +846,11 @@ class Environment : public MemoryRetainer { inline HandleWrapQueue* handle_wrap_queue() { return &handle_wrap_queue_; } inline ReqWrapQueue* req_wrap_queue() { return &req_wrap_queue_; } + // https://w3c.github.io/hr-time/#dfn-time-origin inline uint64_t time_origin() { return time_origin_; } + // https://w3c.github.io/hr-time/#dfn-get-time-origin-timestamp inline double time_origin_timestamp() { return time_origin_timestamp_; } @@ -1057,10 +1059,17 @@ class Environment : public MemoryRetainer { AliasedInt32Array stream_base_state_; - // https://w3c.github.io/hr-time/#dfn-time-origin - uint64_t time_origin_; - // https://w3c.github.io/hr-time/#dfn-get-time-origin-timestamp - double time_origin_timestamp_; + // As PerformanceNodeTiming is exposed in worker_threads, the per_process + // time origin is exposed in the worker threads. This is an intentional + // diverge from the HTML spec of web workers. + // Process start time from the monotonic clock. This should not be used as an + // absolute time, but only as a time relative to another monotonic clock time. + const uint64_t time_origin_; + // Process start timestamp from the wall clock. This is an absolute time + // exposed as `performance.timeOrigin`. + const double time_origin_timestamp_; + // This is the time when the environment is created. + const uint64_t environment_start_; std::unique_ptr performance_state_; bool has_serialized_options_ = false; diff --git a/src/node_perf.cc b/src/node_perf.cc index 8e8173e16ca7fa..1a97f25b6ca484 100644 --- a/src/node_perf.cc +++ b/src/node_perf.cc @@ -38,6 +38,9 @@ using v8::Value; // Nanoseconds in a millisecond, as a float. #define NANOS_PER_MILLIS 1e6 +const uint64_t performance_process_start = PERFORMANCE_NOW(); +const double performance_process_start_timestamp = + GetCurrentTimeInMicroseconds(); uint64_t performance_v8_start; PerformanceState::PerformanceState(Isolate* isolate, @@ -271,7 +274,7 @@ void CreateELDHistogram(const FunctionCallbackInfo& args) { void GetTimeOrigin(const FunctionCallbackInfo& args) { Environment* env = Environment::GetCurrent(args); args.GetReturnValue().Set( - Number::New(args.GetIsolate(), env->time_origin() / 1e6)); + Number::New(args.GetIsolate(), env->time_origin() / NANOS_PER_MILLIS)); } void GetTimeOriginTimeStamp(const FunctionCallbackInfo& args) { diff --git a/src/node_perf_common.h b/src/node_perf_common.h index f457d73c579c01..d519222616a174 100644 --- a/src/node_perf_common.h +++ b/src/node_perf_common.h @@ -20,6 +20,8 @@ namespace performance { // These occur before the environment is created. Cache them // here and add them to the milestones when the env is init'd. +extern const uint64_t performance_process_start; +extern const double performance_process_start_timestamp; extern uint64_t performance_v8_start; #define NODE_PERFORMANCE_MILESTONES(V) \ diff --git a/test/parallel/test-perf-hooks-worker-timeorigin.js b/test/parallel/test-perf-hooks-worker-timeorigin.js index b87beb76bb3e19..a7cf35db904fd9 100644 --- a/test/parallel/test-perf-hooks-worker-timeorigin.js +++ b/test/parallel/test-perf-hooks-worker-timeorigin.js @@ -9,10 +9,10 @@ require('worker_threads').parentPort.postMessage(performance.timeOrigin); `, { eval: true }); w.on('message', common.mustCall((timeOrigin) => { - // Worker is created after this main context, it's - // `performance.timeOrigin` must be greater than this - // main context's. - assert.ok(timeOrigin > performance.timeOrigin); + // PerformanceNodeTiming exposes process milestones so the + // `performance.timeOrigin` in the `worker_threads.Worker` must be the start + // time of the process. + assert.strictEqual(timeOrigin, performance.timeOrigin); })); w.on('exit', common.mustCall((code) => { diff --git a/test/parallel/test-performance-nodetiming.js b/test/parallel/test-performance-nodetiming.js new file mode 100644 index 00000000000000..cc76c80a647a91 --- /dev/null +++ b/test/parallel/test-performance-nodetiming.js @@ -0,0 +1,46 @@ +'use strict'; + +const common = require('../common'); +const assert = require('assert'); +const { performance } = require('perf_hooks'); +const { isMainThread } = require('worker_threads'); + +const { nodeTiming } = performance; +assert.strictEqual(nodeTiming.name, 'node'); +assert.strictEqual(nodeTiming.entryType, 'node'); + +assert.strictEqual(nodeTiming.startTime, 0); +const now = performance.now(); +assert.ok(nodeTiming.duration >= now); + +// Check that the nodeTiming milestone values are in the correct order and greater than 0. +const keys = ['nodeStart', 'v8Start', 'environment', 'bootstrapComplete']; +for (let idx = 0; idx < keys.length; idx++) { + if (idx === 0) { + assert.ok(nodeTiming[keys[idx]] >= 0); + continue; + } + assert.ok(nodeTiming[keys[idx]] > nodeTiming[keys[idx - 1]], `expect nodeTiming['${keys[idx]}'] > nodeTiming['${keys[idx - 1]}']`); +} + +// loop milestones. +assert.strictEqual(nodeTiming.idleTime, 0); +if (isMainThread) { + // Main thread does not start loop until the first tick is finished. + assert.strictEqual(nodeTiming.loopStart, -1); +} else { + // Worker threads run the user script after loop is started. + assert.ok(nodeTiming.loopStart >= nodeTiming.bootstrapComplete); +} +assert.strictEqual(nodeTiming.loopExit, -1); + +setTimeout(common.mustCall(() => { + assert.ok(nodeTiming.idleTime >= 0); + assert.ok(nodeTiming.idleTime + nodeTiming.loopExit <= nodeTiming.duration); + assert.ok(nodeTiming.loopStart >= nodeTiming.bootstrapComplete); +}, 1), 1); + +// Can not be wrapped in common.mustCall(). +process.on('exit', () => { + assert.ok(nodeTiming.loopExit > 0); +}); From c4103c1ccfeae49e7fd50d7e7deeccde8b3be685 Mon Sep 17 00:00:00 2001 From: Facundo Tuesca Date: Thu, 24 Nov 2022 13:43:36 +0100 Subject: [PATCH 008/186] tools: add automation for updating OpenSSL dependency Add a Github Action that checks for new versions of the `OpenSSL` library, and creates a PR to update it if a newer version than the one present in the repo is found. Refs: https://github.com/nodejs/security-wg/issues/828 PR-URL: https://github.com/nodejs/node/pull/45605 Reviewed-By: Michael Dawson Reviewed-By: Rafael Gonzaga Reviewed-By: Marco Ippolito --- .github/workflows/update-openssl.yml | 70 ++++++++++++++++++++ tools/dep_updaters/README.md | 41 ++++++++++++ tools/dep_updaters/update-openssl.sh | 99 ++++++++++++++++++++++++++++ 3 files changed, 210 insertions(+) create mode 100644 .github/workflows/update-openssl.yml create mode 100755 tools/dep_updaters/update-openssl.sh diff --git a/.github/workflows/update-openssl.yml b/.github/workflows/update-openssl.yml new file mode 100644 index 00000000000000..c2f919c60f6dcb --- /dev/null +++ b/.github/workflows/update-openssl.yml @@ -0,0 +1,70 @@ +name: OpenSSL update +on: + schedule: + # Run once a week at 00:05 AM UTC on Sunday. + - cron: 5 0 * * 0 + + workflow_dispatch: + +permissions: + contents: read + +jobs: + openssl-update: + if: github.repository == 'nodejs/node' + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + persist-credentials: false + - name: Check if update branch already exists + run: | + BRANCH_EXISTS=$(git ls-remote --heads origin actions/tools-update-openssl) + echo "BRANCH_EXISTS=$BRANCH_EXISTS" >> $GITHUB_ENV + - name: Check and download new OpenSSL version + # Only run rest of the workflow if the update branch does not yet exist + if: ${{ env.BRANCH_EXISTS == '' }} + run: | + NEW_VERSION=$(gh api repos/quictls/openssl/releases -q '.[].tag_name|select(contains("openssl-3"))|ltrimstr("openssl-")' | head -n1) + NEW_VERSION_NO_RELEASE_1=$(case $NEW_VERSION in *quic1) echo ${NEW_VERSION%1};; *) echo $NEW_VERSION;; esac) + VERSION_H="./deps/openssl/config/archs/linux-x86_64/asm/include/openssl/opensslv.h" + CURRENT_VERSION=$(grep "OPENSSL_FULL_VERSION_STR" $VERSION_H | sed -n "s/^.*VERSION_STR \"\(.*\)\"/\1/p") + if [ "$NEW_VERSION_NO_RELEASE_1" != "$CURRENT_VERSION" ]; then + echo "NEW_VERSION=$NEW_VERSION" >> $GITHUB_ENV + echo "HAS_UPDATE=true" >> $GITHUB_ENV + ./tools/dep_updaters/update-openssl.sh download "$NEW_VERSION" + fi + env: + GITHUB_TOKEN: ${{ secrets.GH_USER_TOKEN }} + - name: Create PR with first commit + if: env.HAS_UPDATE + uses: gr2m/create-or-update-pull-request-action@v1 + # Creates a PR with the new OpenSSL source code committed + env: + GITHUB_TOKEN: ${{ secrets.GH_USER_TOKEN }} + with: + author: Node.js GitHub Bot + body: This is an automated update of OpenSSL to ${{ env.NEW_VERSION }}. + branch: actions/tools-update-openssl # Custom branch *just* for this Action. + commit-message: 'deps: upgrade openssl sources to quictls/openssl-${{ env.NEW_VERSION }}' + labels: dependencies + title: 'deps: update OpenSSL to ${{ env.NEW_VERSION }}' + path: deps/openssl + - name: Regenerate platform specific files + if: env.HAS_UPDATE + run: | + sudo apt install -y nasm libtext-template-perl + ./tools/dep_updaters/update-openssl.sh regenerate + env: + GITHUB_TOKEN: ${{ secrets.GH_USER_TOKEN }} + - name: Add second commit + # Adds a second commit to the PR with the generated platform-dependent files + if: env.HAS_UPDATE + uses: gr2m/create-or-update-pull-request-action@v1 + env: + GITHUB_TOKEN: ${{ secrets.GH_USER_TOKEN }} + with: + author: Node.js GitHub Bot + branch: actions/tools-update-openssl # Custom branch *just* for this Action. + commit-message: 'deps: update archs files for openssl-${{ env.NEW_VERSION }}' + path: deps/openssl diff --git a/tools/dep_updaters/README.md b/tools/dep_updaters/README.md index bae6d2be2d0943..7e6e47199cc82b 100644 --- a/tools/dep_updaters/README.md +++ b/tools/dep_updaters/README.md @@ -61,6 +61,45 @@ been created with the changes), do the following: 4. Create a commit for the update and in the commit message include the important/relevant items from the changelog. +## OpenSSL + +The `update-openssl.sh` script automates the steps described in +[`maintaining-openssl.md`][]. The main difference is that the script downloads +the release tarball from GitHub, instead of cloning the repo and using that as +the source code. This is useful since the release tarball does not include +development-specific files and directories (e.g the `.github` folder). + +The script has to be run in two steps. The first one (using the `download` +sub-command) replaces the OpenSSL source code with the new version. The second +one (using the `regenerate` sub-command) regenerates the platform-specific +files. This makes it easier to create two separate git commits, making the git +history more descriptive. + +For example, in order to update to version `3.0.7+quic1`, the following commands +should be run: + +```bash +./tools/dep_updaters/update-openssl.sh download 3.0.7+quic1 +git add -A deps/openssl/openssl +git commit -m "deps: upgrade openssl sources to quictls/openssl-3.0.7+quic1" + +./tools/dep_updaters/update-openssl.sh regenerate 3.0.7+quic1 +git add -A deps/openssl/config/archs deps/openssl/openssl +git commit -m "deps: update archs files for openssl" +``` + +Once the script has run (either manually, or by CI in which case a PR will have +been created with the changes), do the following: + +1. Check the `CHANGES.md` file in the [repo](https://github.com/quictls/openssl) + for things that might require changes in Node.js. +2. Check the diffs to ensure the changes are right. Even if there are no changes + in the source, `buildinf.h` files will be updated because they have timestamp + data in them. +3. Check that Node.js compiles without errors and the tests pass. +4. Create a commit for the update and in the commit message include the + important/relevant items from the changelog. + ## postject The `update-postject.sh` script downloads postject from the [npm package](http://npmjs.com/package/postject) @@ -80,3 +119,5 @@ been created with the changes), do the following: 2. Check that Node.js compiles without errors and the tests pass. 3. Create a commit for the update and in the commit message include the important/relevant items from the changelog. + +[`maintaining-openssl.md`]: https://github.com/nodejs/node/blob/main/doc/contributing/maintaining-openssl.md diff --git a/tools/dep_updaters/update-openssl.sh b/tools/dep_updaters/update-openssl.sh new file mode 100755 index 00000000000000..753120e54839bc --- /dev/null +++ b/tools/dep_updaters/update-openssl.sh @@ -0,0 +1,99 @@ +#!/bin/sh +set -e +# Shell script to update OpenSSL in the source tree to a specific version +# Based on https://github.com/nodejs/node/blob/main/doc/contributing/maintaining-openssl.md + +cleanup() { + EXIT_CODE=$? + [ -d "$WORKSPACE" ] && rm -rf "$WORKSPACE" + exit $EXIT_CODE +} + +download() { + if [ -z "$1" ]; then + echo "Error: please provide an OpenSSL version to update to" + echo " e.g. ./$0 download 3.0.7+quic1" + exit 1 + fi + + OPENSSL_VERSION=$1 + echo "Making temporary workspace..." + WORKSPACE=$(mktemp -d 2> /dev/null || mktemp -d -t 'tmp') + + + cd "$WORKSPACE" + + echo "Fetching OpenSSL source archive..." + curl -sL "https://api.github.com/repos/quictls/openssl/tarball/openssl-$OPENSSL_VERSION" | tar xzf - + mv quictls-openssl-* openssl + + echo "Replacing existing OpenSSL..." + rm -rf "$DEPS_DIR/openssl/openssl" + mv "$WORKSPACE/openssl" "$DEPS_DIR/openssl/" + + echo "All done!" + echo "" + echo "Please git add openssl, and commit the new version:" + echo "" + echo "$ git add -A deps/openssl/openssl" + echo "$ git commit -m \"deps: upgrade openssl sources to quictls/openssl-$OPENSSL_VERSION\"" + echo "" +} + +regenerate() { + command -v perl >/dev/null 2>&1 || { echo >&2 "Error: 'Perl' required but not installed."; exit 1; } + command -v nasm >/dev/null 2>&1 || { echo >&2 "Error: 'nasm' required but not installed."; exit 1; } + command -v as >/dev/null 2>&1 || { echo >&2 "Error: 'GNU as' required but not installed."; exit 1; } + perl -e "use Text::Template">/dev/null 2>&1 || { echo >&2 "Error: 'Text::Template' Perl module required but not installed."; exit 1; } + + echo "Regenerating platform-dependent files..." + + make -C "$DEPS_DIR/openssl/config" clean + # Needed for compatibility with nasm on 32-bit Windows + # See https://github.com/nodejs/node/blob/main/doc/contributing/maintaining-openssl.md#2-execute-make-in-depsopensslconfig-directory + sed -i 's/#ifdef/%ifdef/g' "$DEPS_DIR/openssl/openssl/crypto/perlasm/x86asm.pl" + sed -i 's/#endif/%endif/g' "$DEPS_DIR/openssl/openssl/crypto/perlasm/x86asm.pl" + make -C "$DEPS_DIR/openssl/config" + + echo "All done!" + echo "" + echo "Please commit the regenerated files:" + echo "" + echo "$ git add -A deps/openssl/config/archs deps/openssl/openssl" + echo "$ git commit -m \"deps: update archs files for openssl\"" + echo "" +} + +help() { + echo "Shell script to update OpenSSL in the source tree to a specific version" + echo "Sub-commands:" + printf "%-23s %s\n" "help" "show help menu and commands" + printf "%-23s %s\n" "download" "download and replace OpenSSL source code with new version" + printf "%-23s %s\n" "regenerate" "regenerate platform-specific files" + echo "" + exit "${1:-0}" +} + +main() { + if [ ${#} -eq 0 ]; then + help 0 + fi + + trap cleanup INT TERM EXIT + + BASE_DIR=$(cd "$(dirname "$0")/../.." && pwd) + DEPS_DIR="$BASE_DIR/deps" + + case ${1} in + help | download | regenerate ) + $1 "${2}" + ;; + * ) + echo "unknown command: $1" + help 1 + exit 1 + ;; + esac +} + +main "$@" From a37b72da8714acdec9cf4b23449e73f635ca713f Mon Sep 17 00:00:00 2001 From: Moshe Atlow Date: Tue, 28 Feb 2023 22:26:58 +0200 Subject: [PATCH 009/186] test_runner: avoid running twice tests in describe PR-URL: https://github.com/nodejs/node/pull/46888 Reviewed-By: Benjamin Gruenbaum Reviewed-By: Antoine du Hamel --- doc/api/test.md | 14 +++++++++----- lib/internal/test_runner/harness.js | 27 ++++++++++++--------------- test/message/test_runner_hooks.js | 16 ++++++++-------- 3 files changed, 29 insertions(+), 28 deletions(-) diff --git a/doc/api/test.md b/doc/api/test.md index 792b3c435071a0..2584aaab8286e4 100644 --- a/doc/api/test.md +++ b/doc/api/test.md @@ -778,7 +778,8 @@ changes: to this function is a [`TestContext`][] object. If the test uses callbacks, the callback function is passed as the second argument. **Default:** A no-op function. -* Returns: {Promise} Resolved with `undefined` once the test completes. +* Returns: {Promise} Resolved with `undefined` once + the test completes, or immediately if the test runs within [`describe()`][]. The `test()` function is the value imported from the `test` module. Each invocation of this function results in reporting the test to the {TestsStream}. @@ -787,10 +788,12 @@ The `TestContext` object passed to the `fn` argument can be used to perform actions related to the current test. Examples include skipping the test, adding additional diagnostic information, or creating subtests. -`test()` returns a `Promise` that resolves once the test completes. The return -value can usually be discarded for top level tests. However, the return value -from subtests should be used to prevent the parent test from finishing first -and cancelling the subtest as shown in the following example. +`test()` returns a `Promise` that resolves once the test completes. +if `test()` is called within a `describe()` block, it resolve immediately. +The return value can usually be discarded for top level tests. +However, the return value from subtests should be used to prevent the parent +test from finishing first and cancelling the subtest +as shown in the following example. ```js test('top level test', async (t) => { @@ -1780,6 +1783,7 @@ added: [`context.diagnostic`]: #contextdiagnosticmessage [`context.skip`]: #contextskipmessage [`context.todo`]: #contexttodomessage +[`describe()`]: #describename-options-fn [`run()`]: #runoptions [`test()`]: #testname-options-fn [describe options]: #describename-options-fn diff --git a/lib/internal/test_runner/harness.js b/lib/internal/test_runner/harness.js index 2ee09c66b3e3c3..6141d13b0a20f2 100644 --- a/lib/internal/test_runner/harness.js +++ b/lib/internal/test_runner/harness.js @@ -1,6 +1,7 @@ 'use strict'; const { ArrayPrototypeForEach, + PromiseResolve, SafeMap, SafeWeakSet, } = primordials; @@ -186,31 +187,27 @@ async function startSubtest(subtest) { await subtest.start(); } -function test(name, options, fn) { - const parent = testResources.get(executionAsyncId()) || getGlobalRoot(); - const subtest = parent.createSubtest(Test, name, options, fn); - return startSubtest(subtest); -} - -function runInParentContext(Factory) { +function runInParentContext(Factory, addShorthands = true) { function run(name, options, fn, overrides) { const parent = testResources.get(executionAsyncId()) || getGlobalRoot(); const subtest = parent.createSubtest(Factory, name, options, fn, overrides); - if (parent === getGlobalRoot()) { - startSubtest(subtest); + if (!(parent instanceof Suite)) { + return startSubtest(subtest); } + return PromiseResolve(); } - const cb = (name, options, fn) => { - run(name, options, fn); - }; + const test = (name, options, fn) => run(name, options, fn); + if (!addShorthands) { + return test; + } ArrayPrototypeForEach(['skip', 'todo', 'only'], (keyword) => { - cb[keyword] = (name, options, fn) => { + test[keyword] = (name, options, fn) => { run(name, options, fn, { [keyword]: true }); }; }); - return cb; + return test; } function hook(hook) { @@ -222,7 +219,7 @@ function hook(hook) { module.exports = { createTestTree, - test, + test: runInParentContext(Test, false), describe: runInParentContext(Suite), it: runInParentContext(ItTest), before: hook('before'), diff --git a/test/message/test_runner_hooks.js b/test/message/test_runner_hooks.js index dab607f862ff5f..bd5adb762d86fd 100644 --- a/test/message/test_runner_hooks.js +++ b/test/message/test_runner_hooks.js @@ -32,7 +32,7 @@ describe('describe hooks', () => { }); it('1', () => testArr.push('1')); - it('2', () => testArr.push('2')); + test('2', () => testArr.push('2')); describe('nested', () => { before(function() { @@ -48,44 +48,44 @@ describe('describe hooks', () => { testArr.push('afterEach ' + this.name); }); it('nested 1', () => testArr.push('nested 1')); - it('nested 2', () => testArr.push('nested 2')); + test('nested 2', () => testArr.push('nested 2')); }); }); describe('before throws', () => { before(() => { throw new Error('before'); }); it('1', () => {}); - it('2', () => {}); + test('2', () => {}); }); describe('after throws', () => { after(() => { throw new Error('after'); }); it('1', () => {}); - it('2', () => {}); + test('2', () => {}); }); describe('beforeEach throws', () => { beforeEach(() => { throw new Error('beforeEach'); }); it('1', () => {}); - it('2', () => {}); + test('2', () => {}); }); describe('afterEach throws', () => { afterEach(() => { throw new Error('afterEach'); }); it('1', () => {}); - it('2', () => {}); + test('2', () => {}); }); describe('afterEach when test fails', () => { afterEach(common.mustCall(2)); it('1', () => { throw new Error('test'); }); - it('2', () => {}); + test('2', () => {}); }); describe('afterEach throws and test fails', () => { afterEach(() => { throw new Error('afterEach'); }); it('1', () => { throw new Error('test'); }); - it('2', () => {}); + test('2', () => {}); }); test('test hooks', async (t) => { From 31156a7e9dfc2d98175b10764008aaf23d9f4b6e Mon Sep 17 00:00:00 2001 From: Livia Medeiros Date: Fri, 3 Mar 2023 16:55:58 +0900 Subject: [PATCH 010/186] test: move testPath from CWD to temporary directory MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/46890 Reviewed-By: Luigi Pinca Reviewed-By: James M Snell Reviewed-By: Tobias Nießen --- .../parallel/test-fs-assert-encoding-error.js | 41 ++++++++++--------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/test/parallel/test-fs-assert-encoding-error.js b/test/parallel/test-fs-assert-encoding-error.js index f5e1d0f07e71ee..7f32c06ea89419 100644 --- a/test/parallel/test-fs-assert-encoding-error.js +++ b/test/parallel/test-fs-assert-encoding-error.js @@ -1,8 +1,11 @@ 'use strict'; const common = require('../common'); -const assert = require('assert'); -const fs = require('fs'); +const assert = require('node:assert'); +const fs = require('node:fs'); +const path = require('node:path'); +const tmpdir = require('../common/tmpdir'); +const testPath = path.join(tmpdir.path, 'assert-encoding-error'); const options = 'test'; const expectedError = { code: 'ERR_INVALID_ARG_VALUE', @@ -10,69 +13,69 @@ const expectedError = { }; assert.throws(() => { - fs.readFile('path', options, common.mustNotCall()); + fs.readFile(testPath, options, common.mustNotCall()); }, expectedError); assert.throws(() => { - fs.readFileSync('path', options); + fs.readFileSync(testPath, options); }, expectedError); assert.throws(() => { - fs.readdir('path', options, common.mustNotCall()); + fs.readdir(testPath, options, common.mustNotCall()); }, expectedError); assert.throws(() => { - fs.readdirSync('path', options); + fs.readdirSync(testPath, options); }, expectedError); assert.throws(() => { - fs.readlink('path', options, common.mustNotCall()); + fs.readlink(testPath, options, common.mustNotCall()); }, expectedError); assert.throws(() => { - fs.readlinkSync('path', options); + fs.readlinkSync(testPath, options); }, expectedError); assert.throws(() => { - fs.writeFile('path', 'data', options, common.mustNotCall()); + fs.writeFile(testPath, 'data', options, common.mustNotCall()); }, expectedError); assert.throws(() => { - fs.writeFileSync('path', 'data', options); + fs.writeFileSync(testPath, 'data', options); }, expectedError); assert.throws(() => { - fs.appendFile('path', 'data', options, common.mustNotCall()); + fs.appendFile(testPath, 'data', options, common.mustNotCall()); }, expectedError); assert.throws(() => { - fs.appendFileSync('path', 'data', options); + fs.appendFileSync(testPath, 'data', options); }, expectedError); assert.throws(() => { - fs.watch('path', options, common.mustNotCall()); + fs.watch(testPath, options, common.mustNotCall()); }, expectedError); assert.throws(() => { - fs.realpath('path', options, common.mustNotCall()); + fs.realpath(testPath, options, common.mustNotCall()); }, expectedError); assert.throws(() => { - fs.realpathSync('path', options); + fs.realpathSync(testPath, options); }, expectedError); assert.throws(() => { - fs.mkdtemp('path', options, common.mustNotCall()); + fs.mkdtemp(testPath, options, common.mustNotCall()); }, expectedError); assert.throws(() => { - fs.mkdtempSync('path', options); + fs.mkdtempSync(testPath, options); }, expectedError); assert.throws(() => { - fs.ReadStream('path', options); + fs.ReadStream(testPath, options); }, expectedError); assert.throws(() => { - fs.WriteStream('path', options); + fs.WriteStream(testPath, options); }, expectedError); From 5a7491b5acaac7082de981539f97b1c284f577eb Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Fri, 3 Mar 2023 19:31:12 +0100 Subject: [PATCH 011/186] esm: add a runtime warning when using import assertions PR-URL: https://github.com/nodejs/node/pull/46901 Refs: https://github.com/nodejs/node/issues/46830 Reviewed-By: James M Snell Reviewed-By: Matteo Collina Reviewed-By: Mohammed Keyvanzadeh Reviewed-By: Jacob Smith --- lib/internal/modules/esm/assert.js | 13 +++++++++++++ test/es-module/test-esm-import-assertion-errors.js | 7 +++++++ test/es-module/test-esm-import-assertion-errors.mjs | 10 +++++++++- .../test-esm-import-assertion-validation.js | 10 +++++++++- .../es-module/test-esm-import-assertion-warning.mjs | 10 ++++++++++ test/es-module/test-esm-json.mjs | 5 ++--- 6 files changed, 50 insertions(+), 5 deletions(-) create mode 100644 test/es-module/test-esm-import-assertion-warning.mjs diff --git a/lib/internal/modules/esm/assert.js b/lib/internal/modules/esm/assert.js index caa2845475f6c7..3437aa1a61b86f 100644 --- a/lib/internal/modules/esm/assert.js +++ b/lib/internal/modules/esm/assert.js @@ -3,6 +3,7 @@ const { ArrayPrototypeFilter, ArrayPrototypeIncludes, + ObjectKeys, ObjectValues, ObjectPrototypeHasOwnProperty, } = primordials; @@ -17,6 +18,8 @@ const { // The HTML spec has an implied default type of `'javascript'`. const kImplicitAssertType = 'javascript'; +let alreadyWarned = false; + /** * Define a map of module formats to import assertion types (the value of * `type` in `assert { type: 'json' }`). @@ -55,6 +58,16 @@ function validateAssertions(url, format, importAssertions = { __proto__: null }) { const validType = formatTypeMap[format]; + if (!alreadyWarned && ObjectKeys(importAssertions).length !== 0) { + alreadyWarned = true; + process.emitWarning( + 'Import assertions are not a stable feature of the JavaScript language, ' + + 'avoid relying on their current behavior and syntax as those might change ' + + 'in a future version of Node.js.', + 'ExperimentalWarning', + ); + } + switch (validType) { case undefined: // Ignore assertions for module formats we don't recognize, to allow new diff --git a/test/es-module/test-esm-import-assertion-errors.js b/test/es-module/test-esm-import-assertion-errors.js index 2fb167aa0941e2..8d12a2d12b3955 100644 --- a/test/es-module/test-esm-import-assertion-errors.js +++ b/test/es-module/test-esm-import-assertion-errors.js @@ -5,6 +5,13 @@ const { rejects } = require('assert'); const jsModuleDataUrl = 'data:text/javascript,export{}'; const jsonModuleDataUrl = 'data:application/json,""'; +common.expectWarning( + 'ExperimentalWarning', + 'Import assertions are not a stable feature of the JavaScript language, ' + + 'avoid relying on their current behavior and syntax as those might change ' + + 'in a future version of Node.js.' +); + async function test() { await rejects( import('data:text/css,', { assert: { type: 'css' } }), diff --git a/test/es-module/test-esm-import-assertion-errors.mjs b/test/es-module/test-esm-import-assertion-errors.mjs index acaeef50626508..a6be862c49f074 100644 --- a/test/es-module/test-esm-import-assertion-errors.mjs +++ b/test/es-module/test-esm-import-assertion-errors.mjs @@ -1,9 +1,17 @@ -import '../common/index.mjs'; +import { expectWarning } from '../common/index.mjs'; import { rejects } from 'assert'; const jsModuleDataUrl = 'data:text/javascript,export{}'; const jsonModuleDataUrl = 'data:application/json,""'; +expectWarning( + 'ExperimentalWarning', + 'Import assertions are not a stable feature of the JavaScript language, ' + + 'avoid relying on their current behavior and syntax as those might change ' + + 'in a future version of Node.js.' +); + + await rejects( // This rejects because of the unsupported MIME type, not because of the // unsupported assertion. diff --git a/test/es-module/test-esm-import-assertion-validation.js b/test/es-module/test-esm-import-assertion-validation.js index 3792ad7ff1617c..462f1c527e4b1b 100644 --- a/test/es-module/test-esm-import-assertion-validation.js +++ b/test/es-module/test-esm-import-assertion-validation.js @@ -1,11 +1,19 @@ // Flags: --expose-internals 'use strict'; -require('../common'); +const common = require('../common'); const assert = require('assert'); const { validateAssertions } = require('internal/modules/esm/assert'); +common.expectWarning( + 'ExperimentalWarning', + 'Import assertions are not a stable feature of the JavaScript language, ' + + 'avoid relying on their current behavior and syntax as those might change ' + + 'in a future version of Node.js.' +); + + const url = 'test://'; assert.ok(validateAssertions(url, 'builtin', {})); diff --git a/test/es-module/test-esm-import-assertion-warning.mjs b/test/es-module/test-esm-import-assertion-warning.mjs new file mode 100644 index 00000000000000..739d246f620e6f --- /dev/null +++ b/test/es-module/test-esm-import-assertion-warning.mjs @@ -0,0 +1,10 @@ +import { expectWarning } from '../common/index.mjs'; + +expectWarning( + 'ExperimentalWarning', + 'Import assertions are not a stable feature of the JavaScript language, ' + + 'avoid relying on their current behavior and syntax as those might change ' + + 'in a future version of Node.js.' +); + +await import('data:text/javascript,', { assert: { someUnsupportedKey: 'value' } }); diff --git a/test/es-module/test-esm-json.mjs b/test/es-module/test-esm-json.mjs index 14c86bac80af98..2740c0097f77da 100644 --- a/test/es-module/test-esm-json.mjs +++ b/test/es-module/test-esm-json.mjs @@ -6,7 +6,6 @@ import { describe, it } from 'node:test'; import secret from '../fixtures/experimental.json' assert { type: 'json' }; - describe('ESM: importing JSON', () => { it('should load JSON', () => { assert.strictEqual(secret.ofLife, 42); @@ -17,8 +16,8 @@ describe('ESM: importing JSON', () => { fixtures.path('/es-modules/json-modules.mjs'), ]); - assert.match(stderr, /ExperimentalWarning/); - assert.match(stderr, /JSON modules/); + assert.match(stderr, /ExperimentalWarning: Importing JSON modules/); + assert.match(stderr, /ExperimentalWarning: Import assertions/); assert.strictEqual(code, 0); assert.strictEqual(signal, null); }); From 027841c964998c87ff684cae5d3da647df8f37d9 Mon Sep 17 00:00:00 2001 From: Yagiz Nizipli Date: Fri, 3 Mar 2023 16:34:56 -0500 Subject: [PATCH 012/186] url: use private properties for brand check PR-URL: https://github.com/nodejs/node/pull/46904 Reviewed-By: Antoine du Hamel Reviewed-By: Ruben Bridgewater Reviewed-By: Benjamin Gruenbaum --- lib/internal/modules/cjs/loader.js | 4 +- lib/internal/modules/esm/hooks.js | 4 +- lib/internal/url.js | 163 +++++++----------- lib/internal/worker.js | 6 +- .../test-whatwg-url-custom-inspect.js | 2 +- test/parallel/test-whatwg-url-invalidthis.js | 12 +- 6 files changed, 74 insertions(+), 117 deletions(-) diff --git a/lib/internal/modules/cjs/loader.js b/lib/internal/modules/cjs/loader.js index c0b8cbc8a1e099..5544bfee9aac31 100644 --- a/lib/internal/modules/cjs/loader.js +++ b/lib/internal/modules/cjs/loader.js @@ -79,7 +79,7 @@ const { BuiltinModule } = require('internal/bootstrap/loaders'); const { maybeCacheSourceMap, } = require('internal/source_map/source_map_cache'); -const { pathToFileURL, fileURLToPath, isURLInstance } = require('internal/url'); +const { pathToFileURL, fileURLToPath, isURL } = require('internal/url'); const { deprecate, emitExperimentalWarning, @@ -1396,7 +1396,7 @@ const createRequireError = 'must be a file URL object, file URL string, or ' + function createRequire(filename) { let filepath; - if (isURLInstance(filename) || + if (isURL(filename) || (typeof filename === 'string' && !path.isAbsolute(filename))) { try { filepath = fileURLToPath(filename); diff --git a/lib/internal/modules/esm/hooks.js b/lib/internal/modules/esm/hooks.js index 83e5038903df83..9c5c4c99b887d0 100644 --- a/lib/internal/modules/esm/hooks.js +++ b/lib/internal/modules/esm/hooks.js @@ -21,7 +21,7 @@ const { ERR_INVALID_RETURN_PROPERTY_VALUE, ERR_INVALID_RETURN_VALUE, } = require('internal/errors').codes; -const { isURLInstance, URL } = require('internal/url'); +const { isURL, URL } = require('internal/url'); const { isAnyArrayBuffer, isArrayBufferView, @@ -263,7 +263,7 @@ class Hooks { if ( !isMain && typeof parentURL !== 'string' && - !isURLInstance(parentURL) + !isURL(parentURL) ) { throw new ERR_INVALID_ARG_TYPE( 'parentURL', diff --git a/lib/internal/url.js b/lib/internal/url.js index 193965b76d346d..3a44c529876a08 100644 --- a/lib/internal/url.js +++ b/lib/internal/url.js @@ -7,6 +7,7 @@ const { ArrayPrototypePush, ArrayPrototypeReduce, ArrayPrototypeSlice, + Boolean, Int8Array, IteratorPrototype, Number, @@ -15,7 +16,6 @@ const { ObjectGetOwnPropertySymbols, ObjectGetPrototypeOf, ObjectKeys, - ObjectPrototypeHasOwnProperty, ReflectGetOwnPropertyDescriptor, ReflectOwnKeys, RegExpPrototypeSymbolReplace, @@ -534,15 +534,27 @@ ObjectDefineProperties(URLSearchParams.prototype, { }, }); +/** + * Checks if a value has the shape of a WHATWG URL object. + * + * Using a symbol or instanceof would not be able to recognize URL objects + * coming from other implementations (e.g. in Electron), so instead we are + * checking some well known properties for a lack of a better test. + * + * @param {*} self + * @returns {self is URL} + */ function isURL(self) { - return self != null && ObjectPrototypeHasOwnProperty(self, context); + return Boolean(self?.href && self.origin); } class URL { + #context = new URLContext(); + #searchParams; + constructor(input, base = undefined) { // toUSVString is not needed. input = `${input}`; - this[context] = new URLContext(); if (base !== undefined) { base = `${base}`; @@ -558,11 +570,6 @@ class URL { } [inspect.custom](depth, opts) { - if (this == null || - ObjectGetPrototypeOf(this[context]) !== URLContext.prototype) { - throw new ERR_INVALID_THIS('URL'); - } - if (typeof depth === 'number' && depth < 0) return this; @@ -583,7 +590,7 @@ class URL { obj.hash = this.hash; if (opts.showHidden) { - obj[context] = this[context]; + obj[context] = this.#context; } return `${constructor.name} ${inspect(obj, opts)}`; @@ -591,174 +598,125 @@ class URL { #onParseComplete = (href, origin, protocol, hostname, pathname, search, username, password, port, hash) => { - const ctx = this[context]; - ctx.href = href; - ctx.origin = origin; - ctx.protocol = protocol; - ctx.hostname = hostname; - ctx.pathname = pathname; - ctx.search = search; - ctx.username = username; - ctx.password = password; - ctx.port = port; - ctx.hash = hash; - if (this[searchParams]) { - this[searchParams][searchParams] = parseParams(search); + this.#context.href = href; + this.#context.origin = origin; + this.#context.protocol = protocol; + this.#context.hostname = hostname; + this.#context.pathname = pathname; + this.#context.search = search; + this.#context.username = username; + this.#context.password = password; + this.#context.port = port; + this.#context.hash = hash; + if (this.#searchParams) { + this.#searchParams[searchParams] = parseParams(search); } }; toString() { - if (!isURL(this)) - throw new ERR_INVALID_THIS('URL'); - return this[context].href; + return this.#context.href; } get href() { - if (!isURL(this)) - throw new ERR_INVALID_THIS('URL'); - return this[context].href; + return this.#context.href; } set href(value) { - if (!isURL(this)) - throw new ERR_INVALID_THIS('URL'); - const valid = updateUrl(this[context].href, updateActions.kHref, `${value}`, this.#onParseComplete); + const valid = updateUrl(this.#context.href, updateActions.kHref, `${value}`, this.#onParseComplete); if (!valid) { throw ERR_INVALID_URL(`${value}`); } } // readonly get origin() { - if (!isURL(this)) - throw new ERR_INVALID_THIS('URL'); - return this[context].origin; + return this.#context.origin; } get protocol() { - if (!isURL(this)) - throw new ERR_INVALID_THIS('URL'); - return this[context].protocol; + return this.#context.protocol; } set protocol(value) { - if (!isURL(this)) - throw new ERR_INVALID_THIS('URL'); - updateUrl(this[context].href, updateActions.kProtocol, `${value}`, this.#onParseComplete); + updateUrl(this.#context.href, updateActions.kProtocol, `${value}`, this.#onParseComplete); } get username() { - if (!isURL(this)) - throw new ERR_INVALID_THIS('URL'); - return this[context].username; + return this.#context.username; } set username(value) { - if (!isURL(this)) - throw new ERR_INVALID_THIS('URL'); - updateUrl(this[context].href, updateActions.kUsername, `${value}`, this.#onParseComplete); + updateUrl(this.#context.href, updateActions.kUsername, `${value}`, this.#onParseComplete); } get password() { - if (!isURL(this)) - throw new ERR_INVALID_THIS('URL'); - return this[context].password; + return this.#context.password; } set password(value) { - if (!isURL(this)) - throw new ERR_INVALID_THIS('URL'); - updateUrl(this[context].href, updateActions.kPassword, `${value}`, this.#onParseComplete); + updateUrl(this.#context.href, updateActions.kPassword, `${value}`, this.#onParseComplete); } get host() { - if (!isURL(this)) - throw new ERR_INVALID_THIS('URL'); - const port = this[context].port; + const port = this.#context.port; const suffix = port.length > 0 ? `:${port}` : ''; - return this[context].hostname + suffix; + return this.#context.hostname + suffix; } set host(value) { - if (!isURL(this)) - throw new ERR_INVALID_THIS('URL'); - updateUrl(this[context].href, updateActions.kHost, `${value}`, this.#onParseComplete); + updateUrl(this.#context.href, updateActions.kHost, `${value}`, this.#onParseComplete); } get hostname() { - if (!isURL(this)) - throw new ERR_INVALID_THIS('URL'); - return this[context].hostname; + return this.#context.hostname; } set hostname(value) { - if (!isURL(this)) - throw new ERR_INVALID_THIS('URL'); - updateUrl(this[context].href, updateActions.kHostname, `${value}`, this.#onParseComplete); + updateUrl(this.#context.href, updateActions.kHostname, `${value}`, this.#onParseComplete); } get port() { - if (!isURL(this)) - throw new ERR_INVALID_THIS('URL'); - return this[context].port; + return this.#context.port; } set port(value) { - if (!isURL(this)) - throw new ERR_INVALID_THIS('URL'); - updateUrl(this[context].href, updateActions.kPort, `${value}`, this.#onParseComplete); + updateUrl(this.#context.href, updateActions.kPort, `${value}`, this.#onParseComplete); } get pathname() { - if (!isURL(this)) - throw new ERR_INVALID_THIS('URL'); - return this[context].pathname; + return this.#context.pathname; } set pathname(value) { - if (!isURL(this)) - throw new ERR_INVALID_THIS('URL'); - updateUrl(this[context].href, updateActions.kPathname, `${value}`, this.#onParseComplete); + updateUrl(this.#context.href, updateActions.kPathname, `${value}`, this.#onParseComplete); } get search() { - if (!isURL(this)) - throw new ERR_INVALID_THIS('URL'); - return this[context].search; + return this.#context.search; } set search(value) { - if (!isURL(this)) - throw new ERR_INVALID_THIS('URL'); - updateUrl(this[context].href, updateActions.kSearch, toUSVString(value), this.#onParseComplete); + updateUrl(this.#context.href, updateActions.kSearch, toUSVString(value), this.#onParseComplete); } // readonly get searchParams() { - if (!isURL(this)) - throw new ERR_INVALID_THIS('URL'); // Create URLSearchParams on demand to greatly improve the URL performance. - if (this[searchParams] == null) { - this[searchParams] = new URLSearchParams(this[context].search); - this[searchParams][context] = this; + if (this.#searchParams == null) { + this.#searchParams = new URLSearchParams(this.#context.search); + this.#searchParams[context] = this; } - return this[searchParams]; + return this.#searchParams; } get hash() { - if (!isURL(this)) - throw new ERR_INVALID_THIS('URL'); - return this[context].hash; + return this.#context.hash; } set hash(value) { - if (!isURL(this)) - throw new ERR_INVALID_THIS('URL'); - updateUrl(this[context].href, updateActions.kHash, `${value}`, this.#onParseComplete); + updateUrl(this.#context.href, updateActions.kHash, `${value}`, this.#onParseComplete); } toJSON() { - if (!isURL(this)) - throw new ERR_INVALID_THIS('URL'); - return this[context].href; + return this.#context.href; } static createObjectURL(obj) { @@ -1206,7 +1164,7 @@ function getPathFromURLPosix(url) { function fileURLToPath(path) { if (typeof path === 'string') path = new URL(path); - else if (!isURLInstance(path)) + else if (!isURL(path)) throw new ERR_INVALID_ARG_TYPE('path', ['string', 'URL'], path); if (path.protocol !== 'file:') throw new ERR_INVALID_URL_SCHEME('file'); @@ -1282,12 +1240,8 @@ function pathToFileURL(filepath) { return outURL; } -function isURLInstance(fileURLOrPath) { - return fileURLOrPath != null && fileURLOrPath.href && fileURLOrPath.origin; -} - function toPathIfFileURL(fileURLOrPath) { - if (!isURLInstance(fileURLOrPath)) + if (!isURL(fileURLOrPath)) return fileURLOrPath; return fileURLToPath(fileURLOrPath); } @@ -1297,7 +1251,6 @@ module.exports = { fileURLToPath, pathToFileURL, toPathIfFileURL, - isURLInstance, URL, URLSearchParams, domainToASCII, diff --git a/lib/internal/worker.js b/lib/internal/worker.js index 0304d7e4c7c6b8..d6a9ce3abcac88 100644 --- a/lib/internal/worker.js +++ b/lib/internal/worker.js @@ -55,7 +55,7 @@ const { WritableWorkerStdio, } = workerIo; const { deserializeError } = require('internal/error_serdes'); -const { fileURLToPath, isURLInstance, pathToFileURL } = require('internal/url'); +const { fileURLToPath, isURL, pathToFileURL } = require('internal/url'); const { kEmptyObject } = require('internal/util'); const { validateArray } = require('internal/validators'); @@ -148,13 +148,13 @@ class Worker extends EventEmitter { } url = null; doEval = 'classic'; - } else if (isURLInstance(filename) && filename.protocol === 'data:') { + } else if (isURL(filename) && filename.protocol === 'data:') { url = null; doEval = 'module'; filename = `import ${JSONStringify(`${filename}`)}`; } else { doEval = false; - if (isURLInstance(filename)) { + if (isURL(filename)) { url = filename; filename = fileURLToPath(filename); } else if (typeof filename !== 'string') { diff --git a/test/parallel/test-whatwg-url-custom-inspect.js b/test/parallel/test-whatwg-url-custom-inspect.js index a7d30a6ab936c3..d8c732c29eb127 100644 --- a/test/parallel/test-whatwg-url-custom-inspect.js +++ b/test/parallel/test-whatwg-url-custom-inspect.js @@ -61,7 +61,7 @@ assert.strictEqual( assert.strictEqual( util.inspect({ a: url }, { depth: 0 }), - '{ a: [URL] }'); + '{ a: URL {} }'); class MyURL extends URL {} assert(util.inspect(new MyURL(url.href)).startsWith('MyURL {')); diff --git a/test/parallel/test-whatwg-url-invalidthis.js b/test/parallel/test-whatwg-url-invalidthis.js index 790c28e37c13ed..b46b5d8cceb8fa 100644 --- a/test/parallel/test-whatwg-url-invalidthis.js +++ b/test/parallel/test-whatwg-url-invalidthis.js @@ -10,7 +10,8 @@ const assert = require('assert'); 'toJSON', ].forEach((i) => { assert.throws(() => Reflect.apply(URL.prototype[i], [], {}), { - code: 'ERR_INVALID_THIS', + name: 'TypeError', + message: /Cannot read private member/, }); }); @@ -27,11 +28,13 @@ const assert = require('assert'); 'hash', ].forEach((i) => { assert.throws(() => Reflect.get(URL.prototype, i, {}), { - code: 'ERR_INVALID_THIS', + name: 'TypeError', + message: /Cannot read private member/, }); assert.throws(() => Reflect.set(URL.prototype, i, null, {}), { - code: 'ERR_INVALID_THIS', + name: 'TypeError', + message: /Cannot read private member/, }); }); @@ -40,6 +43,7 @@ const assert = require('assert'); 'searchParams', ].forEach((i) => { assert.throws(() => Reflect.get(URL.prototype, i, {}), { - code: 'ERR_INVALID_THIS', + name: 'TypeError', + message: /Cannot read private member/, }); }); From 48f99e5f6a1b131eba35d43c75e96377c5b5cc8e Mon Sep 17 00:00:00 2001 From: jakecastelli <38635403+jakecastelli@users.noreply.github.com> Date: Sat, 4 Mar 2023 10:16:12 +1030 Subject: [PATCH 013/186] doc: fix fs missing import PR-URL: https://github.com/nodejs/node/pull/46907 Reviewed-By: James M Snell Reviewed-By: Debadree Chatterjee Reviewed-By: Colin Ihrig Reviewed-By: Darshan Sen Reviewed-By: Moshe Atlow Reviewed-By: LiviaMedeiros --- doc/api/async_hooks.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/api/async_hooks.md b/doc/api/async_hooks.md index eb6af648c10e36..59b2284f295ee6 100644 --- a/doc/api/async_hooks.md +++ b/doc/api/async_hooks.md @@ -375,6 +375,7 @@ The following is a simple demonstration of `triggerAsyncId`: import { createHook, executionAsyncId } from 'node:async_hooks'; import { stdout } from 'node:process'; import net from 'node:net'; +import fs from 'node:fs'; createHook({ init(asyncId, type, triggerAsyncId) { @@ -392,6 +393,7 @@ net.createServer((conn) => {}).listen(8080); const { createHook, executionAsyncId } = require('node:async_hooks'); const { stdout } = require('node:process'); const net = require('node:net'); +const fs = require('node:fs'); createHook({ init(asyncId, type, triggerAsyncId) { @@ -722,6 +724,7 @@ changes: ```mjs import { executionAsyncId } from 'node:async_hooks'; +import fs from 'node:fs'; console.log(executionAsyncId()); // 1 - bootstrap fs.open(path, 'r', (err, fd) => { @@ -731,6 +734,7 @@ fs.open(path, 'r', (err, fd) => { ```cjs const async_hooks = require('node:async_hooks'); +const fs = require('node:fs'); console.log(async_hooks.executionAsyncId()); // 1 - bootstrap fs.open(path, 'r', (err, fd) => { From 6ddd8ef39a206e88777e882ca855f0841fad2105 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Nie=C3=9Fen?= Date: Sun, 5 Mar 2023 00:15:29 +0100 Subject: [PATCH 014/186] doc: fix links to SSL_CTX_set_options The old 1.0.2 docs do not exist anymore; link to the same file for OpenSSL 3.0 instead. PR-URL: https://github.com/nodejs/node/pull/46953 Reviewed-By: Colin Ihrig Reviewed-By: Luigi Pinca --- doc/api/crypto.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/api/crypto.md b/doc/api/crypto.md index 560059a2312e47..c407667b5af380 100644 --- a/doc/api/crypto.md +++ b/doc/api/crypto.md @@ -5791,7 +5791,7 @@ See the [list of SSL OP Flags][] for details. SSL_OP_ALL Applies multiple bug workarounds within OpenSSL. See - https://www.openssl.org/docs/man1.0.2/ssl/SSL_CTX_set_options.html + https://www.openssl.org/docs/man3.0/man3/SSL_CTX_set_options.html for detail. @@ -5803,13 +5803,13 @@ See the [list of SSL OP Flags][] for details. SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION Allows legacy insecure renegotiation between OpenSSL and unpatched clients or servers. See - https://www.openssl.org/docs/man1.0.2/ssl/SSL_CTX_set_options.html. + https://www.openssl.org/docs/man3.0/man3/SSL_CTX_set_options.html. SSL_OP_CIPHER_SERVER_PREFERENCE Attempts to use the server's preferences instead of the client's when selecting a cipher. Behavior depends on protocol version. See - https://www.openssl.org/docs/man1.0.2/ssl/SSL_CTX_set_options.html. + https://www.openssl.org/docs/man3.0/man3/SSL_CTX_set_options.html. SSL_OP_CISCO_ANYCONNECT From 0b9cf6fbeccf5c02a59b0908628d3e506ecd2485 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Jos=C3=A9?= Date: Sat, 4 Mar 2023 22:22:32 -0500 Subject: [PATCH 015/186] doc: add release key for Juan Arboleda PR-URL: https://github.com/nodejs/node/pull/46922 Refs: https://github.com/nodejs/Release/issues/829 Reviewed-By: Beth Griggs Reviewed-By: Rafael Gonzaga --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 29d5f982ceca26..73dc15bc66bc35 100644 --- a/README.md +++ b/README.md @@ -720,6 +720,8 @@ Primary GPG keys for Node.js Releasers (some Releasers sign with subkeys): `141F07595B7B3FFE74309A937405533BE57C7D57` * **Danielle Adams** <> `74F12602B6F1C4E913FAA37AD3A89613643B6201` +* **Juan José Arboleda** <> + `DD792F5973C6DE52C432CBDAC77ABFA00DDBF2B7` * **Michaël Zasso** <> `8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600` * **Myles Borins** <> @@ -738,6 +740,7 @@ to sign releases): gpg --keyserver hkps://keys.openpgp.org --recv-keys 4ED778F539E3634C779C87C6D7062848A1AB005C gpg --keyserver hkps://keys.openpgp.org --recv-keys 141F07595B7B3FFE74309A937405533BE57C7D57 gpg --keyserver hkps://keys.openpgp.org --recv-keys 74F12602B6F1C4E913FAA37AD3A89613643B6201 +gpg --keyserver hkps://keys.openpgp.org --recv-keys DD792F5973C6DE52C432CBDAC77ABFA00DDBF2B7 gpg --keyserver hkps://keys.openpgp.org --recv-keys 8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 gpg --keyserver hkps://keys.openpgp.org --recv-keys C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 gpg --keyserver hkps://keys.openpgp.org --recv-keys 890C08DB8579162FEE0DF9DB8BEAB4DFCF555EF4 From ca033c16fe0c2a62067f6188045c225424077fbd Mon Sep 17 00:00:00 2001 From: Moshe Atlow Date: Tue, 28 Feb 2023 21:58:49 +0200 Subject: [PATCH 016/186] test_runner: align behavior of it and test PR-URL: https://github.com/nodejs/node/pull/46889 Reviewed-By: Benjamin Gruenbaum Reviewed-By: Antoine du Hamel Reviewed-By: Colin Ihrig --- doc/api/test.md | 25 ++++++++-------- lib/internal/test_runner/harness.js | 4 +-- lib/internal/test_runner/test.js | 8 ------ test/es-module/test-esm-repl-imports.js | 2 +- test/message/test_runner_describe_it.js | 36 ++++++++++++------------ test/message/test_runner_describe_it.out | 6 ++-- 6 files changed, 37 insertions(+), 44 deletions(-) diff --git a/doc/api/test.md b/doc/api/test.md index 2584aaab8286e4..c53b7bccf0c007 100644 --- a/doc/api/test.md +++ b/doc/api/test.md @@ -156,8 +156,7 @@ test('skip() method with message', (t) => { Running tests can also be done using `describe` to declare a suite and `it` to declare a test. A suite is used to organize and group related tests together. -`it` is an alias for `test`, except there is no test context passed, -since nesting is done using suites. +`it` is a shorthand for [`test()`][]. ```js describe('A thing', () => { @@ -851,17 +850,19 @@ Shorthand for marking a suite as `only`, same as ## `it([name][, options][, fn])` -* `name` {string} The name of the test, which is displayed when reporting test - results. **Default:** The `name` property of `fn`, or `''` if `fn` - does not have a name. -* `options` {Object} Configuration options for the suite. - supports the same options as `test([name][, options][, fn])`. -* `fn` {Function|AsyncFunction} The function under test. - If the test uses callbacks, the callback function is passed as an argument. - **Default:** A no-op function. -* Returns: `undefined`. + + +Shorthand for [`test()`][]. -The `it()` function is the value imported from the `node:test` module. +The `it()` function is imported from the `node:test` module. ## `it.skip([name][, options][, fn])` diff --git a/lib/internal/test_runner/harness.js b/lib/internal/test_runner/harness.js index 6141d13b0a20f2..a5cec210df2f73 100644 --- a/lib/internal/test_runner/harness.js +++ b/lib/internal/test_runner/harness.js @@ -17,7 +17,7 @@ const { const { exitCodes: { kGenericUserError } } = internalBinding('errors'); const { kEmptyObject } = require('internal/util'); -const { kCancelledByParent, Test, ItTest, Suite } = require('internal/test_runner/test'); +const { kCancelledByParent, Test, Suite } = require('internal/test_runner/test'); const { kAsyncBootstrapFailure, parseCommandLine, @@ -221,7 +221,7 @@ module.exports = { createTestTree, test: runInParentContext(Test, false), describe: runInParentContext(Suite), - it: runInParentContext(ItTest), + it: runInParentContext(Test), before: hook('before'), after: hook('after'), beforeEach: hook('beforeEach'), diff --git a/lib/internal/test_runner/test.js b/lib/internal/test_runner/test.js index 866d7d1791e298..b165808686e0ad 100644 --- a/lib/internal/test_runner/test.js +++ b/lib/internal/test_runner/test.js @@ -745,13 +745,6 @@ class TestHook extends Test { } } -class ItTest extends Test { - constructor(opt) { super(opt); } // eslint-disable-line no-useless-constructor - getRunArgs() { - return { ctx: { signal: this.signal, name: this.name }, args: [] }; - } -} - class Suite extends Test { constructor(options) { super(options); @@ -824,7 +817,6 @@ class Suite extends Test { } module.exports = { - ItTest, kCancelledByParent, kSubtestsFailed, kTestCodeFailure, diff --git a/test/es-module/test-esm-repl-imports.js b/test/es-module/test-esm-repl-imports.js index a6224a54cee504..345985b682c6b0 100644 --- a/test/es-module/test-esm-repl-imports.js +++ b/test/es-module/test-esm-repl-imports.js @@ -9,7 +9,7 @@ const { describe, it } = require('node:test'); describe('ESM: REPL runs', { concurrency: true }, () => { - it((done) => { + it((t, done) => { const child = spawn(execPath, [ '--interactive', ], { diff --git a/test/message/test_runner_describe_it.js b/test/message/test_runner_describe_it.js index 7962f80fdd0c89..8d162c48a7305c 100644 --- a/test/message/test_runner_describe_it.js +++ b/test/message/test_runner_describe_it.js @@ -47,7 +47,7 @@ it('async throw fail', async () => { throw new Error('thrown from async throw fail'); }); -it('async skip fail', async (t) => { +it('async skip fail', async (t, done) => { t.skip(); throw new Error('thrown from async throw fail'); }); @@ -206,61 +206,61 @@ it('escaped skip message', { skip: '#skip' }); // A test whose todo message needs to be escaped. it('escaped todo message', { todo: '#todo' }); -it('callback pass', (done) => { +it('callback pass', (t, done) => { setImmediate(done); }); -it('callback fail', (done) => { +it('callback fail', (t, done) => { setImmediate(() => { done(new Error('callback failure')); }); }); -it('sync t is this in test', function() { - assert.deepStrictEqual(this, { signal: this.signal, name: this.name }); +it('sync t is this in test', function(t) { + assert.strictEqual(this, t); }); -it('async t is this in test', async function() { - assert.deepStrictEqual(this, { signal: this.signal, name: this.name }); +it('async t is this in test', async function(t) { + assert.strictEqual(this, t); }); -it('callback t is this in test', function(done) { - assert.deepStrictEqual(this, { signal: this.signal, name: this.name }); +it('callback t is this in test', function(t, done) { + assert.strictEqual(this, t); done(); }); -it('callback also returns a Promise', async (done) => { +it('callback also returns a Promise', async (t, done) => { throw new Error('thrown from callback also returns a Promise'); }); -it('callback throw', (done) => { +it('callback throw', (t, done) => { throw new Error('thrown from callback throw'); }); -it('callback called twice', (done) => { +it('callback called twice', (t, done) => { done(); done(); }); -it('callback called twice in different ticks', (done) => { +it('callback called twice in different ticks', (t, done) => { setImmediate(done); done(); }); -it('callback called twice in future tick', (done) => { +it('callback called twice in future tick', (t, done) => { setImmediate(() => { done(); done(); }); }); -it('callback async throw', (done) => { +it('callback async throw', (t, done) => { setImmediate(() => { throw new Error('thrown from callback async throw'); }); }); -it('callback async throw after done', (done) => { +it('callback async throw after done', (t, done) => { setImmediate(() => { throw new Error('thrown from callback async throw after done'); }); @@ -316,7 +316,7 @@ describe('timeouts', () => { }); }); - it('timed out callback test', { timeout: 5 }, (done) => { + it('timed out callback test', { timeout: 5 }, (t, done) => { setTimeout(done, 100); }); @@ -327,7 +327,7 @@ describe('timeouts', () => { }); }); - it('large timeout callback test is ok', { timeout: 30_000_000 }, (done) => { + it('large timeout callback test is ok', { timeout: 30_000_000 }, (t, done) => { setTimeout(done, 10); }); }); diff --git a/test/message/test_runner_describe_it.out b/test/message/test_runner_describe_it.out index 4502c89fdae086..41c4e275b5b614 100644 --- a/test/message/test_runner_describe_it.out +++ b/test/message/test_runner_describe_it.out @@ -104,7 +104,7 @@ not ok 12 - async throw fail * ... # Subtest: async skip fail -not ok 13 - async skip fail +not ok 13 - async skip fail # SKIP --- duration_ms: * failureType: 'callbackAndPromisePresent' @@ -645,8 +645,8 @@ not ok 60 - invalid subtest fail # Warning: Test "callback async throw after done" generated asynchronous activity after the test ended. This activity created the error "Error: thrown from callback async throw after done" and would have caused the test to fail, but instead triggered an uncaughtException event. # tests 60 # pass 23 -# fail 23 +# fail 22 # cancelled 0 -# skipped 9 +# skipped 10 # todo 5 # duration_ms * From 06c660b1c694ecb9b7112e29cd684abe6a145557 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Nie=C3=9Fen?= Date: Sun, 5 Mar 2023 11:45:01 +0100 Subject: [PATCH 017/186] test: simplify test-tls-ecdh-auto Avoid the process 'exit' event handler and use execFile instead of manual stream operations. Refs: https://github.com/nodejs/node/pull/46751 PR-URL: https://github.com/nodejs/node/pull/46911 Reviewed-By: Luigi Pinca Reviewed-By: Filip Skokan --- test/parallel/test-tls-ecdh-auto.js | 34 +++++++---------------------- 1 file changed, 8 insertions(+), 26 deletions(-) diff --git a/test/parallel/test-tls-ecdh-auto.js b/test/parallel/test-tls-ecdh-auto.js index 1ca5c22335c850..11c588d8ac8ce1 100644 --- a/test/parallel/test-tls-ecdh-auto.js +++ b/test/parallel/test-tls-ecdh-auto.js @@ -12,7 +12,7 @@ if (!common.opensslCli) const assert = require('assert'); const tls = require('tls'); -const spawn = require('child_process').spawn; +const { execFile } = require('child_process'); const fixtures = require('../common/fixtures'); function loadPEM(n) { @@ -29,33 +29,15 @@ const options = { const reply = 'I AM THE WALRUS'; // Something recognizable -const server = tls.createServer(options, function(conn) { +const server = tls.createServer(options, (conn) => { conn.end(reply); -}); - -let gotReply = false; - -server.listen(0, function() { +}).listen(0, common.mustCall(() => { const args = ['s_client', '-cipher', `${options.ciphers}`, - '-connect', `127.0.0.1:${this.address().port}`]; - - const client = spawn(common.opensslCli, args); + '-connect', `127.0.0.1:${server.address().port}`]; - client.stdout.on('data', function(data) { - const message = data.toString(); - if (message.includes(reply)) - gotReply = true; - }); - - client.on('exit', function(code) { - assert.strictEqual(code, 0); + execFile(common.opensslCli, args, common.mustSucceed((stdout) => { + assert(stdout.includes(reply)); server.close(); - }); - - client.on('error', assert.ifError); -}); - -process.on('exit', function() { - assert.ok(gotReply); -}); + })); +})); From 7e6bc93add1e5b8e9ede20354b098d6ebceeeaf4 Mon Sep 17 00:00:00 2001 From: "Node.js GitHub Bot" Date: Sun, 5 Mar 2023 12:39:29 +0100 Subject: [PATCH 018/186] tools: update lint-md-dependencies to rollup@3.18.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/46935 Reviewed-By: Moshe Atlow Reviewed-By: Antoine du Hamel Reviewed-By: Mohammed Keyvanzadeh Reviewed-By: Rich Trott Reviewed-By: Tobias Nießen --- tools/lint-md/package-lock.json | 17 ++++++++++------- tools/lint-md/package.json | 2 +- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/tools/lint-md/package-lock.json b/tools/lint-md/package-lock.json index 6fc7bf41c209d9..2c9e36cb286fdd 100644 --- a/tools/lint-md/package-lock.json +++ b/tools/lint-md/package-lock.json @@ -18,7 +18,7 @@ "devDependencies": { "@rollup/plugin-commonjs": "^24.0.1", "@rollup/plugin-node-resolve": "^15.0.1", - "rollup": "^3.17.3", + "rollup": "^3.18.0", "rollup-plugin-cleanup": "^3.2.1" } }, @@ -2232,9 +2232,9 @@ } }, "node_modules/rollup": { - "version": "3.17.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.17.3.tgz", - "integrity": "sha512-p5LaCXiiOL/wrOkj8djsIDFmyU9ysUxcyW+EKRLHb6TKldJzXpImjcRSR+vgo09DBdofGcOoLOsRyxxG2n5/qQ==", + "version": "3.18.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.18.0.tgz", + "integrity": "sha512-J8C6VfEBjkvYPESMQYxKHxNOh4A5a3FlP+0BETGo34HEcE4eTlgCrO2+eWzlu2a/sHs2QUkZco+wscH7jhhgWg==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -2486,9 +2486,12 @@ } }, "node_modules/unist-util-is": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.0.tgz", - "integrity": "sha512-Glt17jWwZeyqrFqOK0pF1Ded5U3yzJnFr8CG1GMjCWTp9zDo2p+cmD6pWbZU8AgM5WU3IzRv6+rBwhzsGh6hBQ==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", + "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", + "dependencies": { + "@types/unist": "^2.0.0" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" diff --git a/tools/lint-md/package.json b/tools/lint-md/package.json index 6db1fe585a1d80..500bca26a8bba7 100644 --- a/tools/lint-md/package.json +++ b/tools/lint-md/package.json @@ -16,7 +16,7 @@ "devDependencies": { "@rollup/plugin-commonjs": "^24.0.1", "@rollup/plugin-node-resolve": "^15.0.1", - "rollup": "^3.17.3", + "rollup": "^3.18.0", "rollup-plugin-cleanup": "^3.2.1" } } From c425a6f58e28c5c2fff09eededd4c77a7a62aca0 Mon Sep 17 00:00:00 2001 From: Deokjin Kim Date: Mon, 6 Mar 2023 09:29:17 +0900 Subject: [PATCH 019/186] doc: use number which is bigger than 1024 as port in http2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit With 80 port, user should run example with root permission. To avoid such situation, use 8000 or 8443 as port number in example of http2. PR-URL: https://github.com/nodejs/node/pull/46938 Reviewed-By: Matteo Collina Reviewed-By: Colin Ihrig Reviewed-By: Paolo Insogna Reviewed-By: Tobias Nießen Reviewed-By: Luigi Pinca Reviewed-By: Rafael Gonzaga --- doc/api/http2.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/api/http2.md b/doc/api/http2.md index 1b2d7c246367d2..61f2bd8ec8f1d9 100644 --- a/doc/api/http2.md +++ b/doc/api/http2.md @@ -354,7 +354,7 @@ server.on('stream', (stream, headers) => { stream.end('

Hello World

'); }); -server.listen(80); +server.listen(8000); ``` Even though HTTP/2 streams and network sockets are not in a 1:1 correspondence, @@ -2532,7 +2532,7 @@ server.on('stream', (stream, headers) => { stream.end('

Hello World

'); }); -server.listen(80); +server.listen(8000); ``` ### `http2.createSecureServer(options[, onRequestHandler])` @@ -2673,7 +2673,7 @@ server.on('stream', (stream, headers) => { stream.end('

Hello World

'); }); -server.listen(80); +server.listen(8443); ``` ### `http2.connect(authority[, options][, listener])` From 57909654a9dbe909663af18c26acab3b637bae43 Mon Sep 17 00:00:00 2001 From: Deokjin Kim Date: Mon, 6 Mar 2023 09:29:27 +0900 Subject: [PATCH 020/186] doc: fix port of destination server is not defined in http2 `port` variable is used, but it's not defined in client code. So need to specify destination server(not proxy)'s port(8000) in client code. Refs: https://github.com/nodejs/node/blob/main/doc/api/http2.md#supporting-the-connect-method PR-URL: https://github.com/nodejs/node/pull/46940 Reviewed-By: Luigi Pinca Reviewed-By: Rafael Gonzaga Reviewed-By: Marco Ippolito --- doc/api/http2.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/api/http2.md b/doc/api/http2.md index 61f2bd8ec8f1d9..5efcd5fdcbe421 100644 --- a/doc/api/http2.md +++ b/doc/api/http2.md @@ -3126,7 +3126,7 @@ const client = http2.connect('http://localhost:8001'); // for CONNECT requests or an error will be thrown. const req = client.request({ ':method': 'CONNECT', - ':authority': `localhost:${port}`, + ':authority': 'localhost:8000', }); req.on('response', (headers) => { From ab8942848b9967e6e0289ff7f1a8b12a349b7a28 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Tue, 28 Feb 2023 12:14:11 +0100 Subject: [PATCH 021/186] lib: enforce use of trailing commas PR-URL: https://github.com/nodejs/node/pull/46881 Reviewed-By: Debadree Chatterjee Reviewed-By: Moshe Atlow Reviewed-By: Mohammed Keyvanzadeh Reviewed-By: Trivikram Kamat Reviewed-By: Jacob Smith --- lib/.eslintrc.yaml | 34 ------------ lib/internal/assert/assertion_error.js | 10 ++-- lib/internal/assert/calltracker.js | 4 +- lib/internal/bootstrap/browser.js | 2 +- lib/internal/bootstrap/loaders.js | 6 +-- lib/internal/bootstrap/node.js | 22 ++++---- .../switches/does_not_own_process_state.js | 2 +- .../switches/does_own_process_state.js | 12 ++--- .../bootstrap/switches/is_main_thread.js | 16 +++--- .../bootstrap/switches/is_not_main_thread.js | 6 +-- lib/internal/console/constructor.js | 52 +++++++++---------- lib/internal/console/global.js | 2 +- lib/internal/crypto/cfrg.js | 4 +- lib/internal/crypto/cipher.js | 4 +- lib/internal/crypto/diffiehellman.js | 8 +-- lib/internal/crypto/ec.js | 6 +-- lib/internal/crypto/hash.js | 6 +-- lib/internal/crypto/hashnames.js | 2 +- lib/internal/crypto/keygen.js | 12 ++--- lib/internal/crypto/keys.js | 24 ++++----- lib/internal/crypto/random.js | 2 +- lib/internal/crypto/rsa.js | 10 ++-- lib/internal/crypto/scrypt.js | 2 +- lib/internal/crypto/sig.js | 8 +-- lib/internal/crypto/util.js | 8 +-- lib/internal/crypto/webcrypto.js | 4 +- lib/internal/crypto/x509.js | 6 +-- lib/internal/dns/callback_resolver.js | 6 +-- lib/internal/dns/promises.js | 12 ++--- lib/internal/dns/utils.js | 4 +- lib/internal/fs/cp/cp-sync.js | 4 +- lib/internal/fs/cp/cp.js | 4 +- lib/internal/http2/compat.js | 16 +++--- lib/internal/http2/core.js | 36 ++++++------- lib/internal/http2/util.js | 12 ++--- lib/internal/legacy/processbinding.js | 2 +- lib/internal/main/check_syntax.js | 4 +- lib/internal/main/eval_stdin.js | 4 +- lib/internal/main/eval_string.js | 2 +- lib/internal/main/inspect.js | 2 +- lib/internal/main/mksnapshot.js | 6 +-- lib/internal/main/print_help.js | 10 ++-- lib/internal/main/prof_process.js | 2 +- lib/internal/main/repl.js | 4 +- lib/internal/main/run_main_module.js | 2 +- lib/internal/main/test_runner.js | 2 +- lib/internal/main/watch_mode.js | 2 +- lib/internal/main/worker_thread.js | 16 +++--- lib/internal/modules/cjs/loader.js | 12 ++--- .../modules/esm/initialize_import_meta.js | 2 +- lib/internal/modules/esm/loader.js | 2 +- lib/internal/modules/esm/resolve.js | 2 +- lib/internal/modules/esm/translators.js | 6 +-- lib/internal/modules/esm/utils.js | 2 +- lib/internal/util/colors.js | 2 +- lib/internal/util/comparisons.js | 2 +- lib/internal/util/debuglog.js | 4 +- lib/internal/util/inspect.js | 18 +++---- lib/internal/util/inspector.js | 2 +- lib/internal/util/iterable_weak_map.js | 2 +- lib/internal/util/types.js | 6 +-- lib/internal/v8/startup_snapshot.js | 8 +-- lib/internal/vm/module.js | 2 +- lib/internal/worker/io.js | 24 ++++----- lib/internal/worker/js_transferable.js | 4 +- 65 files changed, 246 insertions(+), 280 deletions(-) diff --git a/lib/.eslintrc.yaml b/lib/.eslintrc.yaml index 6cdaed85b28fc5..a8716ed7e52b77 100644 --- a/lib/.eslintrc.yaml +++ b/lib/.eslintrc.yaml @@ -2,13 +2,6 @@ env: es6: true rules: - comma-dangle: [error, { - arrays: always-multiline, - exports: always-multiline, - functions: always-multiline, - imports: always-multiline, - objects: only-multiline, - }] prefer-object-spread: error no-buffer-constructor: error no-mixed-operators: @@ -261,30 +254,3 @@ globals: module: false internalBinding: false primordials: false -overrides: - - files: - - ./*/*.js - - ./*.js - - ./internal/child_process/*.js - - ./internal/cluster/*.js - - ./internal/debugger/*.js - - ./internal/events/*.js - - ./internal/fs/*.js - - ./internal/modules/*.js - - ./internal/per_context/*.js - - ./internal/perf/*.js - - ./internal/policy/*.js - - ./internal/process/*.js - - ./internal/readline/*.js - - ./internal/readme.md - - ./internal/repl/*.js - - ./internal/source_map/*.js - - ./internal/streams/*.js - - ./internal/test/*.js - - ./internal/test_runner/**/*.js - - ./internal/tls/*.js - - ./internal/util/parse_args/*.js - - ./internal/watch_mode/*.js - - ./internal/webstreams/*.js - rules: - comma-dangle: [error, always-multiline] diff --git a/lib/internal/assert/assertion_error.js b/lib/internal/assert/assertion_error.js index 851662fe4c5fa2..f12243790b0506 100644 --- a/lib/internal/assert/assertion_error.js +++ b/lib/internal/assert/assertion_error.js @@ -38,7 +38,7 @@ const kReadableOperator = { 'Expected "actual" not to be reference-equal to "expected":', notDeepEqual: 'Expected "actual" not to be loosely deep-equal to:', notIdentical: 'Values have same structure but are not reference-equal:', - notDeepEqualUnequal: 'Expected values not to be loosely deep-equal:' + notDeepEqualUnequal: 'Expected values not to be loosely deep-equal:', }; // Comparing short primitives should just show === / !== instead of using the @@ -330,11 +330,11 @@ class AssertionError extends Error { stackStartFn, details, // Compatibility with older versions. - stackStartFunction + stackStartFunction, } = options; let { actual, - expected + expected, } = options; const limit = Error.stackTraceLimit; @@ -429,7 +429,7 @@ class AssertionError extends Error { value: 'AssertionError [ERR_ASSERTION]', enumerable: false, writable: true, - configurable: true + configurable: true, }); this.code = 'ERR_ASSERTION'; if (details) { @@ -478,7 +478,7 @@ class AssertionError extends Error { const result = inspect(this, { ...ctx, customInspect: false, - depth: 0 + depth: 0, }); // Reset the properties after inspection. diff --git a/lib/internal/assert/calltracker.js b/lib/internal/assert/calltracker.js index 2046634932d13d..0e2275305321ef 100644 --- a/lib/internal/assert/calltracker.js +++ b/lib/internal/assert/calltracker.js @@ -63,7 +63,7 @@ class CallTrackerContext { actual: this.#calls.length, expected: this.#expected, operator: this.#name, - stack: this.#stackTrace + stack: this.#stackTrace, }; } } @@ -110,7 +110,7 @@ class CallTracker { expected, // eslint-disable-next-line no-restricted-syntax stackTrace: new Error(), - name: fn.name || 'calls' + name: fn.name || 'calls', }); const tracked = new Proxy(fn, { __proto__: null, diff --git a/lib/internal/bootstrap/browser.js b/lib/internal/bootstrap/browser.js index 16384dac72c46a..503b0208ca83d5 100644 --- a/lib/internal/bootstrap/browser.js +++ b/lib/internal/bootstrap/browser.js @@ -94,7 +94,7 @@ function exposeNamespace(target, name, namespaceObject) { writable: true, enumerable: false, configurable: true, - value: namespaceObject + value: namespaceObject, }); } diff --git a/lib/internal/bootstrap/loaders.js b/lib/internal/bootstrap/loaders.js index 90112dc70ece2d..50e8b8702de6f1 100644 --- a/lib/internal/bootstrap/loaders.js +++ b/lib/internal/bootstrap/loaders.js @@ -68,7 +68,7 @@ ObjectDefineProperty(process, 'moduleLoadList', { value: moduleLoadList, configurable: true, enumerable: true, - writable: false + writable: false, }); @@ -181,7 +181,7 @@ let internalBinding; const loaderId = 'internal/bootstrap/loaders'; const { builtinIds, - compileFunction + compileFunction, } = internalBinding('builtins'); const getOwn = (target, property, receiver) => { @@ -349,7 +349,7 @@ class BuiltinModule { const loaderExports = { internalBinding, BuiltinModule, - require: requireBuiltin + require: requireBuiltin, }; function requireBuiltin(id) { diff --git a/lib/internal/bootstrap/node.js b/lib/internal/bootstrap/node.js index 1c25ee5f910918..657bad0d3eb7ff 100644 --- a/lib/internal/bootstrap/node.js +++ b/lib/internal/bootstrap/node.js @@ -209,7 +209,7 @@ internalBinding('async_wrap').setupHooks(nativeHooks); const { setupTaskQueue, - queueMicrotask + queueMicrotask, } = require('internal/process/task_queues'); // Non-standard extensions: @@ -248,11 +248,11 @@ ObjectDefineProperty(process, 'allowedNodeEnvironmentFlags', { value, configurable: true, enumerable: true, - writable: true + writable: true, }); }, enumerable: true, - configurable: true + configurable: true, }); // process.assert @@ -277,7 +277,7 @@ const features = { // code cache even if the binary is built with embedded code cache. get cached_builtins() { return binding.hasCachedBuiltins(); - } + }, }; ObjectDefineProperty(process, 'features', { @@ -285,14 +285,14 @@ ObjectDefineProperty(process, 'features', { enumerable: true, writable: false, configurable: false, - value: features + value: features, }); { const { onGlobalUncaughtException, setUncaughtExceptionCaptureCallback, - hasUncaughtExceptionCaptureCallback + hasUncaughtExceptionCaptureCallback, } = require('internal/process/execution'); // For legacy reasons this is still called `_fatalException`, even @@ -339,14 +339,14 @@ process.emitWarning = emitWarning; function setupPrepareStackTrace() { const { setEnhanceStackForFatalException, - setPrepareStackTraceCallback + setPrepareStackTraceCallback, } = internalBinding('errors'); const { prepareStackTrace, fatalExceptionStackEnhancers: { beforeInspector, - afterInspector - } + afterInspector, + }, } = require('internal/errors'); // Tell our PrepareStackTraceCallback passed to the V8 API // to call prepareStackTrace(). @@ -365,7 +365,7 @@ function setupProcessObject() { enumerable: false, writable: true, configurable: false, - value: 'process' + value: 'process', }); // Create global.process as getters so that we have a @@ -391,7 +391,7 @@ function setupGlobalProxy() { value: 'global', writable: false, enumerable: false, - configurable: true + configurable: true, }); globalThis.global = globalThis; } diff --git a/lib/internal/bootstrap/switches/does_not_own_process_state.js b/lib/internal/bootstrap/switches/does_not_own_process_state.js index 69946e802e1115..21be25384ff673 100644 --- a/lib/internal/bootstrap/switches/does_not_own_process_state.js +++ b/lib/internal/bootstrap/switches/does_not_own_process_state.js @@ -23,7 +23,7 @@ if (credentials.implementsPosixCredentials) { // ---- compare the setups side-by-side ----- const { - codes: { ERR_WORKER_UNSUPPORTED_OPERATION } + codes: { ERR_WORKER_UNSUPPORTED_OPERATION }, } = require('internal/errors'); function wrappedUmask(mask) { diff --git a/lib/internal/bootstrap/switches/does_own_process_state.js b/lib/internal/bootstrap/switches/does_own_process_state.js index 0185a75e788fda..85b5c3dfcb09ed 100644 --- a/lib/internal/bootstrap/switches/does_own_process_state.js +++ b/lib/internal/bootstrap/switches/does_own_process_state.js @@ -25,18 +25,18 @@ if (credentials.implementsPosixCredentials) { const { parseFileMode, validateArray, - validateString + validateString, } = require('internal/validators'); function wrapPosixCredentialSetters(credentials) { const { codes: { ERR_INVALID_ARG_TYPE, - ERR_UNKNOWN_CREDENTIAL - } + ERR_UNKNOWN_CREDENTIAL, + }, } = require('internal/errors'); const { - validateUint32 + validateUint32, } = require('internal/validators'); const { @@ -45,7 +45,7 @@ function wrapPosixCredentialSetters(credentials) { setegid: _setegid, seteuid: _seteuid, setgid: _setgid, - setuid: _setuid + setuid: _setuid, } = credentials; function initgroups(user, extraGroup) { @@ -99,7 +99,7 @@ function wrapPosixCredentialSetters(credentials) { setegid: wrapIdSetter('Group', _setegid), seteuid: wrapIdSetter('User', _seteuid), setgid: wrapIdSetter('Group', _setgid), - setuid: wrapIdSetter('User', _setuid) + setuid: wrapIdSetter('User', _setuid), }; } diff --git a/lib/internal/bootstrap/switches/is_main_thread.js b/lib/internal/bootstrap/switches/is_main_thread.js index 9ba3da2c90e085..212a067e3a7058 100644 --- a/lib/internal/bootstrap/switches/is_main_thread.js +++ b/lib/internal/bootstrap/switches/is_main_thread.js @@ -5,7 +5,7 @@ const rawMethods = internalBinding('process_methods'); const { namespace: { addSerializeCallback, - isBuildingSnapshot + isBuildingSnapshot, }, } = require('internal/v8/startup_snapshot'); // TODO(joyeecheung): deprecate and remove these underscore methods @@ -23,7 +23,7 @@ function defineStream(name, getter) { __proto__: null, configurable: true, enumerable: true, - get: getter + get: getter, }); } @@ -34,7 +34,7 @@ defineStream('stderr', getStderr); // Worker threads don't receive signals. const { startListeningIfSignal, - stopListeningIfSignal + stopListeningIfSignal, } = require('internal/process/signal'); process.on('newListener', startListeningIfSignal); process.on('removeListener', stopListeningIfSignal); @@ -74,13 +74,13 @@ function createWritableStdioStream(fd) { stream = new net.Socket({ handle: process[kChannelHandle], readable: false, - writable: true + writable: true, }); } else { stream = new net.Socket({ fd, readable: false, - writable: true + writable: true, }); } @@ -95,7 +95,7 @@ function createWritableStdioStream(fd) { stream = new Writable({ write(buf, enc, cb) { cb(); - } + }, }); } } @@ -218,14 +218,14 @@ function getStdin() { handle: process.channel, readable: true, writable: false, - manualStart: true + manualStart: true, }); } else { stdin = new net.Socket({ fd: fd, readable: true, writable: false, - manualStart: true + manualStart: true, }); } // Make sure the stdin can't be `.end()`-ed diff --git a/lib/internal/bootstrap/switches/is_not_main_thread.js b/lib/internal/bootstrap/switches/is_not_main_thread.js index cb129189b200a3..c2cb0106f09ae0 100644 --- a/lib/internal/bootstrap/switches/is_not_main_thread.js +++ b/lib/internal/bootstrap/switches/is_not_main_thread.js @@ -10,7 +10,7 @@ function defineStream(name, getter) { __proto__: null, configurable: true, enumerable: true, - get: getter + get: getter, }); } @@ -21,7 +21,7 @@ defineStream('stderr', getStderr); // Worker threads don't receive signals. const { startListeningIfSignal, - stopListeningIfSignal + stopListeningIfSignal, } = require('internal/process/signal'); process.removeListener('newListener', startListeningIfSignal); process.removeListener('removeListener', stopListeningIfSignal); @@ -30,7 +30,7 @@ process.removeListener('removeListener', stopListeningIfSignal); // ---- compare the setups side-by-side ----- const { - createWorkerStdio + createWorkerStdio, } = require('internal/worker/io'); let workerStdio; diff --git a/lib/internal/console/constructor.js b/lib/internal/console/constructor.js index 1f0cc2d0a66ed9..fc91bc9b3851d3 100644 --- a/lib/internal/console/constructor.js +++ b/lib/internal/console/constructor.js @@ -56,7 +56,7 @@ const { previewEntries } = internalBinding('util'); const { Buffer: { isBuffer } } = require('buffer'); const { inspect, - formatWithOptions + formatWithOptions, } = require('internal/util/inspect'); const { isTypedArray, isSet, isMap, isSetIterator, isMapIterator, @@ -108,7 +108,7 @@ function Console(options /* or: stdout, stderr, ignoreErrors = true */) { options = { stdout: options, stderr: arguments[1], - ignoreErrors: arguments[2] + ignoreErrors: arguments[2], }; } @@ -155,7 +155,7 @@ function Console(options /* or: stdout, stderr, ignoreErrors = true */) { this[key] = FunctionPrototypeBind(this[key], this); ObjectDefineProperty(this[key], 'name', { __proto__: null, - value: key + value: key, }); }); @@ -166,7 +166,7 @@ function Console(options /* or: stdout, stderr, ignoreErrors = true */) { const consolePropAttributes = { writable: true, enumerable: false, - configurable: true + configurable: true, }; // Fixup global.console instanceof global.console.Console @@ -174,7 +174,7 @@ ObjectDefineProperty(Console, SymbolHasInstance, { __proto__: null, value(instance) { return instance[kIsConsole]; - } + }, }); const kColorInspectOptions = { colors: true }; @@ -190,7 +190,7 @@ ObjectDefineProperties(Console.prototype, { '_stdout': { __proto__: null, ...consolePropAttributes, value: stdout }, '_stderr': { __proto__: null, ...consolePropAttributes, value: stderr }, }); - } + }, }, [kBindStreamsLazy]: { __proto__: null, @@ -209,7 +209,7 @@ ObjectDefineProperties(Console.prototype, { if (!stdout) stdout = object.stdout; return stdout; }, - set(value) { stdout = value; } + set(value) { stdout = value; }, }, '_stderr': { __proto__: null, @@ -219,10 +219,10 @@ ObjectDefineProperties(Console.prototype, { if (!stderr) { stderr = object.stderr; } return stderr; }, - set(value) { stderr = value; } - } + set(value) { stderr = value; }, + }, }); - } + }, }, [kBindProperties]: { __proto__: null, @@ -232,17 +232,17 @@ ObjectDefineProperties(Console.prototype, { '_stdoutErrorHandler': { __proto__: null, ...consolePropAttributes, - value: createWriteErrorHandler(this, kUseStdout) + value: createWriteErrorHandler(this, kUseStdout), }, '_stderrErrorHandler': { ...consolePropAttributes, __proto__: null, - value: createWriteErrorHandler(this, kUseStderr) + value: createWriteErrorHandler(this, kUseStderr), }, '_ignoreErrors': { __proto__: null, ...consolePropAttributes, - value: Boolean(ignoreErrors) + value: Boolean(ignoreErrors), }, '_times': { __proto__: null, ...consolePropAttributes, value: new SafeMap() }, // Corresponds to https://console.spec.whatwg.org/#count-map @@ -253,17 +253,17 @@ ObjectDefineProperties(Console.prototype, { [kGroupIndentationWidth]: { __proto__: null, ...consolePropAttributes, - value: groupIndentation + value: groupIndentation, }, [SymbolToStringTag]: { __proto__: null, writable: false, enumerable: false, configurable: true, - value: 'console' - } + value: 'console', + }, }); - } + }, }, [kWriteToConsole]: { __proto__: null, @@ -306,7 +306,7 @@ ObjectDefineProperties(Console.prototype, { } finally { stream.removeListener('error', noop); } - } + }, }, [kGetInspectOptions]: { __proto__: null, @@ -328,7 +328,7 @@ ObjectDefineProperties(Console.prototype, { } return color ? kColorInspectOptions : kNoColorInspectOptions; - } + }, }, [kFormatForStdout]: { __proto__: null, @@ -337,7 +337,7 @@ ObjectDefineProperties(Console.prototype, { const opts = this[kGetInspectOptions](this._stdout); ArrayPrototypeUnshift(args, opts); return ReflectApply(formatWithOptions, null, args); - } + }, }, [kFormatForStderr]: { __proto__: null, @@ -346,7 +346,7 @@ ObjectDefineProperties(Console.prototype, { const opts = this[kGetInspectOptions](this._stderr); ArrayPrototypeUnshift(args, opts); return ReflectApply(formatWithOptions, null, args); - } + }, }, }); @@ -386,7 +386,7 @@ const consoleMethods = { this[kWriteToConsole](kUseStdout, inspect(object, { customInspect: false, ...this[kGetInspectOptions](this._stdout), - ...options + ...options, })); }, @@ -421,7 +421,7 @@ const consoleMethods = { trace: function trace(...args) { const err = { name: 'Trace', - message: this[kFormatForStderr](args) + message: this[kFormatForStderr](args), }; ErrorCaptureStackTrace(err, trace); this.error(err.stack); @@ -514,7 +514,7 @@ const consoleMethods = { depth, maxArrayLength: 3, breakLength: Infinity, - ...this[kGetInspectOptions](this._stdout) + ...this[kGetInspectOptions](this._stdout), }; return inspect(v, opt); }; @@ -692,7 +692,7 @@ function initializeGlobalConsole(globalConsole) { namespace: { addSerializeCallback, isBuildingSnapshot, - } + }, } = require('internal/v8/startup_snapshot'); if (!internalBinding('config').hasInspector || !isBuildingSnapshot()) { @@ -722,5 +722,5 @@ module.exports = { kBindStreamsLazy, kBindProperties, initializeGlobalConsole, - formatTime // exported for tests + formatTime, // exported for tests }; diff --git a/lib/internal/console/global.js b/lib/internal/console/global.js index 10952859a0ebf2..33654d8dbc6740 100644 --- a/lib/internal/console/global.js +++ b/lib/internal/console/global.js @@ -20,7 +20,7 @@ const { } = primordials; const { - Console + Console, } = require('internal/console/constructor'); const globalConsole = { __proto__: {} }; diff --git a/lib/internal/crypto/cfrg.js b/lib/internal/crypto/cfrg.js index bf21ea1be1c4ed..51405a6b1596c2 100644 --- a/lib/internal/crypto/cfrg.js +++ b/lib/internal/crypto/cfrg.js @@ -212,7 +212,7 @@ async function cfrgImportKey( keyObject = createPublicKey({ key: keyData, format: 'der', - type: 'spki' + type: 'spki', }); } catch (err) { throw lazyDOMException( @@ -226,7 +226,7 @@ async function cfrgImportKey( keyObject = createPrivateKey({ key: keyData, format: 'der', - type: 'pkcs8' + type: 'pkcs8', }); } catch (err) { throw lazyDOMException( diff --git a/lib/internal/crypto/cipher.js b/lib/internal/crypto/cipher.js index fe2cc0f5258d7d..69be334b7e9748 100644 --- a/lib/internal/crypto/cipher.js +++ b/lib/internal/crypto/cipher.js @@ -19,7 +19,7 @@ const { crypto: { RSA_PKCS1_OAEP_PADDING, RSA_PKCS1_PADDING, - } + }, } = internalBinding('constants'); const { @@ -28,7 +28,7 @@ const { ERR_INVALID_ARG_TYPE, ERR_INVALID_ARG_VALUE, ERR_UNKNOWN_ENCODING, - } + }, } = require('internal/errors'); const { diff --git a/lib/internal/crypto/diffiehellman.js b/lib/internal/crypto/diffiehellman.js index 9fea7e1007b3a6..3f52e78d7a3036 100644 --- a/lib/internal/crypto/diffiehellman.js +++ b/lib/internal/crypto/diffiehellman.js @@ -27,7 +27,7 @@ const { ERR_CRYPTO_INVALID_KEY_OBJECT_TYPE, ERR_INVALID_ARG_TYPE, ERR_INVALID_ARG_VALUE, - } + }, } = require('internal/errors'); const { @@ -63,7 +63,7 @@ const { POINT_CONVERSION_COMPRESSED, POINT_CONVERSION_HYBRID, POINT_CONVERSION_UNCOMPRESSED, - } + }, } = internalBinding('constants'); const DH_GENERATOR = 2; @@ -124,7 +124,7 @@ function DiffieHellman(sizeOrKey, keyEncoding, generator, genEncoding) { __proto__: null, enumerable: true, value: this[kHandle].verifyError, - writable: false + writable: false, }); } @@ -137,7 +137,7 @@ function DiffieHellmanGroup(name) { __proto__: null, enumerable: true, value: this[kHandle].verifyError, - writable: false + writable: false, }); } diff --git a/lib/internal/crypto/ec.js b/lib/internal/crypto/ec.js index 8cc8ff592a7977..710917af2e2783 100644 --- a/lib/internal/crypto/ec.js +++ b/lib/internal/crypto/ec.js @@ -173,7 +173,7 @@ async function ecImportKey( keyObject = createPublicKey({ key: keyData, format: 'der', - type: 'spki' + type: 'spki', }); } catch (err) { throw lazyDOMException( @@ -187,7 +187,7 @@ async function ecImportKey( keyObject = createPrivateKey({ key: keyData, format: 'der', - type: 'pkcs8' + type: 'pkcs8', }); } catch (err) { throw lazyDOMException( @@ -265,7 +265,7 @@ async function ecImportKey( } const { - namedCurve: checkNamedCurve + namedCurve: checkNamedCurve, } = keyObject[kHandle].keyDetail({}); if (kNamedCurveAliases[namedCurve] !== checkNamedCurve) throw lazyDOMException('Named curve mismatch', 'DataError'); diff --git a/lib/internal/crypto/hash.js b/lib/internal/crypto/hash.js index 66300c142e511c..c8e9af003086c8 100644 --- a/lib/internal/crypto/hash.js +++ b/lib/internal/crypto/hash.js @@ -39,7 +39,7 @@ const { ERR_CRYPTO_HASH_FINALIZED, ERR_CRYPTO_HASH_UPDATE_FAILED, ERR_INVALID_ARG_TYPE, - } + }, } = require('internal/errors'); const { @@ -68,7 +68,7 @@ function Hash(algorithm, options) { validateUint32(xofLen, 'options.outputLength'); this[kHandle] = new _Hash(algorithm, xofLen); this[kState] = { - [kFinalized]: false + [kFinalized]: false, }; ReflectApply(LazyTransform, this, [options]); } @@ -135,7 +135,7 @@ function Hmac(hmac, key, options) { this[kHandle] = new _Hmac(); this[kHandle].init(hmac, key); this[kState] = { - [kFinalized]: false + [kFinalized]: false, }; ReflectApply(LazyTransform, this, [options]); } diff --git a/lib/internal/crypto/hashnames.js b/lib/internal/crypto/hashnames.js index 5c0051e0a8f563..54cd87b6ba30a4 100644 --- a/lib/internal/crypto/hashnames.js +++ b/lib/internal/crypto/hashnames.js @@ -49,7 +49,7 @@ const kHashNames = { [kHashContextJwkRsaPss]: 'PS512', [kHashContextJwkRsaOaep]: 'RSA-OAEP-512', [kHashContextJwkHmac]: 'HS512', - } + }, }; { diff --git a/lib/internal/crypto/keygen.js b/lib/internal/crypto/keygen.js index cbb4177fc8c013..3814734ecf979a 100644 --- a/lib/internal/crypto/keygen.js +++ b/lib/internal/crypto/keygen.js @@ -58,7 +58,7 @@ const { ERR_INCOMPATIBLE_OPTION_PAIR, ERR_INVALID_ARG_VALUE, ERR_MISSING_OPTION, - } + }, } = require('internal/errors'); const { isArrayBufferView } = require('internal/util/types'); @@ -99,7 +99,7 @@ function generateKeyPair(type, options, callback) { ObjectDefineProperty(generateKeyPair, customPromisifyArgs, { __proto__: null, value: ['publicKey', 'privateKey'], - enumerable: false + enumerable: false, }); function generateKeyPairSync(type, options) { @@ -119,7 +119,7 @@ function handleError(ret) { // If no encoding was chosen, return key objects instead. return { publicKey: wrapKey(publicKey, PublicKeyObject), - privateKey: wrapKey(privateKey, PrivateKeyObject) + privateKey: wrapKey(privateKey, PrivateKeyObject), }; } @@ -132,7 +132,7 @@ function parseKeyEncoding(keyType, options = kEmptyObject) { } else if (typeof publicKeyEncoding === 'object') { ({ format: publicFormat, - type: publicType + type: publicType, } = parsePublicKeyEncoding(publicKeyEncoding, keyType, 'publicKeyEncoding')); } else { @@ -148,7 +148,7 @@ function parseKeyEncoding(keyType, options = kEmptyObject) { format: privateFormat, type: privateType, cipher, - passphrase + passphrase, } = parsePrivateKeyEncoding(privateKeyEncoding, keyType, 'privateKeyEncoding')); } else { @@ -199,7 +199,7 @@ function createJob(mode, type, options) { } const { - hash, mgf1Hash, hashAlgorithm, mgf1HashAlgorithm, saltLength + hash, mgf1Hash, hashAlgorithm, mgf1HashAlgorithm, saltLength, } = options; if (saltLength !== undefined) diff --git a/lib/internal/crypto/keys.js b/lib/internal/crypto/keys.js index b48dd306738a39..4b06810a8729c4 100644 --- a/lib/internal/crypto/keys.js +++ b/lib/internal/crypto/keys.js @@ -41,7 +41,7 @@ const { ERR_INVALID_ARG_TYPE, ERR_INVALID_ARG_VALUE, ERR_INVALID_THIS, - } + }, } = require('internal/errors'); const { @@ -115,7 +115,7 @@ const { value: handle, enumerable: false, configurable: false, - writable: false + writable: false, }); } @@ -178,7 +178,7 @@ const { return { ...details, publicExponent: - bigIntArrayToUnsignedBigInt(new Uint8Array(details.publicExponent)) + bigIntArrayToUnsignedBigInt(new Uint8Array(details.publicExponent)), }; } return details; @@ -222,7 +222,7 @@ const { } const { format, - type + type, } = parsePublicKeyEncoding(options, this.asymmetricKeyType); return this[kHandle].export(format, type); } @@ -245,7 +245,7 @@ const { format, type, cipher, - passphrase + passphrase, } = parsePrivateKeyEncoding(options, this.asymmetricKeyType); return this[kHandle].export(format, type, cipher, passphrase); } @@ -327,7 +327,7 @@ function parseKeyEncoding(enc, keyType, isPublic, objName) { const { format, - type + type, } = parseKeyFormatAndType(enc, keyType, isPublic, objName); let cipher, passphrase, encoding; @@ -477,7 +477,7 @@ function getKeyObjectHandleFromJwk(key, ctx) { kty: key.kty, crv: key.crv, x: key.x, - y: key.y + y: key.y, }; if (!isPublic) { @@ -500,7 +500,7 @@ function getKeyObjectHandleFromJwk(key, ctx) { const jwk = { kty: key.kty, n: key.n, - e: key.e + e: key.e, }; if (!isPublic) { @@ -561,7 +561,7 @@ function prepareAsymmetricKey(key, ctx) { (ctx === kConsumePrivate || ctx === kCreatePrivate) ? false : undefined; return { data: getArrayBufferOrView(data, 'key', encoding), - ...parseKeyEncoding(key, undefined, isPublic) + ...parseKeyEncoding(key, undefined, isPublic), }; } throw new ERR_INVALID_ARG_TYPE( @@ -655,14 +655,14 @@ class CryptoKey { const opts = { ...options, - depth: options.depth == null ? null : options.depth - 1 + depth: options.depth == null ? null : options.depth - 1, }; return `CryptoKey ${inspect({ type: this.type, extractable: this.extractable, algorithm: this.algorithm, - usages: this.usages + usages: this.usages, }, opts)}`; } @@ -739,7 +739,7 @@ class InternalCryptoKey { usages, extractable, }, - deserializeInfo: 'internal/crypto/keys:InternalCryptoKey' + deserializeInfo: 'internal/crypto/keys:InternalCryptoKey', }; } diff --git a/lib/internal/crypto/random.js b/lib/internal/crypto/random.js index 13285c32a20405..af2b6729ed846b 100644 --- a/lib/internal/crypto/random.js +++ b/lib/internal/crypto/random.js @@ -42,7 +42,7 @@ const { ERR_INVALID_ARG_TYPE, ERR_OUT_OF_RANGE, ERR_OPERATION_FAILED, - } + }, } = require('internal/errors'); const { diff --git a/lib/internal/crypto/rsa.js b/lib/internal/crypto/rsa.js index b1d5748d0838a8..1283aea87202c3 100644 --- a/lib/internal/crypto/rsa.js +++ b/lib/internal/crypto/rsa.js @@ -113,7 +113,7 @@ async function rsaKeyGenerate( name, modulusLength, publicExponent, - hash + hash, } = algorithm; const usageSet = new SafeSet(keyUsages); @@ -155,7 +155,7 @@ async function rsaKeyGenerate( name, modulusLength, publicExponent, - hash: { name: hash.name } + hash: { name: hash.name }, }; let publicUsages; @@ -213,7 +213,7 @@ async function rsaImportKey( keyObject = createPublicKey({ key: keyData, format: 'der', - type: 'spki' + type: 'spki', }); } catch (err) { throw lazyDOMException( @@ -227,7 +227,7 @@ async function rsaImportKey( keyObject = createPrivateKey({ key: keyData, format: 'der', - type: 'pkcs8' + type: 'pkcs8', }); } catch (err) { throw lazyDOMException( @@ -302,7 +302,7 @@ async function rsaImportKey( name: algorithm.name, modulusLength, publicExponent: new Uint8Array(publicExponent), - hash: algorithm.hash + hash: algorithm.hash, }, keyUsages, extractable); } diff --git a/lib/internal/crypto/scrypt.js b/lib/internal/crypto/scrypt.js index 3e6565b85d36f0..b794322c272840 100644 --- a/lib/internal/crypto/scrypt.js +++ b/lib/internal/crypto/scrypt.js @@ -23,7 +23,7 @@ const { codes: { ERR_CRYPTO_SCRYPT_INVALID_PARAMETER, ERR_CRYPTO_SCRYPT_NOT_SUPPORTED, - } + }, } = require('internal/errors'); const { diff --git a/lib/internal/crypto/sig.js b/lib/internal/crypto/sig.js index 457ed1d22eacb6..71e8fbadaa84d7 100644 --- a/lib/internal/crypto/sig.js +++ b/lib/internal/crypto/sig.js @@ -11,7 +11,7 @@ const { ERR_CRYPTO_SIGN_KEY_REQUIRED, ERR_INVALID_ARG_TYPE, ERR_INVALID_ARG_VALUE, - } + }, } = require('internal/errors'); const { @@ -161,7 +161,7 @@ function signOneShot(algorithm, data, key, callback) { data: keyData, format: keyFormat, type: keyType, - passphrase: keyPassphrase + passphrase: keyPassphrase, } = preparePrivateKey(key); const job = new SignJob( @@ -213,7 +213,7 @@ Verify.prototype.verify = function verify(options, signature, sigEncoding) { data, format, type, - passphrase + passphrase, } = preparePublicOrPrivateKey(options, true); sigEncoding = sigEncoding || getDefaultEncoding(); @@ -267,7 +267,7 @@ function verifyOneShot(algorithm, data, key, signature, callback) { data: keyData, format: keyFormat, type: keyType, - passphrase: keyPassphrase + passphrase: keyPassphrase, } = preparePublicOrPrivateKey(key); const job = new SignJob( diff --git a/lib/internal/crypto/util.js b/lib/internal/crypto/util.js index ab4fe6d6e8a8f8..835ab26165683c 100644 --- a/lib/internal/crypto/util.js +++ b/lib/internal/crypto/util.js @@ -35,8 +35,8 @@ const { getOptionValue } = require('internal/options'); const { crypto: { - ENGINE_METHOD_ALL - } + ENGINE_METHOD_ALL, + }, } = internalBinding('constants'); const normalizeHashName = require('internal/crypto/hashnames'); @@ -48,13 +48,13 @@ const { ERR_INVALID_ARG_TYPE, ERR_INVALID_ARG_VALUE, ERR_OUT_OF_RANGE, - } + }, } = require('internal/errors'); const { validateArray, validateNumber, - validateString + validateString, } = require('internal/validators'); const { Buffer } = require('buffer'); diff --git a/lib/internal/crypto/webcrypto.js b/lib/internal/crypto/webcrypto.js index 7cda5b8028780c..4a29913d9dd8ba 100644 --- a/lib/internal/crypto/webcrypto.js +++ b/lib/internal/crypto/webcrypto.js @@ -31,7 +31,7 @@ const { codes: { ERR_ILLEGAL_CONSTRUCTOR, ERR_INVALID_THIS, - } + }, } = require('internal/errors'); const { @@ -1115,7 +1115,7 @@ ObjectDefineProperties( configurable: true, writable: true, value: unwrapKey, - } + }, }); module.exports = { diff --git a/lib/internal/crypto/x509.js b/lib/internal/crypto/x509.js index d08893d959f73a..0e9d4e87506329 100644 --- a/lib/internal/crypto/x509.js +++ b/lib/internal/crypto/x509.js @@ -44,7 +44,7 @@ const { codes: { ERR_INVALID_ARG_TYPE, ERR_INVALID_ARG_VALUE, - } + }, } = require('internal/errors'); const { @@ -125,7 +125,7 @@ class X509Certificate extends JSTransferable { const opts = { ...options, - depth: options.depth == null ? null : options.depth - 1 + depth: options.depth == null ? null : options.depth - 1, }; return `X509Certificate ${inspect({ @@ -147,7 +147,7 @@ class X509Certificate extends JSTransferable { const handle = this[kHandle]; return { data: { handle }, - deserializeInfo: 'internal/crypto/x509:InternalX509Certificate' + deserializeInfo: 'internal/crypto/x509:InternalX509Certificate', }; } diff --git a/lib/internal/dns/callback_resolver.js b/lib/internal/dns/callback_resolver.js index 221cc9a76c70b3..48e8f7df856c26 100644 --- a/lib/internal/dns/callback_resolver.js +++ b/lib/internal/dns/callback_resolver.js @@ -4,7 +4,7 @@ const { ObjectDefineProperty, ReflectApply, ArrayPrototypeMap, - Symbol + Symbol, } = primordials; const { toASCII } = require('internal/idna'); @@ -14,7 +14,7 @@ const { ERR_INVALID_ARG_TYPE, ERR_INVALID_ARG_VALUE, }, - dnsException + dnsException, } = require('internal/errors'); const { @@ -112,5 +112,5 @@ function resolve(hostname, rrtype, callback) { } module.exports = { - Resolver + Resolver, }; diff --git a/lib/internal/dns/promises.js b/lib/internal/dns/promises.js index 78777752c999e2..494c7ecb242c7b 100644 --- a/lib/internal/dns/promises.js +++ b/lib/internal/dns/promises.js @@ -52,7 +52,7 @@ const { getnameinfo, GetAddrInfoReqWrap, GetNameInfoReqWrap, - QueryReqWrap + QueryReqWrap, } = internalBinding('cares_wrap'); const { ERR_INVALID_ARG_TYPE, @@ -103,7 +103,7 @@ function onlookupall(err, addresses) { addresses[i] = { address, - family: family || isIP(addresses[i]) + family: family || isIP(addresses[i]), }; } @@ -226,8 +226,8 @@ function createLookupServicePromise(hostname, port) { name: 'lookupService', detail: { host: hostname, - port - } + port, + }, }); } }); @@ -283,8 +283,8 @@ function createResolverPromise(resolver, bindingName, hostname, ttl) { name: bindingName, detail: { host: hostname, - ttl - } + ttl, + }, }); } }); diff --git a/lib/internal/dns/utils.js b/lib/internal/dns/utils.js index a258a41e4209ab..71545799a98bdb 100644 --- a/lib/internal/dns/utils.js +++ b/lib/internal/dns/utils.js @@ -305,7 +305,7 @@ function createResolverClass(resolver) { return { resolveMap, - Resolver + Resolver, }; } @@ -349,5 +349,5 @@ module.exports = { setDefaultResultOrder, errorCodes, createResolverClass, - initializeDns + initializeDns, }; diff --git a/lib/internal/fs/cp/cp-sync.js b/lib/internal/fs/cp/cp-sync.js index 88920bafe75f1c..cfd54a4ff0e23f 100644 --- a/lib/internal/fs/cp/cp-sync.js +++ b/lib/internal/fs/cp/cp-sync.js @@ -11,8 +11,8 @@ const { EISDIR, EINVAL, ENOTDIR, - } - } + }, + }, } = internalBinding('constants'); const { ERR_FS_CP_DIR_TO_NON_DIR, diff --git a/lib/internal/fs/cp/cp.js b/lib/internal/fs/cp/cp.js index 565c80e05f3381..cba405223a4fc7 100644 --- a/lib/internal/fs/cp/cp.js +++ b/lib/internal/fs/cp/cp.js @@ -31,8 +31,8 @@ const { EISDIR, EINVAL, ENOTDIR, - } - } + }, + }, } = internalBinding('constants'); const { chmod, diff --git a/lib/internal/http2/compat.js b/lib/internal/http2/compat.js index 2ff8f3e0836b7a..2ab9c70ccd7402 100644 --- a/lib/internal/http2/compat.js +++ b/lib/internal/http2/compat.js @@ -34,8 +34,8 @@ const { HTTP_STATUS_EARLY_HINTS, HTTP_STATUS_EXPECTATION_FAILED, HTTP_STATUS_METHOD_NOT_ALLOWED, - HTTP_STATUS_OK - } + HTTP_STATUS_OK, + }, } = internalBinding('http2'); const { codes: { @@ -48,9 +48,9 @@ const { ERR_HTTP2_STATUS_INVALID, ERR_INVALID_ARG_VALUE, ERR_INVALID_HTTP_TOKEN, - ERR_STREAM_WRITE_AFTER_END + ERR_STREAM_WRITE_AFTER_END, }, - hideStackFrames + hideStackFrames, } = require('internal/errors'); const { validateFunction, @@ -63,7 +63,7 @@ const { kRequest, kProxySocket, assertValidPseudoHeader, - getAuthority + getAuthority, } = require('internal/http2/util'); const { _checkIsHttpToken: checkIsHttpToken } = require('_http_common'); @@ -283,7 +283,7 @@ const proxySocketHandler = { return true; } } - } + }, }; function onStreamCloseRequest() { @@ -831,7 +831,7 @@ class Http2ServerResponse extends Stream { const options = { endStream: state.ending, waitForTrailers: true, - sendDate: state.sendDate + sendDate: state.sendDate, }; this[kStream].respond(headers, options); } @@ -842,7 +842,7 @@ class Http2ServerResponse extends Stream { if (stream.headersSent || this[kState].closed) return false; stream.additionalHeaders({ - [HTTP2_HEADER_STATUS]: HTTP_STATUS_CONTINUE + [HTTP2_HEADER_STATUS]: HTTP_STATUS_CONTINUE, }); return true; } diff --git a/lib/internal/http2/core.js b/lib/internal/http2/core.js index 4fb27d9a52aa3b..352c915137d7f0 100644 --- a/lib/internal/http2/core.js +++ b/lib/internal/http2/core.js @@ -55,7 +55,7 @@ const { setImmediate, setTimeout, clearTimeout } = require('timers'); const { kIncomingMessage, - _checkIsHttpToken: checkIsHttpToken + _checkIsHttpToken: checkIsHttpToken, } = require('_http_common'); const { kServerResponse } = require('_http_server'); const JSStreamSocket = require('internal/js_stream_socket'); @@ -113,10 +113,10 @@ const { ERR_INVALID_CHAR, ERR_INVALID_HTTP_TOKEN, ERR_OUT_OF_RANGE, - ERR_SOCKET_CLOSED + ERR_SOCKET_CLOSED, }, hideStackFrames, - AbortError + AbortError, } = require('internal/errors'); const { isUint32, @@ -159,7 +159,7 @@ const { sessionName, toHeaderObject, updateOptionsBuffer, - updateSettingsBuffer + updateSettingsBuffer, } = require('internal/http2/util'); const { writeGeneric, @@ -170,7 +170,7 @@ const { kUpdateTimer, kHandle, kSession, - setStreamTimeout + setStreamTimeout, } = require('internal/stream_base_commons'); const { kTimeout } = require('internal/timers'); const { isArrayBufferView } = require('internal/util/types'); @@ -181,7 +181,7 @@ const binding = internalBinding('http2'); const { ShutdownWrap, kReadBytesOrError, - streamBaseState + streamBaseState, } = internalBinding('stream_wrap'); const { UV_EOF } = internalBinding('uv'); @@ -310,7 +310,7 @@ const { HTTP_STATUS_MISDIRECTED_REQUEST, STREAM_OPTION_EMPTY_PAYLOAD, - STREAM_OPTION_GET_TRAILERS + STREAM_OPTION_GET_TRAILERS, } = constants; const STREAM_FLAGS_PENDING = 0x0; @@ -914,7 +914,7 @@ const proxySocketHandler = { return true; } } - } + }, }; // pingCallback() returns a function that is invoked when an HTTP2 PING @@ -1001,7 +1001,7 @@ function trackAssignmentsTypedArray(typedArray) { modifiedEntries[prop] = 1; } return ReflectSet(obj, prop, value); - } + }, }); } @@ -1233,7 +1233,7 @@ class Http2Session extends EventEmitter { pendingAck: 0, shutdownWritableCalled: false, writeQueueSize: 0, - originSet: undefined + originSet: undefined, }; this[kEncrypted] = undefined; @@ -1405,7 +1405,7 @@ class Http2Session extends EventEmitter { destroyed: this.destroyed, state: this.state, localSettings: this.localSettings, - remoteSettings: this.remoteSettings + remoteSettings: this.remoteSettings, }; return `Http2Session ${format(obj)}`; } @@ -1979,7 +1979,7 @@ class Http2Stream extends Duplex { rstCode: NGHTTP2_NO_ERROR, writeQueueSize: 0, trailersReady: false, - endAfterHeaders: false + endAfterHeaders: false, }; // Fields used by the compat API to avoid megamorphisms. @@ -2028,7 +2028,7 @@ class Http2Stream extends Duplex { destroyed: this.destroyed, state: this.state, readableState: this._readableState, - writableState: this._writableState + writableState: this._writableState, }; return `Http2Stream ${format(obj)}`; } @@ -2537,7 +2537,7 @@ function doSendFD(session, options, fd, headers, streamOptions, err, stat) { const statOptions = { offset: options.offset !== undefined ? options.offset : 0, - length: options.length !== undefined ? options.length : -1 + length: options.length !== undefined ? options.length : -1, }; // options.statCheck is a user-provided function that can be used to @@ -2597,7 +2597,7 @@ function doSendFileFD(session, options, fd, headers, streamOptions, err, stat) { const statOptions = { offset: options.offset !== undefined ? options.offset : 0, - length: options.length !== undefined ? options.length : -1 + length: options.length !== undefined ? options.length : -1, }; // options.statCheck is a user-provided function that can be used to @@ -2976,7 +2976,7 @@ const setTimeoutValue = { configurable: true, enumerable: true, writable: true, - value: setStreamTimeout + value: setStreamTimeout, }; ObjectDefineProperty(Http2Stream.prototype, 'setTimeout', setTimeoutValue); ObjectDefineProperty(Http2Session.prototype, 'setTimeout', setTimeoutValue); @@ -3313,7 +3313,7 @@ ObjectDefineProperty(connect, promisify.custom, { return new Promise((resolve) => { const server = connect(authority, options, () => resolve(server)); }); - } + }, }); function createSecureServer(options, handler) { @@ -3410,7 +3410,7 @@ module.exports = { Http2Stream, ServerHttp2Session, Http2ServerRequest, - Http2ServerResponse + Http2ServerResponse, }; /* eslint-enable no-use-before-define */ diff --git a/lib/internal/http2/util.js b/lib/internal/http2/util.js index 850c8f74019048..6d4a7f94b3d11a 100644 --- a/lib/internal/http2/util.js +++ b/lib/internal/http2/util.js @@ -26,7 +26,7 @@ const { ERR_HTTP2_INVALID_PSEUDOHEADER, ERR_HTTP2_INVALID_SETTING_VALUE, ERR_INVALID_ARG_TYPE, - ERR_INVALID_HTTP_TOKEN + ERR_INVALID_HTTP_TOKEN, }, captureLargerStackTrace, getMessage, @@ -98,7 +98,7 @@ const { HTTP2_METHOD_DELETE, HTTP2_METHOD_GET, - HTTP2_METHOD_HEAD + HTTP2_METHOD_HEAD, } = binding.constants; // This set is defined strictly by the HTTP/2 specification. Only @@ -344,7 +344,7 @@ function getSettings(session, remote) { maxHeaderListSize: settingsBuffer[IDX_SETTINGS_MAX_HEADER_LIST_SIZE], maxHeaderSize: settingsBuffer[IDX_SETTINGS_MAX_HEADER_LIST_SIZE], enableConnectProtocol: - !!settingsBuffer[IDX_SETTINGS_ENABLE_CONNECT_PROTOCOL] + !!settingsBuffer[IDX_SETTINGS_ENABLE_CONNECT_PROTOCOL], }; } @@ -418,7 +418,7 @@ function getSessionState(session) { deflateDynamicTableSize: sessionState[IDX_SESSION_STATE_HD_DEFLATE_DYNAMIC_TABLE_SIZE], inflateDynamicTableSize: - sessionState[IDX_SESSION_STATE_HD_INFLATE_DYNAMIC_TABLE_SIZE] + sessionState[IDX_SESSION_STATE_HD_INFLATE_DYNAMIC_TABLE_SIZE], }; } @@ -430,7 +430,7 @@ function getStreamState(stream) { sumDependencyWeight: streamState[IDX_STREAM_STATE_SUM_DEPENDENCY_WEIGHT], localClose: streamState[IDX_STREAM_STATE_LOCAL_CLOSE], remoteClose: streamState[IDX_STREAM_STATE_REMOTE_CLOSE], - localWindowSize: streamState[IDX_STREAM_STATE_LOCAL_WINDOW_SIZE] + localWindowSize: streamState[IDX_STREAM_STATE_LOCAL_WINDOW_SIZE], }; } @@ -678,5 +678,5 @@ module.exports = { sessionName, toHeaderObject, updateOptionsBuffer, - updateSettingsBuffer + updateSettingsBuffer, }; diff --git a/lib/internal/legacy/processbinding.js b/lib/internal/legacy/processbinding.js index 3d48e3c9882e58..4b15dd1c12df1c 100644 --- a/lib/internal/legacy/processbinding.js +++ b/lib/internal/legacy/processbinding.js @@ -32,5 +32,5 @@ module.exports = { 'isAnyArrayBuffer', ], key); }))); - } + }, }; diff --git a/lib/internal/main/check_syntax.js b/lib/internal/main/check_syntax.js index 65f578be50fe1e..1b32a4d569f494 100644 --- a/lib/internal/main/check_syntax.js +++ b/lib/internal/main/check_syntax.js @@ -6,11 +6,11 @@ const { getOptionValue } = require('internal/options'); const { prepareMainThreadExecution, - markBootstrapComplete + markBootstrapComplete, } = require('internal/process/pre_execution'); const { - readStdin + readStdin, } = require('internal/process/execution'); const { pathToFileURL } = require('url'); diff --git a/lib/internal/main/eval_stdin.js b/lib/internal/main/eval_stdin.js index 0a6d9906019ee0..d947af49a6a942 100644 --- a/lib/internal/main/eval_stdin.js +++ b/lib/internal/main/eval_stdin.js @@ -4,7 +4,7 @@ const { prepareMainThreadExecution, - markBootstrapComplete + markBootstrapComplete, } = require('internal/process/pre_execution'); const { getOptionValue } = require('internal/options'); @@ -12,7 +12,7 @@ const { getOptionValue } = require('internal/options'); const { evalModule, evalScript, - readStdin + readStdin, } = require('internal/process/execution'); prepareMainThreadExecution(); diff --git a/lib/internal/main/eval_string.js b/lib/internal/main/eval_string.js index e8ecf9f1dae9cf..ec6a2d51af5450 100644 --- a/lib/internal/main/eval_string.js +++ b/lib/internal/main/eval_string.js @@ -11,7 +11,7 @@ const { const { prepareMainThreadExecution, - markBootstrapComplete + markBootstrapComplete, } = require('internal/process/pre_execution'); const { evalModule, evalScript } = require('internal/process/execution'); const { addBuiltinLibsToObject } = require('internal/modules/helpers'); diff --git a/lib/internal/main/inspect.js b/lib/internal/main/inspect.js index 6c4cc7cc36bcda..a60e4aa40b9605 100644 --- a/lib/internal/main/inspect.js +++ b/lib/internal/main/inspect.js @@ -4,7 +4,7 @@ const { prepareMainThreadExecution, - markBootstrapComplete + markBootstrapComplete, } = require('internal/process/pre_execution'); prepareMainThreadExecution(); diff --git a/lib/internal/main/mksnapshot.js b/lib/internal/main/mksnapshot.js index 08d483dcff4e76..f53d3a8f0993aa 100644 --- a/lib/internal/main/mksnapshot.js +++ b/lib/internal/main/mksnapshot.js @@ -17,11 +17,11 @@ const { } = binding; const { - getOptionValue + getOptionValue, } = require('internal/options'); const { - readFileSync + readFileSync, } = require('fs'); const supportedModules = new SafeSet(new SafeArrayIterator([ @@ -117,7 +117,7 @@ function requireForUserSnapshot(id) { function main() { const { - prepareMainThreadExecution + prepareMainThreadExecution, } = require('internal/process/pre_execution'); const path = require('path'); diff --git a/lib/internal/main/print_help.js b/lib/internal/main/print_help.js index 4f07aedf1b6e82..edb861668cac3d 100644 --- a/lib/internal/main/print_help.js +++ b/lib/internal/main/print_help.js @@ -21,7 +21,7 @@ const hasCrypto = Boolean(process.versions.openssl); const { prepareMainThreadExecution, - markBootstrapComplete + markBootstrapComplete, } = require('internal/process/pre_execution'); const typeLookup = []; @@ -134,7 +134,7 @@ function format( ); for (const { - 0: name, 1: { helpText, type, value, defaultIsTrue } + 0: name, 1: { helpText, type, value, defaultIsTrue }, } of sortedOptions) { if (!helpText) continue; @@ -190,7 +190,7 @@ function format( options, aliases, firstColumn: maxFirstColumnUsed + 2, - secondColumn + secondColumn, }); } @@ -214,13 +214,13 @@ function print(stream) { ' node inspect [options] [ script.js | host:port ] [arguments]\n\n' + 'Options:\n'); stream.write(indent(format({ - options, aliases, firstColumn, secondColumn + options, aliases, firstColumn, secondColumn, }), 2)); stream.write('\nEnvironment variables:\n'); stream.write(format({ - options: envVars, firstColumn, secondColumn + options: envVars, firstColumn, secondColumn, })); stream.write('\nDocumentation can be found at https://nodejs.org/\n'); diff --git a/lib/internal/main/prof_process.js b/lib/internal/main/prof_process.js index 3d56e3ec57fa46..612e3b469d84f4 100644 --- a/lib/internal/main/prof_process.js +++ b/lib/internal/main/prof_process.js @@ -2,7 +2,7 @@ const { prepareMainThreadExecution, - markBootstrapComplete + markBootstrapComplete, } = require('internal/process/pre_execution'); prepareMainThreadExecution(); diff --git a/lib/internal/main/repl.js b/lib/internal/main/repl.js index 29fcd33d9030f1..da1764a9c80d95 100644 --- a/lib/internal/main/repl.js +++ b/lib/internal/main/repl.js @@ -5,11 +5,11 @@ const { prepareMainThreadExecution, - markBootstrapComplete + markBootstrapComplete, } = require('internal/process/pre_execution'); const { - evalScript + evalScript, } = require('internal/process/execution'); const console = require('internal/console/global'); diff --git a/lib/internal/main/run_main_module.js b/lib/internal/main/run_main_module.js index b7347c4d457bd7..51331270a2161f 100644 --- a/lib/internal/main/run_main_module.js +++ b/lib/internal/main/run_main_module.js @@ -4,7 +4,7 @@ const { RegExpPrototypeExec } = primordials; const { prepareMainThreadExecution, - markBootstrapComplete + markBootstrapComplete, } = require('internal/process/pre_execution'); prepareMainThreadExecution(true); diff --git a/lib/internal/main/test_runner.js b/lib/internal/main/test_runner.js index 9a209eb18961b5..5ce9e51e4b6af6 100644 --- a/lib/internal/main/test_runner.js +++ b/lib/internal/main/test_runner.js @@ -1,7 +1,7 @@ 'use strict'; const { prepareMainThreadExecution, - markBootstrapComplete + markBootstrapComplete, } = require('internal/process/pre_execution'); const { getOptionValue } = require('internal/options'); const { isUsingInspector } = require('internal/util/inspector'); diff --git a/lib/internal/main/watch_mode.js b/lib/internal/main/watch_mode.js index 219b31d8c20e16..9ef731c06f50b6 100644 --- a/lib/internal/main/watch_mode.js +++ b/lib/internal/main/watch_mode.js @@ -10,7 +10,7 @@ const { const { prepareMainThreadExecution, - markBootstrapComplete + markBootstrapComplete, } = require('internal/process/pre_execution'); const { triggerUncaughtException, diff --git a/lib/internal/main/worker_thread.js b/lib/internal/main/worker_thread.js index ac6c9e48ee908c..2ebfb849663eb6 100644 --- a/lib/internal/main/worker_thread.js +++ b/lib/internal/main/worker_thread.js @@ -19,12 +19,12 @@ const { const { prepareWorkerThreadExecution, setupUserModules, - markBootstrapComplete + markBootstrapComplete, } = require('internal/process/pre_execution'); const { threadId, - getEnvMessagePort + getEnvMessagePort, } = internalBinding('worker'); const workerIo = require('internal/worker/io'); @@ -40,11 +40,11 @@ const { STDIO_PAYLOAD, STDIO_WANTS_MORE_DATA, }, - kStdioWantsMoreDataCallback + kStdioWantsMoreDataCallback, } = workerIo; const { - onGlobalUncaughtException + onGlobalUncaughtException, } = require('internal/process/execution'); let debug = require('internal/util/debuglog').debuglog('worker', (fn) => { @@ -69,13 +69,13 @@ if (process.env.NODE_CHANNEL_FD) { ObjectDefineProperty(process, 'channel', { __proto__: null, enumerable: false, - get: workerThreadSetup.unavailable('process.channel') + get: workerThreadSetup.unavailable('process.channel'), }); ObjectDefineProperty(process, 'connected', { __proto__: null, enumerable: false, - get: workerThreadSetup.unavailable('process.connected') + get: workerThreadSetup.unavailable('process.connected'), }); process.send = workerThreadSetup.unavailable('process.send()'); @@ -96,7 +96,7 @@ port.on('message', (message) => { publicPort, manifestSrc, manifestURL, - hasStdin + hasStdin, } = message; if (argv !== undefined) { @@ -218,7 +218,7 @@ function workerOnGlobalUncaughtException(error, fromPromise) { if (serialized) port.postMessage({ type: ERROR_MESSAGE, - error: serialized + error: serialized, }); else port.postMessage({ type: COULD_NOT_SERIALIZE_ERROR }); diff --git a/lib/internal/modules/cjs/loader.js b/lib/internal/modules/cjs/loader.js index 5544bfee9aac31..0727c8d2cffad3 100644 --- a/lib/internal/modules/cjs/loader.js +++ b/lib/internal/modules/cjs/loader.js @@ -146,7 +146,7 @@ const { } = require('internal/constants'); const { - isProxy + isProxy, } = require('internal/util/types'); const { kEvaluated } = internalBinding('module_wrap'); @@ -266,7 +266,7 @@ let wrapperProxy = new Proxy(wrapper, { defineProperty(target, property, descriptor) { patched = true; return ObjectDefineProperty(target, property, descriptor); - } + }, }); ObjectDefineProperty(Module, 'wrap', { @@ -278,7 +278,7 @@ ObjectDefineProperty(Module, 'wrap', { set(value) { patched = true; wrap = value; - } + }, }); ObjectDefineProperty(Module, 'wrapper', { @@ -290,7 +290,7 @@ ObjectDefineProperty(Module, 'wrapper', { set(value) { patched = true; wrapperProxy = value; - } + }, }); const isPreloadingDesc = { get() { return isPreloading; } }; @@ -494,7 +494,7 @@ function tryFile(requestPath, isMain) { function toRealPath(requestPath) { return fs.realpathSync(requestPath, { - [internalFS.realpathCacheKey]: realpathCache + [internalFS.realpathCacheKey]: realpathCache, }); } @@ -882,7 +882,7 @@ const CircularRequirePrototypeWarningProxy = new Proxy({}, { return ObjectGetOwnPropertyDescriptor(target, prop); emitCircularRequireWarning(prop); return undefined; - } + }, }); function getExportsForCircularRequire(module) { diff --git a/lib/internal/modules/esm/initialize_import_meta.js b/lib/internal/modules/esm/initialize_import_meta.js index 147eb0aa403784..fe5ba4a3cc1248 100644 --- a/lib/internal/modules/esm/initialize_import_meta.js +++ b/lib/internal/modules/esm/initialize_import_meta.js @@ -37,5 +37,5 @@ function initializeImportMeta(meta, context) { } module.exports = { - initializeImportMeta + initializeImportMeta, }; diff --git a/lib/internal/modules/esm/loader.js b/lib/internal/modules/esm/loader.js index db00fec8c37b6f..1fc25512b2c69c 100644 --- a/lib/internal/modules/esm/loader.js +++ b/lib/internal/modules/esm/loader.js @@ -125,7 +125,7 @@ class ESMLoader { setCallbackForWrap(module, { importModuleDynamically: (specifier, { url }, importAssertions) => { return this.import(specifier, url, importAssertions); - } + }, }); return module; diff --git a/lib/internal/modules/esm/resolve.js b/lib/internal/modules/esm/resolve.js index 194d2ba37bf3b2..d04c04e8306c14 100644 --- a/lib/internal/modules/esm/resolve.js +++ b/lib/internal/modules/esm/resolve.js @@ -234,7 +234,7 @@ function finalizeResolution(resolved, base, preserveSymlinks) { if (!preserveSymlinks) { const real = realpathSync(path, { - [internalFS.realpathCacheKey]: realpathCache + [internalFS.realpathCacheKey]: realpathCache, }); const { search, hash } = resolved; resolved = diff --git a/lib/internal/modules/esm/translators.js b/lib/internal/modules/esm/translators.js index 1f5c537623c080..e185e29ad046f3 100644 --- a/lib/internal/modules/esm/translators.js +++ b/lib/internal/modules/esm/translators.js @@ -33,7 +33,7 @@ const { } = require('internal/modules/helpers'); const { Module: CJSModule, - cjsParseCache + cjsParseCache, } = require('internal/modules/cjs/loader'); const internalURLModule = require('internal/url'); const { fileURLToPath, URL } = require('url'); @@ -43,7 +43,7 @@ let debug = require('internal/util/debuglog').debuglog('esm', (fn) => { const { emitExperimentalWarning } = require('internal/util'); const { ERR_UNKNOWN_BUILTIN_MODULE, - ERR_INVALID_RETURN_PROPERTY_VALUE + ERR_INVALID_RETURN_PROPERTY_VALUE, } = require('internal/errors').codes; const { maybeCacheSourceMap } = require('internal/source_map/source_map_cache'); const moduleWrap = internalBinding('module_wrap'); @@ -298,7 +298,7 @@ translators.set('json', async function jsonStrategy(url, source) { const exports = JSONParse(stripBOM(source)); module = { exports, - loaded: true + loaded: true, }; } catch (err) { // TODO (BridgeAR): We could add a NodeCore error that wraps the JSON diff --git a/lib/internal/modules/esm/utils.js b/lib/internal/modules/esm/utils.js index 2927326097a152..bf3edc86518b4c 100644 --- a/lib/internal/modules/esm/utils.js +++ b/lib/internal/modules/esm/utils.js @@ -15,7 +15,7 @@ const { getOptionValue } = require('internal/options'); const { setImportModuleDynamicallyCallback, - setInitializeImportMetaObjectCallback + setInitializeImportMetaObjectCallback, } = internalBinding('module_wrap'); const { getModuleFromWrap, diff --git a/lib/internal/util/colors.js b/lib/internal/util/colors.js index 79021a2bd9825d..e81a97ad8771a1 100644 --- a/lib/internal/util/colors.js +++ b/lib/internal/util/colors.js @@ -19,7 +19,7 @@ module.exports = { module.exports.clear = hasColors ? '\u001bc' : ''; module.exports.hasColors = hasColors; } - } + }, }; module.exports.refresh(); diff --git a/lib/internal/util/comparisons.js b/lib/internal/util/comparisons.js index 65dd54589008f3..d86e59adae9880 100644 --- a/lib/internal/util/comparisons.js +++ b/lib/internal/util/comparisons.js @@ -608,5 +608,5 @@ function isDeepStrictEqual(val1, val2) { module.exports = { isDeepEqual, - isDeepStrictEqual + isDeepStrictEqual, }; diff --git a/lib/internal/util/debuglog.js b/lib/internal/util/debuglog.js index fdb5acca5a46f3..9ecfc2aac4c3ed 100644 --- a/lib/internal/util/debuglog.js +++ b/lib/internal/util/debuglog.js @@ -104,12 +104,12 @@ function debuglog(set, cb) { return test(); }, configurable: true, - enumerable: true + enumerable: true, }); return logger; } module.exports = { debuglog, - initializeDebugEnv + initializeDebugEnv, }; diff --git a/lib/internal/util/inspect.js b/lib/internal/util/inspect.js index eb9c74e9146892..e6db302e9be719 100644 --- a/lib/internal/util/inspect.js +++ b/lib/internal/util/inspect.js @@ -114,11 +114,11 @@ const { customInspectSymbol, isError, join, - removeColors + removeColors, } = require('internal/util'); const { - isStackOverflowError + isStackOverflowError, } = require('internal/errors'); const { @@ -265,7 +265,7 @@ function getUserOptions(ctx, isCrossContext) { sorted: ctx.sorted, getters: ctx.getters, numericSeparator: ctx.numericSeparator, - ...ctx.userOptions + ...ctx.userOptions, }; // Typically, the target value will be an instance of `Object`. If that is @@ -373,7 +373,7 @@ ObjectDefineProperty(inspect, 'defaultOptions', { set(options) { validateObject(options, 'options'); return ObjectAssign(inspectDefaultOptions, options); - } + }, }); // Set Graphics Rendition https://en.wikipedia.org/wiki/ANSI_escape_code#graphics @@ -440,7 +440,7 @@ function defineColorAlias(target, alias) { this[target] = value; }, configurable: true, - enumerable: false + enumerable: false, }); } @@ -472,7 +472,7 @@ inspect.styles = ObjectAssign({ __proto__: null }, { // "name": intentionally not styling // TODO(BridgeAR): Highlight regular expressions properly. regexp: 'red', - module: 'underline' + module: 'underline', }); function addQuotes(str, quotes) { @@ -625,7 +625,7 @@ function getConstructorName(obj, ctx, recurseTimes, protoProps) { return `${res} <${inspect(firstProto, { ...ctx, customInspect: false, - depth: -1 + depth: -1, })}>`; } @@ -2202,7 +2202,7 @@ function formatWithOptionsInternal(inspectOptions, args) { ...inspectOptions, compact: 3, colors: false, - depth: 0 + depth: 0, }); } break; @@ -2229,7 +2229,7 @@ function formatWithOptionsInternal(inspectOptions, args) { ...inspectOptions, showHidden: true, showProxy: true, - depth: 4 + depth: 4, }); break; case 105: { // 'i' diff --git a/lib/internal/util/inspector.js b/lib/internal/util/inspector.js index 8072f33482abe1..0d9580c83224e4 100644 --- a/lib/internal/util/inspector.js +++ b/lib/internal/util/inspector.js @@ -91,7 +91,7 @@ function wrapConsole(consoleFromNode) { ); ObjectDefineProperty(consoleFromNode[key], 'name', { __proto__: null, - value: key + value: key, }); } else { // Add additional console APIs from the inspector diff --git a/lib/internal/util/iterable_weak_map.js b/lib/internal/util/iterable_weak_map.js index 67e51ec8619be9..16694ffdb11de8 100644 --- a/lib/internal/util/iterable_weak_map.js +++ b/lib/internal/util/iterable_weak_map.js @@ -30,7 +30,7 @@ class IterableWeakMap { this.#refSet.add(ref); this.#finalizationGroup.register(key, { set: this.#refSet, - ref + ref, }, ref); } } diff --git a/lib/internal/util/types.js b/lib/internal/util/types.js index 544f4c3da49c72..e40700b38f81a9 100644 --- a/lib/internal/util/types.js +++ b/lib/internal/util/types.js @@ -89,7 +89,7 @@ ObjectDefineProperties(module.exports, { } return isKeyObject(obj); - } + }, }, isCryptoKey: { __proto__: null, @@ -105,6 +105,6 @@ ObjectDefineProperties(module.exports, { } return isCryptoKey(obj); - } - } + }, + }, }); diff --git a/lib/internal/v8/startup_snapshot.js b/lib/internal/v8/startup_snapshot.js index 655cc1903e85ee..3f51ae5d0f0535 100644 --- a/lib/internal/v8/startup_snapshot.js +++ b/lib/internal/v8/startup_snapshot.js @@ -5,7 +5,7 @@ const { } = require('internal/validators'); const { ERR_NOT_BUILDING_SNAPSHOT, - ERR_DUPLICATE_STARTUP_SNAPSHOT_MAIN_FUNCTION + ERR_DUPLICATE_STARTUP_SNAPSHOT_MAIN_FUNCTION, } = require('internal/errors'); const { @@ -85,7 +85,7 @@ function setDeserializeMainFunction(callback, data) { _setDeserializeMainFunction(function deserializeMain() { const { prepareMainThreadExecution, - markBootstrapComplete + markBootstrapComplete, } = require('internal/process/pre_execution'); // This should be in sync with run_main_module.js until we make that @@ -104,6 +104,6 @@ module.exports = { addDeserializeCallback, addSerializeCallback, setDeserializeMainFunction, - isBuildingSnapshot - } + isBuildingSnapshot, + }, }; diff --git a/lib/internal/vm/module.js b/lib/internal/vm/module.js index 5d6999ffa3b14d..3d2d25064b62cd 100644 --- a/lib/internal/vm/module.js +++ b/lib/internal/vm/module.js @@ -242,7 +242,7 @@ class Module { ObjectDefineProperty(o, SymbolToStringTag, { __proto__: null, value: constructor.name, - configurable: true + configurable: true, }); // Lazy to avoid circular dependency diff --git a/lib/internal/worker/io.js b/lib/internal/worker/io.js index 94722ac81edcbd..f3dce214c8a5c1 100644 --- a/lib/internal/worker/io.js +++ b/lib/internal/worker/io.js @@ -27,7 +27,7 @@ const { const { handle_onclose: handleOnCloseSymbol, oninit: onInitSymbol, - no_message_symbol: noMessageSymbol + no_message_symbol: noMessageSymbol, } = internalBinding('symbols'); const { MessagePort, @@ -41,7 +41,7 @@ const { DOMException, } = internalBinding('messaging'); const { - getEnvMessagePort + getEnvMessagePort, } = internalBinding('worker'); const { Readable, Writable } = require('stream'); @@ -61,7 +61,7 @@ const { ERR_INVALID_ARG_TYPE, ERR_INVALID_THIS, ERR_MISSING_ARGS, - } + }, } = require('internal/errors'); const kData = Symbol('kData'); @@ -89,7 +89,7 @@ const messageTypes = { ERROR_MESSAGE: 'errorMessage', STDIO_PAYLOAD: 'stdioPayload', STDIO_WANTS_MORE_DATA: 'stdioWantsMoreData', - LOAD_SCRIPT: 'loadScript' + LOAD_SCRIPT: 'loadScript', }; // We have to mess with the MessagePort prototype a bit, so that a) we can make @@ -240,7 +240,7 @@ ObjectDefineProperty(MessagePort.prototype, onInitSymbol, { __proto__: null, enumerable: true, writable: false, - value: oninit + value: oninit, }); class MessagePortCloseEvent extends Event { @@ -258,7 +258,7 @@ ObjectDefineProperty(MessagePort.prototype, handleOnCloseSymbol, { __proto__: null, enumerable: false, writable: false, - value: onclose + value: onclose, }); MessagePort.prototype.close = function(cb) { @@ -283,10 +283,10 @@ ObjectDefineProperty(MessagePort.prototype, inspect.custom, { active: false, } : { active: true, - refed: ref + refed: ref, }, this); - } + }, }); function setupPortReferencing(port, eventEmitter, eventName) { @@ -352,7 +352,7 @@ class ReadableWorkerStdio extends Readable { this[kPort].postMessage({ type: messageTypes.STDIO_WANTS_MORE_DATA, - stream: this[kName] + stream: this[kName], }); } } @@ -381,7 +381,7 @@ class WritableWorkerStdio extends Writable { this[kPort].postMessage({ type: messageTypes.STDIO_PAYLOAD, stream: this[kName], - chunks: [ { chunk: null, encoding: '' } ] + chunks: [ { chunk: null, encoding: '' } ], }); cb(); } @@ -401,7 +401,7 @@ function createWorkerStdio() { return { stdin: new ReadableWorkerStdio(port, 'stdin'), stdout: new WritableWorkerStdio(port, 'stdout'), - stderr: new WritableWorkerStdio(port, 'stderr') + stderr: new WritableWorkerStdio(port, 'stderr'), }; } @@ -445,7 +445,7 @@ class BroadcastChannel extends EventTarget { const opts = { ...options, - depth: options.depth == null ? null : options.depth - 1 + depth: options.depth == null ? null : options.depth - 1, }; return `BroadcastChannel ${inspect({ diff --git a/lib/internal/worker/js_transferable.js b/lib/internal/worker/js_transferable.js index a94893cfe77aa1..41ef278b33174d 100644 --- a/lib/internal/worker/js_transferable.js +++ b/lib/internal/worker/js_transferable.js @@ -13,11 +13,11 @@ const { messaging_deserialize_symbol, messaging_transfer_symbol, messaging_clone_symbol, - messaging_transfer_list_symbol + messaging_transfer_list_symbol, } = internalBinding('symbols'); const { JSTransferable, - setDeserializerCreateObjectFunction + setDeserializerCreateObjectFunction, } = internalBinding('messaging'); function setup() { From 070e773abf89c139f4ce8de7089c63f706fbda06 Mon Sep 17 00:00:00 2001 From: jakecastelli <959672929@qq.com> Date: Sat, 4 Mar 2023 22:17:01 +1030 Subject: [PATCH 022/186] doc: improve fs code example quality PR-URL: https://github.com/nodejs/node/pull/46948 Reviewed-By: Luigi Pinca Reviewed-By: LiviaMedeiros Reviewed-By: Mohammed Keyvanzadeh Reviewed-By: Qingyu Deng --- doc/api/fs.md | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/doc/api/fs.md b/doc/api/fs.md index 5fd4cfeefb504d..a83a50b5d184ae 100644 --- a/doc/api/fs.md +++ b/doc/api/fs.md @@ -1117,7 +1117,7 @@ try { ```cjs const { mkdir } = require('node:fs/promises'); -const { resolve, join } = require('node:path'); +const { join } = require('node:path'); async function makeDirectory() { const projectFolder = join(__dirname, 'test', 'project'); @@ -1159,9 +1159,11 @@ object with an `encoding` property specifying the character encoding to use. ```mjs import { mkdtemp } from 'node:fs/promises'; +import { join } from 'node:path'; +import { tmpdir } from 'node:os'; try { - await mkdtemp(path.join(os.tmpdir(), 'foo-')); + await mkdtemp(join(tmpdir(), 'foo-')); } catch (err) { console.error(err); } @@ -3237,8 +3239,10 @@ object with an `encoding` property specifying the character encoding to use. ```mjs import { mkdtemp } from 'node:fs'; +import { join } from 'node:path'; +import { tmpdir } from 'node:os'; -mkdtemp(path.join(os.tmpdir(), 'foo-'), (err, directory) => { +mkdtemp(join(tmpdir(), 'foo-'), (err, directory) => { if (err) throw err; console.log(directory); // Prints: /tmp/foo-itXde2 or C:\Users\...\AppData\Local\Temp\foo-itXde2 @@ -7542,6 +7546,8 @@ For example, the following is prone to error because the `fs.stat()` operation might complete before the `fs.rename()` operation: ```js +const fs = require('node:fs'); + fs.rename('/tmp/hello', '/tmp/world', (err) => { if (err) throw err; console.log('renamed complete'); @@ -7558,12 +7564,12 @@ of one before invoking the other: ```mjs import { rename, stat } from 'node:fs/promises'; -const from = '/tmp/hello'; -const to = '/tmp/world'; +const oldPath = '/tmp/hello'; +const newPath = '/tmp/world'; try { - await rename(from, to); - const stats = await stat(to); + await rename(oldPath, newPath); + const stats = await stat(newPath); console.log(`stats: ${JSON.stringify(stats)}`); } catch (error) { console.error('there was an error:', error.message); @@ -7573,10 +7579,10 @@ try { ```cjs const { rename, stat } = require('node:fs/promises'); -(async function(from, to) { +(async function(oldPath, newPath) { try { - await rename(from, to); - const stats = await stat(to); + await rename(oldPath, newPath); + const stats = await stat(newPath); console.log(`stats: ${JSON.stringify(stats)}`); } catch (error) { console.error('there was an error:', error.message); @@ -7632,7 +7638,7 @@ try { fd = await open('/open/some/file.txt', 'r'); // Do something with the file } finally { - await fd.close(); + await fd?.close(); } ``` @@ -7646,7 +7652,7 @@ try { fd = await open('file.txt', 'r'); // Do something with the file } finally { - await fd.close(); + await fd?.close(); } ``` @@ -7761,7 +7767,7 @@ try { fd = await open(Buffer.from('/open/some/file.txt'), 'r'); // Do something with the file } finally { - await fd.close(); + await fd?.close(); } ``` From 00981eaf81d88767cde68240db8822eb2d50d4e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Nie=C3=9Fen?= Date: Mon, 6 Mar 2023 16:29:19 +0100 Subject: [PATCH 023/186] doc: fix description of TLS dhparam option The dhparam option is not required for perfect forward secrecy in general. It is only required for non-ECDHE secrecy, but ECDHE-based secrecy is generally preferred anyway. PR-URL: https://github.com/nodejs/node/pull/46949 Reviewed-By: Luigi Pinca Reviewed-By: Filip Skokan --- doc/api/tls.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/api/tls.md b/doc/api/tls.md index a9763c73426673..7cbcee6ad3a0b6 100644 --- a/doc/api/tls.md +++ b/doc/api/tls.md @@ -1882,12 +1882,13 @@ changes: client certificate. * `crl` {string|string\[]|Buffer|Buffer\[]} PEM formatted CRLs (Certificate Revocation Lists). - * `dhparam` {string|Buffer} Diffie-Hellman parameters, required for + * `dhparam` {string|Buffer} Diffie-Hellman parameters, required for non-ECDHE [perfect forward secrecy][]. Use `openssl dhparam` to create the parameters. The key length must be greater than or equal to 1024 bits or else an error will be thrown. Although 1024 bits is permissible, use 2048 bits or larger for stronger security. If omitted or invalid, the parameters are silently - discarded and DHE ciphers will not be available. + discarded and DHE ciphers will not be available. [ECDHE][]-based [perfect + forward secrecy][] will still be available. * `ecdhCurve` {string} A string describing a named curve or a colon separated list of curve NIDs or names, for example `P-521:P-384:P-256`, to use for ECDH key agreement. Set to `auto` to select the From 2d9bf91fe1c545521e5578f6b31d59c79b402b82 Mon Sep 17 00:00:00 2001 From: Debadree Chatterjee Date: Mon, 6 Mar 2023 22:04:09 +0530 Subject: [PATCH 024/186] worker: add support for worker name in inspector and trace_events Fixes: https://github.com/nodejs/node/issues/41589 PR-URL: https://github.com/nodejs/node/pull/46832 Reviewed-By: Ben Noordhuis Reviewed-By: Benjamin Gruenbaum Reviewed-By: Anna Henningsen Reviewed-By: Darshan Sen Reviewed-By: Gireesh Punathil --- doc/api/worker_threads.md | 7 +++++ lib/internal/worker.js | 12 +++++-- src/api/environment.cc | 8 ++++- src/inspector/worker_inspector.cc | 23 ++++++++------ src/inspector/worker_inspector.h | 14 ++++----- src/inspector_agent.cc | 6 ++-- src/inspector_agent.h | 2 +- src/node.h | 6 ++++ src/node_worker.cc | 21 +++++++++---- src/node_worker.h | 3 ++ test/fixtures/worker-name.js | 17 ++++++++++ ...-trace-events-worker-metadata-with-name.js | 31 +++++++++++++++++++ .../test-trace-events-worker-metadata.js | 2 +- test/parallel/test-worker-name.js | 22 +++++++++++++ 14 files changed, 144 insertions(+), 30 deletions(-) create mode 100644 test/fixtures/worker-name.js create mode 100644 test/parallel/test-trace-events-worker-metadata-with-name.js create mode 100644 test/parallel/test-worker-name.js diff --git a/doc/api/worker_threads.md b/doc/api/worker_threads.md index 43f10ae489a9a0..674424f6f0bf90 100644 --- a/doc/api/worker_threads.md +++ b/doc/api/worker_threads.md @@ -906,6 +906,10 @@ if (isMainThread) { + + + + + + diff --git a/test/fixtures/wpt/FileAPI/blob/Blob-constructor.any.js b/test/fixtures/wpt/FileAPI/blob/Blob-constructor.any.js index 6c34d7e34b93f9..d16f760caeeb2d 100644 --- a/test/fixtures/wpt/FileAPI/blob/Blob-constructor.any.js +++ b/test/fixtures/wpt/FileAPI/blob/Blob-constructor.any.js @@ -311,7 +311,16 @@ test_blob(function() { desc: "Passing a Float64Array as element of the blobParts array should work." }); - +test_blob(function() { + return new Blob([ + new BigInt64Array([BigInt("0x5353415053534150")]), + new BigUint64Array([BigInt("0x5353415053534150")]) + ]); +}, { + expected: "PASSPASSPASSPASS", + type: "", + desc: "Passing BigInt typed arrays as elements of the blobParts array should work." +}); var t_ports = async_test("Passing a FrozenArray as the blobParts array should work (FrozenArray)."); t_ports.step(function() { diff --git a/test/fixtures/wpt/FileAPI/blob/Blob-constructor.html b/test/fixtures/wpt/FileAPI/blob/Blob-constructor.html deleted file mode 100644 index 62a649aed66418..00000000000000 --- a/test/fixtures/wpt/FileAPI/blob/Blob-constructor.html +++ /dev/null @@ -1,501 +0,0 @@ - - -Blob constructor - - - - - - - -
- diff --git a/test/fixtures/wpt/FileAPI/blob/Blob-in-worker.worker.js b/test/fixtures/wpt/FileAPI/blob/Blob-in-worker.worker.js index a67060e7b85eff..a0ca84551dd7cc 100644 --- a/test/fixtures/wpt/FileAPI/blob/Blob-in-worker.worker.js +++ b/test/fixtures/wpt/FileAPI/blob/Blob-in-worker.worker.js @@ -1,14 +1,9 @@ importScripts("/resources/testharness.js"); -async_test(function() { - var data = "TEST"; - var blob = new Blob([data], {type: "text/plain"}); - var reader = new FileReader(); - reader.onload = this.step_func_done(function() { - assert_equals(reader.result, data); - }); - reader.onerror = this.unreached_func("Unexpected error event"); - reader.readAsText(blob); -}, "Create Blob in Worker"); +promise_test(async () => { + const data = "TEST"; + const blob = new Blob([data], {type: "text/plain"}); + assert_equals(await blob.text(), data); +}, 'Create Blob in Worker'); done(); diff --git a/test/fixtures/wpt/FileAPI/blob/Blob-slice-overflow.html b/test/fixtures/wpt/FileAPI/blob/Blob-slice-overflow.html deleted file mode 100644 index 74cd83a34f7116..00000000000000 --- a/test/fixtures/wpt/FileAPI/blob/Blob-slice-overflow.html +++ /dev/null @@ -1,42 +0,0 @@ - - -Blob slice overflow - - - - -
- - diff --git a/test/fixtures/wpt/FileAPI/blob/Blob-slice.html b/test/fixtures/wpt/FileAPI/blob/Blob-slice.html deleted file mode 100644 index 03fe6ca5343bd1..00000000000000 --- a/test/fixtures/wpt/FileAPI/blob/Blob-slice.html +++ /dev/null @@ -1,238 +0,0 @@ - - -Blob slice - - - - - -
- diff --git a/test/fixtures/wpt/FileAPI/blob/Blob-stream-byob-crash.html b/test/fixtures/wpt/FileAPI/blob/Blob-stream-byob-crash.html new file mode 100644 index 00000000000000..5992ed1396ca90 --- /dev/null +++ b/test/fixtures/wpt/FileAPI/blob/Blob-stream-byob-crash.html @@ -0,0 +1,11 @@ + + diff --git a/test/fixtures/wpt/FileAPI/blob/Blob-stream-sync-xhr-crash.html b/test/fixtures/wpt/FileAPI/blob/Blob-stream-sync-xhr-crash.html new file mode 100644 index 00000000000000..fe54fb615b1579 --- /dev/null +++ b/test/fixtures/wpt/FileAPI/blob/Blob-stream-sync-xhr-crash.html @@ -0,0 +1,13 @@ + + diff --git a/test/fixtures/wpt/FileAPI/blob/Blob-stream.any.js b/test/fixtures/wpt/FileAPI/blob/Blob-stream.any.js index 792b6639c35a26..87710a171a9752 100644 --- a/test/fixtures/wpt/FileAPI/blob/Blob-stream.any.js +++ b/test/fixtures/wpt/FileAPI/blob/Blob-stream.any.js @@ -1,24 +1,26 @@ // META: title=Blob Stream // META: script=../support/Blob.js -// META: script=../../streams/resources/test-utils.js +// META: script=/common/gc.js 'use strict'; // Helper function that triggers garbage collection while reading a chunk // if perform_gc is true. async function read_and_gc(reader, perform_gc) { - const read_promise = reader.read(); - if (perform_gc) - garbageCollect(); + // Passing Uint8Array for byte streams; non-byte streams will simply ignore it + const read_promise = reader.read(new Uint8Array(64)); + if (perform_gc) { + await garbageCollect(); + } return read_promise; } // Takes in a ReadableStream and reads from it until it is done, returning // an array that contains the results of each read operation. If perform_gc // is true, garbage collection is triggered while reading every chunk. -async function read_all_chunks(stream, perform_gc = false) { +async function read_all_chunks(stream, { perform_gc = false, mode } = {}) { assert_true(stream instanceof ReadableStream); assert_true('getReader' in stream); - const reader = stream.getReader(); + const reader = stream.getReader({ mode }); assert_true('read' in reader); let read_value = await read_and_gc(reader, perform_gc); @@ -65,8 +67,17 @@ promise_test(async() => { let blob = new Blob([typed_arr]); const stream = blob.stream(); blob = null; - garbageCollect(); - const chunks = await read_all_chunks(stream, /*perform_gc=*/true); + await garbageCollect(); + const chunks = await read_all_chunks(stream, { perform_gc: true }); assert_array_equals(chunks, input_arr); }, "Blob.stream() garbage collection of blob shouldn't break stream" + "consumption") + +promise_test(async () => { + const input_arr = [8, 241, 48, 123, 151]; + const typed_arr = new Uint8Array(input_arr); + let blob = new Blob([typed_arr]); + const stream = blob.stream(); + const chunks = await read_all_chunks(stream, { mode: "byob" }); + assert_array_equals(chunks, input_arr); +}, "Reading Blob.stream() with BYOB reader") diff --git a/test/fixtures/wpt/FileAPI/file/File-constructor.html b/test/fixtures/wpt/FileAPI/file/File-constructor.html deleted file mode 100644 index 3477e4ada16e92..00000000000000 --- a/test/fixtures/wpt/FileAPI/file/File-constructor.html +++ /dev/null @@ -1,159 +0,0 @@ - - -File constructor - - - -
- diff --git a/test/fixtures/wpt/FileAPI/file/send-file-form-controls.tentative.html b/test/fixtures/wpt/FileAPI/file/send-file-form-controls.tentative.html deleted file mode 100644 index d11f4a860931b4..00000000000000 --- a/test/fixtures/wpt/FileAPI/file/send-file-form-controls.tentative.html +++ /dev/null @@ -1,117 +0,0 @@ - - -Upload files named using controls (tentative) - - - - - - - - - diff --git a/test/fixtures/wpt/FileAPI/file/send-file-form-iso-2022-jp.tentative.html b/test/fixtures/wpt/FileAPI/file/send-file-form-iso-2022-jp.tentative.html deleted file mode 100644 index 659af3bde85852..00000000000000 --- a/test/fixtures/wpt/FileAPI/file/send-file-form-iso-2022-jp.tentative.html +++ /dev/null @@ -1,72 +0,0 @@ - - - -Upload files in ISO-2022-JP form (tentative) - - - - - - - - - - diff --git a/test/fixtures/wpt/FileAPI/file/send-file-form-punctuation.tentative.html b/test/fixtures/wpt/FileAPI/file/send-file-form-punctuation.tentative.html deleted file mode 100644 index 5c2d6d0bf1fe01..00000000000000 --- a/test/fixtures/wpt/FileAPI/file/send-file-form-punctuation.tentative.html +++ /dev/null @@ -1,230 +0,0 @@ - - -Upload files named using punctuation (tentative) - - - - - - - - - diff --git a/test/fixtures/wpt/FileAPI/file/send-file-form-windows-1252.tentative.html b/test/fixtures/wpt/FileAPI/file/send-file-form-windows-1252.tentative.html deleted file mode 100644 index a2c37186b3e023..00000000000000 --- a/test/fixtures/wpt/FileAPI/file/send-file-form-windows-1252.tentative.html +++ /dev/null @@ -1,69 +0,0 @@ - - -Upload files in Windows-1252 form (tentative) - - - - - - - - - - diff --git a/test/fixtures/wpt/FileAPI/file/send-file-form-x-user-defined.tentative.html b/test/fixtures/wpt/FileAPI/file/send-file-form-x-user-defined.tentative.html deleted file mode 100644 index 503b08a51706f7..00000000000000 --- a/test/fixtures/wpt/FileAPI/file/send-file-form-x-user-defined.tentative.html +++ /dev/null @@ -1,70 +0,0 @@ - - -Upload files in x-user-defined form (tentative) - - - - - - - - - - diff --git a/test/fixtures/wpt/FileAPI/file/send-file-formdata-controls.tentative.html b/test/fixtures/wpt/FileAPI/file/send-file-formdata-controls.tentative.html deleted file mode 100644 index 4259741b63ef31..00000000000000 --- a/test/fixtures/wpt/FileAPI/file/send-file-formdata-controls.tentative.html +++ /dev/null @@ -1,93 +0,0 @@ - - -FormData: Upload files named using controls (tentative) - - - - - - - - - diff --git a/test/fixtures/wpt/FileAPI/file/send-file-formdata-punctuation.tentative.html b/test/fixtures/wpt/FileAPI/file/send-file-formdata-punctuation.tentative.html deleted file mode 100644 index d8e84e9d978094..00000000000000 --- a/test/fixtures/wpt/FileAPI/file/send-file-formdata-punctuation.tentative.html +++ /dev/null @@ -1,168 +0,0 @@ - - -FormData: Upload files named using punctuation (tentative) - - - - - - - - - diff --git a/test/fixtures/wpt/FileAPI/file/send-file-formdata-utf-8.html b/test/fixtures/wpt/FileAPI/file/send-file-formdata-utf-8.html deleted file mode 100644 index 7a7f6cefe776b9..00000000000000 --- a/test/fixtures/wpt/FileAPI/file/send-file-formdata-utf-8.html +++ /dev/null @@ -1,53 +0,0 @@ - - -FormData: Upload files in UTF-8 fetch() - - - - - - - - diff --git a/test/fixtures/wpt/FileAPI/file/send-file-formdata.html b/test/fixtures/wpt/FileAPI/file/send-file-formdata.html deleted file mode 100644 index 77e048e54741c0..00000000000000 --- a/test/fixtures/wpt/FileAPI/file/send-file-formdata.html +++ /dev/null @@ -1,28 +0,0 @@ - - -FormData: Upload ASCII-named file in UTF-8 form - - - - - - - - diff --git a/test/fixtures/wpt/FileAPI/fileReader.any.js b/test/fixtures/wpt/FileAPI/fileReader.any.js new file mode 100644 index 00000000000000..2876dcb4ce314e --- /dev/null +++ b/test/fixtures/wpt/FileAPI/fileReader.any.js @@ -0,0 +1,59 @@ +// META: title=FileReader States + +'use strict'; + +test(function () { + assert_true( + "FileReader" in globalThis, + "globalThis should have a FileReader property.", + ); +}, "FileReader interface object"); + +test(function () { + var fileReader = new FileReader(); + assert_true(fileReader instanceof FileReader); +}, "no-argument FileReader constructor"); + +var t_abort = async_test("FileReader States -- abort"); +t_abort.step(function () { + var fileReader = new FileReader(); + assert_equals(fileReader.readyState, 0); + assert_equals(fileReader.readyState, FileReader.EMPTY); + + var blob = new Blob(); + fileReader.readAsArrayBuffer(blob); + assert_equals(fileReader.readyState, 1); + assert_equals(fileReader.readyState, FileReader.LOADING); + + fileReader.onabort = this.step_func(function (e) { + assert_equals(fileReader.readyState, 2); + assert_equals(fileReader.readyState, FileReader.DONE); + t_abort.done(); + }); + fileReader.abort(); + fileReader.onabort = this.unreached_func("abort event should fire sync"); +}); + +var t_event = async_test("FileReader States -- events"); +t_event.step(function () { + var fileReader = new FileReader(); + + var blob = new Blob(); + fileReader.readAsArrayBuffer(blob); + + fileReader.onloadstart = this.step_func(function (e) { + assert_equals(fileReader.readyState, 1); + assert_equals(fileReader.readyState, FileReader.LOADING); + }); + + fileReader.onprogress = this.step_func(function (e) { + assert_equals(fileReader.readyState, 1); + assert_equals(fileReader.readyState, FileReader.LOADING); + }); + + fileReader.onloadend = this.step_func(function (e) { + assert_equals(fileReader.readyState, 2); + assert_equals(fileReader.readyState, FileReader.DONE); + t_event.done(); + }); +}); diff --git a/test/fixtures/wpt/FileAPI/fileReader.html b/test/fixtures/wpt/FileAPI/fileReader.html deleted file mode 100644 index b767e22d4a66eb..00000000000000 --- a/test/fixtures/wpt/FileAPI/fileReader.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - FileReader States - - - - - - -
- - - diff --git a/test/fixtures/wpt/FileAPI/idlharness.any.js b/test/fixtures/wpt/FileAPI/idlharness.any.js new file mode 100644 index 00000000000000..1744242b9f3ff1 --- /dev/null +++ b/test/fixtures/wpt/FileAPI/idlharness.any.js @@ -0,0 +1,19 @@ +// META: script=/resources/WebIDLParser.js +// META: script=/resources/idlharness.js +// META: timeout=long + +'use strict'; + +// https://w3c.github.io/FileAPI/ + +idl_test( + ['FileAPI'], + ['dom', 'html', 'url'], + idl_array => { + idl_array.add_objects({ + Blob: ['new Blob(["TEST"])'], + File: ['new File(["myFileBits"], "myFileName")'], + FileReader: ['new FileReader()'] + }); + } +); diff --git a/test/fixtures/wpt/FileAPI/idlharness.html b/test/fixtures/wpt/FileAPI/idlharness.html index 5e0a43f80df3f8..45e8684f0027b2 100644 --- a/test/fixtures/wpt/FileAPI/idlharness.html +++ b/test/fixtures/wpt/FileAPI/idlharness.html @@ -2,7 +2,7 @@ - File API automated IDL tests + File API automated IDL tests (requiring dom) @@ -27,10 +27,7 @@

File API automated IDL tests

['dom', 'html', 'url'], idl_array => { idl_array.add_objects({ - Blob: ['new Blob(["TEST"])'], - File: ['new File(["myFileBits"], "myFileName")'], - FileList: ['document.querySelector("#fileChooser").files'], - FileReader: ['new FileReader()'] + FileList: ['document.querySelector("#fileChooser").files'] }); } ); diff --git a/test/fixtures/wpt/FileAPI/idlharness.worker.js b/test/fixtures/wpt/FileAPI/idlharness.worker.js index 786b7e4199fb45..002aaed40a562e 100644 --- a/test/fixtures/wpt/FileAPI/idlharness.worker.js +++ b/test/fixtures/wpt/FileAPI/idlharness.worker.js @@ -10,9 +10,6 @@ idl_test( ['dom', 'html', 'url'], idl_array => { idl_array.add_objects({ - Blob: ['new Blob(["TEST"])'], - File: ['new File(["myFileBits"], "myFileName")'], - FileReader: ['new FileReader()'], FileReaderSync: ['new FileReaderSync()'] }); } diff --git a/test/fixtures/wpt/FileAPI/reading-data-section/Determining-Encoding.html b/test/fixtures/wpt/FileAPI/reading-data-section/Determining-Encoding.any.js similarity index 86% rename from test/fixtures/wpt/FileAPI/reading-data-section/Determining-Encoding.html rename to test/fixtures/wpt/FileAPI/reading-data-section/Determining-Encoding.any.js index d65ae9db18a1ff..5b69f7ed9821ac 100644 --- a/test/fixtures/wpt/FileAPI/reading-data-section/Determining-Encoding.html +++ b/test/fixtures/wpt/FileAPI/reading-data-section/Determining-Encoding.any.js @@ -1,13 +1,5 @@ - - -FileAPI Test: Blob Determining Encoding - - - - - -
- diff --git a/test/fixtures/wpt/FileAPI/reading-data-section/FileReader-event-handler-attributes.html b/test/fixtures/wpt/FileAPI/reading-data-section/FileReader-event-handler-attributes.any.js similarity index 60% rename from test/fixtures/wpt/FileAPI/reading-data-section/FileReader-event-handler-attributes.html rename to test/fixtures/wpt/FileAPI/reading-data-section/FileReader-event-handler-attributes.any.js index 86657b5711aff1..fc71c6434812e2 100644 --- a/test/fixtures/wpt/FileAPI/reading-data-section/FileReader-event-handler-attributes.html +++ b/test/fixtures/wpt/FileAPI/reading-data-section/FileReader-event-handler-attributes.any.js @@ -1,10 +1,5 @@ - - -FileReader event handler attributes - - -
- diff --git a/test/fixtures/wpt/FileAPI/reading-data-section/FileReader-multiple-reads.html b/test/fixtures/wpt/FileAPI/reading-data-section/FileReader-multiple-reads.any.js similarity index 89% rename from test/fixtures/wpt/FileAPI/reading-data-section/FileReader-multiple-reads.html rename to test/fixtures/wpt/FileAPI/reading-data-section/FileReader-multiple-reads.any.js index e7279fe4bd445e..4b19c69b425188 100644 --- a/test/fixtures/wpt/FileAPI/reading-data-section/FileReader-multiple-reads.html +++ b/test/fixtures/wpt/FileAPI/reading-data-section/FileReader-multiple-reads.any.js @@ -1,11 +1,5 @@ - -FileReader: starting new reads while one is in progress - - - - -
- diff --git a/test/fixtures/wpt/FileAPI/reading-data-section/filereader_abort.html b/test/fixtures/wpt/FileAPI/reading-data-section/filereader_abort.any.js similarity index 77% rename from test/fixtures/wpt/FileAPI/reading-data-section/filereader_abort.html rename to test/fixtures/wpt/FileAPI/reading-data-section/filereader_abort.any.js index 940a775d35bf42..c778ae55bb573b 100644 --- a/test/fixtures/wpt/FileAPI/reading-data-section/filereader_abort.html +++ b/test/fixtures/wpt/FileAPI/reading-data-section/filereader_abort.any.js @@ -1,17 +1,5 @@ - - - - - FileAPI Test: filereader_abort - - - - - - -
+// META: title=FileAPI Test: filereader_abort - - - diff --git a/test/fixtures/wpt/FileAPI/reading-data-section/filereader_error.html b/test/fixtures/wpt/FileAPI/reading-data-section/filereader_error.any.js similarity index 51% rename from test/fixtures/wpt/FileAPI/reading-data-section/filereader_error.html rename to test/fixtures/wpt/FileAPI/reading-data-section/filereader_error.any.js index cf4524825b80ca..9845962090132e 100644 --- a/test/fixtures/wpt/FileAPI/reading-data-section/filereader_error.html +++ b/test/fixtures/wpt/FileAPI/reading-data-section/filereader_error.any.js @@ -1,18 +1,5 @@ - - - - - FileAPI Test: filereader_error - - - - - - - -
+// META: title=FileAPI Test: filereader_error - - - diff --git a/test/fixtures/wpt/FileAPI/reading-data-section/filereader_readAsArrayBuffer.html b/test/fixtures/wpt/FileAPI/reading-data-section/filereader_readAsArrayBuffer.any.js similarity index 60% rename from test/fixtures/wpt/FileAPI/reading-data-section/filereader_readAsArrayBuffer.html rename to test/fixtures/wpt/FileAPI/reading-data-section/filereader_readAsArrayBuffer.any.js index 31001a51a0727f..d06e3170782b7c 100644 --- a/test/fixtures/wpt/FileAPI/reading-data-section/filereader_readAsArrayBuffer.html +++ b/test/fixtures/wpt/FileAPI/reading-data-section/filereader_readAsArrayBuffer.any.js @@ -1,17 +1,5 @@ - - - - - FileAPI Test: filereader_readAsArrayBuffer - - - - - - -
+// META: title=FileAPI Test: filereader_readAsArrayBuffer - - - diff --git a/test/fixtures/wpt/FileAPI/reading-data-section/filereader_readAsBinaryString.html b/test/fixtures/wpt/FileAPI/reading-data-section/filereader_readAsBinaryString.any.js similarity index 64% rename from test/fixtures/wpt/FileAPI/reading-data-section/filereader_readAsBinaryString.html rename to test/fixtures/wpt/FileAPI/reading-data-section/filereader_readAsBinaryString.any.js index b550e4d0a96dc7..e69ff15e75b590 100644 --- a/test/fixtures/wpt/FileAPI/reading-data-section/filereader_readAsBinaryString.html +++ b/test/fixtures/wpt/FileAPI/reading-data-section/filereader_readAsBinaryString.any.js @@ -1,11 +1,4 @@ - - -FileAPI Test: filereader_readAsBinaryString - - - - - diff --git a/test/fixtures/wpt/FileAPI/reading-data-section/filereader_readAsDataURL.html b/test/fixtures/wpt/FileAPI/reading-data-section/filereader_readAsDataURL.any.js similarity index 74% rename from test/fixtures/wpt/FileAPI/reading-data-section/filereader_readAsDataURL.html rename to test/fixtures/wpt/FileAPI/reading-data-section/filereader_readAsDataURL.any.js index 5bc39499a229d1..d6812121295bee 100644 --- a/test/fixtures/wpt/FileAPI/reading-data-section/filereader_readAsDataURL.html +++ b/test/fixtures/wpt/FileAPI/reading-data-section/filereader_readAsDataURL.any.js @@ -1,12 +1,5 @@ - - -FileAPI Test: FileReader.readAsDataURL - - - - +// META: title=FileAPI Test: FileReader.readAsDataURL - \ No newline at end of file +}, 'readAsDataURL result for Blob with unspecified MIME type'); \ No newline at end of file diff --git a/test/fixtures/wpt/FileAPI/reading-data-section/filereader_readAsText.html b/test/fixtures/wpt/FileAPI/reading-data-section/filereader_readAsText.any.js similarity index 73% rename from test/fixtures/wpt/FileAPI/reading-data-section/filereader_readAsText.html rename to test/fixtures/wpt/FileAPI/reading-data-section/filereader_readAsText.any.js index 7d639d0111473b..4d0fa113931d34 100644 --- a/test/fixtures/wpt/FileAPI/reading-data-section/filereader_readAsText.html +++ b/test/fixtures/wpt/FileAPI/reading-data-section/filereader_readAsText.any.js @@ -1,17 +1,5 @@ - - - - - FileAPI Test: filereader_readAsText - - - - - - -
+// META: title=FileAPI Test: filereader_readAsText - - - diff --git a/test/fixtures/wpt/FileAPI/reading-data-section/filereader_readystate.html b/test/fixtures/wpt/FileAPI/reading-data-section/filereader_readystate.any.js similarity index 51% rename from test/fixtures/wpt/FileAPI/reading-data-section/filereader_readystate.html rename to test/fixtures/wpt/FileAPI/reading-data-section/filereader_readystate.any.js index 1586b8995059f7..3cb36ab999653b 100644 --- a/test/fixtures/wpt/FileAPI/reading-data-section/filereader_readystate.html +++ b/test/fixtures/wpt/FileAPI/reading-data-section/filereader_readystate.any.js @@ -1,17 +1,5 @@ - - - - - FileAPI Test: filereader_readystate - - - - - - -
+// META: title=FileAPI Test: filereader_readystate - - - diff --git a/test/fixtures/wpt/FileAPI/reading-data-section/filereader_result.html b/test/fixtures/wpt/FileAPI/reading-data-section/filereader_result.any.js similarity index 87% rename from test/fixtures/wpt/FileAPI/reading-data-section/filereader_result.html rename to test/fixtures/wpt/FileAPI/reading-data-section/filereader_result.any.js index b80322ed424f83..28c068bb349c3d 100644 --- a/test/fixtures/wpt/FileAPI/reading-data-section/filereader_result.html +++ b/test/fixtures/wpt/FileAPI/reading-data-section/filereader_result.any.js @@ -1,17 +1,5 @@ - - - - - FileAPI Test: filereader_result - - - - - - -
- - - - diff --git a/test/fixtures/wpt/FileAPI/support/Blob.js b/test/fixtures/wpt/FileAPI/support/Blob.js index 04069acd3ccbe7..2c249746858918 100644 --- a/test/fixtures/wpt/FileAPI/support/Blob.js +++ b/test/fixtures/wpt/FileAPI/support/Blob.js @@ -1,6 +1,6 @@ 'use strict' -function test_blob(fn, expectations) { +self.test_blob = (fn, expectations) => { var expected = expectations.expected, type = expectations.type, desc = expectations.desc; @@ -24,7 +24,7 @@ function test_blob(fn, expectations) { }); } -function test_blob_binary(fn, expectations) { +self.test_blob_binary = (fn, expectations) => { var expected = expectations.expected, type = expectations.type, desc = expectations.desc; diff --git a/test/fixtures/wpt/FileAPI/support/empty-document.html b/test/fixtures/wpt/FileAPI/support/empty-document.html new file mode 100644 index 00000000000000..b9cd130a07f77e --- /dev/null +++ b/test/fixtures/wpt/FileAPI/support/empty-document.html @@ -0,0 +1,3 @@ + + + diff --git a/test/fixtures/wpt/FileAPI/support/send-file-formdata-helper.js b/test/fixtures/wpt/FileAPI/support/send-file-formdata-helper.js index 53572ef36c8d1b..53c8cca7e09b8e 100644 --- a/test/fixtures/wpt/FileAPI/support/send-file-formdata-helper.js +++ b/test/fixtures/wpt/FileAPI/support/send-file-formdata-helper.js @@ -70,19 +70,21 @@ const formDataPostFileUploadTest = ({ }`, ); - const asName = fileBaseName.replace(/[\r\n"]/g, encodeURIComponent); + const asValue = fileBaseName.replace(/\r\n?|\n/g, "\r\n"); + const asName = asValue.replace(/[\r\n"]/g, encodeURIComponent); + const asFilename = fileBaseName.replace(/[\r\n"]/g, encodeURIComponent); const expectedText = [ boundary, 'Content-Disposition: form-data; name="filename"', "", - fileBaseName, + asValue, boundary, `Content-Disposition: form-data; name="${asName}"`, "", "filename", boundary, `Content-Disposition: form-data; name="file"; ` + - `filename="${asName}"`, + `filename="${asFilename}"`, "Content-Type: text/plain", "", kTestChars, diff --git a/test/fixtures/wpt/FileAPI/url/cross-global-revoke.sub.html b/test/fixtures/wpt/FileAPI/url/cross-global-revoke.sub.html index 21b8c5bb1986d5..ce9d680709e058 100644 --- a/test/fixtures/wpt/FileAPI/url/cross-global-revoke.sub.html +++ b/test/fixtures/wpt/FileAPI/url/cross-global-revoke.sub.html @@ -2,6 +2,7 @@ + \ No newline at end of file + diff --git a/test/fixtures/wpt/FileAPI/url/url-format.any.js b/test/fixtures/wpt/FileAPI/url/url-format.any.js index 33732fa61fc3dd..69c51113e6b99b 100644 --- a/test/fixtures/wpt/FileAPI/url/url-format.any.js +++ b/test/fixtures/wpt/FileAPI/url/url-format.any.js @@ -2,10 +2,16 @@ const blob = new Blob(['test']); const file = new File(['test'], 'name'); -test(() => { +test(t => { const url_count = 5000; let list = []; + t.add_cleanup(() => { + for (let url of list) { + URL.revokeObjectURL(url); + } + }); + for (let i = 0; i < url_count; ++i) list.push(URL.createObjectURL(blob)); diff --git a/test/fixtures/wpt/FileAPI/url/url-with-fetch.any.js b/test/fixtures/wpt/FileAPI/url/url-with-fetch.any.js index 9bd8d383df4e1e..54e6a3da5afe9e 100644 --- a/test/fixtures/wpt/FileAPI/url/url-with-fetch.any.js +++ b/test/fixtures/wpt/FileAPI/url/url-with-fetch.any.js @@ -1,4 +1,5 @@ // META: script=resources/fetch-tests.js +// META: script=/common/gc.js function fetch_should_succeed(test, request) { return fetch(request).then(response => response.text()); @@ -37,6 +38,24 @@ promise_test(t => { }); }, 'Revoke blob URL after creating Request, will fetch'); +promise_test(async t => { + const blob_contents = 'test blob contents'; + const blob = new Blob([blob_contents]); + const url = URL.createObjectURL(blob); + let request = new Request(url); + + // Revoke the object URL. Request should take a reference to the blob as + // soon as it receives it in open(), so the request succeeds even though we + // revoke the URL before calling fetch(). + URL.revokeObjectURL(url); + + request = request.clone(); + await garbageCollect(); + + const text = await fetch_should_succeed(t, request); + assert_equals(text, blob_contents); +}, 'Revoke blob URL after creating Request, then clone Request, will fetch'); + promise_test(function(t) { const blob_contents = 'test blob contents'; const blob = new Blob([blob_contents]); diff --git a/test/fixtures/wpt/README.md b/test/fixtures/wpt/README.md index 98b9369b88c322..1c365ca20ff1b8 100644 --- a/test/fixtures/wpt/README.md +++ b/test/fixtures/wpt/README.md @@ -10,14 +10,13 @@ See [test/wpt](../../wpt/README.md) for information on how these tests are run. Last update: -- common: https://github.com/web-platform-tests/wpt/tree/03c5072aff/common +- common: https://github.com/web-platform-tests/wpt/tree/dbd648158d/common - console: https://github.com/web-platform-tests/wpt/tree/767ae35464/console - dom/abort: https://github.com/web-platform-tests/wpt/tree/8fadb38120/dom/abort - dom/events: https://github.com/web-platform-tests/wpt/tree/ab8999891c/dom/events - encoding: https://github.com/web-platform-tests/wpt/tree/0c1b9d1622/encoding - fetch/data-urls/resources: https://github.com/web-platform-tests/wpt/tree/7c79d998ff/fetch/data-urls/resources -- FileAPI: https://github.com/web-platform-tests/wpt/tree/3b279420d4/FileAPI -- FileAPI/file: https://github.com/web-platform-tests/wpt/tree/c01f637cca/FileAPI/file +- FileAPI: https://github.com/web-platform-tests/wpt/tree/1e432c4550/FileAPI - hr-time: https://github.com/web-platform-tests/wpt/tree/34cafd797e/hr-time - html/webappapis/atob: https://github.com/web-platform-tests/wpt/tree/f267e1dca6/html/webappapis/atob - html/webappapis/microtask-queuing: https://github.com/web-platform-tests/wpt/tree/2c5c3c4c27/html/webappapis/microtask-queuing @@ -26,14 +25,15 @@ Last update: - interfaces: https://github.com/web-platform-tests/wpt/tree/df731dab88/interfaces - performance-timeline: https://github.com/web-platform-tests/wpt/tree/17ebc3aea0/performance-timeline - resource-timing: https://github.com/web-platform-tests/wpt/tree/22d38586d0/resource-timing -- resources: https://github.com/web-platform-tests/wpt/tree/fbf1e7d247/resources -- streams: https://github.com/web-platform-tests/wpt/tree/9e5ef42bd3/streams +- resources: https://github.com/web-platform-tests/wpt/tree/919874f84f/resources +- streams: https://github.com/web-platform-tests/wpt/tree/51750bc8d7/streams - url: https://github.com/web-platform-tests/wpt/tree/1eaeb0e178/url - user-timing: https://github.com/web-platform-tests/wpt/tree/df24fb604e/user-timing - wasm/jsapi: https://github.com/web-platform-tests/wpt/tree/d8dbe6990b/wasm/jsapi - wasm/webapi: https://github.com/web-platform-tests/wpt/tree/fd1b23eeaa/wasm/webapi - WebCryptoAPI: https://github.com/web-platform-tests/wpt/tree/238d9d9bac/WebCryptoAPI - webidl/ecmascript-binding/es-exceptions: https://github.com/web-platform-tests/wpt/tree/a370aad338/webidl/ecmascript-binding/es-exceptions +- webmessaging/broadcastchannel: https://github.com/web-platform-tests/wpt/tree/e97fac4791/webmessaging/broadcastchannel [Web Platform Tests]: https://github.com/web-platform-tests/wpt [`git node wpt`]: https://github.com/nodejs/node-core-utils/blob/main/docs/git-node.md#git-node-wpt diff --git a/test/fixtures/wpt/common/custom-cors-response.js b/test/fixtures/wpt/common/custom-cors-response.js new file mode 100644 index 00000000000000..be9c7ce3bdc3c9 --- /dev/null +++ b/test/fixtures/wpt/common/custom-cors-response.js @@ -0,0 +1,32 @@ +const custom_cors_response = (payload, base_url) => { + base_url = base_url || new URL(location.href); + + // Clone the given `payload` so that, as we modify it, we won't be mutating + // the caller's value in unexpected ways. + payload = Object.assign({}, payload); + payload.headers = payload.headers || {}; + // Note that, in order to have out-of-the-box support for tests that don't + // call `setup({'allow_uncaught_exception': true})` we return a no-op JS + // payload. This approach will avoid hitting syntax errors if the resource is + // interpreted as script. Without this workaround, the SyntaxError would be + // caught by the test harness and trigger a test failure. + payload.content = payload.content || '/* custom-cors-response.js content */'; + payload.status_code = payload.status_code || 200; + + // Assume that we'll be doing a CORS-enabled fetch so we'll need to set ACAO. + const acao = "Access-Control-Allow-Origin"; + if (!(acao in payload.headers)) { + payload.headers[acao] = '*'; + } + + if (!("Content-Type" in payload.headers)) { + payload.headers["Content-Type"] = "text/javascript"; + } + + let ret = new URL("/common/CustomCorsResponse.py", base_url); + for (const key in payload) { + ret.searchParams.append(key, JSON.stringify(payload[key])); + } + + return ret; +}; diff --git a/test/fixtures/wpt/common/dispatcher/README.md b/test/fixtures/wpt/common/dispatcher/README.md new file mode 100644 index 00000000000000..cfaafb6e5d6496 --- /dev/null +++ b/test/fixtures/wpt/common/dispatcher/README.md @@ -0,0 +1,228 @@ +# `RemoteContext`: API for script execution in another context + +`RemoteContext` in `/common/dispatcher/dispatcher.js` provides an interface to +execute JavaScript in another global object (page or worker, the "executor"), +based on: + +- [WPT RFC 88: context IDs from uuid searchParams in URL](https://github.com/web-platform-tests/rfcs/pull/88), +- [WPT RFC 89: execute_script](https://github.com/web-platform-tests/rfcs/pull/89) and +- [WPT RFC 91: RemoteContext](https://github.com/web-platform-tests/rfcs/pull/91). + +Tests can send arbitrary javascript to executors to evaluate in its global +object, like: + +``` +// injector.html +const argOnLocalContext = ...; + +async function execute() { + window.open('executor.html?uuid=' + uuid); + const ctx = new RemoteContext(uuid); + await ctx.execute_script( + (arg) => functionOnRemoteContext(arg), + [argOnLocalContext]); +}; +``` + +and on executor: + +``` +// executor.html +function functionOnRemoteContext(arg) { ... } + +const uuid = new URLSearchParams(window.location.search).get('uuid'); +const executor = new Executor(uuid); +``` + +For concrete examples, see +[events.html](../../html/browsers/browsing-the-web/back-forward-cache/events.html) +and +[executor.html](../../html/browsers/browsing-the-web/back-forward-cache/resources/executor.html) +in back-forward cache tests. + +Note that `executor*` files under `/common/dispatcher/` are NOT for +`RemoteContext.execute_script()`. Use `remote-executor.html` instead. + +This is universal and avoids introducing many specific `XXX-helper.html` +resources. +Moreover, tests are easier to read, because the whole logic of the test can be +defined in a single file. + +## `new RemoteContext(uuid)` + +- `uuid` is a UUID string that identifies the remote context and should match + with the `uuid` parameter of the URL of the remote context. +- Callers should create the remote context outside this constructor (e.g. + `window.open('executor.html?uuid=' + uuid)`). + +## `RemoteContext.execute_script(fn, args)` + +- `fn` is a JavaScript function to execute on the remote context, which is + converted to a string using `toString()` and sent to the remote context. +- `args` is null or an array of arguments to pass to the function on the + remote context. Arguments are passed as JSON. +- If the return value of `fn` when executed in the remote context is a promise, + the promise returned by `execute_script` resolves to the resolved value of + that promise. Otherwise the `execute_script` promise resolves to the return + value of `fn`. + +Note that `fn` is evaluated on the remote context (`executor.html` in the +example above), while `args` are evaluated on the caller context +(`injector.html`) and then passed to the remote context. + +## Return value of injected functions and `execute_script()` + +If the return value of the injected function when executed in the remote +context is a promise, the promise returned by `execute_script` resolves to the +resolved value of that promise. Otherwise the `execute_script` promise resolves +to the return value of the function. + +When the return value of an injected script is a Promise, it should be resolved +before any navigation starts on the remote context. For example, it shouldn't +be resolved after navigating out and navigating back to the page again. +It's fine to create a Promise to be resolved after navigations, if it's not the +return value of the injected function. + +## Calling timing of `execute_script()` + +When `RemoteContext.execute_script()` is called when the remote context is not +active (for example before it is created, before navigation to the page, or +during the page is in back-forward cache), the injected script is evaluated +after the remote context becomes active. + +Multiple calls to `RemoteContext.execute_script()` will result in multiple scripts +being executed in remote context and ordering will be maintained. + +## Errors from `execute_script()` + +Errors from `execute_script()` will result in promise rejections, so it is +important to await the result. This can be `await ctx.execute_script(...)` for +every call but if there are multiple scripts to executed, it may be preferable +to wait on them in parallel to avoid incurring full round-trip time for each, +e.g. + +```js +await Promise.all( + ctx1.execute_script(...), + ctx1.execute_script(...), + ctx2.execute_script(...), + ctx2.execute_script(...), + ... +) +``` + +## Evaluation timing of injected functions + +The script injected by `RemoteContext.execute_script()` can be evaluated any +time during the remote context is active. +For example, even before DOMContentLoaded events or even during navigation. +It's the responsibility of test-specific code/helpers to ensure evaluation +timing constraints (which can be also test-specific), if any needed. + +### Ensuring evaluation timing around page load + +For example, to ensure that injected functions (`mainFunction` below) are +evaluated after the first `pageshow` event, we can use pure JavaScript code +like below: + +``` +// executor.html +window.pageShowPromise = new Promise(resolve => + window.addEventListener('pageshow', resolve, {once: true})); + + +// injector.html +const waitForPageShow = async () => { + while (!window.pageShowPromise) { + await new Promise(resolve => setTimeout(resolve, 100)); + } + await window.pageShowPromise; +}; + +await ctx.execute(waitForPageShow); +await ctx.execute(mainFunction); +``` + +### Ensuring evaluation timing around navigation out/unloading + +It can be important to ensure there are no injected functions nor code behind +`RemoteContext` (such as Fetch APIs accessing server-side stash) running after +navigation is initiated, for example in the case of back-forward cache testing. + +To ensure this, + +- Do not call the next `RemoteContext.execute()` for the remote context after + triggering the navigation, until we are sure that the remote context is not + active (e.g. after we confirm that the new page is loaded). +- Call `Executor.suspend(callback)` synchronously within the injected script. + This suspends executor-related code, and calls `callback` when it is ready + to start navigation. + +The code on the injector side would be like: + +``` +// injector.html +await ctx.execute_script(() => { + executor.suspend(() => { + location.href = 'new-url.html'; + }); +}); +``` + +## Future Work: Possible integration with `test_driver` + +Currently `RemoteContext` is implemented by JavaScript and WPT-server-side +stash, and not integrated with `test_driver` nor `testharness`. +There is a proposal of `test_driver`-integrated version (see the RFCs listed +above). + +The API semantics and guidelines in this document are designed to be applicable +to both the current stash-based `RemoteContext` and `test_driver`-based +version, and thus the tests using `RemoteContext` will be migrated with minimum +modifications (mostly in `/common/dispatcher/dispatcher.js` and executors), for +example in a +[draft CL](https://chromium-review.googlesource.com/c/chromium/src/+/3082215/). + + +# `send()`/`receive()` Message passing APIs + +`dispatcher.js` (and its server-side backend `dispatcher.py`) provides a +universal queue-based message passing API. +Each queue is identified by a UUID, and accessed via the following APIs: + +- `send(uuid, message)` pushes a string `message` to the queue `uuid`. +- `receive(uuid)` pops the first item from the queue `uuid`. +- `showRequestHeaders(origin, uuid)` and + `cacheableShowRequestHeaders(origin, uuid)` return URLs, that push request + headers to the queue `uuid` upon fetching. + +It works cross-origin, and even access different browser context groups. + +Messages are queued, this means one doesn't need to wait for the receiver to +listen, before sending the first message +(but still need to wait for the resolution of the promise returned by `send()` +to ensure the order between `send()`s). + +## Executors + +Similar to `RemoteContext.execute_script()`, `send()`/`receive()` can be used +for sending arbitrary javascript to be evaluated in another page or worker. + +- `executor.html` (as a Document), +- `executor-worker.js` (as a Web Worker), and +- `executor-service-worker.js` (as a Service Worker) + +are examples of executors. +Note that these executors are NOT compatible with +`RemoteContext.execute_script()`. + +## Future Work + +`send()`, `receive()` and the executors below are kept for COEP/COOP tests. + +For remote script execution, new tests should use +`RemoteContext.execute_script()` instead. + +For message passing, +[WPT RFC 90](https://github.com/web-platform-tests/rfcs/pull/90) is still under +discussion. diff --git a/test/fixtures/wpt/common/dispatcher/dispatcher.js b/test/fixtures/wpt/common/dispatcher/dispatcher.js new file mode 100644 index 00000000000000..a0f9f43e622483 --- /dev/null +++ b/test/fixtures/wpt/common/dispatcher/dispatcher.js @@ -0,0 +1,256 @@ +// Define a universal message passing API. It works cross-origin and across +// browsing context groups. +const dispatcher_path = "/common/dispatcher/dispatcher.py"; +const dispatcher_url = new URL(dispatcher_path, location.href).href; + +// Return a promise, limiting the number of concurrent accesses to a shared +// resources to |max_concurrent_access|. +const concurrencyLimiter = (max_concurrency) => { + let pending = 0; + let waiting = []; + return async (task) => { + pending++; + if (pending > max_concurrency) + await new Promise(resolve => waiting.push(resolve)); + let result = await task(); + pending--; + waiting.shift()?.(); + return result; + }; +} + +// Wait for a random amount of time in the range [10ms,100ms]. +const randomDelay = () => { + return new Promise(resolve => setTimeout(resolve, 10 + 90*Math.random())); +} + +// Sending too many requests in parallel causes congestion. Limiting it improves +// throughput. +// +// Note: The following table has been determined on the test: +// ../cache-storage.tentative.https.html +// using Chrome with a 64 core CPU / 64GB ram, in release mode: +// ┌───────────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬────┐ +// │concurrency│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 10│ 15│ 20│ 30│ 50│ 100│ +// ├───────────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼────┤ +// │time (s) │ 54│ 38│ 31│ 29│ 26│ 24│ 22│ 22│ 22│ 22│ 34│ 36 │ +// └───────────┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴────┘ +const limiter = concurrencyLimiter(6); + +// While requests to different remote contexts can go in parallel, we need to +// ensure that requests to each remote context are done in order. This maps a +// uuid to a queue of requests to send. A queue is processed until it is empty +// and then is deleted from the map. +const sendQueues = new Map(); + +// Sends a single item (with rate-limiting) and calls the associated resolver +// when it is successfully sent. +const sendItem = async function (uuid, resolver, message) { + await limiter(async () => { + // Requests might be dropped. Retry until getting a confirmation it has been + // processed. + while(1) { + try { + let response = await fetch(dispatcher_url + `?uuid=${uuid}`, { + method: 'POST', + body: message + }) + if (await response.text() == "done") { + resolver(); + return; + } + } catch (fetch_error) {} + await randomDelay(); + }; + }); +} + +// While the queue is non-empty, send the next item. This is async and new items +// may be added to the queue while others are being sent. +const processQueue = async function (uuid, queue) { + while (queue.length) { + const [resolver, message] = queue.shift(); + await sendItem(uuid, resolver, message); + } + // The queue is empty, delete it. + sendQueues.delete(uuid); +} + +const send = async function (uuid, message) { + const itemSentPromise = new Promise((resolve) => { + const item = [resolve, message]; + if (sendQueues.has(uuid)) { + // There is already a queue for `uuid`, just add to it and it will be processed. + sendQueues.get(uuid).push(item); + } else { + // There is no queue for `uuid`, create it and start processing. + const queue = [item]; + sendQueues.set(uuid, queue); + processQueue(uuid, queue); + } + }); + // Wait until the item has been successfully sent. + await itemSentPromise; +} + +const receive = async function (uuid) { + while(1) { + let data = "not ready"; + try { + data = await limiter(async () => { + let response = await fetch(dispatcher_url + `?uuid=${uuid}`); + return await response.text(); + }); + } catch (fetch_error) {} + + if (data == "not ready") { + await randomDelay(); + continue; + } + + return data; + } +} + +// Returns an URL. When called, the server sends toward the `uuid` queue the +// request headers. Useful for determining if something was requested with +// Cookies. +const showRequestHeaders = function(origin, uuid) { + return origin + dispatcher_path + `?uuid=${uuid}&show-headers`; +} + +// Same as above, except for the response is cacheable. +const cacheableShowRequestHeaders = function(origin, uuid) { + return origin + dispatcher_path + `?uuid=${uuid}&cacheable&show-headers`; +} + +// This script requires +// - `/common/utils.js` for `token()`. + +// Returns the URL of a document that can be used as a `RemoteContext`. +// +// `uuid` should be a UUID uniquely identifying the given remote context. +// `options` has the following shape: +// +// { +// host: (optional) Sets the returned URL's `host` property. Useful for +// cross-origin executors. +// protocol: (optional) Sets the returned URL's `protocol` property. +// } +function remoteExecutorUrl(uuid, options) { + const url = new URL("/common/dispatcher/remote-executor.html", location); + url.searchParams.set("uuid", uuid); + + if (options?.host) { + url.host = options.host; + } + + if (options?.protocol) { + url.protocol = options.protocol; + } + + return url; +} + +// Represents a remote executor. For more detailed explanation see `README.md`. +class RemoteContext { + // `uuid` is a UUID string that identifies the remote context and should + // match with the `uuid` parameter of the URL of the remote context. + constructor(uuid) { + this.context_id = uuid; + } + + // Evaluates the script `expr` on the executor. + // - If `expr` is evaluated to a Promise that is resolved with a value: + // `execute_script()` returns a Promise resolved with the value. + // - If `expr` is evaluated to a non-Promise value: + // `execute_script()` returns a Promise resolved with the value. + // - If `expr` throws an error or is evaluated to a Promise that is rejected: + // `execute_script()` returns a rejected Promise with the error's + // `message`. + // Note that currently the type of error (e.g. DOMException) is not + // preserved, except for `TypeError`. + // The values should be able to be serialized by JSON.stringify(). + async execute_script(fn, args) { + const receiver = token(); + await this.send({receiver: receiver, fn: fn.toString(), args: args}); + const response = JSON.parse(await receive(receiver)); + if (response.status === 'success') { + return response.value; + } + + // exception + if (response.name === 'TypeError') { + throw new TypeError(response.value); + } + throw new Error(response.value); + } + + async send(msg) { + return await send(this.context_id, JSON.stringify(msg)); + } +}; + +class Executor { + constructor(uuid) { + this.uuid = uuid; + + // If `suspend_callback` is not `null`, the executor should be suspended + // when there are no ongoing tasks. + this.suspend_callback = null; + + this.execute(); + } + + // Wait until there are no ongoing tasks nor fetch requests for polling + // tasks, and then suspend the executor and call `callback()`. + // Navigation from the executor page should be triggered inside `callback()`, + // to avoid conflict with in-flight fetch requests. + suspend(callback) { + this.suspend_callback = callback; + } + + resume() { + } + + async execute() { + while(true) { + if (this.suspend_callback !== null) { + this.suspend_callback(); + this.suspend_callback = null; + // Wait for `resume()` to be called. + await new Promise(resolve => this.resume = resolve); + + // Workaround for https://crbug.com/1244230. + // Without this workaround, the executor is resumed and the fetch + // request to poll the next task is initiated synchronously from + // pageshow event after the page restored from BFCache, and the fetch + // request promise is never resolved (and thus the test results in + // timeout) due to https://crbug.com/1244230. The root cause is not yet + // known, but setTimeout() with 0ms causes the resume triggered on + // another task and seems to resolve the issue. + await new Promise(resolve => setTimeout(resolve, 0)); + + continue; + } + + const task = JSON.parse(await receive(this.uuid)); + + let response; + try { + const value = await eval(task.fn).apply(null, task.args); + response = JSON.stringify({ + status: 'success', + value: value + }); + } catch(e) { + response = JSON.stringify({ + status: 'exception', + name: e.name, + value: e.message + }); + } + await send(task.receiver, response); + } + } +} diff --git a/test/fixtures/wpt/common/dispatcher/executor-service-worker.js b/test/fixtures/wpt/common/dispatcher/executor-service-worker.js new file mode 100644 index 00000000000000..0b47d66b65f066 --- /dev/null +++ b/test/fixtures/wpt/common/dispatcher/executor-service-worker.js @@ -0,0 +1,24 @@ +importScripts('./dispatcher.js'); + +const params = new URLSearchParams(location.search); +const uuid = params.get('uuid'); + +// The fetch handler must be registered before parsing the main script response. +// So do it here, for future use. +fetchHandler = () => {} +addEventListener('fetch', e => { + fetchHandler(e); +}); + +// Force ServiceWorker to immediately activate itself. +addEventListener('install', event => { + skipWaiting(); +}); + +let executeOrders = async function() { + while(true) { + let task = await receive(uuid); + eval(`(async () => {${task}})()`); + } +}; +executeOrders(); diff --git a/test/fixtures/wpt/common/dispatcher/executor-worker.js b/test/fixtures/wpt/common/dispatcher/executor-worker.js new file mode 100644 index 00000000000000..ea065a6bf11955 --- /dev/null +++ b/test/fixtures/wpt/common/dispatcher/executor-worker.js @@ -0,0 +1,12 @@ +importScripts('./dispatcher.js'); + +const params = new URLSearchParams(location.search); +const uuid = params.get('uuid'); + +let executeOrders = async function() { + while(true) { + let task = await receive(uuid); + eval(`(async () => {${task}})()`); + } +}; +executeOrders(); diff --git a/test/fixtures/wpt/common/dispatcher/executor.html b/test/fixtures/wpt/common/dispatcher/executor.html new file mode 100644 index 00000000000000..5fe6a95efaf97d --- /dev/null +++ b/test/fixtures/wpt/common/dispatcher/executor.html @@ -0,0 +1,15 @@ + + diff --git a/test/fixtures/wpt/common/dispatcher/remote-executor.html b/test/fixtures/wpt/common/dispatcher/remote-executor.html new file mode 100644 index 00000000000000..8b0030390d0d19 --- /dev/null +++ b/test/fixtures/wpt/common/dispatcher/remote-executor.html @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/test/fixtures/wpt/common/gc.js b/test/fixtures/wpt/common/gc.js new file mode 100644 index 00000000000000..ac43a4cfaf7735 --- /dev/null +++ b/test/fixtures/wpt/common/gc.js @@ -0,0 +1,52 @@ +/** + * Does a best-effort attempt at invoking garbage collection. Attempts to use + * the standardized `TestUtils.gc()` function, but falls back to other + * environment-specific nonstandard functions, with a final result of just + * creating a lot of garbage (in which case you will get a console warning). + * + * This should generally only be used to attempt to trigger bugs and crashes + * inside tests, i.e. cases where if garbage collection happened, then this + * should not trigger some misbehavior. You cannot rely on garbage collection + * successfully trigger, or that any particular unreachable object will be + * collected. + * + * @returns {Promise} A promise you should await to ensure garbage + * collection has had a chance to complete. + */ +self.garbageCollect = async () => { + // https://testutils.spec.whatwg.org/#the-testutils-namespace + if (self.TestUtils?.gc) { + return TestUtils.gc(); + } + + // Use --expose_gc for V8 (and Node.js) + // to pass this flag at chrome launch use: --js-flags="--expose-gc" + // Exposed in SpiderMonkey shell as well + if (self.gc) { + return self.gc(); + } + + // Present in some WebKit development environments + if (self.GCController) { + return GCController.collect(); + } + + console.warn( + 'Tests are running without the ability to do manual garbage collection. ' + + 'They will still work, but coverage will be suboptimal.'); + + for (var i = 0; i < 1000; i++) { + gcRec(10); + } + + function gcRec(n) { + if (n < 1) { + return {}; + } + + let temp = { i: "ab" + i + i / 100000 }; + temp += "foo"; + + gcRec(n - 1); + } +}; diff --git a/test/fixtures/wpt/common/media.js b/test/fixtures/wpt/common/media.js index e9b1e6b0fbe6ae..f2dc8612660495 100644 --- a/test/fixtures/wpt/common/media.js +++ b/test/fixtures/wpt/common/media.js @@ -47,9 +47,9 @@ function getMediaContentType(url) { var extension = new URL(url, location).pathname.split(".").pop(); var map = { "mp4": "video/mp4", - "ogv": "video/ogg", + "ogv": "application/ogg", "mp3": "audio/mp3", - "oga": "audio/ogg", + "oga": "application/ogg", }; return map[extension]; } diff --git a/test/fixtures/wpt/common/object-association.js b/test/fixtures/wpt/common/object-association.js index 458aae67db0cef..669c17c07b1ae5 100644 --- a/test/fixtures/wpt/common/object-association.js +++ b/test/fixtures/wpt/common/object-association.js @@ -1,58 +1,64 @@ "use strict"; -// For now this only has per-Window tests, but we could expand it to also test per-Document +// This is for testing whether an object (e.g., a global property) is associated with Window, or +// with Document. Recall that Window and Document are 1:1 except when doing a same-origin navigation +// away from the initial about:blank. In that case the Window object gets reused for the new +// Document. +// +// So: +// - If something is per-Window, then it should maintain its identity across an about:blank +// navigation. +// - If something is per-Document, then it should be recreated across an about:blank navigation. -/** - * Run tests for window[propertyName] after discarding the browsing context, navigating, etc. - * @param {string} propertyName - */ window.testIsPerWindow = propertyName => { - test(t => { + runTests(propertyName, assert_equals, "must not"); +}; + +window.testIsPerDocument = propertyName => { + runTests(propertyName, assert_not_equals, "must"); +}; + +function runTests(propertyName, equalityOrInequalityAsserter, mustOrMustNotReplace) { + async_test(t => { const iframe = document.createElement("iframe"); document.body.appendChild(iframe); const frame = iframe.contentWindow; const before = frame[propertyName]; - assert_true(before !== undefined && before !== null, `window.${propertyName} must be implemented`); + assert_implements(before, `window.${propertyName} must be implemented`); - iframe.remove(); + iframe.onload = t.step_func_done(() => { + const after = frame[propertyName]; + equalityOrInequalityAsserter(after, before); + }); - const after = frame[propertyName]; - assert_equals(after, before, `window.${propertyName} should not change after iframe.remove()`); - }, `Discarding the browsing context must not change window.${propertyName}`); + iframe.src = "/common/blank.html"; + }, `Navigating from the initial about:blank ${mustOrMustNotReplace} replace window.${propertyName}`); - async_test(t => { + // Per spec, discarding a browsing context should not change any of the global objects. + test(() => { const iframe = document.createElement("iframe"); document.body.appendChild(iframe); const frame = iframe.contentWindow; const before = frame[propertyName]; - assert_true(before !== undefined && before !== null, `window.${propertyName} must be implemented`); - - // Note: cannot use step_func_done for this because it might be called twice, per the below comment. - iframe.onload = t.step_func(() => { - if (frame.location.href === "about:blank") { - // Browsers are not reliable on whether about:blank fires the load event; see - // https://github.com/whatwg/html/issues/490 - return; - } + assert_implements(before, `window.${propertyName} must be implemented`); - const after = frame[propertyName]; - assert_equals(after, before); - t.done(); - }); + iframe.remove(); - iframe.src = "/common/blank.html"; - }, `Navigating from the initial about:blank must not replace window.${propertyName}`); + const after = frame[propertyName]; + assert_equals(after, before, `window.${propertyName} should not change after iframe.remove()`); + }, `Discarding the browsing context must not change window.${propertyName}`); - // Per spec, document.open() should not change any of the Window state. + // Per spec, document.open() should not change any of the global objects. In historical versions + // of the spec, it did, so we test here. async_test(t => { const iframe = document.createElement("iframe"); iframe.onload = t.step_func_done(() => { const frame = iframe.contentWindow; const before = frame[propertyName]; - assert_true(before !== undefined && before !== null, `window.${propertyName} must be implemented`); + assert_implements(before, `window.${propertyName} must be implemented`); frame.document.open(); @@ -64,5 +70,5 @@ window.testIsPerWindow = propertyName => { iframe.src = "/common/blank.html"; document.body.appendChild(iframe); - }, `document.open() must replace window.${propertyName}`); -}; + }, `document.open() must not replace window.${propertyName}`); +} diff --git a/test/fixtures/wpt/common/proxy-all.sub.pac b/test/fixtures/wpt/common/proxy-all.sub.pac new file mode 100644 index 00000000000000..de601e5d7020e0 --- /dev/null +++ b/test/fixtures/wpt/common/proxy-all.sub.pac @@ -0,0 +1,3 @@ +function FindProxyForURL(url, host) { + return "PROXY {{host}}:{{ports[http][0]}}" +} diff --git a/test/fixtures/wpt/common/reftest-wait.js b/test/fixtures/wpt/common/reftest-wait.js index 0a30a197f07f4d..64fe9bfd7f54ae 100644 --- a/test/fixtures/wpt/common/reftest-wait.js +++ b/test/fixtures/wpt/common/reftest-wait.js @@ -18,3 +18,22 @@ function takeScreenshotDelayed(timeout) { takeScreenshot(); }, timeout); } + +/** + * Ensure that a precondition is met before waiting for a screenshot. + * @param {bool} condition - Fail the test if this evaluates to false + * @param {string} msg - Error message to write to the screenshot + */ +function failIfNot(condition, msg) { + const fail = () => { + (document.body || document.documentElement).textContent = `Precondition Failed: ${msg}`; + takeScreenshot(); + }; + if (!condition) { + if (document.readyState == "interactive") { + fail(); + } else { + document.addEventListener("DOMContentLoaded", fail, false); + } + } +} diff --git a/test/fixtures/wpt/common/sab.js b/test/fixtures/wpt/common/sab.js index 47d12970d393c1..a3ea610e165d0d 100644 --- a/test/fixtures/wpt/common/sab.js +++ b/test/fixtures/wpt/common/sab.js @@ -6,14 +6,14 @@ const createBuffer = (() => { } catch(e) { sabConstructor = null; } - return (type, length) => { + return (type, length, opts) => { if (type === "ArrayBuffer") { - return new ArrayBuffer(length); + return new ArrayBuffer(length, opts); } else if (type === "SharedArrayBuffer") { if (sabConstructor && sabConstructor.name !== "SharedArrayBuffer") { throw new Error("WebAssembly.Memory does not support shared:true"); } - return new sabConstructor(length); + return new sabConstructor(length, opts); } else { throw new Error("type has to be ArrayBuffer or SharedArrayBuffer"); } diff --git a/test/fixtures/wpt/common/security-features/resources/common.sub.js b/test/fixtures/wpt/common/security-features/resources/common.sub.js index 402ce9bbacf347..96ca280597bf29 100644 --- a/test/fixtures/wpt/common/security-features/resources/common.sub.js +++ b/test/fixtures/wpt/common/security-features/resources/common.sub.js @@ -485,9 +485,13 @@ function dedicatedWorkerUrlThatFetches(url) { .catch((e) => postMessage(e.message));`; } -function workerUrlThatImports(url) { +function workerUrlThatImports(url, additionalAttributes) { + let csp = ""; + if (additionalAttributes && additionalAttributes.contentSecurityPolicy) { + csp=`&contentSecurityPolicy=${additionalAttributes.contentSecurityPolicy}`; + } return `/common/security-features/subresource/static-import.py` + - `?import_url=${encodeURIComponent(url)}`; + `?import_url=${encodeURIComponent(url)}${csp}`; } function workerDataUrlThatImports(url) { @@ -630,6 +634,24 @@ function requestViaScript(url, additionalAttributes) { .then(event => wrapResult(event.data)); } +/** + * Creates a new script element that performs a dynamic import to `url`, and + * appends the script element to {@code document.body}. + * @param {string} url The src URL. + * @return {Promise} The promise for success/error events. + */ +function requestViaDynamicImport(url, additionalAttributes) { + const scriptUrl = `data:text/javascript,import("${url}");`; + const script = createElement( + "script", + Object.assign({"src": scriptUrl}, additionalAttributes), + document.body, + false); + + return bindEvents2(window, "message", script, "error", window, "error") + .then(event => wrapResult(event.data)); +} + /** * Creates a new form element, sets attributes, appends it to * {@code document.body} and submits the form. @@ -866,6 +888,10 @@ const subresourceMap = { path: "/common/security-features/subresource/script.py", invoker: requestViaScript, }, + "script-tag-dynamic-import": { + path: "/common/security-features/subresource/script.py", + invoker: requestViaDynamicImport, + }, "video-tag": { path: "/common/security-features/subresource/video.py", invoker: requestViaVideo, @@ -885,8 +911,8 @@ const subresourceMap = { }, "worker-import": { path: "/common/security-features/subresource/worker.py", - invoker: url => - requestViaDedicatedWorker(workerUrlThatImports(url), {type: "module"}), + invoker: (url, additionalAttributes) => + requestViaDedicatedWorker(workerUrlThatImports(url, additionalAttributes), {type: "module"}), }, "worker-import-data": { path: "/common/security-features/subresource/worker.py", @@ -903,8 +929,8 @@ const subresourceMap = { }, "sharedworker-import": { path: "/common/security-features/subresource/shared-worker.py", - invoker: url => - requestViaSharedWorker(workerUrlThatImports(url), {type: "module"}), + invoker: (url, additionalAttributes) => + requestViaSharedWorker(workerUrlThatImports(url, additionalAttributes), {type: "module"}), }, "sharedworker-import-data": { path: "/common/security-features/subresource/shared-worker.py", @@ -1087,6 +1113,10 @@ function invokeRequest(subresource, sourceContextList) { additionalAttributes[policyDelivery.key] = policyDelivery.value; } else if (policyDelivery.deliveryType === "rel-noref") { additionalAttributes["rel"] = "noreferrer"; + } else if (policyDelivery.deliveryType === "http-rp") { + additionalAttributes[policyDelivery.key] = policyDelivery.value; + } else if (policyDelivery.deliveryType === "meta") { + additionalAttributes[policyDelivery.key] = policyDelivery.value; } } diff --git a/test/fixtures/wpt/common/security-features/tools/spec.src.json b/test/fixtures/wpt/common/security-features/tools/spec.src.json index 0a46a1cd6d3182..4a84493f475b01 100644 --- a/test/fixtures/wpt/common/security-features/tools/spec.src.json +++ b/test/fixtures/wpt/common/security-features/tools/spec.src.json @@ -106,6 +106,7 @@ "object-tag", "picture-tag", "script-tag", + "script-tag-dynamic-import", "sharedworker-classic", "sharedworker-import", "sharedworker-import-data", @@ -327,26 +328,6 @@ ], "subresourcePolicyDeliveries": [] }, - "worker-classic-inherit": { - // This is applicable to upgrade-insecure-requests and mixed-content tests. - // Use "worker-classic" for referrer-policy. - "description": "dedicated workers should inherit its parent's policy.", - "sourceContextList": [ - { - "sourceContextType": "top", - "policyDeliveries": [ - "policy" - ] - }, - { - "sourceContextType": "worker-classic", - "policyDeliveries": [ - "anotherPolicy" - ] - } - ], - "subresourcePolicyDeliveries": [] - }, "worker-classic-data": { "description": "data: dedicated workers should inherit its parent's policy.", "sourceContextList": [ @@ -365,7 +346,6 @@ }, "worker-module": { // This is applicable to referrer-policy tests. - // Use "worker-module-inherit" for CSP (mixed-content, etc.). "description": "dedicated workers shouldn't inherit its parent's policy.", "sourceContextList": [ { @@ -383,26 +363,6 @@ ], "subresourcePolicyDeliveries": [] }, - "worker-module-inherit": { - // This is applicable to upgrade-insecure-requests and mixed-content tests. - // Use "worker-module" for referrer-policy. - "description": "dedicated workers should inherit its parent's policy.", - "sourceContextList": [ - { - "sourceContextType": "top", - "policyDeliveries": [ - "policy" - ] - }, - { - "sourceContextType": "worker-module", - "policyDeliveries": [ - "anotherPolicy" - ] - } - ], - "subresourcePolicyDeliveries": [] - }, "worker-module-data": { "description": "data: dedicated workers should inherit its parent's policy.", "sourceContextList": [ @@ -505,10 +465,8 @@ "iframe", "iframe-blank-inherit", "worker-classic", - "worker-classic-inherit", "worker-classic-data", "worker-module", - "worker-module-inherit", "worker-module-data", "sharedworker-classic", "sharedworker-classic-data", @@ -550,6 +508,7 @@ "object-tag", "picture-tag", "script-tag", + "script-tag-dynamic-import", "sharedworker-classic", "sharedworker-import", "sharedworker-import-data", diff --git a/test/fixtures/wpt/common/stringifiers.js b/test/fixtures/wpt/common/stringifiers.js index 18de6c8c5b32c5..8dadac1d4929d9 100644 --- a/test/fixtures/wpt/common/stringifiers.js +++ b/test/fixtures/wpt/common/stringifiers.js @@ -1,5 +1,5 @@ /** - * Runs tests for . + * Runs tests for . * @param {Object} aObject - object to test * @param {string} aAttribute - IDL attribute name that is annotated with `stringifier` * @param {boolean} aIsUnforgeable - whether the IDL attribute is `[LegacyUnforgeable]` diff --git a/test/fixtures/wpt/dom/events/document-level-touchmove-event-listener-passive-by-default.tentative.html b/test/fixtures/wpt/dom/events/document-level-touchmove-event-listener-passive-by-default.tentative.html deleted file mode 100644 index f3f0d58209fd8e..00000000000000 --- a/test/fixtures/wpt/dom/events/document-level-touchmove-event-listener-passive-by-default.tentative.html +++ /dev/null @@ -1,73 +0,0 @@ - -Default passive document level touchmove event listener test - - - - - - - -
-
- - - diff --git a/test/fixtures/wpt/dom/events/document-level-wheel-event-listener-passive-by-default.tentative.html b/test/fixtures/wpt/dom/events/document-level-wheel-event-listener-passive-by-default.tentative.html deleted file mode 100644 index b7224835fa398b..00000000000000 --- a/test/fixtures/wpt/dom/events/document-level-wheel-event-listener-passive-by-default.tentative.html +++ /dev/null @@ -1,51 +0,0 @@ - -Default passive document level wheel event listener manual test - - - - - - - -
This is a manual test since there is no way to synthesize wheel events. -Scroll by wheel in the middle of the page to run the test.
- - diff --git a/test/fixtures/wpt/encoding/gb18030-encoder.html b/test/fixtures/wpt/encoding/gb18030-encoder.html deleted file mode 100644 index 799d69274ef4fb..00000000000000 --- a/test/fixtures/wpt/encoding/gb18030-encoder.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - -
- diff --git a/test/fixtures/wpt/encoding/gbk-encoder.html b/test/fixtures/wpt/encoding/gbk-encoder.html deleted file mode 100644 index a6074f975d34fb..00000000000000 --- a/test/fixtures/wpt/encoding/gbk-encoder.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - -
- diff --git a/test/fixtures/wpt/encoding/legacy-mb-schinese/gb18030/gb18030-decoder.html b/test/fixtures/wpt/encoding/legacy-mb-schinese/gb18030/gb18030-decoder.html deleted file mode 100644 index b8fb0d04c44ee7..00000000000000 --- a/test/fixtures/wpt/encoding/legacy-mb-schinese/gb18030/gb18030-decoder.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - diff --git a/test/fixtures/wpt/encoding/legacy-mb-schinese/gbk/gbk-decoder.html b/test/fixtures/wpt/encoding/legacy-mb-schinese/gbk/gbk-decoder.html deleted file mode 100644 index 8c45683180070e..00000000000000 --- a/test/fixtures/wpt/encoding/legacy-mb-schinese/gbk/gbk-decoder.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - diff --git a/test/fixtures/wpt/encoding/single-byte-decoder.html b/test/fixtures/wpt/encoding/single-byte-decoder.html deleted file mode 100644 index 70d8fb73eadb81..00000000000000 --- a/test/fixtures/wpt/encoding/single-byte-decoder.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - -
- diff --git a/test/fixtures/wpt/html/webappapis/timers/negative-setinterval.html b/test/fixtures/wpt/html/webappapis/timers/negative-setinterval.html deleted file mode 100644 index 663872cd1f3850..00000000000000 --- a/test/fixtures/wpt/html/webappapis/timers/negative-setinterval.html +++ /dev/null @@ -1,18 +0,0 @@ - -Negative timeout in setInterval - - - diff --git a/test/fixtures/wpt/html/webappapis/timers/negative-settimeout.html b/test/fixtures/wpt/html/webappapis/timers/negative-settimeout.html deleted file mode 100644 index b59fc8f22984c8..00000000000000 --- a/test/fixtures/wpt/html/webappapis/timers/negative-settimeout.html +++ /dev/null @@ -1,9 +0,0 @@ - -Negative timeout in setTimeout - - - diff --git a/test/fixtures/wpt/html/webappapis/timers/type-long-setinterval.html b/test/fixtures/wpt/html/webappapis/timers/type-long-setinterval.html deleted file mode 100644 index 7fb81ff29ac3a9..00000000000000 --- a/test/fixtures/wpt/html/webappapis/timers/type-long-setinterval.html +++ /dev/null @@ -1,14 +0,0 @@ - -Type long timeout for setInterval - - - diff --git a/test/fixtures/wpt/html/webappapis/timers/type-long-settimeout.html b/test/fixtures/wpt/html/webappapis/timers/type-long-settimeout.html deleted file mode 100644 index 4dc7d17ea5f13f..00000000000000 --- a/test/fixtures/wpt/html/webappapis/timers/type-long-settimeout.html +++ /dev/null @@ -1,9 +0,0 @@ - -Type long timeout for setTimeout - - - diff --git a/test/fixtures/wpt/resources/.gitignore b/test/fixtures/wpt/resources/.gitignore deleted file mode 100644 index 04fdeda1cc4ea1..00000000000000 --- a/test/fixtures/wpt/resources/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -ROBIN-TODO.txt -scratch -node_modules diff --git a/test/fixtures/wpt/resources/LICENSE b/test/fixtures/wpt/resources/LICENSE deleted file mode 100644 index 45896e6be2bd51..00000000000000 --- a/test/fixtures/wpt/resources/LICENSE +++ /dev/null @@ -1,30 +0,0 @@ -W3C 3-clause BSD License - -http://www.w3.org/Consortium/Legal/2008/03-bsd-license.html - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of works must retain the original copyright notice, - this list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the original copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -* Neither the name of the W3C nor the names of its contributors may be - used to endorse or promote products derived from this work without - specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/test/fixtures/wpt/resources/check-layout-th.js b/test/fixtures/wpt/resources/check-layout-th.js index 9cd8abc938d9fb..f14ca3246b8ea2 100644 --- a/test/fixtures/wpt/resources/check-layout-th.js +++ b/test/fixtures/wpt/resources/check-layout-th.js @@ -26,7 +26,11 @@ function assert_tolerance(actual, expected, message) } function checkDataKeys(node) { + // The purpose of this list of data-* attributes is simply to ensure typos + // in tests are caught. It is therefore "ok" to add to this list for + // specific tests. var validData = new Set([ + "data-anchor-polyfill", "data-expected-width", "data-expected-height", "data-offset-x", diff --git a/test/fixtures/wpt/resources/declarative-shadow-dom-polyfill.js b/test/fixtures/wpt/resources/declarative-shadow-dom-polyfill.js new file mode 100644 index 00000000000000..8ab08b0294c297 --- /dev/null +++ b/test/fixtures/wpt/resources/declarative-shadow-dom-polyfill.js @@ -0,0 +1,24 @@ +/* + * Polyfill for attaching shadow trees for declarative Shadow DOM for + * implementations that do not support declarative Shadow DOM. + * + * Note: this polyfill will feature-detect the native feature, and do nothing + * if supported. + * + * See: https://github.com/whatwg/html/pull/5465 + * + * root: The root of the subtree in which to upgrade shadow roots + * + */ + +function polyfill_declarative_shadow_dom(root) { + if (HTMLTemplateElement.prototype.hasOwnProperty('shadowRootMode')) + return; + root.querySelectorAll("template[shadowrootmode]").forEach(template => { + const mode = template.getAttribute("shadowrootmode"); + const shadowRoot = template.parentNode.attachShadow({ mode }); + shadowRoot.appendChild(template.content); + template.remove(); + polyfill_declarative_shadow_dom(shadowRoot); + }); +} diff --git a/test/fixtures/wpt/resources/idlharness-shadowrealm.js b/test/fixtures/wpt/resources/idlharness-shadowrealm.js index 05c4a1affc8699..9484ca6f512ad0 100644 --- a/test/fixtures/wpt/resources/idlharness-shadowrealm.js +++ b/test/fixtures/wpt/resources/idlharness-shadowrealm.js @@ -21,11 +21,6 @@ function fetch_text(url) { * dependency (i.e. have already been seen). */ function idl_test_shadowrealm(srcs, deps) { - const script_urls = [ - "/resources/testharness.js", - "/resources/WebIDLParser.js", - "/resources/idlharness.js", - ]; promise_setup(async t => { const realm = new ShadowRealm(); // https://github.com/web-platform-tests/wpt/issues/31996 @@ -38,44 +33,29 @@ function idl_test_shadowrealm(srcs, deps) { isShadowRealm: function() { return true; }, }; undefined; `); - - const ss = await Promise.all(script_urls.map(url => fetch_text(url))); - for (const s of ss) { - realm.evaluate(s); - } const specs = await Promise.all(srcs.concat(deps).map(spec => { return fetch_text("/interfaces/" + spec + ".idl"); })); const idls = JSON.stringify(specs); - - const results = JSON.parse(await new Promise( - realm.evaluate(`(resolve,reject) => { - const idls = ${idls}; - add_completion_callback(function (tests, harness_status, asserts_run) { - resolve(JSON.stringify(tests)); - }); - - // Without the wrapping test, testharness.js will think it's done after it has run - // the first idlharness test. - test(() => { - const idl_array = new IdlArray(); - for (let i = 0; i < ${srcs.length}; i++) { - idl_array.add_idls(idls[i]); - } - for (let i = ${srcs.length}; i < ${srcs.length + deps.length}; i++) { - idl_array.add_dependency_idls(idls[i]); - } - idl_array.test(); - }, "setup"); - }`) - )); - - // We ran the tests in the ShadowRealm and gathered the results. Now treat them as if - // we'd run them directly here, so we can see them. - for (const {name, status, message} of results) { - // TODO: make this an API in testharness.js - needs RFC? - promise_test(t => {t.set_status(status, message); t.phase = t.phases.HAS_RESULT; t.done()}, name); - } - }, "outer setup"); + await new Promise( + realm.evaluate(`(resolve,reject) => { + (async () => { + await import("/resources/testharness.js"); + await import("/resources/WebIDLParser.js"); + await import("/resources/idlharness.js"); + const idls = ${idls}; + const idl_array = new IdlArray(); + for (let i = 0; i < ${srcs.length}; i++) { + idl_array.add_idls(idls[i]); + } + for (let i = ${srcs.length}; i < ${srcs.length + deps.length}; i++) { + idl_array.add_dependency_idls(idls[i]); + } + idl_array.test(); + })().then(resolve, (e) => reject(e.toString())); + }`) + ); + await fetch_tests_from_shadow_realm(realm); + }); } // vim: set expandtab shiftwidth=4 tabstop=4 foldmarker=@{,@} foldmethod=marker: diff --git a/test/fixtures/wpt/resources/idlharness.js b/test/fixtures/wpt/resources/idlharness.js index d2fb0366c8022a..46aa11e5ca123c 100644 --- a/test/fixtures/wpt/resources/idlharness.js +++ b/test/fixtures/wpt/resources/idlharness.js @@ -2433,44 +2433,6 @@ IdlInterface.prototype.test_to_json_operation = function(desc, memberHolderObjec } }; -IdlInterface.prototype.test_member_iterable = function(member) -{ - subsetTestByKey(this.name, test, function() - { - var isPairIterator = member.idlType.length === 2; - var proto = this.get_interface_object().prototype; - var iteratorDesc = Object.getOwnPropertyDescriptor(proto, Symbol.iterator); - - assert_true(iteratorDesc.writable, "@@iterator property should be writable"); - assert_true(iteratorDesc.configurable, "@@iterator property should be configurable"); - assert_false(iteratorDesc.enumerable, "@@iterator property should not be enumerable"); - assert_equals(typeof iteratorDesc.value, "function", "@@iterator property should be a function"); - assert_equals(iteratorDesc.value.length, 0, "@@iterator function object length should be 0"); - assert_equals(iteratorDesc.value.name, isPairIterator ? "entries" : "values", "@@iterator function object should have the right name"); - - if (isPairIterator) { - assert_equals(proto["entries"], proto[Symbol.iterator], "entries method should be the same as @@iterator method"); - [ - ["entries", 0], - ["keys", 0], - ["values", 0], - ["forEach", 1] - ].forEach(([property, length]) => { - var desc = Object.getOwnPropertyDescriptor(proto, property); - assert_equals(typeof desc.value, "function", property + " property should be a function"); - assert_equals(desc.value.length, length, property + " function object should have the right length"); - assert_equals(desc.value.name, property, property + " function object should have the right name"); - }); - } else { - assert_equals(proto[Symbol.iterator], Array.prototype[Symbol.iterator], "@@iterator method should be the same as Array prototype's"); - ["entries", "keys", "values", "forEach", Symbol.iterator].forEach(property => { - var propertyName = property === Symbol.iterator ? "@@iterator" : property; - assert_equals(proto[property], Array.prototype[property], propertyName + " method should be the same as Array prototype's"); - }); - } - }.bind(this), this.name + " interface: iterable<" + member.idlType.map(function(t) { return t.idlType; }).join(", ") + ">"); -}; - IdlInterface.prototype.test_member_maplike = function(member) { subsetTestByKey(this.name, test, () => { const proto = this.get_interface_object().prototype; @@ -2487,14 +2449,14 @@ IdlInterface.prototype.test_member_maplike = function(member) { methods.push( ["set", 2], ["delete", 1], - ["clear", 1] + ["clear", 0] ); } for (const [name, length] of methods) { const desc = Object.getOwnPropertyDescriptor(proto, name); assert_equals(typeof desc.value, "function", `${name} should be a function`); - assert_equals(desc.enumerable, false, `${name} enumerable`); + assert_equals(desc.enumerable, true, `${name} enumerable`); assert_equals(desc.configurable, true, `${name} configurable`); assert_equals(desc.writable, true, `${name} writable`); assert_equals(desc.value.length, length, `${name} function object length should be ${length}`); @@ -2510,10 +2472,10 @@ IdlInterface.prototype.test_member_maplike = function(member) { const sizeDesc = Object.getOwnPropertyDescriptor(proto, "size"); assert_equals(typeof sizeDesc.get, "function", `size getter should be a function`); assert_equals(sizeDesc.set, undefined, `size should not have a setter`); - assert_equals(sizeDesc.enumerable, false, `size enumerable`); + assert_equals(sizeDesc.enumerable, true, `size enumerable`); assert_equals(sizeDesc.configurable, true, `size configurable`); - assert_equals(sizeDesc.get.length, 0, `size getter length should have the right length`); - assert_equals(sizeDesc.get.name, "get size", `size getter have the right name`); + assert_equals(sizeDesc.get.length, 0, `size getter length`); + assert_equals(sizeDesc.get.name, "get size", `size getter name`); }, `${this.name} interface: maplike<${member.idlType.map(t => t.idlType).join(", ")}>`); }; @@ -2532,14 +2494,14 @@ IdlInterface.prototype.test_member_setlike = function(member) { methods.push( ["add", 1], ["delete", 1], - ["clear", 1] + ["clear", 0] ); } for (const [name, length] of methods) { const desc = Object.getOwnPropertyDescriptor(proto, name); assert_equals(typeof desc.value, "function", `${name} should be a function`); - assert_equals(desc.enumerable, false, `${name} enumerable`); + assert_equals(desc.enumerable, true, `${name} enumerable`); assert_equals(desc.configurable, true, `${name} configurable`); assert_equals(desc.writable, true, `${name} writable`); assert_equals(desc.value.length, length, `${name} function object length should be ${length}`); @@ -2555,42 +2517,92 @@ IdlInterface.prototype.test_member_setlike = function(member) { const sizeDesc = Object.getOwnPropertyDescriptor(proto, "size"); assert_equals(typeof sizeDesc.get, "function", `size getter should be a function`); assert_equals(sizeDesc.set, undefined, `size should not have a setter`); - assert_equals(sizeDesc.enumerable, false, `size enumerable`); + assert_equals(sizeDesc.enumerable, true, `size enumerable`); assert_equals(sizeDesc.configurable, true, `size configurable`); - assert_equals(sizeDesc.get.length, 0, `size getter length should have the right length`); - assert_equals(sizeDesc.get.name, "size", `size getter have the right name`); + assert_equals(sizeDesc.get.length, 0, `size getter length`); + assert_equals(sizeDesc.get.name, "get size", `size getter name`); }, `${this.name} interface: setlike<${member.idlType.map(t => t.idlType).join(", ")}>`); }; -IdlInterface.prototype.test_member_async_iterable = function(member) -{ - subsetTestByKey(this.name, test, function() - { - var isPairIterator = member.idlType.length === 2; - var proto = this.get_interface_object().prototype; - var iteratorDesc = Object.getOwnPropertyDescriptor(proto, Symbol.asyncIterator); +IdlInterface.prototype.test_member_iterable = function(member) { + subsetTestByKey(this.name, test, () => { + const isPairIterator = member.idlType.length === 2; + const proto = this.get_interface_object().prototype; - assert_true(iteratorDesc.writable, "@@asyncIterator property should be writable"); - assert_true(iteratorDesc.configurable, "@@asyncIterator property should be configurable"); - assert_false(iteratorDesc.enumerable, "@@asyncIterator property should not be enumerable"); - assert_equals(typeof iteratorDesc.value, "function", "@@asyncIterator property should be a function"); - assert_equals(iteratorDesc.value.length, 0, "@@asyncIterator function object length should be 0"); - assert_equals(iteratorDesc.value.name, isPairIterator ? "entries" : "values", "@@asyncIterator function object should have the right name"); + const methods = [ + ["entries", 0], + ["keys", 0], + ["values", 0], + ["forEach", 1] + ]; + + for (const [name, length] of methods) { + const desc = Object.getOwnPropertyDescriptor(proto, name); + assert_equals(typeof desc.value, "function", `${name} should be a function`); + assert_equals(desc.enumerable, true, `${name} enumerable`); + assert_equals(desc.configurable, true, `${name} configurable`); + assert_equals(desc.writable, true, `${name} writable`); + assert_equals(desc.value.length, length, `${name} function object length should be ${length}`); + assert_equals(desc.value.name, name, `${name} function object should have the right name`); + + if (!isPairIterator) { + assert_equals(desc.value, Array.prototype[name], `${name} equality with Array.prototype version`); + } + } + + const iteratorDesc = Object.getOwnPropertyDescriptor(proto, Symbol.iterator); + assert_equals(iteratorDesc.enumerable, false, `@@iterator enumerable`); + assert_equals(iteratorDesc.configurable, true, `@@iterator configurable`); + assert_equals(iteratorDesc.writable, true, `@@iterator writable`); if (isPairIterator) { - assert_equals(proto["entries"], proto[Symbol.asyncIterator], "entries method should be the same as @@asyncIterator method"); - ["entries", "keys", "values"].forEach(property => { - var desc = Object.getOwnPropertyDescriptor(proto, property); - assert_equals(typeof desc.value, "function", property + " property should be a function"); - assert_equals(desc.value.length, 0, property + " function object length should be 0"); - assert_equals(desc.value.name, property, property + " function object should have the right name"); - }); + assert_equals(iteratorDesc.value, proto.entries, `@@iterator equality with entries`); } else { - assert_equals(proto["values"], proto[Symbol.asyncIterator], "values method should be the same as @@asyncIterator method"); - assert_false("entries" in proto, "should not have an entries method"); - assert_false("keys" in proto, "should not have a keys method"); + assert_equals(iteratorDesc.value, Array.prototype[Symbol.iterator], `@@iterator equality with Array.prototype version`); } - }.bind(this), this.name + " interface: async iterable<" + member.idlType.map(function(t) { return t.idlType; }).join(", ") + ">"); + }, `${this.name} interface: iterable<${member.idlType.map(t => t.idlType).join(", ")}>`); +}; + +IdlInterface.prototype.test_member_async_iterable = function(member) { + subsetTestByKey(this.name, test, () => { + const isPairIterator = member.idlType.length === 2; + const proto = this.get_interface_object().prototype; + + // Note that although the spec allows arguments, which will be passed to the @@asyncIterator + // method (which is either values or entries), those arguments must always be optional. So + // length of 0 is still correct for values and entries. + const methods = [ + ["values", 0], + ]; + + if (isPairIterator) { + methods.push( + ["entries", 0], + ["keys", 0] + ); + } + + for (const [name, length] of methods) { + const desc = Object.getOwnPropertyDescriptor(proto, name); + assert_equals(typeof desc.value, "function", `${name} should be a function`); + assert_equals(desc.enumerable, true, `${name} enumerable`); + assert_equals(desc.configurable, true, `${name} configurable`); + assert_equals(desc.writable, true, `${name} writable`); + assert_equals(desc.value.length, length, `${name} function object length should be ${length}`); + assert_equals(desc.value.name, name, `${name} function object should have the right name`); + } + + const iteratorDesc = Object.getOwnPropertyDescriptor(proto, Symbol.asyncIterator); + assert_equals(iteratorDesc.enumerable, false, `@@iterator enumerable`); + assert_equals(iteratorDesc.configurable, true, `@@iterator configurable`); + assert_equals(iteratorDesc.writable, true, `@@iterator writable`); + + if (isPairIterator) { + assert_equals(iteratorDesc.value, proto.entries, `@@iterator equality with entries`); + } else { + assert_equals(iteratorDesc.value, proto.values, `@@iterator equality with values`); + } + }, `${this.name} interface: async iterable<${member.idlType.map(t => t.idlType).join(", ")}>`); }; IdlInterface.prototype.test_member_stringifier = function(member) @@ -2656,6 +2668,7 @@ IdlInterface.prototype.test_member_stringifier = function(member) IdlInterface.prototype.test_members = function() { + var unexposed_members = new Set(); for (var i = 0; i < this.members.length; i++) { var member = this.members[i]; @@ -2664,15 +2677,18 @@ IdlInterface.prototype.test_members = function() } if (!exposed_in(exposure_set(member, this.exposureSet))) { - subsetTestByKey(this.name, test, function() { - // It's not exposed, so we shouldn't find it anywhere. - assert_false(member.name in this.get_interface_object(), - "The interface object must not have a property " + - format_value(member.name)); - assert_false(member.name in this.get_interface_object().prototype, - "The prototype object must not have a property " + - format_value(member.name)); - }.bind(this), this.name + " interface: member " + member.name); + if (!unexposed_members.has(member.name)) { + unexposed_members.add(member.name); + subsetTestByKey(this.name, test, function() { + // It's not exposed, so we shouldn't find it anywhere. + assert_false(member.name in this.get_interface_object(), + "The interface object must not have a property " + + format_value(member.name)); + assert_false(member.name in this.get_interface_object().prototype, + "The prototype object must not have a property " + + format_value(member.name)); + }.bind(this), this.name + " interface: member " + member.name); + } continue; } @@ -2751,21 +2767,26 @@ IdlInterface.prototype.test_object = function(desc) expected_typeof = "object"; } - this.test_primary_interface_of(desc, obj, exception, expected_typeof); + if (this.is_callback()) { + assert_equals(exception, null, "Unexpected exception when evaluating object"); + assert_equals(typeof obj, expected_typeof, "wrong typeof object"); + } else { + this.test_primary_interface_of(desc, obj, exception, expected_typeof); - var current_interface = this; - while (current_interface) - { - if (!(current_interface.name in this.array.members)) + var current_interface = this; + while (current_interface) { - throw new IdlHarnessError("Interface " + current_interface.name + " not found (inherited by " + this.name + ")"); - } - if (current_interface.prevent_multiple_testing && current_interface.already_tested) - { - return; + if (!(current_interface.name in this.array.members)) + { + throw new IdlHarnessError("Interface " + current_interface.name + " not found (inherited by " + this.name + ")"); + } + if (current_interface.prevent_multiple_testing && current_interface.already_tested) + { + return; + } + current_interface.test_interface_of(desc, obj, exception, expected_typeof); + current_interface = this.array.members[current_interface.base]; } - current_interface.test_interface_of(desc, obj, exception, expected_typeof); - current_interface = this.array.members[current_interface.base]; } }; @@ -2838,17 +2859,23 @@ IdlInterface.prototype.test_interface_of = function(desc, obj, exception, expect return; } + var unexposed_properties = new Set(); for (var i = 0; i < this.members.length; i++) { var member = this.members[i]; if (member.untested) { continue; } - if (!exposed_in(exposure_set(member, this.exposureSet))) { - subsetTestByKey(this.name, test, function() { - assert_equals(exception, null, "Unexpected exception when evaluating object"); - assert_false(member.name in obj); - }.bind(this), this.name + " interface: " + desc + ' must not have property "' + member.name + '"'); + if (!exposed_in(exposure_set(member, this.exposureSet))) + { + if (!unexposed_properties.has(member.name)) + { + unexposed_properties.add(member.name); + subsetTestByKey(this.name, test, function() { + assert_equals(exception, null, "Unexpected exception when evaluating object"); + assert_false(member.name in obj); + }.bind(this), this.name + " interface: " + desc + ' must not have property "' + member.name + '"'); + } continue; } if (member.type == "attribute" && member.isUnforgeable) diff --git a/test/fixtures/wpt/resources/testdriver.js b/test/fixtures/wpt/resources/testdriver.js index 0737e64a50b313..76ae2834fdfb0a 100644 --- a/test/fixtures/wpt/resources/testdriver.js +++ b/test/fixtures/wpt/resources/testdriver.js @@ -78,8 +78,8 @@ * Trigger user interaction in order to grant additional privileges to * a provided function. * - * See `triggered by user activation - * `_. + * See `Tracking user activation + * `_. * * @example * var mediaElement = document.createElement('video'); @@ -184,6 +184,42 @@ return window.test_driver_internal.delete_all_cookies(context); }, + /** + * Get details for all cookies in the current context. + * See https://w3c.github.io/webdriver/#get-all-cookies + * + * @param {WindowProxy} context - Browsing context in which + * to run the call, or null for the current + * browsing context. + * + * @returns {Promise} Returns an array of cookies objects as defined in the spec: + * https://w3c.github.io/webdriver/#cookies + */ + get_all_cookies: function(context=null) { + return window.test_driver_internal.get_all_cookies(context); + }, + + /** + * Get details for a cookie in the current context by name if it exists. + * See https://w3c.github.io/webdriver/#get-named-cookie + * + * @param {String} name - The name of the cookie to get. + * @param {WindowProxy} context - Browsing context in which + * to run the call, or null for the current + * browsing context. + * + * @returns {Promise} Returns the matching cookie as defined in the spec: + * https://w3c.github.io/webdriver/#cookies + * Rejected if no such cookie exists. + */ + get_named_cookie: async function(name, context=null) { + let cookie = await window.test_driver_internal.get_named_cookie(name, context); + if (!cookie) { + throw new Error("no such cookie"); + } + return cookie; + }, + /** * Send keys to an element. * @@ -362,24 +398,22 @@ * * @example * await test_driver.set_permission({ name: "background-fetch" }, "denied"); - * await test_driver.set_permission({ name: "push", userVisibleOnly: true }, "granted", true); + * await test_driver.set_permission({ name: "push", userVisibleOnly: true }, "granted"); * - * @param {Object} descriptor - a `PermissionDescriptor - * `_ - * object + * @param {PermissionDescriptor} descriptor - a `PermissionDescriptor + * `_ + * dictionary. * @param {String} state - the state of the permission - * @param {boolean} one_realm - Optional. Whether the permission applies to only one realm * @param {WindowProxy} context - Browsing context in which * to run the call, or null for the current * browsing context. * @returns {Promise} fulfilled after the permission is set, or rejected if setting the * permission fails */ - set_permission: function(descriptor, state, one_realm=false, context=null) { + set_permission: function(descriptor, state, context=null) { let permission_params = { descriptor, state, - oneRealm: one_realm, }; return window.test_driver_internal.set_permission(permission_params, context); }, @@ -637,6 +671,14 @@ return Promise.reject(new Error("unimplemented")); }, + get_all_cookies: function(context=null) { + return Promise.reject(new Error("unimplemented")); + }, + + get_named_cookie: function(name, context=null) { + return Promise.reject(new Error("unimplemented")); + }, + send_keys: function(element, keys) { if (this.in_automation) { return Promise.reject(new Error('Not implemented')); diff --git a/test/fixtures/wpt/resources/testharness.css.headers b/test/fixtures/wpt/resources/testharness.css.headers deleted file mode 100644 index e828b629858d07..00000000000000 --- a/test/fixtures/wpt/resources/testharness.css.headers +++ /dev/null @@ -1,2 +0,0 @@ -Content-Type: text/css;charset=utf-8 -Cache-Control: max-age=3600 diff --git a/test/fixtures/wpt/resources/testharness.js b/test/fixtures/wpt/resources/testharness.js index 9ec328222097e0..112790bb1eeb87 100644 --- a/test/fixtures/wpt/resources/testharness.js +++ b/test/fixtures/wpt/resources/testharness.js @@ -494,7 +494,7 @@ ShellTestEnvironment.prototype.next_default_test_name = function() { var suffix = this.name_counter > 0 ? " " + this.name_counter : ""; this.name_counter++; - return "Untitled" + suffix; + return get_title() + suffix; }; ShellTestEnvironment.prototype.on_new_harness_properties = function() {}; @@ -2246,7 +2246,8 @@ ReadOnlyError: 0, VersionError: 0, OperationError: 0, - NotAllowedError: 0 + NotAllowedError: 0, + OptOutError: 0 }; var code_name_map = {}; @@ -2477,6 +2478,10 @@ this._user_defined_cleanup_count = 0; this._done_callbacks = []; + if (typeof AbortController === "function") { + this._abortController = new AbortController(); + } + // Tests declared following harness completion are likely an indication // of a programming error, but they cannot be reported // deterministically. @@ -2953,6 +2958,10 @@ this.phase = this.phases.CLEANING; + if (this._abortController) { + this._abortController.abort("Test cleanup"); + } + forEach(this.cleanup_callbacks, function(cleanup_callback) { var result; @@ -3046,6 +3055,16 @@ test._done_callbacks.length = 0; } + /** + * Gives an AbortSignal that will be aborted when the test finishes. + */ + Test.prototype.get_signal = function() { + if (!this._abortController) { + throw new Error("AbortController is not supported in this browser"); + } + return this._abortController.signal; + } + /** * A RemoteTest object mirrors a Test object on a remote worker. The * associated RemoteWorker updates the RemoteTest object in response to @@ -3822,7 +3841,9 @@ return; } - this.pending_remotes.push(this.create_remote_window(remote)); + var remoteContext = this.create_remote_window(remote); + this.pending_remotes.push(remoteContext); + return remoteContext.done; }; /** @@ -3837,7 +3858,7 @@ * @param {Window} window - The window to fetch tests from. */ function fetch_tests_from_window(window) { - tests.fetch_tests_from_window(window); + return tests.fetch_tests_from_window(window); } expose(fetch_tests_from_window, 'fetch_tests_from_window'); @@ -3871,7 +3892,7 @@ */ function begin_shadow_realm_tests(postMessage) { if (!(test_environment instanceof ShadowRealmTestEnvironment)) { - throw new Error("beign_shadow_realm_tests called in non-Shadow Realm environment"); + throw new Error("begin_shadow_realm_tests called in non-Shadow Realm environment"); } test_environment.begin(function (msg) { @@ -4733,7 +4754,7 @@ if ('META_TITLE' in global_scope && META_TITLE) { return META_TITLE; } - if ('location' in global_scope) { + if ('location' in global_scope && 'pathname' in location) { return location.pathname.substring(location.pathname.lastIndexOf('/') + 1, location.pathname.indexOf('.')); } return "Untitled"; diff --git a/test/fixtures/wpt/resources/webidl2/.gitignore b/test/fixtures/wpt/resources/webidl2/.gitignore deleted file mode 100644 index 1d72980cd7ea87..00000000000000 --- a/test/fixtures/wpt/resources/webidl2/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -scratch -node_modules -lib-cov -browser-tests.html diff --git a/test/fixtures/wpt/resources/webidl2/.travis.yml b/test/fixtures/wpt/resources/webidl2/.travis.yml deleted file mode 100644 index 6dc8e2bdbaa6cf..00000000000000 --- a/test/fixtures/wpt/resources/webidl2/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js -node_js: - - node - - lts/* - - 6 diff --git a/test/fixtures/wpt/resources/webidl2/CHANGELOG.md b/test/fixtures/wpt/resources/webidl2/CHANGELOG.md deleted file mode 100644 index 91e22275e0700e..00000000000000 --- a/test/fixtures/wpt/resources/webidl2/CHANGELOG.md +++ /dev/null @@ -1,292 +0,0 @@ -# Change Log - -## [v10.2.1](https://github.com/w3c/webidl2.js/tree/v10.2.1) (2018-03-09) -[Full Changelog](https://github.com/w3c/webidl2.js/compare/v10.2.0...v10.2.1) - -**Merged pull requests:** - -- Optimise tokenisation and whitespace skipping [\#139](https://github.com/w3c/webidl2.js/pull/139) ([ricea](https://github.com/ricea)) -- refactor: small syntax changes [\#137](https://github.com/w3c/webidl2.js/pull/137) ([saschanaz](https://github.com/saschanaz)) - -## [v10.2.0](https://github.com/w3c/webidl2.js/tree/v10.2.0) (2018-01-30) -[Full Changelog](https://github.com/w3c/webidl2.js/compare/v10.1.0...v10.2.0) - -**Merged pull requests:** - -- Type on union idlType [\#135](https://github.com/w3c/webidl2.js/pull/135) ([saschanaz](https://github.com/saschanaz)) -- feat: add argument/return type [\#134](https://github.com/w3c/webidl2.js/pull/134) ([saschanaz](https://github.com/saschanaz)) -- feat: add dictionary/typedef-type [\#133](https://github.com/w3c/webidl2.js/pull/133) ([saschanaz](https://github.com/saschanaz)) -- feat: add const-type for idlTypes [\#132](https://github.com/w3c/webidl2.js/pull/132) ([saschanaz](https://github.com/saschanaz)) -- feat: add types on idlTypes [\#131](https://github.com/w3c/webidl2.js/pull/131) ([saschanaz](https://github.com/saschanaz)) -- Auto acquisition for parser result changes [\#130](https://github.com/w3c/webidl2.js/pull/130) ([saschanaz](https://github.com/saschanaz)) - -## [v10.1.0](https://github.com/w3c/webidl2.js/tree/v10.1.0) (2018-01-19) -[Full Changelog](https://github.com/w3c/webidl2.js/compare/v10.0.0...v10.1.0) - -**Closed issues:** - -- Support `raises` and `setraises` [\#128](https://github.com/w3c/webidl2.js/issues/128) -- Support `legacycaller` [\#127](https://github.com/w3c/webidl2.js/issues/127) -- Improve "No semicolon after enum" message [\#119](https://github.com/w3c/webidl2.js/issues/119) - -**Merged pull requests:** - -- Let error messages include the current definition name [\#129](https://github.com/w3c/webidl2.js/pull/129) ([saschanaz](https://github.com/saschanaz)) - -## [v10.0.0](https://github.com/w3c/webidl2.js/tree/v10.0.0) (2017-12-20) -[Full Changelog](https://github.com/w3c/webidl2.js/compare/v9.0.0...v10.0.0) - -**Closed issues:** - -- Always return an array for idlType, etc. [\#113](https://github.com/w3c/webidl2.js/issues/113) -- Maintain writer.js or not? [\#109](https://github.com/w3c/webidl2.js/issues/109) - -**Merged pull requests:** - -- Remove typeExtAttrs from docs [\#124](https://github.com/w3c/webidl2.js/pull/124) ([saschanaz](https://github.com/saschanaz)) -- Remove iterator documentation [\#123](https://github.com/w3c/webidl2.js/pull/123) ([saschanaz](https://github.com/saschanaz)) -- Maintain writer.js [\#122](https://github.com/w3c/webidl2.js/pull/122) ([saschanaz](https://github.com/saschanaz)) -- BREAKING CHANGE: remove deprecated iterator operation [\#121](https://github.com/w3c/webidl2.js/pull/121) ([saschanaz](https://github.com/saschanaz)) -- Use for-of on tests [\#120](https://github.com/w3c/webidl2.js/pull/120) ([saschanaz](https://github.com/saschanaz)) -- docs\(README\): iterables ildType is always array [\#118](https://github.com/w3c/webidl2.js/pull/118) ([marcoscaceres](https://github.com/marcoscaceres)) - -## [v9.0.0](https://github.com/w3c/webidl2.js/tree/v9.0.0) (2017-11-30) -[Full Changelog](https://github.com/w3c/webidl2.js/compare/v8.1.0...v9.0.0) - -**Closed issues:** - -- Code quality [\#116](https://github.com/w3c/webidl2.js/issues/116) -- Unable to parse HTMLAllCollection interface [\#114](https://github.com/w3c/webidl2.js/issues/114) -- Add support for mixin syntax [\#112](https://github.com/w3c/webidl2.js/issues/112) -- Whitespace issues [\#111](https://github.com/w3c/webidl2.js/issues/111) - -**Merged pull requests:** - -- Consistent array type for iterable.idlType [\#117](https://github.com/w3c/webidl2.js/pull/117) ([saschanaz](https://github.com/saschanaz)) -- Revert "chore: drop Node 6 support \(\#102\)" [\#115](https://github.com/w3c/webidl2.js/pull/115) ([TimothyGu](https://github.com/TimothyGu)) - -## [v8.1.0](https://github.com/w3c/webidl2.js/tree/v8.1.0) (2017-11-03) -[Full Changelog](https://github.com/w3c/webidl2.js/compare/v8.0.1...v8.1.0) - -**Closed issues:** - -- Extended Attributes `rhs` should always be there [\#96](https://github.com/w3c/webidl2.js/issues/96) - -**Merged pull requests:** - -- Always add rhs property [\#110](https://github.com/w3c/webidl2.js/pull/110) ([saschanaz](https://github.com/saschanaz)) - -## [v8.0.1](https://github.com/w3c/webidl2.js/tree/v8.0.1) (2017-11-03) -[Full Changelog](https://github.com/w3c/webidl2.js/compare/v8.0.0...v8.0.1) - -**Fixed bugs:** - -- Comment order parsing bug [\#107](https://github.com/w3c/webidl2.js/issues/107) - -**Merged pull requests:** - -- Remove m postfix from all\_ws\(\) [\#108](https://github.com/w3c/webidl2.js/pull/108) ([saschanaz](https://github.com/saschanaz)) - -## [v8.0.0](https://github.com/w3c/webidl2.js/tree/v8.0.0) (2017-11-03) -[Full Changelog](https://github.com/w3c/webidl2.js/compare/v7.0.0...v8.0.0) - -**Closed issues:** - -- Remove creators support [\#100](https://github.com/w3c/webidl2.js/issues/100) -- Add mixin support [\#92](https://github.com/w3c/webidl2.js/issues/92) - -**Merged pull requests:** - -- Support mixins + includes statements [\#105](https://github.com/w3c/webidl2.js/pull/105) ([saschanaz](https://github.com/saschanaz)) -- chore: drop Node 6 support [\#102](https://github.com/w3c/webidl2.js/pull/102) ([marcoscaceres](https://github.com/marcoscaceres)) -- BREAKING CHANGE: drop creator support [\#101](https://github.com/w3c/webidl2.js/pull/101) ([saschanaz](https://github.com/saschanaz)) -- Normalize some whitespace to pass wpt's lint [\#99](https://github.com/w3c/webidl2.js/pull/99) ([foolip](https://github.com/foolip)) - -## [v7.0.0](https://github.com/w3c/webidl2.js/tree/v7.0.0) (2017-10-27) -[Full Changelog](https://github.com/w3c/webidl2.js/compare/v6.1.0...v7.0.0) - -**Closed issues:** - -- Type conversion on default values is destructive [\#94](https://github.com/w3c/webidl2.js/issues/94) -- extended attribute structure missing type [\#89](https://github.com/w3c/webidl2.js/issues/89) - -**Merged pull requests:** - -- BREAKING CHANGE: argument + default types should be string [\#95](https://github.com/w3c/webidl2.js/pull/95) ([marcoscaceres](https://github.com/marcoscaceres)) - -## [v6.1.0](https://github.com/w3c/webidl2.js/tree/v6.1.0) (2017-10-23) -[Full Changelog](https://github.com/w3c/webidl2.js/compare/v6.0.1...v6.1.0) - -**Merged pull requests:** - -- feat: give extended attributes a type [\#90](https://github.com/w3c/webidl2.js/pull/90) ([marcoscaceres](https://github.com/marcoscaceres)) - -## [v6.0.1](https://github.com/w3c/webidl2.js/tree/v6.0.1) (2017-10-18) -[Full Changelog](https://github.com/w3c/webidl2.js/compare/v6.0.0...v6.0.1) - -**Closed issues:** - -- Enum values should be objects [\#86](https://github.com/w3c/webidl2.js/issues/86) - -**Merged pull requests:** - -- Use ES2015 syntax for tests [\#88](https://github.com/w3c/webidl2.js/pull/88) ([saschanaz](https://github.com/saschanaz)) - -## [v6.0.0](https://github.com/w3c/webidl2.js/tree/v6.0.0) (2017-10-17) -[Full Changelog](https://github.com/w3c/webidl2.js/compare/v5.0.0...v6.0.0) - -**Merged pull requests:** - -- BREAKING CHANGE: ret enum value as object [\#87](https://github.com/w3c/webidl2.js/pull/87) ([marcoscaceres](https://github.com/marcoscaceres)) - -## [v5.0.0](https://github.com/w3c/webidl2.js/tree/v5.0.0) (2017-10-17) -[Full Changelog](https://github.com/w3c/webidl2.js/compare/v4.2.0...v5.0.0) - -**Closed issues:** - -- Unable to parse annotated types in generics [\#83](https://github.com/w3c/webidl2.js/issues/83) -- Drop support for Node 4, move to 6 LTS [\#82](https://github.com/w3c/webidl2.js/issues/82) - -**Merged pull requests:** - -- BREAKING CHANGE: Use ES2015 syntax [\#84](https://github.com/w3c/webidl2.js/pull/84) ([saschanaz](https://github.com/saschanaz)) - -## [v4.2.0](https://github.com/w3c/webidl2.js/tree/v4.2.0) (2017-10-16) -[Full Changelog](https://github.com/w3c/webidl2.js/compare/v4.1.0...v4.2.0) - -**Closed issues:** - -- Remove legacy caller support [\#78](https://github.com/w3c/webidl2.js/issues/78) -- Should report error for using duplicate names [\#77](https://github.com/w3c/webidl2.js/issues/77) - -**Merged pull requests:** - -- Check duplicated names [\#80](https://github.com/w3c/webidl2.js/pull/80) ([saschanaz](https://github.com/saschanaz)) -- Remove legacycaller [\#79](https://github.com/w3c/webidl2.js/pull/79) ([saschanaz](https://github.com/saschanaz)) -- Add "sequence" property to IDL Type AST definition [\#76](https://github.com/w3c/webidl2.js/pull/76) ([lerouche](https://github.com/lerouche)) - -## [v4.1.0](https://github.com/w3c/webidl2.js/tree/v4.1.0) (2017-07-04) -[Full Changelog](https://github.com/w3c/webidl2.js/compare/v4.0.0...v4.1.0) - -**Closed issues:** - -- Parsing error for annonated inner types of generic types [\#71](https://github.com/w3c/webidl2.js/issues/71) - -**Merged pull requests:** - -- Support TypeWithExtendedAttributes on generics [\#75](https://github.com/w3c/webidl2.js/pull/75) ([saschanaz](https://github.com/saschanaz)) - -## [v4.0.0](https://github.com/w3c/webidl2.js/tree/v4.0.0) (2017-06-27) -[Full Changelog](https://github.com/w3c/webidl2.js/compare/v3.0.2...v4.0.0) - -**Closed issues:** - -- Remove serializer-related productions [\#73](https://github.com/w3c/webidl2.js/issues/73) -- Records don't seem to be working right [\#72](https://github.com/w3c/webidl2.js/issues/72) -- Document namespace member output [\#59](https://github.com/w3c/webidl2.js/issues/59) - -**Merged pull requests:** - -- BREAKING CHANGE: remove serializers \(closes \#73\) [\#74](https://github.com/w3c/webidl2.js/pull/74) ([marcoscaceres](https://github.com/marcoscaceres)) -- Add documentation for namespaces [\#70](https://github.com/w3c/webidl2.js/pull/70) ([saschanaz](https://github.com/saschanaz)) - -## [v3.0.2](https://github.com/w3c/webidl2.js/tree/v3.0.2) (2017-05-29) -[Full Changelog](https://github.com/w3c/webidl2.js/compare/v3.0.1...v3.0.2) - -**Closed issues:** - -- Whitespace issues [\#64](https://github.com/w3c/webidl2.js/issues/64) - -**Merged pull requests:** - -- Test for latest LTS/stable node versions [\#69](https://github.com/w3c/webidl2.js/pull/69) ([saschanaz](https://github.com/saschanaz)) - -## [v3.0.1](https://github.com/w3c/webidl2.js/tree/v3.0.1) (2017-05-18) -[Full Changelog](https://github.com/w3c/webidl2.js/compare/v2.4.0...v3.0.1) - -**Closed issues:** - -- Is array syntax dead? [\#66](https://github.com/w3c/webidl2.js/issues/66) -- Remove exceptions support [\#65](https://github.com/w3c/webidl2.js/issues/65) - -**Merged pull requests:** - -- Fix whitespace error on parsing extended attributes [\#68](https://github.com/w3c/webidl2.js/pull/68) ([saschanaz](https://github.com/saschanaz)) -- Remove deprecated IDL arrays and exceptions [\#67](https://github.com/w3c/webidl2.js/pull/67) ([saschanaz](https://github.com/saschanaz)) - -## [v2.4.0](https://github.com/w3c/webidl2.js/tree/v2.4.0) (2017-04-12) -[Full Changelog](https://github.com/w3c/webidl2.js/compare/v2.1.0...v2.4.0) - -**Closed issues:** - -- Add support for Annotated Types [\#60](https://github.com/w3c/webidl2.js/issues/60) -- Question: Convert WebIDL -\> Javascript [\#56](https://github.com/w3c/webidl2.js/issues/56) -- Get Robin to give us push permissions on npm [\#54](https://github.com/w3c/webidl2.js/issues/54) -- Add support for records [\#53](https://github.com/w3c/webidl2.js/issues/53) -- module not supported? [\#52](https://github.com/w3c/webidl2.js/issues/52) -- Add support for namespaces [\#51](https://github.com/w3c/webidl2.js/issues/51) -- Export is not AMD compatible [\#48](https://github.com/w3c/webidl2.js/issues/48) -- Can't represent large constants [\#21](https://github.com/w3c/webidl2.js/issues/21) - -**Merged pull requests:** - -- Update webidl2.js [\#63](https://github.com/w3c/webidl2.js/pull/63) ([tqeto](https://github.com/tqeto)) -- Remove support for MapClass \(no longer valid in WebIDL\) [\#62](https://github.com/w3c/webidl2.js/pull/62) ([dontcallmedom](https://github.com/dontcallmedom)) -- Add support for annotated types [\#61](https://github.com/w3c/webidl2.js/pull/61) ([dontcallmedom](https://github.com/dontcallmedom)) -- Support namespaces [\#58](https://github.com/w3c/webidl2.js/pull/58) ([saschanaz](https://github.com/saschanaz)) -- Add support for records [\#57](https://github.com/w3c/webidl2.js/pull/57) ([TimothyGu](https://github.com/TimothyGu)) -- Refactor [\#50](https://github.com/w3c/webidl2.js/pull/50) ([marcoscaceres](https://github.com/marcoscaceres)) -- feat\(lib\): add AMD export support \(closes \#48\) [\#49](https://github.com/w3c/webidl2.js/pull/49) ([marcoscaceres](https://github.com/marcoscaceres)) - -## [v2.1.0](https://github.com/w3c/webidl2.js/tree/v2.1.0) (2016-08-12) -**Closed issues:** - -- Exception when parsing test/syntax/idl/typedef.widl [\#46](https://github.com/w3c/webidl2.js/issues/46) -- Wrong jsondiffpatch location [\#42](https://github.com/w3c/webidl2.js/issues/42) -- 'npm install' fails on building microtime [\#40](https://github.com/w3c/webidl2.js/issues/40) -- Can't represent union types in typedefs [\#38](https://github.com/w3c/webidl2.js/issues/38) -- tokenise\(\) assumes a specific property enumeration order [\#27](https://github.com/w3c/webidl2.js/issues/27) -- Add support for iterable\<\>, maplike\<\>, setlike\<\> declarations [\#24](https://github.com/w3c/webidl2.js/issues/24) -- WebIDL2 fails to parse `attribute Promise\\[\] baz` [\#19](https://github.com/w3c/webidl2.js/issues/19) -- Support for ExtendedAttributeIdentList \(current editor's draft\) [\#18](https://github.com/w3c/webidl2.js/issues/18) -- No Licensing Information [\#17](https://github.com/w3c/webidl2.js/issues/17) -- how to regenerate w3c idl files ? [\#14](https://github.com/w3c/webidl2.js/issues/14) -- What is lib/writer.js [\#13](https://github.com/w3c/webidl2.js/issues/13) -- Numerous tests are failing [\#7](https://github.com/w3c/webidl2.js/issues/7) -- Add support for missing types in ServiceWorker [\#5](https://github.com/w3c/webidl2.js/issues/5) -- How can I parse just a function? [\#3](https://github.com/w3c/webidl2.js/issues/3) -- Parser throws on nullable array of nullable array [\#2](https://github.com/w3c/webidl2.js/issues/2) -- Parser throws on nullable array of any [\#1](https://github.com/w3c/webidl2.js/issues/1) - -**Merged pull requests:** - -- Fix "default": undefined [\#47](https://github.com/w3c/webidl2.js/pull/47) ([mkwtys](https://github.com/mkwtys)) -- Replace expect.js with expct [\#45](https://github.com/w3c/webidl2.js/pull/45) ([halton](https://github.com/halton)) -- Correct jsondiffpatch location. [\#44](https://github.com/w3c/webidl2.js/pull/44) ([halton](https://github.com/halton)) -- Bump microtime to 2.1.1 [\#43](https://github.com/w3c/webidl2.js/pull/43) ([halton](https://github.com/halton)) -- Expand writer support [\#39](https://github.com/w3c/webidl2.js/pull/39) ([markandrus](https://github.com/markandrus)) -- Accept wider \(but still incomplete\) set of allowed syntax for extended attributes [\#37](https://github.com/w3c/webidl2.js/pull/37) ([mlogan](https://github.com/mlogan)) -- Add test for callback with multiple arguments. [\#36](https://github.com/w3c/webidl2.js/pull/36) ([tobie](https://github.com/tobie)) -- Iterables [\#34](https://github.com/w3c/webidl2.js/pull/34) ([motiz88](https://github.com/motiz88)) -- Allow trailing comma in enum value lists, per spec [\#33](https://github.com/w3c/webidl2.js/pull/33) ([motiz88](https://github.com/motiz88)) -- Allow typedefs within interfaces \(behind an opt-in flag\) [\#32](https://github.com/w3c/webidl2.js/pull/32) ([motiz88](https://github.com/motiz88)) -- In draft [\#31](https://github.com/w3c/webidl2.js/pull/31) ([othree](https://github.com/othree)) -- Add support for extended attributes identifier lists [\#29](https://github.com/w3c/webidl2.js/pull/29) ([tobie](https://github.com/tobie)) -- Make `attribute Promise\\[\] attr;` work. [\#26](https://github.com/w3c/webidl2.js/pull/26) ([jyasskin](https://github.com/jyasskin)) -- Parse required dictionary fields. [\#25](https://github.com/w3c/webidl2.js/pull/25) ([jyasskin](https://github.com/jyasskin)) -- Define the WebIDL2 property on self rather than window. [\#23](https://github.com/w3c/webidl2.js/pull/23) ([Ms2ger](https://github.com/Ms2ger)) -- Teach WebIDL2 to parse \[\] default values. [\#22](https://github.com/w3c/webidl2.js/pull/22) ([jyasskin](https://github.com/jyasskin)) -- Support ID list in extended attributes [\#20](https://github.com/w3c/webidl2.js/pull/20) ([othree](https://github.com/othree)) -- Make sure that `sequence` property of idl types is set to false if the type is actually `sequence`. [\#16](https://github.com/w3c/webidl2.js/pull/16) ([tobie](https://github.com/tobie)) -- Parametrized [\#15](https://github.com/w3c/webidl2.js/pull/15) ([tobie](https://github.com/tobie)) -- Add promise support [\#12](https://github.com/w3c/webidl2.js/pull/12) ([tobie](https://github.com/tobie)) -- Remove broken coverage support from travis for now. [\#11](https://github.com/w3c/webidl2.js/pull/11) ([tobie](https://github.com/tobie)) -- Add support for \[MapClass\(type, type\)\]. [\#10](https://github.com/w3c/webidl2.js/pull/10) ([tobie](https://github.com/tobie)) -- Incorporate tests from widlproc\[1\] and remove dependency on said project. [\#9](https://github.com/w3c/webidl2.js/pull/9) ([tobie](https://github.com/tobie)) -- README incorrectly recommended updating the widlproc submodule. [\#8](https://github.com/w3c/webidl2.js/pull/8) ([tobie](https://github.com/tobie)) -- Fix bug where instrumented version of webidl2 was loaded. [\#6](https://github.com/w3c/webidl2.js/pull/6) ([tobie](https://github.com/tobie)) -- Use https:// instead of git:// [\#4](https://github.com/w3c/webidl2.js/pull/4) ([Manishearth](https://github.com/Manishearth)) - - - -\* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)* \ No newline at end of file diff --git a/test/fixtures/wpt/resources/webidl2/LICENSE b/test/fixtures/wpt/resources/webidl2/LICENSE deleted file mode 100644 index fd21d439b09a8d..00000000000000 --- a/test/fixtures/wpt/resources/webidl2/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Robin Berjon - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/test/fixtures/wpt/resources/webidl2/README.md b/test/fixtures/wpt/resources/webidl2/README.md deleted file mode 100644 index 9a8f3f8e9c1dfb..00000000000000 --- a/test/fixtures/wpt/resources/webidl2/README.md +++ /dev/null @@ -1,629 +0,0 @@ - -# WebIDL 2 - -[![NPM version](https://badge.fury.io/js/webidl2.svg)](http://badge.fury.io/js/webidl2) - -## Purpose - -This is a parser for the [WebIDL](http://dev.w3.org/2006/webapi/WebIDL/) language. If -you don't know what that is, then you probably don't need it. It is meant to be used -both in Node and in the browser (the parser likely works in other JS environments, but -not the test suite). - -## Installation - -Just the usual. For Node: - -```Bash -npm install webidl2 -``` - -In the browser: - -```HTML - -``` - -## Documentation - -The API to WebIDL2 is trivial: you parse a string of WebIDL and it returns a syntax tree. - -### Parsing - -In Node, that happens with: - -```JS -var WebIDL2 = require("webidl2"); -var tree = WebIDL2.parse("string of WebIDL"); -``` - -In the browser: -```HTML - - -``` - -### Errors - -When there is a syntax error in the WebIDL, it throws an exception object with the following -properties: - -* `message`: the error message -* `line`: the line at which the error occurred. -* `input`: a short peek at the text at the point where the error happened -* `tokens`: the five tokens at the point of error, as understood by the tokeniser - (this is the same content as `input`, but seen from the tokeniser's point of view) - -The exception also has a `toString()` method that hopefully should produce a decent -error message. - -### AST (Abstract Syntax Tree) - -The `parse()` method returns a tree object representing the parse tree of the IDL. -Comment and white space are not represented in the AST. - -The root of this object is always an array of definitions (where definitions are -any of interfaces, dictionaries, callbacks, etc. — anything that can occur at the root -of the IDL). - -### IDL Type - -This structure is used in many other places (operation return types, argument types, etc.). -It captures a WebIDL type with a number of options. Types look like this and are typically -attached to a field called `idlType`: - -```JS -{ - "type": "attribute-type", - "generic": null, - "idlType": "unsigned short", - "nullable": false, - "union": false, - "extAttrs": [...] -} -``` - -Where the fields are as follows: - -* `type`: String indicating where this type is used. Can be `null` if not applicable. -* `generic`: String indicating the generic type (e.g. "Promise", "sequence"). `null` - otherwise. -* `idlType`: Can be different things depending on context. In most cases, this will just - be a string with the type name. But the reason this field isn't called "typeName" is - because it can take more complex values. If the type is a union, then this contains an - array of the types it unites. If it is a generic type, it contains the IDL type - description for the type in the sequence, the eventual value of the promise, etc. -* `nullable`: Boolean indicating whether this is nullable or not. -* `union`: Boolean indicating whether this is a union type or not. -* `extAttrs`: A list of [extended attributes](#extended-attributes). - -### Interface - -Interfaces look like this: - -```JS -{ - "type": "interface", - "name": "Animal", - "partial": false, - "members": [...], - "inheritance": null, - "extAttrs": [...] -}, { - "type": "interface", - "name": "Human", - "partial": false, - "members": [...], - "inheritance": "Animal", - "extAttrs": [...] -} -``` - -The fields are as follows: - -* `type`: Always "interface". -* `name`: The name of the interface. -* `partial`: A boolean indicating whether it's a partial interface. -* `members`: An array of interface members (attributes, operations, etc.). Empty if there are none. -* `inheritance`: A string giving the name of an interface this one inherits from, `null` otherwise. - **NOTE**: In v1 this was an array, but multiple inheritance is no longer supported so this didn't make - sense. -* `extAttrs`: A list of [extended attributes](#extended-attributes). - -### Interface mixins - -Interfaces mixins look like this: - -```JS -{ - "type": "interface mixin", - "name": "Animal", - "partial": false, - "members": [...], - "extAttrs": [...] -}, { - "type": "interface mixin", - "name": "Human", - "partial": false, - "members": [...], - "extAttrs": [...] -} -``` - -The fields are as follows: - -* `type`: Always "interface mixin". -* `name`: The name of the interface mixin. -* `partial`: A boolean indicating whether it's a partial interface mixin. -* `members`: An array of interface members (attributes, operations, etc.). Empty if there are none. -* `extAttrs`: A list of [extended attributes](#extended-attributes). - -### Namespace - -Namespaces look like this: - -```JS -{ - "type": "namespace", - "name": "Console", - "partial": false, - "members": [...], - "extAttrs": [...] -} -``` - -The fields are as follows: - -* `type`: Always "namespace". -* `name`: The name of the namespace. -* `partial`: A boolean indicating whether it's a partial namespace. -* `members`: An array of namespace members (attributes and operations). Empty if there are none. -* `extAttrs`: A list of [extended attributes](#extended-attributes). - -### Callback Interfaces - -These are captured by the same structure as [Interfaces](#interface) except that -their `type` field is "callback interface". - -### Callback - -A callback looks like this: - -```JS -{ - "type": "callback", - "name": "AsyncOperationCallback", - "idlType": { - "type": "return-type", - "sequence": false, - "generic": null, - "nullable": false, - "union": false, - "idlType": "void", - "extAttrs": [] - }, - "arguments": [...], - "extAttrs": [] -} -``` - -The fields are as follows: - -* `type`: Always "callback". -* `name`: The name of the callback. -* `idlType`: An [IDL Type](#idl-type) describing what the callback returns. -* `arguments`: A list of [arguments](#arguments), as in function paramters. -* `extAttrs`: A list of [extended attributes](#extended-attributes). - -### Dictionary - -A dictionary looks like this: - -```JS -{ - "type": "dictionary", - "name": "PaintOptions", - "partial": false, - "members": [{ - "type": "field", - "name": "fillPattern", - "required": false, - "idlType": { - "type": "dictionary-type", - "sequence": false, - "generic": null, - "nullable": true, - "union": false, - "idlType": "DOMString", - "extAttrs": [...] - }, - "extAttrs": [], - "default": { - "type": "string", - "value": "black" - } - }], - "inheritance": null, - "extAttrs": [] -} -``` - -The fields are as follows: - -* `type`: Always "dictionary". -* `name`: The dictionary name. -* `partial`: Boolean indicating whether it's a partial dictionary. -* `members`: An array of members (see below). -* `inheritance`: A string indicating which dictionary is being inherited from, `null` otherwise. -* `extAttrs`: A list of [extended attributes](#extended-attributes). - -All the members are fields as follows: - -* `type`: Always "field". -* `name`: The name of the field. -* `required`: Boolean indicating whether this is a [required](https://heycam.github.io/webidl/#required-dictionary-member) field. -* `idlType`: An [IDL Type](#idl-type) describing what field's type. -* `extAttrs`: A list of [extended attributes](#extended-attributes). -* `default`: A [default value](#default-and-const-values), absent if there is none. - -### Enum - -An enum looks like this: - -```JS -{ - "type": "enum", - "name": "MealType", - "values": [ - { "type": "string", "value": "rice" }, - { "type": "string", "value": "noodles" }, - { "type": "string", "value": "other" } - ], - "extAttrs": [] -} -``` - -The fields are as follows: - -* `type`: Always "enum". -* `name`: The enum's name. -* `values`: An array of values. -* `extAttrs`: A list of [extended attributes](#extended-attributes). - -### Typedef - -A typedef looks like this: - -```JS -{ - "type": "typedef", - "idlType": { - "type": "typedef-type", - "sequence": true, - "generic": "sequence", - "nullable": false, - "union": false, - "idlType": { - "type": "typedef-type", - "sequence": false, - "generic": null, - "nullable": false, - "union": false, - "idlType": "Point", - "extAttrs": [...] - }, - "extAttrs": [...] - }, - "name": "PointSequence", - "extAttrs": [] -} -``` - - -The fields are as follows: - -* `type`: Always "typedef". -* `name`: The typedef's name. -* `idlType`: An [IDL Type](#idl-type) describing what typedef's type. -* `extAttrs`: A list of [extended attributes](#extended-attributes). - -### Implements - -An implements definition looks like this: - -```JS -{ - "type": "implements", - "target": "Node", - "implements": "EventTarget", - "extAttrs": [] -} -``` - -The fields are as follows: - -* `type`: Always "implements". -* `target`: The interface that implements another. -* `implements`: The interface that is being implemented by the target. -* `extAttrs`: A list of [extended attributes](#extended-attributes). - -### Includes - -An includes definition looks like this: - -```JS -{ - "type": "includes", - "target": "Node", - "includes": "EventTarget", - "extAttrs": [] -} -``` - -The fields are as follows: - -* `type`: Always "includes". -* `target`: The interface that includes an interface mixin. -* `includes`: The interface mixin that is being included by the target. -* `extAttrs`: A list of [extended attributes](#extended-attributes). - -### Operation Member - -An operation looks like this: -```JS -{ - "type": "operation", - "getter": false, - "setter": false, - "deleter": false, - "static": false, - "stringifier": false, - "idlType": { - "type": "return-type", - "sequence": false, - "generic": null, - "nullable": false, - "union": false, - "idlType": "void", - "extAttrs": [] - }, - "name": "intersection", - "arguments": [{ - "optional": false, - "variadic": true, - "extAttrs": [], - "idlType": { - "type": "argument-type", - "sequence": false, - "generic": null, - "nullable": false, - "union": false, - "idlType": "long", - "extAttrs": [...] - }, - "name": "ints" - }], - "extAttrs": [] -} -``` - -The fields are as follows: - -* `type`: Always "operation". -* `getter`: True if a getter operation. -* `setter`: True if a setter operation. -* `deleter`: True if a deleter operation. -* `static`: True if a static operation. -* `stringifier`: True if a stringifier operation. -* `idlType`: An [IDL Type](#idl-type) of what the operation returns. If a stringifier, may be absent. -* `name`: The name of the operation. If a stringifier, may be `null`. -* `arguments`: An array of [arguments](#arguments) for the operation. -* `extAttrs`: A list of [extended attributes](#extended-attributes). - -### Attribute Member - -An attribute member looks like this: - -```JS -{ - "type": "attribute", - "static": false, - "stringifier": false, - "inherit": false, - "readonly": false, - "idlType": { - "type": "attribute-type", - "sequence": false, - "generic": null, - "nullable": false, - "union": false, - "idlType": "RegExp", - "extAttrs": [...] - }, - "name": "regexp", - "extAttrs": [] -} -``` - -The fields are as follows: - -* `type`: Always "attribute". -* `name`: The attribute's name. -* `static`: True if it's a static attribute. -* `stringifier`: True if it's a stringifier attribute. -* `inherit`: True if it's an inherit attribute. -* `readonly`: True if it's a read-only attribute. -* `idlType`: An [IDL Type](#idl-type) for the attribute. -* `extAttrs`: A list of [extended attributes](#extended-attributes). - -### Constant Member - -A constant member looks like this: - -```JS -{ - "type": "const", - "nullable": false, - "idlType": { - "type": "const-type", - "sequence": false, - "generic": null, - "nullable": false, - "union": false, - "idlType": "boolean" - "extAttrs": [] - }, - "name": "DEBUG", - "value": { - "type": "boolean", - "value": false - }, - "extAttrs": [] -} -``` - -The fields are as follows: - -* `type`: Always "const". -* `nullable`: Whether its type is nullable. -* `idlType`: An [IDL Type](#idl-type) of the constant that represents a simple type, the type name. -* `name`: The name of the constant. -* `value`: The constant value as described by [Const Values](#default-and-const-values) -* `extAttrs`: A list of [extended attributes](#extended-attributes). - -### Arguments - -The arguments (e.g. for an operation) look like this: - -```JS -{ - "arguments": [{ - "optional": false, - "variadic": true, - "extAttrs": [], - "idlType": { - "type": "argument-type", - "sequence": false, - "generic": null, - "nullable": false, - "union": false, - "idlType": "long", - "extAttrs": [...] - }, - "name": "ints" - }] -} -``` - -The fields are as follows: - -* `optional`: True if the argument is optional. -* `variadic`: True if the argument is variadic. -* `idlType`: An [IDL Type](#idl-type) describing the type of the argument. -* `name`: The argument's name. -* `extAttrs`: A list of [extended attributes](#extended-attributes). - -### Extended Attributes - -Extended attributes are arrays of items that look like this: - -```JS -{ - "extAttrs": [{ - "name": "TreatNullAs", - "arguments": null, - "type": "extended-attribute", - "rhs": { - "type": "identifier", - "value": "EmptyString" - } - }] -} -``` - -The fields are as follows: - -* `name`: The extended attribute's name. -* `arguments`: If the extended attribute takes arguments (e.g. `[Foo()]`) or if - its right-hand side does (e.g. `[NamedConstructor=Name(DOMString blah)]`) they - are listed here. Note that an empty arguments list will produce an empty array, - whereas the lack thereof will yield a `null`. If there is an `rhs` field then - they are the right-hand side's arguments, otherwise they apply to the extended - attribute directly. -* `type`: Always `"extended-attribute"`. -* `rhs`: If there is a right-hand side, this will capture its `type` (which can be - "identifier" or "identifier-list") and its `value`. - -### Default and Const Values - -Dictionary fields and operation arguments can take default values, and constants take -values, all of which have the following fields: - -* `type`: One of string, number, boolean, null, Infinity, NaN, or sequence. - -For string, number, boolean, and sequence: - -* `value`: The value of the given type, as a string. For sequence, the only possible value is `[]`. - -For Infinity: - -* `negative`: Boolean indicating whether this is negative Infinity or not. - -### `iterable<>`, `legacyiterable<>`, `maplike<>`, `setlike<>` declarations - -These appear as members of interfaces that look like this: - -```JS -{ - "type": "maplike", // or "legacyiterable" / "iterable" / "setlike" - "idlType": /* One or two types */ , - "readonly": false, // only for maplike and setlike - "extAttrs": [] -} -``` - -The fields are as follows: - -* `type`: Always one of "iterable", "legacyiterable", "maplike" or "setlike". -* `idlType`: An array with one or more [IDL Types](#idl-type) representing the declared type arguments. -* `readonly`: Whether the maplike or setlike is declared as read only. -* `extAttrs`: A list of [extended attributes](#extended-attributes). - - -## Testing - -### Running - -The test runs with mocha and expect.js. Normally, running mocha in the root directory -should be enough once you're set up. - -### Coverage - -Current test coverage, as documented in `coverage.html`, is 95%. You can run your own -coverage analysis with: - -```Bash -jscoverage lib lib-cov -``` - -That will create the lib-cov directory with instrumented code; the test suite knows -to use that if needed. You can then run the tests with: - -```Bash -JSCOV=1 mocha --reporter html-cov > coverage.html -``` - -Note that I've been getting weirdly overescaped results from the html-cov reporter, -so you might wish to try this instead: - -```Bash -JSCOV=1 mocha --reporter html-cov | sed "s/<//g" | sed "s/"/\"/g" > coverage.html -``` -### Browser tests - -In order to test in the browser, get inside `test/web` and run `make-web-tests.js`. This -will generate a `browser-tests.html` file that you can open in a browser. As of this -writing tests pass in the latest Firefox, Chrome, Opera, and Safari. Testing on IE -and older versions will happen progressively. diff --git a/test/fixtures/wpt/resources/webidl2/checker/index.html b/test/fixtures/wpt/resources/webidl2/checker/index.html deleted file mode 100644 index 9897d8572f22a0..00000000000000 --- a/test/fixtures/wpt/resources/webidl2/checker/index.html +++ /dev/null @@ -1,55 +0,0 @@ - - - -WebIDL 2 Checker - - - - - - -

WebIDL Checker

-

This is an online checker for WebIDL built on the webidl2.js project.

-

Enter your WebIDL to check below:

- -
- -

Validation results:

- -

Parser output:

- -
-Pretty Print - - diff --git a/test/fixtures/wpt/resources/webidl2/coverage.html b/test/fixtures/wpt/resources/webidl2/coverage.html deleted file mode 100644 index 46e7ed324ec2c8..00000000000000 --- a/test/fixtures/wpt/resources/webidl2/coverage.html +++ /dev/null @@ -1,341 +0,0 @@ -Coverage -

Coverage

95%
572
548
24

webidl2.js

95%
572
548
24
LineHitsSource
1
2
31(function () {
41 var tokenise = function (str) {
547 var tokens = []
6 , re = {
7 "float": /^-?(([0-9]+\.[0-9]*|[0-9]*\.[0-9]+)([Ee][-+]?[0-9]+)?|[0-9]+[Ee][-+]?[0-9]+)/
8 , "integer": /^-?(0([Xx][0-9A-Fa-f]+|[0-7]*)|[1-9][0-9]*)/
9 , "identifier": /^[A-Z_a-z][0-9A-Z_a-z]*/
10 , "string": /^"[^"]*"/
11 , "whitespace": /^(?:[\t\n\r ]+|[\t\n\r ]*((\/\/.*|\/\*(.|\n|\r)*?\*\/)[\t\n\r ]*))+/
12 , "other": /^[^\t\n\r 0-9A-Z_a-z]/
13 }
14 , types = []
15 ;
16329 for (var k in re) types.push(k);
1747 while (str.length > 0) {
182914 var matched = false;
192914 for (var i = 0, n = types.length; i < n; i++) {
2013325 var type = types[i];
2113325 str = str.replace(re[type], function (tok) {
222914 tokens.push({ type: type, value: tok });
232914 matched = true;
242914 return "";
25 });
2616239 if (matched) break;
27 }
285828 if (matched) continue;
290 throw new Error("Token stream not progressing");
30 }
3147 return tokens;
32 };
33
341 var parse = function (tokens) {
3547 var line = 1;
3647 tokens = tokens.slice();
37
3847 var FLOAT = "float"
39 , INT = "integer"
40 , ID = "identifier"
41 , STR = "string"
42 , OTHER = "other"
43 ;
44
4547 var WebIDLParseError = function (str, line, input, tokens) {
460 this.message = str;
470 this.line = line;
480 this.input = input;
490 this.tokens = tokens;
50 };
5147 WebIDLParseError.prototype.toString = function () {
520 return this.message + ", line " + this.line + " (tokens: '" + this.input + "')\n" +
53 JSON.stringify(this.tokens, null, 4);
54 };
55
5647 var error = function (str) {
570 var tok = "", numTokens = 0, maxTokens = 5;
580 while (numTokens < maxTokens && tokens.length > numTokens) {
590 tok += tokens[numTokens].value;
600 numTokens++;
61 }
620 throw new WebIDLParseError(str, line, tok, tokens.slice(0, 5));
63 };
64
6547 var last_token = null;
66
6747 var consume = function (type, value) {
688778 if (!tokens.length || tokens[0].type !== type) return;
695470 if (typeof value === "undefined" || tokens[0].value === value) {
701738 last_token = tokens.shift();
711738 return last_token;
72 }
73 };
74
7547 var ws = function () {
766961 if (!tokens.length) return;
77 // console.log("tokens.length", tokens.length, tokens[0]);
786115 if (tokens[0].type === "whitespace") {
791172 var t = tokens.shift();
802294 t.value.replace(/\n/g, function (m) { line++; return m; });
811172 return t;
82 }
83 };
84
8547 var all_ws = function () {
865366 var t = { type: "whitespace", value: "" };
875366 while (true) {
886538 var w = ws();
8911904 if (!w) break;
901172 t.value += w.value;
91 }
926538 if (t.value.length > 0) return t;
93 };
94
9547 var integer_type = function () {
96273 var ret = "";
97273 all_ws();
98312 if (consume(ID, "unsigned")) ret = "unsigned ";
99273 all_ws();
100287 if (consume(ID, "short")) return ret + "short";
101259 if (consume(ID, "long")) {
10241 ret += "long";
10341 all_ws();
10443 if (consume(ID, "long")) return ret + " long";
10539 return ret;
106 }
107218 if (ret) error("Failed to parse integer type");
108 };
109
11047 var float_type = function () {
111218 var ret = "";
112218 all_ws();
113222 if (consume(ID, "unrestricted")) ret = "unrestricted ";
114218 all_ws();
115257 if (consume(ID, "float")) return ret + "float";
116182 if (consume(ID, "double")) return ret + "double";
117176 if (ret) error("Failed to parse float type");
118 };
119
12047 var primitive_type = function () {
121273 var num_type = integer_type() || float_type();
122370 if (num_type) return num_type;
123176 all_ws();
124186 if (consume(ID, "boolean")) return "boolean";
125167 if (consume(ID, "byte")) return "byte";
126168 if (consume(ID, "octet")) return "octet";
127 };
128
12947 var const_value = function () {
13017 if (consume(ID, "true")) return true;
13119 if (consume(ID, "false")) return false;
13217 if (consume(ID, "null")) return null;
13314 if (consume(ID, "Infinity")) return Infinity;
13413 if (consume(ID, "NaN")) return NaN;
13511 var ret = consume(FLOAT) || consume(INT);
13619 if (ret) return 1 * ret.value;
1373 var tok = consume(OTHER, "-");
1383 if (tok) {
1392 if (consume(ID, "Infinity")) return -Infinity;
1400 else tokens.unshift(tok);
141 }
142 };
143
14447 var type_suffix = function (obj) {
145249 while (true) {
146263 all_ws();
147263 if (consume(OTHER, "?")) {
14811 if (obj.nullable) error("Can't nullable more than once");
14911 obj.nullable = true;
150 }
151252 else if (consume(OTHER, "[")) {
1523 all_ws();
1533 consume(OTHER, "]") || error("Unterminated array type");
1545 if (!obj.array) obj.array = 1;
1551 else obj.array++;
156 }
157249 else return;
158 }
159 };
160
16147 var single_type = function () {
162261 var prim = primitive_type()
163 , ret = { sequence: false, nullable: false, array: false, union: false }
164 ;
165261 if (prim) {
16699 ret.idlType = prim;
167 }
168162 else if (consume(ID, "sequence")) {
1694 all_ws();
1704 if (!consume(OTHER, "<")) {
1710 ret.idlType = "sequence";
172 }
173 else {
1744 ret.sequence = true;
1754 ret.idlType = type() || error("Error parsing sequence type");
1764 all_ws();
1774 if (!consume(OTHER, ">")) error("Unterminated sequence");
1784 all_ws();
1795 if (consume(OTHER, "?")) ret.nullable = true;
1804 return ret;
181 }
182 }
183 else {
184158 var name = consume(ID);
185169 if (!name) return;
186147 ret.idlType = name.value;
187 }
188246 type_suffix(ret);
189246 if (ret.nullable && ret.idlType === "any") error("Type any cannot be made nullable");
190246 return ret;
191 };
192
19347 var union_type = function () {
19411 all_ws();
19519 if (!consume(OTHER, "(")) return;
1963 var ret = { sequence: false, nullable: false, array: false, union: true, idlType: [] };
1973 var fst = type() || error("Union type with no content");
1983 ret.idlType.push(fst);
1993 while (true) {
2007 all_ws();
20110 if (!consume(ID, "or")) break;
2024 var typ = type() || error("No type after 'or' in union type");
2034 ret.idlType.push(typ);
204 }
2053 if (!consume(OTHER, ")")) error("Unterminated union type");
2063 type_suffix(ret);
2073 return ret;
208 };
209
21047 var type = function () {
211261 return single_type() || union_type();
212 };
213
21447 var argument = function () {
21579 var ret = { optional: false, variadic: false };
21679 ret.extAttrs = extended_attrs();
21779 all_ws();
21879 if (consume(ID, "optional")) {
2192 ret.optional = true;
2202 all_ws();
221 }
22279 ret.type = type();
22387 if (!ret.type) return;
22471 if (!ret.optional) {
22569 all_ws();
22669 if (tokens.length >= 3 &&
227 tokens[0].type === "other" && tokens[0].value === "." &&
228 tokens[1].type === "other" && tokens[1].value === "." &&
229 tokens[2].type === "other" && tokens[2].value === "."
230 ) {
2314 tokens.shift();
2324 tokens.shift();
2334 tokens.shift();
2344 ret.variadic = true;
235 }
236 }
23771 all_ws();
23871 var name = consume(ID) || error("No name in argument");
23971 ret.name = name.value;
24071 if (ret.optional) {
2412 all_ws();
2422 ret["default"] = default_();
243 }
24471 return ret;
245 };
246
24747 var argument_list = function () {
24859 var arg = argument(), ret = [];
24967 if (!arg) return ret;
25051 ret.push(arg);
25151 while (true) {
25271 all_ws();
253122 if (!consume(OTHER, ",")) return ret;
25420 all_ws();
25520 var nxt = argument() || error("Trailing comma in arguments list");
25620 ret.push(nxt);
257 }
258 };
259
26047 var simple_extended_attr = function () {
26117 all_ws();
26217 var name = consume(ID);
26317 if (!name) return;
26417 var ret = {
265 name: name.value
266 , "arguments": null
267 };
26817 all_ws();
26917 var eq = consume(OTHER, "=");
27017 if (eq) {
2715 all_ws();
2725 ret.rhs = consume(ID);
2735 if (!ret.rhs) return error("No right hand side to extended attribute assignment");
274 }
27517 all_ws();
27617 if (consume(OTHER, "(")) {
2772 ret["arguments"] = argument_list();
2782 all_ws();
2792 consume(OTHER, ")") || error("Unclosed argument in extended attribute");
280 }
28117 return ret;
282 };
283
284 // Note: we parse something simpler than the official syntax. It's all that ever
285 // seems to be used
28647 var extended_attrs = function () {
287415 var eas = [];
288415 all_ws();
289815 if (!consume(OTHER, "[")) return eas;
29015 eas[0] = simple_extended_attr() || error("Extended attribute with not content");
29115 all_ws();
29215 while (consume(OTHER, ",")) {
2932 all_ws();
2942 eas.push(simple_extended_attr() || error("Trailing comma in extended attribute"));
2952 all_ws();
296 }
29715 consume(OTHER, "]") || error("No end of extended attribute");
29815 return eas;
299 };
300
30147 var default_ = function () {
30211 all_ws();
30311 if (consume(OTHER, "=")) {
3045 all_ws();
3055 var def = const_value();
3065 if (typeof def !== "undefined") {
3073 return def;
308 }
309 else {
3102 var str = consume(STR) || error("No value for default");
3112 return str;
312 }
313 }
314 };
315
31647 var const_ = function () {
317180 all_ws();
318348 if (!consume(ID, "const")) return;
31912 var ret = { type: "const", nullable: false };
32012 all_ws();
32112 var typ = primitive_type();
32212 if (!typ) {
3230 typ = consume(ID) || error("No type for const");
3240 typ = typ.value;
325 }
32612 ret.idlType = typ;
32712 all_ws();
32812 if (consume(OTHER, "?")) {
3291 ret.nullable = true;
3301 all_ws();
331 }
33212 var name = consume(ID) || error("No name for const");
33312 ret.name = name.value;
33412 all_ws();
33512 consume(OTHER, "=") || error("No value assignment for const");
33612 all_ws();
33712 var cnt = const_value();
33824 if (typeof cnt !== "undefined") ret.value = cnt;
3390 else error("No value for const");
34012 all_ws();
34112 consume(OTHER, ";") || error("Unterminated const");
34212 return ret;
343 };
344
34547 var inheritance = function () {
34689 all_ws();
34789 if (consume(OTHER, ":")) {
3489 all_ws();
3499 var inh = consume(ID) || error ("No type in inheritance");
3509 return inh.value;
351 }
352 };
353
35447 var operation_rest = function (ret) {
35556 all_ws();
35657 if (!ret) ret = {};
35756 var name = consume(ID);
35856 ret.name = name ? name.value : null;
35956 all_ws();
36056 consume(OTHER, "(") || error("Invalid operation");
36156 ret["arguments"] = argument_list();
36256 all_ws();
36356 consume(OTHER, ")") || error("Unterminated operation");
36456 all_ws();
36556 consume(OTHER, ";") || error("Unterminated operation");
36656 return ret;
367 };
368
36947 var callback = function () {
370144 all_ws();
371144 var ret;
372286 if (!consume(ID, "callback")) return;
3732 all_ws();
3742 var tok = consume(ID, "interface");
3752 if (tok) {
3761 tokens.unshift(tok);
3771 ret = interface_();
3781 ret.type = "callback interface";
3791 return ret;
380 }
3811 var name = consume(ID) || error("No name for callback");
3821 ret = { type: "callback", name: name.value };
3831 all_ws();
3841 consume(OTHER, "=") || error("No assignment in callback");
3851 all_ws();
3861 ret.idlType = return_type();
3871 all_ws();
3881 consume(OTHER, "(") || error("No arguments in callback");
3891 ret["arguments"] = argument_list();
3901 all_ws();
3911 consume(OTHER, ")") || error("Unterminated callback");
3921 all_ws();
3931 consume(OTHER, ";") || error("Unterminated callback");
3941 return ret;
395 };
396
39747 var attribute = function () {
398154 all_ws();
399154 var grabbed = []
400 , ret = {
401 type: "attribute"
402 , "static": false
403 , stringifier: false
404 , inherit: false
405 , readonly: false
406 };
407154 if (consume(ID, "static")) {
4082 ret["static"] = true;
4092 grabbed.push(last_token);
410 }
411152 else if (consume(ID, "stringifier")) {
4124 ret.stringifier = true;
4134 grabbed.push(last_token);
414 }
415154 var w = all_ws();
416159 if (w) grabbed.push(w);
417154 if (consume(ID, "inherit")) {
4181 if (ret["static"] || ret.stringifier) error("Cannot have a static or stringifier inherit");
4191 ret.inherit = true;
4201 grabbed.push(last_token);
4211 var w = all_ws();
4222 if (w) grabbed.push(w);
423 }
424154 if (consume(ID, "readonly")) {
42532 ret.readonly = true;
42632 grabbed.push(last_token);
42732 var w = all_ws();
42864 if (w) grabbed.push(w);
429 }
430154 if (!consume(ID, "attribute")) {
43160 tokens = grabbed.concat(tokens);
43260 return;
433 }
43494 all_ws();
43594 ret.idlType = type() || error("No type in attribute");
43694 if (ret.idlType.sequence) error("Attributes cannot accept sequence types");
43794 all_ws();
43894 var name = consume(ID) || error("No name in attribute");
43994 ret.name = name.value;
44094 all_ws();
44194 consume(OTHER, ";") || error("Unterminated attribute");
44294 return ret;
443 };
444
44547 var return_type = function () {
44661 var typ = type();
44761 if (!typ) {
4480 if (consume(ID, "void")) {
4490 return "void";
450 }
4510 else error("No return type");
452 }
45361 return typ;
454 };
455
45647 var operation = function () {
45760 all_ws();
45860 var ret = {
459 type: "operation"
460 , getter: false
461 , setter: false
462 , creator: false
463 , deleter: false
464 , legacycaller: false
465 , "static": false
466 , stringifier: false
467 };
46860 while (true) {
46978 all_ws();
47087 if (consume(ID, "getter")) ret.getter = true;
47174 else if (consume(ID, "setter")) ret.setter = true;
47265 else if (consume(ID, "creator")) ret.creator = true;
47365 else if (consume(ID, "deleter")) ret.deleter = true;
47462 else if (consume(ID, "legacycaller")) ret.legacycaller = true;
47560 else break;
476 }
47760 if (ret.getter || ret.setter || ret.creator || ret.deleter || ret.legacycaller) {
47817 all_ws();
47917 ret.idlType = return_type();
48017 operation_rest(ret);
48117 return ret;
482 }
48343 if (consume(ID, "static")) {
4841 ret["static"] = true;
4851 ret.idlType = return_type();
4861 operation_rest(ret);
4871 return ret;
488 }
48942 else if (consume(ID, "stringifier")) {
4903 ret.stringifier = true;
4913 all_ws();
4924 if (consume(OTHER, ";")) return ret;
4932 ret.idlType = return_type();
4942 operation_rest(ret);
4952 return ret;
496 }
49739 ret.idlType = return_type();
49839 all_ws();
49939 if (consume(ID, "iterator")) {
5004 all_ws();
5014 ret.type = "iterator";
5024 if (consume(ID, "object")) {
5031 ret.iteratorObject = "object";
504 }
5053 else if (consume(OTHER, "=")) {
5062 all_ws();
5072 var name = consume(ID) || error("No right hand side in iterator");
5082 ret.iteratorObject = name.value;
509 }
5104 all_ws();
5114 consume(OTHER, ";") || error("Unterminated iterator");
5124 return ret;
513 }
514 else {
51535 operation_rest(ret);
51635 return ret;
517 }
518 };
519
52047 var identifiers = function (arr) {
5215 while (true) {
52211 all_ws();
52311 if (consume(OTHER, ",")) {
5246 all_ws();
5256 var name = consume(ID) || error("Trailing comma in identifiers list");
5266 arr.push(name.value);
527 }
5285 else break;
529 }
530 };
531
53247 var serialiser = function () {
533164 all_ws();
534318 if (!consume(ID, "serializer")) return;
53510 var ret = { type: "serializer" };
53610 all_ws();
53710 if (consume(OTHER, "=")) {
5388 all_ws();
5398 if (consume(OTHER, "{")) {
5405 ret.patternMap = true;
5415 all_ws();
5425 var id = consume(ID);
5435 if (id && id.value === "getter") {
5441 ret.names = ["getter"];
545 }
5464 else if (id && id.value === "inherit") {
5472 ret.names = ["inherit"];
5482 identifiers(ret.names);
549 }
5502 else if (id) {
5512 ret.names = [id.value];
5522 identifiers(ret.names);
553 }
554 else {
5550 ret.names = [];
556 }
5575 all_ws();
5585 consume(OTHER, "}") || error("Unterminated serializer pattern map");
559 }
5603 else if (consume(OTHER, "[")) {
5612 ret.patternList = true;
5622 all_ws();
5632 var id = consume(ID);
5642 if (id && id.value === "getter") {
5651 ret.names = ["getter"];
566 }
5671 else if (id) {
5681 ret.names = [id.value];
5691 identifiers(ret.names);
570 }
571 else {
5720 ret.names = [];
573 }
5742 all_ws();
5752 consume(OTHER, "]") || error("Unterminated serializer pattern list");
576 }
577 else {
5781 var name = consume(ID) || error("Invalid serializer");
5791 ret.name = name.value;
580 }
5818 all_ws();
5828 consume(OTHER, ";") || error("Unterminated serializer");
5838 return ret;
584 }
5852 else if (consume(OTHER, ";")) {
586 // noop, just parsing
587 }
588 else {
5891 ret.idlType = return_type();
5901 all_ws();
5911 ret.operation = operation_rest();
592 }
5932 return ret;
594 };
595
59647 var interface_ = function (isPartial) {
597144 all_ws();
598210 if (!consume(ID, "interface")) return;
59978 all_ws();
60078 var name = consume(ID) || error("No name for interface");
60178 var ret = {
602 type: "interface"
603 , name: name.value
604 , partial: false
605 , members: []
606 };
607155 if (!isPartial) ret.inheritance = inheritance() || null;
60878 all_ws();
60978 consume(OTHER, "{") || error("Bodyless interface");
61078 while (true) {
611251 all_ws();
612251 if (consume(OTHER, "}")) {
61378 all_ws();
61478 consume(OTHER, ";") || error("Missing semicolon after interface");
61578 return ret;
616 }
617173 var ea = extended_attrs();
618173 all_ws();
619173 var cnt = const_();
620173 if (cnt) {
6219 cnt.extAttrs = ea;
6229 ret.members.push(cnt);
6239 continue;
624 }
625164 var mem = serialiser() || attribute() || operation() || error("Unknown member");
626164 mem.extAttrs = ea;
627164 ret.members.push(mem);
628 }
629 };
630
63147 var partial = function () {
63266 all_ws();
633130 if (!consume(ID, "partial")) return;
6342 var thing = dictionary(true) || interface_(true) || error("Partial doesn't apply to anything");
6352 thing.partial = true;
6362 return thing;
637 };
638
63947 var dictionary = function (isPartial) {
64066 all_ws();
641128 if (!consume(ID, "dictionary")) return;
6424 all_ws();
6434 var name = consume(ID) || error("No name for dictionary");
6444 var ret = {
645 type: "dictionary"
646 , name: name.value
647 , partial: false
648 , members: []
649 };
6507 if (!isPartial) ret.inheritance = inheritance() || null;
6514 all_ws();
6524 consume(OTHER, "{") || error("Bodyless dictionary");
6534 while (true) {
65413 all_ws();
65513 if (consume(OTHER, "}")) {
6564 all_ws();
6574 consume(OTHER, ";") || error("Missing semicolon after dictionary");
6584 return ret;
659 }
6609 var ea = extended_attrs();
6619 all_ws();
6629 var typ = type() || error("No type for dictionary member");
6639 all_ws();
6649 var name = consume(ID) || error("No name for dictionary member");
6659 ret.members.push({
666 type: "field"
667 , name: name.value
668 , idlType: typ
669 , extAttrs: ea
670 , "default": default_()
671 });
6729 all_ws();
6739 consume(OTHER, ";") || error("Unterminated dictionary member");
674 }
675 };
676
67747 var exception = function () {
67861 all_ws();
679113 if (!consume(ID, "exception")) return;
6809 all_ws();
6819 var name = consume(ID) || error("No name for exception");
6829 var ret = {
683 type: "exception"
684 , name: name.value
685 , members: []
686 };
6879 ret.inheritance = inheritance() || null;
6889 all_ws();
6899 consume(OTHER, "{") || error("Bodyless exception");
6909 while (true) {
69116 all_ws();
69216 if (consume(OTHER, "}")) {
6939 all_ws();
6949 consume(OTHER, ";") || error("Missing semicolon after exception");
6959 return ret;
696 }
6977 var ea = extended_attrs();
6987 all_ws();
6997 var cnt = const_();
7007 if (cnt) {
7013 cnt.extAttrs = ea;
7023 ret.members.push(cnt);
703 }
704 else {
7054 var typ = type();
7064 all_ws();
7074 var name = consume(ID);
7084 all_ws();
7094 if (!typ || !name || !consume(OTHER, ";")) error("Unknown member in exception body");
7104 ret.members.push({
711 type: "field"
712 , name: name.value
713 , idlType: typ
714 , extAttrs: ea
715 });
716 }
717 }
718 };
719
72047 var enum_ = function () {
72152 all_ws();
722103 if (!consume(ID, "enum")) return;
7231 all_ws();
7241 var name = consume(ID) || error("No name for enum");
7251 var ret = {
726 type: "enum"
727 , name: name.value
728 , values: []
729 };
7301 all_ws();
7311 consume(OTHER, "{") || error("No curly for enum");
7321 var saw_comma = false;
7331 while (true) {
7344 all_ws();
7354 if (consume(OTHER, "}")) {
7361 all_ws();
7371 if (saw_comma) error("Trailing comma in enum");
7381 consume(OTHER, ";") || error("No semicolon after enum");
7391 return ret;
740 }
7413 var val = consume(STR) || error("Unexpected value in enum");
7423 ret.values.push(val.value.replace(/"/g, ""));
7433 all_ws();
7443 if (consume(OTHER, ",")) {
7452 all_ws();
7462 saw_comma = true;
747 }
748 else {
7491 saw_comma = false;
750 }
751 }
752 };
753
75447 var typedef = function () {
75551 all_ws();
75699 if (!consume(ID, "typedef")) return;
7573 var ret = {
758 type: "typedef"
759 };
7603 all_ws();
7613 ret.extAttrs = extended_attrs();
7623 all_ws();
7633 ret.idlType = type() || error("No type in typedef");
7643 all_ws();
7653 var name = consume(ID) || error("No name in typedef");
7663 ret.name = name.value;
7673 all_ws();
7683 consume(OTHER, ";") || error("Unterminated typedef");
7693 return ret;
770 };
771
77247 var implements_ = function () {
77348 all_ws();
77448 var target = consume(ID);
77595 if (!target) return;
7761 var w = all_ws();
7771 if (consume(ID, "implements")) {
7781 var ret = {
779 type: "implements"
780 , target: target.value
781 };
7821 all_ws();
7831 var imp = consume(ID) || error("Incomplete implements statement");
7841 ret["implements"] = imp.value;
7851 all_ws();
7861 consume(OTHER, ";") || error("No terminating ; for implements statement");
7871 return ret;
788 }
789 else {
790 // rollback
7910 tokens.unshift(w);
7920 tokens.unshift(target);
793 }
794 };
795
79647 var definition = function () {
797144 return callback() ||
798 interface_() ||
799 partial() ||
800 dictionary() ||
801 exception() ||
802 enum_() ||
803 typedef() ||
804 implements_()
805 ;
806 };
807
80847 var definitions = function () {
80947 if (!tokens.length) return [];
81047 var defs = [];
81147 while (true) {
812144 var ea = extended_attrs()
813 , def = definition();
814144 if (!def) {
81547 if (ea.length) error("Stray extended attributes");
81647 break;
817 }
81897 def.extAttrs = ea;
81997 defs.push(def);
820 }
82147 return defs;
822 };
82347 var res = definitions();
82447 if (tokens.length) error("Unrecognised tokens");
82547 return res;
826 };
827
8281 var obj = {
829 parse: function (str) {
83047 var tokens = tokenise(str);
831 // console.log(tokens);
83247 return parse(tokens);
833 }
834 };
8351 if (typeof module !== "undefined" && module.exports) {
8361 module.exports = obj;
837 }
838 else {
8390 window.WebIDL2 = obj;
840 }
841}());
diff --git a/test/fixtures/wpt/resources/webidl2/index.js b/test/fixtures/wpt/resources/webidl2/index.js deleted file mode 100644 index 09f9eb46aa78f4..00000000000000 --- a/test/fixtures/wpt/resources/webidl2/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/webidl2.js"); diff --git a/test/fixtures/wpt/resources/webidl2/lib/writer.js b/test/fixtures/wpt/resources/webidl2/lib/writer.js deleted file mode 100644 index b3097a6f8a74e4..00000000000000 --- a/test/fixtures/wpt/resources/webidl2/lib/writer.js +++ /dev/null @@ -1,221 +0,0 @@ -"use strict"; - -(() => { - function write(ast, opt = {}) { - const noop = str => str; - const optNames = "type".split(" "); - const context = []; - for (const o of optNames) { - if (!opt[o]) opt[o] = noop; - } - - function literal(it) { - return it.value; - }; - function type(it) { - if (typeof it === "string") return opt.type(it); // XXX should maintain some context - let ret = extended_attributes(it.extAttrs); - if (it.union) ret += `(${it.idlType.map(type).join(" or ")})`; - else { - if (it.generic) ret += `${it.generic}<`; - if (Array.isArray(it.idlType)) ret += it.idlType.map(type).join(", "); - else ret += type(it.idlType); - if (it.generic) ret += ">"; - } - if (it.nullable) ret += "?"; - - return ret; - }; - function const_value(it) { - const tp = it.type; - if (tp === "boolean") return it.value ? "true" : "false"; - else if (tp === "null") return "null"; - else if (tp === "Infinity") return (it.negative ? "-" : "") + "Infinity"; - else if (tp === "NaN") return "NaN"; - else if (tp === "number") return it.value; - else if (tp === "sequence") return "[]"; - else return `"${it.value}"`; - }; - function argument(arg) { - let ret = extended_attributes(arg.extAttrs); - if (arg.optional) ret += "optional "; - ret += type(arg.idlType); - if (arg.variadic) ret += "..."; - ret += ` ${arg.escapedName}`; - if (arg.default) ret += ` = ${const_value(arg.default)}`; - return ret; - }; - function make_ext_at(it) { - context.unshift(it); - let ret = it.name; - if (it.rhs) { - if (it.rhs.type === "identifier-list") ret += `=(${it.rhs.value.join(",")})`; - else ret += `=${it.rhs.value}`; - } - if (it.arguments) ret += `(${it.arguments.length ? it.arguments.map(argument).join(",") : ""})`; - context.shift(); // XXX need to add more contexts, but not more than needed for ReSpec - return ret; - }; - function extended_attributes(eats) { - if (!eats || !eats.length) return ""; - return `[${eats.map(make_ext_at).join(", ")}]`; - }; - - const modifiers = "getter setter deleter stringifier static".split(" "); - function operation(it) { - let ret = extended_attributes(it.extAttrs); - if (it.stringifier && !it.idlType) return "stringifier;"; - for (const mod of modifiers) { - if (it[mod]) ret += mod + " "; - } - ret += type(it.idlType) + " "; - if (it.name) ret += it.escapedName; - ret += `(${it.arguments.map(argument).join(",")});`; - return ret; - }; - - function attribute(it) { - let ret = extended_attributes(it.extAttrs); - if (it.static) ret += "static "; - if (it.stringifier) ret += "stringifier "; - if (it.inherit) ret += "inherit "; - if (it.readonly) ret += "readonly "; - ret += `attribute ${type(it.idlType)} ${it.escapedName};`; - return ret; - }; - - function interface_(it) { - let ret = extended_attributes(it.extAttrs); - if (it.partial) ret += "partial "; - ret += `interface ${it.name} `; - if (it.inheritance) ret += `: ${it.inheritance} `; - ret += `{${iterate(it.members)}};`; - return ret; - }; - - function interface_mixin(it) { - let ret = extended_attributes(it.extAttrs); - if (it.partial) ret += "partial "; - ret += `interface mixin ${it.name} `; - ret += `{${iterate(it.members)}};`; - return ret; - } - - function namespace(it) { - let ret = extended_attributes(it.extAttrs); - if (it.partial) ret += "partial "; - ret += `namespace ${it.name} `; - ret += `{${iterate(it.members)}};`; - return ret; - } - - function dictionary(it) { - let ret = extended_attributes(it.extAttrs); - if (it.partial) ret += "partial "; - ret += `dictionary ${it.name} `; - if (it.inheritance) ret += `: ${it.inheritance} `; - ret += `{${iterate(it.members)}};`; - return ret; - }; - function field(it) { - let ret = extended_attributes(it.extAttrs); - if (it.required) ret += "required "; - ret += `${type(it.idlType)} ${it.escapedName}`; - if (it.default) ret += ` = ${const_value(it.default)}`; - ret += ";"; - return ret; - }; - function const_(it) { - const ret = extended_attributes(it.extAttrs); - return `${ret}const ${type(it.idlType)}${it.nullable ? "?" : ""} ${it.name} = ${const_value(it.value)};`; - }; - function typedef(it) { - let ret = extended_attributes(it.extAttrs); - ret += `typedef ${extended_attributes(it.typeExtAttrs)}`; - return `${ret}${type(it.idlType)} ${it.name};`; - }; - function implements_(it) { - const ret = extended_attributes(it.extAttrs); - return `${ret}${it.target} implements ${it.implements};`; - }; - function includes(it) { - const ret = extended_attributes(it.extAttrs); - return `${ret}${it.target} includes ${it.includes};`; - }; - function callback(it) { - const ret = extended_attributes(it.extAttrs); - return `${ret}callback ${it.name} = ${type(it.idlType)}(${it.arguments.map(argument).join(",")});`; - }; - function enum_(it) { - let ret = extended_attributes(it.extAttrs); - ret += `enum ${it.name} {`; - for (const v of it.values) { - ret += `"${v.value}",`; - } - return ret + "};"; - }; - function iterable(it) { - return `iterable<${Array.isArray(it.idlType) ? it.idlType.map(type).join(", ") : type(it.idlType)}>;`; - }; - function legacyiterable(it) { - return `legacyiterable<${Array.isArray(it.idlType) ? it.idlType.map(type).join(", ") : type(it.idlType)}>;`; - }; - function maplike(it) { - return `${it.readonly ? "readonly " : ""}maplike<${it.idlType.map(type).join(", ")}>;`; - }; - function setlike(it) { - return `${it.readonly ? "readonly " : ""}setlike<${type(it.idlType[0])}>;`; - }; - function callbackInterface(it) { - return `callback ${interface_(it)}`; - }; - - const table = { - interface: interface_, - "interface mixin": interface_mixin, - namespace, - operation, - attribute, - dictionary, - field, - const: const_, - typedef, - implements: implements_, - includes, - callback, - enum: enum_, - iterable, - legacyiterable, - maplike, - setlike, - "callback interface": callbackInterface - }; - function dispatch(it) { - const dispatcher = table[it.type]; - if (!dispatcher) { - throw new Error(`Type "${it.type}" is unsupported`) - } - return table[it.type](it); - }; - function iterate(things) { - if (!things) return; - let ret = ""; - for (const thing of things) ret += dispatch(thing); - return ret; - }; - return iterate(ast); - }; - - - const obj = { - write - }; - - if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { - module.exports = obj; - } else if (typeof define === 'function' && define.amd) { - define([], () => obj); - } else { - (self || window).WebIDL2Writer = obj; - } -})(); diff --git a/test/fixtures/wpt/resources/webidl2/package-lock.json b/test/fixtures/wpt/resources/webidl2/package-lock.json deleted file mode 100644 index b0581037fe9434..00000000000000 --- a/test/fixtures/wpt/resources/webidl2/package-lock.json +++ /dev/null @@ -1,700 +0,0 @@ -{ - "name": "webidl2", - "version": "13.0.3", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@babel/code-frame": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.40.tgz", - "integrity": "sha512-eVXQSbu/RimU6OKcK2/gDJVTFcxXJI4sHbIqw2mhwMZeQ2as/8AhS9DGkEDoHMBBNJZ5B0US63lF56x+KDcxiA==", - "dev": true, - "requires": { - "@babel/highlight": "7.0.0-beta.40" - } - }, - "@babel/highlight": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.40.tgz", - "integrity": "sha512-mOhhTrzieV6VO7odgzFGFapiwRK0ei8RZRhfzHhb6cpX3QM8XXuCLXWjN8qBB7JReDdUR80V3LFfFrGUYevhNg==", - "dev": true, - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^3.0.0" - } - }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "chalk": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", - "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", - "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", - "dev": true, - "requires": { - "color-name": "^1.1.1" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "commander": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", - "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true - }, - "diff-match-patch": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.0.tgz", - "integrity": "sha1-HMPIOkkNZ/ldkeOfatHy4Ia2MEg=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "dev": true, - "requires": { - "fill-range": "^2.1.0" - } - }, - "expect": { - "version": "22.4.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-22.4.0.tgz", - "integrity": "sha512-Fiy862jT3qc70hwIHwwCBNISmaqBrfWKKrtqyMJ6iwZr+6KXtcnHojZFtd63TPRvRl8EQTJ+YXYy2lK6/6u+Hw==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "jest-diff": "^22.4.0", - "jest-get-type": "^22.1.0", - "jest-matcher-utils": "^22.4.0", - "jest-message-util": "^22.4.0", - "jest-regex-util": "^22.1.0" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "dev": true - }, - "fill-range": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", - "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", - "dev": true, - "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^3.0.0", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true, - "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" - } - }, - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, - "requires": { - "is-glob": "^2.0.0" - } - }, - "growl": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.3.tgz", - "integrity": "sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", - "dev": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dev": true, - "requires": { - "is-primitive": "^2.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", - "dev": true - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - }, - "jest-diff": { - "version": "22.4.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-22.4.0.tgz", - "integrity": "sha512-+/t20WmnkOkB8MOaGaPziI8zWKxquMvYw4Ub+wOzi7AUhmpFXz43buWSxVoZo4J5RnCozpGbX3/FssjJ5KV9Nw==", - "dev": true, - "requires": { - "chalk": "^2.0.1", - "diff": "^3.2.0", - "jest-get-type": "^22.1.0", - "pretty-format": "^22.4.0" - } - }, - "jest-get-type": { - "version": "22.1.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-22.1.0.tgz", - "integrity": "sha512-nD97IVOlNP6fjIN5i7j5XRH+hFsHL7VlauBbzRvueaaUe70uohrkz7pL/N8lx/IAwZRTJ//wOdVgh85OgM7g3w==", - "dev": true - }, - "jest-matcher-utils": { - "version": "22.4.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-22.4.0.tgz", - "integrity": "sha512-03m3issxUXpWMwDYTfmL8hRNewUB0yCRTeXPm+eq058rZxLHD9f5NtSSO98CWHqe4UyISIxd9Ao9iDVjHWd2qg==", - "dev": true, - "requires": { - "chalk": "^2.0.1", - "jest-get-type": "^22.1.0", - "pretty-format": "^22.4.0" - } - }, - "jest-message-util": { - "version": "22.4.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-22.4.0.tgz", - "integrity": "sha512-eyCJB0T3hrlpFF2FqQoIB093OulP+1qvATQmD3IOgJgMGqPL6eYw8TbC5P/VCWPqKhGL51xvjIIhow5eZ2wHFw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0-beta.35", - "chalk": "^2.0.1", - "micromatch": "^2.3.11", - "slash": "^1.0.0", - "stack-utils": "^1.0.1" - } - }, - "jest-regex-util": { - "version": "22.1.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-22.1.0.tgz", - "integrity": "sha512-on0LqVS6Xeh69sw3d1RukVnur+lVOl3zkmb0Q54FHj9wHoq6dbtWqb3TSlnVUyx36hqjJhjgs/QLqs07Bzu72Q==", - "dev": true - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true - }, - "jsondiffpatch": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/jsondiffpatch/-/jsondiffpatch-0.3.5.tgz", - "integrity": "sha512-v7eaGLDMCHXH+fsIaZhptEUJmS8EJpunq7IM4cc4vIT/kSRAkaZ6ZF4ebiNcyUelL0znbvj6o2B5Gh9v7Og0BQ==", - "dev": true, - "requires": { - "chalk": "^2.3.0", - "diff-match-patch": "^1.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "math-random": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", - "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=", - "dev": true - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "mocha": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.0.4.tgz", - "integrity": "sha512-nMOpAPFosU1B4Ix1jdhx5e3q7XO55ic5a8cgYvW27CequcEY+BabS0kUVL1Cw1V5PuVHZWeNRWFLmEPexo79VA==", - "dev": true, - "requires": { - "browser-stdout": "1.3.1", - "commander": "2.11.0", - "debug": "3.1.0", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.2", - "growl": "1.10.3", - "he": "1.1.1", - "mkdirp": "0.5.1", - "supports-color": "4.4.0" - }, - "dependencies": { - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - }, - "supports-color": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", - "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", - "dev": true, - "requires": { - "has-flag": "^2.0.0" - } - } - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "dev": true, - "requires": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "dev": true, - "requires": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", - "dev": true - }, - "pretty-format": { - "version": "22.4.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-22.4.0.tgz", - "integrity": "sha512-pvCxP2iODIIk9adXlo4S3GRj0BrJiil68kByAa1PrgG97c1tClh9dLMgp3Z6cHFZrclaABt0UH8PIhwHuFLqYA==", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0", - "ansi-styles": "^3.2.0" - } - }, - "randomatic": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.0.0.tgz", - "integrity": "sha512-VdxFOIEY3mNO5PtSRkkle/hPJDHvQhK21oa73K4yAc9qmp6N429gAyF1gZMOTMeS0/AYzaV/2Trcef+NaIonSA==", - "dev": true, - "requires": { - "is-number": "^4.0.0", - "kind-of": "^6.0.0", - "math-random": "^1.0.1" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, - "regex-cache": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", - "dev": true, - "requires": { - "is-equal-shallow": "^0.1.3" - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "repeat-element": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true - }, - "stack-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.1.tgz", - "integrity": "sha1-1PM6tU6OOHeLDKXP07OvsS22hiA=", - "dev": true - }, - "supports-color": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", - "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - } - } -} diff --git a/test/fixtures/wpt/resources/webidl2/package.json b/test/fixtures/wpt/resources/webidl2/package.json deleted file mode 100644 index 92faccafa813fb..00000000000000 --- a/test/fixtures/wpt/resources/webidl2/package.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "webidl2", - "description": "A WebIDL Parser", - "version": "13.0.3", - "contributors": [ - "Robin Berjon (https://berjon.com)", - "Marcos Caceres (https://marcosc.com)", - "Kagami Sascha Rosylight ", - "Timothy Gu " - ], - "license": "W3C", - "dependencies": {}, - "devDependencies": { - "expect": "22.4.0", - "jsondiffpatch": "0.3.5", - "mocha": "5.0.4" - }, - "scripts": { - "test": "mocha", - "acquire": "node test/util/acquire.js" - }, - "repository": "git://github.com/w3c/webidl2.js", - "main": "index.js", - "files": [ - "lib/*" - ] -} diff --git a/test/fixtures/wpt/streams/readable-byte-streams/enqueue-with-detached-buffer.window.js b/test/fixtures/wpt/streams/readable-byte-streams/enqueue-with-detached-buffer.any.js similarity index 88% rename from test/fixtures/wpt/streams/readable-byte-streams/enqueue-with-detached-buffer.window.js rename to test/fixtures/wpt/streams/readable-byte-streams/enqueue-with-detached-buffer.any.js index 15400f69340451..d2b37f00a9d697 100644 --- a/test/fixtures/wpt/streams/readable-byte-streams/enqueue-with-detached-buffer.window.js +++ b/test/fixtures/wpt/streams/readable-byte-streams/enqueue-with-detached-buffer.any.js @@ -1,3 +1,5 @@ +// META: global=window,worker + promise_test(async t => { const error = new Error('cannot proceed'); const rs = new ReadableStream({ @@ -5,7 +7,7 @@ promise_test(async t => { pull: t.step_func((controller) => { const buffer = controller.byobRequest.view.buffer; // Detach the buffer. - postMessage(buffer, '*', [buffer]); + structuredClone(buffer, { transfer: [buffer] }); // Try to enqueue with a new buffer. assert_throws_js(TypeError, () => controller.enqueue(new Uint8Array([42]))); diff --git a/test/fixtures/wpt/streams/readable-streams/garbage-collection.any.js b/test/fixtures/wpt/streams/readable-streams/garbage-collection.any.js index f7e2d06ae5cdf3..e578176777adaf 100644 --- a/test/fixtures/wpt/streams/readable-streams/garbage-collection.any.js +++ b/test/fixtures/wpt/streams/readable-streams/garbage-collection.any.js @@ -1,5 +1,6 @@ // META: global=window,worker // META: script=../resources/test-utils.js +// META: script=/common/gc.js 'use strict'; promise_test(async () => { diff --git a/test/fixtures/wpt/streams/resources/test-utils.js b/test/fixtures/wpt/streams/resources/test-utils.js index fb34e270ff3718..5ff8fc8cec939a 100644 --- a/test/fixtures/wpt/streams/resources/test-utils.js +++ b/test/fixtures/wpt/streams/resources/test-utils.js @@ -47,26 +47,6 @@ self.constructorThrowsForAll = (constructor, firstArgs) => { 'constructor should throw a TypeError')); }; -self.garbageCollect = async () => { - if (self.TestUtils?.gc) { - // https://testutils.spec.whatwg.org/#the-testutils-namespace - await TestUtils.gc(); - } else if (self.gc) { - // Use --expose_gc for V8 (and Node.js) - // to pass this flag at chrome launch use: --js-flags="--expose-gc" - // Exposed in SpiderMonkey shell as well - self.gc(); - } else if (self.GCController) { - // Present in some WebKit development environments - GCController.collect(); - } else { - /* eslint-disable no-console */ - console.warn('Tests are running without the ability to do manual garbage collection. They will still work, but ' + - 'coverage will be suboptimal.'); - /* eslint-enable no-console */ - } -}; - self.delay = ms => new Promise(resolve => step_timeout(resolve, ms)); // For tests which verify that the implementation doesn't do something it shouldn't, it's better not to use a diff --git a/test/fixtures/wpt/streams/transferable/gc-crash.html b/test/fixtures/wpt/streams/transferable/gc-crash.html new file mode 100644 index 00000000000000..0d331e6be08059 --- /dev/null +++ b/test/fixtures/wpt/streams/transferable/gc-crash.html @@ -0,0 +1,17 @@ + + + + diff --git a/test/fixtures/wpt/url/url-constructor.html b/test/fixtures/wpt/url/url-constructor.html deleted file mode 100644 index 7ddcdc88170c20..00000000000000 --- a/test/fixtures/wpt/url/url-constructor.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - -
- diff --git a/test/fixtures/wpt/url/url-origin.html b/test/fixtures/wpt/url/url-origin.html deleted file mode 100644 index fccb643ed6c806..00000000000000 --- a/test/fixtures/wpt/url/url-origin.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - -
- diff --git a/test/fixtures/wpt/versions.json b/test/fixtures/wpt/versions.json index f3a49312328e6d..8dd0c82e0c4cce 100644 --- a/test/fixtures/wpt/versions.json +++ b/test/fixtures/wpt/versions.json @@ -1,6 +1,6 @@ { "common": { - "commit": "03c5072affa496c5fd2a506e5c40d23e36b5e3aa", + "commit": "dbd648158d337580885e70a54f929daf215211a0", "path": "common" }, "console": { @@ -24,13 +24,9 @@ "path": "fetch/data-urls/resources" }, "FileAPI": { - "commit": "3b279420d40afea32506e823f9ac005448f4f3d8", + "commit": "1e432c4550a1595888d7c9eb26d90895e9e7e022", "path": "FileAPI" }, - "FileAPI/file": { - "commit": "c01f637cca43f0e08ce8e4269121dcd89ccbdd82", - "path": "FileAPI/file" - }, "hr-time": { "commit": "34cafd797e58dad280d20040eee012d49ccfa91f", "path": "hr-time" @@ -64,11 +60,11 @@ "path": "resource-timing" }, "resources": { - "commit": "fbf1e7d24776b6da144dbca45c22d39dc0512d2d", + "commit": "919874f84ff3703365063e749161a34af38c3d2a", "path": "resources" }, "streams": { - "commit": "9e5ef42bd34b5b19b76d0d4cb19012e52c222664", + "commit": "51750bc8d749bd80930506f603940a6bafda459f", "path": "streams" }, "url": { @@ -94,5 +90,9 @@ "webidl/ecmascript-binding/es-exceptions": { "commit": "a370aad338d6ed743abb4d2c6ae84a7f1058558c", "path": "webidl/ecmascript-binding/es-exceptions" + }, + "webmessaging/broadcastchannel": { + "commit": "e97fac4791931fb7455ba3fad759d362c7108b09", + "path": "webmessaging/broadcastchannel" } } diff --git a/test/fixtures/wpt/webmessaging/broadcastchannel/blobs.html b/test/fixtures/wpt/webmessaging/broadcastchannel/blobs.html index 1f0e2f1f1d6050..ab5096b63c19b0 100644 --- a/test/fixtures/wpt/webmessaging/broadcastchannel/blobs.html +++ b/test/fixtures/wpt/webmessaging/broadcastchannel/blobs.html @@ -2,6 +2,7 @@ + @@ -7,66 +8,349 @@ - - + + diff --git a/test/fixtures/wpt/webmessaging/broadcastchannel/opaque-origin.html b/test/fixtures/wpt/webmessaging/broadcastchannel/opaque-origin.html index c10e0cb22256a0..e09d935244b8b6 100644 --- a/test/fixtures/wpt/webmessaging/broadcastchannel/opaque-origin.html +++ b/test/fixtures/wpt/webmessaging/broadcastchannel/opaque-origin.html @@ -2,6 +2,7 @@ + @@ -26,9 +27,166 @@ assert_equals(e.data.messageOrigin, "null"); resolve(); }), {once: true}); + t.add_cleanup(() => { document.body.removeChild(ifr) }); document.body.appendChild(ifr); }); }, "Opaque origin should be serialized to \"null\""); + + +const iframe_src = (channel_name, iframe_name) => `data:text/html,`; + +promise_test(t => { + return new Promise((resolve, reject) => { + const channel_name = "opaque-origin-test-2"; + const bc1 = new BroadcastChannel(channel_name); + bc1.onmessage = t.unreached_func("Received message from an opaque origin"); + + // We'll create an iframe and have it send a BroadcastChannel message + // between two instances. Once the message is received, it will postMessage + // back and we'll repeat this with another iframe. If the first + // BroadcastChannel message is received by `bc1`, or if the second + // BroadcastChannel message is received by `bc1` or `bc2` in the first + // iframe, then the test should fail. + + window.addEventListener("message", e => { + if(e.data == "iframe1-done") { + let iframe2 = document.createElement("iframe"); + iframe2.src = iframe_src(channel_name, "iframe2"); + t.add_cleanup(() => { document.body.removeChild(iframe2) }); + document.body.appendChild(iframe2); + } else if(e.data == "iframe2-done") { + resolve(); + } else if(e.data == "fail") { + reject("One opaque origin received a message from the other"); + } else { + reject("An unexpected error occurred"); + } + }); + + let iframe1 = document.createElement("iframe"); + iframe1.src = iframe_src(channel_name, "iframe1"); + t.add_cleanup(() => { document.body.removeChild(iframe1) }); + document.body.appendChild(iframe1); + }); +}, "BroadcastChannel messages from opaque origins should be self-contained"); + +const data_url_worker_src = (channel_name, worker_name) => { + const source = ` +const handler = (reply) => { + let bc2 = new BroadcastChannel("${channel_name}"); + bc2.onmessage = (e) => { + if (e.data == "from-${worker_name}") { + reply("${worker_name}-done"); + } else { + reply("fail"); + } + }; + let bc3 = new BroadcastChannel("${channel_name}"); + bc3.postMessage("from-${worker_name}"); +}; +// For dedicated workers: +self.addEventListener("message", () => handler(self.postMessage)); +// For shared workers: +self.addEventListener("connect", (e) => { + var port = e.ports[0]; + port.onmessage = () => handler(msg => port.postMessage(msg)); + port.start(); + +}); +`; + return "data:,".concat(encodeURIComponent(source)); +} + +promise_test(t => { + return new Promise((resolve, reject) => { + const channel_name = "opaque-origin-test-3"; + const bc1 = new BroadcastChannel(channel_name); + bc1.onmessage = e => { reject("Received message from an opaque origin"); }; + + // Same as the previous test but with data URL dedicated workers (which + // should have opaque origins per the HTML spec). + const worker_name_prefix = "data-url-dedicated-worker"; + const worker_1_name = `${worker_name_prefix}-1`; + const worker_2_name = `${worker_name_prefix}-2`; + + const handler = e => { + if(e.data == `${worker_1_name}-done`) { + const worker2 = new Worker(data_url_worker_src(channel_name, worker_2_name)); + t.add_cleanup(() => worker2.terminate()); + worker2.addEventListener("message", handler); + worker2.postMessage("go!"); + } else if(e.data == `${worker_2_name}-done`) { + resolve(); + } else if(e.data == "fail") { + reject("One opaque origin received a message from the other"); + } else { + reject("An unexpected error occurred"); + } + }; + + let worker1 = new Worker(data_url_worker_src(channel_name, worker_1_name)); + t.add_cleanup(() => worker1.terminate()); + worker1.addEventListener("message", handler); + worker1.postMessage("go!"); + }); +}, "BroadcastChannel messages from data URL dedicated workers should be self-contained"); + +promise_test(() => { + return new Promise((resolve, reject) => { + const channel_name = "opaque-origin-test-4"; + const bc1 = new BroadcastChannel(channel_name); + + // Same as the previous test but with data URL shared workers (which + // should have opaque origins per the HTML spec). + const worker_name_prefix = "data-url-shared-worker"; + const worker_1_name = `${worker_name_prefix}-1`; + const worker_2_name = `${worker_name_prefix}-2`; + + const handler = e => { + if (e.data == `${worker_1_name}-done`) { + const worker_script = data_url_worker_src(channel_name, worker_2_name); + const worker2 = new SharedWorker(worker_script, worker_2_name); + worker2.port.addEventListener("message", handler); + worker2.port.start(); + worker2.port.postMessage("go!"); + } else if(e.data == `${worker_2_name}-done`) { + resolve(); + } else if(e.data == "fail") { + reject("One opaque origin received a message from the other"); + } else { + reject("An unexpected error occurred"); + } + }; + + bc1.onmessage = e => { + if (e.data == "go!") { + const worker_script = data_url_worker_src(channel_name, worker_1_name); + const worker1 = new SharedWorker(worker_script, worker_1_name); + worker1.port.addEventListener("message", handler); + worker1.port.start(); + worker1.port.postMessage("go!"); + } else { + reject("Received message from an opaque origin"); + } + }; + + // Ensure that the BroadcastChannel instance above can receive messages + // before we create the first shared worker. + const bc2 = new BroadcastChannel(channel_name); + bc2.postMessage("go!"); + }); +}, "BroadcastChannel messages from data URL shared workers should be self-contained"); //--> diff --git a/test/fixtures/wpt/webmessaging/broadcastchannel/resources/worker.js b/test/fixtures/wpt/webmessaging/broadcastchannel/resources/worker.js index df23072bc99f95..ee2d51a2542567 100644 --- a/test/fixtures/wpt/webmessaging/broadcastchannel/resources/worker.js +++ b/test/fixtures/wpt/webmessaging/broadcastchannel/resources/worker.js @@ -1,6 +1,8 @@ +importScripts("/common/gc.js"); + var c; -function handler(e, reply) { +async function handler(e, reply) { if (e.data.ping) { c.postMessage(e.data.ping); return; @@ -9,9 +11,7 @@ function handler(e, reply) { (() => { c.postMessage({blob: new Blob(e.data.blob)}); })(); - // TODO(https://github.com/web-platform-tests/wpt/issues/7899): Change to - // some sort of cross-browser GC trigger. - if (self.gc) self.gc(); + await garbageCollect(); } c = new BroadcastChannel(e.data.channel); let messages = []; diff --git a/test/wpt/status/FileAPI/blob.json b/test/wpt/status/FileAPI/blob.json index 902ac232dd4872..017d931d7abdc4 100644 --- a/test/wpt/status/FileAPI/blob.json +++ b/test/wpt/status/FileAPI/blob.json @@ -17,6 +17,7 @@ "ArrayBuffer elements of the blobParts array should be supported.", "Passing typed arrays as elements of the blobParts array should work.", "Passing a Float64Array as element of the blobParts array should work.", + "Passing BigInt typed arrays as elements of the blobParts array should work.", "Array with two blobs", "Array with two buffers", "Array with two bufferviews", @@ -43,5 +44,12 @@ }, "Blob-slice.any.js": { "skip": "Depends on File API" + }, + "Blob-stream.any.js": { + "fail": { + "expected": [ + "Reading Blob.stream() with BYOB reader" + ] + } } } diff --git a/test/wpt/status/streams.json b/test/wpt/status/streams.json index 9899c581d9f96e..187b1758741785 100644 --- a/test/wpt/status/streams.json +++ b/test/wpt/status/streams.json @@ -1,4 +1,11 @@ { + "idlharness.any.js": { + "fail": { + "expected": [ + "ReadableStream interface: async iterable" + ] + } + }, "queuing-strategies-size-function-per-global.window.js": { "skip": "Browser-specific test" }, diff --git a/test/wpt/status/url.json b/test/wpt/status/url.json index a0957dccb53c73..c333559537f6a9 100644 --- a/test/wpt/status/url.json +++ b/test/wpt/status/url.json @@ -9,7 +9,9 @@ "historical.any.js": { "requires": ["small-icu"], "fail": { + "note": "We are faking location with a URL object for the sake of the testharness and it has searchParams.", "expected": [ + "searchParams on location object", "URL: no structured serialize/deserialize support", "URLSearchParams: no structured serialize/deserialize support" ] diff --git a/test/wpt/test-streams.js b/test/wpt/test-streams.js index faf906efb2ef74..71c25fbd56b20c 100644 --- a/test/wpt/test-streams.js +++ b/test/wpt/test-streams.js @@ -6,30 +6,5 @@ const runner = new WPTRunner('streams'); // Set a script that will be executed in the worker before running the tests. runner.pretendGlobalThisAs('Window'); -runner.setInitScript(` - // Simulate global postMessage for enqueue-with-detached-buffer.window.js - function postMessage(value, origin, transferList) { - const mc = new MessageChannel(); - mc.port1.postMessage(value, transferList); - mc.port2.close(); - } - - // TODO(@jasnell): This is a bit of a hack to get the idl harness test - // working. Later we should investigate a better approach. - // See: https://github.com/nodejs/node/pull/39062#discussion_r659383373 - Object.defineProperties(global, { - DedicatedWorkerGlobalScope: { - get() { - // Pretend that we're a DedicatedWorker, but *only* for the - // IDL harness. For everything else, keep the JavaScript shell - // environment. - if (new Error().stack.includes('idlharness.js')) - return global.constructor; - else - return function() {}; - } - } - }); -`); runner.runJsTests(); diff --git a/test/wpt/test-url.js b/test/wpt/test-url.js index f8ba3c3839d642..fc84c22a275c38 100644 --- a/test/wpt/test-url.js +++ b/test/wpt/test-url.js @@ -13,7 +13,4 @@ runner.setScriptModifier((obj) => { } }); runner.pretendGlobalThisAs('Window'); -runner.setInitScript(` - globalThis.location ||= {}; -`); runner.runJsTests(); From 0c4f8f255aa4a39b0aa66a9f1004c8ee6d29dfa4 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Tue, 7 Mar 2023 11:32:47 +0100 Subject: [PATCH 029/186] esm: fix import assertion warning Refs: https://github.com/nodejs/node/pull/46901#discussion_r1122242913 PR-URL: https://github.com/nodejs/node/pull/46971 Reviewed-By: Debadree Chatterjee Reviewed-By: Moshe Atlow Reviewed-By: Jacob Smith Reviewed-By: Geoffrey Booth Reviewed-By: Luigi Pinca --- lib/internal/modules/esm/assert.js | 4 ++-- test/es-module/test-esm-import-assertion-errors.js | 4 ++-- test/es-module/test-esm-import-assertion-errors.mjs | 4 ++-- test/es-module/test-esm-import-assertion-validation.js | 4 ++-- test/es-module/test-esm-import-assertion-warning.mjs | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/lib/internal/modules/esm/assert.js b/lib/internal/modules/esm/assert.js index 3437aa1a61b86f..45df6781d49497 100644 --- a/lib/internal/modules/esm/assert.js +++ b/lib/internal/modules/esm/assert.js @@ -61,8 +61,8 @@ function validateAssertions(url, format, if (!alreadyWarned && ObjectKeys(importAssertions).length !== 0) { alreadyWarned = true; process.emitWarning( - 'Import assertions are not a stable feature of the JavaScript language, ' + - 'avoid relying on their current behavior and syntax as those might change ' + + 'Import assertions are not a stable feature of the JavaScript language. ' + + 'Avoid relying on their current behavior and syntax as those might change ' + 'in a future version of Node.js.', 'ExperimentalWarning', ); diff --git a/test/es-module/test-esm-import-assertion-errors.js b/test/es-module/test-esm-import-assertion-errors.js index 8d12a2d12b3955..e2abd3fb43976d 100644 --- a/test/es-module/test-esm-import-assertion-errors.js +++ b/test/es-module/test-esm-import-assertion-errors.js @@ -7,8 +7,8 @@ const jsonModuleDataUrl = 'data:application/json,""'; common.expectWarning( 'ExperimentalWarning', - 'Import assertions are not a stable feature of the JavaScript language, ' + - 'avoid relying on their current behavior and syntax as those might change ' + + 'Import assertions are not a stable feature of the JavaScript language. ' + + 'Avoid relying on their current behavior and syntax as those might change ' + 'in a future version of Node.js.' ); diff --git a/test/es-module/test-esm-import-assertion-errors.mjs b/test/es-module/test-esm-import-assertion-errors.mjs index a6be862c49f074..9cc08c06528fc6 100644 --- a/test/es-module/test-esm-import-assertion-errors.mjs +++ b/test/es-module/test-esm-import-assertion-errors.mjs @@ -6,8 +6,8 @@ const jsonModuleDataUrl = 'data:application/json,""'; expectWarning( 'ExperimentalWarning', - 'Import assertions are not a stable feature of the JavaScript language, ' + - 'avoid relying on their current behavior and syntax as those might change ' + + 'Import assertions are not a stable feature of the JavaScript language. ' + + 'Avoid relying on their current behavior and syntax as those might change ' + 'in a future version of Node.js.' ); diff --git a/test/es-module/test-esm-import-assertion-validation.js b/test/es-module/test-esm-import-assertion-validation.js index 462f1c527e4b1b..ec2d2a2c08f7b5 100644 --- a/test/es-module/test-esm-import-assertion-validation.js +++ b/test/es-module/test-esm-import-assertion-validation.js @@ -8,8 +8,8 @@ const { validateAssertions } = require('internal/modules/esm/assert'); common.expectWarning( 'ExperimentalWarning', - 'Import assertions are not a stable feature of the JavaScript language, ' + - 'avoid relying on their current behavior and syntax as those might change ' + + 'Import assertions are not a stable feature of the JavaScript language. ' + + 'Avoid relying on their current behavior and syntax as those might change ' + 'in a future version of Node.js.' ); diff --git a/test/es-module/test-esm-import-assertion-warning.mjs b/test/es-module/test-esm-import-assertion-warning.mjs index 739d246f620e6f..0b18d8ff9eaf62 100644 --- a/test/es-module/test-esm-import-assertion-warning.mjs +++ b/test/es-module/test-esm-import-assertion-warning.mjs @@ -2,8 +2,8 @@ import { expectWarning } from '../common/index.mjs'; expectWarning( 'ExperimentalWarning', - 'Import assertions are not a stable feature of the JavaScript language, ' + - 'avoid relying on their current behavior and syntax as those might change ' + + 'Import assertions are not a stable feature of the JavaScript language. ' + + 'Avoid relying on their current behavior and syntax as those might change ' + 'in a future version of Node.js.' ); From b164038c863dd226a4c943148d94c3b14df8c550 Mon Sep 17 00:00:00 2001 From: RafaelGSS Date: Mon, 6 Mar 2023 13:45:07 -0300 Subject: [PATCH 030/186] permission: fix spawnSync permission check Fixes: https://github.com/nodejs-private/node-private/issues/394 Signed-off-by: RafaelGSS PR-URL: https://github.com/nodejs/node/pull/46975 Reviewed-By: Colin Ihrig Reviewed-By: Anna Henningsen Reviewed-By: Richard Lau --- benchmark/fs/readfile-permission-enabled.js | 7 ++++++- src/spawn_sync.cc | 2 ++ .../test-permission-deny-child-process-cli.js | 18 ++++++++++++++++++ .../test-permission-deny-child-process.js | 18 ++++++++++++++++++ ...-permission-deny-fs-symlink-target-write.js | 2 +- .../test-permission-deny-fs-symlink.js | 2 +- .../test-permission-fs-relative-path.js | 2 +- .../test-permission-fs-windows-path.js | 2 +- 8 files changed, 48 insertions(+), 5 deletions(-) diff --git a/benchmark/fs/readfile-permission-enabled.js b/benchmark/fs/readfile-permission-enabled.js index 3053d5aa08f055..08ac831cd73d1b 100644 --- a/benchmark/fs/readfile-permission-enabled.js +++ b/benchmark/fs/readfile-permission-enabled.js @@ -19,7 +19,12 @@ const bench = common.createBenchmark(main, { len: [1024, 16 * 1024 * 1024], concurrent: [1, 10], }, { - flags: ['--experimental-permission', '--allow-fs-read=*', '--allow-fs-write=*'], + flags: [ + '--experimental-permission', + '--allow-fs-read=*', + '--allow-fs-write=*', + '--allow-child-process', + ], }); function main({ len, duration, concurrent, encoding }) { diff --git a/src/spawn_sync.cc b/src/spawn_sync.cc index ae4a85a42d6166..b3c0fabafdaad2 100644 --- a/src/spawn_sync.cc +++ b/src/spawn_sync.cc @@ -369,6 +369,8 @@ void SyncProcessRunner::Initialize(Local target, void SyncProcessRunner::Spawn(const FunctionCallbackInfo& args) { Environment* env = Environment::GetCurrent(args); + THROW_IF_INSUFFICIENT_PERMISSIONS( + env, permission::PermissionScope::kChildProcess, ""); env->PrintSyncTrace(); SyncProcessRunner p(env); Local result; diff --git a/test/parallel/test-permission-deny-child-process-cli.js b/test/parallel/test-permission-deny-child-process-cli.js index 7f15cacd0d2a3a..3ce473ab498e0e 100644 --- a/test/parallel/test-permission-deny-child-process-cli.js +++ b/test/parallel/test-permission-deny-child-process-cli.js @@ -24,12 +24,24 @@ if (process.argv[2] === 'child') { code: 'ERR_ACCESS_DENIED', permission: 'ChildProcess', })); + assert.throws(() => { + childProcess.spawnSync(process.execPath, ['--version']); + }, common.expectsError({ + code: 'ERR_ACCESS_DENIED', + permission: 'ChildProcess', + })); assert.throws(() => { childProcess.exec(process.execPath, ['--version']); }, common.expectsError({ code: 'ERR_ACCESS_DENIED', permission: 'ChildProcess', })); + assert.throws(() => { + childProcess.execSync(process.execPath, ['--version']); + }, common.expectsError({ + code: 'ERR_ACCESS_DENIED', + permission: 'ChildProcess', + })); assert.throws(() => { childProcess.fork(__filename, ['child']); }, common.expectsError({ @@ -42,4 +54,10 @@ if (process.argv[2] === 'child') { code: 'ERR_ACCESS_DENIED', permission: 'ChildProcess', })); + assert.throws(() => { + childProcess.execFileSync(process.execPath, ['--version']); + }, common.expectsError({ + code: 'ERR_ACCESS_DENIED', + permission: 'ChildProcess', + })); } diff --git a/test/parallel/test-permission-deny-child-process.js b/test/parallel/test-permission-deny-child-process.js index 36c0e9da86fc1f..7dbd9beb089e2b 100644 --- a/test/parallel/test-permission-deny-child-process.js +++ b/test/parallel/test-permission-deny-child-process.js @@ -31,12 +31,24 @@ if (process.argv[2] === 'child') { code: 'ERR_ACCESS_DENIED', permission: 'ChildProcess', })); + assert.throws(() => { + childProcess.spawnSync(process.execPath, ['--version']); + }, common.expectsError({ + code: 'ERR_ACCESS_DENIED', + permission: 'ChildProcess', + })); assert.throws(() => { childProcess.exec(process.execPath, ['--version']); }, common.expectsError({ code: 'ERR_ACCESS_DENIED', permission: 'ChildProcess', })); + assert.throws(() => { + childProcess.execSync(process.execPath, ['--version']); + }, common.expectsError({ + code: 'ERR_ACCESS_DENIED', + permission: 'ChildProcess', + })); assert.throws(() => { childProcess.fork(__filename, ['child']); }, common.expectsError({ @@ -49,4 +61,10 @@ if (process.argv[2] === 'child') { code: 'ERR_ACCESS_DENIED', permission: 'ChildProcess', })); + assert.throws(() => { + childProcess.execFileSync(process.execPath, ['--version']); + }, common.expectsError({ + code: 'ERR_ACCESS_DENIED', + permission: 'ChildProcess', + })); } diff --git a/test/parallel/test-permission-deny-fs-symlink-target-write.js b/test/parallel/test-permission-deny-fs-symlink-target-write.js index 931dccddba157a..8735cdc1c33209 100644 --- a/test/parallel/test-permission-deny-fs-symlink-target-write.js +++ b/test/parallel/test-permission-deny-fs-symlink-target-write.js @@ -1,4 +1,4 @@ -// Flags: --experimental-permission --allow-fs-read=* --allow-fs-write=* +// Flags: --experimental-permission --allow-fs-read=* --allow-fs-write=* --allow-child-process 'use strict'; const common = require('../common'); diff --git a/test/parallel/test-permission-deny-fs-symlink.js b/test/parallel/test-permission-deny-fs-symlink.js index c093800519406e..3e2f15507c692f 100644 --- a/test/parallel/test-permission-deny-fs-symlink.js +++ b/test/parallel/test-permission-deny-fs-symlink.js @@ -1,4 +1,4 @@ -// Flags: --experimental-permission --allow-fs-read=* --allow-fs-write=* +// Flags: --experimental-permission --allow-fs-read=* --allow-fs-write=* --allow-child-process 'use strict'; const common = require('../common'); diff --git a/test/parallel/test-permission-fs-relative-path.js b/test/parallel/test-permission-fs-relative-path.js index 73f0635d986585..b5938796ef0be0 100644 --- a/test/parallel/test-permission-fs-relative-path.js +++ b/test/parallel/test-permission-fs-relative-path.js @@ -1,4 +1,4 @@ -// Flags: --experimental-permission --allow-fs-read=* +// Flags: --experimental-permission --allow-fs-read=* --allow-child-process 'use strict'; const common = require('../common'); diff --git a/test/parallel/test-permission-fs-windows-path.js b/test/parallel/test-permission-fs-windows-path.js index 90d377f0c7e609..4b78c0e7515e1a 100644 --- a/test/parallel/test-permission-fs-windows-path.js +++ b/test/parallel/test-permission-fs-windows-path.js @@ -1,4 +1,4 @@ -// Flags: --experimental-permission --allow-fs-read=* --allow-fs-write=* +// Flags: --experimental-permission --allow-fs-read=* --allow-fs-write=* --allow-child-process 'use strict'; const common = require('../common'); From b191f09e6ee7d40798454e8545d83e53cab0e63c Mon Sep 17 00:00:00 2001 From: cjihrig Date: Sun, 5 Mar 2023 12:38:32 -0500 Subject: [PATCH 031/186] test_runner: give the root test a harness reference This commit replaces the 'coverage' reference inside of the Test class with a more generic harness reference which includes coverage. This will let the root test more easily track process level state such as code coverage, uncaughtException handlers, and the state of bootstrapping. PR-URL: https://github.com/nodejs/node/pull/46962 Reviewed-By: Moshe Atlow Reviewed-By: Yagiz Nizipli --- lib/internal/test_runner/harness.js | 7 ++++++- lib/internal/test_runner/test.js | 6 +++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/lib/internal/test_runner/harness.js b/lib/internal/test_runner/harness.js index a5cec210df2f73..42cc5613f2a2c8 100644 --- a/lib/internal/test_runner/harness.js +++ b/lib/internal/test_runner/harness.js @@ -139,7 +139,7 @@ function setup(root) { createProcessEventHandler('unhandledRejection', root); const coverage = configureCoverage(root, globalOptions); const exitHandler = () => { - root.coverage = collectCoverage(root, coverage); + root.harness.coverage = collectCoverage(root, coverage); root.postRun(new ERR_TEST_FAILURE( 'Promise resolution is still pending but the event loop has already resolved', kCancelledByParent)); @@ -163,6 +163,11 @@ function setup(root) { process.on('SIGTERM', terminationHandler); } + root.harness = { + __proto__: null, + bootstrapComplete: false, + coverage: null, + }; root.startTime = hrtime(); wasRootSetup.add(root); diff --git a/lib/internal/test_runner/test.js b/lib/internal/test_runner/test.js index b165808686e0ad..ffbf2d257aed62 100644 --- a/lib/internal/test_runner/test.js +++ b/lib/internal/test_runner/test.js @@ -252,7 +252,7 @@ class Test extends AsyncResource { this.#outerSignal?.addEventListener('abort', this.#abortHandler); this.fn = fn; - this.coverage = null; // Configured on the root test by the test harness. + this.harness = null; // Configured on the root test by the test harness. this.mock = null; this.name = name; this.parent = parent; @@ -651,8 +651,8 @@ class Test extends AsyncResource { this.reporter.diagnostic(this.nesting, kFilename, `todo ${counters.todo}`); this.reporter.diagnostic(this.nesting, kFilename, `duration_ms ${this.#duration()}`); - if (this.coverage) { - this.reporter.coverage(this.nesting, kFilename, this.coverage); + if (this.harness?.coverage) { + this.reporter.coverage(this.nesting, kFilename, this.harness.coverage); } this.reporter.push(null); From 4e3bc06e6547c1d640111b73e80e198ba03f7e45 Mon Sep 17 00:00:00 2001 From: cjihrig Date: Sun, 5 Mar 2023 12:46:14 -0500 Subject: [PATCH 032/186] test_runner: track bootstrapping process This commit updates the test harness and root test to track when bootstrapping has completed. PR-URL: https://github.com/nodejs/node/pull/46962 Reviewed-By: Moshe Atlow Reviewed-By: Yagiz Nizipli --- lib/internal/test_runner/harness.js | 3 ++- lib/internal/test_runner/runner.js | 15 +++++++++------ lib/internal/test_runner/utils.js | 4 ++-- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/lib/internal/test_runner/harness.js b/lib/internal/test_runner/harness.js index 42cc5613f2a2c8..e30d6242da91f2 100644 --- a/lib/internal/test_runner/harness.js +++ b/lib/internal/test_runner/harness.js @@ -182,13 +182,14 @@ function getGlobalRoot() { globalRoot.reporter.once('test:fail', () => { process.exitCode = kGenericUserError; }); - reportersSetup = setupTestReporters(globalRoot.reporter); + reportersSetup = setupTestReporters(globalRoot); } return globalRoot; } async function startSubtest(subtest) { await reportersSetup; + getGlobalRoot().harness.bootstrapComplete = true; await subtest.start(); } diff --git a/lib/internal/test_runner/runner.js b/lib/internal/test_runner/runner.js index 5108fc3283f63b..5b772251be981e 100644 --- a/lib/internal/test_runner/runner.js +++ b/lib/internal/test_runner/runner.js @@ -387,13 +387,16 @@ function run(options) { filesWatcher = watchFiles(testFiles, root, inspectPort); postRun = undefined; } - const runFiles = () => SafePromiseAllSettledReturnVoid(testFiles, (path) => { - const subtest = runTestFile(path, root, inspectPort, filesWatcher); - runningSubtests.set(path, subtest); - return subtest; - }); + const runFiles = () => { + root.harness.bootstrapComplete = true; + return SafePromiseAllSettledReturnVoid(testFiles, (path) => { + const subtest = runTestFile(path, root, inspectPort, filesWatcher); + runningSubtests.set(path, subtest); + return subtest; + }); + }; - PromisePrototypeThen(PromisePrototypeThen(PromiseResolve(setup?.(root.reporter)), runFiles), postRun); + PromisePrototypeThen(PromisePrototypeThen(PromiseResolve(setup?.(root)), runFiles), postRun); return root.reporter; } diff --git a/lib/internal/test_runner/utils.js b/lib/internal/test_runner/utils.js index 72270e464248a5..e4fd23c8e8cb60 100644 --- a/lib/internal/test_runner/utils.js +++ b/lib/internal/test_runner/utils.js @@ -150,13 +150,13 @@ async function getReportersMap(reporters, destinations) { } -async function setupTestReporters(testsStream) { +async function setupTestReporters(rootTest) { try { const { reporters, destinations } = parseCommandLine(); const reportersMap = await getReportersMap(reporters, destinations); for (let i = 0; i < reportersMap.length; i++) { const { reporter, destination } = reportersMap[i]; - compose(testsStream, reporter).pipe(destination); + compose(rootTest.reporter, reporter).pipe(destination); } } catch (err) { throw new ERR_TEST_FAILURE(err, kAsyncBootstrapFailure); From e079aa80f05be11f4674f3caeb5d63c298126a6e Mon Sep 17 00:00:00 2001 From: cjihrig Date: Sun, 5 Mar 2023 12:49:25 -0500 Subject: [PATCH 033/186] test_runner: throw if harness is not bootstrapped This commit updates the test harness to re-throw uncaught errors if bootstrapping has not completed. This updates the existing logic which tried to detect a specific error code. PR-URL: https://github.com/nodejs/node/pull/46962 Reviewed-By: Moshe Atlow Reviewed-By: Yagiz Nizipli --- lib/internal/test_runner/harness.js | 5 ++--- lib/internal/test_runner/utils.js | 17 +++++------------ 2 files changed, 7 insertions(+), 15 deletions(-) diff --git a/lib/internal/test_runner/harness.js b/lib/internal/test_runner/harness.js index e30d6242da91f2..4bf61379e7afae 100644 --- a/lib/internal/test_runner/harness.js +++ b/lib/internal/test_runner/harness.js @@ -19,7 +19,6 @@ const { exitCodes: { kGenericUserError } } = internalBinding('errors'); const { kEmptyObject } = require('internal/util'); const { kCancelledByParent, Test, Suite } = require('internal/test_runner/test'); const { - kAsyncBootstrapFailure, parseCommandLine, setupTestReporters, } = require('internal/test_runner/utils'); @@ -34,11 +33,11 @@ function createTestTree(options = kEmptyObject) { function createProcessEventHandler(eventName, rootTest) { return (err) => { - if (err?.failureType === kAsyncBootstrapFailure) { + if (!rootTest.harness.bootstrapComplete) { // Something went wrong during the asynchronous portion of bootstrapping // the test runner. Since the test runner is not setup properly, we can't // do anything but throw the error. - throw err.cause; + throw err; } // Check if this error is coming from a test. If it is, fail the test. diff --git a/lib/internal/test_runner/utils.js b/lib/internal/test_runner/utils.js index e4fd23c8e8cb60..6d5e474a59c411 100644 --- a/lib/internal/test_runner/utils.js +++ b/lib/internal/test_runner/utils.js @@ -7,7 +7,6 @@ const { RegExp, RegExpPrototypeExec, SafeMap, - Symbol, } = primordials; const { basename } = require('path'); const { createWriteStream } = require('fs'); @@ -24,7 +23,6 @@ const { } = require('internal/errors'); const { compose } = require('stream'); -const kAsyncBootstrapFailure = Symbol('asyncBootstrapFailure'); const kMultipleCallbackInvocations = 'multipleCallbackInvocations'; const kRegExpPattern = /^\/(.*)\/([a-z]*)$/; const kSupportedFileExtensions = /\.[cm]?js$/; @@ -151,15 +149,11 @@ async function getReportersMap(reporters, destinations) { async function setupTestReporters(rootTest) { - try { - const { reporters, destinations } = parseCommandLine(); - const reportersMap = await getReportersMap(reporters, destinations); - for (let i = 0; i < reportersMap.length; i++) { - const { reporter, destination } = reportersMap[i]; - compose(rootTest.reporter, reporter).pipe(destination); - } - } catch (err) { - throw new ERR_TEST_FAILURE(err, kAsyncBootstrapFailure); + const { reporters, destinations } = parseCommandLine(); + const reportersMap = await getReportersMap(reporters, destinations); + for (let i = 0; i < reportersMap.length; i++) { + const { reporter, destination } = reportersMap[i]; + compose(rootTest.reporter, reporter).pipe(destination); } } @@ -225,7 +219,6 @@ module.exports = { doesPathMatchFilter, isSupportedFileType, isTestFailureError, - kAsyncBootstrapFailure, parseCommandLine, setupTestReporters, }; From 3d63d5333ddf6b08e123e1ebdace1a5600f24c80 Mon Sep 17 00:00:00 2001 From: cjihrig Date: Thu, 16 Feb 2023 17:58:37 -0500 Subject: [PATCH 034/186] test_runner: handle errors not bound to tests This commit addresses a previously untested branch of the code. It is possible when using the test runner that an error occurs outside of a test. In this case, the test runner would simply rethrow the error. This commit updates the logic to handle the error in the same fashion as other uncaughtExceptions. PR-URL: https://github.com/nodejs/node/pull/46962 Reviewed-By: Moshe Atlow Reviewed-By: Yagiz Nizipli --- lib/internal/test_runner/harness.js | 26 +++++++++++-------- test/message/test_runner_output.js | 6 +++++ test/message/test_runner_output.out | 1 + test/message/test_runner_output_cli.out | 1 + .../test_runner_output_spec_reporter.out | 1 + 5 files changed, 24 insertions(+), 11 deletions(-) diff --git a/lib/internal/test_runner/harness.js b/lib/internal/test_runner/harness.js index 4bf61379e7afae..168310ff3d93cd 100644 --- a/lib/internal/test_runner/harness.js +++ b/lib/internal/test_runner/harness.js @@ -43,17 +43,21 @@ function createProcessEventHandler(eventName, rootTest) { // Check if this error is coming from a test. If it is, fail the test. const test = testResources.get(executionAsyncId()); - if (!test) { - throw err; - } - - if (test.finished) { - // If the test is already finished, report this as a top level - // diagnostic since this is a malformed test. - const msg = `Warning: Test "${test.name}" generated asynchronous ` + - 'activity after the test ended. This activity created the error ' + - `"${err}" and would have caused the test to fail, but instead ` + - `triggered an ${eventName} event.`; + if (!test || test.finished) { + // If the test is already finished or the resource that created the error + // is not mapped to a Test, report this as a top level diagnostic. + let msg; + + if (test) { + msg = `Warning: Test "${test.name}" generated asynchronous ` + + 'activity after the test ended. This activity created the error ' + + `"${err}" and would have caused the test to fail, but instead ` + + `triggered an ${eventName} event.`; + } else { + msg = 'Warning: A resource generated asynchronous activity after ' + + `the test ended. This activity created the error "${err}" which ` + + `triggered an ${eventName} event, caught by the test runner.`; + } rootTest.diagnostic(msg); process.exitCode = kGenericUserError; diff --git a/test/message/test_runner_output.js b/test/message/test_runner_output.js index 593f069d8f4606..a53ded3dfde3ac 100644 --- a/test/message/test_runner_output.js +++ b/test/message/test_runner_output.js @@ -383,3 +383,9 @@ test('unfinished test with unhandledRejection', async () => { setTimeout(() => Promise.reject(new Error('bar'))); }); }); + +// Verify that uncaught exceptions outside of any tests are handled after the +// test harness has finished bootstrapping itself. +setImmediate(() => { + throw new Error('uncaught from outside of a test'); +}); diff --git a/test/message/test_runner_output.out b/test/message/test_runner_output.out index 2609833304e246..b6f254708010e9 100644 --- a/test/message/test_runner_output.out +++ b/test/message/test_runner_output.out @@ -637,6 +637,7 @@ not ok 65 - invalid subtest fail 1..65 # Warning: Test "unhandled rejection - passes but warns" generated asynchronous activity after the test ended. This activity created the error "Error: rejected from unhandled rejection fail" and would have caused the test to fail, but instead triggered an unhandledRejection event. # Warning: Test "async unhandled rejection - passes but warns" generated asynchronous activity after the test ended. This activity created the error "Error: rejected from async unhandled rejection fail" and would have caused the test to fail, but instead triggered an unhandledRejection event. +# Warning: A resource generated asynchronous activity after the test ended. This activity created the error "Error: uncaught from outside of a test" which triggered an uncaughtException event, caught by the test runner. # Warning: Test "immediate throw - passes but warns" generated asynchronous activity after the test ended. This activity created the error "Error: thrown from immediate throw fail" and would have caused the test to fail, but instead triggered an uncaughtException event. # Warning: Test "immediate reject - passes but warns" generated asynchronous activity after the test ended. This activity created the error "Error: rejected from immediate reject fail" and would have caused the test to fail, but instead triggered an unhandledRejection event. # Warning: Test "callback called twice in different ticks" generated asynchronous activity after the test ended. This activity created the error "Error [ERR_TEST_FAILURE]: callback invoked multiple times" and would have caused the test to fail, but instead triggered an uncaughtException event. diff --git a/test/message/test_runner_output_cli.out b/test/message/test_runner_output_cli.out index 72957397c05454..3baeb534704b11 100644 --- a/test/message/test_runner_output_cli.out +++ b/test/message/test_runner_output_cli.out @@ -636,6 +636,7 @@ not ok 65 - invalid subtest fail ... # Warning: Test "unhandled rejection - passes but warns" generated asynchronous activity after the test ended. This activity created the error "Error: rejected from unhandled rejection fail" and would have caused the test to fail, but instead triggered an unhandledRejection event. # Warning: Test "async unhandled rejection - passes but warns" generated asynchronous activity after the test ended. This activity created the error "Error: rejected from async unhandled rejection fail" and would have caused the test to fail, but instead triggered an unhandledRejection event. +# Warning: A resource generated asynchronous activity after the test ended. This activity created the error "Error: uncaught from outside of a test" which triggered an uncaughtException event, caught by the test runner. # Warning: Test "immediate throw - passes but warns" generated asynchronous activity after the test ended. This activity created the error "Error: thrown from immediate throw fail" and would have caused the test to fail, but instead triggered an uncaughtException event. # Warning: Test "immediate reject - passes but warns" generated asynchronous activity after the test ended. This activity created the error "Error: rejected from immediate reject fail" and would have caused the test to fail, but instead triggered an unhandledRejection event. # Warning: Test "callback called twice in different ticks" generated asynchronous activity after the test ended. This activity created the error "Error [ERR_TEST_FAILURE]: callback invoked multiple times" and would have caused the test to fail, but instead triggered an uncaughtException event. diff --git a/test/message/test_runner_output_spec_reporter.out b/test/message/test_runner_output_spec_reporter.out index 591dc9a76d64d0..3ff9aefe7a42ce 100644 --- a/test/message/test_runner_output_spec_reporter.out +++ b/test/message/test_runner_output_spec_reporter.out @@ -270,6 +270,7 @@ Warning: Test "unhandled rejection - passes but warns" generated asynchronous activity after the test ended. This activity created the error "Error: rejected from unhandled rejection fail" and would have caused the test to fail, but instead triggered an unhandledRejection event. Warning: Test "async unhandled rejection - passes but warns" generated asynchronous activity after the test ended. This activity created the error "Error: rejected from async unhandled rejection fail" and would have caused the test to fail, but instead triggered an unhandledRejection event. + Warning: A resource generated asynchronous activity after the test ended. This activity created the error "Error: uncaught from outside of a test" which triggered an uncaughtException event, caught by the test runner. Warning: Test "immediate throw - passes but warns" generated asynchronous activity after the test ended. This activity created the error "Error: thrown from immediate throw fail" and would have caused the test to fail, but instead triggered an uncaughtException event. Warning: Test "immediate reject - passes but warns" generated asynchronous activity after the test ended. This activity created the error "Error: rejected from immediate reject fail" and would have caused the test to fail, but instead triggered an unhandledRejection event. Warning: Test "callback called twice in different ticks" generated asynchronous activity after the test ended. This activity created the error "Error [ERR_TEST_FAILURE]: callback invoked multiple times" and would have caused the test to fail, but instead triggered an uncaughtException event. From d4c3e3b496e6c668e0f2b55a69ef7a24fffe9413 Mon Sep 17 00:00:00 2001 From: cjihrig Date: Sun, 5 Mar 2023 11:57:44 -0500 Subject: [PATCH 035/186] test_runner: remove root tracking set The wasRootSetup Set in the test harness appears to be redundant, since the startTime field can be used interchangeably. This commit removes wasRootSetup. PR-URL: https://github.com/nodejs/node/pull/46961 Reviewed-By: Moshe Atlow Reviewed-By: Yagiz Nizipli --- lib/internal/test_runner/harness.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/lib/internal/test_runner/harness.js b/lib/internal/test_runner/harness.js index 168310ff3d93cd..26f5a6ef49142c 100644 --- a/lib/internal/test_runner/harness.js +++ b/lib/internal/test_runner/harness.js @@ -3,7 +3,6 @@ const { ArrayPrototypeForEach, PromiseResolve, SafeMap, - SafeWeakSet, } = primordials; const { createHook, @@ -25,7 +24,6 @@ const { const { bigint: hrtime } = process.hrtime; const testResources = new SafeMap(); -const wasRootSetup = new SafeWeakSet(); function createTestTree(options = kEmptyObject) { return setup(new Test({ __proto__: null, ...options, name: '' })); @@ -108,7 +106,7 @@ function collectCoverage(rootTest, coverage) { } function setup(root) { - if (wasRootSetup.has(root)) { + if (root.startTime !== null) { return root; } @@ -172,8 +170,6 @@ function setup(root) { coverage: null, }; root.startTime = hrtime(); - - wasRootSetup.add(root); return root; } From 3b0c047c31eaa65294181c1df7ab49429c477d71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Jos=C3=A9=20Arboleda?= Date: Sat, 4 Mar 2023 23:12:52 -0500 Subject: [PATCH 036/186] 2023-03-07, Version 18.15.0 'Hydrogen' (LTS) Notable changes: buffer: * (SEMVER-MINOR) add isAscii method (Yagiz Nizipli) https://github.com/nodejs/node/pull/46046 doc,lib,src,test: * rename --test-coverage (Colin Ihrig) https://github.com/nodejs/node/pull/46017 fs: * (SEMVER-MINOR) add statfs() functions (Colin Ihrig) https://github.com/nodejs/node/pull/46358 src,lib: * (SEMVER-MINOR) add constrainedMemory API for process (theanarkh) https://github.com/nodejs/node/pull/46218 test_runner: * add initial code coverage support (Colin Ihrig) https://github.com/nodejs/node/pull/46017 * (SEMVER-MINOR) add reporters (Moshe Atlow) https://github.com/nodejs/node/pull/45712 v8: * (SEMVER-MINOR) support gc profile (theanarkh) https://github.com/nodejs/node/pull/46255 vm: * (SEMVER-MINOR) expose cachedDataRejected for vm.compileFunction (Anna Henningsen) https://github.com/nodejs/node/pull/46320 PR-URL: https://github.com/nodejs/node/pull/46920 --- CHANGELOG.md | 3 +- doc/api/buffer.md | 4 +- doc/api/cli.md | 12 +++- doc/api/fs.md | 44 +++++++++---- doc/api/http.md | 4 +- doc/api/process.md | 4 +- doc/api/test.md | 8 ++- doc/api/v8.md | 16 +++-- doc/api/vm.md | 1 + doc/changelogs/CHANGELOG_V18.md | 111 ++++++++++++++++++++++++++++++++ 10 files changed, 182 insertions(+), 25 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7aaa999ee2ecc9..7e7a5a0f8b49e9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -47,7 +47,8 @@ release. 19.0.0
-18.14.2
+18.15.0
+18.14.2
18.14.1
18.14.0
18.13.0
diff --git a/doc/api/buffer.md b/doc/api/buffer.md index e96fd37ef2906c..90c2c3b1aa6e53 100644 --- a/doc/api/buffer.md +++ b/doc/api/buffer.md @@ -5163,7 +5163,9 @@ and binary data should be performed using `Buffer.from(str, 'base64')` and ### `buffer.isAscii(input)` * input {Buffer | ArrayBuffer | TypedArray} The input to validate. diff --git a/doc/api/cli.md b/doc/api/cli.md index 5ca34109a8b11f..1e582ab29f12a4 100644 --- a/doc/api/cli.md +++ b/doc/api/cli.md @@ -601,7 +601,9 @@ Use this flag to enable [ShadowRealm][] support. ### `--experimental-test-coverage` When used in conjunction with the `node:test` module, a code coverage report is @@ -1419,7 +1421,9 @@ whose name matches the provided pattern. See the documentation on ### `--test-reporter` A test reporter to use when running tests. See the documentation on @@ -1428,7 +1432,9 @@ A test reporter to use when running tests. See the documentation on ### `--test-reporter-destination` The destination for the corresponding test reporter. See the documentation on diff --git a/doc/api/fs.md b/doc/api/fs.md index a83a50b5d184ae..1a48fc072ac450 100644 --- a/doc/api/fs.md +++ b/doc/api/fs.md @@ -1536,7 +1536,9 @@ changes: ### `fsPromises.statfs(path[, options])` * `path` {string|Buffer|URL} @@ -4160,7 +4162,9 @@ Stats { ### `fs.statfs(path[, options], callback)` * `path` {string|Buffer|URL} @@ -5931,7 +5935,9 @@ Retrieves the {fs.Stats} for the path. ### `fs.statfsSync(path[, options])` * `path` {string|Buffer|URL} @@ -7040,7 +7046,9 @@ of 0.12, `ctime` is not "creation time", and on Unix systems, it never was. ### Class: `fs.StatFs` Provides information about a mounted file system. @@ -7078,7 +7086,9 @@ StatFs { #### `statfs.bavail` * {number|bigint} @@ -7088,7 +7098,9 @@ Free blocks available to unprivileged users. #### `statfs.bfree` * {number|bigint} @@ -7098,7 +7110,9 @@ Free blocks in file system. #### `statfs.blocks` * {number|bigint} @@ -7108,7 +7122,9 @@ Total data blocks in file system. #### `statfs.bsize` * {number|bigint} @@ -7118,7 +7134,9 @@ Optimal transfer block size. #### `statfs.ffree` * {number|bigint} @@ -7128,7 +7146,9 @@ Free file nodes in file system. #### `statfs.files` * {number|bigint} @@ -7138,7 +7158,9 @@ Total file nodes in file system. #### `statfs.type` * {number|bigint} diff --git a/doc/api/http.md b/doc/api/http.md index e204c75d0b2c05..0ca0eb4cade661 100644 --- a/doc/api/http.md +++ b/doc/api/http.md @@ -2993,7 +2993,9 @@ headers with the same name. ### `outgoingMessage.setHeaders(headers)` * `headers` {Headers|Map} diff --git a/doc/api/process.md b/doc/api/process.md index c6537aa44d3349..e9ef0a972de01c 100644 --- a/doc/api/process.md +++ b/doc/api/process.md @@ -1106,7 +1106,9 @@ over the IPC channel using `process.send()`. ## `process.constrainedMemory()` > Stability: 1 - Experimental diff --git a/doc/api/test.md b/doc/api/test.md index c53b7bccf0c007..e56dc50dea6075 100644 --- a/doc/api/test.md +++ b/doc/api/test.md @@ -511,7 +511,9 @@ test('spies on an object method', (t) => { ## Test reporters The `node:test` module supports passing [`--test-reporter`][] @@ -842,7 +844,7 @@ Shorthand for marking a suite as `TODO`, same as ## `describe.only([name][, options][, fn])` Shorthand for marking a suite as `only`, same as @@ -877,7 +879,7 @@ same as [`it([name], { todo: true }[, fn])`][it options]. ## `it.only([name][, options][, fn])` Shorthand for marking a test as `only`, diff --git a/doc/api/v8.md b/doc/api/v8.md index 061c525d63318d..9ce500bf19c71d 100644 --- a/doc/api/v8.md +++ b/doc/api/v8.md @@ -1054,7 +1054,9 @@ Returns true if the Node.js instance is run to build a snapshot. ## Class: `v8.GCProfiler` This API collects GC data in current thread. @@ -1062,7 +1064,9 @@ This API collects GC data in current thread. ### `new v8.GCProfiler()` Create a new instance of the `v8.GCProfiler` class. @@ -1070,7 +1074,9 @@ Create a new instance of the `v8.GCProfiler` class. ### `profiler.start()` Start collecting GC data. @@ -1078,7 +1084,9 @@ Start collecting GC data. ### `profiler.stop()` Stop collecting GC data and return an object.The content of object diff --git a/doc/api/vm.md b/doc/api/vm.md index ee7c75dbe37f1c..f6eaeda1212c5e 100644 --- a/doc/api/vm.md +++ b/doc/api/vm.md @@ -966,6 +966,7 @@ added: v10.10.0 changes: - version: - v19.6.0 + - v18.15.0 pr-url: https://github.com/nodejs/node/pull/46320 description: The return value now includes `cachedDataRejected` with the same semantics as the `vm.Script` version diff --git a/doc/changelogs/CHANGELOG_V18.md b/doc/changelogs/CHANGELOG_V18.md index 585844314a6989..c0fcc5f8f2483a 100644 --- a/doc/changelogs/CHANGELOG_V18.md +++ b/doc/changelogs/CHANGELOG_V18.md @@ -9,6 +9,7 @@ +18.15.0
18.14.2
18.14.1
18.14.0
@@ -55,6 +56,116 @@ * [io.js](CHANGELOG_IOJS.md) * [Archive](CHANGELOG_ARCHIVE.md) + + +## 2023-03-07, Version 18.15.0 'Hydrogen' (LTS), @BethGriggs prepared by @juanarbol + +### Notable Changes + +* \[[`63563f8a7a`](https://github.com/nodejs/node/commit/63563f8a7a)] - **doc,lib,src,test**: rename --test-coverage (Colin Ihrig) [#46017](https://github.com/nodejs/node/pull/46017) +* \[[`28a775b32f`](https://github.com/nodejs/node/commit/28a775b32f)] - **test\_runner**: add initial code coverage support (Colin Ihrig) [#46017](https://github.com/nodejs/node/pull/46017) +* \[[`4d50db14b3`](https://github.com/nodejs/node/commit/4d50db14b3)] - **(SEMVER-MINOR)** **test\_runner**: add reporters (Moshe Atlow) [#45712](https://github.com/nodejs/node/pull/45712) +* \[[`643545ab79`](https://github.com/nodejs/node/commit/643545ab79)] - **(SEMVER-MINOR)** **fs**: add statfs() functions (Colin Ihrig) [#46358](https://github.com/nodejs/node/pull/46358) +* \[[`110ead9abb`](https://github.com/nodejs/node/commit/110ead9abb)] - **(SEMVER-MINOR)** **vm**: expose cachedDataRejected for vm.compileFunction (Anna Henningsen) [#46320](https://github.com/nodejs/node/pull/46320) +* \[[`02632b42cf`](https://github.com/nodejs/node/commit/02632b42cf)] - **(SEMVER-MINOR)** **v8**: support gc profile (theanarkh) [#46255](https://github.com/nodejs/node/pull/46255) +* \[[`f09b838408`](https://github.com/nodejs/node/commit/f09b838408)] - **(SEMVER-MINOR)** **src,lib**: add constrainedMemory API for process (theanarkh) [#46218](https://github.com/nodejs/node/pull/46218) +* \[[`cb5bb12422`](https://github.com/nodejs/node/commit/cb5bb12422)] - **(SEMVER-MINOR)** **buffer**: add isAscii method (Yagiz Nizipli) [#46046](https://github.com/nodejs/node/pull/46046) + +### Commits + +* \[[`6f91c8e2ae`](https://github.com/nodejs/node/commit/6f91c8e2ae)] - **benchmark**: add trailing commas (Antoine du Hamel) [#46370](https://github.com/nodejs/node/pull/46370) +* \[[`d0b9be21eb`](https://github.com/nodejs/node/commit/d0b9be21eb)] - **benchmark**: remove buffer benchmarks redundancy (Brian White) [#45735](https://github.com/nodejs/node/pull/45735) +* \[[`6468f30d0d`](https://github.com/nodejs/node/commit/6468f30d0d)] - **benchmark**: introduce benchmark combination filtering (Brian White) [#45735](https://github.com/nodejs/node/pull/45735) +* \[[`cb5bb12422`](https://github.com/nodejs/node/commit/cb5bb12422)] - **(SEMVER-MINOR)** **buffer**: add isAscii method (Yagiz Nizipli) [#46046](https://github.com/nodejs/node/pull/46046) +* \[[`ec61bb04c0`](https://github.com/nodejs/node/commit/ec61bb04c0)] - **build**: export more OpenSSL symbols on Windows (Mohamed Akram) [#45486](https://github.com/nodejs/node/pull/45486) +* \[[`7bae4333ce`](https://github.com/nodejs/node/commit/7bae4333ce)] - **build**: fix MSVC 2022 Release compilation (Vladimir Morozov (REDMOND)) [#46228](https://github.com/nodejs/node/pull/46228) +* \[[`0f5f2d4470`](https://github.com/nodejs/node/commit/0f5f2d4470)] - **crypto**: include `hmac.h` in `crypto_util.h` (Adam Langley) [#46279](https://github.com/nodejs/node/pull/46279) +* \[[`91ece4161b`](https://github.com/nodejs/node/commit/91ece4161b)] - **crypto**: avoid hang when no algorithm available (Richard Lau) [#46237](https://github.com/nodejs/node/pull/46237) +* \[[`492fc95bdf`](https://github.com/nodejs/node/commit/492fc95bdf)] - **deps**: V8: cherry-pick 90be99fab31c (Michaël Zasso) [#46646](https://github.com/nodejs/node/pull/46646) +* \[[`732c77e3d9`](https://github.com/nodejs/node/commit/732c77e3d9)] - **deps**: update acorn to 8.8.2 (Node.js GitHub Bot) [#46363](https://github.com/nodejs/node/pull/46363) +* \[[`8582f99ffb`](https://github.com/nodejs/node/commit/8582f99ffb)] - **deps**: update to uvwasi 0.0.15 (Colin Ihrig) [#46253](https://github.com/nodejs/node/pull/46253) +* \[[`5453cd9940`](https://github.com/nodejs/node/commit/5453cd9940)] - **deps**: V8: cherry-pick bf0bd4868dde (Michaël Zasso) [#45908](https://github.com/nodejs/node/pull/45908) +* \[[`3ea53c5dc8`](https://github.com/nodejs/node/commit/3ea53c5dc8)] - **deps**: V8: cherry-pick c875e86df1d7 (sepehrst) [#46501](https://github.com/nodejs/node/pull/46501) +* \[[`c04808de4b`](https://github.com/nodejs/node/commit/c04808de4b)] - **doc**: correct the `sed` command for macOS in release process docs (Juan José) [#46397](https://github.com/nodejs/node/pull/46397) +* \[[`8113220690`](https://github.com/nodejs/node/commit/8113220690)] - **doc**: pass string to `textEncoder.encode` as input (Deokjin Kim) [#46421](https://github.com/nodejs/node/pull/46421) +* \[[`129dccf5d2`](https://github.com/nodejs/node/commit/129dccf5d2)] - **doc**: add tip for session.post function (theanarkh) [#46354](https://github.com/nodejs/node/pull/46354) +* \[[`919e581732`](https://github.com/nodejs/node/commit/919e581732)] - **doc**: add documentation for socket.destroySoon() (Luigi Pinca) [#46337](https://github.com/nodejs/node/pull/46337) +* \[[`fc15ac95a5`](https://github.com/nodejs/node/commit/fc15ac95a5)] - **doc**: fix commit message using test instead of deps (Tony Gorez) [#46313](https://github.com/nodejs/node/pull/46313) +* \[[`d153a93200`](https://github.com/nodejs/node/commit/d153a93200)] - **doc**: add v8 fast api contribution guidelines (Yagiz Nizipli) [#46199](https://github.com/nodejs/node/pull/46199) +* \[[`dbf082d082`](https://github.com/nodejs/node/commit/dbf082d082)] - **doc**: fix small typo error (0xflotus) [#46186](https://github.com/nodejs/node/pull/46186) +* \[[`94421b4cfe`](https://github.com/nodejs/node/commit/94421b4cfe)] - **doc**: mark some parameters as optional in webstreams (Deokjin Kim) [#46269](https://github.com/nodejs/node/pull/46269) +* \[[`5adb743511`](https://github.com/nodejs/node/commit/5adb743511)] - **doc**: update output of example in `events.getEventListeners` (Deokjin Kim) [#46268](https://github.com/nodejs/node/pull/46268) +* \[[`63563f8a7a`](https://github.com/nodejs/node/commit/63563f8a7a)] - **doc,lib,src,test**: rename --test-coverage (Colin Ihrig) [#46017](https://github.com/nodejs/node/pull/46017) +* \[[`4e88c7c813`](https://github.com/nodejs/node/commit/4e88c7c813)] - **esm**: delete preload mock test (Geoffrey Booth) [#46402](https://github.com/nodejs/node/pull/46402) +* \[[`643545ab79`](https://github.com/nodejs/node/commit/643545ab79)] - **(SEMVER-MINOR)** **fs**: add statfs() functions (Colin Ihrig) [#46358](https://github.com/nodejs/node/pull/46358) +* \[[`5019b5473f`](https://github.com/nodejs/node/commit/5019b5473f)] - **http**: res.setHeaders first implementation (Marco Ippolito) [#46109](https://github.com/nodejs/node/pull/46109) +* \[[`76622c4c60`](https://github.com/nodejs/node/commit/76622c4c60)] - **inspector**: allow opening inspector when `NODE_V8_COVERAGE` is set (Moshe Atlow) [#46113](https://github.com/nodejs/node/pull/46113) +* \[[`92f0747e03`](https://github.com/nodejs/node/commit/92f0747e03)] - **meta**: update AUTHORS (Node.js GitHub Bot) [#46399](https://github.com/nodejs/node/pull/46399) +* \[[`795251bc6f`](https://github.com/nodejs/node/commit/795251bc6f)] - **meta**: update AUTHORS (Node.js GitHub Bot) [#46303](https://github.com/nodejs/node/pull/46303) +* \[[`8865424c31`](https://github.com/nodejs/node/commit/8865424c31)] - **meta**: add .mailmap entry (Rich Trott) [#46303](https://github.com/nodejs/node/pull/46303) +* \[[`5ed679407b`](https://github.com/nodejs/node/commit/5ed679407b)] - **meta**: move evanlucas to emeritus (Evan Lucas) [#46274](https://github.com/nodejs/node/pull/46274) +* \[[`403df210ac`](https://github.com/nodejs/node/commit/403df210ac)] - **module**: move test reporter loading (Geoffrey Booth) [#45923](https://github.com/nodejs/node/pull/45923) +* \[[`2f7319e387`](https://github.com/nodejs/node/commit/2f7319e387)] - **readline**: fix detection of carriage return (Antoine du Hamel) [#46306](https://github.com/nodejs/node/pull/46306) +* \[[`73a8f46c4d`](https://github.com/nodejs/node/commit/73a8f46c4d)] - _**Revert**_ "**src**: let http2 streams end after session close" (Santiago Gimeno) [#46721](https://github.com/nodejs/node/pull/46721) +* \[[`30d783f91a`](https://github.com/nodejs/node/commit/30d783f91a)] - **src**: stop tracing agent before shutting down libuv (Santiago Gimeno) [#46380](https://github.com/nodejs/node/pull/46380) +* \[[`1508d90fda`](https://github.com/nodejs/node/commit/1508d90fda)] - **src**: get rid of fp arithmetic in ParseIPv4Host (Tobias Nießen) [#46326](https://github.com/nodejs/node/pull/46326) +* \[[`bdb793a082`](https://github.com/nodejs/node/commit/bdb793a082)] - **src**: use UNREACHABLE instead of CHECK(falsy) (Tobias Nießen) [#46317](https://github.com/nodejs/node/pull/46317) +* \[[`116a33649b`](https://github.com/nodejs/node/commit/116a33649b)] - **src**: add support for ETW stack walking (José Dapena Paz) [#46203](https://github.com/nodejs/node/pull/46203) +* \[[`b06298c98e`](https://github.com/nodejs/node/commit/b06298c98e)] - **src**: refactor EndsInANumber in node\_url.cc and adds IsIPv4NumberValid (Miguel Teixeira) [#46227](https://github.com/nodejs/node/pull/46227) +* \[[`26f41b041c`](https://github.com/nodejs/node/commit/26f41b041c)] - **src**: fix c++ exception on bad command line arg (Ben Noordhuis) [#46290](https://github.com/nodejs/node/pull/46290) +* \[[`14da89f41a`](https://github.com/nodejs/node/commit/14da89f41a)] - **src**: remove unreachable UNREACHABLE (Tobias Nießen) [#46281](https://github.com/nodejs/node/pull/46281) +* \[[`18c4dd004b`](https://github.com/nodejs/node/commit/18c4dd004b)] - **src**: replace custom ASCII validation with simdutf one (Anna Henningsen) [#46271](https://github.com/nodejs/node/pull/46271) +* \[[`cde375510f`](https://github.com/nodejs/node/commit/cde375510f)] - **src**: replace unreachable code with static\_assert (Tobias Nießen) [#46250](https://github.com/nodejs/node/pull/46250) +* \[[`f389b2f3fc`](https://github.com/nodejs/node/commit/f389b2f3fc)] - **src**: use explicit C++17 fallthrough (Tobias Nießen) [#46251](https://github.com/nodejs/node/pull/46251) +* \[[`8adaa1333c`](https://github.com/nodejs/node/commit/8adaa1333c)] - **src**: use CreateEnvironment instead of inlining its code where possible (Anna Henningsen) [#45886](https://github.com/nodejs/node/pull/45886) +* \[[`f09b838408`](https://github.com/nodejs/node/commit/f09b838408)] - **(SEMVER-MINOR)** **src,lib**: add constrainedMemory API for process (theanarkh) [#46218](https://github.com/nodejs/node/pull/46218) +* \[[`63e92eae63`](https://github.com/nodejs/node/commit/63e92eae63)] - **stream**: remove brandchecks from stream duplexify (Debadree Chatterjee) [#46315](https://github.com/nodejs/node/pull/46315) +* \[[`3acfe9bf92`](https://github.com/nodejs/node/commit/3acfe9bf92)] - **stream**: fix readable stream as async iterator function (Erick Wendel) [#46147](https://github.com/nodejs/node/pull/46147) +* \[[`de64315ccb`](https://github.com/nodejs/node/commit/de64315ccb)] - **test**: fix WPT title when no META title is present (Filip Skokan) [#46804](https://github.com/nodejs/node/pull/46804) +* \[[`162e3400ff`](https://github.com/nodejs/node/commit/162e3400ff)] - **test**: fix default WPT titles (Filip Skokan) [#46778](https://github.com/nodejs/node/pull/46778) +* \[[`5f422c4d70`](https://github.com/nodejs/node/commit/5f422c4d70)] - **test**: add WPTRunner support for variants and generating WPT reports (Filip Skokan) [#46498](https://github.com/nodejs/node/pull/46498) +* \[[`4f5aff2557`](https://github.com/nodejs/node/commit/4f5aff2557)] - **test**: fix tap parser fails if a test logs a number (Pulkit Gupta) [#46056](https://github.com/nodejs/node/pull/46056) +* \[[`32b020cf84`](https://github.com/nodejs/node/commit/32b020cf84)] - **test**: fix tap escaping with and without --test (Pulkit Gupta) [#46311](https://github.com/nodejs/node/pull/46311) +* \[[`f2bba1bcdb`](https://github.com/nodejs/node/commit/f2bba1bcdb)] - **test**: add trailing commas in `test/node-api` (Antoine du Hamel) [#46384](https://github.com/nodejs/node/pull/46384) +* \[[`f2ebe66fda`](https://github.com/nodejs/node/commit/f2ebe66fda)] - **test**: add trailing commas in `test/message` (Antoine du Hamel) [#46372](https://github.com/nodejs/node/pull/46372) +* \[[`ed564a9985`](https://github.com/nodejs/node/commit/ed564a9985)] - **test**: add trailing commas in `test/pseudo-tty` (Antoine du Hamel) [#46371](https://github.com/nodejs/node/pull/46371) +* \[[`e4437dd409`](https://github.com/nodejs/node/commit/e4437dd409)] - **test**: set common.bits to 64 for loong64 (Shi Pujin) [#45383](https://github.com/nodejs/node/pull/45383) +* \[[`9d40aef736`](https://github.com/nodejs/node/commit/9d40aef736)] - **test**: s390x zlib test case fixes (Adam Majer) [#46367](https://github.com/nodejs/node/pull/46367) +* \[[`ed3fb52716`](https://github.com/nodejs/node/commit/ed3fb52716)] - **test**: fix logInTimeout is not function (theanarkh) [#46348](https://github.com/nodejs/node/pull/46348) +* \[[`d05b0771be`](https://github.com/nodejs/node/commit/d05b0771be)] - **test**: avoid trying to call sysctl directly (Adam Majer) [#46366](https://github.com/nodejs/node/pull/46366) +* \[[`041aac3bbd`](https://github.com/nodejs/node/commit/041aac3bbd)] - **test**: avoid left behind child processes (Richard Lau) [#46276](https://github.com/nodejs/node/pull/46276) +* \[[`837ddcb322`](https://github.com/nodejs/node/commit/837ddcb322)] - **test**: add failing test for readline with carriage return (Alec Mev) [#46075](https://github.com/nodejs/node/pull/46075) +* \[[`75b8db41c6`](https://github.com/nodejs/node/commit/75b8db41c6)] - **test**: reduce `fs-write-optional-params` flakiness (LiviaMedeiros) [#46238](https://github.com/nodejs/node/pull/46238) +* \[[`c0d3fdaf63`](https://github.com/nodejs/node/commit/c0d3fdaf63)] - **test,crypto**: add CFRG curve vectors to wrap/unwrap tests (Filip Skokan) [#46406](https://github.com/nodejs/node/pull/46406) +* \[[`f328f7b15e`](https://github.com/nodejs/node/commit/f328f7b15e)] - **test,crypto**: update WebCryptoAPI WPT (Filip Skokan) [#46267](https://github.com/nodejs/node/pull/46267) +* \[[`1ef3c53e24`](https://github.com/nodejs/node/commit/1ef3c53e24)] - **test\_runner**: better handle async bootstrap errors (Colin Ihrig) [#46720](https://github.com/nodejs/node/pull/46720) +* \[[`0a690efb76`](https://github.com/nodejs/node/commit/0a690efb76)] - **test\_runner**: add `describe.only` and `it.only` shorthands (Richie McColl) [#46604](https://github.com/nodejs/node/pull/46604) +* \[[`28a1317efe`](https://github.com/nodejs/node/commit/28a1317efe)] - **test\_runner**: bootstrap reporters before running tests (Moshe Atlow) [#46737](https://github.com/nodejs/node/pull/46737) +* \[[`cd3aaa8fac`](https://github.com/nodejs/node/commit/cd3aaa8fac)] - **test\_runner**: emit test-only diagnostic warning (Richie McColl) [#46540](https://github.com/nodejs/node/pull/46540) +* \[[`c19fa45a65`](https://github.com/nodejs/node/commit/c19fa45a65)] - **test\_runner**: centralize CLI option handling (Colin Ihrig) [#46707](https://github.com/nodejs/node/pull/46707) +* \[[`0898145e37`](https://github.com/nodejs/node/commit/0898145e37)] - **test\_runner**: display skipped tests in spec reporter output (Richie McColl) [#46651](https://github.com/nodejs/node/pull/46651) +* \[[`894d7117fa`](https://github.com/nodejs/node/commit/894d7117fa)] - **test\_runner**: parse non-ascii character correctly (Mert Can Altın) [#45736](https://github.com/nodejs/node/pull/45736) +* \[[`5b3c606626`](https://github.com/nodejs/node/commit/5b3c606626)] - **test\_runner**: flatten TAP output when running using `--test` (Moshe Atlow) [#46440](https://github.com/nodejs/node/pull/46440) +* \[[`391ff0dba4`](https://github.com/nodejs/node/commit/391ff0dba4)] - **test\_runner**: allow nesting test within describe (Moshe Atlow) [#46544](https://github.com/nodejs/node/pull/46544) +* \[[`ba784e87b4`](https://github.com/nodejs/node/commit/ba784e87b4)] - **test\_runner**: fix missing test diagnostics (Moshe Atlow) [#46450](https://github.com/nodejs/node/pull/46450) +* \[[`c5f16fb5fb`](https://github.com/nodejs/node/commit/c5f16fb5fb)] - **test\_runner**: top-level diagnostics not ommited when running with --test (Pulkit Gupta) [#46441](https://github.com/nodejs/node/pull/46441) +* \[[`28a775b32f`](https://github.com/nodejs/node/commit/28a775b32f)] - **test\_runner**: add initial code coverage support (Colin Ihrig) [#46017](https://github.com/nodejs/node/pull/46017) +* \[[`0d999e373a`](https://github.com/nodejs/node/commit/0d999e373a)] - **test\_runner**: make built in reporters internal (Colin Ihrig) [#46092](https://github.com/nodejs/node/pull/46092) +* \[[`79f4b426fe`](https://github.com/nodejs/node/commit/79f4b426fe)] - **test\_runner**: report `file` in test runner events (Moshe Atlow) [#46030](https://github.com/nodejs/node/pull/46030) +* \[[`4d50db14b3`](https://github.com/nodejs/node/commit/4d50db14b3)] - **(SEMVER-MINOR)** **test\_runner**: add reporters (Moshe Atlow) [#45712](https://github.com/nodejs/node/pull/45712) +* \[[`5fdf374c74`](https://github.com/nodejs/node/commit/5fdf374c74)] - **test\_runner**: avoid swallowing of asynchronously thrown errors (MURAKAMI Masahiko) [#45264](https://github.com/nodejs/node/pull/45264) +* \[[`23b875806c`](https://github.com/nodejs/node/commit/23b875806c)] - **test\_runner**: update comment to comply with eslint no-fallthrough rule (Antoine du Hamel) [#46258](https://github.com/nodejs/node/pull/46258) +* \[[`00c5495aa3`](https://github.com/nodejs/node/commit/00c5495aa3)] - **tools**: update eslint to 8.33.0 (Node.js GitHub Bot) [#46400](https://github.com/nodejs/node/pull/46400) +* \[[`37a6ce1120`](https://github.com/nodejs/node/commit/37a6ce1120)] - **tools**: update doc to unist-util-select\@4.0.3 unist-util-visit\@4.1.2 (Node.js GitHub Bot) [#46364](https://github.com/nodejs/node/pull/46364) +* \[[`1eaafc7db4`](https://github.com/nodejs/node/commit/1eaafc7db4)] - **tools**: update lint-md-dependencies to rollup\@3.12.0 (Node.js GitHub Bot) [#46398](https://github.com/nodejs/node/pull/46398) +* \[[`a97774603b`](https://github.com/nodejs/node/commit/a97774603b)] - **tools**: require more trailing commas (Antoine du Hamel) [#46346](https://github.com/nodejs/node/pull/46346) +* \[[`03e244a59b`](https://github.com/nodejs/node/commit/03e244a59b)] - **tools**: update lint-md-dependencies (Node.js GitHub Bot) [#46302](https://github.com/nodejs/node/pull/46302) +* \[[`60d714e0c3`](https://github.com/nodejs/node/commit/60d714e0c3)] - **tools**: allow icutrim.py to run on python2 (Michael Dawson) [#46263](https://github.com/nodejs/node/pull/46263) +* \[[`b7950f50de`](https://github.com/nodejs/node/commit/b7950f50de)] - **tools**: update eslint to 8.32.0 (Node.js GitHub Bot) [#46258](https://github.com/nodejs/node/pull/46258) +* \[[`08bafc84f6`](https://github.com/nodejs/node/commit/08bafc84f6)] - **url**: refactor to use more primordials (Antoine du Hamel) [#45966](https://github.com/nodejs/node/pull/45966) +* \[[`02632b42cf`](https://github.com/nodejs/node/commit/02632b42cf)] - **(SEMVER-MINOR)** **v8**: support gc profile (theanarkh) [#46255](https://github.com/nodejs/node/pull/46255) +* \[[`110ead9abb`](https://github.com/nodejs/node/commit/110ead9abb)] - **(SEMVER-MINOR)** **vm**: expose cachedDataRejected for vm.compileFunction (Anna Henningsen) [#46320](https://github.com/nodejs/node/pull/46320) + ## 2023-02-21, Version 18.14.2 'Hydrogen' (LTS), @MylesBorins From 044021d341cf108e7eda3e410822dae6b98a8a51 Mon Sep 17 00:00:00 2001 From: Joyee Cheung Date: Sat, 11 Feb 2023 23:08:41 +0100 Subject: [PATCH 037/186] benchmark: stablize encode benchmark - Increase the number of iteration to 1e6 to reduce flakes. 1e4 can introduce flakes even when comparing the main branch against itself - Replace the 1024 * 32 length test with 1024 * 8 since it would otherwise take too long to complete. Remove the 16 length test since it's not too different from 32. - Check the results of the encoding methods at the end. PR-URL: https://github.com/nodejs/node/pull/46658 Reviewed-By: Darshan Sen --- benchmark/util/text-encoder.js | 39 +++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/benchmark/util/text-encoder.js b/benchmark/util/text-encoder.js index 1429710e9cbef5..3150a6fbc884b0 100644 --- a/benchmark/util/text-encoder.js +++ b/benchmark/util/text-encoder.js @@ -1,10 +1,11 @@ 'use strict'; const common = require('../common.js'); +const assert = require('assert'); const bench = common.createBenchmark(main, { - len: [16, 32, 256, 1024, 1024 * 32], - n: [1e4], + len: [32, 256, 1024, 1024 * 8], + n: [1e6], type: ['one-byte-string', 'two-byte-string', 'ascii'], op: ['encode', 'encodeInto'], }); @@ -26,20 +27,24 @@ function main({ n, op, len, type }) { } const input = base.repeat(len); - const subarray = new Uint8Array(len); - - bench.start(); - switch (op) { - case 'encode': { - for (let i = 0; i < n; i++) - encoder.encode(input); - break; - } - case 'encodeInto': { - for (let i = 0; i < n; i++) - encoder.encodeInto(input, subarray); - break; - } + if (op === 'encode') { + const expected = encoder.encode(input); + let result; + bench.start(); + for (let i = 0; i < n; i++) + result = encoder.encode(input); + bench.end(n); + assert.deepStrictEqual(result, expected); + } else { + const expected = new Uint8Array(len); + const subarray = new Uint8Array(len); + const expectedStats = encoder.encodeInto(input, expected); + let result; + bench.start(); + for (let i = 0; i < n; i++) + result = encoder.encodeInto(input, subarray); + bench.end(n); + assert.deepStrictEqual(subarray, expected); + assert.deepStrictEqual(result, expectedStats); } - bench.end(n); } From 25c21868b8d16392835454f57bb465157661f199 Mon Sep 17 00:00:00 2001 From: Joyee Cheung Date: Sat, 11 Feb 2023 18:54:35 +0100 Subject: [PATCH 038/186] src: move encoding bindings to a new binding Move the bindings used by TextEncoder to a new binding for more self-contained code. PR-URL: https://github.com/nodejs/node/pull/46658 Reviewed-By: Darshan Sen --- lib/internal/encoding.js | 2 +- node.gyp | 2 + src/base_object_types.h | 1 + src/encoding_binding.cc | 202 ++++++++++++++++++++++++ src/encoding_binding.h | 46 ++++++ src/node_binding.cc | 1 + src/node_buffer.cc | 128 --------------- src/node_external_reference.h | 1 + src/node_snapshotable.cc | 1 + test/parallel/test-bootstrap-modules.js | 1 + 10 files changed, 256 insertions(+), 129 deletions(-) create mode 100644 src/encoding_binding.cc create mode 100644 src/encoding_binding.h diff --git a/lib/internal/encoding.js b/lib/internal/encoding.js index 5feec0552870be..2ee569c737d18c 100644 --- a/lib/internal/encoding.js +++ b/lib/internal/encoding.js @@ -54,7 +54,7 @@ const { encodeInto, encodeUtf8String, decodeUTF8, -} = internalBinding('buffer'); +} = internalBinding('encoding_binding'); const { Buffer } = require('buffer'); diff --git a/node.gyp b/node.gyp index f6aff6e550d977..72d90ec5f4ad14 100644 --- a/node.gyp +++ b/node.gyp @@ -479,6 +479,7 @@ 'src/connection_wrap.cc', 'src/dataqueue/queue.cc', 'src/debug_utils.cc', + 'src/encoding_binding.cc', 'src/env.cc', 'src/fs_event_wrap.cc', 'src/handle_wrap.cc', @@ -590,6 +591,7 @@ 'src/dataqueue/queue.h', 'src/debug_utils.h', 'src/debug_utils-inl.h', + 'src/encoding_binding.h', 'src/env_properties.h', 'src/env.h', 'src/env-inl.h', diff --git a/src/base_object_types.h b/src/base_object_types.h index db5b5e2f5e9ba9..3745c00970ee84 100644 --- a/src/base_object_types.h +++ b/src/base_object_types.h @@ -10,6 +10,7 @@ namespace node { // what the class passes to SET_BINDING_ID(), the second argument should match // the C++ class name. #define SERIALIZABLE_BINDING_TYPES(V) \ + V(encoding_binding_data, encoding_binding::BindingData) \ V(fs_binding_data, fs::BindingData) \ V(v8_binding_data, v8_utils::BindingData) \ V(blob_binding_data, BlobBindingData) \ diff --git a/src/encoding_binding.cc b/src/encoding_binding.cc new file mode 100644 index 00000000000000..0f54990907549b --- /dev/null +++ b/src/encoding_binding.cc @@ -0,0 +1,202 @@ +#include "encoding_binding.h" +#include "env-inl.h" +#include "node_errors.h" +#include "node_external_reference.h" +#include "simdutf.h" +#include "string_bytes.h" +#include "v8.h" + +#include + +namespace node { +namespace encoding_binding { + +using v8::ArrayBuffer; +using v8::BackingStore; +using v8::Context; +using v8::FunctionCallbackInfo; +using v8::Isolate; +using v8::Local; +using v8::MaybeLocal; +using v8::Object; +using v8::String; +using v8::Uint8Array; +using v8::Uint32Array; +using v8::Value; + +BindingData::BindingData(Environment* env, Local object) + : SnapshotableObject(env, object, type_int) {} + +bool BindingData::PrepareForSerialization(Local context, + v8::SnapshotCreator* creator) { + // Return true because we need to maintain the reference to the binding from + // JS land. + return true; +} + +InternalFieldInfoBase* BindingData::Serialize(int index) { + DCHECK_EQ(index, BaseObject::kEmbedderType); + InternalFieldInfo* info = + InternalFieldInfoBase::New(type()); + return info; +} + +void BindingData::Deserialize(Local context, + Local holder, + int index, + InternalFieldInfoBase* info) { + DCHECK_EQ(index, BaseObject::kEmbedderType); + v8::HandleScope scope(context->GetIsolate()); + Environment* env = Environment::GetCurrent(context); + // Recreate the buffer in the constructor. + BindingData* binding = env->AddBindingData(context, holder); + CHECK_NOT_NULL(binding); +} + +void BindingData::EncodeInto(const FunctionCallbackInfo& args) { + Environment* env = Environment::GetCurrent(args); + Isolate* isolate = env->isolate(); + CHECK_GE(args.Length(), 3); + CHECK(args[0]->IsString()); + CHECK(args[1]->IsUint8Array()); + CHECK(args[2]->IsUint32Array()); + + Local source = args[0].As(); + + Local dest = args[1].As(); + Local buf = dest->Buffer(); + char* write_result = static_cast(buf->Data()) + dest->ByteOffset(); + size_t dest_length = dest->ByteLength(); + + // results = [ read, written ] + Local result_arr = args[2].As(); + uint32_t* results = reinterpret_cast( + static_cast(result_arr->Buffer()->Data()) + + result_arr->ByteOffset()); + + int nchars; + int written = source->WriteUtf8( + isolate, + write_result, + dest_length, + &nchars, + String::NO_NULL_TERMINATION | String::REPLACE_INVALID_UTF8); + results[0] = nchars; + results[1] = written; +} + +// Encode a single string to a UTF-8 Uint8Array (not Buffer). +// Used in TextEncoder.prototype.encode. +void BindingData::EncodeUtf8String(const FunctionCallbackInfo& args) { + Environment* env = Environment::GetCurrent(args); + Isolate* isolate = env->isolate(); + CHECK_GE(args.Length(), 1); + CHECK(args[0]->IsString()); + + Local str = args[0].As(); + size_t length = str->Utf8Length(isolate); + + Local ab; + { + NoArrayBufferZeroFillScope no_zero_fill_scope(env->isolate_data()); + std::unique_ptr bs = + ArrayBuffer::NewBackingStore(isolate, length); + + CHECK(bs); + + str->WriteUtf8(isolate, + static_cast(bs->Data()), + -1, // We are certain that `data` is sufficiently large + nullptr, + String::NO_NULL_TERMINATION | String::REPLACE_INVALID_UTF8); + + ab = ArrayBuffer::New(isolate, std::move(bs)); + } + + auto array = Uint8Array::New(ab, 0, length); + args.GetReturnValue().Set(array); +} + +// Convert the input into an encoded string +void BindingData::DecodeUTF8(const FunctionCallbackInfo& args) { + Environment* env = Environment::GetCurrent(args); // list, flags + + CHECK_GE(args.Length(), 1); + + if (!(args[0]->IsArrayBuffer() || args[0]->IsSharedArrayBuffer() || + args[0]->IsArrayBufferView())) { + return node::THROW_ERR_INVALID_ARG_TYPE( + env->isolate(), + "The \"list\" argument must be an instance of SharedArrayBuffer, " + "ArrayBuffer or ArrayBufferView."); + } + + ArrayBufferViewContents buffer(args[0]); + + bool ignore_bom = args[1]->IsTrue(); + bool has_fatal = args[2]->IsTrue(); + + const char* data = buffer.data(); + size_t length = buffer.length(); + + if (has_fatal) { + auto result = simdutf::validate_utf8_with_errors(data, length); + + if (result.error) { + return node::THROW_ERR_ENCODING_INVALID_ENCODED_DATA( + env->isolate(), "The encoded data was not valid for encoding utf-8"); + } + } + + if (!ignore_bom && length >= 3) { + if (memcmp(data, "\xEF\xBB\xBF", 3) == 0) { + data += 3; + length -= 3; + } + } + + if (length == 0) return args.GetReturnValue().SetEmptyString(); + + Local error; + MaybeLocal maybe_ret = + StringBytes::Encode(env->isolate(), data, length, UTF8, &error); + Local ret; + + if (!maybe_ret.ToLocal(&ret)) { + CHECK(!error.IsEmpty()); + env->isolate()->ThrowException(error); + return; + } + + args.GetReturnValue().Set(ret); +} + +void BindingData::Initialize(Local target, + Local unused, + Local context, + void* priv) { + Environment* env = Environment::GetCurrent(context); + BindingData* const binding_data = + env->AddBindingData(context, target); + if (binding_data == nullptr) return; + + SetMethod(context, target, "encodeInto", EncodeInto); + SetMethodNoSideEffect(context, target, "encodeUtf8String", EncodeUtf8String); + SetMethodNoSideEffect(context, target, "decodeUTF8", DecodeUTF8); +} + +void BindingData::RegisterTimerExternalReferences( + ExternalReferenceRegistry* registry) { + registry->Register(EncodeInto); + registry->Register(EncodeUtf8String); + registry->Register(DecodeUTF8); +} + +} // namespace encoding_binding +} // namespace node + +NODE_BINDING_CONTEXT_AWARE_INTERNAL( + encoding_binding, node::encoding_binding::BindingData::Initialize) +NODE_BINDING_EXTERNAL_REFERENCE( + encoding_binding, + node::encoding_binding::BindingData::RegisterTimerExternalReferences) diff --git a/src/encoding_binding.h b/src/encoding_binding.h new file mode 100644 index 00000000000000..472b6bb4ad03ad --- /dev/null +++ b/src/encoding_binding.h @@ -0,0 +1,46 @@ +#ifndef SRC_ENCODING_BINDING_H_ +#define SRC_ENCODING_BINDING_H_ + +#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS + +#include +#include "aliased_buffer.h" +#include "node_snapshotable.h" +#include "v8-fast-api-calls.h" + +namespace node { +class ExternalReferenceRegistry; + +namespace encoding_binding { +class BindingData : public SnapshotableObject { + public: + BindingData(Environment* env, v8::Local obj); + + using InternalFieldInfo = InternalFieldInfoBase; + + SERIALIZABLE_OBJECT_METHODS() + SET_BINDING_ID(encoding_binding_data) + + SET_NO_MEMORY_INFO() + SET_SELF_SIZE(BindingData) + SET_MEMORY_INFO_NAME(BindingData) + + static void EncodeInto(const v8::FunctionCallbackInfo& args); + static void EncodeUtf8String(const v8::FunctionCallbackInfo& args); + static void DecodeUTF8(const v8::FunctionCallbackInfo& args); + + static void Initialize(v8::Local target, + v8::Local unused, + v8::Local context, + void* priv); + static void RegisterTimerExternalReferences( + ExternalReferenceRegistry* registry); +}; + +} // namespace encoding_binding + +} // namespace node + +#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS + +#endif // SRC_ENCODING_BINDING_H_ diff --git a/src/node_binding.cc b/src/node_binding.cc index 3c97c73964d207..48825171a43feb 100644 --- a/src/node_binding.cc +++ b/src/node_binding.cc @@ -42,6 +42,7 @@ V(config) \ V(contextify) \ V(credentials) \ + V(encoding_binding) \ V(errors) \ V(fs) \ V(fs_dir) \ diff --git a/src/node_buffer.cc b/src/node_buffer.cc index fec1c96634aaec..62651f4656b1b9 100644 --- a/src/node_buffer.cc +++ b/src/node_buffer.cc @@ -568,60 +568,6 @@ void StringSlice(const FunctionCallbackInfo& args) { args.GetReturnValue().Set(ret); } -// Convert the input into an encoded string -void DecodeUTF8(const FunctionCallbackInfo& args) { - Environment* env = Environment::GetCurrent(args); // list, flags - - CHECK_GE(args.Length(), 1); - - if (!(args[0]->IsArrayBuffer() || args[0]->IsSharedArrayBuffer() || - args[0]->IsArrayBufferView())) { - return node::THROW_ERR_INVALID_ARG_TYPE( - env->isolate(), - "The \"list\" argument must be an instance of SharedArrayBuffer, " - "ArrayBuffer or ArrayBufferView."); - } - - ArrayBufferViewContents buffer(args[0]); - - bool ignore_bom = args[1]->IsTrue(); - bool has_fatal = args[2]->IsTrue(); - - const char* data = buffer.data(); - size_t length = buffer.length(); - - if (has_fatal) { - auto result = simdutf::validate_utf8_with_errors(data, length); - - if (result.error) { - return node::THROW_ERR_ENCODING_INVALID_ENCODED_DATA( - env->isolate(), "The encoded data was not valid for encoding utf-8"); - } - } - - if (!ignore_bom && length >= 3) { - if (memcmp(data, "\xEF\xBB\xBF", 3) == 0) { - data += 3; - length -= 3; - } - } - - if (length == 0) return args.GetReturnValue().SetEmptyString(); - - Local error; - MaybeLocal maybe_ret = - StringBytes::Encode(env->isolate(), data, length, UTF8, &error); - Local ret; - - if (!maybe_ret.ToLocal(&ret)) { - CHECK(!error.IsEmpty()); - env->isolate()->ThrowException(error); - return; - } - - args.GetReturnValue().Set(ret); -} - // bytesCopied = copy(buffer, target[, targetStart][, sourceStart][, sourceEnd]) void Copy(const FunctionCallbackInfo &args) { Environment* env = Environment::GetCurrent(args); @@ -1173,72 +1119,6 @@ void Swap64(const FunctionCallbackInfo& args) { args.GetReturnValue().Set(args[0]); } - -// Encode a single string to a UTF-8 Uint8Array (not Buffer). -// Used in TextEncoder.prototype.encode. -static void EncodeUtf8String(const FunctionCallbackInfo& args) { - Environment* env = Environment::GetCurrent(args); - Isolate* isolate = env->isolate(); - CHECK_GE(args.Length(), 1); - CHECK(args[0]->IsString()); - - Local str = args[0].As(); - size_t length = str->Utf8Length(isolate); - - Local ab; - { - NoArrayBufferZeroFillScope no_zero_fill_scope(env->isolate_data()); - std::unique_ptr bs = - ArrayBuffer::NewBackingStore(isolate, length); - - CHECK(bs); - - str->WriteUtf8(isolate, - static_cast(bs->Data()), - -1, // We are certain that `data` is sufficiently large - nullptr, - String::NO_NULL_TERMINATION | String::REPLACE_INVALID_UTF8); - - ab = ArrayBuffer::New(isolate, std::move(bs)); - } - - auto array = Uint8Array::New(ab, 0, length); - args.GetReturnValue().Set(array); -} - - -static void EncodeInto(const FunctionCallbackInfo& args) { - Environment* env = Environment::GetCurrent(args); - Isolate* isolate = env->isolate(); - CHECK_GE(args.Length(), 3); - CHECK(args[0]->IsString()); - CHECK(args[1]->IsUint8Array()); - CHECK(args[2]->IsUint32Array()); - - Local source = args[0].As(); - - Local dest = args[1].As(); - Local buf = dest->Buffer(); - char* write_result = static_cast(buf->Data()) + dest->ByteOffset(); - size_t dest_length = dest->ByteLength(); - - // results = [ read, written ] - Local result_arr = args[2].As(); - uint32_t* results = reinterpret_cast( - static_cast(result_arr->Buffer()->Data()) + - result_arr->ByteOffset()); - - int nchars; - int written = source->WriteUtf8( - isolate, - write_result, - dest_length, - &nchars, - String::NO_NULL_TERMINATION | String::REPLACE_INVALID_UTF8); - results[0] = nchars; - results[1] = written; -} - static void IsUtf8(const FunctionCallbackInfo& args) { Environment* env = Environment::GetCurrent(args); CHECK_EQ(args.Length(), 1); @@ -1382,7 +1262,6 @@ void Initialize(Local target, SetMethod(context, target, "setBufferPrototype", SetBufferPrototype); SetMethodNoSideEffect(context, target, "createFromString", CreateFromString); - SetMethodNoSideEffect(context, target, "decodeUTF8", DecodeUTF8); SetFastMethodNoSideEffect(context, target, @@ -1404,9 +1283,6 @@ void Initialize(Local target, SetMethod(context, target, "swap32", Swap32); SetMethod(context, target, "swap64", Swap64); - SetMethod(context, target, "encodeInto", EncodeInto); - SetMethodNoSideEffect(context, target, "encodeUtf8String", EncodeUtf8String); - SetMethodNoSideEffect(context, target, "isUtf8", IsUtf8); SetMethodNoSideEffect(context, target, "isAscii", IsAscii); @@ -1447,7 +1323,6 @@ void Initialize(Local target, void RegisterExternalReferences(ExternalReferenceRegistry* registry) { registry->Register(SetBufferPrototype); registry->Register(CreateFromString); - registry->Register(DecodeUTF8); registry->Register(SlowByteLengthUtf8); registry->Register(fast_byte_length_utf8.GetTypeInfo()); @@ -1464,9 +1339,6 @@ void RegisterExternalReferences(ExternalReferenceRegistry* registry) { registry->Register(Swap32); registry->Register(Swap64); - registry->Register(EncodeInto); - registry->Register(EncodeUtf8String); - registry->Register(IsUtf8); registry->Register(IsAscii); diff --git a/src/node_external_reference.h b/src/node_external_reference.h index d55801a119e195..b2a90ba5194316 100644 --- a/src/node_external_reference.h +++ b/src/node_external_reference.h @@ -77,6 +77,7 @@ class ExternalReferenceRegistry { V(cares_wrap) \ V(contextify) \ V(credentials) \ + V(encoding_binding) \ V(env_var) \ V(errors) \ V(fs) \ diff --git a/src/node_snapshotable.cc b/src/node_snapshotable.cc index ee327867378952..fd8015782ca731 100644 --- a/src/node_snapshotable.cc +++ b/src/node_snapshotable.cc @@ -5,6 +5,7 @@ #include #include "base_object-inl.h" #include "debug_utils-inl.h" +#include "encoding_binding.h" #include "env-inl.h" #include "node_blob.h" #include "node_builtins.h" diff --git a/test/parallel/test-bootstrap-modules.js b/test/parallel/test-bootstrap-modules.js index 6efb806e205009..3a8cbfd0b69d28 100644 --- a/test/parallel/test-bootstrap-modules.js +++ b/test/parallel/test-bootstrap-modules.js @@ -10,6 +10,7 @@ const assert = require('assert'); const expectedModules = new Set([ 'Internal Binding builtins', + 'Internal Binding encoding_binding', 'Internal Binding errors', 'Internal Binding util', 'NativeModule internal/errors', From e5933c83257b2ed4b2e71998837fd2da2b548a16 Mon Sep 17 00:00:00 2001 From: Joyee Cheung Date: Sat, 11 Feb 2023 19:25:00 +0100 Subject: [PATCH 039/186] src: use AliasedUint32Array for encodeInto results Getting the buffer from a TypedArray created from the JS land incurs a copy. For encodeInto() results we can just use an AliasedArray and let the binding always own the store. PR-URL: https://github.com/nodejs/node/pull/46658 Reviewed-By: Darshan Sen --- lib/internal/encoding.js | 15 +++++++------- src/encoding_binding.cc | 44 ++++++++++++++++++++++++---------------- src/encoding_binding.h | 8 ++++++-- 3 files changed, 41 insertions(+), 26 deletions(-) diff --git a/lib/internal/encoding.js b/lib/internal/encoding.js index 2ee569c737d18c..a6759d4266ae84 100644 --- a/lib/internal/encoding.js +++ b/lib/internal/encoding.js @@ -13,7 +13,6 @@ const { StringPrototypeSlice, Symbol, SymbolToStringTag, - Uint32Array, Uint8Array, } = primordials; @@ -49,12 +48,12 @@ const { validateString, validateObject, } = require('internal/validators'); - +const binding = internalBinding('encoding_binding'); const { encodeInto, encodeUtf8String, decodeUTF8, -} = internalBinding('encoding_binding'); +} = binding; const { Buffer } = require('buffer'); @@ -318,8 +317,6 @@ function getEncodingFromLabel(label) { return encodings.get(trimAsciiWhitespace(label.toLowerCase())); } -const encodeIntoResults = new Uint32Array(2); - class TextEncoder { constructor() { this[kEncoder] = true; @@ -340,8 +337,12 @@ class TextEncoder { validateString(src, 'src'); if (!dest || !isUint8Array(dest)) throw new ERR_INVALID_ARG_TYPE('dest', 'Uint8Array', dest); - encodeInto(src, dest, encodeIntoResults); - return { read: encodeIntoResults[0], written: encodeIntoResults[1] }; + + encodeInto(src, dest); + // We need to read from the binding here since the buffer gets refreshed + // from the snapshot. + const { 0: read, 1: written } = binding.encodeIntoResults; + return { read, written }; } [inspect](depth, opts) { diff --git a/src/encoding_binding.cc b/src/encoding_binding.cc index 0f54990907549b..7674579f88701e 100644 --- a/src/encoding_binding.cc +++ b/src/encoding_binding.cc @@ -20,15 +20,30 @@ using v8::Local; using v8::MaybeLocal; using v8::Object; using v8::String; -using v8::Uint8Array; using v8::Uint32Array; +using v8::Uint8Array; using v8::Value; -BindingData::BindingData(Environment* env, Local object) - : SnapshotableObject(env, object, type_int) {} +void BindingData::MemoryInfo(MemoryTracker* tracker) const { + tracker->TrackField("encode_into_results_buffer", + encode_into_results_buffer_); +} + +BindingData::BindingData(Realm* realm, v8::Local object) + : SnapshotableObject(realm, object, type_int), + encode_into_results_buffer_(realm->isolate(), kEncodeIntoResultsLength) { + object + ->Set(realm->context(), + FIXED_ONE_BYTE_STRING(realm->isolate(), "encodeIntoResults"), + encode_into_results_buffer_.GetJSArray()) + .Check(); +} bool BindingData::PrepareForSerialization(Local context, v8::SnapshotCreator* creator) { + // We'll just re-initialize the buffers in the constructor since their + // contents can be thrown away once consumed in the previous call. + encode_into_results_buffer_.Release(); // Return true because we need to maintain the reference to the binding from // JS land. return true; @@ -47,19 +62,19 @@ void BindingData::Deserialize(Local context, InternalFieldInfoBase* info) { DCHECK_EQ(index, BaseObject::kEmbedderType); v8::HandleScope scope(context->GetIsolate()); - Environment* env = Environment::GetCurrent(context); + Realm* realm = Realm::GetCurrent(context); // Recreate the buffer in the constructor. - BindingData* binding = env->AddBindingData(context, holder); + BindingData* binding = realm->AddBindingData(context, holder); CHECK_NOT_NULL(binding); } void BindingData::EncodeInto(const FunctionCallbackInfo& args) { Environment* env = Environment::GetCurrent(args); Isolate* isolate = env->isolate(); - CHECK_GE(args.Length(), 3); + CHECK_GE(args.Length(), 2); CHECK(args[0]->IsString()); CHECK(args[1]->IsUint8Array()); - CHECK(args[2]->IsUint32Array()); + BindingData* binding_data = Realm::GetBindingData(args); Local source = args[0].As(); @@ -68,12 +83,6 @@ void BindingData::EncodeInto(const FunctionCallbackInfo& args) { char* write_result = static_cast(buf->Data()) + dest->ByteOffset(); size_t dest_length = dest->ByteLength(); - // results = [ read, written ] - Local result_arr = args[2].As(); - uint32_t* results = reinterpret_cast( - static_cast(result_arr->Buffer()->Data()) + - result_arr->ByteOffset()); - int nchars; int written = source->WriteUtf8( isolate, @@ -81,8 +90,9 @@ void BindingData::EncodeInto(const FunctionCallbackInfo& args) { dest_length, &nchars, String::NO_NULL_TERMINATION | String::REPLACE_INVALID_UTF8); - results[0] = nchars; - results[1] = written; + + binding_data->encode_into_results_buffer_[0] = nchars; + binding_data->encode_into_results_buffer_[1] = written; } // Encode a single string to a UTF-8 Uint8Array (not Buffer). @@ -175,9 +185,9 @@ void BindingData::Initialize(Local target, Local unused, Local context, void* priv) { - Environment* env = Environment::GetCurrent(context); + Realm* realm = Realm::GetCurrent(context); BindingData* const binding_data = - env->AddBindingData(context, target); + realm->AddBindingData(context, target); if (binding_data == nullptr) return; SetMethod(context, target, "encodeInto", EncodeInto); diff --git a/src/encoding_binding.h b/src/encoding_binding.h index 472b6bb4ad03ad..51e006982b9363 100644 --- a/src/encoding_binding.h +++ b/src/encoding_binding.h @@ -14,14 +14,14 @@ class ExternalReferenceRegistry; namespace encoding_binding { class BindingData : public SnapshotableObject { public: - BindingData(Environment* env, v8::Local obj); + BindingData(Realm* realm, v8::Local obj); using InternalFieldInfo = InternalFieldInfoBase; SERIALIZABLE_OBJECT_METHODS() SET_BINDING_ID(encoding_binding_data) - SET_NO_MEMORY_INFO() + void MemoryInfo(MemoryTracker* tracker) const override; SET_SELF_SIZE(BindingData) SET_MEMORY_INFO_NAME(BindingData) @@ -35,6 +35,10 @@ class BindingData : public SnapshotableObject { void* priv); static void RegisterTimerExternalReferences( ExternalReferenceRegistry* registry); + + private: + static constexpr size_t kEncodeIntoResultsLength = 2; + AliasedUint32Array encode_into_results_buffer_; }; } // namespace encoding_binding From f94ef7c2e87a44331688b7eb14200204c26a136d Mon Sep 17 00:00:00 2001 From: Yagiz Nizipli Date: Tue, 7 Mar 2023 20:27:06 -0500 Subject: [PATCH 040/186] src: remove unused `v8::Uint32Array` from encoding PR-URL: https://github.com/nodejs/node/pull/47003 Reviewed-By: Rafael Gonzaga Reviewed-By: Joyee Cheung Reviewed-By: Colin Ihrig Reviewed-By: Stephen Belanger Reviewed-By: Rich Trott Reviewed-By: Richard Lau --- src/encoding_binding.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/src/encoding_binding.cc b/src/encoding_binding.cc index 7674579f88701e..467c4c11efd2bf 100644 --- a/src/encoding_binding.cc +++ b/src/encoding_binding.cc @@ -20,7 +20,6 @@ using v8::Local; using v8::MaybeLocal; using v8::Object; using v8::String; -using v8::Uint32Array; using v8::Uint8Array; using v8::Value; From 0d3faaef90cfc9ed97044ac5858651403d12a86e Mon Sep 17 00:00:00 2001 From: Paolo Insogna Date: Wed, 8 Mar 2023 08:09:21 +0100 Subject: [PATCH 041/186] http: use listenerCount when adding noop event PR-URL: https://github.com/nodejs/node/pull/46769 Reviewed-By: Luigi Pinca Reviewed-By: Matteo Collina Reviewed-By: James M Snell --- lib/_http_server.js | 21 ++++++++- .../test-http-socket-error-listeners.js | 47 +++++++++++++++++++ 2 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 test/parallel/test-http-socket-error-listeners.js diff --git a/lib/_http_server.js b/lib/_http_server.js index 9f396b440ae6e2..838a1f13eac533 100644 --- a/lib/_http_server.js +++ b/lib/_http_server.js @@ -822,10 +822,29 @@ const requestHeaderFieldsTooLargeResponse = Buffer.from( `HTTP/1.1 431 ${STATUS_CODES[431]}\r\n` + 'Connection: close\r\n\r\n', 'ascii', ); + +function warnUnclosedSocket() { + if (warnUnclosedSocket.emitted) { + return; + } + + warnUnclosedSocket.emitted = true; + process.emitWarning( + 'An error event has already been emitted on the socket. ' + + 'Please use the destroy method on the socket while handling ' + + "a 'clientError' event.", + ); +} + function socketOnError(e) { // Ignore further errors this.removeListener('error', socketOnError); - this.on('error', noop); + + if (this.listenerCount('error', noop) === 0) { + this.on('error', noop); + } else { + warnUnclosedSocket(); + } if (!this.server.emit('clientError', e, this)) { // Caution must be taken to avoid corrupting the remote peer. diff --git a/test/parallel/test-http-socket-error-listeners.js b/test/parallel/test-http-socket-error-listeners.js new file mode 100644 index 00000000000000..f0d220a5d9337a --- /dev/null +++ b/test/parallel/test-http-socket-error-listeners.js @@ -0,0 +1,47 @@ +// Flags: --no-warnings + +'use strict'; + +const common = require('../common'); +const assert = require('assert'); +const http = require('http'); +const net = require('net'); + +// This test sends an invalid character to a HTTP server and purposely +// does not handle clientError (even if it sets an event handler). +// +// The idea is to let the server emit multiple errors on the socket, +// mostly due to parsing error, and make sure they don't result +// in leaking event listeners. + +{ + let i = 0; + let socket; + process.on('warning', common.mustCall()); + + const server = http.createServer(common.mustNotCall()); + + server.on('clientError', common.mustCallAtLeast((err) => { + assert.strictEqual(err.code, 'HPE_INVALID_METHOD'); + assert.strictEqual(err.rawPacket.toString(), '*'); + + if (i === 20) { + socket.end(); + } else { + socket.write('*'); + i++; + } + }, 1)); + + server.listen(0, () => { + socket = net.createConnection({ port: server.address().port }); + + socket.on('connect', () => { + socket.write('*'); + }); + + socket.on('close', () => { + server.close(); + }); + }); +} From c89c2598d105e04b3230db52b351512f16305fb0 Mon Sep 17 00:00:00 2001 From: Youngmin Yoo Date: Wed, 8 Mar 2023 16:34:55 +0900 Subject: [PATCH 042/186] doc: fix myUrl is not defined in url Fixes a typo in the variable name in the URL code example in doc. Renames `myUrl` to `myURL` for consistency and readability. PR-URL: https://github.com/nodejs/node/pull/46968 Reviewed-By: Antoine du Hamel Reviewed-By: Harshitha K P Reviewed-By: Yagiz Nizipli Reviewed-By: Akhil Marsonya Reviewed-By: Colin Ihrig Reviewed-By: Luigi Pinca Reviewed-By: Deokjin Kim --- doc/api/url.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/api/url.md b/doc/api/url.md index 186220d0dbb825..a3ea03ba5b4118 100644 --- a/doc/api/url.md +++ b/doc/api/url.md @@ -554,14 +554,14 @@ instance, the `URL` object will not percent encode the ASCII tilde (`~`) character, while `URLSearchParams` will always encode it: ```js -const myUrl = new URL('https://example.org/abc?foo=~bar'); +const myURL = new URL('https://example.org/abc?foo=~bar'); -console.log(myUrl.search); // prints ?foo=~bar +console.log(myURL.search); // prints ?foo=~bar // Modify the URL via searchParams... -myUrl.searchParams.sort(); +myURL.searchParams.sort(); -console.log(myUrl.search); // prints ?foo=%7Ebar +console.log(myURL.search); // prints ?foo=%7Ebar ``` #### `url.username` @@ -1271,7 +1271,7 @@ console.log(urlToHttpOptions(myURL)); const { urlToHttpOptions } = require('node:url'); const myURL = new URL('https://a:b@測試?abc#foo'); -console.log(urlToHttpOptions(myUrl)); +console.log(urlToHttpOptions(myURL)); /* { protocol: 'https:', From 8b02df9a025eed922ba9a9dd40ecbec06cea889a Mon Sep 17 00:00:00 2001 From: Thomas Hunter II Date: Wed, 8 Mar 2023 00:47:10 -0800 Subject: [PATCH 043/186] doc: fix history information for `node:diagnostics_channel` MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `node:diagnostics_channel` was backported to Node.js v14.17.0. PR-URL: https://github.com/nodejs/node/pull/46984 Reviewed-By: Stephen Belanger Reviewed-By: Yagiz Nizipli Reviewed-By: Mohammed Keyvanzadeh Reviewed-By: Luigi Pinca Reviewed-By: Gerhard Stöbich --- doc/api/diagnostics_channel.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/api/diagnostics_channel.md b/doc/api/diagnostics_channel.md index 09bbe4ddbed7af..fbb44368e33caa 100644 --- a/doc/api/diagnostics_channel.md +++ b/doc/api/diagnostics_channel.md @@ -1,7 +1,9 @@ # Diagnostics Channel A regular expression that configures the test runner to only execute tests @@ -1424,6 +1431,10 @@ whose name matches the provided pattern. See the documentation on added: - v19.6.0 - v18.15.0 +changes: + - version: REPLACEME + pr-url: https://github.com/nodejs/node/pull/46983 + description: The test runner is now stable. --> A test reporter to use when running tests. See the documentation on @@ -1435,6 +1446,10 @@ A test reporter to use when running tests. See the documentation on added: - v19.6.0 - v18.15.0 +changes: + - version: REPLACEME + pr-url: https://github.com/nodejs/node/pull/46983 + description: The test runner is now stable. --> The destination for the corresponding test reporter. See the documentation on @@ -1446,6 +1461,10 @@ The destination for the corresponding test reporter. See the documentation on added: - v18.0.0 - v16.17.0 +changes: + - version: REPLACEME + pr-url: https://github.com/nodejs/node/pull/46983 + description: The test runner is now stable. --> Configures the test runner to only execute top level tests that have the `only` diff --git a/doc/api/test.md b/doc/api/test.md index 7ac56b3f4c7f76..59b1647b12632a 100644 --- a/doc/api/test.md +++ b/doc/api/test.md @@ -6,9 +6,13 @@ added: - v18.0.0 - v16.17.0 +changes: + - version: REPLACEME + pr-url: https://github.com/nodejs/node/pull/46983 + description: The test runner is now stable. --> -> Stability: 1 - Experimental +> Stability: 2 - Stable @@ -377,6 +381,8 @@ internally. ## Collecting code coverage +> Stability: 1 - Experimental + When Node.js is started with the [`--experimental-test-coverage`][] command-line flag, code coverage is collected and statistics are reported once all tests have completed. If the [`NODE_V8_COVERAGE`][] environment variable is @@ -535,6 +541,11 @@ The following built-reporters are supported: When `stdout` is a [TTY][], the `spec` reporter is used by default. Otherwise, the `tap` reporter is used by default. +The exact output of these reporters is subject to change between versions of +Node.js, and should not be relied on programmatically. If programmatic access +to the test runner's output is required, use the events emitted by the +{TestsStream}. + ### Custom reporters [`--test-reporter`][] can be used to specify a path to custom reporter. From ef454c89bade5e7984dfa6a867a127d4f3ce4546 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Nie=C3=9Fen?= Date: Sat, 4 Mar 2023 21:24:53 +0000 Subject: [PATCH 049/186] src: remove use of SSL_OP_SINGLE_DH_USE This option does not have any effect in any supported OpenSSL version. Refs: https://github.com/nodejs/node/pull/46954 PR-URL: https://github.com/nodejs/node/pull/46955 Reviewed-By: Ben Noordhuis Reviewed-By: Filip Skokan Reviewed-By: Colin Ihrig --- src/crypto/crypto_context.cc | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/crypto/crypto_context.cc b/src/crypto/crypto_context.cc index a232e084ea34e5..50036c6466131b 100644 --- a/src/crypto/crypto_context.cc +++ b/src/crypto/crypto_context.cc @@ -878,8 +878,6 @@ void SecureContext::SetDHParam(const FunctionCallbackInfo& args) { env->isolate(), "DH parameter is less than 2048 bits")); } - SSL_CTX_set_options(sc->ctx_.get(), SSL_OP_SINGLE_DH_USE); - if (!SSL_CTX_set_tmp_dh(sc->ctx_.get(), dh.get())) { return THROW_ERR_CRYPTO_OPERATION_FAILED( env, "Error setting temp DH parameter"); From 539dcee3bfc4c7e7efeaa3e9f0f1e02f91a2b977 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Nie=C3=9Fen?= Date: Sat, 4 Mar 2023 22:12:48 +0000 Subject: [PATCH 050/186] src: remove TLSEXT_TYPE_alpn guard TLSEXT_TYPE_application_layer_protocol_negotiation is always defined in all supported OpenSSL versions. We also use this macro elsewhere without guards, so if it did not exist, compilation would have already failed. Besides that, it makes little sense to provide a TLS 1.3 implementation that does not support ALPN. PR-URL: https://github.com/nodejs/node/pull/46956 Reviewed-By: Ben Noordhuis Reviewed-By: Filip Skokan Reviewed-By: Anna Henningsen Reviewed-By: Luigi Pinca --- src/node_constants.cc | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/node_constants.cc b/src/node_constants.cc index 3269e3003acd4d..34496673a97072 100644 --- a/src/node_constants.cc +++ b/src/node_constants.cc @@ -1032,10 +1032,8 @@ void DefineCryptoConstants(Local target) { NODE_DEFINE_CONSTANT(target, DH_NOT_SUITABLE_GENERATOR); #endif -#ifdef TLSEXT_TYPE_application_layer_protocol_negotiation #define ALPN_ENABLED 1 NODE_DEFINE_CONSTANT(target, ALPN_ENABLED); -#endif #ifdef RSA_PKCS1_PADDING NODE_DEFINE_CONSTANT(target, RSA_PKCS1_PADDING); From bcebb914f59e1713d9044d58fee49622a139a67b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Nie=C3=9Fen?= Date: Sun, 5 Mar 2023 18:36:55 +0000 Subject: [PATCH 051/186] test: simplify test-tls-ecdh-multiple Avoid the process 'exit' event handler and use execFile instead of manual stream operations. Refs: https://github.com/nodejs/node/pull/46751 PR-URL: https://github.com/nodejs/node/pull/46963 Reviewed-By: Luigi Pinca Reviewed-By: Yagiz Nizipli Reviewed-By: Mohammed Keyvanzadeh --- test/parallel/test-tls-ecdh-multiple.js | 40 ++++++++----------------- 1 file changed, 12 insertions(+), 28 deletions(-) diff --git a/test/parallel/test-tls-ecdh-multiple.js b/test/parallel/test-tls-ecdh-multiple.js index 3cf02701f4dc19..5bf119f48bacad 100644 --- a/test/parallel/test-tls-ecdh-multiple.js +++ b/test/parallel/test-tls-ecdh-multiple.js @@ -12,7 +12,7 @@ if (!common.opensslCli) const assert = require('assert'); const tls = require('tls'); -const spawn = require('child_process').spawn; +const { execFile } = require('child_process'); const fixtures = require('../common/fixtures'); function loadPEM(n) { @@ -29,44 +29,28 @@ const options = { const reply = 'I AM THE WALRUS'; // Something recognizable -const server = tls.createServer(options, function(conn) { +const server = tls.createServer(options, (conn) => { conn.end(reply); -}); - -let gotReply = false; - -server.listen(0, function() { +}).listen(0, common.mustCall(() => { const args = ['s_client', '-cipher', `${options.ciphers}`, - '-connect', `127.0.0.1:${this.address().port}`]; - - const client = spawn(common.opensslCli, args); - - client.stdout.on('data', function(data) { - const message = data.toString(); - if (message.includes(reply)) - gotReply = true; - }); + '-connect', `127.0.0.1:${server.address().port}`]; - client.on('exit', function(code) { - assert.strictEqual(code, 0); + execFile(common.opensslCli, args, common.mustSucceed((stdout) => { + assert(stdout.includes(reply)); server.close(); - }); - - client.on('error', assert.ifError); -}); + })); +})); -process.on('exit', function() { - assert.ok(gotReply); - - // Some of unsupported curves +{ + // Some unsupported curves. const unsupportedCurves = [ 'wap-wsg-idm-ecid-wtls1', 'c2pnb163v1', 'prime192v3', ]; - // Brainpool is not supported in FIPS mode + // Brainpool is not supported in FIPS mode. if (common.hasFipsCrypto) unsupportedCurves.push('brainpoolP256r1'); @@ -74,4 +58,4 @@ process.on('exit', function() { assert.throws(() => tls.createServer({ ecdhCurve }), /Error: Failed to set ECDH curve/); }); -}); +} From 57c4070c8690da90b2fb45262168f42f98d36608 Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Fri, 10 Mar 2023 11:51:50 +0100 Subject: [PATCH 052/186] test,crypto: update WebCryptoAPI WPT PR-URL: https://github.com/nodejs/node/pull/47010 Reviewed-By: Antoine du Hamel Reviewed-By: Yagiz Nizipli --- test/fixtures/wpt/README.md | 2 +- .../encrypt_decrypt/aes_gcm.https.any.js | 3 +- .../aes_gcm_256_iv.https.any.js | 7 + .../aes_gcm_256_iv_fixtures.js | 210 ++++++++++++++++++ .../encrypt_decrypt/aes_gcm_96_iv_fixtures.js | 209 +++++++++++++++++ .../encrypt_decrypt/aes_gcm_vectors.js | 210 +----------------- .../WebCryptoAPI/sign_verify/ecdsa_vectors.js | 88 ++++---- .../wrapKey_unwrapKey.https.any.js | 9 +- test/fixtures/wpt/versions.json | 2 +- 9 files changed, 492 insertions(+), 248 deletions(-) create mode 100644 test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/aes_gcm_256_iv.https.any.js create mode 100644 test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/aes_gcm_256_iv_fixtures.js create mode 100644 test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/aes_gcm_96_iv_fixtures.js diff --git a/test/fixtures/wpt/README.md b/test/fixtures/wpt/README.md index 1c365ca20ff1b8..8919af5a7c484c 100644 --- a/test/fixtures/wpt/README.md +++ b/test/fixtures/wpt/README.md @@ -31,7 +31,7 @@ Last update: - user-timing: https://github.com/web-platform-tests/wpt/tree/df24fb604e/user-timing - wasm/jsapi: https://github.com/web-platform-tests/wpt/tree/d8dbe6990b/wasm/jsapi - wasm/webapi: https://github.com/web-platform-tests/wpt/tree/fd1b23eeaa/wasm/webapi -- WebCryptoAPI: https://github.com/web-platform-tests/wpt/tree/238d9d9bac/WebCryptoAPI +- WebCryptoAPI: https://github.com/web-platform-tests/wpt/tree/ee30029d47/WebCryptoAPI - webidl/ecmascript-binding/es-exceptions: https://github.com/web-platform-tests/wpt/tree/a370aad338/webidl/ecmascript-binding/es-exceptions - webmessaging/broadcastchannel: https://github.com/web-platform-tests/wpt/tree/e97fac4791/webmessaging/broadcastchannel diff --git a/test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/aes_gcm.https.any.js b/test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/aes_gcm.https.any.js index 8f1103d8f4a483..6e3a6efb12d7b8 100644 --- a/test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/aes_gcm.https.any.js +++ b/test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/aes_gcm.https.any.js @@ -1,4 +1,5 @@ -// META: title=WebCryptoAPI: encrypt() Using AES-GCM +// META: title=WebCryptoAPI: encrypt() Using AES-GCM w/ 96-bit iv +// META: script=aes_gcm_96_iv_fixtures.js // META: script=aes_gcm_vectors.js // META: script=aes.js // META: timeout=long diff --git a/test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/aes_gcm_256_iv.https.any.js b/test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/aes_gcm_256_iv.https.any.js new file mode 100644 index 00000000000000..92900fb13ae2ec --- /dev/null +++ b/test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/aes_gcm_256_iv.https.any.js @@ -0,0 +1,7 @@ +// META: title=WebCryptoAPI: encrypt() Using AES-GCM w/ 256-bit iv +// META: script=aes_gcm_256_iv_fixtures.js +// META: script=aes_gcm_vectors.js +// META: script=aes.js +// META: timeout=long + +run_test(); diff --git a/test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/aes_gcm_256_iv_fixtures.js b/test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/aes_gcm_256_iv_fixtures.js new file mode 100644 index 00000000000000..9cdbbbb79075c0 --- /dev/null +++ b/test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/aes_gcm_256_iv_fixtures.js @@ -0,0 +1,210 @@ +function getFixtures() { + // Before we can really start, we need to fill a bunch of buffers with data + var plaintext = new Uint8Array([ + 84, 104, 105, 115, 32, 115, 112, 101, 99, 105, 102, 105, 99, 97, 116, 105, + 111, 110, 32, 100, 101, 115, 99, 114, 105, 98, 101, 115, 32, 97, 32, 74, 97, + 118, 97, 83, 99, 114, 105, 112, 116, 32, 65, 80, 73, 32, 102, 111, 114, 32, + 112, 101, 114, 102, 111, 114, 109, 105, 110, 103, 32, 98, 97, 115, 105, 99, + 32, 99, 114, 121, 112, 116, 111, 103, 114, 97, 112, 104, 105, 99, 32, 111, + 112, 101, 114, 97, 116, 105, 111, 110, 115, 32, 105, 110, 32, 119, 101, 98, + 32, 97, 112, 112, 108, 105, 99, 97, 116, 105, 111, 110, 115, 44, 32, 115, + 117, 99, 104, 32, 97, 115, 32, 104, 97, 115, 104, 105, 110, 103, 44, 32, + 115, 105, 103, 110, 97, 116, 117, 114, 101, 32, 103, 101, 110, 101, 114, 97, + 116, 105, 111, 110, 32, 97, 110, 100, 32, 118, 101, 114, 105, 102, 105, 99, + 97, 116, 105, 111, 110, 44, 32, 97, 110, 100, 32, 101, 110, 99, 114, 121, + 112, 116, 105, 111, 110, 32, 97, 110, 100, 32, 100, 101, 99, 114, 121, 112, + 116, 105, 111, 110, 46, 32, 65, 100, 100, 105, 116, 105, 111, 110, 97, 108, + 108, 121, 44, 32, 105, 116, 32, 100, 101, 115, 99, 114, 105, 98, 101, 115, + 32, 97, 110, 32, 65, 80, 73, 32, 102, 111, 114, 32, 97, 112, 112, 108, 105, + 99, 97, 116, 105, 111, 110, 115, 32, 116, 111, 32, 103, 101, 110, 101, 114, + 97, 116, 101, 32, 97, 110, 100, 47, 111, 114, 32, 109, 97, 110, 97, 103, + 101, 32, 116, 104, 101, 32, 107, 101, 121, 105, 110, 103, 32, 109, 97, 116, + 101, 114, 105, 97, 108, 32, 110, 101, 99, 101, 115, 115, 97, 114, 121, 32, + 116, 111, 32, 112, 101, 114, 102, 111, 114, 109, 32, 116, 104, 101, 115, + 101, 32, 111, 112, 101, 114, 97, 116, 105, 111, 110, 115, 46, 32, 85, 115, + 101, 115, 32, 102, 111, 114, 32, 116, 104, 105, 115, 32, 65, 80, 73, 32, + 114, 97, 110, 103, 101, 32, 102, 114, 111, 109, 32, 117, 115, 101, 114, 32, + 111, 114, 32, 115, 101, 114, 118, 105, 99, 101, 32, 97, 117, 116, 104, 101, + 110, 116, 105, 99, 97, 116, 105, 111, 110, 44, 32, 100, 111, 99, 117, 109, + 101, 110, 116, 32, 111, 114, 32, 99, 111, 100, 101, 32, 115, 105, 103, 110, + 105, 110, 103, 44, 32, 97, 110, 100, 32, 116, 104, 101, 32, 99, 111, 110, + 102, 105, 100, 101, 110, 116, 105, 97, 108, 105, 116, 121, 32, 97, 110, 100, + 32, 105, 110, 116, 101, 103, 114, 105, 116, 121, 32, 111, 102, 32, 99, 111, + 109, 109, 117, 110, 105, 99, 97, 116, 105, 111, 110, 115, 46, + ]); + + // We want some random key bytes of various sizes. + // These were randomly generated from a script. + var keyBytes = { + 128: new Uint8Array([ + 222, 192, 212, 252, 191, 60, 71, 65, 200, 146, 218, 189, 28, 212, 192, 78, + ]), + 192: new Uint8Array([ + 208, 238, 131, 65, 63, 68, 196, 63, 186, 208, 61, 207, 166, 18, 99, 152, + 29, 109, 221, 95, 240, 30, 28, 246, + ]), + 256: new Uint8Array([ + 103, 105, 56, 35, 251, 29, 88, 7, 63, 145, 236, 233, 204, 58, 249, 16, + 229, 83, 38, 22, 164, 210, 123, 19, 235, 123, 116, 216, 0, 11, 191, 48, + ]), + }; + + // AES-GCM needs an IV of no more than 2^64 - 1 bytes. Arbitrary 32 bytes is okay then. + var iv = new Uint8Array([ + 58, 146, 115, 42, 166, 234, 57, 191, 57, 134, 224, 199, 63, 169, 32, 0, 32, + 33, 117, 56, 94, 248, 173, 234, 194, 200, 115, 53, 235, 146, 141, 212, + ]); + + // Authenticated encryption via AES-GCM requires additional data that + // will be checked. We use the ASCII encoded Editorial Note + // following the Abstract of the Web Cryptography API recommendation. + var additionalData = new Uint8Array([ + 84, 104, 101, 114, 101, 32, 97, 114, 101, 32, 55, 32, 102, 117, 114, 116, + 104, 101, 114, 32, 101, 100, 105, 116, 111, 114, 105, 97, 108, 32, 110, 111, + 116, 101, 115, 32, 105, 110, 32, 116, 104, 101, 32, 100, 111, 99, 117, 109, + 101, 110, 116, 46, + ]); + + // The length of the tag defaults to 16 bytes (128 bit). + var tag = { + 128: new Uint8Array([ + 194, 226, 198, 253, 239, 28, 197, 240, 123, 216, 176, 151, 239, 200, 184, + 183, + ]), + 192: new Uint8Array([ + 183, 57, 32, 144, 164, 76, 121, 77, 58, 86, 62, 132, 53, 130, 96, 225, + ]), + 256: new Uint8Array([ + 188, 239, 241, 48, 159, 21, 213, 0, 241, 42, 85, 76, 194, 28, 49, 60, + ]), + }; + + var tag_with_empty_ad = { + 128: new Uint8Array([ + 222, 51, 11, 23, 36, 222, 250, 248, 27, 98, 30, 81, 150, 35, 220, 198, + ]), + 192: new Uint8Array([ + 243, 11, 130, 112, 169, 239, 114, 238, 185, 219, 93, 1, 95, 108, 184, 183, + ]), + 256: new Uint8Array([ + 244, 186, 86, 203, 154, 37, 191, 248, 246, 57, 139, 130, 224, 47, 217, + 238, + ]), + }; + + // Results. These were created using the Python cryptography module. + + // AES-GCM produces ciphertext and a tag. + var ciphertext = { + 128: new Uint8Array([ + 180, 241, 40, 183, 105, 52, 147, 238, 224, 175, 175, 236, 168, 244, 241, + 121, 9, 202, 225, 237, 56, 216, 253, 254, 186, 102, 111, 207, 228, 190, + 130, 177, 159, 246, 6, 53, 249, 113, 228, 254, 81, 126, 253, 191, 100, 43, + 251, 147, 107, 91, 166, 231, 201, 241, 180, 214, 112, 47, 123, 164, 186, + 134, 54, 65, 22, 181, 201, 82, 236, 59, 52, 139, 172, 39, 41, 89, 123, 62, + 102, 167, 82, 150, 250, 93, 96, 169, 135, 89, 245, 255, 164, 192, 169, + 159, 25, 16, 139, 145, 76, 4, 144, 131, 148, 197, 204, 46, 23, 110, 193, + 228, 127, 120, 242, 24, 54, 240, 181, 162, 98, 244, 249, 68, 134, 122, + 126, 151, 38, 108, 116, 68, 150, 109, 38, 194, 21, 159, 140, 205, 183, 35, + 97, 151, 186, 120, 145, 22, 235, 22, 210, 223, 187, 143, 162, 183, 93, + 196, 104, 51, 96, 53, 234, 250, 184, 76, 237, 157, 37, 203, 226, 87, 222, + 75, 240, 95, 218, 222, 64, 81, 165, 75, 201, 216, 190, 13, 116, 217, 69, + 66, 47, 161, 68, 247, 74, 253, 157, 181, 162, 121, 53, 32, 91, 124, 230, + 105, 224, 17, 187, 50, 61, 77, 103, 79, 71, 57, 163, 116, 234, 149, 27, + 105, 24, 31, 159, 3, 128, 130, 42, 94, 125, 200, 142, 251, 148, 201, 17, + 149, 232, 84, 50, 17, 18, 203, 186, 226, 164, 227, 202, 76, 65, 16, 163, + 224, 132, 52, 31, 101, 129, 72, 171, 159, 42, 177, 253, 98, 86, 201, 95, + 117, 62, 12, 205, 78, 36, 126, 196, 121, 89, 185, 37, 161, 66, 181, 117, + 186, 71, 124, 132, 110, 120, 27, 246, 163, 18, 13, 90, 200, 127, 82, 209, + 241, 170, 73, 247, 137, 96, 244, 254, 251, 119, 71, 156, 27, 107, 53, 33, + 45, 22, 0, 144, 48, 32, 11, 116, 21, 125, 246, 217, 171, 158, 224, 142, + 234, 141, 242, 168, 89, 154, 66, 227, 161, 182, 96, 1, 88, 78, 12, 7, 239, + 30, 206, 31, 89, 111, 107, 42, 37, 241, 148, 232, 1, 8, 251, 117, 146, + 183, 9, 48, 39, 94, 59, 70, 230, 26, 165, 97, 156, 140, 141, 31, 62, 10, + 206, 55, 48, 207, 0, 197, 202, 197, 108, 133, 175, 80, 4, 16, 154, 223, + 255, 4, 196, 188, 178, 240, 29, 13, 120, 5, 225, 202, 3, 35, 225, 158, 92, + 152, 73, 205, 107, 157, 224, 245, 99, 194, 171, 156, 245, 247, 183, 165, + 40, 62, 200, 110, 29, 151, 206, 100, 175, 88, 36, 242, 90, 4, 82, 73, 250, + 140, 245, 217, 9, 153, 35, 242, 206, 78, 197, 121, 115, 15, 80, 128, 101, + 191, 240, 91, 151, 249, 62, 62, 244, 18, 3, 17, 135, 222, 210, 93, 149, + 123, + ]), + + 192: new Uint8Array([ + 126, 160, 166, 112, 227, 212, 106, 186, 175, 70, 24, 28, 86, 149, 31, 154, + 156, 190, 244, 132, 44, 61, 149, 242, 105, 67, 17, 136, 7, 146, 153, 170, + 200, 214, 142, 205, 170, 225, 85, 44, 241, 159, 255, 234, 10, 13, 37, 48, + 255, 21, 141, 176, 60, 117, 73, 130, 247, 204, 144, 102, 167, 89, 203, + 235, 229, 129, 122, 253, 124, 179, 115, 118, 163, 157, 67, 141, 122, 146, + 209, 11, 112, 5, 230, 117, 123, 184, 243, 99, 83, 10, 31, 166, 96, 1, 121, + 44, 10, 241, 24, 43, 184, 187, 25, 239, 246, 176, 108, 230, 127, 25, 42, + 67, 202, 140, 179, 104, 159, 75, 103, 43, 248, 98, 166, 179, 67, 0, 163, + 227, 84, 40, 129, 227, 198, 205, 7, 156, 16, 185, 24, 166, 59, 218, 197, + 114, 74, 34, 126, 22, 226, 226, 85, 212, 69, 83, 163, 185, 68, 109, 182, + 54, 209, 237, 96, 184, 32, 53, 127, 175, 13, 146, 141, 115, 164, 184, 98, + 245, 174, 223, 46, 32, 167, 39, 103, 19, 210, 80, 131, 254, 103, 249, 247, + 29, 120, 31, 105, 241, 103, 169, 249, 93, 153, 74, 56, 53, 239, 157, 132, + 236, 169, 246, 242, 24, 113, 97, 128, 238, 152, 148, 31, 84, 8, 52, 105, + 198, 116, 103, 132, 48, 199, 23, 90, 24, 29, 63, 41, 117, 191, 57, 31, + 209, 128, 60, 119, 175, 84, 141, 177, 165, 169, 195, 35, 163, 105, 146, + 157, 209, 93, 149, 105, 160, 93, 231, 78, 201, 92, 235, 200, 89, 37, 50, + 181, 30, 213, 242, 59, 156, 219, 19, 158, 17, 224, 81, 108, 52, 87, 248, + 101, 23, 39, 107, 67, 151, 103, 230, 126, 202, 184, 118, 226, 18, 29, 93, + 37, 208, 40, 82, 113, 35, 157, 145, 152, 50, 253, 140, 47, 141, 192, 1, + 148, 114, 40, 10, 112, 79, 227, 16, 105, 247, 31, 49, 102, 195, 75, 183, + 172, 254, 188, 42, 89, 77, 38, 104, 1, 180, 106, 61, 71, 70, 35, 160, 103, + 101, 244, 26, 226, 37, 159, 155, 4, 107, 222, 219, 136, 37, 24, 246, 44, + 23, 44, 248, 132, 108, 59, 179, 99, 145, 132, 82, 53, 203, 111, 150, 55, + 123, 51, 214, 165, 108, 124, 179, 131, 174, 139, 224, 114, 96, 218, 181, + 243, 128, 198, 98, 115, 92, 95, 165, 23, 229, 108, 146, 14, 244, 162, 37, + 85, 201, 33, 44, 92, 106, 112, 185, 16, 189, 42, 114, 109, 59, 124, 131, + 16, 211, 31, 97, 29, 135, 61, 150, 75, 250, 207, 129, 38, 205, 187, 186, + 55, 207, 232, 24, 48, 232, 49, 226, 16, 12, 27, 70, 31, 124, 128, 218, + 100, 91, 200, 184, 78, 252, 100, 235, 62, 43, 69, 214, 163, 65, 14, 44, + 180, + ]), + + 256: new Uint8Array([ + 8, 97, 235, 113, 70, 32, 135, 131, 210, 209, 124, 160, 255, 182, 9, 29, + 125, 193, 27, 240, 129, 46, 2, 137, 169, 142, 61, 7, 145, 54, 170, 207, + 159, 111, 39, 95, 87, 63, 162, 27, 6, 18, 219, 215, 116, 34, 90, 57, 114, + 244, 102, 145, 67, 6, 51, 152, 247, 165, 242, 116, 100, 219, 177, 72, 177, + 17, 110, 67, 93, 219, 100, 217, 20, 207, 89, 154, 45, 37, 105, 83, 67, + 162, 140, 235, 129, 40, 177, 202, 174, 54, 148, 55, 156, 193, 232, 249, + 134, 163, 195, 51, 114, 116, 65, 38, 73, 99, 96, 249, 224, 69, 17, 119, + 186, 188, 181, 43, 78, 156, 76, 138, 226, 63, 5, 248, 9, 94, 26, 1, 2, + 235, 39, 174, 74, 47, 183, 22, 40, 47, 47, 13, 100, 119, 12, 67, 178, 184, + 56, 167, 238, 143, 13, 44, 208, 185, 151, 108, 6, 17, 52, 122, 182, 210, + 207, 42, 219, 37, 74, 94, 126, 36, 249, 37, 32, 4, 218, 44, 238, 69, 56, + 219, 31, 77, 173, 46, 187, 103, 36, 112, 213, 252, 40, 87, 164, 240, 163, + 159, 32, 129, 125, 178, 108, 47, 28, 31, 36, 42, 115, 36, 14, 145, 195, + 156, 191, 46, 163, 249, 181, 31, 90, 73, 30, 72, 57, 223, 63, 60, 79, 140, + 14, 117, 31, 145, 222, 156, 121, 237, 32, 145, 143, 96, 12, 254, 35, 21, + 21, 59, 168, 171, 154, 217, 0, 59, 202, 175, 103, 214, 192, 175, 26, 18, + 43, 54, 176, 222, 75, 22, 7, 122, 253, 224, 145, 61, 42, 208, 73, 237, 84, + 141, 209, 213, 228, 46, 244, 59, 9, 68, 6, 35, 88, 189, 10, 62, 9, 85, 28, + 44, 82, 19, 153, 160, 178, 240, 56, 160, 244, 201, 173, 77, 61, 20, 227, + 30, 180, 167, 16, 105, 185, 193, 95, 207, 41, 23, 134, 78, 198, 182, 93, + 24, 89, 247, 231, 75, 233, 194, 137, 242, 114, 194, 190, 130, 138, 238, + 94, 137, 193, 194, 115, 137, 190, 207, 169, 83, 155, 14, 210, 160, 129, + 195, 161, 234, 221, 255, 114, 67, 98, 12, 93, 41, 65, 183, 244, 103, 247, + 101, 82, 246, 125, 87, 125, 78, 21, 186, 102, 205, 20, 40, 32, 201, 174, + 15, 52, 240, 217, 180, 162, 108, 6, 211, 41, 18, 135, 232, 184, 18, 188, + 169, 157, 190, 76, 166, 75, 176, 127, 39, 251, 22, 203, 153, 80, 49, 241, + 124, 137, 151, 123, 204, 43, 159, 190, 177, 196, 18, 117, 169, 46, 152, + 251, 45, 25, 164, 27, 145, 214, 228, 55, 15, 2, 131, 216, 80, 255, 204, + 175, 100, 59, 145, 15, 103, 40, 33, 45, 255, 200, 254, 172, 138, 20, 58, + 87, 182, 192, 148, 219, 41, 88, 230, 229, 70, 249, + ]), + }; + + return { + plaintext, + keyBytes, + iv, + additionalData, + tag, + tag_with_empty_ad, + ciphertext, + }; +} diff --git a/test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/aes_gcm_96_iv_fixtures.js b/test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/aes_gcm_96_iv_fixtures.js new file mode 100644 index 00000000000000..bb00e2d7dd92cb --- /dev/null +++ b/test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/aes_gcm_96_iv_fixtures.js @@ -0,0 +1,209 @@ +function getFixtures() { + // Before we can really start, we need to fill a bunch of buffers with data + var plaintext = new Uint8Array([ + 84, 104, 105, 115, 32, 115, 112, 101, 99, 105, 102, 105, 99, 97, 116, 105, + 111, 110, 32, 100, 101, 115, 99, 114, 105, 98, 101, 115, 32, 97, 32, 74, 97, + 118, 97, 83, 99, 114, 105, 112, 116, 32, 65, 80, 73, 32, 102, 111, 114, 32, + 112, 101, 114, 102, 111, 114, 109, 105, 110, 103, 32, 98, 97, 115, 105, 99, + 32, 99, 114, 121, 112, 116, 111, 103, 114, 97, 112, 104, 105, 99, 32, 111, + 112, 101, 114, 97, 116, 105, 111, 110, 115, 32, 105, 110, 32, 119, 101, 98, + 32, 97, 112, 112, 108, 105, 99, 97, 116, 105, 111, 110, 115, 44, 32, 115, + 117, 99, 104, 32, 97, 115, 32, 104, 97, 115, 104, 105, 110, 103, 44, 32, + 115, 105, 103, 110, 97, 116, 117, 114, 101, 32, 103, 101, 110, 101, 114, 97, + 116, 105, 111, 110, 32, 97, 110, 100, 32, 118, 101, 114, 105, 102, 105, 99, + 97, 116, 105, 111, 110, 44, 32, 97, 110, 100, 32, 101, 110, 99, 114, 121, + 112, 116, 105, 111, 110, 32, 97, 110, 100, 32, 100, 101, 99, 114, 121, 112, + 116, 105, 111, 110, 46, 32, 65, 100, 100, 105, 116, 105, 111, 110, 97, 108, + 108, 121, 44, 32, 105, 116, 32, 100, 101, 115, 99, 114, 105, 98, 101, 115, + 32, 97, 110, 32, 65, 80, 73, 32, 102, 111, 114, 32, 97, 112, 112, 108, 105, + 99, 97, 116, 105, 111, 110, 115, 32, 116, 111, 32, 103, 101, 110, 101, 114, + 97, 116, 101, 32, 97, 110, 100, 47, 111, 114, 32, 109, 97, 110, 97, 103, + 101, 32, 116, 104, 101, 32, 107, 101, 121, 105, 110, 103, 32, 109, 97, 116, + 101, 114, 105, 97, 108, 32, 110, 101, 99, 101, 115, 115, 97, 114, 121, 32, + 116, 111, 32, 112, 101, 114, 102, 111, 114, 109, 32, 116, 104, 101, 115, + 101, 32, 111, 112, 101, 114, 97, 116, 105, 111, 110, 115, 46, 32, 85, 115, + 101, 115, 32, 102, 111, 114, 32, 116, 104, 105, 115, 32, 65, 80, 73, 32, + 114, 97, 110, 103, 101, 32, 102, 114, 111, 109, 32, 117, 115, 101, 114, 32, + 111, 114, 32, 115, 101, 114, 118, 105, 99, 101, 32, 97, 117, 116, 104, 101, + 110, 116, 105, 99, 97, 116, 105, 111, 110, 44, 32, 100, 111, 99, 117, 109, + 101, 110, 116, 32, 111, 114, 32, 99, 111, 100, 101, 32, 115, 105, 103, 110, + 105, 110, 103, 44, 32, 97, 110, 100, 32, 116, 104, 101, 32, 99, 111, 110, + 102, 105, 100, 101, 110, 116, 105, 97, 108, 105, 116, 121, 32, 97, 110, 100, + 32, 105, 110, 116, 101, 103, 114, 105, 116, 121, 32, 111, 102, 32, 99, 111, + 109, 109, 117, 110, 105, 99, 97, 116, 105, 111, 110, 115, 46, + ]); + + // We want some random key bytes of various sizes. + // These were randomly generated from a script. + var keyBytes = { + 128: new Uint8Array([ + 222, 192, 212, 252, 191, 60, 71, 65, 200, 146, 218, 189, 28, 212, 192, 78, + ]), + 192: new Uint8Array([ + 208, 238, 131, 65, 63, 68, 196, 63, 186, 208, 61, 207, 166, 18, 99, 152, + 29, 109, 221, 95, 240, 30, 28, 246, + ]), + 256: new Uint8Array([ + 103, 105, 56, 35, 251, 29, 88, 7, 63, 145, 236, 233, 204, 58, 249, 16, + 229, 83, 38, 22, 164, 210, 123, 19, 235, 123, 116, 216, 0, 11, 191, 48, + ]), + }; + + // AES-GCM specification recommends that the IV should be 96 bits long. + var iv = new Uint8Array([ + 58, 146, 115, 42, 166, 234, 57, 191, 57, 134, 224, 199, + ]); + + // Authenticated encryption via AES-GCM requires additional data that + // will be checked. We use the ASCII encoded Editorial Note + // following the Abstract of the Web Cryptography API recommendation. + var additionalData = new Uint8Array([ + 84, 104, 101, 114, 101, 32, 97, 114, 101, 32, 55, 32, 102, 117, 114, 116, + 104, 101, 114, 32, 101, 100, 105, 116, 111, 114, 105, 97, 108, 32, 110, 111, + 116, 101, 115, 32, 105, 110, 32, 116, 104, 101, 32, 100, 111, 99, 117, 109, + 101, 110, 116, 46, + ]); + + // The length of the tag defaults to 16 bytes (128 bit). + var tag = { + 128: new Uint8Array([ + 180, 165, 14, 180, 121, 113, 220, 168, 254, 117, 18, 66, 110, 98, 146, + 240, + ]), + 192: new Uint8Array([ + 43, 102, 63, 121, 1, 120, 252, 2, 95, 149, 99, 207, 161, 10, 139, 159, + ]), + 256: new Uint8Array([ + 53, 0, 70, 11, 217, 64, 250, 241, 175, 160, 37, 78, 92, 160, 107, 38, + ]), + }; + + var tag_with_empty_ad = { + 128: new Uint8Array([ + 168, 116, 195, 94, 178, 179, 227, 160, 158, 207, 188, 132, 23, 137, 246, + 129, + ]), + 192: new Uint8Array([ + 111, 84, 157, 153, 12, 219, 247, 161, 220, 24, 0, 74, 203, 228, 83, 201, + ]), + 256: new Uint8Array([ + 125, 85, 225, 240, 220, 112, 144, 9, 168, 179, 251, 128, 126, 147, 131, + 244, + ]), + }; + + // Results. These were created using OpenSSL. + + // AES-GCM produces ciphertext and a tag. + var ciphertext = { + 128: new Uint8Array([ + 46, 244, 139, 198, 120, 180, 9, 39, 83, 58, 203, 107, 69, 71, 8, 165, 132, + 200, 94, 31, 228, 120, 170, 81, 241, 29, 38, 175, 99, 215, 241, 157, 144, + 97, 35, 42, 36, 231, 2, 94, 214, 140, 67, 48, 189, 242, 21, 208, 110, 179, + 30, 90, 181, 105, 242, 17, 244, 42, 42, 36, 125, 228, 82, 250, 87, 199, + 95, 168, 210, 57, 174, 20, 220, 188, 107, 65, 242, 43, 217, 122, 145, 160, + 100, 139, 54, 135, 175, 139, 115, 89, 15, 236, 234, 83, 2, 135, 51, 125, + 63, 168, 184, 235, 148, 68, 132, 124, 166, 171, 53, 68, 94, 187, 31, 68, + 119, 47, 252, 73, 63, 138, 154, 84, 167, 0, 54, 33, 11, 200, 22, 91, 245, + 62, 64, 192, 7, 180, 210, 52, 233, 23, 24, 181, 50, 230, 63, 118, 228, 24, + 1, 242, 75, 62, 196, 222, 122, 154, 227, 125, 89, 73, 112, 100, 154, 249, + 61, 141, 126, 145, 46, 247, 102, 242, 62, 148, 94, 172, 128, 181, 110, 6, + 7, 209, 58, 222, 51, 169, 83, 189, 200, 47, 22, 80, 49, 169, 227, 245, + 165, 24, 96, 152, 228, 14, 252, 199, 193, 148, 46, 84, 49, 248, 198, 7, 0, + 134, 255, 174, 151, 103, 48, 154, 178, 198, 103, 45, 226, 118, 19, 41, 85, + 2, 55, 71, 7, 6, 0, 24, 150, 145, 227, 162, 126, 102, 248, 134, 116, 174, + 215, 217, 166, 160, 140, 129, 21, 220, 131, 110, 242, 94, 249, 103, 151, + 154, 81, 225, 35, 111, 131, 129, 111, 172, 214, 168, 30, 169, 71, 210, 64, + 68, 56, 228, 223, 248, 233, 234, 140, 86, 145, 121, 29, 232, 55, 165, 61, + 175, 147, 66, 33, 92, 6, 209, 241, 149, 73, 77, 9, 104, 2, 154, 247, 92, + 87, 159, 191, 113, 82, 122, 148, 89, 28, 122, 111, 93, 110, 60, 42, 34, + 70, 161, 14, 50, 153, 238, 189, 173, 99, 10, 118, 252, 1, 28, 67, 151, + 114, 46, 78, 181, 78, 233, 183, 6, 254, 57, 29, 53, 118, 175, 80, 97, 156, + 237, 219, 196, 71, 80, 161, 248, 139, 96, 124, 181, 154, 124, 149, 219, + 47, 90, 11, 98, 63, 21, 64, 144, 77, 161, 204, 127, 209, 209, 7, 86, 65, + 39, 142, 251, 183, 43, 227, 120, 155, 72, 70, 204, 89, 227, 199, 203, 28, + 128, 23, 104, 188, 215, 32, 190, 18, 156, 57, 105, 7, 179, 155, 136, 236, + 82, 173, 156, 170, 124, 210, 22, 11, 27, 182, 236, 109, 200, 172, 227, 72, + 37, 1, 175, 9, 214, 227, 23, 141, 169, 215, 77, 134, 76, 229, 169, 241, + 116, 222, 157, 77, 158, 213, 118, 223, 17, 31, 212, 97, 21, 237, 83, 2, + 218, 239, 59, 147, 30, 169, 97, 12, + ]), + + 192: new Uint8Array([ + 129, 16, 61, 38, 99, 56, 226, 139, 71, 251, 211, 15, 91, 152, 159, 219, + 112, 147, 210, 73, 97, 204, 203, 240, 183, 243, 104, 241, 37, 67, 169, + 198, 56, 76, 96, 202, 250, 212, 177, 157, 93, 115, 247, 176, 19, 3, 229, + 102, 75, 200, 252, 222, 197, 58, 31, 44, 123, 151, 9, 191, 88, 123, 35, + 48, 47, 25, 149, 35, 191, 219, 223, 94, 251, 152, 109, 171, 225, 31, 236, + 252, 223, 174, 128, 238, 173, 32, 32, 79, 22, 100, 112, 215, 153, 128, 63, + 158, 247, 18, 215, 81, 247, 208, 91, 28, 223, 222, 170, 9, 135, 210, 143, + 47, 247, 132, 183, 252, 84, 19, 78, 85, 17, 215, 20, 51, 32, 124, 149, + 172, 129, 202, 161, 217, 207, 24, 45, 177, 11, 106, 17, 108, 17, 12, 6, + 62, 90, 132, 2, 54, 96, 90, 30, 239, 216, 173, 76, 67, 7, 221, 62, 124, + 228, 156, 243, 31, 111, 160, 192, 188, 87, 107, 182, 138, 95, 122, 152, + 202, 51, 118, 100, 124, 67, 220, 116, 52, 99, 15, 39, 2, 14, 209, 173, + 119, 88, 6, 174, 106, 236, 150, 28, 189, 112, 161, 224, 186, 58, 110, 91, + 54, 211, 132, 149, 7, 188, 77, 232, 118, 197, 43, 107, 101, 179, 44, 195, + 159, 4, 124, 5, 30, 48, 227, 251, 199, 72, 98, 177, 206, 234, 228, 58, + 191, 150, 28, 211, 29, 182, 138, 141, 249, 152, 142, 244, 203, 210, 128, + 143, 244, 44, 187, 251, 221, 101, 152, 31, 119, 194, 51, 27, 167, 215, + 122, 244, 193, 224, 191, 198, 210, 2, 143, 185, 207, 145, 228, 193, 153, + 207, 119, 167, 75, 145, 43, 17, 1, 42, 146, 164, 21, 15, 164, 221, 216, + 140, 122, 248, 49, 19, 246, 84, 214, 176, 226, 118, 140, 130, 123, 163, + 217, 61, 198, 243, 182, 217, 52, 127, 190, 127, 135, 18, 239, 163, 195, + 102, 136, 227, 128, 38, 244, 49, 208, 229, 249, 126, 157, 100, 72, 246, + 10, 102, 163, 241, 155, 112, 165, 95, 32, 61, 66, 24, 233, 123, 236, 190, + 124, 214, 65, 135, 114, 118, 122, 222, 196, 47, 120, 120, 64, 117, 253, + 165, 28, 17, 152, 104, 119, 10, 53, 140, 109, 79, 246, 246, 28, 104, 228, + 175, 102, 71, 246, 183, 79, 30, 31, 186, 32, 64, 146, 72, 228, 1, 175, + 252, 115, 254, 95, 66, 87, 196, 134, 41, 115, 165, 206, 253, 245, 147, + 137, 163, 230, 235, 238, 77, 218, 74, 157, 65, 97, 43, 198, 130, 190, 195, + 142, 22, 166, 4, 179, 184, 167, 254, 156, 243, 38, 46, 66, 68, 252, 252, + 161, 209, 83, 177, 128, 115, 92, 158, 182, 177, 185, 23, 39, 138, 245, 29, + 216, 17, 178, 142, 225, 135, 8, 115, + ]), + + 256: new Uint8Array([ + 191, 72, 167, 1, 122, 218, 148, 218, 15, 239, 202, 129, 96, 108, 229, 157, + 138, 161, 232, 71, 80, 188, 118, 61, 75, 105, 120, 201, 14, 102, 102, 240, + 111, 131, 180, 83, 95, 73, 2, 138, 205, 56, 9, 137, 227, 235, 73, 71, 200, + 62, 246, 0, 223, 209, 3, 255, 113, 112, 63, 103, 41, 154, 77, 13, 149, 89, + 94, 79, 132, 193, 114, 40, 158, 33, 55, 242, 130, 109, 136, 69, 124, 130, + 150, 40, 69, 211, 224, 154, 209, 243, 65, 58, 230, 253, 31, 21, 72, 102, + 18, 250, 139, 230, 235, 11, 108, 184, 133, 108, 181, 138, 188, 189, 91, + 91, 115, 216, 68, 9, 229, 30, 154, 132, 118, 219, 183, 235, 177, 197, 221, + 58, 13, 90, 126, 198, 74, 87, 162, 226, 7, 51, 184, 15, 209, 81, 86, 138, + 169, 154, 12, 206, 58, 187, 228, 177, 68, 65, 62, 68, 141, 93, 241, 105, + 29, 239, 20, 102, 222, 49, 209, 18, 162, 247, 200, 240, 122, 244, 204, + 148, 67, 58, 118, 164, 95, 230, 68, 242, 203, 138, 145, 132, 6, 224, 206, + 234, 131, 183, 137, 249, 2, 11, 254, 123, 235, 70, 14, 136, 207, 76, 57, + 22, 38, 49, 197, 219, 123, 43, 241, 191, 64, 211, 152, 178, 140, 165, 1, + 189, 52, 79, 184, 213, 56, 215, 182, 27, 27, 70, 243, 101, 255, 50, 108, + 210, 105, 13, 22, 218, 176, 238, 36, 113, 251, 18, 218, 138, 214, 193, 21, + 122, 224, 125, 118, 134, 161, 174, 130, 86, 233, 149, 151, 33, 31, 88, 63, + 91, 63, 209, 145, 158, 109, 42, 176, 43, 23, 151, 49, 101, 199, 35, 101, + 158, 139, 198, 219, 209, 125, 221, 205, 99, 69, 142, 165, 139, 110, 220, + 184, 226, 238, 149, 161, 175, 171, 167, 170, 65, 19, 156, 166, 219, 231, + 87, 20, 226, 58, 210, 134, 110, 160, 176, 118, 250, 73, 86, 213, 116, 53, + 114, 24, 101, 34, 185, 59, 237, 47, 39, 206, 67, 12, 74, 236, 130, 7, 249, + 217, 203, 245, 122, 14, 230, 53, 203, 126, 93, 131, 51, 2, 0, 231, 161, + 111, 42, 126, 173, 121, 80, 179, 59, 186, 133, 236, 252, 188, 149, 99, + 221, 182, 55, 5, 38, 83, 132, 43, 123, 233, 174, 208, 140, 165, 77, 1, + 202, 46, 6, 183, 207, 246, 125, 37, 110, 226, 61, 155, 194, 198, 153, 107, + 1, 8, 0, 23, 124, 18, 4, 144, 235, 146, 77, 220, 123, 152, 114, 219, 127, + 59, 126, 10, 79, 106, 198, 11, 27, 111, 11, 155, 1, 137, 38, 74, 3, 248, + 225, 221, 203, 86, 4, 148, 25, 88, 144, 185, 38, 114, 139, 48, 74, 82, + 172, 36, 115, 193, 223, 220, 144, 69, 91, 5, 83, 56, 138, 63, + ]), + }; + + return { + plaintext, + keyBytes, + iv, + additionalData, + tag, + tag_with_empty_ad, + ciphertext, + }; +} diff --git a/test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/aes_gcm_vectors.js b/test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/aes_gcm_vectors.js index bc406f8f0ef78e..965fe9564d4619 100644 --- a/test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/aes_gcm_vectors.js +++ b/test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/aes_gcm_vectors.js @@ -1,4 +1,3 @@ - // aes_gcm_vectors.js // The following function returns an array of test vectors @@ -12,200 +11,15 @@ // plaintext - the text to encrypt // result - the expected result (usually just ciphertext, sometimes with added authentication) function getTestVectors() { - // Before we can really start, we need to fill a bunch of buffers with data - var plaintext = new Uint8Array([84, 104, 105, 115, 32, 115, - 112, 101, 99, 105, 102, 105, 99, 97, 116, 105, 111, 110, - 32, 100, 101, 115, 99, 114, 105, 98, 101, 115, 32, 97, 32, - 74, 97, 118, 97, 83, 99, 114, 105, 112, 116, 32, 65, 80, - 73, 32, 102, 111, 114, 32, 112, 101, 114, 102, 111, 114, - 109, 105, 110, 103, 32, 98, 97, 115, 105, 99, 32, 99, 114, - 121, 112, 116, 111, 103, 114, 97, 112, 104, 105, 99, 32, - 111, 112, 101, 114, 97, 116, 105, 111, 110, 115, 32, 105, - 110, 32, 119, 101, 98, 32, 97, 112, 112, 108, 105, 99, 97, - 116, 105, 111, 110, 115, 44, 32, 115, 117, 99, 104, 32, 97, - 115, 32, 104, 97, 115, 104, 105, 110, 103, 44, 32, 115, - 105, 103, 110, 97, 116, 117, 114, 101, 32, 103, 101, 110, - 101, 114, 97, 116, 105, 111, 110, 32, 97, 110, 100, 32, - 118, 101, 114, 105, 102, 105, 99, 97, 116, 105, 111, 110, - 44, 32, 97, 110, 100, 32, 101, 110, 99, 114, 121, 112, - 116, 105, 111, 110, 32, 97, 110, 100, 32, 100, 101, 99, - 114, 121, 112, 116, 105, 111, 110, 46, 32, 65, 100, 100, - 105, 116, 105, 111, 110, 97, 108, 108, 121, 44, 32, 105, - 116, 32, 100, 101, 115, 99, 114, 105, 98, 101, 115, 32, 97, - 110, 32, 65, 80, 73, 32, 102, 111, 114, 32, 97, 112, 112, - 108, 105, 99, 97, 116, 105, 111, 110, 115, 32, 116, 111, - 32, 103, 101, 110, 101, 114, 97, 116, 101, 32, 97, 110, - 100, 47, 111, 114, 32, 109, 97, 110, 97, 103, 101, 32, 116, - 104, 101, 32, 107, 101, 121, 105, 110, 103, 32, 109, 97, - 116, 101, 114, 105, 97, 108, 32, 110, 101, 99, 101, 115, - 115, 97, 114, 121, 32, 116, 111, 32, 112, 101, 114, 102, - 111, 114, 109, 32, 116, 104, 101, 115, 101, 32, 111, 112, - 101, 114, 97, 116, 105, 111, 110, 115, 46, 32, 85, 115, - 101, 115, 32, 102, 111, 114, 32, 116, 104, 105, 115, 32, - 65, 80, 73, 32, 114, 97, 110, 103, 101, 32, 102, 114, 111, - 109, 32, 117, 115, 101, 114, 32, 111, 114, 32, 115, 101, - 114, 118, 105, 99, 101, 32, 97, 117, 116, 104, 101, 110, - 116, 105, 99, 97, 116, 105, 111, 110, 44, 32, 100, 111, - 99, 117, 109, 101, 110, 116, 32, 111, 114, 32, 99, 111, - 100, 101, 32, 115, 105, 103, 110, 105, 110, 103, 44, 32, - 97, 110, 100, 32, 116, 104, 101, 32, 99, 111, 110, 102, - 105, 100, 101, 110, 116, 105, 97, 108, 105, 116, 121, 32, - 97, 110, 100, 32, 105, 110, 116, 101, 103, 114, 105, 116, - 121, 32, 111, 102, 32, 99, 111, 109, 109, 117, 110, 105, - 99, 97, 116, 105, 111, 110, 115, 46]); - - // We want some random key bytes of various sizes. - // These were randomly generated from a script. - var keyBytes = { - 128: new Uint8Array([222, 192, 212, 252, 191, 60, 71, - 65, 200, 146, 218, 189, 28, 212, 192, 78]), - 192: new Uint8Array([208, 238, 131, 65, 63, 68, 196, 63, 186, 208, - 61, 207, 166, 18, 99, 152, 29, 109, 221, 95, 240, 30, 28, 246]), - 256: new Uint8Array([103, 105, 56, 35, 251, 29, 88, 7, 63, 145, 236, - 233, 204, 58, 249, 16, 229, 83, 38, 22, 164, 210, 123, 19, 235, 123, 116, - 216, 0, 11, 191, 48]) - } - - // AES-GCM needs an IV of no more than 2^64 - 1 bytes. Well, 32 bytes is okay then. - var iv = new Uint8Array([58, 146, 115, 42, 166, 234, 57, - 191, 57, 134, 224, 199, 63, 169, 32, 0, 32, 33, 117, 56, - 94, 248, 173, 234, 194, 200, 115, 53, 235, 146, 141, 212]); - - // Authenticated encryption via AES-GCM requires additional data that - // will be checked. We use the ASCII encoded Editorial Note - // following the Abstract of the Web Cryptography API recommendation. - var additionalData = new Uint8Array([84, 104, 101, 114, 101, - 32, 97, 114, 101, 32, 55, 32, 102, 117, 114, 116, 104, 101, - 114, 32, 101, 100, 105, 116, 111, 114, 105, 97, 108, 32, - 110, 111, 116, 101, 115, 32, 105, 110, 32, 116, 104, 101, - 32, 100, 111, 99, 117, 109, 101, 110, 116, 46]); - - // The length of the tag defaults to 16 bytes (128 bit). - var tag = { - 128: new Uint8Array([194, 226, 198, 253, 239, 28, - 197, 240, 123, 216, 176, 151, 239, 200, 184, 183]), - 192: new Uint8Array([183, 57, 32, 144, 164, 76, 121, 77, 58, - 86, 62, 132, 53, 130, 96, 225]), - 256: new Uint8Array([188, 239, 241, 48, 159, 21, 213, 0, 241, - 42, 85, 76, 194, 28, 49, 60]) - }; - - var tag_with_empty_ad = { - 128: new Uint8Array([222, 51, 11, 23, 36, 222, 250, 248, 27, 98, 30, 81, 150, 35, 220, 198]), - 192: new Uint8Array([243, 11, 130, 112, 169, 239, 114, 238, 185, 219, 93, 1, 95, 108, 184, 183]), - 256: new Uint8Array([244, 186, 86, 203, 154, 37, 191, 248, 246, 57, 139, 130, 224, 47, 217, 238]) - }; - - - // Results. These were created using the Python cryptography module. - - // AES-GCM produces ciphertext and a tag. - var ciphertext = { - 128: new Uint8Array([180, 241, 40, 183, 105, - 52, 147, 238, 224, 175, 175, 236, 168, 244, 241, 121, 9, - 202, 225, 237, 56, 216, 253, 254, 186, 102, 111, 207, 228, - 190, 130, 177, 159, 246, 6, 53, 249, 113, 228, 254, 81, - 126, 253, 191, 100, 43, 251, 147, 107, 91, 166, 231, 201, - 241, 180, 214, 112, 47, 123, 164, 186, 134, 54, 65, 22, - 181, 201, 82, 236, 59, 52, 139, 172, 39, 41, 89, 123, 62, - 102, 167, 82, 150, 250, 93, 96, 169, 135, 89, 245, 255, - 164, 192, 169, 159, 25, 16, 139, 145, 76, 4, 144, 131, - 148, 197, 204, 46, 23, 110, 193, 228, 127, 120, 242, 24, - 54, 240, 181, 162, 98, 244, 249, 68, 134, 122, 126, 151, - 38, 108, 116, 68, 150, 109, 38, 194, 21, 159, 140, 205, - 183, 35, 97, 151, 186, 120, 145, 22, 235, 22, 210, 223, - 187, 143, 162, 183, 93, 196, 104, 51, 96, 53, 234, 250, - 184, 76, 237, 157, 37, 203, 226, 87, 222, 75, 240, 95, 218, - 222, 64, 81, 165, 75, 201, 216, 190, 13, 116, 217, 69, 66, - 47, 161, 68, 247, 74, 253, 157, 181, 162, 121, 53, 32, 91, - 124, 230, 105, 224, 17, 187, 50, 61, 77, 103, 79, 71, 57, - 163, 116, 234, 149, 27, 105, 24, 31, 159, 3, 128, 130, 42, - 94, 125, 200, 142, 251, 148, 201, 17, 149, 232, 84, 50, 17, - 18, 203, 186, 226, 164, 227, 202, 76, 65, 16, 163, 224, - 132, 52, 31, 101, 129, 72, 171, 159, 42, 177, 253, 98, 86, - 201, 95, 117, 62, 12, 205, 78, 36, 126, 196, 121, 89, 185, - 37, 161, 66, 181, 117, 186, 71, 124, 132, 110, 120, 27, - 246, 163, 18, 13, 90, 200, 127, 82, 209, 241, 170, 73, 247, - 137, 96, 244, 254, 251, 119, 71, 156, 27, 107, 53, 33, 45, - 22, 0, 144, 48, 32, 11, 116, 21, 125, 246, 217, 171, 158, - 224, 142, 234, 141, 242, 168, 89, 154, 66, 227, 161, 182, - 96, 1, 88, 78, 12, 7, 239, 30, 206, 31, 89, 111, 107, 42, - 37, 241, 148, 232, 1, 8, 251, 117, 146, 183, 9, 48, 39, 94, - 59, 70, 230, 26, 165, 97, 156, 140, 141, 31, 62, 10, 206, - 55, 48, 207, 0, 197, 202, 197, 108, 133, 175, 80, 4, 16, - 154, 223, 255, 4, 196, 188, 178, 240, 29, 13, 120, 5, 225, - 202, 3, 35, 225, 158, 92, 152, 73, 205, 107, 157, 224, 245, - 99, 194, 171, 156, 245, 247, 183, 165, 40, 62, 200, 110, - 29, 151, 206, 100, 175, 88, 36, 242, 90, 4, 82, 73, 250, - 140, 245, 217, 9, 153, 35, 242, 206, 78, 197, 121, 115, 15, - 80, 128, 101, 191, 240, 91, 151, 249, 62, 62, 244, 18, 3, - 17, 135, 222, 210, 93, 149, 123]), - - 192: new Uint8Array([126, 160, 166, 112, 227, 212, 106, - 186, 175, 70, 24, 28, 86, 149, 31, 154, 156, 190, 244, 132, 44, 61, 149, - 242, 105, 67, 17, 136, 7, 146, 153, 170, 200, 214, 142, 205, 170, 225, - 85, 44, 241, 159, 255, 234, 10, 13, 37, 48, 255, 21, 141, 176, 60, 117, - 73, 130, 247, 204, 144, 102, 167, 89, 203, 235, 229, 129, 122, 253, 124, - 179, 115, 118, 163, 157, 67, 141, 122, 146, 209, 11, 112, 5, 230, 117, - 123, 184, 243, 99, 83, 10, 31, 166, 96, 1, 121, 44, 10, 241, 24, 43, - 184, 187, 25, 239, 246, 176, 108, 230, 127, 25, 42, 67, 202, 140, 179, - 104, 159, 75, 103, 43, 248, 98, 166, 179, 67, 0, 163, 227, 84, 40, 129, - 227, 198, 205, 7, 156, 16, 185, 24, 166, 59, 218, 197, 114, 74, 34, 126, - 22, 226, 226, 85, 212, 69, 83, 163, 185, 68, 109, 182, 54, 209, 237, 96, - 184, 32, 53, 127, 175, 13, 146, 141, 115, 164, 184, 98, 245, 174, 223, - 46, 32, 167, 39, 103, 19, 210, 80, 131, 254, 103, 249, 247, 29, 120, 31, - 105, 241, 103, 169, 249, 93, 153, 74, 56, 53, 239, 157, 132, 236, 169, - 246, 242, 24, 113, 97, 128, 238, 152, 148, 31, 84, 8, 52, 105, 198, 116, - 103, 132, 48, 199, 23, 90, 24, 29, 63, 41, 117, 191, 57, 31, 209, 128, - 60, 119, 175, 84, 141, 177, 165, 169, 195, 35, 163, 105, 146, 157, 209, - 93, 149, 105, 160, 93, 231, 78, 201, 92, 235, 200, 89, 37, 50, 181, 30, - 213, 242, 59, 156, 219, 19, 158, 17, 224, 81, 108, 52, 87, 248, 101, 23, - 39, 107, 67, 151, 103, 230, 126, 202, 184, 118, 226, 18, 29, 93, 37, 208, - 40, 82, 113, 35, 157, 145, 152, 50, 253, 140, 47, 141, 192, 1, 148, 114, - 40, 10, 112, 79, 227, 16, 105, 247, 31, 49, 102, 195, 75, 183, 172, 254, - 188, 42, 89, 77, 38, 104, 1, 180, 106, 61, 71, 70, 35, 160, 103, 101, - 244, 26, 226, 37, 159, 155, 4, 107, 222, 219, 136, 37, 24, 246, 44, 23, - 44, 248, 132, 108, 59, 179, 99, 145, 132, 82, 53, 203, 111, 150, 55, - 123, 51, 214, 165, 108, 124, 179, 131, 174, 139, 224, 114, 96, 218, 181, - 243, 128, 198, 98, 115, 92, 95, 165, 23, 229, 108, 146, 14, 244, 162, - 37, 85, 201, 33, 44, 92, 106, 112, 185, 16, 189, 42, 114, 109, 59, 124, - 131, 16, 211, 31, 97, 29, 135, 61, 150, 75, 250, 207, 129, 38, 205, 187, - 186, 55, 207, 232, 24, 48, 232, 49, 226, 16, 12, 27, 70, 31, 124, 128, - 218, 100, 91, 200, 184, 78, 252, 100, 235, 62, 43, 69, 214, 163, 65, 14, - 44, 180]), - - 256: new Uint8Array([8, 97, 235, 113, 70, 32, 135, 131, - 210, 209, 124, 160, 255, 182, 9, 29, 125, 193, 27, 240, 129, 46, 2, 137, - 169, 142, 61, 7, 145, 54, 170, 207, 159, 111, 39, 95, 87, 63, 162, 27, - 6, 18, 219, 215, 116, 34, 90, 57, 114, 244, 102, 145, 67, 6, 51, 152, - 247, 165, 242, 116, 100, 219, 177, 72, 177, 17, 110, 67, 93, 219, 100, - 217, 20, 207, 89, 154, 45, 37, 105, 83, 67, 162, 140, 235, 129, 40, 177, - 202, 174, 54, 148, 55, 156, 193, 232, 249, 134, 163, 195, 51, 114, 116, - 65, 38, 73, 99, 96, 249, 224, 69, 17, 119, 186, 188, 181, 43, 78, 156, - 76, 138, 226, 63, 5, 248, 9, 94, 26, 1, 2, 235, 39, 174, 74, 47, 183, - 22, 40, 47, 47, 13, 100, 119, 12, 67, 178, 184, 56, 167, 238, 143, 13, - 44, 208, 185, 151, 108, 6, 17, 52, 122, 182, 210, 207, 42, 219, 37, 74, - 94, 126, 36, 249, 37, 32, 4, 218, 44, 238, 69, 56, 219, 31, 77, 173, 46, - 187, 103, 36, 112, 213, 252, 40, 87, 164, 240, 163, 159, 32, 129, 125, - 178, 108, 47, 28, 31, 36, 42, 115, 36, 14, 145, 195, 156, 191, 46, 163, - 249, 181, 31, 90, 73, 30, 72, 57, 223, 63, 60, 79, 140, 14, 117, 31, - 145, 222, 156, 121, 237, 32, 145, 143, 96, 12, 254, 35, 21, 21, 59, 168, - 171, 154, 217, 0, 59, 202, 175, 103, 214, 192, 175, 26, 18, 43, 54, 176, - 222, 75, 22, 7, 122, 253, 224, 145, 61, 42, 208, 73, 237, 84, 141, 209, - 213, 228, 46, 244, 59, 9, 68, 6, 35, 88, 189, 10, 62, 9, 85, 28, 44, 82, - 19, 153, 160, 178, 240, 56, 160, 244, 201, 173, 77, 61, 20, 227, 30, - 180, 167, 16, 105, 185, 193, 95, 207, 41, 23, 134, 78, 198, 182, 93, 24, - 89, 247, 231, 75, 233, 194, 137, 242, 114, 194, 190, 130, 138, 238, 94, - 137, 193, 194, 115, 137, 190, 207, 169, 83, 155, 14, 210, 160, 129, 195, - 161, 234, 221, 255, 114, 67, 98, 12, 93, 41, 65, 183, 244, 103, 247, - 101, 82, 246, 125, 87, 125, 78, 21, 186, 102, 205, 20, 40, 32, 201, 174, - 15, 52, 240, 217, 180, 162, 108, 6, 211, 41, 18, 135, 232, 184, 18, 188, - 169, 157, 190, 76, 166, 75, 176, 127, 39, 251, 22, 203, 153, 80, 49, - 241, 124, 137, 151, 123, 204, 43, 159, 190, 177, 196, 18, 117, 169, 46, - 152, 251, 45, 25, 164, 27, 145, 214, 228, 55, 15, 2, 131, 216, 80, 255, - 204, 175, 100, 59, 145, 15, 103, 40, 33, 45, 255, 200, 254, 172, 138, - 20, 58, 87, 182, 192, 148, 219, 41, 88, 230, 229, 70, 249]) - }; + const { + plaintext, + keyBytes, + iv, + additionalData, + tag, + tag_with_empty_ad, + ciphertext, + } = getFixtures(); var keyLengths = [128, 192, 256]; var tagLengths = [32, 64, 96, 104, 112, 120, 128]; @@ -220,7 +34,7 @@ function getTestVectors() { result.set(ciphertext[keyLength], 0); result.set(tag[keyLength].slice(0, byteCount), ciphertext[keyLength].byteLength); passing.push({ - name: "AES-GCM " + keyLength.toString() + "-bit key, " + tagLength.toString() + "-bit tag", + name: "AES-GCM " + keyLength.toString() + "-bit key, " + tagLength.toString() + "-bit tag, " + (iv.byteLength << 3).toString() + "-bit iv", keyBuffer: keyBytes[keyLength], key: null, algorithm: {name: "AES-GCM", iv: iv, additionalData: additionalData, tagLength: tagLength}, @@ -232,7 +46,7 @@ function getTestVectors() { noadresult.set(ciphertext[keyLength], 0); noadresult.set(tag_with_empty_ad[keyLength].slice(0, byteCount), ciphertext[keyLength].byteLength); passing.push({ - name: "AES-GCM " + keyLength.toString() + "-bit key, no additional data, " + tagLength.toString() + "-bit tag", + name: "AES-GCM " + keyLength.toString() + "-bit key, no additional data, " + tagLength.toString() + "-bit tag, " + (iv.byteLength << 3).toString() + "-bit iv", keyBuffer: keyBytes[keyLength], key: null, algorithm: {name: "AES-GCM", iv: iv, tagLength: tagLength}, @@ -248,7 +62,7 @@ function getTestVectors() { // First, make some tests for bad tag lengths [24, 48, 72, 95, 129].forEach(function(badTagLength) { failing.push({ - name: "AES-GCM " + keyLength.toString() + "-bit key, illegal tag length " + badTagLength.toString() + "-bits", + name: "AES-GCM " + keyLength.toString() + "-bit key, " + (iv.byteLength << 3).toString() + "-bit iv, " + "illegal tag length " + badTagLength.toString() + "-bits", keyBuffer: keyBytes[keyLength], key: null, algorithm: {name: "AES-GCM", iv: iv, additionalData: additionalData, tagLength: badTagLength}, diff --git a/test/fixtures/wpt/WebCryptoAPI/sign_verify/ecdsa_vectors.js b/test/fixtures/wpt/WebCryptoAPI/sign_verify/ecdsa_vectors.js index 2d1fb6d5c9e80b..aa9b81ba8a4bd1 100644 --- a/test/fixtures/wpt/WebCryptoAPI/sign_verify/ecdsa_vectors.js +++ b/test/fixtures/wpt/WebCryptoAPI/sign_verify/ecdsa_vectors.js @@ -85,53 +85,55 @@ function getTestVectors() { // Additional test vectors, using the same format as getTestVectors, but the // signatures are invalid. function getInvalidTestVectors() { - var vectors = [ + var vectors = []; + for (const validVector of getTestVectors()) { { - name: "The signature was truncated by 1 byte", - publicKeyBuffer: new Uint8Array([48, 89, 48, 19, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 8, 42, 134, 72, 206, 61, 3, 1, 7, 3, 66, 0, 4, 156, 176, 207, 105, 48, 61, 175, 199, 97, 212, 228, 104, 123, 78, 207, 3, 158, 109, 52, 171, 150, 74, 248, 8, 16, 216, 213, 88, 164, 168, 214, 247, 45, 81, 35, 58, 23, 136, 146, 10, 134, 238, 8, 161, 150, 44, 121, 239, 163, 23, 251, 120, 121, 226, 151, 218, 210, 20, 109, 185, 149, 250, 28, 120]), - publicKeyFormat: "spki", - publicKey: null, - algorithmName: "ECDSA", - namedCurve: "P-256", - hashName: "SHA-512", - plaintext: new Uint8Array([110, 41, 50, 21, 51, 1, 164, 238, 246, 128, 230, 66, 137, 41, 173, 174, 152, 140, 16, 141, 102, 138, 49, 255, 85, 208, 72, 153, 71, 215, 95, 248, 26, 70, 191, 137, 232, 77, 100, 1, 240, 35, 190, 110, 135, 104, 143, 188, 215, 132, 215, 133, 202, 132, 103, 53, 82, 74, 203, 82, 208, 4, 82, 200, 64, 64, 164, 121, 231, 204, 51, 9, 54, 68, 29, 147, 187, 231, 34, 169, 67, 42, 110, 29, 177, 18, 181, 201, 64, 59, 16, 39, 44, 177, 52, 127, 214, 25, 212, 99, 247, 169, 210, 35, 173, 118, 253, 224, 109, 138, 104, 131, 80, 15, 184, 67, 35, 90, 191, 249, 142, 36, 27, 223, 181, 83, 140, 62]), - signature: new Uint8Array([75, 159, 145, 228, 40, 82, 135, 38, 26, 29, 28, 146, 60, 246, 25, 205, 82, 193, 117, 207, 231, 241, 190, 96, 165, 37, 140, 97, 3, 72, 186, 61, 40, 196, 95, 144, 29, 113, 196, 27, 41, 134, 56, 236, 13, 106, 133, 215, 252, 176, 195, 59, 191, 236, 90, 156, 129, 8, 70, 182, 57, 40, 154]), - }, + const vector = structuredClone(validVector); + vector.name = `${vector.name} - The signature was truncated by 1 byte`; + vector.signature = vector.signature.subarray(0, vector.signature.byteLength - 1); + vectors.push(vector); + } + + // The signature was made with a different algorithm + for (const hashName of ["SHA-1", "SHA-256", "SHA-384", "SHA-512"]) { + if (validVector.hashName === hashName) continue; + const vector = structuredClone(validVector); + vector.name = `${vector.name} - The signature was made using ${vector.hashName}, however verification is being done using ${hashName}`; + vector.hashName = hashName; + vectors.push(vector); + } + { - name: "The signature was made using SHA-512, however verification is being done using SHA-1.", - publicKeyBuffer: new Uint8Array([48, 89, 48, 19, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 8, 42, 134, 72, 206, 61, 3, 1, 7, 3, 66, 0, 4, 156, 176, 207, 105, 48, 61, 175, 199, 97, 212, 228, 104, 123, 78, 207, 3, 158, 109, 52, 171, 150, 74, 248, 8, 16, 216, 213, 88, 164, 168, 214, 247, 45, 81, 35, 58, 23, 136, 146, 10, 134, 238, 8, 161, 150, 44, 121, 239, 163, 23, 251, 120, 121, 226, 151, 218, 210, 20, 109, 185, 149, 250, 28, 120]), - publicKeyFormat: "spki", - publicKey: null, - algorithmName: "ECDSA", - namedCurve: "P-256", - hashName: "SHA-1", - plaintext: new Uint8Array([110, 41, 50, 21, 51, 1, 164, 238, 246, 128, 230, 66, 137, 41, 173, 174, 152, 140, 16, 141, 102, 138, 49, 255, 85, 208, 72, 153, 71, 215, 95, 248, 26, 70, 191, 137, 232, 77, 100, 1, 240, 35, 190, 110, 135, 104, 143, 188, 215, 132, 215, 133, 202, 132, 103, 53, 82, 74, 203, 82, 208, 4, 82, 200, 64, 64, 164, 121, 231, 204, 51, 9, 54, 68, 29, 147, 187, 231, 34, 169, 67, 42, 110, 29, 177, 18, 181, 201, 64, 59, 16, 39, 44, 177, 52, 127, 214, 25, 212, 99, 247, 169, 210, 35, 173, 118, 253, 224, 109, 138, 104, 131, 80, 15, 184, 67, 35, 90, 191, 249, 142, 36, 27, 223, 181, 83, 140, 62]), - signature: new Uint8Array([75, 159, 145, 228, 40, 82, 135, 38, 26, 29, 28, 146, 60, 246, 25, 205, 82, 193, 117, 207, 231, 241, 190, 96, 165, 37, 140, 97, 3, 72, 186, 61, 40, 196, 95, 144, 29, 113, 196, 27, 41, 134, 56, 236, 13, 106, 133, 215, 252, 176, 195, 59, 191, 236, 90, 156, 129, 8, 70, 182, 57, 40, 154, 132]), - }, + // Excess padding + const vector = structuredClone(validVector); + vector.name = `${vector.name} - Signature has excess padding`; + + const r = vector.signature.subarray(0, vector.signature.byteLength / 2); + const s = vector.signature.subarray(vector.signature.byteLength); + vector.signature = new Uint8Array([ + 0, ...r, + 0, ...s, + ]); + + vectors.push(vector); + } + { - name: "Excess padding", - publicKeyBuffer: new Uint8Array([48, 118, 48, 16, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 5, 43, 129, 4, 0, 34, 3, 98, 0, 4, 8, 116, 162, 224, 184, 255, 68, 143, 14, 84, 50, 30, 39, 244, 241, 230, 77, 6, 76, 222, 183, 210, 111, 69, 140, 50, 233, 48, 18, 15, 78, 87, 220, 133, 194, 105, 63, 151, 126, 237, 74, 142, 204, 141, 185, 129, 180, 217, 31, 105, 68, 109, 244, 244, 198, 245, 222, 25, 0, 63, 69, 248, 145, 208, 235, 205, 47, 255, 219, 92, 129, 192, 64, 232, 214, 153, 76, 67, 199, 254, 237, 185, 138, 74, 49, 237, 251, 53, 232, 154, 48, 1, 60, 59, 146, 103]), - publicKeyFormat: "spki", - publicKey: null, - algorithmName: "ECDSA", - namedCurve: "P-384", - hashName: "SHA-1", - plaintext: new Uint8Array([63, 7, 131, 165, 142, 102, 243, 210, 192, 204, 251, 95, 172, 63, 9, 219, 111, 134, 9, 208, 89, 43, 199, 127, 223, 254, 217, 207, 14, 19, 125, 38, 168, 103, 5, 118, 101, 243, 173, 129, 190, 235, 187, 219, 114, 61, 90, 71, 197, 128, 130, 143, 16, 247, 52, 122, 184, 169, 194, 77, 25, 95, 115, 109, 250, 230, 234, 227, 125, 136, 254, 59, 71, 53, 231, 198, 105, 168, 10, 193, 145, 62, 92, 36, 200, 193, 213, 205, 177, 95, 153, 79, 62, 194, 241, 199, 116, 117, 46, 20, 245, 150, 179, 140, 47, 191, 3, 118, 22, 214, 8, 36, 77, 61, 167, 212, 186, 223, 53, 19, 48, 249, 71, 224, 76, 195, 80, 231]), - // Each of r and s in this input is padded up to one extra byte. - signature: new Uint8Array([0, 141, 157, 62, 61, 11, 43, 40, 113, 234, 47, 3, 242, 123, 168, 105, 159, 33, 75, 232, 216, 117, 192, 215, 112, 176, 255, 241, 196, 206, 52, 31, 12, 131, 74, 193, 31, 158, 193, 43, 253, 184, 50, 11, 23, 36, 200, 194, 32, 0, 98, 21, 13, 251, 168, 230, 92, 12, 123, 231, 239, 129, 200, 114, 65, 210, 195, 122, 131, 194, 126, 179, 28, 204, 43, 60, 57, 87, 103, 10, 116, 76, 129, 190, 109, 116, 19, 64, 181, 24, 156, 192, 197, 71, 223, 129, 176, 210]), - }, + // Empty signature + const vector = structuredClone(validVector); + vector.name = `${vector.name} - The signature is empty`; + vector.signature = new Uint8Array(); + vectors.push(vector); + } + { - name: "Empty signature", - publicKeyBuffer: new Uint8Array([48, 118, 48, 16, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 5, 43, 129, 4, 0, 34, 3, 98, 0, 4, 8, 116, 162, 224, 184, 255, 68, 143, 14, 84, 50, 30, 39, 244, 241, 230, 77, 6, 76, 222, 183, 210, 111, 69, 140, 50, 233, 48, 18, 15, 78, 87, 220, 133, 194, 105, 63, 151, 126, 237, 74, 142, 204, 141, 185, 129, 180, 217, 31, 105, 68, 109, 244, 244, 198, 245, 222, 25, 0, 63, 69, 248, 145, 208, 235, 205, 47, 255, 219, 92, 129, 192, 64, 232, 214, 153, 76, 67, 199, 254, 237, 185, 138, 74, 49, 237, 251, 53, 232, 154, 48, 1, 60, 59, 146, 103]), - publicKeyFormat: "spki", - publicKey: null, - algorithmName: "ECDSA", - namedCurve: "P-384", - hashName: "SHA-1", - plaintext: new Uint8Array([63, 7, 131, 165, 142, 102, 243, 210, 192, 204, 251, 95, 172, 63, 9, 219, 111, 134, 9, 208, 89, 43, 199, 127, 223, 254, 217, 207, 14, 19, 125, 38, 168, 103, 5, 118, 101, 243, 173, 129, 190, 235, 187, 219, 114, 61, 90, 71, 197, 128, 130, 143, 16, 247, 52, 122, 184, 169, 194, 77, 25, 95, 115, 109, 250, 230, 234, 227, 125, 136, 254, 59, 71, 53, 231, 198, 105, 168, 10, 193, 145, 62, 92, 36, 200, 193, 213, 205, 177, 95, 153, 79, 62, 194, 241, 199, 116, 117, 46, 20, 245, 150, 179, 140, 47, 191, 3, 118, 22, 214, 8, 36, 77, 61, 167, 212, 186, 223, 53, 19, 48, 249, 71, 224, 76, 195, 80, 231]), - signature: new Uint8Array([]), - }, - ]; + // Zeroed signature + const vector = structuredClone(validVector); + vector.name = `${vector.name} - The signature is all zeroes`; + vector.signature = new Uint8Array(vector.signature.byteLength); + vectors.push(vector); + } + } return vectors; } diff --git a/test/fixtures/wpt/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.https.any.js b/test/fixtures/wpt/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.https.any.js index 95102495fe3a5b..edb67d9e30fdba 100644 --- a/test/fixtures/wpt/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.https.any.js +++ b/test/fixtures/wpt/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.https.any.js @@ -1,5 +1,6 @@ // META: title=WebCryptoAPI: wrapKey() and unwrapKey() // META: timeout=long +// META: script=../util/helpers.js // Tests for wrapKey and unwrapKey round tripping @@ -19,7 +20,7 @@ promises.push(testWrapping(wrapper, key)); }) }); - return Promise.all(promises); + return Promise.allSettled(promises); }); }, "setup"); @@ -48,7 +49,7 @@ { name: "AES-GCM", generateParameters: {name: "AES-GCM", length: 128}, - wrapParameters: {name: "AES-GCM", iv: new Uint8Array(16), additionalData: new Uint8Array(16), tagLength: 64} + wrapParameters: {name: "AES-GCM", iv: new Uint8Array(16), additionalData: new Uint8Array(16), tagLength: 128} }, { name: "AES-KW", @@ -141,7 +142,7 @@ .then(function(wrappedResult) { return subtle.unwrapKey(fmt, wrappedResult, wrapper.unwrappingKey, wrapper.parameters.wrapParameters, toWrap.algorithm, true, toWrap.usages); }).then(function(unwrappedResult) { - assert_true(unwrappedResult.extractable, "Unwrapped result is extractable"); + assert_goodCryptoKey(unwrappedResult, toWrap.algorithm, true, toWrap.usages, toWrap.key.type); return subtle.exportKey(fmt, unwrappedResult) }).then(function(roundTripExport) { assert_true(equalExport(originalExport, roundTripExport), "Post-wrap export matches original export"); @@ -161,7 +162,7 @@ .then(function(wrappedResult) { return subtle.unwrapKey(fmt, wrappedResult, wrapper.unwrappingKey, wrapper.parameters.wrapParameters, toWrap.algorithm, false, toWrap.usages); }).then(function(unwrappedResult){ - assert_false(unwrappedResult.extractable, "Unwrapped result is non-extractable"); + assert_goodCryptoKey(unwrappedResult, toWrap.algorithm, false, toWrap.usages, toWrap.key.type); return equalKeys(toWrap.key, unwrappedResult); }).then(function(result){ assert_true(result, "Unwrapped key matches original"); diff --git a/test/fixtures/wpt/versions.json b/test/fixtures/wpt/versions.json index 8dd0c82e0c4cce..5b907c709a9bed 100644 --- a/test/fixtures/wpt/versions.json +++ b/test/fixtures/wpt/versions.json @@ -84,7 +84,7 @@ "path": "wasm/webapi" }, "WebCryptoAPI": { - "commit": "238d9d9bac54d4f1ae8844fc8dd4389b1ad99b4e", + "commit": "ee30029d47cf9f7cf8f71fe851b4c29903edf851", "path": "WebCryptoAPI" }, "webidl/ecmascript-binding/es-exceptions": { From 1ccc8cc858b94b97b6c3c76140efe3e36e57aa06 Mon Sep 17 00:00:00 2001 From: Joyee Cheung Date: Fri, 10 Mar 2023 12:47:47 +0100 Subject: [PATCH 053/186] meta: add single-executable labels and code owners PR-URL: https://github.com/nodejs/node/pull/47004 Reviewed-By: Antoine du Hamel Reviewed-By: Darshan Sen --- .github/CODEOWNERS | 10 ++++++++++ .github/label-pr-config.yml | 1 + 2 files changed, 11 insertions(+) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 6a0e7fe0339501..0a7df2ac7d8565 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -140,3 +140,13 @@ /lib/test.js @nodejs/test_runner /lib/internal/main/test_runner.js @nodejs/test_runner /lib/internal/test_runner/* @nodejs/test_runner + +# Single Executable Applications +/deps/postject @nodejs/single-executable +/doc/api/single-executable-applications.md @nodejs/single-executable +/doc/contributing/maintaining-postject.md @nodejs/single-executable +/doc/contributing/maintaining-single-executable-application-support.md @nodejs/single-executable +/src/node_sea* @nodejs/single-executable +/test/fixtures/postject-copy @nodejs/single-executable +/test/parallel/test-single-executable-* @nodejs/single-executable +/tools/dep_updaters/update-postject.sh @nodejs/single-executable diff --git a/.github/label-pr-config.yml b/.github/label-pr-config.yml index cfd5aeef6b94d7..85f3d810d1c296 100644 --- a/.github/label-pr-config.yml +++ b/.github/label-pr-config.yml @@ -33,6 +33,7 @@ subSystemLabels: /^src\/node_worker/: c++, worker /^src\/quic\/*/: c++, quic, dont-land-on-v14.x /^src\/node_bob*/: c++, quic, dont-land-on-v14.x + /^src\/node_sea/: single-executable # don't label python files as c++ /^src\/.+\.py$/: python, needs-ci From 72e971ee2e7d1c974d69825c40bc9f29cdb4b1f9 Mon Sep 17 00:00:00 2001 From: Yagiz Nizipli Date: Fri, 10 Mar 2023 09:09:53 -0500 Subject: [PATCH 054/186] url: fix array overrun in node:url::SetArgs() PR-URL: https://github.com/nodejs/node/pull/47001 Reviewed-By: Tiancheng "Timothy" Gu Reviewed-By: Ben Noordhuis Reviewed-By: Darshan Sen --- src/node_url.cc | 58 +++++++++++++++---------------------------------- 1 file changed, 17 insertions(+), 41 deletions(-) diff --git a/src/node_url.cc b/src/node_url.cc index 014a758b7df258..9beb78fc2044e6 100644 --- a/src/node_url.cc +++ b/src/node_url.cc @@ -20,7 +20,6 @@ using v8::Local; using v8::NewStringType; using v8::Object; using v8::String; -using v8::Undefined; using v8::Value; Local Utf8String(Isolate* isolate, const std::string& str) { @@ -46,18 +45,20 @@ enum url_update_action { kHref = 9, }; -void SetArgs(Environment* env, Local argv[10], const ada::result& url) { +void SetArgs(Environment* env, + Local (*argv)[10], + const ada::result& url) { Isolate* isolate = env->isolate(); - argv[0] = Utf8String(isolate, url->get_href()); - argv[1] = Utf8String(isolate, url->get_origin()); - argv[2] = Utf8String(isolate, url->get_protocol()); - argv[3] = Utf8String(isolate, url->get_hostname()); - argv[4] = Utf8String(isolate, url->get_pathname()); - argv[5] = Utf8String(isolate, url->get_search()); - argv[6] = Utf8String(isolate, url->get_username()); - argv[7] = Utf8String(isolate, url->get_password()); - argv[8] = Utf8String(isolate, url->get_port()); - argv[9] = Utf8String(isolate, url->get_hash()); + (*argv)[0] = Utf8String(isolate, url->get_href()); + (*argv)[1] = Utf8String(isolate, url->get_origin()); + (*argv)[2] = Utf8String(isolate, url->get_protocol()); + (*argv)[3] = Utf8String(isolate, url->get_hostname()); + (*argv)[4] = Utf8String(isolate, url->get_pathname()); + (*argv)[5] = Utf8String(isolate, url->get_search()); + (*argv)[6] = Utf8String(isolate, url->get_username()); + (*argv)[7] = Utf8String(isolate, url->get_password()); + (*argv)[8] = Utf8String(isolate, url->get_port()); + (*argv)[9] = Utf8String(isolate, url->get_hash()); } void Parse(const FunctionCallbackInfo& args) { @@ -69,7 +70,6 @@ void Parse(const FunctionCallbackInfo& args) { Local success_callback_ = args[2].As(); Environment* env = Environment::GetCurrent(args); - Isolate* isolate = env->isolate(); HandleScope handle_scope(env->isolate()); Context::Scope context_scope(env->context()); @@ -89,20 +89,8 @@ void Parse(const FunctionCallbackInfo& args) { return args.GetReturnValue().Set(false); } - const Local undef = Undefined(isolate); - Local argv[] = { - undef, - undef, - undef, - undef, - undef, - undef, - undef, - undef, - undef, - undef, - }; - SetArgs(env, argv, out); + Local argv[10]; + SetArgs(env, &argv, out); USE(success_callback_->Call( env->context(), args.This(), arraysize(argv), argv)); args.GetReturnValue().Set(true); @@ -235,20 +223,8 @@ void UpdateUrl(const FunctionCallbackInfo& args) { } } - const Local undef = Undefined(isolate); - Local argv[] = { - undef, - undef, - undef, - undef, - undef, - undef, - undef, - undef, - undef, - undef, - }; - SetArgs(env, argv, out); + Local argv[10]; + SetArgs(env, &argv, out); USE(success_callback_->Call( env->context(), args.This(), arraysize(argv), argv)); args.GetReturnValue().Set(result); From b0d31bb85490fdc9cdd4c8704d2e27d54e67d2b6 Mon Sep 17 00:00:00 2001 From: Deokjin Kim Date: Sat, 11 Mar 2023 00:07:55 +0900 Subject: [PATCH 055/186] net: fix setting of value in 'setDefaultAutoSelectFamilyAttemptTimeout' Document describes that the value have to be 10 if passed value to `setDefaultAutoSelectFamilyAttemptTimeout` is less than 10. So need to use 10 for 'if' statement and fix typo in document. Refs: https://github.com/nodejs/node/blob/main/doc/api/net.md#netsetdefaultautoselectfamilyattempttimeoutvalue PR-URL: https://github.com/nodejs/node/pull/47012 Reviewed-By: Paolo Insogna Reviewed-By: Yagiz Nizipli Reviewed-By: Minwoo Jung --- doc/api/net.md | 2 +- lib/net.js | 2 +- ...ocket-connect-invalid-autoselectfamilyattempttimeout.js | 7 +++++++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/doc/api/net.md b/doc/api/net.md index b752129dd55fba..2b67e85a32d9e2 100644 --- a/doc/api/net.md +++ b/doc/api/net.md @@ -1661,7 +1661,7 @@ added: REPLACEME Sets the default value of the `autoSelectFamilyAttemptTimeout` option of [`socket.connect(options)`][]. * `value` {number} The new default value, which must be a positive number. If the number is less than `10`, - the value `10` is used insted The initial default value is `250`. + the value `10` is used instead. The initial default value is `250`. ## `net.isIP(input)` diff --git a/lib/net.js b/lib/net.js index 7ac8a0bdc649c5..654190551e46d9 100644 --- a/lib/net.js +++ b/lib/net.js @@ -247,7 +247,7 @@ function getDefaultAutoSelectFamilyAttemptTimeout() { function setDefaultAutoSelectFamilyAttemptTimeout(value) { validateInt32(value, 'value', 1); - if (value < 1) { + if (value < 10) { value = 10; } diff --git a/test/parallel/test-net-socket-connect-invalid-autoselectfamilyattempttimeout.js b/test/parallel/test-net-socket-connect-invalid-autoselectfamilyattempttimeout.js index adec8200f697d2..0fc813781c95ec 100644 --- a/test/parallel/test-net-socket-connect-invalid-autoselectfamilyattempttimeout.js +++ b/test/parallel/test-net-socket-connect-invalid-autoselectfamilyattempttimeout.js @@ -18,3 +18,10 @@ for (const autoSelectFamilyAttemptTimeout of [-10, 0]) { net.setDefaultAutoSelectFamilyAttemptTimeout(autoSelectFamilyAttemptTimeout); }, { code: 'ERR_OUT_OF_RANGE' }); } + +// Check the default value of autoSelectFamilyAttemptTimeout is 10 +// if passed number is less than 10 +for (const autoSelectFamilyAttemptTimeout of [1, 9]) { + net.setDefaultAutoSelectFamilyAttemptTimeout(autoSelectFamilyAttemptTimeout); + assert.strictEqual(net.getDefaultAutoSelectFamilyAttemptTimeout(), 10); +} From 59d85f50ea28ff8a99b1b7ac4dc5ee949dfb8dc7 Mon Sep 17 00:00:00 2001 From: Ruy Adorno Date: Fri, 10 Mar 2023 12:09:54 -0500 Subject: [PATCH 056/186] doc: fix typo on esm loaders example Fixes a small typo on the Transpiler loader example. PR-URL: https://github.com/nodejs/node/pull/47015 Reviewed-By: Jacob Smith Reviewed-By: Yagiz Nizipli Reviewed-By: Mohammed Keyvanzadeh Reviewed-By: Antoine du Hamel Reviewed-By: Luigi Pinca Reviewed-By: Deokjin Kim Reviewed-By: Darshan Sen --- doc/api/esm.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/api/esm.md b/doc/api/esm.md index 6dc08f9c161320..6293779131e4e0 100644 --- a/doc/api/esm.md +++ b/doc/api/esm.md @@ -1129,7 +1129,7 @@ export async function load(url, context, nextLoad) { // file, search up the file system for the nearest parent package.json file // and read its "type" field. const format = await getPackageType(url); - // When a hook returns a format of 'commonjs', `source` is be ignored. + // When a hook returns a format of 'commonjs', `source` is ignored. // To handle CommonJS files, a handler needs to be registered with // `require.extensions` in order to process the files with the CommonJS // loader. Avoiding the need for a separate CommonJS handler is a future From 359172868fa186bf8647fd58fa091d932481cbd4 Mon Sep 17 00:00:00 2001 From: Marco Ippolito Date: Fri, 10 Mar 2023 22:17:06 +0100 Subject: [PATCH 057/186] tools: automate cares update PR-URL: https://github.com/nodejs/node/pull/46993 Refs: https://github.com/nodejs/security-wg/issues/828 Reviewed-By: Yagiz Nizipli Reviewed-By: Antoine du Hamel Reviewed-By: Rafael Gonzaga Reviewed-By: Benjamin Gruenbaum --- .github/workflows/tools.yml | 8 +++ doc/contributing/maintaining-c-ares.md | 16 ++---- tools/dep_updaters/update-c-ares.sh | 71 ++++++++++++++++++++++++++ tools/update-cares.sh | 56 -------------------- 4 files changed, 83 insertions(+), 68 deletions(-) create mode 100755 tools/dep_updaters/update-c-ares.sh delete mode 100755 tools/update-cares.sh diff --git a/.github/workflows/tools.yml b/.github/workflows/tools.yml index 84193a6b32181c..8d4e5ae028253c 100644 --- a/.github/workflows/tools.yml +++ b/.github/workflows/tools.yml @@ -163,6 +163,14 @@ jobs: echo "NEW_VERSION=$NEW_VERSION" >> $GITHUB_ENV ./tools/update-llhttp.sh "$NEW_VERSION" fi + - id: c-ares + subsystem: deps + label: dependencies + run: | + ./tools/dep_updaters/update-c-ares.sh > temp-output + cat temp-output + tail -n1 temp-output | grep "NEW_VERSION=" >> "$GITHUB_ENV" || true + rm temp-output steps: - uses: actions/checkout@v3 with: diff --git a/doc/contributing/maintaining-c-ares.md b/doc/contributing/maintaining-c-ares.md index 64f29674c4e8a6..d4b48dbfdb5bdb 100644 --- a/doc/contributing/maintaining-c-ares.md +++ b/doc/contributing/maintaining-c-ares.md @@ -13,19 +13,11 @@ Updates to the c-ares dependency involve the following steps: ## Running the update script -The `tools/update-cares.sh` script automates the update of the c-ares source -files, preserving the existing files added by Node.js. +The `tools/dep_updaters/update-c-ares.sh` script automates the update of +the c-ares source files, preserving the existing files added by Node.js. -In the following examples, `x.y.z` should match the c-ares version to update to. - -```console -./tools/update-cares.sh x.y.z -``` - -e.g. - -```console -./tools/update-cares.sh 1.18.1 +```bash +./tools/dep_updaters/update-c-ares.sh ``` ## Check that Node.js still builds and tests diff --git a/tools/dep_updaters/update-c-ares.sh b/tools/dep_updaters/update-c-ares.sh new file mode 100755 index 00000000000000..79d964e61f08a5 --- /dev/null +++ b/tools/dep_updaters/update-c-ares.sh @@ -0,0 +1,71 @@ +#!/bin/sh +set -e +# Shell script to update c-ares in the source tree to a specific version + +BASE_DIR=$(cd "$(dirname "$0")/../.." && pwd) +DEPS_DIR="$BASE_DIR/deps" + +[ -z "$NODE" ] && NODE="$BASE_DIR/out/Release/node" +[ -x "$NODE" ] || NODE=$(command -v node) + +NEW_VERSION="$("$NODE" --input-type=module <<'EOF' +const res = await fetch('https://api.github.com/repos/c-ares/c-ares/releases/latest'); +if (!res.ok) throw new Error(`FetchError: ${res.status} ${res.statusText}`, { cause: res }); +const { tag_name } = await res.json(); +console.log(tag_name.replace('cares-', '').replaceAll('_', '.')); +EOF +)" + +CURRENT_VERSION=$(grep "#define ARES_VERSION_STR" ./deps/cares/include/ares_version.h | sed -n "s/^.*VERSION_STR \"\(.*\)\"/\1/p") + +echo "Comparing $NEW_VERSION with $CURRENT_VERSION" + +if [ "$NEW_VERSION" = "$CURRENT_VERSION" ]; then + echo "Skipped because c-ares is on the latest version." + exit 0 +fi + +echo "Making temporary workspace" + +WORKSPACE=$(mktemp -d 2> /dev/null || mktemp -d -t 'tmp') + +cleanup () { + EXIT_CODE=$? + [ -d "$WORKSPACE" ] && rm -rf "$WORKSPACE" + exit $EXIT_CODE +} + +trap cleanup INT TERM EXIT + +ARES_REF="cares-$(echo "$NEW_VERSION" | tr . _)" +ARES_TARBALL="c-ares-$NEW_VERSION.tar.gz" + +cd "$WORKSPACE" + +echo "Fetching c-ares source archive" +curl -sL "https://github.com/c-ares/c-ares/releases/download/$ARES_REF/$ARES_TARBALL" | tar xz +mv "c-ares-$NEW_VERSION" cares + +echo "Removing tests" +rm -rf "$WORKSPACE/cares/test" + +echo "Copying existing .gitignore, config and gyp files" +cp -R "$DEPS_DIR/cares/config" "$WORKSPACE/cares" +cp "$DEPS_DIR/cares/.gitignore" "$WORKSPACE/cares" +cp "$DEPS_DIR/cares/cares.gyp" "$WORKSPACE/cares" + +echo "Replacing existing c-ares" +rm -rf "$DEPS_DIR/cares" +mv "$WORKSPACE/cares" "$DEPS_DIR/" + +echo "All done!" +echo "" +echo "Please git add c-ares, commit the new version:" +echo "" +echo "$ git add -A deps/cares" +echo "$ git commit -m \"deps: update c-ares to $NEW_VERSION\"" +echo "" + +# The last line of the script should always print the new version, +# as we need to add it to $GITHUB_ENV variable. +echo "NEW_VERSION=$NEW_VERSION" diff --git a/tools/update-cares.sh b/tools/update-cares.sh deleted file mode 100755 index f20347d88274fe..00000000000000 --- a/tools/update-cares.sh +++ /dev/null @@ -1,56 +0,0 @@ -#!/bin/sh -set -e -# Shell script to update c-ares in the source tree to a specific version - -BASE_DIR=$(cd "$(dirname "$0")/.." && pwd) -DEPS_DIR="$BASE_DIR/deps" -ARES_VERSION=$1 - -if [ "$#" -le 0 ]; then - echo "Error: please provide an c-ares version to update to" - echo " e.g. $0 1.18.1" - exit 1 -fi - -echo "Making temporary workspace" - -WORKSPACE=$(mktemp -d 2> /dev/null || mktemp -d -t 'tmp') - -cleanup () { - EXIT_CODE=$? - [ -d "$WORKSPACE" ] && rm -rf "$WORKSPACE" - exit $EXIT_CODE -} - -trap cleanup INT TERM EXIT - -ARES_REF="cares-$(echo "$ARES_VERSION" | tr . _)" -ARES_TARBALL="c-ares-$ARES_VERSION.tar.gz" - -cd "$WORKSPACE" - -echo "Fetching c-ares source archive" -curl -sL -o "$ARES_TARBALL" "https://github.com/c-ares/c-ares/releases/download/$ARES_REF/$ARES_TARBALL" -gzip -dc "$ARES_TARBALL" | tar xf - -rm "$ARES_TARBALL" -mv "c-ares-$ARES_VERSION" cares - -echo "Removing tests" -rm -rf "$WORKSPACE/cares/test" - -echo "Copying existing .gitignore, config and gyp files" -cp -R "$DEPS_DIR/cares/config" "$WORKSPACE/cares" -cp "$DEPS_DIR/cares/.gitignore" "$WORKSPACE/cares" -cp "$DEPS_DIR/cares/cares.gyp" "$WORKSPACE/cares" - -echo "Replacing existing c-ares" -rm -rf "$DEPS_DIR/cares" -mv "$WORKSPACE/cares" "$DEPS_DIR/" - -echo "All done!" -echo "" -echo "Please git add c-ares, commit the new version:" -echo "" -echo "$ git add -A deps/cares" -echo "$ git commit -m \"deps: update c-ares to $ARES_VERSION\"" -echo "" From 5012ab4e8693c7aa32fa7d6a989e48ebf298b233 Mon Sep 17 00:00:00 2001 From: Abdirahim Musse <33973272+abmusse@users.noreply.github.com> Date: Sat, 11 Mar 2023 00:26:25 -0600 Subject: [PATCH 058/186] test: fallback to IPv4 if IPv6 is unavailable openssl seems to default to use IPv6. This change adds a checks if IPv6 is unavailable and uses IPv4 instead. On the Node.js CI IBM i build system IPv6 is currently disabled. This change should resolve the following test case failures: - https://ci.nodejs.org/job/node-test-commit-ibmi/nodes=ibmi73-ppc64/1085/testReport/(root)/test/sequential_test_tls_psk_client_/ - https://ci.nodejs.org/job/node-test-commit-ibmi/nodes=ibmi73-ppc64/1085/testReport/(root)/test/sequential_test_tls_securepair_client_/ PR-URL: https://github.com/nodejs/node/pull/47017 Reviewed-By: Luigi Pinca Reviewed-By: Richard Lau Reviewed-By: Yagiz Nizipli --- test/sequential/test-tls-psk-client.js | 2 ++ test/sequential/test-tls-securepair-client.js | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/test/sequential/test-tls-psk-client.js b/test/sequential/test-tls-psk-client.js index cb15acd01fcccb..ddebc8f8cc9807 100644 --- a/test/sequential/test-tls-psk-client.js +++ b/test/sequential/test-tls-psk-client.js @@ -14,6 +14,7 @@ const { spawn } = require('child_process'); const CIPHERS = 'PSK+HIGH'; const KEY = 'd731ef57be09e5204f0b205b60627028'; const IDENTITY = 'Client_identity'; // Hardcoded by `openssl s_server` +const useIPv4 = !common.hasIPv6; const server = spawn(common.opensslCli, [ 's_server', @@ -23,6 +24,7 @@ const server = spawn(common.opensslCli, [ '-psk_hint', IDENTITY, '-nocert', '-rev', + ...(useIPv4 ? ['-4'] : []), ], { encoding: 'utf8' }); let serverErr = ''; let serverOut = ''; diff --git a/test/sequential/test-tls-securepair-client.js b/test/sequential/test-tls-securepair-client.js index c9215c43ad6ddb..f3ca42ad6edfb0 100644 --- a/test/sequential/test-tls-securepair-client.js +++ b/test/sequential/test-tls-securepair-client.js @@ -38,6 +38,8 @@ const fixtures = require('../common/fixtures'); const tls = require('tls'); const spawn = require('child_process').spawn; +const useIPv4 = !common.hasIPv6; + test1(); // simple/test-tls-securepair-client @@ -64,7 +66,9 @@ function test(keyPath, certPath, check, next) { const server = spawn(common.opensslCli, ['s_server', '-accept', 0, '-cert', fixtures.path(certPath), - '-key', fixtures.path(keyPath)]); + '-key', fixtures.path(keyPath), + ...(useIPv4 ? ['-4'] : []), + ]); server.stdout.pipe(process.stdout); server.stderr.pipe(process.stdout); From 27a5bd7f30020f653f7252e52d271a8a5a033fb3 Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Sat, 11 Mar 2023 08:22:39 +0100 Subject: [PATCH 059/186] tools: dont use cached node versions in daily wpt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/47024 Reviewed-By: Michaël Zasso Reviewed-By: Yagiz Nizipli Reviewed-By: Colin Ihrig Reviewed-By: Luigi Pinca Reviewed-By: Richard Lau --- .github/workflows/daily-wpt-fyi.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/daily-wpt-fyi.yml b/.github/workflows/daily-wpt-fyi.yml index 63221fc2269d5b..2fd1334b0db935 100644 --- a/.github/workflows/daily-wpt-fyi.yml +++ b/.github/workflows/daily-wpt-fyi.yml @@ -48,6 +48,7 @@ jobs: uses: actions/setup-node@v3 with: node-version: ${{ env.NIGHTLY || matrix.node-version }} + check-latest: true - name: Get nightly ref if: contains(matrix.node-version, 'nightly') env: From 86c831f643ab5434406d1bec7a40495e0b1bb228 Mon Sep 17 00:00:00 2001 From: Darshan Sen Date: Sat, 11 Mar 2023 14:28:52 +0530 Subject: [PATCH 060/186] doc,test: extend the list of platforms supported by single-executables Now that https://github.com/nodejs/node/pull/46934 has landed, we can extend the list of platforms and architectures where we can run the single-executable test. Signed-off-by: Darshan Sen PR-URL: https://github.com/nodejs/node/pull/47026 Reviewed-By: Debadree Chatterjee Reviewed-By: Colin Ihrig Reviewed-By: Matteo Collina --- doc/api/single-executable-applications.md | 4 +++- ...g-single-executable-application-support.md | 4 +++- .../test-single-executable-application.js | 23 ++++++++++--------- 3 files changed, 18 insertions(+), 13 deletions(-) diff --git a/doc/api/single-executable-applications.md b/doc/api/single-executable-applications.md index fb69681a12c9a7..1af2d4dbdd7a7f 100644 --- a/doc/api/single-executable-applications.md +++ b/doc/api/single-executable-applications.md @@ -153,7 +153,8 @@ platforms: * Windows * macOS -* Linux (AMD64 only) +* Linux (all distributions [supported by Node.js][] except Alpine and all + architectures [supported by Node.js][] except s390x and ppc64) This is due to a lack of better tools to generate single-executables that can be used to test this feature on other platforms. @@ -174,3 +175,4 @@ to help us document them. [postject]: https://github.com/nodejs/postject [signtool]: https://learn.microsoft.com/en-us/windows/win32/seccrypto/signtool [single executable applications]: https://github.com/nodejs/single-executable +[supported by Node.js]: https://github.com/nodejs/node/blob/main/BUILDING.md#platform-list diff --git a/doc/contributing/maintaining-single-executable-application-support.md b/doc/contributing/maintaining-single-executable-application-support.md index e3957230f3001e..51cafb5ae6fb4b 100644 --- a/doc/contributing/maintaining-single-executable-application-support.md +++ b/doc/contributing/maintaining-single-executable-application-support.md @@ -54,7 +54,9 @@ for the following features are in the list of work we'd like to get to: * Running an archive of multiple files. * Embedding [Node.js CLI options][] into the binary. * [XCOFF][] executable format. -* Run tests on Linux architectures/distributions other than AMD64 Ubuntu. +* Run tests on Alpine Linux. +* Run tests on s390x Linux. +* Run tests on ppc64 Linux. ## Disabling single executable application support diff --git a/test/parallel/test-single-executable-application.js b/test/parallel/test-single-executable-application.js index f41b9d7778d7d3..902093dc6e412d 100644 --- a/test/parallel/test-single-executable-application.js +++ b/test/parallel/test-single-executable-application.js @@ -16,8 +16,10 @@ if (!process.config.variables.single_executable_application) if (!['darwin', 'win32', 'linux'].includes(process.platform)) common.skip(`Unsupported platform ${process.platform}.`); -if (process.platform === 'linux' && process.config.variables.asan) - common.skip('Running the resultant binary fails with `Segmentation fault (core dumped)`.'); +if (process.platform === 'linux' && process.config.variables.asan) { + // Source of the memory leak - https://github.com/nodejs/node/blob/da0bc6db98cef98686122ea1e2cd2dbd2f52d123/src/node_sea.cc#L94. + common.skip('Running the resultant binary fails because of a memory leak ASAN error.'); +} if (process.platform === 'linux' && process.config.variables.is_debug === 1) common.skip('Running the resultant binary fails with `Couldn\'t read target executable"`.'); @@ -39,17 +41,16 @@ if (process.config.variables.want_separate_host_toolset !== 0) common.skip('Running the resultant binary fails with `Segmentation fault (core dumped)`.'); if (process.platform === 'linux') { - try { - const osReleaseText = readFileSync('/etc/os-release', { encoding: 'utf-8' }); - if (!/^NAME="Ubuntu"/m.test(osReleaseText)) { - throw new Error('Not Ubuntu.'); - } - } catch { - common.skip('Only supported Linux distribution is Ubuntu.'); + const osReleaseText = readFileSync('/etc/os-release', { encoding: 'utf-8' }); + const isAlpine = /^NAME="Alpine Linux"/m.test(osReleaseText); + if (isAlpine) common.skip('Alpine Linux is not supported.'); + + if (process.arch === 's390x') { + common.skip('On s390x, postject fails with `memory access out of bounds`.'); } - if (process.arch !== 'x64') { - common.skip(`Unsupported architecture for Linux - ${process.arch}.`); + if (process.arch === 'ppc64') { + common.skip('On ppc64, this test times out.'); } } From 10c1ab00fdf5519ee9278a0658c8e644d58e0493 Mon Sep 17 00:00:00 2001 From: Theodor Steiner <40017636+Theo-Steiner@users.noreply.github.com> Date: Sat, 11 Mar 2023 18:53:50 +0900 Subject: [PATCH 061/186] benchmark: replace table in docs with description of file tree structure The markdown table in `benchmark/README.md` has grown stale, no longer providing an overview over all existing benchmarks. As it has proven difficult to keep an exhaustive listing of available benchmarks up to date, this commit provides a description of how the directory is structured instead. PR-URL: https://github.com/nodejs/node/pull/46991 Reviewed-By: Kohei Ueno Reviewed-By: Yagiz Nizipli --- benchmark/README.md | 45 ++++++++++++++------------------------------- 1 file changed, 14 insertions(+), 31 deletions(-) diff --git a/benchmark/README.md b/benchmark/README.md index 710731b3c9f0fd..96bd0318465f45 100644 --- a/benchmark/README.md +++ b/benchmark/README.md @@ -9,39 +9,22 @@ directory, see [the guide on benchmarks](../doc/contributing/writing-and-running ## Table of Contents -* [Benchmark directories](#benchmark-directories) +* [File tree structure](#file-tree-structure) * [Common API](#common-api) -## Benchmark Directories - -| Directory | Purpose | -| --------------- | ---------------------------------------------------------------------------------------------------------------- | -| assert | Benchmarks for the `assert` subsystem. | -| buffers | Benchmarks for the `buffer` subsystem. | -| child\_process | Benchmarks for the `child_process` subsystem. | -| crypto | Benchmarks for the `crypto` subsystem. | -| dgram | Benchmarks for the `dgram` subsystem. | -| domain | Benchmarks for the `domain` subsystem. | -| es | Benchmarks for various new ECMAScript features and their pre-ES2015 counterparts. | -| events | Benchmarks for the `events` subsystem. | -| fixtures | Benchmarks fixtures used in various benchmarks throughout the benchmark suite. | -| fs | Benchmarks for the `fs` subsystem. | -| http | Benchmarks for the `http` subsystem. | -| http2 | Benchmarks for the `http2` subsystem. | -| misc | Miscellaneous benchmarks and benchmarks for shared internal modules. | -| module | Benchmarks for the `module` subsystem. | -| net | Benchmarks for the `net` subsystem. | -| path | Benchmarks for the `path` subsystem. | -| perf\_hooks | Benchmarks for the `perf_hooks` subsystem. | -| process | Benchmarks for the `process` subsystem. | -| querystring | Benchmarks for the `querystring` subsystem. | -| streams | Benchmarks for the `streams` subsystem. | -| string\_decoder | Benchmarks for the `string_decoder` subsystem. | -| timers | Benchmarks for the `timers` subsystem, including `setTimeout`, `setInterval`, .etc. | -| tls | Benchmarks for the `tls` subsystem. | -| url | Benchmarks for the `url` subsystem, including the legacy `url` implementation and the WHATWG URL implementation. | -| util | Benchmarks for the `util` subsystem. | -| vm | Benchmarks for the `vm` subsystem. | +## File tree structure + +### Directories + +Benchmarks testing the performance of a single node submodule are placed into a +directory with the corresponding name, so that they can be executed by submodule +or individually. +Benchmarks that span multiple submodules may either be placed into the `misc` +directory or into a directory named after the feature they benchmark. +E.g. benchmarks for various new ECMAScript features and their pre-ES2015 +counterparts are placed in a directory named `es`. +Fixtures that are not specific to a certain benchmark but can be reused +throughout the benchmark suite should be placed in the `fixtures` directory. ### Other Top-level files From 03fd5ae04da7eb655680f867d56e845aa4242c35 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Sat, 11 Mar 2023 14:52:43 +0100 Subject: [PATCH 062/186] test: move `test-tls-autoselectfamily-servername` to `test/internet` MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit And switch from `google.com` to `nodejs.org`. PR-URL: https://github.com/nodejs/node/pull/47029 Reviewed-By: Moshe Atlow Reviewed-By: Colin Ihrig Reviewed-By: Luigi Pinca Reviewed-By: Richard Lau Reviewed-By: Paolo Insogna Reviewed-By: Tobias Nießen --- .../test-tls-autoselectfamily-servername.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) rename test/{parallel => internet}/test-tls-autoselectfamily-servername.js (83%) diff --git a/test/parallel/test-tls-autoselectfamily-servername.js b/test/internet/test-tls-autoselectfamily-servername.js similarity index 83% rename from test/parallel/test-tls-autoselectfamily-servername.js rename to test/internet/test-tls-autoselectfamily-servername.js index f2b0f7b3499b85..ae53875b677821 100644 --- a/test/parallel/test-tls-autoselectfamily-servername.js +++ b/test/internet/test-tls-autoselectfamily-servername.js @@ -1,6 +1,7 @@ 'use strict'; const common = require('../common'); +const { addresses: { INET_HOST } } = require('../common/internet'); if (!common.hasCrypto) { common.skip('missing crypto'); @@ -15,9 +16,9 @@ setDefaultAutoSelectFamilyAttemptTimeout(common.platformTimeout(common.isWindows // Test that TLS connecting works without autoSelectFamily { const socket = connect({ - host: 'google.com', + host: INET_HOST, port: 443, - servername: 'google.com', + servername: INET_HOST, autoSelectFamily: false, }); @@ -27,9 +28,9 @@ setDefaultAutoSelectFamilyAttemptTimeout(common.platformTimeout(common.isWindows // Test that TLS connecting works with autoSelectFamily { const socket = connect({ - host: 'google.com', + host: INET_HOST, port: 443, - servername: 'google.com', + servername: INET_HOST, autoSelectFamily: true, }); From 7f2ab4e629852741f3b4a879ff622082711e4b45 Mon Sep 17 00:00:00 2001 From: Eungyu Lee <35999704+Dailyscat@users.noreply.github.com> Date: Sun, 12 Mar 2023 13:47:18 +0900 Subject: [PATCH 063/186] debugger: add a command to set which lines to check for context PR-URL: https://github.com/nodejs/node/pull/46812 Reviewed-By: Kohei Ueno --- lib/internal/debugger/inspect_repl.js | 17 +++++-- test/fixtures/debugger/twenty-lines.js | 20 ++++++++ .../test-debugger-set-context-line-number.mjs | 50 +++++++++++++++++++ 3 files changed, 84 insertions(+), 3 deletions(-) create mode 100644 test/fixtures/debugger/twenty-lines.js create mode 100644 test/sequential/test-debugger-set-context-line-number.mjs diff --git a/lib/internal/debugger/inspect_repl.js b/lib/internal/debugger/inspect_repl.js index a1b3f0d705ec4c..91c0da67d7fd99 100644 --- a/lib/internal/debugger/inspect_repl.js +++ b/lib/internal/debugger/inspect_repl.js @@ -46,7 +46,7 @@ const { const { ERR_DEBUGGER_ERROR } = require('internal/errors').codes; -const { validateString } = require('internal/validators'); +const { validateString, validateNumber } = require('internal/validators'); const FS = require('fs'); const Path = require('path'); @@ -81,7 +81,7 @@ out, o Step out, leaving the current function backtrace, bt Print the current backtrace list Print the source around the current line where execution is currently paused - +setContextLineNumber Set which lines to check for context setBreakpoint, sb Set a breakpoint clearBreakpoint, cb Clear a breakpoint breakpoints List all known breakpoints @@ -381,6 +381,7 @@ function createRepl(inspector) { let currentBacktrace; let selectedFrame; let exitDebugRepl; + let contextLineNumber = 2; function resetOnStart() { knownScripts = {}; @@ -685,6 +686,15 @@ function createRepl(inspector) { }); } + function setContextLineNumber(delta = 2) { + if (!selectedFrame) { + throw new ERR_DEBUGGER_ERROR('Requires execution to be paused'); + } + validateNumber(delta, 'delta', 1); + contextLineNumber = delta; + print(`The contextLine has been changed to ${delta}.`); + } + function handleBreakpointResolved({ breakpointId, location }) { const script = knownScripts[location.scriptId]; const scriptUrl = script && script.url; @@ -897,7 +907,7 @@ function createRepl(inspector) { inspector.suspendReplWhile(() => PromisePrototypeThen( - SafePromiseAllReturnArrayLike([formatWatchers(true), selectedFrame.list(2)]), + SafePromiseAllReturnArrayLike([formatWatchers(true), selectedFrame.list(contextLineNumber)]), ({ 0: watcherList, 1: context }) => { const breakContext = watcherList ? `${watcherList}\n${inspect(context)}` : @@ -1159,6 +1169,7 @@ function createRepl(inspector) { }, list, + setContextLineNumber, }); aliasProperties(context, SHORTCUTS); } diff --git a/test/fixtures/debugger/twenty-lines.js b/test/fixtures/debugger/twenty-lines.js new file mode 100644 index 00000000000000..e29e4801baf8be --- /dev/null +++ b/test/fixtures/debugger/twenty-lines.js @@ -0,0 +1,20 @@ +let x = 0; +x = 1; +x = 2; +x = 3; +x = 4; +x = 5; +x = 6; +x = 7; +x = 8; +x = 9; +x = 10; +x = 11; +x = 12; +x = 13; +x = 14; +x = 15; +x = 16; +x = 17; +x = 18; +module.exports = x; diff --git a/test/sequential/test-debugger-set-context-line-number.mjs b/test/sequential/test-debugger-set-context-line-number.mjs new file mode 100644 index 00000000000000..adb6d9ab9e52b0 --- /dev/null +++ b/test/sequential/test-debugger-set-context-line-number.mjs @@ -0,0 +1,50 @@ +import { skipIfInspectorDisabled } from '../common/index.mjs'; +skipIfInspectorDisabled(); + +import { path } from '../common/fixtures.mjs'; +import startCLI from '../common/debugger.js'; + +import assert from 'assert'; + +const script = path('debugger', 'twenty-lines.js'); +const cli = startCLI([script]); + +function onFatal(error) { + cli.quit(); + throw error; +} + +function getLastLine(output) { + const splittedByLine = output.split(';'); + return splittedByLine[splittedByLine.length - 2]; +} + +// Stepping through breakpoints. +try { + await cli.waitForInitialBreak(); + await cli.waitForPrompt(); + + await cli.command('setContextLineNumber("1")'); + assert.ok(cli.output.includes('argument must be of type number. Received type string')); + + await cli.command('setContextLineNumber(0)'); + assert.ok(cli.output.includes('It must be >= 1. Received 0')); + + // Make sure the initial value is 2. + await cli.stepCommand('n'); + assert.ok(getLastLine(cli.output).includes('4 x = 3')); + + await cli.command('setContextLineNumber(5)'); + await cli.stepCommand('n'); + assert.ok(getLastLine(cli.output).includes('8 x = 7')); + + await cli.command('setContextLineNumber(3)'); + await cli.stepCommand('n'); + assert.ok(getLastLine(cli.output).includes('7 x = 6')); + await cli.command('list(3)'); + assert.ok(getLastLine(cli.output).includes('7 x = 6')); + + await cli.quit(); +} catch (error) { + onFatal(error); +} From 2660a321e15196b8bc69320db9fc7e3bbe2d05ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Nie=C3=9Fen?= Date: Sun, 12 Mar 2023 19:35:55 +0100 Subject: [PATCH 064/186] tls: support automatic DHE Node.js has so far only supported user-defined DHE parameters and even recommended generating custom parameters. This change lets users set the dhparam option to 'auto' instead, in which case DHE parameters of sufficient strength are selected automatically (from a small set of well-known parameters). This has been recommended by OpenSSL for quite a while, and it makes it much easier for Node.js TLS servers to properly support DHE-based perfect forward secrecy. This also updates the documentation to prioritize ECDHE over DHE, mostly because the former tends to be more efficient and is enabled by default. PR-URL: https://github.com/nodejs/node/pull/46978 Reviewed-By: Luigi Pinca Reviewed-By: Ben Noordhuis --- doc/api/tls.md | 42 ++++++++-------- lib/internal/tls/secure-context.js | 2 +- src/crypto/crypto_context.cc | 9 ++++ .../test-tls-client-getephemeralkeyinfo.js | 17 ++++++- test/parallel/test-tls-dhe.js | 50 +++++++++++++++---- 5 files changed, 87 insertions(+), 33 deletions(-) diff --git a/doc/api/tls.md b/doc/api/tls.md index 7cbcee6ad3a0b6..1ae615bd027281 100644 --- a/doc/api/tls.md +++ b/doc/api/tls.md @@ -123,23 +123,17 @@ all sessions). Methods implementing this technique are called "ephemeral". Currently two methods are commonly used to achieve perfect forward secrecy (note the character "E" appended to the traditional abbreviations): -* [DHE][]: An ephemeral version of the Diffie-Hellman key-agreement protocol. * [ECDHE][]: An ephemeral version of the Elliptic Curve Diffie-Hellman key-agreement protocol. +* [DHE][]: An ephemeral version of the Diffie-Hellman key-agreement protocol. -To use perfect forward secrecy using `DHE` with the `node:tls` module, it is -required to generate Diffie-Hellman parameters and specify them with the -`dhparam` option to [`tls.createSecureContext()`][]. The following illustrates -the use of the OpenSSL command-line interface to generate such parameters: - -```bash -openssl dhparam -outform PEM -out dhparam.pem 2048 -``` +Perfect forward secrecy using ECDHE is enabled by default. The `ecdhCurve` +option can be used when creating a TLS server to customize the list of supported +ECDH curves to use. See [`tls.createServer()`][] for more info. -If using perfect forward secrecy using `ECDHE`, Diffie-Hellman parameters are -not required and a default ECDHE curve will be used. The `ecdhCurve` property -can be used when creating a TLS Server to specify the list of names of supported -curves to use, see [`tls.createServer()`][] for more info. +DHE is disabled by default but can be enabled alongside ECDHE by setting the +`dhparam` option to `'auto'`. Custom DHE parameters are also supported but +discouraged in favor of automatically selected, well-known parameters. Perfect forward secrecy was optional up to TLSv1.2. As of TLSv1.3, (EC)DHE is always used (with the exception of PSK-only connections). @@ -1798,6 +1792,10 @@ argument. > Stability: 1 - Experimental @@ -153,7 +153,7 @@ Binds the given function to the current execution context. ### Static method: `AsyncLocalStorage.snapshot()` > Stability: 1 - Experimental diff --git a/doc/api/buffer.md b/doc/api/buffer.md index 90c2c3b1aa6e53..d6e2831dd09913 100644 --- a/doc/api/buffer.md +++ b/doc/api/buffer.md @@ -1061,7 +1061,7 @@ console.log(bufA.length); ### Static method: `Buffer.copyBytesFrom(view[, offset[, length]])` * `view` {TypedArray} The {TypedArray} to copy. diff --git a/doc/api/events.md b/doc/api/events.md index f1ee1de01121a1..6f009d6bc7d4cd 100644 --- a/doc/api/events.md +++ b/doc/api/events.md @@ -651,7 +651,7 @@ set by [`emitter.setMaxListeners(n)`][] or defaults to diff --git a/doc/api/fs.md b/doc/api/fs.md index 1a48fc072ac450..dfb49e92fc0fc4 100644 --- a/doc/api/fs.md +++ b/doc/api/fs.md @@ -3333,7 +3333,7 @@ Functions based on `fs.open()` exhibit this behavior as well: ### `fs.openAsBlob(path[, options])` > Stability: 1 - Experimental diff --git a/doc/api/net.md b/doc/api/net.md index 2b67e85a32d9e2..ba0591baea077a 100644 --- a/doc/api/net.md +++ b/doc/api/net.md @@ -1645,7 +1645,7 @@ Sets the default value of the `autoSelectFamily` option of [`socket.connect(opt ## `net.getDefaultAutoSelectFamilyAttemptTimeout()` Gets the current default value of the `autoSelectFamilyAttemptTimeout` option of [`socket.connect(options)`][]. @@ -1655,7 +1655,7 @@ Gets the current default value of the `autoSelectFamilyAttemptTimeout` option o ## `net.setDefaultAutoSelectFamilyAttemptTimeout(value)` Sets the default value of the `autoSelectFamilyAttemptTimeout` option of [`socket.connect(options)`][]. diff --git a/doc/api/stream.md b/doc/api/stream.md index d3719dc640f6c8..6feb891600c953 100644 --- a/doc/api/stream.md +++ b/doc/api/stream.md @@ -2799,7 +2799,7 @@ const server = http.createServer((req, res) => { diff --git a/doc/api/test.md b/doc/api/test.md index 310bf0d685ffe3..e59889fff78731 100644 --- a/doc/api/test.md +++ b/doc/api/test.md @@ -857,7 +857,9 @@ Shorthand for marking a suite as `TODO`, same as ## `describe.only([name][, options][, fn])` Shorthand for marking a suite as `only`, same as @@ -870,7 +872,7 @@ added: - v18.6.0 - v16.17.0 changes: - - version: REPLACEME + - version: v19.8.0 pr-url: https://github.com/nodejs/node/pull/46889 description: Calling `it()` is now equivalent to calling `test()`. --> @@ -892,7 +894,9 @@ same as [`it([name], { todo: true }[, fn])`][it options]. ## `it.only([name][, options][, fn])` Shorthand for marking a test as `only`, diff --git a/doc/api/tls.md b/doc/api/tls.md index 1ae615bd027281..b115b172306912 100644 --- a/doc/api/tls.md +++ b/doc/api/tls.md @@ -1792,7 +1792,7 @@ argument. * {string} The default value of the `ciphers` option of diff --git a/doc/api/url.md b/doc/api/url.md index a3ea03ba5b4118..d4d1b70f018085 100644 --- a/doc/api/url.md +++ b/doc/api/url.md @@ -943,7 +943,7 @@ console.log(params.toString()); #### `urlSearchParams.size` The total number of parameter entries. diff --git a/doc/api/wasi.md b/doc/api/wasi.md index a57b85bb0d3c6d..ac395b70894c99 100644 --- a/doc/api/wasi.md +++ b/doc/api/wasi.md @@ -121,7 +121,7 @@ added: - v13.3.0 - v12.16.0 changes: - - version: REPLACEME + - version: v19.8.0 pr-url: https://github.com/nodejs/node/pull/46469 description: version field added to options. --> @@ -152,7 +152,7 @@ changes: ### `wasi.getImportObject()` Return an import object that can be passed to `WebAssembly.instantiate()` if diff --git a/doc/api/worker_threads.md b/doc/api/worker_threads.md index 674424f6f0bf90..ea11b8f45956a4 100644 --- a/doc/api/worker_threads.md +++ b/doc/api/worker_threads.md @@ -906,7 +906,7 @@ if (isMainThread) { * `url` {URL} The [WHATWG URL][] object to convert to an options object. diff --git a/lib/internal/url.js b/lib/internal/url.js index 2d8a84629464bc..fe4dab1224be39 100644 --- a/lib/internal/url.js +++ b/lib/internal/url.js @@ -1098,26 +1098,32 @@ function domainToUnicode(domain) { return _domainToUnicode(`${domain}`); } -// Utility function that converts a URL object into an ordinary -// options object as expected by the http.request and https.request -// APIs. +/** + * Utility function that converts a URL object into an ordinary options object + * as expected by the `http.request` and `https.request` APIs. + * @param {URL} url + * @returns {Record} + */ function urlToHttpOptions(url) { + const { hostname, pathname, port, username, password, search } = url; const options = { + __proto__: null, + ...url, // In case the url object was extended by the user. protocol: url.protocol, - hostname: url.hostname && StringPrototypeStartsWith(url.hostname, '[') ? - StringPrototypeSlice(url.hostname, 1, -1) : - url.hostname, + hostname: hostname && StringPrototypeStartsWith(hostname, '[') ? + StringPrototypeSlice(hostname, 1, -1) : + hostname, hash: url.hash, - search: url.search, - pathname: url.pathname, - path: `${url.pathname || ''}${url.search || ''}`, + search: search, + pathname: pathname, + path: `${pathname || ''}${search || ''}`, href: url.href, }; - if (url.port !== '') { - options.port = Number(url.port); + if (port !== '') { + options.port = Number(port); } - if (url.username || url.password) { - options.auth = `${decodeURIComponent(url.username)}:${decodeURIComponent(url.password)}`; + if (username || password) { + options.auth = `${decodeURIComponent(username)}:${decodeURIComponent(password)}`; } return options; } diff --git a/test/parallel/test-http-client-request-options.js b/test/parallel/test-http-client-request-options.js new file mode 100644 index 00000000000000..e642ef4fa94d01 --- /dev/null +++ b/test/parallel/test-http-client-request-options.js @@ -0,0 +1,27 @@ +'use strict'; + +const common = require('../common'); +const assert = require('node:assert'); +const http = require('node:http'); + +const headers = { foo: 'Bar' }; +const server = http.createServer(common.mustCall((req, res) => { + assert.strictEqual(req.url, '/ping?q=term'); + assert.strictEqual(req.headers?.foo, headers.foo); + req.resume(); + req.on('end', () => { + res.writeHead(200); + res.end('pong'); + }); +})); + +server.listen(0, common.localhostIPv4, () => { + const { address, port } = server.address(); + const url = new URL(`http://${address}:${port}/ping?q=term`); + url.headers = headers; + const clientReq = http.request(url); + clientReq.on('close', common.mustCall(() => { + server.close(); + })); + clientReq.end(); +}); From 142d6af8c10a81887f27d6e68e62556a96d158f3 Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Sun, 19 Mar 2023 07:33:44 +0000 Subject: [PATCH 105/186] test,crypto: update WebCryptoAPI WPT MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/47131 Reviewed-By: Tobias Nießen Reviewed-By: Luigi Pinca --- test/fixtures/wpt/README.md | 2 +- .../derive_bits_keys/cfrg_curves_bits.js | 47 +++++++++++++++++++ .../derive_bits_keys/cfrg_curves_keys.js | 14 ++++++ .../import_export/okp_importKey_failures.js | 2 +- ...kp_importKey_failures_Ed25519.https.any.js | 8 ++++ .../okp_importKey_failures_Ed448.https.any.js | 8 ++++ ...okp_importKey_failures_X25519.https.any.js | 8 ++++ .../okp_importKey_failures_X448.https.any.js | 8 ++++ test/fixtures/wpt/versions.json | 2 +- 9 files changed, 96 insertions(+), 3 deletions(-) diff --git a/test/fixtures/wpt/README.md b/test/fixtures/wpt/README.md index 8919af5a7c484c..0a19086a73c220 100644 --- a/test/fixtures/wpt/README.md +++ b/test/fixtures/wpt/README.md @@ -31,7 +31,7 @@ Last update: - user-timing: https://github.com/web-platform-tests/wpt/tree/df24fb604e/user-timing - wasm/jsapi: https://github.com/web-platform-tests/wpt/tree/d8dbe6990b/wasm/jsapi - wasm/webapi: https://github.com/web-platform-tests/wpt/tree/fd1b23eeaa/wasm/webapi -- WebCryptoAPI: https://github.com/web-platform-tests/wpt/tree/ee30029d47/WebCryptoAPI +- WebCryptoAPI: https://github.com/web-platform-tests/wpt/tree/1406b5c0d0/WebCryptoAPI - webidl/ecmascript-binding/es-exceptions: https://github.com/web-platform-tests/wpt/tree/a370aad338/webidl/ecmascript-binding/es-exceptions - webmessaging/broadcastchannel: https://github.com/web-platform-tests/wpt/tree/e97fac4791/webmessaging/broadcastchannel diff --git a/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_bits.js b/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_bits.js index 9a824ce9514b60..463f687f1652e4 100644 --- a/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_bits.js +++ b/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_bits.js @@ -23,6 +23,53 @@ function define_tests() { "X448": new Uint8Array([240, 246, 197, 241, 127, 148, 244, 41, 30, 171, 113, 120, 134, 109, 55, 236, 137, 6, 221, 108, 81, 65, 67, 220, 133, 190, 124, 242, 141, 239, 243, 155, 114, 110, 15, 109, 207, 129, 14, 181, 148, 220, 169, 123, 72, 130, 189, 68, 196, 62, 167, 220, 103, 244, 154, 78]) }; + var kSmallOrderPoint = { + "X25519": [ + { order: "0", vector : new Uint8Array([48, 42, 48, 5, 6, 3, 43, 101, 110, 3, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) }, + { order: "1", vector : new Uint8Array([48, 42, 48, 5, 6, 3, 43, 101, 110, 3, 33, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) }, + { order: "8", vector : new Uint8Array([48, 42, 48, 5, 6, 3, 43, 101, 110, 3, 33, 0, 224, 235, 122, 124, 59, 65, 184, 174, 22, 86, 227, 250, 241, 159, 196, 106, 218, 9, 141, 235, 156, 50, 177, 253, 134, 98, 5, 22, 95, 73, 184, 0]) }, + { order: "p-1 (order 2)", vector : new Uint8Array([48, 42, 48, 5, 6, 3, 43, 101, 110, 3, 33, 0, 236, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127]) }, + { order: "p (=0, order 4)", vector : new Uint8Array([48, 42, 48, 5, 6, 3, 43, 101, 110, 3, 33, 0, 237, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127]) }, + { order: "p+1 (=1, order 1)", vector : new Uint8Array([48, 42, 48, 5, 6, 3, 43, 101, 110, 3, 33, 0, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127]) }, + ], + "X448": [ + { order: "0", vector : new Uint8Array([48, 66, 48, 5, 6, 3, 43, 101, 111, 3, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) }, + { order: "1", vector : new Uint8Array([48, 66, 48, 5, 6, 3, 43, 101, 111, 3, 57, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) }, + { order: "p-1 (order 2)", vector : new Uint8Array([48, 66, 48, 5, 6, 3, 43, 101, 111, 3, 57, 0, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]) }, + { order: "p (=0, order 4)", vector : new Uint8Array([48, 66, 48, 5, 6, 3, 43, 101, 111, 3, 57, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]) }, + { order: "p+1 (=1, order 1)", vector : new Uint8Array([48, 66, 48, 5, 6, 3, 43, 101, 111, 3, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]) }, + ] + }; + + // Verify the derive functions perform checks against the all-zero value results, + // ensuring small-order points are rejected. + // https://www.rfc-editor.org/rfc/rfc7748#section-6.1 + // TODO: The spec states that the check must be done on use, but there is discussion about doing it on import. + // https://github.com/WICG/webcrypto-secure-curves/pull/13 + Object.keys(kSmallOrderPoint).forEach(function(algorithmName) { + kSmallOrderPoint[algorithmName].forEach(function(test) { + promise_test(async() => { + let derived; + let privateKey = await subtle.importKey("pkcs8", pkcs8[algorithmName], + {name: algorithmName}, + false, ["deriveBits", "deriveKey"]); + let publicKey = await subtle.importKey("spki", test.vector, + {name: algorithmName}, + false, []) + try { + derived = await subtle.deriveKey({name: algorithmName, public: publicKey}, privateKey, + {name: "HMAC", hash: "SHA-256", length: 256}, true, + ["sign", "verify"]); + } catch (err) { + assert_false(privateKey === undefined, "Private key should be valid."); + assert_false(publicKey === undefined, "Public key should be valid."); + assert_equals(err.name, "OperationError", "Should throw correct error, not " + err.name + ": " + err.message + "."); + } + assert_equals(derived, undefined, "Operation succeeded, but should not have."); + }, algorithmName + " key derivation checks for all-zero value result with a key of order " + test.order); + }); + }); + return importKeys(pkcs8, spki, sizes) .then(function(results) { publicKeys = results.publicKeys; diff --git a/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_keys.js b/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_keys.js index 1e8e9d48d394ad..3c53697ce3c49b 100644 --- a/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_keys.js +++ b/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_keys.js @@ -23,6 +23,20 @@ function define_tests() { "X448": new Uint8Array([240, 246, 197, 241, 127, 148, 244, 41, 30, 171, 113, 120, 134, 109, 55, 236, 137, 6, 221, 108, 81, 65, 67, 220, 133, 190, 124, 242, 141, 239, 243, 155, 114, 110, 15, 109, 207, 129, 14, 181, 148, 220, 169, 123, 72, 130, 189, 68, 196, 62, 167, 220, 103, 244, 154, 78]) }; + // Ensure the keys generated by each algorithm are valid for key derivation. + Object.keys(sizes).forEach(function(algorithmName) { + promise_test(async() => { + let derived; + try { + let key = await subtle.generateKey({name: algorithmName}, true, ["deriveKey", "deriveBits"]); + derived = await subtle.deriveKey({name: algorithmName, public: key.publicKey}, key.privateKey, {name: "HMAC", hash: "SHA-256", length: 256}, true, ["sign", "verify"]); + } catch (err) { + assert_unreached("Threw an unexpected error: " + err.toString() + " -"); + } + assert_false (derived === undefined, "Key derivation failed."); + }, "Key derivation using a " + algorithmName + " generated keys."); + }); + return importKeys(pkcs8, spki, sizes) .then(function(results) { publicKeys = results.publicKeys; diff --git a/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures.js b/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures.js index 4e2d717595127b..a5cc08a01e9fc1 100644 --- a/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures.js +++ b/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures.js @@ -99,7 +99,7 @@ function run_test(algorithmNames) { } function validUsages(usages, format, data) { - if (format === 'spki') return usages.publicUsages + if (format === 'spki' || format === 'raw') return usages.publicUsages if (format === 'pkcs8') return usages.privateUsages if (format === 'jwk') { if (data === undefined) diff --git a/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures_Ed25519.https.any.js b/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures_Ed25519.https.any.js index 7d6ec6171c3e8f..7453a3a55052b3 100644 --- a/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures_Ed25519.https.any.js +++ b/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures_Ed25519.https.any.js @@ -15,6 +15,10 @@ var validKeyData = [ format: "pkcs8", data: new Uint8Array([48, 46, 2, 1, 0, 48, 5, 6, 3, 43, 101, 112, 4, 34, 4, 32, 243, 200, 244, 196, 141, 248, 120, 20, 110, 140, 211, 191, 109, 244, 229, 14, 56, 155, 167, 7, 78, 21, 194, 53, 45, 205, 93, 48, 141, 76, 168, 31]) }, + { + format: "raw", + data: new Uint8Array([216, 225, 137, 99, 216, 9, 212, 135, 217, 84, 154, 204, 174, 198, 116, 46, 126, 235, 162, 77, 138, 13, 59, 20, 183, 227, 202, 234, 6, 137, 61, 204]) + }, { format: "jwk", data: { @@ -44,6 +48,10 @@ var badKeyLengthData = [ format: "pkcs8", data: new Uint8Array([48, 46, 2, 1, 0, 48, 5, 6, 3, 43, 101, 112, 4, 34, 4, 32, 243, 200, 244, 196, 141, 248, 120, 20, 110, 140, 211, 191, 109, 244, 229, 14, 56, 155, 167, 7, 78, 21, 194, 53, 45, 205, 93, 48, 141, 76, 168]) }, + { + format: "raw", + data: new Uint8Array([216, 225, 137, 99, 216, 9, 212, 135, 217, 84, 154, 204, 174, 198, 116, 46, 126, 235, 162, 77, 138, 13, 59, 20, 183, 227, 202, 234, 6, 137, 61]) + }, { format: "jwk", data: { diff --git a/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures_Ed448.https.any.js b/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures_Ed448.https.any.js index 1035800fafa394..db2d47827af329 100644 --- a/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures_Ed448.https.any.js +++ b/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures_Ed448.https.any.js @@ -15,6 +15,10 @@ var validKeyData = [ format: "pkcs8", data: new Uint8Array([48, 71, 2, 1, 0, 48, 5, 6, 3, 43, 101, 113, 4, 59, 4, 57, 14, 255, 3, 69, 140, 40, 224, 23, 156, 82, 29, 227, 18, 201, 105, 183, 131, 67, 72, 236, 171, 153, 26, 96, 227, 178, 233, 167, 158, 76, 217, 228, 128, 239, 41, 23, 18, 210, 200, 61, 4, 114, 114, 213, 201, 244, 40, 102, 79, 105, 109, 38, 112, 69, 143, 29, 46]), }, + { + format: "raw", + data: new Uint8Array([171, 75, 184, 133, 253, 125, 44, 90, 242, 78, 131, 113, 12, 255, 160, 199, 74, 87, 226, 116, 128, 29, 178, 5, 123, 11, 220, 94, 160, 50, 182, 254, 107, 199, 139, 128, 69, 54, 90, 235, 38, 232, 110, 31, 20, 253, 52, 157, 7, 196, 132, 149, 245, 164, 106, 90, 128]), + }, { format: "jwk", data: { @@ -44,6 +48,10 @@ var badKeyLengthData = [ format: "pkcs8", data: new Uint8Array([48, 71, 2, 1, 0, 48, 5, 6, 3, 43, 101, 113, 4, 59, 4, 57, 14, 255, 3, 69, 140, 40, 224, 23, 156, 82, 29, 227, 18, 201, 105, 183, 131, 67, 72, 236, 171, 153, 26, 96, 227, 178, 233, 167, 158, 76, 217, 228, 128, 239, 41, 23, 18, 210, 200, 61, 4, 114, 114, 213, 201, 244, 40, 102, 79, 105, 109, 38, 112, 69, 143, 29]), }, + { + format: "raw", + data: new Uint8Array([171, 75, 184, 133, 253, 125, 44, 90, 242, 78, 131, 113, 12, 255, 160, 199, 74, 87, 226, 116, 128, 29, 178, 5, 123, 11, 220, 94, 160, 50, 182, 254, 107, 199, 139, 128, 69, 54, 90, 235, 38, 232, 110, 31, 20, 253, 52, 157, 7, 196, 132, 149, 245, 164, 106, 90]), + }, { format: "jwk", data: { diff --git a/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures_X25519.https.any.js b/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures_X25519.https.any.js index fe5fd54da53d2d..d4d099f7656033 100644 --- a/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures_X25519.https.any.js +++ b/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures_X25519.https.any.js @@ -15,6 +15,10 @@ var validKeyData = [ format: "pkcs8", data: new Uint8Array([48, 46, 2, 1, 0, 48, 5, 6, 3, 43, 101, 110, 4, 34, 4, 32, 200, 131, 142, 118, 208, 87, 223, 183, 216, 201, 90, 105, 225, 56, 22, 10, 221, 99, 115, 253, 113, 164, 210, 118, 187, 86, 227, 168, 27, 100, 255, 97]), }, + { + format: "raw", + data: new Uint8Array([28, 242, 177, 230, 2, 46, 197, 55, 55, 30, 215, 245, 62, 84, 250, 17, 84, 216, 62, 152, 235, 100, 234, 81, 250, 229, 179, 48, 124, 254, 151, 6]), + }, { format: "jwk", data: { @@ -44,6 +48,10 @@ var badKeyLengthData = [ format: "pkcs8", data: new Uint8Array([48, 46, 2, 1, 0, 48, 5, 6, 3, 43, 101, 110, 4, 34, 4, 32, 200, 131, 142, 118, 208, 87, 223, 183, 216, 201, 90, 105, 225, 56, 22, 10, 221, 99, 115, 253, 113, 164, 210, 118, 187, 86, 227, 168, 27, 100, 255]), }, + { + format: "raw", + data: new Uint8Array([28, 242, 177, 230, 2, 46, 197, 55, 55, 30, 215, 245, 62, 84, 250, 17, 84, 216, 62, 152, 235, 100, 234, 81, 250, 229, 179, 48, 124, 254, 151]), + }, { format: "jwk", data: { diff --git a/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures_X448.https.any.js b/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures_X448.https.any.js index 9e3b05c48ad55f..d8ac902e672566 100644 --- a/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures_X448.https.any.js +++ b/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures_X448.https.any.js @@ -15,6 +15,10 @@ var validKeyData = [ format: "pkcs8", data: new Uint8Array([48, 70, 2, 1, 0, 48, 5, 6, 3, 43, 101, 111, 4, 58, 4, 56, 88, 199, 210, 154, 62, 181, 25, 178, 157, 0, 207, 177, 145, 187, 100, 252, 109, 138, 66, 216, 241, 113, 118, 39, 43, 137, 242, 39, 45, 24, 25, 41, 92, 101, 37, 192, 130, 150, 113, 176, 82, 239, 7, 39, 83, 15, 24, 142, 49, 208, 204, 83, 191, 38, 146, 158]), }, + { + format: "raw", + data: new Uint8Array([182, 4, 161, 209, 165, 205, 29, 148, 38, 213, 97, 239, 99, 10, 158, 177, 108, 190, 105, 213, 185, 202, 97, 94, 220, 83, 99, 62, 251, 82, 234, 49, 230, 230, 160, 161, 219, 172, 198, 231, 108, 188, 230, 72, 45, 126, 75, 163, 213, 93, 158, 128, 39, 101, 206, 111]), + }, { format: "jwk", data: { @@ -44,6 +48,10 @@ var badKeyLengthData = [ format: "pkcs8", data: new Uint8Array([48, 70, 2, 1, 0, 48, 5, 6, 3, 43, 101, 111, 4, 58, 4, 56, 88, 199, 210, 154, 62, 181, 25, 178, 157, 0, 207, 177, 145, 187, 100, 252, 109, 138, 66, 216, 241, 113, 118, 39, 43, 137, 242, 39, 45, 24, 25, 41, 92, 101, 37, 192, 130, 150, 113, 176, 82, 239, 7, 39, 83, 15, 24, 142, 49, 208, 204, 83, 191, 38, 146]), }, + { + format: "raw", + data: new Uint8Array([182, 4, 161, 209, 165, 205, 29, 148, 38, 213, 97, 239, 99, 10, 158, 177, 108, 190, 105, 213, 185, 202, 97, 94, 220, 83, 99, 62, 251, 82, 234, 49, 230, 230, 160, 161, 219, 172, 198, 231, 108, 188, 230, 72, 45, 126, 75, 163, 213, 93, 158, 128, 39, 101, 206]), + }, { format: "jwk", data: { diff --git a/test/fixtures/wpt/versions.json b/test/fixtures/wpt/versions.json index 5b907c709a9bed..8699b783b1423f 100644 --- a/test/fixtures/wpt/versions.json +++ b/test/fixtures/wpt/versions.json @@ -84,7 +84,7 @@ "path": "wasm/webapi" }, "WebCryptoAPI": { - "commit": "ee30029d47cf9f7cf8f71fe851b4c29903edf851", + "commit": "1406b5c0d07b5e8dd08e328c451e42c23f3b96c8", "path": "WebCryptoAPI" }, "webidl/ecmascript-binding/es-exceptions": { From 0fd14e403476eb0d002cfa116d6ce3be9d591106 Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Sun, 19 Mar 2023 18:25:47 +0900 Subject: [PATCH 106/186] deps: cherry-pick win/arm64/clang fixes Refs: ngtcp2/nghttp3#112 Refs: ngtcp2/ngtcp2#692 Refs: HdrHistogram/HdrHistogram_c#114 PR-URL: https://github.com/nodejs/node/pull/47011 Refs: https://github.com/ngtcp2/nghttp3/pull/112 Refs: https://github.com/ngtcp2/ngtcp2/pull/692 Refs: https://github.com/HdrHistogram/HdrHistogram_c/pull/114 Reviewed-By: Jiawen Geng --- deps/histogram/src/hdr_atomic.h | 2 +- deps/histogram/src/hdr_histogram.c | 4 ++-- deps/ngtcp2/nghttp3/lib/nghttp3_ringbuf.c | 2 +- deps/ngtcp2/ngtcp2/lib/ngtcp2_ringbuf.c | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/deps/histogram/src/hdr_atomic.h b/deps/histogram/src/hdr_atomic.h index ae1056a83612af..11b0cbd3facfdc 100644 --- a/deps/histogram/src/hdr_atomic.h +++ b/deps/histogram/src/hdr_atomic.h @@ -8,7 +8,7 @@ #define HDR_ATOMIC_H__ -#if defined(_MSC_VER) +#if defined(_MSC_VER) && !(defined(__clang__) && (defined(_M_ARM) || defined(_M_ARM64))) #include #include diff --git a/deps/histogram/src/hdr_histogram.c b/deps/histogram/src/hdr_histogram.c index 4bcfbeb049bf59..0132cbeba7c84e 100644 --- a/deps/histogram/src/hdr_histogram.c +++ b/deps/histogram/src/hdr_histogram.c @@ -127,7 +127,7 @@ static int64_t power(int64_t base, int64_t exp) return result; } -#if defined(_MSC_VER) +#if defined(_MSC_VER) && !(defined(__clang__) && (defined(_M_ARM) || defined(_M_ARM64))) # if defined(_WIN64) # pragma intrinsic(_BitScanReverse64) # else @@ -137,7 +137,7 @@ static int64_t power(int64_t base, int64_t exp) static int32_t count_leading_zeros_64(int64_t value) { -#if defined(_MSC_VER) +#if defined(_MSC_VER) && !(defined(__clang__) && (defined(_M_ARM) || defined(_M_ARM64))) uint32_t leading_zero = 0; #if defined(_WIN64) _BitScanReverse64(&leading_zero, value); diff --git a/deps/ngtcp2/nghttp3/lib/nghttp3_ringbuf.c b/deps/ngtcp2/nghttp3/lib/nghttp3_ringbuf.c index 9ea91c81c8a1b9..5e7775f1a5a597 100644 --- a/deps/ngtcp2/nghttp3/lib/nghttp3_ringbuf.c +++ b/deps/ngtcp2/nghttp3/lib/nghttp3_ringbuf.c @@ -33,7 +33,7 @@ #include "nghttp3_macro.h" -#if defined(_MSC_VER) && defined(_M_ARM64) +#if defined(_MSC_VER) && !defined(__clang__) && (defined(_M_ARM) || defined(_M_ARM64)) unsigned int __popcnt(unsigned int x) { unsigned int c = 0; for (; x; ++c) { diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_ringbuf.c b/deps/ngtcp2/ngtcp2/lib/ngtcp2_ringbuf.c index a6b3f73e73339c..74e488bce76f24 100644 --- a/deps/ngtcp2/ngtcp2/lib/ngtcp2_ringbuf.c +++ b/deps/ngtcp2/ngtcp2/lib/ngtcp2_ringbuf.c @@ -31,7 +31,7 @@ #include "ngtcp2_macro.h" -#if defined(_MSC_VER) && defined(_M_ARM64) +#if defined(_MSC_VER) && !defined(__clang__) && (defined(_M_ARM) || defined(_M_ARM64)) unsigned int __popcnt(unsigned int x) { unsigned int c = 0; for (; x; ++c) { From 3904ef8d772a8be94ffc9d72ceff73506e81b657 Mon Sep 17 00:00:00 2001 From: Khafra Date: Sun, 19 Mar 2023 08:58:19 -0400 Subject: [PATCH 107/186] events: add getMaxListeners method PR-URL: https://github.com/nodejs/node/pull/47039 Reviewed-By: Debadree Chatterjee Reviewed-By: Benjamin Gruenbaum --- doc/api/events.md | 52 ++++++++++++++++++++ lib/events.js | 18 +++++++ test/parallel/test-events-getmaxlisteners.js | 19 +++++++ 3 files changed, 89 insertions(+) create mode 100644 test/parallel/test-events-getmaxlisteners.js diff --git a/doc/api/events.md b/doc/api/events.md index 6f009d6bc7d4cd..f5a17224693360 100644 --- a/doc/api/events.md +++ b/doc/api/events.md @@ -1266,6 +1266,58 @@ const { getEventListeners, EventEmitter } = require('node:events'); } ``` +## `events.getMaxListeners(emitterOrTarget)` + + + +* `emitterOrTarget` {EventEmitter|EventTarget} +* Returns: {number} + +Returns the currently set max amount of listeners. + +For `EventEmitter`s this behaves exactly the same as calling `.getMaxListeners` on +the emitter. + +For `EventTarget`s this is the only way to get the max event listeners for the +event target. If the number of event handlers on a single EventTarget exceeds +the max set, the EventTarget will print a warning. + +```mjs +import { getMaxListeners, setMaxListeners, EventEmitter } from 'node:events'; + +{ + const ee = new EventEmitter(); + console.log(getMaxListeners(ee)); // 10 + setMaxListeners(11, ee); + console.log(getMaxListeners(ee)); // 11 +} +{ + const et = new EventTarget(); + console.log(getMaxListeners(et)); // 10 + setMaxListeners(11, et); + console.log(getMaxListeners(et)); // 11 +} +``` + +```cjs +const { getMaxListeners, setMaxListeners, EventEmitter } = require('node:events'); + +{ + const ee = new EventEmitter(); + console.log(getMaxListeners(ee)); // 10 + setMaxListeners(11, ee); + console.log(getMaxListeners(ee)); // 11 +} +{ + const et = new EventTarget(); + console.log(getMaxListeners(et)); // 10 + setMaxListeners(11, et); + console.log(getMaxListeners(et)); // 11 +} +``` + ## `events.once(emitter, name[, options])` * [aduh95](https://github.com/aduh95) - @@ -205,28 +207,39 @@ For information about the governance of the Node.js project, see * [Trott](https://github.com/Trott) - **Rich Trott** <> (he/him) -
- -Emeriti - -### TSC emeriti +#### TSC regular members * [addaleax](https://github.com/addaleax) - **Anna Henningsen** <> (she/her) * [bnoordhuis](https://github.com/bnoordhuis) - **Ben Noordhuis** <> -* [chrisdickinson](https://github.com/chrisdickinson) - - **Chris Dickinson** <> * [codebytere](https://github.com/codebytere) - **Shelley Vohr** <> (she/her) * [danbev](https://github.com/danbev) - **Daniel Bevenius** <> (he/him) +* [gabrielschulhof](https://github.com/gabrielschulhof) - + **Gabriel Schulhof** <> +* [mscdex](https://github.com/mscdex) - + **Brian White** <> +* [MylesBorins](https://github.com/MylesBorins) - + **Myles Borins** <> (he/him) +* [rvagg](https://github.com/rvagg) - + **Rod Vagg** <> +* [TimothyGu](https://github.com/TimothyGu) - + **Tiancheng "Timothy" Gu** <> (he/him) + +
+ +TSC emeriti members + +#### TSC emeriti members + +* [chrisdickinson](https://github.com/chrisdickinson) - + **Chris Dickinson** <> * [evanlucas](https://github.com/evanlucas) - **Evan Lucas** <> (he/him) * [Fishrock123](https://github.com/Fishrock123) - **Jeremiah Senkpiel** <> (he/they) -* [gabrielschulhof](https://github.com/gabrielschulhof) - - **Gabriel Schulhof** <> * [gibfahn](https://github.com/gibfahn) - **Gibson Fahnestock** <> (he/him) * [indutny](https://github.com/indutny) - @@ -237,10 +250,6 @@ For information about the governance of the Node.js project, see **Josh Gavant** <> * [mmarchini](https://github.com/mmarchini) - **Mary Marchini** <> (she/her) -* [mscdex](https://github.com/mscdex) - - **Brian White** <> -* [MylesBorins](https://github.com/MylesBorins) - - **Myles Borins** <> (he/him) * [nebrius](https://github.com/nebrius) - **Bryan Hughes** <> * [ofrobots](https://github.com/ofrobots) - @@ -249,16 +258,12 @@ For information about the governance of the Node.js project, see **Alexis Campailla** <> * [piscisaureus](https://github.com/piscisaureus) - **Bert Belder** <> -* [rvagg](https://github.com/rvagg) - - **Rod Vagg** <> * [sam-github](https://github.com/sam-github) - **Sam Roberts** <> * [shigeki](https://github.com/shigeki) - **Shigeki Ohtsu** <> (he/him) * [thefourtheye](https://github.com/thefourtheye) - **Sakthipriyan Vairamani** <> (he/him) -* [TimothyGu](https://github.com/TimothyGu) - - **Tiancheng "Timothy" Gu** <> (he/him) * [trevnorris](https://github.com/trevnorris) - **Trevor Norris** <> diff --git a/tools/find-inactive-tsc.mjs b/tools/find-inactive-tsc.mjs index 2d4b71ad5b7430..52cba2d2d8f3db 100755 --- a/tools/find-inactive-tsc.mjs +++ b/tools/find-inactive-tsc.mjs @@ -1,12 +1,10 @@ #!/usr/bin/env node -// Identify inactive TSC members. +// Identify inactive TSC voting members. // From the TSC Charter: -// A TSC member is automatically removed from the TSC if, during a 3-month -// period, all of the following are true: -// * They attend fewer than 25% of the regularly scheduled meetings. -// * They do not participate in any TSC votes. +// A TSC voting member is automatically converted to a TSC regular member if +// they do not participate in three consecutive TSC votes. import cp from 'node:child_process'; import fs from 'node:fs'; @@ -20,9 +18,8 @@ const args = parseArgs({ }); const verbose = args.values.verbose; -const SINCE = args.positionals[0] || '3 months ago'; -async function runGitCommand(cmd, options = {}) { +async function runShellCommand(cmd, options = {}) { const childProcess = cp.spawn('/bin/sh', ['-c', cmd], { cwd: options.cwd ?? new URL('..', import.meta.url), encoding: 'utf8', @@ -34,17 +31,14 @@ async function runGitCommand(cmd, options = {}) { const errorHandler = new Promise( (_, reject) => childProcess.on('error', reject), ); - let returnValue = options.mapFn ? new Set() : ''; + let returnValue = options.returnAsArray ? [] : ''; await Promise.race([errorHandler, Promise.resolve()]); // If no mapFn, return the value. If there is a mapFn, use it to make a Set to // return. for await (const line of lines) { await Promise.race([errorHandler, Promise.resolve()]); - if (options.mapFn) { - const val = options.mapFn(line); - if (val) { - returnValue.add(val); - } + if (options.returnAsArray) { + returnValue.push(line); } else { returnValue += line; } @@ -60,6 +54,13 @@ async function getTscFromReadme() { const returnedArray = []; let foundTscHeading = false; for await (const line of readmeText) { + // Until three votes have passed from March 16, 2023, we will need this. + // After that point, we can use this for setting `foundTscHeading` below + // and remove this. + if (line === '#### TSC voting members') { + continue; + } + // If we've found the TSC heading already, stop processing at the next // heading. if (foundTscHeading && line.startsWith('#')) { @@ -84,36 +85,6 @@ async function getTscFromReadme() { return returnedArray; } -async function getAttendance(tscMembers, meetings) { - const attendance = {}; - for (const member of tscMembers) { - attendance[member] = 0; - } - for (const meeting of meetings) { - // Get the file contents. - const meetingFile = - await fs.promises.readFile(path.join('.tmp', meeting), 'utf8'); - // Extract the attendee list. - const startMarker = '## Present'; - const start = meetingFile.indexOf(startMarker) + startMarker.length; - const end = meetingFile.indexOf('## Agenda'); - meetingFile.substring(start, end).trim().split('\n') - .map((line) => { - const match = line.match(/@(\S+)/); - if (match) { - return match[1]; - } - // Using `console.warn` so that stdout output is not generated. - // The stdout output is consumed in find-inactive-tsc.yml. - console.warn(`Attendee entry does not contain GitHub handle: ${line}`); - return ''; - }) - .filter((handle) => tscMembers.includes(handle)) - .forEach((handle) => { attendance[handle]++; }); - } - return attendance; -} - async function getVotingRecords(tscMembers, votes) { const votingRecords = {}; for (const member of tscMembers) { @@ -122,7 +93,7 @@ async function getVotingRecords(tscMembers, votes) { for (const vote of votes) { // Get the vote data. const voteData = JSON.parse( - await fs.promises.readFile(path.join('.tmp', vote), 'utf8'), + await fs.promises.readFile(path.join('.tmp/votes', vote), 'utf8'), ); for (const member in voteData.votes) { if (tscMembers.includes(member)) { @@ -133,22 +104,22 @@ async function getVotingRecords(tscMembers, votes) { return votingRecords; } -async function moveTscToEmeritus(peopleToMove) { +async function moveVotingToRegular(peopleToMove) { const readmeText = readline.createInterface({ input: fs.createReadStream(new URL('../README.md', import.meta.url)), crlfDelay: Infinity, }); let fileContents = ''; - let inTscSection = false; - let inTscEmeritusSection = false; + let inTscVotingSection = false; + let inTscRegularSection = false; let memberFirstLine = ''; const textToMove = []; let moveToInactive = false; for await (const line of readmeText) { - // If we've been processing TSC emeriti and we reach the end of + // If we've been processing TSC regular members and we reach the end of // the list, print out the remaining entries to be moved because they come // alphabetically after the last item. - if (inTscEmeritusSection && line === '' && + if (inTscRegularSection && line === '' && fileContents.endsWith('>\n')) { while (textToMove.length) { fileContents += textToMove.pop(); @@ -158,21 +129,21 @@ async function moveTscToEmeritus(peopleToMove) { // If we've found the TSC heading already, stop processing at the // next heading. if (line.startsWith('#')) { - inTscSection = false; - inTscEmeritusSection = false; + inTscVotingSection = false; + inTscRegularSection = false; } - const isTsc = inTscSection && line.length; - const isTscEmeritus = inTscEmeritusSection && line.length; + const isTscVoting = inTscVotingSection && line.length; + const isTscRegular = inTscRegularSection && line.length; - if (line === '### TSC (Technical Steering Committee)') { - inTscSection = true; + if (line === '#### TSC voting members') { + inTscVotingSection = true; } - if (line === '### TSC emeriti') { - inTscEmeritusSection = true; + if (line === '#### TSC regular members') { + inTscRegularSection = true; } - if (isTsc) { + if (isTscVoting) { if (line.startsWith('* ')) { memberFirstLine = line; const match = line.match(/^\* \[([^\]]+)/); @@ -191,7 +162,7 @@ async function moveTscToEmeritus(peopleToMove) { } } - if (isTscEmeritus) { + if (isTscRegular) { if (line.startsWith('* ')) { memberFirstLine = line; } else if (line.startsWith(' **')) { @@ -207,7 +178,7 @@ async function moveTscToEmeritus(peopleToMove) { } } - if (!isTsc && !isTscEmeritus) { + if (!isTscVoting && !isTscRegular) { fileContents += `${line}\n`; } } @@ -215,71 +186,54 @@ async function moveTscToEmeritus(peopleToMove) { return fileContents; } -// Get current TSC members, then get TSC members at start of period. Only check -// TSC members who are on both lists. This way, we don't flag someone who has -// only been on the TSC for a week and therefore hasn't attended any meetings. +// Get current TSC voting members, then get TSC voting members at start of +// period. Only check TSC voting members who are on both lists. This way, we +// don't flag someone who hasn't been on the TSC long enough to have missed 3 +// consecutive votes. const tscMembersAtEnd = await getTscFromReadme(); -const startCommit = await runGitCommand(`git rev-list -1 --before '${SINCE}' HEAD`); -await runGitCommand(`git checkout ${startCommit} -- README.md`); -const tscMembersAtStart = await getTscFromReadme(); -await runGitCommand('git reset HEAD README.md'); -await runGitCommand('git checkout -- README.md'); - -const tscMembers = tscMembersAtEnd.filter( - (memberAtEnd) => tscMembersAtStart.includes(memberAtEnd), -); - -// Get all meetings since SINCE. +// Get the last three votes. // Assumes that the TSC repo is cloned in the .tmp dir. -const meetings = await runGitCommand( - `git whatchanged --since '${SINCE}' --name-only --pretty=format: meetings`, - { cwd: '.tmp', mapFn: (line) => line }, +const votes = await runShellCommand( + 'ls *.json | sort -rn | head -3', + { cwd: '.tmp/votes', returnAsArray: true }, ); -// Get TSC meeting attendance. -const attendance = await getAttendance(tscMembers, meetings); -const lightAttendance = tscMembers.filter( - (member) => attendance[member] < meetings.size * 0.25, -); +// Reverse the votes list so the oldest of the three votes is first. +votes.reverse(); -// Get all votes since SINCE. -// Assumes that the TSC repo is cloned in the .tmp dir. -const votes = await runGitCommand( - `git whatchanged --since '${SINCE}' --name-only --pretty=format: votes/*.json`, - { cwd: '.tmp', mapFn: (line) => line }, +const startCommit = await runShellCommand(`git rev-list -1 --before '${votes[0]}' HEAD`); +await runShellCommand(`git checkout ${startCommit} -- README.md`); +const tscMembersAtStart = await getTscFromReadme(); +await runShellCommand('git reset HEAD README.md'); +await runShellCommand('git checkout -- README.md'); + +const tscMembers = tscMembersAtEnd.filter( + (memberAtEnd) => tscMembersAtStart.includes(memberAtEnd), ); // Check voting record. const votingRecords = await getVotingRecords(tscMembers, votes); -const noVotes = tscMembers.filter( +const inactive = tscMembers.filter( (member) => votingRecords[member] === 0, ); -const inactive = lightAttendance.filter((member) => noVotes.includes(member)); - if (inactive.length) { // The stdout output is consumed in find-inactive-tsc.yml. If format of output // changes, find-inactive-tsc.yml may need to be updated. console.log(`INACTIVE_TSC_HANDLES=${inactive.map((entry) => '@' + entry).join(' ')}`); - const commitDetails = inactive.map((entry) => { - let details = `Since ${SINCE}, `; - details += `${entry} attended ${attendance[entry]} out of ${meetings.size} meetings`; - details += ` and voted in ${votingRecords[entry]} of ${votes.size} votes.`; - return details; - }); - console.log(`DETAILS_FOR_COMMIT_BODY=${commitDetails.join(' ')}`); + const commitDetails = `${inactive.join(' ')} did not participate in three consecutive TSC votes: ${votes.join(' ')}`; + console.log(`DETAILS_FOR_COMMIT_BODY=${commitDetails}`); if (process.env.GITHUB_ACTIONS) { // Using console.warn() to avoid messing with find-inactive-tsc which // consumes stdout. console.warn('Generating new README.md file...'); - const newReadmeText = await moveTscToEmeritus(inactive); + const newReadmeText = await moveVotingToRegular(inactive); fs.writeFileSync(new URL('../README.md', import.meta.url), newReadmeText); } } if (verbose) { - console.log(attendance); console.log(votingRecords); } From 321387e2cbd1ef2406a02e33bcb7047591d9bff5 Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Thu, 16 Mar 2023 11:00:31 -0700 Subject: [PATCH 113/186] doc: update collaborator guide to reflect TSC changes Ref: https://github.com/nodejs/TSC/pull/1350 PR-URL: https://github.com/nodejs/node/pull/47126 Refs: https://github.com/nodejs/TSC/pull/1350 Reviewed-By: Antoine du Hamel Reviewed-By: Darshan Sen --- doc/contributing/collaborator-guide.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/contributing/collaborator-guide.md b/doc/contributing/collaborator-guide.md index 2670915c7abd79..84c5ea7396ce21 100644 --- a/doc/contributing/collaborator-guide.md +++ b/doc/contributing/collaborator-guide.md @@ -340,8 +340,8 @@ For undocumented APIs that are public, open a pull request documenting the API. ### Breaking changes -At least two TSC members must approve backward-incompatible changes to the -`main` branch. +At least two TSC voting members must approve backward-incompatible changes to +the `main` branch. Examples of breaking changes include: @@ -411,7 +411,7 @@ possible to avoid confusion and typosquatting attacks. For pull requests introducing new core modules: * Allow at least one week for review. -* Land only after sign-off from at least two TSC members. +* Land only after sign-off from at least two TSC voting members. * Land with a [Stability Index][] of Experimental. The module must remain Experimental until a semver-major release. @@ -742,7 +742,7 @@ git push upstream main ### I made a mistake -* Ping a TSC member. +* Ping a TSC voting member. * With `git`, there's a way to override remote trees by force pushing (`git push -f`). This is generally forbidden as it creates conflicts in other people's forks. It is permissible for simpler slip-ups such as typos in commit From 2984cc38da49a15dd198d4610fda9217353014dc Mon Sep 17 00:00:00 2001 From: Chengzhong Wu Date: Mon, 20 Mar 2023 17:58:31 +0800 Subject: [PATCH 114/186] node-api: document node-api shutdown finalization As status quo, the cleanup hooks are invoked before the `napi_finalize` callbacks at the exit of Node.js environments. This gives addons a chance to release their resource in a proper order manually. Document this behavior explicitly to advocate the usage on cleanup hooks instead of relying on the implied invocation of `napi_finalize` callbacks at shutdown. PR-URL: https://github.com/nodejs/node/pull/45903 Fixes: https://github.com/nodejs/node/issues/45088 Reviewed-By: James M Snell Reviewed-By: Michael Dawson --- doc/api/n-api.md | 45 +++++++++++++++++++++++++++++++-------------- 1 file changed, 31 insertions(+), 14 deletions(-) diff --git a/doc/api/n-api.md b/doc/api/n-api.md index bcb53ef8df5b7b..82f18ac0ab328f 100644 --- a/doc/api/n-api.md +++ b/doc/api/n-api.md @@ -478,11 +478,11 @@ may be called multiple times, from multiple contexts, and even concurrently from multiple threads. Native addons may need to allocate global state which they use during -their entire life cycle such that the state must be unique to each instance of -the addon. +their life cycle of an Node.js environment such that the state can be +unique to each instance of the addon. -To this end, Node-API provides a way to allocate data such that its life cycle -is tied to the life cycle of the Agent. +To this end, Node-API provides a way to associate data such that its life cycle +is tied to the life cycle of a Node.js environment. ### `napi_set_instance_data` @@ -510,11 +510,11 @@ napi_status napi_set_instance_data(napi_env env, Returns `napi_ok` if the API succeeded. -This API associates `data` with the currently running Agent. `data` can later -be retrieved using `napi_get_instance_data()`. Any existing data associated with -the currently running Agent which was set by means of a previous call to -`napi_set_instance_data()` will be overwritten. If a `finalize_cb` was provided -by the previous call, it will not be called. +This API associates `data` with the currently running Node.js environment. `data` +can later be retrieved using `napi_get_instance_data()`. Any existing data +associated with the currently running Node.js environment which was set by means +of a previous call to `napi_set_instance_data()` will be overwritten. If a +`finalize_cb` was provided by the previous call, it will not be called. ### `napi_get_instance_data` @@ -532,13 +532,13 @@ napi_status napi_get_instance_data(napi_env env, * `[in] env`: The environment that the Node-API call is invoked under. * `[out] data`: The data item that was previously associated with the currently - running Agent by a call to `napi_set_instance_data()`. + running Node.js environment by a call to `napi_set_instance_data()`. Returns `napi_ok` if the API succeeded. This API retrieves data that was previously associated with the currently -running Agent via `napi_set_instance_data()`. If no data is set, the call will -succeed and `data` will be set to `NULL`. +running Node.js environment via `napi_set_instance_data()`. If no data is set, +the call will succeed and `data` will be set to `NULL`. ## Basic Node-API data types @@ -1801,11 +1801,11 @@ If still valid, this API returns the `napi_value` representing the JavaScript `Object` associated with the `napi_ref`. Otherwise, result will be `NULL`. -### Cleanup on exit of the current Node.js instance +### Cleanup on exit of the current Node.js environment While a Node.js process typically releases all its resources when exiting, embedders of Node.js, or future Worker support, may require addons to register -clean-up hooks that will be run once the current Node.js instance exits. +clean-up hooks that will be run once the current Node.js environment exits. Node-API provides functions for registering and un-registering such callbacks. When those callbacks are run, all resources that are being held by the addon @@ -1931,6 +1931,22 @@ the hook from being executed, unless it has already started executing. This must be called on any `napi_async_cleanup_hook_handle` value obtained from [`napi_add_async_cleanup_hook`][]. +### Finalization on the exit of the Node.js environment + +The Node.js environment may be torn down at an arbitrary time as soon as +possible with JavaScript execution disallowed, like on the request of +[`worker.terminate()`][]. When the environment is being torn down, the +registered `napi_finalize` callbacks of JavaScript objects, Thread-safe +functions and environment instance data are invoked immediately and +independently. + +The invocation of `napi_finalize` callbacks are scheduled after the manually +registered cleanup hooks. In order to ensure a proper order of addon +finalization during environment shutdown to avoid use-after-free in the +`napi_finalize` callback, addons should register a cleanup hook with +`napi_add_env_cleanup_hook` and `napi_add_async_cleanup_hook` to manually +release the allocated resource in a proper order. + ## Module registration Node-API modules are registered in a manner similar to other modules @@ -6435,6 +6451,7 @@ the add-on's file name during loading. [`process.release`]: process.md#processrelease [`uv_ref`]: https://docs.libuv.org/en/v1.x/handle.html#c.uv_ref [`uv_unref`]: https://docs.libuv.org/en/v1.x/handle.html#c.uv_unref +[`worker.terminate()`]: worker_threads.md#workerterminate [async_hooks `type`]: async_hooks.md#type [context-aware addons]: addons.md#context-aware-addons [docs]: https://github.com/nodejs/node-addon-api#api-documentation From bc0aa359384f66150f33d4943023ff2c55365dbd Mon Sep 17 00:00:00 2001 From: "Node.js GitHub Bot" Date: Mon, 20 Mar 2023 16:24:07 +0000 Subject: [PATCH 115/186] meta: move TSC voting member to regular membership MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/46985 Reviewed-By: Richard Lau Reviewed-By: Michael Dawson Reviewed-By: Rich Trott Reviewed-By: Michaël Zasso Reviewed-By: Darshan Sen --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f8bc7f03c101ec..295f0c600ad4ab 100644 --- a/README.md +++ b/README.md @@ -176,8 +176,6 @@ For information about the governance of the Node.js project, see **Colin Ihrig** <> (he/him) * [danielleadams](https://github.com/danielleadams) - **Danielle Adams** <> (she/her) -* [fhinkel](https://github.com/fhinkel) - - **Franziska Hinkelmann** <> (she/her) * [GeoffreyBooth](https://github.com/geoffreybooth) - **Geoffrey Booth** <> (he/him) * [gireeshpunathil](https://github.com/gireeshpunathil) - @@ -217,6 +215,8 @@ For information about the governance of the Node.js project, see **Shelley Vohr** <> (she/her) * [danbev](https://github.com/danbev) - **Daniel Bevenius** <> (he/him) +* [fhinkel](https://github.com/fhinkel) - + **Franziska Hinkelmann** <> (she/her) * [gabrielschulhof](https://github.com/gabrielschulhof) - **Gabriel Schulhof** <> * [mscdex](https://github.com/mscdex) - From 252a06900728e11d6052f9e9812328d69b794c90 Mon Sep 17 00:00:00 2001 From: Khafra Date: Mon, 20 Mar 2023 18:01:41 -0400 Subject: [PATCH 116/186] buffer: use private properties for brand checks in File PR-URL: https://github.com/nodejs/node/pull/47154 Refs: https://github.com/nodejs/node/pull/46904 Reviewed-By: Yagiz Nizipli Reviewed-By: Luigi Pinca --- lib/internal/file.js | 9 --------- test/parallel/test-file.js | 17 +++++++++++------ 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/lib/internal/file.js b/lib/internal/file.js index 8ef858d67e2d9c..4c6ca4f61fa4d8 100644 --- a/lib/internal/file.js +++ b/lib/internal/file.js @@ -21,7 +21,6 @@ const { const { codes: { - ERR_INVALID_THIS, ERR_MISSING_ARGS, }, } = require('internal/errors'); @@ -64,18 +63,10 @@ class File extends Blob { } get name() { - if (!this || !(#name in this)) { - throw new ERR_INVALID_THIS('File'); - } - return this.#name; } get lastModified() { - if (!this || !(#name in this)) { - throw new ERR_INVALID_THIS('File'); - } - return this.#lastModified; } diff --git a/test/parallel/test-file.js b/test/parallel/test-file.js index 64a83f77ef919d..bfc4548421be23 100644 --- a/test/parallel/test-file.js +++ b/test/parallel/test-file.js @@ -146,10 +146,15 @@ const { inspect } = require('util'); { const getter = Object.getOwnPropertyDescriptor(File.prototype, 'name').get; - assert.throws( - () => getter.call(undefined), // eslint-disable-line no-useless-call - { - code: 'ERR_INVALID_THIS', - } - ); + + [ + undefined, + null, + true, + ].forEach((invalidThis) => { + assert.throws( + () => getter.call(invalidThis), + TypeError + ); + }); } From 965ea9d586a49a42328f32aa339dc661e7ebf26d Mon Sep 17 00:00:00 2001 From: Shubham Sharma Date: Mon, 20 Mar 2023 22:21:03 +0000 Subject: [PATCH 117/186] doc: fix typos in async_context.md PR-URL: https://github.com/nodejs/node/pull/47155 Reviewed-By: Debadree Chatterjee Reviewed-By: Luigi Pinca Reviewed-By: Deokjin Kim Reviewed-By: Harshitha K P Reviewed-By: Chengzhong Wu --- doc/api/async_context.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/api/async_context.md b/doc/api/async_context.md index 9da66ff0372541..7e456aa9be1b03 100644 --- a/doc/api/async_context.md +++ b/doc/api/async_context.md @@ -167,7 +167,7 @@ calls the function passed to it within the captured context. ```js const asyncLocalStorage = new AsyncLocalStorage(); -const runInAsyncScope = asyncLocalStorage.run(123, () => asyncLocalStorage.snapshot()); +const runInAsyncScope = asyncLocalStorage.run(123, () => AsyncLocalStorage.snapshot()); const result = asyncLocalStorage.run(321, () => runInAsyncScope(() => asyncLocalStorage.getStore())); console.log(result); // returns 123 ``` From d1eaded0d1f65330116e8d8c7b07a1507bb84a07 Mon Sep 17 00:00:00 2001 From: Moshe Atlow Date: Tue, 21 Mar 2023 10:16:38 +0200 Subject: [PATCH 118/186] test_runner: count nested tests PR-URL: https://github.com/nodejs/node/pull/47094 Fixes: https://github.com/nodejs/node/issues/46762 Reviewed-By: Colin Ihrig Reviewed-By: Benjamin Gruenbaum --- lib/internal/test_runner/harness.js | 11 ++++ lib/internal/test_runner/reporter/tap.js | 1 + lib/internal/test_runner/runner.js | 33 +++++------ lib/internal/test_runner/test.js | 59 ++++++++----------- lib/internal/test_runner/utils.js | 25 ++++++++ test/message/test_runner_abort.out | 7 ++- test/message/test_runner_abort_suite.out | 9 ++- test/message/test_runner_describe_it.out | 18 ++++-- test/message/test_runner_describe_nested.out | 3 + test/message/test_runner_hooks.out | 17 ++++-- test/message/test_runner_no_refs.out | 5 +- test/message/test_runner_only_tests.out | 10 +++- test/message/test_runner_output.out | 9 +-- test/message/test_runner_output_cli.out | 9 +-- .../test_runner_output_spec_reporter.out | 9 +-- .../message/test_runner_test_name_pattern.out | 11 +++- ...est_runner_test_name_pattern_with_only.out | 7 ++- .../test_runner_unresolved_promise.out | 1 + test/parallel/test-runner-cli.js | 7 ++- .../test-runner-extraneous-async-activity.js | 4 +- .../test_runner_default_reporter.out | 1 + 21 files changed, 163 insertions(+), 93 deletions(-) diff --git a/lib/internal/test_runner/harness.js b/lib/internal/test_runner/harness.js index 26f5a6ef49142c..95a8c5f8691541 100644 --- a/lib/internal/test_runner/harness.js +++ b/lib/internal/test_runner/harness.js @@ -168,6 +168,17 @@ function setup(root) { __proto__: null, bootstrapComplete: false, coverage: null, + counters: { + __proto__: null, + all: 0, + failed: 0, + passed: 0, + cancelled: 0, + skipped: 0, + todo: 0, + planned: 0, + suites: 0, + }, }; root.startTime = hrtime(); return root; diff --git a/lib/internal/test_runner/reporter/tap.js b/lib/internal/test_runner/reporter/tap.js index a5402b4a6084ac..c7d5dd9bdb037f 100644 --- a/lib/internal/test_runner/reporter/tap.js +++ b/lib/internal/test_runner/reporter/tap.js @@ -113,6 +113,7 @@ function reportDetails(nesting, data = kEmptyObject) { let details = `${_indent} ---\n`; details += jsToYaml(_indent, 'duration_ms', duration_ms); + details += jsToYaml(_indent, 'type', data.type); details += jsToYaml(_indent, null, error); details += `${_indent} ...\n`; return details; diff --git a/lib/internal/test_runner/runner.js b/lib/internal/test_runner/runner.js index 8b54d53a2d5a8f..6e6cb4f276a9a3 100644 --- a/lib/internal/test_runner/runner.js +++ b/lib/internal/test_runner/runner.js @@ -10,10 +10,8 @@ const { ArrayPrototypeSome, ArrayPrototypeSort, ArrayPrototypeSplice, - FunctionPrototypeCall, Number, ObjectAssign, - ObjectKeys, PromisePrototypeThen, SafePromiseAll, SafePromiseAllReturnVoid, @@ -55,8 +53,9 @@ const { YAMLToJs } = require('internal/test_runner/yaml_to_js'); const { TokenKind } = require('internal/test_runner/tap_lexer'); const { - isSupportedFileType, + countCompletedTest, doesPathMatchFilter, + isSupportedFileType, } = require('internal/test_runner/utils'); const { basename, join, resolve } = require('path'); const { once } = require('events'); @@ -67,7 +66,7 @@ const { const kFilterArgs = ['--test', '--experimental-test-coverage', '--watch']; const kFilterArgValues = ['--test-reporter', '--test-reporter-destination']; -const kDiagnosticsFilterArgs = ['tests', 'pass', 'fail', 'cancelled', 'skipped', 'todo', 'duration_ms']; +const kDiagnosticsFilterArgs = ['tests', 'suites', 'pass', 'fail', 'cancelled', 'skipped', 'todo', 'duration_ms']; const kCanceledTests = new SafeSet() .add(kCancelledByParent).add(kAborted).add(kTestTimeoutFailure); @@ -151,10 +150,10 @@ function getRunArgs({ path, inspectPort }) { class FileTest extends Test { #buffer = []; - #counters = { __proto__: null, all: 0, failed: 0, passed: 0, cancelled: 0, skipped: 0, todo: 0, totalFailed: 0 }; + #reportedChildren = 0; failedSubtests = false; #skipReporting() { - return this.#counters.all > 0 && (!this.error || this.error.failureType === kSubtestsFailed); + return this.#reportedChildren > 0 && (!this.error || this.error.failureType === kSubtestsFailed); } #checkNestedComment({ comment }) { const firstSpaceIndex = StringPrototypeIndexOf(comment, ' '); @@ -204,11 +203,19 @@ class FileTest extends Test { const method = pass ? 'ok' : 'fail'; this.reporter[method](nesting, this.name, testNumber, node.description, diagnostics, directive); if (nesting === 0) { - FunctionPrototypeCall(super.countSubtest, - { finished: true, skipped: skip, isTodo: todo, passed: pass, cancelled }, - this.#counters); this.failedSubtests ||= !pass; } + this.#reportedChildren++; + countCompletedTest({ + name: node.description, + finished: true, + skipped: skip, + isTodo: todo, + passed: pass, + cancelled, + nesting, + reportedType: diagnostics.type, + }, this.root.harness); break; } @@ -233,14 +240,6 @@ class FileTest extends Test { this.reportStarted(); this.#handleReportItem(ast); } - countSubtest(counters) { - if (this.#counters.all === 0) { - return super.countSubtest(counters); - } - ArrayPrototypeForEach(ObjectKeys(counters), (key) => { - counters[key] += this.#counters[key]; - }); - } reportStarted() {} report() { const skipReporting = this.#skipReporting(); diff --git a/lib/internal/test_runner/test.js b/lib/internal/test_runner/test.js index ffbf2d257aed62..c1203c91177f43 100644 --- a/lib/internal/test_runner/test.js +++ b/lib/internal/test_runner/test.js @@ -34,6 +34,7 @@ const { MockTracker } = require('internal/test_runner/mock'); const { TestsStream } = require('internal/test_runner/tests_stream'); const { createDeferredCallback, + countCompletedTest, isTestFailureError, parseCommandLine, } = require('internal/test_runner/utils'); @@ -186,6 +187,7 @@ class Test extends AsyncResource { this.runOnlySubtests = this.only; this.testNumber = 0; this.timeout = kDefaultTimeout; + this.root = this; } else { const nesting = parent.parent === null ? parent.nesting : parent.nesting + 1; @@ -197,6 +199,7 @@ class Test extends AsyncResource { this.runOnlySubtests = !this.only; this.testNumber = parent.subtests.length + 1; this.timeout = parent.timeout; + this.root = parent.root; } switch (typeof concurrency) { @@ -575,31 +578,7 @@ class Test extends AsyncResource { this.postRun(); } - countSubtest(counters) { - // Check SKIP and TODO tests first, as those should not be counted as - // failures. - if (this.skipped) { - counters.skipped++; - } else if (this.isTodo) { - counters.todo++; - } else if (this.cancelled) { - counters.cancelled++; - } else if (!this.passed) { - counters.failed++; - } else { - counters.passed++; - } - - if (!this.passed) { - counters.totalFailed++; - } - counters.all++; - } - postRun(pendingSubtestsError) { - const counters = { - __proto__: null, all: 0, failed: 0, passed: 0, cancelled: 0, skipped: 0, todo: 0, totalFailed: 0, - }; // If the test was failed before it even started, then the end time will // be earlier than the start time. Correct that here. if (this.endTime < this.startTime) { @@ -610,6 +589,7 @@ class Test extends AsyncResource { // The test has run, so recursively cancel any outstanding subtests and // mark this test as failed if any subtests failed. this.pendingSubtests = []; + let failed = 0; for (let i = 0; i < this.subtests.length; i++) { const subtest = this.subtests[i]; @@ -617,12 +597,14 @@ class Test extends AsyncResource { subtest.#cancel(pendingSubtestsError); subtest.postRun(pendingSubtestsError); } - subtest.countSubtest(counters); + if (!subtest.passed) { + failed++; + } } - if ((this.passed || this.parent === null) && counters.totalFailed > 0) { - const subtestString = `subtest${counters.totalFailed > 1 ? 's' : ''}`; - const msg = `${counters.totalFailed} ${subtestString} failed`; + if ((this.passed || this.parent === null) && failed > 0) { + const subtestString = `subtest${failed > 1 ? 's' : ''}`; + const msg = `${failed} ${subtestString} failed`; this.fail(new ERR_TEST_FAILURE(msg, kSubtestsFailed)); } @@ -637,18 +619,19 @@ class Test extends AsyncResource { this.parent.processPendingSubtests(); } else if (!this.reported) { this.reported = true; - this.reporter.plan(this.nesting, kFilename, counters.all); + this.reporter.plan(this.nesting, kFilename, this.root.harness.counters.planned); for (let i = 0; i < this.diagnostics.length; i++) { this.reporter.diagnostic(this.nesting, kFilename, this.diagnostics[i]); } - this.reporter.diagnostic(this.nesting, kFilename, `tests ${counters.all}`); - this.reporter.diagnostic(this.nesting, kFilename, `pass ${counters.passed}`); - this.reporter.diagnostic(this.nesting, kFilename, `fail ${counters.failed}`); - this.reporter.diagnostic(this.nesting, kFilename, `cancelled ${counters.cancelled}`); - this.reporter.diagnostic(this.nesting, kFilename, `skipped ${counters.skipped}`); - this.reporter.diagnostic(this.nesting, kFilename, `todo ${counters.todo}`); + this.reporter.diagnostic(this.nesting, kFilename, `tests ${this.root.harness.counters.all}`); + this.reporter.diagnostic(this.nesting, kFilename, `suites ${this.root.harness.counters.suites}`); + this.reporter.diagnostic(this.nesting, kFilename, `pass ${this.root.harness.counters.passed}`); + this.reporter.diagnostic(this.nesting, kFilename, `fail ${this.root.harness.counters.failed}`); + this.reporter.diagnostic(this.nesting, kFilename, `cancelled ${this.root.harness.counters.cancelled}`); + this.reporter.diagnostic(this.nesting, kFilename, `skipped ${this.root.harness.counters.skipped}`); + this.reporter.diagnostic(this.nesting, kFilename, `todo ${this.root.harness.counters.todo}`); this.reporter.diagnostic(this.nesting, kFilename, `duration_ms ${this.#duration()}`); if (this.harness?.coverage) { @@ -689,6 +672,7 @@ class Test extends AsyncResource { } report() { + countCompletedTest(this); if (this.subtests.length > 0) { this.reporter.plan(this.subtests[0].nesting, kFilename, this.subtests.length); } else { @@ -703,6 +687,10 @@ class Test extends AsyncResource { directive = this.reporter.getTodo(this.message); } + if (this.reportedType) { + details.type = this.reportedType; + } + if (this.passed) { this.reporter.ok(this.nesting, kFilename, this.testNumber, this.name, details, directive); } else { @@ -746,6 +734,7 @@ class TestHook extends Test { } class Suite extends Test { + reportedType = 'suite'; constructor(options) { super(options); diff --git a/lib/internal/test_runner/utils.js b/lib/internal/test_runner/utils.js index a5068dbf589e63..06393395dde7d2 100644 --- a/lib/internal/test_runner/utils.js +++ b/lib/internal/test_runner/utils.js @@ -222,8 +222,33 @@ function parseCommandLine() { return globalTestOptions; } +function countCompletedTest(test, harness = test.root.harness) { + if (test.nesting === 0) { + harness.counters.planned++; + } + if (test.reportedType === 'suite') { + harness.counters.suites++; + return; + } + // Check SKIP and TODO tests first, as those should not be counted as + // failures. + if (test.skipped) { + harness.counters.skipped++; + } else if (test.isTodo) { + harness.counters.todo++; + } else if (test.cancelled) { + harness.counters.cancelled++; + } else if (!test.passed) { + harness.counters.failed++; + } else { + harness.counters.passed++; + } + harness.counters.all++; +} + module.exports = { convertStringToRegExp, + countCompletedTest, createDeferredCallback, doesPathMatchFilter, isSupportedFileType, diff --git a/test/message/test_runner_abort.out b/test/message/test_runner_abort.out index 95a78243e729bf..91055794b03e27 100644 --- a/test/message/test_runner_abort.out +++ b/test/message/test_runner_abort.out @@ -260,10 +260,11 @@ not ok 4 - callback abort signal * ... 1..4 -# tests 4 -# pass 0 +# tests 22 +# suites 0 +# pass 8 # fail 0 -# cancelled 4 +# cancelled 14 # skipped 0 # todo 0 # duration_ms * diff --git a/test/message/test_runner_abort_suite.out b/test/message/test_runner_abort_suite.out index 06a70bdf012196..00040b760cdfb2 100644 --- a/test/message/test_runner_abort_suite.out +++ b/test/message/test_runner_abort_suite.out @@ -64,6 +64,7 @@ TAP version 13 not ok 1 - describe timeout signal --- duration_ms: * + type: 'suite' failureType: 'testAborted' error: 'The operation was aborted due to timeout' code: 23 @@ -78,6 +79,7 @@ not ok 1 - describe timeout signal not ok 2 - describe abort signal --- duration_ms: * + type: 'suite' failureType: 'testAborted' error: 'This operation was aborted' code: 20 @@ -94,10 +96,11 @@ not ok 2 - describe abort signal * ... 1..2 -# tests 2 -# pass 0 +# tests 9 +# suites 2 +# pass 4 # fail 0 -# cancelled 2 +# cancelled 5 # skipped 0 # todo 0 # duration_ms * diff --git a/test/message/test_runner_describe_it.out b/test/message/test_runner_describe_it.out index 41c4e275b5b614..209cf5bb6715e8 100644 --- a/test/message/test_runner_describe_it.out +++ b/test/message/test_runner_describe_it.out @@ -210,6 +210,7 @@ ok 21 - immediate resolve pass not ok 22 - subtest sync throw fail --- duration_ms: * + type: 'suite' failureType: 'subtestsFailed' error: '1 subtest failed' code: 'ERR_TEST_FAILURE' @@ -247,11 +248,13 @@ not ok 23 - sync throw non-error fail ok 24 - level 0a --- duration_ms: * + type: 'suite' ... # Subtest: invalid subtest - pass but subtest fails ok 25 - invalid subtest - pass but subtest fails --- duration_ms: * + type: 'suite' ... # Subtest: sync skip option ok 26 - sync skip option # SKIP @@ -494,6 +497,7 @@ not ok 53 - custom inspect symbol that throws fail not ok 54 - subtest sync throw fails --- duration_ms: * + type: 'suite' failureType: 'subtestsFailed' error: '2 subtests failed' code: 'ERR_TEST_FAILURE' @@ -511,6 +515,7 @@ not ok 54 - subtest sync throw fails not ok 55 - describe sync throw fails --- duration_ms: * + type: 'suite' failureType: 'testCodeFailure' error: 'thrown from describe' code: 'ERR_TEST_FAILURE' @@ -539,6 +544,7 @@ not ok 55 - describe sync throw fails not ok 56 - describe async throw fails --- duration_ms: * + type: 'suite' failureType: 'testCodeFailure' error: 'thrown from describe' code: 'ERR_TEST_FAILURE' @@ -587,6 +593,7 @@ not ok 56 - describe async throw fails not ok 57 - timeouts --- duration_ms: * + type: 'suite' failureType: 'subtestsFailed' error: '2 subtests failed' code: 'ERR_TEST_FAILURE' @@ -612,6 +619,7 @@ not ok 57 - timeouts not ok 58 - successful thenable --- duration_ms: * + type: 'suite' failureType: 'subtestsFailed' error: '1 subtest failed' code: 'ERR_TEST_FAILURE' @@ -620,6 +628,7 @@ not ok 58 - successful thenable not ok 59 - rejected thenable --- duration_ms: * + type: 'suite' failureType: 'testCodeFailure' error: 'custom error' code: 'ERR_TEST_FAILURE' @@ -643,10 +652,11 @@ not ok 60 - invalid subtest fail # Warning: Test "immediate reject - passes but warns" generated asynchronous activity after the test ended. This activity created the error "Error: rejected from immediate reject fail" and would have caused the test to fail, but instead triggered an unhandledRejection event. # Warning: Test "callback called twice in different ticks" generated asynchronous activity after the test ended. This activity created the error "Error [ERR_TEST_FAILURE]: callback invoked multiple times" and would have caused the test to fail, but instead triggered an uncaughtException event. # Warning: Test "callback async throw after done" generated asynchronous activity after the test ended. This activity created the error "Error: thrown from callback async throw after done" and would have caused the test to fail, but instead triggered an uncaughtException event. -# tests 60 -# pass 23 -# fail 22 -# cancelled 0 +# tests 67 +# suites 9 +# pass 29 +# fail 19 +# cancelled 4 # skipped 10 # todo 5 # duration_ms * diff --git a/test/message/test_runner_describe_nested.out b/test/message/test_runner_describe_nested.out index 1d3fe31b75c37a..fe96d2a9560b7b 100644 --- a/test/message/test_runner_describe_nested.out +++ b/test/message/test_runner_describe_nested.out @@ -10,14 +10,17 @@ TAP version 13 ok 1 - nested --- duration_ms: * + type: 'suite' ... 1..1 ok 1 - nested - no tests --- duration_ms: * + type: 'suite' ... 1..1 # tests 1 +# suites 2 # pass 1 # fail 0 # cancelled 0 diff --git a/test/message/test_runner_hooks.out b/test/message/test_runner_hooks.out index 7c82e9ff292ad5..48280122e1e21e 100644 --- a/test/message/test_runner_hooks.out +++ b/test/message/test_runner_hooks.out @@ -25,11 +25,13 @@ TAP version 13 ok 3 - nested --- duration_ms: * + type: 'suite' ... 1..3 ok 1 - describe hooks --- duration_ms: * + type: 'suite' ... # Subtest: before throws # Subtest: 1 @@ -52,6 +54,7 @@ ok 1 - describe hooks not ok 2 - before throws --- duration_ms: * + type: 'suite' failureType: 'hookFailed' error: 'failed running before hook' code: 'ERR_TEST_FAILURE' @@ -80,6 +83,7 @@ not ok 2 - before throws not ok 3 - after throws --- duration_ms: * + type: 'suite' failureType: 'hookFailed' error: 'failed running after hook' code: 'ERR_TEST_FAILURE' @@ -136,6 +140,7 @@ not ok 3 - after throws not ok 4 - beforeEach throws --- duration_ms: * + type: 'suite' failureType: 'subtestsFailed' error: '2 subtests failed' code: 'ERR_TEST_FAILURE' @@ -183,6 +188,7 @@ not ok 4 - beforeEach throws not ok 5 - afterEach throws --- duration_ms: * + type: 'suite' failureType: 'subtestsFailed' error: '2 subtests failed' code: 'ERR_TEST_FAILURE' @@ -216,6 +222,7 @@ not ok 5 - afterEach throws not ok 6 - afterEach when test fails --- duration_ms: * + type: 'suite' failureType: 'subtestsFailed' error: '1 subtest failed' code: 'ERR_TEST_FAILURE' @@ -263,6 +270,7 @@ not ok 6 - afterEach when test fails not ok 7 - afterEach throws and test fails --- duration_ms: * + type: 'suite' failureType: 'subtestsFailed' error: '2 subtests failed' code: 'ERR_TEST_FAILURE' @@ -491,10 +499,11 @@ not ok 13 - t.after() is called if test body throws ... # - after() called 1..13 -# tests 13 -# pass 2 -# fail 11 -# cancelled 0 +# tests 35 +# suites 8 +# pass 14 +# fail 19 +# cancelled 2 # skipped 0 # todo 0 # duration_ms * diff --git a/test/message/test_runner_no_refs.out b/test/message/test_runner_no_refs.out index e8560c5720b762..49c51af41caec3 100644 --- a/test/message/test_runner_no_refs.out +++ b/test/message/test_runner_no_refs.out @@ -21,10 +21,11 @@ not ok 1 - does not keep event loop alive * ... 1..1 -# tests 1 +# tests 2 +# suites 0 # pass 0 # fail 0 -# cancelled 1 +# cancelled 2 # skipped 0 # todo 0 # duration_ms * diff --git a/test/message/test_runner_only_tests.out b/test/message/test_runner_only_tests.out index 7d8240fef0c489..d0cab370edcac0 100644 --- a/test/message/test_runner_only_tests.out +++ b/test/message/test_runner_only_tests.out @@ -131,6 +131,7 @@ ok 11 - only = true, with subtests ok 12 - describe only = true, with subtests --- duration_ms: * + type: 'suite' ... # Subtest: describe only = true, with a mixture of subtests # Subtest: `it` subtest 1 @@ -167,6 +168,7 @@ ok 12 - describe only = true, with subtests ok 13 - describe only = true, with a mixture of subtests --- duration_ms: * + type: 'suite' ... # Subtest: describe only = true, with subtests # Subtest: subtest should run @@ -188,12 +190,14 @@ ok 13 - describe only = true, with a mixture of subtests ok 14 - describe only = true, with subtests --- duration_ms: * + type: 'suite' ... 1..14 -# tests 14 -# pass 4 +# tests 34 +# suites 3 +# pass 14 # fail 0 # cancelled 0 -# skipped 10 +# skipped 20 # todo 0 # duration_ms * diff --git a/test/message/test_runner_output.out b/test/message/test_runner_output.out index b6f254708010e9..668676cb6eeda6 100644 --- a/test/message/test_runner_output.out +++ b/test/message/test_runner_output.out @@ -642,10 +642,11 @@ not ok 65 - invalid subtest fail # Warning: Test "immediate reject - passes but warns" generated asynchronous activity after the test ended. This activity created the error "Error: rejected from immediate reject fail" and would have caused the test to fail, but instead triggered an unhandledRejection event. # Warning: Test "callback called twice in different ticks" generated asynchronous activity after the test ended. This activity created the error "Error [ERR_TEST_FAILURE]: callback invoked multiple times" and would have caused the test to fail, but instead triggered an uncaughtException event. # Warning: Test "callback async throw after done" generated asynchronous activity after the test ended. This activity created the error "Error: thrown from callback async throw after done" and would have caused the test to fail, but instead triggered an uncaughtException event. -# tests 65 -# pass 27 -# fail 21 -# cancelled 2 +# tests 79 +# suites 0 +# pass 37 +# fail 24 +# cancelled 3 # skipped 10 # todo 5 # duration_ms * diff --git a/test/message/test_runner_output_cli.out b/test/message/test_runner_output_cli.out index 3baeb534704b11..e51b6b472ca44f 100644 --- a/test/message/test_runner_output_cli.out +++ b/test/message/test_runner_output_cli.out @@ -642,10 +642,11 @@ not ok 65 - invalid subtest fail # Warning: Test "callback called twice in different ticks" generated asynchronous activity after the test ended. This activity created the error "Error [ERR_TEST_FAILURE]: callback invoked multiple times" and would have caused the test to fail, but instead triggered an uncaughtException event. # Warning: Test "callback async throw after done" generated asynchronous activity after the test ended. This activity created the error "Error: thrown from callback async throw after done" and would have caused the test to fail, but instead triggered an uncaughtException event. 1..65 -# tests 65 -# pass 27 -# fail 21 -# cancelled 2 +# tests 79 +# suites 0 +# pass 37 +# fail 24 +# cancelled 3 # skipped 10 # todo 5 # duration_ms * diff --git a/test/message/test_runner_output_spec_reporter.out b/test/message/test_runner_output_spec_reporter.out index 3ff9aefe7a42ce..d5b443010e77cd 100644 --- a/test/message/test_runner_output_spec_reporter.out +++ b/test/message/test_runner_output_spec_reporter.out @@ -275,10 +275,11 @@ Warning: Test "immediate reject - passes but warns" generated asynchronous activity after the test ended. This activity created the error "Error: rejected from immediate reject fail" and would have caused the test to fail, but instead triggered an unhandledRejection event. Warning: Test "callback called twice in different ticks" generated asynchronous activity after the test ended. This activity created the error "Error [ERR_TEST_FAILURE]: callback invoked multiple times" and would have caused the test to fail, but instead triggered an uncaughtException event. Warning: Test "callback async throw after done" generated asynchronous activity after the test ended. This activity created the error "Error: thrown from callback async throw after done" and would have caused the test to fail, but instead triggered an uncaughtException event. - tests 65 - pass 27 - fail 21 - cancelled 2 + tests 79 + suites 0 + pass 37 + fail 24 + cancelled 3 skipped 10 todo 5 duration_ms * diff --git a/test/message/test_runner_test_name_pattern.out b/test/message/test_runner_test_name_pattern.out index be548ad0c6dfee..36a1da9fbeff11 100644 --- a/test/message/test_runner_test_name_pattern.out +++ b/test/message/test_runner_test_name_pattern.out @@ -38,16 +38,19 @@ ok 7 - top level skipped it enabled # SKIP ok 8 - top level describe disabled # SKIP test name does not match pattern --- duration_ms: * + type: 'suite' ... # Subtest: top level skipped describe disabled ok 9 - top level skipped describe disabled # SKIP test name does not match pattern --- duration_ms: * + type: 'suite' ... # Subtest: top level skipped describe enabled ok 10 - top level skipped describe enabled # SKIP --- duration_ms: * + type: 'suite' ... # Subtest: top level runs because name includes PaTtErN ok 11 - top level runs because name includes PaTtErN @@ -80,6 +83,7 @@ ok 12 - top level test enabled ok 3 - nested describe disabled # SKIP test name does not match pattern --- duration_ms: * + type: 'suite' ... # Subtest: nested describe enabled # Subtest: is enabled @@ -91,17 +95,20 @@ ok 12 - top level test enabled ok 4 - nested describe enabled --- duration_ms: * + type: 'suite' ... 1..4 ok 13 - top level describe enabled --- duration_ms: * + type: 'suite' ... 1..13 # tests 13 -# pass 4 +# suites 6 +# pass 6 # fail 0 # cancelled 0 -# skipped 9 +# skipped 7 # todo 0 # duration_ms * diff --git a/test/message/test_runner_test_name_pattern_with_only.out b/test/message/test_runner_test_name_pattern_with_only.out index 2e1006409cf9d3..35fbbc223c6db0 100644 --- a/test/message/test_runner_test_name_pattern_with_only.out +++ b/test/message/test_runner_test_name_pattern_with_only.out @@ -31,10 +31,11 @@ ok 4 - not only and does not match pattern # SKIP 'only' option not set duration_ms: * ... 1..4 -# tests 4 -# pass 1 +# tests 6 +# suites 0 +# pass 2 # fail 0 # cancelled 0 -# skipped 3 +# skipped 4 # todo 0 # duration_ms * diff --git a/test/message/test_runner_unresolved_promise.out b/test/message/test_runner_unresolved_promise.out index b4d6cba4ca1b43..d3fadb6b556356 100644 --- a/test/message/test_runner_unresolved_promise.out +++ b/test/message/test_runner_unresolved_promise.out @@ -26,6 +26,7 @@ not ok 3 - fail ... 1..3 # tests 3 +# suites 0 # pass 1 # fail 0 # cancelled 2 diff --git a/test/parallel/test-runner-cli.js b/test/parallel/test-runner-cli.js index 8cfceedfe6a53a..5e913eb6de9e5d 100644 --- a/test/parallel/test-runner-cli.js +++ b/test/parallel/test-runner-cli.js @@ -155,9 +155,10 @@ const testFixtures = fixtures.path('test-runner'); assert.match(stdout, /# Subtest: level 0b/); assert.match(stdout, /not ok 4 - level 0b/); assert.match(stdout, / {2}error: 'level 0b error'/); - assert.match(stdout, /# tests 4/); - assert.match(stdout, /# pass 2/); - assert.match(stdout, /# fail 2/); + assert.match(stdout, /# tests 8/); + assert.match(stdout, /# pass 4/); + assert.match(stdout, /# fail 3/); + assert.match(stdout, /# skipped 1/); } { diff --git a/test/parallel/test-runner-extraneous-async-activity.js b/test/parallel/test-runner-extraneous-async-activity.js index bc4be25d5f974b..a95925dbb75414 100644 --- a/test/parallel/test-runner-extraneous-async-activity.js +++ b/test/parallel/test-runner-extraneous-async-activity.js @@ -12,7 +12,7 @@ const { spawnSync } = require('child_process'); const stdout = child.stdout.toString(); assert.match(stdout, /^# Warning: Test "extraneous async activity test" generated asynchronous activity after the test ended/m); assert.match(stdout, /^# pass 1/m); - assert.match(stdout, /^# fail 0$/m); + assert.match(stdout, /^# fail 1$/m); assert.match(stdout, /^# cancelled 0$/m); assert.strictEqual(child.status, 1); assert.strictEqual(child.signal, null); @@ -26,7 +26,7 @@ const { spawnSync } = require('child_process'); const stdout = child.stdout.toString(); assert.match(stdout, /^# Warning: Test "extraneous async activity test" generated asynchronous activity after the test ended/m); assert.match(stdout, /^# pass 1$/m); - assert.match(stdout, /^# fail 0$/m); + assert.match(stdout, /^# fail 1$/m); assert.match(stdout, /^# cancelled 0$/m); assert.strictEqual(child.status, 1); assert.strictEqual(child.signal, null); diff --git a/test/pseudo-tty/test_runner_default_reporter.out b/test/pseudo-tty/test_runner_default_reporter.out index 795b7e556d13d8..aec99725c61cba 100644 --- a/test/pseudo-tty/test_runner_default_reporter.out +++ b/test/pseudo-tty/test_runner_default_reporter.out @@ -11,6 +11,7 @@ ** [90m* should skip [90m(*ms)[39m # SKIP[39m [34m* tests 3[39m +[34m* suites 0[39m [34m* pass 1[39m [34m* fail 1[39m [34m* cancelled 0[39m From 1640aeb680b12687b15253c1d1c4818fe7c09adc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Nie=C3=9Fen?= Date: Tue, 21 Mar 2023 11:47:49 +0100 Subject: [PATCH 119/186] crypto: remove obsolete SSL_OP_* constants MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit None of these constants have any effect in recent OpenSSL versions, not even in Node.js release lines that still use OpenSSL 1.1.1. It is likely rare that these options are still used (intentionally), and removing them is unlikely to break any existing applications. These constants can only be passed to the secureOptions option of tls.createSecureContext() and related APIs, and a value of undefined will be ignored. Similarly, if a bitwise combination of multiple options is used, undefined constants will not change the behavior because (a | undefined | b) === (a | b) for (small) integers a and b. Refs: https://github.com/nodejs/node/pull/46954 Refs: https://github.com/nodejs/node/pull/47066 PR-URL: https://github.com/nodejs/node/pull/47073 Reviewed-By: Filip Skokan Reviewed-By: Rafael Gonzaga Reviewed-By: Michaël Zasso --- src/node_constants.cc | 64 -------------------------- typings/internalBinding/constants.d.ts | 16 ------- 2 files changed, 80 deletions(-) diff --git a/src/node_constants.cc b/src/node_constants.cc index 6af450c281dd36..68b457fcd42aaa 100644 --- a/src/node_constants.cc +++ b/src/node_constants.cc @@ -844,42 +844,10 @@ void DefineCryptoConstants(Local target) { NODE_DEFINE_CONSTANT(target, SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS); #endif -#ifdef SSL_OP_EPHEMERAL_RSA - NODE_DEFINE_CONSTANT(target, SSL_OP_EPHEMERAL_RSA); -#endif - #ifdef SSL_OP_LEGACY_SERVER_CONNECT NODE_DEFINE_CONSTANT(target, SSL_OP_LEGACY_SERVER_CONNECT); #endif -#ifdef SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER - NODE_DEFINE_CONSTANT(target, SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER); -#endif - -#ifdef SSL_OP_MICROSOFT_SESS_ID_BUG - NODE_DEFINE_CONSTANT(target, SSL_OP_MICROSOFT_SESS_ID_BUG); -#endif - -#ifdef SSL_OP_MSIE_SSLV2_RSA_PADDING - NODE_DEFINE_CONSTANT(target, SSL_OP_MSIE_SSLV2_RSA_PADDING); -#endif - -#ifdef SSL_OP_NETSCAPE_CA_DN_BUG - NODE_DEFINE_CONSTANT(target, SSL_OP_NETSCAPE_CA_DN_BUG); -#endif - -#ifdef SSL_OP_NETSCAPE_CHALLENGE_BUG - NODE_DEFINE_CONSTANT(target, SSL_OP_NETSCAPE_CHALLENGE_BUG); -#endif - -#ifdef SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG - NODE_DEFINE_CONSTANT(target, SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG); -#endif - -#ifdef SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG - NODE_DEFINE_CONSTANT(target, SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG); -#endif - #ifdef SSL_OP_NO_COMPRESSION NODE_DEFINE_CONSTANT(target, SSL_OP_NO_COMPRESSION); #endif @@ -928,42 +896,10 @@ void DefineCryptoConstants(Local target) { NODE_DEFINE_CONSTANT(target, SSL_OP_NO_TLSv1_3); #endif -#ifdef SSL_OP_PKCS1_CHECK_1 - NODE_DEFINE_CONSTANT(target, SSL_OP_PKCS1_CHECK_1); -#endif - -#ifdef SSL_OP_PKCS1_CHECK_2 - NODE_DEFINE_CONSTANT(target, SSL_OP_PKCS1_CHECK_2); -#endif - #ifdef SSL_OP_PRIORITIZE_CHACHA NODE_DEFINE_CONSTANT(target, SSL_OP_PRIORITIZE_CHACHA); #endif -#ifdef SSL_OP_SINGLE_DH_USE - NODE_DEFINE_CONSTANT(target, SSL_OP_SINGLE_DH_USE); -#endif - -#ifdef SSL_OP_SINGLE_ECDH_USE - NODE_DEFINE_CONSTANT(target, SSL_OP_SINGLE_ECDH_USE); -#endif - -#ifdef SSL_OP_SSLEAY_080_CLIENT_DH_BUG - NODE_DEFINE_CONSTANT(target, SSL_OP_SSLEAY_080_CLIENT_DH_BUG); -#endif - -#ifdef SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG - NODE_DEFINE_CONSTANT(target, SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG); -#endif - -#ifdef SSL_OP_TLS_BLOCK_PADDING_BUG - NODE_DEFINE_CONSTANT(target, SSL_OP_TLS_BLOCK_PADDING_BUG); -#endif - -#ifdef SSL_OP_TLS_D5_BUG - NODE_DEFINE_CONSTANT(target, SSL_OP_TLS_D5_BUG); -#endif - #ifdef SSL_OP_TLS_ROLLBACK_BUG NODE_DEFINE_CONSTANT(target, SSL_OP_TLS_ROLLBACK_BUG); #endif diff --git a/typings/internalBinding/constants.d.ts b/typings/internalBinding/constants.d.ts index 0b0fc90e264334..68fead278cc64e 100644 --- a/typings/internalBinding/constants.d.ts +++ b/typings/internalBinding/constants.d.ts @@ -197,15 +197,7 @@ declare function InternalBinding(binding: 'constants'): { SSL_OP_COOKIE_EXCHANGE: 8192; SSL_OP_CRYPTOPRO_TLSEXT_BUG: 2147483648; SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS: 2048; - SSL_OP_EPHEMERAL_RSA: 0; SSL_OP_LEGACY_SERVER_CONNECT: 4; - SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER: 0; - SSL_OP_MICROSOFT_SESS_ID_BUG: 0; - SSL_OP_MSIE_SSLV2_RSA_PADDING: 0; - SSL_OP_NETSCAPE_CA_DN_BUG: 0; - SSL_OP_NETSCAPE_CHALLENGE_BUG: 0; - SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG: 0; - SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG: 0; SSL_OP_NO_COMPRESSION: 131072; SSL_OP_NO_ENCRYPT_THEN_MAC: 524288; SSL_OP_NO_QUERY_MTU: 4096; @@ -218,15 +210,7 @@ declare function InternalBinding(binding: 'constants'): { SSL_OP_NO_TLSv1_1: 268435456; SSL_OP_NO_TLSv1_2: 134217728; SSL_OP_NO_TLSv1_3: 536870912; - SSL_OP_PKCS1_CHECK_1: 0; - SSL_OP_PKCS1_CHECK_2: 0; SSL_OP_PRIORITIZE_CHACHA: 2097152; - SSL_OP_SINGLE_DH_USE: 0; - SSL_OP_SINGLE_ECDH_USE: 0; - SSL_OP_SSLEAY_080_CLIENT_DH_BUG: 0; - SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG: 0; - SSL_OP_TLS_BLOCK_PADDING_BUG: 0; - SSL_OP_TLS_D5_BUG: 0; SSL_OP_TLS_ROLLBACK_BUG: 8388608; ENGINE_METHOD_RSA: 1; ENGINE_METHOD_DSA: 2; From f5eedf480ce9abed019deed3a44edb647c722d5b Mon Sep 17 00:00:00 2001 From: Moshe Atlow Date: Tue, 21 Mar 2023 19:27:53 +0200 Subject: [PATCH 120/186] tools: allow test tap output to include unicode characters MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/47175 Reviewed-By: Richard Lau Reviewed-By: Michaël Zasso Reviewed-By: Christian Clauss --- tools/test.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tools/test.py b/tools/test.py index cdcd6c148278e2..44f21ec126b25d 100755 --- a/tools/test.py +++ b/tools/test.py @@ -44,6 +44,7 @@ import multiprocessing import errno import copy +import io if sys.version_info >= (3, 5): @@ -1595,7 +1596,13 @@ def Main(): parser.print_help() return 1 - ch = logging.StreamHandler(sys.stdout) + stream = sys.stdout + try: + sys.stdout.reconfigure(encoding='utf8') + except AttributeError: + # Python < 3.7 does not have reconfigure + stream = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8') + ch = logging.StreamHandler(stream) logger.addHandler(ch) logger.setLevel(logging.INFO) if options.logfile: From 22537f34a448e4c0e2de7d2daf91146e098dc489 Mon Sep 17 00:00:00 2001 From: Raz Luvaton <16746759+rluvaton@users.noreply.github.com> Date: Wed, 22 Mar 2023 06:46:58 +0200 Subject: [PATCH 121/186] stream: dont wait for next item in take when finished PR-URL: https://github.com/nodejs/node/pull/47132 Reviewed-By: Robert Nagy Reviewed-By: Yagiz Nizipli Reviewed-By: Erick Wendel Reviewed-By: Matteo Collina Reviewed-By: Debadree Chatterjee --- lib/internal/streams/operators.js | 5 ++++- test/parallel/test-stream-drop-take.js | 24 +++++++++++++++++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/lib/internal/streams/operators.js b/lib/internal/streams/operators.js index 9841723622418b..65c87d6e456bdf 100644 --- a/lib/internal/streams/operators.js +++ b/lib/internal/streams/operators.js @@ -409,7 +409,10 @@ function take(number, options = undefined) { } if (number-- > 0) { yield val; - } else { + } + + // Don't get another item from iterator in case we reached the end + if (number <= 0) { return; } } diff --git a/test/parallel/test-stream-drop-take.js b/test/parallel/test-stream-drop-take.js index cb55a4f7ee1813..97e6c74dfa67ea 100644 --- a/test/parallel/test-stream-drop-take.js +++ b/test/parallel/test-stream-drop-take.js @@ -4,7 +4,7 @@ const common = require('../common'); const { Readable, } = require('stream'); -const { deepStrictEqual, rejects, throws } = require('assert'); +const { deepStrictEqual, rejects, throws, strictEqual } = require('assert'); const { from } = Readable; @@ -49,6 +49,28 @@ const naturals = () => from(async function*() { })().then(common.mustCall()); } + +// Don't wait for next item in the original stream when already consumed the requested take amount +{ + let reached = false; + let resolve; + const promise = new Promise((res) => resolve = res); + + const stream = from((async function *() { + yield 1; + await promise; + reached = true; + yield 2; + })()); + + stream.take(1) + .toArray() + .then(common.mustCall(() => { + strictEqual(reached, false); + })) + .finally(() => resolve()); +} + { // Coercion (async () => { From b4365c161c2dc9f04eba96b33c8f4db89f0b0d19 Mon Sep 17 00:00:00 2001 From: Gabriel Schulhof Date: Tue, 21 Mar 2023 21:47:08 -0700 Subject: [PATCH 122/186] node-api: extend type-tagging to externals Since externals behave as JavaScript objects on the JavaScript side, allow them to be type-tagged. Signed-off-by: Gabriel Schulhof PR-URL: https://github.com/nodejs/node/pull/47141 Reviewed-By: Michael Dawson Reviewed-By: Chengzhong Wu --- doc/api/n-api.md | 31 +++--- test/js-native-api/test_object/test.js | 23 ++++ test/js-native-api/test_object/test_object.c | 108 +++++++++++++------ 3 files changed, 117 insertions(+), 45 deletions(-) diff --git a/doc/api/n-api.md b/doc/api/n-api.md index 82f18ac0ab328f..df229ed5164f06 100644 --- a/doc/api/n-api.md +++ b/doc/api/n-api.md @@ -733,13 +733,13 @@ napiVersion: 8 --> A 128-bit value stored as two unsigned 64-bit integers. It serves as a UUID -with which JavaScript objects can be "tagged" in order to ensure that they are -of a certain type. This is a stronger check than [`napi_instanceof`][], because -the latter can report a false positive if the object's prototype has been -manipulated. Type-tagging is most useful in conjunction with [`napi_wrap`][] -because it ensures that the pointer retrieved from a wrapped object can be -safely cast to the native type corresponding to the type tag that had been -previously applied to the JavaScript object. +with which JavaScript objects or [externals][] can be "tagged" in order to +ensure that they are of a certain type. This is a stronger check than +[`napi_instanceof`][], because the latter can report a false positive if the +object's prototype has been manipulated. Type-tagging is most useful in +conjunction with [`napi_wrap`][] because it ensures that the pointer retrieved +from a wrapped object can be safely cast to the native type corresponding to the +type tag that had been previously applied to the JavaScript object. ```c typedef struct { @@ -4969,7 +4969,7 @@ To this end, Node-API provides type-tagging capabilities. A type tag is a 128-bit integer unique to the addon. Node-API provides the `napi_type_tag` structure for storing a type tag. When such a value is passed -along with a JavaScript object stored in a `napi_value` to +along with a JavaScript object or [external][] stored in a `napi_value` to `napi_type_tag_object()`, the JavaScript object will be "marked" with the type tag. The "mark" is invisible on the JavaScript side. When a JavaScript object arrives into a native binding, `napi_check_object_type_tag()` can be used @@ -5255,15 +5255,15 @@ napi_status napi_type_tag_object(napi_env env, ``` * `[in] env`: The environment that the API is invoked under. -* `[in] js_object`: The JavaScript object to be marked. +* `[in] js_object`: The JavaScript object or [external][] to be marked. * `[in] type_tag`: The tag with which the object is to be marked. Returns `napi_ok` if the API succeeded. -Associates the value of the `type_tag` pointer with the JavaScript object. -`napi_check_object_type_tag()` can then be used to compare the tag that was -attached to the object with one owned by the addon to ensure that the object -has the right type. +Associates the value of the `type_tag` pointer with the JavaScript object or +[external][]. `napi_check_object_type_tag()` can then be used to compare the tag +that was attached to the object with one owned by the addon to ensure that the +object has the right type. If the object already has an associated type tag, this API will return `napi_invalid_arg`. @@ -5285,7 +5285,8 @@ napi_status napi_check_object_type_tag(napi_env env, ``` * `[in] env`: The environment that the API is invoked under. -* `[in] js_object`: The JavaScript object whose type tag to examine. +* `[in] js_object`: The JavaScript object or [external][] whose type tag to + examine. * `[in] type_tag`: The tag with which to compare any tag found on the object. * `[out] result`: Whether the type tag given matched the type tag on the object. `false` is also returned if no type tag was found on the object. @@ -6455,6 +6456,8 @@ the add-on's file name during loading. [async_hooks `type`]: async_hooks.md#type [context-aware addons]: addons.md#context-aware-addons [docs]: https://github.com/nodejs/node-addon-api#api-documentation +[external]: #napi_create_external +[externals]: #napi_create_external [global scope]: globals.md [gyp-next]: https://github.com/nodejs/gyp-next [module scope]: modules.md#the-module-scope diff --git a/test/js-native-api/test_object/test.js b/test/js-native-api/test_object/test.js index 012f737ba74b43..670ae200a35bec 100644 --- a/test/js-native-api/test_object/test.js +++ b/test/js-native-api/test_object/test.js @@ -165,12 +165,26 @@ assert.strictEqual(newObject.test_string, 'test string'); const obj2 = test_object.TypeTaggedInstance(1); const obj3 = test_object.TypeTaggedInstance(2); const obj4 = test_object.TypeTaggedInstance(3); + const external = test_object.TypeTaggedExternal(2); + const plainExternal = test_object.PlainExternal(); + + // Verify that we do not allow type tag indices greater than the largest + // available index. + assert.throws(() => test_object.TypeTaggedInstance(39), { + name: 'RangeError', + message: 'Invalid type index', + }); + assert.throws(() => test_object.TypeTaggedExternal(39), { + name: 'RangeError', + message: 'Invalid type index', + }); // Verify that type tags are correctly accepted. assert.strictEqual(test_object.CheckTypeTag(0, obj1), true); assert.strictEqual(test_object.CheckTypeTag(1, obj2), true); assert.strictEqual(test_object.CheckTypeTag(2, obj3), true); assert.strictEqual(test_object.CheckTypeTag(3, obj4), true); + assert.strictEqual(test_object.CheckTypeTag(2, external), true); // Verify that wrongly tagged objects are rejected. assert.strictEqual(test_object.CheckTypeTag(0, obj2), false); @@ -180,10 +194,19 @@ assert.strictEqual(newObject.test_string, 'test string'); assert.strictEqual(test_object.CheckTypeTag(2, obj4), false); assert.strictEqual(test_object.CheckTypeTag(3, obj3), false); assert.strictEqual(test_object.CheckTypeTag(4, obj3), false); + assert.strictEqual(test_object.CheckTypeTag(0, external), false); + assert.strictEqual(test_object.CheckTypeTag(1, external), false); + assert.strictEqual(test_object.CheckTypeTag(3, external), false); + assert.strictEqual(test_object.CheckTypeTag(4, external), false); // Verify that untagged objects are rejected. assert.strictEqual(test_object.CheckTypeTag(0, {}), false); assert.strictEqual(test_object.CheckTypeTag(1, {}), false); + assert.strictEqual(test_object.CheckTypeTag(0, plainExternal), false); + assert.strictEqual(test_object.CheckTypeTag(1, plainExternal), false); + assert.strictEqual(test_object.CheckTypeTag(2, plainExternal), false); + assert.strictEqual(test_object.CheckTypeTag(3, plainExternal), false); + assert.strictEqual(test_object.CheckTypeTag(4, plainExternal), false); } { diff --git a/test/js-native-api/test_object/test_object.c b/test/js-native-api/test_object/test_object.c index 3ae54a9b7cd65c..eb5aa2071e30a3 100644 --- a/test/js-native-api/test_object/test_object.c +++ b/test/js-native-api/test_object/test_object.c @@ -605,13 +605,23 @@ static napi_value TestSeal(napi_env env, } // We create two type tags. They are basically 128-bit UUIDs. -static const napi_type_tag type_tags[5] = { - { 0xdaf987b3cc62481a, 0xb745b0497f299531 }, - { 0xbb7936c374084d9b, 0xa9548d0762eeedb9 }, - { 0xa5ed9ce2e4c00c38, 0 }, - { 0, 0 }, - { 0xa5ed9ce2e4c00c38, 0xdaf987b3cc62481a }, +#define TYPE_TAG_COUNT 5 +static const napi_type_tag type_tags[TYPE_TAG_COUNT] = { + {0xdaf987b3cc62481a, 0xb745b0497f299531}, + {0xbb7936c374084d9b, 0xa9548d0762eeedb9}, + {0xa5ed9ce2e4c00c38, 0}, + {0, 0}, + {0xa5ed9ce2e4c00c38, 0xdaf987b3cc62481a}, }; +#define VALIDATE_TYPE_INDEX(env, type_index) \ + do { \ + if ((type_index) >= TYPE_TAG_COUNT) { \ + NODE_API_CALL((env), \ + napi_throw_range_error((env), \ + "NODE_API_TEST_INVALID_TYPE_INDEX", \ + "Invalid type index")); \ + } \ + } while (0) static napi_value TypeTaggedInstance(napi_env env, napi_callback_info info) { @@ -621,12 +631,42 @@ TypeTaggedInstance(napi_env env, napi_callback_info info) { NODE_API_CALL(env, napi_get_cb_info(env, info, &argc, &which_type, NULL, NULL)); NODE_API_CALL(env, napi_get_value_uint32(env, which_type, &type_index)); + VALIDATE_TYPE_INDEX(env, type_index); NODE_API_CALL(env, napi_create_object(env, &instance)); NODE_API_CALL(env, napi_type_tag_object(env, instance, &type_tags[type_index])); return instance; } +// V8 will not allowe us to construct an external with a NULL data value. +#define IN_LIEU_OF_NULL ((void*)0x1) + +static napi_value PlainExternal(napi_env env, napi_callback_info info) { + napi_value instance; + + NODE_API_CALL( + env, napi_create_external(env, IN_LIEU_OF_NULL, NULL, NULL, &instance)); + + return instance; +} + +static napi_value TypeTaggedExternal(napi_env env, napi_callback_info info) { + size_t argc = 1; + uint32_t type_index; + napi_value instance, which_type; + + NODE_API_CALL(env, + napi_get_cb_info(env, info, &argc, &which_type, NULL, NULL)); + NODE_API_CALL(env, napi_get_value_uint32(env, which_type, &type_index)); + VALIDATE_TYPE_INDEX(env, type_index); + NODE_API_CALL( + env, napi_create_external(env, IN_LIEU_OF_NULL, NULL, NULL, &instance)); + NODE_API_CALL(env, + napi_type_tag_object(env, instance, &type_tags[type_index])); + + return instance; +} + static napi_value CheckTypeTag(napi_env env, napi_callback_info info) { size_t argc = 2; @@ -636,6 +676,7 @@ CheckTypeTag(napi_env env, napi_callback_info info) { NODE_API_CALL(env, napi_get_cb_info(env, info, &argc, argv, NULL, NULL)); NODE_API_CALL(env, napi_get_value_uint32(env, argv[0], &type_index)); + VALIDATE_TYPE_INDEX(env, type_index); NODE_API_CALL(env, napi_check_object_type_tag(env, argv[1], &type_tags[type_index], @@ -648,31 +689,36 @@ CheckTypeTag(napi_env env, napi_callback_info info) { EXTERN_C_START napi_value Init(napi_env env, napi_value exports) { napi_property_descriptor descriptors[] = { - DECLARE_NODE_API_PROPERTY("Get", Get), - DECLARE_NODE_API_PROPERTY("GetNamed", GetNamed), - DECLARE_NODE_API_PROPERTY("GetPropertyNames", GetPropertyNames), - DECLARE_NODE_API_PROPERTY("GetSymbolNames", GetSymbolNames), - DECLARE_NODE_API_PROPERTY("GetEnumerableWritableNames", GetEnumerableWritableNames), - DECLARE_NODE_API_PROPERTY("GetOwnWritableNames", GetOwnWritableNames), - DECLARE_NODE_API_PROPERTY("GetEnumerableConfigurableNames", GetEnumerableConfigurableNames), - DECLARE_NODE_API_PROPERTY("GetOwnConfigurableNames", GetOwnConfigurableNames), - DECLARE_NODE_API_PROPERTY("Set", Set), - DECLARE_NODE_API_PROPERTY("SetNamed", SetNamed), - DECLARE_NODE_API_PROPERTY("Has", Has), - DECLARE_NODE_API_PROPERTY("HasNamed", HasNamed), - DECLARE_NODE_API_PROPERTY("HasOwn", HasOwn), - DECLARE_NODE_API_PROPERTY("Delete", Delete), - DECLARE_NODE_API_PROPERTY("New", New), - DECLARE_NODE_API_PROPERTY("Inflate", Inflate), - DECLARE_NODE_API_PROPERTY("Wrap", Wrap), - DECLARE_NODE_API_PROPERTY("Unwrap", Unwrap), - DECLARE_NODE_API_PROPERTY("TestSetProperty", TestSetProperty), - DECLARE_NODE_API_PROPERTY("TestHasProperty", TestHasProperty), - DECLARE_NODE_API_PROPERTY("TypeTaggedInstance", TypeTaggedInstance), - DECLARE_NODE_API_PROPERTY("CheckTypeTag", CheckTypeTag), - DECLARE_NODE_API_PROPERTY("TestGetProperty", TestGetProperty), - DECLARE_NODE_API_PROPERTY("TestFreeze", TestFreeze), - DECLARE_NODE_API_PROPERTY("TestSeal", TestSeal), + DECLARE_NODE_API_PROPERTY("Get", Get), + DECLARE_NODE_API_PROPERTY("GetNamed", GetNamed), + DECLARE_NODE_API_PROPERTY("GetPropertyNames", GetPropertyNames), + DECLARE_NODE_API_PROPERTY("GetSymbolNames", GetSymbolNames), + DECLARE_NODE_API_PROPERTY("GetEnumerableWritableNames", + GetEnumerableWritableNames), + DECLARE_NODE_API_PROPERTY("GetOwnWritableNames", GetOwnWritableNames), + DECLARE_NODE_API_PROPERTY("GetEnumerableConfigurableNames", + GetEnumerableConfigurableNames), + DECLARE_NODE_API_PROPERTY("GetOwnConfigurableNames", + GetOwnConfigurableNames), + DECLARE_NODE_API_PROPERTY("Set", Set), + DECLARE_NODE_API_PROPERTY("SetNamed", SetNamed), + DECLARE_NODE_API_PROPERTY("Has", Has), + DECLARE_NODE_API_PROPERTY("HasNamed", HasNamed), + DECLARE_NODE_API_PROPERTY("HasOwn", HasOwn), + DECLARE_NODE_API_PROPERTY("Delete", Delete), + DECLARE_NODE_API_PROPERTY("New", New), + DECLARE_NODE_API_PROPERTY("Inflate", Inflate), + DECLARE_NODE_API_PROPERTY("Wrap", Wrap), + DECLARE_NODE_API_PROPERTY("Unwrap", Unwrap), + DECLARE_NODE_API_PROPERTY("TestSetProperty", TestSetProperty), + DECLARE_NODE_API_PROPERTY("TestHasProperty", TestHasProperty), + DECLARE_NODE_API_PROPERTY("TypeTaggedInstance", TypeTaggedInstance), + DECLARE_NODE_API_PROPERTY("TypeTaggedExternal", TypeTaggedExternal), + DECLARE_NODE_API_PROPERTY("PlainExternal", PlainExternal), + DECLARE_NODE_API_PROPERTY("CheckTypeTag", CheckTypeTag), + DECLARE_NODE_API_PROPERTY("TestGetProperty", TestGetProperty), + DECLARE_NODE_API_PROPERTY("TestFreeze", TestFreeze), + DECLARE_NODE_API_PROPERTY("TestSeal", TestSeal), }; init_test_null(env, exports); From 434bdde97464cc04f79ed3c8398f2a50c71c39d1 Mon Sep 17 00:00:00 2001 From: Joyee Cheung Date: Wed, 22 Mar 2023 10:28:02 +0100 Subject: [PATCH 123/186] inspector: log response and requests in the inspector for debugging Logs the raw messages from the inspector when NODE_DEBUG_NATIVE is set to inspector_server to facilitate debugging. PR-URL: https://github.com/nodejs/node/pull/46941 Reviewed-By: Rafael Gonzaga Reviewed-By: Darshan Sen --- src/inspector_agent.cc | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/inspector_agent.cc b/src/inspector_agent.cc index 02842c7e5e792c..bb60e47e9d9cc7 100644 --- a/src/inspector_agent.cc +++ b/src/inspector_agent.cc @@ -248,6 +248,9 @@ class ChannelImpl final : public v8_inspector::V8Inspector::Channel, void dispatchProtocolMessage(const StringView& message) { std::string raw_message = protocol::StringUtil::StringViewToUtf8(message); + per_process::Debug(DebugCategory::INSPECTOR_SERVER, + "[inspector received] %s\n", + raw_message); std::unique_ptr value = protocol::DictionaryValue::cast(protocol::StringUtil::parseMessage( raw_message, false)); @@ -296,6 +299,13 @@ class ChannelImpl final : public v8_inspector::V8Inspector::Channel, void flushProtocolNotifications() override { } void sendMessageToFrontend(const StringView& message) { + if (per_process::enabled_debug_list.enabled( + DebugCategory::INSPECTOR_SERVER)) { + std::string raw_message = protocol::StringUtil::StringViewToUtf8(message); + per_process::Debug(DebugCategory::INSPECTOR_SERVER, + "[inspector send] %s\n", + raw_message); + } delegate_->SendMessageToFrontend(message); } From f08655532b5bf06549000f5f7dd3c833c06b62c4 Mon Sep 17 00:00:00 2001 From: Stefan Stojanovic Date: Wed, 22 Mar 2023 11:54:49 +0100 Subject: [PATCH 124/186] test: skip broken tests win arm64 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/47020 Reviewed-By: Richard Lau Reviewed-By: Michaël Zasso --- test/parallel/parallel.status | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/test/parallel/parallel.status b/test/parallel/parallel.status index 1cbcefb9712fae..927e972e9d89cd 100644 --- a/test/parallel/parallel.status +++ b/test/parallel/parallel.status @@ -14,6 +14,10 @@ test-crypto-keygen: PASS,FLAKY # https://github.com/nodejs/node/issues/41201 test-fs-rmdir-recursive: PASS, FLAKY +# Windows on ARM +[$system==win32 && $arch==arm64] +test-child-process-exec-cwd: SKIP + [$system==linux] # https://github.com/nodejs/node/issues/39368 test-domain-error-types: PASS,FLAKY From 7d84d67364863e328e1612882a61546a895ebc1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Nie=C3=9Fen?= Date: Wed, 22 Mar 2023 12:41:06 +0100 Subject: [PATCH 125/186] crypto: unify validation of checkPrime checks Previously, the JS layer would validate that the value of the 'checks' option was an unsigned 32-bit integer, otherwise throwing an appropriate error but with a slightly misleading error message. Then the C++ layer would validate that the value was an unsigned 31-bit integer, otherwise throwing an appropriate error, but with a different (and even less helpful) error message. Instead, make the JS layer aware of the 31-bit restriction so that no validation in C++ is necessary and so that the error message always matches the exact requirement. PR-URL: https://github.com/nodejs/node/pull/47165 Reviewed-By: Luigi Pinca Reviewed-By: Ben Noordhuis --- lib/internal/crypto/random.js | 7 ++++--- src/crypto/crypto_random.cc | 15 ++++----------- test/parallel/test-crypto-prime.js | 11 +++++++++++ 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/lib/internal/crypto/random.js b/lib/internal/crypto/random.js index af2b6729ed846b..0533216969bc8e 100644 --- a/lib/internal/crypto/random.js +++ b/lib/internal/crypto/random.js @@ -51,7 +51,6 @@ const { validateFunction, validateInt32, validateObject, - validateUint32, } = require('internal/validators'); const { @@ -560,7 +559,8 @@ function checkPrime(candidate, options = kEmptyObject, callback) { checks = 0, } = options; - validateUint32(checks, 'options.checks'); + // The checks option is unsigned but must fit into a signed C int for OpenSSL. + validateInt32(checks, 'options.checks', 0); const job = new CheckPrimeJob(kCryptoJobAsync, candidate, checks); job.ondone = callback; @@ -588,7 +588,8 @@ function checkPrimeSync(candidate, options = kEmptyObject) { checks = 0, } = options; - validateUint32(checks, 'options.checks'); + // The checks option is unsigned but must fit into a signed C int for OpenSSL. + validateInt32(checks, 'options.checks', 0); const job = new CheckPrimeJob(kCryptoJobSync, candidate, checks); const { 0: err, 1: result } = job.run(); diff --git a/src/crypto/crypto_random.cc b/src/crypto/crypto_random.cc index 2f9e9aacb1e652..2652b7d8aae17a 100644 --- a/src/crypto/crypto_random.cc +++ b/src/crypto/crypto_random.cc @@ -15,6 +15,7 @@ using v8::ArrayBuffer; using v8::BackingStore; using v8::False; using v8::FunctionCallbackInfo; +using v8::Int32; using v8::Just; using v8::Local; using v8::Maybe; @@ -185,8 +186,6 @@ Maybe CheckPrimeTraits::AdditionalConfig( const FunctionCallbackInfo& args, unsigned int offset, CheckPrimeConfig* params) { - Environment* env = Environment::GetCurrent(args); - ArrayBufferOrViewContents candidate(args[offset]); params->candidate = @@ -195,15 +194,9 @@ Maybe CheckPrimeTraits::AdditionalConfig( candidate.size(), nullptr)); - CHECK(args[offset + 1]->IsUint32()); // Checks - - const int checks = static_cast(args[offset + 1].As()->Value()); - if (checks < 0) { - THROW_ERR_OUT_OF_RANGE(env, "invalid options.checks"); - return Nothing(); - } - - params->checks = checks; + CHECK(args[offset + 1]->IsInt32()); // Checks + params->checks = args[offset + 1].As()->Value(); + CHECK_GE(params->checks, 0); return Just(true); } diff --git a/test/parallel/test-crypto-prime.js b/test/parallel/test-crypto-prime.js index 5eef83fb266bb8..f0ec4efaf611c8 100644 --- a/test/parallel/test-crypto-prime.js +++ b/test/parallel/test-crypto-prime.js @@ -240,6 +240,17 @@ for (const checks of ['hello', {}, []]) { }); } +for (const checks of [-(2 ** 31), -1, 2 ** 31, 2 ** 32 - 1, 2 ** 32, 2 ** 50]) { + assert.throws(() => checkPrime(2n, { checks }, common.mustNotCall()), { + code: 'ERR_OUT_OF_RANGE', + message: /<= 2147483647/ + }); + assert.throws(() => checkPrimeSync(2n, { checks }), { + code: 'ERR_OUT_OF_RANGE', + message: /<= 2147483647/ + }); +} + assert(!checkPrimeSync(Buffer.from([0x1]))); assert(checkPrimeSync(Buffer.from([0x2]))); assert(checkPrimeSync(Buffer.from([0x3]))); From 1a18b440287dac1bdc0d4adc818db2ce8e1a1503 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Nie=C3=9Fen?= Date: Wed, 22 Mar 2023 12:41:15 +0100 Subject: [PATCH 126/186] src: replace impossible THROW with CHECK The JS layer already verifies that divisor_bits is either a non-negative 32-bit signed integer or null/undefined, in which case it passes -1 to the C++ layer. In either case, the C++ layer receives a 32-bit signed integer greater than or equal to -1. PR-URL: https://github.com/nodejs/node/pull/47168 Reviewed-By: Darshan Sen Reviewed-By: Luigi Pinca --- src/crypto/crypto_dsa.cc | 6 +----- test/parallel/test-crypto-keygen.js | 2 +- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/src/crypto/crypto_dsa.cc b/src/crypto/crypto_dsa.cc index 6839283fbf4ca7..3fa4a415dc911a 100644 --- a/src/crypto/crypto_dsa.cc +++ b/src/crypto/crypto_dsa.cc @@ -83,16 +83,12 @@ Maybe DsaKeyGenTraits::AdditionalConfig( const FunctionCallbackInfo& args, unsigned int* offset, DsaKeyPairGenConfig* params) { - Environment* env = Environment::GetCurrent(args); CHECK(args[*offset]->IsUint32()); // modulus bits CHECK(args[*offset + 1]->IsInt32()); // divisor bits params->params.modulus_bits = args[*offset].As()->Value(); params->params.divisor_bits = args[*offset + 1].As()->Value(); - if (params->params.divisor_bits < -1) { - THROW_ERR_OUT_OF_RANGE(env, "invalid value for divisor_bits"); - return Nothing(); - } + CHECK_GE(params->params.divisor_bits, -1); *offset += 2; diff --git a/test/parallel/test-crypto-keygen.js b/test/parallel/test-crypto-keygen.js index 1a77266b057041..df8c5d93a90342 100644 --- a/test/parallel/test-crypto-keygen.js +++ b/test/parallel/test-crypto-keygen.js @@ -1278,7 +1278,7 @@ const sec1EncExp = (cipher) => getRegExpForPEM('EC PRIVATE KEY', cipher); } // Test invalid divisor lengths. (out of range) - for (const divisorLength of [-6, -9, 2147483648]) { + for (const divisorLength of [-1, -6, -9, 2147483648]) { assert.throws(() => generateKeyPair('dsa', { modulusLength: 2048, divisorLength From 202a9fa48280c32546ede407808c8b8e28d978ac Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Wed, 22 Mar 2023 16:02:53 +0100 Subject: [PATCH 127/186] tools: update daily wpt actions summary MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/47138 Reviewed-By: Luigi Pinca Reviewed-By: Michaël Zasso --- .github/workflows/daily-wpt-fyi.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/daily-wpt-fyi.yml b/.github/workflows/daily-wpt-fyi.yml index 14a6e984c5ad84..386f4eab2e222d 100644 --- a/.github/workflows/daily-wpt-fyi.yml +++ b/.github/workflows/daily-wpt-fyi.yml @@ -135,6 +135,8 @@ jobs: run: | gzip wptreport.json echo "## Node.js ${{ steps.setup-node.outputs.node-version }}" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "WPT Revision: [\`${WPT_REVISION:0:7}\`](https://github.com/web-platform-tests/wpt/commits/$WPT_REVISION)" >> $GITHUB_STEP_SUMMARY for WPT_FYI_ENDPOINT in "https://wpt.fyi/api/results/upload" "https://staging.wpt.fyi/api/results/upload" do response=$(curl -sS \ @@ -148,7 +150,7 @@ jobs: origin=${WPT_FYI_ENDPOINT%/api/results/upload} echo "" >> $GITHUB_STEP_SUMMARY - echo "Run ID [$run_id]($origin/api/runs/$run_id) added to the processor queue at $origin" >> $GITHUB_STEP_SUMMARY + echo "Run ID [\`$run_id\`]($origin/api/runs/$run_id) added to the processor queue at ${origin:8}" >> $GITHUB_STEP_SUMMARY echo "- [View on the ${origin:8} dashboard]($origin/results?run_id=$run_id)" >> $GITHUB_STEP_SUMMARY fi done From 7bc0e6a4e79684a98cb64c61452af00e20f590e7 Mon Sep 17 00:00:00 2001 From: Khafra Date: Wed, 22 Mar 2023 15:28:12 -0400 Subject: [PATCH 128/186] buffer: graduate File from experimental and expose as global PR-URL: https://github.com/nodejs/node/pull/47153 Reviewed-By: Yagiz Nizipli Reviewed-By: Matteo Collina Reviewed-By: Geoffrey Booth Reviewed-By: Robert Nagy Reviewed-By: Antoine du Hamel --- doc/api/buffer.md | 6 ++++-- doc/api/globals.md | 10 ++++++++++ lib/.eslintrc.yaml | 2 ++ lib/internal/bootstrap/web/exposed-window-or-worker.js | 2 ++ lib/internal/file.js | 3 --- 5 files changed, 18 insertions(+), 5 deletions(-) diff --git a/doc/api/buffer.md b/doc/api/buffer.md index d6e2831dd09913..da90d3f3050882 100644 --- a/doc/api/buffer.md +++ b/doc/api/buffer.md @@ -5054,10 +5054,12 @@ See [`Buffer.from(string[, encoding])`][`Buffer.from(string)`]. added: - v19.2.0 - v18.13.0 +changes: + - version: REPLACEME + pr-url: https://github.com/nodejs/node/pull/47153 + description: No longer experimental. --> -> Stability: 1 - Experimental - * Extends: {Blob} A [`File`][] provides information about files. diff --git a/doc/api/globals.md b/doc/api/globals.md index ec42fd53ab24eb..a1b1f259b32418 100644 --- a/doc/api/globals.md +++ b/doc/api/globals.md @@ -474,6 +474,16 @@ changes: A browser-compatible implementation of the [`fetch()`][] function. +## Class: `File` + + + + + +See {File}. + ## Class `FormData` + +* `input` {string} The absolute or relative input URL to parse. If `input` + is relative, then `base` is required. If `input` is absolute, the `base` + is ignored. If `input` is not a string, it is [converted to a string][] first. +* `base` {string} The base URL to resolve against if the `input` is not + absolute. If `base` is not a string, it is [converted to a string][] first. +* Returns: {boolean} + +Checks if an `input` relative to the `base` can be parsed to a `URL`. + +```js +const isValid = URL.canParse('/foo', 'https://example.org/'); // true + +const isNotValid = URL.canParse('/foo'); // false +``` + ### Class: `URLSearchParams` - 1033 - - The Setup Wizard will install [ProductName] on your computer. - Choose a custom location or click Next to install. - - A later version of [ProductName] is already installed. Setup will now exit. - - [ProductName] Setup - {\WixUI_Font_Title}Tools for Native Modules - Optionally install the tools necessary to compile native modules. - WixUI_Bmp_Banner - Some npm modules need to be compiled from C/C++ when installing. If you want to be able to install such modules, some tools (Python and Visual Studio Build Tools) need to be installed. - Automatically install the necessary tools. Note that this will also install Chocolatey. The script will pop-up in a new window after the installation completes. - Alternatively, follow the instructions at https://github.com/nodejs/node-gyp#on-windows]]> to install the dependencies yourself. - - - Node.js runtime - Install the core [ProductName] runtime (node.exe). - - npm package manager - Install npm, the recommended package manager for [ProductName]. - - corepack manager - Install corepack, the universal package manager for [ProductName]. - - Online documentation shortcuts - Add start menu entries that link the online documentation for [ProductName] [FullVersion] and the [ProductName] website. - - Add to PATH - Add [ProductName], npm, and modules that were globally installed by npm to the PATH environment variable. - - Node.js and npm - Add [ProductName] and npm (if installed) to the PATH environment variable. - - npm modules - Add modules that are installed globally by npm to the PATH environment variable. This option works for the current user only; other users need to update their PATH manually. - - - Node.js has been successfully installed. - diff --git a/tools/msvs/msi/nodemsi.sln b/tools/msvs/msi/nodemsi.sln index 86b4b10dcb043f..e06530f5e24abd 100644 --- a/tools/msvs/msi/nodemsi.sln +++ b/tools/msvs/msi/nodemsi.sln @@ -1,9 +1,13 @@ - -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Studio 2010 -Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "nodemsi", "nodemsi.wixproj", "{1D808FF0-B5A9-4BE9-859D-B334B6F48BE2}" +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.33027.164 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{B7DD6F7E-DEF8-4E67-B5B7-07EF123DB6F0}") = "nodemsi", "nodemsi\nodemsi.wixproj", "{1D808FF0-B5A9-4BE9-859D-B334B6F48BE2}" + ProjectSection(ProjectDependencies) = postProject + {B70585F8-DAB7-40FA-9904-13CF53A73A06} = {B70585F8-DAB7-40FA-9904-13CF53A73A06} + EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "custom_actions", "custom_actions.vcxproj", "{B70585F8-DAB7-40FA-9904-13CF53A73A06}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "custom_actions", "custom_actions\custom_actions.vcxproj", "{B70585F8-DAB7-40FA-9904-13CF53A73A06}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -43,4 +47,7 @@ Global GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {FB650322-7A09-471D-A635-F2DBDCEECDB8} + EndGlobalSection EndGlobal diff --git a/tools/msvs/msi/nodemsi.wixproj b/tools/msvs/msi/nodemsi.wixproj deleted file mode 100644 index 0cf215daca5978..00000000000000 --- a/tools/msvs/msi/nodemsi.wixproj +++ /dev/null @@ -1,93 +0,0 @@ - - - - Debug - x86 - 3.5 - {1d808ff0-b5a9-4be9-859d-b334b6f48be2} - 2.0 - node-v$(FullVersion)-$(Platform) - Package - True - $(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets - $(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets - 0.0.0.0 - - - ..\..\..\ - obj\$(Configuration)\ - Debug;ProductVersion=$(NodeVersion);FullVersion=$(FullVersion);DistTypeDir=$(DistTypeDir);NpmSourceDir=..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\npm\;CorepackSourceDir=..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\corepack\;ProgramFilesFolderId=ProgramFilesFolder - - - ..\..\..\ - obj\$(Configuration)\ - Debug;ProductVersion=$(NodeVersion);FullVersion=$(FullVersion);DistTypeDir=$(DistTypeDir);NpmSourceDir=..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\npm\;CorepackSourceDir=..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\corepack\;ProgramFilesFolderId=ProgramFilesFolder - - - ..\..\..\ - obj\$(Configuration)\ - Debug;ProductVersion=$(NodeVersion);FullVersion=$(FullVersion);DistTypeDir=$(DistTypeDir);NpmSourceDir=..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\npm\;CorepackSourceDir=..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\corepack\;ProgramFilesFolderId=ProgramFiles64Folder - en-US - - - ..\..\..\ - obj\$(Configuration)\ - Debug;ProductVersion=$(NodeVersion);FullVersion=$(FullVersion);DistTypeDir=$(DistTypeDir);NpmSourceDir=..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\npm\;CorepackSourceDir=..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\corepack\;ProgramFilesFolderId=ProgramFiles64Folder - - - ..\..\..\ - obj\$(Configuration)\ - Debug;ProductVersion=$(NodeVersion);FullVersion=$(FullVersion);DistTypeDir=$(DistTypeDir);NpmSourceDir=..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\npm\;CorepackSourceDir=..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\corepack\;ProgramFilesFolderId=ProgramFiles64Folder - - - ..\..\..\ - obj\$(Configuration)\ - Debug;ProductVersion=$(NodeVersion);FullVersion=$(FullVersion);DistTypeDir=$(DistTypeDir);NpmSourceDir=..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\npm\;CorepackSourceDir=..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\corepack\;ProgramFilesFolderId=ProgramFiles64Folder - - - True - - - - - npm.wxs - - - corepack.wxs - - - - - $(WixExtDir)\WixUIExtension.dll - WixUIExtension - - - $(WixExtDir)\WiXUtilExtension.dll - WiXUtilExtension - - - - - - - - custom_actions - {b70585f8-dab7-40fa-9904-13cf53a73a06} - True - True - Binaries;Content;Satellites - INSTALLFOLDER - - - - - - - - - - - move "!(TargetPath)" "$(TargetDir)\$(TargetFileName)" - move "!(TargetPdbPath)" "$(TargetDir)\$(TargetPdbName)" - - diff --git a/tools/msvs/msi/nodemsi/i18n/en-us.wxl b/tools/msvs/msi/nodemsi/i18n/en-us.wxl new file mode 100644 index 00000000000000..5074d5a43125f7 --- /dev/null +++ b/tools/msvs/msi/nodemsi/i18n/en-us.wxl @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tools/msvs/msi/nodemsi/nodemsi.wixproj b/tools/msvs/msi/nodemsi/nodemsi.wixproj new file mode 100644 index 00000000000000..b1463cf65696b9 --- /dev/null +++ b/tools/msvs/msi/nodemsi/nodemsi.wixproj @@ -0,0 +1,70 @@ + + + + Debug + x86 + 3.5 + {1d808ff0-b5a9-4be9-859d-b334b6f48be2} + node-v$(FullVersion)-$(Platform) + Package + 0.0.0.0 + + + ..\..\..\..\ + obj\$(Configuration)\ + Debug;ProductVersion=$(NodeVersion);FullVersion=$(FullVersion);DistTypeDir=$(DistTypeDir);NpmSourceDir=..\..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\npm\;CorepackSourceDir=..\..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\corepack\;ProgramFilesFolderId=ProgramFilesFolder + + + ..\..\..\..\ + obj\$(Configuration)\ + Debug;ProductVersion=$(NodeVersion);FullVersion=$(FullVersion);DistTypeDir=$(DistTypeDir);NpmSourceDir=..\..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\npm\;CorepackSourceDir=..\..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\corepack\;ProgramFilesFolderId=ProgramFilesFolder + + + ..\..\..\..\ + obj\$(Configuration)\ + Debug;ProductVersion=$(NodeVersion);FullVersion=$(FullVersion);DistTypeDir=$(DistTypeDir);NpmSourceDir=..\..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\npm\;CorepackSourceDir=..\..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\corepack\;ProgramFilesFolderId=ProgramFiles64Folder + en-US + + + ..\..\..\..\ + obj\$(Configuration)\ + Debug;ProductVersion=$(NodeVersion);FullVersion=$(FullVersion);DistTypeDir=$(DistTypeDir);NpmSourceDir=..\..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\npm\;CorepackSourceDir=..\..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\corepack\;ProgramFilesFolderId=ProgramFiles64Folder + + + ..\..\..\..\ + obj\$(Configuration)\ + Debug;ProductVersion=$(NodeVersion);FullVersion=$(FullVersion);DistTypeDir=$(DistTypeDir);NpmSourceDir=..\..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\npm\;CorepackSourceDir=..\..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\corepack\;ProgramFilesFolderId=ProgramFiles64Folder + + + ..\..\..\..\ + obj\$(Configuration)\ + Debug;ProductVersion=$(NodeVersion);FullVersion=$(FullVersion);DistTypeDir=$(DistTypeDir);NpmSourceDir=..\..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\npm\;CorepackSourceDir=..\..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\corepack\;ProgramFilesFolderId=ProgramFiles64Folder + + + + npm.wxs + + + corepack.wxs + + + + + + + + + + + + + + + + + + + move "$(TargetDir)en-us\$(TargetFileName)" "$(TargetPath)" + move "$(TargetDir)en-us\$(TargetPdbFileName)" "$(TargetPdbPath)" + + diff --git a/tools/msvs/msi/product.wxs b/tools/msvs/msi/nodemsi/product.wxs old mode 100755 new mode 100644 similarity index 79% rename from tools/msvs/msi/product.wxs rename to tools/msvs/msi/nodemsi/product.wxs index c6984777fac3fa..de4a6a34cee118 --- a/tools/msvs/msi/product.wxs +++ b/tools/msvs/msi/nodemsi/product.wxs @@ -1,6 +1,6 @@ - - + @@ -8,24 +8,18 @@ - + - + UpgradeCode="47c07a3a-42ef-4213-a85d-8f5a59077c28" + InstallerVersion="200" + Compressed="yes"> - - - - = 603) OR (VersionNT >= 602 AND MsiNTProductType <> 1)]]> - + @@ -46,10 +40,9 @@ - - - - + + + + AllowAbsent="no"> @@ -79,7 +72,6 @@ - - - - - + + + - - - + + - + @@ -197,13 +187,13 @@ + - - - - - - - - + + + + + + + - + @@ -314,38 +304,39 @@ - + - - + + - + - - - + + + @@ -383,34 +374,35 @@ - 1 + - NOT Installed - Installed AND PATCH - 1 - LicenseAccepted = "1" - 1 - 1 - 1 - 1 - 1 - NOT Installed OR WixUI_InstallMode = "Change" - Installed AND NOT PATCH - Installed AND PATCH - 1 - 1 - 1 - 1 - 1 - Installed - NOT Installed - 1 - 1 - 1 - NATIVETOOLSCHECKBOX = 1 - 1 + + + + + + + + + + + + + + + + + + + + + + + + + @@ -420,6 +412,6 @@ - + diff --git a/vcbuild.bat b/vcbuild.bat index 858b54cc23c57c..a4dd3a28d5c98b 100644 --- a/vcbuild.bat +++ b/vcbuild.bat @@ -259,19 +259,6 @@ echo Looking for Visual Studio 2022 if not defined target_env set "VCINSTALLDIR=" call tools\msvs\vswhere_usability_wrapper.cmd "[17.0,18.0)" %target_arch% "prerelease" if "_%VCINSTALLDIR%_" == "__" goto vs-set-2019 -set "WIXSDKDIR=%WIX%\SDK\VS2017" -if defined msi ( - echo Looking for WiX installation for Visual Studio 2022... - if not exist "%WIXSDKDIR%" ( - echo Failed to find WiX install for Visual Studio 2022 - echo VS2022 support for WiX is only present starting at version 3.XX - goto vs-set-2019 - ) - if not exist "%VCINSTALLDIR%\..\MSBuild\Microsoft\WiX" ( - echo Failed to find the WiX Toolset Visual Studio 2022 Extension - goto vs-set-2019 - ) -) @rem check if VS2022 is already setup, and for the requested arch if "_%VisualStudioVersion%_" == "_17.0_" if "_%VSCMD_ARG_TGT_ARCH%_"=="_%target_arch%_" goto found_vs2022 @rem need to clear VSINSTALLDIR for vcvarsall to work as expected @@ -299,19 +286,6 @@ echo Looking for Visual Studio 2019 if not defined target_env set "VCINSTALLDIR=" call tools\msvs\vswhere_usability_wrapper.cmd "[16.0,17.0)" %target_arch% "prerelease" if "_%VCINSTALLDIR%_" == "__" goto msbuild-not-found -set "WIXSDKDIR=%WIX%\SDK\VS2017" -if defined msi ( - echo Looking for WiX installation for Visual Studio 2019... - if not exist "%WIXSDKDIR%" ( - echo Failed to find WiX install for Visual Studio 2019 - echo VS2019 support for WiX is only present starting at version 3.11 - goto msbuild-not-found - ) - if not exist "%VCINSTALLDIR%\..\MSBuild\Microsoft\WiX" ( - echo Failed to find the WiX Toolset Visual Studio 2019 Extension - goto msbuild-not-found - ) -) @rem check if VS2019 is already setup, and for the requested arch if "_%VisualStudioVersion%_" == "_16.0_" if "_%VSCMD_ARG_TGT_ARCH%_"=="_%target_arch%_" goto found_vs2019 @rem need to clear VSINSTALLDIR for vcvarsall to work as expected @@ -532,7 +506,7 @@ if not defined msi goto install-doctools echo Building node-v%FULLVERSION%-%target_arch%.msi set "msbsdk=" if defined WindowsSDKVersion set "msbsdk=/p:WindowsTargetPlatformVersion=%WindowsSDKVersion:~0,-1%" -msbuild "%~dp0tools\msvs\msi\nodemsi.sln" /m /t:Clean,Build %msbsdk% /p:PlatformToolset=%PLATFORM_TOOLSET% /p:WixSdkDir="%WIXSDKDIR%" /p:Configuration=%config% /p:Platform=%target_arch% /p:NodeVersion=%NODE_VERSION% /p:FullVersion=%FULLVERSION% /p:DistTypeDir=%DISTTYPEDIR% /clp:NoSummary;NoItemAndPropertyList;Verbosity=minimal /nologo +msbuild "%~dp0tools\msvs\msi\nodemsi.sln" /m /t:Restore,Clean,Build %msbsdk% /p:PlatformToolset=%PLATFORM_TOOLSET% /p:Configuration=%config% /p:Platform=%target_arch% /p:NodeVersion=%NODE_VERSION% /p:FullVersion=%FULLVERSION% /p:DistTypeDir=%DISTTYPEDIR% /clp:NoSummary;NoItemAndPropertyList;Verbosity=minimal /nologo if errorlevel 1 goto exit if not defined sign goto upload From a2c3061c1573a9bd4f0790028c575375e1adcb30 Mon Sep 17 00:00:00 2001 From: "Node.js GitHub Bot" Date: Thu, 23 Mar 2023 00:49:56 +0000 Subject: [PATCH 131/186] meta: move TSC voting member(s) to regular member(s) PR-URL: https://github.com/nodejs/node/pull/47180 Reviewed-By: Darshan Sen Reviewed-By: Antoine du Hamel Reviewed-By: Luigi Pinca Reviewed-By: Joyee Cheung Reviewed-By: Rafael Gonzaga Reviewed-By: Chengzhong Wu --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 295f0c600ad4ab..0084841e921e86 100644 --- a/README.md +++ b/README.md @@ -170,8 +170,6 @@ For information about the governance of the Node.js project, see **Beth Griggs** <> (she/her) * [BridgeAR](https://github.com/BridgeAR) - **Ruben Bridgewater** <> (he/him) -* [ChALkeR](https://github.com/ChALkeR) - - **Сковорода Никита Андреевич** <> (he/him) * [cjihrig](https://github.com/cjihrig) - **Colin Ihrig** <> (he/him) * [danielleadams](https://github.com/danielleadams) - @@ -211,6 +209,8 @@ For information about the governance of the Node.js project, see **Anna Henningsen** <> (she/her) * [bnoordhuis](https://github.com/bnoordhuis) - **Ben Noordhuis** <> +* [ChALkeR](https://github.com/ChALkeR) - + **Сковорода Никита Андреевич** <> (he/him) * [codebytere](https://github.com/codebytere) - **Shelley Vohr** <> (she/her) * [danbev](https://github.com/danbev) - From 002b30eaa513e057330d2642401518a21d23fa97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Nie=C3=9Fen?= Date: Thu, 23 Mar 2023 01:50:05 +0100 Subject: [PATCH 132/186] doc: remove use of DEFAULT_ENCODING in PBKDF2 docs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit There is no point in documenting this legacy behavior, which will emit a warning when used. PR-URL: https://github.com/nodejs/node/pull/47181 Reviewed-By: Ben Noordhuis Reviewed-By: Michaël Zasso Reviewed-By: Filip Skokan Reviewed-By: Luigi Pinca --- doc/api/crypto.md | 40 ---------------------------------------- 1 file changed, 40 deletions(-) diff --git a/doc/api/crypto.md b/doc/api/crypto.md index d432649e18c9a1..5de4a76365ddad 100644 --- a/doc/api/crypto.md +++ b/doc/api/crypto.md @@ -4430,28 +4430,6 @@ pbkdf2('secret', 'salt', 100000, 64, 'sha512', (err, derivedKey) => { }); ``` -The `crypto.DEFAULT_ENCODING` property can be used to change the way the -`derivedKey` is passed to the callback. This property, however, has been -deprecated and use should be avoided. - -```mjs -import crypto from 'node:crypto'; -crypto.DEFAULT_ENCODING = 'hex'; -crypto.pbkdf2('secret', 'salt', 100000, 512, 'sha512', (err, derivedKey) => { - if (err) throw err; - console.log(derivedKey); // '3745e48...aa39b34' -}); -``` - -```cjs -const crypto = require('node:crypto'); -crypto.DEFAULT_ENCODING = 'hex'; -crypto.pbkdf2('secret', 'salt', 100000, 512, 'sha512', (err, derivedKey) => { - if (err) throw err; - console.log(derivedKey); // '3745e48...aa39b34' -}); -``` - An array of supported digest functions can be retrieved using [`crypto.getHashes()`][]. @@ -4521,24 +4499,6 @@ const key = pbkdf2Sync('secret', 'salt', 100000, 64, 'sha512'); console.log(key.toString('hex')); // '3745e48...08d59ae' ``` -The `crypto.DEFAULT_ENCODING` property may be used to change the way the -`derivedKey` is returned. This property, however, is deprecated and use -should be avoided. - -```mjs -import crypto from 'node:crypto'; -crypto.DEFAULT_ENCODING = 'hex'; -const key = crypto.pbkdf2Sync('secret', 'salt', 100000, 512, 'sha512'); -console.log(key); // '3745e48...aa39b34' -``` - -```cjs -const crypto = require('node:crypto'); -crypto.DEFAULT_ENCODING = 'hex'; -const key = crypto.pbkdf2Sync('secret', 'salt', 100000, 512, 'sha512'); -console.log(key); // '3745e48...aa39b34' -``` - An array of supported digest functions can be retrieved using [`crypto.getHashes()`][]. From 820030491f1d12253a100fc892e9d929e00f0082 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Thu, 23 Mar 2023 10:38:17 +0100 Subject: [PATCH 133/186] tools: notify on Slack when invalid commit lands PR-URL: https://github.com/nodejs/node/pull/47178 Reviewed-By: Rich Trott Reviewed-By: Yagiz Nizipli Reviewed-By: Debadree Chatterjee Reviewed-By: Darshan Sen Reviewed-By: Tierney Cyren Reviewed-By: Akhil Marsonya Reviewed-By: Chengzhong Wu Reviewed-By: Matteo Collina --- .github/workflows/notify-force-push.yml | 28 ----------- .github/workflows/notify-on-push.yml | 66 +++++++++++++++++++++++++ 2 files changed, 66 insertions(+), 28 deletions(-) delete mode 100644 .github/workflows/notify-force-push.yml create mode 100644 .github/workflows/notify-on-push.yml diff --git a/.github/workflows/notify-force-push.yml b/.github/workflows/notify-force-push.yml deleted file mode 100644 index 69aacc8524fd93..00000000000000 --- a/.github/workflows/notify-force-push.yml +++ /dev/null @@ -1,28 +0,0 @@ -on: - push: - branches: - - main - -name: Notify on Force Push -permissions: - contents: read - -jobs: - slackNotification: - name: Slack Notification - if: github.repository == 'nodejs/node' && github.event.forced - runs-on: ubuntu-latest - steps: - - name: Slack Notification - uses: rtCamp/action-slack-notify@12e36fc18b0689399306c2e0b3e0f2978b7f1ee7 - env: - SLACK_COLOR: '#DE512A' - SLACK_ICON: https://github.com/nodejs.png?size=48 - SLACK_TITLE: ${{ github.actor }} force-pushed to ${{ github.ref }} - SLACK_MESSAGE: | - A commit was force-pushed to by - - Before: - After: - SLACK_USERNAME: nodejs-bot - SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} diff --git a/.github/workflows/notify-on-push.yml b/.github/workflows/notify-on-push.yml new file mode 100644 index 00000000000000..dd415a4a380dae --- /dev/null +++ b/.github/workflows/notify-on-push.yml @@ -0,0 +1,66 @@ +on: + push: + branches: + - main + +name: Notify on Push +permissions: + contents: read + +jobs: + notifyOnForcePush: + name: Notify on Force Push on `main` + if: github.repository == 'nodejs/node' && github.event.forced + runs-on: ubuntu-latest + steps: + - name: Slack Notification + uses: rtCamp/action-slack-notify@12e36fc18b0689399306c2e0b3e0f2978b7f1ee7 + env: + SLACK_COLOR: '#DE512A' + SLACK_ICON: https://github.com/nodejs.png?size=48 + SLACK_TITLE: ${{ github.actor }} force-pushed to ${{ github.ref }} + SLACK_MESSAGE: | + A commit was force-pushed to by + + Before: + After: + SLACK_USERNAME: nodejs-bot + SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} + + notifyOnMissingMetadata: + name: Notify on Push on `main` that lacks metadata + if: github.repository == 'nodejs/node' + runs-on: ubuntu-latest + steps: + - name: Check commit message + run: npx -q core-validate-commit ${{ github.event.commits[0].id }} || echo "INVALID_COMMIT_MESSAGE=1" >> $GITHUB_ENV + - name: Retrieve PR number if possible + if: ${{ env.INVALID_COMMIT_MESSAGE }} + run: | + node <<<'EOF' + const invalidCommitMessageMatch = /\s\(\#\d+\)$/.exec(process.env.COMMIT_MESSAGE); + if (match == null) process.exit(1) + console.log(`PR_ID=${match[0]}`) + EOF >> $GITHUB_ENV || true + env: + COMMIT_MESSAGE: ${{ github.event.commits[0].message }} + - name: Comment on the Pull Request + if: ${{ env.PR_ID }} + run: gh pr comment ${{ env.PR_ID }} --repo "${{ github.repository }}" --body "$BODY" + env: + BODY: | + A commit referencing this Pull Request was pushed to `main` by @${{ github.actor }} without the expected commit metadata added to its message. + - name: Slack Notification + if: ${{ env.INVALID_COMMIT_MESSAGE }} + uses: rtCamp/action-slack-notify@12e36fc18b0689399306c2e0b3e0f2978b7f1ee7 + env: + SLACK_COLOR: '#DE512A' + SLACK_ICON: https://github.com/nodejs.png?size=48 + SLACK_TITLE: Invalid commit was pushed to ${{ github.repository.default_branch }} + SLACK_MESSAGE: | + A commit lacking the expected metadata was pushed to by . + + Before: + After: + SLACK_USERNAME: nodejs-bot + SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} From f51c152f6016fdf9ad9ec6ee246f83a7b4793043 Mon Sep 17 00:00:00 2001 From: Yagiz Nizipli Date: Thu, 23 Mar 2023 11:01:31 -0400 Subject: [PATCH 134/186] util: reduce javascript call for ToUSVString PR-URL: https://github.com/nodejs/node/pull/47192 Reviewed-By: Matteo Collina Reviewed-By: Joyee Cheung --- lib/internal/util.js | 10 +--------- src/node_util.cc | 8 ++------ 2 files changed, 3 insertions(+), 15 deletions(-) diff --git a/lib/internal/util.js b/lib/internal/util.js index 1c8a02bd1811d8..64f2eec98d9094 100644 --- a/lib/internal/util.js +++ b/lib/internal/util.js @@ -69,16 +69,8 @@ const experimentalWarnings = new SafeSet(); const colorRegExp = /\u001b\[\d\d?m/g; // eslint-disable-line no-control-regex -const unpairedSurrogateRe = - /(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])/; function toUSVString(val) { - const str = `${val}`; - // As of V8 5.5, `str.search()` (and `unpairedSurrogateRe[@@search]()`) are - // slower than `unpairedSurrogateRe.exec()`. - const match = RegExpPrototypeExec(unpairedSurrogateRe, str); - if (!match) - return str; - return _toUSVString(str, match.index); + return _toUSVString(`${val}`); } let uvBinding; diff --git a/src/node_util.cc b/src/node_util.cc index 0ce3af33c82466..78de4809900ea7 100644 --- a/src/node_util.cc +++ b/src/node_util.cc @@ -322,16 +322,12 @@ static void GuessHandleType(const FunctionCallbackInfo& args) { static void ToUSVString(const FunctionCallbackInfo& args) { Environment* env = Environment::GetCurrent(args); - CHECK_GE(args.Length(), 2); + CHECK_GE(args.Length(), 1); CHECK(args[0]->IsString()); - CHECK(args[1]->IsNumber()); TwoByteValue value(env->isolate(), args[0]); - int64_t start = args[1]->IntegerValue(env->context()).FromJust(); - CHECK_GE(start, 0); - - for (size_t i = start; i < value.length(); i++) { + for (size_t i = 0; i < value.length(); i++) { char16_t c = value[i]; if (!IsUnicodeSurrogate(c)) { continue; From 73645d622700be250018d04e886b9aa8b0e8f1a2 Mon Sep 17 00:00:00 2001 From: Debadree Chatterjee Date: Thu, 23 Mar 2023 23:58:43 +0530 Subject: [PATCH 135/186] fs: invalidate blob created from empty file when written to MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes: https://github.com/nodejs/node/issues/47161 PR-URL: https://github.com/nodejs/node/pull/47199 Reviewed-By: Ben Noordhuis Reviewed-By: Michaël Zasso --- lib/internal/blob.js | 12 ------------ test/parallel/test-blob-file-backed.js | 20 ++++++++++++++++++++ 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/lib/internal/blob.js b/lib/internal/blob.js index 226a071b6d1a79..4188d999f7fde7 100644 --- a/lib/internal/blob.js +++ b/lib/internal/blob.js @@ -1,14 +1,12 @@ 'use strict'; const { - ArrayBuffer, ArrayFrom, MathMax, MathMin, ObjectDefineProperties, ObjectDefineProperty, PromiseReject, - PromiseResolve, ReflectConstruct, RegExpPrototypeExec, RegExpPrototypeSymbolReplace, @@ -266,10 +264,6 @@ class Blob { if (!isBlob(this)) return PromiseReject(new ERR_INVALID_THIS('Blob')); - if (this.size === 0) { - return PromiseResolve(new ArrayBuffer(0)); - } - const { promise, resolve, reject } = createDeferredPromise(); const reader = this[kHandle].getReader(); const buffers = []; @@ -316,12 +310,6 @@ class Blob { if (!isBlob(this)) throw new ERR_INVALID_THIS('Blob'); - if (this.size === 0) { - return new lazyReadableStream({ - start(c) { c.close(); }, - }); - } - const reader = this[kHandle].getReader(); return new lazyReadableStream({ start(c) { diff --git a/test/parallel/test-blob-file-backed.js b/test/parallel/test-blob-file-backed.js index 7271fef2f3ce46..225b660c7bbdb3 100644 --- a/test/parallel/test-blob-file-backed.js +++ b/test/parallel/test-blob-file-backed.js @@ -20,12 +20,14 @@ const { Blob } = require('buffer'); const tmpdir = require('../common/tmpdir'); const testfile = path.join(tmpdir.path, 'test-file-backed-blob.txt'); const testfile2 = path.join(tmpdir.path, 'test-file-backed-blob2.txt'); +const testfile3 = path.join(tmpdir.path, 'test-file-backed-blob3.txt'); tmpdir.refresh(); const data = `${'a'.repeat(1000)}${'b'.repeat(2000)}`; writeFileSync(testfile, data); writeFileSync(testfile2, data.repeat(100)); +writeFileSync(testfile3, ''); (async () => { const blob = await openAsBlob(testfile); @@ -79,3 +81,21 @@ writeFileSync(testfile2, data.repeat(100)); await unlink(testfile2); })().then(common.mustCall()); + +(async () => { + const blob = await openAsBlob(testfile3); + strictEqual(blob.size, 0); + strictEqual(await blob.text(), ''); + writeFileSync(testfile3, 'abc'); + await rejects(blob.text(), { name: 'NotReadableError' }); + await unlink(testfile3); +})().then(common.mustCall()); + +(async () => { + const blob = await openAsBlob(testfile3); + strictEqual(blob.size, 0); + writeFileSync(testfile3, 'abc'); + const stream = blob.stream(); + const reader = stream.getReader(); + await rejects(() => reader.read(), { name: 'NotReadableError' }); +})().then(common.mustCall()); From 2e8f8eb4e32ed690e80cc558d02a547f6885308a Mon Sep 17 00:00:00 2001 From: HinataKah0 <128208841+HinataKah0@users.noreply.github.com> Date: Fri, 24 Mar 2023 02:45:53 +0800 Subject: [PATCH 136/186] test_runner: report failing tests after summary Re-output failing tests after summary has been printed. This behavior follows other popular test runners (e.g. jest, mocha, etc...). Updated SpecReporter: 1. When there is a 'test:fail' event, the test will be stored. 2. After no more input, all the failed tests will be flushed. 3. Extract the logic for formatting a test report into a re-usable function. Fixes: https://github.com/nodejs/node/issues/47110 PR-URL: https://github.com/nodejs/node/pull/47164 Reviewed-By: Moshe Atlow Reviewed-By: Colin Ihrig --- lib/internal/test_runner/reporter/spec.js | 92 +++++--- .../test_runner_output_spec_reporter.out | 209 ++++++++++++++++++ .../test_runner_default_reporter.js | 4 + .../test_runner_default_reporter.out | 50 ++++- 4 files changed, 315 insertions(+), 40 deletions(-) diff --git a/lib/internal/test_runner/reporter/spec.js b/lib/internal/test_runner/reporter/spec.js index 3637c74111c4b7..2e3ba834351970 100644 --- a/lib/internal/test_runner/reporter/spec.js +++ b/lib/internal/test_runner/reporter/spec.js @@ -3,6 +3,7 @@ const { ArrayPrototypeJoin, ArrayPrototypePop, + ArrayPrototypePush, ArrayPrototypeShift, ArrayPrototypeUnshift, hardenRegExp, @@ -36,6 +37,7 @@ class SpecReporter extends Transform { #stack = []; #reported = []; #indentMemo = new SafeMap(); + #failedTests = []; constructor() { super({ writableObjectMode: true }); @@ -60,54 +62,74 @@ class SpecReporter extends Transform { ), `\n${indent} `); return `\n${indent} ${message}\n`; } - #handleEvent({ type, data }) { + #formatTestReport(type, data, prefix = '', indent = '', hasChildren = false, skippedSubtest = false) { let color = colors[type] ?? white; let symbol = symbols[type] ?? ' '; - + const duration_ms = data.details?.duration_ms ? ` ${gray}(${data.details.duration_ms}ms)${white}` : ''; + const title = `${data.name}${duration_ms}${skippedSubtest ? ' # SKIP' : ''}`; + if (hasChildren) { + // If this test has had children - it was already reported, so slightly modify the output + return `${prefix}${indent}${color}${symbols['arrow:right']}${white}${title}\n`; + } + const error = this.#formatError(data.details?.error, indent); + if (skippedSubtest) { + color = gray; + symbol = symbols['hyphen:minus']; + } + return `${prefix}${indent}${color}${symbol}${title}${white}${error}`; + } + #handleTestReportEvent(type, data) { + const subtest = ArrayPrototypeShift(this.#stack); // This is the matching `test:start` event + if (subtest) { + assert(subtest.type === 'test:start'); + assert(subtest.data.nesting === data.nesting); + assert(subtest.data.name === data.name); + } + let prefix = ''; + while (this.#stack.length) { + // Report all the parent `test:start` events + const parent = ArrayPrototypePop(this.#stack); + assert(parent.type === 'test:start'); + const msg = parent.data; + ArrayPrototypeUnshift(this.#reported, msg); + prefix += `${this.#indent(msg.nesting)}${symbols['arrow:right']}${msg.name}\n`; + } + let hasChildren = false; + if (this.#reported[0] && this.#reported[0].nesting === data.nesting && this.#reported[0].name === data.name) { + ArrayPrototypeShift(this.#reported); + hasChildren = true; + } + const skippedSubtest = subtest && data.skip && data.skip !== undefined; + const indent = this.#indent(data.nesting); + return `${this.#formatTestReport(type, data, prefix, indent, hasChildren, skippedSubtest)}\n`; + } + #handleEvent({ type, data }) { switch (type) { case 'test:fail': - case 'test:pass': { - const subtest = ArrayPrototypeShift(this.#stack); // This is the matching `test:start` event - if (subtest) { - assert(subtest.type === 'test:start'); - assert(subtest.data.nesting === data.nesting); - assert(subtest.data.name === data.name); - } - let prefix = ''; - while (this.#stack.length) { - // Report all the parent `test:start` events - const parent = ArrayPrototypePop(this.#stack); - assert(parent.type === 'test:start'); - const msg = parent.data; - ArrayPrototypeUnshift(this.#reported, msg); - prefix += `${this.#indent(msg.nesting)}${symbols['arrow:right']}${msg.name}\n`; - } - const skippedSubtest = subtest && data.skip && data.skip !== undefined; - const indent = this.#indent(data.nesting); - const duration_ms = data.details?.duration_ms ? ` ${gray}(${data.details.duration_ms}ms)${white}` : ''; - const title = `${data.name}${duration_ms}${skippedSubtest ? ' # SKIP' : ''}`; - if (this.#reported[0] && this.#reported[0].nesting === data.nesting && this.#reported[0].name === data.name) { - // If this test has had children - it was already reported, so slightly modify the output - ArrayPrototypeShift(this.#reported); - return `${prefix}${indent}${color}${symbols['arrow:right']}${white}${title}\n\n`; - } - const error = this.#formatError(data.details?.error, indent); - if (skippedSubtest) { - color = gray; - symbol = symbols['hyphen:minus']; - } - return `${prefix}${indent}${color}${symbol}${title}${error}${white}\n`; - } + ArrayPrototypePush(this.#failedTests, data); + return this.#handleTestReportEvent(type, data); + case 'test:pass': + return this.#handleTestReportEvent(type, data); case 'test:start': ArrayPrototypeUnshift(this.#stack, { __proto__: null, data, type }); break; case 'test:diagnostic': - return `${color}${this.#indent(data.nesting)}${symbol}${data.message}${white}\n`; + return `${colors[type]}${this.#indent(data.nesting)}${symbols[type]}${data.message}${white}\n`; } } _transform({ type, data }, encoding, callback) { callback(null, this.#handleEvent({ type, data })); } + _flush(callback) { + const results = [`\n${colors['test:fail']}${symbols['test:fail']}failing tests:${white}\n`]; + for (let i = 0; i < this.#failedTests.length; i++) { + ArrayPrototypePush(results, this.#formatTestReport( + 'test:fail', + this.#failedTests[i], + )); + } + callback(null, ArrayPrototypeJoin(results, '\n')); + } } module.exports = SpecReporter; diff --git a/test/message/test_runner_output_spec_reporter.out b/test/message/test_runner_output_spec_reporter.out index d5b443010e77cd..b3ca09b0561893 100644 --- a/test/message/test_runner_output_spec_reporter.out +++ b/test/message/test_runner_output_spec_reporter.out @@ -283,3 +283,212 @@ skipped 10 todo 5 duration_ms * + + failing tests: + + sync fail todo (*ms) + Error: thrown from sync fail todo + * + * + * + * + * + * + * + + sync fail todo with message (*ms) + Error: thrown from sync fail todo with message + * + * + * + * + * + * + * + + sync throw fail (*ms) + Error: thrown from sync throw fail + * + * + * + * + * + * + * + + async throw fail (*ms) + Error: thrown from async throw fail + * + * + * + * + * + * + * + + async skip fail (*ms) + Error: thrown from async throw fail + * + * + * + * + * + * + * + + async assertion fail (*ms) + AssertionError [ERR_ASSERTION]: Expected values to be strictly equal: + + true !== false + + * + * + * + * + * + * + * { + generatedMessage: true, + code: 'ERR_ASSERTION', + actual: true, + expected: false, + operator: 'strictEqual' + } + + reject fail (*ms) + Error: rejected from reject fail + * + * + * + * + * + * + * + + +sync throw fail (*ms) + Error: thrown from subtest sync throw fail + * + * + * + * + * + * + * + * + * + * + + subtest sync throw fail (*ms) + '1 subtest failed' + + sync throw non-error fail (*ms) + Symbol(thrown symbol from sync throw non-error fail) + + +long running (*ms) + 'test did not finish before its parent and was cancelled' + + top level (*ms) + '1 subtest failed' + + sync skip option is false fail (*ms) + Error: this should be executed + * + * + * + * + * + * + * + + callback fail (*ms) + Error: callback failure + * + * + + callback also returns a Promise (*ms) + 'passed a callback but also returned a Promise' + + callback throw (*ms) + Error: thrown from callback throw + * + * + * + * + * + * + * + + callback called twice (*ms) + 'callback invoked multiple times' + + callback called twice in future tick (*ms) + Error [ERR_TEST_FAILURE]: callback invoked multiple times + * + failureType: 'multipleCallbackInvocations', + cause: 'callback invoked multiple times', + code: 'ERR_TEST_FAILURE' + } + + callback async throw (*ms) + Error: thrown from callback async throw + * + * + + custom inspect symbol fail (*ms) + customized + + custom inspect symbol that throws fail (*ms) + { foo: 1, [Symbol(nodejs.util.inspect.custom)]: [Function: [nodejs.util.inspect.custom]] } + + sync throw fails at first (*ms) + Error: thrown from subtest sync throw fails at first + * + * + * + * + * + * + * + * + * + * + + sync throw fails at second (*ms) + Error: thrown from subtest sync throw fails at second + * + * + * + * + * + * + * + * + * + * + + subtest sync throw fails (*ms) + '2 subtests failed' + + timed out async test (*ms) + 'test timed out after 5ms' + + timed out callback test (*ms) + 'test timed out after 5ms' + + rejected thenable (*ms) + 'custom error' + + unfinished test with uncaughtException (*ms) + Error: foo + * + * + * + + unfinished test with unhandledRejection (*ms) + Error: bar + * + * + * + + invalid subtest fail (*ms) + 'test could not be started because its parent finished' diff --git a/test/pseudo-tty/test_runner_default_reporter.js b/test/pseudo-tty/test_runner_default_reporter.js index 1c6cda0ebbdd51..1596603b217660 100644 --- a/test/pseudo-tty/test_runner_default_reporter.js +++ b/test/pseudo-tty/test_runner_default_reporter.js @@ -9,3 +9,7 @@ const test = require('node:test'); test('should pass', () => {}); test('should fail', () => { throw new Error('fail'); }); test('should skip', { skip: true }, () => {}); +test('parent', () => { + test('should fail', () => { throw new Error('fail'); }); + test('should pass but parent fail', () => {}); +}); diff --git a/test/pseudo-tty/test_runner_default_reporter.out b/test/pseudo-tty/test_runner_default_reporter.out index aec99725c61cba..f032cf0a291562 100644 --- a/test/pseudo-tty/test_runner_default_reporter.out +++ b/test/pseudo-tty/test_runner_default_reporter.out @@ -1,5 +1,5 @@ [32m* should pass [90m(*ms)[39m[39m -[31m* should fail [90m(*ms)[39m +[31m* should fail [90m(*ms)[39m[39m Error: fail at * [90m(*)[39m [90m at *[39m @@ -8,13 +8,53 @@ [90m at *[39m [90m at *[39m [90m at *[39m -** + [90m* should skip [90m(*ms)[39m # SKIP[39m -[34m* tests 3[39m +* parent + [31m* should fail [90m(*ms)[39m[39m + Error: fail + at * [90m(*)[39m + [90m at *[39m + [90m at *[39m + [90m at *[39m + [90m at *[39m + + [31m* should pass but parent fail [90m(*ms)[39m[39m + [32m'test did not finish before its parent and was cancelled'[39m + +[31m* [39mparent [90m(*ms)[39m + +[34m* tests 6[39m [34m* suites 0[39m [34m* pass 1[39m -[34m* fail 1[39m -[34m* cancelled 0[39m +[34m* fail 3[39m +[34m* cancelled 1[39m [34m* skipped 1[39m [34m* todo 0[39m [34m* duration_ms *[39m + +[31m* failing tests:[39m + +[31m* should fail [90m(*ms)[39m[39m + Error: fail + at * [90m(*)[39m + [90m at *[39m + [90m at *[39m + [90m at *[39m + [90m at *[39m + [90m at *[39m + [90m at *[39m + +[31m* should fail [90m(*ms)[39m[39m + Error: fail + at * [90m(*)[39m + [90m at *[39m + [90m at *[39m + [90m at *[39m + [90m at *[39m + +[31m* should pass but parent fail [90m(*ms)[39m[39m + [32m'test did not finish before its parent and was cancelled'[39m + +[31m* parent [90m(*ms)[39m[39m + [32m'2 subtests failed'[39m From 27335cd87030e391ac66656456439491e1d32279 Mon Sep 17 00:00:00 2001 From: Yagiz Nizipli Date: Thu, 23 Mar 2023 15:45:21 -0400 Subject: [PATCH 137/186] url: add pending-deprecation to `url.parse()` PR-URL: https://github.com/nodejs/node/pull/47203 Reviewed-By: James M Snell Reviewed-By: Darshan Sen Reviewed-By: Chengzhong Wu Reviewed-By: Matteo Collina Reviewed-By: Beth Griggs Reviewed-By: Joyee Cheung --- doc/api/deprecations.md | 5 ++++- lib/url.js | 15 +++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/doc/api/deprecations.md b/doc/api/deprecations.md index 95f53d05768589..acb9197f95d9c4 100644 --- a/doc/api/deprecations.md +++ b/doc/api/deprecations.md @@ -3288,6 +3288,9 @@ Node-API callbacks. -Type: Documentation-only +Type: Documentation-only (supports [`--pending-deprecation`][]) [`url.parse()`][] behavior is not standardized and prone to errors that have security implications. Use the [WHATWG URL API][] instead. CVEs are not diff --git a/lib/url.js b/lib/url.js index 45ecf043f95282..e6450c9725402d 100644 --- a/lib/url.js +++ b/lib/url.js @@ -62,6 +62,8 @@ const { formatUrl, } = internalBinding('url'); +const { getOptionValue } = require('internal/options'); + // Original url.parse() API function Url() { @@ -146,7 +148,20 @@ const { CHAR_COLON, } = require('internal/constants'); +let urlParseWarned = false; + function urlParse(url, parseQueryString, slashesDenoteHost) { + if (!urlParseWarned && getOptionValue('--pending-deprecation')) { + urlParseWarned = true; + process.emitWarning( + '`url.parse()` behavior is not standardized and prone to ' + + 'errors that have security implications. Use the WHATWG URL API ' + + 'instead. CVEs are not issued for `url.parse()` vulnerabilities.', + 'DeprecationWarning', + 'DEP0169', + ); + } + if (url instanceof Url) return url; const urlObject = new Url(); From 946f0ca29b3c3ef924c709db18728e619e08a39d Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Thu, 23 Mar 2023 22:17:55 +0100 Subject: [PATCH 138/186] tools: fix Slack notification action PR-URL: https://github.com/nodejs/node/pull/47237 Reviewed-By: Moshe Atlow Reviewed-By: Debadree Chatterjee --- .github/workflows/notify-on-push.yml | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/.github/workflows/notify-on-push.yml b/.github/workflows/notify-on-push.yml index dd415a4a380dae..36e62ee53c7334 100644 --- a/.github/workflows/notify-on-push.yml +++ b/.github/workflows/notify-on-push.yml @@ -31,25 +31,29 @@ jobs: name: Notify on Push on `main` that lacks metadata if: github.repository == 'nodejs/node' runs-on: ubuntu-latest + permissions: + pull-requests: write steps: + - uses: actions/checkout@v3 + with: + persist-credentials: false - name: Check commit message - run: npx -q core-validate-commit ${{ github.event.commits[0].id }} || echo "INVALID_COMMIT_MESSAGE=1" >> $GITHUB_ENV + run: npx -q core-validate-commit ${{ github.event.after }} || echo "INVALID_COMMIT_MESSAGE=1" >> $GITHUB_ENV - name: Retrieve PR number if possible - if: ${{ env.INVALID_COMMIT_MESSAGE }} + if: env.INVALID_COMMIT_MESSAGE run: | - node <<<'EOF' - const invalidCommitMessageMatch = /\s\(\#\d+\)$/.exec(process.env.COMMIT_MESSAGE); - if (match == null) process.exit(1) - console.log(`PR_ID=${match[0]}`) - EOF >> $GITHUB_ENV || true - env: - COMMIT_MESSAGE: ${{ github.event.commits[0].message }} + COMMIT_TITLE=$(git --no-pager log --oneline -1 --no-color) node <<'EOF' >> $GITHUB_ENV || true + const invalidCommitMessageMatch = /\s\(\#(\d+)\)$/.exec(process.env.COMMIT_TITLE); + if (invalidCommitMessageMatch == null) process.exit(1) + console.log(`PR_ID=${invalidCommitMessageMatch[1]}`) + EOF - name: Comment on the Pull Request if: ${{ env.PR_ID }} - run: gh pr comment ${{ env.PR_ID }} --repo "${{ github.repository }}" --body "$BODY" + run: | + gh pr comment ${{ env.PR_ID }} --repo "${{ github.repository }}" \ + --body "A commit referencing this Pull Request was pushed to `main` by @${{ github.actor }} without the expected commit metadata added to its message." env: - BODY: | - A commit referencing this Pull Request was pushed to `main` by @${{ github.actor }} without the expected commit metadata added to its message. + GH_TOKEN: ${{ github.token }} - name: Slack Notification if: ${{ env.INVALID_COMMIT_MESSAGE }} uses: rtCamp/action-slack-notify@12e36fc18b0689399306c2e0b3e0f2978b7f1ee7 From d6126135a846c87b98fe8eaab9521b28b12825ff Mon Sep 17 00:00:00 2001 From: Danielle Adams <6271256+danielleadams@users.noreply.github.com> Date: Fri, 24 Mar 2023 01:27:16 -0400 Subject: [PATCH 139/186] meta: automate description requests when notable change label is added MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/47078 Fixes: https://github.com/nodejs/Release/issues/821 Reviewed-By: Beth Griggs Reviewed-By: Moshe Atlow Reviewed-By: Tierney Cyren Reviewed-By: Michaël Zasso Reviewed-By: Rich Trott --- .github/workflows/comment-labeled.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/.github/workflows/comment-labeled.yml b/.github/workflows/comment-labeled.yml index 5f59a48bb5a6d0..278a4e45b16210 100644 --- a/.github/workflows/comment-labeled.yml +++ b/.github/workflows/comment-labeled.yml @@ -10,6 +10,10 @@ env: This issue/PR was marked as stalled, it will be automatically closed in 30 days. If it should remain open, please leave a comment explaining why it should remain open. FAST_TRACK_MESSAGE: Fast-track has been requested by @${{ github.actor }}. Please 👍 to approve. + NOTABLE_CHANGE_MESSAGE: | + The ${{ github.event.label.url }} label has been added by @${{ github.actor }}. + + Please suggest a text for the release notes if you'd like to include a more detailed summary, then proceed to update the PR description with the text or a link to the notable change suggested text comment. permissions: contents: read @@ -38,3 +42,14 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: gh pr comment ${{ github.event.pull_request.number }} --repo ${{ github.repository }} --body "$FAST_TRACK_MESSAGE" + + notable-change: + permissions: + pull-requests: write + if: github.repository == 'nodejs/node' && github.event_name == 'pull_request_target' && github.event.label.name == 'notable-change' + runs-on: ubuntu-latest + steps: + - name: Add notable change description + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: gh pr comment ${{ github.event.pull_request.number }} --repo ${{ github.repository }} --body "$NOTABLE_CHANGE_MESSAGE" From 8c60add65b887208c6800540968a271d6f953545 Mon Sep 17 00:00:00 2001 From: Robert Nagy Date: Fri, 24 Mar 2023 08:20:18 +0100 Subject: [PATCH 140/186] stream: expose stream symbols This is required for streams interop with e.g. readable-stream. Currently readable-stream helpers will not work with normal node streams which is confusing and bad for the ecosystem. PR-URL: https://github.com/nodejs/node/pull/45671 Reviewed-By: Matteo Collina Reviewed-By: James M Snell Reviewed-By: Antoine du Hamel Reviewed-By: Benjamin Gruenbaum Reviewed-By: Debadree Chatterjee --- lib/internal/streams/destroy.js | 4 ++-- lib/internal/streams/utils.js | 22 ++++++++++++++-------- lib/stream.js | 4 ++++ 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/lib/internal/streams/destroy.js b/lib/internal/streams/destroy.js index 358422e12a33e0..cfb49f2c7c7273 100644 --- a/lib/internal/streams/destroy.js +++ b/lib/internal/streams/destroy.js @@ -11,7 +11,7 @@ const { Symbol, } = primordials; const { - kDestroyed, + kIsDestroyed, isDestroyed, isFinished, isServerRequest, @@ -327,7 +327,7 @@ function destroyer(stream, err) { } if (!stream.destroyed) { - stream[kDestroyed] = true; + stream[kIsDestroyed] = true; } } diff --git a/lib/internal/streams/utils.js b/lib/internal/streams/utils.js index c9e61ca8cdd8eb..1b2a6c0fbf6a05 100644 --- a/lib/internal/streams/utils.js +++ b/lib/internal/streams/utils.js @@ -1,16 +1,20 @@ 'use strict'; const { - Symbol, SymbolAsyncIterator, SymbolIterator, SymbolFor, } = primordials; -const kDestroyed = Symbol('kDestroyed'); -const kIsErrored = Symbol('kIsErrored'); -const kIsReadable = Symbol('kIsReadable'); -const kIsDisturbed = Symbol('kIsDisturbed'); +// We need to use SymbolFor to make these globally available +// for interopt with readable-stream, i.e. readable-stream +// and node core needs to be able to read/write private state +// from each other for proper interoperability. +const kIsDestroyed = SymbolFor('nodejs.stream.destroyed'); +const kIsErrored = SymbolFor('nodejs.stream.errored'); +const kIsReadable = SymbolFor('nodejs.stream.readable'); +const kIsWritable = SymbolFor('nodejs.stream.writable'); +const kIsDisturbed = SymbolFor('nodejs.stream.disturbed'); const kIsClosedPromise = SymbolFor('nodejs.webstream.isClosedPromise'); const kControllerErrorFunction = SymbolFor('nodejs.webstream.controllerErrorFunction'); @@ -104,7 +108,7 @@ function isDestroyed(stream) { const wState = stream._writableState; const rState = stream._readableState; const state = wState || rState; - return !!(stream.destroyed || stream[kDestroyed] || state?.destroyed); + return !!(stream.destroyed || stream[kIsDestroyed] || state?.destroyed); } // Have been end():d. @@ -162,6 +166,7 @@ function isReadable(stream) { } function isWritable(stream) { + if (stream && stream[kIsWritable] != null) return stream[kIsWritable]; if (typeof stream?.writable !== 'boolean') return null; if (isDestroyed(stream)) return false; return isWritableNodeStream(stream) && @@ -298,7 +303,8 @@ function isErrored(stream) { } module.exports = { - kDestroyed, + isDestroyed, + kIsDestroyed, isDisturbed, kIsDisturbed, isErrored, @@ -307,8 +313,8 @@ module.exports = { kIsReadable, kIsClosedPromise, kControllerErrorFunction, + kIsWritable, isClosed, - isDestroyed, isDuplexNodeStream, isFinished, isIterable, diff --git a/lib/stream.js b/lib/stream.js index 4c105067bae1ca..e8f205c056834f 100644 --- a/lib/stream.js +++ b/lib/stream.js @@ -51,9 +51,13 @@ const promises = require('stream/promises'); const utils = require('internal/streams/utils'); const Stream = module.exports = require('internal/streams/legacy').Stream; + +Stream.isDestroyed = utils.isDestroyed; Stream.isDisturbed = utils.isDisturbed; Stream.isErrored = utils.isErrored; Stream.isReadable = utils.isReadable; +Stream.isWritable = utils.isWritable; + Stream.Readable = require('internal/streams/readable'); for (const key of ObjectKeys(streamReturningOperators)) { const op = streamReturningOperators[key]; From 8e203f1b03e2c174798aac78c3ae0b8c213f39d9 Mon Sep 17 00:00:00 2001 From: Debadree Chatterjee Date: Fri, 24 Mar 2023 12:50:31 +0530 Subject: [PATCH 141/186] deps: V8: cherry-pick 975ff4dbfd1b MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Original commit message: fix GetPropertyNames for proxys with ownKeys trap Added checks to FilterProxyKeys function for when skip_indices is enabled. Bug: v8:13728 Change-Id: Id096e32ef8e6c2344be9682e8222aea8790bd66d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4333698 Reviewed-by: Camillo Bruni Commit-Queue: Jakob Kummerow Cr-Commit-Position: refs/heads/main@{#86548} Refs: https://github.com/v8/v8/commit/975ff4dbfd1be3a7395e26d412774bc955b47341 PR-URL: https://github.com/nodejs/node/pull/47209 Fixes: https://github.com/nodejs/node/issues/41714 Reviewed-By: Michaël Zasso Reviewed-By: Jiawen Geng Reviewed-By: Richard Lau Reviewed-By: Erick Wendel --- common.gypi | 2 +- deps/v8/AUTHORS | 1 + deps/v8/src/objects/keys.cc | 10 ++- deps/v8/test/cctest/test-api.cc | 104 ++++++++++++++++++++++++++++++++ 4 files changed, 114 insertions(+), 3 deletions(-) diff --git a/common.gypi b/common.gypi index 4e645cf50671d4..65720283c54109 100644 --- a/common.gypi +++ b/common.gypi @@ -36,7 +36,7 @@ # Reset this number to 0 on major V8 upgrades. # Increment by one for each non-official patch applied to deps/v8. - 'v8_embedder_string': '-node.10', + 'v8_embedder_string': '-node.11', ##### V8 defaults for Node.js ##### diff --git a/deps/v8/AUTHORS b/deps/v8/AUTHORS index 9696fc61d54d8f..c9d4c6eb4c651e 100644 --- a/deps/v8/AUTHORS +++ b/deps/v8/AUTHORS @@ -98,6 +98,7 @@ Darshan Sen David Carlier David Manouchehri David Sanders +Debadree Chatterjee Deepak Mohan Deon Dior Derek Tu diff --git a/deps/v8/src/objects/keys.cc b/deps/v8/src/objects/keys.cc index a0796864f1ecc6..6aebe6029121d5 100644 --- a/deps/v8/src/objects/keys.cc +++ b/deps/v8/src/objects/keys.cc @@ -182,7 +182,8 @@ ExceptionStatus KeyAccumulator::AddKeys(Handle array_like, MaybeHandle FilterProxyKeys(KeyAccumulator* accumulator, Handle owner, Handle keys, - PropertyFilter filter) { + PropertyFilter filter, + bool skip_indices) { if (filter == ALL_PROPERTIES) { // Nothing to do. return keys; @@ -192,6 +193,10 @@ MaybeHandle FilterProxyKeys(KeyAccumulator* accumulator, for (int i = 0; i < keys->length(); ++i) { Handle key(Name::cast(keys->get(i)), isolate); if (key->FilterKey(filter)) continue; // Skip this key. + if (skip_indices) { + uint32_t index; + if (key->AsArrayIndex(&index)) continue; // Skip this key. + } if (filter & ONLY_ENUMERABLE) { PropertyDescriptor desc; Maybe found = @@ -218,7 +223,8 @@ Maybe KeyAccumulator::AddKeysFromJSProxy(Handle proxy, // Postpone the enumerable check for for-in to the ForInFilter step. if (!is_for_in_) { ASSIGN_RETURN_ON_EXCEPTION_VALUE( - isolate_, keys, FilterProxyKeys(this, proxy, keys, filter_), + isolate_, keys, + FilterProxyKeys(this, proxy, keys, filter_, skip_indices_), Nothing()); } // https://tc39.es/ecma262/#sec-proxy-object-internal-methods-and-internal-slots-ownpropertykeys diff --git a/deps/v8/test/cctest/test-api.cc b/deps/v8/test/cctest/test-api.cc index 640ba822026ba7..2fd28f0689fb52 100644 --- a/deps/v8/test/cctest/test-api.cc +++ b/deps/v8/test/cctest/test-api.cc @@ -14425,6 +14425,110 @@ THREADED_TEST(ProxyGetPropertyNames) { CheckIsSymbolAt(isolate, properties, 4, "symbol"); } +THREADED_TEST(ProxyGetPropertyNamesWithOwnKeysTrap) { + LocalContext context; + v8::Isolate* isolate = context->GetIsolate(); + v8::HandleScope scope(isolate); + v8::Local result = CompileRun( + "var target = {0: 0, 1: 1, a: 2, b: 3};" + "target[2**32] = '4294967296';" + "target[2**32-1] = '4294967295';" + "target[2**32-2] = '4294967294';" + "target[Symbol('symbol')] = true;" + "target.__proto__ = {__proto__:null, 2: 4, 3: 5, c: 6, d: 7};" + "var result = new Proxy(target, { ownKeys: (t) => Reflect.ownKeys(t) });" + "result;"); + v8::Local object = result.As(); + v8::PropertyFilter default_filter = + static_cast(v8::ONLY_ENUMERABLE | v8::SKIP_SYMBOLS); + v8::PropertyFilter include_symbols_filter = v8::ONLY_ENUMERABLE; + + v8::Local properties = + object->GetPropertyNames(context.local()).ToLocalChecked(); + const char* expected_properties1[] = {"0", "1", "4294967294", "a", + "b", "4294967296", "4294967295", "2", + "3", "c", "d"}; + CheckStringArray(isolate, properties, 11, expected_properties1); + + properties = + object + ->GetPropertyNames(context.local(), + v8::KeyCollectionMode::kIncludePrototypes, + default_filter, v8::IndexFilter::kIncludeIndices) + .ToLocalChecked(); + CheckStringArray(isolate, properties, 11, expected_properties1); + + properties = object + ->GetPropertyNames(context.local(), + v8::KeyCollectionMode::kIncludePrototypes, + include_symbols_filter, + v8::IndexFilter::kIncludeIndices) + .ToLocalChecked(); + const char* expected_properties1_1[] = { + "0", "1", "4294967294", "a", "b", "4294967296", + "4294967295", nullptr, "2", "3", "c", "d"}; + CheckStringArray(isolate, properties, 12, expected_properties1_1); + CheckIsSymbolAt(isolate, properties, 7, "symbol"); + + properties = + object + ->GetPropertyNames(context.local(), + v8::KeyCollectionMode::kIncludePrototypes, + default_filter, v8::IndexFilter::kSkipIndices) + .ToLocalChecked(); + const char* expected_properties2[] = {"a", "b", "4294967296", + "4294967295", "c", "d"}; + CheckStringArray(isolate, properties, 6, expected_properties2); + + properties = object + ->GetPropertyNames(context.local(), + v8::KeyCollectionMode::kIncludePrototypes, + include_symbols_filter, + v8::IndexFilter::kSkipIndices) + .ToLocalChecked(); + const char* expected_properties2_1[] = { + "a", "b", "4294967296", "4294967295", nullptr, "c", "d"}; + CheckStringArray(isolate, properties, 7, expected_properties2_1); + CheckIsSymbolAt(isolate, properties, 4, "symbol"); + + properties = + object + ->GetPropertyNames(context.local(), v8::KeyCollectionMode::kOwnOnly, + default_filter, v8::IndexFilter::kIncludeIndices) + .ToLocalChecked(); + const char* expected_properties3[] = {"0", "1", "4294967294", "a", + "b", "4294967296", "4294967295"}; + CheckStringArray(isolate, properties, 7, expected_properties3); + + properties = object + ->GetPropertyNames( + context.local(), v8::KeyCollectionMode::kOwnOnly, + include_symbols_filter, v8::IndexFilter::kIncludeIndices) + .ToLocalChecked(); + const char* expected_properties3_1[] = { + "0", "1", "4294967294", "a", "b", "4294967296", "4294967295", nullptr}; + CheckStringArray(isolate, properties, 8, expected_properties3_1); + CheckIsSymbolAt(isolate, properties, 7, "symbol"); + + properties = + object + ->GetPropertyNames(context.local(), v8::KeyCollectionMode::kOwnOnly, + default_filter, v8::IndexFilter::kSkipIndices) + .ToLocalChecked(); + const char* expected_properties4[] = {"a", "b", "4294967296", "4294967295"}; + CheckStringArray(isolate, properties, 4, expected_properties4); + + properties = object + ->GetPropertyNames( + context.local(), v8::KeyCollectionMode::kOwnOnly, + include_symbols_filter, v8::IndexFilter::kSkipIndices) + .ToLocalChecked(); + const char* expected_properties4_1[] = {"a", "b", "4294967296", "4294967295", + nullptr}; + CheckStringArray(isolate, properties, 5, expected_properties4_1); + CheckIsSymbolAt(isolate, properties, 4, "symbol"); +} + THREADED_TEST(AccessChecksReenabledCorrectly) { LocalContext context; v8::Isolate* isolate = context->GetIsolate(); From c5881458106487f80d31513096b4d0baa88828b8 Mon Sep 17 00:00:00 2001 From: Raz Luvaton <16746759+rluvaton@users.noreply.github.com> Date: Fri, 24 Mar 2023 14:27:55 +0300 Subject: [PATCH 142/186] doc: update stream.reduce concurrency note PR-URL: https://github.com/nodejs/node/pull/47166 Reviewed-By: Matteo Collina Reviewed-By: Mohammed Keyvanzadeh --- doc/api/stream.md | 39 +++++++++++++++++++++++++++++++-------- 1 file changed, 31 insertions(+), 8 deletions(-) diff --git a/doc/api/stream.md b/doc/api/stream.md index 6feb891600c953..a04c30fbd10c2a 100644 --- a/doc/api/stream.md +++ b/doc/api/stream.md @@ -2501,21 +2501,44 @@ This method calls `fn` on each chunk of the stream in order, passing it the result from the calculation on the previous element. It returns a promise for the final value of the reduction. -The reducer function iterates the stream element-by-element which means that -there is no `concurrency` parameter or parallelism. To perform a `reduce` -concurrently, it can be chained to the [`readable.map`][] method. - If no `initial` value is supplied the first chunk of the stream is used as the initial value. If the stream is empty, the promise is rejected with a `TypeError` with the `ERR_INVALID_ARGS` code property. ```mjs import { Readable } from 'node:stream'; +import { readdir, stat } from 'node:fs/promises'; +import { join } from 'node:path'; -const ten = await Readable.from([1, 2, 3, 4]).reduce((previous, data) => { - return previous + data; -}); -console.log(ten); // 10 +const directoryPath = './src'; +const filesInDir = await readdir(directoryPath); + +const folderSize = await Readable.from(filesInDir) + .reduce(async (totalSize, file) => { + const { size } = await stat(join(directoryPath, file)); + return totalSize + size; + }, 0); + +console.log(folderSize); +``` + +The reducer function iterates the stream element-by-element which means that +there is no `concurrency` parameter or parallelism. To perform a `reduce` +concurrently, you can extract the async function to [`readable.map`][] method. + +```mjs +import { Readable } from 'node:stream'; +import { readdir, stat } from 'node:fs/promises'; +import { join } from 'node:path'; + +const directoryPath = './src'; +const filesInDir = await readdir(directoryPath); + +const folderSize = await Readable.from(filesInDir) + .map((file) => stat(join(directoryPath, file)), { concurrency: 2 }) + .reduce((totalSize, { size }) => totalSize + size, 0); + +console.log(folderSize); ``` ### Duplex and transform streams From 545b594b19cb4d28e3bb1cb7aeca2fc513cd8de3 Mon Sep 17 00:00:00 2001 From: Mohammed Keyvanzadeh Date: Fri, 24 Mar 2023 17:01:19 +0330 Subject: [PATCH 143/186] doc: fix grammar in the collaborator guide MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/47245 Reviewed-By: Tobias Nießen Reviewed-By: Darshan Sen Reviewed-By: Qingyu Deng Reviewed-By: LiviaMedeiros Reviewed-By: Kohei Ueno --- doc/contributing/collaborator-guide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/contributing/collaborator-guide.md b/doc/contributing/collaborator-guide.md index 84c5ea7396ce21..14963263c5546a 100644 --- a/doc/contributing/collaborator-guide.md +++ b/doc/contributing/collaborator-guide.md @@ -509,7 +509,7 @@ The TSC serves as the final arbiter where required. squashing only keeps one author. * The "Rebase and merge" method has no way of adding metadata to the commit. 3. Make sure CI is complete and green. If the CI is not green, check for - unreliable tests and infrastructure failures. If there are not corresponding + unreliable tests and infrastructure failures. If there are no corresponding issues in the [node][unreliable tests] or [build](https://github.com/nodejs/build/issues) repositories, open new issues. Run a new CI any time someone pushes new code to the pull request. From 5e7205145620c5993062bb3625117de1be3ccde7 Mon Sep 17 00:00:00 2001 From: Rafael Gonzaga Date: Fri, 24 Mar 2023 12:11:18 -0300 Subject: [PATCH 144/186] doc: drop one-week branch sync on major releases MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/47149 Reviewed-By: Michaël Zasso Reviewed-By: Matteo Collina Reviewed-By: Luigi Pinca Reviewed-By: Colin Ihrig Reviewed-By: Ruy Adorno Reviewed-By: Richard Lau --- doc/contributing/releases.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/contributing/releases.md b/doc/contributing/releases.md index e7fb0f5d0d8b22..9c2d54ba1b4137 100644 --- a/doc/contributing/releases.md +++ b/doc/contributing/releases.md @@ -1148,8 +1148,8 @@ announced immediately following the release of 12.0.0). Approximately two months before a major release, new `vN.x` and `vN.x-staging` branches (where `N` indicates the major release) should be -created as forks of the `main` branch. Up until one week before the release -date, these must be kept in sync with `main`. +created as forks of the `main` branch. Up until the cut-off date announced by +the releaser, these must be kept in sync with `main`. The `vN.x` and `vN.x-staging` branches must be kept in sync with one another up until the date of the release. From f5239795b51dbc894b3ddcd49cf183151f414cdf Mon Sep 17 00:00:00 2001 From: Joyee Cheung Date: Fri, 24 Mar 2023 18:30:56 +0100 Subject: [PATCH 145/186] deps: V8: cherry-pick 215ccd593edb MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Original commit message: Use FlagValue::value() in SLOW_DCHECK Previously SLOW_DCHECK used the non-constexpr bool() operator of FlagValue, which cannot be used in constexpr. Switch to FlagValue::value() instead for make it compile in constexpr. Change-Id: I3e4f70d82c0027cf56999b6c4639479606151696 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4341495 Reviewed-by: Jakob Linke Commit-Queue: Joyee Cheung Cr-Commit-Position: refs/heads/main@{#86611} Refs: https://github.com/v8/v8/commit/215ccd593edbf18170fa1aae109b6b1cccf0ccbf PR-URL: https://github.com/nodejs/node/pull/47212 Reviewed-By: Michaël Zasso Reviewed-By: Debadree Chatterjee Reviewed-By: Richard Lau --- deps/v8/src/common/checks.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deps/v8/src/common/checks.h b/deps/v8/src/common/checks.h index a82fb4159fc509..33d7a8458bd95f 100644 --- a/deps/v8/src/common/checks.h +++ b/deps/v8/src/common/checks.h @@ -15,7 +15,7 @@ #ifdef ENABLE_SLOW_DCHECKS #define SLOW_DCHECK(condition) \ - CHECK(!v8::internal::v8_flags.enable_slow_asserts || (condition)) + CHECK(!v8::internal::v8_flags.enable_slow_asserts.value() || (condition)) #define SLOW_DCHECK_IMPLIES(lhs, rhs) SLOW_DCHECK(!(lhs) || (rhs)) #else #define SLOW_DCHECK(condition) ((void)0) From 5e4f5e122c06744967f539def1e51473abb5db62 Mon Sep 17 00:00:00 2001 From: Vladimir Morozov Date: Mon, 23 Jan 2023 07:15:34 -0800 Subject: [PATCH 146/186] node-api: deprecate napi_module_register PR-URL: https://github.com/nodejs/node/pull/46319 Reviewed-By: Chengzhong Wu Reviewed-By: Michael Dawson --- src/api/environment.cc | 30 ++- src/node.h | 8 +- src/node_api.h | 76 ++---- test/cctest/test_linked_binding.cc | 243 +++++++++++------- test/node-api/test_null_init/test_null_init.c | 52 +++- 5 files changed, 254 insertions(+), 155 deletions(-) diff --git a/src/api/environment.cc b/src/api/environment.cc index 12672603fcdc46..fd187f73423231 100644 --- a/src/api/environment.cc +++ b/src/api/environment.cc @@ -843,7 +843,9 @@ void AddLinkedBinding(Environment* env, const node_module& mod) { } void AddLinkedBinding(Environment* env, const napi_module& mod) { - AddLinkedBinding(env, napi_module_to_node_module(&mod)); + node_module node_mod = napi_module_to_node_module(&mod); + node_mod.nm_flags = NM_F_LINKED; + AddLinkedBinding(env, node_mod); } void AddLinkedBinding(Environment* env, @@ -864,6 +866,32 @@ void AddLinkedBinding(Environment* env, AddLinkedBinding(env, mod); } +void AddLinkedBinding(Environment* env, + const char* name, + napi_addon_register_func fn) { + node_module mod = { + -1, + NM_F_LINKED, + nullptr, // nm_dso_handle + nullptr, // nm_filename + nullptr, // nm_register_func + [](v8::Local exports, + v8::Local module, + v8::Local context, + void* priv) { + napi_module_register_by_symbol( + exports, + module, + context, + reinterpret_cast(priv)); + }, + name, + reinterpret_cast(fn), + nullptr // nm_link + }; + AddLinkedBinding(env, mod); +} + static std::atomic next_thread_id{0}; ThreadId AllocateEnvironmentThreadId() { diff --git a/src/node.h b/src/node.h index fc2531f8677e70..e5b23f30d9530b 100644 --- a/src/node.h +++ b/src/node.h @@ -75,6 +75,9 @@ #include "v8-platform.h" // NOLINT(build/include_order) #include "node_version.h" // NODE_MODULE_VERSION +#define NAPI_EXPERIMENTAL +#include "node_api.h" + #include #include #include @@ -121,8 +124,6 @@ // Forward-declare libuv loop struct uv_loop_s; -struct napi_module; - // Forward-declare these functions now to stop MSVS from becoming // terminally confused when it's done in node_internals.h namespace node { @@ -1235,6 +1236,9 @@ NODE_EXTERN void AddLinkedBinding(Environment* env, const char* name, addon_context_register_func fn, void* priv); +NODE_EXTERN void AddLinkedBinding(Environment* env, + const char* name, + napi_addon_register_func fn); /* Registers a callback with the passed-in Environment instance. The callback * is called after the event loop exits, but before the VM is disposed. diff --git a/src/node_api.h b/src/node_api.h index caf987dbd8dd8b..4d1b50414e2e02 100644 --- a/src/node_api.h +++ b/src/node_api.h @@ -31,6 +31,7 @@ struct uv_loop_s; // Forward declaration. typedef napi_value(NAPI_CDECL* napi_addon_register_func)(napi_env env, napi_value exports); +// Used by deprecated registration method napi_module_register. typedef struct napi_module { int nm_version; unsigned int nm_flags; @@ -43,70 +44,15 @@ typedef struct napi_module { #define NAPI_MODULE_VERSION 1 -#if defined(_MSC_VER) -#if defined(__cplusplus) -#define NAPI_C_CTOR(fn) \ - static void NAPI_CDECL fn(void); \ - namespace { \ - struct fn##_ { \ - fn##_() { fn(); } \ - } fn##_v_; \ - } \ - static void NAPI_CDECL fn(void) -#else // !defined(__cplusplus) -#pragma section(".CRT$XCU", read) -// The NAPI_C_CTOR macro defines a function fn that is called during CRT -// initialization. -// C does not support dynamic initialization of static variables and this code -// simulates C++ behavior. Exporting the function pointer prevents it from being -// optimized. See for details: -// https://docs.microsoft.com/en-us/cpp/c-runtime-library/crt-initialization?view=msvc-170 -#define NAPI_C_CTOR(fn) \ - static void NAPI_CDECL fn(void); \ - __declspec(dllexport, allocate(".CRT$XCU")) void(NAPI_CDECL * fn##_)(void) = \ - fn; \ - static void NAPI_CDECL fn(void) -#endif // defined(__cplusplus) -#else -#define NAPI_C_CTOR(fn) \ - static void fn(void) __attribute__((constructor)); \ - static void fn(void) -#endif - -#define NAPI_MODULE_X(modname, regfunc, priv, flags) \ - EXTERN_C_START \ - static napi_module _module = { \ - NAPI_MODULE_VERSION, \ - flags, \ - __FILE__, \ - regfunc, \ - #modname, \ - priv, \ - {0}, \ - }; \ - NAPI_C_CTOR(_register_##modname) { napi_module_register(&_module); } \ - EXTERN_C_END - #define NAPI_MODULE_INITIALIZER_X(base, version) \ NAPI_MODULE_INITIALIZER_X_HELPER(base, version) #define NAPI_MODULE_INITIALIZER_X_HELPER(base, version) base##version #ifdef __wasm32__ -#define NAPI_WASM_INITIALIZER \ - NAPI_MODULE_INITIALIZER_X(napi_register_wasm_v, NAPI_MODULE_VERSION) -#define NAPI_MODULE(modname, regfunc) \ - EXTERN_C_START \ - NAPI_MODULE_EXPORT napi_value NAPI_WASM_INITIALIZER(napi_env env, \ - napi_value exports) { \ - return regfunc(env, exports); \ - } \ - EXTERN_C_END +#define NAPI_MODULE_INITIALIZER_BASE napi_register_wasm_v #else -#define NAPI_MODULE(modname, regfunc) \ - NAPI_MODULE_X(modname, regfunc, NULL, 0) // NOLINT (readability/null_usage) -#endif - #define NAPI_MODULE_INITIALIZER_BASE napi_register_module_v +#endif #define NAPI_MODULE_INITIALIZER \ NAPI_MODULE_INITIALIZER_X(NAPI_MODULE_INITIALIZER_BASE, NAPI_MODULE_VERSION) @@ -116,12 +62,24 @@ typedef struct napi_module { NAPI_MODULE_EXPORT napi_value NAPI_MODULE_INITIALIZER(napi_env env, \ napi_value exports); \ EXTERN_C_END \ - NAPI_MODULE(NODE_GYP_MODULE_NAME, NAPI_MODULE_INITIALIZER) \ napi_value NAPI_MODULE_INITIALIZER(napi_env env, napi_value exports) +#define NAPI_MODULE(modname, regfunc) \ + NAPI_MODULE_INIT() { return regfunc(env, exports); } + +// Deprecated. Use NAPI_MODULE. +#define NAPI_MODULE_X(modname, regfunc, priv, flags) \ + NAPI_MODULE(modname, regfunc) + EXTERN_C_START -NAPI_EXTERN void NAPI_CDECL napi_module_register(napi_module* mod); +// Deprecated. Replaced by symbol-based registration defined by NAPI_MODULE +// and NAPI_MODULE_INIT macros. +#if defined(__cplusplus) && __cplusplus >= 201402L +[[deprecated]] +#endif +NAPI_EXTERN void NAPI_CDECL +napi_module_register(napi_module* mod); NAPI_EXTERN NAPI_NO_RETURN void NAPI_CDECL napi_fatal_error(const char* location, diff --git a/test/cctest/test_linked_binding.cc b/test/cctest/test_linked_binding.cc index 7e40068b5db799..1a4e6a838b5d72 100644 --- a/test/cctest/test_linked_binding.cc +++ b/test/cctest/test_linked_binding.cc @@ -1,19 +1,19 @@ -#include "node_test_fixture.h" #include "node_api.h" +#include "node_test_fixture.h" void InitializeBinding(v8::Local exports, v8::Local module, v8::Local context, void* priv) { v8::Isolate* isolate = context->GetIsolate(); - exports->Set( - context, - v8::String::NewFromOneByte(isolate, - reinterpret_cast("key")) - .ToLocalChecked(), - v8::String::NewFromOneByte(isolate, - reinterpret_cast("value")) - .ToLocalChecked()) + exports + ->Set(context, + v8::String::NewFromOneByte(isolate, + reinterpret_cast("key")) + .ToLocalChecked(), + v8::String::NewFromOneByte( + isolate, reinterpret_cast("value")) + .ToLocalChecked()) .FromJust(); } @@ -24,18 +24,18 @@ class LinkedBindingTest : public EnvironmentTestFixture {}; TEST_F(LinkedBindingTest, SimpleTest) { const v8::HandleScope handle_scope(isolate_); const Argv argv; - Env test_env {handle_scope, argv}; + Env test_env{handle_scope, argv}; v8::Local context = isolate_->GetCurrentContext(); - const char* run_script = - "process._linkedBinding('cctest_linkedbinding').key"; - v8::Local script = v8::Script::Compile( - context, - v8::String::NewFromOneByte(isolate_, - reinterpret_cast(run_script)) - .ToLocalChecked()) - .ToLocalChecked(); + const char* run_script = "process._linkedBinding('cctest_linkedbinding').key"; + v8::Local script = + v8::Script::Compile( + context, + v8::String::NewFromOneByte( + isolate_, reinterpret_cast(run_script)) + .ToLocalChecked()) + .ToLocalChecked(); v8::Local completion_value = script->Run(context).ToLocalChecked(); v8::String::Utf8Value utf8val(isolate_, completion_value); CHECK_NOT_NULL(*utf8val); @@ -48,35 +48,35 @@ void InitializeLocalBinding(v8::Local exports, void* priv) { ++*static_cast(priv); v8::Isolate* isolate = context->GetIsolate(); - exports->Set( - context, - v8::String::NewFromOneByte(isolate, - reinterpret_cast("key")) - .ToLocalChecked(), - v8::String::NewFromOneByte(isolate, - reinterpret_cast("value")) - .ToLocalChecked()) + exports + ->Set(context, + v8::String::NewFromOneByte(isolate, + reinterpret_cast("key")) + .ToLocalChecked(), + v8::String::NewFromOneByte( + isolate, reinterpret_cast("value")) + .ToLocalChecked()) .FromJust(); } TEST_F(LinkedBindingTest, LocallyDefinedLinkedBindingTest) { const v8::HandleScope handle_scope(isolate_); const Argv argv; - Env test_env {handle_scope, argv}; + Env test_env{handle_scope, argv}; int calls = 0; AddLinkedBinding(*test_env, "local_linked", InitializeLocalBinding, &calls); v8::Local context = isolate_->GetCurrentContext(); - const char* run_script = - "process._linkedBinding('local_linked').key"; - v8::Local script = v8::Script::Compile( - context, - v8::String::NewFromOneByte(isolate_, - reinterpret_cast(run_script)) - .ToLocalChecked()) - .ToLocalChecked(); + const char* run_script = "process._linkedBinding('local_linked').key"; + v8::Local script = + v8::Script::Compile( + context, + v8::String::NewFromOneByte( + isolate_, reinterpret_cast(run_script)) + .ToLocalChecked()) + .ToLocalChecked(); v8::Local completion_value = script->Run(context).ToLocalChecked(); v8::String::Utf8Value utf8val(isolate_, completion_value); CHECK_NOT_NULL(*utf8val); @@ -86,41 +86,64 @@ TEST_F(LinkedBindingTest, LocallyDefinedLinkedBindingTest) { napi_value InitializeLocalNapiBinding(napi_env env, napi_value exports) { napi_value key, value; - CHECK_EQ( - napi_create_string_utf8(env, "hello", NAPI_AUTO_LENGTH, &key), napi_ok); - CHECK_EQ( - napi_create_string_utf8(env, "world", NAPI_AUTO_LENGTH, &value), napi_ok); + CHECK_EQ(napi_create_string_utf8(env, "hello", NAPI_AUTO_LENGTH, &key), + napi_ok); + CHECK_EQ(napi_create_string_utf8(env, "world", NAPI_AUTO_LENGTH, &value), + napi_ok); CHECK_EQ(napi_set_property(env, exports, key, value), napi_ok); return nullptr; } static napi_module local_linked_napi = { - NAPI_MODULE_VERSION, - node::ModuleFlags::kLinked, - nullptr, - InitializeLocalNapiBinding, - "local_linked_napi", - nullptr, - {0}, + NAPI_MODULE_VERSION, + node::ModuleFlags::kLinked, + nullptr, + InitializeLocalNapiBinding, + "local_linked_napi", + nullptr, + {0}, }; TEST_F(LinkedBindingTest, LocallyDefinedLinkedBindingNapiTest) { const v8::HandleScope handle_scope(isolate_); const Argv argv; - Env test_env {handle_scope, argv}; + Env test_env{handle_scope, argv}; AddLinkedBinding(*test_env, local_linked_napi); v8::Local context = isolate_->GetCurrentContext(); - const char* run_script = - "process._linkedBinding('local_linked_napi').hello"; - v8::Local script = v8::Script::Compile( - context, - v8::String::NewFromOneByte(isolate_, - reinterpret_cast(run_script)) - .ToLocalChecked()) - .ToLocalChecked(); + const char* run_script = "process._linkedBinding('local_linked_napi').hello"; + v8::Local script = + v8::Script::Compile( + context, + v8::String::NewFromOneByte( + isolate_, reinterpret_cast(run_script)) + .ToLocalChecked()) + .ToLocalChecked(); + v8::Local completion_value = script->Run(context).ToLocalChecked(); + v8::String::Utf8Value utf8val(isolate_, completion_value); + CHECK_NOT_NULL(*utf8val); + CHECK_EQ(strcmp(*utf8val, "world"), 0); +} + +TEST_F(LinkedBindingTest, LocallyDefinedLinkedBindingNapiCallbackTest) { + const v8::HandleScope handle_scope(isolate_); + const Argv argv; + Env test_env{handle_scope, argv}; + + AddLinkedBinding(*test_env, "local_linked_napi", InitializeLocalNapiBinding); + + v8::Local context = isolate_->GetCurrentContext(); + + const char* run_script = "process._linkedBinding('local_linked_napi').hello"; + v8::Local script = + v8::Script::Compile( + context, + v8::String::NewFromOneByte( + isolate_, reinterpret_cast(run_script)) + .ToLocalChecked()) + .ToLocalChecked(); v8::Local completion_value = script->Run(context).ToLocalChecked(); v8::String::Utf8Value utf8val(isolate_, completion_value); CHECK_NOT_NULL(*utf8val); @@ -129,33 +152,32 @@ TEST_F(LinkedBindingTest, LocallyDefinedLinkedBindingNapiTest) { napi_value NapiLinkedWithInstanceData(napi_env env, napi_value exports) { int* instance_data = new int(0); - CHECK_EQ( - napi_set_instance_data( - env, - instance_data, - [](napi_env env, void* data, void* hint) { - ++*static_cast(data); - }, nullptr), - napi_ok); + CHECK_EQ(napi_set_instance_data( + env, + instance_data, + [](napi_env env, void* data, void* hint) { + ++*static_cast(data); + }, + nullptr), + napi_ok); napi_value key, value; - CHECK_EQ( - napi_create_string_utf8(env, "hello", NAPI_AUTO_LENGTH, &key), napi_ok); - CHECK_EQ( - napi_create_external(env, instance_data, nullptr, nullptr, &value), - napi_ok); + CHECK_EQ(napi_create_string_utf8(env, "hello", NAPI_AUTO_LENGTH, &key), + napi_ok); + CHECK_EQ(napi_create_external(env, instance_data, nullptr, nullptr, &value), + napi_ok); CHECK_EQ(napi_set_property(env, exports, key, value), napi_ok); return nullptr; } static napi_module local_linked_napi_id = { - NAPI_MODULE_VERSION, - node::ModuleFlags::kLinked, - nullptr, - NapiLinkedWithInstanceData, - "local_linked_napi_id", - nullptr, - {0}, + NAPI_MODULE_VERSION, + node::ModuleFlags::kLinked, + nullptr, + NapiLinkedWithInstanceData, + "local_linked_napi_id", + nullptr, + {0}, }; TEST_F(LinkedBindingTest, LocallyDefinedLinkedBindingNapiInstanceDataTest) { @@ -164,7 +186,7 @@ TEST_F(LinkedBindingTest, LocallyDefinedLinkedBindingNapiInstanceDataTest) { { const Argv argv; - Env test_env {handle_scope, argv}; + Env test_env{handle_scope, argv}; AddLinkedBinding(*test_env, local_linked_napi_id); @@ -172,17 +194,54 @@ TEST_F(LinkedBindingTest, LocallyDefinedLinkedBindingNapiInstanceDataTest) { const char* run_script = "process._linkedBinding('local_linked_napi_id').hello"; - v8::Local script = v8::Script::Compile( - context, - v8::String::NewFromOneByte(isolate_, - reinterpret_cast(run_script)) - .ToLocalChecked()) - .ToLocalChecked(); + v8::Local script = + v8::Script::Compile( + context, + v8::String::NewFromOneByte( + isolate_, reinterpret_cast(run_script)) + .ToLocalChecked()) + .ToLocalChecked(); v8::Local completion_value = script->Run(context).ToLocalChecked(); CHECK(completion_value->IsExternal()); - instance_data = static_cast( - completion_value.As()->Value()); + instance_data = + static_cast(completion_value.As()->Value()); + CHECK_NE(instance_data, nullptr); + CHECK_EQ(*instance_data, 0); + } + + CHECK_EQ(*instance_data, 1); + delete instance_data; +} + +TEST_F(LinkedBindingTest, + LocallyDefinedLinkedBindingNapiCallbackInstanceDataTest) { + const v8::HandleScope handle_scope(isolate_); + int* instance_data = nullptr; + + { + const Argv argv; + Env test_env{handle_scope, argv}; + + AddLinkedBinding( + *test_env, "local_linked_napi_id", NapiLinkedWithInstanceData); + + v8::Local context = isolate_->GetCurrentContext(); + + const char* run_script = + "process._linkedBinding('local_linked_napi_id').hello"; + v8::Local script = + v8::Script::Compile( + context, + v8::String::NewFromOneByte( + isolate_, reinterpret_cast(run_script)) + .ToLocalChecked()) + .ToLocalChecked(); + v8::Local completion_value = + script->Run(context).ToLocalChecked(); + CHECK(completion_value->IsExternal()); + instance_data = + static_cast(completion_value.As()->Value()); CHECK_NE(instance_data, nullptr); CHECK_EQ(*instance_data, 0); } @@ -194,7 +253,7 @@ TEST_F(LinkedBindingTest, LocallyDefinedLinkedBindingNapiInstanceDataTest) { TEST_F(LinkedBindingTest, ManyBindingsTest) { const v8::HandleScope handle_scope(isolate_); const Argv argv; - Env test_env {handle_scope, argv}; + Env test_env{handle_scope, argv}; int calls = 0; AddLinkedBinding(*test_env, "local_linked1", InitializeLocalBinding, &calls); @@ -209,16 +268,16 @@ TEST_F(LinkedBindingTest, ManyBindingsTest) { const char* run_script = "for (let i = 1; i <= 5; i++)process._linkedBinding(`local_linked${i}`);" "process._linkedBinding('local_linked_napi').hello"; - v8::Local script = v8::Script::Compile( - context, - v8::String::NewFromOneByte(isolate_, - reinterpret_cast(run_script)) - .ToLocalChecked()) - .ToLocalChecked(); + v8::Local script = + v8::Script::Compile( + context, + v8::String::NewFromOneByte( + isolate_, reinterpret_cast(run_script)) + .ToLocalChecked()) + .ToLocalChecked(); v8::Local completion_value = script->Run(context).ToLocalChecked(); v8::String::Utf8Value utf8val(isolate_, completion_value); CHECK_NOT_NULL(*utf8val); CHECK_EQ(strcmp(*utf8val, "world"), 0); CHECK_EQ(calls, 5); } - diff --git a/test/node-api/test_null_init/test_null_init.c b/test/node-api/test_null_init/test_null_init.c index d9d2200488ce41..28c283b89240f7 100644 --- a/test/node-api/test_null_init/test_null_init.c +++ b/test/node-api/test_null_init/test_null_init.c @@ -1,3 +1,53 @@ #include -NAPI_MODULE(NODE_GYP_MODULE_NAME, NULL) +// This test uses old module initialization style deprecated in current code. +// The goal is to see that all previously compiled code continues to work the +// same way as before. +// The test has a copy of previous macro definitions which are removed from +// the node_api.h file. + +#if defined(_MSC_VER) +#if defined(__cplusplus) +#define NAPI_C_CTOR(fn) \ + static void NAPI_CDECL fn(void); \ + namespace { \ + struct fn##_ { \ + fn##_() { fn(); } \ + } fn##_v_; \ + } \ + static void NAPI_CDECL fn(void) +#else // !defined(__cplusplus) +#pragma section(".CRT$XCU", read) +// The NAPI_C_CTOR macro defines a function fn that is called during CRT +// initialization. +// C does not support dynamic initialization of static variables and this code +// simulates C++ behavior. Exporting the function pointer prevents it from being +// optimized. See for details: +// https://docs.microsoft.com/en-us/cpp/c-runtime-library/crt-initialization?view=msvc-170 +#define NAPI_C_CTOR(fn) \ + static void NAPI_CDECL fn(void); \ + __declspec(dllexport, allocate(".CRT$XCU")) void(NAPI_CDECL * fn##_)(void) = \ + fn; \ + static void NAPI_CDECL fn(void) +#endif // defined(__cplusplus) +#else +#define NAPI_C_CTOR(fn) \ + static void fn(void) __attribute__((constructor)); \ + static void fn(void) +#endif + +#define NAPI_MODULE_TEST(modname, regfunc) \ + EXTERN_C_START \ + static napi_module _module = { \ + NAPI_MODULE_VERSION, \ + 0, \ + __FILE__, \ + regfunc, \ + #modname, \ + NULL, \ + {0}, \ + }; \ + NAPI_C_CTOR(_register_##modname) { napi_module_register(&_module); } \ + EXTERN_C_END + +NAPI_MODULE_TEST(NODE_GYP_MODULE_NAME, NULL) From a64469dcf10adb81fdc5b1e5248ce58520858761 Mon Sep 17 00:00:00 2001 From: Marco Ippolito Date: Sat, 25 Mar 2023 09:24:55 +0100 Subject: [PATCH 147/186] tools: standardize update-nghttp2.sh PR-URL: https://github.com/nodejs/node/pull/47197 Refs: https://github.com/nodejs/security-wg/issues/828 Reviewed-By: Antoine du Hamel Reviewed-By: Luigi Pinca Reviewed-By: Darshan Sen Reviewed-By: Rafael Gonzaga Reviewed-By: Gireesh Punathil Reviewed-By: Matteo Collina --- .github/workflows/tools.yml | 10 +++--- doc/contributing/maintaining-nghttp2.md | 9 +----- tools/{ => dep_updaters}/update-nghttp2.sh | 36 ++++++++++++++++------ 3 files changed, 32 insertions(+), 23 deletions(-) rename tools/{ => dep_updaters}/update-nghttp2.sh (52%) diff --git a/.github/workflows/tools.yml b/.github/workflows/tools.yml index 5e286f98f75c7a..c8fbd5b4eddd53 100644 --- a/.github/workflows/tools.yml +++ b/.github/workflows/tools.yml @@ -142,12 +142,10 @@ jobs: subsystem: deps label: dependencies run: | - NEW_VERSION=$(gh api repos/nghttp2/nghttp2/releases/latest -q '.tag_name|ltrimstr("v")') - CURRENT_VERSION=$(grep "#define NGHTTP2_VERSION" ./deps/nghttp2/lib/includes/nghttp2/nghttp2ver.h | sed -n "s/^.*VERSION \(.*\)/\1/p") - if [ "$NEW_VERSION" != "$CURRENT_VERSION" ]; then - echo "NEW_VERSION=$NEW_VERSION" >> $GITHUB_ENV - ./tools/update-nghttp2.sh "$NEW_VERSION" - fi + ./tools/dep_updaters/nghttp2.sh > temp-output + cat temp-output + tail -n1 temp-output | grep "NEW_VERSION=" >> "$GITHUB_ENV" || true + rm temp-output - id: llhttp subsystem: deps label: dependencies diff --git a/doc/contributing/maintaining-nghttp2.md b/doc/contributing/maintaining-nghttp2.md index e75240f107aa35..41ba0b58508513 100644 --- a/doc/contributing/maintaining-nghttp2.md +++ b/doc/contributing/maintaining-nghttp2.md @@ -13,16 +13,9 @@ directory and C++ code in the ## Step 1: Updating nghttp2 -The `tools/update-nghttp2.sh` script automates the update of the +The `tools/dep_updaters/update-nghttp2.sh` script automates the update of the postject source files. -In the following examples, `x.y.z` should match the nghttp2 -version to update to. - -```console -$ ./tools/update-nghttp2.sh x.y.z -``` - ## Step 2: Test the build ```console diff --git a/tools/update-nghttp2.sh b/tools/dep_updaters/update-nghttp2.sh similarity index 52% rename from tools/update-nghttp2.sh rename to tools/dep_updaters/update-nghttp2.sh index ba01f8d6bdef9f..c53a620ba096ec 100755 --- a/tools/update-nghttp2.sh +++ b/tools/dep_updaters/update-nghttp2.sh @@ -2,13 +2,27 @@ set -e # Shell script to update nghttp2 in the source tree to specific version -BASE_DIR=$(cd "$(dirname "$0")/.." && pwd) +BASE_DIR=$(cd "$(dirname "$0")/../.." && pwd) DEPS_DIR="$BASE_DIR/deps" -NGHTTP2_VERSION=$1 -if [ "$#" -le 0 ]; then - echo "Error: please provide an nghttp2 version to update to" - exit 1 +[ -z "$NODE" ] && NODE="$BASE_DIR/out/Release/node" +[ -x "$NODE" ] || NODE=$(command -v node) + +NEW_VERSION="$("$NODE" --input-type=module <<'EOF' +const res = await fetch('https://api.github.com/repos/nghttp2/nghttp2/releases/latest'); +if (!res.ok) throw new Error(`FetchError: ${res.status} ${res.statusText}`, { cause: res }); +const { tag_name } = await res.json(); +console.log(tag_name.replace('v', '')); +EOF +)" + +CURRENT_VERSION=$(grep "#define NGHTTP2_VERSION" ./deps/nghttp2/lib/includes/nghttp2/nghttp2ver.h | sed -n "s/^.*VERSION \"\(.*\)\"/\1/p") + +echo "Comparing $NEW_VERSION with $CURRENT_VERSION" + +if [ "$NEW_VERSION" = "$CURRENT_VERSION" ]; then + echo "Skipped because nghttp2 is on the latest version." + exit 0 fi echo "Making temporary workspace" @@ -23,8 +37,8 @@ cleanup () { trap cleanup INT TERM EXIT -NGHTTP2_REF="v$NGHTTP2_VERSION" -NGHTTP2_TARBALL="nghttp2-$NGHTTP2_VERSION.tar.gz" +NGHTTP2_REF="v$NEW_VERSION" +NGHTTP2_TARBALL="nghttp2-$NEW_VERSION.tar.gz" cd "$WORKSPACE" @@ -32,7 +46,7 @@ echo "Fetching nghttp2 source archive" curl -sL -o "$NGHTTP2_TARBALL" "https://github.com/nghttp2/nghttp2/releases/download/$NGHTTP2_REF/$NGHTTP2_TARBALL" gzip -dc "$NGHTTP2_TARBALL" | tar xf - rm "$NGHTTP2_TARBALL" -mv "nghttp2-$NGHTTP2_VERSION" nghttp2 +mv "nghttp2-$NEW_VERSION" nghttp2 echo "Removing everything, except lib/ and COPYING" cd nghttp2 @@ -59,5 +73,9 @@ echo "" echo "Please git add nghttp2, commit the new version:" echo "" echo "$ git add -A deps/nghttp2" -echo "$ git commit -m \"deps: update nghttp2 to $NGHTTP2_VERSION\"" +echo "$ git commit -m \"deps: update nghttp2 to $NEW_VERSION\"" echo "" + +# The last line of the script should always print the new version, +# as we need to add it to $GITHUB_ENV variable. +echo "NEW_VERSION=$NEW_VERSION" From 94ec71d38583386047ac407908cd2d149aa9cbf0 Mon Sep 17 00:00:00 2001 From: jakecastelli <38635403+jakecastelli@users.noreply.github.com> Date: Sat, 25 Mar 2023 19:11:43 +1030 Subject: [PATCH 148/186] tools: add button to copy code example to clipboard PR-URL: https://github.com/nodejs/node/pull/46928 Refs: https://github.com/nodejs/node/issues/46894 Reviewed-By: Debadree Chatterjee --- doc/api_assets/api.js | 32 ++++++++++++++++++++++++++++++++ doc/api_assets/style.css | 27 +++++++++++++++++++++++++++ tools/doc/html.mjs | 8 ++++++-- 3 files changed, 65 insertions(+), 2 deletions(-) diff --git a/doc/api_assets/api.js b/doc/api_assets/api.js index 49906b1a2abab5..c1151ae493e8da 100644 --- a/doc/api_assets/api.js +++ b/doc/api_assets/api.js @@ -136,6 +136,36 @@ updateHashes(); } + function setupCopyButton() { + const buttons = document.querySelectorAll('.copy-button'); + buttons.forEach((button) => { + button.addEventListener('click', (el) => { + const parentNode = el.target.parentNode; + + const flavorSelector = parentNode.querySelector('.js-flavor-selector'); + + let code = ''; + + if (flavorSelector) { + if (flavorSelector.checked) { + code = parentNode.querySelector('.mjs').textContent; + } else { + code = parentNode.querySelector('.cjs').textContent; + } + } else { + code = parentNode.querySelector('code').textContent; + } + + button.textContent = 'Copied'; + navigator.clipboard.writeText(code); + + setTimeout(() => { + button.textContent = 'Copy'; + }, 2500); + }); + }); + } + function bootstrap() { // Check if we have JavaScript support. document.documentElement.classList.add('has-js'); @@ -151,6 +181,8 @@ // Make link to other versions of the doc open to the same hash target (if it exists). setupAltDocsLink(); + + setupCopyButton(); } if (document.readyState === 'loading') { diff --git a/doc/api_assets/style.css b/doc/api_assets/style.css index 42126949d55d5c..6b27fa1fb71b94 100644 --- a/doc/api_assets/style.css +++ b/doc/api_assets/style.css @@ -973,6 +973,33 @@ kbd { .dark-mode .js-flavor-selector { filter: invert(1); } + +.copy-button { + float: right; + + outline: none; + font-size: 10px; + color: #fff; + background-color: var(--green1); + line-height: 1; + border-radius: 500px; + border: 1px solid transparent; + letter-spacing: 2px; + min-width: 7.5rem; + text-transform: uppercase; + font-weight: 700; + padding: 0 .5rem; + margin-right: .2rem; + height: 1.5rem; + transition-property: background-color,border-color,color,box-shadow,filter; + transition-duration: .3s; + cursor: pointer; +} + +.copy-button:hover { + background-color: var(--green2); +} + @supports (aspect-ratio: 1 / 1) { .js-flavor-selector { height: 1.5em; diff --git a/tools/doc/html.mjs b/tools/doc/html.mjs index 86df5162f58000..d5dd7973e206ac 100644 --- a/tools/doc/html.mjs +++ b/tools/doc/html.mjs @@ -226,10 +226,13 @@ export function preprocessElements({ filename }) { const className = isJSFlavorSnippet(node) ? `language-js ${node.lang}` : `language-${node.lang}`; + const highlighted = `${(getLanguage(node.lang || '') ? highlight(node.value, { language: node.lang }) : node).value}`; node.type = 'html'; + const copyButton = ''; + if (isJSFlavorSnippet(node)) { const previousNode = parent.children[index - 1] || {}; const nextNode = parent.children[index + 1] || {}; @@ -253,16 +256,17 @@ export function preprocessElements({ filename }) { ' aria-label="Show modern ES modules syntax">' + previousNode.value + highlighted + + copyButton + ''; node.lang = null; previousNode.value = ''; previousNode.lang = null; } else { // Isolated JS snippet, no need to add the checkbox. - node.value = `
${highlighted}
`; + node.value = `
${highlighted} ${copyButton}
`; } } else { - node.value = `
${highlighted}
`; + node.value = `
${highlighted} ${copyButton}
`; } } else if (node.type === 'html' && common.isYAMLBlock(node.value)) { node.value = parseYAML(node.value); From a0ca15ed3f01c1c8b9d6a5f78b36745b335203d2 Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Sat, 25 Mar 2023 12:48:21 +0100 Subject: [PATCH 149/186] test,crypto: update WebCryptoAPI WPT MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/47222 Reviewed-By: Yagiz Nizipli Reviewed-By: Luigi Pinca Reviewed-By: Tobias Nießen --- test/fixtures/wpt/README.md | 2 +- .../cfrg_curves_bits.https.any.js | 1 + .../derive_bits_keys/cfrg_curves_bits.js | 50 +++---------------- .../cfrg_curves_bits_fixtures.js | 37 ++++++++++++++ .../cfrg_curves_keys.https.any.js | 1 + .../derive_bits_keys/cfrg_curves_keys.js | 49 +++++++++++------- test/fixtures/wpt/versions.json | 2 +- 7 files changed, 77 insertions(+), 65 deletions(-) create mode 100644 test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_bits_fixtures.js diff --git a/test/fixtures/wpt/README.md b/test/fixtures/wpt/README.md index 950f0cd0a966f3..6d60c747c36261 100644 --- a/test/fixtures/wpt/README.md +++ b/test/fixtures/wpt/README.md @@ -31,7 +31,7 @@ Last update: - user-timing: https://github.com/web-platform-tests/wpt/tree/df24fb604e/user-timing - wasm/jsapi: https://github.com/web-platform-tests/wpt/tree/d8dbe6990b/wasm/jsapi - wasm/webapi: https://github.com/web-platform-tests/wpt/tree/fd1b23eeaa/wasm/webapi -- WebCryptoAPI: https://github.com/web-platform-tests/wpt/tree/1406b5c0d0/WebCryptoAPI +- WebCryptoAPI: https://github.com/web-platform-tests/wpt/tree/188993d46b/WebCryptoAPI - webidl/ecmascript-binding/es-exceptions: https://github.com/web-platform-tests/wpt/tree/a370aad338/webidl/ecmascript-binding/es-exceptions - webmessaging/broadcastchannel: https://github.com/web-platform-tests/wpt/tree/e97fac4791/webmessaging/broadcastchannel diff --git a/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_bits.https.any.js b/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_bits.https.any.js index afa7db845faaee..c1837591ee85d4 100644 --- a/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_bits.https.any.js +++ b/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_bits.https.any.js @@ -1,4 +1,5 @@ // META: title=WebCryptoAPI: deriveBits() Using ECDH with CFRG Elliptic Curves +// META: script=cfrg_curves_bits_fixtures.js // META: script=cfrg_curves_bits.js // Define subtests from a `promise_test` to ensure the harness does not diff --git a/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_bits.js b/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_bits.js index 463f687f1652e4..4e12ca0eb711fa 100644 --- a/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_bits.js +++ b/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_bits.js @@ -3,44 +3,6 @@ function define_tests() { // May want to test prefixed implementations. var subtle = self.crypto.subtle; - var pkcs8 = { - "X25519": new Uint8Array([48, 46, 2, 1, 0, 48, 5, 6, 3, 43, 101, 110, 4, 34, 4, 32, 200, 131, 142, 118, 208, 87, 223, 183, 216, 201, 90, 105, 225, 56, 22, 10, 221, 99, 115, 253, 113, 164, 210, 118, 187, 86, 227, 168, 27, 100, 255, 97]), - "X448": new Uint8Array([48, 70, 2, 1, 0, 48, 5, 6, 3, 43, 101, 111, 4, 58, 4, 56, 88, 199, 210, 154, 62, 181, 25, 178, 157, 0, 207, 177, 145, 187, 100, 252, 109, 138, 66, 216, 241, 113, 118, 39, 43, 137, 242, 39, 45, 24, 25, 41, 92, 101, 37, 192, 130, 150, 113, 176, 82, 239, 7, 39, 83, 15, 24, 142, 49, 208, 204, 83, 191, 38, 146, 158]) - }; - - var spki = { - "X25519": new Uint8Array([48, 42, 48, 5, 6, 3, 43, 101, 110, 3, 33, 0, 28, 242, 177, 230, 2, 46, 197, 55, 55, 30, 215, 245, 62, 84, 250, 17, 84, 216, 62, 152, 235, 100, 234, 81, 250, 229, 179, 48, 124, 254, 151, 6]), - "X448": new Uint8Array([48, 66, 48, 5, 6, 3, 43, 101, 111, 3, 57, 0, 182, 4, 161, 209, 165, 205, 29, 148, 38, 213, 97, 239, 99, 10, 158, 177, 108, 190, 105, 213, 185, 202, 97, 94, 220, 83, 99, 62, 251, 82, 234, 49, 230, 230, 160, 161, 219, 172, 198, 231, 108, 188, 230, 72, 45, 126, 75, 163, 213, 93, 158, 128, 39, 101, 206, 111]) - }; - - var sizes = { - "X25519": 32, - "X448": 56 - }; - - var derivations = { - "X25519": new Uint8Array([39, 104, 64, 157, 250, 185, 158, 194, 59, 140, 137, 185, 63, 245, 136, 2, 149, 247, 97, 118, 8, 143, 137, 228, 61, 254, 190, 126, 161, 149, 0, 8]), - "X448": new Uint8Array([240, 246, 197, 241, 127, 148, 244, 41, 30, 171, 113, 120, 134, 109, 55, 236, 137, 6, 221, 108, 81, 65, 67, 220, 133, 190, 124, 242, 141, 239, 243, 155, 114, 110, 15, 109, 207, 129, 14, 181, 148, 220, 169, 123, 72, 130, 189, 68, 196, 62, 167, 220, 103, 244, 154, 78]) - }; - - var kSmallOrderPoint = { - "X25519": [ - { order: "0", vector : new Uint8Array([48, 42, 48, 5, 6, 3, 43, 101, 110, 3, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) }, - { order: "1", vector : new Uint8Array([48, 42, 48, 5, 6, 3, 43, 101, 110, 3, 33, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) }, - { order: "8", vector : new Uint8Array([48, 42, 48, 5, 6, 3, 43, 101, 110, 3, 33, 0, 224, 235, 122, 124, 59, 65, 184, 174, 22, 86, 227, 250, 241, 159, 196, 106, 218, 9, 141, 235, 156, 50, 177, 253, 134, 98, 5, 22, 95, 73, 184, 0]) }, - { order: "p-1 (order 2)", vector : new Uint8Array([48, 42, 48, 5, 6, 3, 43, 101, 110, 3, 33, 0, 236, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127]) }, - { order: "p (=0, order 4)", vector : new Uint8Array([48, 42, 48, 5, 6, 3, 43, 101, 110, 3, 33, 0, 237, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127]) }, - { order: "p+1 (=1, order 1)", vector : new Uint8Array([48, 42, 48, 5, 6, 3, 43, 101, 110, 3, 33, 0, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127]) }, - ], - "X448": [ - { order: "0", vector : new Uint8Array([48, 66, 48, 5, 6, 3, 43, 101, 111, 3, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) }, - { order: "1", vector : new Uint8Array([48, 66, 48, 5, 6, 3, 43, 101, 111, 3, 57, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) }, - { order: "p-1 (order 2)", vector : new Uint8Array([48, 66, 48, 5, 6, 3, 43, 101, 111, 3, 57, 0, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]) }, - { order: "p (=0, order 4)", vector : new Uint8Array([48, 66, 48, 5, 6, 3, 43, 101, 111, 3, 57, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]) }, - { order: "p+1 (=1, order 1)", vector : new Uint8Array([48, 66, 48, 5, 6, 3, 43, 101, 111, 3, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]) }, - ] - }; - // Verify the derive functions perform checks against the all-zero value results, // ensuring small-order points are rejected. // https://www.rfc-editor.org/rfc/rfc7748#section-6.1 @@ -50,16 +12,16 @@ function define_tests() { kSmallOrderPoint[algorithmName].forEach(function(test) { promise_test(async() => { let derived; - let privateKey = await subtle.importKey("pkcs8", pkcs8[algorithmName], + let privateKey; + let publicKey; + try { + privateKey = await subtle.importKey("pkcs8", pkcs8[algorithmName], {name: algorithmName}, false, ["deriveBits", "deriveKey"]); - let publicKey = await subtle.importKey("spki", test.vector, + publicKey = await subtle.importKey("spki", test.vector, {name: algorithmName}, false, []) - try { - derived = await subtle.deriveKey({name: algorithmName, public: publicKey}, privateKey, - {name: "HMAC", hash: "SHA-256", length: 256}, true, - ["sign", "verify"]); + derived = await subtle.deriveBits({name: algorithmName, public: publicKey}, privateKey, 8 * sizes[algorithmName]); } catch (err) { assert_false(privateKey === undefined, "Private key should be valid."); assert_false(publicKey === undefined, "Public key should be valid."); diff --git a/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_bits_fixtures.js b/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_bits_fixtures.js new file mode 100644 index 00000000000000..ffdeb51eab9700 --- /dev/null +++ b/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_bits_fixtures.js @@ -0,0 +1,37 @@ +var pkcs8 = { + "X25519": new Uint8Array([48, 46, 2, 1, 0, 48, 5, 6, 3, 43, 101, 110, 4, 34, 4, 32, 200, 131, 142, 118, 208, 87, 223, 183, 216, 201, 90, 105, 225, 56, 22, 10, 221, 99, 115, 253, 113, 164, 210, 118, 187, 86, 227, 168, 27, 100, 255, 97]), + "X448": new Uint8Array([48, 70, 2, 1, 0, 48, 5, 6, 3, 43, 101, 111, 4, 58, 4, 56, 88, 199, 210, 154, 62, 181, 25, 178, 157, 0, 207, 177, 145, 187, 100, 252, 109, 138, 66, 216, 241, 113, 118, 39, 43, 137, 242, 39, 45, 24, 25, 41, 92, 101, 37, 192, 130, 150, 113, 176, 82, 239, 7, 39, 83, 15, 24, 142, 49, 208, 204, 83, 191, 38, 146, 158]) +}; + +var spki = { + "X25519": new Uint8Array([48, 42, 48, 5, 6, 3, 43, 101, 110, 3, 33, 0, 28, 242, 177, 230, 2, 46, 197, 55, 55, 30, 215, 245, 62, 84, 250, 17, 84, 216, 62, 152, 235, 100, 234, 81, 250, 229, 179, 48, 124, 254, 151, 6]), + "X448": new Uint8Array([48, 66, 48, 5, 6, 3, 43, 101, 111, 3, 57, 0, 182, 4, 161, 209, 165, 205, 29, 148, 38, 213, 97, 239, 99, 10, 158, 177, 108, 190, 105, 213, 185, 202, 97, 94, 220, 83, 99, 62, 251, 82, 234, 49, 230, 230, 160, 161, 219, 172, 198, 231, 108, 188, 230, 72, 45, 126, 75, 163, 213, 93, 158, 128, 39, 101, 206, 111]) +}; + +var sizes = { + "X25519": 32, + "X448": 56 +}; + +var derivations = { + "X25519": new Uint8Array([39, 104, 64, 157, 250, 185, 158, 194, 59, 140, 137, 185, 63, 245, 136, 2, 149, 247, 97, 118, 8, 143, 137, 228, 61, 254, 190, 126, 161, 149, 0, 8]), + "X448": new Uint8Array([240, 246, 197, 241, 127, 148, 244, 41, 30, 171, 113, 120, 134, 109, 55, 236, 137, 6, 221, 108, 81, 65, 67, 220, 133, 190, 124, 242, 141, 239, 243, 155, 114, 110, 15, 109, 207, 129, 14, 181, 148, 220, 169, 123, 72, 130, 189, 68, 196, 62, 167, 220, 103, 244, 154, 78]) +}; + +var kSmallOrderPoint = { + "X25519": [ + { order: "0", vector : new Uint8Array([48, 42, 48, 5, 6, 3, 43, 101, 110, 3, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) }, + { order: "1", vector : new Uint8Array([48, 42, 48, 5, 6, 3, 43, 101, 110, 3, 33, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) }, + { order: "8", vector : new Uint8Array([48, 42, 48, 5, 6, 3, 43, 101, 110, 3, 33, 0, 224, 235, 122, 124, 59, 65, 184, 174, 22, 86, 227, 250, 241, 159, 196, 106, 218, 9, 141, 235, 156, 50, 177, 253, 134, 98, 5, 22, 95, 73, 184, 0]) }, + { order: "p-1 (order 2)", vector : new Uint8Array([48, 42, 48, 5, 6, 3, 43, 101, 110, 3, 33, 0, 236, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127]) }, + { order: "p (=0, order 4)", vector : new Uint8Array([48, 42, 48, 5, 6, 3, 43, 101, 110, 3, 33, 0, 237, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127]) }, + { order: "p+1 (=1, order 1)", vector : new Uint8Array([48, 42, 48, 5, 6, 3, 43, 101, 110, 3, 33, 0, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127]) }, + ], + "X448": [ + { order: "0", vector : new Uint8Array([48, 66, 48, 5, 6, 3, 43, 101, 111, 3, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) }, + { order: "1", vector : new Uint8Array([48, 66, 48, 5, 6, 3, 43, 101, 111, 3, 57, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) }, + { order: "p-1 (order 2)", vector : new Uint8Array([48, 66, 48, 5, 6, 3, 43, 101, 111, 3, 57, 0, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]) }, + { order: "p (=0, order 4)", vector : new Uint8Array([48, 66, 48, 5, 6, 3, 43, 101, 111, 3, 57, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]) }, + { order: "p+1 (=1, order 1)", vector : new Uint8Array([48, 66, 48, 5, 6, 3, 43, 101, 111, 3, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]) }, + ] +}; diff --git a/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_keys.https.any.js b/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_keys.https.any.js index 71fe87d9a874b7..96658a56e81da9 100644 --- a/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_keys.https.any.js +++ b/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_keys.https.any.js @@ -1,4 +1,5 @@ // META: title=WebCryptoAPI: deriveKey() Using ECDH with CFRG Elliptic Curves +// META: script=cfrg_curves_bits_fixtures.js // META: script=cfrg_curves_keys.js // Define subtests from a `promise_test` to ensure the harness does not diff --git a/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_keys.js b/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_keys.js index 3c53697ce3c49b..81244ba05a8766 100644 --- a/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_keys.js +++ b/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_keys.js @@ -3,25 +3,36 @@ function define_tests() { // May want to test prefixed implementations. var subtle = self.crypto.subtle; - var pkcs8 = { - "X25519": new Uint8Array([48, 46, 2, 1, 0, 48, 5, 6, 3, 43, 101, 110, 4, 34, 4, 32, 200, 131, 142, 118, 208, 87, 223, 183, 216, 201, 90, 105, 225, 56, 22, 10, 221, 99, 115, 253, 113, 164, 210, 118, 187, 86, 227, 168, 27, 100, 255, 97]), - "X448": new Uint8Array([48, 70, 2, 1, 0, 48, 5, 6, 3, 43, 101, 111, 4, 58, 4, 56, 88, 199, 210, 154, 62, 181, 25, 178, 157, 0, 207, 177, 145, 187, 100, 252, 109, 138, 66, 216, 241, 113, 118, 39, 43, 137, 242, 39, 45, 24, 25, 41, 92, 101, 37, 192, 130, 150, 113, 176, 82, 239, 7, 39, 83, 15, 24, 142, 49, 208, 204, 83, 191, 38, 146, 158]) - }; - - var spki = { - "X25519": new Uint8Array([48, 42, 48, 5, 6, 3, 43, 101, 110, 3, 33, 0, 28, 242, 177, 230, 2, 46, 197, 55, 55, 30, 215, 245, 62, 84, 250, 17, 84, 216, 62, 152, 235, 100, 234, 81, 250, 229, 179, 48, 124, 254, 151, 6]), - "X448": new Uint8Array([48, 66, 48, 5, 6, 3, 43, 101, 111, 3, 57, 0, 182, 4, 161, 209, 165, 205, 29, 148, 38, 213, 97, 239, 99, 10, 158, 177, 108, 190, 105, 213, 185, 202, 97, 94, 220, 83, 99, 62, 251, 82, 234, 49, 230, 230, 160, 161, 219, 172, 198, 231, 108, 188, 230, 72, 45, 126, 75, 163, 213, 93, 158, 128, 39, 101, 206, 111]) - }; - - var sizes = { - "X25519": 32, - "X448": 56 - }; - - var derivations = { - "X25519": new Uint8Array([39, 104, 64, 157, 250, 185, 158, 194, 59, 140, 137, 185, 63, 245, 136, 2, 149, 247, 97, 118, 8, 143, 137, 228, 61, 254, 190, 126, 161, 149, 0, 8]), - "X448": new Uint8Array([240, 246, 197, 241, 127, 148, 244, 41, 30, 171, 113, 120, 134, 109, 55, 236, 137, 6, 221, 108, 81, 65, 67, 220, 133, 190, 124, 242, 141, 239, 243, 155, 114, 110, 15, 109, 207, 129, 14, 181, 148, 220, 169, 123, 72, 130, 189, 68, 196, 62, 167, 220, 103, 244, 154, 78]) - }; + // Verify the derive functions perform checks against the all-zero value results, + // ensuring small-order points are rejected. + // https://www.rfc-editor.org/rfc/rfc7748#section-6.1 + // TODO: The spec states that the check must be done on use, but there is discussion about doing it on import. + // https://github.com/WICG/webcrypto-secure-curves/pull/13 + Object.keys(kSmallOrderPoint).forEach(function(algorithmName) { + kSmallOrderPoint[algorithmName].forEach(function(test) { + promise_test(async() => { + let derived; + let privateKey; + let publicKey; + try { + privateKey = await subtle.importKey("pkcs8", pkcs8[algorithmName], + {name: algorithmName}, + false, ["deriveBits", "deriveKey"]); + publicKey = await subtle.importKey("spki", test.vector, + {name: algorithmName}, + false, []) + derived = await subtle.deriveKey({name: algorithmName, public: publicKey}, privateKey, + {name: "HMAC", hash: "SHA-256", length: 256}, true, + ["sign", "verify"]); + } catch (err) { + assert_false(privateKey === undefined, "Private key should be valid."); + assert_false(publicKey === undefined, "Public key should be valid."); + assert_equals(err.name, "OperationError", "Should throw correct error, not " + err.name + ": " + err.message + "."); + } + assert_equals(derived, undefined, "Operation succeeded, but should not have."); + }, algorithmName + " deriveBits checks for all-zero value result with a key of order " + test.order); + }); + }); // Ensure the keys generated by each algorithm are valid for key derivation. Object.keys(sizes).forEach(function(algorithmName) { diff --git a/test/fixtures/wpt/versions.json b/test/fixtures/wpt/versions.json index 583e1f75bf585f..c76ebb17760bfc 100644 --- a/test/fixtures/wpt/versions.json +++ b/test/fixtures/wpt/versions.json @@ -84,7 +84,7 @@ "path": "wasm/webapi" }, "WebCryptoAPI": { - "commit": "1406b5c0d07b5e8dd08e328c451e42c23f3b96c8", + "commit": "188993d46b95c9c0414ba2cef8751f5e19d3d498", "path": "WebCryptoAPI" }, "webidl/ecmascript-binding/es-exceptions": { From 06c91af1b4724506f8ef7244b04f104371c0c3fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Sat, 25 Mar 2023 12:56:49 +0100 Subject: [PATCH 150/186] meta: update link to collaborators discussion page Refs: https://github.com/nodejs/TSC/issues/1340 PR-URL: https://github.com/nodejs/node/pull/47211 Reviewed-By: Richard Lau Reviewed-By: Luigi Pinca Reviewed-By: Michael Dawson Reviewed-By: Darshan Sen Reviewed-By: Rafael Gonzaga Reviewed-By: Rich Trott --- GOVERNANCE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GOVERNANCE.md b/GOVERNANCE.md index c055b800c01280..6ba1ef2daf2c3d 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -177,6 +177,6 @@ The TSC follows a [Consensus Seeking][] decision-making model per the [Consensus Seeking]: https://en.wikipedia.org/wiki/Consensus-seeking_decision-making [TSC Charter]: https://github.com/nodejs/TSC/blob/HEAD/TSC-Charter.md -[collaborators discussion page]: https://github.com/orgs/nodejs/teams/collaborators/discussions +[collaborators discussion page]: https://github.com/nodejs/collaborators/discussions/categories/collaborator-nominations [nodejs/help]: https://github.com/nodejs/help [nodejs/node]: https://github.com/nodejs/node From 6ed64e784a6ece38d1b2727bc516b01bdbbfca3c Mon Sep 17 00:00:00 2001 From: Deokjin Kim Date: Thu, 23 Mar 2023 00:50:41 +0900 Subject: [PATCH 151/186] doc: update output of example in AbortController Actual output of example in AbortController is mismatched. Plus, make `reason` parameter as optional in JSDoc. Refs: https://github.com/nodejs/node/blob/main/doc/api/globals.md#abortcontrollerabortreason Refs: https://github.com/nodejs/node/blob/main/doc/api/globals.md#static-method-abortsignalabortreason PR-URL: https://github.com/nodejs/node/pull/47227 Reviewed-By: Debadree Chatterjee Reviewed-By: Erick Wendel Reviewed-By: Luigi Pinca --- doc/api/globals.md | 4 ++-- lib/internal/abort_controller.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/api/globals.md b/doc/api/globals.md index a1b1f259b32418..1e092f7a8aa005 100644 --- a/doc/api/globals.md +++ b/doc/api/globals.md @@ -43,7 +43,7 @@ ac.signal.addEventListener('abort', () => console.log('Aborted!'), ac.abort(); -console.log(ac.signal.aborted); // Prints True +console.log(ac.signal.aborted); // Prints true ``` ### `abortController.abort([reason])` @@ -196,7 +196,7 @@ An optional reason specified when the `AbortSignal` was triggered. ```js const ac = new AbortController(); ac.abort(new Error('boom!')); -console.log(ac.signal.reason); // Error('boom!'); +console.log(ac.signal.reason); // Error: boom! ``` #### `abortSignal.throwIfAborted()` diff --git a/lib/internal/abort_controller.js b/lib/internal/abort_controller.js index 847d9db6699d75..2c1f43354f9f7c 100644 --- a/lib/internal/abort_controller.js +++ b/lib/internal/abort_controller.js @@ -163,7 +163,7 @@ class AbortSignal extends EventTarget { } /** - * @param {any} reason + * @param {any} [reason] * @returns {AbortSignal} */ static abort( @@ -326,7 +326,7 @@ class AbortController { } /** - * @param {any} reason + * @param {any} [reason] */ abort(reason = new DOMException('This operation was aborted', 'AbortError')) { abortSignal(this.#signal ??= createAbortSignal(), reason); From 38b6ecc12e9d3458205da8c4c698cf127590c8b6 Mon Sep 17 00:00:00 2001 From: Marco Ippolito Date: Sat, 25 Mar 2023 15:26:01 +0100 Subject: [PATCH 152/186] tools: standardize update-llhttp.sh PR-URL: https://github.com/nodejs/node/pull/47198 Refs: https://github.com/nodejs/security-wg/issues/828 Reviewed-By: Rafael Gonzaga Reviewed-By: Matteo Collina Reviewed-By: Paolo Insogna Reviewed-By: Tierney Cyren --- .github/workflows/tools.yml | 13 ++--- doc/contributing/maintaining-http.md | 2 +- tools/dep_updaters/update-llhttp.sh | 83 ++++++++++++++++++++++++++++ tools/update-llhttp.sh | 63 --------------------- 4 files changed, 88 insertions(+), 73 deletions(-) create mode 100755 tools/dep_updaters/update-llhttp.sh delete mode 100755 tools/update-llhttp.sh diff --git a/.github/workflows/tools.yml b/.github/workflows/tools.yml index c8fbd5b4eddd53..0b4e8c9f79ec86 100644 --- a/.github/workflows/tools.yml +++ b/.github/workflows/tools.yml @@ -150,15 +150,10 @@ jobs: subsystem: deps label: dependencies run: | - NEW_VERSION=$(gh api repos/nodejs/llhttp/releases/latest -q '.tag_name|ltrimstr("release/v")') - CURRENT_MAJOR_VERSION=$(grep "#define LLHTTP_VERSION_MAJOR" ./deps/llhttp/include/llhttp.h | sed -n "s/^.*MAJOR \(.*\)/\1/p") - CURRENT_MINOR_VERSION=$(grep "#define LLHTTP_VERSION_MINOR" ./deps/llhttp/include/llhttp.h | sed -n "s/^.*MINOR \(.*\)/\1/p") - CURRENT_PATCH_VERSION=$(grep "#define LLHTTP_VERSION_PATCH" ./deps/llhttp/include/llhttp.h | sed -n "s/^.*PATCH \(.*\)/\1/p") - CURRENT_VERSION="$CURRENT_MAJOR_VERSION.$CURRENT_MINOR_VERSION.$CURRENT_PATCH_VERSION" - if [ "$NEW_VERSION" != "$CURRENT_VERSION" ]; then - echo "NEW_VERSION=$NEW_VERSION" >> $GITHUB_ENV - ./tools/update-llhttp.sh "$NEW_VERSION" - fi + ./tools/dep_updaters/update-llhttp.sh > temp-output + cat temp-output + tail -n1 temp-output | grep "NEW_VERSION=" >> "$GITHUB_ENV" || true + rm temp-output - id: c-ares subsystem: deps label: dependencies diff --git a/doc/contributing/maintaining-http.md b/doc/contributing/maintaining-http.md index dab06fdc6ed84a..88d6fdb6ee55e5 100644 --- a/doc/contributing/maintaining-http.md +++ b/doc/contributing/maintaining-http.md @@ -79,7 +79,7 @@ repository. Updates are pulled into Node.js under [deps/llhttp](https://github.com/nodejs/node/tree/HEAD/deps/llhttp). In order to update Node.js with a new version of llhttp you can use the -`tools/update-llhttp.sh` script. +`tools/dep_updaters/update-llhttp.sh` script. The contents of the `deps/llhttp` folder should look like the following: diff --git a/tools/dep_updaters/update-llhttp.sh b/tools/dep_updaters/update-llhttp.sh new file mode 100755 index 00000000000000..9c46536f205b40 --- /dev/null +++ b/tools/dep_updaters/update-llhttp.sh @@ -0,0 +1,83 @@ +#!/bin/sh +set -e + +# Shell script to update llhttp in the source tree to specific version + +BASE_DIR=$(cd "$(dirname "$0")/../.." && pwd) +DEPS_DIR="${BASE_DIR}/deps" + +[ -z "$NODE" ] && NODE="$BASE_DIR/out/Release/node" +[ -x "$NODE" ] || NODE=$(command -v node) + +NEW_VERSION="$("$NODE" --input-type=module <<'EOF' +const res = await fetch('https://api.github.com/repos/nodejs/llhttp/releases/latest'); +if (!res.ok) throw new Error(`FetchError: ${res.status} ${res.statusText}`, { cause: res }); +const { tag_name } = await res.json(); +console.log(tag_name.replace('release/v', '')); +EOF +)" + +CURRENT_MAJOR_VERSION=$(grep "#define LLHTTP_VERSION_MAJOR" ./deps/llhttp/include/llhttp.h | sed -n "s/^.*MAJOR \(.*\)/\1/p") +CURRENT_MINOR_VERSION=$(grep "#define LLHTTP_VERSION_MINOR" ./deps/llhttp/include/llhttp.h | sed -n "s/^.*MINOR \(.*\)/\1/p") +CURRENT_PATCH_VERSION=$(grep "#define LLHTTP_VERSION_PATCH" ./deps/llhttp/include/llhttp.h | sed -n "s/^.*PATCH \(.*\)/\1/p") +CURRENT_VERSION="$CURRENT_MAJOR_VERSION.$CURRENT_MINOR_VERSION.$CURRENT_PATCH_VERSION" + +echo "Comparing $NEW_VERSION with $CURRENT_VERSION" + +if [ "$NEW_VERSION" = "$CURRENT_VERSION" ]; then + echo "Skipped because llhttp is on the latest version." + exit 0 +fi + +cleanup () { + EXIT_CODE=$? + [ -d "$WORKSPACE" ] && rm -rf "$WORKSPACE" + exit $EXIT_CODE +} + +echo "Making temporary workspace ..." +WORKSPACE=$(mktemp -d 2> /dev/null || mktemp -d -t 'tmp') +trap cleanup INT TERM EXIT + +cd "$WORKSPACE" + +if echo "$NEW_VERSION" | grep -qs "/" ; then # Download a release + REPO="git@github.com:$NEW_VERSION.git" + BRANCH=$2 + [ -z "$BRANCH" ] && BRANCH=main + + echo "Cloning llhttp source archive $REPO ..." + git clone "$REPO" llhttp + cd llhttp + echo "Checking out branch $BRANCH ..." + git checkout "$BRANCH" + + echo "Building llhtttp ..." + npm install + make release + + echo "Copying llhtttp release ..." + rm -rf "$DEPS_DIR/llhttp" + cp -a release "$DEPS_DIR/llhttp" +else + echo "Download llhttp release $NEW_VERSION ..." + curl -sL -o llhttp.tar.gz "https://github.com/nodejs/llhttp/archive/refs/tags/release/v$NEW_VERSION.tar.gz" + gzip -dc llhttp.tar.gz | tar xf - + + echo "Copying llhtttp release ..." + rm -rf "$DEPS_DIR/llhttp" + cp -a "llhttp-release-v$NEW_VERSION" "$DEPS_DIR/llhttp" +fi + +echo "" +echo "All done!" +echo "" +echo "Please git add llhttp, commit the new version:" +echo "" +echo "$ git add -A deps/llhttp" +echo "$ git commit -m \"deps: update llhttp to $NEW_VERSION\"" +echo "" + +# The last line of the script should always print the new version, +# as we need to add it to $GITHUB_ENV variable. +echo "NEW_VERSION=$NEW_VERSION" diff --git a/tools/update-llhttp.sh b/tools/update-llhttp.sh deleted file mode 100755 index 12772e18e23eb9..00000000000000 --- a/tools/update-llhttp.sh +++ /dev/null @@ -1,63 +0,0 @@ -#!/bin/sh -set -e - -# Shell script to update llhttp in the source tree to specific version - -BASE_DIR=$(cd "$(dirname "$0")/.." && pwd) -DEPS_DIR="${BASE_DIR}/deps" -LLHTTP_VERSION="$1" - -if [ "$#" -le 0 ]; then - echo "Error: Please provide an llhttp version to update to." - echo "Error: To download directly from GitHub, use the organization/repository syntax, without the .git suffix." - exit 1 -fi - -cleanup () { - EXIT_CODE=$? - [ -d "$WORKSPACE" ] && rm -rf "$WORKSPACE" - exit $EXIT_CODE -} - -echo "Making temporary workspace ..." -WORKSPACE=$(mktemp -d 2> /dev/null || mktemp -d -t 'tmp') -trap cleanup INT TERM EXIT - -cd "$WORKSPACE" - -if echo "$LLHTTP_VERSION" | grep -qs "/" ; then # Download a release - REPO="git@github.com:$LLHTTP_VERSION.git" - BRANCH=$2 - [ -z "$BRANCH" ] && BRANCH=main - - echo "Cloning llhttp source archive $REPO ..." - git clone "$REPO" llhttp - cd llhttp - echo "Checking out branch $BRANCH ..." - git checkout "$BRANCH" - - echo "Building llhtttp ..." - npm install - make release - - echo "Copying llhtttp release ..." - rm -rf "$DEPS_DIR/llhttp" - cp -a release "$DEPS_DIR/llhttp" -else - echo "Download llhttp release $LLHTTP_VERSION ..." - curl -sL -o llhttp.tar.gz "https://github.com/nodejs/llhttp/archive/refs/tags/release/v$LLHTTP_VERSION.tar.gz" - gzip -dc llhttp.tar.gz | tar xf - - - echo "Copying llhtttp release ..." - rm -rf "$DEPS_DIR/llhttp" - cp -a "llhttp-release-v$LLHTTP_VERSION" "$DEPS_DIR/llhttp" -fi - -echo "" -echo "All done!" -echo "" -echo "Please git add llhttp, commit the new version:" -echo "" -echo "$ git add -A deps/llhttp" -echo "$ git commit -m \"deps: update llhttp to $LLHTTP_VERSION\"" -echo "" From 6311de332223e855e7f1ce03b7c920f51f308e95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Nie=C3=9Fen?= Date: Sat, 25 Mar 2023 19:27:46 +0100 Subject: [PATCH 153/186] tools: upgrade Windows digital signature to SHA256 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit signtool still defaults to SHA1, which is vulnerable to certain collisions. This switches to SHA256, which is stronger and which also matches the hash function used by the signing certificate. Technically, `/fd certHash` would be a better choice, but I don't know if it is widely supported. PR-URL: https://github.com/nodejs/node/pull/47206 Reviewed-By: Michaël Zasso Reviewed-By: Luigi Pinca --- tools/sign.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/sign.bat b/tools/sign.bat index 82daaef575f3e8..fae06583b4923f 100644 --- a/tools/sign.bat +++ b/tools/sign.bat @@ -3,7 +3,7 @@ set timeservers=(http://timestamp.globalsign.com/scripts/timestamp.dll http://timestamp.comodoca.com/authenticode http://timestamp.verisign.com/scripts/timestamp.dll http://tsa.starfieldtech.com) for %%s in %timeservers% do ( - signtool sign /a /d "Node.js" /du "https://nodejs.org" /t %%s %1 + signtool sign /a /d "Node.js" /du "https://nodejs.org" /fd SHA256 /t %%s %1 if not ERRORLEVEL 1 ( echo Successfully signed %1 using timeserver %%s exit /b 0 From 106aa47639ef837cd20b4502be2cd06c04b6bfcf Mon Sep 17 00:00:00 2001 From: "Node.js GitHub Bot" Date: Sun, 26 Mar 2023 06:34:09 +0000 Subject: [PATCH 154/186] tools: update lint-md-dependencies to rollup@3.20.2 PR-URL: https://github.com/nodejs/node/pull/47255 Reviewed-By: Rich Trott Reviewed-By: Moshe Atlow --- tools/lint-md/package-lock.json | 20 ++++++++++---------- tools/lint-md/package.json | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/tools/lint-md/package-lock.json b/tools/lint-md/package-lock.json index ac70aa8b478932..c5d5039b6af444 100644 --- a/tools/lint-md/package-lock.json +++ b/tools/lint-md/package-lock.json @@ -18,7 +18,7 @@ "devDependencies": { "@rollup/plugin-commonjs": "^24.0.1", "@rollup/plugin-node-resolve": "^15.0.1", - "rollup": "^3.19.1", + "rollup": "^3.20.2", "rollup-plugin-cleanup": "^3.2.1" } }, @@ -130,9 +130,9 @@ } }, "node_modules/@types/mdast": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", - "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.11.tgz", + "integrity": "sha512-Y/uImid8aAwrEA24/1tcRZwpxX3pIFTSilcNDKSPn+Y2iDywSEachzRuvgAYYLR3wpGXAsMbv5lvKLDZLeYPAw==", "dependencies": { "@types/unist": "*" } @@ -268,9 +268,9 @@ } }, "node_modules/deepmerge": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz", - "integrity": "sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true, "engines": { "node": ">=0.10.0" @@ -2232,9 +2232,9 @@ } }, "node_modules/rollup": { - "version": "3.19.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.19.1.tgz", - "integrity": "sha512-lAbrdN7neYCg/8WaoWn/ckzCtz+jr70GFfYdlf50OF7387HTg+wiuiqJRFYawwSPpqfqDNYqK7smY/ks2iAudg==", + "version": "3.20.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.20.2.tgz", + "integrity": "sha512-3zwkBQl7Ai7MFYQE0y1MeQ15+9jsi7XxfrqwTb/9EK8D9C9+//EBR4M+CuA1KODRaNbFez/lWxA5vhEGZp4MUg==", "dev": true, "bin": { "rollup": "dist/bin/rollup" diff --git a/tools/lint-md/package.json b/tools/lint-md/package.json index 5768c7715c73ac..f973bf335b6a3c 100644 --- a/tools/lint-md/package.json +++ b/tools/lint-md/package.json @@ -16,7 +16,7 @@ "devDependencies": { "@rollup/plugin-commonjs": "^24.0.1", "@rollup/plugin-node-resolve": "^15.0.1", - "rollup": "^3.19.1", + "rollup": "^3.20.2", "rollup-plugin-cleanup": "^3.2.1" } } From 9374700d7a69f1a96af88a74737874d8e726fce3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Nie=C3=9Fen?= Date: Sun, 26 Mar 2023 20:03:58 +0200 Subject: [PATCH 155/186] crypto: remove DEFAULT_ENCODING MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Citing 76b0bdf7207b275ec2e0de7c71ea333be8b38c70 from 2012, "only use this as a temporary measure." Getting or setting DEFAULT_ENCODING has emitted a warning ever since Node.js 10, so it seems appropriate to remove it in Node.js 20 five years later. The last Node.js version that did not emit a warning reached its end-of-life status at the end of 2019. This commit only removes the public API so that the change can land in time for Node.js 20. Refs: https://github.com/nodejs/node-v0.x-archive/pull/4179 Refs: https://github.com/nodejs/node/pull/18333 PR-URL: https://github.com/nodejs/node/pull/47182 Reviewed-By: Ben Noordhuis Reviewed-By: Michaël Zasso Reviewed-By: Filip Skokan Reviewed-By: Luigi Pinca Reviewed-By: Beth Griggs Reviewed-By: Erick Wendel Reviewed-By: Rafael Gonzaga --- doc/api/crypto.md | 20 - doc/api/deprecations.md | 9 +- lib/crypto.js | 11 - lib/internal/crypto/util.js | 10 +- test/parallel/test-crypto-authenticated.js | 3 - test/parallel/test-crypto-binary-default.js | 723 -------------------- test/parallel/test-crypto-scrypt.js | 17 - 7 files changed, 8 insertions(+), 785 deletions(-) delete mode 100644 test/parallel/test-crypto-binary-default.js diff --git a/doc/api/crypto.md b/doc/api/crypto.md index 5de4a76365ddad..7fd9e1d2fd7f64 100644 --- a/doc/api/crypto.md +++ b/doc/api/crypto.md @@ -2878,26 +2878,6 @@ An object containing commonly used constants for crypto and security related operations. The specific constants currently defined are described in [Crypto constants][]. -### `crypto.DEFAULT_ENCODING` - - - -> Stability: 0 - Deprecated - -The default encoding to use for functions that can take either strings -or [buffers][`Buffer`]. The default value is `'buffer'`, which makes methods -default to [`Buffer`][] objects. - -The `crypto.DEFAULT_ENCODING` mechanism is provided for backward compatibility -with legacy programs that expect `'latin1'` to be the default encoding. - -New applications should expect the default to be `'buffer'`. - -This property is deprecated. - ### `crypto.fips` -Type: Runtime +Type: End-of-Life -The [`crypto.DEFAULT_ENCODING`][] property is deprecated. +The `crypto.DEFAULT_ENCODING` property only existed for compatibility with +Node.js releases prior to versions 0.9.3 and has been removed. ### DEP0092: Top-level `this` bound to `module.exports` @@ -3388,7 +3392,6 @@ be added when a function is bound to an `AsyncResource`. [`console.error()`]: console.md#consoleerrordata-args [`console.log()`]: console.md#consolelogdata-args [`crypto.Certificate()` constructor]: crypto.md#legacy-api -[`crypto.DEFAULT_ENCODING`]: crypto.md#cryptodefault_encoding [`crypto.createCipher()`]: crypto.md#cryptocreatecipheralgorithm-password-options [`crypto.createCipheriv()`]: crypto.md#cryptocreatecipherivalgorithm-key-iv-options [`crypto.createDecipher()`]: crypto.md#cryptocreatedecipheralgorithm-password-options diff --git a/lib/crypto.js b/lib/crypto.js index 86035aea6e89a5..41adecc97c2527 100644 --- a/lib/crypto.js +++ b/lib/crypto.js @@ -114,9 +114,7 @@ const { const { getCiphers, getCurves, - getDefaultEncoding, getHashes, - setDefaultEncoding, setEngine, secureHeapUsed, } = require('internal/crypto/util'); @@ -356,15 +354,6 @@ ObjectDefineProperties(module.exports, { get: getFips, set: setFips, }, - DEFAULT_ENCODING: { - __proto__: null, - enumerable: false, - configurable: true, - get: deprecate(getDefaultEncoding, - 'crypto.DEFAULT_ENCODING is deprecated.', 'DEP0091'), - set: deprecate(setDefaultEncoding, - 'crypto.DEFAULT_ENCODING is deprecated.', 'DEP0091'), - }, constants: { __proto__: null, configurable: false, diff --git a/lib/internal/crypto/util.js b/lib/internal/crypto/util.js index 835ab26165683c..8838226c591785 100644 --- a/lib/internal/crypto/util.js +++ b/lib/internal/crypto/util.js @@ -74,14 +74,9 @@ const { const kHandle = Symbol('kHandle'); const kKeyObject = Symbol('kKeyObject'); -let defaultEncoding = 'buffer'; - -function setDefaultEncoding(val) { - defaultEncoding = val; -} - +// TODO(tniessen): remove all call sites and this function function getDefaultEncoding() { - return defaultEncoding; + return 'buffer'; } // This is here because many functions accepted binary strings without @@ -561,7 +556,6 @@ module.exports = { getHashes, kHandle, kKeyObject, - setDefaultEncoding, setEngine, toBuf, diff --git a/test/parallel/test-crypto-authenticated.js b/test/parallel/test-crypto-authenticated.js index d358f6b63c0e9f..6178445adbc634 100644 --- a/test/parallel/test-crypto-authenticated.js +++ b/test/parallel/test-crypto-authenticated.js @@ -29,8 +29,6 @@ const crypto = require('crypto'); const { inspect } = require('util'); const fixtures = require('../common/fixtures'); -crypto.DEFAULT_ENCODING = 'buffer'; - // // Test authenticated encryption modes. // @@ -74,7 +72,6 @@ const expectedWarnings = common.hasFipsCrypto ? ]; const expectedDeprecationWarnings = [ - ['crypto.DEFAULT_ENCODING is deprecated.', 'DEP0091'], ['crypto.createCipher is deprecated.', 'DEP0106'], ]; diff --git a/test/parallel/test-crypto-binary-default.js b/test/parallel/test-crypto-binary-default.js deleted file mode 100644 index 3bbca5b0da395b..00000000000000 --- a/test/parallel/test-crypto-binary-default.js +++ /dev/null @@ -1,723 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -'use strict'; -// Flags: --expose-internals - -// This is the same as test/simple/test-crypto, but from before the shift -// to use buffers by default. - - -const common = require('../common'); - -if (!common.hasCrypto) - common.skip('missing crypto'); - -const assert = require('assert'); -const crypto = require('crypto'); -const fs = require('fs'); -const tls = require('tls'); -const fixtures = require('../common/fixtures'); - -require('internal/crypto/util').setDefaultEncoding('latin1'); - -// Test Certificates -const certPem = fixtures.readKey('rsa_cert.crt'); -const certPfx = fixtures.readKey('rsa_cert.pfx'); -const keyPem = fixtures.readKey('rsa_private.pem'); -const rsaPubPem = fixtures.readKey('rsa_public.pem', 'ascii'); -const rsaKeyPem = fixtures.readKey('rsa_private.pem', 'ascii'); - -// PFX tests -tls.createSecureContext({ pfx: certPfx, passphrase: 'sample' }); - -assert.throws(function() { - tls.createSecureContext({ pfx: certPfx }); -}, /^Error: mac verify failure$/); - -assert.throws(function() { - tls.createSecureContext({ pfx: certPfx, passphrase: 'test' }); -}, /^Error: mac verify failure$/); - -assert.throws(function() { - tls.createSecureContext({ pfx: 'sample', passphrase: 'test' }); -}, /^Error: not enough data$/); - -// Test HMAC -{ - const hmacHash = crypto.createHmac('sha1', 'Node') - .update('some data') - .update('to hmac') - .digest('hex'); - assert.strictEqual(hmacHash, '19fd6e1ba73d9ed2224dd5094a71babe85d9a892'); -} - -// Test HMAC-SHA-* (rfc 4231 Test Cases) -{ - const rfc4231 = [ - { - key: Buffer.from('0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b', 'hex'), - data: Buffer.from('4869205468657265', 'hex'), // 'Hi There' - hmac: { - sha224: '896fb1128abbdf196832107cd49df33f47b4b1169912ba4f53684b22', - sha256: - 'b0344c61d8db38535ca8afceaf0bf12b881dc200c9833da726e9376c' + - '2e32cff7', - sha384: - 'afd03944d84895626b0825f4ab46907f15f9dadbe4101ec682aa034c' + - '7cebc59cfaea9ea9076ede7f4af152e8b2fa9cb6', - sha512: - '87aa7cdea5ef619d4ff0b4241a1d6cb02379f4e2ce4ec2787ad0b305' + - '45e17cdedaa833b7d6b8a702038b274eaea3f4e4be9d914eeb61f170' + - '2e696c203a126854' - } - }, - { - key: Buffer.from('4a656665', 'hex'), // 'Jefe' - data: Buffer.from('7768617420646f2079612077616e7420666f72206e6f74686' + - '96e673f', 'hex'), // 'what do ya want for nothing?' - hmac: { - sha224: 'a30e01098bc6dbbf45690f3a7e9e6d0f8bbea2a39e6148008fd05e44', - sha256: - '5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b9' + - '64ec3843', - sha384: - 'af45d2e376484031617f78d2b58a6b1b9c7ef464f5a01b47e42ec373' + - '6322445e8e2240ca5e69e2c78b3239ecfab21649', - sha512: - '164b7a7bfcf819e2e395fbe73b56e0a387bd64222e831fd610270cd7' + - 'ea2505549758bf75c05a994a6d034f65f8f0e6fdcaeab1a34d4a6b4b' + - '636e070a38bce737' - } - }, - { - key: Buffer.from('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'hex'), - data: Buffer.from('ddddddddddddddddddddddddddddddddddddddddddddddddd' + - 'ddddddddddddddddddddddddddddddddddddddddddddddddddd', - 'hex'), - hmac: { - sha224: '7fb3cb3588c6c1f6ffa9694d7d6ad2649365b0c1f65d69d1ec8333ea', - sha256: - '773ea91e36800e46854db8ebd09181a72959098b3ef8c122d9635514' + - 'ced565fe', - sha384: - '88062608d3e6ad8a0aa2ace014c8a86f0aa635d947ac9febe83ef4e5' + - '5966144b2a5ab39dc13814b94e3ab6e101a34f27', - sha512: - 'fa73b0089d56a284efb0f0756c890be9b1b5dbdd8ee81a3655f83e33' + - 'b2279d39bf3e848279a722c806b485a47e67c807b946a337bee89426' + - '74278859e13292fb' - } - }, - { - key: Buffer.from('0102030405060708090a0b0c0d0e0f10111213141516171819', - 'hex'), - data: Buffer.from('cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdc' + - 'dcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd', - 'hex'), - hmac: { - sha224: '6c11506874013cac6a2abc1bb382627cec6a90d86efc012de7afec5a', - sha256: - '82558a389a443c0ea4cc819899f2083a85f0faa3e578f8077a2e3ff4' + - '6729665b', - sha384: - '3e8a69b7783c25851933ab6290af6ca77a9981480850009cc5577c6e' + - '1f573b4e6801dd23c4a7d679ccf8a386c674cffb', - sha512: - 'b0ba465637458c6990e5a8c5f61d4af7e576d97ff94b872de76f8050' + - '361ee3dba91ca5c11aa25eb4d679275cc5788063a5f19741120c4f2d' + - 'e2adebeb10a298dd' - } - }, - { - key: Buffer.from('0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c', 'hex'), - // 'Test With Truncation' - data: Buffer.from('546573742057697468205472756e636174696f6e', 'hex'), - hmac: { - sha224: '0e2aea68a90c8d37c988bcdb9fca6fa8', - sha256: 'a3b6167473100ee06e0c796c2955552b', - sha384: '3abf34c3503b2a23a46efc619baef897', - sha512: '415fad6271580a531d4179bc891d87a6' - }, - truncate: true - }, - { - key: Buffer.from('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' + - 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' + - 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' + - 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' + - 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' + - 'aaaaaaaaaaaa', 'hex'), - // 'Test Using Larger Than Block-Size Key - Hash Key First' - data: Buffer.from('54657374205573696e67204c6172676572205468616e20426' + - 'c6f636b2d53697a65204b6579202d2048617368204b657920' + - '4669727374', 'hex'), - hmac: { - sha224: '95e9a0db962095adaebe9b2d6f0dbce2d499f112f2d2b7273fa6870e', - sha256: - '60e431591ee0b67f0d8a26aacbf5b77f8e0bc6213728c5140546040f' + - '0ee37f54', - sha384: - '4ece084485813e9088d2c63a041bc5b44f9ef1012a2b588f3cd11f05' + - '033ac4c60c2ef6ab4030fe8296248df163f44952', - sha512: - '80b24263c7c1a3ebb71493c1dd7be8b49b46d1f41b4aeec1121b0137' + - '83f8f3526b56d037e05f2598bd0fd2215d6a1e5295e64f73f63f0aec' + - '8b915a985d786598' - } - }, - { - key: Buffer.from('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' + - 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' + - 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' + - 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' + - 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' + - 'aaaaaaaaaaaa', 'hex'), - // 'This is a test using a larger than block-size key and a larger ' + - // 'than block-size data. The key needs to be hashed before being ' + - // 'used by the HMAC algorithm.' - data: Buffer.from('5468697320697320612074657374207573696e672061206c6' + - '172676572207468616e20626c6f636b2d73697a65206b6579' + - '20616e642061206c6172676572207468616e20626c6f636b2' + - 'd73697a6520646174612e20546865206b6579206e65656473' + - '20746f20626520686173686564206265666f7265206265696' + - 'e6720757365642062792074686520484d414320616c676f72' + - '6974686d2e', 'hex'), - hmac: { - sha224: '3a854166ac5d9f023f54d517d0b39dbd946770db9c2b95c9f6f565d1', - sha256: - '9b09ffa71b942fcb27635fbcd5b0e944bfdc63644f0713938a7f5153' + - '5c3a35e2', - sha384: - '6617178e941f020d351e2f254e8fd32c602420feb0b8fb9adccebb82' + - '461e99c5a678cc31e799176d3860e6110c46523e', - sha512: - 'e37b6a775dc87dbaa4dfa9f96e5e3ffddebd71f8867289865df5a32d' + - '20cdc944b6022cac3c4982b10d5eeb55c3e4de15134676fb6de04460' + - '65c97440fa8c6a58' - } - }, - ]; - - for (const testCase of rfc4231) { - for (const hash in testCase.hmac) { - let result = crypto.createHmac(hash, testCase.key) - .update(testCase.data) - .digest('hex'); - if (testCase.truncate) { - result = result.substr(0, 32); // first 128 bits == 32 hex chars - } - assert.strictEqual( - testCase.hmac[hash], - result - ); - } - } -} - -// Test HMAC-MD5/SHA1 (rfc 2202 Test Cases) -{ - const rfc2202_md5 = [ - { - key: Buffer.from('0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b', 'hex'), - data: 'Hi There', - hmac: '9294727a3638bb1c13f48ef8158bfc9d' - }, - { - key: 'Jefe', - data: 'what do ya want for nothing?', - hmac: '750c783e6ab0b503eaa86e310a5db738' - }, - { - key: Buffer.from('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'hex'), - data: Buffer.from('ddddddddddddddddddddddddddddddddddddddddddddddddd' + - 'ddddddddddddddddddddddddddddddddddddddddddddddddddd', - 'hex'), - hmac: '56be34521d144c88dbb8c733f0e8b3f6' - }, - { - key: Buffer.from('0102030405060708090a0b0c0d0e0f10111213141516171819', - 'hex'), - data: Buffer.from('cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdc' + - 'dcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd' + - 'cdcdcdcdcd', - 'hex'), - hmac: '697eaf0aca3a3aea3a75164746ffaa79' - }, - { - key: Buffer.from('0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c', 'hex'), - data: 'Test With Truncation', - hmac: '56461ef2342edc00f9bab995690efd4c' - }, - { - key: Buffer.from('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' + - 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' + - 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' + - 'aaaaaaaaaaaaaaaaaaaaaa', - 'hex'), - data: 'Test Using Larger Than Block-Size Key - Hash Key First', - hmac: '6b1ab7fe4bd7bf8f0b62e6ce61b9d0cd' - }, - { - key: Buffer.from('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' + - 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' + - 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' + - 'aaaaaaaaaaaaaaaaaaaaaa', - 'hex'), - data: - 'Test Using Larger Than Block-Size Key and Larger Than One ' + - 'Block-Size Data', - hmac: '6f630fad67cda0ee1fb1f562db3aa53e' - }, - ]; - const rfc2202_sha1 = [ - { - key: Buffer.from('0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b', 'hex'), - data: 'Hi There', - hmac: 'b617318655057264e28bc0b6fb378c8ef146be00' - }, - { - key: 'Jefe', - data: 'what do ya want for nothing?', - hmac: 'effcdf6ae5eb2fa2d27416d5f184df9c259a7c79' - }, - { - key: Buffer.from('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'hex'), - data: Buffer.from('ddddddddddddddddddddddddddddddddddddddddddddd' + - 'ddddddddddddddddddddddddddddddddddddddddddddd' + - 'dddddddddd', - 'hex'), - hmac: '125d7342b9ac11cd91a39af48aa17b4f63f175d3' - }, - { - key: Buffer.from('0102030405060708090a0b0c0d0e0f10111213141516171819', - 'hex'), - data: Buffer.from('cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdc' + - 'dcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd' + - 'cdcdcdcdcd', - 'hex'), - hmac: '4c9007f4026250c6bc8414f9bf50c86c2d7235da' - }, - { - key: Buffer.from('0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c', 'hex'), - data: 'Test With Truncation', - hmac: '4c1a03424b55e07fe7f27be1d58bb9324a9a5a04' - }, - { - key: Buffer.from('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' + - 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' + - 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' + - 'aaaaaaaaaaaaaaaaaaaaaa', - 'hex'), - data: 'Test Using Larger Than Block-Size Key - Hash Key First', - hmac: 'aa4ae5e15272d00e95705637ce8a3b55ed402112' - }, - { - key: Buffer.from('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' + - 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' + - 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' + - 'aaaaaaaaaaaaaaaaaaaaaa', - 'hex'), - data: - 'Test Using Larger Than Block-Size Key and Larger Than One ' + - 'Block-Size Data', - hmac: 'e8e99d0f45237d786d6bbaa7965c7808bbff1a91' - }, - ]; - - if (!common.hasFipsCrypto) { - for (const testCase of rfc2202_md5) { - assert.strictEqual( - testCase.hmac, - crypto.createHmac('md5', testCase.key) - .update(testCase.data) - .digest('hex') - ); - } - } - for (const testCase of rfc2202_sha1) { - assert.strictEqual( - testCase.hmac, - crypto.createHmac('sha1', testCase.key) - .update(testCase.data) - .digest('hex') - ); - } -} - -// Test hashing -{ - const a1 = crypto.createHash('sha1').update('Test123').digest('hex'); - const a2 = crypto.createHash('sha256').update('Test123').digest('base64'); - const a3 = crypto.createHash('sha512').update('Test123').digest(); // binary - const a4 = crypto.createHash('sha1').update('Test123').digest('buffer'); - - if (!common.hasFipsCrypto) { - const a0 = crypto.createHash('md5').update('Test123').digest('latin1'); - assert.strictEqual( - a0, - 'h\u00ea\u00cb\u0097\u00d8o\fF!\u00fa+\u000e\u0017\u00ca\u00bd\u008c' - ); - } - - assert.strictEqual(a1, '8308651804facb7b9af8ffc53a33a22d6a1c8ac2'); - - assert.strictEqual(a2, '2bX1jws4GYKTlxhloUB09Z66PoJZW+y+hq5R8dnx9l4='); - - // Test SHA512 as assumed latin1 - assert.strictEqual( - a3, - '\u00c1(4\u00f1\u0003\u001fd\u0097!O\'\u00d4C/&Qz\u00d4' + - '\u0094\u0015l\u00b8\u008dQ+\u00db\u001d\u00c4\u00b5}\u00b2' + - '\u00d6\u0092\u00a3\u00df\u00a2i\u00a1\u009b\n\n*\u000f' + - '\u00d7\u00d6\u00a2\u00a8\u0085\u00e3<\u0083\u009c\u0093' + - '\u00c2\u0006\u00da0\u00a1\u00879(G\u00ed\'' - ); - - assert.deepStrictEqual( - a4, - Buffer.from('8308651804facb7b9af8ffc53a33a22d6a1c8ac2', 'hex') - ); -} - -// Test multiple updates to same hash -{ - const h1 = crypto.createHash('sha1').update('Test123').digest('hex'); - const h2 = crypto.createHash('sha1').update('Test').update('123') - .digest('hex'); - assert.strictEqual(h1, h2); -} - -// Test hashing for binary files -{ - const fn = fixtures.path('sample.png'); - const sha1Hash = crypto.createHash('sha1'); - const fileStream = fs.createReadStream(fn); - fileStream.on('data', function(data) { - sha1Hash.update(data); - }); - fileStream.on('close', common.mustCall(function() { - assert.strictEqual( - sha1Hash.digest('hex'), - '22723e553129a336ad96e10f6aecdf0f45e4149e' - ); - })); -} - -// Unknown digest method should throw an error: -// https://github.com/nodejs/node-v0.x-archive/issues/2227 -assert.throws(function() { - crypto.createHash('xyzzy'); -}, /^Error: Digest method not supported$/); - -// Test signing and verifying -{ - const s1 = crypto.createSign('SHA1') - .update('Test123') - .sign(keyPem, 'base64'); - const s1Verified = crypto.createVerify('SHA1') - .update('Test') - .update('123') - .verify(certPem, s1, 'base64'); - assert.strictEqual(s1Verified, true); - - const s2 = crypto.createSign('SHA256') - .update('Test123') - .sign(keyPem); // binary - const s2Verified = crypto.createVerify('SHA256') - .update('Test') - .update('123') - .verify(certPem, s2); // binary - assert.strictEqual(s2Verified, true); - - const s3 = crypto.createSign('SHA1') - .update('Test123') - .sign(keyPem, 'buffer'); - const s3Verified = crypto.createVerify('SHA1') - .update('Test') - .update('123') - .verify(certPem, s3); - assert.strictEqual(s3Verified, true); -} - - -function testCipher1(key) { - // Test encryption and decryption - const plaintext = 'Keep this a secret? No! Tell everyone about node.js!'; - const cipher = crypto.createCipher('aes192', key); - - // Encrypt plaintext which is in utf8 format - // to a ciphertext which will be in hex - let ciph = cipher.update(plaintext, 'utf8', 'hex'); - // Only use binary or hex, not base64. - ciph += cipher.final('hex'); - - const decipher = crypto.createDecipher('aes192', key); - let txt = decipher.update(ciph, 'hex', 'utf8'); - txt += decipher.final('utf8'); - - assert.strictEqual(txt, plaintext); -} - - -function testCipher2(key) { - // Encryption and decryption with Base64. - // Reported in https://github.com/joyent/node/issues/738 - const plaintext = - '32|RmVZZkFUVmpRRkp0TmJaUm56ZU9qcnJkaXNNWVNpTTU*|iXmckfRWZBGWWELw' + - 'eCBsThSsfUHLeRe0KCsK8ooHgxie0zOINpXxfZi/oNG7uq9JWFVCk70gfzQH8ZUJ' + - 'jAfaFg**'; - const cipher = crypto.createCipher('aes256', key); - - // Encrypt plaintext which is in utf8 format - // to a ciphertext which will be in Base64 - let ciph = cipher.update(plaintext, 'utf8', 'base64'); - ciph += cipher.final('base64'); - - const decipher = crypto.createDecipher('aes256', key); - let txt = decipher.update(ciph, 'base64', 'utf8'); - txt += decipher.final('utf8'); - - assert.strictEqual(txt, plaintext); -} - - -function testCipher3(key, iv) { - // Test encryption and decryption with explicit key and iv - const plaintext = - '32|RmVZZkFUVmpRRkp0TmJaUm56ZU9qcnJkaXNNWVNpTTU*|iXmckfRWZBGWWELw' + - 'eCBsThSsfUHLeRe0KCsK8ooHgxie0zOINpXxfZi/oNG7uq9JWFVCk70gfzQH8ZUJ' + - 'jAfaFg**'; - const cipher = crypto.createCipheriv('des-ede3-cbc', key, iv); - let ciph = cipher.update(plaintext, 'utf8', 'hex'); - ciph += cipher.final('hex'); - - const decipher = crypto.createDecipheriv('des-ede3-cbc', key, iv); - let txt = decipher.update(ciph, 'hex', 'utf8'); - txt += decipher.final('utf8'); - - assert.strictEqual(txt, plaintext); -} - - -function testCipher4(key, iv) { - // Test encryption and decryption with explicit key and iv - const plaintext = - '32|RmVZZkFUVmpRRkp0TmJaUm56ZU9qcnJkaXNNWVNpTTU*|iXmckfRWZBGWWELw' + - 'eCBsThSsfUHLeRe0KCsK8ooHgxie0zOINpXxfZi/oNG7uq9JWFVCk70gfzQH8ZUJ' + - 'jAfaFg**'; - const cipher = crypto.createCipheriv('des-ede3-cbc', key, iv); - let ciph = cipher.update(plaintext, 'utf8', 'buffer'); - ciph = Buffer.concat([ciph, cipher.final('buffer')]); - - const decipher = crypto.createDecipheriv('des-ede3-cbc', key, iv); - let txt = decipher.update(ciph, 'buffer', 'utf8'); - txt += decipher.final('utf8'); - - assert.strictEqual(txt, plaintext); -} - - -function testCipher5(key, iv) { - // Test encryption and decryption with explicit key with aes128-wrap - const plaintext = - '32|RmVZZkFUVmpRRkp0TmJaUm56ZU9qcnJkaXNNWVNpTTU*|iXmckfRWZBGWWELw' + - 'eCBsThSsfUHLeRe0KCsK8ooHgxie0zOINpXxfZi/oNG7uq9JWFVCk70gfzQH8ZUJ' + - 'jAfaFg**'; - const cipher = crypto.createCipher('id-aes128-wrap', key); - let ciph = cipher.update(plaintext, 'utf8', 'buffer'); - ciph = Buffer.concat([ciph, cipher.final('buffer')]); - - const decipher = crypto.createDecipher('id-aes128-wrap', key); - let txt = decipher.update(ciph, 'buffer', 'utf8'); - txt += decipher.final('utf8'); - - assert.strictEqual(txt, plaintext); -} - -if (!common.hasFipsCrypto) { - testCipher1('MySecretKey123'); - testCipher1(Buffer.from('MySecretKey123')); - - testCipher2('0123456789abcdef'); - testCipher2(Buffer.from('0123456789abcdef')); - - testCipher5(Buffer.from('0123456789abcd0123456789')); -} - -testCipher3('0123456789abcd0123456789', '12345678'); -testCipher3('0123456789abcd0123456789', Buffer.from('12345678')); -testCipher3(Buffer.from('0123456789abcd0123456789'), '12345678'); -testCipher3(Buffer.from('0123456789abcd0123456789'), Buffer.from('12345678')); - -testCipher4(Buffer.from('0123456789abcd0123456789'), Buffer.from('12345678')); - - -// update() should only take buffers / strings -assert.throws( - () => crypto.createHash('sha1').update({ foo: 'bar' }), - { - code: 'ERR_INVALID_ARG_TYPE', - name: 'TypeError' - }); - - -// Test Diffie-Hellman with two parties sharing a secret, -// using various encodings as we go along -{ - const size = common.hasFipsCrypto || common.hasOpenSSL3 ? 1024 : 256; - const dh1 = crypto.createDiffieHellman(size); - const p1 = dh1.getPrime('buffer'); - const dh2 = crypto.createDiffieHellman(p1, 'base64'); - const key1 = dh1.generateKeys(); - const key2 = dh2.generateKeys('hex'); - const secret1 = dh1.computeSecret(key2, 'hex', 'base64'); - const secret2 = dh2.computeSecret(key1, 'latin1', 'buffer'); - - assert.strictEqual(secret1, secret2.toString('base64')); - - // Create "another dh1" using generated keys from dh1, - // and compute secret again - const dh3 = crypto.createDiffieHellman(p1, 'buffer'); - const privkey1 = dh1.getPrivateKey(); - dh3.setPublicKey(key1); - dh3.setPrivateKey(privkey1); - - assert.strictEqual(dh1.getPrime(), dh3.getPrime()); - assert.strictEqual(dh1.getGenerator(), dh3.getGenerator()); - assert.strictEqual(dh1.getPublicKey(), dh3.getPublicKey()); - assert.strictEqual(dh1.getPrivateKey(), dh3.getPrivateKey()); - - const secret3 = dh3.computeSecret(key2, 'hex', 'base64'); - - assert.strictEqual(secret1, secret3); - - // https://github.com/joyent/node/issues/2338 - const p = 'FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74' + - '020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F1437' + - '4FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED' + - 'EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE65381FFFFFFFFFFFFFFFF'; - crypto.createDiffieHellman(p, 'hex'); - - // Test RSA key signing/verification - const rsaSign = crypto.createSign('SHA1'); - const rsaVerify = crypto.createVerify('SHA1'); - assert.ok(rsaSign instanceof crypto.Sign); - assert.ok(rsaVerify instanceof crypto.Verify); - - rsaSign.update(rsaPubPem); - const rsaSignature = rsaSign.sign(rsaKeyPem, 'hex'); - const expectedSignature = fixtures.readKey( - 'rsa_public_sha1_signature_signedby_rsa_private.sha1', - 'hex' - ); - assert.strictEqual(rsaSignature, expectedSignature); - - rsaVerify.update(rsaPubPem); - assert.strictEqual(rsaVerify.verify(rsaPubPem, rsaSignature, 'hex'), true); -} - -// -// Test RSA signing and verification -// -{ - const privateKey = fixtures.readKey('rsa_private_b.pem'); - const publicKey = fixtures.readKey('rsa_public_b.pem'); - - const input = 'I AM THE WALRUS'; - - const signature = fixtures.readKey( - 'I_AM_THE_WALRUS_sha256_signature_signedby_rsa_private_b.sha256', - 'hex' - ); - - const sign = crypto.createSign('SHA256'); - sign.update(input); - - const output = sign.sign(privateKey, 'hex'); - assert.strictEqual(output, signature); - - const verify = crypto.createVerify('SHA256'); - verify.update(input); - - assert.strictEqual(verify.verify(publicKey, signature, 'hex'), true); -} - - -// -// Test DSA signing and verification -// -{ - const privateKey = fixtures.readKey('dsa_private.pem'); - const publicKey = fixtures.readKey('dsa_public.pem'); - - const input = 'I AM THE WALRUS'; - - // DSA signatures vary across runs so there is no static string to verify - // against - const sign = crypto.createSign('SHA1'); - sign.update(input); - const signature = sign.sign(privateKey, 'hex'); - - const verify = crypto.createVerify('SHA1'); - verify.update(input); - - assert.strictEqual(verify.verify(publicKey, signature, 'hex'), true); -} - - -// -// Test PBKDF2 with RFC 6070 test vectors (except #4) -// -function testPBKDF2(password, salt, iterations, keylen, expected) { - const actual = crypto.pbkdf2Sync(password, salt, iterations, keylen, - 'sha256'); - assert.strictEqual(actual, expected); - - const cb = common.mustCall((err, actual) => { - assert.strictEqual(actual, expected); - }); - crypto.pbkdf2(password, salt, iterations, keylen, 'sha256', cb); -} - - -testPBKDF2('password', 'salt', 1, 20, - '\x12\x0f\xb6\xcf\xfc\xf8\xb3\x2c\x43\xe7\x22\x52' + - '\x56\xc4\xf8\x37\xa8\x65\x48\xc9'); - -testPBKDF2('password', 'salt', 2, 20, - '\xae\x4d\x0c\x95\xaf\x6b\x46\xd3\x2d\x0a\xdf\xf9' + - '\x28\xf0\x6d\xd0\x2a\x30\x3f\x8e'); - -testPBKDF2('password', 'salt', 4096, 20, - '\xc5\xe4\x78\xd5\x92\x88\xc8\x41\xaa\x53\x0d\xb6' + - '\x84\x5c\x4c\x8d\x96\x28\x93\xa0'); - -testPBKDF2('passwordPASSWORDpassword', - 'saltSALTsaltSALTsaltSALTsaltSALTsalt', - 4096, - 25, - '\x34\x8c\x89\xdb\xcb\xd3\x2b\x2f\x32\xd8\x14\xb8' + - '\x11\x6e\x84\xcf\x2b\x17\x34\x7e\xbc\x18\x00\x18\x1c'); - -testPBKDF2('pass\0word', 'sa\0lt', 4096, 16, - '\x89\xb6\x9d\x05\x16\xf8\x29\x89\x3c\x69\x62\x26' + - '\x65\x0a\x86\x87'); diff --git a/test/parallel/test-crypto-scrypt.js b/test/parallel/test-crypto-scrypt.js index 9e5e46164fb05c..63656e056f195a 100644 --- a/test/parallel/test-crypto-scrypt.js +++ b/test/parallel/test-crypto-scrypt.js @@ -188,23 +188,6 @@ for (const options of toobig) { })); } -{ - const defaultEncoding = crypto.DEFAULT_ENCODING; - const defaults = { N: 16384, p: 1, r: 8 }; - const expected = crypto.scryptSync('pass', 'salt', 1, defaults); - - const testEncoding = 'latin1'; - crypto.DEFAULT_ENCODING = testEncoding; - const actual = crypto.scryptSync('pass', 'salt', 1); - assert.deepStrictEqual(actual, expected.toString(testEncoding)); - - crypto.scrypt('pass', 'salt', 1, common.mustSucceed((actual) => { - assert.deepStrictEqual(actual, expected.toString(testEncoding)); - })); - - crypto.DEFAULT_ENCODING = defaultEncoding; -} - for (const { args, expected } of badargs) { assert.throws(() => crypto.scrypt(...args), expected); assert.throws(() => crypto.scryptSync(...args), expected); From f0ade7084dffc0bfc94e4fa8b54c43acd7103e89 Mon Sep 17 00:00:00 2001 From: Zach Bjornson Date: Sun, 26 Mar 2023 13:30:05 -0700 Subject: [PATCH 156/186] doc: clarify http error events after calling destroy() PR-URL: https://github.com/nodejs/node/pull/46903 Reviewed-By: Paolo Insogna Reviewed-By: Matteo Collina Reviewed-By: Luigi Pinca --- doc/api/http.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/doc/api/http.md b/doc/api/http.md index 0ca0eb4cade661..3b74f736d30bdf 100644 --- a/doc/api/http.md +++ b/doc/api/http.md @@ -3654,7 +3654,7 @@ the following events will be emitted in the following order: * (connection closed here) * `'aborted'` on the `res` object * `'error'` on the `res` object with an error with message - `'Error: aborted'` and code `'ECONNRESET'`. + `'Error: aborted'` and code `'ECONNRESET'` * `'close'` * `'close'` on the `res` object @@ -3663,7 +3663,7 @@ events will be emitted in the following order: * (`req.destroy()` called here) * `'error'` with an error with message `'Error: socket hang up'` and code - `'ECONNRESET'` + `'ECONNRESET'`, or the error with which `req.destroy()` was called * `'close'` If `req.destroy()` is called before the connection succeeds, the following @@ -3672,7 +3672,7 @@ events will be emitted in the following order: * `'socket'` * (`req.destroy()` called here) * `'error'` with an error with message `'Error: socket hang up'` and code - `'ECONNRESET'` + `'ECONNRESET'`, or the error with which `req.destroy()` was called * `'close'` If `req.destroy()` is called after the response is received, the following @@ -3683,8 +3683,8 @@ events will be emitted in the following order: * `'data'` any number of times, on the `res` object * (`req.destroy()` called here) * `'aborted'` on the `res` object -* `'error'` on the `res` object with an error with message - `'Error: aborted'` and code `'ECONNRESET'`. +* `'error'` on the `res` object with an error with message `'Error: aborted'` + and code `'ECONNRESET'`, or the error with which `req.destroy()` was called * `'close'` * `'close'` on the `res` object @@ -3722,9 +3722,11 @@ events will be emitted in the following order: Setting the `timeout` option or using the `setTimeout()` function will not abort the request or do anything besides add a `'timeout'` event. -Passing an `AbortSignal` and then calling `abort` on the corresponding +Passing an `AbortSignal` and then calling `abort()` on the corresponding `AbortController` will behave the same way as calling `.destroy()` on the -request itself. +request. Specifically, the `'error'` event will be emitted with an error with +the message `'AbortError: The operation was aborted'`, the code `'ABORT_ERR'` +and the `cause`, if one was provided. ## `http.validateHeaderName(name[, label])` From 38e6ac7b446bcf2be257fde6763d1da7d2104295 Mon Sep 17 00:00:00 2001 From: Julian Dax Date: Sun, 26 Mar 2023 22:38:27 +0200 Subject: [PATCH 157/186] doc: improve example for Error.captureStackTrace() Change the `MyError` example so that instances of `MyError`are `instanceof Error` and also native errors when checked with `util.types.isNativeError()`. Co-authored-by: Ruben Bridgewater PR-URL: https://github.com/nodejs/node/pull/46886 Reviewed-By: James M Snell Reviewed-By: Debadree Chatterjee Reviewed-By: Luigi Pinca --- doc/api/errors.md | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/doc/api/errors.md b/doc/api/errors.md index 9139194719ade5..a0ab195ef49bd6 100644 --- a/doc/api/errors.md +++ b/doc/api/errors.md @@ -232,14 +232,27 @@ The `constructorOpt` argument is useful for hiding implementation details of error generation from the user. For instance: ```js -function MyError() { - Error.captureStackTrace(this, MyError); +function a() { + b(); } -// Without passing MyError to captureStackTrace, the MyError -// frame would show up in the .stack property. By passing -// the constructor, we omit that frame, and retain all frames below it. -new MyError().stack; +function b() { + c(); +} + +function c() { + // Create an error without stack trace to avoid calculating the stack trace twice. + const { stackTraceLimit } = Error; + Error.stackTraceLimit = 0; + const error = new Error(); + Error.stackTraceLimit = stackTraceLimit; + + // Capture the stack trace above function b + Error.captureStackTrace(error, b); // Neither function c, nor b is included in the stack trace + throw error; +} + +a(); ``` ### `Error.stackTraceLimit` From f84ff93d96a02900f9fdd8233f6a0b0c2c534a11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Nie=C3=9Fen?= Date: Mon, 27 Mar 2023 11:27:08 +0200 Subject: [PATCH 158/186] doc: use serial comma in cli docs Refs: https://github.com/nodejs/node/pull/11321 Refs: https://github.com/nodejs/node/pull/17384 PR-URL: https://github.com/nodejs/node/pull/47262 Reviewed-By: Moshe Atlow Reviewed-By: Deokjin Kim --- doc/api/cli.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/api/cli.md b/doc/api/cli.md index 7af70f8ae9fdc6..6fe2ce6b2be5e7 100644 --- a/doc/api/cli.md +++ b/doc/api/cli.md @@ -1381,7 +1381,7 @@ path to the blob that is used to restore the application state. When loading a snapshot, Node.js checks that: -1. The version, architecture and platform of the running Node.js binary +1. The version, architecture, and platform of the running Node.js binary are exactly the same as that of the binary that generates the snapshot. 2. The V8 flags and CPU features are compatible with that of the binary that generates the snapshot. From 13767a4675f28550e3720c46c5a16349b95283a9 Mon Sep 17 00:00:00 2001 From: Stefan Stojanovic Date: Mon, 27 Mar 2023 13:20:08 +0200 Subject: [PATCH 159/186] test: fix test-child-process-exec-cwd Refs: https://github.com/nodejs/node/pull/47020 Refs: https://github.com/nodejs/build/issues/3046 PR-URL: https://github.com/nodejs/node/pull/47235 Reviewed-By: Luigi Pinca Reviewed-By: Debadree Chatterjee --- test/parallel/parallel.status | 1 - test/parallel/test-child-process-exec-cwd.js | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/test/parallel/parallel.status b/test/parallel/parallel.status index 927e972e9d89cd..363cea8f65fb14 100644 --- a/test/parallel/parallel.status +++ b/test/parallel/parallel.status @@ -16,7 +16,6 @@ test-fs-rmdir-recursive: PASS, FLAKY # Windows on ARM [$system==win32 && $arch==arm64] -test-child-process-exec-cwd: SKIP [$system==linux] # https://github.com/nodejs/node/issues/39368 diff --git a/test/parallel/test-child-process-exec-cwd.js b/test/parallel/test-child-process-exec-cwd.js index 2f86cf10fe5e0f..49e56ef5511f8c 100644 --- a/test/parallel/test-child-process-exec-cwd.js +++ b/test/parallel/test-child-process-exec-cwd.js @@ -35,5 +35,5 @@ if (common.isWindows) { } exec(pwdcommand, { cwd: dir }, common.mustSucceed((stdout, stderr) => { - assert(stdout.startsWith(dir)); + assert(stdout.toLowerCase().startsWith(dir)); })); From a4808b6c3b111608e0b9945c7f62534b285b0c96 Mon Sep 17 00:00:00 2001 From: npm CLI robot Date: Wed, 15 Mar 2023 17:39:48 +0000 Subject: [PATCH 160/186] deps: upgrade npm to 9.6.2 PR-URL: https://github.com/nodejs/node/pull/47108 Reviewed-By: Yagiz Nizipli Reviewed-By: Mohammed Keyvanzadeh Reviewed-By: Luigi Pinca --- .../content/commands/npm-install-ci-test.md | 2 +- deps/npm/docs/content/commands/npm-ls.md | 2 +- deps/npm/docs/content/commands/npm.md | 2 +- .../configuring-npm/package-lock-json.md | 9 +- .../output/commands/npm-install-ci-test.html | 2 +- deps/npm/docs/output/commands/npm-ls.html | 2 +- deps/npm/docs/output/commands/npm.html | 2 +- .../configuring-npm/package-lock-json.html | 9 +- deps/npm/lib/commands/access.js | 34 +- deps/npm/lib/commands/audit.js | 3 +- deps/npm/lib/commands/completion.js | 7 +- deps/npm/lib/commands/run-script.js | 3 + deps/npm/lib/utils/audit-error.js | 3 +- deps/npm/lib/utils/cmd-list.js | 4 +- deps/npm/lib/utils/completion.fish | 40 + deps/npm/man/man1/npm-access.1 | 2 +- deps/npm/man/man1/npm-adduser.1 | 2 +- deps/npm/man/man1/npm-audit.1 | 2 +- deps/npm/man/man1/npm-bugs.1 | 2 +- deps/npm/man/man1/npm-cache.1 | 2 +- deps/npm/man/man1/npm-ci.1 | 2 +- deps/npm/man/man1/npm-completion.1 | 2 +- deps/npm/man/man1/npm-config.1 | 2 +- deps/npm/man/man1/npm-dedupe.1 | 2 +- deps/npm/man/man1/npm-deprecate.1 | 2 +- deps/npm/man/man1/npm-diff.1 | 2 +- deps/npm/man/man1/npm-dist-tag.1 | 2 +- deps/npm/man/man1/npm-docs.1 | 2 +- deps/npm/man/man1/npm-doctor.1 | 2 +- deps/npm/man/man1/npm-edit.1 | 2 +- deps/npm/man/man1/npm-exec.1 | 2 +- deps/npm/man/man1/npm-explain.1 | 2 +- deps/npm/man/man1/npm-explore.1 | 2 +- deps/npm/man/man1/npm-find-dupes.1 | 2 +- deps/npm/man/man1/npm-fund.1 | 2 +- deps/npm/man/man1/npm-help-search.1 | 2 +- deps/npm/man/man1/npm-help.1 | 2 +- deps/npm/man/man1/npm-hook.1 | 2 +- deps/npm/man/man1/npm-init.1 | 2 +- deps/npm/man/man1/npm-install-ci-test.1 | 4 +- deps/npm/man/man1/npm-install-test.1 | 2 +- deps/npm/man/man1/npm-install.1 | 2 +- deps/npm/man/man1/npm-link.1 | 2 +- deps/npm/man/man1/npm-login.1 | 2 +- deps/npm/man/man1/npm-logout.1 | 2 +- deps/npm/man/man1/npm-ls.1 | 4 +- deps/npm/man/man1/npm-org.1 | 2 +- deps/npm/man/man1/npm-outdated.1 | 2 +- deps/npm/man/man1/npm-owner.1 | 2 +- deps/npm/man/man1/npm-pack.1 | 2 +- deps/npm/man/man1/npm-ping.1 | 2 +- deps/npm/man/man1/npm-pkg.1 | 2 +- deps/npm/man/man1/npm-prefix.1 | 2 +- deps/npm/man/man1/npm-profile.1 | 2 +- deps/npm/man/man1/npm-prune.1 | 2 +- deps/npm/man/man1/npm-publish.1 | 2 +- deps/npm/man/man1/npm-query.1 | 2 +- deps/npm/man/man1/npm-rebuild.1 | 2 +- deps/npm/man/man1/npm-repo.1 | 2 +- deps/npm/man/man1/npm-restart.1 | 2 +- deps/npm/man/man1/npm-root.1 | 2 +- deps/npm/man/man1/npm-run-script.1 | 2 +- deps/npm/man/man1/npm-search.1 | 2 +- deps/npm/man/man1/npm-shrinkwrap.1 | 2 +- deps/npm/man/man1/npm-star.1 | 2 +- deps/npm/man/man1/npm-stars.1 | 2 +- deps/npm/man/man1/npm-start.1 | 2 +- deps/npm/man/man1/npm-stop.1 | 2 +- deps/npm/man/man1/npm-team.1 | 2 +- deps/npm/man/man1/npm-test.1 | 2 +- deps/npm/man/man1/npm-token.1 | 2 +- deps/npm/man/man1/npm-uninstall.1 | 2 +- deps/npm/man/man1/npm-unpublish.1 | 2 +- deps/npm/man/man1/npm-unstar.1 | 2 +- deps/npm/man/man1/npm-update.1 | 2 +- deps/npm/man/man1/npm-version.1 | 2 +- deps/npm/man/man1/npm-view.1 | 2 +- deps/npm/man/man1/npm-whoami.1 | 2 +- deps/npm/man/man1/npm.1 | 4 +- deps/npm/man/man1/npx.1 | 2 +- deps/npm/man/man5/folders.5 | 2 +- deps/npm/man/man5/install.5 | 2 +- deps/npm/man/man5/npm-global.5 | 2 +- deps/npm/man/man5/npm-json.5 | 2 +- deps/npm/man/man5/npm-shrinkwrap-json.5 | 2 +- deps/npm/man/man5/npmrc.5 | 2 +- deps/npm/man/man5/package-json.5 | 2 +- deps/npm/man/man5/package-lock-json.5 | 6 +- deps/npm/man/man7/config.7 | 2 +- deps/npm/man/man7/dependency-selectors.7 | 2 +- deps/npm/man/man7/developers.7 | 2 +- deps/npm/man/man7/logging.7 | 2 +- deps/npm/man/man7/orgs.7 | 2 +- deps/npm/man/man7/package-spec.7 | 2 +- deps/npm/man/man7/registry.7 | 2 +- deps/npm/man/man7/removal.7 | 2 +- deps/npm/man/man7/scope.7 | 2 +- deps/npm/man/man7/scripts.7 | 2 +- deps/npm/man/man7/workspaces.7 | 2 +- .../arborist/lib/arborist/build-ideal-tree.js | 2 +- .../@npmcli/arborist/lib/arborist/reify.js | 9 +- .../@npmcli/arborist/package.json | 8 +- .../@npmcli/config/lib/parse-field.js | 5 + .../node_modules/@npmcli/config/package.json | 6 +- .../installed-package-contents/lib/index.js | 2 + .../installed-package-contents/package.json | 7 +- .../@sigstore/protobuf-specs/LICENSE | 202 +++++ .../dist}/__generated__/envelope.d.ts | 0 .../dist}/__generated__/envelope.js | 0 .../google/api/field_behavior.d.ts | 0 .../google/api/field_behavior.js | 0 .../google/protobuf/descriptor.d.ts | 0 .../google/protobuf/descriptor.js | 0 .../google/protobuf/timestamp.d.ts | 0 .../google/protobuf/timestamp.js | 0 .../dist}/__generated__/sigstore_bundle.d.ts | 0 .../dist}/__generated__/sigstore_bundle.js | 0 .../dist}/__generated__/sigstore_common.d.ts | 0 .../dist}/__generated__/sigstore_common.js | 0 .../dist}/__generated__/sigstore_rekor.d.ts | 19 +- .../dist}/__generated__/sigstore_rekor.js | 0 .../__generated__/sigstore_trustroot.d.ts | 0 .../dist}/__generated__/sigstore_trustroot.js | 0 .../__generated__/sigstore_verification.d.ts | 0 .../__generated__/sigstore_verification.js | 0 .../@sigstore/protobuf-specs/dist/index.d.ts | 6 + .../@sigstore/protobuf-specs/dist/index.js | 37 + .../@sigstore/protobuf-specs/package.json | 31 + deps/npm/node_modules/@tufjs/models/LICENSE | 21 + .../models => @tufjs/models/dist}/base.d.ts | 9 +- .../models => @tufjs/models/dist}/base.js | 18 +- .../models/dist}/delegations.d.ts | 2 +- .../models/dist}/delegations.js | 12 +- .../@tufjs/models/dist/error.d.ts | 12 + .../node_modules/@tufjs/models/dist/error.js | 27 + .../models => @tufjs/models/dist}/file.d.ts | 2 +- .../models => @tufjs/models/dist}/file.js | 10 +- .../@tufjs/models/dist/index.d.ts | 10 + .../node_modules/@tufjs/models/dist/index.js | 24 + .../models => @tufjs/models/dist}/key.d.ts | 2 +- .../dist/models => @tufjs/models/dist}/key.js | 34 +- .../models/dist}/metadata.d.ts | 7 +- .../models => @tufjs/models/dist}/metadata.js | 41 +- .../models => @tufjs/models/dist}/role.d.ts | 2 +- .../models => @tufjs/models/dist}/role.js | 15 +- .../models => @tufjs/models/dist}/root.d.ts | 5 +- .../models => @tufjs/models/dist}/root.js | 25 +- .../models/dist}/signature.d.ts | 3 +- .../models/dist}/signature.js | 6 + .../models/dist}/snapshot.d.ts | 4 +- .../models => @tufjs/models/dist}/snapshot.js | 12 +- .../models/dist}/targets.d.ts | 5 +- .../models => @tufjs/models/dist}/targets.js | 17 +- .../models/dist}/timestamp.d.ts | 4 +- .../models/dist}/timestamp.js | 10 +- .../models}/dist/utils/guard.d.ts | 3 +- .../models}/dist/utils/guard.js | 8 +- .../@tufjs/models/dist/utils/index.d.ts | 3 + .../models}/dist/utils/index.js | 7 +- .../models}/dist/utils/json.d.ts | 0 .../models}/dist/utils/json.js | 0 .../models}/dist/utils/key.d.ts | 0 .../models}/dist/utils/key.js | 0 .../models}/dist/utils/oid.d.ts | 0 .../models}/dist/utils/oid.js | 0 .../models}/dist/utils/types.d.ts | 6 - .../@tufjs/models/dist/utils/types.js | 2 + .../models/dist/utils/verify.d.ts} | 0 .../models/dist/utils/verify.js} | 0 .../node_modules/@tufjs/models/package.json | 41 ++ .../node_modules/agentkeepalive/package.json | 20 +- deps/npm/node_modules/depd/History.md | 7 + deps/npm/node_modules/depd/LICENSE | 2 +- deps/npm/node_modules/depd/index.js | 42 +- .../depd/lib/compat/callsite-tostring.js | 103 --- .../depd/lib/compat/event-listener-count.js | 22 - .../npm/node_modules/depd/lib/compat/index.js | 79 -- deps/npm/node_modules/depd/package.json | 22 +- .../node_modules/libnpmaccess/package.json | 4 +- deps/npm/node_modules/libnpmdiff/package.json | 10 +- deps/npm/node_modules/libnpmexec/package.json | 8 +- deps/npm/node_modules/libnpmfund/package.json | 8 +- deps/npm/node_modules/libnpmhook/package.json | 4 +- deps/npm/node_modules/libnpmorg/package.json | 4 +- deps/npm/node_modules/libnpmpack/package.json | 8 +- .../libnpmpublish/lib/provenance.js | 19 +- .../node_modules/libnpmpublish/lib/publish.js | 27 +- .../node_modules/libnpmpublish/package.json | 7 +- .../node_modules/libnpmsearch/package.json | 4 +- deps/npm/node_modules/libnpmteam/package.json | 4 +- .../node_modules/libnpmversion/package.json | 4 +- deps/npm/node_modules/lru-cache/index.d.ts | 216 +++++- deps/npm/node_modules/lru-cache/index.js | 254 ++++++- deps/npm/node_modules/lru-cache/index.mjs | 254 ++++++- deps/npm/node_modules/lru-cache/package.json | 4 +- deps/npm/node_modules/minipass/index.d.ts | 15 +- deps/npm/node_modules/minipass/index.js | 55 +- deps/npm/node_modules/minipass/index.mjs | 697 ++++++++++++++++++ deps/npm/node_modules/minipass/package.json | 28 +- .../readable-stream/lib/_stream_duplex.js | 53 +- .../lib/_stream_passthrough.js | 8 +- .../readable-stream/lib/_stream_readable.js | 524 ++++++------- .../readable-stream/lib/_stream_transform.js | 74 +- .../readable-stream/lib/_stream_writable.js | 327 ++++---- .../lib/internal/streams/async_iterator.js | 204 +++-- .../lib/internal/streams/buffer_list.js | 325 ++++---- .../lib/internal/streams/destroy.js | 58 +- .../lib/internal/streams/end-of-stream.js | 42 +- .../lib/internal/streams/from.js | 42 +- .../lib/internal/streams/pipeline.js | 49 +- .../lib/internal/streams/state.js | 17 +- .../node_modules/readable-stream/package.json | 2 +- deps/npm/node_modules/sigstore/LICENSE | 2 +- deps/npm/node_modules/sigstore/README.md | 39 +- .../node_modules/sigstore/dist/sigstore.d.ts | 6 +- .../node_modules/sigstore/dist/sigstore.js | 21 +- .../tlog/types/__generated__/hashedrekord.js | 2 +- .../dist/tlog/types/__generated__/intoto.js | 2 +- .../node_modules/sigstore/dist/tuf/index.d.ts | 6 +- .../node_modules/sigstore/dist/tuf/index.js | 114 +-- .../sigstore/dist/tuf/target.d.ts | 2 + .../node_modules/sigstore/dist/tuf/target.js | 60 ++ .../sigstore/dist/tuf/trustroot.d.ts | 11 - .../sigstore/dist/tuf/trustroot.js | 163 ---- .../sigstore/dist/types/sigstore/index.d.ts | 12 +- .../sigstore/dist/types/sigstore/index.js | 39 +- .../dist/types/sigstore/validate.d.ts | 3 +- .../sigstore/dist/types/sigstore/validate.js | 15 - .../sigstore/dist/util/appdata.d.ts | 1 + .../sigstore/dist/util/appdata.js | 26 + .../sigstore/dist/util/index.d.ts | 1 + .../node_modules/sigstore/dist/util/index.js | 3 +- deps/npm/node_modules/sigstore/dist/verify.js | 12 +- deps/npm/node_modules/sigstore/package.json | 11 +- deps/npm/node_modules/sigstore/store/map.json | 19 - deps/npm/node_modules/spdx-correct/index.js | 26 +- .../node_modules/spdx-correct/package.json | 17 +- deps/npm/node_modules/tuf-js/LICENSE | 2 +- .../tuf-js/dist/{utils => }/config.d.ts | 0 .../tuf-js/dist/{utils => }/config.js | 0 deps/npm/node_modules/tuf-js/dist/error.d.ts | 8 - deps/npm/node_modules/tuf-js/dist/error.js | 16 +- .../npm/node_modules/tuf-js/dist/fetcher.d.ts | 8 +- deps/npm/node_modules/tuf-js/dist/fetcher.js | 6 +- deps/npm/node_modules/tuf-js/dist/index.d.ts | 4 +- deps/npm/node_modules/tuf-js/dist/index.js | 6 +- .../tuf-js/dist/models/index.d.ts | 5 - .../node_modules/tuf-js/dist/models/index.js | 13 - deps/npm/node_modules/tuf-js/dist/store.d.ts | 2 +- deps/npm/node_modules/tuf-js/dist/store.js | 33 +- .../npm/node_modules/tuf-js/dist/updater.d.ts | 8 +- deps/npm/node_modules/tuf-js/dist/updater.js | 24 +- .../node_modules/tuf-js/dist/utils/index.d.ts | 5 - .../node_modules/tuf-js/dist/utils/types.js | 10 - deps/npm/node_modules/tuf-js/package.json | 42 +- deps/npm/package.json | 22 +- .../tap-snapshots/test/lib/docs.js.test.cjs | 8 +- deps/npm/test/lib/commands/access.js | 17 +- deps/npm/test/lib/commands/run-script.js | 11 +- deps/npm/test/lib/utils/audit-error.js | 4 +- 260 files changed, 3377 insertions(+), 2191 deletions(-) create mode 100644 deps/npm/lib/utils/completion.fish create mode 100644 deps/npm/node_modules/@sigstore/protobuf-specs/LICENSE rename deps/npm/node_modules/{sigstore/dist/types/sigstore => @sigstore/protobuf-specs/dist}/__generated__/envelope.d.ts (100%) rename deps/npm/node_modules/{sigstore/dist/types/sigstore => @sigstore/protobuf-specs/dist}/__generated__/envelope.js (100%) rename deps/npm/node_modules/{sigstore/dist/types/sigstore => @sigstore/protobuf-specs/dist}/__generated__/google/api/field_behavior.d.ts (100%) rename deps/npm/node_modules/{sigstore/dist/types/sigstore => @sigstore/protobuf-specs/dist}/__generated__/google/api/field_behavior.js (100%) rename deps/npm/node_modules/{sigstore/dist/types/sigstore => @sigstore/protobuf-specs/dist}/__generated__/google/protobuf/descriptor.d.ts (100%) rename deps/npm/node_modules/{sigstore/dist/types/sigstore => @sigstore/protobuf-specs/dist}/__generated__/google/protobuf/descriptor.js (100%) rename deps/npm/node_modules/{sigstore/dist/types/sigstore => @sigstore/protobuf-specs/dist}/__generated__/google/protobuf/timestamp.d.ts (100%) rename deps/npm/node_modules/{sigstore/dist/types/sigstore => @sigstore/protobuf-specs/dist}/__generated__/google/protobuf/timestamp.js (100%) rename deps/npm/node_modules/{sigstore/dist/types/sigstore => @sigstore/protobuf-specs/dist}/__generated__/sigstore_bundle.d.ts (100%) rename deps/npm/node_modules/{sigstore/dist/types/sigstore => @sigstore/protobuf-specs/dist}/__generated__/sigstore_bundle.js (100%) rename deps/npm/node_modules/{sigstore/dist/types/sigstore => @sigstore/protobuf-specs/dist}/__generated__/sigstore_common.d.ts (100%) rename deps/npm/node_modules/{sigstore/dist/types/sigstore => @sigstore/protobuf-specs/dist}/__generated__/sigstore_common.js (100%) rename deps/npm/node_modules/{sigstore/dist/types/sigstore => @sigstore/protobuf-specs/dist}/__generated__/sigstore_rekor.d.ts (87%) rename deps/npm/node_modules/{sigstore/dist/types/sigstore => @sigstore/protobuf-specs/dist}/__generated__/sigstore_rekor.js (100%) rename deps/npm/node_modules/{sigstore/dist/types/sigstore => @sigstore/protobuf-specs/dist}/__generated__/sigstore_trustroot.d.ts (100%) rename deps/npm/node_modules/{sigstore/dist/types/sigstore => @sigstore/protobuf-specs/dist}/__generated__/sigstore_trustroot.js (100%) rename deps/npm/node_modules/{sigstore/dist/types/sigstore => @sigstore/protobuf-specs/dist}/__generated__/sigstore_verification.d.ts (100%) rename deps/npm/node_modules/{sigstore/dist/types/sigstore => @sigstore/protobuf-specs/dist}/__generated__/sigstore_verification.js (100%) create mode 100644 deps/npm/node_modules/@sigstore/protobuf-specs/dist/index.d.ts create mode 100644 deps/npm/node_modules/@sigstore/protobuf-specs/dist/index.js create mode 100644 deps/npm/node_modules/@sigstore/protobuf-specs/package.json create mode 100644 deps/npm/node_modules/@tufjs/models/LICENSE rename deps/npm/node_modules/{tuf-js/dist/models => @tufjs/models/dist}/base.d.ts (78%) rename deps/npm/node_modules/{tuf-js/dist/models => @tufjs/models/dist}/base.js (81%) rename deps/npm/node_modules/{tuf-js/dist/models => @tufjs/models/dist}/delegations.d.ts (94%) rename deps/npm/node_modules/{tuf-js/dist/models => @tufjs/models/dist}/delegations.js (93%) create mode 100644 deps/npm/node_modules/@tufjs/models/dist/error.d.ts create mode 100644 deps/npm/node_modules/@tufjs/models/dist/error.js rename deps/npm/node_modules/{tuf-js/dist/models => @tufjs/models/dist}/file.d.ts (95%) rename deps/npm/node_modules/{tuf-js/dist/models => @tufjs/models/dist}/file.js (95%) create mode 100644 deps/npm/node_modules/@tufjs/models/dist/index.d.ts create mode 100644 deps/npm/node_modules/@tufjs/models/dist/index.js rename deps/npm/node_modules/{tuf-js/dist/models => @tufjs/models/dist}/key.d.ts (91%) rename deps/npm/node_modules/{tuf-js/dist/models => @tufjs/models/dist}/key.js (68%) rename deps/npm/node_modules/{tuf-js/dist/models => @tufjs/models/dist}/metadata.d.ts (90%) rename deps/npm/node_modules/{tuf-js/dist/models => @tufjs/models/dist}/metadata.js (82%) rename deps/npm/node_modules/{tuf-js/dist/models => @tufjs/models/dist}/role.d.ts (98%) rename deps/npm/node_modules/{tuf-js/dist/models => @tufjs/models/dist}/role.js (96%) rename deps/npm/node_modules/{tuf-js/dist/models => @tufjs/models/dist}/root.d.ts (85%) rename deps/npm/node_modules/{tuf-js/dist/models => @tufjs/models/dist}/root.js (84%) rename deps/npm/node_modules/{tuf-js/dist/models => @tufjs/models/dist}/signature.d.ts (88%) rename deps/npm/node_modules/{tuf-js/dist/models => @tufjs/models/dist}/signature.js (89%) rename deps/npm/node_modules/{tuf-js/dist/models => @tufjs/models/dist}/snapshot.d.ts (87%) rename deps/npm/node_modules/{tuf-js/dist/models => @tufjs/models/dist}/snapshot.js (89%) rename deps/npm/node_modules/{tuf-js/dist/models => @tufjs/models/dist}/targets.d.ts (80%) rename deps/npm/node_modules/{tuf-js/dist/models => @tufjs/models/dist}/targets.js (88%) rename deps/npm/node_modules/{tuf-js/dist/models => @tufjs/models/dist}/timestamp.d.ts (85%) rename deps/npm/node_modules/{tuf-js/dist/models => @tufjs/models/dist}/timestamp.js (86%) rename deps/npm/node_modules/{tuf-js => @tufjs/models}/dist/utils/guard.d.ts (78%) rename deps/npm/node_modules/{tuf-js => @tufjs/models}/dist/utils/guard.js (74%) create mode 100644 deps/npm/node_modules/@tufjs/models/dist/utils/index.d.ts rename deps/npm/node_modules/{tuf-js => @tufjs/models}/dist/utils/index.js (79%) rename deps/npm/node_modules/{tuf-js => @tufjs/models}/dist/utils/json.d.ts (100%) rename deps/npm/node_modules/{tuf-js => @tufjs/models}/dist/utils/json.js (100%) rename deps/npm/node_modules/{tuf-js => @tufjs/models}/dist/utils/key.d.ts (100%) rename deps/npm/node_modules/{tuf-js => @tufjs/models}/dist/utils/key.js (100%) rename deps/npm/node_modules/{tuf-js => @tufjs/models}/dist/utils/oid.d.ts (100%) rename deps/npm/node_modules/{tuf-js => @tufjs/models}/dist/utils/oid.js (100%) rename deps/npm/node_modules/{tuf-js => @tufjs/models}/dist/utils/types.d.ts (51%) create mode 100644 deps/npm/node_modules/@tufjs/models/dist/utils/types.js rename deps/npm/node_modules/{tuf-js/dist/utils/signer.d.ts => @tufjs/models/dist/utils/verify.d.ts} (100%) rename deps/npm/node_modules/{tuf-js/dist/utils/signer.js => @tufjs/models/dist/utils/verify.js} (100%) create mode 100644 deps/npm/node_modules/@tufjs/models/package.json delete mode 100644 deps/npm/node_modules/depd/lib/compat/callsite-tostring.js delete mode 100644 deps/npm/node_modules/depd/lib/compat/event-listener-count.js delete mode 100644 deps/npm/node_modules/depd/lib/compat/index.js create mode 100644 deps/npm/node_modules/minipass/index.mjs create mode 100644 deps/npm/node_modules/sigstore/dist/tuf/target.d.ts create mode 100644 deps/npm/node_modules/sigstore/dist/tuf/target.js delete mode 100644 deps/npm/node_modules/sigstore/dist/tuf/trustroot.d.ts delete mode 100644 deps/npm/node_modules/sigstore/dist/tuf/trustroot.js create mode 100644 deps/npm/node_modules/sigstore/dist/util/appdata.d.ts create mode 100644 deps/npm/node_modules/sigstore/dist/util/appdata.js delete mode 100644 deps/npm/node_modules/sigstore/store/map.json rename deps/npm/node_modules/tuf-js/dist/{utils => }/config.d.ts (100%) rename deps/npm/node_modules/tuf-js/dist/{utils => }/config.js (100%) delete mode 100644 deps/npm/node_modules/tuf-js/dist/models/index.d.ts delete mode 100644 deps/npm/node_modules/tuf-js/dist/models/index.js delete mode 100644 deps/npm/node_modules/tuf-js/dist/utils/index.d.ts delete mode 100644 deps/npm/node_modules/tuf-js/dist/utils/types.js diff --git a/deps/npm/docs/content/commands/npm-install-ci-test.md b/deps/npm/docs/content/commands/npm-install-ci-test.md index f4db7ee0c54dca..5a8095787a1708 100644 --- a/deps/npm/docs/content/commands/npm-install-ci-test.md +++ b/deps/npm/docs/content/commands/npm-install-ci-test.md @@ -9,7 +9,7 @@ description: Install a project with a clean slate and run tests ```bash npm install-ci-test -alias: cit +aliases: cit, clean-install-test, sit ``` ### Description diff --git a/deps/npm/docs/content/commands/npm-ls.md b/deps/npm/docs/content/commands/npm-ls.md index 139e6ec56e3f87..b1754ed02c9525 100644 --- a/deps/npm/docs/content/commands/npm-ls.md +++ b/deps/npm/docs/content/commands/npm-ls.md @@ -27,7 +27,7 @@ packages will *also* show the paths to the specified packages. For example, running `npm ls promzard` in npm's source tree will show: ```bash -npm@9.5.1 /path/to/npm +npm@9.6.2 /path/to/npm └─┬ init-package-json@0.0.4 └── promzard@0.1.5 ``` diff --git a/deps/npm/docs/content/commands/npm.md b/deps/npm/docs/content/commands/npm.md index 6d6f5771e3b0c6..6f8ea0a36e3503 100644 --- a/deps/npm/docs/content/commands/npm.md +++ b/deps/npm/docs/content/commands/npm.md @@ -14,7 +14,7 @@ Note: This command is unaware of workspaces. ### Version -9.5.1 +9.6.2 ### Description diff --git a/deps/npm/docs/content/configuring-npm/package-lock-json.md b/deps/npm/docs/content/configuring-npm/package-lock-json.md index 61766dea355b36..8904f308870982 100644 --- a/deps/npm/docs/content/configuring-npm/package-lock-json.md +++ b/deps/npm/docs/content/configuring-npm/package-lock-json.md @@ -112,12 +112,9 @@ the npm registry. Lockfiles generated by npm v7 will contain * No version provided: an "ancient" shrinkwrap file from a version of npm prior to npm v5. * `1`: The lockfile version used by npm v5 and v6. -* `2`: The lockfile version used by npm v7, which is backwards compatible - to v1 lockfiles. -* `3`: The lockfile version used by npm v7, _without_ backwards - compatibility affordances. This is used for the hidden lockfile at - `node_modules/.package-lock.json`, and will likely be used in a future - version of npm, once support for npm v6 is no longer relevant. +* `2`: The lockfile version used by npm v7 and v8. Backwards compatible to v1 + lockfiles. +* `3`: The lockfile version used by npm v9. Backwards compatible to npm v7. npm will always attempt to get whatever data it can out of a lockfile, even if it is not a version that it was designed to support. diff --git a/deps/npm/docs/output/commands/npm-install-ci-test.html b/deps/npm/docs/output/commands/npm-install-ci-test.html index b2f6a3affbbafa..20b001f4e856b6 100644 --- a/deps/npm/docs/output/commands/npm-install-ci-test.html +++ b/deps/npm/docs/output/commands/npm-install-ci-test.html @@ -148,7 +148,7 @@

Table of contents

Synopsis

npm install-ci-test
 
-alias: cit
+aliases: cit, clean-install-test, sit
 

Description

This command runs npm ci followed immediately by npm test.

diff --git a/deps/npm/docs/output/commands/npm-ls.html b/deps/npm/docs/output/commands/npm-ls.html index 26d3dce7718e76..51142e341c7638 100644 --- a/deps/npm/docs/output/commands/npm-ls.html +++ b/deps/npm/docs/output/commands/npm-ls.html @@ -160,7 +160,7 @@

Description

the results to only the paths to the packages named. Note that nested packages will also show the paths to the specified packages. For example, running npm ls promzard in npm's source tree will show:

-
npm@9.5.1 /path/to/npm
+
npm@9.6.2 /path/to/npm
 └─┬ init-package-json@0.0.4
   └── promzard@0.1.5
 
diff --git a/deps/npm/docs/output/commands/npm.html b/deps/npm/docs/output/commands/npm.html index d16a1cec6c69e8..fd8603a02d39bb 100644 --- a/deps/npm/docs/output/commands/npm.html +++ b/deps/npm/docs/output/commands/npm.html @@ -150,7 +150,7 @@

Table of contents

Note: This command is unaware of workspaces.

Version

-

9.5.1

+

9.6.2

Description

npm is the package manager for the Node JavaScript platform. It puts modules in place so that node can find them, and manages dependency diff --git a/deps/npm/docs/output/configuring-npm/package-lock-json.html b/deps/npm/docs/output/configuring-npm/package-lock-json.html index 59b757568f016c..7587b4ad6056a8 100644 --- a/deps/npm/docs/output/configuring-npm/package-lock-json.html +++ b/deps/npm/docs/output/configuring-npm/package-lock-json.html @@ -239,12 +239,9 @@

lockfileVersion

  • No version provided: an "ancient" shrinkwrap file from a version of npm prior to npm v5.
  • 1: The lockfile version used by npm v5 and v6.
  • -
  • 2: The lockfile version used by npm v7, which is backwards compatible -to v1 lockfiles.
  • -
  • 3: The lockfile version used by npm v7, without backwards -compatibility affordances. This is used for the hidden lockfile at -node_modules/.package-lock.json, and will likely be used in a future -version of npm, once support for npm v6 is no longer relevant.
  • +
  • 2: The lockfile version used by npm v7 and v8. Backwards compatible to v1 +lockfiles.
  • +
  • 3: The lockfile version used by npm v9. Backwards compatible to npm v7.
  • npm will always attempt to get whatever data it can out of a lockfile, even if it is not a version that it was designed to support.

    diff --git a/deps/npm/lib/commands/access.js b/deps/npm/lib/commands/access.js index 23e51f071b1124..318151fc81e2c0 100644 --- a/deps/npm/lib/commands/access.js +++ b/deps/npm/lib/commands/access.js @@ -53,20 +53,22 @@ class Access extends BaseCommand { return commands } - switch (argv[2]) { - case 'grant': - return ['read-only', 'read-write'] - case 'revoke': - return [] - case 'list': - case 'ls': - return ['packages', 'collaborators'] - case 'get': - return ['status'] - case 'set': - return setCommands - default: - throw new Error(argv[2] + ' not recognized') + if (argv.length === 3) { + switch (argv[2]) { + case 'grant': + return ['read-only', 'read-write'] + case 'revoke': + return [] + case 'list': + case 'ls': + return ['packages', 'collaborators'] + case 'get': + return ['status'] + case 'set': + return setCommands + default: + throw new Error(argv[2] + ' not recognized') + } } } @@ -116,11 +118,11 @@ class Access extends BaseCommand { } async #grant (permissions, scope, pkg) { - await libnpmaccess.setPermissions(scope, pkg, permissions) + await libnpmaccess.setPermissions(scope, pkg, permissions, this.npm.flatOptions) } async #revoke (scope, pkg) { - await libnpmaccess.removePermissions(scope, pkg) + await libnpmaccess.removePermissions(scope, pkg, this.npm.flatOptions) } async #listPackages (owner, pkg) { diff --git a/deps/npm/lib/commands/audit.js b/deps/npm/lib/commands/audit.js index 05830fff69c2ea..dab871669eba59 100644 --- a/deps/npm/lib/commands/audit.js +++ b/deps/npm/lib/commands/audit.js @@ -389,11 +389,12 @@ class Audit extends ArboristWorkspaceCmd { const argv = opts.conf.argv.remain if (argv.length === 2) { - return ['fix'] + return ['fix', 'signatures'] } switch (argv[2]) { case 'fix': + case 'signatures': return [] default: throw Object.assign(new Error(argv[2] + ' not recognized'), { diff --git a/deps/npm/lib/commands/completion.js b/deps/npm/lib/commands/completion.js index f5604e099f9a27..49a66627cca2c8 100644 --- a/deps/npm/lib/commands/completion.js +++ b/deps/npm/lib/commands/completion.js @@ -79,12 +79,10 @@ class Completion extends BaseCommand { }) } - const { COMP_CWORD, COMP_LINE, COMP_POINT } = process.env + const { COMP_CWORD, COMP_LINE, COMP_POINT, COMP_FISH } = process.env // if the COMP_* isn't in the env, then just dump the script. - if (COMP_CWORD === undefined || - COMP_LINE === undefined || - COMP_POINT === undefined) { + if (COMP_CWORD === undefined || COMP_LINE === undefined || COMP_POINT === undefined) { return dumpScript(resolve(this.npm.npmRoot, 'lib', 'utils', 'completion.sh')) } @@ -111,6 +109,7 @@ class Completion extends BaseCommand { partialWords.push(partialWord) const opts = { + isFish: COMP_FISH === 'true', words, w, word, diff --git a/deps/npm/lib/commands/run-script.js b/deps/npm/lib/commands/run-script.js index 51746c5e5285d9..40e18e1ea06446 100644 --- a/deps/npm/lib/commands/run-script.js +++ b/deps/npm/lib/commands/run-script.js @@ -51,6 +51,9 @@ class RunScript extends BaseCommand { // find the script name const json = resolve(this.npm.localPrefix, 'package.json') const { scripts = {} } = await rpj(json).catch(er => ({})) + if (opts.isFish) { + return Object.keys(scripts).map(s => `${s}\t${scripts[s].slice(0, 30)}`) + } return Object.keys(scripts) } } diff --git a/deps/npm/lib/utils/audit-error.js b/deps/npm/lib/utils/audit-error.js index 7feccc739b6a9f..aaf35566fc0304 100644 --- a/deps/npm/lib/utils/audit-error.js +++ b/deps/npm/lib/utils/audit-error.js @@ -1,4 +1,5 @@ const log = require('./log-shim') +const replaceInfo = require('./replace-info.js') // print an error or just nothing if the audit report has an error // this is called by the audit command, and by the reify-output util @@ -24,7 +25,7 @@ const auditError = (npm, report) => { npm.output(JSON.stringify({ message: error.message, method: error.method, - uri: error.uri, + uri: replaceInfo(error.uri), headers: error.headers, statusCode: error.statusCode, body, diff --git a/deps/npm/lib/utils/cmd-list.js b/deps/npm/lib/utils/cmd-list.js index 03fe8ed07c930e..68074fe9a4286f 100644 --- a/deps/npm/lib/utils/cmd-list.js +++ b/deps/npm/lib/utils/cmd-list.js @@ -36,7 +36,7 @@ const aliases = { v: 'view', run: 'run-script', 'clean-install': 'ci', - 'clean-install-test': 'cit', + 'clean-install-test': 'install-ci-test', x: 'exec', why: 'explain', la: 'll', @@ -62,7 +62,7 @@ const aliases = { upgrade: 'update', udpate: 'update', rum: 'run-script', - sit: 'cit', + sit: 'install-ci-test', urn: 'run-script', ogr: 'org', 'add-user': 'adduser', diff --git a/deps/npm/lib/utils/completion.fish b/deps/npm/lib/utils/completion.fish new file mode 100644 index 00000000000000..5e274ad77e5fd0 --- /dev/null +++ b/deps/npm/lib/utils/completion.fish @@ -0,0 +1,40 @@ +# npm completions for Fish shell +# This script is a work in progress and does not fall under the normal semver contract as the rest of npm. + +# __fish_npm_needs_command taken from: +# https://stackoverflow.com/questions/16657803/creating-autocomplete-script-with-sub-commands +function __fish_npm_needs_command + set -l cmd (commandline -opc) + + if test (count $cmd) -eq 1 + return 0 + end + + return 1 +end + +# Taken from https://github.com/fish-shell/fish-shell/blob/HEAD/share/completions/npm.fish +function __fish_complete_npm -d "Complete the commandline using npm's 'completion' tool" + # tell npm we are fish shell + set -lx COMP_FISH true + if command -sq npm + # npm completion is bash-centric, so we need to translate fish's "commandline" stuff to bash's $COMP_* stuff + # COMP_LINE is an array with the words in the commandline + set -lx COMP_LINE (commandline -opc) + # COMP_CWORD is the index of the current word in COMP_LINE + # bash starts arrays with 0, so subtract 1 + set -lx COMP_CWORD (math (count $COMP_LINE) - 1) + # COMP_POINT is the index of point/cursor when the commandline is viewed as a string + set -lx COMP_POINT (commandline -C) + # If the cursor is after the last word, the empty token will disappear in the expansion + # Readd it + if test (commandline -ct) = "" + set COMP_CWORD (math $COMP_CWORD + 1) + set COMP_LINE $COMP_LINE "" + end + command npm completion -- $COMP_LINE 2>/dev/null + end +end + +# flush out what ships with fish +complete -e npm diff --git a/deps/npm/man/man1/npm-access.1 b/deps/npm/man/man1/npm-access.1 index 732813c2b8642f..8d87e40f24508a 100644 --- a/deps/npm/man/man1/npm-access.1 +++ b/deps/npm/man/man1/npm-access.1 @@ -1,4 +1,4 @@ -.TH "NPM-ACCESS" "1" "February 2023" "" "" +.TH "NPM-ACCESS" "1" "March 2023" "" "" .SH "NAME" \fBnpm-access\fR - Set access level on published packages .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-adduser.1 b/deps/npm/man/man1/npm-adduser.1 index 5a4ee97566cc08..d123f80979af44 100644 --- a/deps/npm/man/man1/npm-adduser.1 +++ b/deps/npm/man/man1/npm-adduser.1 @@ -1,4 +1,4 @@ -.TH "NPM-ADDUSER" "1" "February 2023" "" "" +.TH "NPM-ADDUSER" "1" "March 2023" "" "" .SH "NAME" \fBnpm-adduser\fR - Add a registry user account .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-audit.1 b/deps/npm/man/man1/npm-audit.1 index f0c8475937f7fa..084ca0973316c7 100644 --- a/deps/npm/man/man1/npm-audit.1 +++ b/deps/npm/man/man1/npm-audit.1 @@ -1,4 +1,4 @@ -.TH "NPM-AUDIT" "1" "February 2023" "" "" +.TH "NPM-AUDIT" "1" "March 2023" "" "" .SH "NAME" \fBnpm-audit\fR - Run a security audit .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-bugs.1 b/deps/npm/man/man1/npm-bugs.1 index 1f2ee1642dab02..a48dd27ebd4a14 100644 --- a/deps/npm/man/man1/npm-bugs.1 +++ b/deps/npm/man/man1/npm-bugs.1 @@ -1,4 +1,4 @@ -.TH "NPM-BUGS" "1" "February 2023" "" "" +.TH "NPM-BUGS" "1" "March 2023" "" "" .SH "NAME" \fBnpm-bugs\fR - Report bugs for a package in a web browser .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-cache.1 b/deps/npm/man/man1/npm-cache.1 index 5559b3be352bfb..d28a915c1b64a9 100644 --- a/deps/npm/man/man1/npm-cache.1 +++ b/deps/npm/man/man1/npm-cache.1 @@ -1,4 +1,4 @@ -.TH "NPM-CACHE" "1" "February 2023" "" "" +.TH "NPM-CACHE" "1" "March 2023" "" "" .SH "NAME" \fBnpm-cache\fR - Manipulates packages cache .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-ci.1 b/deps/npm/man/man1/npm-ci.1 index 66b688f9717612..cc1a7b24717bb8 100644 --- a/deps/npm/man/man1/npm-ci.1 +++ b/deps/npm/man/man1/npm-ci.1 @@ -1,4 +1,4 @@ -.TH "NPM-CI" "1" "February 2023" "" "" +.TH "NPM-CI" "1" "March 2023" "" "" .SH "NAME" \fBnpm-ci\fR - Clean install a project .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-completion.1 b/deps/npm/man/man1/npm-completion.1 index b82899fd35db14..9a8653259752be 100644 --- a/deps/npm/man/man1/npm-completion.1 +++ b/deps/npm/man/man1/npm-completion.1 @@ -1,4 +1,4 @@ -.TH "NPM-COMPLETION" "1" "February 2023" "" "" +.TH "NPM-COMPLETION" "1" "March 2023" "" "" .SH "NAME" \fBnpm-completion\fR - Tab Completion for npm .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-config.1 b/deps/npm/man/man1/npm-config.1 index 0cf96143ff8e3b..d8a23d49c65eb4 100644 --- a/deps/npm/man/man1/npm-config.1 +++ b/deps/npm/man/man1/npm-config.1 @@ -1,4 +1,4 @@ -.TH "NPM-CONFIG" "1" "February 2023" "" "" +.TH "NPM-CONFIG" "1" "March 2023" "" "" .SH "NAME" \fBnpm-config\fR - Manage the npm configuration files .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-dedupe.1 b/deps/npm/man/man1/npm-dedupe.1 index 302d63b3c2c107..7e9b6c1ed17a44 100644 --- a/deps/npm/man/man1/npm-dedupe.1 +++ b/deps/npm/man/man1/npm-dedupe.1 @@ -1,4 +1,4 @@ -.TH "NPM-DEDUPE" "1" "February 2023" "" "" +.TH "NPM-DEDUPE" "1" "March 2023" "" "" .SH "NAME" \fBnpm-dedupe\fR - Reduce duplication in the package tree .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-deprecate.1 b/deps/npm/man/man1/npm-deprecate.1 index d525e703e841d9..0a5b8e497b3c4d 100644 --- a/deps/npm/man/man1/npm-deprecate.1 +++ b/deps/npm/man/man1/npm-deprecate.1 @@ -1,4 +1,4 @@ -.TH "NPM-DEPRECATE" "1" "February 2023" "" "" +.TH "NPM-DEPRECATE" "1" "March 2023" "" "" .SH "NAME" \fBnpm-deprecate\fR - Deprecate a version of a package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-diff.1 b/deps/npm/man/man1/npm-diff.1 index 5d2c240f839f95..360b202a6045ee 100644 --- a/deps/npm/man/man1/npm-diff.1 +++ b/deps/npm/man/man1/npm-diff.1 @@ -1,4 +1,4 @@ -.TH "NPM-DIFF" "1" "February 2023" "" "" +.TH "NPM-DIFF" "1" "March 2023" "" "" .SH "NAME" \fBnpm-diff\fR - The registry diff command .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-dist-tag.1 b/deps/npm/man/man1/npm-dist-tag.1 index bd700f0fefe5ed..ab0b91e90d0e85 100644 --- a/deps/npm/man/man1/npm-dist-tag.1 +++ b/deps/npm/man/man1/npm-dist-tag.1 @@ -1,4 +1,4 @@ -.TH "NPM-DIST-TAG" "1" "February 2023" "" "" +.TH "NPM-DIST-TAG" "1" "March 2023" "" "" .SH "NAME" \fBnpm-dist-tag\fR - Modify package distribution tags .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-docs.1 b/deps/npm/man/man1/npm-docs.1 index 6ee27d9348b7b1..b62d222cd3d3bb 100644 --- a/deps/npm/man/man1/npm-docs.1 +++ b/deps/npm/man/man1/npm-docs.1 @@ -1,4 +1,4 @@ -.TH "NPM-DOCS" "1" "February 2023" "" "" +.TH "NPM-DOCS" "1" "March 2023" "" "" .SH "NAME" \fBnpm-docs\fR - Open documentation for a package in a web browser .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-doctor.1 b/deps/npm/man/man1/npm-doctor.1 index d1b5a4165452af..1cb73f9c5bd446 100644 --- a/deps/npm/man/man1/npm-doctor.1 +++ b/deps/npm/man/man1/npm-doctor.1 @@ -1,4 +1,4 @@ -.TH "NPM-DOCTOR" "1" "February 2023" "" "" +.TH "NPM-DOCTOR" "1" "March 2023" "" "" .SH "NAME" \fBnpm-doctor\fR - Check your npm environment .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-edit.1 b/deps/npm/man/man1/npm-edit.1 index de723dfabe983b..5e56a2fc90e35a 100644 --- a/deps/npm/man/man1/npm-edit.1 +++ b/deps/npm/man/man1/npm-edit.1 @@ -1,4 +1,4 @@ -.TH "NPM-EDIT" "1" "February 2023" "" "" +.TH "NPM-EDIT" "1" "March 2023" "" "" .SH "NAME" \fBnpm-edit\fR - Edit an installed package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-exec.1 b/deps/npm/man/man1/npm-exec.1 index 10d06ae263408f..d2627715dd8490 100644 --- a/deps/npm/man/man1/npm-exec.1 +++ b/deps/npm/man/man1/npm-exec.1 @@ -1,4 +1,4 @@ -.TH "NPM-EXEC" "1" "February 2023" "" "" +.TH "NPM-EXEC" "1" "March 2023" "" "" .SH "NAME" \fBnpm-exec\fR - Run a command from a local or remote npm package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-explain.1 b/deps/npm/man/man1/npm-explain.1 index a8f5e0e2b63487..4623c49f5a1a01 100644 --- a/deps/npm/man/man1/npm-explain.1 +++ b/deps/npm/man/man1/npm-explain.1 @@ -1,4 +1,4 @@ -.TH "NPM-EXPLAIN" "1" "February 2023" "" "" +.TH "NPM-EXPLAIN" "1" "March 2023" "" "" .SH "NAME" \fBnpm-explain\fR - Explain installed packages .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-explore.1 b/deps/npm/man/man1/npm-explore.1 index 82452e0cba6eaa..cfa05d1b5ea04c 100644 --- a/deps/npm/man/man1/npm-explore.1 +++ b/deps/npm/man/man1/npm-explore.1 @@ -1,4 +1,4 @@ -.TH "NPM-EXPLORE" "1" "February 2023" "" "" +.TH "NPM-EXPLORE" "1" "March 2023" "" "" .SH "NAME" \fBnpm-explore\fR - Browse an installed package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-find-dupes.1 b/deps/npm/man/man1/npm-find-dupes.1 index 4834f54df6abd3..cd808c61bc0bec 100644 --- a/deps/npm/man/man1/npm-find-dupes.1 +++ b/deps/npm/man/man1/npm-find-dupes.1 @@ -1,4 +1,4 @@ -.TH "NPM-FIND-DUPES" "1" "February 2023" "" "" +.TH "NPM-FIND-DUPES" "1" "March 2023" "" "" .SH "NAME" \fBnpm-find-dupes\fR - Find duplication in the package tree .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-fund.1 b/deps/npm/man/man1/npm-fund.1 index a0a31eebd445ac..896eb052c051bd 100644 --- a/deps/npm/man/man1/npm-fund.1 +++ b/deps/npm/man/man1/npm-fund.1 @@ -1,4 +1,4 @@ -.TH "NPM-FUND" "1" "February 2023" "" "" +.TH "NPM-FUND" "1" "March 2023" "" "" .SH "NAME" \fBnpm-fund\fR - Retrieve funding information .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-help-search.1 b/deps/npm/man/man1/npm-help-search.1 index 846f507f51e4d7..51c948d072a7b2 100644 --- a/deps/npm/man/man1/npm-help-search.1 +++ b/deps/npm/man/man1/npm-help-search.1 @@ -1,4 +1,4 @@ -.TH "NPM-HELP-SEARCH" "1" "February 2023" "" "" +.TH "NPM-HELP-SEARCH" "1" "March 2023" "" "" .SH "NAME" \fBnpm-help-search\fR - Search npm help documentation .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-help.1 b/deps/npm/man/man1/npm-help.1 index cffb33d49f91ef..90cd1c1f2c721d 100644 --- a/deps/npm/man/man1/npm-help.1 +++ b/deps/npm/man/man1/npm-help.1 @@ -1,4 +1,4 @@ -.TH "NPM-HELP" "1" "February 2023" "" "" +.TH "NPM-HELP" "1" "March 2023" "" "" .SH "NAME" \fBnpm-help\fR - Get help on npm .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-hook.1 b/deps/npm/man/man1/npm-hook.1 index 0cd0935d9498a9..9ae87f10bb1932 100644 --- a/deps/npm/man/man1/npm-hook.1 +++ b/deps/npm/man/man1/npm-hook.1 @@ -1,4 +1,4 @@ -.TH "NPM-HOOK" "1" "February 2023" "" "" +.TH "NPM-HOOK" "1" "March 2023" "" "" .SH "NAME" \fBnpm-hook\fR - Manage registry hooks .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-init.1 b/deps/npm/man/man1/npm-init.1 index 763e2914fa1e67..09c5305b2ca5c1 100644 --- a/deps/npm/man/man1/npm-init.1 +++ b/deps/npm/man/man1/npm-init.1 @@ -1,4 +1,4 @@ -.TH "NPM-INIT" "1" "February 2023" "" "" +.TH "NPM-INIT" "1" "March 2023" "" "" .SH "NAME" \fBnpm-init\fR - Create a package.json file .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-install-ci-test.1 b/deps/npm/man/man1/npm-install-ci-test.1 index fbe641322dac4b..ba98387c83d435 100644 --- a/deps/npm/man/man1/npm-install-ci-test.1 +++ b/deps/npm/man/man1/npm-install-ci-test.1 @@ -1,4 +1,4 @@ -.TH "NPM-INSTALL-CI-TEST" "1" "February 2023" "" "" +.TH "NPM-INSTALL-CI-TEST" "1" "March 2023" "" "" .SH "NAME" \fBnpm-install-ci-test\fR - Install a project with a clean slate and run tests .SS "Synopsis" @@ -7,7 +7,7 @@ .nf npm install-ci-test -alias: cit +aliases: cit, clean-install-test, sit .fi .RE .SS "Description" diff --git a/deps/npm/man/man1/npm-install-test.1 b/deps/npm/man/man1/npm-install-test.1 index 528ec9b75adf02..73ff246c9e0bfb 100644 --- a/deps/npm/man/man1/npm-install-test.1 +++ b/deps/npm/man/man1/npm-install-test.1 @@ -1,4 +1,4 @@ -.TH "NPM-INSTALL-TEST" "1" "February 2023" "" "" +.TH "NPM-INSTALL-TEST" "1" "March 2023" "" "" .SH "NAME" \fBnpm-install-test\fR - Install package(s) and run tests .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-install.1 b/deps/npm/man/man1/npm-install.1 index 4eb982a825f3e3..1cbf4a6523498f 100644 --- a/deps/npm/man/man1/npm-install.1 +++ b/deps/npm/man/man1/npm-install.1 @@ -1,4 +1,4 @@ -.TH "NPM-INSTALL" "1" "February 2023" "" "" +.TH "NPM-INSTALL" "1" "March 2023" "" "" .SH "NAME" \fBnpm-install\fR - Install a package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-link.1 b/deps/npm/man/man1/npm-link.1 index 84c3e7fd7ccc3c..efd5925f87a7db 100644 --- a/deps/npm/man/man1/npm-link.1 +++ b/deps/npm/man/man1/npm-link.1 @@ -1,4 +1,4 @@ -.TH "NPM-LINK" "1" "February 2023" "" "" +.TH "NPM-LINK" "1" "March 2023" "" "" .SH "NAME" \fBnpm-link\fR - Symlink a package folder .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-login.1 b/deps/npm/man/man1/npm-login.1 index 83535a93440fa7..dc154a2cd630d0 100644 --- a/deps/npm/man/man1/npm-login.1 +++ b/deps/npm/man/man1/npm-login.1 @@ -1,4 +1,4 @@ -.TH "NPM-LOGIN" "1" "February 2023" "" "" +.TH "NPM-LOGIN" "1" "March 2023" "" "" .SH "NAME" \fBnpm-login\fR - Login to a registry user account .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-logout.1 b/deps/npm/man/man1/npm-logout.1 index 945b6ef8e02003..c55de1b109a86f 100644 --- a/deps/npm/man/man1/npm-logout.1 +++ b/deps/npm/man/man1/npm-logout.1 @@ -1,4 +1,4 @@ -.TH "NPM-LOGOUT" "1" "February 2023" "" "" +.TH "NPM-LOGOUT" "1" "March 2023" "" "" .SH "NAME" \fBnpm-logout\fR - Log out of the registry .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-ls.1 b/deps/npm/man/man1/npm-ls.1 index ac59cba39a3f50..ebc3f41d460819 100644 --- a/deps/npm/man/man1/npm-ls.1 +++ b/deps/npm/man/man1/npm-ls.1 @@ -1,4 +1,4 @@ -.TH "NPM-LS" "1" "February 2023" "" "" +.TH "NPM-LS" "1" "March 2023" "" "" .SH "NAME" \fBnpm-ls\fR - List installed packages .SS "Synopsis" @@ -20,7 +20,7 @@ Positional arguments are \fBname@version-range\fR identifiers, which will limit .P .RS 2 .nf -npm@9.5.1 /path/to/npm +npm@9.6.2 /path/to/npm └─┬ init-package-json@0.0.4 └── promzard@0.1.5 .fi diff --git a/deps/npm/man/man1/npm-org.1 b/deps/npm/man/man1/npm-org.1 index 2e952687b307ac..0c54d854a9436e 100644 --- a/deps/npm/man/man1/npm-org.1 +++ b/deps/npm/man/man1/npm-org.1 @@ -1,4 +1,4 @@ -.TH "NPM-ORG" "1" "February 2023" "" "" +.TH "NPM-ORG" "1" "March 2023" "" "" .SH "NAME" \fBnpm-org\fR - Manage orgs .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-outdated.1 b/deps/npm/man/man1/npm-outdated.1 index 683321321f6876..6fce766932bac7 100644 --- a/deps/npm/man/man1/npm-outdated.1 +++ b/deps/npm/man/man1/npm-outdated.1 @@ -1,4 +1,4 @@ -.TH "NPM-OUTDATED" "1" "February 2023" "" "" +.TH "NPM-OUTDATED" "1" "March 2023" "" "" .SH "NAME" \fBnpm-outdated\fR - Check for outdated packages .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-owner.1 b/deps/npm/man/man1/npm-owner.1 index bf73df68cdf48b..adb0168df44fc4 100644 --- a/deps/npm/man/man1/npm-owner.1 +++ b/deps/npm/man/man1/npm-owner.1 @@ -1,4 +1,4 @@ -.TH "NPM-OWNER" "1" "February 2023" "" "" +.TH "NPM-OWNER" "1" "March 2023" "" "" .SH "NAME" \fBnpm-owner\fR - Manage package owners .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-pack.1 b/deps/npm/man/man1/npm-pack.1 index e6b19f2eb061c6..18c1a786c54db8 100644 --- a/deps/npm/man/man1/npm-pack.1 +++ b/deps/npm/man/man1/npm-pack.1 @@ -1,4 +1,4 @@ -.TH "NPM-PACK" "1" "February 2023" "" "" +.TH "NPM-PACK" "1" "March 2023" "" "" .SH "NAME" \fBnpm-pack\fR - Create a tarball from a package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-ping.1 b/deps/npm/man/man1/npm-ping.1 index 4ae24a8cd6eb46..166edeb7691496 100644 --- a/deps/npm/man/man1/npm-ping.1 +++ b/deps/npm/man/man1/npm-ping.1 @@ -1,4 +1,4 @@ -.TH "NPM-PING" "1" "February 2023" "" "" +.TH "NPM-PING" "1" "March 2023" "" "" .SH "NAME" \fBnpm-ping\fR - Ping npm registry .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-pkg.1 b/deps/npm/man/man1/npm-pkg.1 index d67f473563af1a..9c18b6dd6df68c 100644 --- a/deps/npm/man/man1/npm-pkg.1 +++ b/deps/npm/man/man1/npm-pkg.1 @@ -1,4 +1,4 @@ -.TH "NPM-PKG" "1" "February 2023" "" "" +.TH "NPM-PKG" "1" "March 2023" "" "" .SH "NAME" \fBnpm-pkg\fR - Manages your package.json .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-prefix.1 b/deps/npm/man/man1/npm-prefix.1 index a14aec7c6b3043..2bb8b31bf458b4 100644 --- a/deps/npm/man/man1/npm-prefix.1 +++ b/deps/npm/man/man1/npm-prefix.1 @@ -1,4 +1,4 @@ -.TH "NPM-PREFIX" "1" "February 2023" "" "" +.TH "NPM-PREFIX" "1" "March 2023" "" "" .SH "NAME" \fBnpm-prefix\fR - Display prefix .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-profile.1 b/deps/npm/man/man1/npm-profile.1 index 40bc3df8e842a7..0d24f9d05b0245 100644 --- a/deps/npm/man/man1/npm-profile.1 +++ b/deps/npm/man/man1/npm-profile.1 @@ -1,4 +1,4 @@ -.TH "NPM-PROFILE" "1" "February 2023" "" "" +.TH "NPM-PROFILE" "1" "March 2023" "" "" .SH "NAME" \fBnpm-profile\fR - Change settings on your registry profile .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-prune.1 b/deps/npm/man/man1/npm-prune.1 index 86546ac112f1cd..d0afcb49aa5c20 100644 --- a/deps/npm/man/man1/npm-prune.1 +++ b/deps/npm/man/man1/npm-prune.1 @@ -1,4 +1,4 @@ -.TH "NPM-PRUNE" "1" "February 2023" "" "" +.TH "NPM-PRUNE" "1" "March 2023" "" "" .SH "NAME" \fBnpm-prune\fR - Remove extraneous packages .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-publish.1 b/deps/npm/man/man1/npm-publish.1 index 97b912987d0bd0..e434b4f2a71d28 100644 --- a/deps/npm/man/man1/npm-publish.1 +++ b/deps/npm/man/man1/npm-publish.1 @@ -1,4 +1,4 @@ -.TH "NPM-PUBLISH" "1" "February 2023" "" "" +.TH "NPM-PUBLISH" "1" "March 2023" "" "" .SH "NAME" \fBnpm-publish\fR - Publish a package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-query.1 b/deps/npm/man/man1/npm-query.1 index 24ba7853adba8f..91459b2a27c4a7 100644 --- a/deps/npm/man/man1/npm-query.1 +++ b/deps/npm/man/man1/npm-query.1 @@ -1,4 +1,4 @@ -.TH "NPM-QUERY" "1" "February 2023" "" "" +.TH "NPM-QUERY" "1" "March 2023" "" "" .SH "NAME" \fBnpm-query\fR - Dependency selector query .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-rebuild.1 b/deps/npm/man/man1/npm-rebuild.1 index 1c00566dd1701a..8f4d6d75a45e81 100644 --- a/deps/npm/man/man1/npm-rebuild.1 +++ b/deps/npm/man/man1/npm-rebuild.1 @@ -1,4 +1,4 @@ -.TH "NPM-REBUILD" "1" "February 2023" "" "" +.TH "NPM-REBUILD" "1" "March 2023" "" "" .SH "NAME" \fBnpm-rebuild\fR - Rebuild a package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-repo.1 b/deps/npm/man/man1/npm-repo.1 index 65bb96687f571e..0588d9b595c126 100644 --- a/deps/npm/man/man1/npm-repo.1 +++ b/deps/npm/man/man1/npm-repo.1 @@ -1,4 +1,4 @@ -.TH "NPM-REPO" "1" "February 2023" "" "" +.TH "NPM-REPO" "1" "March 2023" "" "" .SH "NAME" \fBnpm-repo\fR - Open package repository page in the browser .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-restart.1 b/deps/npm/man/man1/npm-restart.1 index 9323e2841a261e..a05bc3f189ae6e 100644 --- a/deps/npm/man/man1/npm-restart.1 +++ b/deps/npm/man/man1/npm-restart.1 @@ -1,4 +1,4 @@ -.TH "NPM-RESTART" "1" "February 2023" "" "" +.TH "NPM-RESTART" "1" "March 2023" "" "" .SH "NAME" \fBnpm-restart\fR - Restart a package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-root.1 b/deps/npm/man/man1/npm-root.1 index bd943bb95a6d9c..af4c9f323f4848 100644 --- a/deps/npm/man/man1/npm-root.1 +++ b/deps/npm/man/man1/npm-root.1 @@ -1,4 +1,4 @@ -.TH "NPM-ROOT" "1" "February 2023" "" "" +.TH "NPM-ROOT" "1" "March 2023" "" "" .SH "NAME" \fBnpm-root\fR - Display npm root .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-run-script.1 b/deps/npm/man/man1/npm-run-script.1 index afcf4d655bf218..a905e08ae68dc1 100644 --- a/deps/npm/man/man1/npm-run-script.1 +++ b/deps/npm/man/man1/npm-run-script.1 @@ -1,4 +1,4 @@ -.TH "NPM-RUN-SCRIPT" "1" "February 2023" "" "" +.TH "NPM-RUN-SCRIPT" "1" "March 2023" "" "" .SH "NAME" \fBnpm-run-script\fR - Run arbitrary package scripts .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-search.1 b/deps/npm/man/man1/npm-search.1 index 2241f81e2250e8..9c172a44b6da6c 100644 --- a/deps/npm/man/man1/npm-search.1 +++ b/deps/npm/man/man1/npm-search.1 @@ -1,4 +1,4 @@ -.TH "NPM-SEARCH" "1" "February 2023" "" "" +.TH "NPM-SEARCH" "1" "March 2023" "" "" .SH "NAME" \fBnpm-search\fR - Search for packages .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-shrinkwrap.1 b/deps/npm/man/man1/npm-shrinkwrap.1 index 5192bc1222f3dc..7981f03b1606ec 100644 --- a/deps/npm/man/man1/npm-shrinkwrap.1 +++ b/deps/npm/man/man1/npm-shrinkwrap.1 @@ -1,4 +1,4 @@ -.TH "NPM-SHRINKWRAP" "1" "February 2023" "" "" +.TH "NPM-SHRINKWRAP" "1" "March 2023" "" "" .SH "NAME" \fBnpm-shrinkwrap\fR - Lock down dependency versions for publication .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-star.1 b/deps/npm/man/man1/npm-star.1 index ecb2ffe84fa809..1f0392794bf79b 100644 --- a/deps/npm/man/man1/npm-star.1 +++ b/deps/npm/man/man1/npm-star.1 @@ -1,4 +1,4 @@ -.TH "NPM-STAR" "1" "February 2023" "" "" +.TH "NPM-STAR" "1" "March 2023" "" "" .SH "NAME" \fBnpm-star\fR - Mark your favorite packages .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-stars.1 b/deps/npm/man/man1/npm-stars.1 index 49ffc90e03ce10..c2472bc237ea33 100644 --- a/deps/npm/man/man1/npm-stars.1 +++ b/deps/npm/man/man1/npm-stars.1 @@ -1,4 +1,4 @@ -.TH "NPM-STARS" "1" "February 2023" "" "" +.TH "NPM-STARS" "1" "March 2023" "" "" .SH "NAME" \fBnpm-stars\fR - View packages marked as favorites .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-start.1 b/deps/npm/man/man1/npm-start.1 index ecf3ad2838266c..83905a1bd6a596 100644 --- a/deps/npm/man/man1/npm-start.1 +++ b/deps/npm/man/man1/npm-start.1 @@ -1,4 +1,4 @@ -.TH "NPM-START" "1" "February 2023" "" "" +.TH "NPM-START" "1" "March 2023" "" "" .SH "NAME" \fBnpm-start\fR - Start a package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-stop.1 b/deps/npm/man/man1/npm-stop.1 index 4a5f604941e09d..c04cffa982b339 100644 --- a/deps/npm/man/man1/npm-stop.1 +++ b/deps/npm/man/man1/npm-stop.1 @@ -1,4 +1,4 @@ -.TH "NPM-STOP" "1" "February 2023" "" "" +.TH "NPM-STOP" "1" "March 2023" "" "" .SH "NAME" \fBnpm-stop\fR - Stop a package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-team.1 b/deps/npm/man/man1/npm-team.1 index 30399634bc8bc8..435f882a60ef6a 100644 --- a/deps/npm/man/man1/npm-team.1 +++ b/deps/npm/man/man1/npm-team.1 @@ -1,4 +1,4 @@ -.TH "NPM-TEAM" "1" "February 2023" "" "" +.TH "NPM-TEAM" "1" "March 2023" "" "" .SH "NAME" \fBnpm-team\fR - Manage organization teams and team memberships .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-test.1 b/deps/npm/man/man1/npm-test.1 index ddd45f0757b9ff..48100ddd2ed3fa 100644 --- a/deps/npm/man/man1/npm-test.1 +++ b/deps/npm/man/man1/npm-test.1 @@ -1,4 +1,4 @@ -.TH "NPM-TEST" "1" "February 2023" "" "" +.TH "NPM-TEST" "1" "March 2023" "" "" .SH "NAME" \fBnpm-test\fR - Test a package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-token.1 b/deps/npm/man/man1/npm-token.1 index 202f55bd69e68e..380160743eabf3 100644 --- a/deps/npm/man/man1/npm-token.1 +++ b/deps/npm/man/man1/npm-token.1 @@ -1,4 +1,4 @@ -.TH "NPM-TOKEN" "1" "February 2023" "" "" +.TH "NPM-TOKEN" "1" "March 2023" "" "" .SH "NAME" \fBnpm-token\fR - Manage your authentication tokens .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-uninstall.1 b/deps/npm/man/man1/npm-uninstall.1 index 9c90a9863215c9..b8f291cbeda665 100644 --- a/deps/npm/man/man1/npm-uninstall.1 +++ b/deps/npm/man/man1/npm-uninstall.1 @@ -1,4 +1,4 @@ -.TH "NPM-UNINSTALL" "1" "February 2023" "" "" +.TH "NPM-UNINSTALL" "1" "March 2023" "" "" .SH "NAME" \fBnpm-uninstall\fR - Remove a package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-unpublish.1 b/deps/npm/man/man1/npm-unpublish.1 index 8b250dd67bcc41..0b5bae99d9df93 100644 --- a/deps/npm/man/man1/npm-unpublish.1 +++ b/deps/npm/man/man1/npm-unpublish.1 @@ -1,4 +1,4 @@ -.TH "NPM-UNPUBLISH" "1" "February 2023" "" "" +.TH "NPM-UNPUBLISH" "1" "March 2023" "" "" .SH "NAME" \fBnpm-unpublish\fR - Remove a package from the registry .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-unstar.1 b/deps/npm/man/man1/npm-unstar.1 index c76968c9050b5b..7e01bf1a960392 100644 --- a/deps/npm/man/man1/npm-unstar.1 +++ b/deps/npm/man/man1/npm-unstar.1 @@ -1,4 +1,4 @@ -.TH "NPM-UNSTAR" "1" "February 2023" "" "" +.TH "NPM-UNSTAR" "1" "March 2023" "" "" .SH "NAME" \fBnpm-unstar\fR - Remove an item from your favorite packages .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-update.1 b/deps/npm/man/man1/npm-update.1 index 7819631243fccd..1ac95a9b5a0c99 100644 --- a/deps/npm/man/man1/npm-update.1 +++ b/deps/npm/man/man1/npm-update.1 @@ -1,4 +1,4 @@ -.TH "NPM-UPDATE" "1" "February 2023" "" "" +.TH "NPM-UPDATE" "1" "March 2023" "" "" .SH "NAME" \fBnpm-update\fR - Update packages .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-version.1 b/deps/npm/man/man1/npm-version.1 index 66bfdbdc598bdd..9f13e68d7f7690 100644 --- a/deps/npm/man/man1/npm-version.1 +++ b/deps/npm/man/man1/npm-version.1 @@ -1,4 +1,4 @@ -.TH "NPM-VERSION" "1" "February 2023" "" "" +.TH "NPM-VERSION" "1" "March 2023" "" "" .SH "NAME" \fBnpm-version\fR - Bump a package version .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-view.1 b/deps/npm/man/man1/npm-view.1 index 6075c163d0e8d2..5da1474d5177a3 100644 --- a/deps/npm/man/man1/npm-view.1 +++ b/deps/npm/man/man1/npm-view.1 @@ -1,4 +1,4 @@ -.TH "NPM-VIEW" "1" "February 2023" "" "" +.TH "NPM-VIEW" "1" "March 2023" "" "" .SH "NAME" \fBnpm-view\fR - View registry info .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-whoami.1 b/deps/npm/man/man1/npm-whoami.1 index d96a3648776381..d20de132af5e01 100644 --- a/deps/npm/man/man1/npm-whoami.1 +++ b/deps/npm/man/man1/npm-whoami.1 @@ -1,4 +1,4 @@ -.TH "NPM-WHOAMI" "1" "February 2023" "" "" +.TH "NPM-WHOAMI" "1" "March 2023" "" "" .SH "NAME" \fBnpm-whoami\fR - Display npm username .SS "Synopsis" diff --git a/deps/npm/man/man1/npm.1 b/deps/npm/man/man1/npm.1 index 631f484d455b98..cd6b3e58c96428 100644 --- a/deps/npm/man/man1/npm.1 +++ b/deps/npm/man/man1/npm.1 @@ -1,4 +1,4 @@ -.TH "NPM" "1" "February 2023" "" "" +.TH "NPM" "1" "March 2023" "" "" .SH "NAME" \fBnpm\fR - javascript package manager .SS "Synopsis" @@ -12,7 +12,7 @@ npm Note: This command is unaware of workspaces. .SS "Version" .P -9.5.1 +9.6.2 .SS "Description" .P npm is the package manager for the Node JavaScript platform. It puts modules in place so that node can find them, and manages dependency conflicts intelligently. diff --git a/deps/npm/man/man1/npx.1 b/deps/npm/man/man1/npx.1 index 079dffeecdbe2e..bf5e9bf8ea4dfe 100644 --- a/deps/npm/man/man1/npx.1 +++ b/deps/npm/man/man1/npx.1 @@ -1,4 +1,4 @@ -.TH "NPX" "1" "February 2023" "" "" +.TH "NPX" "1" "March 2023" "" "" .SH "NAME" \fBnpx\fR - Run a command from a local or remote npm package .SS "Synopsis" diff --git a/deps/npm/man/man5/folders.5 b/deps/npm/man/man5/folders.5 index 50bf4c8c7aec20..403d66ee7fc54d 100644 --- a/deps/npm/man/man5/folders.5 +++ b/deps/npm/man/man5/folders.5 @@ -1,4 +1,4 @@ -.TH "FOLDERS" "5" "February 2023" "" "" +.TH "FOLDERS" "5" "March 2023" "" "" .SH "NAME" \fBfolders\fR - Folder Structures Used by npm .SS "Description" diff --git a/deps/npm/man/man5/install.5 b/deps/npm/man/man5/install.5 index 68af465f5ee21a..3145d5ac917e68 100644 --- a/deps/npm/man/man5/install.5 +++ b/deps/npm/man/man5/install.5 @@ -1,4 +1,4 @@ -.TH "INSTALL" "5" "February 2023" "" "" +.TH "INSTALL" "5" "March 2023" "" "" .SH "NAME" \fBinstall\fR - Download and install node and npm .SS "Description" diff --git a/deps/npm/man/man5/npm-global.5 b/deps/npm/man/man5/npm-global.5 index 50bf4c8c7aec20..403d66ee7fc54d 100644 --- a/deps/npm/man/man5/npm-global.5 +++ b/deps/npm/man/man5/npm-global.5 @@ -1,4 +1,4 @@ -.TH "FOLDERS" "5" "February 2023" "" "" +.TH "FOLDERS" "5" "March 2023" "" "" .SH "NAME" \fBfolders\fR - Folder Structures Used by npm .SS "Description" diff --git a/deps/npm/man/man5/npm-json.5 b/deps/npm/man/man5/npm-json.5 index 8f7dd8fd5b73e6..b9c12028df641c 100644 --- a/deps/npm/man/man5/npm-json.5 +++ b/deps/npm/man/man5/npm-json.5 @@ -1,4 +1,4 @@ -.TH "PACKAGE.JSON" "5" "February 2023" "" "" +.TH "PACKAGE.JSON" "5" "March 2023" "" "" .SH "NAME" \fBpackage.json\fR - Specifics of npm's package.json handling .SS "Description" diff --git a/deps/npm/man/man5/npm-shrinkwrap-json.5 b/deps/npm/man/man5/npm-shrinkwrap-json.5 index 12a5dc05887fda..28f1fb6185f994 100644 --- a/deps/npm/man/man5/npm-shrinkwrap-json.5 +++ b/deps/npm/man/man5/npm-shrinkwrap-json.5 @@ -1,4 +1,4 @@ -.TH "NPM-SHRINKWRAP.JSON" "5" "February 2023" "" "" +.TH "NPM-SHRINKWRAP.JSON" "5" "March 2023" "" "" .SH "NAME" \fBnpm-shrinkwrap.json\fR - A publishable lockfile .SS "Description" diff --git a/deps/npm/man/man5/npmrc.5 b/deps/npm/man/man5/npmrc.5 index a568984bc80aaa..d4ab9f65774a26 100644 --- a/deps/npm/man/man5/npmrc.5 +++ b/deps/npm/man/man5/npmrc.5 @@ -1,4 +1,4 @@ -.TH "NPMRC" "5" "February 2023" "" "" +.TH "NPMRC" "5" "March 2023" "" "" .SH "NAME" \fBnpmrc\fR - The npm config files .SS "Description" diff --git a/deps/npm/man/man5/package-json.5 b/deps/npm/man/man5/package-json.5 index 8f7dd8fd5b73e6..b9c12028df641c 100644 --- a/deps/npm/man/man5/package-json.5 +++ b/deps/npm/man/man5/package-json.5 @@ -1,4 +1,4 @@ -.TH "PACKAGE.JSON" "5" "February 2023" "" "" +.TH "PACKAGE.JSON" "5" "March 2023" "" "" .SH "NAME" \fBpackage.json\fR - Specifics of npm's package.json handling .SS "Description" diff --git a/deps/npm/man/man5/package-lock-json.5 b/deps/npm/man/man5/package-lock-json.5 index 20be57b80db4fb..d6b65de211e4fa 100644 --- a/deps/npm/man/man5/package-lock-json.5 +++ b/deps/npm/man/man5/package-lock-json.5 @@ -1,4 +1,4 @@ -.TH "PACKAGE-LOCK.JSON" "5" "February 2023" "" "" +.TH "PACKAGE-LOCK.JSON" "5" "March 2023" "" "" .SH "NAME" \fBpackage-lock.json\fR - A manifestation of the manifest .SS "Description" @@ -67,9 +67,9 @@ No version provided: an "ancient" shrinkwrap file from a version of npm prior to .IP \(bu 4 \fB1\fR: The lockfile version used by npm v5 and v6. .IP \(bu 4 -\fB2\fR: The lockfile version used by npm v7, which is backwards compatible to v1 lockfiles. +\fB2\fR: The lockfile version used by npm v7 and v8. Backwards compatible to v1 lockfiles. .IP \(bu 4 -\fB3\fR: The lockfile version used by npm v7, \fIwithout\fR backwards compatibility affordances. This is used for the hidden lockfile at \fBnode_modules/.package-lock.json\fR, and will likely be used in a future version of npm, once support for npm v6 is no longer relevant. +\fB3\fR: The lockfile version used by npm v9. Backwards compatible to npm v7. .RE 0 .P diff --git a/deps/npm/man/man7/config.7 b/deps/npm/man/man7/config.7 index dc4261c2803a8c..93fd95d7915703 100644 --- a/deps/npm/man/man7/config.7 +++ b/deps/npm/man/man7/config.7 @@ -1,4 +1,4 @@ -.TH "CONFIG" "7" "February 2023" "" "" +.TH "CONFIG" "7" "March 2023" "" "" .SH "NAME" \fBconfig\fR - More than you probably want to know about npm configuration .SS "Description" diff --git a/deps/npm/man/man7/dependency-selectors.7 b/deps/npm/man/man7/dependency-selectors.7 index f1670a3a20e885..2d5c77e6717fc5 100644 --- a/deps/npm/man/man7/dependency-selectors.7 +++ b/deps/npm/man/man7/dependency-selectors.7 @@ -1,4 +1,4 @@ -.TH "QUERYING" "7" "February 2023" "" "" +.TH "QUERYING" "7" "March 2023" "" "" .SH "NAME" \fBQuerying\fR - Dependency Selector Syntax & Querying .SS "Description" diff --git a/deps/npm/man/man7/developers.7 b/deps/npm/man/man7/developers.7 index a15142ba205a4b..83d9c5a39953f0 100644 --- a/deps/npm/man/man7/developers.7 +++ b/deps/npm/man/man7/developers.7 @@ -1,4 +1,4 @@ -.TH "DEVELOPERS" "7" "February 2023" "" "" +.TH "DEVELOPERS" "7" "March 2023" "" "" .SH "NAME" \fBdevelopers\fR - Developer Guide .SS "Description" diff --git a/deps/npm/man/man7/logging.7 b/deps/npm/man/man7/logging.7 index d1cc3bdf00d8ca..4d1000caa942a1 100644 --- a/deps/npm/man/man7/logging.7 +++ b/deps/npm/man/man7/logging.7 @@ -1,4 +1,4 @@ -.TH "LOGGING" "7" "February 2023" "" "" +.TH "LOGGING" "7" "March 2023" "" "" .SH "NAME" \fBLogging\fR - Why, What & How We Log .SS "Description" diff --git a/deps/npm/man/man7/orgs.7 b/deps/npm/man/man7/orgs.7 index 7aa5da2ede48f4..ea8e56ad714bed 100644 --- a/deps/npm/man/man7/orgs.7 +++ b/deps/npm/man/man7/orgs.7 @@ -1,4 +1,4 @@ -.TH "ORGS" "7" "February 2023" "" "" +.TH "ORGS" "7" "March 2023" "" "" .SH "NAME" \fBorgs\fR - Working with Teams & Orgs .SS "Description" diff --git a/deps/npm/man/man7/package-spec.7 b/deps/npm/man/man7/package-spec.7 index 4ae0095bd13b25..c3eb5e458f6cff 100644 --- a/deps/npm/man/man7/package-spec.7 +++ b/deps/npm/man/man7/package-spec.7 @@ -1,4 +1,4 @@ -.TH "PACKAGE-SPEC" "7" "February 2023" "" "" +.TH "PACKAGE-SPEC" "7" "March 2023" "" "" .SH "NAME" \fBpackage-spec\fR - Package name specifier .SS "Description" diff --git a/deps/npm/man/man7/registry.7 b/deps/npm/man/man7/registry.7 index e67c8bb2b01158..b8926cb2f57a47 100644 --- a/deps/npm/man/man7/registry.7 +++ b/deps/npm/man/man7/registry.7 @@ -1,4 +1,4 @@ -.TH "REGISTRY" "7" "February 2023" "" "" +.TH "REGISTRY" "7" "March 2023" "" "" .SH "NAME" \fBregistry\fR - The JavaScript Package Registry .SS "Description" diff --git a/deps/npm/man/man7/removal.7 b/deps/npm/man/man7/removal.7 index 82e39c8cb1acc3..97066d4d97f274 100644 --- a/deps/npm/man/man7/removal.7 +++ b/deps/npm/man/man7/removal.7 @@ -1,4 +1,4 @@ -.TH "REMOVAL" "7" "February 2023" "" "" +.TH "REMOVAL" "7" "March 2023" "" "" .SH "NAME" \fBremoval\fR - Cleaning the Slate .SS "Synopsis" diff --git a/deps/npm/man/man7/scope.7 b/deps/npm/man/man7/scope.7 index 670b2f88c82116..6b58330b7b89bf 100644 --- a/deps/npm/man/man7/scope.7 +++ b/deps/npm/man/man7/scope.7 @@ -1,4 +1,4 @@ -.TH "SCOPE" "7" "February 2023" "" "" +.TH "SCOPE" "7" "March 2023" "" "" .SH "NAME" \fBscope\fR - Scoped packages .SS "Description" diff --git a/deps/npm/man/man7/scripts.7 b/deps/npm/man/man7/scripts.7 index 5f0ee7735d6a22..d4e5de7e97f3df 100644 --- a/deps/npm/man/man7/scripts.7 +++ b/deps/npm/man/man7/scripts.7 @@ -1,4 +1,4 @@ -.TH "SCRIPTS" "7" "February 2023" "" "" +.TH "SCRIPTS" "7" "March 2023" "" "" .SH "NAME" \fBscripts\fR - How npm handles the "scripts" field .SS "Description" diff --git a/deps/npm/man/man7/workspaces.7 b/deps/npm/man/man7/workspaces.7 index 6e1e9bf59e08f2..7db3d49cc25c6a 100644 --- a/deps/npm/man/man7/workspaces.7 +++ b/deps/npm/man/man7/workspaces.7 @@ -1,4 +1,4 @@ -.TH "WORKSPACES" "7" "February 2023" "" "" +.TH "WORKSPACES" "7" "March 2023" "" "" .SH "NAME" \fBworkspaces\fR - Working with workspaces .SS "Description" diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js index 2ea66ac3364149..0d936d8ef77689 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js @@ -1243,7 +1243,7 @@ This is a one-time fix-up, please be patient... if (isWorkspace) { const existingNode = this.idealTree.edgesOut.get(spec.name).to if (existingNode && existingNode.isWorkspace && existingNode.satisfies(edge)) { - return edge.to + return existingNode } } diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js index 87993cca876d66..760fa977ecfd91 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js @@ -535,9 +535,14 @@ module.exports = cls => class Reifier extends cls { await this[_renamePath](d, retired) } } - const made = await mkdir(node.path, { recursive: true }) this[_sparseTreeDirs].add(node.path) - this[_sparseTreeRoots].add(made) + const made = await mkdir(node.path, { recursive: true }) + // if the directory already exists, made will be undefined. if that's the case + // we don't want to remove it because we aren't the ones who created it so we + // omit it from the _sparseTreeRoots + if (made) { + this[_sparseTreeRoots].add(made) + } })) .then(() => process.emit('timeEnd', 'reify:createSparse')) } diff --git a/deps/npm/node_modules/@npmcli/arborist/package.json b/deps/npm/node_modules/@npmcli/arborist/package.json index aaa69e048432aa..5d1a9362e27387 100644 --- a/deps/npm/node_modules/@npmcli/arborist/package.json +++ b/deps/npm/node_modules/@npmcli/arborist/package.json @@ -1,11 +1,11 @@ { "name": "@npmcli/arborist", - "version": "6.2.3", + "version": "6.2.5", "description": "Manage node_modules trees", "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", "@npmcli/fs": "^3.1.0", - "@npmcli/installed-package-contents": "^2.0.0", + "@npmcli/installed-package-contents": "^2.0.2", "@npmcli/map-workspaces": "^3.0.2", "@npmcli/metavuln-calculator": "^5.0.0", "@npmcli/name-from-folder": "^2.0.0", @@ -39,7 +39,7 @@ }, "devDependencies": { "@npmcli/eslint-config": "^4.0.0", - "@npmcli/template-oss": "4.11.4", + "@npmcli/template-oss": "4.12.0", "benchmark": "^2.1.4", "chalk": "^4.1.0", "minify-registry-metadata": "^3.0.0", @@ -98,7 +98,7 @@ }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.11.4", + "version": "4.12.0", "content": "../../scripts/template-oss/index.js" } } diff --git a/deps/npm/node_modules/@npmcli/config/lib/parse-field.js b/deps/npm/node_modules/@npmcli/config/lib/parse-field.js index 0c905bf23cb107..099b0b4eaf1a83 100644 --- a/deps/npm/node_modules/@npmcli/config/lib/parse-field.js +++ b/deps/npm/node_modules/@npmcli/config/lib/parse-field.js @@ -20,6 +20,7 @@ const parseField = (f, key, opts, listElement = false) => { const isUmask = typeList.has(typeDefs.Umask.type) const isNumber = typeList.has(typeDefs.Number.type) const isList = !listElement && typeList.has(Array) + const isDate = typeList.has(typeDefs.Date.type) if (Array.isArray(f)) { return !isList ? f : f.map(field => parseField(field, key, opts, true)) @@ -53,6 +54,10 @@ const parseField = (f, key, opts, listElement = false) => { f = envReplace(f, env) + if (isDate) { + return new Date(f) + } + if (isPath) { const homePattern = platform === 'win32' ? /^~(\/|\\)/ : /^~\// if (homePattern.test(f) && home) { diff --git a/deps/npm/node_modules/@npmcli/config/package.json b/deps/npm/node_modules/@npmcli/config/package.json index 38c063e358beb1..a5b48d3309c75c 100644 --- a/deps/npm/node_modules/@npmcli/config/package.json +++ b/deps/npm/node_modules/@npmcli/config/package.json @@ -1,6 +1,6 @@ { "name": "@npmcli/config", - "version": "6.1.3", + "version": "6.1.4", "files": [ "bin/", "lib/" @@ -33,7 +33,7 @@ }, "devDependencies": { "@npmcli/eslint-config": "^4.0.0", - "@npmcli/template-oss": "4.11.4", + "@npmcli/template-oss": "4.12.0", "tap": "^16.3.4" }, "dependencies": { @@ -50,6 +50,6 @@ }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.11.4" + "version": "4.12.0" } } diff --git a/deps/npm/node_modules/@npmcli/installed-package-contents/lib/index.js b/deps/npm/node_modules/@npmcli/installed-package-contents/lib/index.js index e2c545b5ab949c..20b25c4bc8437d 100755 --- a/deps/npm/node_modules/@npmcli/installed-package-contents/lib/index.js +++ b/deps/npm/node_modules/@npmcli/installed-package-contents/lib/index.js @@ -1,3 +1,5 @@ +#! /usr/bin/env node + // to GET CONTENTS for folder at PATH (which may be a PACKAGE): // - if PACKAGE, read path/package.json // - if bins in ../node_modules/.bin, add those to result diff --git a/deps/npm/node_modules/@npmcli/installed-package-contents/package.json b/deps/npm/node_modules/@npmcli/installed-package-contents/package.json index aac2de13042561..3554754123e618 100644 --- a/deps/npm/node_modules/@npmcli/installed-package-contents/package.json +++ b/deps/npm/node_modules/@npmcli/installed-package-contents/package.json @@ -1,6 +1,6 @@ { "name": "@npmcli/installed-package-contents", - "version": "2.0.1", + "version": "2.0.2", "description": "Get the list of files installed in a package in node_modules, including bundled dependencies", "author": "GitHub Inc.", "main": "lib/index.js", @@ -19,8 +19,7 @@ }, "devDependencies": { "@npmcli/eslint-config": "^4.0.0", - "@npmcli/template-oss": "4.6.2", - "mkdirp": "^1.0.4", + "@npmcli/template-oss": "4.11.4", "require-inject": "^1.4.4", "tap": "^16.3.0" }, @@ -41,7 +40,7 @@ }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.6.2" + "version": "4.11.4" }, "tap": { "nyc-arg": [ diff --git a/deps/npm/node_modules/@sigstore/protobuf-specs/LICENSE b/deps/npm/node_modules/@sigstore/protobuf-specs/LICENSE new file mode 100644 index 00000000000000..e9e7c1679a09df --- /dev/null +++ b/deps/npm/node_modules/@sigstore/protobuf-specs/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2023 The Sigstore Authors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/envelope.d.ts b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/envelope.d.ts similarity index 100% rename from deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/envelope.d.ts rename to deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/envelope.d.ts diff --git a/deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/envelope.js b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/envelope.js similarity index 100% rename from deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/envelope.js rename to deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/envelope.js diff --git a/deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/google/api/field_behavior.d.ts b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/google/api/field_behavior.d.ts similarity index 100% rename from deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/google/api/field_behavior.d.ts rename to deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/google/api/field_behavior.d.ts diff --git a/deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/google/api/field_behavior.js b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/google/api/field_behavior.js similarity index 100% rename from deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/google/api/field_behavior.js rename to deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/google/api/field_behavior.js diff --git a/deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/google/protobuf/descriptor.d.ts b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/google/protobuf/descriptor.d.ts similarity index 100% rename from deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/google/protobuf/descriptor.d.ts rename to deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/google/protobuf/descriptor.d.ts diff --git a/deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/google/protobuf/descriptor.js b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/google/protobuf/descriptor.js similarity index 100% rename from deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/google/protobuf/descriptor.js rename to deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/google/protobuf/descriptor.js diff --git a/deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/google/protobuf/timestamp.d.ts b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/google/protobuf/timestamp.d.ts similarity index 100% rename from deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/google/protobuf/timestamp.d.ts rename to deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/google/protobuf/timestamp.d.ts diff --git a/deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/google/protobuf/timestamp.js b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/google/protobuf/timestamp.js similarity index 100% rename from deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/google/protobuf/timestamp.js rename to deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/google/protobuf/timestamp.js diff --git a/deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/sigstore_bundle.d.ts b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_bundle.d.ts similarity index 100% rename from deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/sigstore_bundle.d.ts rename to deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_bundle.d.ts diff --git a/deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/sigstore_bundle.js b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_bundle.js similarity index 100% rename from deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/sigstore_bundle.js rename to deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_bundle.js diff --git a/deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/sigstore_common.d.ts b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_common.d.ts similarity index 100% rename from deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/sigstore_common.d.ts rename to deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_common.d.ts diff --git a/deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/sigstore_common.js b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_common.js similarity index 100% rename from deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/sigstore_common.js rename to deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_common.js diff --git a/deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/sigstore_rekor.d.ts b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_rekor.d.ts similarity index 87% rename from deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/sigstore_rekor.d.ts rename to deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_rekor.d.ts index 9e33bb80e2a867..74eb82513ddb12 100644 --- a/deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/sigstore_rekor.d.ts +++ b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_rekor.d.ts @@ -98,12 +98,19 @@ export interface TransparencyLogEntry { */ inclusionProof: InclusionProof | undefined; /** - * The canonicalized Rekor entry body, used for SET verification. This - * is the same as the body returned by Rekor. It's included here for - * cases where the client cannot deterministically reconstruct the - * bundle from the other fields. Clients MUST verify that the signature - * referenced in the canonicalized_body matches the signature provided - * in the bundle content. + * The canonicalized transparency log entry, used to reconstruct + * the Signed Entry Timestamp (SET) during verification. + * The contents of this field are the same as the `body` field in + * a Rekor response, meaning that it does **not** include the "full" + * canonicalized form (of log index, ID, etc.) which are + * exposed as separate fields. The verifier is responsible for + * combining the `canonicalized_body`, `log_index`, `log_id`, + * and `integrated_time` into the payload that the SET's signature + * is generated over. + * + * Clients MUST verify that the signatured referenced in the + * `canonicalized_body` matches the signature provided in the + * `Bundle.content`. */ canonicalizedBody: Buffer; } diff --git a/deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/sigstore_rekor.js b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_rekor.js similarity index 100% rename from deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/sigstore_rekor.js rename to deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_rekor.js diff --git a/deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/sigstore_trustroot.d.ts b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_trustroot.d.ts similarity index 100% rename from deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/sigstore_trustroot.d.ts rename to deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_trustroot.d.ts diff --git a/deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/sigstore_trustroot.js b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_trustroot.js similarity index 100% rename from deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/sigstore_trustroot.js rename to deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_trustroot.js diff --git a/deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/sigstore_verification.d.ts b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_verification.d.ts similarity index 100% rename from deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/sigstore_verification.d.ts rename to deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_verification.d.ts diff --git a/deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/sigstore_verification.js b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_verification.js similarity index 100% rename from deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/sigstore_verification.js rename to deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_verification.js diff --git a/deps/npm/node_modules/@sigstore/protobuf-specs/dist/index.d.ts b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/index.d.ts new file mode 100644 index 00000000000000..f87f0aba29ab6a --- /dev/null +++ b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/index.d.ts @@ -0,0 +1,6 @@ +export * from './__generated__/envelope'; +export * from './__generated__/sigstore_bundle'; +export * from './__generated__/sigstore_common'; +export * from './__generated__/sigstore_rekor'; +export * from './__generated__/sigstore_trustroot'; +export * from './__generated__/sigstore_verification'; diff --git a/deps/npm/node_modules/@sigstore/protobuf-specs/dist/index.js b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/index.js new file mode 100644 index 00000000000000..eafb768c48fcaa --- /dev/null +++ b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/index.js @@ -0,0 +1,37 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +/* +Copyright 2023 The Sigstore Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +__exportStar(require("./__generated__/envelope"), exports); +__exportStar(require("./__generated__/sigstore_bundle"), exports); +__exportStar(require("./__generated__/sigstore_common"), exports); +__exportStar(require("./__generated__/sigstore_rekor"), exports); +__exportStar(require("./__generated__/sigstore_trustroot"), exports); +__exportStar(require("./__generated__/sigstore_verification"), exports); diff --git a/deps/npm/node_modules/@sigstore/protobuf-specs/package.json b/deps/npm/node_modules/@sigstore/protobuf-specs/package.json new file mode 100644 index 00000000000000..7cb4aa9c5364ff --- /dev/null +++ b/deps/npm/node_modules/@sigstore/protobuf-specs/package.json @@ -0,0 +1,31 @@ +{ + "name": "@sigstore/protobuf-specs", + "version": "0.1.0", + "description": "code-signing for npm packages", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "scripts": { + "build": "tsc" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/sigstore/protobuf-specs.git" + }, + "files": [ + "dist" + ], + "author": "bdehamer@github.com", + "license": "Apache-2.0", + "bugs": { + "url": "https://github.com/sigstore/protobuf-specs/issues" + }, + "homepage": "https://github.com/sigstore/protobuf-specs#readme", + "devDependencies": { + "@tsconfig/node14": "^1.0.3", + "@types/node": "^18.14.0", + "typescript": "^4.9.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } +} diff --git a/deps/npm/node_modules/@tufjs/models/LICENSE b/deps/npm/node_modules/@tufjs/models/LICENSE new file mode 100644 index 00000000000000..420700f5d37659 --- /dev/null +++ b/deps/npm/node_modules/@tufjs/models/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 GitHub and the TUF Contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/deps/npm/node_modules/tuf-js/dist/models/base.d.ts b/deps/npm/node_modules/@tufjs/models/dist/base.d.ts similarity index 78% rename from deps/npm/node_modules/tuf-js/dist/models/base.d.ts rename to deps/npm/node_modules/@tufjs/models/dist/base.d.ts index 4c5e0aaf4faaad..4cc2395328592f 100644 --- a/deps/npm/node_modules/tuf-js/dist/models/base.d.ts +++ b/deps/npm/node_modules/@tufjs/models/dist/base.d.ts @@ -1,5 +1,5 @@ -import { JSONObject, JSONValue } from '../utils/types'; import { Signature } from './signature'; +import { JSONObject, JSONValue } from './utils'; export interface Signable { signatures: Record; signed: Signed; @@ -10,6 +10,13 @@ export interface SignedOptions { expires?: string; unrecognizedFields?: Record; } +export declare enum MetadataKind { + Root = "root", + Timestamp = "timestamp", + Snapshot = "snapshot", + Targets = "targets" +} +export declare function isMetadataKind(value: unknown): value is MetadataKind; /*** * A base class for the signed part of TUF metadata. * diff --git a/deps/npm/node_modules/tuf-js/dist/models/base.js b/deps/npm/node_modules/@tufjs/models/dist/base.js similarity index 81% rename from deps/npm/node_modules/tuf-js/dist/models/base.js rename to deps/npm/node_modules/@tufjs/models/dist/base.js index 7658567e2d6027..d89a089c330922 100644 --- a/deps/npm/node_modules/tuf-js/dist/models/base.js +++ b/deps/npm/node_modules/@tufjs/models/dist/base.js @@ -3,11 +3,23 @@ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); -exports.Signed = void 0; +exports.Signed = exports.isMetadataKind = exports.MetadataKind = void 0; const util_1 = __importDefault(require("util")); -const error_1 = require("../error"); -const utils_1 = require("../utils"); +const error_1 = require("./error"); +const utils_1 = require("./utils"); const SPECIFICATION_VERSION = ['1', '0', '31']; +var MetadataKind; +(function (MetadataKind) { + MetadataKind["Root"] = "root"; + MetadataKind["Timestamp"] = "timestamp"; + MetadataKind["Snapshot"] = "snapshot"; + MetadataKind["Targets"] = "targets"; +})(MetadataKind = exports.MetadataKind || (exports.MetadataKind = {})); +function isMetadataKind(value) { + return (typeof value === 'string' && + Object.values(MetadataKind).includes(value)); +} +exports.isMetadataKind = isMetadataKind; /*** * A base class for the signed part of TUF metadata. * diff --git a/deps/npm/node_modules/tuf-js/dist/models/delegations.d.ts b/deps/npm/node_modules/@tufjs/models/dist/delegations.d.ts similarity index 94% rename from deps/npm/node_modules/tuf-js/dist/models/delegations.d.ts rename to deps/npm/node_modules/@tufjs/models/dist/delegations.d.ts index b53862aa865bec..357e9dfeb81abd 100644 --- a/deps/npm/node_modules/tuf-js/dist/models/delegations.d.ts +++ b/deps/npm/node_modules/@tufjs/models/dist/delegations.d.ts @@ -1,6 +1,6 @@ -import { JSONObject, JSONValue } from '../utils/types'; import { Key } from './key'; import { DelegatedRole, SuccinctRoles } from './role'; +import { JSONObject, JSONValue } from './utils'; type DelegatedRoleMap = Record; type KeyMap = Record; interface DelegationsOptions { diff --git a/deps/npm/node_modules/tuf-js/dist/models/delegations.js b/deps/npm/node_modules/@tufjs/models/dist/delegations.js similarity index 93% rename from deps/npm/node_modules/tuf-js/dist/models/delegations.js rename to deps/npm/node_modules/@tufjs/models/dist/delegations.js index 302bd52d8d885d..7165f1e2443936 100644 --- a/deps/npm/node_modules/tuf-js/dist/models/delegations.js +++ b/deps/npm/node_modules/@tufjs/models/dist/delegations.js @@ -5,10 +5,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) { Object.defineProperty(exports, "__esModule", { value: true }); exports.Delegations = void 0; const util_1 = __importDefault(require("util")); -const error_1 = require("../error"); -const guard_1 = require("../utils/guard"); +const error_1 = require("./error"); const key_1 = require("./key"); const role_1 = require("./role"); +const utils_1 = require("./utils"); /** * A container object storing information about all delegations. * @@ -67,7 +67,7 @@ class Delegations { static fromJSON(data) { const { keys, roles, succinct_roles, ...unrecognizedFields } = data; let succinctRoles; - if ((0, guard_1.isObject)(succinct_roles)) { + if (utils_1.guard.isObject(succinct_roles)) { succinctRoles = role_1.SuccinctRoles.fromJSON(succinct_roles); } return new Delegations({ @@ -89,7 +89,7 @@ function rolesToJSON(roles) { return Object.values(roles).map((role) => role.toJSON()); } function keysFromJSON(data) { - if (!(0, guard_1.isObjectRecord)(data)) { + if (!utils_1.guard.isObjectRecord(data)) { throw new TypeError('keys is malformed'); } return Object.entries(data).reduce((acc, [keyID, keyData]) => ({ @@ -99,8 +99,8 @@ function keysFromJSON(data) { } function rolesFromJSON(data) { let roleMap; - if ((0, guard_1.isDefined)(data)) { - if (!(0, guard_1.isObjectArray)(data)) { + if (utils_1.guard.isDefined(data)) { + if (!utils_1.guard.isObjectArray(data)) { throw new TypeError('roles is malformed'); } roleMap = data.reduce((acc, role) => { diff --git a/deps/npm/node_modules/@tufjs/models/dist/error.d.ts b/deps/npm/node_modules/@tufjs/models/dist/error.d.ts new file mode 100644 index 00000000000000..e03d05a3813993 --- /dev/null +++ b/deps/npm/node_modules/@tufjs/models/dist/error.d.ts @@ -0,0 +1,12 @@ +export declare class ValueError extends Error { +} +export declare class RepositoryError extends Error { +} +export declare class UnsignedMetadataError extends RepositoryError { +} +export declare class LengthOrHashMismatchError extends RepositoryError { +} +export declare class CryptoError extends Error { +} +export declare class UnsupportedAlgorithmError extends CryptoError { +} diff --git a/deps/npm/node_modules/@tufjs/models/dist/error.js b/deps/npm/node_modules/@tufjs/models/dist/error.js new file mode 100644 index 00000000000000..ba80698747ba06 --- /dev/null +++ b/deps/npm/node_modules/@tufjs/models/dist/error.js @@ -0,0 +1,27 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.UnsupportedAlgorithmError = exports.CryptoError = exports.LengthOrHashMismatchError = exports.UnsignedMetadataError = exports.RepositoryError = exports.ValueError = void 0; +// An error about insufficient values +class ValueError extends Error { +} +exports.ValueError = ValueError; +// An error with a repository's state, such as a missing file. +// It covers all exceptions that come from the repository side when +// looking from the perspective of users of metadata API or ngclient. +class RepositoryError extends Error { +} +exports.RepositoryError = RepositoryError; +// An error about metadata object with insufficient threshold of signatures. +class UnsignedMetadataError extends RepositoryError { +} +exports.UnsignedMetadataError = UnsignedMetadataError; +// An error while checking the length and hash values of an object. +class LengthOrHashMismatchError extends RepositoryError { +} +exports.LengthOrHashMismatchError = LengthOrHashMismatchError; +class CryptoError extends Error { +} +exports.CryptoError = CryptoError; +class UnsupportedAlgorithmError extends CryptoError { +} +exports.UnsupportedAlgorithmError = UnsupportedAlgorithmError; diff --git a/deps/npm/node_modules/tuf-js/dist/models/file.d.ts b/deps/npm/node_modules/@tufjs/models/dist/file.d.ts similarity index 95% rename from deps/npm/node_modules/tuf-js/dist/models/file.d.ts rename to deps/npm/node_modules/@tufjs/models/dist/file.d.ts index 9678cf1efefd59..7abeb2bb03fb43 100644 --- a/deps/npm/node_modules/tuf-js/dist/models/file.d.ts +++ b/deps/npm/node_modules/@tufjs/models/dist/file.d.ts @@ -1,7 +1,7 @@ /// /// import { Readable } from 'stream'; -import { JSONObject, JSONValue } from '../utils/types'; +import { JSONObject, JSONValue } from './utils'; interface MetaFileOptions { version: number; length?: number; diff --git a/deps/npm/node_modules/tuf-js/dist/models/file.js b/deps/npm/node_modules/@tufjs/models/dist/file.js similarity index 95% rename from deps/npm/node_modules/tuf-js/dist/models/file.js rename to deps/npm/node_modules/@tufjs/models/dist/file.js index d6d535f6ca7872..b35fe5950bbb7e 100644 --- a/deps/npm/node_modules/tuf-js/dist/models/file.js +++ b/deps/npm/node_modules/@tufjs/models/dist/file.js @@ -6,8 +6,8 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.TargetFile = exports.MetaFile = void 0; const crypto_1 = __importDefault(require("crypto")); const util_1 = __importDefault(require("util")); -const error_1 = require("../error"); -const guard_1 = require("../utils/guard"); +const error_1 = require("./error"); +const utils_1 = require("./utils"); // A container with information about a particular metadata file. // // This class is used for Timestamp and Snapshot metadata. @@ -75,10 +75,10 @@ class MetaFile { if (typeof version !== 'number') { throw new TypeError('version must be a number'); } - if ((0, guard_1.isDefined)(length) && typeof length !== 'number') { + if (utils_1.guard.isDefined(length) && typeof length !== 'number') { throw new TypeError('length must be a number'); } - if ((0, guard_1.isDefined)(hashes) && !(0, guard_1.isStringRecord)(hashes)) { + if (utils_1.guard.isDefined(hashes) && !utils_1.guard.isStringRecord(hashes)) { throw new TypeError('hashes must be string keys and values'); } return new MetaFile({ @@ -163,7 +163,7 @@ class TargetFile { if (typeof length !== 'number') { throw new TypeError('length must be a number'); } - if (!(0, guard_1.isStringRecord)(hashes)) { + if (!utils_1.guard.isStringRecord(hashes)) { throw new TypeError('hashes must have string keys and values'); } return new TargetFile({ diff --git a/deps/npm/node_modules/@tufjs/models/dist/index.d.ts b/deps/npm/node_modules/@tufjs/models/dist/index.d.ts new file mode 100644 index 00000000000000..f9768beaea2000 --- /dev/null +++ b/deps/npm/node_modules/@tufjs/models/dist/index.d.ts @@ -0,0 +1,10 @@ +export { MetadataKind } from './base'; +export { ValueError } from './error'; +export { MetaFile, TargetFile } from './file'; +export { Key } from './key'; +export { Metadata } from './metadata'; +export { Root } from './root'; +export { Signature } from './signature'; +export { Snapshot } from './snapshot'; +export { Targets } from './targets'; +export { Timestamp } from './timestamp'; diff --git a/deps/npm/node_modules/@tufjs/models/dist/index.js b/deps/npm/node_modules/@tufjs/models/dist/index.js new file mode 100644 index 00000000000000..a4dc783659f045 --- /dev/null +++ b/deps/npm/node_modules/@tufjs/models/dist/index.js @@ -0,0 +1,24 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Timestamp = exports.Targets = exports.Snapshot = exports.Signature = exports.Root = exports.Metadata = exports.Key = exports.TargetFile = exports.MetaFile = exports.ValueError = exports.MetadataKind = void 0; +var base_1 = require("./base"); +Object.defineProperty(exports, "MetadataKind", { enumerable: true, get: function () { return base_1.MetadataKind; } }); +var error_1 = require("./error"); +Object.defineProperty(exports, "ValueError", { enumerable: true, get: function () { return error_1.ValueError; } }); +var file_1 = require("./file"); +Object.defineProperty(exports, "MetaFile", { enumerable: true, get: function () { return file_1.MetaFile; } }); +Object.defineProperty(exports, "TargetFile", { enumerable: true, get: function () { return file_1.TargetFile; } }); +var key_1 = require("./key"); +Object.defineProperty(exports, "Key", { enumerable: true, get: function () { return key_1.Key; } }); +var metadata_1 = require("./metadata"); +Object.defineProperty(exports, "Metadata", { enumerable: true, get: function () { return metadata_1.Metadata; } }); +var root_1 = require("./root"); +Object.defineProperty(exports, "Root", { enumerable: true, get: function () { return root_1.Root; } }); +var signature_1 = require("./signature"); +Object.defineProperty(exports, "Signature", { enumerable: true, get: function () { return signature_1.Signature; } }); +var snapshot_1 = require("./snapshot"); +Object.defineProperty(exports, "Snapshot", { enumerable: true, get: function () { return snapshot_1.Snapshot; } }); +var targets_1 = require("./targets"); +Object.defineProperty(exports, "Targets", { enumerable: true, get: function () { return targets_1.Targets; } }); +var timestamp_1 = require("./timestamp"); +Object.defineProperty(exports, "Timestamp", { enumerable: true, get: function () { return timestamp_1.Timestamp; } }); diff --git a/deps/npm/node_modules/tuf-js/dist/models/key.d.ts b/deps/npm/node_modules/@tufjs/models/dist/key.d.ts similarity index 91% rename from deps/npm/node_modules/tuf-js/dist/models/key.d.ts rename to deps/npm/node_modules/@tufjs/models/dist/key.d.ts index 160407ae70ee3f..9f90b7ee8969bf 100644 --- a/deps/npm/node_modules/tuf-js/dist/models/key.d.ts +++ b/deps/npm/node_modules/@tufjs/models/dist/key.d.ts @@ -1,5 +1,5 @@ -import { JSONObject, JSONValue } from '../utils/types'; import { Signable } from './base'; +import { JSONObject, JSONValue } from './utils'; export interface KeyOptions { keyID: string; keyType: string; diff --git a/deps/npm/node_modules/tuf-js/dist/models/key.js b/deps/npm/node_modules/@tufjs/models/dist/key.js similarity index 68% rename from deps/npm/node_modules/tuf-js/dist/models/key.js rename to deps/npm/node_modules/@tufjs/models/dist/key.js index 33ff514fc178fa..5e55b09d7c6ddc 100644 --- a/deps/npm/node_modules/tuf-js/dist/models/key.js +++ b/deps/npm/node_modules/@tufjs/models/dist/key.js @@ -1,37 +1,13 @@ "use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Key = void 0; const util_1 = __importDefault(require("util")); -const error_1 = require("../error"); -const guard_1 = require("../utils/guard"); -const key_1 = require("../utils/key"); -const signer = __importStar(require("../utils/signer")); +const error_1 = require("./error"); +const utils_1 = require("./utils"); +const key_1 = require("./utils/key"); // A container class representing the public portion of a Key. class Key { constructor(options) { @@ -57,7 +33,7 @@ class Key { }); const signedData = metadata.signed.toJSON(); try { - if (!signer.verifySignature(signedData, publicKey, signature.sig)) { + if (!utils_1.crypto.verifySignature(signedData, publicKey, signature.sig)) { throw new error_1.UnsignedMetadataError(`failed to verify ${this.keyID} signature`); } } @@ -94,7 +70,7 @@ class Key { if (typeof scheme !== 'string') { throw new TypeError('scheme must be a string'); } - if (!(0, guard_1.isStringRecord)(keyval)) { + if (!utils_1.guard.isStringRecord(keyval)) { throw new TypeError('keyval must be a string record'); } return new Key({ diff --git a/deps/npm/node_modules/tuf-js/dist/models/metadata.d.ts b/deps/npm/node_modules/@tufjs/models/dist/metadata.d.ts similarity index 90% rename from deps/npm/node_modules/tuf-js/dist/models/metadata.d.ts rename to deps/npm/node_modules/@tufjs/models/dist/metadata.d.ts index 39abf034064496..55c9294a296eb2 100644 --- a/deps/npm/node_modules/tuf-js/dist/models/metadata.d.ts +++ b/deps/npm/node_modules/@tufjs/models/dist/metadata.d.ts @@ -1,10 +1,11 @@ -import { JSONObject, JSONValue, MetadataKind } from '../utils/types'; -import { Signable } from './base'; +/// +import { MetadataKind, Signable } from './base'; import { Root } from './root'; import { Signature } from './signature'; import { Snapshot } from './snapshot'; import { Targets } from './targets'; import { Timestamp } from './timestamp'; +import { JSONObject, JSONValue } from './utils'; type MetadataType = Root | Timestamp | Snapshot | Targets; /*** * A container for signed TUF metadata. @@ -35,8 +36,10 @@ export declare class Metadata implements Signable { signatures: Record; unrecognizedFields: Record; constructor(signed: T, signatures?: Record, unrecognizedFields?: Record); + sign(signer: (data: Buffer) => Signature, append?: boolean): void; verifyDelegate(delegatedRole: string, delegatedMetadata: Metadata): void; equals(other: T): boolean; + toJSON(): JSONObject; static fromJSON(type: MetadataKind.Root, data: JSONObject): Metadata; static fromJSON(type: MetadataKind.Timestamp, data: JSONObject): Metadata; static fromJSON(type: MetadataKind.Snapshot, data: JSONObject): Metadata; diff --git a/deps/npm/node_modules/tuf-js/dist/models/metadata.js b/deps/npm/node_modules/@tufjs/models/dist/metadata.js similarity index 82% rename from deps/npm/node_modules/tuf-js/dist/models/metadata.js rename to deps/npm/node_modules/@tufjs/models/dist/metadata.js index 11c3c546822acc..945d3a42a7cfb2 100644 --- a/deps/npm/node_modules/tuf-js/dist/models/metadata.js +++ b/deps/npm/node_modules/@tufjs/models/dist/metadata.js @@ -5,14 +5,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) { Object.defineProperty(exports, "__esModule", { value: true }); exports.Metadata = void 0; const util_1 = __importDefault(require("util")); -const error_1 = require("../error"); -const guard_1 = require("../utils/guard"); -const types_1 = require("../utils/types"); +const base_1 = require("./base"); +const error_1 = require("./error"); const root_1 = require("./root"); const signature_1 = require("./signature"); const snapshot_1 = require("./snapshot"); const targets_1 = require("./targets"); const timestamp_1 = require("./timestamp"); +const utils_1 = require("./utils"); +const json_1 = require("./utils/json"); /*** * A container for signed TUF metadata. * @@ -43,15 +44,23 @@ class Metadata { this.signatures = signatures || {}; this.unrecognizedFields = unrecognizedFields || {}; } + sign(signer, append = true) { + const bytes = (0, json_1.canonicalize)(this.signed.toJSON()); + const signature = signer(bytes); + if (!append) { + this.signatures = {}; + } + this.signatures[signature.keyID] = signature; + } verifyDelegate(delegatedRole, delegatedMetadata) { let role; let keys = {}; switch (this.signed.type) { - case types_1.MetadataKind.Root: + case base_1.MetadataKind.Root: keys = this.signed.keys; role = this.signed.roles[delegatedRole]; break; - case types_1.MetadataKind.Targets: + case base_1.MetadataKind.Targets: if (!this.signed.delegations) { throw new error_1.ValueError(`No delegations found for ${delegatedRole}`); } @@ -98,9 +107,19 @@ class Metadata { util_1.default.isDeepStrictEqual(this.signatures, other.signatures) && util_1.default.isDeepStrictEqual(this.unrecognizedFields, other.unrecognizedFields)); } + toJSON() { + const signatures = Object.values(this.signatures).map((signature) => { + return signature.toJSON(); + }); + return { + signatures, + signed: this.signed.toJSON(), + ...this.unrecognizedFields, + }; + } static fromJSON(type, data) { const { signed, signatures, ...rest } = data; - if (!(0, guard_1.isDefined)(signed) || !(0, guard_1.isObject)(signed)) { + if (!utils_1.guard.isDefined(signed) || !utils_1.guard.isObject(signed)) { throw new TypeError('signed is not defined'); } if (type !== signed._type) { @@ -108,16 +127,16 @@ class Metadata { } let signedObj; switch (type) { - case types_1.MetadataKind.Root: + case base_1.MetadataKind.Root: signedObj = root_1.Root.fromJSON(signed); break; - case types_1.MetadataKind.Timestamp: + case base_1.MetadataKind.Timestamp: signedObj = timestamp_1.Timestamp.fromJSON(signed); break; - case types_1.MetadataKind.Snapshot: + case base_1.MetadataKind.Snapshot: signedObj = snapshot_1.Snapshot.fromJSON(signed); break; - case types_1.MetadataKind.Targets: + case base_1.MetadataKind.Targets: signedObj = targets_1.Targets.fromJSON(signed); break; default: @@ -129,7 +148,7 @@ class Metadata { } exports.Metadata = Metadata; function signaturesFromJSON(data) { - if (!(0, guard_1.isObjectArray)(data)) { + if (!utils_1.guard.isObjectArray(data)) { throw new TypeError('signatures is not an array'); } return data.reduce((acc, sigData) => { diff --git a/deps/npm/node_modules/tuf-js/dist/models/role.d.ts b/deps/npm/node_modules/@tufjs/models/dist/role.d.ts similarity index 98% rename from deps/npm/node_modules/tuf-js/dist/models/role.d.ts rename to deps/npm/node_modules/@tufjs/models/dist/role.d.ts index 4575300fb972f9..b3a6efae2cac31 100644 --- a/deps/npm/node_modules/tuf-js/dist/models/role.d.ts +++ b/deps/npm/node_modules/@tufjs/models/dist/role.d.ts @@ -1,4 +1,4 @@ -import { JSONObject, JSONValue } from '../utils/types'; +import { JSONObject, JSONValue } from './utils'; export declare const TOP_LEVEL_ROLE_NAMES: string[]; export interface RoleOptions { keyIDs: string[]; diff --git a/deps/npm/node_modules/tuf-js/dist/models/role.js b/deps/npm/node_modules/@tufjs/models/dist/role.js similarity index 96% rename from deps/npm/node_modules/tuf-js/dist/models/role.js rename to deps/npm/node_modules/@tufjs/models/dist/role.js index da80a09b8b09f6..143c5dc6089665 100644 --- a/deps/npm/node_modules/tuf-js/dist/models/role.js +++ b/deps/npm/node_modules/@tufjs/models/dist/role.js @@ -7,8 +7,8 @@ exports.SuccinctRoles = exports.DelegatedRole = exports.Role = exports.TOP_LEVEL const crypto_1 = __importDefault(require("crypto")); const minimatch_1 = __importDefault(require("minimatch")); const util_1 = __importDefault(require("util")); -const error_1 = require("../error"); -const guard_1 = require("../utils/guard"); +const error_1 = require("./error"); +const utils_1 = require("./utils"); exports.TOP_LEVEL_ROLE_NAMES = [ 'root', 'targets', @@ -51,7 +51,7 @@ class Role { } static fromJSON(data) { const { keyids, threshold, ...rest } = data; - if (!(0, guard_1.isStringArray)(keyids)) { + if (!utils_1.guard.isStringArray(keyids)) { throw new TypeError('keyids must be an array'); } if (typeof threshold !== 'number') { @@ -128,7 +128,7 @@ class DelegatedRole extends Role { } static fromJSON(data) { const { keyids, threshold, name, terminating, paths, path_hash_prefixes, ...rest } = data; - if (!(0, guard_1.isStringArray)(keyids)) { + if (!utils_1.guard.isStringArray(keyids)) { throw new TypeError('keyids must be an array of strings'); } if (typeof threshold !== 'number') { @@ -140,10 +140,11 @@ class DelegatedRole extends Role { if (typeof terminating !== 'boolean') { throw new TypeError('terminating must be a boolean'); } - if ((0, guard_1.isDefined)(paths) && !(0, guard_1.isStringArray)(paths)) { + if (utils_1.guard.isDefined(paths) && !utils_1.guard.isStringArray(paths)) { throw new TypeError('paths must be an array of strings'); } - if ((0, guard_1.isDefined)(path_hash_prefixes) && !(0, guard_1.isStringArray)(path_hash_prefixes)) { + if (utils_1.guard.isDefined(path_hash_prefixes) && + !utils_1.guard.isStringArray(path_hash_prefixes)) { throw new TypeError('path_hash_prefixes must be an array of strings'); } return new DelegatedRole({ @@ -274,7 +275,7 @@ class SuccinctRoles extends Role { } static fromJSON(data) { const { keyids, threshold, bit_length, name_prefix, ...rest } = data; - if (!(0, guard_1.isStringArray)(keyids)) { + if (!utils_1.guard.isStringArray(keyids)) { throw new TypeError('keyids must be an array of strings'); } if (typeof threshold !== 'number') { diff --git a/deps/npm/node_modules/tuf-js/dist/models/root.d.ts b/deps/npm/node_modules/@tufjs/models/dist/root.d.ts similarity index 85% rename from deps/npm/node_modules/tuf-js/dist/models/root.d.ts rename to deps/npm/node_modules/@tufjs/models/dist/root.d.ts index 66356628f4b8a5..eb5eb8dede98b9 100644 --- a/deps/npm/node_modules/tuf-js/dist/models/root.d.ts +++ b/deps/npm/node_modules/@tufjs/models/dist/root.d.ts @@ -1,7 +1,7 @@ -import { JSONObject, MetadataKind } from '../utils/types'; -import { Signed, SignedOptions } from './base'; +import { MetadataKind, Signed, SignedOptions } from './base'; import { Key } from './key'; import { Role } from './role'; +import { JSONObject } from './utils'; type KeyMap = Record; type RoleMap = Record; export interface RootOptions extends SignedOptions { @@ -21,6 +21,7 @@ export declare class Root extends Signed { readonly roles: RoleMap; readonly consistentSnapshot: boolean; constructor(options: RootOptions); + addKey(key: Key, role: string): void; equals(other: Root): boolean; toJSON(): JSONObject; static fromJSON(data: JSONObject): Root; diff --git a/deps/npm/node_modules/tuf-js/dist/models/root.js b/deps/npm/node_modules/@tufjs/models/dist/root.js similarity index 84% rename from deps/npm/node_modules/tuf-js/dist/models/root.js rename to deps/npm/node_modules/@tufjs/models/dist/root.js index 574ec1acdcc39d..36d0ef0f186d15 100644 --- a/deps/npm/node_modules/tuf-js/dist/models/root.js +++ b/deps/npm/node_modules/@tufjs/models/dist/root.js @@ -5,12 +5,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) { Object.defineProperty(exports, "__esModule", { value: true }); exports.Root = void 0; const util_1 = __importDefault(require("util")); -const error_1 = require("../error"); -const guard_1 = require("../utils/guard"); -const types_1 = require("../utils/types"); const base_1 = require("./base"); +const error_1 = require("./error"); const key_1 = require("./key"); const role_1 = require("./role"); +const utils_1 = require("./utils"); /** * A container for the signed part of root metadata. * @@ -20,7 +19,7 @@ const role_1 = require("./role"); class Root extends base_1.Signed { constructor(options) { super(options); - this.type = types_1.MetadataKind.Root; + this.type = base_1.MetadataKind.Root; this.keys = options.keys || {}; this.consistentSnapshot = options.consistentSnapshot ?? true; if (!options.roles) { @@ -37,6 +36,15 @@ class Root extends base_1.Signed { this.roles = options.roles; } } + addKey(key, role) { + if (!this.roles[role]) { + throw new error_1.ValueError(`role ${role} does not exist`); + } + if (!this.roles[role].keyIDs.includes(key.keyID)) { + this.roles[role].keyIDs.push(key.keyID); + } + this.keys[key.keyID] = key; + } equals(other) { if (!(other instanceof Root)) { return false; @@ -48,6 +56,7 @@ class Root extends base_1.Signed { } toJSON() { return { + _type: this.type, spec_version: this.specVersion, version: this.version, expires: this.expires, @@ -81,8 +90,8 @@ function rolesToJSON(roles) { } function keysFromJSON(data) { let keys; - if ((0, guard_1.isDefined)(data)) { - if (!(0, guard_1.isObjectRecord)(data)) { + if (utils_1.guard.isDefined(data)) { + if (!utils_1.guard.isObjectRecord(data)) { throw new TypeError('keys must be an object'); } keys = Object.entries(data).reduce((acc, [keyID, keyData]) => ({ @@ -94,8 +103,8 @@ function keysFromJSON(data) { } function rolesFromJSON(data) { let roles; - if ((0, guard_1.isDefined)(data)) { - if (!(0, guard_1.isObjectRecord)(data)) { + if (utils_1.guard.isDefined(data)) { + if (!utils_1.guard.isObjectRecord(data)) { throw new TypeError('roles must be an object'); } roles = Object.entries(data).reduce((acc, [roleName, roleData]) => ({ diff --git a/deps/npm/node_modules/tuf-js/dist/models/signature.d.ts b/deps/npm/node_modules/@tufjs/models/dist/signature.d.ts similarity index 88% rename from deps/npm/node_modules/tuf-js/dist/models/signature.d.ts rename to deps/npm/node_modules/@tufjs/models/dist/signature.d.ts index 1d78e2d8e55d08..dbeabbef877174 100644 --- a/deps/npm/node_modules/tuf-js/dist/models/signature.d.ts +++ b/deps/npm/node_modules/@tufjs/models/dist/signature.d.ts @@ -1,4 +1,4 @@ -import { JSONObject } from '../utils/types'; +import { JSONObject } from './utils'; export interface SignatureOptions { keyID: string; sig: string; @@ -15,5 +15,6 @@ export declare class Signature { readonly keyID: string; readonly sig: string; constructor(options: SignatureOptions); + toJSON(): JSONObject; static fromJSON(data: JSONObject): Signature; } diff --git a/deps/npm/node_modules/tuf-js/dist/models/signature.js b/deps/npm/node_modules/@tufjs/models/dist/signature.js similarity index 89% rename from deps/npm/node_modules/tuf-js/dist/models/signature.js rename to deps/npm/node_modules/@tufjs/models/dist/signature.js index 9550fa7b551fc9..33eb204eb0835e 100644 --- a/deps/npm/node_modules/tuf-js/dist/models/signature.js +++ b/deps/npm/node_modules/@tufjs/models/dist/signature.js @@ -15,6 +15,12 @@ class Signature { this.keyID = keyID; this.sig = sig; } + toJSON() { + return { + keyid: this.keyID, + sig: this.sig, + }; + } static fromJSON(data) { const { keyid, sig } = data; if (typeof keyid !== 'string') { diff --git a/deps/npm/node_modules/tuf-js/dist/models/snapshot.d.ts b/deps/npm/node_modules/@tufjs/models/dist/snapshot.d.ts similarity index 87% rename from deps/npm/node_modules/tuf-js/dist/models/snapshot.d.ts rename to deps/npm/node_modules/@tufjs/models/dist/snapshot.d.ts index 79bc07359509bd..bcc780aee0977c 100644 --- a/deps/npm/node_modules/tuf-js/dist/models/snapshot.d.ts +++ b/deps/npm/node_modules/@tufjs/models/dist/snapshot.d.ts @@ -1,6 +1,6 @@ -import { JSONObject, MetadataKind } from '../utils/types'; -import { Signed, SignedOptions } from './base'; +import { MetadataKind, Signed, SignedOptions } from './base'; import { MetaFile } from './file'; +import { JSONObject } from './utils'; type MetaFileMap = Record; export interface SnapshotOptions extends SignedOptions { meta?: MetaFileMap; diff --git a/deps/npm/node_modules/tuf-js/dist/models/snapshot.js b/deps/npm/node_modules/@tufjs/models/dist/snapshot.js similarity index 89% rename from deps/npm/node_modules/tuf-js/dist/models/snapshot.js rename to deps/npm/node_modules/@tufjs/models/dist/snapshot.js index 0945a28cd03cc9..e90ea8e729e4e8 100644 --- a/deps/npm/node_modules/tuf-js/dist/models/snapshot.js +++ b/deps/npm/node_modules/@tufjs/models/dist/snapshot.js @@ -5,10 +5,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) { Object.defineProperty(exports, "__esModule", { value: true }); exports.Snapshot = void 0; const util_1 = __importDefault(require("util")); -const guard_1 = require("../utils/guard"); -const types_1 = require("../utils/types"); const base_1 = require("./base"); const file_1 = require("./file"); +const utils_1 = require("./utils"); /** * A container for the signed part of snapshot metadata. * @@ -19,7 +18,7 @@ const file_1 = require("./file"); class Snapshot extends base_1.Signed { constructor(opts) { super(opts); - this.type = types_1.MetadataKind.Snapshot; + this.type = base_1.MetadataKind.Snapshot; this.meta = opts.meta || { 'targets.json': new file_1.MetaFile({ version: 1 }) }; } equals(other) { @@ -30,6 +29,7 @@ class Snapshot extends base_1.Signed { } toJSON() { return { + _type: this.type, meta: metaToJSON(this.meta), spec_version: this.specVersion, version: this.version, @@ -56,8 +56,8 @@ function metaToJSON(meta) { } function metaFromJSON(data) { let meta; - if ((0, guard_1.isDefined)(data)) { - if (!(0, guard_1.isObjectRecord)(data)) { + if (utils_1.guard.isDefined(data)) { + if (!utils_1.guard.isObjectRecord(data)) { throw new TypeError('meta field is malformed'); } else { @@ -66,6 +66,6 @@ function metaFromJSON(data) { [path]: file_1.MetaFile.fromJSON(metadata), }), {}); } - return meta; } + return meta; } diff --git a/deps/npm/node_modules/tuf-js/dist/models/targets.d.ts b/deps/npm/node_modules/@tufjs/models/dist/targets.d.ts similarity index 80% rename from deps/npm/node_modules/tuf-js/dist/models/targets.d.ts rename to deps/npm/node_modules/@tufjs/models/dist/targets.d.ts index 24dba9ac715805..442f9e44391b41 100644 --- a/deps/npm/node_modules/tuf-js/dist/models/targets.d.ts +++ b/deps/npm/node_modules/@tufjs/models/dist/targets.d.ts @@ -1,7 +1,7 @@ -import { JSONObject, MetadataKind } from '../utils/types'; -import { Signed, SignedOptions } from './base'; +import { MetadataKind, Signed, SignedOptions } from './base'; import { Delegations } from './delegations'; import { TargetFile } from './file'; +import { JSONObject } from './utils'; type TargetFileMap = Record; interface TargetsOptions extends SignedOptions { targets?: TargetFileMap; @@ -12,6 +12,7 @@ export declare class Targets extends Signed { readonly targets: TargetFileMap; readonly delegations?: Delegations; constructor(options: TargetsOptions); + addTarget(target: TargetFile): void; equals(other: Targets): boolean; toJSON(): JSONObject; static fromJSON(data: JSONObject): Targets; diff --git a/deps/npm/node_modules/tuf-js/dist/models/targets.js b/deps/npm/node_modules/@tufjs/models/dist/targets.js similarity index 88% rename from deps/npm/node_modules/tuf-js/dist/models/targets.js rename to deps/npm/node_modules/@tufjs/models/dist/targets.js index 90a2528764708e..54bd8f8c554af5 100644 --- a/deps/npm/node_modules/tuf-js/dist/models/targets.js +++ b/deps/npm/node_modules/@tufjs/models/dist/targets.js @@ -5,11 +5,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) { Object.defineProperty(exports, "__esModule", { value: true }); exports.Targets = void 0; const util_1 = __importDefault(require("util")); -const guard_1 = require("../utils/guard"); -const types_1 = require("../utils/types"); const base_1 = require("./base"); const delegations_1 = require("./delegations"); const file_1 = require("./file"); +const utils_1 = require("./utils"); // Container for the signed part of targets metadata. // // Targets contains verifying information about target files and also delegates @@ -17,10 +16,13 @@ const file_1 = require("./file"); class Targets extends base_1.Signed { constructor(options) { super(options); - this.type = types_1.MetadataKind.Targets; + this.type = base_1.MetadataKind.Targets; this.targets = options.targets || {}; this.delegations = options.delegations; } + addTarget(target) { + this.targets[target.path] = target; + } equals(other) { if (!(other instanceof Targets)) { return false; @@ -31,6 +33,7 @@ class Targets extends base_1.Signed { } toJSON() { const json = { + _type: this.type, spec_version: this.specVersion, version: this.version, expires: this.expires, @@ -62,8 +65,8 @@ function targetsToJSON(targets) { } function targetsFromJSON(data) { let targets; - if ((0, guard_1.isDefined)(data)) { - if (!(0, guard_1.isObjectRecord)(data)) { + if (utils_1.guard.isDefined(data)) { + if (!utils_1.guard.isObjectRecord(data)) { throw new TypeError('targets must be an object'); } else { @@ -77,8 +80,8 @@ function targetsFromJSON(data) { } function delegationsFromJSON(data) { let delegations; - if ((0, guard_1.isDefined)(data)) { - if (!(0, guard_1.isObject)(data)) { + if (utils_1.guard.isDefined(data)) { + if (!utils_1.guard.isObject(data)) { throw new TypeError('delegations must be an object'); } else { diff --git a/deps/npm/node_modules/tuf-js/dist/models/timestamp.d.ts b/deps/npm/node_modules/@tufjs/models/dist/timestamp.d.ts similarity index 85% rename from deps/npm/node_modules/tuf-js/dist/models/timestamp.d.ts rename to deps/npm/node_modules/@tufjs/models/dist/timestamp.d.ts index 481ada8e238d53..9ab012b8912a32 100644 --- a/deps/npm/node_modules/tuf-js/dist/models/timestamp.d.ts +++ b/deps/npm/node_modules/@tufjs/models/dist/timestamp.d.ts @@ -1,6 +1,6 @@ -import { JSONObject, MetadataKind } from '../utils/types'; -import { Signed, SignedOptions } from './base'; +import { MetadataKind, Signed, SignedOptions } from './base'; import { MetaFile } from './file'; +import { JSONObject } from './utils'; interface TimestampOptions extends SignedOptions { snapshotMeta?: MetaFile; } diff --git a/deps/npm/node_modules/tuf-js/dist/models/timestamp.js b/deps/npm/node_modules/@tufjs/models/dist/timestamp.js similarity index 86% rename from deps/npm/node_modules/tuf-js/dist/models/timestamp.js rename to deps/npm/node_modules/@tufjs/models/dist/timestamp.js index 84f681b68d16a3..9880c4c9fc2549 100644 --- a/deps/npm/node_modules/tuf-js/dist/models/timestamp.js +++ b/deps/npm/node_modules/@tufjs/models/dist/timestamp.js @@ -1,10 +1,9 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Timestamp = void 0; -const guard_1 = require("../utils/guard"); -const types_1 = require("../utils/types"); const base_1 = require("./base"); const file_1 = require("./file"); +const utils_1 = require("./utils"); /** * A container for the signed part of timestamp metadata. * @@ -14,7 +13,7 @@ const file_1 = require("./file"); class Timestamp extends base_1.Signed { constructor(options) { super(options); - this.type = types_1.MetadataKind.Timestamp; + this.type = base_1.MetadataKind.Timestamp; this.snapshotMeta = options.snapshotMeta || new file_1.MetaFile({ version: 1 }); } equals(other) { @@ -25,6 +24,7 @@ class Timestamp extends base_1.Signed { } toJSON() { return { + _type: this.type, spec_version: this.specVersion, version: this.version, expires: this.expires, @@ -45,9 +45,9 @@ class Timestamp extends base_1.Signed { exports.Timestamp = Timestamp; function snapshotMetaFromJSON(data) { let snapshotMeta; - if ((0, guard_1.isDefined)(data)) { + if (utils_1.guard.isDefined(data)) { const snapshotData = data['snapshot.json']; - if (!(0, guard_1.isDefined)(snapshotData) || !(0, guard_1.isObject)(snapshotData)) { + if (!utils_1.guard.isDefined(snapshotData) || !utils_1.guard.isObject(snapshotData)) { throw new TypeError('missing snapshot.json in meta'); } else { diff --git a/deps/npm/node_modules/tuf-js/dist/utils/guard.d.ts b/deps/npm/node_modules/@tufjs/models/dist/utils/guard.d.ts similarity index 78% rename from deps/npm/node_modules/tuf-js/dist/utils/guard.d.ts rename to deps/npm/node_modules/@tufjs/models/dist/utils/guard.d.ts index 17bc4ce3c7ea53..60c80e160752e4 100644 --- a/deps/npm/node_modules/tuf-js/dist/utils/guard.d.ts +++ b/deps/npm/node_modules/@tufjs/models/dist/utils/guard.d.ts @@ -1,8 +1,7 @@ -import { JSONObject, MetadataKind } from './types'; +import { JSONObject } from './types'; export declare function isDefined(val: T | undefined): val is T; export declare function isObject(value: unknown): value is JSONObject; export declare function isStringArray(value: unknown): value is string[]; export declare function isObjectArray(value: unknown): value is JSONObject[]; export declare function isStringRecord(value: unknown): value is Record; export declare function isObjectRecord(value: unknown): value is Record; -export declare function isMetadataKind(value: unknown): value is MetadataKind; diff --git a/deps/npm/node_modules/tuf-js/dist/utils/guard.js b/deps/npm/node_modules/@tufjs/models/dist/utils/guard.js similarity index 74% rename from deps/npm/node_modules/tuf-js/dist/utils/guard.js rename to deps/npm/node_modules/@tufjs/models/dist/utils/guard.js index f2207af18690ac..efe558852303ce 100644 --- a/deps/npm/node_modules/tuf-js/dist/utils/guard.js +++ b/deps/npm/node_modules/@tufjs/models/dist/utils/guard.js @@ -1,7 +1,6 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.isMetadataKind = exports.isObjectRecord = exports.isStringRecord = exports.isObjectArray = exports.isStringArray = exports.isObject = exports.isDefined = void 0; -const types_1 = require("./types"); +exports.isObjectRecord = exports.isStringRecord = exports.isObjectArray = exports.isStringArray = exports.isObject = exports.isDefined = void 0; function isDefined(val) { return val !== undefined; } @@ -32,8 +31,3 @@ function isObjectRecord(value) { Object.values(value).every((v) => typeof v === 'object' && v !== null)); } exports.isObjectRecord = isObjectRecord; -function isMetadataKind(value) { - return (typeof value === 'string' && - Object.values(types_1.MetadataKind).includes(value)); -} -exports.isMetadataKind = isMetadataKind; diff --git a/deps/npm/node_modules/@tufjs/models/dist/utils/index.d.ts b/deps/npm/node_modules/@tufjs/models/dist/utils/index.d.ts new file mode 100644 index 00000000000000..7dbbd1eeecfdf6 --- /dev/null +++ b/deps/npm/node_modules/@tufjs/models/dist/utils/index.d.ts @@ -0,0 +1,3 @@ +export * as guard from './guard'; +export { JSONObject, JSONValue } from './types'; +export * as crypto from './verify'; diff --git a/deps/npm/node_modules/tuf-js/dist/utils/index.js b/deps/npm/node_modules/@tufjs/models/dist/utils/index.js similarity index 79% rename from deps/npm/node_modules/tuf-js/dist/utils/index.js rename to deps/npm/node_modules/@tufjs/models/dist/utils/index.js index 604696a30565b4..872aae28049c9c 100644 --- a/deps/npm/node_modules/tuf-js/dist/utils/index.js +++ b/deps/npm/node_modules/@tufjs/models/dist/utils/index.js @@ -23,9 +23,6 @@ var __importStar = (this && this.__importStar) || function (mod) { return result; }; Object.defineProperty(exports, "__esModule", { value: true }); -exports.types = exports.signer = exports.json = exports.guard = exports.config = void 0; -exports.config = __importStar(require("./config")); +exports.crypto = exports.guard = void 0; exports.guard = __importStar(require("./guard")); -exports.json = __importStar(require("./json")); -exports.signer = __importStar(require("./signer")); -exports.types = __importStar(require("./types")); +exports.crypto = __importStar(require("./verify")); diff --git a/deps/npm/node_modules/tuf-js/dist/utils/json.d.ts b/deps/npm/node_modules/@tufjs/models/dist/utils/json.d.ts similarity index 100% rename from deps/npm/node_modules/tuf-js/dist/utils/json.d.ts rename to deps/npm/node_modules/@tufjs/models/dist/utils/json.d.ts diff --git a/deps/npm/node_modules/tuf-js/dist/utils/json.js b/deps/npm/node_modules/@tufjs/models/dist/utils/json.js similarity index 100% rename from deps/npm/node_modules/tuf-js/dist/utils/json.js rename to deps/npm/node_modules/@tufjs/models/dist/utils/json.js diff --git a/deps/npm/node_modules/tuf-js/dist/utils/key.d.ts b/deps/npm/node_modules/@tufjs/models/dist/utils/key.d.ts similarity index 100% rename from deps/npm/node_modules/tuf-js/dist/utils/key.d.ts rename to deps/npm/node_modules/@tufjs/models/dist/utils/key.d.ts diff --git a/deps/npm/node_modules/tuf-js/dist/utils/key.js b/deps/npm/node_modules/@tufjs/models/dist/utils/key.js similarity index 100% rename from deps/npm/node_modules/tuf-js/dist/utils/key.js rename to deps/npm/node_modules/@tufjs/models/dist/utils/key.js diff --git a/deps/npm/node_modules/tuf-js/dist/utils/oid.d.ts b/deps/npm/node_modules/@tufjs/models/dist/utils/oid.d.ts similarity index 100% rename from deps/npm/node_modules/tuf-js/dist/utils/oid.d.ts rename to deps/npm/node_modules/@tufjs/models/dist/utils/oid.d.ts diff --git a/deps/npm/node_modules/tuf-js/dist/utils/oid.js b/deps/npm/node_modules/@tufjs/models/dist/utils/oid.js similarity index 100% rename from deps/npm/node_modules/tuf-js/dist/utils/oid.js rename to deps/npm/node_modules/@tufjs/models/dist/utils/oid.js diff --git a/deps/npm/node_modules/tuf-js/dist/utils/types.d.ts b/deps/npm/node_modules/@tufjs/models/dist/utils/types.d.ts similarity index 51% rename from deps/npm/node_modules/tuf-js/dist/utils/types.d.ts rename to deps/npm/node_modules/@tufjs/models/dist/utils/types.d.ts index 24319ddf7bb6bc..dd3964ec571e23 100644 --- a/deps/npm/node_modules/tuf-js/dist/utils/types.d.ts +++ b/deps/npm/node_modules/@tufjs/models/dist/utils/types.d.ts @@ -1,9 +1,3 @@ -export declare enum MetadataKind { - Root = "root", - Timestamp = "timestamp", - Snapshot = "snapshot", - Targets = "targets" -} export type JSONObject = { [key: string]: JSONValue; }; diff --git a/deps/npm/node_modules/@tufjs/models/dist/utils/types.js b/deps/npm/node_modules/@tufjs/models/dist/utils/types.js new file mode 100644 index 00000000000000..c8ad2e549bdc68 --- /dev/null +++ b/deps/npm/node_modules/@tufjs/models/dist/utils/types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/deps/npm/node_modules/tuf-js/dist/utils/signer.d.ts b/deps/npm/node_modules/@tufjs/models/dist/utils/verify.d.ts similarity index 100% rename from deps/npm/node_modules/tuf-js/dist/utils/signer.d.ts rename to deps/npm/node_modules/@tufjs/models/dist/utils/verify.d.ts diff --git a/deps/npm/node_modules/tuf-js/dist/utils/signer.js b/deps/npm/node_modules/@tufjs/models/dist/utils/verify.js similarity index 100% rename from deps/npm/node_modules/tuf-js/dist/utils/signer.js rename to deps/npm/node_modules/@tufjs/models/dist/utils/verify.js diff --git a/deps/npm/node_modules/@tufjs/models/package.json b/deps/npm/node_modules/@tufjs/models/package.json new file mode 100644 index 00000000000000..f3746c27041fdd --- /dev/null +++ b/deps/npm/node_modules/@tufjs/models/package.json @@ -0,0 +1,41 @@ +{ + "name": "@tufjs/models", + "version": "1.0.0", + "description": "TUF metadata models", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "files": [ + "dist" + ], + "scripts": { + "build": "tsc --build", + "clean": "rm -rf dist && rm tsconfig.tsbuildinfo", + "test": "jest" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/theupdateframework/tuf-js.git" + }, + "keywords": [ + "tuf", + "security", + "update" + ], + "author": "bdehamer@github.com", + "license": "MIT", + "bugs": { + "url": "https://github.com/theupdateframework/tuf-js/issues" + }, + "homepage": "https://github.com/theupdateframework/tuf-js/packages/models#readme", + "devDependencies": { + "@types/minimatch": "^5.1.2", + "@types/node": "^18.14.1", + "typescript": "^4.9.5" + }, + "dependencies": { + "minimatch": "^6.1.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } +} diff --git a/deps/npm/node_modules/agentkeepalive/package.json b/deps/npm/node_modules/agentkeepalive/package.json index efa561d2c6d6c1..3115fee69a0416 100644 --- a/deps/npm/node_modules/agentkeepalive/package.json +++ b/deps/npm/node_modules/agentkeepalive/package.json @@ -1,6 +1,6 @@ { "name": "agentkeepalive", - "version": "4.2.1", + "version": "4.3.0", "description": "Missing keepalive http.Agent", "main": "index.js", "browser": "browser.js", @@ -11,12 +11,12 @@ "lib" ], "scripts": { + "contributor": "git-contributor", "test": "npm run lint && egg-bin test --full-trace", "test-local": "egg-bin test --full-trace", "cov": "cross-env DEBUG=agentkeepalive egg-bin cov --full-trace", "ci": "npm run lint && npm run cov", - "lint": "eslint lib test index.js", - "autod": "autod" + "lint": "eslint lib test index.js" }, "repository": { "type": "git", @@ -36,17 +36,16 @@ ], "dependencies": { "debug": "^4.1.0", - "depd": "^1.1.2", + "depd": "^2.0.0", "humanize-ms": "^1.2.1" }, "devDependencies": { - "autod": "^3.0.1", "coffee": "^5.3.0", "cross-env": "^6.0.3", "egg-bin": "^4.9.0", - "egg-ci": "^1.10.0", "eslint": "^5.7.0", "eslint-config-egg": "^7.1.0", + "git-contributor": "^2.0.0", "mm": "^2.4.1", "pedding": "^1.1.0", "typescript": "^3.8.3" @@ -54,13 +53,6 @@ "engines": { "node": ">= 8.0.0" }, - "ci": { - "type": "github", - "os": { - "github": "linux" - }, - "version": "8, 10, 12, 14, 16" - }, - "author": "fengmk2 (https://fengmk2.com)", + "author": "fengmk2 (https://github.com/fengmk2)", "license": "MIT" } diff --git a/deps/npm/node_modules/depd/History.md b/deps/npm/node_modules/depd/History.md index 507ecb8de21d5d..cd9ebaaa9963f7 100644 --- a/deps/npm/node_modules/depd/History.md +++ b/deps/npm/node_modules/depd/History.md @@ -1,3 +1,10 @@ +2.0.0 / 2018-10-26 +================== + + * Drop support for Node.js 0.6 + * Replace internal `eval` usage with `Function` constructor + * Use instance methods on `process` to check for listeners + 1.1.2 / 2018-01-11 ================== diff --git a/deps/npm/node_modules/depd/LICENSE b/deps/npm/node_modules/depd/LICENSE index 84441fbb570926..248de7af2bd16c 100644 --- a/deps/npm/node_modules/depd/LICENSE +++ b/deps/npm/node_modules/depd/LICENSE @@ -1,6 +1,6 @@ (The MIT License) -Copyright (c) 2014-2017 Douglas Christopher Wilson +Copyright (c) 2014-2018 Douglas Christopher Wilson Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the diff --git a/deps/npm/node_modules/depd/index.js b/deps/npm/node_modules/depd/index.js index d758d3c8f58a60..1bf2fcfdeffc98 100644 --- a/deps/npm/node_modules/depd/index.js +++ b/deps/npm/node_modules/depd/index.js @@ -1,6 +1,6 @@ /*! * depd - * Copyright(c) 2014-2017 Douglas Christopher Wilson + * Copyright(c) 2014-2018 Douglas Christopher Wilson * MIT Licensed */ @@ -8,8 +8,6 @@ * Module dependencies. */ -var callSiteToString = require('./lib/compat').callSiteToString -var eventListenerCount = require('./lib/compat').eventListenerCount var relative = require('path').relative /** @@ -92,7 +90,7 @@ function createStackString (stack) { } for (var i = 0; i < stack.length; i++) { - str += '\n at ' + callSiteToString(stack[i]) + str += '\n at ' + stack[i].toString() } return str @@ -128,12 +126,31 @@ function depd (namespace) { return deprecate } +/** + * Determine if event emitter has listeners of a given type. + * + * The way to do this check is done three different ways in Node.js >= 0.8 + * so this consolidates them into a minimal set using instance methods. + * + * @param {EventEmitter} emitter + * @param {string} type + * @returns {boolean} + * @private + */ + +function eehaslisteners (emitter, type) { + var count = typeof emitter.listenerCount !== 'function' + ? emitter.listeners(type).length + : emitter.listenerCount(type) + + return count > 0 +} + /** * Determine if namespace is ignored. */ function isignored (namespace) { - /* istanbul ignore next: tested in a child processs */ if (process.noDeprecation) { // --no-deprecation support return true @@ -150,7 +167,6 @@ function isignored (namespace) { */ function istraced (namespace) { - /* istanbul ignore next: tested in a child processs */ if (process.traceDeprecation) { // --trace-deprecation support return true @@ -167,7 +183,7 @@ function istraced (namespace) { */ function log (message, site) { - var haslisteners = eventListenerCount(process, 'deprecation') !== 0 + var haslisteners = eehaslisteners(process, 'deprecation') // abort early if no destination if (!haslisteners && this._ignored) { @@ -310,7 +326,7 @@ function formatPlain (msg, caller, stack) { // add stack trace if (this._traced) { for (var i = 0; i < stack.length; i++) { - formatted += '\n at ' + callSiteToString(stack[i]) + formatted += '\n at ' + stack[i].toString() } return formatted @@ -335,7 +351,7 @@ function formatColor (msg, caller, stack) { // add stack trace if (this._traced) { for (var i = 0; i < stack.length; i++) { - formatted += '\n \x1b[36mat ' + callSiteToString(stack[i]) + '\x1b[39m' // cyan + formatted += '\n \x1b[36mat ' + stack[i].toString() + '\x1b[39m' // cyan } return formatted @@ -400,18 +416,18 @@ function wrapfunction (fn, message) { } var args = createArgumentsString(fn.length) - var deprecate = this // eslint-disable-line no-unused-vars var stack = getStack() var site = callSiteLocation(stack[1]) site.name = fn.name - // eslint-disable-next-line no-eval - var deprecatedfn = eval('(function (' + args + ') {\n' + + // eslint-disable-next-line no-new-func + var deprecatedfn = new Function('fn', 'log', 'deprecate', 'message', 'site', '"use strict"\n' + + 'return function (' + args + ') {' + 'log.call(deprecate, message, site)\n' + 'return fn.apply(this, arguments)\n' + - '})') + '}')(fn, log, this, message, site) return deprecatedfn } diff --git a/deps/npm/node_modules/depd/lib/compat/callsite-tostring.js b/deps/npm/node_modules/depd/lib/compat/callsite-tostring.js deleted file mode 100644 index 73186dc644a366..00000000000000 --- a/deps/npm/node_modules/depd/lib/compat/callsite-tostring.js +++ /dev/null @@ -1,103 +0,0 @@ -/*! - * depd - * Copyright(c) 2014 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module exports. - */ - -module.exports = callSiteToString - -/** - * Format a CallSite file location to a string. - */ - -function callSiteFileLocation (callSite) { - var fileName - var fileLocation = '' - - if (callSite.isNative()) { - fileLocation = 'native' - } else if (callSite.isEval()) { - fileName = callSite.getScriptNameOrSourceURL() - if (!fileName) { - fileLocation = callSite.getEvalOrigin() - } - } else { - fileName = callSite.getFileName() - } - - if (fileName) { - fileLocation += fileName - - var lineNumber = callSite.getLineNumber() - if (lineNumber != null) { - fileLocation += ':' + lineNumber - - var columnNumber = callSite.getColumnNumber() - if (columnNumber) { - fileLocation += ':' + columnNumber - } - } - } - - return fileLocation || 'unknown source' -} - -/** - * Format a CallSite to a string. - */ - -function callSiteToString (callSite) { - var addSuffix = true - var fileLocation = callSiteFileLocation(callSite) - var functionName = callSite.getFunctionName() - var isConstructor = callSite.isConstructor() - var isMethodCall = !(callSite.isToplevel() || isConstructor) - var line = '' - - if (isMethodCall) { - var methodName = callSite.getMethodName() - var typeName = getConstructorName(callSite) - - if (functionName) { - if (typeName && functionName.indexOf(typeName) !== 0) { - line += typeName + '.' - } - - line += functionName - - if (methodName && functionName.lastIndexOf('.' + methodName) !== functionName.length - methodName.length - 1) { - line += ' [as ' + methodName + ']' - } - } else { - line += typeName + '.' + (methodName || '') - } - } else if (isConstructor) { - line += 'new ' + (functionName || '') - } else if (functionName) { - line += functionName - } else { - addSuffix = false - line += fileLocation - } - - if (addSuffix) { - line += ' (' + fileLocation + ')' - } - - return line -} - -/** - * Get constructor name of reviver. - */ - -function getConstructorName (obj) { - var receiver = obj.receiver - return (receiver.constructor && receiver.constructor.name) || null -} diff --git a/deps/npm/node_modules/depd/lib/compat/event-listener-count.js b/deps/npm/node_modules/depd/lib/compat/event-listener-count.js deleted file mode 100644 index 3a8925d136ae6e..00000000000000 --- a/deps/npm/node_modules/depd/lib/compat/event-listener-count.js +++ /dev/null @@ -1,22 +0,0 @@ -/*! - * depd - * Copyright(c) 2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module exports. - * @public - */ - -module.exports = eventListenerCount - -/** - * Get the count of listeners on an event emitter of a specific type. - */ - -function eventListenerCount (emitter, type) { - return emitter.listeners(type).length -} diff --git a/deps/npm/node_modules/depd/lib/compat/index.js b/deps/npm/node_modules/depd/lib/compat/index.js deleted file mode 100644 index 955b3336b25e79..00000000000000 --- a/deps/npm/node_modules/depd/lib/compat/index.js +++ /dev/null @@ -1,79 +0,0 @@ -/*! - * depd - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - * @private - */ - -var EventEmitter = require('events').EventEmitter - -/** - * Module exports. - * @public - */ - -lazyProperty(module.exports, 'callSiteToString', function callSiteToString () { - var limit = Error.stackTraceLimit - var obj = {} - var prep = Error.prepareStackTrace - - function prepareObjectStackTrace (obj, stack) { - return stack - } - - Error.prepareStackTrace = prepareObjectStackTrace - Error.stackTraceLimit = 2 - - // capture the stack - Error.captureStackTrace(obj) - - // slice the stack - var stack = obj.stack.slice() - - Error.prepareStackTrace = prep - Error.stackTraceLimit = limit - - return stack[0].toString ? toString : require('./callsite-tostring') -}) - -lazyProperty(module.exports, 'eventListenerCount', function eventListenerCount () { - return EventEmitter.listenerCount || require('./event-listener-count') -}) - -/** - * Define a lazy property. - */ - -function lazyProperty (obj, prop, getter) { - function get () { - var val = getter() - - Object.defineProperty(obj, prop, { - configurable: true, - enumerable: true, - value: val - }) - - return val - } - - Object.defineProperty(obj, prop, { - configurable: true, - enumerable: true, - get: get - }) -} - -/** - * Call toString() on the obj - */ - -function toString (obj) { - return obj.toString() -} diff --git a/deps/npm/node_modules/depd/package.json b/deps/npm/node_modules/depd/package.json index 5e3c863216e40f..3857e199184a0a 100644 --- a/deps/npm/node_modules/depd/package.json +++ b/deps/npm/node_modules/depd/package.json @@ -1,7 +1,7 @@ { "name": "depd", "description": "Deprecate all the things", - "version": "1.1.2", + "version": "2.0.0", "author": "Douglas Christopher Wilson ", "license": "MIT", "keywords": [ @@ -13,13 +13,17 @@ "devDependencies": { "benchmark": "2.1.4", "beautify-benchmark": "0.2.4", - "eslint": "3.19.0", - "eslint-config-standard": "7.1.0", + "eslint": "5.7.0", + "eslint-config-standard": "12.0.0", + "eslint-plugin-import": "2.14.0", "eslint-plugin-markdown": "1.0.0-beta.7", - "eslint-plugin-promise": "3.6.0", - "eslint-plugin-standard": "3.0.1", + "eslint-plugin-node": "7.0.1", + "eslint-plugin-promise": "4.0.1", + "eslint-plugin-standard": "4.0.0", "istanbul": "0.4.5", - "mocha": "~1.21.5" + "mocha": "5.2.0", + "safe-buffer": "5.1.2", + "uid-safe": "2.1.5" }, "files": [ "lib/", @@ -29,13 +33,13 @@ "Readme.md" ], "engines": { - "node": ">= 0.6" + "node": ">= 0.8" }, "scripts": { "bench": "node benchmark/index.js", "lint": "eslint --plugin markdown --ext js,md .", "test": "mocha --reporter spec --bail test/", - "test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --no-exit test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot test/" + "test-ci": "istanbul cover --print=none node_modules/mocha/bin/_mocha -- --reporter spec test/ && istanbul report lcovonly text-summary", + "test-cov": "istanbul cover --print=none node_modules/mocha/bin/_mocha -- --reporter dot test/ && istanbul report lcov text-summary" } } diff --git a/deps/npm/node_modules/libnpmaccess/package.json b/deps/npm/node_modules/libnpmaccess/package.json index ae4cb8b21eb4bb..30f83a49e5f2b9 100644 --- a/deps/npm/node_modules/libnpmaccess/package.json +++ b/deps/npm/node_modules/libnpmaccess/package.json @@ -17,7 +17,7 @@ "devDependencies": { "@npmcli/eslint-config": "^4.0.0", "@npmcli/mock-registry": "^1.0.0", - "@npmcli/template-oss": "4.11.4", + "@npmcli/template-oss": "4.12.0", "nock": "^13.3.0", "tap": "^16.3.4" }, @@ -41,7 +41,7 @@ ], "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.11.4", + "version": "4.12.0", "content": "../../scripts/template-oss/index.js" }, "tap": { diff --git a/deps/npm/node_modules/libnpmdiff/package.json b/deps/npm/node_modules/libnpmdiff/package.json index cdd01c25c3ae54..32f845e483b320 100644 --- a/deps/npm/node_modules/libnpmdiff/package.json +++ b/deps/npm/node_modules/libnpmdiff/package.json @@ -1,6 +1,6 @@ { "name": "libnpmdiff", - "version": "5.0.11", + "version": "5.0.13", "description": "The registry diff", "repository": { "type": "git", @@ -42,13 +42,13 @@ }, "devDependencies": { "@npmcli/eslint-config": "^4.0.0", - "@npmcli/template-oss": "4.11.4", + "@npmcli/template-oss": "4.12.0", "tap": "^16.3.4" }, "dependencies": { - "@npmcli/arborist": "^6.2.3", + "@npmcli/arborist": "^6.2.5", "@npmcli/disparity-colors": "^3.0.0", - "@npmcli/installed-package-contents": "^2.0.0", + "@npmcli/installed-package-contents": "^2.0.2", "binary-extensions": "^2.2.0", "diff": "^5.1.0", "minimatch": "^6.1.6", @@ -58,7 +58,7 @@ }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.11.4", + "version": "4.12.0", "content": "../../scripts/template-oss/index.js" }, "tap": { diff --git a/deps/npm/node_modules/libnpmexec/package.json b/deps/npm/node_modules/libnpmexec/package.json index f13b16ed17e529..5e1d5643cd303c 100644 --- a/deps/npm/node_modules/libnpmexec/package.json +++ b/deps/npm/node_modules/libnpmexec/package.json @@ -1,6 +1,6 @@ { "name": "libnpmexec", - "version": "5.0.11", + "version": "5.0.13", "files": [ "bin/", "lib/" @@ -52,7 +52,7 @@ "devDependencies": { "@npmcli/eslint-config": "^4.0.0", "@npmcli/mock-registry": "^1.0.0", - "@npmcli/template-oss": "4.11.4", + "@npmcli/template-oss": "4.12.0", "bin-links": "^4.0.1", "just-extend": "^6.2.0", "just-safe-set": "^4.2.1", @@ -60,7 +60,7 @@ "tap": "^16.3.4" }, "dependencies": { - "@npmcli/arborist": "^6.2.3", + "@npmcli/arborist": "^6.2.5", "@npmcli/run-script": "^6.0.0", "chalk": "^4.1.0", "ci-info": "^3.7.1", @@ -75,7 +75,7 @@ }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.11.4", + "version": "4.12.0", "content": "../../scripts/template-oss/index.js" } } diff --git a/deps/npm/node_modules/libnpmfund/package.json b/deps/npm/node_modules/libnpmfund/package.json index 36ec66de751031..dbb9d1f9038c85 100644 --- a/deps/npm/node_modules/libnpmfund/package.json +++ b/deps/npm/node_modules/libnpmfund/package.json @@ -1,6 +1,6 @@ { "name": "libnpmfund", - "version": "4.0.11", + "version": "4.0.13", "main": "lib/index.js", "files": [ "bin/", @@ -41,18 +41,18 @@ }, "devDependencies": { "@npmcli/eslint-config": "^4.0.0", - "@npmcli/template-oss": "4.11.4", + "@npmcli/template-oss": "4.12.0", "tap": "^16.3.4" }, "dependencies": { - "@npmcli/arborist": "^6.2.3" + "@npmcli/arborist": "^6.2.5" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.11.4", + "version": "4.12.0", "content": "../../scripts/template-oss/index.js" }, "tap": { diff --git a/deps/npm/node_modules/libnpmhook/package.json b/deps/npm/node_modules/libnpmhook/package.json index 493b64359cc220..cd3fb93a3401ed 100644 --- a/deps/npm/node_modules/libnpmhook/package.json +++ b/deps/npm/node_modules/libnpmhook/package.json @@ -35,7 +35,7 @@ }, "devDependencies": { "@npmcli/eslint-config": "^4.0.0", - "@npmcli/template-oss": "4.11.4", + "@npmcli/template-oss": "4.12.0", "nock": "^13.3.0", "tap": "^16.3.4" }, @@ -44,7 +44,7 @@ }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.11.4", + "version": "4.12.0", "content": "../../scripts/template-oss/index.js" }, "tap": { diff --git a/deps/npm/node_modules/libnpmorg/package.json b/deps/npm/node_modules/libnpmorg/package.json index 97d957492eae91..28ed6b7a3cf417 100644 --- a/deps/npm/node_modules/libnpmorg/package.json +++ b/deps/npm/node_modules/libnpmorg/package.json @@ -28,7 +28,7 @@ ], "devDependencies": { "@npmcli/eslint-config": "^4.0.0", - "@npmcli/template-oss": "4.11.4", + "@npmcli/template-oss": "4.12.0", "minipass": "^4.0.2", "nock": "^13.3.0", "tap": "^16.3.4" @@ -49,7 +49,7 @@ }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.11.4", + "version": "4.12.0", "content": "../../scripts/template-oss/index.js" }, "tap": { diff --git a/deps/npm/node_modules/libnpmpack/package.json b/deps/npm/node_modules/libnpmpack/package.json index ef256ad38df7af..23cd712a7ab3aa 100644 --- a/deps/npm/node_modules/libnpmpack/package.json +++ b/deps/npm/node_modules/libnpmpack/package.json @@ -1,6 +1,6 @@ { "name": "libnpmpack", - "version": "5.0.11", + "version": "5.0.13", "description": "Programmatic API for the bits behind npm pack", "author": "GitHub Inc.", "main": "lib/index.js", @@ -23,7 +23,7 @@ }, "devDependencies": { "@npmcli/eslint-config": "^4.0.0", - "@npmcli/template-oss": "4.11.4", + "@npmcli/template-oss": "4.12.0", "nock": "^13.3.0", "spawk": "^1.7.1", "tap": "^16.3.4" @@ -36,7 +36,7 @@ "bugs": "https://github.com/npm/libnpmpack/issues", "homepage": "https://npmjs.com/package/libnpmpack", "dependencies": { - "@npmcli/arborist": "^6.2.3", + "@npmcli/arborist": "^6.2.5", "@npmcli/run-script": "^6.0.0", "npm-package-arg": "^10.1.0", "pacote": "^15.0.8" @@ -46,7 +46,7 @@ }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.11.4", + "version": "4.12.0", "content": "../../scripts/template-oss/index.js" }, "tap": { diff --git a/deps/npm/node_modules/libnpmpublish/lib/provenance.js b/deps/npm/node_modules/libnpmpublish/lib/provenance.js index d11d210478b651..1eb870da5f24f7 100644 --- a/deps/npm/node_modules/libnpmpublish/lib/provenance.js +++ b/deps/npm/node_modules/libnpmpublish/lib/provenance.js @@ -4,39 +4,40 @@ const INTOTO_PAYLOAD_TYPE = 'application/vnd.in-toto+json' const INTOTO_STATEMENT_TYPE = 'https://in-toto.io/Statement/v0.1' const SLSA_PREDICATE_TYPE = 'https://slsa.dev/provenance/v0.2' -const BUILDER_ID_PREFIX = 'https://github.com/npm/cli' +const BUILDER_ID = 'https://github.com/actions/runner' const BUILD_TYPE_PREFIX = 'https://github.com/npm/cli/gha' -const BUILD_TYPE_VERSION = 'v1' +const BUILD_TYPE_VERSION = 'v2' const generateProvenance = async (subject, opts) => { const { env } = process + /* istanbul ignore next - not covering missing env var case */ + const [workflowPath] = (env.GITHUB_WORKFLOW_REF || '') + .replace(env.GITHUB_REPOSITORY + '/', '') + .split('@') const payload = { _type: INTOTO_STATEMENT_TYPE, subject, predicateType: SLSA_PREDICATE_TYPE, predicate: { - buildType: `${BUILD_TYPE_PREFIX}@${BUILD_TYPE_VERSION}`, - builder: { id: `${BUILDER_ID_PREFIX}@${opts.npmVersion}` }, + buildType: `${BUILD_TYPE_PREFIX}/${BUILD_TYPE_VERSION}`, + builder: { id: BUILDER_ID }, invocation: { configSource: { uri: `git+${env.GITHUB_SERVER_URL}/${env.GITHUB_REPOSITORY}@${env.GITHUB_REF}`, digest: { sha1: env.GITHUB_SHA, }, - entryPoint: env.GITHUB_WORKFLOW_REF, + entryPoint: workflowPath, }, parameters: {}, environment: { - GITHUB_ACTOR_ID: env.GITHUB_ACTOR_ID, GITHUB_EVENT_NAME: env.GITHUB_EVENT_NAME, GITHUB_REF: env.GITHUB_REF, - GITHUB_REF_TYPE: env.GITHUB_REF_TYPE, GITHUB_REPOSITORY: env.GITHUB_REPOSITORY, GITHUB_REPOSITORY_ID: env.GITHUB_REPOSITORY_ID, GITHUB_REPOSITORY_OWNER_ID: env.GITHUB_REPOSITORY_OWNER_ID, GITHUB_RUN_ATTEMPT: env.GITHUB_RUN_ATTEMPT, GITHUB_RUN_ID: env.GITHUB_RUN_ID, - GITHUB_RUN_NUMBER: env.GITHUB_RUN_NUMBER, GITHUB_SHA: env.GITHUB_SHA, GITHUB_WORKFLOW_REF: env.GITHUB_WORKFLOW_REF, GITHUB_WORKFLOW_SHA: env.GITHUB_WORKFLOW_SHA, @@ -53,7 +54,7 @@ const generateProvenance = async (subject, opts) => { }, materials: [ { - uri: `git+${env.GITHUB_SERVER_URL}/${env.GITHUB_REPOSITORY}`, + uri: `git+${env.GITHUB_SERVER_URL}/${env.GITHUB_REPOSITORY}@${env.GITHUB_REF}`, digest: { sha1: env.GITHUB_SHA, }, diff --git a/deps/npm/node_modules/libnpmpublish/lib/publish.js b/deps/npm/node_modules/libnpmpublish/lib/publish.js index 353688a10eac19..25dedb23633d79 100644 --- a/deps/npm/node_modules/libnpmpublish/lib/publish.js +++ b/deps/npm/node_modules/libnpmpublish/lib/publish.js @@ -1,6 +1,7 @@ const { fixer } = require('normalize-package-data') const npmFetch = require('npm-registry-fetch') const npa = require('npm-package-arg') +const log = require('proc-log') const semver = require('semver') const { URL } = require('url') const ssri = require('ssri') @@ -8,6 +9,8 @@ const ciInfo = require('ci-info') const { generateProvenance } = require('./provenance') +const TLOG_BASE_URL = 'https://rekor.sigstore.dev/api/v1/log/entries' + const publish = async (manifest, tarballData, opts) => { if (manifest.private) { throw Object.assign( @@ -141,15 +144,23 @@ const buildMetadata = async (registry, manifest, tarballData, spec, opts) => { digest: { sha512: integrity.sha512[0].hexDigest() }, } - // Ensure that we're running in GHA and an OIDC token is available, - // currently the only supported build environment - if (ciInfo.name !== 'GitHub Actions' || !process.env.ACTIONS_ID_TOKEN_REQUEST_URL) { + // Ensure that we're running in GHA, currently the only supported build environment + if (ciInfo.name !== 'GitHub Actions') { throw Object.assign( new Error('Automatic provenance generation not supported outside of GitHub Actions'), { code: 'EUSAGE' } ) } + // Ensure that the GHA OIDC token is available + if (!process.env.ACTIONS_ID_TOKEN_REQUEST_URL) { + throw Object.assign( + /* eslint-disable-next-line max-len */ + new Error('Provenance generation in GitHub Actions requires "write" access to the "id-token" permission'), + { code: 'EUSAGE' } + ) + } + const visibility = await npmFetch.json(`${registry}/-/package/${spec.escapedName}/visibility`, opts) if (!visibility.public && opts.provenance === true && opts.access !== 'public') { @@ -161,6 +172,16 @@ const buildMetadata = async (registry, manifest, tarballData, spec, opts) => { } const provenanceBundle = await generateProvenance([subject], opts) + /* eslint-disable-next-line max-len */ + log.notice('publish', 'Signed provenance statement with source and build information from GitHub Actions') + + const tlogEntry = provenanceBundle?.verificationMaterial?.tlogEntries[0] + /* istanbul ignore else */ + if (tlogEntry) { + const logUrl = `${TLOG_BASE_URL}?logIndex=${tlogEntry.logIndex}` + log.notice('publish', `Provenance statement published to transparency log: ${logUrl}`) + } + const serializedBundle = JSON.stringify(provenanceBundle) root._attachments[provenanceBundleName] = { content_type: provenanceBundle.mediaType, diff --git a/deps/npm/node_modules/libnpmpublish/package.json b/deps/npm/node_modules/libnpmpublish/package.json index 1b6a53eae61561..7c04d2adb9f206 100644 --- a/deps/npm/node_modules/libnpmpublish/package.json +++ b/deps/npm/node_modules/libnpmpublish/package.json @@ -1,6 +1,6 @@ { "name": "libnpmpublish", - "version": "7.1.0", + "version": "7.1.2", "description": "Programmatic API for the bits behind npm publish and unpublish", "author": "GitHub Inc.", "main": "lib/index.js", @@ -25,7 +25,7 @@ "devDependencies": { "@npmcli/eslint-config": "^4.0.0", "@npmcli/mock-registry": "^1.0.0", - "@npmcli/template-oss": "4.11.4", + "@npmcli/template-oss": "4.12.0", "lodash.clonedeep": "^4.5.0", "nock": "^13.3.0", "tap": "^16.3.4" @@ -42,6 +42,7 @@ "normalize-package-data": "^5.0.0", "npm-package-arg": "^10.1.0", "npm-registry-fetch": "^14.0.3", + "proc-log": "^3.0.0", "semver": "^7.3.7", "sigstore": "^1.0.0", "ssri": "^10.0.1" @@ -51,7 +52,7 @@ }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.11.4", + "version": "4.12.0", "content": "../../scripts/template-oss/index.js" }, "tap": { diff --git a/deps/npm/node_modules/libnpmsearch/package.json b/deps/npm/node_modules/libnpmsearch/package.json index 51e1d0adf9348f..8ccd77541e71c7 100644 --- a/deps/npm/node_modules/libnpmsearch/package.json +++ b/deps/npm/node_modules/libnpmsearch/package.json @@ -26,7 +26,7 @@ }, "devDependencies": { "@npmcli/eslint-config": "^4.0.0", - "@npmcli/template-oss": "4.11.4", + "@npmcli/template-oss": "4.12.0", "nock": "^13.3.0", "tap": "^16.3.4" }, @@ -45,7 +45,7 @@ }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.11.4", + "version": "4.12.0", "content": "../../scripts/template-oss/index.js" }, "tap": { diff --git a/deps/npm/node_modules/libnpmteam/package.json b/deps/npm/node_modules/libnpmteam/package.json index 4d98dc9dc52f32..333647b127e594 100644 --- a/deps/npm/node_modules/libnpmteam/package.json +++ b/deps/npm/node_modules/libnpmteam/package.json @@ -16,7 +16,7 @@ }, "devDependencies": { "@npmcli/eslint-config": "^4.0.0", - "@npmcli/template-oss": "4.11.4", + "@npmcli/template-oss": "4.12.0", "nock": "^13.3.0", "tap": "^16.3.4" }, @@ -39,7 +39,7 @@ }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.11.4", + "version": "4.12.0", "content": "../../scripts/template-oss/index.js" }, "tap": { diff --git a/deps/npm/node_modules/libnpmversion/package.json b/deps/npm/node_modules/libnpmversion/package.json index 8fce14cebff382..2e80f8c3c1a010 100644 --- a/deps/npm/node_modules/libnpmversion/package.json +++ b/deps/npm/node_modules/libnpmversion/package.json @@ -32,7 +32,7 @@ }, "devDependencies": { "@npmcli/eslint-config": "^4.0.0", - "@npmcli/template-oss": "4.11.4", + "@npmcli/template-oss": "4.12.0", "require-inject": "^1.4.4", "tap": "^16.3.4" }, @@ -48,7 +48,7 @@ }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.11.4", + "version": "4.12.0", "content": "../../scripts/template-oss/index.js" } } diff --git a/deps/npm/node_modules/lru-cache/index.d.ts b/deps/npm/node_modules/lru-cache/index.d.ts index e8af7c4de82f99..b58395e04a9d16 100644 --- a/deps/npm/node_modules/lru-cache/index.d.ts +++ b/deps/npm/node_modules/lru-cache/index.d.ts @@ -112,7 +112,7 @@ declare class LRUCache implements Iterable<[K, V]> { * `cache.set(key, undefined)`. Use {@link has} to determine whether a key is * present in the cache at all. */ - public get(key: K, options?: LRUCache.GetOptions): V | undefined + public get(key: K, options?: LRUCache.GetOptions): V | undefined /** * Like {@link get} but doesn't update recency or delete stale items. @@ -129,7 +129,7 @@ declare class LRUCache implements Iterable<[K, V]> { * Will not update item age unless {@link updateAgeOnHas} is set in the * options or constructor. */ - public has(key: K, options?: LRUCache.HasOptions): boolean + public has(key: K, options?: LRUCache.HasOptions): boolean /** * Deletes a key out of the cache. @@ -158,7 +158,7 @@ declare class LRUCache implements Iterable<[K, V]> { key: K, cache: this ) => boolean | undefined | void, - options?: LRUCache.GetOptions + options?: LRUCache.GetOptions ): V | undefined /** @@ -271,6 +271,20 @@ declare class LRUCache implements Iterable<[K, V]> { public prune(): boolean /** + * Make an asynchronous cached fetch using the {@link fetchMethod} function. + * + * If multiple fetches for the same key are issued, then they will all be + * coalesced into a single call to fetchMethod. + * + * Note that this means that handling options such as + * {@link allowStaleOnFetchAbort}, {@link signal}, and + * {@link allowStaleOnFetchRejection} will be determined by the FIRST fetch() + * call for a given key. + * + * This is a known (fixable) shortcoming which will be addresed on when + * someone complains about it, as the fix would involve added complexity and + * may not be worth the costs for this edge case. + * * since: 7.6.0 */ public fetch( @@ -521,6 +535,8 @@ declare namespace LRUCache { * Set to true to suppress the deletion of stale data when a * {@link fetchMethod} throws an error or returns a rejected promise * + * This may be overridden in the {@link fetchMethod}. + * * @default false * @since 7.10.0 */ @@ -533,11 +549,59 @@ declare namespace LRUCache { * ONLY be returned in the case that the fetch fails, not any other * times. * + * This may be overridden in the {@link fetchMethod}. + * * @default false * @since 7.16.0 */ allowStaleOnFetchRejection?: boolean + /** + * + * Set to true to ignore the `abort` event emitted by the `AbortSignal` + * object passed to {@link fetchMethod}, and still cache the + * resulting resolution value, as long as it is not `undefined`. + * + * When used on its own, this means aborted {@link fetch} calls are not + * immediately resolved or rejected when they are aborted, and instead take + * the full time to await. + * + * When used with {@link allowStaleOnFetchAbort}, aborted {@link fetch} + * calls will resolve immediately to their stale cached value or + * `undefined`, and will continue to process and eventually update the + * cache when they resolve, as long as the resulting value is not + * `undefined`, thus supporting a "return stale on timeout while + * refreshing" mechanism by passing `AbortSignal.timeout(n)` as the signal. + * + * **Note**: regardless of this setting, an `abort` event _is still emitted + * on the `AbortSignal` object_, so may result in invalid results when + * passed to other underlying APIs that use AbortSignals. + * + * This may be overridden in the {@link fetchMethod} or the call to + * {@link fetch}. + * + * @default false + * @since 7.17.0 + */ + ignoreFetchAbort?: boolean + + /** + * Set to true to return a stale value from the cache when the + * `AbortSignal` passed to the {@link fetchMethod} dispatches an `'abort'` + * event, whether user-triggered, or due to internal cache behavior. + * + * Unless {@link ignoreFetchAbort} is also set, the underlying + * {@link fetchMethod} will still be considered canceled, and its return + * value will be ignored and not cached. + * + * This may be overridden in the {@link fetchMethod} or the call to + * {@link fetch}. + * + * @default false + * @since 7.17.0 + */ + allowStaleOnFetchAbort?: boolean + /** * Set to any value in the constructor or {@link fetch} options to * pass arbitrary data to the {@link fetchMethod} in the {@link context} @@ -585,24 +649,27 @@ declare namespace LRUCache { start?: LRUMilliseconds noDisposeOnSet?: boolean noUpdateTTL?: boolean + status?: Status } /** * options which override the options set in the LRUCAche constructor * when calling {@link has}. */ - interface HasOptions { + interface HasOptions { updateAgeOnHas?: boolean + status: Status } /** * options which override the options set in the LRUCache constructor * when calling {@link get}. */ - interface GetOptions { + interface GetOptions { allowStale?: boolean updateAgeOnGet?: boolean noDeleteOnStaleGet?: boolean + status?: Status } /** @@ -618,8 +685,8 @@ declare namespace LRUCache { * * May be mutated by the {@link fetchMethod} to affect the behavior of the * resulting {@link set} operation on resolution, or in the case of - * {@link noDeleteOnFetchRejection} and {@link allowStaleOnFetchRejection}, - * the handling of failure. + * {@link noDeleteOnFetchRejection}, {@link ignoreFetchAbort}, and + * {@link allowStaleOnFetchRejection}, the handling of failure. */ interface FetcherFetchOptions { allowStale?: boolean @@ -632,6 +699,139 @@ declare namespace LRUCache { noUpdateTTL?: boolean noDeleteOnFetchRejection?: boolean allowStaleOnFetchRejection?: boolean + ignoreFetchAbort?: boolean + allowStaleOnFetchAbort?: boolean + status?: Status + } + + /** + * Status object that may be passed to {@link fetch}, {@link get}, + * {@link set}, and {@link has}. + */ + interface Status { + /** + * The status of a set() operation. + * + * - add: the item was not found in the cache, and was added + * - update: the item was in the cache, with the same value provided + * - replace: the item was in the cache, and replaced + * - miss: the item was not added to the cache for some reason + */ + set?: 'add' | 'update' | 'replace' | 'miss' + + /** + * the ttl stored for the item, or undefined if ttls are not used. + */ + ttl?: LRUMilliseconds + + /** + * the start time for the item, or undefined if ttls are not used. + */ + start?: LRUMilliseconds + + /** + * The timestamp used for TTL calculation + */ + now?: LRUMilliseconds + + /** + * the remaining ttl for the item, or undefined if ttls are not used. + */ + remainingTTL?: LRUMilliseconds + + /** + * The calculated size for the item, if sizes are used. + */ + size?: LRUSize + + /** + * A flag indicating that the item was not stored, due to exceeding the + * {@link maxEntrySize} + */ + maxEntrySizeExceeded?: true + + /** + * The old value, specified in the case of `set:'update'` or + * `set:'replace'` + */ + oldValue?: V + + /** + * The results of a {@link has} operation + * + * - hit: the item was found in the cache + * - stale: the item was found in the cache, but is stale + * - miss: the item was not found in the cache + */ + has?: 'hit' | 'stale' | 'miss' + + /** + * The status of a {@link fetch} operation. + * Note that this can change as the underlying fetch() moves through + * various states. + * + * - inflight: there is another fetch() for this key which is in process + * - get: there is no fetchMethod, so {@link get} was called. + * - miss: the item is not in cache, and will be fetched. + * - hit: the item is in the cache, and was resolved immediately. + * - stale: the item is in the cache, but stale. + * - refresh: the item is in the cache, and not stale, but + * {@link forceRefresh} was specified. + */ + fetch?: 'get' | 'inflight' | 'miss' | 'hit' | 'stale' | 'refresh' + + /** + * The {@link fetchMethod} was called + */ + fetchDispatched?: true + + /** + * The cached value was updated after a successful call to fetchMethod + */ + fetchUpdated?: true + + /** + * The reason for a fetch() rejection. Either the error raised by the + * {@link fetchMethod}, or the reason for an AbortSignal. + */ + fetchError?: Error + + /** + * The fetch received an abort signal + */ + fetchAborted?: true + + /** + * The abort signal received was ignored, and the fetch was allowed to + * continue. + */ + fetchAbortIgnored?: true + + /** + * The fetchMethod promise resolved successfully + */ + fetchResolved?: true + + /** + * The fetchMethod promise was rejected + */ + fetchRejected?: true + + /** + * The status of a {@link get} operation. + * + * - fetching: The item is currently being fetched. If a previous value is + * present and allowed, that will be returned. + * - stale: The item is in the cache, and is stale. + * - hit: the item is in the cache + * - miss: the item is not in the cache + */ + get?: 'stale' | 'hit' | 'miss' + + /** + * A fetch or get operation returned a stale value. + */ + returnedStale?: true } /** @@ -645,6 +845,8 @@ declare namespace LRUCache { interface FetchOptions extends FetcherFetchOptions { forceRefresh?: boolean fetchContext?: any + signal?: AbortSignal + status?: Status } interface FetcherOptions { diff --git a/deps/npm/node_modules/lru-cache/index.js b/deps/npm/node_modules/lru-cache/index.js index f4be3476d4dbc1..48e99fe5e5a70c 100644 --- a/deps/npm/node_modules/lru-cache/index.js +++ b/deps/npm/node_modules/lru-cache/index.js @@ -18,7 +18,8 @@ const AC = hasAbortController this.signal = new AS() } abort(reason = new Error('This operation was aborted')) { - this.signal.reason = reason + this.signal.reason = this.signal.reason || reason + this.signal.aborted = true this.signal.dispatchEvent({ type: 'abort', target: this.signal, @@ -168,6 +169,8 @@ class LRUCache { noDeleteOnFetchRejection, noDeleteOnStaleGet, allowStaleOnFetchRejection, + allowStaleOnFetchAbort, + ignoreFetchAbort, } = options // deprecated options, don't trigger a warning for getting them if @@ -238,6 +241,8 @@ class LRUCache { this.noUpdateTTL = !!noUpdateTTL this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection this.allowStaleOnFetchRejection = !!allowStaleOnFetchRejection + this.allowStaleOnFetchAbort = !!allowStaleOnFetchAbort + this.ignoreFetchAbort = !!ignoreFetchAbort // NB: maxEntrySize is set to maxSize if it's set if (this.maxEntrySize !== 0) { @@ -331,6 +336,15 @@ class LRUCache { this.starts[index] = this.ttls[index] !== 0 ? perf.now() : 0 } + this.statusTTL = (status, index) => { + if (status) { + status.ttl = this.ttls[index] + status.start = this.starts[index] + status.now = cachedNow || getNow() + status.remainingTTL = status.now + status.ttl - status.start + } + } + // debounce calls to perf.now() to 1s so we're not hitting // that costly call repeatedly. let cachedNow = 0 @@ -372,6 +386,7 @@ class LRUCache { } } updateItemAge(_index) {} + statusTTL(_status, _index) {} setItemTTL(_index, _ttl, _start) {} isStale(_index) { return false @@ -411,7 +426,7 @@ class LRUCache { } return size } - this.addItemSize = (index, size) => { + this.addItemSize = (index, size, status) => { this.sizes[index] = size if (this.maxSize) { const maxSize = this.maxSize - this.sizes[index] @@ -420,6 +435,10 @@ class LRUCache { } } this.calculatedSize += this.sizes[index] + if (status) { + status.entrySize = size + status.totalCalculatedSize = this.calculatedSize + } } } removeItemSize(_index) {} @@ -469,19 +488,30 @@ class LRUCache { } isValidIndex(index) { - return this.keyMap.get(this.keyList[index]) === index + return ( + index !== undefined && + this.keyMap.get(this.keyList[index]) === index + ) } *entries() { for (const i of this.indexes()) { - if (!this.isBackgroundFetch(this.valList[i])) { + if ( + this.valList[i] !== undefined && + this.keyList[i] !== undefined && + !this.isBackgroundFetch(this.valList[i]) + ) { yield [this.keyList[i], this.valList[i]] } } } *rentries() { for (const i of this.rindexes()) { - if (!this.isBackgroundFetch(this.valList[i])) { + if ( + this.valList[i] !== undefined && + this.keyList[i] !== undefined && + !this.isBackgroundFetch(this.valList[i]) + ) { yield [this.keyList[i], this.valList[i]] } } @@ -489,14 +519,20 @@ class LRUCache { *keys() { for (const i of this.indexes()) { - if (!this.isBackgroundFetch(this.valList[i])) { + if ( + this.keyList[i] !== undefined && + !this.isBackgroundFetch(this.valList[i]) + ) { yield this.keyList[i] } } } *rkeys() { for (const i of this.rindexes()) { - if (!this.isBackgroundFetch(this.valList[i])) { + if ( + this.keyList[i] !== undefined && + !this.isBackgroundFetch(this.valList[i]) + ) { yield this.keyList[i] } } @@ -504,14 +540,20 @@ class LRUCache { *values() { for (const i of this.indexes()) { - if (!this.isBackgroundFetch(this.valList[i])) { + if ( + this.valList[i] !== undefined && + !this.isBackgroundFetch(this.valList[i]) + ) { yield this.valList[i] } } } *rvalues() { for (const i of this.rindexes()) { - if (!this.isBackgroundFetch(this.valList[i])) { + if ( + this.valList[i] !== undefined && + !this.isBackgroundFetch(this.valList[i]) + ) { yield this.valList[i] } } @@ -521,9 +563,14 @@ class LRUCache { return this.entries() } - find(fn, getOptions = {}) { + find(fn, getOptions) { for (const i of this.indexes()) { - if (fn(this.valList[i], this.keyList[i], this)) { + const v = this.valList[i] + const value = this.isBackgroundFetch(v) + ? v.__staleWhileFetching + : v + if (value === undefined) continue + if (fn(value, this.keyList[i], this)) { return this.get(this.keyList[i], getOptions) } } @@ -531,13 +578,23 @@ class LRUCache { forEach(fn, thisp = this) { for (const i of this.indexes()) { - fn.call(thisp, this.valList[i], this.keyList[i], this) + const v = this.valList[i] + const value = this.isBackgroundFetch(v) + ? v.__staleWhileFetching + : v + if (value === undefined) continue + fn.call(thisp, value, this.keyList[i], this) } } rforEach(fn, thisp = this) { for (const i of this.rindexes()) { - fn.call(thisp, this.valList[i], this.keyList[i], this) + const v = this.valList[i] + const value = this.isBackgroundFetch(v) + ? v.__staleWhileFetching + : v + if (value === undefined) continue + fn.call(thisp, value, this.keyList[i], this) } } @@ -608,12 +665,17 @@ class LRUCache { size = 0, sizeCalculation = this.sizeCalculation, noUpdateTTL = this.noUpdateTTL, + status, } = {} ) { size = this.requireSize(k, v, size, sizeCalculation) // if the item doesn't fit, don't do anything // NB: maxEntrySize set to maxSize by default if (this.maxEntrySize && size > this.maxEntrySize) { + if (status) { + status.set = 'miss' + status.maxEntrySizeExceeded = true + } // have to delete, in case a background fetch is there already. // in non-async cases, this is a no-op this.delete(k) @@ -630,7 +692,10 @@ class LRUCache { this.prev[index] = this.tail this.tail = index this.size++ - this.addItemSize(index, size) + this.addItemSize(index, size, status) + if (status) { + status.set = 'add' + } noUpdateTTL = false } else { // update @@ -649,7 +714,17 @@ class LRUCache { } this.removeItemSize(index) this.valList[index] = v - this.addItemSize(index, size) + this.addItemSize(index, size, status) + if (status) { + status.set = 'replace' + const oldValue = + oldVal && this.isBackgroundFetch(oldVal) + ? oldVal.__staleWhileFetching + : oldVal + if (oldValue !== undefined) status.oldValue = oldValue + } + } else if (status) { + status.set = 'update' } } if (ttl !== 0 && this.ttl === 0 && !this.ttls) { @@ -658,6 +733,7 @@ class LRUCache { if (!noUpdateTTL) { this.setItemTTL(index, ttl, start) } + this.statusTTL(status, index) if (this.disposeAfter) { while (this.disposed.length) { this.disposeAfter(...this.disposed.shift()) @@ -713,15 +789,22 @@ class LRUCache { return head } - has(k, { updateAgeOnHas = this.updateAgeOnHas } = {}) { + has(k, { updateAgeOnHas = this.updateAgeOnHas, status } = {}) { const index = this.keyMap.get(k) if (index !== undefined) { if (!this.isStale(index)) { if (updateAgeOnHas) { this.updateItemAge(index) } + if (status) status.has = 'hit' + this.statusTTL(status, index) return true + } else if (status) { + status.has = 'stale' + this.statusTTL(status, index) } + } else if (status) { + status.has = 'miss' } return false } @@ -742,51 +825,109 @@ class LRUCache { return v } const ac = new AC() + if (options.signal) { + options.signal.addEventListener('abort', () => + ac.abort(options.signal.reason) + ) + } const fetchOpts = { signal: ac.signal, options, context, } - const cb = v => { - if (!ac.signal.aborted) { - this.set(k, v, fetchOpts.options) - return v - } else { - return eb(ac.signal.reason) + const cb = (v, updateCache = false) => { + const { aborted } = ac.signal + const ignoreAbort = options.ignoreFetchAbort && v !== undefined + if (options.status) { + if (aborted && !updateCache) { + options.status.fetchAborted = true + options.status.fetchError = ac.signal.reason + if (ignoreAbort) options.status.fetchAbortIgnored = true + } else { + options.status.fetchResolved = true + } + } + if (aborted && !ignoreAbort && !updateCache) { + return fetchFail(ac.signal.reason) + } + // either we didn't abort, and are still here, or we did, and ignored + if (this.valList[index] === p) { + if (v === undefined) { + if (p.__staleWhileFetching) { + this.valList[index] = p.__staleWhileFetching + } else { + this.delete(k) + } + } else { + if (options.status) options.status.fetchUpdated = true + this.set(k, v, fetchOpts.options) + } } + return v } const eb = er => { + if (options.status) { + options.status.fetchRejected = true + options.status.fetchError = er + } + return fetchFail(er) + } + const fetchFail = er => { + const { aborted } = ac.signal + const allowStaleAborted = + aborted && options.allowStaleOnFetchAbort + const allowStale = + allowStaleAborted || options.allowStaleOnFetchRejection + const noDelete = allowStale || options.noDeleteOnFetchRejection if (this.valList[index] === p) { // if we allow stale on fetch rejections, then we need to ensure that // the stale value is not removed from the cache when the fetch fails. - const noDelete = - options.noDeleteOnFetchRejection || - options.allowStaleOnFetchRejection const del = !noDelete || p.__staleWhileFetching === undefined if (del) { this.delete(k) - } else { + } else if (!allowStaleAborted) { // still replace the *promise* with the stale value, // since we are done with the promise at this point. + // leave it untouched if we're still waiting for an + // aborted background fetch that hasn't yet returned. this.valList[index] = p.__staleWhileFetching } } - if (options.allowStaleOnFetchRejection) { + if (allowStale) { + if (options.status && p.__staleWhileFetching !== undefined) { + options.status.returnedStale = true + } return p.__staleWhileFetching } else if (p.__returned === p) { throw er } } const pcall = (res, rej) => { - ac.signal.addEventListener('abort', () => res()) - this.fetchMethod(k, v, fetchOpts).then(res, rej) + this.fetchMethod(k, v, fetchOpts).then(v => res(v), rej) + // ignored, we go until we finish, regardless. + // defer check until we are actually aborting, + // so fetchMethod can override. + ac.signal.addEventListener('abort', () => { + if ( + !options.ignoreFetchAbort || + options.allowStaleOnFetchAbort + ) { + res() + // when it eventually resolves, update the cache. + if (options.allowStaleOnFetchAbort) { + res = v => cb(v, true) + } + } + }) } + if (options.status) options.status.fetchDispatched = true const p = new Promise(pcall).then(cb, eb) p.__abortController = ac p.__staleWhileFetching = v p.__returned = null if (index === undefined) { - this.set(k, p, fetchOpts.options) + // internal, don't expose status. + this.set(k, p, { ...fetchOpts.options, status: undefined }) index = this.keyMap.get(k) } else { this.valList[index] = p @@ -825,16 +966,21 @@ class LRUCache { // fetch exclusive options noDeleteOnFetchRejection = this.noDeleteOnFetchRejection, allowStaleOnFetchRejection = this.allowStaleOnFetchRejection, + ignoreFetchAbort = this.ignoreFetchAbort, + allowStaleOnFetchAbort = this.allowStaleOnFetchAbort, fetchContext = this.fetchContext, forceRefresh = false, + status, signal, } = {} ) { if (!this.fetchMethod) { + if (status) status.fetch = 'get' return this.get(k, { allowStale, updateAgeOnGet, noDeleteOnStaleGet, + status, }) } @@ -849,38 +995,53 @@ class LRUCache { noUpdateTTL, noDeleteOnFetchRejection, allowStaleOnFetchRejection, + allowStaleOnFetchAbort, + ignoreFetchAbort, + status, signal, } let index = this.keyMap.get(k) if (index === undefined) { + if (status) status.fetch = 'miss' const p = this.backgroundFetch(k, index, options, fetchContext) return (p.__returned = p) } else { // in cache, maybe already fetching const v = this.valList[index] if (this.isBackgroundFetch(v)) { - return allowStale && v.__staleWhileFetching !== undefined - ? v.__staleWhileFetching - : (v.__returned = v) + const stale = + allowStale && v.__staleWhileFetching !== undefined + if (status) { + status.fetch = 'inflight' + if (stale) status.returnedStale = true + } + return stale ? v.__staleWhileFetching : (v.__returned = v) } // if we force a refresh, that means do NOT serve the cached value, // unless we are already in the process of refreshing the cache. - if (!forceRefresh && !this.isStale(index)) { + const isStale = this.isStale(index) + if (!forceRefresh && !isStale) { + if (status) status.fetch = 'hit' this.moveToTail(index) if (updateAgeOnGet) { this.updateItemAge(index) } + this.statusTTL(status, index) return v } // ok, it is stale or a forced refresh, and not already fetching. // refresh the cache. const p = this.backgroundFetch(k, index, options, fetchContext) - return allowStale && p.__staleWhileFetching !== undefined - ? p.__staleWhileFetching - : (p.__returned = p) + const hasStale = p.__staleWhileFetching !== undefined + const staleVal = hasStale && allowStale + if (status) { + status.fetch = hasStale && isStale ? 'stale' : 'refresh' + if (staleVal && isStale) status.returnedStale = true + } + return staleVal ? p.__staleWhileFetching : (p.__returned = p) } } @@ -890,28 +1051,39 @@ class LRUCache { allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, + status, } = {} ) { const index = this.keyMap.get(k) if (index !== undefined) { const value = this.valList[index] const fetching = this.isBackgroundFetch(value) + this.statusTTL(status, index) if (this.isStale(index)) { + if (status) status.get = 'stale' // delete only if not an in-flight background fetch if (!fetching) { if (!noDeleteOnStaleGet) { this.delete(k) } + if (status) status.returnedStale = allowStale return allowStale ? value : undefined } else { + if (status) { + status.returnedStale = + allowStale && value.__staleWhileFetching !== undefined + } return allowStale ? value.__staleWhileFetching : undefined } } else { + if (status) status.get = 'hit' // if we're currently fetching it, we don't actually have it yet - // it's not stale, which means this isn't a staleWhileRefetching, - // so we just return undefined + // it's not stale, which means this isn't a staleWhileRefetching. + // If it's not stale, and fetching, AND has a __staleWhileFetching + // value, then that means the user fetched with {forceRefresh:true}, + // so it's safe to return that value. if (fetching) { - return undefined + return value.__staleWhileFetching } this.moveToTail(index) if (updateAgeOnGet) { @@ -919,6 +1091,8 @@ class LRUCache { } return value } + } else if (status) { + status.get = 'miss' } } diff --git a/deps/npm/node_modules/lru-cache/index.mjs b/deps/npm/node_modules/lru-cache/index.mjs index e69e77fbb34566..4a0b4813ec5157 100644 --- a/deps/npm/node_modules/lru-cache/index.mjs +++ b/deps/npm/node_modules/lru-cache/index.mjs @@ -18,7 +18,8 @@ const AC = hasAbortController this.signal = new AS() } abort(reason = new Error('This operation was aborted')) { - this.signal.reason = reason + this.signal.reason = this.signal.reason || reason + this.signal.aborted = true this.signal.dispatchEvent({ type: 'abort', target: this.signal, @@ -168,6 +169,8 @@ class LRUCache { noDeleteOnFetchRejection, noDeleteOnStaleGet, allowStaleOnFetchRejection, + allowStaleOnFetchAbort, + ignoreFetchAbort, } = options // deprecated options, don't trigger a warning for getting them if @@ -238,6 +241,8 @@ class LRUCache { this.noUpdateTTL = !!noUpdateTTL this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection this.allowStaleOnFetchRejection = !!allowStaleOnFetchRejection + this.allowStaleOnFetchAbort = !!allowStaleOnFetchAbort + this.ignoreFetchAbort = !!ignoreFetchAbort // NB: maxEntrySize is set to maxSize if it's set if (this.maxEntrySize !== 0) { @@ -331,6 +336,15 @@ class LRUCache { this.starts[index] = this.ttls[index] !== 0 ? perf.now() : 0 } + this.statusTTL = (status, index) => { + if (status) { + status.ttl = this.ttls[index] + status.start = this.starts[index] + status.now = cachedNow || getNow() + status.remainingTTL = status.now + status.ttl - status.start + } + } + // debounce calls to perf.now() to 1s so we're not hitting // that costly call repeatedly. let cachedNow = 0 @@ -372,6 +386,7 @@ class LRUCache { } } updateItemAge(_index) {} + statusTTL(_status, _index) {} setItemTTL(_index, _ttl, _start) {} isStale(_index) { return false @@ -411,7 +426,7 @@ class LRUCache { } return size } - this.addItemSize = (index, size) => { + this.addItemSize = (index, size, status) => { this.sizes[index] = size if (this.maxSize) { const maxSize = this.maxSize - this.sizes[index] @@ -420,6 +435,10 @@ class LRUCache { } } this.calculatedSize += this.sizes[index] + if (status) { + status.entrySize = size + status.totalCalculatedSize = this.calculatedSize + } } } removeItemSize(_index) {} @@ -469,19 +488,30 @@ class LRUCache { } isValidIndex(index) { - return this.keyMap.get(this.keyList[index]) === index + return ( + index !== undefined && + this.keyMap.get(this.keyList[index]) === index + ) } *entries() { for (const i of this.indexes()) { - if (!this.isBackgroundFetch(this.valList[i])) { + if ( + this.valList[i] !== undefined && + this.keyList[i] !== undefined && + !this.isBackgroundFetch(this.valList[i]) + ) { yield [this.keyList[i], this.valList[i]] } } } *rentries() { for (const i of this.rindexes()) { - if (!this.isBackgroundFetch(this.valList[i])) { + if ( + this.valList[i] !== undefined && + this.keyList[i] !== undefined && + !this.isBackgroundFetch(this.valList[i]) + ) { yield [this.keyList[i], this.valList[i]] } } @@ -489,14 +519,20 @@ class LRUCache { *keys() { for (const i of this.indexes()) { - if (!this.isBackgroundFetch(this.valList[i])) { + if ( + this.keyList[i] !== undefined && + !this.isBackgroundFetch(this.valList[i]) + ) { yield this.keyList[i] } } } *rkeys() { for (const i of this.rindexes()) { - if (!this.isBackgroundFetch(this.valList[i])) { + if ( + this.keyList[i] !== undefined && + !this.isBackgroundFetch(this.valList[i]) + ) { yield this.keyList[i] } } @@ -504,14 +540,20 @@ class LRUCache { *values() { for (const i of this.indexes()) { - if (!this.isBackgroundFetch(this.valList[i])) { + if ( + this.valList[i] !== undefined && + !this.isBackgroundFetch(this.valList[i]) + ) { yield this.valList[i] } } } *rvalues() { for (const i of this.rindexes()) { - if (!this.isBackgroundFetch(this.valList[i])) { + if ( + this.valList[i] !== undefined && + !this.isBackgroundFetch(this.valList[i]) + ) { yield this.valList[i] } } @@ -521,9 +563,14 @@ class LRUCache { return this.entries() } - find(fn, getOptions = {}) { + find(fn, getOptions) { for (const i of this.indexes()) { - if (fn(this.valList[i], this.keyList[i], this)) { + const v = this.valList[i] + const value = this.isBackgroundFetch(v) + ? v.__staleWhileFetching + : v + if (value === undefined) continue + if (fn(value, this.keyList[i], this)) { return this.get(this.keyList[i], getOptions) } } @@ -531,13 +578,23 @@ class LRUCache { forEach(fn, thisp = this) { for (const i of this.indexes()) { - fn.call(thisp, this.valList[i], this.keyList[i], this) + const v = this.valList[i] + const value = this.isBackgroundFetch(v) + ? v.__staleWhileFetching + : v + if (value === undefined) continue + fn.call(thisp, value, this.keyList[i], this) } } rforEach(fn, thisp = this) { for (const i of this.rindexes()) { - fn.call(thisp, this.valList[i], this.keyList[i], this) + const v = this.valList[i] + const value = this.isBackgroundFetch(v) + ? v.__staleWhileFetching + : v + if (value === undefined) continue + fn.call(thisp, value, this.keyList[i], this) } } @@ -608,12 +665,17 @@ class LRUCache { size = 0, sizeCalculation = this.sizeCalculation, noUpdateTTL = this.noUpdateTTL, + status, } = {} ) { size = this.requireSize(k, v, size, sizeCalculation) // if the item doesn't fit, don't do anything // NB: maxEntrySize set to maxSize by default if (this.maxEntrySize && size > this.maxEntrySize) { + if (status) { + status.set = 'miss' + status.maxEntrySizeExceeded = true + } // have to delete, in case a background fetch is there already. // in non-async cases, this is a no-op this.delete(k) @@ -630,7 +692,10 @@ class LRUCache { this.prev[index] = this.tail this.tail = index this.size++ - this.addItemSize(index, size) + this.addItemSize(index, size, status) + if (status) { + status.set = 'add' + } noUpdateTTL = false } else { // update @@ -649,7 +714,17 @@ class LRUCache { } this.removeItemSize(index) this.valList[index] = v - this.addItemSize(index, size) + this.addItemSize(index, size, status) + if (status) { + status.set = 'replace' + const oldValue = + oldVal && this.isBackgroundFetch(oldVal) + ? oldVal.__staleWhileFetching + : oldVal + if (oldValue !== undefined) status.oldValue = oldValue + } + } else if (status) { + status.set = 'update' } } if (ttl !== 0 && this.ttl === 0 && !this.ttls) { @@ -658,6 +733,7 @@ class LRUCache { if (!noUpdateTTL) { this.setItemTTL(index, ttl, start) } + this.statusTTL(status, index) if (this.disposeAfter) { while (this.disposed.length) { this.disposeAfter(...this.disposed.shift()) @@ -713,15 +789,22 @@ class LRUCache { return head } - has(k, { updateAgeOnHas = this.updateAgeOnHas } = {}) { + has(k, { updateAgeOnHas = this.updateAgeOnHas, status } = {}) { const index = this.keyMap.get(k) if (index !== undefined) { if (!this.isStale(index)) { if (updateAgeOnHas) { this.updateItemAge(index) } + if (status) status.has = 'hit' + this.statusTTL(status, index) return true + } else if (status) { + status.has = 'stale' + this.statusTTL(status, index) } + } else if (status) { + status.has = 'miss' } return false } @@ -742,51 +825,109 @@ class LRUCache { return v } const ac = new AC() + if (options.signal) { + options.signal.addEventListener('abort', () => + ac.abort(options.signal.reason) + ) + } const fetchOpts = { signal: ac.signal, options, context, } - const cb = v => { - if (!ac.signal.aborted) { - this.set(k, v, fetchOpts.options) - return v - } else { - return eb(ac.signal.reason) + const cb = (v, updateCache = false) => { + const { aborted } = ac.signal + const ignoreAbort = options.ignoreFetchAbort && v !== undefined + if (options.status) { + if (aborted && !updateCache) { + options.status.fetchAborted = true + options.status.fetchError = ac.signal.reason + if (ignoreAbort) options.status.fetchAbortIgnored = true + } else { + options.status.fetchResolved = true + } + } + if (aborted && !ignoreAbort && !updateCache) { + return fetchFail(ac.signal.reason) + } + // either we didn't abort, and are still here, or we did, and ignored + if (this.valList[index] === p) { + if (v === undefined) { + if (p.__staleWhileFetching) { + this.valList[index] = p.__staleWhileFetching + } else { + this.delete(k) + } + } else { + if (options.status) options.status.fetchUpdated = true + this.set(k, v, fetchOpts.options) + } } + return v } const eb = er => { + if (options.status) { + options.status.fetchRejected = true + options.status.fetchError = er + } + return fetchFail(er) + } + const fetchFail = er => { + const { aborted } = ac.signal + const allowStaleAborted = + aborted && options.allowStaleOnFetchAbort + const allowStale = + allowStaleAborted || options.allowStaleOnFetchRejection + const noDelete = allowStale || options.noDeleteOnFetchRejection if (this.valList[index] === p) { // if we allow stale on fetch rejections, then we need to ensure that // the stale value is not removed from the cache when the fetch fails. - const noDelete = - options.noDeleteOnFetchRejection || - options.allowStaleOnFetchRejection const del = !noDelete || p.__staleWhileFetching === undefined if (del) { this.delete(k) - } else { + } else if (!allowStaleAborted) { // still replace the *promise* with the stale value, // since we are done with the promise at this point. + // leave it untouched if we're still waiting for an + // aborted background fetch that hasn't yet returned. this.valList[index] = p.__staleWhileFetching } } - if (options.allowStaleOnFetchRejection) { + if (allowStale) { + if (options.status && p.__staleWhileFetching !== undefined) { + options.status.returnedStale = true + } return p.__staleWhileFetching } else if (p.__returned === p) { throw er } } const pcall = (res, rej) => { - ac.signal.addEventListener('abort', () => res()) - this.fetchMethod(k, v, fetchOpts).then(res, rej) + this.fetchMethod(k, v, fetchOpts).then(v => res(v), rej) + // ignored, we go until we finish, regardless. + // defer check until we are actually aborting, + // so fetchMethod can override. + ac.signal.addEventListener('abort', () => { + if ( + !options.ignoreFetchAbort || + options.allowStaleOnFetchAbort + ) { + res() + // when it eventually resolves, update the cache. + if (options.allowStaleOnFetchAbort) { + res = v => cb(v, true) + } + } + }) } + if (options.status) options.status.fetchDispatched = true const p = new Promise(pcall).then(cb, eb) p.__abortController = ac p.__staleWhileFetching = v p.__returned = null if (index === undefined) { - this.set(k, p, fetchOpts.options) + // internal, don't expose status. + this.set(k, p, { ...fetchOpts.options, status: undefined }) index = this.keyMap.get(k) } else { this.valList[index] = p @@ -825,16 +966,21 @@ class LRUCache { // fetch exclusive options noDeleteOnFetchRejection = this.noDeleteOnFetchRejection, allowStaleOnFetchRejection = this.allowStaleOnFetchRejection, + ignoreFetchAbort = this.ignoreFetchAbort, + allowStaleOnFetchAbort = this.allowStaleOnFetchAbort, fetchContext = this.fetchContext, forceRefresh = false, + status, signal, } = {} ) { if (!this.fetchMethod) { + if (status) status.fetch = 'get' return this.get(k, { allowStale, updateAgeOnGet, noDeleteOnStaleGet, + status, }) } @@ -849,38 +995,53 @@ class LRUCache { noUpdateTTL, noDeleteOnFetchRejection, allowStaleOnFetchRejection, + allowStaleOnFetchAbort, + ignoreFetchAbort, + status, signal, } let index = this.keyMap.get(k) if (index === undefined) { + if (status) status.fetch = 'miss' const p = this.backgroundFetch(k, index, options, fetchContext) return (p.__returned = p) } else { // in cache, maybe already fetching const v = this.valList[index] if (this.isBackgroundFetch(v)) { - return allowStale && v.__staleWhileFetching !== undefined - ? v.__staleWhileFetching - : (v.__returned = v) + const stale = + allowStale && v.__staleWhileFetching !== undefined + if (status) { + status.fetch = 'inflight' + if (stale) status.returnedStale = true + } + return stale ? v.__staleWhileFetching : (v.__returned = v) } // if we force a refresh, that means do NOT serve the cached value, // unless we are already in the process of refreshing the cache. - if (!forceRefresh && !this.isStale(index)) { + const isStale = this.isStale(index) + if (!forceRefresh && !isStale) { + if (status) status.fetch = 'hit' this.moveToTail(index) if (updateAgeOnGet) { this.updateItemAge(index) } + this.statusTTL(status, index) return v } // ok, it is stale or a forced refresh, and not already fetching. // refresh the cache. const p = this.backgroundFetch(k, index, options, fetchContext) - return allowStale && p.__staleWhileFetching !== undefined - ? p.__staleWhileFetching - : (p.__returned = p) + const hasStale = p.__staleWhileFetching !== undefined + const staleVal = hasStale && allowStale + if (status) { + status.fetch = hasStale && isStale ? 'stale' : 'refresh' + if (staleVal && isStale) status.returnedStale = true + } + return staleVal ? p.__staleWhileFetching : (p.__returned = p) } } @@ -890,28 +1051,39 @@ class LRUCache { allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, + status, } = {} ) { const index = this.keyMap.get(k) if (index !== undefined) { const value = this.valList[index] const fetching = this.isBackgroundFetch(value) + this.statusTTL(status, index) if (this.isStale(index)) { + if (status) status.get = 'stale' // delete only if not an in-flight background fetch if (!fetching) { if (!noDeleteOnStaleGet) { this.delete(k) } + if (status) status.returnedStale = allowStale return allowStale ? value : undefined } else { + if (status) { + status.returnedStale = + allowStale && value.__staleWhileFetching !== undefined + } return allowStale ? value.__staleWhileFetching : undefined } } else { + if (status) status.get = 'hit' // if we're currently fetching it, we don't actually have it yet - // it's not stale, which means this isn't a staleWhileRefetching, - // so we just return undefined + // it's not stale, which means this isn't a staleWhileRefetching. + // If it's not stale, and fetching, AND has a __staleWhileFetching + // value, then that means the user fetched with {forceRefresh:true}, + // so it's safe to return that value. if (fetching) { - return undefined + return value.__staleWhileFetching } this.moveToTail(index) if (updateAgeOnGet) { @@ -919,6 +1091,8 @@ class LRUCache { } return value } + } else if (status) { + status.get = 'miss' } } diff --git a/deps/npm/node_modules/lru-cache/package.json b/deps/npm/node_modules/lru-cache/package.json index fb90c93901b093..9684991727e7a2 100644 --- a/deps/npm/node_modules/lru-cache/package.json +++ b/deps/npm/node_modules/lru-cache/package.json @@ -1,7 +1,7 @@ { "name": "lru-cache", "description": "A cache object that deletes the least-recently-used items.", - "version": "7.16.2", + "version": "7.18.3", "author": "Isaac Z. Schlueter ", "keywords": [ "mru", @@ -13,7 +13,7 @@ "build": "npm run prepare", "pretest": "npm run prepare", "presnap": "npm run prepare", - "prepare": "node ./scripts/transpile-to-esm.mjs", + "prepare": "node ./scripts/transpile-to-esm.js", "size": "size-limit", "test": "tap", "snap": "tap", diff --git a/deps/npm/node_modules/minipass/index.d.ts b/deps/npm/node_modules/minipass/index.d.ts index 93a06eb357109b..539fbca5706aed 100644 --- a/deps/npm/node_modules/minipass/index.d.ts +++ b/deps/npm/node_modules/minipass/index.d.ts @@ -26,21 +26,23 @@ declare namespace Minipass { type BufferOrString = Buffer | string - interface StringOptions { + interface SharedOptions { + async?: boolean + signal?: AbortSignal + } + + interface StringOptions extends SharedOptions { encoding: BufferEncoding objectMode?: boolean - async?: boolean } - interface BufferOptions { + interface BufferOptions extends SharedOptions { encoding?: null | 'buffer' objectMode?: boolean - async?: boolean } - interface ObjectModeOptions { + interface ObjectModeOptions extends SharedOptions { objectMode: true - async?: boolean } interface PipeOptions { @@ -70,6 +72,7 @@ declare class Minipass< readonly flowing: boolean readonly writable: boolean readonly readable: boolean + readonly aborted: boolean readonly paused: boolean readonly emittedEnd: boolean readonly destroyed: boolean diff --git a/deps/npm/node_modules/minipass/index.js b/deps/npm/node_modules/minipass/index.js index 5d45de8d39f76e..97b23068c95276 100644 --- a/deps/npm/node_modules/minipass/index.js +++ b/deps/npm/node_modules/minipass/index.js @@ -8,7 +8,8 @@ const proc = } const EE = require('events') const Stream = require('stream') -const SD = require('string_decoder').StringDecoder +const stringdecoder = require('string_decoder') +const SD = stringdecoder.StringDecoder const EOF = Symbol('EOF') const MAYBE_EMIT_END = Symbol('maybeEmitEnd') @@ -38,6 +39,9 @@ const EMITDATA = Symbol('emitData') const EMITEND = Symbol('emitEnd') const EMITEND2 = Symbol('emitEnd2') const ASYNC = Symbol('async') +const ABORT = Symbol('abort') +const ABORTED = Symbol('aborted') +const SIGNAL = Symbol('signal') const defer = fn => Promise.resolve().then(fn) @@ -93,7 +97,7 @@ class PipeProxyErrors extends Pipe { } } -module.exports = class Minipass extends Stream { +class Minipass extends Stream { constructor(options) { super() this[FLOWING] = false @@ -122,6 +126,14 @@ module.exports = class Minipass extends Stream { if (options && options.debugExposePipes === true) { Object.defineProperty(this, 'pipes', { get: () => this[PIPES] }) } + this[SIGNAL] = options && options.signal + this[ABORTED] = false + if (this[SIGNAL]) { + this[SIGNAL].addEventListener('abort', () => this[ABORT]()) + if (this[SIGNAL].aborted) { + this[ABORT]() + } + } } get bufferLength() { @@ -168,7 +180,20 @@ module.exports = class Minipass extends Stream { this[ASYNC] = this[ASYNC] || !!a } + // drop everything and get out of the flow completely + [ABORT]() { + this[ABORTED] = true + this.emit('abort', this[SIGNAL].reason) + this.destroy(this[SIGNAL].reason) + } + + get aborted() { + return this[ABORTED] + } + set aborted(_) {} + write(chunk, encoding, cb) { + if (this[ABORTED]) return false if (this[EOF]) throw new Error('write after end') if (this[DESTROYED]) { @@ -342,21 +367,20 @@ module.exports = class Minipass extends Stream { } [BUFFERSHIFT]() { - if (this[BUFFER].length) { - if (this[OBJECTMODE]) this[BUFFERLENGTH] -= 1 - else this[BUFFERLENGTH] -= this[BUFFER][0].length - } + if (this[OBJECTMODE]) this[BUFFERLENGTH] -= 1 + else this[BUFFERLENGTH] -= this[BUFFER][0].length return this[BUFFER].shift() } [FLUSH](noDrain) { - do {} while (this[FLUSHCHUNK](this[BUFFERSHIFT]())) + do {} while (this[FLUSHCHUNK](this[BUFFERSHIFT]()) && this[BUFFER].length) if (!noDrain && !this[BUFFER].length && !this[EOF]) this.emit('drain') } [FLUSHCHUNK](chunk) { - return chunk ? (this.emit('data', chunk), this.flowing) : false + this.emit('data', chunk) + return this.flowing } pipe(dest, opts) { @@ -437,7 +461,7 @@ module.exports = class Minipass extends Stream { if (ev !== 'error' && ev !== 'close' && ev !== DESTROYED && this[DESTROYED]) return else if (ev === 'data') { - return !data + return !this[OBJECTMODE] && !data ? false : this[ASYNC] ? defer(() => this[EMITDATA](data)) @@ -454,7 +478,10 @@ module.exports = class Minipass extends Stream { } else if (ev === 'error') { this[EMITTED_ERROR] = data super.emit(ERROR, data) - const ret = super.emit('error', data) + const ret = + !this[SIGNAL] || this.listeners('error').length + ? super.emit('error', data) + : false this[MAYBE_EMIT_END]() return ret } else if (ev === 'resume') { @@ -659,8 +686,12 @@ module.exports = class Minipass extends Stream { (s instanceof Minipass || s instanceof Stream || (s instanceof EE && - (typeof s.pipe === 'function' || // readable - (typeof s.write === 'function' && typeof s.end === 'function')))) // writable + // readable + (typeof s.pipe === 'function' || + // writable + (typeof s.write === 'function' && typeof s.end === 'function')))) ) } } + +module.exports = Minipass diff --git a/deps/npm/node_modules/minipass/index.mjs b/deps/npm/node_modules/minipass/index.mjs new file mode 100644 index 00000000000000..a6694036642b56 --- /dev/null +++ b/deps/npm/node_modules/minipass/index.mjs @@ -0,0 +1,697 @@ +'use strict' +const proc = + typeof process === 'object' && process + ? process + : { + stdout: null, + stderr: null, + } +import EE from 'events' +import Stream from 'stream' +import stringdecoder from 'string_decoder' +const SD = stringdecoder.StringDecoder + +const EOF = Symbol('EOF') +const MAYBE_EMIT_END = Symbol('maybeEmitEnd') +const EMITTED_END = Symbol('emittedEnd') +const EMITTING_END = Symbol('emittingEnd') +const EMITTED_ERROR = Symbol('emittedError') +const CLOSED = Symbol('closed') +const READ = Symbol('read') +const FLUSH = Symbol('flush') +const FLUSHCHUNK = Symbol('flushChunk') +const ENCODING = Symbol('encoding') +const DECODER = Symbol('decoder') +const FLOWING = Symbol('flowing') +const PAUSED = Symbol('paused') +const RESUME = Symbol('resume') +const BUFFER = Symbol('buffer') +const PIPES = Symbol('pipes') +const BUFFERLENGTH = Symbol('bufferLength') +const BUFFERPUSH = Symbol('bufferPush') +const BUFFERSHIFT = Symbol('bufferShift') +const OBJECTMODE = Symbol('objectMode') +// internal event when stream is destroyed +const DESTROYED = Symbol('destroyed') +// internal event when stream has an error +const ERROR = Symbol('error') +const EMITDATA = Symbol('emitData') +const EMITEND = Symbol('emitEnd') +const EMITEND2 = Symbol('emitEnd2') +const ASYNC = Symbol('async') +const ABORT = Symbol('abort') +const ABORTED = Symbol('aborted') +const SIGNAL = Symbol('signal') + +const defer = fn => Promise.resolve().then(fn) + +// TODO remove when Node v8 support drops +const doIter = global._MP_NO_ITERATOR_SYMBOLS_ !== '1' +const ASYNCITERATOR = + (doIter && Symbol.asyncIterator) || Symbol('asyncIterator not implemented') +const ITERATOR = + (doIter && Symbol.iterator) || Symbol('iterator not implemented') + +// events that mean 'the stream is over' +// these are treated specially, and re-emitted +// if they are listened for after emitting. +const isEndish = ev => ev === 'end' || ev === 'finish' || ev === 'prefinish' + +const isArrayBuffer = b => + b instanceof ArrayBuffer || + (typeof b === 'object' && + b.constructor && + b.constructor.name === 'ArrayBuffer' && + b.byteLength >= 0) + +const isArrayBufferView = b => !Buffer.isBuffer(b) && ArrayBuffer.isView(b) + +class Pipe { + constructor(src, dest, opts) { + this.src = src + this.dest = dest + this.opts = opts + this.ondrain = () => src[RESUME]() + dest.on('drain', this.ondrain) + } + unpipe() { + this.dest.removeListener('drain', this.ondrain) + } + // istanbul ignore next - only here for the prototype + proxyErrors() {} + end() { + this.unpipe() + if (this.opts.end) this.dest.end() + } +} + +class PipeProxyErrors extends Pipe { + unpipe() { + this.src.removeListener('error', this.proxyErrors) + super.unpipe() + } + constructor(src, dest, opts) { + super(src, dest, opts) + this.proxyErrors = er => dest.emit('error', er) + src.on('error', this.proxyErrors) + } +} + +class Minipass extends Stream { + constructor(options) { + super() + this[FLOWING] = false + // whether we're explicitly paused + this[PAUSED] = false + this[PIPES] = [] + this[BUFFER] = [] + this[OBJECTMODE] = (options && options.objectMode) || false + if (this[OBJECTMODE]) this[ENCODING] = null + else this[ENCODING] = (options && options.encoding) || null + if (this[ENCODING] === 'buffer') this[ENCODING] = null + this[ASYNC] = (options && !!options.async) || false + this[DECODER] = this[ENCODING] ? new SD(this[ENCODING]) : null + this[EOF] = false + this[EMITTED_END] = false + this[EMITTING_END] = false + this[CLOSED] = false + this[EMITTED_ERROR] = null + this.writable = true + this.readable = true + this[BUFFERLENGTH] = 0 + this[DESTROYED] = false + if (options && options.debugExposeBuffer === true) { + Object.defineProperty(this, 'buffer', { get: () => this[BUFFER] }) + } + if (options && options.debugExposePipes === true) { + Object.defineProperty(this, 'pipes', { get: () => this[PIPES] }) + } + this[SIGNAL] = options && options.signal + this[ABORTED] = false + if (this[SIGNAL]) { + this[SIGNAL].addEventListener('abort', () => this[ABORT]()) + if (this[SIGNAL].aborted) { + this[ABORT]() + } + } + } + + get bufferLength() { + return this[BUFFERLENGTH] + } + + get encoding() { + return this[ENCODING] + } + set encoding(enc) { + if (this[OBJECTMODE]) throw new Error('cannot set encoding in objectMode') + + if ( + this[ENCODING] && + enc !== this[ENCODING] && + ((this[DECODER] && this[DECODER].lastNeed) || this[BUFFERLENGTH]) + ) + throw new Error('cannot change encoding') + + if (this[ENCODING] !== enc) { + this[DECODER] = enc ? new SD(enc) : null + if (this[BUFFER].length) + this[BUFFER] = this[BUFFER].map(chunk => this[DECODER].write(chunk)) + } + + this[ENCODING] = enc + } + + setEncoding(enc) { + this.encoding = enc + } + + get objectMode() { + return this[OBJECTMODE] + } + set objectMode(om) { + this[OBJECTMODE] = this[OBJECTMODE] || !!om + } + + get ['async']() { + return this[ASYNC] + } + set ['async'](a) { + this[ASYNC] = this[ASYNC] || !!a + } + + // drop everything and get out of the flow completely + [ABORT]() { + this[ABORTED] = true + this.emit('abort', this[SIGNAL].reason) + this.destroy(this[SIGNAL].reason) + } + + get aborted() { + return this[ABORTED] + } + set aborted(_) {} + + write(chunk, encoding, cb) { + if (this[ABORTED]) return false + if (this[EOF]) throw new Error('write after end') + + if (this[DESTROYED]) { + this.emit( + 'error', + Object.assign( + new Error('Cannot call write after a stream was destroyed'), + { code: 'ERR_STREAM_DESTROYED' } + ) + ) + return true + } + + if (typeof encoding === 'function') (cb = encoding), (encoding = 'utf8') + + if (!encoding) encoding = 'utf8' + + const fn = this[ASYNC] ? defer : f => f() + + // convert array buffers and typed array views into buffers + // at some point in the future, we may want to do the opposite! + // leave strings and buffers as-is + // anything else switches us into object mode + if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) { + if (isArrayBufferView(chunk)) + chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength) + else if (isArrayBuffer(chunk)) chunk = Buffer.from(chunk) + else if (typeof chunk !== 'string') + // use the setter so we throw if we have encoding set + this.objectMode = true + } + + // handle object mode up front, since it's simpler + // this yields better performance, fewer checks later. + if (this[OBJECTMODE]) { + /* istanbul ignore if - maybe impossible? */ + if (this.flowing && this[BUFFERLENGTH] !== 0) this[FLUSH](true) + + if (this.flowing) this.emit('data', chunk) + else this[BUFFERPUSH](chunk) + + if (this[BUFFERLENGTH] !== 0) this.emit('readable') + + if (cb) fn(cb) + + return this.flowing + } + + // at this point the chunk is a buffer or string + // don't buffer it up or send it to the decoder + if (!chunk.length) { + if (this[BUFFERLENGTH] !== 0) this.emit('readable') + if (cb) fn(cb) + return this.flowing + } + + // fast-path writing strings of same encoding to a stream with + // an empty buffer, skipping the buffer/decoder dance + if ( + typeof chunk === 'string' && + // unless it is a string already ready for us to use + !(encoding === this[ENCODING] && !this[DECODER].lastNeed) + ) { + chunk = Buffer.from(chunk, encoding) + } + + if (Buffer.isBuffer(chunk) && this[ENCODING]) + chunk = this[DECODER].write(chunk) + + // Note: flushing CAN potentially switch us into not-flowing mode + if (this.flowing && this[BUFFERLENGTH] !== 0) this[FLUSH](true) + + if (this.flowing) this.emit('data', chunk) + else this[BUFFERPUSH](chunk) + + if (this[BUFFERLENGTH] !== 0) this.emit('readable') + + if (cb) fn(cb) + + return this.flowing + } + + read(n) { + if (this[DESTROYED]) return null + + if (this[BUFFERLENGTH] === 0 || n === 0 || n > this[BUFFERLENGTH]) { + this[MAYBE_EMIT_END]() + return null + } + + if (this[OBJECTMODE]) n = null + + if (this[BUFFER].length > 1 && !this[OBJECTMODE]) { + if (this.encoding) this[BUFFER] = [this[BUFFER].join('')] + else this[BUFFER] = [Buffer.concat(this[BUFFER], this[BUFFERLENGTH])] + } + + const ret = this[READ](n || null, this[BUFFER][0]) + this[MAYBE_EMIT_END]() + return ret + } + + [READ](n, chunk) { + if (n === chunk.length || n === null) this[BUFFERSHIFT]() + else { + this[BUFFER][0] = chunk.slice(n) + chunk = chunk.slice(0, n) + this[BUFFERLENGTH] -= n + } + + this.emit('data', chunk) + + if (!this[BUFFER].length && !this[EOF]) this.emit('drain') + + return chunk + } + + end(chunk, encoding, cb) { + if (typeof chunk === 'function') (cb = chunk), (chunk = null) + if (typeof encoding === 'function') (cb = encoding), (encoding = 'utf8') + if (chunk) this.write(chunk, encoding) + if (cb) this.once('end', cb) + this[EOF] = true + this.writable = false + + // if we haven't written anything, then go ahead and emit, + // even if we're not reading. + // we'll re-emit if a new 'end' listener is added anyway. + // This makes MP more suitable to write-only use cases. + if (this.flowing || !this[PAUSED]) this[MAYBE_EMIT_END]() + return this + } + + // don't let the internal resume be overwritten + [RESUME]() { + if (this[DESTROYED]) return + + this[PAUSED] = false + this[FLOWING] = true + this.emit('resume') + if (this[BUFFER].length) this[FLUSH]() + else if (this[EOF]) this[MAYBE_EMIT_END]() + else this.emit('drain') + } + + resume() { + return this[RESUME]() + } + + pause() { + this[FLOWING] = false + this[PAUSED] = true + } + + get destroyed() { + return this[DESTROYED] + } + + get flowing() { + return this[FLOWING] + } + + get paused() { + return this[PAUSED] + } + + [BUFFERPUSH](chunk) { + if (this[OBJECTMODE]) this[BUFFERLENGTH] += 1 + else this[BUFFERLENGTH] += chunk.length + this[BUFFER].push(chunk) + } + + [BUFFERSHIFT]() { + if (this[OBJECTMODE]) this[BUFFERLENGTH] -= 1 + else this[BUFFERLENGTH] -= this[BUFFER][0].length + return this[BUFFER].shift() + } + + [FLUSH](noDrain) { + do {} while (this[FLUSHCHUNK](this[BUFFERSHIFT]()) && this[BUFFER].length) + + if (!noDrain && !this[BUFFER].length && !this[EOF]) this.emit('drain') + } + + [FLUSHCHUNK](chunk) { + this.emit('data', chunk) + return this.flowing + } + + pipe(dest, opts) { + if (this[DESTROYED]) return + + const ended = this[EMITTED_END] + opts = opts || {} + if (dest === proc.stdout || dest === proc.stderr) opts.end = false + else opts.end = opts.end !== false + opts.proxyErrors = !!opts.proxyErrors + + // piping an ended stream ends immediately + if (ended) { + if (opts.end) dest.end() + } else { + this[PIPES].push( + !opts.proxyErrors + ? new Pipe(this, dest, opts) + : new PipeProxyErrors(this, dest, opts) + ) + if (this[ASYNC]) defer(() => this[RESUME]()) + else this[RESUME]() + } + + return dest + } + + unpipe(dest) { + const p = this[PIPES].find(p => p.dest === dest) + if (p) { + this[PIPES].splice(this[PIPES].indexOf(p), 1) + p.unpipe() + } + } + + addListener(ev, fn) { + return this.on(ev, fn) + } + + on(ev, fn) { + const ret = super.on(ev, fn) + if (ev === 'data' && !this[PIPES].length && !this.flowing) this[RESUME]() + else if (ev === 'readable' && this[BUFFERLENGTH] !== 0) + super.emit('readable') + else if (isEndish(ev) && this[EMITTED_END]) { + super.emit(ev) + this.removeAllListeners(ev) + } else if (ev === 'error' && this[EMITTED_ERROR]) { + if (this[ASYNC]) defer(() => fn.call(this, this[EMITTED_ERROR])) + else fn.call(this, this[EMITTED_ERROR]) + } + return ret + } + + get emittedEnd() { + return this[EMITTED_END] + } + + [MAYBE_EMIT_END]() { + if ( + !this[EMITTING_END] && + !this[EMITTED_END] && + !this[DESTROYED] && + this[BUFFER].length === 0 && + this[EOF] + ) { + this[EMITTING_END] = true + this.emit('end') + this.emit('prefinish') + this.emit('finish') + if (this[CLOSED]) this.emit('close') + this[EMITTING_END] = false + } + } + + emit(ev, data, ...extra) { + // error and close are only events allowed after calling destroy() + if (ev !== 'error' && ev !== 'close' && ev !== DESTROYED && this[DESTROYED]) + return + else if (ev === 'data') { + return !this[OBJECTMODE] && !data + ? false + : this[ASYNC] + ? defer(() => this[EMITDATA](data)) + : this[EMITDATA](data) + } else if (ev === 'end') { + return this[EMITEND]() + } else if (ev === 'close') { + this[CLOSED] = true + // don't emit close before 'end' and 'finish' + if (!this[EMITTED_END] && !this[DESTROYED]) return + const ret = super.emit('close') + this.removeAllListeners('close') + return ret + } else if (ev === 'error') { + this[EMITTED_ERROR] = data + super.emit(ERROR, data) + const ret = + !this[SIGNAL] || this.listeners('error').length + ? super.emit('error', data) + : false + this[MAYBE_EMIT_END]() + return ret + } else if (ev === 'resume') { + const ret = super.emit('resume') + this[MAYBE_EMIT_END]() + return ret + } else if (ev === 'finish' || ev === 'prefinish') { + const ret = super.emit(ev) + this.removeAllListeners(ev) + return ret + } + + // Some other unknown event + const ret = super.emit(ev, data, ...extra) + this[MAYBE_EMIT_END]() + return ret + } + + [EMITDATA](data) { + for (const p of this[PIPES]) { + if (p.dest.write(data) === false) this.pause() + } + const ret = super.emit('data', data) + this[MAYBE_EMIT_END]() + return ret + } + + [EMITEND]() { + if (this[EMITTED_END]) return + + this[EMITTED_END] = true + this.readable = false + if (this[ASYNC]) defer(() => this[EMITEND2]()) + else this[EMITEND2]() + } + + [EMITEND2]() { + if (this[DECODER]) { + const data = this[DECODER].end() + if (data) { + for (const p of this[PIPES]) { + p.dest.write(data) + } + super.emit('data', data) + } + } + + for (const p of this[PIPES]) { + p.end() + } + const ret = super.emit('end') + this.removeAllListeners('end') + return ret + } + + // const all = await stream.collect() + collect() { + const buf = [] + if (!this[OBJECTMODE]) buf.dataLength = 0 + // set the promise first, in case an error is raised + // by triggering the flow here. + const p = this.promise() + this.on('data', c => { + buf.push(c) + if (!this[OBJECTMODE]) buf.dataLength += c.length + }) + return p.then(() => buf) + } + + // const data = await stream.concat() + concat() { + return this[OBJECTMODE] + ? Promise.reject(new Error('cannot concat in objectMode')) + : this.collect().then(buf => + this[OBJECTMODE] + ? Promise.reject(new Error('cannot concat in objectMode')) + : this[ENCODING] + ? buf.join('') + : Buffer.concat(buf, buf.dataLength) + ) + } + + // stream.promise().then(() => done, er => emitted error) + promise() { + return new Promise((resolve, reject) => { + this.on(DESTROYED, () => reject(new Error('stream destroyed'))) + this.on('error', er => reject(er)) + this.on('end', () => resolve()) + }) + } + + // for await (let chunk of stream) + [ASYNCITERATOR]() { + let stopped = false + const stop = () => { + this.pause() + stopped = true + return Promise.resolve({ done: true }) + } + const next = () => { + if (stopped) return stop() + const res = this.read() + if (res !== null) return Promise.resolve({ done: false, value: res }) + + if (this[EOF]) return stop() + + let resolve = null + let reject = null + const onerr = er => { + this.removeListener('data', ondata) + this.removeListener('end', onend) + stop() + reject(er) + } + const ondata = value => { + this.removeListener('error', onerr) + this.removeListener('end', onend) + this.pause() + resolve({ value: value, done: !!this[EOF] }) + } + const onend = () => { + this.removeListener('error', onerr) + this.removeListener('data', ondata) + stop() + resolve({ done: true }) + } + const ondestroy = () => onerr(new Error('stream destroyed')) + return new Promise((res, rej) => { + reject = rej + resolve = res + this.once(DESTROYED, ondestroy) + this.once('error', onerr) + this.once('end', onend) + this.once('data', ondata) + }) + } + + return { + next, + throw: stop, + return: stop, + [ASYNCITERATOR]() { + return this + }, + } + } + + // for (let chunk of stream) + [ITERATOR]() { + let stopped = false + const stop = () => { + this.pause() + this.removeListener(ERROR, stop) + this.removeListener('end', stop) + stopped = true + return { done: true } + } + + const next = () => { + if (stopped) return stop() + const value = this.read() + return value === null ? stop() : { value } + } + this.once('end', stop) + this.once(ERROR, stop) + + return { + next, + throw: stop, + return: stop, + [ITERATOR]() { + return this + }, + } + } + + destroy(er) { + if (this[DESTROYED]) { + if (er) this.emit('error', er) + else this.emit(DESTROYED) + return this + } + + this[DESTROYED] = true + + // throw away all buffered data, it's never coming out + this[BUFFER].length = 0 + this[BUFFERLENGTH] = 0 + + if (typeof this.close === 'function' && !this[CLOSED]) this.close() + + if (er) this.emit('error', er) + // if no error to emit, still reject pending promises + else this.emit(DESTROYED) + + return this + } + + static isStream(s) { + return ( + !!s && + (s instanceof Minipass || + s instanceof Stream || + (s instanceof EE && + // readable + (typeof s.pipe === 'function' || + // writable + (typeof s.write === 'function' && typeof s.end === 'function')))) + ) + } +} + +export default Minipass diff --git a/deps/npm/node_modules/minipass/package.json b/deps/npm/node_modules/minipass/package.json index 43051ad5b6c831..4a6246df54aa4f 100644 --- a/deps/npm/node_modules/minipass/package.json +++ b/deps/npm/node_modules/minipass/package.json @@ -1,12 +1,27 @@ { "name": "minipass", - "version": "4.0.3", + "version": "4.2.4", "description": "minimal implementation of a PassThrough stream", - "main": "index.js", - "types": "index.d.ts", + "main": "./index.js", + "module": "./index.mjs", + "types": "./index.d.ts", + "exports": { + ".": { + "import": { + "types": "./index.d.ts", + "default": "./index.mjs" + }, + "require": { + "types": "./index.d.ts", + "default": "./index.js" + } + }, + "./package.json": "./package.json" + }, "devDependencies": { "@types/node": "^17.0.41", "end-of-stream": "^1.4.0", + "node-abort-controller": "^3.1.1", "prettier": "^2.6.2", "tap": "^16.2.0", "through2": "^2.0.3", @@ -15,6 +30,10 @@ "typescript": "^4.7.3" }, "scripts": { + "pretest": "npm run prepare", + "presnap": "npm run prepare", + "prepare": "node ./scripts/transpile-to-esm.js", + "snap": "tap", "test": "tap", "preversion": "npm test", "postversion": "npm publish", @@ -34,7 +53,8 @@ "license": "ISC", "files": [ "index.d.ts", - "index.js" + "index.js", + "index.mjs" ], "tap": { "check-coverage": true diff --git a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_duplex.js b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_duplex.js index 67525192250f6d..c51c67d4144564 100644 --- a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_duplex.js +++ b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_duplex.js @@ -18,66 +18,54 @@ // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE // USE OR OTHER DEALINGS IN THE SOFTWARE. + // a duplex stream is just a stream that is both readable and writable. // Since JS doesn't have multiple prototypal inheritance, this class // prototypally inherits from Readable, and then parasitically from // Writable. + 'use strict'; -/**/ +/**/ var objectKeys = Object.keys || function (obj) { var keys = []; - - for (var key in obj) { - keys.push(key); - } - + for (var key in obj) keys.push(key); return keys; }; /**/ - module.exports = Duplex; - -var Readable = require('./_stream_readable'); - -var Writable = require('./_stream_writable'); - +const Readable = require('./_stream_readable'); +const Writable = require('./_stream_writable'); require('inherits')(Duplex, Readable); - { // Allow the keys array to be GC'ed. - var keys = objectKeys(Writable.prototype); - + const keys = objectKeys(Writable.prototype); for (var v = 0; v < keys.length; v++) { - var method = keys[v]; + const method = keys[v]; if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; } } - function Duplex(options) { if (!(this instanceof Duplex)) return new Duplex(options); Readable.call(this, options); Writable.call(this, options); this.allowHalfOpen = true; - if (options) { if (options.readable === false) this.readable = false; if (options.writable === false) this.writable = false; - if (options.allowHalfOpen === false) { this.allowHalfOpen = false; this.once('end', onend); } } } - Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', { // making it explicit this property is not enumerable // because otherwise some prototype manipulation in // userland will fail enumerable: false, - get: function get() { + get() { return this._writableState.highWaterMark; } }); @@ -95,44 +83,43 @@ Object.defineProperty(Duplex.prototype, 'writableLength', { // because otherwise some prototype manipulation in // userland will fail enumerable: false, - get: function get() { + get() { return this._writableState.length; } -}); // the no-half-open enforcer +}); +// the no-half-open enforcer function onend() { // If the writable side ended, then we're ok. - if (this._writableState.ended) return; // no more data can be written. - // But allow more writes to happen in this tick. + if (this._writableState.ended) return; + // no more data can be written. + // But allow more writes to happen in this tick. process.nextTick(onEndNT, this); } - function onEndNT(self) { self.end(); } - Object.defineProperty(Duplex.prototype, 'destroyed', { // making it explicit this property is not enumerable // because otherwise some prototype manipulation in // userland will fail enumerable: false, - get: function get() { + get() { if (this._readableState === undefined || this._writableState === undefined) { return false; } - return this._readableState.destroyed && this._writableState.destroyed; }, - set: function set(value) { + set(value) { // we ignore the value if the stream // has not been initialized yet if (this._readableState === undefined || this._writableState === undefined) { return; - } // backward compatibility, the user is explicitly - // managing destroyed - + } + // backward compatibility, the user is explicitly + // managing destroyed this._readableState.destroyed = value; this._writableState.destroyed = value; } diff --git a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_passthrough.js b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_passthrough.js index 32e7414c5a8271..38a1eaac807947 100644 --- a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_passthrough.js +++ b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_passthrough.js @@ -18,22 +18,20 @@ // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE // USE OR OTHER DEALINGS IN THE SOFTWARE. + // a passthrough stream. // basically just the most minimal sort of Transform stream. // Every written chunk gets output as-is. + 'use strict'; module.exports = PassThrough; - -var Transform = require('./_stream_transform'); - +const Transform = require('./_stream_transform'); require('inherits')(PassThrough, Transform); - function PassThrough(options) { if (!(this instanceof PassThrough)) return new PassThrough(options); Transform.call(this, options); } - PassThrough.prototype._transform = function (chunk, encoding, cb) { cb(null, chunk); }; \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_readable.js b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_readable.js index 192d451488f208..8e3af6c9edeced 100644 --- a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_readable.js +++ b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_readable.js @@ -18,49 +18,40 @@ // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE // USE OR OTHER DEALINGS IN THE SOFTWARE. + 'use strict'; module.exports = Readable; -/**/ +/**/ var Duplex; /**/ Readable.ReadableState = ReadableState; -/**/ - -var EE = require('events').EventEmitter; +/**/ +const EE = require('events').EventEmitter; var EElistenerCount = function EElistenerCount(emitter, type) { return emitter.listeners(type).length; }; /**/ /**/ - - var Stream = require('./internal/streams/stream'); /**/ - -var Buffer = require('buffer').Buffer; - -var OurUint8Array = global.Uint8Array || function () {}; - +const Buffer = require('buffer').Buffer; +const OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {}; function _uint8ArrayToBuffer(chunk) { return Buffer.from(chunk); } - function _isUint8Array(obj) { return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; } -/**/ - - -var debugUtil = require('util'); - -var debug; +/**/ +const debugUtil = require('util'); +let debug; if (debugUtil && debugUtil.debuglog) { debug = debugUtil.debuglog('stream'); } else { @@ -68,60 +59,57 @@ if (debugUtil && debugUtil.debuglog) { } /**/ - -var BufferList = require('./internal/streams/buffer_list'); - -var destroyImpl = require('./internal/streams/destroy'); - -var _require = require('./internal/streams/state'), - getHighWaterMark = _require.getHighWaterMark; - -var _require$codes = require('../errors').codes, - ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, - ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF, - ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, - ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance. - - -var StringDecoder; -var createReadableStreamAsyncIterator; -var from; - +const BufferList = require('./internal/streams/buffer_list'); +const destroyImpl = require('./internal/streams/destroy'); +const _require = require('./internal/streams/state'), + getHighWaterMark = _require.getHighWaterMark; +const _require$codes = require('../errors').codes, + ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, + ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF, + ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, + ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; + +// Lazy loaded to improve the startup performance. +let StringDecoder; +let createReadableStreamAsyncIterator; +let from; require('inherits')(Readable, Stream); - -var errorOrDestroy = destroyImpl.errorOrDestroy; -var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume']; - +const errorOrDestroy = destroyImpl.errorOrDestroy; +const kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume']; function prependListener(emitter, event, fn) { // Sadly this is not cacheable as some libraries bundle their own // event emitter implementation with them. - if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any + if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); + + // This is a hack to make sure that our error handler is attached before any // userland ones. NEVER DO THIS. This is here only because this code needs // to continue to work with older versions of Node.js that do not include // the prependListener() method. The goal is to eventually remove this hack. - if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]]; } - function ReadableState(options, stream, isDuplex) { Duplex = Duplex || require('./_stream_duplex'); - options = options || {}; // Duplex streams are both readable and writable, but share + options = options || {}; + + // Duplex streams are both readable and writable, but share // the same options object. // However, some cases require setting options to different // values for the readable and the writable sides of the duplex stream. // These options can be provided separately as readableXXX and writableXXX. + if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; - if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to + // object stream flag. Used to make read(n) ignore n and to // make all the buffer merging and length checks go away - this.objectMode = !!options.objectMode; - if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer + if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; + + // the point at which it stops calling _read() to fill the buffer // Note: 0 is a valid value, means "don't call _read preemptively ever" + this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); - this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the + // A linked list is used to store data chunks instead of an array because the // linked list can remove elements from the beginning faster than // array.shift() - this.buffer = new BufferList(); this.length = 0; this.pipes = null; @@ -129,141 +117,136 @@ function ReadableState(options, stream, isDuplex) { this.flowing = null; this.ended = false; this.endEmitted = false; - this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted + this.reading = false; + + // a flag to be able to tell if the event 'readable'/'data' is emitted // immediately, or on a later tick. We set this to true at first, because // any actions that shouldn't happen until "later" should generally also // not happen before the first read call. + this.sync = true; - this.sync = true; // whenever we return null, then we set a flag to say + // whenever we return null, then we set a flag to say // that we're awaiting a 'readable' event emission. - this.needReadable = false; this.emittedReadable = false; this.readableListening = false; this.resumeScheduled = false; - this.paused = true; // Should close be emitted on destroy. Defaults to true. + this.paused = true; + + // Should close be emitted on destroy. Defaults to true. + this.emitClose = options.emitClose !== false; - this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish') + // Should .destroy() be called after 'end' (and potentially 'finish') + this.autoDestroy = !!options.autoDestroy; - this.autoDestroy = !!options.autoDestroy; // has it been destroyed + // has it been destroyed + this.destroyed = false; - this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string + // Crypto is kind of old and crusty. Historically, its default string // encoding is 'binary' so we have to make this configurable. // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; - this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s - - this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled + // the number of writers that are awaiting a drain event in .pipe()s + this.awaitDrain = 0; + // if true, a maybeReadMore has been scheduled this.readingMore = false; this.decoder = null; this.encoding = null; - if (options.encoding) { if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; this.decoder = new StringDecoder(options.encoding); this.encoding = options.encoding; } } - function Readable(options) { Duplex = Duplex || require('./_stream_duplex'); - if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside - // the ReadableState constructor, at least with V8 6.5 + if (!(this instanceof Readable)) return new Readable(options); - var isDuplex = this instanceof Duplex; - this._readableState = new ReadableState(options, this, isDuplex); // legacy + // Checking for a Stream.Duplex instance is faster here instead of inside + // the ReadableState constructor, at least with V8 6.5 + const isDuplex = this instanceof Duplex; + this._readableState = new ReadableState(options, this, isDuplex); + // legacy this.readable = true; - if (options) { if (typeof options.read === 'function') this._read = options.read; if (typeof options.destroy === 'function') this._destroy = options.destroy; } - Stream.call(this); } - Object.defineProperty(Readable.prototype, 'destroyed', { // making it explicit this property is not enumerable // because otherwise some prototype manipulation in // userland will fail enumerable: false, - get: function get() { + get() { if (this._readableState === undefined) { return false; } - return this._readableState.destroyed; }, - set: function set(value) { + set(value) { // we ignore the value if the stream // has not been initialized yet if (!this._readableState) { return; - } // backward compatibility, the user is explicitly - // managing destroyed - + } + // backward compatibility, the user is explicitly + // managing destroyed this._readableState.destroyed = value; } }); Readable.prototype.destroy = destroyImpl.destroy; Readable.prototype._undestroy = destroyImpl.undestroy; - Readable.prototype._destroy = function (err, cb) { cb(err); -}; // Manually shove something into the read() buffer. +}; + +// Manually shove something into the read() buffer. // This returns true if the highWaterMark has not been hit yet, // similar to how Writable.write() returns true if you should // write() some more. - - Readable.prototype.push = function (chunk, encoding) { var state = this._readableState; var skipChunkCheck; - if (!state.objectMode) { if (typeof chunk === 'string') { encoding = encoding || state.defaultEncoding; - if (encoding !== state.encoding) { chunk = Buffer.from(chunk, encoding); encoding = ''; } - skipChunkCheck = true; } } else { skipChunkCheck = true; } - return readableAddChunk(this, chunk, encoding, false, skipChunkCheck); -}; // Unshift should *always* be something directly out of read() - +}; +// Unshift should *always* be something directly out of read() Readable.prototype.unshift = function (chunk) { return readableAddChunk(this, chunk, null, true, false); }; - function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { debug('readableAddChunk', chunk); var state = stream._readableState; - if (chunk === null) { state.reading = false; onEofChunk(stream, state); } else { var er; if (!skipChunkCheck) er = chunkInvalid(state, chunk); - if (er) { errorOrDestroy(stream, er); } else if (state.objectMode || chunk && chunk.length > 0) { if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) { chunk = _uint8ArrayToBuffer(chunk); } - if (addToFront) { if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true); } else if (state.ended) { @@ -272,7 +255,6 @@ function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { return false; } else { state.reading = false; - if (state.decoder && !encoding) { chunk = state.decoder.write(chunk); if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state); @@ -284,14 +266,13 @@ function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { state.reading = false; maybeReadMore(stream, state); } - } // We can push more data if we are below the highWaterMark. + } + + // We can push more data if we are below the highWaterMark. // Also, if we have no data yet, we can stand some more bytes. // This is to work around cases where hwm=0, such as the repl. - - return !state.ended && (state.length < state.highWaterMark || state.length === 0); } - function addChunk(stream, state, chunk, addToFront) { if (state.flowing && state.length === 0 && !state.sync) { state.awaitDrain = 0; @@ -302,50 +283,42 @@ function addChunk(stream, state, chunk, addToFront) { if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); if (state.needReadable) emitReadable(stream); } - maybeReadMore(stream, state); } - function chunkInvalid(state, chunk) { var er; - if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk); } - return er; } - Readable.prototype.isPaused = function () { return this._readableState.flowing === false; -}; // backwards compatibility. - +}; +// backwards compatibility. Readable.prototype.setEncoding = function (enc) { if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; - var decoder = new StringDecoder(enc); - this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8 - - this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers: - - var p = this._readableState.buffer.head; - var content = ''; - + const decoder = new StringDecoder(enc); + this._readableState.decoder = decoder; + // If setEncoding(null), decoder.encoding equals utf8 + this._readableState.encoding = this._readableState.decoder.encoding; + + // Iterate over current buffer to convert already stored Buffers: + let p = this._readableState.buffer.head; + let content = ''; while (p !== null) { content += decoder.write(p.data); p = p.next; } - this._readableState.buffer.clear(); - if (content !== '') this._readableState.buffer.push(content); this._readableState.length = content.length; return this; -}; // Don't raise the hwm > 1GB - - -var MAX_HWM = 0x40000000; +}; +// Don't raise the hwm > 1GB +const MAX_HWM = 0x40000000; function computeNewHighWaterMark(n) { if (n >= MAX_HWM) { // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE. @@ -361,55 +334,54 @@ function computeNewHighWaterMark(n) { n |= n >>> 16; n++; } - return n; -} // This function is designed to be inlinable, so please take care when making -// changes to the function body. - +} +// This function is designed to be inlinable, so please take care when making +// changes to the function body. function howMuchToRead(n, state) { if (n <= 0 || state.length === 0 && state.ended) return 0; if (state.objectMode) return 1; - if (n !== n) { // Only flow one buffer at a time if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length; - } // If we're asking for more than the current hwm, then raise the hwm. - - + } + // If we're asking for more than the current hwm, then raise the hwm. if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); - if (n <= state.length) return n; // Don't have enough - + if (n <= state.length) return n; + // Don't have enough if (!state.ended) { state.needReadable = true; return 0; } - return state.length; -} // you can override either this method, or the async _read(n) below. - +} +// you can override either this method, or the async _read(n) below. Readable.prototype.read = function (n) { debug('read', n); n = parseInt(n, 10); var state = this._readableState; var nOrig = n; - if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we + if (n !== 0) state.emittedReadable = false; + + // if we're doing read(0) to trigger a readable event, but we // already have a bunch of data in the buffer, then just trigger // the 'readable' event and move on. - if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) { debug('read: emitReadable', state.length, state.ended); if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); return null; } + n = howMuchToRead(n, state); - n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up. - + // if we've ended, and we're now clear, then finish it up. if (n === 0 && state.ended) { if (state.length === 0) endReadable(this); return null; - } // All the actual chunk generation logic needs to be + } + + // All the actual chunk generation logic needs to be // *below* the call to _read. The reason is that in certain // synthetic stream cases, such as passthrough streams, _read // may be a completely synchronous operation which may change @@ -430,40 +402,37 @@ Readable.prototype.read = function (n) { // 'readable' etc. // // 3. Actually pull the requested chunks out of the buffer and return. - // if we need a readable event, then we need to do some reading. - + // if we need a readable event, then we need to do some reading. var doRead = state.needReadable; - debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some + debug('need readable', doRead); + // if we currently have less than the highWaterMark, then also read some if (state.length === 0 || state.length - n < state.highWaterMark) { doRead = true; debug('length less than watermark', doRead); - } // however, if we've ended, then there's no point, and if we're already - // reading, then it's unnecessary. - + } + // however, if we've ended, then there's no point, and if we're already + // reading, then it's unnecessary. if (state.ended || state.reading) { doRead = false; debug('reading or ended', doRead); } else if (doRead) { debug('do read'); state.reading = true; - state.sync = true; // if the length is currently zero, then we *need* a readable event. - - if (state.length === 0) state.needReadable = true; // call internal read method - + state.sync = true; + // if the length is currently zero, then we *need* a readable event. + if (state.length === 0) state.needReadable = true; + // call internal read method this._read(state.highWaterMark); - - state.sync = false; // If _read pushed data synchronously, then `reading` will be false, + state.sync = false; + // If _read pushed data synchronously, then `reading` will be false, // and we need to re-evaluate how much data we can return to the user. - if (!state.reading) n = howMuchToRead(nOrig, state); } - var ret; if (n > 0) ret = fromList(n, state);else ret = null; - if (ret === null) { state.needReadable = state.length <= state.highWaterMark; n = 0; @@ -471,34 +440,28 @@ Readable.prototype.read = function (n) { state.length -= n; state.awaitDrain = 0; } - if (state.length === 0) { // If we have nothing in the buffer, then we want to know // as soon as we *do* get something into the buffer. - if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick. + if (!state.ended) state.needReadable = true; + // If we tried to read() past the EOF, then emit end on the next tick. if (nOrig !== n && state.ended) endReadable(this); } - if (ret !== null) this.emit('data', ret); return ret; }; - function onEofChunk(stream, state) { debug('onEofChunk'); if (state.ended) return; - if (state.decoder) { var chunk = state.decoder.end(); - if (chunk && chunk.length) { state.buffer.push(chunk); state.length += state.objectMode ? 1 : chunk.length; } } - state.ended = true; - if (state.sync) { // if we are sync, wait until next tick to emit the data. // Otherwise we risk emitting data in the flow() @@ -507,61 +470,56 @@ function onEofChunk(stream, state) { } else { // emit 'readable' now to make sure it gets picked up. state.needReadable = false; - if (!state.emittedReadable) { state.emittedReadable = true; emitReadable_(stream); } } -} // Don't emit readable right away in sync mode, because this can trigger +} + +// Don't emit readable right away in sync mode, because this can trigger // another read() call => stack overflow. This way, it might trigger // a nextTick recursion warning, but that's not so bad. - - function emitReadable(stream) { var state = stream._readableState; debug('emitReadable', state.needReadable, state.emittedReadable); state.needReadable = false; - if (!state.emittedReadable) { debug('emitReadable', state.flowing); state.emittedReadable = true; process.nextTick(emitReadable_, stream); } } - function emitReadable_(stream) { var state = stream._readableState; debug('emitReadable_', state.destroyed, state.length, state.ended); - if (!state.destroyed && (state.length || state.ended)) { stream.emit('readable'); state.emittedReadable = false; - } // The stream needs another readable event if + } + + // The stream needs another readable event if // 1. It is not flowing, as the flow mechanism will take // care of it. // 2. It is not ended. // 3. It is below the highWaterMark, so we can schedule // another readable later. - - state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark; flow(stream); -} // at this point, the user has presumably seen the 'readable' event, +} + +// at this point, the user has presumably seen the 'readable' event, // and called read() to consume some data. that may have triggered // in turn another _read(n) call, in which case reading = true if // it's in progress. // However, if we're not ended, or reading, and the length < hwm, // then go ahead and try to read some more preemptively. - - function maybeReadMore(stream, state) { if (!state.readingMore) { state.readingMore = true; process.nextTick(maybeReadMore_, stream, state); } } - function maybeReadMore_(stream, state) { // Attempt to read more data if we should. // @@ -587,52 +545,45 @@ function maybeReadMore_(stream, state) { // read()s. The execution ends in this method again after the _read() ends // up calling push() with more data. while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) { - var len = state.length; + const len = state.length; debug('maybeReadMore read 0'); stream.read(0); - if (len === state.length) // didn't get any data, stop spinning. + if (len === state.length) + // didn't get any data, stop spinning. break; } - state.readingMore = false; -} // abstract method. to be overridden in specific implementation classes. +} + +// abstract method. to be overridden in specific implementation classes. // call cb(er, data) where data is <= n in length. // for virtual (non-string, non-buffer) streams, "length" is somewhat // arbitrary, and perhaps not very meaningful. - - Readable.prototype._read = function (n) { errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()')); }; - Readable.prototype.pipe = function (dest, pipeOpts) { var src = this; var state = this._readableState; - switch (state.pipesCount) { case 0: state.pipes = dest; break; - case 1: state.pipes = [state.pipes, dest]; break; - default: state.pipes.push(dest); break; } - state.pipesCount += 1; debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; var endFn = doEnd ? onend : unpipe; if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn); dest.on('unpipe', onunpipe); - function onunpipe(readable, unpipeInfo) { debug('onunpipe'); - if (readable === src) { if (unpipeInfo && unpipeInfo.hasUnpiped === false) { unpipeInfo.hasUnpiped = true; @@ -640,23 +591,21 @@ Readable.prototype.pipe = function (dest, pipeOpts) { } } } - function onend() { debug('onend'); dest.end(); - } // when the dest drains, it reduces the awaitDrain counter + } + + // when the dest drains, it reduces the awaitDrain counter // on the source. This would be more elegant with a .once() // handler in flow(), but adding and removing repeatedly is // too slow. - - var ondrain = pipeOnDrain(src); dest.on('drain', ondrain); var cleanedUp = false; - function cleanup() { - debug('cleanup'); // cleanup event handlers once the pipe is broken - + debug('cleanup'); + // cleanup event handlers once the pipe is broken dest.removeListener('close', onclose); dest.removeListener('finish', onfinish); dest.removeListener('drain', ondrain); @@ -665,22 +614,20 @@ Readable.prototype.pipe = function (dest, pipeOpts) { src.removeListener('end', onend); src.removeListener('end', unpipe); src.removeListener('data', ondata); - cleanedUp = true; // if the reader is waiting for a drain event from this + cleanedUp = true; + + // if the reader is waiting for a drain event from this // specific writer, then it would cause it to never start // flowing again. // So, if this is awaiting a drain, then we just call it now. // If we don't know, then assume that we are waiting for one. - if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); } - src.on('data', ondata); - function ondata(chunk) { debug('ondata'); var ret = dest.write(chunk); debug('dest.write', ret); - if (ret === false) { // If the user unpiped during `dest.write()`, it is possible // to get stuck in a permanently paused state if that write @@ -690,87 +637,84 @@ Readable.prototype.pipe = function (dest, pipeOpts) { debug('false write response, pause', state.awaitDrain); state.awaitDrain++; } - src.pause(); } - } // if the dest has an error, then stop piping into it. - // however, don't suppress the throwing behavior for this. - + } + // if the dest has an error, then stop piping into it. + // however, don't suppress the throwing behavior for this. function onerror(er) { debug('onerror', er); unpipe(); dest.removeListener('error', onerror); if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er); - } // Make sure our error handler is attached before userland ones. - + } - prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once. + // Make sure our error handler is attached before userland ones. + prependListener(dest, 'error', onerror); + // Both close and finish should trigger unpipe, but only once. function onclose() { dest.removeListener('finish', onfinish); unpipe(); } - dest.once('close', onclose); - function onfinish() { debug('onfinish'); dest.removeListener('close', onclose); unpipe(); } - dest.once('finish', onfinish); - function unpipe() { debug('unpipe'); src.unpipe(dest); - } // tell the dest that it's being piped to - + } - dest.emit('pipe', src); // start the flow if it hasn't been started already. + // tell the dest that it's being piped to + dest.emit('pipe', src); + // start the flow if it hasn't been started already. if (!state.flowing) { debug('pipe resume'); src.resume(); } - return dest; }; - function pipeOnDrain(src) { return function pipeOnDrainFunctionResult() { var state = src._readableState; debug('pipeOnDrain', state.awaitDrain); if (state.awaitDrain) state.awaitDrain--; - if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { state.flowing = true; flow(src); } }; } - Readable.prototype.unpipe = function (dest) { var state = this._readableState; var unpipeInfo = { hasUnpiped: false - }; // if we're not piping anywhere, then do nothing. + }; - if (state.pipesCount === 0) return this; // just one destination. most common case. + // if we're not piping anywhere, then do nothing. + if (state.pipesCount === 0) return this; + // just one destination. most common case. if (state.pipesCount === 1) { // passed in one, but it's not the right one. if (dest && dest !== state.pipes) return this; - if (!dest) dest = state.pipes; // got a match. + if (!dest) dest = state.pipes; + // got a match. state.pipes = null; state.pipesCount = 0; state.flowing = false; if (dest) dest.emit('unpipe', this, unpipeInfo); return this; - } // slow case. multiple pipe destinations. + } + // slow case. multiple pipe destinations. if (!dest) { // remove all. @@ -779,17 +723,13 @@ Readable.prototype.unpipe = function (dest) { state.pipes = null; state.pipesCount = 0; state.flowing = false; - - for (var i = 0; i < len; i++) { - dests[i].emit('unpipe', this, { - hasUnpiped: false - }); - } - + for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, { + hasUnpiped: false + }); return this; - } // try to find the right one. - + } + // try to find the right one. var index = indexOf(state.pipes, dest); if (index === -1) return this; state.pipes.splice(index, 1); @@ -797,19 +737,19 @@ Readable.prototype.unpipe = function (dest) { if (state.pipesCount === 1) state.pipes = state.pipes[0]; dest.emit('unpipe', this, unpipeInfo); return this; -}; // set up data events if they are asked for -// Ensure readable listeners eventually get something - +}; +// set up data events if they are asked for +// Ensure readable listeners eventually get something Readable.prototype.on = function (ev, fn) { - var res = Stream.prototype.on.call(this, ev, fn); - var state = this._readableState; - + const res = Stream.prototype.on.call(this, ev, fn); + const state = this._readableState; if (ev === 'data') { // update readableListening so that resume() may be a no-op // a few lines down. This is needed to support once('readable'). - state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused + state.readableListening = this.listenerCount('readable') > 0; + // Try start flowing on next tick if stream isn't explicitly paused if (state.flowing !== false) this.resume(); } else if (ev === 'readable') { if (!state.endEmitted && !state.readableListening) { @@ -817,7 +757,6 @@ Readable.prototype.on = function (ev, fn) { state.flowing = false; state.emittedReadable = false; debug('on readable', state.length, state.reading); - if (state.length) { emitReadable(this); } else if (!state.reading) { @@ -825,15 +764,11 @@ Readable.prototype.on = function (ev, fn) { } } } - return res; }; - Readable.prototype.addListener = Readable.prototype.on; - Readable.prototype.removeListener = function (ev, fn) { - var res = Stream.prototype.removeListener.call(this, ev, fn); - + const res = Stream.prototype.removeListener.call(this, ev, fn); if (ev === 'readable') { // We need to check if there is someone still listening to // readable and reset the state. However this needs to happen @@ -843,13 +778,10 @@ Readable.prototype.removeListener = function (ev, fn) { // effect. process.nextTick(updateReadableListening, this); } - return res; }; - Readable.prototype.removeAllListeners = function (ev) { - var res = Stream.prototype.removeAllListeners.apply(this, arguments); - + const res = Stream.prototype.removeAllListeners.apply(this, arguments); if (ev === 'readable' || ev === undefined) { // We need to check if there is someone still listening to // readable and reset the state. However this needs to happen @@ -859,121 +791,102 @@ Readable.prototype.removeAllListeners = function (ev) { // effect. process.nextTick(updateReadableListening, this); } - return res; }; - function updateReadableListening(self) { - var state = self._readableState; + const state = self._readableState; state.readableListening = self.listenerCount('readable') > 0; - if (state.resumeScheduled && !state.paused) { // flowing needs to be set to true now, otherwise // the upcoming resume will not flow. - state.flowing = true; // crude way to check if we should resume + state.flowing = true; + + // crude way to check if we should resume } else if (self.listenerCount('data') > 0) { self.resume(); } } - function nReadingNextTick(self) { debug('readable nexttick read 0'); self.read(0); -} // pause() and resume() are remnants of the legacy readable stream API -// If the user uses them, then switch into old mode. - +} +// pause() and resume() are remnants of the legacy readable stream API +// If the user uses them, then switch into old mode. Readable.prototype.resume = function () { var state = this._readableState; - if (!state.flowing) { - debug('resume'); // we flow only if there is no one listening + debug('resume'); + // we flow only if there is no one listening // for readable, but we still have to call // resume() - state.flowing = !state.readableListening; resume(this, state); } - state.paused = false; return this; }; - function resume(stream, state) { if (!state.resumeScheduled) { state.resumeScheduled = true; process.nextTick(resume_, stream, state); } } - function resume_(stream, state) { debug('resume', state.reading); - if (!state.reading) { stream.read(0); } - state.resumeScheduled = false; stream.emit('resume'); flow(stream); if (state.flowing && !state.reading) stream.read(0); } - Readable.prototype.pause = function () { debug('call pause flowing=%j', this._readableState.flowing); - if (this._readableState.flowing !== false) { debug('pause'); this._readableState.flowing = false; this.emit('pause'); } - this._readableState.paused = true; return this; }; - function flow(stream) { - var state = stream._readableState; + const state = stream._readableState; debug('flow', state.flowing); + while (state.flowing && stream.read() !== null); +} - while (state.flowing && stream.read() !== null) { - ; - } -} // wrap an old-style stream as the async data source. +// wrap an old-style stream as the async data source. // This is *not* part of the readable stream interface. // It is an ugly unfortunate mess of history. - - Readable.prototype.wrap = function (stream) { - var _this = this; - var state = this._readableState; var paused = false; - stream.on('end', function () { + stream.on('end', () => { debug('wrapped end'); - if (state.decoder && !state.ended) { var chunk = state.decoder.end(); - if (chunk && chunk.length) _this.push(chunk); + if (chunk && chunk.length) this.push(chunk); } - - _this.push(null); + this.push(null); }); - stream.on('data', function (chunk) { + stream.on('data', chunk => { debug('wrapped data'); - if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode + if (state.decoder) chunk = state.decoder.write(chunk); + // don't skip over falsy values in objectMode if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; - - var ret = _this.push(chunk); - + var ret = this.push(chunk); if (!ret) { paused = true; stream.pause(); } - }); // proxy all the other methods. - // important when wrapping filters and duplexes. + }); + // proxy all the other methods. + // important when wrapping filters and duplexes. for (var i in stream) { if (this[i] === undefined && typeof stream[i] === 'function') { this[i] = function methodWrap(method) { @@ -982,37 +895,32 @@ Readable.prototype.wrap = function (stream) { }; }(i); } - } // proxy certain important events. - + } + // proxy certain important events. for (var n = 0; n < kProxyEvents.length; n++) { stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n])); - } // when we try to consume some more bytes, simply unpause the - // underlying stream. - + } - this._read = function (n) { + // when we try to consume some more bytes, simply unpause the + // underlying stream. + this._read = n => { debug('wrapped _read', n); - if (paused) { paused = false; stream.resume(); } }; - return this; }; - if (typeof Symbol === 'function') { Readable.prototype[Symbol.asyncIterator] = function () { if (createReadableStreamAsyncIterator === undefined) { createReadableStreamAsyncIterator = require('./internal/streams/async_iterator'); } - return createReadableStreamAsyncIterator(this); }; } - Object.defineProperty(Readable.prototype, 'readableHighWaterMark', { // making it explicit this property is not enumerable // because otherwise some prototype manipulation in @@ -1044,22 +952,24 @@ Object.defineProperty(Readable.prototype, 'readableFlowing', { this._readableState.flowing = state; } } -}); // exposed for testing purposes only. +}); +// exposed for testing purposes only. Readable._fromList = fromList; Object.defineProperty(Readable.prototype, 'readableLength', { // making it explicit this property is not enumerable // because otherwise some prototype manipulation in // userland will fail enumerable: false, - get: function get() { + get() { return this._readableState.length; } -}); // Pluck off n bytes from an array of buffers. +}); + +// Pluck off n bytes from an array of buffers. // Length is the combined lengths of all the buffers in the list. // This function is designed to be inlinable, so please take care when making // changes to the function body. - function fromList(n, state) { // nothing buffered if (state.length === 0) return null; @@ -1074,51 +984,43 @@ function fromList(n, state) { } return ret; } - function endReadable(stream) { var state = stream._readableState; debug('endReadable', state.endEmitted); - if (!state.endEmitted) { state.ended = true; process.nextTick(endReadableNT, state, stream); } } - function endReadableNT(state, stream) { - debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift. + debug('endReadableNT', state.endEmitted, state.length); + // Check that we didn't get one last unshift. if (!state.endEmitted && state.length === 0) { state.endEmitted = true; stream.readable = false; stream.emit('end'); - if (state.autoDestroy) { // In case of duplex streams we need a way to detect // if the writable side is ready for autoDestroy as well - var wState = stream._writableState; - + const wState = stream._writableState; if (!wState || wState.autoDestroy && wState.finished) { stream.destroy(); } } } } - if (typeof Symbol === 'function') { Readable.from = function (iterable, opts) { if (from === undefined) { from = require('./internal/streams/from'); } - return from(Readable, iterable, opts); }; } - function indexOf(xs, x) { for (var i = 0, l = xs.length; i < l; i++) { if (xs[i] === x) return i; } - return -1; } \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_transform.js b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_transform.js index 41a738c4e93599..a2fcca2193cf10 100644 --- a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_transform.js +++ b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_transform.js @@ -18,6 +18,7 @@ // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE // USE OR OTHER DEALINGS IN THE SOFTWARE. + // a transform stream is a readable/writable stream where you do // something with the data. Sometimes it's called a "filter", // but that's not a great name for it, since that implies a thing where @@ -59,42 +60,36 @@ // However, even in such a pathological case, only a single written chunk // would be consumed, and then the rest would wait (un-transformed) until // the results of the previous transformed chunk were consumed. + 'use strict'; module.exports = Transform; - -var _require$codes = require('../errors').codes, - ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, - ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK, - ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING, - ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0; - -var Duplex = require('./_stream_duplex'); - +const _require$codes = require('../errors').codes, + ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, + ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK, + ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING, + ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0; +const Duplex = require('./_stream_duplex'); require('inherits')(Transform, Duplex); - function afterTransform(er, data) { var ts = this._transformState; ts.transforming = false; var cb = ts.writecb; - if (cb === null) { return this.emit('error', new ERR_MULTIPLE_CALLBACK()); } - ts.writechunk = null; ts.writecb = null; - if (data != null) // single equals check for both `null` and `undefined` + if (data != null) + // single equals check for both `null` and `undefined` this.push(data); cb(er); var rs = this._readableState; rs.reading = false; - if (rs.needReadable || rs.length < rs.highWaterMark) { this._read(rs.highWaterMark); } } - function Transform(options) { if (!(this instanceof Transform)) return new Transform(options); Duplex.call(this, options); @@ -105,39 +100,38 @@ function Transform(options) { writecb: null, writechunk: null, writeencoding: null - }; // start out asking for a readable event once data is transformed. + }; + + // start out asking for a readable event once data is transformed. + this._readableState.needReadable = true; - this._readableState.needReadable = true; // we have implemented the _read method, and done the other things + // we have implemented the _read method, and done the other things // that Readable wants before the first _read call, so unset the // sync guard flag. - this._readableState.sync = false; - if (options) { if (typeof options.transform === 'function') this._transform = options.transform; if (typeof options.flush === 'function') this._flush = options.flush; - } // When the writable side finishes, then flush out anything remaining. - + } + // When the writable side finishes, then flush out anything remaining. this.on('prefinish', prefinish); } - function prefinish() { - var _this = this; - if (typeof this._flush === 'function' && !this._readableState.destroyed) { - this._flush(function (er, data) { - done(_this, er, data); + this._flush((er, data) => { + done(this, er, data); }); } else { done(this, null, null); } } - Transform.prototype.push = function (chunk, encoding) { this._transformState.needTransform = false; return Duplex.prototype.push.call(this, chunk, encoding); -}; // This is the part where you do stuff! +}; + +// This is the part where you do stuff! // override this function in implementation classes. // 'chunk' is an input chunk. // @@ -147,33 +141,27 @@ Transform.prototype.push = function (chunk, encoding) { // Call `cb(err)` when you are done with this chunk. If you pass // an error, then that'll put the hurt on the whole operation. If you // never call cb(), then you'll never get another chunk. - - Transform.prototype._transform = function (chunk, encoding, cb) { cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()')); }; - Transform.prototype._write = function (chunk, encoding, cb) { var ts = this._transformState; ts.writecb = cb; ts.writechunk = chunk; ts.writeencoding = encoding; - if (!ts.transforming) { var rs = this._readableState; if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); } -}; // Doesn't matter what the args are here. +}; + +// Doesn't matter what the args are here. // _transform does all the work. // That we got here means that the readable side wants more data. - - Transform.prototype._read = function (n) { var ts = this._transformState; - if (ts.writechunk !== null && !ts.transforming) { ts.transforming = true; - this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); } else { // mark that we need a transform, so that any data that comes in @@ -181,20 +169,20 @@ Transform.prototype._read = function (n) { ts.needTransform = true; } }; - Transform.prototype._destroy = function (err, cb) { - Duplex.prototype._destroy.call(this, err, function (err2) { + Duplex.prototype._destroy.call(this, err, err2 => { cb(err2); }); }; - function done(stream, er, data) { if (er) return stream.emit('error', er); - if (data != null) // single equals check for both `null` and `undefined` - stream.push(data); // TODO(BridgeAR): Write a test for these two error cases + if (data != null) + // single equals check for both `null` and `undefined` + stream.push(data); + + // TODO(BridgeAR): Write a test for these two error cases // if there's nothing in the write buffer, then that means // that nothing more will ever be provided - if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0(); if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING(); return stream.push(null); diff --git a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_writable.js b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_writable.js index a2634d7c24fd5e..feece02279db67 100644 --- a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_writable.js +++ b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_writable.js @@ -18,185 +18,188 @@ // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE // USE OR OTHER DEALINGS IN THE SOFTWARE. + // A bit simpler than readable streams. // Implement an async ._write(chunk, encoding, cb), and it'll handle all // the drain event emission and buffering. + 'use strict'; module.exports = Writable; -/* */ +/* */ function WriteReq(chunk, encoding, cb) { this.chunk = chunk; this.encoding = encoding; this.callback = cb; this.next = null; -} // It seems a linked list but it is not -// there will be only 2 of these for each stream - +} +// It seems a linked list but it is not +// there will be only 2 of these for each stream function CorkedRequest(state) { - var _this = this; - this.next = null; this.entry = null; - - this.finish = function () { - onCorkedFinish(_this, state); + this.finish = () => { + onCorkedFinish(this, state); }; } /* */ /**/ - - var Duplex; /**/ Writable.WritableState = WritableState; -/**/ -var internalUtil = { +/**/ +const internalUtil = { deprecate: require('util-deprecate') }; /**/ /**/ - var Stream = require('./internal/streams/stream'); /**/ - -var Buffer = require('buffer').Buffer; - -var OurUint8Array = global.Uint8Array || function () {}; - +const Buffer = require('buffer').Buffer; +const OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {}; function _uint8ArrayToBuffer(chunk) { return Buffer.from(chunk); } - function _isUint8Array(obj) { return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; } - -var destroyImpl = require('./internal/streams/destroy'); - -var _require = require('./internal/streams/state'), - getHighWaterMark = _require.getHighWaterMark; - -var _require$codes = require('../errors').codes, - ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, - ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, - ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK, - ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE, - ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED, - ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES, - ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END, - ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING; - -var errorOrDestroy = destroyImpl.errorOrDestroy; - +const destroyImpl = require('./internal/streams/destroy'); +const _require = require('./internal/streams/state'), + getHighWaterMark = _require.getHighWaterMark; +const _require$codes = require('../errors').codes, + ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, + ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, + ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK, + ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE, + ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED, + ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES, + ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END, + ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING; +const errorOrDestroy = destroyImpl.errorOrDestroy; require('inherits')(Writable, Stream); - function nop() {} - function WritableState(options, stream, isDuplex) { Duplex = Duplex || require('./_stream_duplex'); - options = options || {}; // Duplex streams are both readable and writable, but share + options = options || {}; + + // Duplex streams are both readable and writable, but share // the same options object. // However, some cases require setting options to different // values for the readable and the writable sides of the duplex stream, // e.g. options.readableObjectMode vs. options.writableObjectMode, etc. + if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; - if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream + // object stream flag to indicate whether or not this stream // contains buffers or objects. - this.objectMode = !!options.objectMode; - if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false + if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; + + // the point at which write() starts returning false // Note: 0 is a valid value, means that we always return false if // the entire buffer is not flushed immediately on write() + this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); - this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called + // if _final has been called + this.finalCalled = false; - this.finalCalled = false; // drain event flag. + // drain event flag. + this.needDrain = false; + // at the start of calling end() + this.ending = false; + // when end() has been called, and returned + this.ended = false; + // when 'finish' is emitted + this.finished = false; - this.needDrain = false; // at the start of calling end() + // has it been destroyed + this.destroyed = false; - this.ending = false; // when end() has been called, and returned - - this.ended = false; // when 'finish' is emitted - - this.finished = false; // has it been destroyed - - this.destroyed = false; // should we decode strings into buffers before passing to _write? + // should we decode strings into buffers before passing to _write? // this is here so that some node-core streams can optimize string // handling at a lower level. - var noDecode = options.decodeStrings === false; - this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string + this.decodeStrings = !noDecode; + + // Crypto is kind of old and crusty. Historically, its default string // encoding is 'binary' so we have to make this configurable. // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; - this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement + // not an actual buffer we keep track of, but a measurement // of how much we're waiting to get pushed to some underlying // socket or file. + this.length = 0; - this.length = 0; // a flag to see when we're in the middle of a write. + // a flag to see when we're in the middle of a write. + this.writing = false; - this.writing = false; // when true all writes will be buffered until .uncork() call + // when true all writes will be buffered until .uncork() call + this.corked = 0; - this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately, + // a flag to be able to tell if the onwrite cb is called immediately, // or on a later tick. We set this to true at first, because any // actions that shouldn't happen until "later" should generally also // not happen before the first write call. + this.sync = true; - this.sync = true; // a flag to know if we're processing previously buffered items, which + // a flag to know if we're processing previously buffered items, which // may call the _write() callback in the same tick, so that we don't // end up in an overlapped onwrite situation. + this.bufferProcessing = false; - this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb) - + // the callback that's passed to _write(chunk,cb) this.onwrite = function (er) { onwrite(stream, er); - }; // the callback that the user supplies to write(chunk,encoding,cb) - + }; - this.writecb = null; // the amount that is being written when _write is called. + // the callback that the user supplies to write(chunk,encoding,cb) + this.writecb = null; + // the amount that is being written when _write is called. this.writelen = 0; this.bufferedRequest = null; - this.lastBufferedRequest = null; // number of pending user-supplied write callbacks + this.lastBufferedRequest = null; + + // number of pending user-supplied write callbacks // this must be 0 before 'finish' can be emitted + this.pendingcb = 0; - this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs + // emit prefinish if the only thing we're waiting for is _write cbs // This is relevant for synchronous Transform streams + this.prefinished = false; - this.prefinished = false; // True if the error was already emitted and should not be thrown again + // True if the error was already emitted and should not be thrown again + this.errorEmitted = false; - this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true. + // Should close be emitted on destroy. Defaults to true. + this.emitClose = options.emitClose !== false; - this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end') + // Should .destroy() be called after 'finish' (and potentially 'end') + this.autoDestroy = !!options.autoDestroy; - this.autoDestroy = !!options.autoDestroy; // count buffered requests + // count buffered requests + this.bufferedRequestCount = 0; - this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always + // allocate the first CorkedRequest, there is always // one allocated and free to use, and we maintain at most two - this.corkedRequestsFree = new CorkedRequest(this); } - WritableState.prototype.getBuffer = function getBuffer() { var current = this.bufferedRequest; var out = []; - while (current) { out.push(current); current = current.next; } - return out; }; - (function () { try { Object.defineProperty(WritableState.prototype, 'buffer', { @@ -205,12 +208,11 @@ WritableState.prototype.getBuffer = function getBuffer() { }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003') }); } catch (_) {} -})(); // Test _writableState for inheritance to account for Duplex streams, -// whose prototype chain only points to Readable. - +})(); +// Test _writableState for inheritance to account for Duplex streams, +// whose prototype chain only points to Readable. var realHasInstance; - if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') { realHasInstance = Function.prototype[Symbol.hasInstance]; Object.defineProperty(Writable, Symbol.hasInstance, { @@ -225,81 +227,73 @@ if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.protot return object instanceof this; }; } - function Writable(options) { - Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too. + Duplex = Duplex || require('./_stream_duplex'); + + // Writable ctor is applied to Duplexes, too. // `realHasInstance` is necessary because using plain `instanceof` // would return false, as no `_writableState` property is attached. + // Trying to use the custom `instanceof` for Writable here will also break the // Node.js LazyTransform implementation, which has a non-trivial getter for // `_writableState` that would lead to infinite recursion. + // Checking for a Stream.Duplex instance is faster here instead of inside // the WritableState constructor, at least with V8 6.5 - - var isDuplex = this instanceof Duplex; + const isDuplex = this instanceof Duplex; if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options); - this._writableState = new WritableState(options, this, isDuplex); // legacy. + this._writableState = new WritableState(options, this, isDuplex); + // legacy. this.writable = true; - if (options) { if (typeof options.write === 'function') this._write = options.write; if (typeof options.writev === 'function') this._writev = options.writev; if (typeof options.destroy === 'function') this._destroy = options.destroy; if (typeof options.final === 'function') this._final = options.final; } - Stream.call(this); -} // Otherwise people can pipe Writable streams, which is just wrong. - +} +// Otherwise people can pipe Writable streams, which is just wrong. Writable.prototype.pipe = function () { errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE()); }; - function writeAfterEnd(stream, cb) { - var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb - + var er = new ERR_STREAM_WRITE_AFTER_END(); + // TODO: defer error events consistently everywhere, not just the cb errorOrDestroy(stream, er); process.nextTick(cb, er); -} // Checks that a user-supplied chunk is valid, especially for the particular +} + +// Checks that a user-supplied chunk is valid, especially for the particular // mode the stream is in. Currently this means that `null` is never accepted // and undefined/non-string values are only allowed in object mode. - - function validChunk(stream, state, chunk, cb) { var er; - if (chunk === null) { er = new ERR_STREAM_NULL_VALUES(); } else if (typeof chunk !== 'string' && !state.objectMode) { er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk); } - if (er) { errorOrDestroy(stream, er); process.nextTick(cb, er); return false; } - return true; } - Writable.prototype.write = function (chunk, encoding, cb) { var state = this._writableState; var ret = false; - var isBuf = !state.objectMode && _isUint8Array(chunk); - if (isBuf && !Buffer.isBuffer(chunk)) { chunk = _uint8ArrayToBuffer(chunk); } - if (typeof encoding === 'function') { cb = encoding; encoding = null; } - if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; if (typeof cb !== 'function') cb = nop; if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) { @@ -308,20 +302,16 @@ Writable.prototype.write = function (chunk, encoding, cb) { } return ret; }; - Writable.prototype.cork = function () { this._writableState.corked++; }; - Writable.prototype.uncork = function () { var state = this._writableState; - if (state.corked) { state.corked--; if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); } }; - Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { // node::ParseEncoding() requires lower case. if (typeof encoding === 'string') encoding = encoding.toLowerCase(); @@ -329,7 +319,6 @@ Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { this._writableState.defaultEncoding = encoding; return this; }; - Object.defineProperty(Writable.prototype, 'writableBuffer', { // making it explicit this property is not enumerable // because otherwise some prototype manipulation in @@ -339,15 +328,12 @@ Object.defineProperty(Writable.prototype, 'writableBuffer', { return this._writableState && this._writableState.getBuffer(); } }); - function decodeChunk(state, chunk, encoding) { if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { chunk = Buffer.from(chunk, encoding); } - return chunk; } - Object.defineProperty(Writable.prototype, 'writableHighWaterMark', { // making it explicit this property is not enumerable // because otherwise some prototype manipulation in @@ -356,51 +342,45 @@ Object.defineProperty(Writable.prototype, 'writableHighWaterMark', { get: function get() { return this._writableState.highWaterMark; } -}); // if we're already writing something, then just put this +}); + +// if we're already writing something, then just put this // in the queue, and wait our turn. Otherwise, call _write // If we return false, then we need a drain event, so set that flag. - function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) { if (!isBuf) { var newChunk = decodeChunk(state, chunk, encoding); - if (chunk !== newChunk) { isBuf = true; encoding = 'buffer'; chunk = newChunk; } } - var len = state.objectMode ? 1 : chunk.length; state.length += len; - var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false. - + var ret = state.length < state.highWaterMark; + // we must ensure that previous needDrain will not be reset to false. if (!ret) state.needDrain = true; - if (state.writing || state.corked) { var last = state.lastBufferedRequest; state.lastBufferedRequest = { - chunk: chunk, - encoding: encoding, - isBuf: isBuf, + chunk, + encoding, + isBuf, callback: cb, next: null }; - if (last) { last.next = state.lastBufferedRequest; } else { state.bufferedRequest = state.lastBufferedRequest; } - state.bufferedRequestCount += 1; } else { doWrite(stream, state, false, len, chunk, encoding, cb); } - return ret; } - function doWrite(stream, state, writev, len, chunk, encoding, cb) { state.writelen = len; state.writecb = cb; @@ -409,16 +389,14 @@ function doWrite(stream, state, writev, len, chunk, encoding, cb) { if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); state.sync = false; } - function onwriteError(stream, state, sync, er, cb) { --state.pendingcb; - if (sync) { // defer the callback if we are being called synchronously // to avoid piling up things on the stack - process.nextTick(cb, er); // this can emit finish, and it will always happen + process.nextTick(cb, er); + // this can emit finish, and it will always happen // after error - process.nextTick(finishMaybe, stream, state); stream._writableState.errorEmitted = true; errorOrDestroy(stream, er); @@ -427,20 +405,18 @@ function onwriteError(stream, state, sync, er, cb) { // it is async cb(er); stream._writableState.errorEmitted = true; - errorOrDestroy(stream, er); // this can emit finish, but finish must + errorOrDestroy(stream, er); + // this can emit finish, but finish must // always follow error - finishMaybe(stream, state); } } - function onwriteStateUpdate(state) { state.writing = false; state.writecb = null; state.length -= state.writelen; state.writelen = 0; } - function onwrite(stream, er) { var state = stream._writableState; var sync = state.sync; @@ -450,11 +426,9 @@ function onwrite(stream, er) { if (er) onwriteError(stream, state, sync, er, cb);else { // Check if we're actually ready to finish, but don't emit yet var finished = needFinish(state) || stream.destroyed; - if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { clearBuffer(stream, state); } - if (sync) { process.nextTick(afterWrite, stream, state, finished, cb); } else { @@ -462,29 +436,27 @@ function onwrite(stream, er) { } } } - function afterWrite(stream, state, finished, cb) { if (!finished) onwriteDrain(stream, state); state.pendingcb--; cb(); finishMaybe(stream, state); -} // Must force callback to be called on nextTick, so that we don't +} + +// Must force callback to be called on nextTick, so that we don't // emit 'drain' before the write() consumer gets the 'false' return // value, and has a chance to attach a 'drain' listener. - - function onwriteDrain(stream, state) { if (state.length === 0 && state.needDrain) { state.needDrain = false; stream.emit('drain'); } -} // if there's something in the buffer waiting, then process it - +} +// if there's something in the buffer waiting, then process it function clearBuffer(stream, state) { state.bufferProcessing = true; var entry = state.bufferedRequest; - if (stream._writev && entry && entry.next) { // Fast case, write everything using _writev() var l = state.bufferedRequestCount; @@ -493,28 +465,25 @@ function clearBuffer(stream, state) { holder.entry = entry; var count = 0; var allBuffers = true; - while (entry) { buffer[count] = entry; if (!entry.isBuf) allBuffers = false; entry = entry.next; count += 1; } - buffer.allBuffers = allBuffers; - doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time - // as the hot path ends with doWrite + doWrite(stream, state, true, state.length, buffer, '', holder.finish); + // doWrite is almost always async, defer these to save a bit of time + // as the hot path ends with doWrite state.pendingcb++; state.lastBufferedRequest = null; - if (holder.next) { state.corkedRequestsFree = holder.next; holder.next = null; } else { state.corkedRequestsFree = new CorkedRequest(state); } - state.bufferedRequestCount = 0; } else { // Slow case, write chunks one-by-one @@ -525,32 +494,26 @@ function clearBuffer(stream, state) { var len = state.objectMode ? 1 : chunk.length; doWrite(stream, state, false, len, chunk, encoding, cb); entry = entry.next; - state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then + state.bufferedRequestCount--; + // if we didn't call the onwrite immediately, then // it means that we need to wait until it does. // also, that means that the chunk and cb are currently // being processed, so move the buffer counter past them. - if (state.writing) { break; } } - if (entry === null) state.lastBufferedRequest = null; } - state.bufferedRequest = entry; state.bufferProcessing = false; } - Writable.prototype._write = function (chunk, encoding, cb) { cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()')); }; - Writable.prototype._writev = null; - Writable.prototype.end = function (chunk, encoding, cb) { var state = this._writableState; - if (typeof chunk === 'function') { cb = chunk; chunk = null; @@ -559,47 +522,41 @@ Writable.prototype.end = function (chunk, encoding, cb) { cb = encoding; encoding = null; } + if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); - if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks - + // .end() fully uncorks if (state.corked) { state.corked = 1; this.uncork(); - } // ignore unnecessary end() calls. - + } + // ignore unnecessary end() calls. if (!state.ending) endWritable(this, state, cb); return this; }; - Object.defineProperty(Writable.prototype, 'writableLength', { // making it explicit this property is not enumerable // because otherwise some prototype manipulation in // userland will fail enumerable: false, - get: function get() { + get() { return this._writableState.length; } }); - function needFinish(state) { return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; } - function callFinal(stream, state) { - stream._final(function (err) { + stream._final(err => { state.pendingcb--; - if (err) { errorOrDestroy(stream, err); } - state.prefinished = true; stream.emit('prefinish'); finishMaybe(stream, state); }); } - function prefinish(stream, state) { if (!state.prefinished && !state.finalCalled) { if (typeof stream._final === 'function' && !state.destroyed) { @@ -612,86 +569,72 @@ function prefinish(stream, state) { } } } - function finishMaybe(stream, state) { var need = needFinish(state); - if (need) { prefinish(stream, state); - if (state.pendingcb === 0) { state.finished = true; stream.emit('finish'); - if (state.autoDestroy) { // In case of duplex streams we need a way to detect // if the readable side is ready for autoDestroy as well - var rState = stream._readableState; - + const rState = stream._readableState; if (!rState || rState.autoDestroy && rState.endEmitted) { stream.destroy(); } } } } - return need; } - function endWritable(stream, state, cb) { state.ending = true; finishMaybe(stream, state); - if (cb) { if (state.finished) process.nextTick(cb);else stream.once('finish', cb); } - state.ended = true; stream.writable = false; } - function onCorkedFinish(corkReq, state, err) { var entry = corkReq.entry; corkReq.entry = null; - while (entry) { var cb = entry.callback; state.pendingcb--; cb(err); entry = entry.next; - } // reuse the free corkReq. - + } + // reuse the free corkReq. state.corkedRequestsFree.next = corkReq; } - Object.defineProperty(Writable.prototype, 'destroyed', { // making it explicit this property is not enumerable // because otherwise some prototype manipulation in // userland will fail enumerable: false, - get: function get() { + get() { if (this._writableState === undefined) { return false; } - return this._writableState.destroyed; }, - set: function set(value) { + set(value) { // we ignore the value if the stream // has not been initialized yet if (!this._writableState) { return; - } // backward compatibility, the user is explicitly - // managing destroyed - + } + // backward compatibility, the user is explicitly + // managing destroyed this._writableState.destroyed = value; } }); Writable.prototype.destroy = destroyImpl.destroy; Writable.prototype._undestroy = destroyImpl.undestroy; - Writable.prototype._destroy = function (err, cb) { cb(err); }; \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/async_iterator.js b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/async_iterator.js index 9fb615a2f3bc44..bcae6108c0d81d 100644 --- a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/async_iterator.js +++ b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/async_iterator.js @@ -1,34 +1,26 @@ 'use strict'; -var _Object$setPrototypeO; - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -var finished = require('./end-of-stream'); - -var kLastResolve = Symbol('lastResolve'); -var kLastReject = Symbol('lastReject'); -var kError = Symbol('error'); -var kEnded = Symbol('ended'); -var kLastPromise = Symbol('lastPromise'); -var kHandlePromise = Symbol('handlePromise'); -var kStream = Symbol('stream'); - +const finished = require('./end-of-stream'); +const kLastResolve = Symbol('lastResolve'); +const kLastReject = Symbol('lastReject'); +const kError = Symbol('error'); +const kEnded = Symbol('ended'); +const kLastPromise = Symbol('lastPromise'); +const kHandlePromise = Symbol('handlePromise'); +const kStream = Symbol('stream'); function createIterResult(value, done) { return { - value: value, - done: done + value, + done }; } - function readAndResolve(iter) { - var resolve = iter[kLastResolve]; - + const resolve = iter[kLastResolve]; if (resolve !== null) { - var data = iter[kStream].read(); // we defer if data is null + const data = iter[kStream].read(); + // we defer if data is null // we can be expecting either 'end' or // 'error' - if (data !== null) { iter[kLastPromise] = null; iter[kLastResolve] = null; @@ -37,171 +29,157 @@ function readAndResolve(iter) { } } } - function onReadable(iter) { // we wait for the next tick, because it might // emit an error with process.nextTick process.nextTick(readAndResolve, iter); } - function wrapForNext(lastPromise, iter) { - return function (resolve, reject) { - lastPromise.then(function () { + return (resolve, reject) => { + lastPromise.then(() => { if (iter[kEnded]) { resolve(createIterResult(undefined, true)); return; } - iter[kHandlePromise](resolve, reject); }, reject); }; } - -var AsyncIteratorPrototype = Object.getPrototypeOf(function () {}); -var ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = { +const AsyncIteratorPrototype = Object.getPrototypeOf(function () {}); +const ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf({ get stream() { return this[kStream]; }, - - next: function next() { - var _this = this; - + next() { // if we have detected an error in the meanwhile // reject straight away - var error = this[kError]; - + const error = this[kError]; if (error !== null) { return Promise.reject(error); } - if (this[kEnded]) { return Promise.resolve(createIterResult(undefined, true)); } - if (this[kStream].destroyed) { // We need to defer via nextTick because if .destroy(err) is // called, the error will be emitted via nextTick, and // we cannot guarantee that there is no error lingering around // waiting to be emitted. - return new Promise(function (resolve, reject) { - process.nextTick(function () { - if (_this[kError]) { - reject(_this[kError]); + return new Promise((resolve, reject) => { + process.nextTick(() => { + if (this[kError]) { + reject(this[kError]); } else { resolve(createIterResult(undefined, true)); } }); }); - } // if we have multiple next() calls + } + + // if we have multiple next() calls // we will wait for the previous Promise to finish // this logic is optimized to support for await loops, // where next() is only called once at a time - - - var lastPromise = this[kLastPromise]; - var promise; - + const lastPromise = this[kLastPromise]; + let promise; if (lastPromise) { promise = new Promise(wrapForNext(lastPromise, this)); } else { // fast path needed to support multiple this.push() // without triggering the next() queue - var data = this[kStream].read(); - + const data = this[kStream].read(); if (data !== null) { return Promise.resolve(createIterResult(data, false)); } - promise = new Promise(this[kHandlePromise]); } - this[kLastPromise] = promise; return promise; - } -}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () { - return this; -}), _defineProperty(_Object$setPrototypeO, "return", function _return() { - var _this2 = this; - - // destroy(err, cb) is a private API - // we can guarantee we have that here, because we control the - // Readable class this is attached to - return new Promise(function (resolve, reject) { - _this2[kStream].destroy(null, function (err) { - if (err) { - reject(err); - return; - } - - resolve(createIterResult(undefined, true)); + }, + [Symbol.asyncIterator]() { + return this; + }, + return() { + // destroy(err, cb) is a private API + // we can guarantee we have that here, because we control the + // Readable class this is attached to + return new Promise((resolve, reject) => { + this[kStream].destroy(null, err => { + if (err) { + reject(err); + return; + } + resolve(createIterResult(undefined, true)); + }); }); - }); -}), _Object$setPrototypeO), AsyncIteratorPrototype); - -var createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) { - var _Object$create; - - var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, { - value: stream, - writable: true - }), _defineProperty(_Object$create, kLastResolve, { - value: null, - writable: true - }), _defineProperty(_Object$create, kLastReject, { - value: null, - writable: true - }), _defineProperty(_Object$create, kError, { - value: null, - writable: true - }), _defineProperty(_Object$create, kEnded, { - value: stream._readableState.endEmitted, - writable: true - }), _defineProperty(_Object$create, kHandlePromise, { - value: function value(resolve, reject) { - var data = iterator[kStream].read(); - - if (data) { - iterator[kLastPromise] = null; - iterator[kLastResolve] = null; - iterator[kLastReject] = null; - resolve(createIterResult(data, false)); - } else { - iterator[kLastResolve] = resolve; - iterator[kLastReject] = reject; - } + } +}, AsyncIteratorPrototype); +const createReadableStreamAsyncIterator = stream => { + const iterator = Object.create(ReadableStreamAsyncIteratorPrototype, { + [kStream]: { + value: stream, + writable: true + }, + [kLastResolve]: { + value: null, + writable: true + }, + [kLastReject]: { + value: null, + writable: true }, - writable: true - }), _Object$create)); + [kError]: { + value: null, + writable: true + }, + [kEnded]: { + value: stream._readableState.endEmitted, + writable: true + }, + // the function passed to new Promise + // is cached so we avoid allocating a new + // closure at every run + [kHandlePromise]: { + value: (resolve, reject) => { + const data = iterator[kStream].read(); + if (data) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + resolve(createIterResult(data, false)); + } else { + iterator[kLastResolve] = resolve; + iterator[kLastReject] = reject; + } + }, + writable: true + } + }); iterator[kLastPromise] = null; - finished(stream, function (err) { + finished(stream, err => { if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') { - var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise + const reject = iterator[kLastReject]; + // reject if we are waiting for data in the Promise // returned by next() and store the error - if (reject !== null) { iterator[kLastPromise] = null; iterator[kLastResolve] = null; iterator[kLastReject] = null; reject(err); } - iterator[kError] = err; return; } - - var resolve = iterator[kLastResolve]; - + const resolve = iterator[kLastResolve]; if (resolve !== null) { iterator[kLastPromise] = null; iterator[kLastResolve] = null; iterator[kLastReject] = null; resolve(createIterResult(undefined, true)); } - iterator[kEnded] = true; }); stream.on('readable', onReadable.bind(null, iterator)); return iterator; }; - module.exports = createReadableStreamAsyncIterator; \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/buffer_list.js b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/buffer_list.js index cdea425f19dd96..352ac3438ef2ac 100644 --- a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/buffer_list.js +++ b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/buffer_list.js @@ -1,210 +1,155 @@ 'use strict'; -function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } - -function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -var _require = require('buffer'), - Buffer = _require.Buffer; - -var _require2 = require('util'), - inspect = _require2.inspect; - -var custom = inspect && inspect.custom || 'inspect'; - +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } +function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } +function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +const _require = require('buffer'), + Buffer = _require.Buffer; +const _require2 = require('util'), + inspect = _require2.inspect; +const custom = inspect && inspect.custom || 'inspect'; function copyBuffer(src, target, offset) { Buffer.prototype.copy.call(src, target, offset); } - -module.exports = -/*#__PURE__*/ -function () { - function BufferList() { - _classCallCheck(this, BufferList); - +module.exports = class BufferList { + constructor() { this.head = null; this.tail = null; this.length = 0; } - - _createClass(BufferList, [{ - key: "push", - value: function push(v) { - var entry = { - data: v, - next: null - }; - if (this.length > 0) this.tail.next = entry;else this.head = entry; - this.tail = entry; - ++this.length; - } - }, { - key: "unshift", - value: function unshift(v) { - var entry = { - data: v, - next: this.head - }; - if (this.length === 0) this.tail = entry; - this.head = entry; - ++this.length; - } - }, { - key: "shift", - value: function shift() { - if (this.length === 0) return; - var ret = this.head.data; - if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; - --this.length; - return ret; - } - }, { - key: "clear", - value: function clear() { - this.head = this.tail = null; - this.length = 0; - } - }, { - key: "join", - value: function join(s) { - if (this.length === 0) return ''; - var p = this.head; - var ret = '' + p.data; - - while (p = p.next) { - ret += s + p.data; - } - - return ret; + push(v) { + const entry = { + data: v, + next: null + }; + if (this.length > 0) this.tail.next = entry;else this.head = entry; + this.tail = entry; + ++this.length; + } + unshift(v) { + const entry = { + data: v, + next: this.head + }; + if (this.length === 0) this.tail = entry; + this.head = entry; + ++this.length; + } + shift() { + if (this.length === 0) return; + const ret = this.head.data; + if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; + --this.length; + return ret; + } + clear() { + this.head = this.tail = null; + this.length = 0; + } + join(s) { + if (this.length === 0) return ''; + var p = this.head; + var ret = '' + p.data; + while (p = p.next) ret += s + p.data; + return ret; + } + concat(n) { + if (this.length === 0) return Buffer.alloc(0); + const ret = Buffer.allocUnsafe(n >>> 0); + var p = this.head; + var i = 0; + while (p) { + copyBuffer(p.data, ret, i); + i += p.data.length; + p = p.next; } - }, { - key: "concat", - value: function concat(n) { - if (this.length === 0) return Buffer.alloc(0); - var ret = Buffer.allocUnsafe(n >>> 0); - var p = this.head; - var i = 0; - - while (p) { - copyBuffer(p.data, ret, i); - i += p.data.length; - p = p.next; - } - - return ret; - } // Consumes a specified amount of bytes or characters from the buffered data. - - }, { - key: "consume", - value: function consume(n, hasStrings) { - var ret; - - if (n < this.head.data.length) { - // `slice` is the same for buffers and strings. - ret = this.head.data.slice(0, n); - this.head.data = this.head.data.slice(n); - } else if (n === this.head.data.length) { - // First chunk is a perfect match. - ret = this.shift(); - } else { - // Result spans more than one buffer. - ret = hasStrings ? this._getString(n) : this._getBuffer(n); - } + return ret; + } - return ret; + // Consumes a specified amount of bytes or characters from the buffered data. + consume(n, hasStrings) { + var ret; + if (n < this.head.data.length) { + // `slice` is the same for buffers and strings. + ret = this.head.data.slice(0, n); + this.head.data = this.head.data.slice(n); + } else if (n === this.head.data.length) { + // First chunk is a perfect match. + ret = this.shift(); + } else { + // Result spans more than one buffer. + ret = hasStrings ? this._getString(n) : this._getBuffer(n); } - }, { - key: "first", - value: function first() { - return this.head.data; - } // Consumes a specified amount of characters from the buffered data. - - }, { - key: "_getString", - value: function _getString(n) { - var p = this.head; - var c = 1; - var ret = p.data; - n -= ret.length; - - while (p = p.next) { - var str = p.data; - var nb = n > str.length ? str.length : n; - if (nb === str.length) ret += str;else ret += str.slice(0, n); - n -= nb; - - if (n === 0) { - if (nb === str.length) { - ++c; - if (p.next) this.head = p.next;else this.head = this.tail = null; - } else { - this.head = p; - p.data = str.slice(nb); - } + return ret; + } + first() { + return this.head.data; + } - break; + // Consumes a specified amount of characters from the buffered data. + _getString(n) { + var p = this.head; + var c = 1; + var ret = p.data; + n -= ret.length; + while (p = p.next) { + const str = p.data; + const nb = n > str.length ? str.length : n; + if (nb === str.length) ret += str;else ret += str.slice(0, n); + n -= nb; + if (n === 0) { + if (nb === str.length) { + ++c; + if (p.next) this.head = p.next;else this.head = this.tail = null; + } else { + this.head = p; + p.data = str.slice(nb); } - - ++c; + break; } + ++c; + } + this.length -= c; + return ret; + } - this.length -= c; - return ret; - } // Consumes a specified amount of bytes from the buffered data. - - }, { - key: "_getBuffer", - value: function _getBuffer(n) { - var ret = Buffer.allocUnsafe(n); - var p = this.head; - var c = 1; - p.data.copy(ret); - n -= p.data.length; - - while (p = p.next) { - var buf = p.data; - var nb = n > buf.length ? buf.length : n; - buf.copy(ret, ret.length - n, 0, nb); - n -= nb; - - if (n === 0) { - if (nb === buf.length) { - ++c; - if (p.next) this.head = p.next;else this.head = this.tail = null; - } else { - this.head = p; - p.data = buf.slice(nb); - } - - break; + // Consumes a specified amount of bytes from the buffered data. + _getBuffer(n) { + const ret = Buffer.allocUnsafe(n); + var p = this.head; + var c = 1; + p.data.copy(ret); + n -= p.data.length; + while (p = p.next) { + const buf = p.data; + const nb = n > buf.length ? buf.length : n; + buf.copy(ret, ret.length - n, 0, nb); + n -= nb; + if (n === 0) { + if (nb === buf.length) { + ++c; + if (p.next) this.head = p.next;else this.head = this.tail = null; + } else { + this.head = p; + p.data = buf.slice(nb); } - - ++c; + break; } - - this.length -= c; - return ret; - } // Make sure the linked list only shows the minimal necessary information. - - }, { - key: custom, - value: function value(_, options) { - return inspect(this, _objectSpread({}, options, { - // Only inspect one level. - depth: 0, - // It should not recurse. - customInspect: false - })); + ++c; } - }]); + this.length -= c; + return ret; + } - return BufferList; -}(); \ No newline at end of file + // Make sure the linked list only shows the minimal necessary information. + [custom](_, options) { + return inspect(this, _objectSpread(_objectSpread({}, options), {}, { + // Only inspect one level. + depth: 0, + // It should not recurse. + customInspect: false + })); + } +}; \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/destroy.js b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/destroy.js index 3268a16f3b6f23..7e8275567dc354 100644 --- a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/destroy.js +++ b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/destroy.js @@ -1,11 +1,9 @@ -'use strict'; // undocumented cb() API, needed for core, not for public API +'use strict'; +// undocumented cb() API, needed for core, not for public API function destroy(err, cb) { - var _this = this; - - var readableDestroyed = this._readableState && this._readableState.destroyed; - var writableDestroyed = this._writableState && this._writableState.destroyed; - + const readableDestroyed = this._readableState && this._readableState.destroyed; + const writableDestroyed = this._writableState && this._writableState.destroyed; if (readableDestroyed || writableDestroyed) { if (cb) { cb(err); @@ -17,53 +15,48 @@ function destroy(err, cb) { process.nextTick(emitErrorNT, this, err); } } - return this; - } // we set destroyed to true before firing error callbacks in order - // to make it re-entrance safe in case destroy() is called within callbacks + } + // we set destroyed to true before firing error callbacks in order + // to make it re-entrance safe in case destroy() is called within callbacks if (this._readableState) { this._readableState.destroyed = true; - } // if this is a duplex stream mark the writable part as destroyed as well - + } + // if this is a duplex stream mark the writable part as destroyed as well if (this._writableState) { this._writableState.destroyed = true; } - - this._destroy(err || null, function (err) { + this._destroy(err || null, err => { if (!cb && err) { - if (!_this._writableState) { - process.nextTick(emitErrorAndCloseNT, _this, err); - } else if (!_this._writableState.errorEmitted) { - _this._writableState.errorEmitted = true; - process.nextTick(emitErrorAndCloseNT, _this, err); + if (!this._writableState) { + process.nextTick(emitErrorAndCloseNT, this, err); + } else if (!this._writableState.errorEmitted) { + this._writableState.errorEmitted = true; + process.nextTick(emitErrorAndCloseNT, this, err); } else { - process.nextTick(emitCloseNT, _this); + process.nextTick(emitCloseNT, this); } } else if (cb) { - process.nextTick(emitCloseNT, _this); + process.nextTick(emitCloseNT, this); cb(err); } else { - process.nextTick(emitCloseNT, _this); + process.nextTick(emitCloseNT, this); } }); - return this; } - function emitErrorAndCloseNT(self, err) { emitErrorNT(self, err); emitCloseNT(self); } - function emitCloseNT(self) { if (self._writableState && !self._writableState.emitClose) return; if (self._readableState && !self._readableState.emitClose) return; self.emit('close'); } - function undestroy() { if (this._readableState) { this._readableState.destroyed = false; @@ -71,7 +64,6 @@ function undestroy() { this._readableState.ended = false; this._readableState.endEmitted = false; } - if (this._writableState) { this._writableState.destroyed = false; this._writableState.ended = false; @@ -82,24 +74,22 @@ function undestroy() { this._writableState.errorEmitted = false; } } - function emitErrorNT(self, err) { self.emit('error', err); } - function errorOrDestroy(stream, err) { // We have tests that rely on errors being emitted // in the same tick, so changing this is semver major. // For now when you opt-in to autoDestroy we allow // the error to be emitted nextTick. In a future // semver major update we should change the default to this. - var rState = stream._readableState; - var wState = stream._writableState; + + const rState = stream._readableState; + const wState = stream._writableState; if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err); } - module.exports = { - destroy: destroy, - undestroy: undestroy, - errorOrDestroy: errorOrDestroy + destroy, + undestroy, + errorOrDestroy }; \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/end-of-stream.js b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/end-of-stream.js index 831f286d98fa95..b6d101691f187c 100644 --- a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +++ b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/end-of-stream.js @@ -1,78 +1,62 @@ // Ported from https://github.com/mafintosh/end-of-stream with // permission from the author, Mathias Buus (@mafintosh). -'use strict'; -var ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE; +'use strict'; +const ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE; function once(callback) { - var called = false; + let called = false; return function () { if (called) return; called = true; - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } - callback.apply(this, args); }; } - function noop() {} - function isRequest(stream) { return stream.setHeader && typeof stream.abort === 'function'; } - function eos(stream, opts, callback) { if (typeof opts === 'function') return eos(stream, null, opts); if (!opts) opts = {}; callback = once(callback || noop); - var readable = opts.readable || opts.readable !== false && stream.readable; - var writable = opts.writable || opts.writable !== false && stream.writable; - - var onlegacyfinish = function onlegacyfinish() { + let readable = opts.readable || opts.readable !== false && stream.readable; + let writable = opts.writable || opts.writable !== false && stream.writable; + const onlegacyfinish = () => { if (!stream.writable) onfinish(); }; - var writableEnded = stream._writableState && stream._writableState.finished; - - var onfinish = function onfinish() { + const onfinish = () => { writable = false; writableEnded = true; if (!readable) callback.call(stream); }; - var readableEnded = stream._readableState && stream._readableState.endEmitted; - - var onend = function onend() { + const onend = () => { readable = false; readableEnded = true; if (!writable) callback.call(stream); }; - - var onerror = function onerror(err) { + const onerror = err => { callback.call(stream, err); }; - - var onclose = function onclose() { - var err; - + const onclose = () => { + let err; if (readable && !readableEnded) { if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE(); return callback.call(stream, err); } - if (writable && !writableEnded) { if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE(); return callback.call(stream, err); } }; - - var onrequest = function onrequest() { + const onrequest = () => { stream.req.on('finish', onfinish); }; - if (isRequest(stream)) { stream.on('complete', onfinish); stream.on('abort', onclose); @@ -82,7 +66,6 @@ function eos(stream, opts, callback) { stream.on('end', onlegacyfinish); stream.on('close', onlegacyfinish); } - stream.on('end', onend); stream.on('finish', onfinish); if (opts.error !== false) stream.on('error', onerror); @@ -100,5 +83,4 @@ function eos(stream, opts, callback) { stream.removeListener('close', onclose); }; } - module.exports = eos; \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/from.js b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/from.js index 6c41284416799c..4ca2cd1996d28f 100644 --- a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/from.js +++ b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/from.js @@ -1,52 +1,42 @@ 'use strict'; function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } - function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } - -function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } - -function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -var ERR_INVALID_ARG_TYPE = require('../../../errors').codes.ERR_INVALID_ARG_TYPE; - +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } +function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } +function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +const ERR_INVALID_ARG_TYPE = require('../../../errors').codes.ERR_INVALID_ARG_TYPE; function from(Readable, iterable, opts) { - var iterator; - + let iterator; if (iterable && typeof iterable.next === 'function') { iterator = iterable; } else if (iterable && iterable[Symbol.asyncIterator]) iterator = iterable[Symbol.asyncIterator]();else if (iterable && iterable[Symbol.iterator]) iterator = iterable[Symbol.iterator]();else throw new ERR_INVALID_ARG_TYPE('iterable', ['Iterable'], iterable); - - var readable = new Readable(_objectSpread({ + const readable = new Readable(_objectSpread({ objectMode: true - }, opts)); // Reading boolean to protect against _read + }, opts)); + // Reading boolean to protect against _read // being called before last iteration completion. - - var reading = false; - + let reading = false; readable._read = function () { if (!reading) { reading = true; next(); } }; - function next() { return _next2.apply(this, arguments); } - function _next2() { _next2 = _asyncToGenerator(function* () { try { - var _ref = yield iterator.next(), - value = _ref.value, - done = _ref.done; - + const _yield$iterator$next = yield iterator.next(), + value = _yield$iterator$next.value, + done = _yield$iterator$next.done; if (done) { readable.push(null); - } else if (readable.push((yield value))) { + } else if (readable.push(yield value)) { next(); } else { reading = false; @@ -57,8 +47,6 @@ function from(Readable, iterable, opts) { }); return _next2.apply(this, arguments); } - return readable; } - module.exports = from; \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/pipeline.js b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/pipeline.js index 6589909889c585..272546db82513d 100644 --- a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/pipeline.js +++ b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/pipeline.js @@ -1,88 +1,78 @@ // Ported from https://github.com/mafintosh/pump with // permission from the author, Mathias Buus (@mafintosh). -'use strict'; -var eos; +'use strict'; +let eos; function once(callback) { - var called = false; + let called = false; return function () { if (called) return; called = true; - callback.apply(void 0, arguments); + callback(...arguments); }; } - -var _require$codes = require('../../../errors').codes, - ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS, - ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED; - +const _require$codes = require('../../../errors').codes, + ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS, + ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED; function noop(err) { // Rethrow the error if it exists to avoid swallowing it if (err) throw err; } - function isRequest(stream) { return stream.setHeader && typeof stream.abort === 'function'; } - function destroyer(stream, reading, writing, callback) { callback = once(callback); - var closed = false; - stream.on('close', function () { + let closed = false; + stream.on('close', () => { closed = true; }); if (eos === undefined) eos = require('./end-of-stream'); eos(stream, { readable: reading, writable: writing - }, function (err) { + }, err => { if (err) return callback(err); closed = true; callback(); }); - var destroyed = false; - return function (err) { + let destroyed = false; + return err => { if (closed) return; if (destroyed) return; - destroyed = true; // request.destroy just do .end - .abort is what we want + destroyed = true; + // request.destroy just do .end - .abort is what we want if (isRequest(stream)) return stream.abort(); if (typeof stream.destroy === 'function') return stream.destroy(); callback(err || new ERR_STREAM_DESTROYED('pipe')); }; } - function call(fn) { fn(); } - function pipe(from, to) { return from.pipe(to); } - function popCallback(streams) { if (!streams.length) return noop; if (typeof streams[streams.length - 1] !== 'function') return noop; return streams.pop(); } - function pipeline() { for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) { streams[_key] = arguments[_key]; } - - var callback = popCallback(streams); + const callback = popCallback(streams); if (Array.isArray(streams[0])) streams = streams[0]; - if (streams.length < 2) { throw new ERR_MISSING_ARGS('streams'); } - - var error; - var destroys = streams.map(function (stream, i) { - var reading = i < streams.length - 1; - var writing = i > 0; + let error; + const destroys = streams.map(function (stream, i) { + const reading = i < streams.length - 1; + const writing = i > 0; return destroyer(stream, reading, writing, function (err) { if (!error) error = err; if (err) destroys.forEach(call); @@ -93,5 +83,4 @@ function pipeline() { }); return streams.reduce(pipe); } - module.exports = pipeline; \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/state.js b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/state.js index 19887eb8a9070e..8a994b4422a2d2 100644 --- a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/state.js +++ b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/state.js @@ -1,27 +1,22 @@ 'use strict'; -var ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE; - +const ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE; function highWaterMarkFrom(options, isDuplex, duplexKey) { return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null; } - function getHighWaterMark(state, options, duplexKey, isDuplex) { - var hwm = highWaterMarkFrom(options, isDuplex, duplexKey); - + const hwm = highWaterMarkFrom(options, isDuplex, duplexKey); if (hwm != null) { if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) { - var name = isDuplex ? duplexKey : 'highWaterMark'; + const name = isDuplex ? duplexKey : 'highWaterMark'; throw new ERR_INVALID_OPT_VALUE(name, hwm); } - return Math.floor(hwm); - } // Default value - + } + // Default value return state.objectMode ? 16 : 16 * 1024; } - module.exports = { - getHighWaterMark: getHighWaterMark + getHighWaterMark }; \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/package.json b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/package.json index 0b0c4bd207ace3..4cd81b628d572a 100644 --- a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/package.json +++ b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/package.json @@ -1,6 +1,6 @@ { "name": "readable-stream", - "version": "3.6.0", + "version": "3.6.1", "description": "Streams3, a user-land copy of the stream library from Node.js", "main": "readable.js", "engines": { diff --git a/deps/npm/node_modules/sigstore/LICENSE b/deps/npm/node_modules/sigstore/LICENSE index d645695673349e..e9e7c1679a09df 100644 --- a/deps/npm/node_modules/sigstore/LICENSE +++ b/deps/npm/node_modules/sigstore/LICENSE @@ -187,7 +187,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [yyyy] [name of copyright owner] + Copyright 2023 The Sigstore Authors Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/deps/npm/node_modules/sigstore/README.md b/deps/npm/node_modules/sigstore/README.md index 0a8b690423a0f3..5ade0dc5ab45f5 100644 --- a/deps/npm/node_modules/sigstore/README.md +++ b/deps/npm/node_modules/sigstore/README.md @@ -1,4 +1,4 @@ -# sigstore-js +# sigstore-js · [![npm version](https://img.shields.io/npm/v/sigstore.svg?style=flat)](https://www.npmjs.com/package/sigstore) [![CI Status](https://github.com/sigstore/sigstore-js/workflows/CI/badge.svg)](https://github.com/sigstore/sigstore-js/actions/workflows/ci.yml) [![Smoke Test Status](https://github.com/sigstore/sigstore-js/workflows/smoke-test/badge.svg)](https://github.com/sigstore/sigstore-js/actions/workflows/smoke-test.yml) A JavaScript library for generating and verifying Sigstore signatures. One of the intended uses is to sign and verify npm packages but it can be used to sign @@ -101,29 +101,16 @@ sigstore ## Development -### Updating protobufs +### Changesets +If you are contributing a user-facing or noteworthy change that should be added to the changelog, you should include a changeset with your PR by running the following command: -[Docker](https://docs.docker.com/engine/install/) is required to generate protobufs for the `.sigstore` bundle format. - -Install Docker on MacOS using [Homebrew](https://brew.sh/): - -``` -brew install --cask docker && open -a Docker +```console +npx changeset add ``` -View [Docker install instructions](https://docs.docker.com/engine/install/) for other platforms. - -#### Updating Sigstore Protobufs - -Update the Git `REF` in `hack/generate-bundle-types` from the [sigstore/protobuf-specs][5] repository. +Follow the prompts to specify whether the change is a major, minor or patch change. This will create a file in the `.changesets` directory of the repo. This change should be committed and included with your PR. -Generate TypeScript protobufs (should update files in scr/types/sigstore/\_\_generated\_\_): - -``` -npm run codegen:bundle -``` - -#### Updating Rekor Types +### Updating Rekor Types Update the git `REF` in `hack/generate-rekor-types` from the [sigstore/rekor][1] repository. @@ -135,16 +122,10 @@ npm run codegen:rekor ### Release Steps -1. Update the version inside `package.json` and run `npm i` to update `package-lock.json`. -2. PR the changes above and merge to the "main" branch when approved. -3. Use either the "[Create a new release](https://github.com/sigstore/sigstore-js/releases/new)" link or the `gh release create` CLI command to start a new release. -4. Tag the release with a label matching the version in the `package.json` (with a `v` prefix). -5. Add a title matching the tag. -6. Add release notes. -7. Mark as pre-release as appropriate. -8. Publish release. +Whenever a new changeset is merged to the "main" branch, the `release` workflow will open a PR (or append to the existing PR if one is already open) with the all of the pending changesets. + +Publishing a release simply requires that you approve/merge this PR. This will trigger the publishing of the package to the npm registry and the creation of the GitHub release. -After publishing the release, a new npm package will be built and published automatically to the npm registry. ## Licensing `sigstore-js` is licensed under the Apache 2.0 License. diff --git a/deps/npm/node_modules/sigstore/dist/sigstore.d.ts b/deps/npm/node_modules/sigstore/dist/sigstore.d.ts index bb3034383e6956..22c5d2a45f87bf 100644 --- a/deps/npm/node_modules/sigstore/dist/sigstore.d.ts +++ b/deps/npm/node_modules/sigstore/dist/sigstore.d.ts @@ -8,6 +8,10 @@ export declare const DEFAULT_REKOR_URL = "https://rekor.sigstore.dev"; interface TLogOptions { rekorURL?: string; } +interface TUFOptions { + tufMirrorURL?: string; + tufRootPath?: string; +} export type SignOptions = { fulcioURL?: string; identityToken?: string; @@ -23,7 +27,7 @@ export type VerifyOptions = { certificateIdentityURI?: string; certificateOIDs?: Record; keySelector?: KeySelector; -} & TLogOptions; +} & TLogOptions & TUFOptions; type Bundle = sigstore.SerializedBundle; export declare function sign(payload: Buffer, options?: SignOptions): Promise; export declare function attest(payload: Buffer, payloadType: string, options?: SignOptions): Promise; diff --git a/deps/npm/node_modules/sigstore/dist/sigstore.js b/deps/npm/node_modules/sigstore/dist/sigstore.js index ef8fb2058a47e9..34b269aadd7d31 100644 --- a/deps/npm/node_modules/sigstore/dist/sigstore.js +++ b/deps/npm/node_modules/sigstore/dist/sigstore.js @@ -42,15 +42,13 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -const fs_1 = __importDefault(require("fs")); -const os_1 = __importDefault(require("os")); -const path_1 = __importDefault(require("path")); const ca_1 = require("./ca"); const identity_1 = __importDefault(require("./identity")); const sign_1 = require("./sign"); const tlog_1 = require("./tlog"); const tuf = __importStar(require("./tuf")); const sigstore = __importStar(require("./types/sigstore")); +const util_1 = require("./util"); const verify_1 = require("./verify"); exports.utils = __importStar(require("./sigstore-utils")); exports.DEFAULT_FULCIO_URL = 'https://fulcio.sigstore.dev'; @@ -65,6 +63,7 @@ function createTLogClient(options) { rekorBaseURL: options.rekorURL || exports.DEFAULT_REKOR_URL, }); } +const tufCacheDir = util_1.appdata.appDataPath('sigstore-js'); async function sign(payload, options = {}) { const ca = createCAClient(options); const tlog = createTLogClient(options); @@ -92,8 +91,10 @@ async function attest(payload, payloadType, options = {}) { } exports.attest = attest; async function verify(bundle, payload, options = {}) { - const cacheDir = defaultCacheDir(); - const trustedRoot = await tuf.getTrustedRoot(cacheDir); + const trustedRoot = await tuf.getTrustedRoot(tufCacheDir, { + mirrorURL: options.tufMirrorURL, + rootPath: options.tufRootPath, + }); const verifier = new verify_1.Verifier(trustedRoot, options.keySelector); const deserializedBundle = sigstore.bundleFromJSON(bundle); const opts = collectArtifactVerificationOptions(options); @@ -119,16 +120,6 @@ function configureIdentityProviders(options) { } return idps; } -function defaultCacheDir() { - let cacheRootDir = os_1.default.homedir(); - try { - fs_1.default.accessSync(os_1.default.homedir(), fs_1.default.constants.W_OK | fs_1.default.constants.R_OK); - } - catch (e) { - cacheRootDir = os_1.default.tmpdir(); - } - return path_1.default.join(cacheRootDir, '.sigstore', 'js-root'); -} // Assembles the AtifactVerificationOptions from the supplied VerifyOptions. function collectArtifactVerificationOptions(options) { // The trusted signers are only used if the options contain a certificate diff --git a/deps/npm/node_modules/sigstore/dist/tlog/types/__generated__/hashedrekord.js b/deps/npm/node_modules/sigstore/dist/tlog/types/__generated__/hashedrekord.js index 5383a370094cdf..61923a61cd8dee 100644 --- a/deps/npm/node_modules/sigstore/dist/tlog/types/__generated__/hashedrekord.js +++ b/deps/npm/node_modules/sigstore/dist/tlog/types/__generated__/hashedrekord.js @@ -1,5 +1,5 @@ "use strict"; -/* tslint:disable */ +/* eslint-disable */ /** * This file was automatically generated by json-schema-to-typescript. * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, diff --git a/deps/npm/node_modules/sigstore/dist/tlog/types/__generated__/intoto.js b/deps/npm/node_modules/sigstore/dist/tlog/types/__generated__/intoto.js index 5383a370094cdf..61923a61cd8dee 100644 --- a/deps/npm/node_modules/sigstore/dist/tlog/types/__generated__/intoto.js +++ b/deps/npm/node_modules/sigstore/dist/tlog/types/__generated__/intoto.js @@ -1,5 +1,5 @@ "use strict"; -/* tslint:disable */ +/* eslint-disable */ /** * This file was automatically generated by json-schema-to-typescript. * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, diff --git a/deps/npm/node_modules/sigstore/dist/tuf/index.d.ts b/deps/npm/node_modules/sigstore/dist/tuf/index.d.ts index 349ff08b3be4bb..455fc6af06c54e 100644 --- a/deps/npm/node_modules/sigstore/dist/tuf/index.d.ts +++ b/deps/npm/node_modules/sigstore/dist/tuf/index.d.ts @@ -1,2 +1,6 @@ import * as sigstore from '../types/sigstore'; -export declare function getTrustedRoot(cacheDir: string): Promise; +export interface TUFOptions { + mirrorURL?: string; + rootPath?: string; +} +export declare function getTrustedRoot(cachePath: string, options?: TUFOptions): Promise; diff --git a/deps/npm/node_modules/sigstore/dist/tuf/index.js b/deps/npm/node_modules/sigstore/dist/tuf/index.js index 1aea238ef32ff2..824bce9105ed8e 100644 --- a/deps/npm/node_modules/sigstore/dist/tuf/index.js +++ b/deps/npm/node_modules/sigstore/dist/tuf/index.js @@ -1,4 +1,27 @@ "use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; @@ -22,55 +45,62 @@ limitations under the License. const fs_1 = __importDefault(require("fs")); const path_1 = __importDefault(require("path")); const tuf_js_1 = require("tuf-js"); -const trustroot_1 = require("./trustroot"); -async function getTrustedRoot(cacheDir) { - initTufCache(cacheDir); - const repoMap = initRepoMap(cacheDir); - const repoClients = Object.entries(repoMap.repositories).map(([name, urls]) => initClient(name, urls[0], cacheDir)); - // TODO: Add support for multiple repositories. For now, we just use the first - // one (the production Sigstore TUF repository). - const fetcher = new trustroot_1.TrustedRootFetcher(repoClients[0]); - return fetcher.getTrustedRoot(); +const sigstore = __importStar(require("../types/sigstore")); +const target_1 = require("./target"); +const TRUSTED_ROOT_TARGET = 'trusted_root.json'; +const DEFAULT_MIRROR_URL = 'https://sigstore-tuf-root.storage.googleapis.com'; +const DEFAULT_TUF_ROOT_PATH = '../../store/public-good-instance-root.json'; +async function getTrustedRoot(cachePath, options = {}) { + const tufRootPath = options.rootPath || require.resolve(DEFAULT_TUF_ROOT_PATH); + const mirrorURL = options.mirrorURL || DEFAULT_MIRROR_URL; + initTufCache(cachePath, tufRootPath); + const remote = initRemoteConfig(cachePath, mirrorURL); + const repoClient = initClient(cachePath, remote); + const trustedRoot = await (0, target_1.getTarget)(repoClient, TRUSTED_ROOT_TARGET); + return sigstore.TrustedRoot.fromJSON(JSON.parse(trustedRoot)); } exports.getTrustedRoot = getTrustedRoot; -// Initializes the root TUF cache directory -function initTufCache(cacheDir) { - if (!fs_1.default.existsSync(cacheDir)) { - fs_1.default.mkdirSync(cacheDir, { recursive: true }); +// Initializes the TUF cache directory structure including the initial +// root.json file. If the cache directory does not exist, it will be +// created. If the targets directory does not exist, it will be created. +// If the root.json file does not exist, it will be copied from the +// rootPath argument. +function initTufCache(cachePath, tufRootPath) { + const targetsPath = path_1.default.join(cachePath, 'targets'); + const cachedRootPath = path_1.default.join(cachePath, 'root.json'); + if (!fs_1.default.existsSync(cachePath)) { + fs_1.default.mkdirSync(cachePath, { recursive: true }); } -} -// Initializes the repo map (copying it to the cache root dir) and returns the -// content of the repository map. -function initRepoMap(rootDir) { - const mapDest = path_1.default.join(rootDir, 'map.json'); - if (!fs_1.default.existsSync(mapDest)) { - const mapSrc = require.resolve('../../store/map.json'); - fs_1.default.copyFileSync(mapSrc, mapDest); + if (!fs_1.default.existsSync(targetsPath)) { + fs_1.default.mkdirSync(targetsPath); } - const buf = fs_1.default.readFileSync(mapDest); - return JSON.parse(buf.toString('utf-8')); + if (!fs_1.default.existsSync(cachedRootPath)) { + fs_1.default.copyFileSync(tufRootPath, cachedRootPath); + } + return cachePath; } -function initClient(name, url, rootDir) { - const repoCachePath = path_1.default.join(rootDir, name); - const targetCachePath = path_1.default.join(repoCachePath, 'targets'); - const tufRootDest = path_1.default.join(repoCachePath, 'root.json'); - // Only copy the TUF trusted root if it doesn't already exist. It's possible - // that the cached root has already been updated, so we don't want to roll it - // back. - if (!fs_1.default.existsSync(tufRootDest)) { - const tufRootSrc = require.resolve(`../../store/${name}-root.json`); - fs_1.default.mkdirSync(repoCachePath); - fs_1.default.copyFileSync(tufRootSrc, tufRootDest); +// Initializes the remote.json file, which contains the URL of the TUF +// repository. If the file does not exist, it will be created. If the file +// exists, it will be parsed and returned. +function initRemoteConfig(rootDir, mirrorURL) { + let remoteConfig; + const remoteConfigPath = path_1.default.join(rootDir, 'remote.json'); + if (fs_1.default.existsSync(remoteConfigPath)) { + const data = fs_1.default.readFileSync(remoteConfigPath, 'utf-8'); + remoteConfig = JSON.parse(data); } - if (!fs_1.default.existsSync(targetCachePath)) { - fs_1.default.mkdirSync(targetCachePath); + if (!remoteConfig) { + remoteConfig = { mirror: mirrorURL }; + fs_1.default.writeFileSync(remoteConfigPath, JSON.stringify(remoteConfig)); } - // TODO: Is there some better way to derive the base URL for the targets? - // Hard-coding for now based on current Sigstore TUF repo layout. + return remoteConfig; +} +function initClient(cachePath, remote) { + const baseURL = remote.mirror; return new tuf_js_1.Updater({ - metadataBaseUrl: url, - targetBaseUrl: `${url}/targets`, - metadataDir: repoCachePath, - targetDir: targetCachePath, + metadataBaseUrl: baseURL, + targetBaseUrl: `${baseURL}/targets`, + metadataDir: cachePath, + targetDir: path_1.default.join(cachePath, 'targets'), }); } diff --git a/deps/npm/node_modules/sigstore/dist/tuf/target.d.ts b/deps/npm/node_modules/sigstore/dist/tuf/target.d.ts new file mode 100644 index 00000000000000..aed81654f3be0b --- /dev/null +++ b/deps/npm/node_modules/sigstore/dist/tuf/target.d.ts @@ -0,0 +1,2 @@ +import { Updater } from 'tuf-js'; +export declare function getTarget(tuf: Updater, targetPath: string): Promise; diff --git a/deps/npm/node_modules/sigstore/dist/tuf/target.js b/deps/npm/node_modules/sigstore/dist/tuf/target.js new file mode 100644 index 00000000000000..ac708cdbcf1cef --- /dev/null +++ b/deps/npm/node_modules/sigstore/dist/tuf/target.js @@ -0,0 +1,60 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getTarget = void 0; +/* +Copyright 2023 The Sigstore Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +const fs_1 = __importDefault(require("fs")); +const error_1 = require("../error"); +// Returns the local path to the specified target. If the target is not yet +// cached locally, the provided TUF Updater will be used to download and +// cache the target. +async function getTarget(tuf, targetPath) { + const path = await getTargetPath(tuf, targetPath); + try { + return fs_1.default.readFileSync(path, 'utf-8'); + } + catch (err) { + throw new error_1.InternalError(`error reading trusted root: ${err}`); + } +} +exports.getTarget = getTarget; +async function getTargetPath(tuf, target) { + let targetInfo; + try { + targetInfo = await tuf.refresh().then(() => tuf.getTargetInfo(target)); + } + catch (err) { + throw new error_1.InternalError(`error refreshing TUF metadata: ${err}`); + } + if (!targetInfo) { + throw new error_1.InternalError(`target ${target} not found`); + } + let path = await tuf.findCachedTarget(targetInfo); + // An empty path here means the target has not been cached locally, or is + // out of date. In either case, we need to download it. + if (!path) { + try { + path = await tuf.downloadTarget(targetInfo); + } + catch (err) { + throw new error_1.InternalError(`error downloading target: ${err}`); + } + } + return path; +} diff --git a/deps/npm/node_modules/sigstore/dist/tuf/trustroot.d.ts b/deps/npm/node_modules/sigstore/dist/tuf/trustroot.d.ts deleted file mode 100644 index 615fffae62a80e..00000000000000 --- a/deps/npm/node_modules/sigstore/dist/tuf/trustroot.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Updater } from 'tuf-js'; -import * as sigstore from '../types/sigstore'; -export declare class TrustedRootFetcher { - private tuf; - constructor(tuf: Updater); - getTrustedRoot(): Promise; - private allTargets; - private getTLogKeys; - private getCAKeys; - private readTargetBytes; -} diff --git a/deps/npm/node_modules/sigstore/dist/tuf/trustroot.js b/deps/npm/node_modules/sigstore/dist/tuf/trustroot.js deleted file mode 100644 index dcf491cdaefe8d..00000000000000 --- a/deps/npm/node_modules/sigstore/dist/tuf/trustroot.js +++ /dev/null @@ -1,163 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.TrustedRootFetcher = void 0; -/* -Copyright 2023 The Sigstore Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ -const fs_1 = __importDefault(require("fs")); -const error_1 = require("../error"); -const sigstore = __importStar(require("../types/sigstore")); -const util_1 = require("../util"); -const TRUSTED_ROOT_MEDIA_TYPE = 'application/vnd.dev.sigstore.trustedroot+json;version=0.1'; -// Type guard for SigstoreTargetMetadata -function isTargetMetadata(m) { - return (m !== undefined && - m !== null && - typeof m === 'object' && - 'status' in m && - 'usage' in m && - 'uri' in m); -} -class TrustedRootFetcher { - constructor(tuf) { - this.tuf = tuf; - } - // Assembles a TrustedRoot from the targets in the TUF repo - async getTrustedRoot() { - // Get all available targets - const targets = await this.allTargets(); - const cas = await this.getCAKeys(targets, 'Fulcio'); - const ctlogs = await this.getTLogKeys(targets, 'CTFE'); - const tlogs = await this.getTLogKeys(targets, 'Rekor'); - return { - mediaType: TRUSTED_ROOT_MEDIA_TYPE, - certificateAuthorities: cas, - ctlogs: ctlogs, - tlogs: tlogs, - timestampAuthorities: [], - }; - } - // Retrieves the list of TUF targets. - // NOTE: This is a HACK to get around the fact that the TUF library doesn't - // expose the list of targets. This is a temporary solution until TUF comes up - // with a story for target discovery. - // https://docs.google.com/document/d/1rWHAM2qCUtnjWD4lOrGWE2EIDLoA7eSy4-jB66Wgh0o - async allTargets() { - try { - await this.tuf.refresh(); - } - catch (e) { - throw new error_1.InternalError('error refreshing trust metadata'); - } - return Object.values( - // eslint-disable-next-line @typescript-eslint/no-explicit-any - this.tuf.trustedSet.targets?.signed.targets || {}); - } - // Filters the supplied list of targets to those with the specified usage - // and returns a new TransparencyLogInstance for each with the associated - // public key populated. - async getTLogKeys(targets, usage) { - const filteredTargets = filterByUsage(targets, usage); - return Promise.all(filteredTargets.map(async (target) => { - const keyBytes = await this.readTargetBytes(target); - const uri = isTargetMetadata(target.custom.sigstore) - ? target.custom.sigstore.uri - : ''; - // The log ID is not present in the Sigstore target metadata, but - // can be derived by hashing the contents of the public key. - return { - baseUrl: uri, - hashAlgorithm: sigstore.HashAlgorithm.SHA2_256, - logId: { keyId: util_1.crypto.hash(keyBytes) }, - publicKey: { - keyDetails: sigstore.PublicKeyDetails.PKIX_ECDSA_P256_SHA_256, - rawBytes: keyBytes, - }, - }; - })); - } - // Filters the supplied list of targets to those with the specified usage - // and returns a new CertificateAuthority populated with all of the associated - // certificates. - // NOTE: The Sigstore target metadata does NOT provide any mechanism to link - // related certificates (e.g. a root and intermediate). As a result, we - // assume that all certificates located here are part of the same chain. - // This works out OK since our certificate chain verification code tries all - // possible permutations of the certificates until it finds one that results - // in a valid, trusted chain. - async getCAKeys(targets, usage) { - const filteredTargets = filterByUsage(targets, usage); - const certs = await Promise.all(filteredTargets.map(async (target) => await this.readTargetBytes(target))); - return [ - { - uri: '', - subject: undefined, - validFor: { start: new Date(0) }, - certChain: { - certificates: certs.map((cert) => ({ rawBytes: cert })), - }, - }, - ]; - } - // Reads the contents of the specified target file as a DER-encoded buffer. - async readTargetBytes(target) { - try { - let path = await this.tuf.findCachedTarget(target); - // An empty path here means the target has not been cached locally, or is - // out of date. In either case, we need to download it. - if (!path) { - path = await this.tuf.downloadTarget(target); - } - const file = fs_1.default.readFileSync(path); - return util_1.pem.toDER(file.toString('utf-8')); - } - catch (err) { - throw new error_1.InternalError(`error reading key/certificate for ${target.path}`); - } - } -} -exports.TrustedRootFetcher = TrustedRootFetcher; -function filterByUsage(targets, usage) { - return targets.filter((target) => { - const meta = target.custom.sigstore; - return isTargetMetadata(meta) && meta.usage === usage; - }); -} diff --git a/deps/npm/node_modules/sigstore/dist/types/sigstore/index.d.ts b/deps/npm/node_modules/sigstore/dist/types/sigstore/index.d.ts index 26dd2150d548eb..70b2896fbdcbae 100644 --- a/deps/npm/node_modules/sigstore/dist/types/sigstore/index.d.ts +++ b/deps/npm/node_modules/sigstore/dist/types/sigstore/index.d.ts @@ -1,21 +1,13 @@ /// +import { ArtifactVerificationOptions, Bundle, Envelope, TransparencyLogEntry, VerificationMaterial } from '@sigstore/protobuf-specs'; import { Entry } from '../../tlog'; import { x509Certificate } from '../../x509/cert'; import { SignatureMaterial } from '../signature'; import { WithRequired } from '../utility'; import { ValidBundle } from './validate'; -import { Envelope } from './__generated__/envelope'; -import { Bundle, VerificationMaterial } from './__generated__/sigstore_bundle'; -import { TransparencyLogEntry } from './__generated__/sigstore_rekor'; -import { ArtifactVerificationOptions } from './__generated__/sigstore_verification'; +export * from '@sigstore/protobuf-specs'; export * from './serialized'; export * from './validate'; -export * from './__generated__/envelope'; -export * from './__generated__/sigstore_bundle'; -export * from './__generated__/sigstore_common'; -export { TransparencyLogEntry } from './__generated__/sigstore_rekor'; -export * from './__generated__/sigstore_trustroot'; -export * from './__generated__/sigstore_verification'; export declare const bundleToJSON: (message: Bundle) => unknown; export declare const bundleFromJSON: (obj: any) => ValidBundle; export declare const envelopeToJSON: (message: Envelope) => unknown; diff --git a/deps/npm/node_modules/sigstore/dist/types/sigstore/index.js b/deps/npm/node_modules/sigstore/dist/types/sigstore/index.js index df07d6dc9fc295..55df7e744de197 100644 --- a/deps/npm/node_modules/sigstore/dist/types/sigstore/index.js +++ b/deps/npm/node_modules/sigstore/dist/types/sigstore/index.js @@ -14,32 +14,39 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); -exports.signingCertificate = exports.bundle = exports.isVerifiableTransparencyLogEntry = exports.isCAVerificationOptions = exports.isBundleWithCertificateChain = exports.isBundleWithVerificationMaterial = exports.envelopeFromJSON = exports.envelopeToJSON = exports.bundleFromJSON = exports.bundleToJSON = exports.TransparencyLogEntry = void 0; +exports.signingCertificate = exports.bundle = exports.isVerifiableTransparencyLogEntry = exports.isCAVerificationOptions = exports.isBundleWithCertificateChain = exports.isBundleWithVerificationMaterial = exports.envelopeFromJSON = exports.envelopeToJSON = exports.bundleFromJSON = exports.bundleToJSON = void 0; +/* +Copyright 2023 The Sigstore Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +const protobuf_specs_1 = require("@sigstore/protobuf-specs"); const util_1 = require("../../util"); const cert_1 = require("../../x509/cert"); const validate_1 = require("./validate"); -const envelope_1 = require("./__generated__/envelope"); -const sigstore_bundle_1 = require("./__generated__/sigstore_bundle"); -const sigstore_common_1 = require("./__generated__/sigstore_common"); +__exportStar(require("@sigstore/protobuf-specs"), exports); __exportStar(require("./serialized"), exports); __exportStar(require("./validate"), exports); -__exportStar(require("./__generated__/envelope"), exports); -__exportStar(require("./__generated__/sigstore_bundle"), exports); -__exportStar(require("./__generated__/sigstore_common"), exports); -var sigstore_rekor_1 = require("./__generated__/sigstore_rekor"); -Object.defineProperty(exports, "TransparencyLogEntry", { enumerable: true, get: function () { return sigstore_rekor_1.TransparencyLogEntry; } }); -__exportStar(require("./__generated__/sigstore_trustroot"), exports); -__exportStar(require("./__generated__/sigstore_verification"), exports); -exports.bundleToJSON = sigstore_bundle_1.Bundle.toJSON; +exports.bundleToJSON = protobuf_specs_1.Bundle.toJSON; // eslint-disable-next-line @typescript-eslint/no-explicit-any const bundleFromJSON = (obj) => { - const bundle = sigstore_bundle_1.Bundle.fromJSON(obj); + const bundle = protobuf_specs_1.Bundle.fromJSON(obj); (0, validate_1.assertValidBundle)(bundle); return bundle; }; exports.bundleFromJSON = bundleFromJSON; -exports.envelopeToJSON = envelope_1.Envelope.toJSON; -exports.envelopeFromJSON = envelope_1.Envelope.fromJSON; +exports.envelopeToJSON = protobuf_specs_1.Envelope.toJSON; +exports.envelopeFromJSON = protobuf_specs_1.Envelope.fromJSON; const BUNDLE_MEDIA_TYPE = 'application/vnd.dev.sigstore.bundle+json;version=0.1'; // Type guard for narrowing a Bundle to a BundleWithVerificationMaterial function isBundleWithVerificationMaterial(bundle) { @@ -80,7 +87,7 @@ exports.bundle = { $case: 'messageSignature', messageSignature: { messageDigest: { - algorithm: sigstore_common_1.HashAlgorithm.SHA2_256, + algorithm: protobuf_specs_1.HashAlgorithm.SHA2_256, digest: digest, }, signature: signature.signature, diff --git a/deps/npm/node_modules/sigstore/dist/types/sigstore/validate.d.ts b/deps/npm/node_modules/sigstore/dist/types/sigstore/validate.d.ts index fd0a354282426d..7d8316fd2e6a2b 100644 --- a/deps/npm/node_modules/sigstore/dist/types/sigstore/validate.d.ts +++ b/deps/npm/node_modules/sigstore/dist/types/sigstore/validate.d.ts @@ -1,6 +1,5 @@ +import { Bundle, MessageSignature, VerificationMaterial } from '@sigstore/protobuf-specs'; import { WithRequired } from '../utility'; -import { Bundle, VerificationMaterial } from './__generated__/sigstore_bundle'; -import { MessageSignature } from './__generated__/sigstore_common'; export type ValidBundle = Bundle & { verificationMaterial: VerificationMaterial & { content: NonNullable; diff --git a/deps/npm/node_modules/sigstore/dist/types/sigstore/validate.js b/deps/npm/node_modules/sigstore/dist/types/sigstore/validate.js index a19d8ad3ec7021..efd873ab657018 100644 --- a/deps/npm/node_modules/sigstore/dist/types/sigstore/validate.js +++ b/deps/npm/node_modules/sigstore/dist/types/sigstore/validate.js @@ -1,21 +1,6 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.assertValidBundle = void 0; -/* -Copyright 2023 The Sigstore Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ const error_1 = require("../../error"); // Performs basic validation of a Sigstore bundle to ensure that all required // fields are populated. This is not a complete validation of the bundle, but diff --git a/deps/npm/node_modules/sigstore/dist/util/appdata.d.ts b/deps/npm/node_modules/sigstore/dist/util/appdata.d.ts new file mode 100644 index 00000000000000..dcdaeef418bd68 --- /dev/null +++ b/deps/npm/node_modules/sigstore/dist/util/appdata.d.ts @@ -0,0 +1 @@ +export declare function appDataPath(name: string): string; diff --git a/deps/npm/node_modules/sigstore/dist/util/appdata.js b/deps/npm/node_modules/sigstore/dist/util/appdata.js new file mode 100644 index 00000000000000..d0c7f6f079e501 --- /dev/null +++ b/deps/npm/node_modules/sigstore/dist/util/appdata.js @@ -0,0 +1,26 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.appDataPath = void 0; +const os_1 = __importDefault(require("os")); +const path_1 = __importDefault(require("path")); +function appDataPath(name) { + const homedir = os_1.default.homedir(); + switch (process.platform) { + case 'darwin': { + const appSupport = path_1.default.join(homedir, 'Library', 'Application Support'); + return path_1.default.join(appSupport, name); + } + case 'win32': { + const localAppData = process.env.LOCALAPPDATA || path_1.default.join(homedir, 'AppData', 'Local'); + return path_1.default.join(localAppData, name, 'Data'); + } + default: { + const localData = process.env.XDG_DATA_HOME || path_1.default.join(homedir, '.local', 'share'); + return path_1.default.join(localData, name); + } + } +} +exports.appDataPath = appDataPath; diff --git a/deps/npm/node_modules/sigstore/dist/util/index.d.ts b/deps/npm/node_modules/sigstore/dist/util/index.d.ts index 786a19630cd603..02e4ddc69b15c6 100644 --- a/deps/npm/node_modules/sigstore/dist/util/index.d.ts +++ b/deps/npm/node_modules/sigstore/dist/util/index.d.ts @@ -1,3 +1,4 @@ +export * as appdata from './appdata'; export * as crypto from './crypto'; export * as dsse from './dsse'; export * as encoding from './encoding'; diff --git a/deps/npm/node_modules/sigstore/dist/util/index.js b/deps/npm/node_modules/sigstore/dist/util/index.js index 2c02116cbf07dd..74ef9c0b1121b2 100644 --- a/deps/npm/node_modules/sigstore/dist/util/index.js +++ b/deps/npm/node_modules/sigstore/dist/util/index.js @@ -23,7 +23,7 @@ var __importStar = (this && this.__importStar) || function (mod) { return result; }; Object.defineProperty(exports, "__esModule", { value: true }); -exports.ua = exports.promise = exports.pem = exports.oidc = exports.json = exports.encoding = exports.dsse = exports.crypto = void 0; +exports.ua = exports.promise = exports.pem = exports.oidc = exports.json = exports.encoding = exports.dsse = exports.crypto = exports.appdata = void 0; /* Copyright 2022 The Sigstore Authors. @@ -39,6 +39,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ +exports.appdata = __importStar(require("./appdata")); exports.crypto = __importStar(require("./crypto")); exports.dsse = __importStar(require("./dsse")); exports.encoding = __importStar(require("./encoding")); diff --git a/deps/npm/node_modules/sigstore/dist/verify.js b/deps/npm/node_modules/sigstore/dist/verify.js index 1bcef03b5f7ba6..9d21b553ac5232 100644 --- a/deps/npm/node_modules/sigstore/dist/verify.js +++ b/deps/npm/node_modules/sigstore/dist/verify.js @@ -37,7 +37,7 @@ class Verifier { // Verifies the bundle signature, the bundle's certificate chain (if present) // and the bundle's transparency log entries. verify(bundle, options, data) { - this.verifyArtifactSignature(bundle, options, data); + this.verifyArtifactSignature(bundle, data); if (sigstore.isBundleWithCertificateChain(bundle)) { this.verifySigningCertificate(bundle, options); } @@ -45,8 +45,8 @@ class Verifier { } // Performs bundle signature verification. Determines the type of the bundle // content and delegates to the appropriate signature verification function. - verifyArtifactSignature(bundle, options, data) { - const publicKey = this.getPublicKey(bundle, options); + verifyArtifactSignature(bundle, data) { + const publicKey = this.getPublicKey(bundle); switch (bundle.content?.$case) { case 'messageSignature': if (!data) { @@ -79,7 +79,7 @@ class Verifier { // Returns the public key which will be used to verify the bundle signature. // The public key is selected based on the verification material in the bundle // and the options provided. - getPublicKey(bundle, options) { + getPublicKey(bundle) { // Select the key which will be used to verify the signature switch (bundle.verificationMaterial?.content?.$case) { // If the bundle contains a certificate chain, the public key is the @@ -89,7 +89,7 @@ class Verifier { // If the bundle contains a public key hint, the public key is selected // from the list of trusted keys in the options case 'publicKey': - return getPublicKeyFromHint(bundle.verificationMaterial.content.publicKey, options, this.keySelector); + return getPublicKeyFromHint(bundle.verificationMaterial.content.publicKey, this.keySelector); } } } @@ -101,7 +101,7 @@ function getPublicKeyFromCertificateChain(certificateChain) { } // Retrieves the public key through the key selector callback, passing the // public key hint from the bundle -function getPublicKeyFromHint(publicKeyID, options, keySelector) { +function getPublicKeyFromHint(publicKeyID, keySelector) { const key = keySelector(publicKeyID.hint); if (!key) { throw new error_1.VerificationError('no public key found for signature verification'); diff --git a/deps/npm/node_modules/sigstore/package.json b/deps/npm/node_modules/sigstore/package.json index 1a5960822eb0ee..b0e856df9a340f 100644 --- a/deps/npm/node_modules/sigstore/package.json +++ b/deps/npm/node_modules/sigstore/package.json @@ -1,6 +1,6 @@ { "name": "sigstore", - "version": "1.0.0", + "version": "1.1.1", "description": "code-signing for npm packages", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -12,7 +12,7 @@ "lint": "eslint --fix --ext .ts src/**", "lint:check": "eslint --max-warnings 0 --ext .ts src/**", "format": "prettier --write \"src/**/*\"", - "codegen:sigstore": "./hack/generate-sigstore-types", + "release": "npm run build && changeset publish", "codegen:rekor": "./hack/generate-rekor-types" }, "bin": { @@ -22,6 +22,9 @@ "type": "git", "url": "git+https://github.com/sigstore/sigstore-js.git" }, + "publishConfig": { + "provenance": true + }, "files": [ "dist", "store" @@ -33,6 +36,7 @@ }, "homepage": "https://github.com/sigstore/sigstore-js#readme", "devDependencies": { + "@changesets/cli": "^2.26.0", "@tsconfig/node14": "^1.0.3", "@types/jest": "^29.4.0", "@types/make-fetch-happen": "^10.0.0", @@ -43,13 +47,14 @@ "eslint-config-prettier": "^8.5.0", "eslint-plugin-prettier": "^4.0.0", "jest": "^29.4.1", - "json-schema-to-typescript": "^11.0.2", + "json-schema-to-typescript": "^12.0.0", "nock": "^13.2.4", "prettier": "^2.6.2", "ts-jest": "^29.0.5", "typescript": "^4.7.2" }, "dependencies": { + "@sigstore/protobuf-specs": "^0.1.0", "make-fetch-happen": "^11.0.1", "tuf-js": "^1.0.0" }, diff --git a/deps/npm/node_modules/sigstore/store/map.json b/deps/npm/node_modules/sigstore/store/map.json deleted file mode 100644 index 620bf0bedbf442..00000000000000 --- a/deps/npm/node_modules/sigstore/store/map.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "repositories": { - "public-good-instance": [ - "https://sigstore-tuf-root.storage.googleapis.com" - ] - }, - "mapping": [ - { - "paths": [ - "*" - ], - "repositories": [ - "public-good-instance" - ], - "terminating": true, - "threshold": 1 - } - ] -} diff --git a/deps/npm/node_modules/spdx-correct/index.js b/deps/npm/node_modules/spdx-correct/index.js index c51a79f5d1c80a..4d9037e0cc4355 100644 --- a/deps/npm/node_modules/spdx-correct/index.js +++ b/deps/npm/node_modules/spdx-correct/index.js @@ -25,6 +25,18 @@ function valid (string) { } } +// Sorting function that orders the given array of transpositions such +// that a transposition with the longer pattern comes before a transposition +// with a shorter pattern. This is to prevent e.g. the transposition +// ["General Public License", "GPL"] from matching to "Lesser General Public License" +// before a longer and more accurate transposition ["Lesser General Public License", "LGPL"] +// has a chance to be recognized. +function sortTranspositions(a, b) { + var length = b[0].length - a[0].length + if (length !== 0) return length + return a[0].toUpperCase().localeCompare(b[0].toUpperCase()) +} + // Common transpositions of license identifier acronyms var transpositions = [ ['APGL', 'AGPL'], @@ -41,8 +53,17 @@ var transpositions = [ ['GUN', 'GPL'], ['+', ''], ['GNU GPL', 'GPL'], + ['GNU LGPL', 'LGPL'], ['GNU/GPL', 'GPL'], ['GNU GLP', 'GPL'], + ['GNU LESSER GENERAL PUBLIC LICENSE', 'LGPL'], + ['GNU Lesser General Public License', 'LGPL'], + ['GNU LESSER GENERAL PUBLIC LICENSE', 'LGPL-2.1'], + ['GNU Lesser General Public License', 'LGPL-2.1'], + ['LESSER GENERAL PUBLIC LICENSE', 'LGPL'], + ['Lesser General Public License', 'LGPL'], + ['LESSER GENERAL PUBLIC LICENSE', 'LGPL-2.1'], + ['Lesser General Public License', 'LGPL-2.1'], ['GNU General Public License', 'GPL'], ['Gnu public license', 'GPL'], ['GNU Public License', 'GPL'], @@ -51,8 +72,9 @@ var transpositions = [ ['Mozilla Public License', 'MPL'], ['Universal Permissive License', 'UPL'], ['WTH', 'WTF'], + ['WTFGPL', 'WTFPL'], ['-License', ''] -] +].sort(sortTranspositions) var TRANSPOSED = 0 var CORRECT = 1 @@ -254,7 +276,7 @@ var lastResorts = [ ['MPL', 'MPL-2.0'], ['X11', 'X11'], ['ZLIB', 'Zlib'] -].concat(licensesWithOneVersion) +].concat(licensesWithOneVersion).sort(sortTranspositions) var SUBSTRING = 0 var IDENTIFIER = 1 diff --git a/deps/npm/node_modules/spdx-correct/package.json b/deps/npm/node_modules/spdx-correct/package.json index 35c68bdaa6c61a..d77615638be66d 100644 --- a/deps/npm/node_modules/spdx-correct/package.json +++ b/deps/npm/node_modules/spdx-correct/package.json @@ -1,24 +1,17 @@ { "name": "spdx-correct", "description": "correct invalid SPDX expressions", - "version": "3.1.1", - "author": "Kyle E. Mitchell (https://kemitchell.com)", - "contributors": [ - "Kyle E. Mitchell (https://kemitchell.com)", - "Christian Zommerfelds ", - "Tal Einat ", - "Dan Butvinik " - ], + "version": "3.2.0", "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" }, "devDependencies": { - "defence-cli": "^2.0.1", + "defence-cli": "^3.0.1", "replace-require-self": "^1.0.0", - "standard": "^11.0.0", - "standard-markdown": "^4.0.2", - "tape": "^4.9.0" + "standard": "^14.3.4", + "standard-markdown": "^6.0.0", + "tape": "^5.0.1" }, "files": [ "index.js" diff --git a/deps/npm/node_modules/tuf-js/LICENSE b/deps/npm/node_modules/tuf-js/LICENSE index f28ab0914a319d..420700f5d37659 100644 --- a/deps/npm/node_modules/tuf-js/LICENSE +++ b/deps/npm/node_modules/tuf-js/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright GitHub +Copyright (c) 2022 GitHub and the TUF Contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/deps/npm/node_modules/tuf-js/dist/utils/config.d.ts b/deps/npm/node_modules/tuf-js/dist/config.d.ts similarity index 100% rename from deps/npm/node_modules/tuf-js/dist/utils/config.d.ts rename to deps/npm/node_modules/tuf-js/dist/config.d.ts diff --git a/deps/npm/node_modules/tuf-js/dist/utils/config.js b/deps/npm/node_modules/tuf-js/dist/config.js similarity index 100% rename from deps/npm/node_modules/tuf-js/dist/utils/config.js rename to deps/npm/node_modules/tuf-js/dist/config.js diff --git a/deps/npm/node_modules/tuf-js/dist/error.d.ts b/deps/npm/node_modules/tuf-js/dist/error.d.ts index 130e49ab9dfd27..3a42f0441b68f9 100644 --- a/deps/npm/node_modules/tuf-js/dist/error.d.ts +++ b/deps/npm/node_modules/tuf-js/dist/error.d.ts @@ -6,20 +6,12 @@ export declare class PersistError extends Error { } export declare class RepositoryError extends Error { } -export declare class UnsignedMetadataError extends RepositoryError { -} export declare class BadVersionError extends RepositoryError { } export declare class EqualVersionError extends BadVersionError { } export declare class ExpiredMetadataError extends RepositoryError { } -export declare class LengthOrHashMismatchError extends RepositoryError { -} -export declare class CryptoError extends Error { -} -export declare class UnsupportedAlgorithmError extends CryptoError { -} export declare class DownloadError extends Error { } export declare class DownloadLengthMismatchError extends DownloadError { diff --git a/deps/npm/node_modules/tuf-js/dist/error.js b/deps/npm/node_modules/tuf-js/dist/error.js index ce7ca5ea06cebc..f4b10fa2028950 100644 --- a/deps/npm/node_modules/tuf-js/dist/error.js +++ b/deps/npm/node_modules/tuf-js/dist/error.js @@ -1,6 +1,6 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.DownloadHTTPError = exports.DownloadLengthMismatchError = exports.DownloadError = exports.UnsupportedAlgorithmError = exports.CryptoError = exports.LengthOrHashMismatchError = exports.ExpiredMetadataError = exports.EqualVersionError = exports.BadVersionError = exports.UnsignedMetadataError = exports.RepositoryError = exports.PersistError = exports.RuntimeError = exports.ValueError = void 0; +exports.DownloadHTTPError = exports.DownloadLengthMismatchError = exports.DownloadError = exports.ExpiredMetadataError = exports.EqualVersionError = exports.BadVersionError = exports.RepositoryError = exports.PersistError = exports.RuntimeError = exports.ValueError = void 0; // An error about insufficient values class ValueError extends Error { } @@ -17,10 +17,6 @@ exports.PersistError = PersistError; class RepositoryError extends Error { } exports.RepositoryError = RepositoryError; -// An error about metadata object with insufficient threshold of signatures. -class UnsignedMetadataError extends RepositoryError { -} -exports.UnsignedMetadataError = UnsignedMetadataError; // An error for metadata that contains an invalid version number. class BadVersionError extends RepositoryError { } @@ -33,16 +29,6 @@ exports.EqualVersionError = EqualVersionError; class ExpiredMetadataError extends RepositoryError { } exports.ExpiredMetadataError = ExpiredMetadataError; -// An error while checking the length and hash values of an object. -class LengthOrHashMismatchError extends RepositoryError { -} -exports.LengthOrHashMismatchError = LengthOrHashMismatchError; -class CryptoError extends Error { -} -exports.CryptoError = CryptoError; -class UnsupportedAlgorithmError extends CryptoError { -} -exports.UnsupportedAlgorithmError = UnsupportedAlgorithmError; //----- Download Errors ------------------------------------------------------- // An error occurred while attempting to download a file. class DownloadError extends Error { diff --git a/deps/npm/node_modules/tuf-js/dist/fetcher.d.ts b/deps/npm/node_modules/tuf-js/dist/fetcher.d.ts index 2b52cbef523267..126e9eb11afc0e 100644 --- a/deps/npm/node_modules/tuf-js/dist/fetcher.d.ts +++ b/deps/npm/node_modules/tuf-js/dist/fetcher.d.ts @@ -1,7 +1,11 @@ /// /// type DownloadFileHandler = (file: string) => Promise; -export declare abstract class BaseFetcher { +export interface Fetcher { + downloadFile(url: string, maxLength: number, handler: DownloadFileHandler): Promise; + downloadBytes(url: string, maxLength: number): Promise; +} +export declare abstract class BaseFetcher implements Fetcher { abstract fetch(url: string): Promise; downloadFile(url: string, maxLength: number, handler: DownloadFileHandler): Promise; downloadBytes(url: string, maxLength: number): Promise; @@ -10,7 +14,7 @@ interface FetcherOptions { timeout?: number; retries?: number; } -export declare class Fetcher extends BaseFetcher { +export declare class DefaultFetcher extends BaseFetcher { private timeout?; private retries?; constructor(options?: FetcherOptions); diff --git a/deps/npm/node_modules/tuf-js/dist/fetcher.js b/deps/npm/node_modules/tuf-js/dist/fetcher.js index cb42ab22a1d312..7a7405ac53e720 100644 --- a/deps/npm/node_modules/tuf-js/dist/fetcher.js +++ b/deps/npm/node_modules/tuf-js/dist/fetcher.js @@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); -exports.Fetcher = exports.BaseFetcher = void 0; +exports.DefaultFetcher = exports.BaseFetcher = void 0; const fs_1 = __importDefault(require("fs")); const make_fetch_happen_1 = __importDefault(require("make-fetch-happen")); const util_1 = __importDefault(require("util")); @@ -51,7 +51,7 @@ class BaseFetcher { } } exports.BaseFetcher = BaseFetcher; -class Fetcher extends BaseFetcher { +class DefaultFetcher extends BaseFetcher { constructor(options = {}) { super(); this.timeout = options.timeout; @@ -68,7 +68,7 @@ class Fetcher extends BaseFetcher { return response.body; } } -exports.Fetcher = Fetcher; +exports.DefaultFetcher = DefaultFetcher; const writeBufferToStream = async (stream, buffer) => { return new Promise((resolve, reject) => { stream.write(buffer, (err) => { diff --git a/deps/npm/node_modules/tuf-js/dist/index.d.ts b/deps/npm/node_modules/tuf-js/dist/index.d.ts index bfe3adcac2aef1..b4d1bc2b9c8737 100644 --- a/deps/npm/node_modules/tuf-js/dist/index.d.ts +++ b/deps/npm/node_modules/tuf-js/dist/index.d.ts @@ -1,3 +1,3 @@ -export { BaseFetcher } from './fetcher'; -export { TargetFile } from './models/file'; +export { TargetFile } from '@tufjs/models'; +export { BaseFetcher, Fetcher } from './fetcher'; export { Updater } from './updater'; diff --git a/deps/npm/node_modules/tuf-js/dist/index.js b/deps/npm/node_modules/tuf-js/dist/index.js index 6245d1724a2089..5a83b91f355d88 100644 --- a/deps/npm/node_modules/tuf-js/dist/index.js +++ b/deps/npm/node_modules/tuf-js/dist/index.js @@ -1,9 +1,9 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.Updater = exports.TargetFile = exports.BaseFetcher = void 0; +exports.Updater = exports.BaseFetcher = exports.TargetFile = void 0; +var models_1 = require("@tufjs/models"); +Object.defineProperty(exports, "TargetFile", { enumerable: true, get: function () { return models_1.TargetFile; } }); var fetcher_1 = require("./fetcher"); Object.defineProperty(exports, "BaseFetcher", { enumerable: true, get: function () { return fetcher_1.BaseFetcher; } }); -var file_1 = require("./models/file"); -Object.defineProperty(exports, "TargetFile", { enumerable: true, get: function () { return file_1.TargetFile; } }); var updater_1 = require("./updater"); Object.defineProperty(exports, "Updater", { enumerable: true, get: function () { return updater_1.Updater; } }); diff --git a/deps/npm/node_modules/tuf-js/dist/models/index.d.ts b/deps/npm/node_modules/tuf-js/dist/models/index.d.ts deleted file mode 100644 index 58d779159215b1..00000000000000 --- a/deps/npm/node_modules/tuf-js/dist/models/index.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export { Metadata } from './metadata'; -export { Root } from './root'; -export { Snapshot } from './snapshot'; -export { Targets } from './targets'; -export { Timestamp } from './timestamp'; diff --git a/deps/npm/node_modules/tuf-js/dist/models/index.js b/deps/npm/node_modules/tuf-js/dist/models/index.js deleted file mode 100644 index aa3d828cf9b43a..00000000000000 --- a/deps/npm/node_modules/tuf-js/dist/models/index.js +++ /dev/null @@ -1,13 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Timestamp = exports.Targets = exports.Snapshot = exports.Root = exports.Metadata = void 0; -var metadata_1 = require("./metadata"); -Object.defineProperty(exports, "Metadata", { enumerable: true, get: function () { return metadata_1.Metadata; } }); -var root_1 = require("./root"); -Object.defineProperty(exports, "Root", { enumerable: true, get: function () { return root_1.Root; } }); -var snapshot_1 = require("./snapshot"); -Object.defineProperty(exports, "Snapshot", { enumerable: true, get: function () { return snapshot_1.Snapshot; } }); -var targets_1 = require("./targets"); -Object.defineProperty(exports, "Targets", { enumerable: true, get: function () { return targets_1.Targets; } }); -var timestamp_1 = require("./timestamp"); -Object.defineProperty(exports, "Timestamp", { enumerable: true, get: function () { return timestamp_1.Timestamp; } }); diff --git a/deps/npm/node_modules/tuf-js/dist/store.d.ts b/deps/npm/node_modules/tuf-js/dist/store.d.ts index a6e20ae559c8b8..aed13b300d468d 100644 --- a/deps/npm/node_modules/tuf-js/dist/store.d.ts +++ b/deps/npm/node_modules/tuf-js/dist/store.d.ts @@ -1,5 +1,5 @@ /// -import { Metadata, Root, Snapshot, Targets, Timestamp } from './models'; +import { Metadata, Root, Snapshot, Targets, Timestamp } from '@tufjs/models'; export declare class TrustedMetadataStore { private trustedSet; private referenceTime; diff --git a/deps/npm/node_modules/tuf-js/dist/store.js b/deps/npm/node_modules/tuf-js/dist/store.js index 351a1961730bc9..85673361087095 100644 --- a/deps/npm/node_modules/tuf-js/dist/store.js +++ b/deps/npm/node_modules/tuf-js/dist/store.js @@ -1,9 +1,8 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.TrustedMetadataStore = void 0; +const models_1 = require("@tufjs/models"); const error_1 = require("./error"); -const models_1 = require("./models"); -const types_1 = require("./utils/types"); class TrustedMetadataStore { constructor(rootData) { this.trustedSet = {}; @@ -32,18 +31,18 @@ class TrustedMetadataStore { } updateRoot(bytesBuffer) { const data = JSON.parse(bytesBuffer.toString('utf8')); - const newRoot = models_1.Metadata.fromJSON(types_1.MetadataKind.Root, data); - if (newRoot.signed.type != types_1.MetadataKind.Root) { + const newRoot = models_1.Metadata.fromJSON(models_1.MetadataKind.Root, data); + if (newRoot.signed.type != models_1.MetadataKind.Root) { throw new error_1.RepositoryError(`Expected 'root', got ${newRoot.signed.type}`); } // Client workflow 5.4: check for arbitrary software attack - this.root.verifyDelegate(types_1.MetadataKind.Root, newRoot); + this.root.verifyDelegate(models_1.MetadataKind.Root, newRoot); // Client workflow 5.5: check for rollback attack if (newRoot.signed.version != this.root.signed.version + 1) { throw new error_1.BadVersionError(`Expected version ${this.root.signed.version + 1}, got ${newRoot.signed.version}`); } // Check that new root is signed by self - newRoot.verifyDelegate(types_1.MetadataKind.Root, newRoot); + newRoot.verifyDelegate(models_1.MetadataKind.Root, newRoot); // Client workflow 5.7: set new root as trusted root this.trustedSet.root = newRoot; return newRoot; @@ -56,12 +55,12 @@ class TrustedMetadataStore { throw new error_1.ExpiredMetadataError('Final root.json is expired'); } const data = JSON.parse(bytesBuffer.toString('utf8')); - const newTimestamp = models_1.Metadata.fromJSON(types_1.MetadataKind.Timestamp, data); - if (newTimestamp.signed.type != types_1.MetadataKind.Timestamp) { + const newTimestamp = models_1.Metadata.fromJSON(models_1.MetadataKind.Timestamp, data); + if (newTimestamp.signed.type != models_1.MetadataKind.Timestamp) { throw new error_1.RepositoryError(`Expected 'timestamp', got ${newTimestamp.signed.type}`); } // Client workflow 5.4.2: check for arbitrary software attack - this.root.verifyDelegate(types_1.MetadataKind.Timestamp, newTimestamp); + this.root.verifyDelegate(models_1.MetadataKind.Timestamp, newTimestamp); if (this.timestamp) { // Prevent rolling back timestamp version // Client workflow 5.4.3.1: check for rollback attack @@ -104,12 +103,12 @@ class TrustedMetadataStore { snapshotMeta.verify(bytesBuffer); } const data = JSON.parse(bytesBuffer.toString('utf8')); - const newSnapshot = models_1.Metadata.fromJSON(types_1.MetadataKind.Snapshot, data); - if (newSnapshot.signed.type != types_1.MetadataKind.Snapshot) { + const newSnapshot = models_1.Metadata.fromJSON(models_1.MetadataKind.Snapshot, data); + if (newSnapshot.signed.type != models_1.MetadataKind.Snapshot) { throw new error_1.RepositoryError(`Expected 'snapshot', got ${newSnapshot.signed.type}`); } // Client workflow 5.5.3: check for arbitrary software attack - this.root.verifyDelegate(types_1.MetadataKind.Snapshot, newSnapshot); + this.root.verifyDelegate(models_1.MetadataKind.Snapshot, newSnapshot); // version check against meta version (5.5.4) is deferred to allow old // snapshot to be used in rollback protection // Client workflow 5.5.5: check for rollback attack @@ -149,8 +148,8 @@ class TrustedMetadataStore { // Client workflow 5.6.2: check against snapshot role's targets hash meta.verify(bytesBuffer); const data = JSON.parse(bytesBuffer.toString('utf8')); - const newDelegate = models_1.Metadata.fromJSON(types_1.MetadataKind.Targets, data); - if (newDelegate.signed.type != types_1.MetadataKind.Targets) { + const newDelegate = models_1.Metadata.fromJSON(models_1.MetadataKind.Targets, data); + if (newDelegate.signed.type != models_1.MetadataKind.Targets) { throw new error_1.RepositoryError(`Expected 'targets', got ${newDelegate.signed.type}`); } // Client workflow 5.6.3: check for arbitrary software attack @@ -170,11 +169,11 @@ class TrustedMetadataStore { // Note that an expired initial root is still considered valid. loadTrustedRoot(bytesBuffer) { const data = JSON.parse(bytesBuffer.toString('utf8')); - const root = models_1.Metadata.fromJSON(types_1.MetadataKind.Root, data); - if (root.signed.type != types_1.MetadataKind.Root) { + const root = models_1.Metadata.fromJSON(models_1.MetadataKind.Root, data); + if (root.signed.type != models_1.MetadataKind.Root) { throw new error_1.RepositoryError(`Expected 'root', got ${root.signed.type}`); } - root.verifyDelegate(types_1.MetadataKind.Root, root); + root.verifyDelegate(models_1.MetadataKind.Root, root); this.trustedSet['root'] = root; } checkFinalTimestamp() { diff --git a/deps/npm/node_modules/tuf-js/dist/updater.d.ts b/deps/npm/node_modules/tuf-js/dist/updater.d.ts index e49dca22a43d35..9da17d74714cfa 100644 --- a/deps/npm/node_modules/tuf-js/dist/updater.d.ts +++ b/deps/npm/node_modules/tuf-js/dist/updater.d.ts @@ -1,12 +1,12 @@ -import { BaseFetcher } from './fetcher'; -import { TargetFile } from './models/file'; -import { Config } from './utils/config'; +import { TargetFile } from '@tufjs/models'; +import { Config } from './config'; +import { Fetcher } from './fetcher'; export interface UpdaterOptions { metadataDir: string; metadataBaseUrl: string; targetDir?: string; targetBaseUrl?: string; - fetcher?: BaseFetcher; + fetcher?: Fetcher; config?: Partial; } export declare class Updater { diff --git a/deps/npm/node_modules/tuf-js/dist/updater.js b/deps/npm/node_modules/tuf-js/dist/updater.js index 9f33c667ce9b2e..7f8b6bedeedd3e 100644 --- a/deps/npm/node_modules/tuf-js/dist/updater.js +++ b/deps/npm/node_modules/tuf-js/dist/updater.js @@ -24,13 +24,13 @@ var __importStar = (this && this.__importStar) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Updater = void 0; +const models_1 = require("@tufjs/models"); const fs = __importStar(require("fs")); const path = __importStar(require("path")); +const config_1 = require("./config"); const error_1 = require("./error"); const fetcher_1 = require("./fetcher"); const store_1 = require("./store"); -const config_1 = require("./utils/config"); -const types_1 = require("./utils/types"); class Updater { constructor(options) { const { metadataDir, metadataBaseUrl, targetDir, targetBaseUrl, fetcher, config, } = options; @@ -38,12 +38,12 @@ class Updater { this.metadataBaseUrl = metadataBaseUrl; this.targetDir = targetDir; this.targetBaseUrl = targetBaseUrl; - const data = this.loadLocalMetadata(types_1.MetadataKind.Root); + const data = this.loadLocalMetadata(models_1.MetadataKind.Root); this.trustedSet = new store_1.TrustedMetadataStore(data); this.config = { ...config_1.defaultConfig, ...config }; this.fetcher = fetcher || - new fetcher_1.Fetcher({ + new fetcher_1.DefaultFetcher({ timeout: this.config.fetchTimeout, retries: this.config.fetchRetries, }); @@ -52,7 +52,7 @@ class Updater { await this.loadRoot(); await this.loadTimestamp(); await this.loadSnapshot(); - await this.loadTargets(types_1.MetadataKind.Targets, types_1.MetadataKind.Root); + await this.loadTargets(models_1.MetadataKind.Targets, models_1.MetadataKind.Root); } // Returns the TargetFile instance with information for the given target path. // @@ -123,7 +123,7 @@ class Updater { // Client workflow 5.3.4 - 5.4.7 this.trustedSet.updateRoot(bytesData); // Client workflow 5.3.8: persist root metadata file - this.persistMetadata(types_1.MetadataKind.Root, bytesData); + this.persistMetadata(models_1.MetadataKind.Root, bytesData); } catch (error) { break; @@ -135,7 +135,7 @@ class Updater { async loadTimestamp() { // Load local and remote timestamp metadata try { - const data = this.loadLocalMetadata(types_1.MetadataKind.Timestamp); + const data = this.loadLocalMetadata(models_1.MetadataKind.Timestamp); this.trustedSet.updateTimestamp(data); } catch (error) { @@ -159,14 +159,14 @@ class Updater { throw error; } // Client workflow 5.4.5: persist timestamp metadata - this.persistMetadata(types_1.MetadataKind.Timestamp, bytesData); + this.persistMetadata(models_1.MetadataKind.Timestamp, bytesData); } // Load local and remote snapshot metadata. // Client workflow 5.5: update snapshot role async loadSnapshot() { //Load local (and if needed remote) snapshot metadata try { - const data = this.loadLocalMetadata(types_1.MetadataKind.Snapshot); + const data = this.loadLocalMetadata(models_1.MetadataKind.Snapshot); this.trustedSet.updateSnapshot(data, true); } catch (error) { @@ -185,7 +185,7 @@ class Updater { // Client workflow 5.5.2 - 5.5.6 this.trustedSet.updateSnapshot(bytesData); // Client workflow 5.5.7: persist snapshot metadata file - this.persistMetadata(types_1.MetadataKind.Snapshot, bytesData); + this.persistMetadata(models_1.MetadataKind.Snapshot, bytesData); } catch (error) { throw new error_1.RuntimeError(`Unable to load snapshot metadata error ${error}`); @@ -236,8 +236,8 @@ class Updater { // is needed to load and verify the delegated targets metadata. const delegationsToVisit = [ { - roleName: types_1.MetadataKind.Targets, - parentRoleName: types_1.MetadataKind.Root, + roleName: models_1.MetadataKind.Targets, + parentRoleName: models_1.MetadataKind.Root, }, ]; const visitedRoleNames = new Set(); diff --git a/deps/npm/node_modules/tuf-js/dist/utils/index.d.ts b/deps/npm/node_modules/tuf-js/dist/utils/index.d.ts deleted file mode 100644 index e2232bc5cceab8..00000000000000 --- a/deps/npm/node_modules/tuf-js/dist/utils/index.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export * as config from './config'; -export * as guard from './guard'; -export * as json from './json'; -export * as signer from './signer'; -export * as types from './types'; diff --git a/deps/npm/node_modules/tuf-js/dist/utils/types.js b/deps/npm/node_modules/tuf-js/dist/utils/types.js deleted file mode 100644 index 469f580743f652..00000000000000 --- a/deps/npm/node_modules/tuf-js/dist/utils/types.js +++ /dev/null @@ -1,10 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.MetadataKind = void 0; -var MetadataKind; -(function (MetadataKind) { - MetadataKind["Root"] = "root"; - MetadataKind["Timestamp"] = "timestamp"; - MetadataKind["Snapshot"] = "snapshot"; - MetadataKind["Targets"] = "targets"; -})(MetadataKind = exports.MetadataKind || (exports.MetadataKind = {})); diff --git a/deps/npm/node_modules/tuf-js/package.json b/deps/npm/node_modules/tuf-js/package.json index 758e71223e40f6..29436c760ff20f 100644 --- a/deps/npm/node_modules/tuf-js/package.json +++ b/deps/npm/node_modules/tuf-js/package.json @@ -1,56 +1,42 @@ { "name": "tuf-js", - "version": "1.0.0", + "version": "1.1.1", "description": "JavaScript implementation of The Update Framework (TUF)", "main": "dist/index.js", "types": "dist/index.d.ts", "scripts": { - "build": "tsc", - "test": "jest", - "test:watch": "jest --watch", - "test:ci": "jest --maxWorkers=2 --coverage", - "lint": "eslint --fix --ext .ts src/**", - "lint:check": "eslint --max-warnings 0 --ext .ts src/**", - "format": "prettier --write \"src/**/*\"" + "build": "tsc --build", + "clean": "rm -rf dist", + "test": "jest" }, "repository": { "type": "git", - "url": "git+https://github.com/github/tuf-js.git" + "url": "git+https://github.com/theupdateframework/tuf-js.git" }, "files": [ "dist" ], "keywords": [ - "tuf" + "tuf", + "security", + "update" ], "author": "bdehamer@github.com", "license": "MIT", "bugs": { - "url": "https://github.com/github/tuf-js/issues" + "url": "https://github.com/theupdateframework/tuf-js/issues" }, - "homepage": "https://github.com/github/tuf-js#readme", + "homepage": "https://github.com/theupdateframework/tuf-js/packages/client#readme", "devDependencies": { - "@tsconfig/node14": "^1.0.3", - "@types/jest": "^28.1.8", - "@types/lodash.isequal": "^4.5.6", + "@tufjs/repo-mock": "1.0.0", "@types/make-fetch-happen": "^10.0.1", - "@types/minimatch": "^5.1.2", - "@types/node": "^18.11.10", - "@typescript-eslint/eslint-plugin": "^5.45.0", - "@typescript-eslint/parser": "^5.45.0", - "eslint": "^8.28.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-prettier": "^4.2.1", - "http-server": "^14.1.1", - "jest": "^28.1.3", + "@types/node": "^18.14.5", "nock": "^13.2.9", - "prettier": "^2.8.0", - "ts-jest": "^28.0.8", - "typescript": "^4.9.3" + "typescript": "^4.9.5" }, "dependencies": { "make-fetch-happen": "^11.0.1", - "minimatch": "^6.1.0" + "@tufjs/models": "1.0.0" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" diff --git a/deps/npm/package.json b/deps/npm/package.json index 851d7de8b80134..bfd702e4e7afe8 100644 --- a/deps/npm/package.json +++ b/deps/npm/package.json @@ -1,5 +1,5 @@ { - "version": "9.5.1", + "version": "9.6.2", "name": "npm", "description": "a package manager for JavaScript", "workspaces": [ @@ -53,8 +53,8 @@ }, "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/arborist": "^6.2.3", - "@npmcli/config": "^6.1.3", + "@npmcli/arborist": "^6.2.5", + "@npmcli/config": "^6.1.4", "@npmcli/map-workspaces": "^3.0.2", "@npmcli/package-json": "^3.0.0", "@npmcli/run-script": "^6.0.0", @@ -76,19 +76,19 @@ "is-cidr": "^4.0.2", "json-parse-even-better-errors": "^3.0.0", "libnpmaccess": "^7.0.2", - "libnpmdiff": "^5.0.11", - "libnpmexec": "^5.0.11", - "libnpmfund": "^4.0.11", + "libnpmdiff": "^5.0.13", + "libnpmexec": "^5.0.13", + "libnpmfund": "^4.0.13", "libnpmhook": "^9.0.3", "libnpmorg": "^5.0.3", - "libnpmpack": "^5.0.11", - "libnpmpublish": "^7.1.0", + "libnpmpack": "^5.0.13", + "libnpmpublish": "^7.1.2", "libnpmsearch": "^6.0.2", "libnpmteam": "^5.0.3", "libnpmversion": "^4.0.2", "make-fetch-happen": "^11.0.3", "minimatch": "^6.2.0", - "minipass": "^4.0.3", + "minipass": "^4.2.4", "minipass-pipeline": "^1.2.4", "ms": "^2.1.2", "node-gyp": "^9.3.1", @@ -194,7 +194,7 @@ "@npmcli/git": "^4.0.1", "@npmcli/mock-registry": "^1.0.0", "@npmcli/promise-spawn": "^6.0.2", - "@npmcli/template-oss": "4.11.4", + "@npmcli/template-oss": "4.12.0", "licensee": "^10.0.0", "nock": "^13.3.0", "npm-packlist": "^7.0.4", @@ -248,7 +248,7 @@ }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.11.4", + "version": "4.12.0", "content": "./scripts/template-oss/root.js" }, "license": "Artistic-2.0", diff --git a/deps/npm/tap-snapshots/test/lib/docs.js.test.cjs b/deps/npm/tap-snapshots/test/lib/docs.js.test.cjs index dfd287eaa69648..270d9b631ee55e 100644 --- a/deps/npm/tap-snapshots/test/lib/docs.js.test.cjs +++ b/deps/npm/tap-snapshots/test/lib/docs.js.test.cjs @@ -384,7 +384,7 @@ Object { "c": "config", "cit": "install-ci-test", "clean-install": "ci", - "clean-install-test": "cit", + "clean-install-test": "install-ci-test", "create": "init", "ddp": "dedupe", "dist-tags": "dist-tag", @@ -421,7 +421,7 @@ Object { "s": "search", "se": "search", "show": "view", - "sit": "cit", + "sit": "install-ci-test", "t": "test", "tst": "test", "udpate": "update", @@ -3239,14 +3239,14 @@ Options: [-w|--workspace [-w|--workspace ...]] [-ws|--workspaces] [--include-workspace-root] [--install-links] -alias: cit +aliases: cit, clean-install-test, sit Run "npm help install-ci-test" for more info \`\`\`bash npm install-ci-test -alias: cit +aliases: cit, clean-install-test, sit \`\`\` #### \`save\` diff --git a/deps/npm/test/lib/commands/access.js b/deps/npm/test/lib/commands/access.js index b0057545ba0268..d1839aaaef2199 100644 --- a/deps/npm/test/lib/commands/access.js +++ b/deps/npm/test/lib/commands/access.js @@ -30,6 +30,7 @@ t.test('completion', async t => { ]) testComp(['npm', 'access', 'grant'], ['read-only', 'read-write']) testComp(['npm', 'access', 'revoke'], []) + testComp(['npm', 'access', 'grant', ''], []) await t.rejects( access.completion({ conf: { argv: { remain: ['npm', 'access', 'foobar'] } } }), @@ -70,10 +71,16 @@ t.test('grant', t => { }) t.test('read-only', async t => { - const { npm } = await loadMockNpm(t) + const authToken = 'abcd1234' + const { npm } = await loadMockNpm(t, { + config: { + '//registry.npmjs.org/:_authToken': authToken, + }, + }) const registry = new MockRegistry({ tap: t, registry: npm.config.get('registry'), + authorization: authToken, }) const permissions = 'read-only' registry.setPermissions({ spec: '@npmcli/test-package', team: '@npm:test-team', permissions }) @@ -84,10 +91,16 @@ t.test('grant', t => { t.test('revoke', t => { t.test('success', async t => { - const { npm } = await loadMockNpm(t) + const authToken = 'abcd1234' + const { npm } = await loadMockNpm(t, { + config: { + '//registry.npmjs.org/:_authToken': authToken, + }, + }) const registry = new MockRegistry({ tap: t, registry: npm.config.get('registry'), + authorization: authToken, }) registry.removePermissions({ spec: '@npmcli/test-package', team: '@npm:test-team' }) await npm.exec('access', ['revoke', '@npm:test-team', '@npmcli/test-package']) diff --git a/deps/npm/test/lib/commands/run-script.js b/deps/npm/test/lib/commands/run-script.js index a265db3cc040da..6e2bf22adddcf8 100644 --- a/deps/npm/test/lib/commands/run-script.js +++ b/deps/npm/test/lib/commands/run-script.js @@ -34,12 +34,12 @@ const mockRs = async (t, { windows = false, runScript, ...opts } = {}) => { } t.test('completion', async t => { - const completion = async (t, remain, pkg) => { + const completion = async (t, remain, pkg, isFish = false) => { const { npm } = await mockRs(t, pkg ? { prefixDir: { 'package.json': JSON.stringify(pkg) } } : {} ) const cmd = await npm.cmd('run-script') - return cmd.completion({ conf: { argv: { remain } } }) + return cmd.completion({ conf: { argv: { remain } }, isFish }) } t.test('already have a script name', async t => { @@ -60,6 +60,13 @@ t.test('completion', async t => { }) t.strictSame(res, ['hello', 'world']) }) + + t.test('fish shell', async t => { + const res = await completion(t, ['npm', 'run'], { + scripts: { hello: 'echo hello', world: 'echo world' }, + }, true) + t.strictSame(res, ['hello\techo hello', 'world\techo world']) + }) }) t.test('fail if no package.json', async t => { diff --git a/deps/npm/test/lib/utils/audit-error.js b/deps/npm/test/lib/utils/audit-error.js index 46a9dbc38cd7d3..1cb29a0857d752 100644 --- a/deps/npm/test/lib/utils/audit-error.js +++ b/deps/npm/test/lib/utils/audit-error.js @@ -87,7 +87,7 @@ t.test('error, audit command, json', async t => { message: 'message', body: { response: 'body' }, method: 'POST', - uri: 'https://example.com/not/a/registry', + uri: 'https://username:password@example.com/not/a/registry', headers: { head: ['ers'], }, @@ -101,7 +101,7 @@ t.test('error, audit command, json', async t => { '{\n' + ' "message": "message",\n' + ' "method": "POST",\n' + - ' "uri": "https://example.com/not/a/registry",\n' + + ' "uri": "https://username:***@example.com/not/a/registry",\n' + ' "headers": {\n' + ' "head": [\n' + ' "ers"\n' + From 67200dca0fd22da14ba6e48a404ae2241d6cef81 Mon Sep 17 00:00:00 2001 From: "Node.js GitHub Bot" Date: Tue, 28 Mar 2023 00:49:57 +0000 Subject: [PATCH 161/186] deps: update timezone to 2023b PR-URL: https://github.com/nodejs/node/pull/47256 Reviewed-By: Richard Lau Reviewed-By: Luigi Pinca Reviewed-By: Yagiz Nizipli --- .../icu-small/source/data/in/icudt72l.dat.bz2 | Bin 10957290 -> 10958695 bytes test/fixtures/tz-version.txt | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/deps/icu-small/source/data/in/icudt72l.dat.bz2 b/deps/icu-small/source/data/in/icudt72l.dat.bz2 index 1fc12b4e8cd27771c85a1c71f0bdcd609903a784..51d839d8cff83faba434e38d0741dfe482aec2d4 100644 GIT binary patch delta 1472743 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�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 D1cWAt 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 vstTR)#tu0&J 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

      42476?7K> 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

      8IR97EFA?GSu#`VNm4fpLM}WUxgV^%Nl3cDC50w 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� zjFnYg3ZW*7r0ti=BhQWS@-9W#kmW&gVGAiJtWoaC54x#sDlp({D$=+sUKlp&s;Vd6 z?)RB@tGv=aboK;g5V;CPQJcoD7Pi=n)10B6exGM!>zjJ?UfGz;mF-t<-BkuD9-1qH zD}h24WiGvBPOiV@S(D~qP8byE%zu9assZtU$a_eD48ns7r{xUJeoCa1fRNoDL0}b0 z^t z&Of2kud^r-LyP=-G9cs5PQ2cApB+`y5J(+D6eryg5Yia#N6sMR_Aox;6o1?mxke7{ zr-YBH&^Yu^KHPd~AvGF#iL1YQ`K&p&!_>GQkdT~5y1cK|pbFqy(>ugqTVXjq)AZ#* zC`tlY(_`Ao4@E$T8>)J@z|YN85kfq3m^aSkYyhfzvIPiHeEyn5c4k%pWsU;;C%2p8 zXi2xQ z>zdnRTQUg9@7m3t#(C3tGJ6sRoxJ6q?`Mx59Uy5jfiC(oNv?jN!+&I)(nub}2~dO# zMU?nfG{4ERlFdXgK0=CmeeEM}I=^J%IUR>#1WkUo*P?DeM%LorOTNvchrpOuRQu|R zL6A_Q01!|^`$Irq32FNmyp#k?YrorHZ#oJAWmC|LfPg4KdCGMUW?%&IpL^581K98< zx3hiE#g`YST&F^Ulz;N>ynTIkN9d5G^z^UBye*xmsBua z44f^IW1U`QbFGELBYkxc5~bBd{PhFpeC9Gk*b7@-dz5_ZY5`MwiN~V(QSj8VCS%j7 zq)ANQ-mZKbCLY@b@s#veAg9?(3Bh^o*CdoUN*?6m6b3=4wl-rocP9Hp&BB`9i918pA{ zu}!VAJk?(MtI;<~Nn(fVHhl44!)&!E^_8oKo>n z#jNZkY=9C4RYE6S>rLu4TMFKKQnEtwaFwKFfkprzwNwN^xzg8LsuINlrW6ITiopSF zhny%Z_59A79r%CScb>QvKn;*OB;+u_>r6?}kURd}p9fDpwa!f{nq@R75R`=zqzv0w zpc+#fI8F5;*LUk?K!`NYMh&S&gd8r1vBM0m^;%WCuWIZ#RICm<=mI26wq0XEh-&f| zno4R^bm->QWjbcWQZ)Q`K zEqIn)HD$Yp)oCd}MPoLAl7HwNQiYdLl__+Tdg)8ppxS}8w%7_MS2tO!u0osgx@mqh zZFB(bWv4r^O4AnBy3UnZ=ZLj5GDQTV@@ zq&u_>iK-Nur1kAb~Y7E zGh(I&F1=eL8;k7MM62Iw^rIsHiNaB{xVXZ;bQ<6J0Xiad_uvE@j-aLR7KlblbcN9F zV1a)#wNBrEQOeX3tyEzlMH@cX%6tG%I8<;QFaUV9a%cH)5kF=?^-VVV66Ju^0+D3{ zworW2?Qmgf^8&?3dMqEbug~w$2)}L)t>JEcq*;B=jkeK_lza$&22d zVfHFdqNwdFuXYjN&k?c;p(um_Oh-Q%WV(qcNT}5gSe%$0nV1qgX7`^ecn^HsBqe5k zmk>d^9jcQFvAG8#?P~?gFye0Ac2tzvUhhV~31*{eEW^tEt3<{8`O$-!@Vq{sW{-dE z#SJ$bzC2&*6G9I}qY35*oZi0`8ML+af8M>cEmaE_M=zf}S~6Y|n(|$4RHvB&UrKuR z`7ej{!`w4OGy~qAjsS9&3LT(S6i>B7?6dpzdWE`s*bIDrI#08x2Ze_T-{a_QPAOK%LWBd>RcqfPe8A{kP_yUPd zBztI60A4^G4*F_Papm6l)w@6MjmzWpT=`UcdZpaDWS4B#eXWb#AR0lTL%0AV_t+sA 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

      2(^)KDjkRaLU$)fwA^A=qGkPl$eU_hOJ}rwG zuKiBHZFn7RO+CA0?J~Nz^xFD9+nCD$8c?5S7fIs4wgF6W1DFs#x+8~u&=@;J6`_9^ zLHr&q1T@%|_I)Q^^b1a^1F9Jm$&r}67)BxaAd%n?V$7Z3#^U@Bf9F~Sg0^&b{}eg05&RH%z8l%I~s; z^ELN&H{YGUOCRv_eX$TURwC=LSChj2*Lmyv397sFynNh_(V^=yFwwvRX;R4vBp|10 zC_pFo`(FUDf6@VjZ$AJ)qqOZBb%zzXfE2??gaAX<6TXpHXB2iC2|q*s4ETTl{IPnW zI0+BhL4>9QHWeN7`rvulbjX0o>(IP+Ga+fOSTkjDQZZw4O96t%tOP#Es(-am=3}3z zMc*wcsK4R0bd~lIdNF%GQwlEDBpDtw#vsIHi2?)1onEKA<(6@==*TQZgCLM^&Y~-( zi-p;B-9DyG0{mjlPZwWYL|T7?AZ7ppkpQI-3KU{c3PmXuC_dUd(WrGfE0DRY)HI#}+G$+105lRf!do9n|$S|5I1^Ju+Obh-V+@4YXn)9+ef2xa%>4KLk? zx}qNL76Z)62Bi{&AOnBBy#QED0vVi&2#c@5)Z|gPUo5%AG@x)yuoY3&#KftjEpW&g z8p;FVod+60F-MWg+G*x|yse_Pyv1YDoZB{TSxM&2P^XCV@OFj0-jXiH9hUSG;v||^ zdSqDCN8Zea+Q)xUt%X!*eD!*H^&ge5vJnvx3PU0y2PFgWP-K4~lqjJ}ic$blh?Iw- zg;mr*!!m@x>H@Msq+geS)HH^f1*D>i5CW9|W&sF@lqo?fDpkorB3B6oLsB#&sSQf% z5LLo8D!D0;3lU11WJ*L6Ql_N{VMNr6sRcf26*UTi>H$hYN)a$6Kq(a3nSzFtq=ge; zff5J=4G<^yAQ6Asp&d~a%##WVZ4@FDs*dCcuE4@3*v3f{RaGRXE)G%)}HHq$X^+O5fHCtI;>l}1#6x9f!5*K;H>h_9qk@hvzFZZ+H@Q? z=HmeMp28p$;$^IaT_;o!D0|3rklmnP0Mw!zh=CgewxECfSoDz%-X@n5tcT9Rq26R{ zSiRUN?z!A2l8Q0DKIlE_4N0U6dzDBF`~#2cXp4j5JPKIke-1q7?=4%F05b*?0{9%V zN%mk>?eh?&@dz31-oZcZ$p9(|iR+$~&4Ct0$bVZETTOfdA|Xf&D@XxKtMWj@Fo}^u zV&te`09Jnts5GJa!YNXLH5mZX>KYb+LnTnj6a=6eRH|^5N>xy#RLDw1pvVk>5P8N# zOqu{hr5S*1fQ=vk9ppu@fEGjmpaMh_Af*8^5m0gjLC64iWk3NWV1Oiyfe-+YWI%;t zCvj(k=3;fDtsr32fu6BQT3|!>{A9<>smqTc@w&+NK5fL1D zljUsyTC0czIi^Lez@QMr85i!#fb?Jwfsq1W20%4&^-q3&JJQmrGARy116F|nFk$`G z1eO@d_sWaesi@COCtbJbQsCR{jV~6SZjztp_-3YKLPi*m4P!wNGZlhr{%r;W68MyOL zTmHlQU;44_^>4#H?6d_53GmT)e(Y`xOW_t?DmU_EfcY z-(}vj7O!yc*%mS)7kHv^F+dQIMM6OYAproAL{J(PC<2rU5Nc%xl@Nc|9_OukYS z5Y(ao1dPlO0Eq@fL`7E4aX!p19>vk0Phah4zhx7%L%jbV?)tAgs|Mp0X1ZT3xXgcK z9?z9;Wr)A$8=i{t03bv;#y|jG(36Rg@W_A^h&Yu3aj`r|8)pebG^GL}>UfJo3ot7I2^v|`!;{7XY>6}6PG~^#1bG2xeOFWgg_Vtt#Pz)ta^SAafNLE zIve_St#0Cf=^J#uF23I#YVf<9zFB*S(OXK$(&#Iy6z4<>D153NAOU3pMnHt%#0nG= zY9ItckOMNHayj24XW+Jvhp#wch$I+Ab=VOW9!WALou>65Ss!u;uK<6*qS3=-lhU1K z)fbSG4q*rwHjIs1p2=TEhuW2x#BNG6OChJZH?x)S!>?5Xgl|UOu0>;oFp&7P1P@`L z%I%jzQ`iJ}O+7L2E}4}gRY9^=pS>YP^KoDV0S0e1ds*I9zxDUi%XmNRcBd8B=J#>* zY(rCY*MGgc9@^jDPXB*s47#32;fpPvpM2$82#5k88lOlN6M6t7fasv_uzMI5kq$hA zu7VI3%_95ri@n|=2_SA}iU4*qDf)fIi#(>or>f*uVv!cc*{;yh>#R2wfLA~;5M=6P zI$RWKb=WLZSWx3ps5Ugkpn7P&B0jN-04BqEd2H{$Qa2EGMTF{`M^r9HbYjfPcPb%QTKxWUx)U zbh~5IzbR;ryQhC#2djIaR3>H*2J4?pa1Af=0EY&!Mn`UwPXd9(G_}Zpv-b2I?bfjJ zFSEdhLm$-*c5Ikmrbsb>ZgDlz2rU4a2#J+Z5~Dz(nt>HbA|gQ$Efxzhj6yrGije?# zZWRVY2mf!mU#o*U{Fnp?`sOy^fKF3S7Lfx&+*6mBua%PY+2il!UAY)dKk^S5taHU$sXtGWN&w;C|ac z^7*l)@D?I`PiJ}se4{<4iAH%(g9wZOf=2ZLt!`hlqqyd1TmFU(gfP)7_ zt7EzeLUN))&gqqa{s*Hx3B8;QaUYK7;y-_L`5jCAXb}%1_k5H`?krZZ@hi^$g;90Ew@3EBlTBO!Qq!51; zu%QA#gl0IR5rRMZf)M(ULS0Ho$tDMZ0Dz8306!R6AcH&Izs-PFE3}1)zl6B{d@xjs zW0pB)gF&Fe5-*L8wPu;Lt4wTG(?$TuMKhy6bw>eY<;^gW8QGC%flVjWpOc6&nL9y& zNX(Dtr&QbTfuSG(>5?}D02$xPQAB@0h=`0!5dpazsv%*c2h@U4JQY$gN1+l(sF;jm zSkV^QV`3K2iwenUV=SdbWkykep=gY%vMd->0~AO?aIwfDv`SC?U>nm&NFTbnj!FJz(1(b|7C^ zDxR)YVUm)AXjcTLW)~r*YCtj!iVDgsiZaQY8G|yak$N`Lm*1cee_}mv6lhXt3U`{M z$eeM}_JRaDU_Q`LhX`0mb?bi*;-Gz0B@Mf%(jWzdL`DrSv?^loWGM`Qv7UhankJH3 znk{F6Jc0W|DybY1qWXjbEb)O$pSom|R*=vHA+{@Qz^qxCm7-mdvZ0l~U$AAlitT~q z>4(>#9|b_x#4n19`Ly!{MEC$0EPmR7FRu4HU@1URNJOW-uw(&Bl!1R~(?AoEfR`^F z9U?kOAtBAf?~(gHHz6!9(jf(=KtKTCCZJNrD2(lO4>}ZNOeF!3NMOu+HcRB|gJ(g+ zwub@a++RO3)MI?-_;EbnH+r-nVFB_|r)NO^WGiF#e>5Frxx649tN& zn4>(&>D*9!1Jh}fp@+%~+(uITvW+X|vn-?)5;#~Vv2jX2lNC9+wTzxeFY88v2n;St3jbYfB?nG3qXb;h)Pl5+Gx6ga>pWJ|1-^_v9y}msK%{H3O)MBp%kr zy&_XCwIzlDg9Zc}ma*Q{rToRlkpM0)7VWyg(+H46rk0>sCC~$bi0y)@;2;;83Sfwj zFVRrt63!+}8K4*#3PF&Ti9@0f)<$^veOHr*vE1`NQ@?-gJH8GCOF@X^jy1{P4a~|Y z%YiXAm9WQr*NSYyBkt%**lflp4dnI5`!DtT*Oz8{7oq@SRVavvXh5p;xEQrW(z=g9 zK!ZI2aH%~W7*IJDVHGW?NnnqtKt8V&PvZ~{$YC%6ZB6OWCXmt2zhsR-_IvfnAdLl` zCF6NPx}<-Ei2}{9owMU`YX|DGypofW*rcG)vRZ(cmlGv1!kAk`u~qP76b5<|It-FS zrg$TI_#59V@Oce<-huLau;HQav@n|#p&<>ek7`(=Q8u834~SR=mI)Aqek=#BP#~5O z9b-_SrjhVUAGnODPlx_4yL&xMQ>L%{{(~PkY@>fj-?{rO%1+B?`PON1$|y}XU_4O+ z45rEMhyoT$5;KIjlaNgmOw~l#)evGpQkc$EQsmi!QIhHYLIDT45Ik`(kT@ijNU1z5 zae>JNstQ19(0MuxepWznNoFp11!V$))QZv3JzDswmwYb=o~kfDby73Sm^kEvI;gT6 z)&+kS=+r&0FWBvPp5;Q<_USxHEMecE5mJO!2?MoIB4Y^1o;NlXeNF##e!J~5+)RV! zzAq1o@Nb}}F*U6w-geqZa=i61>A9JNJ=9HP6A1UT8bU(AP$1JlB58d=0go`$bnGYw zo%@SeQAg7frZ~o!f;r<$*JVp_x`jxU5NLluI72|dI-w-ed`vsSUOde%QNHX#7(pfs zN{}J};El0M6pK61LW&*Ift!T{wC(7-WDv1^h4q%kp#o`=Je6T0 zLG2708{rUBj?}&!Uk^)q3LO_izy>Hi+5wk8r0Bp6HknsaLWomMMD$Ba!KY*-O$ZP_ z$NYEPNGBbX5}*`lNCNj5W^_R~yC5cDJ0PE}JZ17!R^t(^V_mII>8L({!Zitcg37rZS@WE;Mg2PKWu|>^6kr@IB zNF^*iXVkKRhpkmMU_EXa1(-FEG?>Ph)*dQ>f%MIhtBVth4%GzCwS7FL;w2;9y`-m{UtN2#~QI#qk32@XbB|`uV5C%j`#jZu!Ax57f5j;Yu;TbAt*j-sP!JB!b zM0Lwb6KzK&u{4bSXC|6?(}96NWH1#l>n6B}0rC*7^#hU!fB_bR;Cp{z0|(AfNR(6B z$ix&5$pJ+aAR2$sI;*vJ$SvZ zv#=`pDfDsn5PE;r_r$boWiZGShM}E(8lx8%Vn7_@cUgs$K${>mjgMvs5F%_HQ(PzC zlrtc|u%LbLX(p5*l9VKdiUY}))D5B`e?)?6HUfyjA_#pAm|Gl6KuADDszm1C zn2_Qj{OqA5(0;Giv|4SuH^{;*nw+PpN<(6WIl53foe`u$`t0bEW^x! z9^@;KxNK?C6y_xX01Pshpx}ApOoyX_2-u9wag3Fqvc(asD2R&^+ign{f2>x~A{Z27 zfs;%`0o#J8R0?UON>!l{sĬLcM?J|Fuz-2LVt!Gn~|C6cV8j{$*5&cBXc)Thg1 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

      Vr* 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 delta 1471629 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≫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

      KgH30VET;P4>HS;)hu8i}ETN7LR1)LU@@zJVIx0 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𝔮KgX{ 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

      c7p{we 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�LVkWzQR1Xojd=OocA-vyIWp+V+sKXAoMV% z0*H}}Q59kEQ}}zUltfieDA=%5*4tAp-VP6cxRElk#2xdr4&f{45&AAqi1>xa&fVz0 zadH>zN|bvWTm$_C%j2oTeA5X2*tLQqvjTptUK|Fs6ew@XLFKLYwx!qmi zPJhM-KU=zFnf8!>Cx<+WH_1aY@dv$$+t=(B%KG+s?DgPO-HHN7q2eDX-ZHgZN>=uN zN4L@VE@fJ;O~bb5+A-vj-+*Ad+zJVHCDb1e1qZ~_^77uF-KIy&6$-cK=Z?54x83hu zYD)&Gzz_J4C zg*hurfLn_7;fP?7f?Q7nP8XUX5J`)qHUevC%h;=hCy+bkN;7b$PoNUd^@jSt_{y zd^5Hj9qbakHG<$8~=l$#D6i5rlfptYrd z@*pR-Tf4l~CWCs2b&zM=U?GeNio*5o*2Ll2u};w;ajJ)*Ii{5J8%mOYCMH1a`N`Yx z@QE;ZK^}?-T#hc40%{OmnxiGEbrmuApOLn=@5B8I=RLGuqkBb-z`OWgah>5OiQm8D zT}XB87&H#4=$lP>rXfA&N-+EtOt}gZx|rjO+HtD#mZq^XUl=aAX%4z8;8k-$ScH;6 zW$G?bWfm)X_elIpzjot)r!=M!l0`@CUYaylaPg=0T4Ne3#H|Vc4;U-n}Jta@Hx4TCKH=WYx+h zT;{hjE_)6)TW^BbsaC~s!z@~tt#`EBNn(D?4(snt(K^X0Iq$lEFu7GY_KGd8r;-@Pd&X>O9~@){OXlI4zF`>fTS zLQ0((nL||zBO}z%*xi$KPfq4mRSD49W?l=oBX%^+Y@t`Jb~R02Sk#1u= zVm1tP%Yfy7eNMq2*-u^Uwuxvs zl$*Kfv?^>BsqT`wiA5&9N9@9wOKFmiHtJWdwojgC7}2LGl;p-!iR)#uv15h|*~XKp zyD8*e8rMa2QXY$t;%AnkWmZ?_E;os?xn8@T(Imi&nYrtLC=2o7+Ut(yo~pPZzYQh9+f7 zv&ss8pLsnVA0^zVUx%l;BkR%>;KC@$BND|!K}T(j&d{BU!z~h33U8;RRCFU+j+i?f zty6PlrPof!rK@9^cTr4p#EF(O$imITP1avdEdw>*leB#x@l#~38GPQZ53mGhH5WL3j*gX*dvE|HMHHt>oBIq(=_c{ z8+6-tTq)k%vP=@XrG8nan$}L#s%mCR(oQm%>d?0R{Rpr~_QE$Z?O0*ca2nJzp(qdRM#Tb*)y!ZxLuZfk{*PVvX51xvB2VW}d3P?8yl9&tn*yn^$8%0A1~*KL5Vs{p*}3m}BU*u=pmvdTrxtHhyL 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%0A7sA6Ng{ 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 z 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Ç-jBWBkk_KDz8Vp%a8j6cOO~O@b!Rg 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⋛Frjr3J@)f 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 z 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

      !kOusj+yOm?H+lo)XQAV z&lA%#7wM_`W@eoGziywO&&%HL-Jh&le>a-J$F=ZdfBfEVUbD^2^K*R3SRjOJXlR6M2gB(AZB!Y*x+aGdy3Sy>C?>SeU3K zBR~`-1d>DoMHLB3G=&7Ll}i%DF)I;DOjJ~mQxuXw0Sr)U)7qZJTy<`jQ!}x=?1V50 zcBQVze>&hMJDM2Iu#UtDC>U1iY2!wuu<0BUWp_inZ7df3rsB8##)j}V&5nq2Qf zcWT36+WCJ%xdHP|Y6M7O$(}lqH{NoCZbNxek zqcpR ze;_@&-J9OwDEAu5sRzg4L5W8hOz1m_NlHL*w%nU&O@mFB*69tuVAgJ0$L<{day&r% z(-ooRwGBI1E?0-{DV&tp+dlo7dd*0-I2y^ZTh_0y4(hK9fU{bS9b+D^SEJO~fAAY4 z3{XJK8{5PYC{Ag8d%~(hSRWu+F#jr4f6*h!q>f*kUTEa=n_(`VYxMt_OQWTBPVuC$ zcO182w1??~P_`U_$CaPO<6PP)ahKe5ahZ3vr^(%@zmT--G-eG%f7B@; zkueG<-h_echKfrWbND(mj3l%W6B83P5Kx3k48S!I62j9n1q}p|K|+v|r;5V?J1@I{ zI&k2*9CrFOyK8TZPrJhaw}AcA#?3p}VVQrgjYX|w+0TsJxgv6qGCS)ohltx61Q?@9ipJEyoQi`By<62Wt5dlE= zq=pjY2gs2)(Z-i50X`XW3I&LNy^!Y#?ZNV-|8f)E|HlO46Q^N_eY}UVNF(dWa6(e7 z5|Ic}9grVe2Z{q^hm3^O0jW~(c47k;)V_St)@H1^#v^V)dsSq@V`imvQ?{w zc5mik7#QItg`@{#g3l=p^VG2bkwT{e0|TKHWrHiSGC;C{5(@;*8H>44@@8VDL@bn% zXi&hSlP7ArnJ8WBFlKC0%ocT%H7u^{BH)HFWepL$q?{?Dq==EWEos_F)pu~@F?D~4 zcdD$Yz&onC&BHZWOc{{$cqPQ9?xl!x!IVLBCz8$O4A5YrhsqqyVk?cz=Q|ahr0fVn zL%@uk0=bI35Y`JU*geRkq`hRCz{Xd1tD&PalnjAp!bVIhkSR6Ag$bI$ia=?zKxJ}ZX0m^2M4&s)DF9MWAvh#ZhlDnxPOB)DC3S!#@K_aM zz$&O^P^_rV>qn&m!AV(7>MG`IHY6xgrjZRMczP?as?e}16jX?uU7dlHJ)D$)d*NaCsR1_%WNau@5%F7a47!Ioe-Ae*gw3h)@xtNsO6N@Ol*_nUZV#X+3 zD$I*Iq#leF$ec;6Kwv_aA}*p%@1xdIlDQNF1#6?t%;zAyya=P}D;~1>8h5x6K|Qqz^&nB$Q!M zdNMMVQwv7G#4U`LF6h-*B!E_}Rf@BQBuQ%1g^__)hCuKuGboXBL?UR&VQOa+5~BuH z0)f;>qLr%#98^jz6Acog+Cgb$prVYVsBIl(iYSGfRqDZ7 zBMZn#5hH_IWkZSuOPHPKG@aCQmrqZeaep&O85X&zK`=x)P^_htDP=_z1xlK)qN zpE9db?gW`drhp1h<3r>Aj?F3RKCUb1il9eiz#rX+8e|anP#;wk$?B`tKunND?0@1U zVD@3LuNMG)PpG6jHXb$?^wf`27$YFQ+<-#PWGSWyCA5=<-tBRAOq{HX4w09Kx#~zm zXaEY8gLKr2Gu#f3k(>Yq#umhE`Z*h^vq2F!qjj6yc2Oy@oV}-x4jl&&Ocg&W2M8dU zW~d>x(!~fq(>gOCApsz<1|6EvB!6r^+q~3-N@y^z!?U(}{m1S;@lHWQBN2Vh86_1& z#y}X9bM4O;+;xELhJDsh`N`XmM9~MQvlIGpm1~@lztaa&=wo2m@}kg4h>ioVQbTh- zcVFp)gxsC|H9z@8bQaI0q+n?5PXh1dwwFkEeromW)}NJMR8d7VOaqr-6o2nfT>8IL z?Y}3O+$uU@h_b-Qf9Z$n{}3*Pw%P)XnucFKUSFBVa_}X|uCg!p!cOC^!>pzci^!_r z@PPrth&~nA{ed9MVO9`eC`MLxz+m2P1%uY$m!Rcm%9s`c&c{h9yB)Wi@AE(3xc1sx z97vdk#?aalU6M7vI?p^p5Pw905mp2Z78(GCk=9)A@2ihLD%iC}D(kZiXT!pQTrc?! zf(?L@1PeD$%>H=*?EC=)J;#r+dTD4%Xox~dB(5>la53Ptpn4} zDv*JKN&UnZrqY{SdXRakg z!`tX5OLIDg8t{L8=^7Wr++ei%9^Bsz+P%7~mGA6_vS6ra_$=x{i*NDp3z9Vrs`y5j$IN_9m zBaTY6tCfH|N9{F_LZ%5In3!dVAc%mXYLW&@l!uSaN8#Kb2Y(sQ>AxJJ-{bS-cK`HU zarvblBoEC+EK3l&Ria6th6FhgeR~e=bl|}X^Q^;;wq6dT{L(#|q=b_8g_#YefrxEu zd`LTA!v&rb!{6s?AZHZQWS^1R`i@ho)>Buj3rk_-9yf){?Y<3@0h}1@jL6&IS6*oG zpetu({;At6P=A*uh(u;saVH$_5d;lH5DbDsKWjy^QDh|R{tJ2(@v7jPmkcJj6z319 zbx2+>MvK_y8w{d@Qm}4Fbi-<|Axu?&!kzJpopV&l=juJ9RAD?e7&Q<{7$P>1ISDKY zJR1NoI4xkoGAu8~$lQ5z-u4#jG+qCjz51xis6wfp^M7zOT$@4)GG}f?hf;G=ONfW3 zJz+#~i=(s&O}8qKBhWTwF0zCQf}*Ji10tj-Do_EMAchJUXe6MLVyJ>Z8W^UDVhD(t zs3Ia72q2&YTl|fjk%U%2 zff1poB7X~!AnjzSrycE|3oQ~@%VCGh%hCa6n@sc!yfc>pi-%1ax?x%?fqjX5v$Q8> zY|*JM#5)=c=7TfN$lK`fvxT&+fA##2_rv*aBqM43APmd)&2kL*?6%19PLbW^CeHNzZApC4WK`#3v?rE5huizvzL%2idwh>+{b%oZ?hm=ZUV0*l z`jhge3NZiy5TPPUE*44)`k)OEL_$R$e~PRnZG^Xct61Yn;cZj1`@A$`5Tr!VK{Sj5 zdw;lM1WQO-_k`ct=T;mUTJP&M)Jq+EXu z0~-d(K;MPNawx$L;Gv_y^)V)D+7Lk6Gkf(?V@_bP<J}Pv4Wn2!@fe6}s-G~c4`=1B8-JP1 zNXpf5h=Gto96|=i1J?5a9CrI{JKEaK#P#d)biQY;)7mWzKX7-X0e;1Nh8M#~2E}=T z%tZM9Qi9Es3=23$;tPC)BvWYPS7ilGY~i2Gb2t#=pCe1-knbb>2oD^fY6eQGl&S%W zfQec}IP!Yt9_JYRxb4{qSevBi=n~?OR%NzP<@Of z9y4s9;0(LzD^O~-C0_Uz=pzcK73`RpJHwhk%UjlNw8C#!s4Is0UM|H41b@R$&uhJ? zU4HbrIM}U(`{;Y-`{p}V{ ziEH9mpX5u9j4mLFd|N*k;@4qi!{+_}{g@Uaxbw7ghJtY8PziKk~!+#r4G}*I}|8*4E zB3$@(XiZKZ1%h%Vt?3LYby60!-|;5|whH76D1xsUX+`8PdS!ta2BvEiY5+k3Gb02K zs)DX|b@SA}?$SmCcZ3JWX8+b59;?N`0}x^A8yMJg8}{p=bId5{<*$8FI0Ilr8IhK; zgYBkorLSM&(7?twA%B^jb9E|Zv1>6>+%07{XC}pe-rt~`Lj)qYR@^Oi#0vW=PH!qEXE|F{g5n%b4x$l71CIU zhONI028q1BAwWrqjU}A@sf%v zM1ChbNIB!B${$$Zh4LBfeusJ&{sMu#!&PMPC$AQUcu3XcG}s^@76aOqL?BhT7e514 zTaplq>0|M}iGPLA<9D7nHxkL)=(KLB3bEu4Va5?06{fKW5VHhTYM$TDrkU#Y0eHNH}m1dZvz#cAP59V(TJi?)G=Y6 z>VI~5-WnB-(kWS6s1h{bGi@y~I2K!N6)<6o!$wOX#D7HX@O&s%ai$-&3+?>)H?Dl( z<1Zu~Y+g%BjM#KAf5OzCJ}`k|oURCz#85TX#fwZTYhGP8)# z@7xx}Qo=+ev*e=*5o{?P2>7Dgv%|2riye?9-rm+#OdeJj#|7HCwC7lXs?4@%sdZlHj-+odhmcp1eIeM4cDSalFg~L>`F*xZ zwwO9=f^(Ju9D^r6*Cl}ZX1);Bk8($BKZvi^@qZ@m`1=VK8a)&=Cr#};ro-C2eLRZ@ z{@I=O%YzZFCD>>5&I@Vs>qlIt_L+hIJs&7%H|laYDBzv{2%stQI5)tAFGD%65}FqT zTV3l=*N_}12T<~$G5-fM>@D*DAFkf|Fcpx|vfszKeh4-2wKV7S9^}B=8%!=bFI7XM zk$-d|g(yTAixx6u&E?R17=$1&Gv;9Qsxn|?zYt-8SHbgq?>2O0#UZt%<@SzfYT{pL z&Gv`@dNON*lH@w6{Yd>%1`Es+I9qGVGjAG|-M%^l4?+O)7#A7K<83H%!rbLK$wl1k zMzQllSa)ls-rZMd$^S2X8-UitFGl6_27k0-<+u(xOD}9Tb72VpmzgSL5aNjIR?6yr z9cLCx`tz9K;mlwd5N%YaaRa_bnxA$Qkjpaekeztjq3rLfhNK`K(H7Py9%i%|-+4C8 zCG8_j2jc#`4oJWQ?(Q=W<$){TMhgflc8m#;-_S;rYA52Zbvu*&4-P(~JE?ZybbmMg zcyQPP!ob%{vJewBTDo)(O;$v#4f8LLYENcZGy5t#Iaxw!j1wDZNT}?2PFLC?O?w-b zT&zjOPRH97QnotXPH&dL3qHW5oC5;2U(f6;mIih}_=6GpIW8cvcbb@F$_{=Yz~)Qo z7*E%t&65r2s4X(8F0Jcl7I=nr6Eok`FFDUi(Me<$Z zu2z{8(nO(W=NyYUmK=Z#rGE&bE0@ER+2OhRrSRo}%E41VTl?&xmuzC$2Irb7iaXuR zCCbeE^sGubLpjIVbb7n~M`3L*NHH&D#3R8z`O~MzF4=b9sAH$h<-a<9P{6@Io<67PG_PhXM`t@a_;uBIG~=B7zEC%r3Zf)Nn3zQ;O(M zowf1^COCwWBr{3#7=L6ho1M>kA&2n0kPcA1U zcx9GkH}+rQ&P9;h`9m0y%GHg<}hYx8K030fi$je}G?HZ}{=6 zBPvL#r*d(uOn;Lt#zU=USq|odl%vFhNk-u-i47xi@U{DH_3pNrjA!R!+5?JaNYR3C z{+d(OnGwRSc&l_X^^-V0+(LC4iX>ntLx(}t0Er)~^>*8-@VwpHHAGHOGwf~8I2ofs zB3wq2Fpz~fn6W7lCJ~SkKtvnE|H?jtqJND3-p>6DoZZ1p_cI7(ZQpMU zN__A1z3M+u{|m7X=)n?RyNp0^T4D(ym86lh5RpqHGSVMLsK?*R_YpFf`46FXJg0~@ zW(f`hkhfQ%p<0#g!4o~03FQY2GW0ix1c5Crz^7-`D=VEX#X>U!!`)UygVnI%n4h7L z<@h~V+J9{ja^2J-Zg4S;vT9l)Du{`qYKe+ck|L?1k|3o0|J7`H(IEUEzA*lAf9`{K z_3&PLrfv-Jc*s%*v5$=-=JPZB519Ux>*#v8i7ZF-tJBMrOJ;avx7_f$ck+hJE*zW4 z*lZL+0K*bVc|nr^5KzjEb=<0CEm(X-W*@yB3V&E`XVs(eTcWX)idnXg)<$%G8a@BM z>V(ol07u0C^eF-n(KF31BfrqwO~1mc((Y!e$%&E>M1l7Fc$(S;G+fG^VY^>i>Ftn0 z&Q<{YPv9xE&hndK>SBO*1VLAtJ~R@-5ri-=rr0;E={V&Rp5WFNeZl+OFJ&JU^tAXClav(_Ee^{Y zUr8TLLNI=mCG?qK(Q!s-_?vZ)5^Aj0^PATf^q)_}UNL~wCnc$g9j7T0dZ7^GZDOZl z&7_J9%4D&l*gkcodP+!??>m|=0e)!MW`BRk8DFI}(mhv`77?~VaTeZ{AhkFxOft6~ zgv0hcXTnE-7{?A-RiD%?>4K{nc`wy)mu7)XBw%PH3Z6^|aF`#QlO|Ope)UI=Cx`-4 z#>j*y-eXGc86#dI)p+TVur?aOO;VIoNzFqcKP+k5lZM&6*a|& zf^fH4z5Q04UOX`-!3Z&J6>BYYb4M>9jCqX3QReGaIE**2HtiPi+gXbs)>?zL_G$i0BIZ$*Rva9Zy*&5IMfqlFm7JbRaGH6ER9^;3w_aT6jQ-CE`^(x zsG!qsGNNay_dxVPx0QZM?APm$U4@^ji1rhzez}lX{3N8y=j-He1|J<7=6{Rot7;kB zR|n01isUcG!nfvekQdCbJO-cU^LA6BgMF4_W_NLb(uI4gQq=a@;Mpp21AYz`Oa0nqb^x zzTSPh{9^eF@-K;Dd)iFFH-9g_ySTEckVsDpz>2Mw=`32aRP2(so)_iHWyWR8lNH%= zE4zoccn0jUdM!%Y!|i9Dgt74Ue%P@%124ERO8Z5`i7+GAnCgW@m|Em5!YpEkNeY41 z9T6HjGh33*a11ZIi;@LR2q)W!OL*QZ^5tu5G{CO78)%fl3-KsnFn?6`l|+C&I7sqA z?c)#@Nn9YsIxqwkexXuk6zy%T6G}7?v~loUswC9@?N=J6r#iY3v#+X)AC}#X`${yo zdwp$7Z#a@rr0p(UqQBV-2vAdHrlT$~Z9m1yDl)o`Pk5^Z0P-T~bri`2h-#rw4Yf8y zbF%v21stv@XUA)DKYv4R*=X-!yyMU{;#4>6>!G&#PY)vAHe2yBA;$Mld-h7)$E#u} zsqF@BL`4Pwsj1!^e>^{~C$0uP$`sJ#v$6JYQqVdx?i7w?-gOYH?*(<*@jyM=3Z|YS z^2mbEY3=X4-~R?>xiYvWfra-y^H@r!Pl}}@AVF$03mzPY-G8g~%Zs#7tc$%9s6gX?u2BeS8bF%kcN|k*7jVUhgZn)w@H@vkI6gGxg9ke51FsT6fY(Yq4~4Oi zF@^e{;g^6hrhk7NV!XdXP;N$U5w~~;Om5zTq$$_j*_%5+SUoi# z<0p;p%{WquCo5!XB5kjqo6YU?lE-&FnD{RPAYha*K)9iCBoaZG#D1-GVpoBT&>o_m3GXOkHX5;L8WH_&e09?Y`uMYu6x*nX9lMO~ zPoov3^nY~hH!Fzo4I5p&08j=90e_f50uD9SuxPlN@Pp$Y)3u``DB($D`$hm*!ot>! zg9e^{yTN@0jhq-;1nzox7R+Px^miNYMy~o`0&sm9-Q9@|89Nr1>LKS+K`|*9joZ ztwE_!ANT)(xTw9jzpu}YRpwc2_`-I@b7-IqIBg#trQ?O>yYN1pSYDv8Zk5?K3%-fD z;IJCmT;SPI?M2sc?Xy-IQ>u^H>VLx(sed0|Pvlj^zd9sL!;Pqh82m=)TLo9!rWMUd zra@%xH?h9b4S$F6l)eaxnC7(EwM}h%QJ9th!5J6;0y6^N3lj^ zC=i5VTeUcEN|(UnKer5ogkRc#NJ$4RYF3@051*J^{Sh*pOZjv^qzY-7!5mx_J%3Jw zVbhi0u6rV@^j@=6rw^aZR13XHy+Y5X_HWD1_rscIbObU-Q?;h}$jxnk?C zBOmEZu6P#Z)X_i>^^h9veLn@wBY(Pj=CKh&EM}4o93F)?Zoswcj2k?6`~+K=Tmr?d zE+v3<1UjVUsMd$Zs=&x0pc?w%&h;&J;8kb=&-8<2%?z?_dFIiOBB={jJGprPM3Vee zozD}iZgDWUel$;x1!ypujvo%^>Cm+1^zapF?eFfC?Bq2~V;?|Sw-7Ey41d5f00YK5 zy4f|tbXD$l)+@jw7^ht6_?ddJx-sG#e7=gemC@Zr?^f5S!*+do>^ODhiqLMibGJI_ z<`@yHt6jy|Q!Ntl-T_mz3&7fp-q2#YPGvE`&0lN|`<3Vw_24#KCgymWYKn~t25{U& zkf9|g69&-X3JUy(V_icaI)8ZVRaKDK+de%=gH=EZ1E!NT*J@xGNdD#cVe2|e61fWkmFmysXKZt`w1~M#W_nB-8f#7%=8|XudJtUy$^Yx`pGar0 z=OYW!Tv{ou^T`g7K_cWEyFi3Wubz^$OM>t>=3Z$Wb$Pcl_C z54}g*LqP$4Jd@;_0V8xU$~P+uLW&QOu}@RkE_sE&hwEg90@#Nb6gXFFfjj;PatUHE z>|GrKfPX+$Qb$iHZX7y-bn~I=&jd_b0c6LY^19XMvroXzOPC!(UHDR4M zUDtofoF;=^*2X0RjY;f{?ttj3fYvp_VL~wVFu&*393LRY>MsgC0-zNutinaU$sWR-tI(bJTi;cJ_M7C7EV3xaM4bCAk9!H-Djt@p1DO7b`1ZqB^8f>rxa;p@Rrd z=>z#(s=I}A#9=v-ZrFcZ1$xbKeum= zroiO+8rHFo*0xG0s;sE3ODbtUQSQ_`&;+q z_qW?ys~Geo3f^w}S$*3O2qj4f5ZE!cP=C-tLXrd*n*SmbK?@89{!gB(O)CJ30peXTYNl8)PLHC?M6W({NcQ`thGo}%zsv{ z7PW@W!HhHP|HuS*8$~iUC!j62Mz7PmGp%6V2UTzLqlD!Q{JnOqPPN_KFhuHIvA`)Z zt4e!8gb}QT7p#@;KrURO>Z+=w3r@pVuqizO<9+Y<=9P=?CO#eo_b%vVxVQFi{${Ca zjUehhOBUs3i6eA2&HtGDS{l7aUw?422QOmRqMAB}abp)6&S=0XjNW2?PZf#E68iR^ zUw3#}L$N<=SSjmuOEIB23?6-=36rZazGP2FOH$Y(6A(F#3$}w;fiqwz=)=awUO`0# z?F>s&K5A~aQkZoHZYMY)F-pTHH@o2+>eaKd1?Viy5B?3S??JjQ3t$(AtENJ|skvY3I7++iyK7c& z{#;vu0Bwru9Xu_xUh70VwTkI~=AFKB>yB(4%T1x2-|lkA*@tSzc_{2nTgsC*JKfl& z7$8caaTo*!59`-4OT9sy>3a|$Mu=*MfK@jOp81vEA`og3e{|FfVya$&c!OtyDW zW3$9!>gd$1t`7Or2-e7QOYd7~s}1s6QrqSL7X-dzk!0_Pa{licYJZIYJDDWF(3)bk z+U0Po0q_tBtf)cRBX*M1i@`w#@QezhXvF|N70YMOdEoT8B)pLICXx}6z5r?aRO@=} zDUDu*uvL)bDuAbi2L!HYSni;caG+@ z^~%ek=L|JbtV`a1?LI_D7w=F6DGN5mkQsX9E)>XUbISoxE>()X!qRi_^RL&jtGaJ> z77EC)*1WNVAw!6->3f#XA4O-vDp`UB#Nq=7x=8bUd<*ILc7L6gKiDuXyOYpxp);B7 zcU~5^0=3GQ*|^q64ojfyH99+?y1&;e*Q_QQx0=B>Hns+_iL##+Esc$Fj06E1+Z}XT zNlzKNgZxTe{btgBxCS1Jf%unf6mxOYeA(YKeEN`V?_X0sZTHlDZ{^MbL2UFfO5e8m z7k!A17MiFbmVfk8B+!|^ob+Njo~Ai@b|kSS2IYZ^BhoW|y#-90Jxhf-pHdhf=ehZn zZDtru0P@I*!YhpZ^uJyAYwiV(Xmi?BUVI6?T{-qi((^sVPtd?fiE8zb_?4|_AxPQR17@9m*r;_%dzH9JM60UX4 zz_~CNjOHjLe+;c&I)7rA9#*dzWbmdDo3hmu&4Zon41UV~J_7UzgD_yoMX}%=Hr5En#WBD(F>0v+C{~R$4`>mv27oXep^tbDqu?5)6bJ^uKLg zY=cf_UzuQo-eb$NsdN6e2LA!Yv+EG_RWjNqRc~mTJ z`5o*8fwJeZ0u_dv_Cb9a!ZSZ>dEcoIw!`Q$#{U_+u-9^X)|cho6nWHsz0)654lL02 zGJk`CXI6h%!sS$-&m}0|L@4s2e(KTq=ND!utY7h|7lcUbl;A;H?jMh2}O-Cr-lh7!k)H zI=E%JR5peaYsP~YPf8}j$dnmTt@XZm>3`Y?CLx%z;w6(_+Nk+XZ|qHRG}r$m@5@b3 zasP#s4^T`e#Te>tOa6Cus2Fa~pgg^dADCr}*s>|5lM*qOBEX#2oQKBr>AVGj7nss( z0+wK1KAw!7vq^{h#az5t*j4N*l*DV&Z~fP9lhkvy zt^t;@xwsG(@I+d=H@-9%E0pV#d9t(TZ5|$*z}fX`U=S-FyNmaB>osUDY=mrDW8(7VXg>T;J1c2kKtpyd;0T^<3j`!PL^4-M^LDHwR!4?~FdLKk!Qh%^#%A zp#TmbG6H8lA5sP#_X1S9nB*)4^uCwmz`>X8Di>;YWvF5aY;$@qC9TtxRlK5|F(t)d zR>qVOnd3^t9PRY=vgjEC#eXTDBwGK^68II`6ReTrjCEVLz-sd)v9V^jc#gpFSK1yo zi^-Kqc9c|V0@}r<;Z>?pMtZlz4b(6iK_DoSS(=i`8*#JX5!O_*__z|wg0PXABOs@N zau!Fpl=Ta@0Z_2)+#&a2=AARFA*wx3<3^@atL#093R7lpy2l~_4#-|$8Qta?RfT|3|=n*@a1-3|8+VYz9R+x#P@Jm95;4e zUw3Md?e%-O$@o5Zw-unqVm=t$cZW-pzg=&*>`Wdj59IGmVoJBUw$V%NcvUZUrz!{+ zM9a}-Z~1UIn$H%>7k_%wvh|P4Q)6SUnZpOApyozQ;O2PerP^MkuvY5@<ep~pAxA)p#xqX~A=FXb}OV6iaG^<%|u?8kyJ1@yB3`ayn*&(fL-4 z#3lIP7@@Wa`+v@PdzojKY+jSf=6Yax8jibmS5hb;{UH4hYj3KPdx;yrQO3|ZfmQ&C_t@!;Xg6B zbl}2^X8U;^sui%nw{XV6*lK}VSlP+EMvYJ{yOqaKSq;Hk_W)YyjQ0~zZvz+?JG!A$<8;vy?I3xqs$z`SiF|{~P_O!N=8FLTajH5I?+ z2iu*;=JVP+_k%f~_Gv!f?GA_2MWc|Q(&xPXe@>tA==5m)9*r-f(df+jJsyuoqi@fZ z)_O4BjVDK`59q}1JsS;&q8=krB_-&^_2m5?h<|;5qbITSdOJH!hojNmh?4YeV?7>? z{6t>Q(dg90Ma6nO5<7jzqBb|txZCb`5guKWMH+;TpoFsY#EN8f$5C_qT+G(7dULxiDta`Pbo%B}f6QbYv1p^GUs)K<50~g&*WB2?vHT|{*DatSs*QBL~UqL<=*?QV0 z!2xds=+@BDN-o+0pYj+PVCC1OQ$zVNBY$HWWs6Fc5v{?C6M-Y?xCt{^`(aGcFTdB% z^gSQhVvt?~4Ni!)D23E$2&|Oae=0BYD9W&3q_=kQ9Iu+fST22DSMPe2;`Y5P+x<4= z%p0=oJBCNdz!^LzL_TFb+D@pu@JxDN}xkHpv($6o|O5v=Cx3K8PKp#PPepb7L<@i(O zkgE?N>r-D%fzS`uMIva74Ox~Lz=iylk4cx|{|le4EfS%RRN!oN2nC^Z47q_p1tX$L zU-W59Oor}N^e7E>iu+rrW-~Ttj(<>wY-m-N6M@%KF=C~hmAboG?Tc)Sf?N{V2TqJl=UcHp6C6g%g>g_5Q3#vmx-nhC z#4T7+R%zmE8H&FU(!hvKL1*TsrnFh@R)0UX&tEhd=REFmm7mgQuG}3RK7VR!4>dJ| zzi0FKxv8nCt~QHBHJ+NqO-)-Sp(doJrnMLOsjXF-YfGh?(@ke4v=<4fuC}sjYgw_H znuo*9c6%C0t&G&x%4=z~*lFgbxSQCCd{oxcD;G5puh~syA||G@ky}ZvuM2H8H5oOt z+sAF=_YtwPTa9k#Z@AlTHGlD&h`q;~jT5)qMnwS^BbFBbFPoIJSH|aQ(|3GbysT!& zW+TBjkOo8nnGpF$`L6Hvi{(1Gmi)hSW_Y&#wk;B8R~#Z zfrvomwH%#!SKuN>q10$QG!|Je|+S8$p!6=K)uRYo40zt=kBi>-D}ob!cn3B*_cZSubvAP03V zj#d{(@VEkq15Sc1H7Nv9n1|s$qlh7rdvkI?R2R%=5El$|Cw`kR^w4>0w@zbadxg|K zjNKah6M4E*FM{=H=P-Y}A8R=W=i=pqT-S!*%Yuh-aRx{vAi{56cKm?aym`uHvUP!PJNj3yLbfdpbc)iIKn_@iaYy z*e?QnO@PHy1WiSGQbkNxZ$LNq``G_memb~Kb-f=BZBK(ipU(dt(;J!Mw`$TqefI1) zr?`do0JsCo>C=C;xN7kCR-m*^K0-t*hw3BD&RcpEWbc<&;~i+nFJ)_zC-qOqzNaBA zUN|`G7h#8kA9da^Vh#&0fKUeW#^o-S3mzyPW4vM_<*ySL?ZuUceXlY}%LIyNr(+b+ zw|eig8)bCNoC5HSu3OIGW+I)++5|8J)ws&-Tmv%H6^wrm1Z#tFGSK04*9WbB#k_V{ zyMSUL+vB5XR1Q;F0s*e`H&@$p^;{oKB-G{ot^ioA7hTb~Hz~f&Rwu73@p_3Yob)$; z%-;D_CgLLi0?=1wzKNyfDz|!rCUoW5V*_Wh&iyq8v))OErahQ{ARrJsyPe4ZqL%V_ z5hy*}jq!i09+#n!z3PbOm%;D+3zRa(U!!|E6A-V4&!*RG#a$Tt_cJM6@FmDOa4=>U z)r<3ng5%8H+sP|CO((!6cgdC75F!rPT`jL&l)X)wi-$EZx%AoeIj!nhv0Sne%|r$5j^ZfkdPeBLZ!s^2BmuPkX5rj3J&IyN_QyvSH1&eO z9bCoc>Y!hBKvtEjivN!Ccc8c0m&N_s+4zliRhnUyLZBN1I4v)BU%F)&yBh;mv#Bf} zq67a@h-x#<8uF&-13l*jCDmk*}}iCMH;5joWGcF)OY=mB&IM+K+uGgz+w`S%iVvU zuAjEG0fFp5rc!^al)&A4{z#_dFnXV2N!w{N+rW3z&e588HS`&!qpXSb|KHpe$%0BXJ}2J;JY60jx?R31RSSM!jDia2R=D z=CANX)Y?V1MD)*Phb9;uPS*wxS4)2j8N=D&Kz>J>V7qaL;ZSP{d-kgIz0o0L`oCT0 zO)eJaY;bm{j*15;LE3cM&M))cr?g?XF)J-LHZWsj7%j@vQ?^#vtSn{(Ih6^OJ+8~+ z#*4b$;}%NH;Uo*B-CpVxcB4=H+&;RTg}rH5e~U3@gy62Q5}_F%rDtLw)qQ_U#}S2w z1IuA{{WxUyT!+=|Y|DQ7(^tb;g4z|4eK+b*2+C}0{~A)H*3hU=VBklvnqtL)>p&{R zp+b6TNFAv;<3;YyKU*5hZN#=*jSge0`Sr{K$V^^_1TI-iqsz(cp10%^SHJJskWV3bj#w7A?)R71K^C z+@6m*p^IpPydL-AZE|_gVBR3D@+{!GI50q-C*<;W|9|DmsAGr)=oyWpAlee=^}P1) z+U52@b0~)I>YFR{WY54=2^KI36nVI0pd~3VOvF&CQYv%c&;5Fl#)p3#7vUH`MVhds zdbPY*kX^a(q6yDU!Qs&}z_(P1{=Wk(0_?Ze6y90au>BeIUQ6fas_D6VTJj&i{#H{n zw!Xqc3y;;&1|~dHOdd-+&xQFV)3TTUEZ93v7tH>-pCmm+ShlfmoivXvfJZL$*@A`r z!|i>tVX51S+B91%IfQ?@nBDh~18I!;kZmv$3=9GgH@X#T-=#q;`hvB3zn{5J!qt-k z>R@R8oCJdNk#YHN-P_Z%3WhLXF_G9xPwUNYbaDG8Vo@HW ziu!gpDn3SzJF5gVXm{w2Y%6tZo6^MT`wTHo{I$lT^H{=yYPx@LajU7Til_r=;Q?P( zLp^$mGk+>1u{>@nhKkCm7FRnB7zAD!Y*SZsWGz^*FrYUJxWSj_98qtmX)+`nM}O)6 z+u`9FBBiayK!5njlRyZfrEV5FC$Ujw>#;{^a$;ne8XhgvMH{g6<>KpJ!+OuP}GTd3X6{{CR zCndUk+1s+c>aFv}<)q_%FXM z!WEpmaj1XT_>M1vy)LcG7=pR@X^)wem)8_)uM8B|LC6NP9>Meo7J~x`<3Pf$8HSg> zU&XI*%G+%tg;l^8N5Tyo`PId3S<)?kTw@QwzPEuqdSum?pGy6%YTzd zuV)ZebwynxRqewhTPwX_ku5nUl30z(#)5`0IRk&du&r$sU~L!XUEy(6FUSc`%$M3X zuKsqYb|fm#w8X#|7rzcRBAYqqGxfqPtt3L)1ul zFhgPpadiQmcyyWpX2oMYtXw^fR|(%)ok@6Aklg1x76|_C%NN4gx$WWe7ksa~6z=Zx zV%dL6K}*;&yq&(&m1M|1z?MP{vn8>>IJNXDve}k~gB7zP72eFQKV;MNXvu!D?qy>T z?H~Y74mci9SN&FckC3ahv>a_zfObgRD1h{AOj>u)X0bhzN?yXBu(AKF1)EhwUYDbk z>YBbL+;X$8z=`y?M8sU^B#|I6>BE2hTzG#A`a+fn7twzgyWS(DIykG4k3lS4j{~CH zZ@634zvmU-z&}dTjkeha0eFOI+7DdMU-aQzRl>cv>?i`5r1-}pY-_^B6Ss0_$5d65 z%-L07ZfeD-+Hf|fEvt1*!=ZuK{{#V<A5?2RH_O9oMntaRY<$*w?FY?4Y&g7ae~f zM&T$1K0>sBEsc%Vq^JOHG8c0m4Rj1p>W&ath0aNxFv5m4H65!#^ZB&uxU*wevNP*r zN}}WM6bM?%i*WJuIy{ESRa4*BUDYitWl>NEapLprnaD!PS2#(#3K+ zq=v8`ddnMu27~UB*w_OwMx@a%+E32fz29smqZ$ZM_zllTo1wAq^=z)^JFij;X?g8E_>!JIOsv`)kGhA z*!VIuLQEhc=eXQOy!qD`94}vwr>3s3X$}X9S9f+`xP^x+Y2G6Tdggy8`<>eQk8cCK z$dM92oS-=KOG)s`n+LyN<4WK3MEjG#oTeDy`si z)miUfoWo;_D7NfdMqhvS<7=U*=5ra$^-~PQA2?_Y}JLI;BV3a7q zql?~qN^0RTYMqEH{hMpa_BLs*A-K--;A04y#I>CzUw8w`mREng0vF1rC$789Oti}^ zAc!Lm?t2NVjQ(QSh!k^9Z_-(U%x6T#B54vC=U)l1H>QBw25s8$oNfUTKn`gUdu{=t)Her6_R{@b?4_oLr z`b;HIJ=F}Cb5MV<764#Ke^_2l3svJv0_1DC$;l`)Ys*bo3R4$-PXh}|SskbPYsRy* zyVAjwE&&4+E|4e^;l`%I@K!fLR1A53;?K5z%T0m)B# z!ho>*)(EK=?Lf;cltCl!xC&X%y^AVzbTDpu4+dKM9biho+s1i(RsnSV1$X*lEWb0M z{Ca-oye!Y=!?cgcgxIXWTWP+{{R{Ab<^u}!gUWyUFn!^xEd@tAYD@jGYAkr#FT>>6 z_En?Z{1`VjAK8dCG&;3hRRBXB#qCy|h6L@v zpg@0kvX&SwU+yv&+c?K%;VU25T{OqnI5nZ505|IQ{nOf9WEbK6jW$3*zffUh|B#oT z@1jBj0~f`Ld+aT(^7*Y_FXvP1Pt)@GRc=3(N*yNWp>%$jbHM))@!z!m@*TIl3)Uau z?6i35^@tmQwhb%nA5(jmwPUn*94tM!LE3-r@K=XCBX^5A`9EeSxUBtOXWrJ#$qzRE z%;x0|1g^3k&Tw*KgpmWEdKdo=;W?&J2R)~NxFKySsz3{kA`xd4+=L>U27G`T>HwFt zs(O2i=d>x5<>mM!>r`p5q)!rw3?&k4%R4Cj%(VZOz_nogrVYQb{@E!$^y6c=zKJFD5TX#F`EY!X1Ec9KQ|o-1dI%oF zl>7HLLIDT^V1x~-4B~`Qzb6@)w^)Dq)>|7j>TeO%!T-Y0GZ2eBLM?kED?i;~RmW{M z5h1$m=RoeDwzT~hnIywKV%m+7*~YZ5nLr%eNwL?bxupe0LaG{^)C2)yTzJ{IPZ()?pS-l#b0bbrLaxi~k_H&=c!l`k~Q#GjM%9T1%D-#Pb@nW$2&VS822d6=QPX>I`k%n^eo zJ{0LH-eqk5Xltk4huYfTlD#t1dw*W)XhINaOn8wIDNb7vvAN0c9EFR^l4@fU5hT7w zQV4v6Dmfeu-f-0a1RBg3?_Gb6|G$whP?F9(n5x_%l2ZvFi8R# zT3A<7;*ybsYy<^ACa#_zKPkIrT<5@Z7h6J(Nyu)~mgUca4Q+RT6B^`D*NQ4W)t zeSsuE-YC<2BOOPO5CZ$PjC+)E2U9)Ti|T1iZU8%Jse2 za278O&j68CIwQKM9g=}W^>?rPU2fzTlJf?9^9ZgU;&%31tMIm(@xsJv-`v%~oB8I^ zw@rQ({VPA18`lc4Jg9%`QCRTYq6m&4TR7n5s&i_H#0&; zM92+ROL?a0YpPOneU>`Qv^@S}KQpLjl;8icS1OBD`YYdZ$9FaOKi#LDVY+*2x=JnH z62%9HgwFmr7aCQzg8v5g3cv+q85t3nGcaU924VLuIu+@8tQLQo?RvYH6c`3&bkE;; z_kC0@3CM0dmOO^u<7BVvhz&nkkkR9xb{Cz9SSU{B65t&N*}y_7js?XZd4QY5h(>6{D3UR1B}2d?X7CVs^TH!QrGqhTrnWb zAcL1?@qg_q;8<8Bl(Ulh{X+Z#z*a9;fBL2^oz=uM8Ek)%m_O)348ei+j6%UFQ9HaT zQwpYA?V|jo9d(TIMR-4=oBH4E*O1wo#t$$OQLha=^9ss;7uD_CEbYCdT#dNbc4IyZOSv?3Z&A!%>3rrU3My54T#+m0wn_`z!3Wd|n(UONE7x>|!i^BF{Cz z?obLGz!V40oXn6&Ts(OE2A6F2kjFNzZ7dc&{^x(?$FJ1m?7UdHT1swh78*uLcX+dLOdC-itKriy~7D@ z+lPM_@>)cB?~rC_=ph)&wRjeiYKi5llF)$L9)WWfV-^D+B_2FG{#!;zXy)W_FaBrG zV%;|mo0t9fC8zF|%(<{saEyis!%2k%=M5Yxrt>%^MA%t^jeGuzay#}6{4uNJ;5$6T z3&t2}1TIkh`nE9c5eNu^6l9ByV`5`KPQ`x!t2bW81GH!5{#r?UemW0RJsE^jVF%=~ zU$CnX&zS|-lkE$u_K&WG!C-^|e?9r@MccfQ*t$~^Djp^emY{c!Ds6bdOI{}TxtgH+ zlg2z*pfUy<^+(|`fwbb%HZN+}hcDb>|U~Kv=&!6e<{9(UV`~SP$(fIG0A^zKp z<=;!7wngjf9P5V@<&@q?>mImnUaeLBGj-IYu4sF@=}xAF=a!0oi?*kyVPe@@K9KKr zxB`(dKo8e9@!Z#BEL$jvPF+t%)-Hdy^7(R`>ML2Twa6P&E(m_Txgka2-J?XHZbA&~ zh3cXtf+Lt*rN6&L9K$U78w=c=8i#h3w%=7|bu35Ni;@@dvDz&XdDo%+a|4RG>n;1T z^1hS?hu~pw)1-daw2STx8sVZvjCTjrM~c9^e>IqtFAw=)$jHZqfOi*UN%()QMSVm_ z*<05A?Vl7hs<{sBoMP+oR^wk-HB73-ajB5CH|M0GbLz3{0<9Af@vXk}>H?RACjf93 z_)i!gCho71SMZU8f>mtftWC|0g$wcwv&~s z9GX>dXh$~3qqb$*OZMU4^6h8_ZgkS=CaKu(u#MMY2xIa|RZIbppg`cB+drJhc2xp~u!@zP1NS3kzo|~v-4cH@{_UKy0cXw6k@=;H)!>Xd z`hZZ3A1ckF+u7U}*_FQ*kdFWX=`98YLTe0^_(xhJBCBfA+khF(1urZIiG*n$wA-V+ z;P)hYb5wc9pa*}tCsCkT=Es5Epb%B$lvt|0h&2L$DOuJ0sn1ZJhmQv0$*1$k;wJ8n z7MNG-??#!{*(qGijw+QgOv%A@wf=kTwx8L_#KW|JMQpB6V1J(89dEaCu?(Eu zE6Wfw`Hqj9S8yFpJ$dVcWY;4R^Dd@om(sNsf)S^Zxeu6G~PxVYp`!^u_tJz-d zW{9E>*@Hdfz$0l+c8HnAg^A98J|{Rmmu)#s?%FQqTw#yY&21tdK8|6(TOL!uGI1WA zXW|WAA5MSRkQ$D*)My+a?k64886j#w{+oAU72ds?)hN*ojNQnvQL@~G_owlBH;Su#j4c#5(ASikpzM&U;od>U2egO6^US8R2(o_}to+hwv9JW|GWHS){;WhE?4|hiM@}{FZzH-Cd zZ|myot_8*8cN{o3h1_*Lhf5VYf;a6h+-1v5JEaey0=3)-D}EgiVnDId5$zyeOzw5I zaF*V)N7mE_ve9o;vi`8&>kq`n_E>@|e=L8LVg*xQK+Q#&=MPCfFxNN?nbkAAenudtd}|CQdLxW^uYejeoxik6a zpU*vly>NikyGjzCap0OpAFSaOG{b)ce_Y;v*8bwKA4voN_++7mr7)XG;_4tUiE}}0AQi6Yn8%|mH z=}vPyPa2Gd#H(QepmJ#K;GWglihqgUX2fNTD1ZsEBRF{geH+%yB(eSEiC?ceP=`CjKoUjx?dw%n@d794Xr*SpgVhHW-fpiia<5Z`D& z)8gg*3V5vlR~(P@eV*x1;QfEs#C6W+vlmwELvfpulo98iA+IHoN+KlpkXr{H(=^q8V-+8j97m`sgcWO30+N;siRc`s}}Xw;?#lgXOqvCs6WwatQ$IPDPPh8~sLZ)sKB}*5@Q= zV@sp|WeXwhAK!*jEaolebA5UbSWc>{lz{Y%C+ev|M9&EdiDJZI_*W#ShnPI!fkf=3 z_Trn>(EVqua7%x36ZY7VLFB)l%NZQROL{S37|V86SKu%x_A}23E}CoYI#ajg%2i|R zAAkhImZl2Xx;1}YM^!7N%=>TF#42dax_sYSy1Kl9rKDEb1Pq@%K=rS@M{IwG%+$=l zfQWomK>%e*k@8=&VfPqC2xzKriPshYsu+8H)7lptyq>IV zHX&o!fm1KuVM4eSPWw^V3UhusmLZ7I4-Nw-WUL9ahEC&hzu$D*SGWKGCLVu1y}rAx zgnQ}ZHT!>#2aiP@%PxIxFG`aBv(AR^D;x5JnW^dRYH9RPbm#CzQX&RqMJ!;49mDxo zd8P7m4E8w8`_4-FRDQl#1B39uY_NSTM<;9JxlsSRO%zvm)3aGyLvrOtc6+h2C!C#? zjkM^pxfcigPLGF9t8Rk8asmqyTHRI@sYJIrS>AuqXQr-O*br4?k)W5W^|IxaQ4LUr zG1N*I)L0&TkM-(+#PVjcJm~o!WH`nteah{)PjuD*u%72;4135?M5T)*m%AIRX$a#9 z79ugeFzbbJVh<+mur7+27Smqa)US2gWLojG!T3`J7#xGyk5$>A{iM8DOA#_u9M z&fI?+Uuvs;r(T`(=F#ckG+rsSC4KN!TJJ?vuDo*}eVPcYMlAyfV&sr5R(@1@yP9(kXGSjD z*4X4b)jP?NkEPwxUjpH^B@>_)ukuNK@J@f!9>`q9bXjidIP-7~b7lp!j23yNeU`SU z)$l9H9ME9we{_(@cH4Yy_lI@HBI6bBK&y4u1>yS^t`$P{H2&I2*JmyqHIy|;24Qt= z1BmahTXE)ExO~Js14+GY5yI3^Ell#qjg_b?$Y4sJ#Y-kk3?t`Qs!Dh`U_-&N8^eDg zigIO5vFa8nqb(pX0T(6NSu0BJg`1bO^2~GaxQDL)>d8A|{dRY^Zr7f6?V9~@wl?l= z=g-OJ*k8H1Tm=3zYfu-XA#bb#7@bddc^U43g_3#Sv_~}t3@lpbTf8=MZkKdZaoe$A zdo75ZZsrfzj?g*p^YFUg5vZvPg7tswgGe4dAt^|Zk@>ys1D&c0aU2+T@nx6{p!xo!_T;;xtoy=jR;wtuTlX^7Ze9==p7W*4Z;1n? z#gI>62|myeHKa))OYJR)G_;3-c=Pb^U?$N-UXj86C=DwwUVi2H`9OLxodT? z$$Q(8^FGyTbzsc~gc(%`3lQ%+R#`a^4m@5BHo(}gTHf(IThf~=p+S$48-jlm_()Uv zf5-$XN|s?d(sqk?fooa?jHHN|f8L;Y$bkOy7heB6{ll{K`!2_EqkaCIartxBL$74o z{678_%uX$-2H?$8IoX!!mEMblNYupvk`gVxrhUFfPC4 z?vBwljrCmjch7CZHTd9nTk5%&5!Ns?Ncj?QHO4W zv7%BxZRnFz#uh)IoZoJprgDIBQT?ach;0W|AEZ*b+Rlu1PU~Z<+;VGE*AUS|j@*KM z!3dcK{qgvFG$m3ljgEgE*+DO)E;J5YMQT`?3$oVZE#{z#5i_F5_m~Vf^0~f)8 zjbD%7HNpKr?U7xXEmqxKi^89M+~I-@ijnn(Hl0n88t)#=AQ{CwQ>s=vpp z+2^t;@UO0>YcOSTCeaZEkZK3A2nQGFh%As2Z&?5r?Lep8Ls@#}ggE8WjSLqVU1w_7 zz8PtHp>QGvAbfx5X&+VN9nO}cvc$c%*Y_CeUc1Fq#ZL45m5!ty-=B8P%i8w2JJqr( zA2~Z3`Sk1Kv%CAqB1RBAH1Rs$d7V_FoVWTXjgo5%e4DJ;eZQ`)-p+nGbl-#D8Sa~6 zt^ZH9Lq70IQgGgP(|!$^s7j9>#ze$#%>fV_QP^5i$u*|Bzo;=PX zn5_9YRwljc`+oQKNa>x6rN|9ew$n?K__fw0_Y4oUQkahmbV9#SoDFM|_3g>D3xsgr zhYIEqw|{>$;35gMXhLdtg%V)Fm=(XBrx&#CyUGIrogYyJgF^wgbdCqeLOeDYA1~?p zO|pP9EEL0<2X0XU4vAXQfHs*8Y*eC1gdMCR6$2^XMA<*)-dO6 z`Kz-$0gMhEABMzN_OdIfn}M3rhJBNDunkr!#-h2jXS0b4)%3;qr>_M}GAH>&0Zf04Kqtc?rT3r>Gq>$L)-4WPcX{m(gE44W zVQ+n;kD9~Bd7qyX>N0(m&ogdCS+Ajo!cSKlWtn#drp1ErjR_#!F9~{E54)H2jB!*~ z+Oy~?gsKe3dy`nI%4eA*!;i$g+F%6~$M>tPc*JgiK z1<$tn&Ikcn!bUhXkOT#!TV%pWh=6d7FWg8tqd-&wAOUdspFNeUy0px8K8~45j{l!C zZted`P<>-CBI^*Y$7!&bDIzk{=4gr#amHiWoYzXm&H;cIuJ}LESnrj&PcBC%ZsTCR zT6Z@&XBO|vx*V(k85qiFtd@V)QG9;^h6X^2oh&GXV40sD{w)j6AFwE!ZeLRqX!^eZ z%A`snZ0h198Mr?!@6SL_dE=ny`tQ$&^m|_%3aFwNE?<5CC2`S{#>koa;2>sWQ`hqT z`rRccN5szf^DcS;Xrx^Fygvk|X6mt1bwUUoRYWdCXhJ$4e>L{}?`vIIO;CRm=&HN> zSOq$7u$7#$$8_o7Y5!f^tqFGtZ5S`@?(nSpEV^`UP|PkfIjxVqel{w3qSce+F;~#UUH(je}ZAL2)R;kqjTQb}#q?ik`D1kI!OK zp1L;A7JP|3+mm&WSD)VdFRy>*g)Hh#g@!Zd*nS|&rhTY~*~WXEgT(mLm`~z)3S)o` zKsYXY(xszQh6Q^@;p4*{tut+6#px)^^ic(iT%L&13m&nEmO|^P^8K%*?Q1l772SQH zc9+y_{y4lUXJvFB{y41$C}gK>gen?11T_jC2&twMkIK?~s3w_Z9S z(ZCTl<*6#esuo$u#F2>+j3A-nvYsRDfA`&grrYiG9dGM=t^Qw==eC+UX7&mxu;(%G zrLsVV*U0RY)YJeIl&4&=xKhNjDeqj0&3qn?h^o&ABPgo4rpuC4UUKaaMCyyp?Z(-? z1nC)L?Mllh3Yd)`PK;nl{Pv)O^b2M!(n>L(#QcTJ!q2{cR6biA>Q|Js{6Kw~RoFa_ znZ>zQHey7jCnu_CV&8MJnd&nTt^FuJ8z;QNF141sJPChEgw6&~M7&3GxYtWOe|T*j zPzdq7Z>O(8hPJgB^aD!5n*dJIS>GMcsv1bXB`C;+rdZ6({}L}TPxO(+XFPAsGeul3 z#jm}&o4XZ_~o&<}He%pT&vf;T+JQX{d0yp>2T%_ywljj-w zy(_(U;IV&e{75s0G1V|_XlydcmT*&Cd_=KU z{5CRrbyhfxnBd2(B~yJZ2JJ0|W?)-3Q$Zx}S_OCaBHy_`q6S%c5fCaIRZ{-dfWcw; z&>ywg_R2bJG{ikRMB83Sfj(SpT$e;FWo0|$;ckCNC??R;jKqy{-dvMYU*6E$lXk5* z!9iQ>)+c(SA_M>w{iv~sUt`ps^Y@sRG+kNiIvJASA{B^A8v34xhtJI!2TzABF-9wM z_HK$I)nUDQK9>nsLI#!_)l7^BcgTB<3!KH2p|?awCwKn!q{}st$w3NL#!32wM2F-! zs_}o7%22Uv{UgqM1w!kWhZfCnhtmP2wFomZrT9(cd6XdmAb`3kA-4%%R0^u9vFspu zw4K>i-4m5H*%Q}aE)x{aZ`IwrUPE|fLtke>LeE&S;XrH z6CY!~j3}Q=I_1`+^5btCwc?1t*>sTr9fp5lAY8|2TapDZ7`~Z1ue!RgOxl-K)zn;| z0SLkVZe5Y*@E&NhyTWJ~<6sWje`qm}RT=mMC;razF#lpAR1)nr`yi#aWng3^#QSjh zR;|X;%J7c6>=cra^_w-ljW4u_e-UWux*=6s*P<1+C2&ah!>9#kFHTdUX|g%w<->ni zYuD+D#b&@NSj@iDT%k1sAV8e_Gyfj0xwo^9Pe`(ysuzyo?5s8Rkq!@9A;aqZ40-qbhf(YnfBC)&t5XO^*e9Z==D72<=Xs{ zu(t29N|2%OoLv_ZGDt~ksTN%Sn2>+Q(rhG0sngXs{dWMjrJ2<#n3xc%Tej4wn0h`N z;`+pjC^oyT*C$1^h>5R$BvIU`=!f;|UY%-Gjv8xUgD!|1BJ^QM2MHnH0P z#K@D;S6SSAjtiXXx1FM(HLo8WM0BnFMcf>2bM-q!@pusrBnw#kT1f~Cv7k>lX4QIB ziE7dSZwQ!3Tp=tNCH2Ga`~S-(Fcu%729wMV z*yZMHKbeuv3^U%<63YT%6S~ovG>cL9&11ryGI0{?Fl4l^W%Cgm_J~~7-i8CM4Em_K z*3UlZfD~#Jd3HsW0<&^&;s$QyE(g}9*AS8--0ZQ9G&e0S=0j~a9VCC%iF^&*TE{Kn z>@G4Q#seY&$OFD?`Zn;yU;~W4#pH9_8k<`=_Bi%_IKFP`wbSswYHjZuG6dEGap1v+ zqa;u?Hh^Ma*v24d#^ZLr89~hBo`m_IY2(SnNye$JZrdfM#^6J0%ZsZ^oxs^;6K-k9EHtAL$AE%U&VdMKaFU+_IabuTn zyPD;h(7LXxFkA2)=<1{rKjgB8DKfvk_`dQ1?*9DB+Y41$oI8Il_hqlSGK-NKxhZ!R zVpb}Cu1Mk7Mol(mc%G^~LQFi3-|l~d`hLUBOjH#W+cFYnr+eAbbt5H#-e_%Ct8R@L+lFcCR*nAB#@FY zU_=dMF9;qxqw9ZvVZA2)wq)`?ngH8u@H;%uF_BW@eYUHc^Q}@d%K944aedN^hS`$Z zYtwq9PfzKS{wG(ku1}DNVxs_)9z7;TYu@C)szpa0LtP3>p57hOOmXoXDuzy0QW%e(n zbAzcAv$J3F`sG_~!9<)g;M9bID=AE;>bVThdW3X~(v^G`JK$U}#yx~& z<+SA`VZ$=(ZWJc|gbo2egB@!g0jYs#B9OYz<*Jh5_yR$4;;y_21k%7PxiP|9M-H>G ztqkiG zfWoNy z$wbDl0UXr=)S|n3fbXf>V!xFDRo-|Di-Jb|qMrfQEtVN?t1+5BTXh(B9_N}_i&__~(K!p7cI6y|6Chk7=k)kN_ z@BKypkTm*G{!V2YTY`%&0dz}0A|L7Y07bzX7_rHy#GaF14t#u&QeHW$HEs+GOe!pB9F#` zJM1;6PDe88u^T43J=*k*w_Sy2)9t-gd5|m@H^XmV4xGOtnwP@DB9wtX&L%)$l?IAM zE#ZuVNGxD2()zx>9R|z`{f~2Xpl&_(OKHa}xCnd~6r!?`h1CQGM)G*WUZ8)j+>()c zX!WTFyWeC!TGplP8f_9uX%CI{?PiTza9@dYzE@gszRJCO))jX%0{X0YQw^Oi*rzWS zF2%_pKbXWA%NRqTLE8+EZI93IoE0>*8s6uwl^%`aRW!ImjrTpg*A~|Y@LU$Xd|toGe7=Rdp>)yoF0@&1 zh1$vf!(6enQ&*Tc){wLXl-RfJr_i-JA$AL#|Xw{7>3zRsq3G{p#)bW4iEn7~eYf$K4 z<@xRGmnWi^*1oJlt9M*i(AzqRQV_U}IXND(3_T}|IOFfj95R(=B^)dOZ*98n=+sqt zZdz_=4F%#O7L*_=gCZa=#4C(AA77Ed5j_VqY~d_|d`OwG0X-C7_w+xx&GZ<2EoPoW9fIPE+V51)Nw5Fr8J?LiR22IgR6P}eAcHj3%qW&58J}td6&t0QSZng*&P%6zkIHac zX6ZQad>FVIrT}<0qrnh+v`;R{s?oe$oUSRse(YG@_b*Q^0yY9Nxn~=Ot-`Ii_Uo7t zN1{$LXcdLZ4=7_^plb^C z^ukQy_Q7I-41BtyP|SL}Mz3#Qme=`6Cq-sbGTOs3UFMV(HDSHB)N^|8y`!qfZEz)8 zx~2y-!2nQ~yx-yASc1S7R0_LFKmY-$=<)kD4C;>Jk44VZd&>Y##egr_TZ@icqHh3z zZfii(o2h@pxj`8i1^_G#&qGq=el0fNirq)HAF<$Aj7Jpf*nJBmUrNV0mW+k|!cXwC zwTdcyb^G^}vQ%!%3T1QH5Dp~fw$BsCYHK_2`$|c zj3vjprNyCN4av!d{e*0|Zt7Rq%EQ``qA*TS6sBa4+- zcG)L}g8M@xd1v(*2UZG_@F{C7!tp#vneb!Rv*o+$E*0D+6h9bjY(K}jubca2?GJ0A zwNb7OLE&&mTxq8+zP$N@xj}`KQwrjS3m4@2lAYK7gm8_WfS=y5M zwj!BD>>mSv8ref;o@dc$2xO0|okyp@ysuGuEoPYnK(hJW%Q*wjS3Ta%Xjw#lvzth8 zrqmf|b8q>LpgN6t8*yK`0T3ZThI)N~Furvab0YN2pf{Lid(wy$wAb{PG$&ZO$yAKeQj5R9$6I-O#o^xEG3BaVYMt2dB7eaf-VXCkH4}T#9>( zySuv;cX!v~{q>NN%blT;Xq^bo~H0?@B?d3 zNJ@mXlU#6sQ?T9{QBV`bbssFZF7U@W@Q`C1jXrJN`1FBRG|iQx%`jfm|APxqC`Pz?~{w+m8pZO@XIZYX;wfZD-Duz%nJhN`;T)>W~Y!+Gi9VC1P zmeA4-o!9>B9|sw>^i) zAT`^}`pl@~^ueXl)MR#OH`RF|7vP09yJg1?W{c`2#wJ)hCz`toGK`WA0A!YTusWM3t_^2f|(mJ8AHOxxO;avhFOj2H^dtSXl3 zi}nACz-r55!B`UNCd-XzM&o@9pz9kp31F*umFGuP)zD2cnIkmXx>aYq;FtjrOT}!L zSGjOl3wXxIA|iv1;$dkzMb%{Z_HY|pD~Q6|x47M?oXg0n#%b}?T1Fa-=_Z@Bf98(a zB;@P$PQbObp!DpwvnMz(MO$3-xJb`0hE+3p{rvbTgGtD?Sc)=>1PT_`kA_=6C{`W=c)*!@G9yZ`Kq=?PS}og8$!{=zSX7)Hi3 znG4^&V+uEayf!m!!cn6iI5l6o21;)($}SC0P}I1`zrLnDB1uA>IZb;Tr-YOeAUszG zgWc8|YiDmXZuJfs-*ikeZ!?8;1qZOM;ahY zcsA*~>g>1jq&WQz-$2N#KCZR2Bf_;MbG5@F`G!FzR*O?ocb8cbTp&^9^5-wy za>iR6ELUD^*=yAJe9hR!EA$6hxRuC7dS_~}d-#DQzE+B`m-e!`CL;*P$!Fw=0zQ-( ziBKB7617e&sD=%_e6H~D+9=QkQT+X5Ga79X{y9tAVw6l2nI#Rd9V>H@Ho4K!G-N0? zDF1PD+^DW$uk>4z{&L<&&^v5IbG)M^KM03nIbPR!sEt@Pil%@pCjVBdZJW|7CUzpS z`&Gf9o5v@~W3gsnz0Ebra8oV!sQ_tEBcew>8pkZ$z=TQNosXh8Y;+Es%{6{2bw?-` zXxve*OShm%L9q;2BW-Y37$WnZ@!62D`@LMcMOiomS1hygUN>v6=1aHu=1n+S$%?3n zk9LTIugMVo31XAk;bixYZUTz52fi3Kz0T7AO;8!Kp|a=yiwhNi@EHW3Ta<;r_Dy3@ zcl-F+Th{^5&^OItDIpOv&jFype^^T=oN#bE{|J__JV*mLF~li^NcmZ93HyoWW_r1S z@V2Up=l=QZG$$dS6wydz&~FiNF+3<1K4FKIsUwX*J9>Ard-A#LO`pkjbwk1FL>`}z z;;DTp?dypfn9!Y9Fy=po6oymb=o^hq&KdN0wT1f><(z&OA-N2MA|8|^ym*5RXHx=(qW54<}TYfs!QUd*$mm+un07x(&W-U)yRuQhVLXB zeW%VrMx#z_(%~ZgnGdf&S_;_(4K&-th*q~v#0H0zG_T|^!GVL2R1UJ(AZBHf4k;(& z7zJep?)g9hkA~9^;U6k zUW)*q+ukNg!}T6W3gEaOPlr(dteR{Vn~lt`f4xcS*uy&f*L`jK39_0Vu_LS` zENa$EJY9RN+@hAm#r;Yt@S%;7=ko-XgRZVHdWfbIg0o8b-&&O~vEQ8PglAcNhc942 zc!IV;spGaA((3144)7W2xDtL|2i+-9$`?R`?wUBHCGQkZioOJfz_J`8%_draED#;;+r@NUcb#iA@ep1euZe@d(T>4rd- zyF-(R&+$o3cX{d&BBh_MILR!k#;d*G992=s?SAHwbp;slz_=zRFpe5XOe>qB zLI69$h*CbO?tV_MX+NGrzMFtDxf!7n9RPIMh9g+=66PVZuubqVq8*!GN~{KX?EZX+ zhZc?UkEUhih% z*yS6cy`FzXMowi4`2Ab#aX-skVS$}r>t`)W%2?B+bbZOl!R8D)jRcqrE>JP^&*8ZC z9m*NOP>WX;De%ehU5`?OFv$0U7Xga`Gzx+{nwQ)vMj&!0?}t#rvBq|;yJ)|w>%tSoBJ8mJ)0X&{{g&*gAN499 z!wdx#4KxTn#Ns@nE2a=aD-G?8>*XdW5I+i=3RP8wDB8BJ8>a?O74i{4%~5~1gAARO z;LI1}6~hkw#vVkL^+OBJzbTs@huMjk$d=|p!b4f*67pF}QuJ-W)VW1pkQBHGL z8hYc2s+klXmVadnqLL`4{TsIIJ3R*@V$&+JI(ogT)XYt$H>_~gMpCuvBa$_}_Fel* z6ZU~0-sfR=Ke0|EB0~cxJn>eI=QfwG@<+x$EQI>~V`@X6jgm7@>=^oX7uXg$K-E&W z46EGrf_i9w)b7dxD_#|4NtZNPp@pYsl3c)fZSsG0W~Cf{7Kf(msZI(ckJ{%RBCe44 zYl4@Hgkknhdv8H`T}l)aQJlwE!kuf z6;avzdF9pPm|mFm2ShkkH(O>>cPV^@p=9Ix$e>SWz0>(H#uTTSsC{T?7>)Fei*m;q^T9)Wy|J)?7MhVW#{F6#D;JEMpS=UZK3*=ePJAr3a=cWl5}eDh z_}XNG)h6QQ*kUJO?oeE5)ywuWcA6W(%+^;PTJ=p6oAzUt>u%8G1H+_daZjYJSvs12 zZLWuksPjwrE>{8re^wbcBA~~}Am=pf+2FX}h6(K&E<+42KYVqe(ld9$S-v^soKRsk zXh_AdVJI`CB?=r5Tm{qLTmn`jvgYk?h}}zCVd~L4Y5Mhi zgkk)#c>-uX`eZUzt<8CK)EYwOiisA2Nm{pEP{?LmJ?qw_+G@@Joa*~nwQql`_0l}I z-2H$mwcZB|o;&Z`nF*xvB(L1Mn`}F>(#fTN;nYZg|9X|=Kriv9>#)E5!Y5np`K;Da zU9l?gO^YH;L{=(5Xe%1fp-w6E1mZWC>z;3-&feRS0c_ot8z--%DzBb? z4W}B@!qTNT+SVRbFri|EmR5OYaW_mOPX}u?;oob;NFo6xDIURYQ>2yPP%3s-b15`6 zPE5ouh2)^(-(2T^e175s7S>Sj%IRcvUPpNV`CT#|h`BS!w*_(ZVo}#>h1ASX`qgPk zyGEg{_qzTFT8yz3wPRUqZ+d&)OLSi$LJJYUi1XAVWTOL)P5$v7N{XOq!v4GbR$n}E zW58&I0r~`(DoVtd55|C~v$RY6WtAk6UibM+IqSq{>dHoE_7*Q%JN68*DsE0JJriD_ z+tuV-h&sxpe5o7zN*iZiOF`G&1!eB(;(^FzN*Lz!RU3k_OWlR%u+U<8DV}qY{j|gW zQ=NXG?^FA=fzNo?Sj9kWLsOlU?xTZH^B6LEZA;-@M)b}+61kOw1=x<1#-ZX1&Tgva7W@fLBM0f+>lT{9^`F1Bgts}oRjv@)y?Hg{WJf2s<-Vq0(55#u znHV|7P(-=06Tzq6wBU_3ip>(*&hj9K*YJhEnKQY!Rke|MmV1bdpl)><`$<5!Jto4m znSV;?7OONIUUVSF-rbPVDdGbTHE(OBb9m4~oEzQ&hINBZ3`%pvXIHwcwJR#5WND!( z7tMUO;r-ryvqms9a8akU>{M^NS6KC)4Nz|w25oHG0Sf_#(GR)2foLBrajtee^Z<5R z|LGNn1H5Iv>K{u`+F5cGb$b;t?WgF7r2Lmr{@5sRx!RS#PnyN6550t(P1rIBf ze&to~_;}@|Bt24t(sH<=Ld~Su&PCOzAF)I8e@?RvhRM*?8oR*=@oRUnRAf9k`wQq( z+UwKN?(Dbs8->_4>fSMuK#juYbGiluQj=}??g2hz)xY}QVPW{EDT1odW%P=> zNj>&?3EzwYK6fb;zf;&{JJ@BtM(z9&ZMtu-Punb`z8UDOxh5^Gf@V+Yc+{X&mRkSo z>Q*r_eI!C)`})BaDQt82g8QKZITl1iXli?SK)9=Jxc`+Sc&>K~ck`^7q=Pm2cI|KoB_zBVf9WUWpIuH5q{LPz z?f?nN3+DV>()5>QezPpZ$U)Yc?#VA{*M$5=^@|ykU*tk~^9t33?5MEQ$JTebIC}B0 z4oiVNvk%=c^nW+yj40P60vwpNndJ3zIJ*V!eJ5Rr=1y@2xCk)c+TH0K%n zclx7!S$`rKmP14?l+lq;r$O8TR!L0P=6nA;U7_ukuk_bs%yQgOD}H5V?<~JW-15f| zpDe@_e)mLk)L{O*eX683K$QGqf{?Fklo3jdCp{URXmfi%{EcQ_O&cGG^qU=JS?V}& z6Z;A_miKdovE=H_F$*0)M+$2#g!jE;Rxx{cx(O=@1W8^zU`N>&cfX4%S^fC10yO@3 z3Sg{a#yMgAK^JE~$iIf-VzPe>l4BiM(q}KdY5%c{HXiwSP`B<7YxJ|$XjyjJWjk@a z>mT*;r|(8N;nvd|MSB-M;ZjPOiGdC$IHTCoE;--nbs?^@$BL$4mzmwT5w8}?*cZ&6 z{poh<1;SNhbz1KA$$|_lEtbsjAmEOMOCMh+UR4B~6xKRZ!Q^(Cwc}L$Poh4AYyDeg z4esgBZ;s2=XC`nMFUvo5Pd;Nmgby?@pK(B{QF_;Cle7}tnH2r5lt}Bq+U@?Zh~WoP zERrD|n z{th3>Cv)=093ztHf;87zI%n1>Nk5_{Jr}a?m%`YgHrHiAz9>(cJGxaXqF9R?g|FeP zl`}dgu)#s3R3H?ud|3j^cWnFJVrOiGlPC0uipdnHCJux6!^ZMr^({=;NYay>1QVTi zWo)nQ^5Yw3C5vwN7soLi9iYm6wd<8+&y{Bv;#Lag{?)u)iJnZLg8 z^k2f%^JsUSx>}{4%+_UTy=_=(*@%G6Y-#|J1{Enj90k?-|G7bB|%1rPN zuTVFbE)G8S5Fo*}0xe_Q`Kv=!-+>IFrf;ys{>Bh*x);aP@`~Y#5OR69h?6Kn7vGXI#{^T_`dTREA z5aKVBV&J^4Fh}XoBXDwyyRw22ORBsZNya@OavuIN53rC$&`m0-+l45?hGOqgh6Mjp z>xkxjwa{yc>S%fR)T30PuDI2dkh-+(TJ}0{YyUfO3Io+NAR(2Ey~8%QzIq6~vYEYF zeS>eeoO@il!S59gxrY#=y}<3b+`%BCBdVz#lrwh8Cu>oVdqL@gA9LU)Cp+V{t<@rNQ3q_<=?wIyVZqD@^p}hGmgKQgvRr7^AEM+L`8T= z2uu*Is4JJw*Vo2=X$_sY@9uaV_L*8+Xh4#3(t6$M4|uh9)G% z5FuNsNxy3v@qTuLX?g^!Ry5p*kZYhUU7!dsJw+gjEZO)izS8Nhp{M5gcL(3%?r)xd z3G`3>^~0yKz*Z&U0G$t_P+L_8vn~tctnwN+5thH=IKB^7INeQ4Io_@+&)BNfS(6k) z2lQev9D5fG*z92##B-S&Yq6Ug{>UD>(by|DgMQeffAHHi2=iA=;8dmXR0D#-@O{~nGcfjZZ2eYm zq(wFMdE&X~%}qXdm>QQ{MvUeW^CH1|6F~e5-h)5pR1TR8fyxfsEryiF1)`H_CCVbk zg+VPCK?k-2IP+kUAZ?ZocT^33-%_YG=s7*n(8`W4pd}(di2$4|9TybUGv&u+RyZ&9C)zDpJICj?KSwB6*+(b5beK~nu=4PB_EE5yvqt{hv zCyi{xhf*1gOYt4~Mv`2ekvId)wp!@!=#rdun$T^aYsFOzt%@NXvUz`B z%?W+I-iCyfxzN`jzpt_zBXQ6Iz~*RGkVhyJof+#cM6>3G{v*OG0|D3!G16h0lhKsYbGC-qLr z0A&%)9>*%_y?S!&N31d;^ofT?$@odJ63cyi&bHLs{^fv@7 zL3xU)9{nGO9Aug0@7KcGF+Piq^@(IJEez;bRwpe(FcdY`{h#B*T_!2__N7-;>!ONl zJTWyfzDKAj(2wpZR6w@#3orGyvaId_a{e$L}Fxb$XOpS_b;)TUyT z66tFIJM?ab2Ge$i0PHY?6kUSeeYDBr*lVKHiA2$>fdr8#qGrmVh(ctO!#b&9IH-a0 zqnPOemfUx3H}mu-q3>oHNwke2GW9c&#V|o6Pkq|;a#*5j;4P{w&#Z_Ctr3Y_qOi7 zzjE#KMv}EYKYsiA2xK*rY8`psoxb|+y{xnJ;q4#Z0)HOfL=2M^ogDLhlc)EFPagO-+6d-W*ih^# zx)NrO!PRu&86>PIRIli(x~r^5v^$MAS^|@n)YS^{t1p+e)zHg=@P?Em8V^aGqvMTc zPvhGItl3yH?-ta}aS&I5nHQ)tklWmlG8-i367LtR)0E*8&cz=AmEK3TDlC;yLMP3MiQ`!s9jq`!AOtD5s#dSfk;cJ*LG=5os>sCedGmhOV zwc-2yXuzh#j5mMn>dic)`Pb`5&?jUrzbCN(V>?tN_io1|s7i}E{EJqa4eqUNzL3lEPYOUs6#9tb52>s!d8 zE#pIp!+H~eVWKh@k1#^3`}9OwfN$5+OFFM4$P{z-)Vo)Twx=` zb*{QS&qp2;or@XFv5Jz`N)Gfn3r}em2&2!9Jw-2< zKZ4}Qpyn+?))BN@$>t79HHSa%bf|Z0s+qVMM4^;7If1)-(OUodoBOJ@V!ejd>a{=W zoBkeX1|fJe0#-|my6=G!Mz1=j+X%{Xj-CUWrDb)~6>|8}b?zOj1>x_%ZX|B{kBWL(r#aV_#h-PW*EtvQOz zT@p99Q?0{f_w@1_GPLaM{#?N>Mfv4<{Eh6OG1gV*h_OFfU?RKkr110A{agNBT~B>N zhbV;vHJ^}J5PkAj^`#p^HG_XVM+%zbOcQ=$m?KBvm!R2_l3+HO3K_AXyDV?+dh#-27q*T4b z41Di%dF1P&S~H)DmV^i&Z4Nu}l2J<6vXMk6&z=-^E@)pH<_GRqnx__E?80s4w7MRM z0`GSrQuT4ud)3HuB~z7}pCx!}HrN3^ZQ zE$WvqonoKgR8L#iYE(D?8?5fpB2brmeZL2}#ZBn$t0wngpf@A2L_>Ogq-p7Xp)3|p zP0;z9%TBD-QK!?~mPZ_Tr3W&wc$;vM%(qA9U)IqLI`>3DNhOd?(ER51z~DV}lp&MB zSDVwTGNLbN57uf`OY2xut2uIGDT9)`8&22!x0`U^aVUJV6^ii_81!yuixZt94SXg%D0=B*>^EIiHmwFB6k z^~V;q^OE|*=D*Xy}zTWulW`?G7WWiz)XY zwB$eHO$-AaJyj&}HP3&9B1~-GX;-XGLJAUJAhPiZ@XGcqcbE#RWm}?k?Zv$ z8BBd+n4X(gJbU~LH{qCscwo!1l?Fo}wyBsyd+m*~6FF zC_{W~GIZnK0yPcOImIi^W$u9AYS^)p*E$dY3%*llV2iHze&icF<$Ha6R4e-WxkbCs z?{4we!y6~7hqdNN;qgK1p6sJ&ld={E1&A*Mi?PQDXe;ph)cY41!O>tRddH45i-uDm zDyqVDzI@03x030|-{&*)#B1*?yA*4NtWd1m^o-i=$ZMr!WFhpeVc5Lb$pQJ#2j@M@ z>3Ur~Qt+^4(@~8fXfBDae14F+$$-`i-9ZraIS~ftnQkecGw<-F#5Thsv#z5D{&PY4 zf(ctZuy9di_>73agJH2;0%5u)%}V_qvL(3Qh_2W%R-F689l`fb(c$tbRTZPQV3aTZ zEf-5nM#M#1>Cuz^Bi|s>8j%1~M$5Yc z=<708W^TD%2-P^`{|U;+M};AE=QT;xZZmK|RyQt%9e@^~XLFejD?%4&IA}Rb`(j@5 zsqa`76Rjx#%LKe6Zi$$%B)@rIz|yq_*D64#v+WTMkNy-eSrPHUkeX%K*dTv*nIRnn ze!<KoCGVoF-wUvBBeT{r zFGD00TP9;f9Y7eoTlLdMt`ho96zXYyuVy0aAG&+c5t~KpL8u^7 z?0_HQ>yguG0c_O@sd3l3C;~|~5ZD!Ua~5rc%IVu{TXISo&auT&dFMmb)->brj-Z#o zjp|30oXK_$gR11KJ7BKSaB$5Bjkw?Tf7bTH*ZL8LQw(MCT_fb`6sVPbR{Ip?Zt3NcP%IdL=HlOQX4f;U z=^XO+uoY91X7i&wFjV^ubhgAXNQTt`KWRDQu;1laq?)2sO}hh9Gsigevjl>1Je>3d z>`)SHCdQbRn|DlS%)V^?#_p-Jme$>vsQRj8l_0r*rteQde9;!R$`B!0ygT7SqItvlp~v z%9}B@Xk*|cwP5olqd0Z`(>Tk-I#CFhrtQM%?zi)_=wU)74iYwI$90RrEWvN-S+~b0 zQ|<%%#V!n!L?*M}CKX;RoW~_Qa$AS%=%y}@9=wUv&D?oYuaWxn?q|U;Txi?B{wjIl z47fWonD5L}m1V0?1Hx-CfBLxe_X;QG+Z^<5p}xkJwY7c@=!42Be=@OFQOPXJwtbVq zqgY`7!u&>tV>Te52^oFbFBigxa|TE0Ou=;e`%=f6oFDt+o_a*<(K+XJ?FV=LE?i88 zg~2t^uJWtR=Jh$D)8H~Amz?oBk*NO%})(kM5{Hq2w^qy?KL zmn$Qd&I{%bI1flv$Q&)nc+zpOph?^x?+#7y2!X)ov;1*J>eZ+E@})oj)HCl>9NKPY zo5%jLQ$(`e1D86*)#@&H8A|Og44)$3m_9q7G23OIIdmk;i}YMAmJGR_Zr}>Ys71yl zua3FjuR_+q@?w`M|DqxPj0Rr17>&*>G``Z!MeW6E3OTxlPY$dE_P|U84J4gE7@m(*JP2d|l3EzdF;J@ut&fyPzIwm7Oi)}(EyuXyhmlNQKi>PIvxexg|n_oCIvDVvGy(fJl-FMdp z2r5SR05aj<*-QMto{Ze89jzH9L#1%0Pjt78zD5~3mMdT=O!|DpU<#;HhsA|HNxY82 zEW)#0xWPe(fyma{WX2=bbQD+iui3N345(*Z zE)j~3eQH(?H{eZWq}TnkW~8mAWkX1~O1OHa1$rY_yZeuDLU2yK+bR>Pr z3LFJs@%$XQBo27;43{05G8vulRt>Mf#&$M(uf;5!Ia)F8H;X-qepJQ zRw+@5)5+ha5Of>|*Yq~ni9^5sMpc$X3SuG5^ug+IK|C#)XTcZb$?;HjAJJvItQu|* zzIAFXbFbv`8sBdJHd5p0Gj~*cWbyqWPiEu1?qk7$#0itSGpWT;*ed%) z|L@1w;6M0|m_IqcjMsX?_L5T z22pOZb31Gyhz$Rw!%#^1-Jc6D$n5c~it}w=WBI%WrD?U@j3sJQ1w%lk8|`<9ktXzZ z0+pZChk1sK%!>v42YWZ2)<0t~tl>+?**(cHtUW8oUmyJpn&DDPHK^c$?}M=#MmYD& zC4WBYTmOC5bS5{Y1dWDC-93!ee0N7LQVU&yZZbd=mqIn2Af3^h{9RohK>iISjRStN zv7L5G^u@&D4IX*{#6_*&0?o{Z_f(&5m<%6*y!eg3-87F+gI=O0Hduxzu9+4~>y0KA z)QzghCMmCdQqlW~$nswqz|c?SK^nKl_L5ld&t7W`$qQb05Geg;FO9SZ_HvO1DC$jC zPM_C{#CD)Bp_FW;M93_~Q-pXoS8IZ9poY<2d{p`7n2iW7Tx?GIY&hN$ghm|GdR5`_;c6p3JamB7k0M58FmrW z!hOa1440NNK}p6BV9Iiac!SsW&RkoW%W?VCsOko6 zB1ZbmZ%oO{Q3%s(Cf>;Db6}ixBYf=5$7e3K1>drS$!XdEg0=Ut3h1yb>C?1o55`((Cdc3k&mc1P-O=I!SEM-0*T=t@HJ>rD0ZF& zB%cpBQ7=fiYbvnRK$%w?_Dhg~e$>$9SN}=n6Hyv{+h;H`(uD@7rhx{)d`I zRnw21X2}A$$j*CC#($=@C`==&5RbzT*c-fii_sf3u3GD*QpK5trEO*zIH`-Ss@ZuDn4*+%tMASFi7a%G z^S#y@kq-`dyUVdZww^fzIwEFj6$dOja@%!nZvz09F98(r2Cgul)Cj&|phiRtcBQ1O z=1vB3VS_~jSrV@Xb{hwqq@C5PmxUt*NI$8b%eMqkKjD9g%ox;L%l<9i^8#A zzM;)fF?so*H0miGMxD@WJ$S5<^TME_8txqzav_7J=Yo>G&>F(?)uthbQ|J8P&h7xY z?7Rm!50SOmQZHM{V=&aFy(_&0m}~~NayfArl<0=-&bKvl|A{(>4Bx|gMk@zUkWC^Y z)Hlq%iEK35R8&Q7nJ?=nT`W5YELl8n9NVA6tf?wVqFw5p)ZCo25-)$+W+0yaIZ{g3 zPq+d@LJq>1kpNY(cOzdPmP%n@qN69uFPs6)eU5bzzgUc+7RqxgL~uWpw;-E~_K;ZK ziLsSGi_1EB>(`fXyO=wlt2*sB{#M-qi^?QXqT$cpCu0vfJqL|uGAy{xOly*m7Q8IK zY}}1LBxC5*v^gd9Gi_2OBTP8Euvstb`!u8Na?pQ&JY?CE$yiIj;vpiro%5NvZZ-nW zCdNE+?P5y;N+5(}MB?s?7&bsKrvO9b?SV3puXTVCh^1YE;UVRyg*7&n@Qtx06Y{W1 zWtYk7yD@Le`4;iXz#RE1$l5|)7mS?0La40ZAv~=Ai=`1s!ayC(2fECgK9uAX14i$~ zoG!0g2I#7SQVD=gfQ@!!`*Q_hiv)T`6ulJx{38XuhGn}zQ$exC3~s}G-Prab=^(Rm zlpJcdgXlGL_|J0+yD4kv>!Q@7VBb9=>o}8Xf@+SHPVWN?N@m+_`K9MbdRW+{A8U&? z`P*>T09o zKkuNWqMMz$f=03*9_ zsLn)(v^%0r`M)qXPml!Tc%P+2x)~>^kPVLI)t`rc7|2jx%#S!xUVka#IcC~o&efiS zeI^^e_!!Jf$Iv~Q!0>)z%UxF(|1D^3z01-#GfT2*+WpU~X|S8S;SI>-i3oP>$Tmne z#UJ#M71k(*janDk1GgHy}6@H)qJq?**YN!dx`Df1nhKhuWKXp0|rP>*Y>i% ze|?5?*XcOdamW7ENpq{tuTddEZM}8gw|mKa_a~-gorFRmVsv)lQ4y5zYWjJvw&|Z(2yNZv-U` zzLbd6E^(6X@?fQSgn8(@ytyx|Ltd?Cr@x*;8<7kD*@hBq{j0%s`>S9oZZ^YD&qDTr zwN~emQ7ND7?<9i7L8X*Ru*HJw?2(X;pT;OXQw+0A#3_j*Q4t5$q|i^+Z2O|$xdtNS z+_Z#CQj%PQ_V<#2Hj6ql>Ge>4&2hxnxtAfNuY1Eu2fDulJzJ*YQ&Kd#y1zT!RMt%i z=eW$qjWPy&wr1P?!(rgigL}CgQKxLc=Ivsk;%M5|LUl~RT#|15CbP&_9#y{9N~eKG zlHkY~?;?@f%*rX~F!0xh;*;q2uC3#q3?zg+^zVKg^RDYJz&L)^S4M3vUyf6i7&q(Y#@@}w?I!ceeT^6am*b8d3Vz;tOuRSLs?w6NRI zaqX|d62v;1$RLRx;Z^&dOfsY_KthJzeFebet7*BYPJ`O4a+cl@iWIJ^iFuhW@%aO@ zD^;^mDnZf)><%_WIAV?prm9Za59c0HE-*jOQh$A(b6m#1+Q+lSso!oZ-{7TuA^#$W znEAHr?I7~z_vGF2uSNg7lSBY?gxD`8BSr|&goCMKkbnMUp&_7B;H)CRCD1x7jW@M5 zT39BsEk?BSO`l5PH++7Oa}oF;c#E^R!ISyqIHIu*_z8u4Fn;CStVMkIbkV!y^%83b=?jRix!{eD-+^0ag z3vo2^;&ALGISEZBVkWThHl@4vVfRITNAk8ix|*<+wPliYv$lx3i@&y`&Lm0Yv8|uK zvhZ|rHVGRAO_3MN$B2N_TyPL#H+Ikwe)uvZMXv3%AP&0kU$50c@x48SArG;q4sIm) zXXC#A)BQ+cj$8HcFPatvrwjtYy>IU!3;{tS^6<`*1^ClP6R%MCgHTp1K(uR1JJ1Ol zq9lL7uwd+LOnNj3CkO`%gUnwuO>+pGt1a`fR7R{8x)3u5 ztxk=*I1FQ=Mv|#Y#%RKNstj4r#(asZ6vwb0 z{lB15tw5L%GHTGze19g;EM{&Dbp}dB z*6aRC1HnU4BdJS>an5`cC;W;32Mh*H)M0~U^J*~2K+BRU@M@eO5H_`F4H~}sG3dQm zAiF|1Ob`@9y{ak*9qzj{|%@GMH)wFxD62G{|44ROB)@00wH(9CBK&i zS`$Sz6)K=*`4`OG1w!WO83bxDCg2-{opZvDJJQZtJ%&CGf}ICK=Ck@wf)&ukx2Viz zlbg=}O$U=r2qIbliLZLLK~;jVxjR9q5Ku2*R|z@iJ1gLB`L+Q9HD7K|kLdQnQG-Ds zz7J8;P`^`EyDfvwsZ_`rj6fjF_e3zJ){*;`huK{D^pJ@q{teJoQz!Ifn>7T4q{kks zQT9Fs#6^>N9aT*@!kriyzq*DXRUkUnNl#IDPSa*Jm&<5W;d)@}2}RVolxqNW&SsIFw?h273=s|BvV zE2tZFc-&jvtc*+q!CYy89?#eB8EFmf(1*(zNeZ1Z|GEGF28@L~U71^%4IGnA{lT%8 zjVW64a`|qKN=t)VeVI-r&i4l$#7+V z|I%RK5Yu45tt%z?UCK0FUR+8fhxSWyE~wG|caR3=;c^pTKbB`hCtwmpU4LwHHd5;P zN7Z%cvpGNQH0qSu5Y6KERSVmaL?%;i8QVD%BF5@DMxE3e7;eS6_hwHNLBy!}V4}`q zoD+|!Te8IHq;2!0zD@H!bxWH0;%cgZ$tdlREJsaqZ!Eq!2WxF72kS>rwGk2&7lcD& z84d-)eGCDppvcg*n$A56g;w4l?i%raHkvZXw$lFP6stUJFDJqOuJZqm0RMLZWJwqxTdY2*WQP=&m2VmOx(urZN=;3m{qKbL zrS!i4|9~e02S6h#fc#nGVU;9q*ouB#Pbv+XrAiliSqX8Waoz}G!3h-=UKR_cru@2u zy;2|iE8fQ`r10xTNP$yGNhMx>$_}8JnLK=VZ7H;kpP9DiydlXZrz3}jMMQ!qaHepm z2x5>Q#P`Z8NeI!^|13K4kebR=V^@fuxt_|jjFdMo+9iqiQoB}A;u4altIfRVVXON5DX-*!%uFTq>l^lhBO>KX!pu}V^;@+rE|P*HlY&QCztn=$FLmIT z+?iAnF6lV5V#HtmVo2Fo@~K8xlo-9!AbACR8W4yQ+N{^iDnFS9iqmppa9V+Ykkbh1 zk2nT?M6gtHgnTjx=~qAZIG~|E0R=UR;z7ojFkbU~-QHWL%!4+vY4>E&k*@gGJuV(b z*X4+}Y`e)Tcb>HD)-cri2+&U*7b#r$CX?~AKZ#=eppXK`Nx%j?khqK(0AR1Sup2_i z3=_SFvS2})L;OuCeH_Wwcb3^>4|;5 zE+X`0p{*1%xefJtkLGDhJVev5qP26)=#+ph^n z^FKciU*2I@|9Rsw6p@a$7~PGX-G2O}y+EG)<(~BclE%fU{vkTrb-}_fw|%p3SdZSk zL5L>5uku~?pi!3Rhi~>A+t;khRM!D~E*)NXs}@OPHY^Iw#TJL<>$iqT!-SQ9kgZqF zcb&IyVdFVpKd$fmQefUEGM1z*BVJctUUq#>kv7R+;|~3a#57p%3aE&`qkIXMSU@o0 zdU_25B^!AJ>_G*VQj#*h|6bl9tG;^W2feySS4Nb#lC!|favxu=W#nLPX|FB|6JIV; z$V@kz`RyX--Wo^#edImIu79ws-YDGk2IlL#HaEd9J97M?6gnty7v6Kcx_0#mBRpj| zf4|3z@BcIvQRlBaRtJl4w60T>rrLWlYkJ zCGEA#6XKt<18U^7zZaE~!5!2#J`Prk9&5||e4C#@XT2Jj>1e7^p$Ij$_w-2cu?+j( zmeDoL_EfiC!1ANRa7XE+tw;`H6Z>>qH}=t8&qXlb$BLZgPgy1YqlhJsY<0x+VBjOy zZlox}uIUkse!gUA{h|Mi)f}ziYI&}e^wSO-*36GDg?fGajucc9y=(0E_T zzjR;hXkB|AHqZCl!Lo-X^+^>~5{qzUGObJYjN_(@JO5m^VYau?faXW{X0nfawsTsN zBc0Y~Om6QQkekM>BhAhAUyfM*t!a(reENc{Kar3kP#Uaeeo4w8{cu>BkPvI5>S!~8 zk&`T!uYcUit4zah_Z6LJld@l&m-EmUrc42Mcd}7>ib@ggDW^4xkBZEJdxm@j+9_jQ zqJ1c9xDEX)>!p6N{t^4pWt@qivYW))SK?n2nUsGno#B)GGX3Q*$$e^YB6-vK{66&> z>0NyUiynBXGJ48sS8CF?m23AL_9D^#c1?{@prTkUER8chOZ09`wX$lcW>$YfU+}%% zN#LDPz}MnOUi;VQ&)V1a6&%1cm8hrgZetB0uI#U~*W73`XMrg~@$9(qh(0Hg`rflZ zePiRJ`@TvOxj~zmB|_ngQS2$t^JP;vq|H0|f5*by5Q@U0<8OGlP&SB>T3_KAJv z?B-tSb(Ee-)ufykxeBca?k%eaF*5g!L2GW@C%ZqNs_)hpk1r7*SySlf|T_cYjcT^u7UkJ?9E>nl2LyBUVACibpvTfR=|Ho z*14W$`qdx5)wj094z{zYcjR)?TuT^LzA1O<;0SUcbISS>a08`~a(eM=$xGlhNu;xz zj}J{vfvkFUgO7ryec;2%i+ow~h7pli846nz*$}GF=T`i}M?OWCr@weS6vz2X7n5S! z8Tb>JZN^l`?)h_V0-B5C4Q3=WQ|u>tF>uJ)8pdY5_k?7EZr#{Z~+ z;itI!%jmB+ldzx4W4`Vm#;|28W-q3~zexY#)g_fPR9T-0Xd9e!KV+GYZ*SU`>gby< zUEEyDq>AsPEemf_j+4PgI>e3ztFTm+eS5;qhi3Jeq#S>)WBUsuCoyk=cm@G{WW-QaPWd~1IzFE+ zt3eUZC?6r$NUPQ+nxRL(wmS*zA2ewgy6^wm3oD6C!0HRTZm;et3_kYqoD`+2<`kDj z@DyUnK#&Y7-v2XfjO;cXlzfwBRqEqv$;6cJ2+yCTNkTp?c)q$#J9bOZxTKepZ|4{m6I`vphD~v!QfcE^>G3zT~J{NLI zo?W0eu>Gq;u1lN=`&`sPqw9+=4pLRGVm$et;3+9Ey>OC7Hs2^s4KXj}xIEIOZ~!et z=YN>pRIT~7c1ZG;K~e-~CR{-7ky;N9?|sV&p-q|%Zx18R=dhRudL#>`#xy>WV`E`z zPZ_>Cf;E;7yTE%`^S*dX5{JBpq@K#XDl;;1u^&QcSQ9v4zXQsD4OS`JwE zYm0Y`w+Fe13jT5cLtg7T9+*)dye#%i#l@L&Z+R14Zk%_K+w_9$1@k&(A1U3t4hKt2 zoK~D1ZQl~z%tGIKtDAn3nEZPYN5tjt>#DvC34;mh{z%|6U*=XHH0zn?>=pW6u^P>}tMR3W_%9nYPQ9%1BLaPG*lkpmY}$cCX~S67l8(UDp8H&}08+x$A1u;4ZFi2g7>r_VI@ zQuH}{VRT;08xON~ulpT^X$HR~(Halq6(qB$W2Pi(Fh+f0)lr5zTY{Kk`DVh(wfC;w7J zR2_$#`T&ypM@Yz)UV^)ONhMoEH<^{XCsev5iq4{|2f{<%+p7v=6STnnRh8c~n-|Ga zIP*-nJz-LU^BY!I0|;klgqGX?daRR$dH-mi`E!9<;;jc$B++cN?MlI-3PRgxAuLh; zs&(s62sW|~mgUX{q?33bQh=0h%l92sfN6v82m1A|}6uh?GM=**aw;80I{}O|oCQGj4AH=kD z@1Mttwn{enG|A=UxubErdWmXlmz;lJjry)`mjrkPw4CGs3CE|#ibH&)?XTU%F-$(I zKWE=6Ke@11;-1%tJ)WL5pe@&YP;&0d*!L1OW~}!)3wX8Y@9JyLQ8Ciq=UoP$uf6^Q*5R z=MqYPTKHF<8Io2+uG98w%8AzPy@|j3fB%)%exD)z{6Wb0oulC+$!KDR zsMBs9d$CbWBRI8`51GwAJ04KA%O+eA^kq~mLNa*QRDAU(!&N`uX`9vBRhw4v3%bB% ziH>Y>hMH6|2Ol=M2hXLf=%WLi4#J#AXJB3-CLVr^SDl$|e!l*Z9gjAvy_(l>EuXh( zZ!ui37kg36&&3vv`{=s05bOd{cOGtKd|09^8<-!l!ho=A!IXIIrfjuv*2j?vkt{8 zXCkfk>kpsLwi=L6-K@4e3#S!6HjPxvH;ps7T=(7G&GURC_VcW7Inv|L3M6X5#4Jss zl?`4#o^UbevG$@5)az?$(jIFJig{Nnz(7m3ee(MXM-V8F&JbkmRx#^msAN-$CvC}V zkay-h>z3VoKEKzecy*XJMotkfkKKEdAH~e7kzw=E$mbPuY$WvH@+XR5O<)7(y@vIv z%7$IqtJu#?iz;hhdO|aqE<|bu^~tG9`qa6F6m^R4v~>S0yC71)gOey1YdRISc?*eb zUX~v^tgrR$bnY`v6&92coM3uACW4d#oIb3KD_#8AaK9C>?vpXG^m3pU+CUg?Lj;>K z)}CA{7tI%>ZX4}5ElrFf)r<+VmauYb}99ME8LG7M6VU2_fS*r6PD)& zkvd#4l6{^J>>6W&#&goLroA(pcMyNyC%>IH@$V>YgJL!Wx$Al){9|}up=HTE3E5k4 z{#sUC>{_~yq+QS370INB8{2Yaa&%cilqKH*G#`42DmDSlUM!iP8d$=Nlbrr#b6XEo{EnhJ|oM*v2`OP7G4gV

      wd+2$gnJA#Hoky(f912Lb(sGC8G{-hxJQM3K+3B8m zBnd52{5CiR#U4Sh?~IZL7>I70oDtD@rT)2*x-Cxq-gFoBDRHGhio^ryJw#yf(BPvxpb2_G~`9^ zhdmoVeMX(f`b7*5^Cne4FMNbYPE8rgsh&zrC9EyB8DDwL9c0&^AU-d>9T1CHfB zIU;23S)J(aB6MI|LuQFFhg$y#tW+%2%>Or=l^71>n0j}Ae;_Ku6p#O<&R=4AB`Xu0 zAB((E@DTVi$@OUR7q=sAv>^D#>v@vYZBlbs@FA}i4G$%_m;5WEj za$-KvAaDL!1`_!Vmk-BND4&8%kVc5xWQ-OR`*)d}E|k2YVB-^x9~}iiDD0%4bj4Fm~+jCM=x6S>g>zZZmMgv4ktfuNcHu1e)yOwItLMWaTqg zpt`a|jzx}zZN1Mnt~0}@BSeVD6c%R3S7lV-ba!#w3jP%1Fr-CcW=kH?8|rzZXk`@i z*K^BHXE;%0Lksk`ZP0+PD%x6zJs8PE9Dv7z0>Kr6&#@b(g!XyTSkR#_b8Qw1H(gQDvOqP@ zKPVmd-{oN$j>Vl@=O{ca?nZ2>gO=ZAp_LVtW+&pFkIo3KqGJV83CF(e78?;8 zec#2UQxu^D*Mc{W(&$ZUr4xx#swnBgl<-Q4)O8pd^tu&mdf@m-WnA@H6@G{qH3tXL zlc%~kzMs0rgX#n=i3cPA*2wOR1}u$-G|lr?7jovDb7ji+<-JD6>NsjXq{*rRzU=EdXWqh zN`9^~sxyO!Ph}vcbWC^u;BMc?k9?YlA7QJ!)EJkQ0+v#2TfMqp5Qw&;vm~@swg$UO zR)}%b@<_|z8|2_@BPvLYCCA}oTrMp{NvP+Jw!wxeQYv%;-xLx}rP5Ur zy&pRKyAdo3PcoBsB3C45mK}em_Jr3Ff8d-6%}n1!4llLOiL0DUPY|Nk)M9ADnWCd~ zuL<*nmc>^yXN5k)5z>Y0;^PxRaC*b^s1tiUldZ`>@4hfaR=(K!r@L+Vm0Mm>Ci z?Y<5Ye^j>5w{nc-&oQGMql!=zhTu{TMpzNXvYQF$;3FsD`s%@5*ta|}w77UFKcOLD z#e)Yd(EQiN14KSOcS|jCHb*tpy=1X{r5Lvln_;jmXeN&0Sufzi_Zc1m=4kD zh6{r!X_S=ICn5M65Qv`M6nF~6ah&hUw%z-1)`ywxSzFTi7s5By#YditB~xOG3XE)j z85&d{AV;*3!(>0}v(+EVvIJ@v5U+kX>$oye1{wDt724N|3I!wSA{&o5K}KmjpuEdQ z5wI?7EZ8_#qS?|^KR?Ww$bj%r|KSO9FTY7*4*VA*2u{shlJ;oqCFh{bq*XP(^|(bK zN1u&cx$Z$GUEegu}xu)imSZ#IF6P7HUlpo4535^%#Yw26IP0iGL06Ex1 zDh0E5aVIpuE-9YckFJ`)vaM{uP?Y*p4A%)hZlD(ZqnXKE+o5bu<5(%$1mQ`g!?c(5 zmf4fo?3PfR2l&IC7`mp1@=$HNnhXbFD-^$ryNIJP1?CG~t;@>?ANOtD;q@BqseRO+ zTpR?gT#EzO*+c6i1+{(;vpnJXw%HerY$Zi^%+>`SFxh4bcoA|4o0rBqr5ktk3x_&9 z(H6kLaa9)}Wv>j7JpVNObtaz^!gTKdMUE-jPxr!VH)?C$;p6|d8lr>5{-|~EUF!S| zGIbzbtu={qcN;wF-8o-&YjoQo^#@gd(!TJj5Hdf*RQn6d#AOO=V?3GH5b^C)vHVA~glVedHGSX}_5mNj_pPvRByRf-@j64el>OpBLR3|%vL7086 za@EI#FJ7Ep;r2Agc(65ok1-GT3%+8Un<_MX?6T~oXhQXE3vL10y6h_8M=HY!RlxjX zb#{s@VN%1~MOEn2XwSgt5LVso12bJf z0N$1uB&$z}4TntV#SLB{sa)OtXb^JlryW{tgzPUXZBvQhmRw*Fa7ySBDcs0t=s7K- zKs(eMUGp_f8Mg;Nuqz*yj6Y> zr9q``t3)bIcAD{xM(Aomoo3;gN3_mG95hvli)gT);5y09rbP((#i4iMrL9MxD>uml zeQFMYJdavL1W}T{v3?7;dhF?OmGP}u(Y{U*A?=o=+VY5T#Dn!V}V zE0knZ*7ne3s`eC5@MPOU^vM*?e1;c!Y;pUoDN0!Vp0eHuxY>3 z@;x2)%fOhwTRhn}P}ev3@1|rO_dLV=oOqwu5nbeeVgM}t%^C;+U+6-nXr4YYFfdRy zFrYD@d1_$5@mya-W#+#R%*{=4J9a2=(-f`1lSaam&fPhw&k1uD2nsw|fT@RM;WnuR z(u71hlTv$r`LF=X=LC#pDTP}qdbS*XO99osq%qW3hpLcBaFZ>WIC7{pT# zKit3uGgVfYT{5Bg#pA^gp%YXBUwyU{dqSbHjGu;VseSU)dES+&uDDls_0_0$epmYx zfh72gVKTxmxUyA%U(ct&a zsA%k;%}myCrn)nr20cE$w(8gs?d&Boke2Tg-|$t(heV49oPVCa=&K_nj(S4y$i>_> z;Y^AiXHd~8Ao$`FTK8qP7&CH9kC+xu`2Cn_TN!A>mGFER$_{&)a^5ryBR{I+ z)bxqIWc>cdH^6&)yv{M7o{^V5IhGq76{Sud2r_=Gy<&+V!b2Z4V{rN}Jt0|Ny=xav zXy=;Unv0iTX5ASbBqbhJgr_iy#<8@pe@+k|pZgUp@v>ldKmxjB)!5VZz=h%PPrPA4=2-vygSc>~z{!Tz z-W65FA0WPS(uV_}V-Mw#6G>fp!QS5Wy6#_rcby%#6GABNB2-Z##r9?uLlAN`oYQ6g5{#HuU5YADkh`mp+WX=Srj=AsSr(x_Fsc06#{`H&~ZKk!wX z%*yU~`>&tR8ubea3sgqP>~eDQvS9h)qOu7I3{`JPN3%zTGc5^LcAHK29(sENOM@*- zdjf9NOzzf}*`n~pZ(3qaNHe}~OEc`SjfXO$rTpTJv`w;$i#fY9!&OywYjy`RP0cyk zqGHmvV>l=tAkFKezPoolYD8C8iWn{aN{8kwzpip-SMz_-E%r{mFw z5;v>XFWB3j*=OgOOxbIlUOEO?!$kb7l^;FTf2u(`2EHJ3d9qYiRW<#T8ZoEqB3EWs z2}YG_9JzoRN#D)oG*@*W+2`pPx`_DX$Q8{s1IT6o;MnsatvLhx3L8UvGC^G;c|4vR zO?&t-5r7;Be^TTG4|_7~I|cLSo)zV)$~Mf0ww1$&sxBt;`o8$|?OSJg%Tr6zXWOi@ zOivq~Fx8IYvsIIBp@&MucqLS5%C?$-B>{&lspgiWWeEwXT`vnssX6}ks}_u}QRB-G zOmFvI$bQ+VDky`N{@O$z`=6gxTlvlPwJbHbm@Ly`zD*+MLlY9{Jfv1_I614L&`R(b zu=!)-N-M!^ce70|`?@#Th3jC6*V$z|Mf@y{Yz0_Bzfa?_M8e|08f0I>peRKjJv_Wv zSOT6$X3Do{qHwr}__O1PUjAgu{p0S{$~wr_W1uX!tqxyKns^#rM+0>fKi}|&W0Xdp z(B`HIUp|twcT}>K0_R9WuYE)UBuyUfRBFw~f-1rE&I@_iw?TfUY8SV#W(IswbMJL> zUx?ETu2|Jv?Uhbv$nSb%rOo#a6TxC^Xz5wNqqJhp^R3IufxCyXFk)E5#7Z#CWW$-6 zsfeI4Z&fk&_UR!X{zH21G^>4qm*1UZhSEP6m98T7&h3AVMn|=URd6_G>m!x=M0UyUSGE&wBIKjx zf!CSqy;-K_0SPm=$+g@J{o)rc<_FmiZzPdtAFpFd0@k`8%EyohUMa#M_-zT%U zr9Y~wECRvYz9S|-K60sfp4|Q23num23MMiqIVGNVp8VZRDjK`FvLx5s(L}w4y8xJz zD9SC$Z&3TF3v3fLfXw0(pbvM>nT3xr5IR>z@%}%ylPi7rOxEb4ga)M+bu@PgpBs|D zelnNRtVxv;LMb+*O7j%rfsYH~s^My6qe?OtK1-WaJbdr0~+!Ttn2 zGqs9`%kFc$;)$)Gz21CZbnKC@UtY6M45Q-1Xx%4Ecw#&oA?o@CoMD?dayrZf>U)`3 z7PuM%pd|T`#A^9AZv_M5-FFdOjqAvm_E4%Z( zW5A7Mbd$*R;wIj^lR{j+BS-2C0lv{xkIB_-b>a~-`w97m!FLB)LE~q$ zzB;9P)MPCF7Y91cR*Mp3*ayh>l%pf-wS@vkptdE~(wf;|?Jzi{XGXHC4EP6L7!26n z$c7kjgMG`ywUpX@%{S^wb}_GTYkhT)ROY+mVj(LjnDIHmZHRPMwy7b;k^P3djOw?B zLx|#OYS!1!qfh>IhRU|LGBb*h@v?Nzw{YF=^7RY+ifJ3-PQe1sxlmepbp4`%Q5C9w z#2ipk3XW7;e&GsI%D+Ha)acz$yx$5)`r&uaNAW`(nQ})MzUUfnGodhjBmOm|8ya}= z-Ylk(JhEx}(fwYWXDP|-^-}PQAsn)E0lX8E0?Jz`QsL||R+bEBK8)I>Y^w&2z^1=% ze~Tw0MU7j2{xr*jGhYk&XU%D^c=ON0gOH|KSC?JgpB8GY=YhxkwS-oLK~xzec^OpM zR6_8|B1Y`c&?+hrr(QuSCA8ae51!tP6-pZI3`HFIUz<`OswcjfyuNwXpT z=WnK7UeZamY>#`lk9)f<{|@nZ_HvG>)X9ib50#4*qZT<#*x!YuV4FPs%jN)N_+6>V zMKT{!)L4d14*bmhzU?1lQ#yG_>ZU(B#-M>0v5JRM55q}1`%?NKK~rmVK6;{f1cSz*tpEv5;bt$n#60!O@A7(?ZK6;aHxAKo8`Of;2zhT6IJfk_useZWX zDvzcg6%GZwI}*$NHW!8Qz-ljlSeD};ZI~FmoE^rwL*Q;S8QJL-J$mQDBK_&GW+|~l zMU~LBYuzYtG1Z554*|4yAM0lCOq&Jj7aPfKnGDlG@hV1HTUF%P6FE64lVPQX-3ewX@c^p{_l#AZ z7K;?Nfi>T`O{~fA5qO4KLwLmaB12mzoa>{{2;ZlHHy)2BcX{F&l98wL5_#g{SfG8o zsYQi)DMcW2Mv>}n7!mhZ>5hEFem$SU3xvZ9lDUP(x z!&4Vpas5W7Ax*6g9usF?9D_-vkx`bEt8&JVF>-&SDOZJ4X}O^opkg~tIaB#o3-t$1 zEyZ{`qAy`ZRdJR*da9&HZ?*HC9@o`)S{jn$L}j)dz^iarH)0=sGFS|d2c ztV^@4)ikS(;%xA+KEi6XbVlIQTGWL@BGe5^siDucosE+T#2F#kLMBtvgGw53E%BE4 zKJ|m{=k!zdex%ezE_m^-M(R2E!xWxMD#7*Yp%s^sP^v5?Cn|(Y^=Oe7+cxoi8QFI( zL?Y3h=a~rF%d^5k0EL{?lj*;xH)?N5>f7UolijY%9hJj;qQAl3^O2syk|T(%ZiM!8 zB6`_9UkmN*zG9Y?$`ML~>auHo@f;M^%QlS&Z(>k!Qe~cCjKd`$mH?S&L+1YazftS3XJ6|#u%!4<1_IZ+f=Xtp)Z zD+Zme9MT9<+-$2HJwtn1wpiYr{JqVo$4wNGq1SZ3s ztQXOk8lghi^8G2*l&%m}ee&ct9UToK6-`_wMy9ha1>D|=0O+v=+!3HOuZ zKmMKXzazW**r6qcXuJYze6+fwF>GTq zELx!o+GQG1#M|9ySwzfJJYk>x`-!mLxPu08JOUTn?{910yz)59ABtnGHbwQyC^ZC? zQD{!KC3hK=0ULpx!f{AUna#W;F>&6h>5~suMRMaj;Sh%i1=ocLv+yW#4gRn&C(lmJ zltSZj2sx13oxdvceyh$9BbpqRtxm5OgThO<24VAt+7aWY%BsNroEArglJl^u^is}Y z3H7Q{Kr?VWlIOn;{%d?ZwZKL#uLbTm-NhTy+SbAsX;k3vjjFLFRf&{|L&t6M|fHr-el ztd3BogrwoYBd|#$ilxSxcNT{tA|qpMX>nrvM^NIVdde!ZlzhWGfckM#S(#YR#9}2} zA9jP;g9r+iOfo=@nA64Uit4>vB=Z()ye>Q)OeMeIK&`XO0Yj7TAD_Y@)G$VFyfUst!lWUU*0pyQ?Z2*r>e7F8J|C8UF)Xh? zY2i94X2K7wOw0BvjQwsx*4>aJ+e6SgXn95ae<_4!~% zCy+5ak|js~$;{&HHL~UP2)}~UJ?~s|25Rsx$&O`xP)$njQV{0Irj56kXXR~@EbCoVf1 z=12Q(KL5g;)2Ko!fyhBH9i5Z{dpwND8m_3zlHk!bXzy%kH3Xj9ZP|Ej`;}zJw$adn zFC%M&eNN;WX)?V2K)BZC!Fc_T9 zflUkn$6O;~puoM5&l^yZvU{%`aPi+Wh*Q)HkvbKnFyM{7y@vE*>prGxzc`Typ24eM zNkpWnACX#0r6H@UuRHMJ=3VE!>^J}UUBSRrQvo{Qi~%5JGqd1XU*LVm$lG6*YZt2; zEKQvBR>?yVT|+{Hwxc;hqoU3yb-HybzVoa58=q?-dZkL5DXQ2{ewJ#YX$*ArG?19N zzrAnh)>iC)d(Dhi52pimc4s$Qj!uBuAacyHdCwcvHLkAj9qAR-hI zIx)J$I1sQ3Wrdc~REdv@)V!HYIg;6Hayz^ndpbOEV>`Uf-$do{V<1y&Fw+XgnY&ao z1A^w}(c{r81txgmDf6Z>{@=XdH*yBLO6sLb>Vu0h)#duq~NQ6psIx_c|8W7&Uw zMg+aqBJ_(8sxa;xB6ymf#=N;h+UEVc&pMy4Fcr{95)2xog2zEji3h0r zV@(9t4-MJBd+!`2c>|a1fj*@2sFcEB@YIr=RDJMW#h*2MzvC8}V~`FKfx@8#MdCyP zc7h0ZOo+|zcvifwfNUxv|AYeRbVexQL=q_?pkauZM0gH7E%<8P@$X;db4ols!bt=a z#tl*dBO*aDFlpb)!5bB2%k4O0qXs)$V%NRkzZUzTz@2NUl^3nnF&z&}@kYdbxgo^5Rc8Q%e`Zu{(I`q}fdFEV@s zlO!Ls8GK9Mo%k0Jz|A)_APV+W{ZtKjMa;rN-ShqJl^ae!pY3u&LKZG#Bcy|_V|+MH<-#)4I)UT9uK7Ge|nfEqFt)=A%%rS zE$)MH8mSO~G1*$UoLbpdX`Hr0EekP!4%@`{*Mc!{K*T_E$r&(sM8s&CP@&4>%8SnX zYUhht1IYg_K(i~jflVmI*2sbc<2KBS+Q|Ip7#$^I97>!p#R8}f0G$O1GijX{hxaWL zbBDnvcwj^*3ZIxNG!k5ZVuwh3O?2HSe%=*dc$Z*rrwNC1P*L#^>8Y!0@Y+As@cM0! zDVy9|t{;jb&?4m|P$r7#>g8k*S}JEV3rKu?o9M%QRZI%lEvX=~o)oZLt0;ShD0-{R zsJFMiop-@QlX5&?(^ zv@#S&%kLI&HguxhJQP?)ZAK?29CR*q+aWDo`>^i)3t+(h(=dUD z=*_@t^bWG;>XZ4-$duX5)_uuBrloB!E>T$WQ1YOyh*gfTbzg0rxwO>8z{Flzd^P~= zQ5tFRp$Op7q~hW6LQB4L!HnLujJLc00~)GWNJPXCJe68Rqp?WC^p|%ZX4d`1xIIFH zL%jsfp$W*SRI5@)#Z5kM>ioq1c#hAg5!u*SZ^ZWyKgD{u+vTNh9If1&iK+65rWf88 z@4ZFTflCt(C_yqXVxy_9Xdvy^;<~)o>VDnZ(Mou7x_T*9tV%?YE_{ergVUcoWV`ck zLivA&TL4p3R0LdLAtELwY(UOoAH&yl{oAB34nNY)vYuA6ryej<%X%YZa{^6*v>B5N zbNlY&vDN8BNlD4K%q-;O(b@+C#^phqk0}OB$^Xfl4QNaI9CS~|P6N1=Kk%K9c~4$# zPi;ERqz~28*vLmqgX*?(p(UYh&O|Rce!9jmvq=QMn5Y1h3KSX|h5(##42T`(9P_~V z!S0*<;5RYX?TL~H)5vn=a*giE)*!;&yU$bI!YHkI9Oqdgj_X61l4F9p-hq=3>m;NggB-8EX z%z&wDM^lFvcCX5mv!z1!GA5o=Ufy4h@2*RtK(Js-05OSziztcliE*GY%87n=dy9)} z_5T!f|Kl8m09eAn`Q-Vly|yR&7fqOR8-qDx+eTx)aJX$IV#qc=vcjaV#%QKF&PUYe z4(Xf6rXX-Iz#=KR?DzIxQ-H?W~-7I3>S5H$-%dMPk-%$v8crXx!bnHq>yIRf67&FY)nf6Z2-U+810sD zQlZ703yg=_od?t33jIOe^XS#<5pqEfpB1B zV-rJB(BOn5^Wyofizd62lvJP#nHshX9GQs0!693_Obdig-WgyG>F@$-d|D!GHzAN1B;M8WkgukOmINO)1UMZ-!{#_z(vMOiyK5gW-vmPsp^^MjqN^C4Zix81`U@u+`JulIZ3g6eB`8C*C56l{>M%o%1Kg5r80n}Q} zIH18j@ZcJA{K|=S3j~cM#=$2!iv)uKVexH2QKEbK0pfeFrQ|L|MX0E#Vu_T1QPZj< zg72nRCTd8o`M>vWw72ag1@Mk2ETa1KAO+Eh&eTz3<_J^jRc*>~4t>uGCEqA(aQ0-?*RA2G~n zZyU*&GIV0H%T8i4+!yzdz1xy64*2z-;@R8f$9ZJ#-pjJeveJe3oU&4Gvf}obQ($kt zritX&sc^SlBEEW_>;ekW&xvD@ri- zbilD_q}pkXrk&*Ot?Lq`;Bo5|BA_50po;*o=oA5n;5*mBD4uwGeq4nv0F;jh0w^Mn zj)AUzsdfho#yrWts(A1GPfiBFf;gy92wnD6guN|tBT*i5`=ak&UOLDAe-t~_c1TEs z{y&<%EI(PWa1zqLZ0~*(69ZCVr^LpIK*Z>P0m>8e;8~I|W=2Jc`5VC1p#LL6#2|Kd zP{j4y53k?ey*(Ed*bYx5Cnv`(*O=V@YY~4iU9z$LX}5%1N@_msS?Aa_!P^u{5Hj?p z8z(eO5fQB&4OsB1f^5!L*@2uKuJyK}42Z6JiB6>+z`(1jIJEYCng`4RFcW40{qnqM zeLbL$`e;p5q$)l;`e7Up{{&|JIe9l8kR$aISSThYrU7E8A~X-gfJP zAMg`;fX~p>1*ir*C!-3PGc$v!dY7NKnQaTWHBM?+sO^v_X|`1}%Ye50m-9NfQ=y2{ z7{D9QfKjKY7ZhdS^YT_2(2OSyP*hUl$s__0yYK1ALe8cA*5Bt~Rc7DOyU+9I+TGt6 zm=ZB1Hjxq$A`}XRqChc#oc8DQKTBM7{^`HJ0d{Eh2*o2wKwb6pYNYg}eCCH&f+8Nm zGaf?9?QH;)Q!bp`*!LP>4u)_&D~s^)l_M**OGzCZ6j4)3ZWN(?0<&!-%~Vq}UT7S( z?hpAhAMSp={$_ohzF&x5jWW#2iU1d&3|5vMv&W`sYtxi7Zk)sR_O=`v@Q5%Npvk(t zh^HAmNb&t$sUb(ZYcs(o-+y=Td}rbLp8xRs?{eT>K9|Pyj&#z)oj2=7^Y8qAtmn7n zcgjlu|9F=bJuNL|XqRPoWH=ol_myI&1Ph%%J2^QbRse_z35hTO^sH4oe{5krYwuXN z`1R>)a|)8f;;z>eBwehyU9V*c!@D=mw!4v`J&l6{-Qz(?{VDz4qP)7?>7@Xjf~V@j zzft1Z?`1A`FextB+iT^B*oyqWGqlk^SaCC*-wr?~b>KM&Y?o_yMo9Ze9!RqQ{*FcR z_+FozZT$M!^>}yfB8OAINR>wes+pXspC(ESf~{P=^&UDptX4f)w-=5lK+=-(5m0s2 z*VB{I_w>{5l6owiuZNgsU1dIbz>zw{z!#a4YD}O6yn4WqskT$&F6?&avHw@PvtfUn z9U6hqNe7nRxnUs)fMsasuXr!U>>t{DOK{pF^ixap($NTn{&0p!6FhrW`|m`{BiBY_ zhW{KP19q})ruv`=DKav3P-Mul)<&hTb>h|9`DlnJpeHIo7z4yI+#q(S*Q!)^_s*Yf zH8*ksD-XEoT60(#Lw{YQkwNQ zmv0u5ELgrN;ju#iZVLk3HzJ1FU)!&JwSC4-?Pqfh5}+(JDYiBEsKLetI~OA{hOh)O zGV=US-^m_G07|IMr3^&J1In*N=ezCqt8~*j>-81>1Y@<1u+1it-?SY8b6ojFt zUr4%uA3%?~H(#H!N|?(s9lw#gN$5b#k(qT5Xul<-F6{p9BW)`*6eZi{@3sE+T5K=P zF?cWrMG4UN2n0;gg*!u(XnI-3?(%E{c@}Wf)|OTwoq#>VqV7wfbHSxMBlr0E>RsKXqYT^N4w$e9S zKKsCKs<-}rhWuZ@21?X@E=`~axo5~B%?bAD8l=~X0zgKnmp>tz%~4*S94Y^BV|#o1 zSG{+V|9{Qb)nowi6fkwwbM@lIi?(eN0-+#})5kkO3jfE^RRFcsY+>99PH}=up}0$N zD=sZwtT+^R2m}i*h2j*K;80wOySo;5*CK8Icl#zYxsgfc=H~4APE-`4I9_0XC&kjGRK0nt^&tjuhU z0VU10qp%(y=@JHDO7kD_*UXoalA#ALDl>Zua}7N5bzXY^3+6AOQPamDQP-a7-BRj} z^&sInNNBtyyH(C#Ng?s4+kIcf#2YTw8}!sY@!StzMh+)&%m)89|ERd+W4x1-19%j0 z1z~`;V8sB(GwV*FqrTiH7`^0wc zVPY&<-%|ZLudSu})tgsb{%Kquroyw9LY5FOYcnfuV65<3b&n)=_wnKM@lH?A3g&c8 zx@Z5w$Ct)J#QJ2l z+g^HbQmjRkS`_jRIwR51)mf<5m)*@LLF)FNfjYkfQ~_3@$@=d`Cyk#6=$rXmpnni- zm7&lZK-r#d*J)7?z_&xET8Gj}Ul+NpvV7*?17L^O%#2L+3+5MQ)$t4iqbZixxt8h{ z{F*KoIl{-Y9>+lbaRElB@G~oT*8k8{=>Q@auT}sseH1X15J(V6!~`e=`1x-|hEhLE z+>G}j(*fTEDB_R^z-GwcW1dRf+kWJ~G^~1e%UhHzBmXbqCjaAv%3zq`$jo9VwW`?t zCY9z z;Y%maNW3rPQv7yGAalZ+qmRehx?!A8!S`@7A`>k}L$Y-WO53%u(bF@84p5Qfxp2NvhIgRcS!VQTdwGRIh43{j-G4%#w+6E8mpZE*W57a4-dT zlaV5$A*1nxLSCbhVy|yHe$=*B$AAR~Ly?dOAcz1iq2Np7Q?demAYi)}?KI+C=;7Nz z?54=w9Spsu$h}t`G{`+$+&V{--A@CK*x0X1yf{gT^~g;B{|g{r-%T3$ z0-MUIt9foazPQ%$D$}th10brx^zXwq_S(vnPL+e5lLN||OnRD{+Ie~Tn!uqT8qT_& zS2dO<#50vOS#)xd?K&6LGre^z3JgaO=$k$)V!LT;)AI5huLwY2GW>?-2)zH~V4iT_VvP|(!>QuWpV z(5)6gEDdBDWJH)}j!S;wn*!44$d8KaqdPf2QER}eBge@AtT4d58);L&5P>uq`u&z5 z`F<&AO-2U9eg-od8X6gydAfPJ8PJyWhpOhJabS4)q&#pzsSk4H=FtrxR zbqG>2l5^+dRY_%x2C(9vSWYX@QXC+1k-E*z&A7?* zxj!FbqY17yd5v-XK{6YrsW;9fQMw>ynYirFd(Ir(G(3zgHoEIB`R%y`T zS_4v*;re>cPZo=HpUR9(6fPB~stft@0oM=tU-1B-*SuCE5r)i8)N8qxrs`@-V{W*= z*5L&J2(!y$L7{-70dMXkuJHRQxUhWL0t5a_Vn7U|0xmbJoHV{;{se4RYD`dC# z3LxVlK6n^c3AMn;+q$B`!|uJ#_-gQ%{Qht0a$|Foe-^F!L1E5e_6TD+Q(%ZnqGaOB z$tPt#PR1Tan^WbvPMdH7fLO=`2Ln|W03KwZU?`o;A_jwU0?*zGaL$-vBgy~L+CRq= zXIv=l)N9T?sQruYntcHzT31t>l@+jKi?j>iWyxwbrVrIYyXRC%DAI_4E06ft4b*M` zEJp%|enN3{)6#2nugs+SwLY4xtj#7DRt%_E0P3_${n*RyUY;csi3Xei(8SP$0hn2U z1Q=9c*NN{lYu~EJM_Mn-GXTy|{LiYDE5~G(y;S`I$$OvD)|I|DTa@eb&j2RC2oB5B z%mar>V-dxRe0N#9a&2vIs_X+igLELpsz#Vujq|`=BPc6ZH}0N#r;>r9g&eC265xgX z8{P%rP+rT_5#wLYxouUWn-zd6^#saf#vibYJv{+lXWRy7-RktDy8GPWHQtAlP6h#h zpBFG)na!K2Bgm$>M11QGp^N`K(aIRCVZc|!Mg=?x!+}^_=U2JHd{rkE0!DwGu7Sd2 zPk5NQnZ5$PS+^x(a8I~@`2E0RRSTEVjQVbTj;L$@ZV_NthQ=RHJXmx$f2*eTrl6ZF zr;-V;&Vqg{J?|cVl&=Z`8FwT=+Uw|$7;(Pv@+KxShN=Fp6{RbCo1Z43mSX@}As1do z_Da&oFN`^Ib!?%m9i*%Z%=W#rI~l58xUW6P@v!~7|K~Pz>&M&)>$Iy4|KbJ}@9JsH z>+JQn_c}eG*6DtFtXWxAWsK1;azqG>BnSgU7&^S)iNQY%8c`DGFna6Imxe7crQS$K zy#ExTjUN?_$!37(8LXWuSsQ)}>FdtVX9R=ES*@+#BR;9_*Yo@};lNq5fs6J6U9hp>qRna&ymP#^;YJGo<^2%SBS>K@69~)Gmxj~HjFDn7Vir6xfRhaTJ)1eghG7-T=C77A$BH6MQ z^hG_ev&zl7FoC&S)}U2|H7(V33OQ{t*Jj5L#;j?wPPlV{SSHjvI|vA^A_*^-E2D-b zP9FM7&krSh+usa-oDGVl5ozRDL57tXCa|F97yqpVw);QSWaUD9Pp&*avenQe6gOb@ z@%z=keWgP3SKM~;&or<58*FKJ)nFWF_^fSh(TYO2SWN?k;MbNNtaaRLfx$#qUZj32 z>J5AaGiq0q;fvob?C&#mtL;}V>#)AW&oJJ?*pUVqQ(wL9-58fEdL!b%kpdYm7K$lX zVU}yiN_Qj+;1HSmmcb_i&ESEeWrU`AgCJ?$n;&rhVExyTW9?Su9r;R|jlR zRW$;Oi_oyZ_h->#dZqs)6ppZ8N zNvfxW`!m<2O09q8t?!>d#a7bRQ`9fd0b)tp58k8MHruD0;WOVND)mtC73r&Tl%sGu zOfNAH@epK5xknPdy6nd3LBt3^*VOszyrB3L@XPV`nwfZ6v2k5`9 zSbmDjB!M}awR2luMJQH%lA*lGko=ZaznDs@+5=8b`x1UG;jrrH4XGsP7v!t^mPNVL z9P}rCa?oMjX>s#uPn>F_LsshhSPa~@y#QZrqjjY;;4VSc-`BQ9&Vhp~lb921V5H_y zyQ09Q%cs`}pX4VUTNv^>?2_=R@bR?q^Flnuv$lp+{IJJ0X$=uf8!~A=p0jQiZxozT zdiR+}q&7f(QhVd-H>B1kV)1c@qpdl1_tmS6sH;|)HzkfGbME-i?2K;Bb!dq`8J>RhYp9pAS%VpT zf~A4?{gAqIf6y8#yK&d?*HoNS800t3sOB23!$5X5O>E}4WDHpuiHh#1`G5+0op)v# znS*t+9Z$d!t$>Na=CW0!k1#H!6f$y`YlewYfNvi!q^J0fYoNa)&8p62`h&tN5i&Hh zs%Xn@Ya}QVUJ-5+nh64#j}VNN_PP^n=>q+VKMw4wvKkFAw?AJ= zr^MqpCuf=Qi;EGf%*{ldY|4pa1PqHRkqV4(BNz4_69qys27?q$(+b zb26qa27N&R>?;->ENkzI$s@D-CCihHWfRep+~;_IqRPUjUoj3%9)5Hp zcY;MJUq4;Y-@>x?q3%y(-(?kE-u@??z{aQw*~z)#iG_KaS8R(9>aMvb11b6|9RZo!linKs~5C_Ri2LsL zs?el3cvz27Q|+b6LVOz28#B}8R7^`}|Ka(!l!ji=?(Ng&io6j;)0$ILV_e1i8TIda zaiv<6PDcC=jwI^Y_Vj|Q6^;vyg$i|!j#djs@=bz`O@j+%Yfjk|)D+`(t7}FIki`O6 z9RImv7A|b8N(U-%-Hf$3uVr7vR<0*kl)AA^i(HYjbGx#(zU2Le7Q@wzjG9HLr|X-N z2`b%{%v2jXFHvCGilhog zaU(cqH}Kb*;~$&r5MMmAALN6w`EUB^7?GLqbdyEw78>dN|AX8$o8YL4gO>)WNtET3 zrSWwx8l`juB+Q?L_ut~m27ufcd*=m6uM$0MFFbC^hALQoIA*US*V~^#y|c5E&KCVc zd|2EY=Yrccix>8qKRf#F-9w6%85o?M<+Si;I#c#E-VH=G6$iv(gzj{K| z1dlIoDN{1K1SYg3U!4G1*xo6Li(<5-Pq>Vnt&*8rUPluC4#Wjl6SVB^`lUEo91}x^P3FD2Y;chgw{vCdE30wtZIH|OXFva4d2Q7MS^lWrgySE`)7Z0 zE@?<)9k9_^czy3(OI%FfGN*;;w81Htpl&p=9m6;Ih(i+%jx(%2O-jI0XIV8ZWqv(Q z9o=~%xevVL%us7sRN9F_4n73kON%>MsW*jfu>Dr}qd|djXMT(6>*uxKpYu^;0!^Nz z@!)ImCqy-#5344*>_~7}rUhqa0vxUf6;Sg)Qo#4IHT>PDo?nt~ZklyoLO)8hN;7AZ z>AmJfF>p=#VL&*ult_<{yNIupQo!h}LO-$`o}_#NFVYUXCqUuj4uhbGGdaF9QvQrJ z6rC1Tfg6b?ekA0wS}PJ`WVKeqk1c|smx<$T?06`Z3yc#>M$C9}7kpN%6dvo?@)*Ro zkxtptRLov#X`t~b8`=o{cS5BaSyvKH*;5Hpr!xp>Ti3SiWz^#Y8B4Nm{jRjf?1q?f*cNgXA6yeSy zdxWud;$^*}#RHjIsrdamAOF==nOo`5LS+3%815cTom?&U965xTh-?5~M&kIWwm|z0 zlx~vsS~GacV{7h5My<`y2HS6n9rt6Q4$g(fg7lS?e!G_*(f1e@wli+)l5rR}Cwx=v zN86yYWO+hvzsGT*Tm9$6FnY3Hm^uEYZbC05EgNRwyE7ZturW+eR~`ED;`wnET4JRv zp4AB}WU*Eo8yQHLqN7b?*MA{g{+(6+Ki|a|PWdlfbd&YgKS(jc%6~DegMw)CP!2y3 z<5lxmnt_||>-I7u+L%yNLG`NakeU&uTi+ETdfr=e9BD~uIjL#t zpu@^&yoAp*zkkuZDu%wsy{!w6prECB@yaIon znkFV2(oNB0(be50uz<;EN;a>{zj-;XR-`R zvUbkcEPl%DpKs37cuXn?Pa5K7KIi7IWGpEavp?l)zjaE(bUvOiU-usO#v0OE1jZe#ERZp)Uf=3T-9a7WqJ3WCR zJMGNCIGM~`7R5vYX%jJv2lDZ-`ziTfBwo~cSL?mv%3W6# z(Ah!@=xYHSbal1#H?HAd^<>i1Vc5c8oEBSF2zUaTSL$ z(0p7){;~ReX!5M(k^^u57Prbo$SsO3vhiI}u$E_@TXA0~0w*Qf`l-PQ$XJJ7N=~Soz@ zu{$NC&)_jLxb9(snLke&Mn@Oe2`7(8J(HrY#t#`JGOfLQ^2z^1K?Ls1O@kE+^i2p^ zU1d*j6N&;;yGFjf|L)YXnHoOI>|~aymaf5M9&qZ?>@Ha|R4Bx%ME0Tu{>qBYe^MZg z`%-DQFV8o#Oxzxls&klBEXDo%C*MYD#%yxA80~@tt1)GHHlr5bwCP2=%z3J?EQ0G- z7geP=Rx>Q~>W%j%4wfo=0@sPj&$#+=U&Dzwq%J59R3K62*hg4fL)A+G#1vwt%ramW zIh4638L3RO$fGAY^WS+Q7aQ)`p4A_uI5A8-OeS?N*el#mgu2R37~PgYba$T0bo!O?iQF(^XkPbMsbth?(9MXF z7wBU9>>T1l?c8=!DNjA~8v@0?-`BP!m(p;NWXfO_pCU>}*&)kdK$MY1LeI{hai82* z2s_P3d7u&vZCu>#v!w9&ESvwIW#!u6@ctc|M;<#y{SfPhl#2mg`R z&MYaArXeVpfxiw~LfNz5NZ`Cf&!Wb##>|x1dNk23WfWln?{$1bLc9z+-+fh#8&j|a zLX?8ASrQ{vPD{%yzPU##8Qq7r)FLG5VsLnilo*^95`x^beJ5RZPqt~T=*sL^etg+% zn8y1piGl$@Whk%eRs>iT#sC8a*CoRUQOvYh?F~=64T?fO$wrG@tJ^m?PI6p5d7>25 z7lB3fB$bHbGyPu{Fr|Y-o6)PBns)q6TOo^UPVhI)A}vPDqP+WBVig=9_0Mq zBVNI*GvRAkq?CSV9CRyuUt=2$LGErK#Szh&Dzr62EVVu@p#HtQ_e*)=O!Q6@lSBmR z_2S5K4mi{PQDPXZm+QfUFi@Kze1I`3t4}aP1vX|VMW35kf;o()-|*i$+A;_!Ly(kD zuE0mynEydV#Wb(wZWE{U#7ZPvHItbL0&SV`eV%R$KCa&`fA?!Uw{T1?K+{*@hAwPm zg3$urR$8;)$rYuPyzh%FAy;&&+>_@aQ}S6l;!0bxOP7-w+-gdfSV+j<{J?N{g@10IDfWiw}#lkt3f?#p6nh_Qh1*m& zptN0=;}P!BB7?8?6D)Pq6BBo~6Lt6Jr^L4M5~$D&yrAo--pI~qWS8)IQ+~?W-ol@> z-B)=i(#T1WQ#da=SztHOSAQ1>Xd`M5V%KdVc~1(qj2T$*rLQ|NT_`wFIpYf-#o7Km zuXSk?(L({q%HOCEU;9b_2C{0%R`Qkk=`R(CM5q}r4aX-^S+-Dr6!F5Z_@CfkJX`bl*BCl5e0)m|{f#~x&t4H| z3L1R|=gdqXrrM$w*y|q^KUM6nu~wqj6{By?-KO~^_y#1p)j%4m;~NW- zOI3LrVjr6+J6dVUOd+4-MnLi*eIYi7n3pvpe@s^b+_2sytnF{18iZsZd;@ERG5AV4 z{hlDBI(mHh22Y^eoJZVRrDbZ^`iWob@4GWnc`aKAOH54C!KRdK|GsY;ly+b+BAV;s zpHEg~zVa1!G*n6sJ$xts822;7@{rF3ZbYeen547Rl=Mx?+y{tdS&`lI*e^M0ao@v` zomKCb%*Kd#>7m_|Zbh<03?&YRb|M!^hN)%{*teq7lGD|aQDz18U7G-H})k zvk$6ezVKE*;afuFokCs{^s$8^HExNG7#)QAKDMc~kJymd$M=iY(}a`_uQq}yh}XnW zYM0x&f6NC}e{+>b{`DUzUfP~v%wZgQ6FjhQ{`gmI;aY@@41XjQ^z(_0WoszeP!&T+ zLS*dapd6#t!L=w=d_W62?VCdlzt((5qb4Vs|0IJ@pw2(vOtUl6Cq{RqZFvZN4b{AU z;>CH~=xG*$G)#be7+ps0rod^zN=kzq(G}o&HZVK7ARLt=GqhRZLo-b_sOIL^p4*d9 z!xmnd?cMJ!eB^K8fs4Dr}*(4|e6CD*+m>Nu&qGOu2!tyXyj}kxs(4#*QmijLnXwLQbH2gmFbAI z2zcaCcmUT58KW$a_IZ0CrZ?}^R2DMAq#=hdViHcxr)F!GzWbTUwn+%W2O0ZJm zn9@M(g%3f$>|LJaaEp-Sk|e*2JHJ`~4eRr5r+M4^JkAxYtIgM2hNej&1GW{^VDxon z6^t|JJWf*&F+;S(VeKWYbiX75*V14s$tML&A8M&yyOAZuqG!bMSWzl=J%PD0j1#BQ zv{tXU@aj(g*ll;~_Qz~mB#>1g?pFA0g3lpsh+sml6spJzg)!RtiDJMt=av4QJGJ7Rr8V5;q;6TB!^5xh+Q5?xp zmS^|uAxu}I8;Lgjf$m0)X7XH9OHWPbF)#soge%r^e_xY(SbxXHR?2iZ^|llfQ?Me< zwJs5HD<4b#2;*Eg+Ft@4iy&5pRhcpRdbdsLXRPmGXvrUtgn!w_ke-`q^G`^IUrO`w zm6&sejNC4aOp+tFaPDFkN)C0Yla05=%4o4{=qnO-KT2A2{s_ak@vRrjwIVHGwB(>P zytK&e6dbFr1(mKn4xdD;S5(|6fTdjd9i4F_5EG?m4)xvOZPG*;z9Bdvn+>X-Mog?O zZ_5#$1pe^yB+ugD;OD`lF(7mZp?5w%(QjU5EN5ZNM)kVN`GBZ(wQQP^?ztEn^`@N& zDojVk6NT-EF&nL@k!9Qz-Rj#PT7tMcqT9xrw5!&jZ9l>!NTbzo?7yTLKU~pzmx2(I zv|k^Mq!%FwU!PBqwOu=VAlTyP^E=^Lk;E@yvHuwF`*}^PGe(S;A_LI`i^V@w#}b>M z;5ht{?V~0T*@pEm5yo(WW`cS9avODVXQ;3z0u3(=_cCD=6`fE3H!FP6CH0 zlf&g)zaFC>&Z*^1mszFyffb4$%LBQul7vO*$WVpphQ@|W+*eGRCV%p+DJ~~iMO3KS zi8v(R&$#OJ=Q+>xZ9@8GsZPI+t};gN5wH_-KwZ1p`wq;1_e9Y2Z3jURFQfB>JLsc< z^}=xY%_==Ra44ZK`1h>f-(xuayNAb2?8o|pU~CrN#eUitNp zwKFD9Q!tPA_}Rz`9)IZHQFudy6_FTkh3acwyBO86v@@s5^b-vP9 zvhXBK6j^Xm_nDSF$a%d-p5MXG>`=p)buz*eScpXO9%w*CqU9!nj>W$FsT??)XgKVS zaY0L0Q(jjdWkE-mM4sO}6!C*i?UMxC0*S7?ynyb40IIGo32_$PMtevrmhj$EwSJ?O zUHVZp*Mh4B#D-C|AQ_R7yGY_j3H4z0*7uuiA0Ni~ltP>Ygp#v{2C$}j_|y&Fpp{{9dlDxrI7->=RQ5VS<4gI|a* zWWy!dHdUtU(jM7~3SN@%i-_t^D91mezwuz$29beVA-(mc%GLHvxl@`tvn&x{1Ya=QTOp`kG zdj}{8Lp*dgP*8XKr$xoq4?{-yt0`ZKuJhO&gO3MX>$=FOFET;IIKxs!KcjnamP_yu zGBr!>O{x2OW&;ggDL#SQcP`}PDWwZaFs--6p_x%ZYZKl z48%o{^j4D!N{xUSCBkKV@X{w* zeJc^=#M_hTeV>C`c`*PNpffU_Q4+Pf3>>t%rs4wf1$)Y#J^Vlw1ZU%3%-1E#U_#3E z^hJ#&_g5+g6~_4+LDXNV_%cq>7uk;2AO~XzDZ<(%{O9x;$-SkF5Ig+D zFgkpuLHjwJbJZ&@&|}b}gX)-^&X{S*g0)$qHLin-uX-#W<+~2C(iD@78XgjxdQxq2 zZ4yo-a>k^Lqt}?`8H>2xD3R961{wGxiK-LPeF}8F`Wcy-4ccWzf8wA7Bm`QT@@j{- ze&u^zg8tIGV}2WzNA+#*32?2$AZOF(Soj)p{}F9U*0lVd9SqU)0`a{_OYImCDRx~H z4v4k4*+$mBOsYsic#zBZgiRFAJ58b41L{I@yyxz7qXmCxD>lz*buAau1b1m|HYi@7 z7$VWbU~tw-Z;b%DRc$cBB@=Zl9hE3vkmR8|x(;3A&!MAn{8MHD4AFc;2+Ou20F`40cWlw`D0PV*gvNb)qqIm6m zkFS^L#AU^q9e1d;h{M3a2F;v5D|x%3XSm$p*zemH&4PUZZ?#UYyP^&Ml?4)r)tL*Ny^*la+|pc${w)O z7*~4Z5l1d$BfOJiE2qzW$W@r)3J83SB3hIz8V1wZ1a(e@?urv<&)oKK^lg7Abq&f$ zKyBt9O#Lj*fB(+)1F$J%sM+S|@q^gDW>+7Ac#<6No@_HV6#gHC5{2?MFz!h7Pe&g85{7R(?sTX3y{(|Zh_fh9briitnRuO&`%Aj)?KUC0 zoN>W+K1$gZ!yzrfcP(B|)S34_gel~?{W;ZMBTunZht71r=&mLB5|X>EaV7SMY#6z< zy<=}#KSvf`B~bk~{!wv0a56rz5=ys#RaQ(cQ(jpBNnhRY(cfTbIzz1q?>O|!mSq&O zPMJ;LaE{nUANyqRkq3tPDgB)QbC(5!zRLP58>{s;?yy2s}iTnN&gk^0j`UqK|uj3JukPszu5ZgXIxNVAZ zf9nYm(vVE(t=W^{B4*=g&zR{XpRcD)is9ebvstm0^&ZZy+rf?VWlCNB!yB4$Ozeip zqViEMpou!>iF<$nV{MPZmOr9fN`~U1qmmdBa=fezMDSN{PS*}~HkD^=viDEN_-q^4UlE9ixV~g|n*T4oy5cG9zy>Q!(nkR%j#9MU?3 zTs?`#thqSt%tq`^pPmP-#D9=|{)pEeIdJyy5j=e__bAy!wQ?$}DA*;{r|{CG|VY}_0ajQ03y$sD8u-?5JEKpxj zNL*f>^{vo|H{ZDZ=KM%)9%1Znc>R9(GbFMdTQ5N07S1^kV#ZImfpY*SWTSlDU|s?E;Xa86nY1&Vx(*6rO)JM_?SgUaC{T&sBYRysu5FD}Bm z5B^SP6=qEnrcw0P1=r z>|I6z?iB3IPvr;&{q{&el&sO3D}`jQ3)C zyqHSgO#gV`twe4jQ0Hmr>qztHIYLTjQ-$#>WKg)j-h| zB^x>8Cm{$z0l!q7yBf9cRKom&(Dh#6`R-iWsM&SJ9X>lP+5Z{rx}~Gw$Z)+4PO?f$ zVV$?)xAPb_J$=MLQ~Dj@m04S>BT4ilgOjCTPEV+^3>UXcP?YNWJkjt~_Ao@`DPUn= zWxVg;$=maa%n!M>c~`h7@Wo=+|AJ~0ME1w#ioP_No~onCbtjSWqIy>H_f`3Key0Zv zrA&!N^{}4(C+4r|JPb5dO*zTw>dw^aacr;zEYJ|be|N)et++}WukYKSm*9@A(|6JE zm3i-T8L;QO7ZydVj}0L4p^p$ICQa?9hwoP|cP?%=VNCBCEGyJ<)J8o^HLWFw8XO|X z%4;=eP?IoOv5Kssgu_vX9Pmk(8>9G9V>NBp>?zYk;+j@w#@*v&7R<0IH&T>VPprMz z$#r;^4_d6BM#|;XBp5ErmPu%nZINar#QGXhkl)SGLVf$(8P40|6wZiK-C>3#s57#mO}US?)Qt;>OVds@!8ac zE+WjJm4#YwXL;1&g3c_U5@|SWLC+yqXJ^BVHydOb6N0my8e<4gah7ig81+#j9Tt9+ z{XE7NhK7$n?%U{uEE7IVTJ$A?oshL2p(zC8-YlhVdjISst%t5YEDs08L51S`RK~p@ z|46P#2`n*c&{$qFHH}IR$8$EaDwxV`K^>(RD=#RSt+QR5H4F-&Y{?5JUDg@n|0tgf zW3(LA%8#{l`Y`RPEKb2LxL{-fXKh+|o|uR?UafEvU1+Lm)N3lYFKcRAWSH*ujPN5- zk@B>%i;2n6W!6@9K%ETtbHUici&S);F{*su-0-pyc`+Er)lHP03^uAs!>P4~ z_ggFt_qw>1*qlAl-ds7it(S+UW_t^kICKe_P_;XIwvz2RIh;p&NQ)|w-JRJ`N{hdKyk0}Vd$}@c%kOhAtg0R;U0Pl0+KkuK z8@v`_bXoh8z%6>{Gthq8^$s%IS8S)QG|MG)*7hs|`%Tn(;%${pY51&t7;jR^k}gy?XSU3(jBu>1;73}T;JB&E{aoXIXnAo zPquj->>K}fIUA9}+`%9;9%cj6p%I=<&Va7oLQ}=OJ?9*q+R^cv^%#G@1^@SHs(t_H z+?19Z=T6cd<Wy@LpbNt5V@FW~Q9 za>7@gSFMPwyQ}s~d*@rPR`9F-BRU~#5+9GFzHZeaiyKESmvY* z;kPA?plf~kwN^!OG`^eB?5LYgb)#IfLN-BSoi#ekbi(*kpaV( z#0M$W$XqgvLy0)WxIwx~%zD8=!EUM2*~ak|ZwgHG!#v@i&&Yv{cs8TiflU5WsC0#( zH~!CHB_()zX4$+1rw`q9rcqpE$aUQ)ktn;eW*M&9G-p+d55Kj)x?b3_pxPpZcf`@o zgpVx?q#o1x9otPHbiw*Qd(B-!*K^l^;Od;LW`le|PSa|Im{Y7%(+mV&Fh!X(kyF7uzsy;cQ#QIB4GqodL`U3G zwq>S}75B9CwGWB%Lk=s69VTovM&%wbC_h)}6+b8CAqdmeQ7rD;?A%QF#nMyQw^&j~ z=s8JU{ECiIs36j6{FCbZ6AJS< zdnj%!Q7Ipf;{k@CTgxN`lI!>J)oO##1VIb4T+8f3sxwiKY4eq^1L5Vq3}8_qP>>R0 z8?fI`x(LsA4nXi8F~PCaL}X4xi@BBB>HMd{_zzVXe5 zE?I2_!nqWi{OLA-RC*mIYe-gpCq@tZD0EyO0xz@dek0C+Yf-0~DP8mq3RFlyiFHsH z?!{3r6Z$=Z{4!Yaby4F;?Xc(6*k9$`Hcng&DlE2qE&c*VX;qf^nyhM82?(tB0p$U7 z^q>%d6@wL=EUP(f?tieUSrEB`e0W$)IRGz=)GSxUbkA36$`Km5D=?0ymv%uI|c+Y&1A7=(2b)vw4}@7I8_( zDl9_NL~?3=z3RKXDD?~a2-!HT-nk&jfFi#Q0!vZ)|Hp+-N|BvSpNJRff?QZnq+jNV zsJAEVF(#aTO4Uj$=U`?-lQW%-4 zED45ebfw`ZwTllQ7knLE_Y1l|*%m7(Wa@n6zKUd(4h|VtK1Gotlgp?{JH7T{Lhm|f zp9Fp?^(=DiibQLo~ zl4>?55KU6gJRQ8OBj4RCF z@Z0UldG{Uvp_ScTJG;1@_Q$zn`mYeZyDk2(AptpuQW3ejYLa4k&3s4c5#PQ_331w<2ps@)hO%y52!#_zfgf@0@@6Sk~+E1PJ;oxJVl>8f_d?O`AF9~4IZ)G<^YiP z2umc6>eU786n+S0Q0XS_hh3+kJfnw1((0XP+AUavc;G$ffOYjO$HNDgWx_w3p1_B; zss@MPosM$_OgSLXic$jko~-3RIz-+x;6Y&zkOp8@P)Ml|SGDAcAEzoO3-+>6S?qrL z44i0UD8F$yZwz*S_D<;LG7z4qr#PVUXS{SzSF8YJCLWyO`FDG~AqrXwP^$0S zdpmuvCcVVf8n)IW79gt8p}v;$>mOD(mOerw+q~{w`|m%{th2(w@gamu%w|w60PWR< zu1?ZnB#0AGW3HJHmIqS;=`6sS!NbDPUoxnHfi3piKu|S*rZ)Ql`9H*2tFE(|63h|} zOb|#UB}*d0NJ26&Z)$yAdIH-#85VliLKbn6&s+4@holixOF=USx>_o!A*VBzXds4Y ziX#f`+ZdKWNerV2!;@NYO#tb1ls%ZmDec496Pfy(oFL!0jm-ypMa}kV1>yix$|S zzaF`?L~=JBrmK{fJ)ODm@cx7^kGXl1_pdX_Jtvia4RF|bXfA4AM<$e@+}mxmH9=3X z+L{U}qLQiTMSdP(!0gK)Ruds=vOI}o>(Q|bA&si55OYAV!|xaa=o~l*aQ8qSBL~X^ zhsHK>R7CJrv4x()1Gw-7|3Va#aKnB!rSeL4-ql(U@@j z*_xK&@=!c) zAhs#e8Zom;p{)fp=o-@a`gUompt-d2F%;DYBSp+QV5pj6ikgzS22PX2q;R%wuo?@P zH!|rib8%@ao19%GbDNNI8Z(m4k&kgjjZ;ZNGzwd3w;=~`_TPV&hqwS$O% zi&#B{JqV_2PSPz20Flb>#s$TMH9s%}Jqm~4<0mQ@MqF?yz6xS;w^u;ngJ2;TAs8gW zq4;P-+0eA4>(tw*O1INLe*rG_B&{kBMM`7pXYN@ODZ&F~Iz3dxfBotlrIS%smcYSfkm{+Kv z2%1_-27)4#p(#>|X$FC4S{e#arD-V^sc0!^N_%`;49Q87tWK{ZiS(oF*K@9D?0?>mQ| zx$@`6L#77vEGm4>U>dpI!AJ(dJlnOsw+;+gQK?7`f%-u}V%eoLvJ^RgiYMA>MC2e( zU&*SZpeiSD^!-CpW@<5R*swE+b;QF~o~Xyy*8LpC_Dxwl*@07Q17=Fx0N%mm>0YNu zoRE-op`+&XJp5rJt4@Cp*}vvyaR_&Q!u$#@U~U*XPq*#``NQowscR%GkCrM%8hh{g zhf|33O)jA`s2wSKa1Ez_ExeY%M*+i%Oq)O`Skce zMKGd1uheJQcpzjQ$mSjuVABjBK%uQ*Y=@7*MvGOURbBux0%X&u)>EH?DrXU2V~pt2 z=x`Uj9k4sdzhxwmi~=)kBdyWIKz!uVDE&u851`t2C!OSoa4}?mi4)8e`1p!mc_d>t zVl~-?POn7Og07$h=TKz(jA(D)jMHRs@^U;vyPj@ z+RWm9wii!UhKS1s`O7s>cDu7Ulorl%PTU?B9h!H4;NT$bb|QM{1RZ0-@}e~8Bjs_zNg#xAyf;!F>F0~e2=Nonm~cTK zi4;0{Nhbl4MA@d+cM9|l2dD?fh{<90fI%IG(Sfl^4G`|ptUm3#yFJMR)-N`K?@187 zYA|`!2_HB>c|r-3u|vPcuE87L9RMFQ3o|eTB&eOFB0Ua&_!05z)1r%Q2ftwF;Q4Ve z&bBJswbRybl=^ZaLNg#lQ4oxg2H31+jO}Z35SSY1X3{}+6*}aVh}CBrKO%ERPBh0+;?XaQgJLIJkVIc;~X%! z)C2F>kce7;#W@1I9*+F$6g~C`a%am&2x)hyT)q?+?=sfjZ9RwI^MY>xM}Y-96*>_- zMaMh^8S@0!&g{$>0x-_*{4)kgJ2Hgs?(V}WeS-u6`wSGLQ-E=XoIV%B+&5vqPZd{P zi%PYK$uZz)u{&w#=pSYvaWF6Ha;-RF4?mGW$&iwNDV8{oJDIeymXb&TblcW12*%D+ zLUQqa`;J#-{a42hB&4LGifXhPX!pA^H0@7@Ndt)osDN}Z_4jf6yxlhxy9Z&R=6%r) zM^K$y+w>Y+`r&(3R?Hoq)akE$^^ZB{^B!&9$RXp&4byKP;g2WMn6yj2E`JRNYHudmb3F8U$=0W6ry3Ge8isMy@q{Wkh?R+ zjQhD`jJ|IRux&$9Jb|>2w-D92ZUdk}$^g&cU{+4PVtFYNV8;BmDmkG&F~fonx6IPZ zdMEqT1dfv@)o+0GC?$BwS0hEs57%kA#mBjSz9@T>;97zq?TO;XZKf%Zo2Cd*Q^^c4 zw61>o1Pl7{PmVM}1d-C{-F2s&+;ln$?ccg}9S~jcTX*Y!qnA4CSlq^kwD#?Q``xol?p&%Ws_lf;+SL(7 z7j3H`Z7L-ZQC&!GZ4p&;`C)k#Ra8-U+Nz3(yNti8fYKa~27F6L?D?h?NdSC*N_7`& zT_C486c3#Gkku5`J%|b_x`EX#XFazdE9z}^Y4CaV700d|+}q?=p3Y;1qZ;&(>gs4& zk)FEX@>*$19%7$3=MDJDagKQkB9;*`3MitYNO)aO$@HLEF`J)OE4_+_Yi}FT0)7>4qew-nH1zU-=z-;M2Qcg4u3;fq_CRjqshXeq4;4Tnk5Lhr> zQBe1YDf9V3_2B%yI;>V?py;u%4YEd+x)?a9rn6vM92iTodQe4s3dd&&899Y6>?nA}nI3B~V>|ppOf7%k_ul zUhzc$JQY%+2nXbf5W*=m58mipLb9K$>qr6@7^_kWB?Spu%*kAoUf23^oAwZp%3R0; zW$qb;+kmDlQA#3eU?qqsR6yf`9(Fo22>Esm*K%S!ybc*c@Q^Z=X-48eVIFgblKM9q zQ;GE*G@29+{-=4Cr=?AQm@erglXD_Sb(|U>eOl9&SXhv?WZvb8RYaE^eF?j099SUe zj!>TD14Z`f8}W~`k0E$1Xbl`xs^pA-e5fIa+g+YML?T30MO9T&L6fetlj^dx1ILUw zAd;9mc)n*IpR95ZvGnu>_(>4q=?rr*ba<-zs;^klL5ygPO=Bv5d-?_F>PiU;e)&;` zLSyU$#3(EfgbG6DXm{xX<_RMspA>uc4CkV~G4`Dm5fwxf#R2$u`p?)DMg20Gp@^g^ zA-j0?R1tdulWf)`&cl|PAem;ECI{=TdoE}>b1GDmGz+RdSyEySA2>9DL6>_V?4vA0 zF||<4I@jlDGdRhACYKsYUrYiq4fVzzaSw;xOI^_C_A`?!SyaY7!VR}!e0ux z?ooJ$I~%Fub34%LkB4%Hgh&W>Aq32S777J0j0lA^3!B<^eVh<( zL+Q}z#N?qoVo)g6-4JRBx-Dvju6RS{KHMO9Q)RaG@b zRrU6&{)cL+s;a80s`L3{zg=AWe!HD@!<^?i&9>UBZKTYY-JW1Gu%ynJk!C_1e5N2J zJUv2U?A+^roDTfm(9wgeTdC+cFGmD30%=VFR6xkkCjc(f#4fuMqHL-ZOBiE~+4ePo z7SDEt62hUXsmh52{p%MoqGE*n)JHW{(Zf{z;SJEx7UPyMr!g(M!PdsoyRt|W^XmkP z=M}a+@zk1qe7!T+&A`tB!YP(CrpFw#gNp&NuJ#6h%zNDCY6+KPjxTu8&bX5U%gcW* z7m24Gd5ya$9#DSX1p|xA$+NFO7PcSK_r5GaEP3)NLZKv*AaZYG~reLqtv?(20PAkL`! z*yjR+n>4hW8=EKz(ZinJhpk}ORS|TN6tg6S43S(m2#Jw6N_vf42?^Uo!_&us#tMj- zf&mn>PUabzIY~=G4g(}4L>EvPMJPfPDNLh(`ea;_Ae9oL00aUZg(r7!-v_C=75HF~ zAPLu2E&@1G#gMc!rc9D|XKbIV8+pE6oJ;5N5CnBc7YuDxM3Nr_%GbvTLVaHw2k4$* z)$W6)yChUaa_|tR;q7cla)JXVP-%p}E*foI z+;-6r&_QjeoS6llkwp$=bllEP3u_mDVi+)z7{J;X0a8IB2V#cm99B4C%{Iw4F60db zrcXC%c~&24R;(=dFNAUq-D9FUtEsI%#r0t#L_R@&_U-5N!|pi`c>gH(h#%L-E}z8xO>at$)^Vij zfU_|OCQPRRfDVK+ux7B4Xo@XNSsdG#$0|8Iv=%${cRTKN+^4=YS~OLxQOj(Yj$D&- zk=F07{M~e8u8&nb)Mv5S?Tl=HZDQ6V7{{9Uk@J9RlkL9|_sE11Lf=F4c!JP;l9q`ntM}`#;kjjd~ zhO-E!WoBlZxDuV1VwF41J)+K(p@h+FL`6Hrp9++yaMXfQ&1F$Cg+z-(B%OmarguRm zmSt&dD_N4gmL2V8d@G{z%}q-64#-LY91AsemkI(_fXQs z>5B+#yB3xX?^l;qLX<>>Aw>+RQzCB6g_1$tovNTGv)-o`bfn5&P;6tNhsogD+X~j9 z;R&1vYo~)*gzoMwWHqJ&TZq6GFS{nTGT2aF^ zQ_Mdps_rB+R?QWEG{PBeejkM@_sn8MLoMRbWft^tTybZ>PS$$ane@WJaP1SPh>O}= zb}==)TFt|0&6VNpY~q!lr|T2tAcSOsNL}RecPokj2MBCNp7M9dNK8;mQbkP3MG!$n zP(dKhq1zVhPY`HvIJ#urGM&zDUOJU~RlXy6iewL&p`@UH{U&_a9x(mjHygIj`God- zxa@XMcwU@7#y#xB#d*P1RaHeH6RM)9q#_8YAdLkil1U^agdryVN@e5Bc``Ymeg2I- zxe^alx(Y(AjZ=IuX{6+ahWZQ`>nX{keTnW>Pjo6U5(rEnkb0t~_N2ijG&NLE(KQrR zMO82dk=$E<&d6~~$d%CEI?jb0L z0f7z(9$-O4hhTUN4)pX7aaC1S6jfF21L98=5`R&DP#(b!2rcSEy~)RImhR=Y!lBXN zCx?z0Fe_!K+k0M{B$D}-YTI@kmJ0+AwAyQQ zUbeC_F&z+QZqNhnE-Dz~i$=I1NQEL&6b%c1LF=>HJ&F)Q2?!%3f)r2+bR>eOP?Q5o z`ue#krR0SVcKfI19*3nNt%HiLJn;mx+Qv&%)c+&Rs*;jL?%n^!ir+}zu8 z;km%tEgWLz*xPNkjg4*2aOViQxpSL;Y-2n*w%cv6Mk{l2E*#u0b8c%!=G&W`;BqMD zi*naCr%ySKZf&;Xw>IY7=D290=G$yzZMNHlbDM3pH6K6Dc)bVHcJ6s@aHPjJ*ECym zZLu6TIZ>`pInG>cZfjMvm1CUD+iH#$)oYt@v}cys!E>8)W+R&%<+&EYXt~XQ%>}l2 zTZK`%xNy-$7_M$@xva+`;8!9!wWDorZOfIN%~5T!v1ZsJ!Q3(l&`it&ICp+5c1LZ9 zX;92#!BH8UE?GE4Sil^D7{wf+t9}4q92%ymwOfjzz*syZ3D{E*2cH~=y}gu)f*Zg^ zuxf%jlSvDQL%tf=9V{txGjfN2G!^i~33QNwO7|m%gap~hY{0ON(lCJX^Jdx@rXmp# zkXaB(nMGnk76oAs(kJr%MP7wc!^yucc@EdQ`}?!VyTGZagov^M2tpzU+zgb#5hMgY zkWk#s!OG1shDIEC56%o*iYC(TNDPgmaY@Cy6-~fFuug4;I-+Tan%cOF%@WQbc#yq?jnCB&MpUDSY=mFJOFrU#!S?=%RuA1ekBN z0qZQw!+7a$dY_G5nj_hNoI5gP8eIp&IHqKTS-(_kztd|FmR4`s;n|rKl9!igJLA*7 z@7uqz`$+i`lQ9BOM|h&NBp7h7&L1A4#GpX|smLURAWS>A^X}79_iLx63E4z4SDQmZ zuwcj_gP|z8(qzpKd39GC0&X8ObAok#pRhe*i`l(`8%glGAt58PSPQ5T)WKXeA2fj&oNTH&~R*s3n9h^7q=Y6VFPtxo@W`7-g&kNS<)N_-X6uWAP+>|mb4yo~e z(k93q%*>S=5ywz}{b$c^0eL+_bV(Pyz26h!dS@?RfCaQ44gxy#a`;PlXz=oFve6yn zF~PyrV;B|9V;&CRo;YuNwW=Ntj}Ee`sO-5{ztTgZ2h{MoI!@z8%y%55lX#p5vUzo! zZw4G$`i&-f9*j;;7X^?!-6)~t0niDClcS?~sh&P@AJ^-$*}{(>*L&d&IU~1fScl-x&2R%xXjxpNdd)> zU;zlB2mqc~D3mY}JGA}$EP_=Guvz$fav;4f@2PPb3LUhiV6vzgus3Ix_+;} z=>x&`Us4`Q7vg+PPD+V@0&o`0*TS|0K43%+91TsH4c1gi295eL(xRQjFfdesWdw=i zeRo}dqlH1+UtOY*)JZOEqA|6(5!n|6g6#*8jtHh)W~{>CaS$Xx(W49}VCF=83Ni=4 zQAeU+i3o_4idH)S@Br;?yH&OekKse+94{2XY6&wjBkkS4-rYAh6H};9)O85l@8s-A z&%f0UNYIdV9ZSY&A$~R$Eluxh&QgZwf4zWzD|SC4J+vLDZgjZn1U%Wm3RKsCCJqor z!|C-2$Xf2f4q#w3CWAyChsuFYNCqz$3Q?32aC%Et?5kMm#}>i$>xu!=BmwoEGbm+q zTpL)lC_9uK7*K6QI*4^dTj*wi@9@5{mO0R5z@(qNeMV>!n3e0^9vUg+rhzS55vvKgXt;PMJJw3Pxz zM}%%b_fg=$aLb}B5wf6bGu#H$e7CV7At2qit?`~h0tR|LygBTkYS!tQR2zGq9#YbD z{9I956U@aco}rF6DiR#~#|ymA03SPljCMgZ@Q7&=5MuHmXz#s8#Thn4a*wySkU)*m zF*DcVw*6_u3PLHWsp7c{NioZ>K5TSjL9Y)v@98U;N+^%4{(Q_nDk_WU*sA*WDypigsERIZ!4*YBRaDgxeLc1(yKfQbQQSa1 zPYc1s@aKQOqiu!a$>7w6jEN-|&$U!XaPL7+$R1uAVB_{Mcn*UcAqxUFRCb7xNhBb9 z7^Xf?O;hqT1C||{97Hza=&n(J>HvnPP;i?=a-GFzRJ?#wh;iZA-~Jj1mP7A zr2r%mkXk?wgHoI0H?$qGTW}03vw)`@b2T33pn` @rEgjbL%{rqJFh!}^M_A(_mfKvf=Y+!PAZrgaQW1Wm@k z#Z1DM0kP$@CxKKZkt8n0y%u^J^(oG=; zoF@@aIm^``Z31D%Fp;o-Y8oVhk{L6MQuNAb0-zz727s<2wHd#;7~reJMJ)m`Nkdf) zD6r*5L`|n*9O{Oal*+C&lMxd)MgvTw6hRYAlM@h870F!#fo%yhR8~Y-(oD=%M3GX= z%Ry4X0Wn0%Nd*K`8)B59qA`gE%1i?nBNRjsEcYmuRVoS{KD zWJHvzET7%Uo-#zZ6oAl^tOr{GGojK45nUNG49vt+G)&afG!tP1WU9a|_Fg%mp=kw)6bv14GDQg4 zN{W&=`Yu=x;?g5TVSs;MgwhoeNI@e&@v_!@rC(o{rpMgmIWY?n3QAFE3Lya!Fd}3M z7$yWrp(df2C@BJ$Y~%y}CAm})0SpkrLyAEUX*uI7h)DzqGz}F(U_u`}0vdpjKF3%% z;DUmNk)g7G2g-ndah{H&5hy=uRNSj5xG7Xz{L*Po5@irb3KC&XWWzzrSO!eXK}!S} z5)mN;$ruR-*$5cmMGA+s{O#X0{U9L4O7Z;MgFO%mP^5!YNG-i`aX{R_@)Z9<5$6?9 zutu9uE>lkV5E4{7bFLt}CPkMq$vBFfBLoT%Xc&ZlkXXZp$c7Mq>-?{vesTerU;~(y z0HjywTTgnN3=#!GG$0%Pg_{Bw7z#z!1o`DLAfHypO;fPwqC zoaZWpW-|mKnA}N|6sWRF$NWZ|j%Bi7=$eA%N z06mT|z;fYmATX!&-16XVgBW2Cnn5=tpr)DyZ~-L$RF|!&of&^_sZ3R51RY(^m-D*o z-}e65?&OW81yuy9PttL8J_}+EZvjkPh^Uqsq^In-9Y#9lUn^^?$H>71G{h5Ev*g^s zr?bfOzn=2P5cvlK33%kH(plCv@zndAJ{Lo|I`})fryoP!XH&nt+&l2&2*yTA zjI=TnEhhvbK@X3tQC~pmp+oHUZ*PaY{@0^MlT;%p|6_mm2f1Y*Ohm-QWI}))+LjP` z08^XD+2s(P0LQER@J?_@df!EZfSq%o_Ith6O$5sUNmElx6*eg!dPo#~W3YZ_0DJcq zg9_RSv`z;{`yd7J$RQAfX{3mmMd=Ur$@v_62X>-nVwfUmf(aq~LJ4MP?6#7sdIJNQ z!oS?WFLi(Q4+p``T#v5-;qdT1#nkQF7)VISLN&!IPjIiKouVO8NDz@CFVgREI=DAp zPONbDX8!tuW$mSQ9IxGa{P{H2==5(aYrs)G-E(qSw@vh)L3TT(*^`7DG zm(O0i5Y^*>+7ZX%IV*3%shUL)pzuIJ2pB;1nB6c)3SQ81f+AQ} zX4SL6$Tvd!lH}GzK zqt~(sa?PC>_x!%^e(S>6CQQFe^*1yOZs>nCgR1TZFAf>){wGR~{|Jyjm0=L|K7dVH zum4O`k`na77$bdZ~| zL)y*kXcmy=$6zYhIa?+v@R&rb@AwTO@U6iMnkx~9#~XyRscKu#-wo*0Ws z5k&2QWF!~H9C7B!7cvqA1^`$EKhHlYii%`n1Xl-h!Q|vU0C>D8-NtVs+d>e~YeTFH zpAw+Rh*?OHsz@OsA^=+a>^8ObI1qorOxX>CgN-T(os5dy*J#NN$D|QjGi7*tfoi$e zQ?cwjUyk12f2ZEHQwi(Tz#`Td7gE!i3!|h1J<+T&EI|UQlT~rW{vQS(#~S4F&1quZ zY@ZrRy~1YCkQ&1P9nXP_$~CG=sSs!oRTwQpJ6^8Q%B+ECC`^O^6lA<)0!Dw~iw$^n zq(Cm2U&WQ@WEJyS6C{qv8*nOv?UKr)1Z@T@(<0=;rDt+1sDBxoFHSmkpMJ%2ki$X?oPruP@_tlg;nq*_BF6;*X{j-Aw4>rN7_vQp>}(4)0rZIL#pYD}02e1p03##;p{ zt@Ma8850nmgTw+7_V%1r?0}*K{Q|>we{XC~2LX|vzg{ph&{qlQi+hsSB5$36erLJs z8=Eq*xEoB18mFj<6j^`fu#u&zoBJ(Zy4=Vi3o2RMXlxD8*qrRd%slKg8-GzAj5*0R|YKH>b-w_t$Alke)A9*rB$rl)RdV_ zQr+L~u#$gF>=wC3>nf#k&uhQ{%zfKJQY^G6e!bq3hq2F4G6IKSbRq&l?V%5MRhZng zehK~R>fp^g9hxw3BC7PQ>0=u-u0h6zX4_FMMZ2wCcaf(EL43$qEmbx^`D$JO4D*l^ zfWw)QK^dGY7(w^UHU|pX5S}t4k(`DZID4K}KlOhM%Jy@LMbh4(Tij<*%*N9n2GDIi zX}Pw#+V>zx>e;Z+E>VqCcyQn(?D2(RG!?)<3{@;AL5&`VRaKSq|LOKbHYsG&!zjlXUf}NFf0_J2|ozn9J{hH-Nkg%I)v7MFs7kaJf z@NKH+qIHRoz_FOzogMEKm z?6u~~(GJ#u3f+#lUoCk?tX!J|2%n3iVqqcyve%KDzP;${m6&u+T3P8Kb2AFvnwhBW z(#_H);B4UX*QKi-=uPt_pU7>Qm-F!}?=(b0CmPs5Va8s$V?qHSHXvUGt>AzZ<{;+m z_qy{_d>cv}RZ)-+hnyk;cDHACoWy^{NDYg-Q>+7agh;}^+$2_lubCJ>W3zp(nc>eH zoOOp>CSdgR5Cn)ti_eSe@z!hAeSY0w^;+Cql|j_qQG~ZFN#K~Hv%r9Ib8A8ku-&8F z>>Vo$WG#y!fV(iu^X%6(Gm(%2!4yW>OGd!sMHmF>gD_@Aaa0{GO&}1pw8ejrZ7?bv z>KE>2nTKbnvqX*^4{_G0$Ho|ZEj{N8VJwRM=Oo;s$6Qqfxl@Hq_zb5VXtUpBY^m57 zI0H#|y4ipTu}r~8Po2&F(AENm0cEXV6Jdg=6UtZG>}~e;{AJ#1ZuLaRTCHB$FD${C zdHJznsLOO_M15^l#@IvzoDP3SKYXf|*vaE8Ez#~}b)j&!2qn0G=%yAa7hnn$z%#`; zLAnXGPL=hxIa|w~U`E$tm!ve4vU9rjNdqBy&_*L+7#pH;TPTMIB`);jB@6)od<%a; zuMjO2(1$yE_JSC}1_=(9SXYAuh6T`EK|zEc9&N)1Pc2@AV2`0q?p%L2%PC#9va+F) z{Pz2x(p1l8UL#uF8N+@5CNB0RR|RDOtJqty*8(X(c1t1!+C|L8i#;=fxjxz>UDzN< zfM3bAj6I2L9YrU536_fWfvG2@upf!J8zz}9YMTfWNy%oW!(zxT3p3&E|nCGkXOS^0f$zy~xhh5kJ z=41n&0`!Ph9O?)%9NmP72L}N(Y|j^l_01{nwD*cY{_?)^#PcBfC9g0sQ^B21EqWPo0fMtJTDWZSYxW zUL%${(LJ)!45~=n13?1@TEpf*FYjS<6)|-+%D4NC9-8C>%#O8nv3; z22y8*c5rJt>AS;hIn@^H`;IaZml)8^4`of02c1*_T3O~SHY?4+wFh_GZEY%@ov*YI z>Z%u~8?Jv4uo!~A#yOl@dx61DCq{THL^~& zGRj0$P122MwxQJT_*?ysFJ)6M_sM-`t(cH9 zGX+VHA_C|q1|_PiT@6Q~Fi(bqBDrU*l5eLz`>bWI$dLgrP}hXxVqTsc26*Tik-B^hk!O)=Yf3Fj)y1bXp0rF;%+0g4 z<8;g{Y*6fPcMZn)`M1U$&1Rcy@1H(ABLd@ddrQ(X@V2WL|$ctcM7Yg{(TlJ9F zc7QI{!IxaQoeToz?3Ze}og;raW{eR5<$#=Pgg`;Bh*smTbuzYGoEC1&W@Ea|LPJ1_ zA|l*3T;~%6CmJAY?NJcUDkQLgVXsub-xQvNC9t%@4bieu1Vf&54J1HGzh>h!7BIwd zx8X>d;ua%8-S24wp|dlqdBIs9oNX1z@CI_VRbpzoL81pEV4{=ENWyGwHmX20Q*y_|dYnpl8ly*;=Xi?8P%6_^eWZPq61Yb=}4Ak1TTM}71EuQpAEE7Tj7 z8g@TY+S_4oYro2Jps;_?OgAeXgy^!jD406nvQpv#`CNrE2;qQPzxGZzNf1+A@AO|9s^8Zg=G#e&%4R1T-OVU0=}6rkpVi}l52Zja8%t* zdS|k5fMr>0c)(HXKKW}4)*}s@!aNfBkPrt9XfZ*fR3XXw5unY*qBdAfW(u{wKMm~m-f-)K`+M1kl4y~b!S&MC$kFGa7+0<)iwk;A0S4f;rk+8%? z&dXbN0#Z(swCEDJ$y_m(=UZbl6NQXVS|`Mu#Z)r{Vpu^e92j2#4cehUQ(cf2n711; z86R;ZKx}c>%U&6c&dpl@R2`gw2X+A6TZWKM5J5E?rjmaFq8{5qa?IB!yJkWHhFRJe z3vrWTVY=*`nYom^dcgXe3w-PnE5Lxj$ux-8wm1lxW@&;mA`=nPP>2p?Rtk{h0PQ^jdJt|G(HhzDV7#ys1^Sf9UeS)HBVQ3fB#iS)oc#lo6y zDb;BJ$m>lfERaedIkhSvQ-(s^lDIn^yIYCne7#sZWAoLR3vn+O$`>>F6a41Rj`BW97YwpV|2RY?*mlK`EVLWV#F`$jFdg@bCZ z%DA|lGn`si>VbQs9KI?Bji~^{A`odPhx-Q4S3_ldNnRoD7L;2mg?JG>0Ucivt4O#v zG%rEi#k}6k6bX_F=UTPC*R+HwO73AJ05%9DQ$X3PSsNA}n=i!5y2>>G(m)t9GYHVu z+$Vpd*-t?}(9d>5D$EGI*P?dKng-Wkw3j z_VCF>@^NhA8FIs6g+Il<-4rfU6)-~M5bPI`1kDD679t=LXTcFWIGe1)%193{2U?dK zzMWBjoN=%OLD8TRaIDd)C62!{ zl18M;M%tPh+-Hai>JL6)juAwK#$b>P!n0^GLTSaz;%=Y@LjY2o1Sz}GLqk|z+U`({ zCoKZeD|rn<*@r?i@TEF^pTLC&Ufsg^dQVVd$jm^AwWjaSmT3pTwrq^RXvXO@`&IZFgc1pr`LrED|wJEWa5Pb~kdWF>BdVeKFj zieSi3vzZx?8^fRz6k6Bl_MuvreZQSQf7^aqVtz$CJUk-<0nIV$u$Mc_{H>BeO14D> zR_2#BVOkI73i8hFMUxb!?k#wnX5snwg9rLdmM1aHeYDKER|3$7?G=BBFj&0uiJk!yQlrtjH)LNPwMu z)CW-RlztBTb#%_!Z49onHan>h49U}~wKcRtVV$fM>zg&b#SCta0B81&_a^Spu$L3bG9sYp^~EAVFU$h`+<$*kfYpcG#A|BYi*&h6r{A04!Ak01T|ok|=4-@iII)I^ef#ugUMt} zjkVInE&&*Fh!!C92nu%^OR#aTxVR-X(#iH60d`+8S0S$T+r=3EAS*haE$C{M9`&+GMjhDEWVFCTglH z9P3m~fj7#Xy~<(8hzap~q98_M5>bM>zF--U2O1?z%n_NHk)5%|6c}=*wxscTdEHz2 z*@-ikjCsl7Y>@{MI^SIYh6>niw%YdW+LPH>95DKRjyD?`{SwuT!D+5F6hI7VkPB@l z3f^@wi?PsQ)_T;FR27x05gZ=UEx8(-8%sOZUFI<+M}x32FgsmbD{{f!DsfeAV3#z+ zog@TfVRV_7T*RFz0hpJD#GNdErogCQrJP>J*l*$1hNM=>LVFcBoOAswt+NJt0gWgF zB@7jIMv_iYINlu5Znop@Jhw(!ONHqL7GR432!pc-C&&ryw6Gz4HRgt$eCkdZOHg;Y z;WXU*gWC0lrT8~g3PK<-cmP6s3$`)^4(XDif*hkK;{?oQ4&yO0>tzoO#s*IFeU8jv z;kGMlLYF?pomT;5mzKqyd4JAtqxiPjVB*wfe0IA+kAQ;ol)F2%BUUceEeg(tk(je& zkzZ}twN9|Vj=?m9lV?Aw4vT$-c;^hDieN!$y>8-7Fc}T zOygz>0lOV$Y!_ky%6~Ow=HwY8-ZORe!pvkMD^MEdvqa*w2tx%_2stzd<}{|M?6Z}o z8=j7WQKq?5VG*tmDw>)b*`lYo_$bJ!bUkJ8I2#i=v|p`jz=R+(GX`|_2x^MifP)sp z6Q%|M2EgB40E7L>!L3or*};JjU@s)h@I`7@TDz-qhp^R1N`FET0g7{PvQN=qun<&? zP65Co1#KCsvfSVr_BcGL!0p~nl36C<0-V_p4f_Xrd1$<*tmrRv%1*8U?d=9eWNO2OdG@vf zhGY!F>8JPnEPtXnom`Doorp%T)g7^ql%(`r_@Iua1UWQx4Rg(K)#ozX@SbCtrYT$7 z-;Wd@;zC<2Sfi>A;*f$2h)+tnTdWZv!L%SY3tde+laI=nH-E;fPMBLmX>udGcfhsU1h=4L69DhVovIO~s4Ys)Y-yfXd!Ov{I zUKn$kDci1TN!w$MYH}to5{N-I=^>MVy566d-lgtkdH`uamcM!?hcX~7fvx<&Fa$B6 zJsmCz%OjuK?l_!YG+oazIZEo9m?cy1qJk-D$^lM&CET;2vgHR_qknaaZ#rd3UU zgc1*xs)PiDkgk8ISvq$o7e)+QY*R%G8x#?hkO_(%V!DefAOy(!Hj^{!MGDGz8_act z__v=VOQBP{3Fer?azU6gBQR7AM$b~!tx!Chb<=5Yp_!L_f@;x3hJzYv+8T|?Gz=Xi z{l1ABQ^_k3Q4);obe7nYVZMZjAw^W_F$ba`C&h{8hQ@yz_}lw*P0dT=rRwu&$xt@{ z1AwksuFz5wF8L_t^N(+tPBM1%K+N3HL|~+Bc!tglm4?@Rf|j;KW}BL?@1cj3?}!bi z2$)QYbi!jK?_gaj_Vfs@Cyt(XgW99KtIkp*0R8;#=*4ZW78(GBpgD`EuwdSNkzSCJ8 zDw`wPtNCd7oJb9p3j9s5fC|o1nB&NRsdjT-Z=h+D$G14Yx$faetJwfSv*!_P)ER%gOOgCPD0&>{o-DtC0Fzg1TbyFjS z03aG)&c_sC3`Rt{bpbTppVKJ=z#`T_oubZaav*^|y=-z3ot*2IP-HLe470jsIH@Qq z+&Hx`LnQw-VZc5^ygE6zq=zIYXtl?uT3Khf+^smBgscQTRsF{1C)Cfl#bm58sgi$K z{UQ=w095g$1}&9A0XE|6K|nCDGhBnRt~k7-^Xm)(vfQptVg3X^%t9EpB$L{&?q6PgU0Q5tiqXI+`s?M-)wCVb0GEU|{yM;+74 zz!9%BY}yQuulGXOvjG|XNZhEq!~ zWfV`L>b&r3XxxSKS{RsR30mw_Mr-P6^>cAvWUV=tM9qvTsb8 zHjMLOwB2s!=9am=)8fx+1$$4uh>{!RPZsyN7-lP#sT=|OGJ z&vFDrmco%Z>_83a2<9dVtId-mJ{U|9TCmjua!uM?-VuDx;Unwq?#zD-@UgcHESncE-q?!+g@W2JQ1@<{5#p>c4fBJo|fliA4i_WQ1P?1BezlWtZkqBS;0t zzT(|P;*<@V;_Ah3kuwGZeRU#;Hgi`mMMtT5&D$AiEDun@_7fdrX>xVf-(M_s4tN&R ziB#^Ednb;tX&kgKEV6%+*D9z~scWw9z$9j1K%vqofDWq9370}dMh+7S#xf39j0D`? zX#uvCo(lNG0{L6WF~h4cLO$^XEATB6&{5Oy+Ikn30QmQHdw#WI2u#pVkOAquNdN`_ z$<3M+PNZ-4>%5wEGucd0W0#w!o2cj^U%(+pbQtAM;RK46riFjwRHm$0o**A(E_7R=tKj#02?b$@De(;6wPEbQ}yizRo$-dD90Bx z$i~YZqq^ZAGO;%sw9R;7Y!Wt`XnPGp&MVe30bT6Oj1%HYC2bbv%s`eS0Q0UK(BX;nLpVxYrX^f9%^#%kU< z;u0OWi9=RPO$G&%JFqcwgc@s1MVBSG##f%LayW)kCTC|b>S%Ys#m$=V(N?vtRT4E! zSaA~dDi?<0`82+rnb8Ew*MYm6OjBwr@fE2SyWBtj(U30rivA|}88R5_3l&x-in%>n!E9Wsxa+|-LE5zGLD?9O2dk9~ zt`xO51W7Tq0w>#15EbE5JfI@YXY-+MW1fZwX<6Iu%_3p z3>8ydH4Y)J*&SRE3=`}R6o>}Wf-wSsgGAOaQ38K603CZ4A=oXn@gzlqc4203g`|sW znTw~5dphPSIc8v$q-YMfHt^Qr!n0XvHCe^b z!IOH6)lk4v$*YnAc*zd5MKVC2Uk(0R*Jo+BQEAN<+k#P5yk(WbegUDDCAF5!_ituq z#8-diSfU~D^vpV2=%}Z;GCLg66ueVQT-HxL;AvZ2wIqu10SN0Z)a)2pnIN-Bpn$qC z-ydCF>$q#qW_?*Ywph_EVqZ{!rG!>o(5ZGsyvfonolw`tw;C8wk$|Co>)o5{ z{5pOumKj{=>0aw?Ia=dukF~$cdBf?so89aaY|8R3l3B^Py?xMHQj1%yz{E8%wYq<{ zdZu@d&MY)h*3^QtckpsEYz)uSjG1qeOjWJJ1o_gg=W?(5=r?N|?}oUg6d&G#8JBR{ z=UcP(c>9-Ss=IBqf0vxx6{-Qjd6B7kw`V%7;)M-j*ySe`oOQ5i9Uz(+SSjRAP2-W? z7I&qxyY{Iwr=LmF&g|C(aoDr4;%0yB0nSr5H_n+APyL0AsWdajC(OA;Pi{NUO&4s} zKIHBkEDu)--#?7j*sD74U5oE8I`~XZ{a1-dW%g>*Qw9rhh*?qNXi1Bk z5g~ivzcV#Cv(DOMs(to*A9+Xs^+vr*A=&!dU_qn=Ur5H{5>BgPjqKC}oFpaE0F*w%{*$->lB6)^+mgdB%IKLY!Lz5dA zqhGSuE2=FF5-%#vh6%PAeY$_`T&G@o4r}_#Y21XfY%9yvJ(l-hx;RoPYKhT6M9Nm} zQmj%-XVoykwB4VeGtaCUm5}Kzes8g5Xcf=O#!?LX)oFq=HS1%EIq2Vqsd=g)f&YQs z!LP`@TsILbu9KE&O=Pw@YW*h)$k!I;$1j8vOB-UJUDKuH%68q^8ry%@s65R#$p`!s z%|7{8R$?3W*%8L!-Q`%;%IaLx`1#zi%AKWuHv6@uncti6w>jKa$GyZhRYS_*p-E-n zdH6Us1VTZ!xYw209+%ipe}RDMxL)AB>)1uuSRANvepwdzTxCWkV*1qI5-M{qgEW3HEQ)tw{(GnbXsop%Dv z)0Ym`oihP8mqON^Uw?+w+8iPE=oh@Zs{<@uM^c6LiHT(8175xaaIw%Bm20QYi<~3k ztB*2nRZY3?pT<#-MHx+$$qcKD6>*9xr%mr^R~F@OLiP)kC|g*xDw?0IFs*UVI$Gqe zgHvPDv^eechrqObXKU*vuhMk*N@>;8uWQ$hY-=mzy}gy?Re$as{q5nU;S8F*6YE79 zy545|$xlYb%(p1hI}taOu3}73S}VLo>%Q}pE3*8HYr88<((}8DZxr&G2RbRarTZms zkfQ!x=?Ki#HF#=iUs5{&|G3dJ46}X{h~=Nw%-V359p~!FsMt!_+vlzCahhm~-w(}* zsho9!!?C`%$bVniEI8>1%!9-*X{d{#)x`92JlFl!PND7Xhnd*gcr?tr{g#I>&6sJr z@1J5YGB^gO7m2tC8U}}WDtmhfpji767KWASTIPQS_RC3ghPX;1d@#D(ZUR~6IzGz< zNVR>o#=~;uxwds`nC@+_6{aR1g#)zK0{g5A4j*+)mr& z%L1yu)Lh9w(rmEZw3g;pWmOCoI|nVYs`{$8q`~0qFiP1NCzamB0KP?F?Ja3#`*+}# z*1H2+_|Ea1!6pXeSgU^)7~GjO6b(DK=S79a^1F?=ydnI?kZTn z0f~;cGf(zmg|5b=$q9MczhocZTb75~46Ui-i(|G$2z`_6+pIgnYMD7K%MMxvQm4y{ zv!4=mQ}$PK&koAa;emKvHlqJKGlpw!4NF`$HGlf{{YGP31C{h`#VyvK=Yx*HMntNG z!D{cxPDUd?kamw>z+h+;x<+nZRxmh3h&Y^MwL830nrX(&ofX?%f?i&>u4P|NGT+Hz zCS@zoud8nHja(WXz{)klg`M_o6$&rcwU%glr+bYfWE5{N0VcYEx{?2n2-M2e5Sz;F zc7Hc95fb#Z8(B9SoJmf<9}@Q zB-`7Lf9pQ^6>Nv?vD{acVGl^z4LZo;^2J+t2zf!;oR}bGSCuP!eviYjuVSYe8#>NE zhPLLLO9TxbMM~teP0skGZPTR$;SbG@&dk#19_kofcF%0lPfD6_97cP`UF}lchK_sYioFmpT}4oj4YgF)X6P!5G<>bClMpu9%OqC^8xYRl1E-%= zlWvv9GG(*;S}UaUZJN^Unt6_Dv835Dys~EHBNNSSipfMlKu=p+n3-;J_v=H18^(^A z!fCbzL(SZ;&nluDSas{}u7B=ckK65MA2X_{)%O2ArM~~4*Upc(%i0fMK9ymYFV$Iakrr!BL%e7&~}mJfQ*OHG3I@_U)TUE}xd z32W?Ql_Zi%;50@FM%FBz)K177`$jl3lKBj5v1<+hJUsbHL^=DhrQj= z+{|yg10~ojw#2*N0{?2pXGS>bX$K<|Iav{u#*8YhV9MjhpE5GpJs`-}afxfQdF@{R zb>CIZSEk4F{$8*9FX-D*qah)ZA|L^o`7*i8U_Y!9kK3pC9oj~|EwBWDL_ut4>-3xv zg7ugnQA-f0;fJj>l7BN=eSeV?T7c6=iqf$)6o%9Eo<^sb%j}8?Zbs^vEDsc!VZ}cQ zOnp~NiO61L0Wtw=xTFjLMEDAC1%Q@@l$lvt*cp`yHD$i2{h{ z50Ci?+&{bf-y+Be58y(-y?^BQtMKg6CLPMB^e^Y{Fvc7kF({^Ls&fiB^Ac!hh zqF{<*pooequhy6PiSRrfm%q)-T){sOdA$g_4$yETt&VI@F;B!%0|3VWs2dy){m2Q5 zrVdzzkwiUj$Jenq58|L7{zh?06p%DiAutN*qwe=_cYmkBf%0^HG0mq+fPWnyr9d<+ zrS2E!eeERxymj2qvi8Ti_Zkn^Kt1I%%rl1lnf9m!+0UK;Va}00boRd+k>%~+eduuN zxl)KAOkD3|vcIg~_0R0K=&f6KNEDr8KtU zwdh9e9e<=vtXI9lDqvpuB%+~6sUIb`oar3aEtl2F{8iYdfsZ|f+NzyFi8DCXza>?- zromk`gkI>?pQ#F%)KRWA7vxveZ*@i&CH(oHx&@7Wp5^^ucX@ebn981m!x^2RMWf58 z?`U5=T5S^VANNaG!*;p&{?~^u9jfnLS#A=HPk+?#9v3xNkH`B5>GFFnvl0<$VWRzi zlt#(SVg0^OY@hG(^h+;SW3r;lQ>C-xtrn{#4X)Caj?GhZvE#2^MN>3CPrT-Gp3(UJ z;_A}O>hizDZ}YVNT^4W4hs}Sysc5ygPa-t_KOWP=dhu$8n)*BXj}H4RmakGaI?e}q z8-E`6AN7{+@$@_0hi|{%<@dKdB)`25S9u?<_xCf?=JbEVfy*2{c7I#0OM$82@KMj; z|9ib||9_A=+)>EsjgHg5{zrU&dqr8d9R08a04@L_bp}KL+9glkbSX?6e$wR&XxZej z{5q*^!1&JUgm!jYFZ3Agk1@O@RZ)=|O@H;Ru8&i{zy9|>bi40<3;zzw ze@(F;-$XS`Cc~dh&><|oZYUt;+%qFaWWPh|I z%ub$0a`3ah0kI*|M118>Y1bJOqZ=m&^^W{GAWkxWd9>Y!$ISa-0cZZ*YH(pE9Z7=N_AYxxy1biiwDGsC=MP2r2PC240;(BYEdp=wx7 zuI}%M!%Nhva1wS8#JbI|m=d1@` zII<8h%@=EoPZ|E@>ufsdQHa$t|9bTM*~8aO+4S4$6bp~5%!&DRv-7I>fT=WZZxwY$D9H^uo{m%d($y^W|rfs?cU;ZEw0zC3DRZZB<1;Yp3E9=T=R=GUR!PZcKn=iJcnF6 zcj3Ek@;bLciEBz}96L%{XMfYXE}Sd}OxO#2U_PxS^JBhC8pG|bHv9P82{MTTD6Rw)FjjQ@Pc%}|?oj9bF8{aoN?2YkvjQK44PorQW^L z(u*}GZ?#$5PsYZdnoTOqB3B;gXS>|29q#rlUfp}CBKh6!R(G)p`}_UZ+Rp&G;shmU zdimZ;vb}o2qW#{&;c+-jPkRxB#Nx0x93TCV|FHf4jw88>OD)~3?j!5o$5vu>Rh|z9 zpTXeo_%%OWr-rj-Y=7|9c=wx6AJ@i|uZK}tr$*z&S>mhmc&j*DErMJ9kyc?#72+JO zI7Wj!Gu(`rtnm#;Gewvz=7h6(($(jOi$XN%Zih0kYtg+MKOJE4|A&`UHGCiGdAH@k z@)w(oUT^U8bw`yi@bZpe@zxJ2Kf}#fJk^8I=Nt^}@8KN$?SIv6Y3J9Tly21B<2prK0!ZXLubmroj+%Z+58t}~<-L1!awm*0}{JQ28E49<) z9VS*xGN#CV)~SCFb?Py)Cbl7*c=5?-a`W{!Wvkvvsm!FM z)5iY!8q*gU4`8k6Z?wx7cO@f^J%2}^mW8TlyFaxrG%;Ux^zKucc_)}gr?u_E<I6+CgiBStich#QAK- zug32!ik+QWAJxOSu{N!zb7h%UqvO0&Y|7UCHdeKlsI5}hmb6+Ph8nrNpRz4;b%2OF zHe&ZBUVpe)gXA+qyJMU)52;7Uc6D03E~cLh#_InR#{ak9*XlMo=DFIH=*!#0R>NI` zeWGw_HWs*uIu>dEJmb?l?V*8!`MP$^<579hKxF5kop<{DB-L%kP4YL~>jQkKjh4IK zF^+bo_BPhbH6z-+ea$$5*CJy`hoPn#oUvhLy>@SoF-AX@)jiG9oJ_UYY;yC6|d}^-;f3E^XCEz;2r# z?O9dnW$P7`B%5PyE?tu6K@PS#ff9}F7wpSyd#_3|%J}t$aIv+ni*8?KpN(lZ-i%k) zqrdUp03;)=vrQ%Pxw}-7OO?th9?cjqsT} zxP^pmS*pDdz1{vlm#Jugx3%P(nU^*=uv;y5>*uY5K_bulw%6e+ z@{rn0RJ%@k{PAhrT5J=O2dJxZXW8C1_kWj{nAgd4UQ@!f;NB>nwayalV-0JcUdvL} zoY&UC*V&34y@~D)2HH4RXBI{$3en-LA%PP{$`C4v~Us(XH zwdKAM=-34yYQ8}LWMV5{B`>Re0W}j65M1T6a z4c(ccmk)f?P`j!XIf+P{qaBa)@`9h9vS*jr7+Rs7|88wJJ7rEnYIe7NyU6A86ykPt?P};98cBz|7`?D*(D%NI0o zys*SaGqb+!a`?U#1b;Mx>y3`VNjHRIglwZ?hH{%?)wrW!6zKS!Gn6|cdbl_#K*eE! zz&69*U1%9z=q43j>2Hm7_4t-n^f|AkH?)sQvzx5M;#Xqc8yec{?(YD}*~sDJuzkj6Mt>diEVX&s;LzCa`y)jI zf}(M@;@9IVGmS39M(f!Tppp1RvBHC$#8QcU~% zl*_cALxh`sOCv>|s(G#T&q=DGcW!4D+;rYCNNAW^Run#VTOt|c8dl*l zFR-w>Kdi@Bot~CcQ7}K{9HDp@`*nHW4A#uQkYukRL^s&{NOd>f;x{o&Q__WJ2zn2=tW(9OEAsB8%|Y^$7_s-?}+ zOm;};o@Vv}&$NGnT_Fe0+QT+LGR{GE9a=a|bn}dqW1jZkXuiF^>TEkb0ngrUv*U9dugG??I2Y>xN9hCt5Tc4d>~zsTk5 z+twYls|AsY&ocesW@Wdl(zv+tD@yG)d54RI?@NyLwol`nz`t|W0_qQz~1R@5p}oOmdAZ?tnOnn-Lt#`!?C zry+kx*%NS4DgP6G=O3lOX1VY)G!V@`i*(**PYcn}L*%4opDCgs5@xBzC@4Gg3BxW@ zG#u^u<{>y2<=X!36D4xCa2kmD1}A$5eq$>CBGl}}$%u=uI`ms6Z@DFE?XQt9*S;m5 z%&BU}7Zyy;!Iv||hk_C;?FR86dOLhZE zVZd1&obJ$9E8jCC7_MRQv6jVg<=$(3-k%-XO2)rGK$O0f?TU{bU9>%^T)Ap8)*R&o zZT#8=EPZv=-a2(9k5cxn=JkR7))^1-NO@he`tr8-tmA%iz}Dkk$=fcM`-YBnr#pXO zU)%DjwECp0aW9jv7f2}`Z7%y6E77~IUVy?eK`C*5+&4%szAwAE*?mbAr|0u7 z6L+ayla-2fpNhowX~IRWv)(IA_4()+me;K7Q!`?0nVjAymt*DQ?+et_P|Y$rNNP5g zSoR6X#OErq_Bk$dgY*LvBik}N8GnD=d^}@^pD?LyZlSQ&tx7K|YS5}@XlRX}u&S;_ za4E9vfs%6bbIRMY7pw~dJToN966RiStMG6w4|;5zyOU!C)_WNG-Db3F8;(_x>R8w% zTcDb54c^)(MhN?S8sow4Igd=*tTnNJPj-c%yIEOf+%Q`A*VW92#>3ZhYt4T&k}hs; zRVUE7?>F~}>Ud@xlLdDas)}b-EaN83`2|DUr>N5E`OC}Ir?>hJ-U{cA!Q0?)Q*n(k zRC7-la|BvL1XWp-38MiQ6c9*=ham_EJ~_lDg;)eyymu8rG%#EfwQ>7XcbJ}pjWtJ; zp}dk_w`imI(rq^LJ!j|*KyhvgC9@#hcaza(4CNHB4mOtPC zJvS`-A_WQTL@Y29{iZ*pK8HWTkpCqE;tG~j{txz>Z$_+p+z)XJ_8O(HD$6TkpM;!g5{CY1+$y+{SXkwCbDqYm2wLp3jdV= z;zNuABtL~gP$$OW(X(d$PiK8vw40lo?oaoyb|`od3Z+lF{PY9$936Nc$3P%|k{g%h06*w{fAHziWrf(iPPT%a^xddv~TS!MuMATdn}n+y}H#{U5@> zdEC%(wdnq=@Ph(4-#zXPTJGL@@87nuag_Jd-~R{m_4swhueVsYTIjc!ugW;d_(L zB@+z+J4?z*(uaSCVF@jk>8+7H{I%-fEwTq$$74RmCsF$N4Zmz5V~=u#Zn$WNR+=5}8+4dHIdCd~VaW zcx&U~%}*R~{OrP~Xx|^b$N9Wx11_IAWuh?sxtT{Nvwt#)l~+9=Wl0Z0)D zkX{NFil#a#Rl5*6poS8lp}Hb(Rk%!h{l~^&(C_Wv-@X2T8rSwlBXZu;AY8`>BwBlU znlH6;9}N~9LB)p+gV200jwbcM2jlJsTxA9~UtsU9hcpJyfc$ipssBrQ+YfPBkQno* z@Hw9erdxkkhu%9!H{b~RTR?^L_1igf`?a;g2?Uo141M@9?Z}g!vz^=UPCoCi@c8X< z=lt`IcKSOz#c$EHLk^A^DevWay*+E+pR>^sxJ7+`H*^P&qvKF+hzzRMb7e}@z%W); zLdsC9FoHz_KY4$Jw?4ik_MbstCjwg0;yYWR0C;~i15dCJ&2zdCXJ2{t|B2t9!rhGC z+tB|X-yT4>sQg)sfv~d-WZu_K1&-Qikyqa$+qwf)_1WMR$2=JV-~Gg5@n%DI43H^s z6_LuLg(1Z)(G*tTQ~VYB#b$K$5`8-OTaD@W2`P%l+S7tZ0e&pb>s>F+#hkUaZ{`Xy z&=gkQm!^J$W*o6+~+er=ni{X{74 zTP${g_1isxhy>5viOnCgzCO{V?&Eg&{tgG_{O7yfy%6gBx|i?toiBf2DQ z{P|vE@p^tY6-@s7kIiqR^AYd(b*IYuJN=(;+T#cfLH#eo-QXcCz21}lBDq~v(_bK7 zncaZ{@DBGKA7tNAno;r`8!#9qxnlnFm@jd-AoY&^nV`yD~0x+w)pSUU8T76-tM;BWIIbb){Sdzqg7F3 z8dX(R-iq!AE5U{5kR?%4jO|hqj!S9shnRPH9XQ*G5jmUrFz|oyWcALU42aGYN!108M|YHN>0o(f=51xTd)LYkrhOp}@M`;0AB+_-HEYTyc!9YAwhgM*3z8 zp0)gBFl%z#tgRq(hx}ODiQ7zAbl@}XK#D+|2<^nAm50$eMbv%}DT_7QwN$dVU6dOA z`*GR&yWztIe^`n7d@W%5aDGoqp+o3#ci^B8=|@KeeO!NEsBPQbagWGzT<$+Y9?TeQ z1S2QSvDjTpFL@Y4YMsbHemuMbE z>^NLdqKB>BbiJrA%fD`te{F5o0?;eW9_zuIZRPp}y0M==r$>ztG(iM&`mHRLrkxnyreb5r^2+vBE%x1PtoF)Mt}OD!jrj2ZT@F( z%e`8T3*q0RDfkW~b&qy^Cj{1BP;eR<)y4 zjBkJN>w{oU>7BiY-w*=5#SX5Sewq4ZTMN%sHq~CP z=3Tiy5Y+oR^*k=-4!s_~4mZN4LFT#zc0Ipe^v~tz@wGpocd6jMiN71fEkJN&luk~(e!RlRpWNN$Qgtt^}pPjR5 zvNU!b%Ci)ZBT(VJHzVls2}hS2H#n3+48+67qh30#lVpz5=XD59F8 zB8Vc2D2RxOr67tRq9~$@CMcq6D2SpWsv;taD2j@r2#AQ7qKYCYn1&&Us-kL$iHZq{ zs)}kznu?goBP5KHG7?W4yf!?6tH2L_{aZ%1Y^~g9(^=ksK^z0_;Bq@{-F|^-7*SV9%%@j}^}xITw#+(K)Pa z-BoESlfhz|g+MJCvy%kA5tV<2aQC#1elaY%vhFKW&s4~MXL$N64WD@w$%}5 ztXxQDEKos$C?Lx&z&Z@O5+5f*8aQCoIukoN-Tgg!>#M87@$>l2?_@WVxD5YRDGb&% z%hz3o+f;4S;fY;ujn1Ngo)*pc@OKQ%lSBOu8V8ZimQ03!)%Z86?}UFSw~0QdssMNG zm}B77`s|S+qtA~1o~l$mh5$QU_!mLg@JZXIM`Xy`vmFI^49?m_dRQ7yTKNNd43*+J13xaZqvqpEc~HFx}Fa?go{SjtNDdrx`$K)30SGq>s6JNqPt>z{mb zZ~E8+^}e28O0)PFEcPJZMt`c!(r`L(F{44E!N0Q?AoKO%tGWt!ASVU1RMU|-Qwp}+v=xWGViRXE{d2Irt| zoOuZ(KY3=adaz3$*}bj*MhzD)X2qxyT2R8U{Ob??-bD}Z8Laa`%SuT|v$`MV|AlIw z_lk1EGgpUpT7myYHg=Si3%~sO|LqlIm4c+{!jOvxV$grV2%xc2tqaloIYs{l7Q_85 zc-swBQKsfll1KaaI0$0QDI^38ICo=YQF7rW!{fC@2|?Qy0t7}Pw_`%6H&`(6|NNil zv4H|pvSoP27*$bf4>BYPVw4Ji@}*m5W+l?ifmUR}XNZL4p2*xDF+qN_gn-l5m1diwSgGB$M{u zB?PQ1PR2Szm`Pl0)9q)aMB&}oLSpB264vu##Ot)R^(bbepLAb zpSb0Zntwgm+K%?bc{{uj==`VP_z$lnc}M%)KLd~U{txE}CCv7Z+3NXYM*oMwM-Pq1`|~$_^t^+Cz40T=ji-a@ z0EoJkV#8FzU%`vEwcHWH9Z1!-A7^+gV71dlAhds2 zd%r+63_U>F0Vo@V&8exZ$cz&hJa|hBg$djs z9n39%f&r>(zy`fW*nYqQAFu$-a6@s~pb&au9ip~T1G7{j{sXDR>9kQ?I2C`)cIQ=J zS z>Ron>paMqQF*~3tG8FVKpAP9Dlcq{j9U$(^(9F!w|4{}ALS+oh(&2@_`QCqaw`)js zx^=r}ww^@)$8&gZ)Y{Pq373A_aWENKLtbZPMeecQX6({`_95U}@ervpKjN;4`P9}X z1Tlez3>=9~5uAyhve6cXONA-fs-5B4otR!59wEd_Gk=PmDn*rdulN|wmof8vuBp&-S$bD zshhjcMKw(*Mj$jYiB2DdjioJ>T7eFv24q=Z+24LGo|+!o)<=HLv*MmAR4JC0j@6{% zl%yTJr}KMpE)whqi+PHnvXsbJUi>={$b~b=BC%P4TO#=Hced^xIik9m}j#H;Ww=9%ulbY3hnCq zS@B%QY7Dg^&d~ELu(aTnB+-utHSTa{Y;nP}^ws4%(SMpF62CM6pzyH#$Npz?#dfQ? zU-3XT>^iNxmfXBrdN6;LmPbWaZHq^&dOXxPTFxqEuo|7UY*nTGtrl$1fop}lX2VLz zidyA_9A65`Gg(@z@ToKHdD(_SNTG^sv%6OnGppJ4#&1g3&Gj(jd~|pRTFr#4 zNArz?PIqN(Pu2lwu6pm*(f!fMv@)DiDBd#Nww<(?7}7oNDr$cYP=+)4l~#0Z%F9zE zFpv2t0Vs!t1X((w2SbM$i#IeGputG!VBp<@G}&)NI;^h9wl405*5f#ux52|YC4@2` z>5nY?mX>vu8CF=U4baXS?kUY{{iEoJS8U;5O%@tjNnKsq=Dzm-sc#V)0?Q2@t z8aCsRv+nU{+Q;VMSxT7S1bc+;agYB7WpBh!0HOx76W)1sB{(2iM)h_ zgS!WbHWzgN)>FF|{2Nd=Zo&WBv-4Ab=NRN*b)GH%j*e5Cy9sTHo!?af1E-~9}IdSn=uaJ z@X06t-glF6fR*NF2w!FvNd%BV6aq;jb}W*ZqN0kXD`zxR6%a&CL{Sq~*r=jOh>EHz zh@g={B&u52VTYGEp)nQ;{;tAiVzfuy^!<(ItznrCqYlN)3ZT6qz%W%i)Ute6D6; zIL|?D9_FD?;dy>=zQ(;+rk<@pYFtO^ zlrkF^J}3|QZHj^C=)^@;RJnWpM-JV5)m2ng!yVDceMRZ;2MirK*Vwe}w|pF)ZM9WZ zTy=jZZj5nY!Bld^ELtxDTLiVmIO$=FY%fYgr2v6QW(60r<8bK%!4(XnB3`QqqfrOf zo+AG8D0>j{!&c09wkQ%n?KI3ahHqj=+iXLD)51Y~h{ys!v9Repx3re2BrC<&vK(H~ zXrw)@Asx8bUprmCu{tK#kE zr^&M;(}M7z7{F3(RSjV2C4fEL1KcH|7Y3abo78SKLLwTlKoe0nt4421vYy_|mLj~_1$d_Pn2ekfj_4{y=% z#M3oCYqmO1;b&Ltk?Mawz}Pe&*$}L>9Oe&BvD9~$w04SLbed0epEd8l1o@yvAX@!h z&=80H4w;)a|FohQGhcQYgPOhR!!LHc@X@xdBePU{P~i9eVD&y%+e6)X z4(A0(LP;kW6n2?LPdUWt=O=JEZD-o7b@(^?%^2^OJ4NOBj7D0c|WLXLCx}L8;qWLA`QOPs5k|RrO+ZZ4?x^`=lHGqFu zuU`#7=7)(?GN({SDUDTC5#N9Ii|g$Jz#c*NB8p&`s5v1-85s;6*+licnw^B!IhAQP z2x~JB2dn!R(N$GMB5v93DjnnuwQ>8$6sbsw4h$Nr6~cn1fUZk634p$VS)}(%}*~bbamA`VxrmK zA1=Gx?bzk6jX3WWpzECB$=fF`U0k#suC5)o*YoW>{$%ouE2Ks7DW}Cr-sRYTNN|X!q&oh;LN8hIyw;j^Ttbl(MXEm)CJvib7goWlR z65=~{gGfPT=Q+4U$uPlGd~v)!2_iARAXu`+@?nNUMmB}FxA0YP=WK1fb3akZ&ZoxQ zO&zIuC&(NFq=WWHZ#U~mK9Zrew%cxVUzhNFKR_CSw2e&Ul15nQY%~PD4zRNPThMdm zYdtiaS^zGRVz7Vl@9%9VV7-te3V>9RDW!^?CLww9n}>)EJ)=zlLm?UfNkF#0_0ray z$aD9;TkRM$x{C>xzgITpyW~86`cadsSRVHmSZvejT?e=awg;|zM(qH1_33vPFyrm{ z7&SO_dAe^r)XAW+?44QbfwgVyb1rg1K+-=EG#z2VrX+$h9ddMkxr7R*t@sf4{G1Di zgVv)x9?y%u1>AD(Hv@NuNg;422x~kSTc^k6;mUTHZr+BUT~DC{!mGRwA<|pUFP-Rb zl^|FisOD>Xr=WXZ85%u@EdBw+bdAjrqTP6w+UCZ=jF-X|Wl9NX$Q)DL#hK!Pj*VG} z9vgw!C!4|R0S6R+1L5{}X9^B*)b#<;tA2aH^t#3M{t8Z1H37BIL^DWeP!2zd0{Z*T zBfH7uK@R}={x~z=;?Jaey4=p+iKeKE8f0@Bgj|5>Ivz|6vPB%T&=>&@U?tX%dE*-$ z$R;{Y`Jr^Eb3voKkwhdt?v1jcTUBEBb;MAv#3~cLW%|H>e5v@I^1cj!gXJ?rbgI6h z((=X-mbvWe=f88>&JK<;X-VN*YvZw13P6q*$oFcH+775W@|YgYRZ2EAY-4S#+V~!S zM?HDUe8bQ>{EGANbMU;@s=dl3Z?*4o*0#Pwt5_VG^^@Ir(m)H`4w11m0OA)9frN}C zam>ESTj=h8-wk=DLE<%sWsa9j2T~|SkN{s6E~7i)ki$hTqa!YjEfo>hFGyx87-$1E z!jQ(|1p?AV4D1d#!l`4*fm(0?Ofn9vJv`NflRoXwhZ@FXRV7tbN|oG9x{e<9wekV4 zFgxdI=YBUYAG!&X#6wTD?%A{6gWvfmq4YNL0hW$`=yW|Iq0$Bqa}9kj0u|el&IgXS zA=6`5PrMxV?}rxm81F`UpPu|Yh!{TSdG7c;d%HfnGeh+PBgcI+`)F73IOj<8nfZdS6q6%7EQ5gSD^&Lsqaw8*S7 ztl__Z)seaIL1RPQ`7bER8qr$M-hViEqtJHGxs^lEwodtiuWZ8}Nwk=gk8d&G`CPtx zr$HBDa3!BCK75+@=wMES4~A$-n}s5boUS!3XjpAU6lme;eHi2T8$GjGf+%+Q< zs;Qv)51-p7=vu$M@)dK62uKnsATk1{E^AEU6HFagg!t?71^Fml4~77F{5{|IKn=ft z<5A&h{``oDqHzFdqNsADilK>uC=EmC6+{ad#tPG_nASjlN@=8;f{B84h9qKXVkjs?p$Zn7Qi7?XiLGWJ zh*g4UDuQ7PV+0Jsg)t~ZAPG$+S;3&4WThztsE1l&b`{M5NCZM901+rv0wqp!jFi== zN@+@K#3$(Eh5z_&=e^UjWh_MK($na zV*&<-mZ=h=B0!^KENp@}g4RlZVvS%ZYGQO#sv&JTCIX^bQj)5pGG&>niK>YKEwu!} zENUz?7A%!bMH)0n3aA|I53LOYLGzU!a-U0_q33hHZdX6;Knvb;=~K@DEzq->tz-HR z;jia@ALI`_|6}Uo4ByIWc!&@1n4jx6x56%?;^zv%QZ0<&L6L9kV>hdR>#EwLZLNoF zH9IeiyTe_g?K5|4|0>X_Htt#OIEy}HKvPaAe}IO+)xIha%YM$QGiwJ@6W}sVj-}iA zQPwG+TXHHCVZ)6xUn%2jJX@`?7sk~Yu(}`i5Grd258fr}2NbAK3{R>_i`*7o?u(not(*|gi?2kkfvO)ShM_6eU zp>DH{n$u?vi?emBUMO$0;(2>-ePY8q+)ZC1z*!CECZ%fKUNFA2+_t4(7?rMB+*z4F zPBr6HEqyq2IlE*d3s%n2Ng-gZXS89ksbYvt3yma|tw}IyA$>J8YssupYSp1d4|{?C zoNs>Y&12uP@pQML57vnEK3wH2FZV0IqtSDmt=;ajcB8XV%-Sa^mnjjRtAECurt1EA zhr#??DbQc-I~PLzpD!v0K_GiLp&&vM1cm4ArF@02Q7g@(K>VdE*CgIXHx4z8z=An}jqToL+v58*R1 zWEvoVFo*)GssMN9+im|VpnH4y#P@jd;yN0r)mieM%y}P6PGtd(Hgd@GC^p+9l-8=C z1P3Jn2V%rYM7dx3QL%9a9RPr%kHBW~WYG@_2#S|EyFsHvcEZRSV}GxbuNBjsXw!QH zi%?pKKJQF>hpepLQ-)sf^W(QzIX*TI8>U6&%u|D74ax$@9H4A~4uRnx1y}@l-JLN> z0KT(5_QQ#JpnRwm*eF#*;o*cNl|>N+MG;L=Bt=t1R6!)cRTV)M5mZ${Gc`<5Oid(H zMMPth^t_LUt?>5zpMNeHyw3xtePPLWAL0NTf0O`mQT!j^{`$xJ00czMzQzDsLfPo- zNCkjAfB~h>ECAEnek@<)0AB*we;Bi?VJ|WC_%!F2 zih>%xq!B6snxN)VO9>B zE--ers&cFRxJ4q6L=xj~!kE7oc2}l6B!XC!%Ic~(Kq-RF(>H3HHSBCtPSDPKbT4j^ zCx`*caoM-j41Z*8zzmW|ru_QF%wEAE49+?xbQ>mcl2DpnOJ@A>Lf|A(pu1uLyc}hu z&F>LTW!5b;DEt#z_lONmx&hE;Vi}kOR7E#thf)ej(M>S~VAWU|Ja&iSbFST+j;t7I?aTo=>n~|+H(b+(O`3R7wPrU#@|!hQfrX`0twL6_ zzA)BLX2f0YjVxN90b0*Ck&8DWKt|3}$#uH{JJvjO&f9utaD-;%`Vc&Pt)7^5!*%G> ztw&9twtscgTDF*N2Cb&Hm|5{=4`r;g)VOejv!@Qvfrz4<(rRnK+FusrIk#h-rrUvF z4-N3K>SBvS17i4&1L zZO53vvTrkg`|8yhokJYEV!N*W>o#NF>#~EXBY!JnliLW9gaUiQ#4(fOw;WGxYzAX4 z`Qbiout{xwZh)?ryInkNYM+Ab+BUwTdbS@bF!ICHfC2J=AQI>S)CsaZOA*EFvU>Af zZ^_i|84J0B%p(|Me#L7MWXBwc%N_Vbw(!7O_GK3A0uBM}Vef3y7f>(U%;?wx>w60> z7k?dX+7gClVZzKvbOLsh8R@n4(#@V-hf_JQIxWUQY|bYlz;K~XwlyTarzd02T!A{x zx`06&9d$@C*I&@|&Y zTQh|lAmku`@V29SSBjNuRb7+b))HeLO@B(7!6PlV4HhGGE9KHmvC+s zB|I^(PlScgChE+bjF^U6%};&HJ_`U^-rm>Eujv@y2boX3__Or5;{&tIb(qZGi`8n* z>H7M_M>WwpF;v)q$|2qy4^rR;PRDGRE{Xtfg}N<(h}RE3Ffxd1r|A=+qpPL0?SG?2 zV>+lA=R4=57y`716~~@&i3@l_IgWOI=_HiRMI#Q$JHwb*V{CCdi3eO;et=VLZ%uF5 z!Ry6 zupJhcUZ**}EjWN=sN0?JEp4`ri!CjCgi;A!D%G=1vo?4(0^|Zi$QP!2y6Bz&7$x4D zobG+AiL-WBJ|hMANiZQ@{6x=E=JgTM=WKqD`nH%21U?QUEH=4nKQyTB&v9@}w^EsX8P$qy#1b}DG*5+!p?0As* z1B!=>qvc0Sjz<^TAVfQccx_S8;?UW)2tYvuf`%y)6VW6AZ+HrH9)C^1hv>k>wdUUQY#znx_C^^qVZeOtuo%NW*Q;e=d0OQL zNGX?h+tH#Eqj`6cl-(7E6*(L~Hhxi%h3g5@%DvjEom%f}HCo4xykLCc1F2WT3ZBVc z&>=vL0!$!4B0neq44c1_|O%oJ@%{1ZW$&zZ`1SFjlfLWMzV9jvLnXt+e zZOghBy8z^M3!(+m+JEc;a*4EJ`6j6+dr5O+)vv;2!X4Z*GYB^Vih`+9+=>ZEx@`42 zDkvn*Ib)5Pq{6I)?^U+XN?Y8Un|HT1YbLm2?t1nt46$p_E51f7)CeSaS$_q}$sRHW zu~=t)sxcj&Qcn&v@a)VI41**POS=X)%M^OQFl^{Gu=sdz5`Rk+CDJ8f;x2B<7o;8S z(WS+YWnmVIIEt~0SpgH`c4U`I5CQ_lGRyHbi(0fxMVF%HI_m+{H0+}Zo@No0XQLPa zPSeb@4U3qrqn^H?05{vg#lgYD7uXgUArLrRaQ)-98tWFZf&@D-%0gXU0BzfKIu2eD z2un0BY(I6OA8UQ7hW&DMJh%%Luze>-#g9jhON-OjdD(N=%#?;L9iv}Kr0mQ zjt$z?H^{<^8`ZeBTv}0z2q+|iJq6vyWV<;*Q(CZV(SW_?CK*8H`hYDgLJ0`7MT2?) z`UxlL=i~c^>&j%h`ZoefC8(`rsh~N0sDJ5xc(146`+w<7>NC0A>$(#$GN~M6QCg&o zjap}2KQg6(MSPTyk)x`biTN5o@2^*8QpPvJTqLIy6n5$^I* zOU;FZ(<{|#CkpP91clJEJGhVLUEzjhJwRmPqbda`67bI&N+sj6Z8e>#3$|g@M%I0| zouQTQR=tD@8QXOXhF`8}!nG?VT1_zROw%sZ)qgX*wCbGH%eydfmuC!_2h#~s?I~=| z5)vncWn~bl@WzsMq#5iVm9i2fAkw1qsuhc4Qquw5@aqiwr+t&tO`Yt8hc7vt>i^Dp zz3we+#I`49LyNw);(xN^SGqDSXskNe~Yz2kF9f763L8GO+OV`{B3)rkLmA$)_Z9RxGlb2LrXW5 zRIpeD!+hs?+X)}pz*nGs_qb+n!Or>T&%h;;fzE&s=9sL6fg>W37@B63ikem-fD#fR zsKoyaLy6)3Jk)bG>l)7$hZFMe`4fu|lJS-qt0cA=o9&K8_ZFY9aB$UtXEvte^?%@m zT%8)5A;y2f0)${l9koIJpTLj;)KX ziaFFrOi+jq2*e065W$%yX6+J^K@^35oM0GuG*lv$75mMq395pss;H>?(e!f_-TFD$ zF0Z20(H~!GKPz*Xs;H=~X()tJD1V}gD4(d~em75%&W|p!$d8A^hYqogQ;H~}A}Viw zHQTjUU3YHr!0wx<#S}-6jyP8C^Mpkc-{uY+iHp6035cSKD5C3}Iqt?P?(9#NH>adV zdwhEwB7Ok6o;Vmf8bAAh7pVeu+#C)_Ci$vgbQq;~aof#vA-R+}7J2jZw12&^3F+SL zQ|lamUl_Kz)xXfiUrfoJor2kJ?dMxO$Qe(5UloUH%4d|)(Amr8X$L{EXD?~8wM<5K zxZgdiTd=c=ciBk2SlY^%CKz?6(X9-EK^+870izCp|HLYGZ{@Z*IJSdXmT+KF0@IUi z%k8EYt?2*1AQCWfJZ#`AI)5#2>NDS=cKwc(Y3MsJ8}wnv3_4C;F_$?ZRDBH*0Wr=C z;`ZzV*6q5)T;ob10wwncKgQ(eD*fPao1q?z0aL>KzOw`5zH># zZ=Jdhh$Ju7fU*vZCQyJ?l;>x`hHOR_vcZrD?`^Yc37KR{%>RH39DnDv`CiNbu8>&)93t}oI}XN-Uugk);$~^_5P!itGISkb*adQW>l!uA zZCrR$*G>;i>g%^Tz|<7U118mLkrgNoMuQoR%Q^A73}GRhUW|}r&fVe{v@t%&mda}y z>V8T3#t6fK?~es40NWs3dkeit9W>VXf(w6ycKMZz&&PtvBM3GN6UMxN;nVtA?3XFR zNH|EZUXV^96-FkR)@qjp1M>gLQu`Zm=KwnE6boB;D1zEFEaHvNqA;UZj9<08a`1M zu%HiOfdmX5umR^=+z11fVXLx9#Rn*I@rlQrHR;`CCQK3v=Ee#RW&v1evw9z;@sEZc zz%w@Zg!X?JUyE!zFAJZ{*UHlt;lXv$-ST8Re32kHE=T|o*hqw;9h>CAkFx>g30F)V zj$8)sY=6(jgiCyjnl35L!xg9=x#7VR?!bEcuu$3qa2s1xSuC?_s|SWqF5BEYQ#c5% zIhvU;#f-J7iU}l%NgyNGOL>lqYVEbRtRs~Hj6bWWa5;Al#VFmtOQD>bAU}_9jB#;p zx^z%nFa>KAVT*Qgz_>~Wa|V>fJt7|sv$99S27f_!;qqm-esjMF)vi~sPdd#8#-n5C z;OMSxr{i#{>l&_Ia~d~Wony7u>Fj##+49!QWeB`G;us}J7_$}0_jiV*tk7Md1k72q zi{elsU9Xmb!m4FvU=5Ph+3>l=e5L0 zHh)Z?Ey0M~v@;O?Pe~7Mjxh|80Fh*f%RfkBw$34U;iIg)?;d%cqXDw+gQiW3^OWtk zXxC2tMIP)Z^ebX6h}ZxGk6^dMch20mHtFrW-#CmlXK|f$u(vv!cc^BF8^#)9R?p&V zTy3>)c;9L(mfF{?y1oJ5>!ACquH~I=8Gk~UdMfMgFIw$^2b>=D*S0H2H0L<#jj+J; z-^9~nnCNEM-rgN@61RA^{g`eLvL29aOS?YDd)nPP%^dB{B#mrWIzF}HP0ravm!08E zPqmoX4!}OK2KBzOb<_JkjpCVA&ZAvm=fQ6MI`8$^ZtB9DJ$XZ(Wu>eK9$oZzW7nf_x6m8GKIMwlV*m2^$ zHlp0T4o@R(&DwUyk4!5XabF*$0oag2`hM06^9E+r!|%WhHC_0V`Ty|#zR&f<4xR5+ zDZhiK3x(v7<-+ZZAtP4tH1g$Ie}A3sQDZ`A#JT?ptmKD4+@L@DBH;*sM&H28#jfSH z_q5T&H!#_IS(H~5sFsd{gznCriYP8!rTR(yH4E-&4hledLekG5FbIpXyG|;sNU}C3 z@ZMwW4D7<6dFjTAI(h z&*kl-;qZ0c@j==wRFuInOvP;KvZzJ2m=DoG=4L0O;Iv z^P>Z_phE)tw{JvTHvAyzX<0m2;5?{YS~`nW>cF%0KyjgUxn8ViZ&K&agRY2h+Fc;N zUI(h59-ZD2h-P5${(pmq9y0%(zB z$nDs3ET0Wua}~{i|0vM%$G(}Ic+`0;>;o&YeGjBY7jO_Z1ONsQ6Foo=sF(_9Wm;e= zB46u*Ow$Z@l>6Pe$)J`0(*QF4xlT$R1qdZ80~k>^u>1r9Hi7mZ(3sp`kbp%G=N>Eo zi-ea+3J{!N0by=mqwKH^a$&z=01I-~O1iQ76H2Z1+x=_BS^51szo9?q{r0p1!Tdx6 zDEnUimXw7$`Wk?nBtS(hv!b5n1@}{-n$iI_U85$$156h~LPUg5VA{|VFJ~PI0N=nP zz71=ao+qA1e|f%whM#^9@lL<-_>c-eO4pj?YX0yI#Z8vt|G+eh2}XvcSmrAOx&Wf6Lg1{a^+dLyzPLHq)c~in!d; zSKyzftwIh8zn!S&E!J+#0 zb$DRCy7fcjkPN#X(HH4sVF(b|W(Yen7qlmZWEpP6x(;rk z(hslrHxN0sf0Z9}0hHyuS;wj)ltx!KBZMR3!%v?7N2FhGQL)LdZ+_z)FPosIL;KAC z)7pMsJmcY=Z5gj@5WS9uPtPL zJ23v6@NpmHSY;b;v>PVvQC)N0#nJZZcLLyd#jA#^efhvPUh38L%RT8*3FBGvDvPlY z?es38fAXOpEcEr`JvbE`wUErKBb8B}9>b)L6~r!!WIl1BiQV?M9<3Vmo%I*6f3+zN z4~PFRA4tU&@!{4Y;si6p0^Be^2X5#}aaQer!9W2OX0$z?0eCCJ{wd;_0qJHWdM=k? zld#s8`|a*&_YY9zD{Q2Jliwu_es!m8Zh`!SH*z({fz+WVjI*HzCJWsN!}mY zL8T~0l%($}P-)T{Cmj-#{KqQVesE#7vETq6oCp(4ZVUj_P2uU$jpUtUf1JPwARf^% z)C6q<6T9WznjV{bN0@wQ2Pfd(>GiQw=)tgkZ5f|k_7?l1kEd2KvR{tn5~Gp+8mzf~ zywE`U7uk+h`&w;_k@oB~TYL$KA4(t+0a^e)<3%E9cVln30i8BKj#%#m@2hvYA=&U) z*C>A+I|DXXaV~v4-_V^8f3bg^h;(SvN49`%PqoIJDv!IX5?CmlpLbcxzyT~uv8REr zwe)NNF2nYabNhz^(m7gIGI`?XIJz85qqK&R5B&|f20pmBUvfp?1{(GcNJx;7|5XWy zIz7a_dMMBA0sXXKpXOhG>5aQmYMeV1G=u}s$&OlOpU3bR<5U};fA+1EeHn+UrMKaM zF(b1H1M)zyh5?E-r^H(uhgNhKk^~}YJX1ZRlYnKBQc1EE&~+kmPTM2YXc|*VFK*{S z=5Ia*&T|9kKfKufM*MTAdfsrZZQS!1UWT`AXpT5dzI;<}9&kvyDId)~i+~9qP@(G? zNhFfHGd9z0!^9iT;fJ3_Ta&^xT8%^@lIXu4n6qNiEi8)u-Lu3(#R}e&%OkpW*KAKoa7o*} z%r5vSJ5K+Ue=cX6?KtbUR&;NE^D)5e92}e(79$xi`cdg}kE;CNoFupT^fE#0cgJKN zN#On|fA1TpNm-G&n(GcmQDo_*0K6Um52utvR|bz3li8Ny*UfA0jr`@boD&W4P4fu| z5seX&s78t>LkkBDypd;82NYa@vX&t ztFF^L{G|)}aS7pc&uJAgPZ9bh$5bMh*>10Irn%=FFVUL&)>Hg4@v~Zno>eBpeb%U- zP3Q)|YgOXR{5vkr;n_61>A9P>t${at^UP4-e{$b0FdQa!(ujwI1qA+Gyx>eEqG6_9 zx*vaQ{yWK^KLocczsmr~TIbw#2a_{7E%B3)UvGc4`SJsN7TP1t{XKX2@EI>v>+7D~ z=c{o0XX^EAV%mY-(_;hGU0Ie|tK{9EJ+}IuFK(MO#!&h{d2y52{7w)aJq{1o`;WhC ze^6!#sDW~pzA1ct!0$NwJFlU`uhKw3b~5`sBMY)SJ2IvY@93E$^JWuYC3N#7%QK+r zRnV5E-VCRoi;-mTnSBf^0fb2VU%H%q&TGuOgz2C2H$66?-417=}KgSHQ+&YbXf{R#u^Yx$X~J; zbbxsc821v+w1=)?(8C61uukv0K!Co9XYQMSZ+eiVv@;~j>Uef2E*4x&ybrBe3QKO) z5w8yT9HI5VZ+?%$i#8h08X2tZ3pR(QTR3i2d?Ds#>O(pZp+Jue`OAsR3{)&bf4eO% zVju2deq=b8aPQ%zc7fmG(5I(NPtKX}-1U*u(rVH>_GweqteM2ZipBbSJ-EO78eV+_ckF#O1C77c=8sM1 zE%2!Rzi#%43^KfJ?6((4F71T@Sw~1{+g3agVvY?J*^O*8IVTa)&1`Nvf5oIQ_RqI5 z>jOPod5;-?YwaC8^%RRx5_lUap3NW(j2f1PMtJKe18nGRvFgG(bRwqWm^D+{_Xr>j%;0{J`7(D~n0 zSBHkaZJP1c7OIGlh)hAS;Mfn$WA-J^sR!{{IDU8P@P2IHRxODc2{O3UEu8gAwdI<0 zw3TX~Rkv}yL)cU)GuGiq*T4nOsx@ylA0n&;r@6ML3<@#(EP9|of5bO^*!KOF#>_}P zE*Tw~>c4B&=E9-Tq9Bw){uJ+`2-{;zb}TXhZpYB*c>{^D+oIhW73C4&o(w6C;ZJODbP4#3vo*n(O*GLw$$y}b@v-BF7Adh=Ks5yuzCSJjz z*$50vAD7s8f394@TfMo$#rM7!$&Vgcaa}VAK#G@u+MfTT0VD8ebT}PZ7a%#wuoadJ zzM?*feFUrP!H2)34x>ALe!yLXXgBlYxyIdZ*C2lpun)1P2ko`pzR(@R#g8mC_v?=i ztz8@$_;B{V50mkI&y#P7@BI7r?BhAP_*CE^%TGOif728BuZQ|XH^LX<(XX0GVe&=( zo6Nu~cV7RC?EpvKP)Q-!pVR&w@_HaRxMhFH5?zJ6a(>PEe>V`?-=8Zy3EzIT^Lu=F zXnOvK&S(BDKEC}M;&NCtoF*0AzZI`&;g?&S=aJa;KH2U!(-Y^3ifAG!N@!_E#J_Ii z1vLAnf0XN)T|U3;^1VP%by5zB5|OGyS{v%%`mmfNX-@N@YLF{Hd3(W6htK95jc8`z z)n3t5O>}pr-o1Lwr@!o*(N)(J(cuQR+J#_ics8?7)Y=#DbYf?qWsW{B@$TWLkHI;7 zTEem4!b$&-S6Hqy&;vdBu<&?n1Ar)zZN?71e{*}+7qL~*PA5(C+2Z2SXY@L|y{M}0 zF`DbH&jMcTwNYlfy9?Xjhngwf%iOIOM?C3KwlyItv8of3O(D-TW+B4mbkjkm2_~rV z+X-a~36%j-MyP)g?zg)AXZ_aJerNdKD)V1L$9a~&(b!oJv<`V7KU6z^L25s1cwBA3 ze<8<1;QZe;W;%z)m{5;?V%?HyjhI}(1^R*U0mkQR0kZrBPs_M7+Z9s7X7lwqiII|z zUmn#T7C0>AxJcm^1t6ElTL2$V}T-HnWy!^3jiRn4B6e}OKzgSw6da3@TX2bSRE8?asoJY+V?}i z2yX!-$Jr=mV3KY=7yTZHB)lF?t^2O%a~fv~)8f^5Dt4kuo>12F_wA5y_}adme*vQU zEy5ff2XjG29v=(CW002#L)WCS*QkKg%ZA%{AW0dlKa}a_WDQFKfF%)-P!ENG-+EnHQjCnn#c}aq+o&YC=x{iOb@A_lMlQAK4B$c z9f}Btb3#5|k39}{euKex!IuWEf8jH@7j1nMCkR47kPaMiJSEDos8T8Yf(bP>b6_(7 zP0Uf~W#kVfm@Lry%@+9#i`-}Ja-GvAR1HU8c%O~-#zv6Eu*+?XA zQ2!yO>^JG@5n_NI-(h0~{aDRZo;bCJLg)Aj)0?sny zv;CEClv#d1GWtx9(mq`}c5lV+iN|H=!>@7naY{tl=?H%l1CNh)--O?R1cfamlG0qU z>A$cA`Co#<>Dg0g1s;>|e?%4I%#)JwyUi@>v$5OFo>-f!Rr+(iZ9Ub!z`}HGC>IbU z^8jW_Kkh0lIey-vaA%t4ZW?+?FsA+Y)e;cL6iEC+kEt1I1ssSkUMD-mk#&UbW7{4-sf?b$Z`5m`s$LLafCI*h1JIy2 z=Y!(y1sLfcn%5;MT{RLml=Kw{D_;u~rgePCR*Q%#&`T*d&rEB<3Lw=t2Mt z4c?78e<;XpGL84NhwufgU~~xK1dtW(u^}=tl%KlUNQ9)J8Uluzs(GTXXsN`Yy z?}zUXe!A#4w1b9?KrUT%>UR%%_7NMQkswA1giay-z)a)N20#JQy%b*ndj-?kX55cF z`#|;Bj)(*nw#z=66imEBzCws-6wOUJib5J2f5?s*g1y-E*&kpH052d=UkOMaj^jlYT!^C zp#vfBzjm?)x4YeM*|ywx<}E@_;X(ns^>8!5ySR4fju8KtvKfcN>G-Lh;e}!P`X8e>}kj zW_tN&fF!;+X7A|{x1I)0GG);7W(m4G8x|6UMMNfH$YNyxZzXOznIV($Ll7(?{rg>4 z57_kNGS4%=OgSkS#stVrG+MJ0bE@yE0CXE%S8=oHa5&w<4zo%(@PJ2aE(M>rKo65c z32D{B#4gZQu8L_2Lgof9wf5fITyBPT&Kq_`$t-)OYFM%tQ{Ot~>cXG&^_O zpg2B*VQ`s}4mb?53wA-V-kFVF-~pltPux~}Tv^;GA#kQ))N04}&N0t0Rq$W{f<5*^QMc#AmM#gxH?ajOtz6o`bu z5CB9atfa!jQGi6gVM0LHf4=7^Co8XKHX0X2e5VJ$JzIv>Hs>Esj;=COu@t+mjB>7t zY+@AQxxo*I)aO)l3ULjL?W8E=&H~9D2fxA5(bq_v%C`huIe3EJs02|uP6AAffPr*% z3%>hRjfVzO#ZXmRz+l4HxzY+tUgd$@YwHX#lE?*o7esl~Ig>sFe?P*?OMMD8@O{^P zDF%mKZgH3wO%zm^p^?-#4ZK+3YRedETEHAq0z-TPBfhZGLK+a_b|4j?#<~wP6S(9- zK$0Fn^*A$uoIuRRdZ8(N6BBllPeMTq3=;b$0Sg8g5wl2`G8$wsKy5}uFu)T87wfC% z@zy-Gwyk0Ht2YO1`QD0VZKe{Zs76&!MUPs=vkm~e@2<)KYqV`mW&FT+4orC9By7nMoY${ zAunqMf@lbYriKcKlc73?$3a2-ALcn&iJ&9*B91p5^9xBoe@;{PJhL#wyG}blQWn{9 z!7)e#A+EIUyoS5~oN74$4<;pzdZs`G-q1K4&oND@(Boji%7=){`vj6ZL9a{Nz?P9G zV+2Bi-duM+zK43Q0ASlv;yy)@#E9Cyl3PA+gnZ7?9BpLsbWqjxl%< z>UZ{>e*^m#DI$mw?dWeprFr0^bS!6tWM<7ltu2(`W88uJ^kWs=%?tg0<=r|-h0^E^+&CXuBsd>O@(~~v zFFP+yrNjr9c4-a+&%k@Y8T~dL5U@ANv>pWEe?R7TcXxGS!W|%>eFx$J_d8I^LfB|v z+y4jwkL!_8KlH@}#na)cjIU16|5`2X#eQ}aj6^t>3@HgoIw{@zC`_J;W6OEgY4AD+ zS!@j6V|C9zGt?5V|#t8G| z2oe~8a#8dk(gbI$@zvV%-8{=nGp_~~e}`}ciyn-5=YGS38=iD`3p^l_S#G+b2sBQ} zl4SO|#C*8V4o5jS%8w6kqr;#qM;k{Xb{mndF*j`iCmVhn00suVL6mlo=KtNv3}>i0 zY5}+q4{JwKd7^*}gPE{TMZs%^2zl$&@okW~mdFR+e;FDzTX4cVZ?(?U^Lt~#e{unt z77Sj-dz=>_dJLMBdIfkrSs=Dy&_lM;H8@=$2eIyKI7t!x%>@Baq@etyI#nQeCFp#& zCWGd;hYSn>m_t7SszwB}O2nKrp#zN*s8O?6y(xfqx)Vn+oJW!5dMT$-NLiK+r+CX2 zy5Ix^Z=T0^J%$)_vtEGVg+Z!ce|Y#O^Z%Lt@9+E=erkHX?NW@BT0It3R?-@O&9bZ`l>X-q1-ZY z_`c@?QFJEkNDhzU{A_J*EzCrQX8rOTFT{uEMfYJrw{Y&kzjOYJ`0m6@e^Z^14ccp# zp8J2&d@O$c&QkBQ8^`=#(}T3Guj;QO8jQoZL!aR}?Zu0kV8PH9eM3a6sjm@j=xYqj z+}Ye!o1*viv_-v`4csug#__yfSbp6x9+&sV-CHZJ`SixUrJ3WzYv z_S;<=HrxK3V;TvNE|_@4e?dq>1H^v$#G(M%0of2c-HDa!*Ss!f5b@3HteU1h6rp5W z44K2v(SGrSAHDgN6Q31P1Fro!>pkuo{|;CU?%%zJvYoW!!alzyBW_UX&Yo{Nbcbho z=Py!?<~_YfN$uYH?9;M{j&FyT*6$xAu zu<6gu#XLEG38K#KhFP3$z<1BV`qM>!hU21tR+`1*X?K^?TY08T3@E0d1D>w%8><+H z$m=69#(nvXb|8Kc|3H7K{FCUWZ`C!S*B&wjQ z=G*1@q4R!bz=j(0`Led@Hf5aCrsj}7V?SH^pQrTxhK&+Qf5ZIlIoBRKiLmedd-$4r zQ?k6cPfQv=iq+Cz{m8B25b2ITpZ==43vqV$9<%00V!TiA@1KKwJ8t-DiI-l=`Lm%xuMQh{5k9F30dt1}tBce#Iql#+%kQUQ_ zRo}kv*DVk|+9{UIbhfs_m;c~GR zT42&)+R5QJduFdU%Q_d?8GOt{3`=>Iu8Ey{-=l_rf0?iD@a)4f>i_jET+nN#HE4N< zWjbKe(C;FgL&oTEnMho=VjN++=2fw3_$EPRqYxPeciQr{9~U)90MB!Bsn~XOSTh7>tIa+=mtQHvHibB_#r?6f2&Ye(teHWKk9OC;VEG{ z{nD8)P=tl&Xk4xBcGt!Fzlojkl5^9ib`%!b@{1OUB`aUOrTZg|UpEjEOYREdj$}K= ze|!P#TnevWk3Nl)vCgJcy***SR5POsB}oWJ!}tofz1%IKka8d3bN9gXtE-5+H`4AM zl!5Pye4?z7yZTrR0qaR6*O>k4*>nQ;$s}RFXM4;qq}T4;4xl}r&!;KA6Q{S+8lCZT zM)s}4vN{9p$)`u)0{Fr)p~t({)1(l8f4RW1NCb)%(T@m_`x(XYNhFZ9@cbYlRv2TA zO}GvissfM>12BeTqzK+a1^ae#4ZwxFKMN8mH~}I;K!kwBN;9*MYB+Yj%mTAQ09ddJ0=*R04E@1g^*t0a@`4>DKhUvlsF?(w!gU%tv(8}RHn#iwlF z6?=V)8n2HQx6_Z39De`K`}p})_8|^87iJJEcDBttw@1gq28sw6D6={dN*_tA+SCnu zZ1k28OD~53vfMjqY3A*%vAw_`jO{nD6Mq}4ll$LXcAjte5EoF0V4<*-xUa zI9Rk$WPkGQ78v*tB1^bD`|wG?pCVD@zj*Ey-+fN z0_M%g15#PhL>r`t5YGJ~9i;|y`I))_W*R*#ZUb55fsiE1E9$rv5k;EL{r^aTW`D2B zJN(W;#NqaR!2D722HYd*i=O>`QE#{5i{BhL9DToEYVrp?G+2wSrkl>2Td*A(=K0&3 zg4s=2X!)XL%YSbghS$PYg}vcUkxuQX0FaT_|22ajF93)pGqzq#G)x18OIHU?WEGCj z(SRN9LHxImhs6C>5_msH&;h-0d4C&kn&~-D@wQ^a!>cP{-OfG^(GX4dkr>TLwKJW% zFyXji5D&b2vE|H#dv1I~;pfT*A?gPE@Oj*$Up58b@qU(fzs_6ncHi0N*Z{G;_0Fif z`g_hQss-14XRUMBtkBBFkJQEX`c45Jp6yh(+o0K`r9%hor|(XATqV9|oqyAX??w=? zI;jjSG)p%zptZtxWofOgRkTID=@2vR#goqZ*d5*1@MG7vO;*v=)_r1fz&Uw7~Wq&W;qTQa~gRn6BCMbJ9BA7v6TfmQJhO-Y}r|eDubLwzD zz0cNrZJs__z!4@%2qdGCKZ;rWxu~hbvP~uw%Z3At0ep7P}8bCaAb0 z)esu?yP&`zkSd5wcrm^_o+@vUU>R-b>Qu$Di;WrK(Xf!}ZwwQC4nD{e#?yt>2?^D8 zVS9b9U*bq)OTIN%mQ3Ak_}0F*4{hUTT#pUH`FVN!!@F?1N9l2LY{2Yt>+#L19D8=p z*dPZ((Gml02V1WkzeeU_$#C}M`UAY(5 zV{`;td)eAX?)JN4&15j`&Z5yOl_2R_?|d#V7G^ibA_Sn2!ha2xj6^U{E(dki6HfaK zzf<~_pfRJ@3*%#Ht*NZ8)yt+JKTF9{MoW|-nJHYZ%(Kr5J}0Dl0Z@>$-s!X2tDT&*D<_- z$9-5?5R# z0yBPgZrHl4-tf~eEYS^#SY``4>;t08t=^jBdwSd}w>`zcxaAJY*XnmR>}cu$YgmGL z-hh5z2nnk@i#wXB#P4(xNgypU)`oa)IbpL}XTFDdd+SlhXw1y>V{#&^9LUAQ+GJYX zyd)Bt-hbA`sdqf>G~GbWJ}=%xZefYOj+`=Q{d;jK1dj=mDc~@^*zS7uqCqoFsOi_z zY`ePzf&*?F&xMYdfwZOKY&t!Uo|>)9wDn@|(~mD{Aa_>P*bV68Ebw_3X_(J90j+L! z%aAxU9r5LWzh%3f#cr2x-fST(FLFg(_*v=z5P$!wNCVr`jX!>X-`R)%?K-!Ur*4aO z8m{kWwB2&<;fiQ$wi%A#j4v0I5sBjS$2)J7qf@ey7U71!Zddf#lTx02T5S-fw5UYFk&ajn_r(X#OU`v zAfQfd1$&J8&l961fUjV3{z)NbK$Ljhrr|K`ix)*xv2+|W1n2^b8#sH0GCuy2mVbtj z;7v?~6#+u?VkUfEYu1A}1s6IQv z;SokaVPVt_#hejw;g|-d?%D;$s8z!Fu2~^UE(OU$oWL7m6+{Y@P9_fhCxyjUC>X>G zGXx@8gP=kMf@yNwwMC?5=9Dr)Ab$lsWyoPTQc7_*<{dL83>ks~5D<|h%9?;Cv5%VF z#I#{?9Luz2*yTQ`31QG+5e`<}EO`(FvVPce6MxKYdGaoi4BCL3*gugDxDm~riEy%Ps(zdzB-G3j7$+HfQ z%t1Z|&gQNdW8+O9gCR zwt?;JqRAAUC;@#e2j;=)fDMSJlN|~Mi~wCsB$N4ISs%uLN1N;50c?c;3a;$C_Tshr zyMGxH@R4{e`p-%MvohrWqJO`eEi{==y-$5M;d|H!ZMR!*Crw%gd%J)X-2SBubJ~Cx zZ2Y1O_T;B1wj@A|%*h#kvrznSyg037HwSDo$y|NkD6gxP^mj-4=oUo5!V8tNIv+-F zg#g^l*Ps}|f|%wGFv!-&(ch~4>1!83zgjLH7Z3S$Xh9G!cxW-|kbez&8p@fl0`~4= zoX(^xX}W+A3psDA-Jlk!mjp8i9CQQxKwA;aL6b-Uh-Z}a83r*42^nksm2-4CgcEb z(Y1~C9|lkFzlmn@UHW_5_8xDMjeq~En|iQo5rP|oAdHXm(eHD@#T@rbp{^nXV9Z<#l)8ET%FA)(fN zE~|Uea;?-*75`8Wel&~;$rLverj)d3D-nLxNLm2_iz3e7muJGOjOqJZh&*bY& z;*JY|0af?e6hM{av2UJ$Z2c4iq_6mZ59)vbUij++gCh2f00$ufB)Nb9F-a84`)B|K zV{ZJ;tu{m=5`S#Jdnf>~;m&rB%^Gm}H@efVwjEq30Cd`Mn-8lUIR8xcvqCjJn}^4G zziq^Mt$4|Qm1j5WrS^L>w(i%C6Nlj3aC;rU9kLPculwGA*}JIk+VPM&b_^5O$@?Yd z`|m6*-h73Z0?qNww0;@=*$h7epQ291i_$BcWXEG`pntWX05P>{z82ha#?ByW00!MQ zfdeZD1L=Yg3rNNTAiJx|t76s=ueG1~yuWwp{x)Ck01*uk&fo|7N>fU+ssJ+S zZ>3JoaNqD7aSalrAp+fs0g~sWq#xG6&Ix$G?ad-PoeYP&W>i5Ur z#P?_LpK&&fU+$0RT4emNXlH&B46Fjj#>+AEY1}VdR^B_ClO{e|t;$ug)`0$X&W&&B z%921ontsqke(YA?!eLqhWC@}vkoC5Wl-agvv`{P!XF=O7zU9%FCK26Y-L=uy+%Vg+ zn1A4F8K2_+;4FSl1A}az^12P1otS0y9oubA;!S$xetqfxy-ojefQoChxrGq{#6u@# zyD|dGB?RpBr6kbfl|czp{!9P;;+(74I!W1rYde*kzx7bvQeYV%hA|JvPpeNCH$kPD z1c*as8#8UIRjP&|inH~J*?^?$gFtR?NPl&w-+iK!sEs>uY=OLh8%wEkiXb)*{_7Ls zhx`2J2PUbDo=#{I0x|Jj0v?Olp_Fpnd^~kMj>XID7yaM-()pgsO_Ya%STQVBFzK+Lp*up<8dVlmh z`kt9SKrGAt$6?pud^|21Ht!CC2u*mmd&~Fnee+LXw9SDHq}j8NMW6@(^gd7GHgn}@ z-p0@}y;%Z5cRQ%uhU__;xV+R4%oJrnI4tIm2giLHwTKsff<4dphm9U=Zo0D$CPqeo zQPLOhaq+nF+ND)V2~&l$i`W9$&VTH9UKrk4#n*~sm=ACsG&_#Afzy-Uw#t8u2t!VE z;+xt5N=8HoMSf20zWhP8h(Njl0QkbWS#Np?n@yPhSgs+7|8`0rl%Q_Rhc#5=h*~zP zIhgaoIGiIRCNjkiLu~Tu zUP^ZDg1J)urrqw2`|$D8&3-o@CAz9i^AQZ0B*z!FZWRr8S5TY?{LQ^DA=E2!+ zYn0kDN>gh^g%;S!C|rBK^T0X}1VrM7owQ&@?m(kJl-8;Oi6NeO;eTu|FA&zmNzs8J zA+f&A8k?H42;|rcK#@Q>|Ipx7=pGl}|8K9M{n98eYkC*I-SgG@O4w9XyG%cc`Ts12 zcL(MA{$WEduC3F&9|v;W7~^PnurF0GczGSDVauNSu4Z_gd2qx8kCYDO{VBU+K6a{r z!~b2F<^cN840_^FeSd)IN1qIK2=zNU84GkBI!|o#x7_#i2rms}W6|miGY4Xylh6aP zk7oAd`k!M6Ad$cjZRB(GVZ!mf4>s@TWtUFAJ|Me9s6SevUC$;Q4or90E1|sT6Mqi9 zPS_dS@jv3A<#ilgx^Cea@j(HnWP_)oxASNR5xuwfxS%Ehpnn5i(b32#af{9TFAjs> z^IZDt`Fy(0{)Pej`klTXY@atjdFklh-7I$rdm!?D_MP`9OMqTs3``L_y)KeVy-0HP zI(L6*0QY3>eoxi@$6h;nkBlPyL`nTwhKDpjhx9E2%Qz_Vap`Y)dmgvWC(4QkZsh=b z(^ZKRd;@dU+<$y6-Yv9;9_IbmjrYH2$EF9kfO^0CL_Q|t&`k6#IAsh2 zCo}=xD1K!NIb97KIYDhPh*}*OyL2w4xmW%!tZW;92H(ulm*`{~8;=9`SGjaQHs21P zzCYB z=c>qGfj?ik1-3R@{mv6V04_2+oI4-_+CK|!rhixUn|P~c*RE;y9Pj}R!h87lCT=R- z)?4j>1p@g3A9v0>qDXi1LuJh*kvG;n)u|Czf*_NQ$PdNexS+%U1==ho`POs3+cvIg zX`7ocmyhxg$qfHK2cQ2rpXD>m^HSwFpJa#07JkLg{M}rCqs7b62iAa1h;$i^w~KGw zA%FD%@^`ncf(AXkLq_{58s-QYvpKNn`Ulch?|Olz8a9>l?lc_w?fuR_fiv)cNzQiH z>O|AQh<9mm+sV{^gs#dz!~lDsui3#ZKd7tsC+i_(PhVNXI-6sKuCIDHceNY0001GqUgSY?~26O2kjOoun4n*xc;deeU6rf%{3wO#qyRdRDZ2v z)cOH)`)n@`ymi5&DnTtds+ zII)5JT^Qz_^X-RrhO;K8tYV=5`3RuamlhBcOfrX0Z5`P5Sc0&ez z0~tV#xsr;IOg?QKpZhedEjk#l+KHOsuF!kCjQc;Yk%4v4kWXdeTVsS#{2%trdi-Y_ zPJGLQ{}-puzJ76Ig}>(DeJ}^$<-bS&hyAS8`AzG$7a#BQ>est=uHH`m?Rn)}dU$i< zEY7S=-;LqJOfAoAAKu=6)_>pR?EVjT>5={?KQ7&U{CjPKAJlwb{z^E*AE(dqemS2_ z+gZwfldsx-pWFYZeZ88O*`d|`uge`R!~B2kZ2i8M_(tAaEBrgia--`1FY3Q*et!QS z!S{IGt`U(YWg8dZSy-=_wHghjxZo0eLtl9}Hb8=fl0z$k2~n@UAb+0K2183dw_cDj z&)fRGHAnFNIQrx9KiBd4BzF402j{-umuK|WPul*USGNIBg}-*Uvk3ejk|TP{J{LfDjj(b`R{WZSftIJ2tj_IOl z_WAgHcsi<&jm1xIf1kmg4f%Myd$8u7C~nxoX%eGpk3j$?+t5lGD6s(D+j6-|)vy3s zUOqMrTD@m)En~o3wSHa)7wNI--&u4U+Fj;XZN$OUW487Ajemb56(a>t2~RguZ2!J~ zI5Hv(Rsj+*h4C!GKEE8t&n1i6Wby+XGj1Hj)%xsuwL!I+i5XJMlNnS)+y}(CEaT44 zoD^d|G%jcDheC9QZ1OcTNqQ5K@I6$st9f-wazwy#c%L9xx91s{l8{x{xRKsh-d3t zU%tFWg@3utynJ{1eSUv9_UXHy9v&{{?mc*Q>FI5!sBzQ!UA{lX>k;73QOn9b@c&0% zqxUAy_=2%knDKewfQm-}(wTzwB7j^7_oUor6f7=L?vuskN#zRJu4(;DJ}HV`ikRwv{% zA-N2gCLC#4R#{t`38lG0g==+TdI8I@{yX92dmhfDG(gZyLhorKXk|Xa|yYp zYu<+0QbXmxB76%<5n=dBA1cSph+Z?dtEb%J|62bOZ+p$F{~CcjkH_u!XE#B^kVX8V z1Aj!7``P^^0#tB5-cm^NHvB)6cb+4W5X!thaDn;I3(8gz0JmWM*FO!XuzZjCZ*t|R zscUjr^}8sls;+x|F!z2>#`S!1fFyoQs9R>8G;nLXz^V;FSrG_D50k9&?YGd?KCj}= zA1?2le0M*NZx6?|Ih+#z8>*s)Fl|<&{YrAJYjWfBc=cI5pVU70($j&T(JS&pW&9i& zWZ&s%KDmS>l1U;-1td?{!{@Ah5F77q7pnKcV$8(^R`_gsBE84~d3H{PVPnMOm#<}> z9)IiGeIMfc4+p2kkIeM>ewVk+kS0(`0m3DtCcDO32GhADo!f7lvVEIV;@9lSA>_c< z^_+NX$5%!3^LqZ9f3xiS9GTR2RH1wx#0;W{0_gW`uY!4 zgpx@JMnXnO2_%o>IfND6I!Dca-u8zMkAM2UpAPPCewDQ#;s_OmM2rO(1K=c2h7la{ z;tIMAew>qIS0wqJX0S)Ag=dRNT_TM!k$I?F6^WL#B3&5cVBU%F1|UJ1fSO^K#0MqV zfsh&S6KH}`3{RXa;8Go_3{7pZte{B;NhT&qxdyf7;$S3~)^mky!fY&WkSp+xtbdQq zPU$4V!to~eS`BL&-shiOAK@0qw?>A^q$!+*YGZPCh*sXT;8n>qCYw{Cc!OWew3K|m zdOu$GUuVpz-P6Y%KTGKGd!9{nJYmhjiL|Lt;fno693BAtA}YOq2^8B2LQ|Aes>_xqsEvo!nd9 zn}ka&B(oc=1FCUHB%7K+fXP^2djds@SUg6`Hh|p_<^y}u#rY`2Oqgrse-PhS4tIn6yg?S(bh-jW{(cXW37iCyk*9w$F< zZ?V5FZjTSEjJw|#h*LD^!S76!%um{$b?BmG_*S=(#q`B4o@NK4r(|DRyLHE zfDB9p9OxP#nv`OFq-kSXJ$Uu@8E1EB{dkD3rFr}bBY6Ezo|qE0{cqL3>H zlYBrDiq*l9twZyJ4S#70&6$=>eZ+$^gi|X)lOe-5wmY|~ae`%zb@Ah0CBBEwN5hzR zc87QVC_k(^f&5$6KF@ET^Z$3|{#TA}hwXl9uaP8~`3+q);{HDfS9j?BKb2#>Emc)j zT%Ha;sQisx{sY1tnXWF5k5|^2*A7R8_q2BXZVzR?JmtNI=70CSz7MPI0m3AT3@{CS zW91W*=?=G6)2HbAu;s$A(Ur7$I`Q~(#&voP{~HCpWFhhEuMz zK<2-azNUBd2cPOHX-d!>Y}e`S-SGN2LnZ9;ZvS)P-K*2|z70O-diLMH=J&of?~9RH z)b7v$Xr_t23K(AYzH+U9TE-BuC)n`yaQxcIJw4xPHGka?2WdgAeEtr9i6c8Oq7;l? zWjX|+=vXM^Q*Hn`8u_+`ZLe%kjYGPhCV?w zpk7&$G7ifjqZytRq1FXjqcCl%*;=5U+7$-1=zn0^u0TVi@ef-fT|Vzd5&@A5;RBLK zyUXO`x5}?;j@-#HtvB#4r+UB$E3yOcw`hrXZD@!>%*;`KHjY7wmAZJYCiuGz@rlOw%E_W)MRrbAiw^}T8cS}_~_@5Tq+2pUZIXg8i za}P~jz~wJiJC=6w@E6)~V$h7tWBt=bZ-3HVl+oqG)|*Hl@r*P>daqI!TW*CeFe&;U zSTti*v>L&fZF|)RHtWw9l)+*e_h7&gr4M1X1ojC(C-Nw__5=#%{ctRVyQBb#bqMgm zDE`_l5TpV|dpbXX5aH+#umEN~<&>Wz+4A4`0L&tHpae@ICFdVM^w4vfkO7AC4u2IF zIUMF38UX_{^?&LCPlzkKZy>aQe=`AF3GTB-+ozx(k)^l&xE6=+AXluR{2t5wqOa4e zC)di(zN8JujZ#<;8pwbKzA>219{lX?)z1uAHA*M#;db}<2bm{Za>Z*f*!Yd>PWFE# zk%*G`Z=H{x`(54dYy2wLvS%yM^nY0TC;ou)c)FI1)sv~z+@E*ZN8GqZ^19+gcC}}q z_gF0be)l$DdA}!5qrd3x`a3R;uSwyl(*7@X-}V%4hMS%={Nbm$4L%%Wd!tXj)a37J zaqXj>svFH-16GY*XOXJbaW%Q_h6AKAJY9YxV3sEnjKw3Pu;Xkt99)h_Y=3my9Ii<% ze#f!0Mn7fY^JHGk0uwrG=F-IBceT>->uW8_Y&qLI!XG+`%Z4W%rqoU_ZP+$C5sMD7 z)sQ=G&H~1`dRjFu0pN&`WeZC7kpQ8P3I=@oKoCj^0O_p+wgD8rG6``2OBjOm9lTbN zpg6!21V|cMDw+VKRMJEQOMekX$ucoT%;aE}BM@n7g=MIS6sAas5|x?)&;}-?ZM0I9 z$pHi~(vv|EDXfzTQL&O?UI4C+(5XrxK)s+^K%?^hTOja}Adn=5C$<#9|A7F)WR+or zWI4Oa9Ap?jzyv(_3B;8q6q!Q0fpIEOtoAY-lsWtS3y4C2N)RLb6n_KDhiF5oM*ppZ zPCx@BEm9E?LPQJ*Dfqz%h!#X75gzl~&;cx9DqKKbz(CErp3{2VB#K@|5dXa@xuis+a{k}WD zg|m0t{BOIS&VL1pTY=r@@VmS#Pc!Ysw%Rzp+hr%WrN_8`IX6EyE0go(;41H4PG2|4 z`{(uY9S^NvNB8LJVtXB4u3M|stkHG9eSW|9vDnUbF@N6Av+vvVcJ&@F_j}Fb%KLoy zJvWQn*(>hTz_A$)9dy9 zx}ML6{mbU`Kkk=D{_1yqpD%BVMmf8+HyGa!O*>sr-&Kq~M0d|-FdfMp4TXQ)BWu3qSe@^*fB?xe z)6fl9e1Gz;0D~k+7_uNF1IhqA+${Erzutw9&{cpYkIz8;7(rxg`A~3)LYc#=kpJF` zh7>~!|7<{q_0S40XZd&)A7KE#`W{u?7v%k$UQz+oAQK_!011YZH>{MFTpx&+?E54iQuZ;w+g_A8w;xqJb*TaOWo ze}BYc-fhHU$Bf5chFiqerE5~Q*NiJ&+~aF+CRcj-1#42;@l`nb)ZQ(vPAa^qTHDK& zug)u4me#d7TGZyP@zlE)8 z+gkNuTGjlut6O^twXbCUdfVEyty=!-wtv>O3fHoGiq);Pt6uNCYg=m9`&F%K+gjDF zYWTMIwQ5)WJ}F-v@rwAbkzW=6UPZNQTD9}4+vnHNYf`WOTmH{gsZy;>MOvBCtxA^F zso8X0zQdw%AA^PenwH_;eXkE%_Z*HVnVHDV!%chommkX}>w)Imw`v}|wL8Kez<)#^ zNB|;_<^TkdnF9e!5Ry>TF-1a5R8b8h0z{Bvi{u3oi53gzpZEZyg!C19c=9Rn3LnV; zJK^a9DTydML(4!ZVm=nn{sn9g(*yY`Sr$_HkVz!~^H% zK{?f2{DxJZfaSS`TYo*??9=%5TYugY4hCz&w#kuZ^}E@j`P8}HZ{0F=!~$XWivF63 zyGDJOA93NScR<_mqt$xGMwX1Df)y}o6Qrgn3OjQoR zt-SbDsnrK!R-sb03u;!WjDPI=1gZJz6*IL8me!$GxWlzSM`{%-Z9=7L8E5mTTT-JM(80G(-*jLVx$n_P#QG=DVRAkLx2?86g}pyfw!nnFVVbQ&q>dM zXhIq&hKYHa(dm#`@$CF&T>0N#z*5in;y^6;)}jBD2nUz|M74sRQVx?5|HXj#5V}u6 z0HB}GQB|?iTbI)R0Dm_@J{6(Z&foyLnNoHz?IuY?0{RyMc|AyhX`y}50`7qTp-m1P z;sH40gFoeG{+N`*_g z)8~asl?t43ZGS@!@wrgE)jDnr&LpKkq{8Z*5Lb=TE5u z5)q#El#k^$%LJjQD~gf-w5R_9|H%nufEO#W%Ra7$MDxTCLQpUgA(8+=r2D$$o}?9L?YaGQRcK|H}XiG`*86?5f?K-#NMT z6>f)-n7`~A7y+JVu1{$_zskNUTp~hn1=dWnb4rFg=gxV7PCh+J)(Mf z6n_=o^UUsS;cD)i8CL+N=~H!ez}E`4=7Q>#b?~XTI{;hn%c|8iVy#o(n}cqUl{R;0 z3YB!wwx!!kwFO$W3YOK{!lwY;P}fSgY=Kg(Lh76YRJx|>)GAe|RJ8d{AgNb?4gjlZ zP{wi2>=ihMp=nbssMOsc$yjQ24J398gr`9I&bU zdA90>^(xdd%C!q>UC%X7qJ0LbQmwTLofGxKrL}4oRI60PefHm?l`7Oe>6YUQYF*Q{ zN|ky<`^8&ol{%KGohsBVl`8ckQ}eY-m3s8XTi7{aQ}#6qmf~)xV`}^d^`F7S7Jt;s zZvCNBtwRxSYUf*}TD1zfZCaN1jbG?pR{TyPp?~;lcrDd(%C&APWwkDaPbI2b8!C&VrB%O&13R-sqTJf@|-S!bTzQ_gVCg-W+dg-=cOLpoKfY?Uh2^~_Fnu&FB5 z%M5K?>+O?qN!S6bX#9@=Aa+9e0e_X*I(11;vORR50UBC@B4Q;<>agqf<6&N0$gu$q zrjrps{&*JrT!8($hVEV;vry~e13({ZqnA(`4bi_CnVi1w|Ja(2S;vW^L(HG-rSHqQ zFKw&-_x|O__#$cljOxiTS+nZYECo$|2?&R|Kr?^`t^ddczN|>FB1Q^CVSfOObE@u_ zWT<;+7eE;TPfP%h>y||Hp>ZiZPy&|Q-hdPXwE!>l46&ca#5`MQL-}Y1eiQ@u|L?>D z4`l$=%X0_@PY!X&1=)k+pcy88rt3+!WodTp^B$a#Dk6dr^?jGy|3B=o z;``78J0ENI-%`i_=Grf`0Ds7{{M-ws`E-87WJ4uV0EYV&QAeVRpn_C3TxqyexiJ^w zDi>;nv*_9jk1sqgB3}z)G_dzXdlo>a}mERlq{8$8XDc#;ww=_*JM>D%3e9+xcgg zY87w$zh{txyJ@M_h!`Hfqu6&vav1KtiG%W5{&yT58Z`~F+1HEyeX z%Nn&05Ng%8+Ia(hSy2AzNrb6T^hYPgF*Zt%j#zk!QLE=C`+pxK|6y%M(mcSs&Kvy$ z(ho>)l`0h*r~e$o>Wxc(_&?~|Qh(sijas)#rCQP#LmFc-B~pETKvh6c+x-Jh@-uwZ ztH1|_o0+}z=9krsCG-s!7=~af7eH8W5?me@v4tyzMbFifNAQPqi5tE^FOx7|(1Sqi zhU4Kz5S+03BR|6Y}UQ3;u{h7+O@SDN=lRW&l96 z5DW+56*dnfNicy01^04z;o>-dAQ0Zp2W8=yzt#XfIB|%nnuk=*IGQWE07l9Xen<)k zFh%~z0dTJQq~HAj2cG6FYK!r6kNp)}{)Brj(f&*i!+-U#LnwyWkL>YtB639NGJrA# zCb&)+Z{La+{8%1HXn}-#(9Hli;w*x!jFKoBHed27&I+@6RKEVGwa9^NOyH{mkvG^G zQ+|PwFq|-}8$EfEVZ7u}ChtO<@AuxV$lfT%W%fD&5VzXL>QBDQ327nxIMcu=45oGV z^QswJwSU?C14$6@4T}<0*wbv#!)&Twh}YaI7*xYp3~7dzVXlVAl`p7YRL0*|35hWn z!+8s8X^qmMeM~k~s8qhGw1rEmm((g^OZLFqN`=)6>TNC{yvs7$g~dzi@ZpTS#{0mj zaqnC9V5z+~n1d|%t;It6l?sLD1Y!)dx~2R`Revg9!i7UDx}kkSrTk!Fj6Q3KFQ{Mg zioYB$saEV^d5FV{3Z+Z=B<0f)bwd6~Dq{=k7vgW_Lk<}-KF0OL{eDWJP|FO(TtQH} zt>-Wo^Z|%4s$vdsE~sCODjcd`(1rC1rS%Lmtx}OgUjz`labK>F6aT6?VN|Hy``e{M zsvGK+e^A|4`H8CEe`?jgw;c8U4aOm>aoi$yHRm*b5 zt<`R*|EBh?G4T?u-{@|{6>q5duY}!EzkkVZ#NpzOMOwU4U*@;@t@zUqG%_mVOikqU zTBY8re5-$;KB9U}#Yg?8s1-}SRR7@cs+a%A3b>N3^>03yU!8Eq7tZ{L37^r+6itRG6!n@xDT1X67Lc#|v!aE9p$Zw4WPm7=3Mdi$loPIBtpCCY zf9pTm0dYkldjh2d5A6Uy5(nm#Ur1D!xL3p#EDW6z^Cr@Va0|5T_vK)za1oLi2VKzS z&@G2ihC}#O57)J2ebqykrSp@_Q-9kk6im-1h-W@0-26|&)F^JBd!t|LKuPx<6izd< z*ZYA6(MC~J#zdy<|8DoK4l1ma=~)32F@gl6C?E;!s|ZU9SOOF^f`woX zDjxB^Nl?FI4R|p)g6(uFT+}Z%;Hkd__`>~+s9wz-!c1jDYYb)DfP1#)rGMry+d`%L zSYNk>MO+GoL5M2VFUA+*3Z>@u7-9;gTk(cx3~8{21w$a1(}W79B)1S$E-IJf4g4w> z@j-rAR5CCs zK7?8*U?@=!JrXU1L&_9B-HV)j1VahZeRM8V?u7_;QSIhyGJe!U!Fx@3Jm7|mtMc>y zK%u=5nl>otIzbFLFt?QDfeZ_IO%)KfVe*j-kCAmSw}k{ItzmBEywiHRmrJ9oZ;40< zgx@2&P4y7aWq&uAZ<8lc-YCw&ksvWqOK^_+YMDJwvN|&UTZETs9#XO zS6pdU{9}zWG~%Oqj4zmqrRFfu%8tMnI|*^4r9%0ZW-6N+ZpFsPmz52fzZl_+GdnYd zM9&VhN-<6N~Rdn{eRTM7~$+DMP3mw#vFe5;Z(#J z7>o&2$*5tzxYGKDBJ&X5e89r46-g~!J)sNuv0L5<=Q35_=v@~Kq2kqhQD z#ut+qV@ih_TRvi3R5%~ z?6ps_g?~$NrP$XS^%DAxTaT`s_+JcV@Whys_*BG~RXTI+CDIiNmpVdY3YS$X7d=5# zy{KO?oq*qrahDYzxZfGqHA#MCaBlK54>5>$UHb|k1>DqjiM1{lZlx5}n8zhG(> zONxhR7}ET2a9mYCV|&~e!lQwVFvb{$_*KSVCVw@)RsN;tWCj?U>f=l#lNe!Et9+{-x`9X#-!ZmOz;U!Zhd12+Whm@DkF}Kc3=b)HX!y06IA&fA_7*sGZI7#Xy=2+Fq zsDEMl2CYK(8ecIt=R*i#RK(OR#2DL(h4_O9wBIl}e;a`Fb{%m#%gpJ19o9zm!va`X zie?sQ9N-$=cK=ydyB>eJ04Ml~x`03?Uyvc6fF6ng>R*0E1pnYdBj&^mpMgh()nyX# zWLXasspAAT(py%K?SdFd_T3_eAaIBjBY%+L)Ba1#csf!@YFb_fN!Ws&A5(8sh)gsc z3o6onPA}yWBOnBcBrSi~Rc3;4|DUI&5ca>%L@V__d!tLbzWle><=+G)zV{dHEd&OV zrq5!%=>4Y=0Sv3r3VIm=0iIGo0){4|Qpen-wHu1J>H~pMtA@asVoW9`p^Yz+u76v0 zuosxyaMs;uHL$>tt5CZ~3*^S*N`}7N6%8CJ+(}TVU9ts2_My1Ag69xbx}ki;7&wBX zP`KSfskNr?+{{UcE~;Pa1z(02%7vGhoAEZvrXJ@IRmPWha~B^%Ven3!;cI(A;Xw3#AHmd$f;zhgv2)0!gE1UzZ-@&tBt;MjpiY~ zRVtX5oeZ$3)wdgUQu&R;?l~BjBM?->5aCvsilycz-jTkkgvMkNt~JD641c!jRBx-* z1y>t)+-@c%seCaFR})mrT9pe)h;EfJx5lfC{SGm=8FgBX@;!@<#)V$ls^cv)U9*jQ za``IZQK{WG&fsyEcP;Fw)b5<0 z{W#adZSY!+(yd#{txp}h7=QUC*uwgb9%zQo3$#X*@}nz44S566aUGG zYF$?8QO5fX`D1llK~R+$))(+nVh3|ImDqWBdx<|zM$H8K%uesDS&8aUt6%=PJ&gqm z8mw0B_z?j;p`g&90j@+#Cqsw;y2Jkm76r$;EETY&o#4T zhg&ZFz!+wK>Cz~F5@E_HZ0*tNL_U7oZbUCyIDrcp-ivcqYN&<01)NeLZ^YfO-6i}0 zp}N^*nyoaw#H3Ud%ztJx%LixlvT(|mM^D}b4`zvB>wGWvY6KDT|KWD-0qubSC6;6e zkOZLufmVQM1M8FAOk5VbOFGiC`76XVhU_^9XtUQ!*nzO2yg-j0N~*u>JFs79jn&?;ei z;l)ox6OaH*023k+D-3|lr2|P4C?^cUBjuG)42Tj^QWT>}NkL6D0*6Q#0eg}(An*0_jk`qlw;vqgNYjsNIR$+O1vPsM=$3xPQlQE|qFH+l}?an3}g$H>bsJ zs$wpjLr}h{C8795CSP_|+!6&vwog;u<%TUE!$ zrXkE%j7pEV<`i9ZR8-FwUz!D^ky3V9YFR+?OLr(GU4lp>pn#}!JXmU3P(n$`mDpX< zAe53uN~9a5q`PZ>{LXoQygBc@^JeayH+Sxxdq1BLE<>I*e(_G{R|Zn$hyy|0^j97K zq%-3Atc#`B-gKtYMxCo!6p3JMGfFLC=HgAjXgiBfj95+iEStG_jK$6B+*+y2);e>) zc-Cm+#(X7cO`>a-Gt530SnO9mW*zNx)UAuxt+lfl=NQwgdU0_t$eJPk?*-6u3BK94*<(F>b3~O9*l(xWIlC%Xy5FZH04q1B9PyY( z-Mnf^l`->BuUxW%|6<*xnr6*nrdms5*fAf>M*CQeWK4^asw5J`!u%CY{22;D1^qTW zZ>M{dAB_&`VIS%cChxE^=#^NC1wO`7zR4*_JK_ z8ck}n3{p}R{$!V1{z=^<351UvRf$66PuaJ5jEBaNRm2TUSWTu1*&u`0z@!kvZ0nw^ z9vKo`UuIv2;N{XL>PWVQ%VkT1_Z7nXKs0f1CR$+J*eudx zO2+~faOaJ(mVZIn2BppWlS@j`2aypT6b|;Yj;QX~GkyjUl1ms6(;!wy8izr9UZ7PM zt_dfj)bL_)t++lO`hvZ5c-R`r9~Uc1)+@f?ks(#Pw{aI=(w7D|%evS2ew!;Ksmrzy zMNYIIT#m~^oX)~yt|<=Bawu4@jWm4DAg3+VcMR@xDkSJ(V=wHZ34uf4i?Z?ES3+H< z-B}CYpZQgmevk!RnjgNnGC`58_uQ=}@b?%dDhqU$fOC-o)Y*L(`RZpcn57b5P}*+2 zvW~U0oK|Smn|1zP5LP!|&!+I9p3Ur3rOAT4=EO{`d)J^KFrxX zCIvomH!ia1Nxx4t;f|>IjmP7VjzX}G9fZ+JiQ=NwaVF=ri~1J&4-b5FtG%L4nL7AP z$35=6w6Q3^zpZ$)fk27Nydp9=p$~wZ7xc!k(Bbdah^>4$2jTi};-W{A5BJTLf)XbR zpBZ(g`yXW5ve7#p`KQeCW9t*BVEgRhFiNq|{GTbk zy;-}%cI)|a=C^3OU(xz}PtuNy`M29~z=k*Otal0P?026nQdq*nOu_zpU2nxx|+cTCFuzRv>sTYj6^DBc${ujJ9Dr868;^cm@I%hSG_a-djbUXg; zA1hZMzl`RouICDo>^~Zlh-li$!Xix3C66VV>W!crlteb__GZZx4)4w-J5HQB+j?^% zBrzfaiG)@obVLQz)0jyS$;${vA$TeC(;RQCwlzXE9}N^HDU9z&&;X+0N8FuemrN0f zm+&Z$G@k3!=#N)M8nARNx&=!0q;&z0d>g;m6WJ>K8Rd(&{T{!*k5B;xPNd>bORq~)j&q)tX6Xrtm?0`Ec{a0=4QTs^Bk?ig=A!{^*{Do^pdXG|6Xs@l~B7}%Xt(2m9@O3-RoV! zXbEnr7Q%E>V1|7PNb=tud07bz4zEry!B;9@26tL2JsDR;Ckh8phU*^ zHkiK4XQ%c%^#e{KdFq?~nP2Xn?uxTjX7q{wdCm4x`jE|WO-%fcFPp8n!?FGvkUX5x z+xx2Mbn{A}!nby@8Q0M6kjTT3eDaxJI6%KlTq%sru??~*PQUGyR9hf^^lO{YUmjZ# z7E;x4&F*St9roerDs}Vnzfb8BZ3pwxz6Nj0g_eflmBG02QmpC(*)2|qs~JR?zH5-%aLdkuKit?YZbWsFUdi%YgCE+?4L~F@|i0|@ws8) za=H$oV}5ra{hxk4;cu9h@?VG0F^*r80GZVlDCwHC_q1fQS-o+?<2oT||Xz>05 zEgKD#eI1o<=Lh1vug#}B9WG+hT8aF3)euE4;!f1?9YpqJi}BY)?z&^)0S8EKEzfQl zYo$1Q7JXB^rJ=MeZ%am3im@CSR^R^jd?P@`kGuZYb)(9U)oaM&P2p8fC@C$eN>af& zM1|RBi|GZ02}*-Iz8+7~3z#Q+(B-2=)ip`ASHEBha_v?`lC0(35%+ci?9D-c8WuF= zQJ$nqN{&!A8&YZoBzauWX8W2>L$%tz?hATB3@DDNC+`R)0Wx8f5;UlFQoScEYI-+I zHR`5d>3;YV8YLPyL|uNhfN=qw$qeNuj(V&#JH^PIkqf-(Q1;3NDBZFRORkA%T35cj z=8fG*yZe48f~G`*sHfM@Tw`~53dYHIE1!PGbDfA<&|9T&&(Dbdo&osn zJO1s3v!aBwuaX>~D8U!Rs|;jXg6*e|-zIza{c5>Ir&^1uf4k@l((mR@ap+sKt=zr5 zYLxU+s^?5Nvlh?s2E?OJ`&=&VpY!ef?EG7td586jpA0*yN&oYLOZx6MTc20cW$9by zZ&{CaML%deB%HdOPOrSTf8IIrS62Np*xK%E`tl#|pD{8FF*4qwOEg*s?cP2aUam~h z`d(tao--BMKb&a%+l1@cd}1W~?!9AA?qJPkbC7L_t8F04@o5IEYVWqZS?u$YSQN?? zm)Y$k4V2`$Ep{Q=GaLUX;k$l7+eW%$yGuHoQ_H`Bq*nbvwgjEtIVaIDy_OeR2RQ+D z%kd;JFXrT6q>Fd&{V&Mn;Y!#i4 z!z2!FLtc01g?B|H0BxT{2mbQQ@X$ElWCc0MN#Z(f=}HrtxyU79Ium)Q&Wv~;TNTrg zD}J{1#d}?05@!ld#Fjjz!LaI}&%-PO{O8q(lh_@RFaKRoPbPG-v(T;j6<8D%X`H0{ zw}fi=;6l}#|9mgntPHa=rST{DH;7dbSuU`M=4t>pSrfzyfRp&F;>VWnMSAGDv-?~c zu?bFMrHgioAAT;$+P!Tu4w(*#PZVyVFTZ}Y93xSJwNX+?)b6y{(QYQ7=k(D_ItiVG ze`EK`ZwMdf6WK%3ms2~_orHW6RQ5hzzTwFtIlu6Hb~PzG8}Rerd43>WPedK6DDxy7Ae7q-A&&4$xp5C0RB2=!*OkiGt`p-7~NQN6q_uvL)0oG^xMej8GeH8P#GwTHs z%~fT4Wkk9Z8sg_&r%qC@z|tDGmT)1sy@$y-cau$51>kRWX5M>?vxKH%7NwSuj6N5=;$OS> z7HKTm@qbNudwf85@XC7aXHN~-q}7T=XGXHB||=Q`T*Pa+P2K* zH8%6^g%<;Wh>PuOwd7$(*WNh`M4$gL>;CJL=hl#&vm$Yx;Uu2J-TQdt=J==O zga(j%#RXd^I>p-^>hnDtW^HxsyHaVl0}EM~D0wL~Q=f>6kCb-}HSeb{wmM1Bxaa}k zNtXKbX7<4NoxdtJQRUt_Hm5$mF4cAAdIOa-K-p#b*g>UG;0Bvtr?BNnQ*+b7Sq9sM z3}?ueC~hSB*`Xjtf2^sArJkbU)H6x0z29+N4EAA8I4z^Pd`@Hkk zZjY_41-bZ4hrw#kCv-Ndu|V4d&g*sgW0wwJJ5-qG*CB;@#zXaQhbLON?_OSn;NUEBzu)YACY4 zU58>eoJogpGJVo;ZAw5s2E$BffiwXy!u>7_X?v8!CqBvzdXuQYpw@~fY}`lCP!zj% zbny%rbS|cP&_eSYPJxGOs%+{{2t?>|P;$4PD?dn}49Z)gA8;lI^8CZUp-5{@`#GIw zd2)AFv$_i=mu%`@9ICj9whkVkn4U+B!Pr$4bm#@$`H?lMyu7My7i;Ih3pXi9W3%pY zUK?==5{iP)4rlOT*nhM_Y6*I--V0-YHTJwOz}Ig=X1s!$2QJO@H0k|>%Fgb1rFPn+ z(k07?>`a!dQn*^>TLwwBDf%&1i=1?p`&7s?98D9jZhI^J{y@5c zkmTn_X%-(GOlq0Jr9VCgr27J=hK40;?7lg@hxxRZHq58^? zY|rL|+!MY#b%bj8o~3@bsGI&Y<8)r+zwR@N^G#_uVP>fi>+*(l{wHM0?xn1`%31m| zRh+=|Mo!Petgy&FpgOLTZCSjy%%%_4|q#fK2C%s4u85%oE>%v zpyD`>X>?KeDqFI(3J>0?i~%5%o8Q}#zE03fXx>q_Edk$o6PEq-M{B=_q6Lck8(Jt^ z6BY0Af=N&kI9pK@1mA034r zYc>4mg)6!dLV#|%;}m{8zIK`O>8CV{sge4ZU2QiW&BS<8=VFD#oNj~0@T~1*g)-^c zWkr?k;&B9HsAC{e;!A5jkl#m$$uRdHGBS+E360qC@j}!F=Lh7gLanpY5}uK zogr3>ZS|rfA(Of1m9iGwHkm@dADiJk4e^#cvzsOsn_fbm7X!kUjy|EK&D5KY;xb{v zR=M@JVUs7@$KvGoJ~E;EYJS;$?vVJ^55ZD!5w>Ud;5{S{C?d=Kvnd^SCq-%Z~+&U35R4I^mHK$`vvEL~l9 z?fl3~FvqHd`CM=T69#2LBUkA=lNX}1)?vE^mw?l;U31=M%GEW2+pu=$*sfY&PdY#) z{|0-IYxDk>y5&42^KIVhTWS8m*<3_xYl_Z~{CF4}Jx~AEgl^gHSPf2}?s}|`HoemP zdL&|7A~f=O=?S5_Pnlqf-=awwXJyzIKN3IT-{v*^;G=R2{x8 z4OWU^uGEQ=t}7M@cR@e04EOVUAV*|Wg6hCc5+5@$GG|k{xj?IC!X)&I*;zW*0LSqM z{YNn7SO!5ziQ&ao$Q=1_{Exzz9Kl#%cX}V37<&Xt<)A+4M95h{)Gt6@1)pn43Jiwewx|w zS9d>Ah(>Ki)!PnC7*28(q@Nar6_g^b!N=7q+|zBODO<;cj`sxG zl@FIphVuU{e*4H0aZ|`v<^MIs{iGi4PZ4Z72ll8|lOLc6vG7dvOMmS@RJOf$d3R*J zEA|Jg1uYvP0BN2pb#bwjn#bAl$LKV8j!sVbL|j>vH$ZkBAg<7|Un))qev|-#qQo~9 z1>t_ogje;*FYS4n--;?ytPb%RkyMLrFB*tI)-#FIWfE_}Td_RF?>&Tz|BMIyS=dOZ z0iFvD9-}(+)W-)_L&^+T8>b%xxu@ek-q2ys_vG^CvL_Ju9;S7A3&faB>ncYiwkg^% z?*$|>f8F!k1AZ@zoE<|rN)n#No(r1naJDOYm@O+lYw%_vJlT3h#1W+A zt&(|Udaph}!4^b;<834vk*9i1fwiCwU!mPy9b^3jSy&fX5`w@O=Ob15^Zd7%q2cUslwoHKYA%_Gwx!$U$lC9-eP3{~@32*8Jj1v$9iVI|P^ZT! zyMIQJOg76UlgPH$Ng9g`2}tZ%;Ns1S^%b`gR^#78C<7uSDC=B`!ng zuk@sV23Jv@A5X*=_ui-)b}e#&ietMLMLBX+D2)!=x~!fU3QRP_oiUejIh3(P4&-IH zb>;Qkv=Y^0WSoAjPQ0-wyE4-^0wbkJg*84#SvnwRaop#P8Qxb6b_QZPtDEMw8&AavTbD^SrIE?!rX`HbZ@etZ_Z>bNgCK07A$->B}Az_lt zt4cV_hwzLJ!v{1-Vj_4Q_+wtP;ZhvI&~P|jhn=oIfnHORMng+RxN`NBP!}FXQ6aed zzJMhdC8(XtIxdu{yD)3&v+qlVFGn$?KI zI?oKg-)==@;!@xqFN{=4*G!!Z;vPh@9Nb-Ys7oLwS`EAk`y`L?jov)gL23R~QfD!I ziVapmTTr5sN(O^nADqerYuOvlYa9!xLo~5&B@P%J#wZwld)v=-btB86>f)5R&+#43aJS zCrn6OO}=@4)pmW4=P>W!@SaNL{A$>68M}4!-}D}rwB`Nm-kw8tFIykwPGJM#ok?*= zc|CE6>1~@~)A5&AP70gsVU5*J$I^C%$wil;BU9$UXf)#b$k!J@f9>4av$Sj|E!8*Q z_Bb{7^>s%#H(Hfmn(x0WEj2u_>@KAW3ye^y{gZMT8ozTS+Pt_cpBJ9kY$Y(VMprq# z$vA!$lfHI*x2bu;?{aZ#791M#aqW=uD3oG&McMA8J1~qp0J)RKdNAlN-YAC%6-rRQt3FNEP^QmiZB=Lj#ao8>S4Gy(?@-$}(f-+{ zVcVo_b_0Ud5Pb|5{uEEE7#>ZthUAxR`*qlF)BbzzTCXO2;_O;a#5R||anxmFJjVWM z>@Hx8zsoTE|BIWi>fgFNn9uU}UC8(Yhrx+M(_s&JNN%*Fb#D0DVJU^7*?(ZKAiJh4 z9YDICHcQ$jEa$28mz)v9l5Y6{jIBYQ>Fa->@vU#G&-9=w=Ip3#gUG1!`O0jsBlmTCbs2?r-AwfAvfKX$bS5J^eM=wbx94mb*??eg(a5{{oL4sQZYj^MfY z1cki6#FL41GxM6(MrbneRR6tsl)3OwpPWb1guw>12R59Zg3yc|6MwVASb zVvzoklRCYxuCz3BVQw!HZc@u)qQwkIp(w_Fq0$u!OY>{G?sZ7x zQ>{CP-)D}mV>NPfZeWC_SNR5*bBG4>%2p5EOsih2hjJxq-IqERbW(n((-hdh|uaXt<^Fe1pX2! zcf%FH`;r3kR(8$t0pu-Rg6ySF2itS_w>@=P2XOZmnGS$$XSqn@iYp?X2B|mnbot0V^5Uj{~u? zSNBN`F+-2kRr|qg`n?jG;Y9QjJZ;CKWUMbzq`w3B4Y@oZ{oE&xq z*&{qSx_&UhaYdLd6w}iZm!5Lt;~_(eU*iUeE~C^TSGd5t%Namt4r%0!m7ia+|Gneh zEc(Ub$8*cGM}p};cY;QXfFXmEgGa8hyDGEO1cc=&94Fujx!)}dPeCA5Y{RZrrF4$m zvbMLs{T%Bvgcw%sAKqqeVHZncTni7kY5O4Fh%&oSfAvTTJ-4a7 z-Gx_t6?4RyyhG8j3bvhF@;dR2^mi!Zyt~uj?Oz=kxP3eEg^t%I;B8zl(jV0!Xi7r3 zA+8+wV;QshTB#a7Q&d;y!!{~J!9S^Awi zlPe0r{#?4a$UU~1eELmK@*8Jf=NfySft$;{J0=Wg2T=app>-=2O*KSFiL3UTywZD2xp4eYx z&>24clk}N1iZ3Ms;+w8kkt+qnWu)*Gz%;J^c|jJ!Aqyz_D!Nf>DaK;g4It983}RDL z#8DPxoxqhHu(K#$e3}QmOI!=G+d64@65Dby@1GPpj!pQjx&M_^TI(Eh7n37i4-dg} z6X;Hct$}yO2aO{%qX&O&q&CEUQ0G0e0(LA7m>68PlG_MZ1Q)6IKY${7V6eI z_R#ReT_7pkMd7!WL=+LdQYvM+oUT+%IyKY^EGKyOpF!G^A<3pu-o4ml;k;w#iJ+xi z6OGpNNbRH8KmZ&{=a}2R?1G(1ZI4OctF-Ck)1XkySbXt14nc08&=v<$EnVY%?kaqr zTfCdrwXUPQUHMkP6E6F$<*eCzvBU0{-+`K}7)FR*0sCp$DTe*GLe?i&XIW)RNK(SW zicn2Udd454YIwRB~@zFQ{Z6uJEK2-Xtg&}ny0C| zUr_zWfA7vtXB{)?wpn>g_&vwii@FEm`hsk{8Pv{X&sF`t^c7-hr+>TQ!3eWvFrZ-Ghl$DZI= z3;Lrnu~5TYAiaKU!`JR*qj2_^so=?K|HQ|STaWb1yfq5yR{i}y*EDuS`VY)q)&9qR zCt+ac>h15qZziYZ*NAG=PA^dyN7a#h#1geLdGD5{1iPZWu|=Y|--atu`QN1d>jyQ- z11ceVmot$KGMg73ieXP*4>6C^{n&hq8$IA0EhMrfG6kS$WDnhpX6{;G<9XDrn`m$BK-_vi!$G!9+ zsZ+@L)0lF1g|q8tI5pWkgDdXy3>&Yi4Wi_r1!g3Sr0@QSkbp-)0i!s)W+7ve-YDI= zix9oBHW{}Wy)kzIb9=HR^b^#$;O6L5Q;UH)pAlf-MU$d9LvKa5(0PQb(!Mqd-$<~@ z*DlL-&NtAR%2_-oyeYl4ASZ50lahDR`uW$H--Yt)5wEZW;l$bEXK^*X0`5=WxDY8{ z@8?UMzcylEc+A|KF{6Sh^3O|ZSff1@dRSZ#%yoKWu*ARCN;SDX(>uGSOKj|L3Gy9t zRpbI59PNeh$7i1@Md#Ij9J!vaTlJ;onTHpN{aDv1$T;Zg`+J z1#5KSyF69cZ-*b6RGN@1N{u=rPy&%gnJRgnjHCVsv5r<#UU?kvqb^o zKEWiCl+PtzyjQ`q@|aBP_!|^?7g-8RzIc_=I0q|t=G*x&gp2)3?5E@NvgJ2nkW()@ zFVlckri%L>Jvl?F>KG(uUc>mV83nt(Lg*&K+z>bp}_QqqkZ+`9X#yr4)*uGf%SE*}23 z$u)l}PF+w&@KEMIUlR>q5*bcT_6{|?AEJJis8w~0N5TdpdF&(ARgYsHt+drmzSQP; z2`Z=NX*KAw8+jhs(D@WL%lczh$ZlhFX+*(7kD&l9@owJ?FNV?U%`3YH_Z zKWoQ93*90HL8=JiZi>Cd-vpVzfuC;ewqL!+gz*mOF#)7VeH(9P7JtXeS(mJIpPF1< zV09#lMcZr0s|l60k2{Fi{!F7_PAu=J-c3+&H_PW|x@KO0S9VrWEdAQ43uw-I$Wqus zBHO+j2Tzf=%}?J_K}jW)vB<-h7E_-xszQ6H9E6{3sbAlxz1i;3oiZ&8p5Oj#6dTpd zT&Gz;{U^dRKi58IjL1tv$AjUnO3zs)P#NF69lDa7&oCYeN!(7Qc2q(dF&CM^)J#w8 z;^?|D>QRDpn`#PhS9V&}!9k)zUNYi{8!p)lm`)rqf2uBA9T6ROOUr7qVC12;nK`M^ zR}#=roT^b34M%bE9StU(3#C6`bqg489B=sDxy0U=U%%yCasCC%KiUmbwp(omq9-I8 z>J4lKEn-JO`kMZ`f-Ku_80Ze%pVQ?15{gmrusOS?(U{ zavDq#xla>9(=+H*=_+GWAil$xn?y#C-+i%n#6UAa?&bG^Kk`V~ zoTd|5xlb=^Hbm6yO&d;2Dpv;rRxMp1?m;IAE@=}1`%FyafYrnN*B{Nm z$wm)oLm{`asG?e&C72`n`37U|ZI%5L=h&_2I8M*Y2q(F(TJc2mqQr=50IjN#(9NhH zPWWm#0%X&)baQJB-}||-MkCyJI}fYgRN)x@^v7+mD|O2klYsXNcYy%@&dHrvN5j>) zN@Y^%G-`^SMhGw-X7FY10+@TJdzWem6(a&c z$jfp&#dsk1je<-;QG7>ik}#vFH!wBhj12SahjL7inRR#BR-R{e4my^7J3}>denQ8m z40f}sZ$R9-B9viL;n&$nF=Ha#5pgpqZ9T^JqFW47W@^l2B1R^^)ivoyx-~TiK|j@4 zG!PUw2Lx;mM)2DaH+a#7r0Vv@W^fkcLL)&VRTzkwJ;{i|>8rp6uPVu(q@)j@`UT`J zDVcQBFTUlf01p#k=B(R{@IuI6{J~L(BRa(qtAo~t^XH=97o)K_JlX^Y zMew_$GE(vp90hoI92D;+n2K~nV{{!b9x*USDnS(11BS$*5pfsSR@q5QH;f6C^5xI3>t-|!jQvU zQD{UVCIybrg=X-g`1#OqggYKn6oZPwqhY#W9F;2~GYgJI!aQ&&ezdzs97Y$5Pb+rI zN8u5UyctvRBG4FXghK%~DGQTvGb$7wPl<&W$Dy%c92%LGiI2-i=HuWP-9i{1 z<^dMOt#z>In+6JxLLqQy0F{Qr!Lryg@VW>X9EHrs^A|g!i!)&Eh51=*m^hd{h8Gos zgz?9rGXybkk9>>=4i;0Kg1V79|BaTcF^*^sT`Zad?Fh%(7a|;~vhZ+ZF)GU=&an`U z(8gq9kXSr2ALW9F#UU9z(1P&HVh*%5mLH9Yv&SI;?2TmM{8YSH1QriNJ38Vh;YIi~ zDoQ*|+m$j7Pw7Z(#g7oALQ@H1@l;S89uC7I5&UVGVt8C}ngsD^Vsc1^*D@R2HqN3SeyYZ zLS+f&C!u1{8R#qoIungA;&nrzim7xx_+4GI1XD0jBo<9s?1qo?z(b2YZYB__7=eJf zp)-(iFb6CS83$nCm=t%!%`DXAho!J%@OTV716E9lh(lrosjRS>=L8cTxLhys(cnkuM)WM-0^ILsXBZN}i-P7O zJsc@-h67KdOiD^|6ht8$<8XKsKOF9cL}T$qco+)fjLpw-#KMut3>3@}T7bf!1rfUW zxHt?dCME+9jh9WL`*~$mK=>8*Ky6Z8C-z)DneLggVqm>l^H|SLIT5gREc6mA5J4T8 z)%mNl+UVM;MnmdQm@07)57d>CUK)a;l0I5aI`6(kuW?Ra zc?(MTo5n_`?jDt>90jB-#LH8Svws6CuZH!i&SD?GL9>t%k7@Scq+hXWKqZWq)b)RW zh%KFDKQg}j><(3UsU#}V6H6T~^(Otf-aP&nTR(SB$Zx~?Hjf#V%eDIXpzz=yWD+PW z+(lbm`?G4weN{DfQf8k0B)Wp8=p4t0dDA5%N8e8f$L$DGrG7x}ug06CuhjOpTatOL z+=Da=PF#3J6rQbG>r6gG0_-tun`Ly>8)q^#DSn?+v9a2`J`+nI{V(_jj3_346M;Ip z|ISD&;{TR)hqEc(r&ci5o`0Ol4GwxZ?Ret!jEtdC8&5=vj=;AEggQA8*}O;L z1vAhYqc25Hvf%*HAf?@zlXv4#vY74 zz>WI-kgIC2gLLlS_73%b_-~0;XX@Yi@!#Sr0^Jj%mkw-z5R}%S4ulD7{+Kdqh5=+L zHNyE&+L>(J1Xvywtq5!L=QG~i^c@VVe~v)(+Vr{nx-3Ovr&UthoQde)R(K?5d6tfb zyfmi3KwkpJX0V$5JtQiddyw<4wKix$q7DdNd7!JbONB`5Ct+l6Ru`70;|b#PGmYpOMDH3<~BQ zKTOtn2dGUwFI%zltMfT4(MIQg{}=8}xSuWS@Q_XYoUV-9Hy!Rx#rmqwar54-U`^rY zTyobOM5{#iIX%j0`ep+zj7h&PHrEn8{c)|*TsG{R%Ah}}24-Q2qJNa$Zj42N*?>tc z@x7xAG_gP6n`HtQ_!NXg`YGUbD z?dBB_u2Q^5^%ge9fa^j(Mc2iDt@t{;;C}YArkqfP^ZnJM$rFX}jpxkfa^iHIkmOr* zsYZvk3AV=@0=mUS_8B%Fw;#QjM%&b&fCx`Z0cs_NTSQzHzZJ;9nt}gOeSGjYKQ#Lw zbr49EYor;um`(gTq7svO7 z^>_8QN70`{Ho_X#&g08s#KK$b%WzQ%UXEqAMiJg}{ztcy26W^iAe)a1YS=ZhgN8^c zKj%wmcftZ1LP1ZA_7XW|En5r{uF>{)egiqLzfVL{(vbZWVT*-L-11aoct8FHM~kPG z3nAwFbE__#NXbiy0V8mPrwg#gyJKp9D(JAWwlswBc`1b-0cwW-Py zzO$U#U(yrJ>FSycZk(o}QY0yrk^ikEXS^y^_1X{ip5l|1Za6IOs)yi3u|N&(|>sQ32C3{igpv^g{MaG zyA|{Kxbo+7!=#6KevPrcr1%4Z0_`8++9vOfuXt~=a6{+YPPmW?oKD_^=enSpl_cGu zJ>U|$j*qL47d_mH?ijfK1L4_sV0R6TQf7NT4Qi{V4e_~9>mo?Hw4JC?ibu^%-Ao6@zy}`;FA=Af4F{2ws^0T#eT$dS z{K0`%d6}3h=QF#U7!n|3% zd_2!V5>S{zgSLDA1g_oAeIcg)P^C+gZ-;_nr~Bmsl0%Cj9o3Z!0nEnyAZNh?8ebNL z=R|(FB+vhg$GDmtVoW4NOU5P&{A@Y&jRUF`XBHM}9sKf1vy;jzx{u0f>O>f7DC$OJ-4a5S*pkdExVxmO z;Ns+0kpv>9+1#VBQOmRIo){HvP#+JJJ{p|xAOjtUj8b2X4J4UT6^`V|TY6-`VRU)& zdVkbS4SO%-p+~h2P_H9&lnd{PQ>MR)hp8E;5N!#3`HG+eI+OCHjI$}e7c|@bwmLX5 zon5+=LPrxhLMw30TK%sV9QxR=mKMyk0xf^smqa9_uJC5L&DVYX!)Y#-r zZ|0*3)<=J`x|_5B|0OfiFX>DR`DpSxx}>eFNNpJKlax@>?CXMsXQ;Qoi`^A|athqL zzRKn&nuHt!gu!pegdLS$|F2@FUv@9zpJ(yiGU<92QS;)PwA{AEMnPhro5sb3ATyl0w>dF<&z{q2vrIgAvu1+je+r zhZg}cCl+CT%E~3*syux>h<(2qzT|(#5yA2#&y*zt2sm2c!Zpi#ZNxD>Vt8hhuGvj) znHL9wD9n54E^j55>P7Y>gQm1Z1G`puSe7lL^Nj6#m+k=~g)UvQU(Z~2H`zU#^BxAB zfAYz;xvqWd4pI>+u9pu<_(@&=k7G#_miS@g_p^=W2_1LkQjI| zMTEX0Fh-p@z4iR!ii1i|@dsIO>5%PdFc#qDk0%;h>IJDqg@rXG-gO2Oz1;ASD%+du zdsS#12Ses~6^L$w8-#y5%}tr~W5#L7d`wLGCzKs^ zW7=(4m_R+-_W22j4|5ZoW&*skM#wO^8pxH$|RX+tp9AU99vlske9o zT?;J4G#}#Q=QoU}eTEM!-Vr{1{OU4$d*J0RQ_Z=>?%fli@X_&?a~I$HMwbZ! z4{tvTuEUm>s_*8V)G9t!ZtqN^&>`Lb`WFK&O8#mo*aI?v_q@`9+^+(E4J;UF<-C`g58A#7;R z*@|xE$AARH3SbVeR{*-{#jR>5;z*}Rbd|+!vd0j|wkTT4m0C4=8 z&@z{@q~c|Q7XKkul@RjjPOQ}LWL}oUwfHMfsO4z3Lw--CTP*V+DeUr<8_mNUiseLup5$Q(PmVi`*%iLF3sHW z_<_`bRo^hKi}@bCE5)vYw%6S!bwArN9`B$%Hwl{ zy>s~ot9$YQt`8-kMRa$aGCDU=V{C0U=g-FwdL1&5il#Y{bT?Jb9r}ljAS9CTD}rA=oFd%h)7Fg0*Tr5p*QS6U@9-=%q%}q3IR8tfqQ>aa6{v-yKlFu zsxoRaE1VK%9ujTCA~!WPCoot$7W!o4d+(XfPnqRZ3P3T*CaLrU09MRkCLFUyjlta3 zQcdPsprjB4v1~!9qCc@PtJf zaoc7`;(CV~*nxxw|GZXw@bP~DK|sF0(cydj+fU1JlccluJX=}6gLTgF1)ZMdd%oVS zh2vdE$M|M;7(71e#pe9e+V=Mj*OO&6E5P%^z*#OoY7R#mFV}7A=y+b=mOH2I{NCd8 zb$KbR2Jw@FwEw+wwmakn+v6?F*!SH$_c_*!ix=zZs?2!aTlMc%5Tm5!6^=%msUhBc~=vcT~FTP-A0mF*>R&RZGrL6UR z9+!cY(i)wa)B~yz0P=|5lz~K3QMgZd07OF7V*H5xzPf>x65%wt!@$GEpimi)+v*o5 zwN;}`F1V^ldscrWL%f8^yXSdHQMI8Ay3JeEx{9X|0vwPPb9qTTo`f7Zie@$hgy3%`?z>2H7SaG_N$1ZR)!XDqakd!|8}|jc5<^F=G%?H+m1-`LyZXl0hV(Ep3u9H04KS| zGvad3)E9p={YfOWyqQn{pt-^AsDe@_)|H4^CZ}oS|2{jU)^PWog%kGX3S}S~03ZQc zuw7)c_!V6VRWoUz*BD_mlT9hB{4!* z`Za&d^u|WB*VN$q^;X|E$BpH`SH87dt~MVn;O>6AAC27KBR5kId%j)qdApmd^&EgF z6CsMXT8t?$!4aDMZ)47n-2fZ?HBfmhGXpUU%>94wuJ}L*7f^`CC?3?K^5{y3&#LSt zcR%?4ksvbXu`*O;kU;~aKV_F#k!j990&C7Axo%bE?Jn!>clBB+5(uU4bUUgB5w0QRI z`!up~UC-0bdQzI}pxLD%y{F~fD%u(RySzUKh3)#b{djJZQ@@q6PaY4GM5=ZfMz=86Sl!}Q{x!A zoxH;#*SRa>ErG4^I=hvbm)*=yXIHkk*>XMI?`gY9#q8{RJ>2E9E02HQ{il0g4eX~w zX==A^^ZcC->$%SIVr^S#NbgO9M<=Gj^0>S2`}Ha?20(xyCX4`P04w|Iy+=pg$fEP& z+&Qy*P4q`HkAGp{xp4OyI#1Qpp}wxX?fm#|_TrK|y-}0(Q2z3oyMEVur>A|f@%qtQ zj=KD&>(SZkd^*+H?v;Nx-kX77_D*HJHC=oCJ(;5YccOP)Yy95&R2?sMmrBjpTlnUD z9JDyC_8ts?J66W^E1x4|D)`MF*>jYN`eu&#z!omZDn;V4*vV^k3_L(zkZM(R)?d>wpiw=R4~^)Gs#x@r32|c2-EP z8uJ%Lk%;-F*RUmCxgdpv!m}8}AQ_k<<$wX4C>9U^j5gSwosydbY%G%~=yBK4bGsL$SkF}FbHb^mJnhBLmz1!gpIXkCRtF)AiH+DWF- z_X%50N$~>?b%q61=fJ(RgP@q3sM>P&ym*?pR!zNk3mLcK?l_ld?ah00!Mn}iIue#$ z-XC|~-gmdSOdPiMn|r~OvQB<7***Q|e^xq zC3lH@;$?5$%#ZVp;l*CK|K3NlSKZ}nIa=OUvz6n)`gxmeE`yn+=5%?!ZO*futmkbx z+HB`zb6LIE^go>(=SSPp%IWjjZ1!udp4MrGvkP$VWtLIW*#pGGV{_J1;exL=3l>|f2f@C5BYci>T_mU06 z*xQHh00TfEHRpQuVg7z5D>pyn2n_pUmR7pX^3X&CnM?lDbmzrQLJ%z4un22+AB}Wd zq#A6b0B8hFz?&YvJXV4LW1)Q(uRZbiyE}hDrNOb@nk^Wq`klJ`?9-e77c*YuUYQs< zB)AwLK#8{VnXQ)EAGnNCNd`s{Qb<4Q%`z`@;nBDQ_0STKMnXrepOyuJN$hgI*L2$Y zTkwmDhyQl=>QfTt({|SDzPDP0{Hy)u0s+%>j4`$9wl7O%Rew*mnxCW!aHCvGFeiV8 zR8`B0X&1Q8mkG^Gtv~Xz_uJ8HyV69~c7F2SnF|MIjh63IT%>sDI*9ei(EldWv(`tqMVf8QyRqOx`Dy?=ez3D?PWu9hnf zU*FaITrwR`cUH5jZ0cz-SWcDGqgQ{B!*qUK9L^fEqgm4Wbh8~T7f18b!RUWIFW*a3 z(yYyYay6Yj&rd7T{&ed&AMU14C6nrBdY{bh|ErtfZu)wCw$FF|=~i^PT`m_&v!$v4 zEa#vQ1X{BqEdT2z3&NFws={C8>nzhh)mA)5{nXoQdh-x`ypLnwe&)y@TW5c7h16x= zJNUnBrxW_Y%IbM=wR1o3RzJUH{!{+!8V`rMQ%n5E(RO+ln2w%~FE9DUZ96&%_H8<} zffTY_m(I|={)aZ*TkL+^lWQEvs7O3M)PCWy0_6Wu1Ng;k+~}U4g+|o~gdxAg;4GqT zG^4ZA-el*KzO=qZrho`Vs1Sc|>}b^=6vkCnNiQGo6qomd=9kT>&dtv7Fib&G5IZ;? zoSLOq{(@g4C8j;Nbb0;A!E4O{`911br}xZ9L2h!?{>VF`20jnD=9IBLeIQ4X-I6+*Cb zhuBRE2;YtHquh$YgB!v1tU6v*lJ!Ms=5Ol{^WT4E>i(|39{*tH@0z=fALHSItUG7B zSIw^-^R05P`>lU^p2xWT*3S1&-L3a)C$*Z*XZu@>Jukamn9*e{wmVgu8D{HQw7=bk zgGc=L_U*>d-E0H^-&z^8A510|wS&dXV*6d4c9Zd#%6q<qQM>Spq0))TfEze}DD*{XR3~ zcnnK`uXzyW!b+f19ri+1`9-H@+x*$B3;n46{r=>seEM~vA~VWiFP+4P;~I+DzW&$= zAmv1l@!@~(N|FVBJS?W|SAN!g#JxBRp2n$#o8j%bTYsOJ4-L(z{mxs92f9V0$00-rMf>3t;eR)Hmi+)jo4wVINw(9{qOPZo3XkrZX0WnYRAlNd_UYqzsI_-$yZkI zzc>$_pVz_0`}W)~e&$zGql9~acGYJ{cu?<_*SP(0k6(!F7Dn$EreXeB@1$6o&6Hq- z5QKjek(_-VZYj@AFLJiaHI9GsEd#BaKnl%TF2*-TmZ?FAG9DZgFG^!-$)j14*VmF^ z-5BF@ke{2Awfv{Tg@(iDp)o4!awuU2%#sNro3*!ZdWuVNkad__cwPbQ>%Th=-kkQ| zKc6q=`)lOwwwBlpr`wfl;lynAe3tG<=xl!n{54|YJvyWGcJ*4R@6I0Cs?>R|dY`_l z@od%paXku;MFy*-sIJlZ^%`$E+;sKLEoPRROG!&^@8NWwY~GhQT%h}C?$WTE-);ZE z)9fxbt3|VNne}EE8tZWM+8isigycU$CaVu-x@>dN6VAK4YgXCH->6j*$BwXyDeQma zZ-7$CKL;y#>6@wmV?84J4TdZrWUUYic?@;NTK&KNYZwTLs`?Q;cu)C!zM$Ii zeM_o(Z;BTTCy5+0729RCF0SbUjP8F6)#%6cl<@JgiI*V%;|q*(@*423F7@Y?x%=)? z8@2~^?d4CC)1BgZDJZxeP2COmbGPu_=DabxE$4ri-|zSCdON0u-D#x1XLFa_-e&ok zkH5#_t5bPwtMtwSa}R2y|Eyo_2PPjs-LXH~wzh`ud}9pt%He9iO-Hw-i*$egS*b7g zN8W!@<7wU3YPXhr!FW-qxF_AGLp5C{NENQN}=nA~k0EkE(cw#{wl z`n`Gm4&nQ`^O}^|Q%lVCHD3>3uDdl)>&4e*@i$H04~K8s>3iQxbn z{jbIL{J^AD@&E)cJ@ov(S4RySoxfl#yh~RbXXU7VO|gFf01d3n7zVz8KtG@( z*iaXnjl_h5Ab!||0tkGPXfH)Vz|nvIY(Wrz-Oj3?{s|rS9v4f|SZVOvb;=)>22_!d z>}SP~;Etiqc6sOD%$?2#djWe(X~W7#!@7@?4ZaUCmna-;4L%0#ouCM*|&^~I#_?15jJ{Ld8H=`LWwylBGZkbLL40Y)8p=RZpq#3Pl+88Dk7_#h=^?v zsu2+YpcGOiL{^fhKm`gyhJ{&?RA{9rN@5hEl%=F808j}?83>sYB`7Fb7JwQ=rX@;6 ziA0G~Wg4ZGfP!Udk!1=JWe|t~m}MvkidtzY1|$lqsv>_Gs0LvGNsv%xP*NsgRzgBT zK_rloMOH;o0OP*T?$mnEf7JWUuiY;z9q*&I*lgSkHT~~3*x|!)BDPuI)*@2TYPdqk zXP&Us_8oO6YtH7^=Uq=7Tjt6<1war5iKgR5O2o*=NXgzJDA$7o8LU1-7@cpSPgZsC@}Oq_tv&w-&EK2{-@z0E&4{3E zkWhI6thCGU`*(`A$3B~NlA?ivO7VvFa`0AK>s%bChPvt9WBg7nAOQEyq%$5ip0y`8 zVD)U%ydQJPayyo_&2OJ`PviPcTS7CP2gSF3BoG+|Bmzc784!OWLhi%>mPP2`QYYkq z6obKhswI#QSx3jr*h9DhXACLdl>6Og4jJcCc$CBJ{PrHOhGS6t$v?vcw> z)uDqqtVxP#9EcQV*8~F%#)L^ASQ5JZwQ2}6^Fy34K}DhdG7D2RWOA_y8MgX4964+Z!4G3uJJNZBXlnmAz>a{Qlr&G+9Az(lsbR8kPd+qILL!!geSnH?kHw^ zi%$k;o>_jUUya zbqcc4U0NY^^jFK<{qNM^e%}$283$=fb%e<2zUj6l)8E|3@8ib7A616)Wg0Y?*alc7 zz~7Ii4N{i`A<-4tdPIc=4=|VT)pihxtnN7e?_+bXq5kA)Tm}>5M%%p0=W;WAOLy*0Iga5$W!Ye z6bdB>KnQq0F2p^gUY-MV-6GSjr$m;B%ctps>(^8vpqoPDupp)nmuu&qm47inH2O4F zL1O`Wt_utV4_XEBGf-(C!w1{Jvx}foG7(t~ZU+ZVy1@19q?3rfvU+yJWfP|B#=r1v zJ2hc>i+Yk);~sZk3YyQ_2Au2*D~6VnWcZ&2L=di?dOaU$%HE;106C98 z^6s9tR%6-dy5`x-?uJ#vr+;zu<7Xjp*E&f3eWIe(s>V!mBc}X$o45S$e&54fcCc37 z1h3X%kfBJZ$iS0803ey{;eLJPkpp}bHHs%Ns6-cajlx8d5q<1T-(_mq2`Ay$`Hqud z$1v+94Huv3{>KM(>H{17Dmba~`+BXaYO{#2q+TN$o%$g($X0E0_9Yat@QS@A69#yE zf-A5H0?uww>-DY9%#ailt70g~f`k|VD0n58De0ahe-u%SQ~=}DH7>--IGuaTuy)e@ z5R%+Im)66%vd~5K!Ym5`g`+up_JRrRmhHwA^a`_f?8Fnt?@h$heqVSIy`2XWX-Vh) z*2l5vcv|58fyd!GR%z@Sqq6K+iZ3 zpcIlRf9rSp<=)bs-8t4?~ z4T`*E2pNzf0F1yO2mmy@%@2=<8h8!mkHa#!W^bs@YcJ8Pi=6%1mTiLeItuN1>3Zcm z3}$gdwxX{TDn&nx6t)_?cAYYvp5x%#zi9fu;mj|Gln@P-8w$Fn8H|>#iiv2j=v=10 zsDGr)@cQv<>&ZzZl;M&N3PmBcl0ld*CVT5BZ@)JrK?HUv0Fo*QvM3Oe4GK|1OG?mF zLQ+vc6chppB($`xP*X@yHBBW6Leh#*#FQ-!B{Yo`B?(CoQqTodO$`c25-B2!A_$Bi zA_plkc78{sXg{k`JXs6{ui>9%9HHE`<$pVHtl;SyB`bbdIuVg^Qc`ScOWw%J5f)1ecOPsm1tG4yP((Y;_;G*p@H|fqw>b zA^=o>XDA~71Ok)^K|wJnOacG`4IIyOjwjLcb(ivX?HpF1+jDqX%eC|rTF;7)^-ix0pp?DY$hDZR6j1dD`2!KHk*a$!@ zM1u%CgytY^Uee&%yjnj`_y64UCnL_L5Q8$Abf3BtX^f{QbeDC(9LrM&sed;4l+xs| zL*(@e5BU8n1aQtLQzm!SNwzWU7JoUV&Ms_m%*>c?s#0tApE$1 zjDR37=g1-yf;1wCXaGb?1V9=}NgxDTLWMvnn4}tNimIYUnkb?OswyI(D5@w%s)YuW zMVJIZC>Dwp0H7iukbk%MR!8z}`(F?J1!kZ4v2D7sV;bvPZ=Gv^-Fog6A6GsM|FWhAaOCLqNq@5{3tYl=d>vVp~fDP`}R;y7?)1&o*RFv)-LU}VxPNw zmg1ZcC|9dV;~UTdriDmKIPVl?3SgB^N~6g{pjskSp%eKqE`|ampiq@T8BzohNsvGifK@`2 zRc29MITS-EP43o4YTAFQLIEppOF4yw!t!PYYZ}y&*$jV!Z>VE%Ho^b~z?Nj@=rfx6 z9m754w9dmR&5xf>6I--PA>3+81)re+mc&^U?qJZCz&Ib#_3lvLA_r-O7XyNYA!ohj zZ3`ZMp|G<~%%%5vcS;|f74T2Eb~$us%$eA$$!~2*jk()4QYn{e@172S{Y>>8HY@p} zf`_(29ss0SHOMy_B+#Uev*Mb38>dEYRF9a??T{61J@Gkc7M^6hI4Y$HW|G6Kc`s3d}lgY2kyU9ZCL{LZI_ z`Z=7G0vhi(<^Ml_XYqSJ^R3uDzGLFe4s3u59yOLHZb||{2yqltq)7z6d|A@N?sZ4W z(|zu5gfk0~33R97v(446J{-K+FMXiZm=_B6jaW>6xnjfN-_eg0V!>>SLpu0Dp#(4I za2Zr!&tQ2PU)!2hKz>YBPribn9d%8Zf+&x^K&473q)HN(bn%`ne^MeM@;By@S)6Ih zdR|fAVjIXh`cjzbb8LG1`dStP%Mbt{AjJSM(BEYTkow(T;cu-D zfBRESnmpV2le@DHe{Y}p8eVZlQTF;x0Tn^mBA`f!goKKqBm8+D6P(<3zj1`{KW>%e ze$H!qkx2ohX#kJ$$K!v>lqZw&%B{4RAB=BSUh5BCp5QTe zkA~pLk#@aEu+yN2xZxGgo^0O~&h->Nj=9cqvz*`W+@#m3e?DJnxo>&FO@0U_of<_% z6pR5>i39`y+PBa9{lC|;@jFk`{mjX{Yg?B0!TW9N4EYJhARk?^(+~-uf)@n{FRu*T zUyJX>3LxG0C=`n!q;#51t+Ggd3ThG8u%^}3Yq(u?J!=jt@oay5^{se?!C}eYP!gUz z+1p^z5@U3&e+a~&Av9hA*Hs|9hC&4*T3{EnfT9aXzpv2G0M@#F_!84nP_uJ%a?lGA zR&ptXT@3_973$~NUhqpH8Ck_l8O9`CFVPVf7#LT9Q#L>WhC&~v7X(l{fLMlRC&rpp z*L!LjG%oVxBYEaa1X5@TW(^dGLGU|CQHqX|p$(cue=@KTVjmjJnr3DNpy-aJtp^i^ z*y!%l++?DFA7(m6sq%InLqN{$-&aVcyioF?nKL2;Kcx7e1VYw8_P~TFAp@@UkO~4D zQwRgw_C9C*{NB!<<3i#xoYI6AU%yz=A!G`4)-U|hs0b!%81SHw5*P!u@DZuND%XR) zZxwg1e~3{ouMr6*41vKMCGgX>rVx45Afq)(lHC{=vs4H*7z98Kw4G;MDOkyQ%YHBF zgrBy=!)pN#^$H2>K@Oq`VIC4|qh%S_q7+XyC8UglA@x4C$XK71(Av}2s}f!x^TNk3 z=67fJ?iWK===FVLhwgANtTWpmZ^_W_;Cp`We`&DQHT5@^kuL)rE?x z%KDQga&#gf2!a7;%z{cqLPR7p*ib@24>}Yl1wx*!-rmjoZ|yn@RTUBPPB}Xne}sXk zi7N^dbgfgS9TPMRo4OV(1OO}808hvrcFGoV^sxTczm86K!1I4UF=mi(|GPZ0Bd0A7 zNI-><2@wefBwV>d5-gC=AIVQP1+fw`Tc>o3;Ry$+=045mz^QxsjDd|r6vOhh0hNf* z`s#_N^%66DLK&;+J|+d;H+otvfBLDK)V6-Z)$Edm{f88OE>AEB>rpdAm+1GL5l_nJpyUg@9BNc7~kO#ys0FWe>5otb)NR9 zIz}dpm4Hi3$pf^OSqbpUAaKw}XG9`wDulWN=0<^o0E4O!BUYdgB!VT-ljm0dLiDlH zOMQV{6jlti2VYDeIfD;i!cQomI*f_~%FB&PVd-hgEp7fj_gbtX!NcwUVt#*firxpD z$p8;@JIBUAJ_X!w)8{Pie}D^)fIz02+CWL-(vNnatutm^Wr3i1RgnXJO0X_@XkN+iI< zh58_XC#{|sZ=^;kpPh$5${QL<*>ru-0d9G4hs``71E4MgeNZ5meg3Ihx;NE*~;gP)IILn!S2XOp7<7ZYzlB`?+i z))hn45H_2X+9Hmhe-O{021n22E#SM0hWlk9?*1jayt)}48BUHIj?c8=ZkedqSpUd; zS*XoVCYdnEoiP5(!X z$~!n)-B9<*WA%0~`BH{P4D+rIDR9g-s*=&ns2&qQhg|Bve=D$+RtAHDg&h7Mf!FuP z#87~60g54M?f4rHH)Z}m+eKa5H+;8R`3^;v{ow;z;YQ4;5E3B>q#%dXfk*+x=yWVV z%#hSRQDl%zxaZ=?p2SYQ<+ypikS=%kt7mN005nA>Ol;Y z`S7xb#6TR@oBm_dF7;iz9Dh2s1*zu!rGLEU}76{z- z5kaYL8y*;3ejF&AEaY-1nokA0bH0bxJa2KLxyX1le@2{X#=x*hO;D%yzyyo=NI)?o z6+MJXDIx}W8b(XB>lV$+grk1Tb&#|1S!JDc{azQB=j&QW(Zjhlz{>D+9f4@dswFnp zB$5YXGDg6|*qxt&O|k;~kmf%k5Fd@nhsDMGevjXOsdopTk~vAHr6ihKedp zB!OY)f9_BW8Y&h0aC;%(B(TY&R1hco=|k&~96APKAjLcuuq3JbMP&&mtBwh80pN{D z1Adi6VW?n^p$=$!|C!X)UuWLm$NOFj2aiR4_ZW*86HXn9~UNp$XX#Fj~2Bef3B#7K>?5P>Ix=gZpIL1E;LlhLFi$U z1DG9q#SoK%6t44YaJFUz{m@h`_9AqoEKM@kfV ze?W)NpbwK0-DHO01SuciC`mLcsm(%`$Ldr3nGrb8qZ7nMV!3NF8kQ<-O$JitfMyv^ zPRyNcJ1TybY4vC^WTRrK&8R61W_HKWj!ngrBHsgRwOK8b5OcqZo6dLPow>nYT_ZSn z>@Bv3MQm}{TK4=sHY&g5$Y~}$3%R>%H^0v?$((~8r=!H_A(T4c00S>*01mkT0%NEE z2(88_$OMdu6d@0r?S2RH%e^tje4yNoB)` zJC@8$FP=uSt=6Uq#e*l@teo&(v%aexOVsmakE7E2XD`qf`gsl(wwgMZ&GAl;{uCTa z{vZMERg@SZ9*{x>5f9kFNFp~=m#qAr8YP-TsiqncUrFryK<@^imqtbja#nL&keI48 z|8r<#G15DW-V$S%>-?TOf5j)OJa{%hPj$Ii*z7jbx1&!=nzT20WxrdVqiHrxi)6H- zSXz8BySUt4lF6->>Pgahe>o4thI)R*FGHZ{*)3JB7Jo4BWcukP zko`L@n6^P6z({O!Wgvxz6sS<7K%D>~>JaMfQrJkpJf^1rbx&|kEu!@K^Y~g{zgzjO zPr5xAY`{-5saBD?ub?#PkfGvUQ7&VfEQDcEF~*rligB0I{hl;`924+Q_@D%IguIdc zjPU-k5W?sv5HmS*E66aZFp@zdqBMW42-prQ$u9~o$4PLmEwd#^myG@i+;r$n&N&E^ zLIKFrp+v*?IUNNt+ij+{_3Cx!U$>thwX?-_?lR}E``m0cfwzHa{ku-Jwd)R@tbCrg zO9VpbXTStO<)I>fNRf<*WI{;Dphyf7A>Cg^IcQpk_<|pR$eQfX3X_S_C4w-S60rVg z83YWLsWi5DZhSMsg4Sx??`UE3CtgoPtgKBdu^2@@Cu7ps*O;c=ecEFnF3o4dcF=jU zTl;mJRQY(zXIKaT%N-W;%>Q6?L)Abg`RmtJ-8H@oh0^nX$HvSWFac}Q*itGVOc04k z?Q^cgmR$NkT^^8LTt+uHG-&)c7YN{eDE(nMNkr}Kg+AMeYb^#Jc^4eFaB2j+;D zBWIi~p$Ni7koH!fTA?{uG-Qh;%+P3Y{FOFbx?DzP_H5Sat0qGuw&R7bM=IQEXjeLJHMFqzb$6A2dm{)<0~T!legag+6gA^paPl!G zpgQ&QOB*F6w{i5ZzR`-PORiI$D~|5;t+PAI^A`i#51Y2i2jD;gAP?-$#Pg-b3~wunh)^BC#+28UnIMpa zAr9z&e=(k`&Lx<@tw@;=SGeTlQ$i$FCYfHiXs?-KjJ0N2(9W=c0w-mmX8d2ace|GQ z;`OA_a=FZHldQ#?-BW4aCsu$!yI_C|H)#-U0L+dU5rZ_Kqx2LH;deig3(&xnuiK3Y z_;P57CG35*wvvFA8S{b_q!LLd8#-Im!=e9wI|xw6tpJ%Et_lahpu68_)H{8b`-tQI zmjJStV`oUc9AroJP$g9$f@Y}6{J~dJ^EytvXk;-MZRQ8lw6KaE1)J;o;A5?Kc{r(` zrnOt3sca78e9~S6I!~2|9Xd`_^mFITR_3jq>xyD zf+X~!DAwT&pork%S+O3PFmWwj8GwM7MnK z=p6o(9E5-D^*%;Tn#Yy3+3x;=HVyh7-k#kUz!n+a0iYNbQ@tD-X)w*GgBfUD5N_dl zG0m5jw`e}Cby=lPd7czZUbvDfYpn6gvt+5mEwU9)uV( zi8}&FDGM%b`?H+Q-MSji-y-jlVDI{^){cmcv%Zs4Z2x1$zf?+uK@bK;2*H46426F< z6^N=@5+Wd`DUl>VhM6QU#UONlL<}Ja->$&u5C&id#0&v|=nQ*Q2^<-t{i?B~HLEOX zSMg}PQ&Fo-@kqNQi;=gPBzL4OhfG77@raXky&}UX*1gHq!Ri;97&RY{ot_8z)?yOS zoJ6`+Js;Tie0InA`5hGzGPXajWEdYFhO&TbC8x8&8bw_uEh5PwAZc-bDYSg59+XRN z?`cSJpAN(0!(ICn$e-$pDa{)McTyxoLnIll3J7%3L6TWR9vP zI6M(fpWtlwJ?x7q<|E7#Ns%uVuVquRS#7~N004vNF3_`(02nn2AQbKAWfV45S%iu6 zed|H|Q5M;w@JNLKu?UiX$|3IgY%Dcm?gI~V`gu;~`<&kWOrqH7_5=BNU&()2oxaFI zFC>7G-~slC^lrLUPX}o@wP4xN$xJ~cLPWr_Goil9Xdk20Bgc47;$5i){fwhWW*U|^ z2F~;|PJAp*%zV%3Il*%xA|SdY>g9#cLnf|J!H`mCLm48w?Jp$7@2+YImCV5eFpH zzE{!N_r1#i|9}L@_$UMth!8?V2#Evx;DjlU%!5&4oqyc^?UZeLM2YiBAaHihB1M^o zoEARn(T!GvK99+Z446=!H88jpN&#wPKvLG`qGQwSyU(k@^_r(oW)6d_2+k_LqeK!8eo8d>dWN0^>` z^swGGje~+@s9-TD?0P?(g<`=yrb-y{i@u#Oo)QKPRUA4MVoXRJIp|P;wDvc)7aixb zr4fsM|UHhZ%549de7(eva~(H z0H$wS!?(Q$_HdYI5N(1I1w@bKf1o-FL~5yK3ZN>2r~;eZOVI#|gH=G0_z(!K2pq7X z5&UpA32FpF9jy?cDZ=S!8m;02gkz{~VDSfnoQ+9AUND2=x*?q~fsyF9rkxZ*QO8E3 z`GZ0OtF(0@YS$uVc>*PKLbS&1bYjHeuvBRX6ugOOb@aS>EvJg}XUUKcf4*Eq7E`Ab z)jzS|%--(3EVm;ub!Gr${M@9nxqc_|JxAMOGPlkSQ_-=hmc(v)&|LJi{YP^^A*b^? z-w)A!t$|U)AZYH~h@}7tATS1mKwy%QI)0+B_t0ez_z)@8KuC}h1bsf|a;>9rx@=Zh z&yh`PaoF+1i(6<=o5epR||UZ>J0M*1lx-J{a0w4`TbSj(f@UG(AcRos12?O|{ZB z^(g+Z``ooHw?WnO`ebd_J`*tuk>@r0AiOVo=Zg56JZtU3^I!Ygf3tUf(zUC^Kt-?H z%^{%#1^yzZ^mCYk0wBL~3R2Pq0!*?*NW>FRztDH*=^&&b{E-4893(zH$awJ+>c9(N zNG~r9))o+aS-GT8hovx>37Nhh%F}36-giY=9xK{}<$dpNvVT>=Cw9<;iJs69LquVM zrH6K%u)tzl!ub05f4HyI3>Uh0z2x>T#!z7`9&Z%?zcsGbxX|U~;;E+keSGuR$L;2M z9cQ-fzeNmRGd1%N` z72E7wFAD8rqQ1sAS7G5ZTB|2}g%^mx{%Kk^$OLE`mhPUihS-ygQ z#MtKN?rD`ibv_-Rj>iMq(vlX*^!_C?Uk2+QB%shC`sw64YI5hye`};2@A5*m{iSg)c=-Q#qp-|) z{e72xtF)jOD`x?t5gJcb$XhDOnA-}q{PCd`WpI;Y&uq;`I;U#7ZMD~*VJMw8&C5ZZ5 zt!dD{ zi^|`BF4^$1K{AeC`hXtV89Fg|NGkz?ke{}4MG&k}HBz_lFWVG9od7zhhM0sPBw6%C z{8Fy}BoLx%akeF}PiYh0+u7^iqX4|SQP{1u4z_OdWVYT<%KzWi-U{%SIt-s10!*5h zR}7ygf3X=BEWO)1$Y2$0Gm`I%rIolS{U#NbRy6KCukzBj3Ql)~$VD88nZerFZI)Pw zeDDH})}a!FLj-{mL{Sn%6B2J&P=Ncyh#SPD6Py7e4uurD5dLui^1(_;3<;M}S_DE6 zVr<)zObN*(4}Btn-*n)ritve}h0pos}4sSgcmrs?Ny-Oe13ML;U#EJ~QlhXJjpRrv6u=6>a`Gx!HJL*}R;;%ReAuBCOt?D(ukf*?o+L;$3! z|9PVE3Q2%BegCb0M|JwK?XYoFB5Ep1NSO*u z@`i*y%)LU;9G$XhbW;D-`x)S$;mCh~f1wZcUQViR@`PzZo6RgXnYu#Ao|bBsdlc2> zhvuVnvIq|EttxZpvhi=D0B=_u7K9Nl`ZP}e?rnQtmHmBxo_UbWgbozOPF{tde=d;J zI`3_oUaI=Y3Z@cfFvbpa%A*{Oof7kb0w6(QearSK_hKFa`O(OyRMAw1+_{bz9!Ezu z#)9b2C8ib;B=bMT^x%Lq&Rc^_@b2mfJFye-?^? zU6j-!Xq`uR$qlz8tIEVCGitMZ?7zs;F)nb*SLAXq+(W_7>c!L^B(w9aNpC^CWgJP3_Rr$yU z#9BfAv;u@6LDYQce^(B;badOoPDhU{rNd}6!M8u(~Duf-z z%`D?xY*f(affN}{cN%{$N$>Y{_M9)V@3V7M*lPPtiF*yGD`r`}hm(B$Sbka^oVvxI zo`RvpXCIYdSjl?PSGxAEuS4}EQeudLuo&n0nZLfa=AK$5iV-j~Rr?4sv;8_MO9TZFs3c89K~S{9i473dQc4j~2{C_A6%a8=OwCmU%>p1u zKN_3K67b|zd@2FY$NoTf$eHko1i~zv6j~2&HZG3qJFMLY;LL*W<4ud8@GmxAE2h-5 z%^xypMivuWKRsip0`EV-iQz9Z;4zD~drF z+e&Gt#W&PeB}ji_I`KUF#`1O@1{)3W&irk#S5NT%R&_BKct$S`SrkXbNIdDH){*A)tys+=2-I zxfMjjiW3MFv@#N~B0?i|J5B%qr^|u9u!0TLB#@BpD5x4x6Q7`X&}?86>(jZK;i8PJoUm8GN^wPt|fqIsp2k;`xT+k z^%}hrT;I+Y!?jV5N{>#TRFJNiRgj~ANzF>yLcC!kGYeN?)TMa!^f2A$iiw`Bg1vIQ z$?Z{3mGT_d>Gp1c%BUq!T;ngxh1RR{Ed~K@2=;`-&B7o<$==oyTT`^-Bm_ia^vrg-N) zP4OB80!0*%mu?lG8GrtW5b^m%vJMK-0w756LWB_Z(F47d+qWymLP4z|`GHyz7=%YxGU)l&!^#KmDfyN5-5NO^&n$-r7@L*6wDhPZpPl2)7AfP&PR%QnE36e%m zw}cah2MVmVmIrjG0mjJH>kF}%RnTJcRU+zQ@sUakb$C=&qnI}{@nOA;a*fK6V)WUW z@LB3sy!IPthJRO1nc-DytE|y(Sa#Z|te5m`9Op^7a2ytgvnV+y0jz@m4U|jbl1PCF z$U@=zXap507C_G+9;82Ro%3%^%3RLwYx~dU)%p%{Ne%o5l5&gM4-UKYuHNW_l9{GBYcIs%b$Cv4p!bAM&MufEKP!{_~}2TAwqppbL-&L<@!%I+-U%jG1Ex*+yvPQ8aU{XO)!{idr+JDs#vNecg2I(vXedd8r}rVk(U zLTN0>B&&rU5GV`NDZkmi<#B`LV8O-7%9Og#UfNY{IyC|yr7kboTd5Gb1E{`W}Gc20{_-7es^I$5k{f=A#o{w1IJC)U#LKe*fL^0(FGJRl(8 z&eC!wBveCQF$QBCk~AjPIa)_*VZMIBvH0aJR=~7G{rX+ef}7}R{hc+TyaQeqc_Imz z1Pq9XS*U=9pePE45oh_40wGqUg_J=eSbr%dA_7 zks=-aJ^qX!^$~+IsWJn!l>8zAYt#rM1}Gi7n1t(z*{3u*C)EV)scp>D+Hew{fw}9I zm(tY(YQm@&HX1Ic$1#RGcBv9(GbV$Q$Wk38a$Qh%rT?!C-`!wy-aYXCUL}ks<9{3g zAcA|#|8UmrWt!W#@=4b?*{zcq5dtCsj6aE}U=IDHK@70~AGCD@Ed>-z!&C(Ve^>ic z1ymHpP?A(qk`fSshh+zuhy{=$hwPwa!oY*d^wbL{w~p~C{C{5ucqOycg$_pxEPxbf zQ4TxnQ{h|uI{FfGg8@H4pt6{;oqxE~t!i%jY=B(AO9a{l%Xqwol|fe71$0RTIS)FT zbLV|pAvit`w#zTqSCq>krYwkoBi`|Zfvn3enS{gOGHd_5gVF?b zw_=0A3Fc{2Eyr21@t$VF-Uq(V4BeXO67z_B`l(|?uv^m7J}hSx2e zgzY`GwjE^KwO{-G?YyTjf_yO-9fazILc1D)F=IfIGL8l>3aRp8%gyX#%RcV3+<>vC z>_8880+w~Y|3~S3|NG|snbzx?x0UN=(Ghcz0D%BPIp^%Al`Nb3f%9nVwujfUiic|& z07rsEBG7>Ilr&jvi%#-wHB$a1O3CTu_;$+Je8k9+Z z!m1%5!!?H-VODVlbou4!WYDr#aK#d*-P|2nmWJSr@oeAW{+%EX<$9-2+&9 zM382ygm$EY6Utvx8J9f@q{xpSuZq5|vVN6==q-iiAxlHrSOn5YAkIq%>PxvGfEdmm z&)=o`I4}_wD*n&?li^WsR)G)!2T!&8n}7Nq{$8kv;hgTk4B`S&0X2a~SVTi;AuOnV zSONFQQx`NpuM_Hk2=&BIIYak=g!oX8!#JMMXkmYDn;*pf%L)Y0gajQOnKZ_5(mS55 zM6WOx#FNjUBe`JH>698Zi0vA}V>q~^VC^U_v4|5TW)<>~7+U4&q4%l306-8ji8Rf? z)abDSPK?AV;s7R-&2RMM>i~O7CtLjx1KL1yiYaI#AO!#<#$5`3sEAMdvLEdrdV-gl z9-l;iR9X_sxN)@OaJ9F z%kKmLgcS@uq_8zmVNb+BAhaX_)+j-!{~`hTpZ8E6(U+GWpGbdJfBOK&J6@piMcS#c(79*{p)9@Fv3xr){lL&oA(!y$ns*&C_E&m7%uG+ff}GUjH*k z;P$Z1(j^I7`V@3|!u48#HDO;|CTG8|;p1iPq1SZYcYJ#V{y>22mJ-RIwT z+x7Mg`pl&iQbO+>tfF+v1f@(1Vc(7V)TvT<(@I?$O!9v&s?aQo+zedX>QeuVfC4ug zGZ*HF-EeHE)j_oMwvidB9n-}(ua(iuc!t%pn$r*cl`mP(3x@Z9Q=@lopt-Bi@}3nm z4zGCHx*o%u?Y1qKyZD~TLstk7vob7KrIADpaX>$RDu{mv`##@-PtpP)Xel6=Dv14_ za8!Cke%k|2BQ5F!W$L<~s})&1NC0EHq|r~PRClpHU^ zX>awhIrw(XKM7b2=0RzILkxgSsRw;}q=m%n%lxxS@^&-WaukZo-+Z3`Uq<7?t?M$A zY+`@eJcctPv>VZt0f$o*r?ADnq%x+t;K1)obtGc`zWmRU6RF#{61>5_j~j6-!xNzv3Lq^R`^saj z%+v*Y?Ct{>ja#?3AyUR6t8}g^8--Z}g_!4*f7nvFs@TC?I@U&+AK(4;bYO>o89O^! zB_s=;*6H9z9q%LOcnmB*C zB!*c`C9cK((JT9_MYQb)eg0h?BF>8Ox=smDOG$)sTqU>br|Orj>$5dtDq z7SsX&T!aBXrRHFe6H2M1RiFk42li<1KiNJm6qQp9tPsHgNmKp#$z=*d{aAlAKn^Gs z7yj6d0#3dE;rBK|{@(t9(@({Bd7{&W zBIyc*(b`f5c?p=Du&p~_0<})C%(O7-gXaR=ke+C-|IJyki;YQO8B?5FV5v-V%!TyI z8a*6o6iOe~o#*_>2DWmSHzl7we?JtBkR)Wh9aahH#Xp2X?buVhh!!Q8bV@~en0%R& z2@kMc_xE1o@!B_pjvPgtF6r0U?bqy6>}|BW+tWozu89DauodiL%SKZ#*RS4pH+4wspbA`)_F5@=THc|8Uee4-C;yX#R&*Sgb0+9N%s&60-E;g*tAqE zALs~6(gcD?5EDPriX=CW_h-(&kf+4N zxqlVfQae|s<9uc|7J3c)8sCD?l(=Fr%eUMtico&J)gY4w48akYGcaU8A_yUx2q~3_ zf`V#fnSqG{7+R1eAZVx|2_k3+DTJ7%VuGLuf`V#lLRlcBsA4Fhpn@cj6GrVRxr8Jj zfq~s15Z$j3D4r4l1igTpe;h`VdUOgz&!T9*PSdKI{=a!k8g6?uGH~~0W5AfdQ}zk0SE`_JcuZv}XIzpOTZgzMfBrt#!i}SZF@$mfo~abDa1-?-qUM@JMIT3lbtoNhF9!B#9Uaf+|pi zilPW9Xe0fn{@?oO2S$ircA|i3KR<*~5VquB#E5rNi1zV61RJ1}a-ivbH7&B)s^}b5 z#|s@220Gyp2=3mO$o-zbW~UiF z58GedraBju)sEifUpLX*NNYtySMTc4?!DDhLi4{he|UWdDeKSCu(MEKGd`|=NOQW-qo6J>&cO zXKUNdJ_fHN?4eJJpJx5=*TFMo@oF@)Q|2;tGMP)a)yEBv!)G@?ypw;swKtmmS#P); zuYzUn;46^$h>42@_S4(R-ZI)NwTD0BwO%$fb&`6lLoaKC zP5OnT>1^zE+%7wZqWXQIzJGmnx<^+3|7a%pt#UNm?vo_dA0A0`R(wIF1)NVnDN%yy zFum)lbUfZe&lbknjk@inb;(rObKb1SA6L@zeP$B{310X=b zfMj4INTw2!m7t=aiG;u5fFI^$KRQ2p1rY@kH5D~U60rhAy!zZNIspO?BLkd@7+uPG1WkjxQ;Z%ZcLQz*3!++94DsntRH7joY0{7LAyJN65d(CQ zN-A=Bf0m*w^>|$RnX?jR9(oQAJS$&vW?w6KisR)Q$N&{$*w1aWl5S6CGnRpvDGb|;4H|(y9OX2CVVY>Zq zy>sxXn6yZQMZX%Ryw@p(XKFP&2w<1#f9CwUbw$jG(j~M#5+Qc8H0iGef9&I8%>?&% zfyJWQVl%!StLiDs=q$@~NiHB`>=-Ns8L+f1IA* zIP{-d^KITj+1~fM+@V@%arbL)bD5z3V7PKH`y8%GXL1e4l~d-S(Z5}Ff6ZODlT5F1 z$F;pt+xb9251!F6(e+(o|9d-|d@t_{pv&_38)o-OkA_-lhnowARTH*|-dnUhd7ZB3 z|1?coKKmLrbCce`w?Fwae^ZIqe>FSPG9uCn6pDi+h{#G>NG6p^Vj7BSPx54Q3qZ3d zfXs+h0wn;1NdZ8RPxG|d=+0k9@w;wL?~U5giUfi}W{*l)qfqQWbqiD=WpK~{qJB7g z__sQ31D1+#G4~Kcgg`%_yx@ofyBcN%yvG#BeDlX=XhRaqMXe0?)&9S?f8ML5^2)g0 zE*{3-c9yujUt04ZNMR z;|nrib4+Zc(9xInd}C|pzB-9JeafO{13tZMp3nR=j$a1LuK!xwtI6o)KRnp@1`nk8 z>-wNp)mi%({tox$r03$CvYRP(i+#h9o%>!KQ@egRt_#(Tp4)FDf3+{=Ud>o(e?0ys zjz+ui$JTy-zMoIa<7)4HJ=y*Si{!^Sf5-hVF_~sgpAOXin;;P;!hL~WRuva?QY5uEIL_MDM;<6i-7ntFnvb^kak6)Ve zC+23?wTbR&mjSZ*N?dwB$c8S_%mO1KAJZ)5G+5!MhUqdAM-!oQNJ(8ElCSbO6e;Z( zP#;Z*^1C%@e>MAN7B{~-Q7jqQ4AMi>J;A@?E;7u%&qacvyNh@e1$eYA4h)!D5P+&_8zJ=b`a+v)gOdc9oqf4sem-aZE-z0!Cuv+aJTiHYUI z$7|tRvkyJ(MhWN3fZ#CBto36)*{uC@)qKwJVdnl57tF2$sQ90wXW##TsD_&bQ-b-_ zKrG~MI^+ox@=}l>Ktzin87En_{f=j|-7p0DAIJGw(tc0h&hxqG0rBty`Lr02MnIC5 zmLfu-f0h;<7MY=0{wUHQe5jrjQ;5Qi+qcuOED)URU6LgxW7>FQRcAm(^uQpDQU_zD zL(8xw@}A`^BD1Ldr~arwq20E24kll1aLq6>FAZVkTP_+YtJ18dRbG20geVBCX%Y5<{#+n4lJZS9*hW}=ho6rK)cD@VTBzFi0&Rvn z##Oe}vuKw*GoMmcPB*OZeXbfT?+0_ZPT2Ryb-m^`H>~Ub*NgIRTgH{+r*p(tahu&; z(F*&!nU7~fAM1Q}qwDMY6Zc4{?hn@-s`HEJ#bey+Hf>h!eQxpL(p>L0y408CGoLE~ ztCtWopB;aZ0tfzCQU9WW`k52+8k(6BVJKo)A(@6yprB$N!1SmX6yyYg&KLD_7p>~1 zP4+0Fp2`DgC4)r(478#`z=Vo0h4>{@{4gzuNQ%TzA^?vC+|ggSC}9}}Phk<_IOTJK zAHe-ThX5Ao#EK&TAw?raANAVNLXaJ zULCj~oIxIQ`#yja>Q*HZgr)!?P!=gwPK=0%U=mRAC;?!kRaPnpKi=1yumusc5`h6F zALxHDWkLlB1|?7j{D0f<5a0|dAuAOksGrqUUU+V=`H1CJD*gISm0q9^K7j^lTAn7h{Z#y*z5dZ)U_!&;q<>62w zAWZd(2a=vy!7ww&N^4E=)FZBh8J~mslzai4m#Q_NX91X(5;mV)0hyO?HlG=PKF;S$ zsfPPjs6RcqHch|lGy3XszFd8-x{}dw+H;o5dNb}%bZ3=%{8~5n+0>2y_hbG`v)C{= z$p>}NYhb+_djHK+Mf1$@=7GpyZTM>}LmzT?gDJhU-+8Y!s!b-diITKmWuCSfZUvk7 z7gc%@)2J2RJJj}P=EZZ(b)$ZN8q8OM?K9%Aaxd-=y}o1o3`K5nOMQc3wEM5)vRXQM zJr_^+PyF>UNkI?vaR5b@H2^79q)C84r3EGdSR)vtAd(`dNHHsS7@^XxqxJ(efIVe3>x;XYnD@2=+^O=0S|@LWGGcvT-CJeZ%qUZW`3HU3K5k1a)i{g)5d?d>MfB`w9G$oY5-F_=$A;%ktrb*OXEDt@$omRi+r zeD%e*?Dgw=W;RtpsP%cA3Q52qX0J%bVLsK(55uCagz%eo=I0)cEt~z>h2>3jVVC${ z4!=6y?UT;LD|1fK`$sMm3Y9y3$Ec?p1^<`4!Ls3Z`Pe*f<)3qZX87HnKeSC4Ka@@> z!pk?mV#nGq)iy4kf6-{re{@(Zvlc^^uG3!l>2s`o8#iMCS#{R#HnTiD6xK>IvC>|& z)#JEi804hB73^(Ko~A;dhurnVVyqW!dxUR-y^qGcb^5;;YHTK{`c_*1q*31I)B55v z*Nk_9_o&t4)8>7D`+q9WH&;RBa+ktXL(x;%a5DQ zuhs7vqW+H*ezq>c020**#1`M-X=&gKp_Z!K^SvB`>v0&hP?}v*eHjs z9mV9N z-@1W(F*B?|a!(lEj7kvR>#a|cV(M(_{@d(BpVDnmuTH*rbYD;U-S)!k+SKI3vSbqM zUwl$qjY_Y7YWr0W4iBGsztJ|zUp3sj=Vxru>(hLB&CLxw?4Ju0=j>~k`}8-S{Lja< z`qn3Pe2V91(Tno>`*?{S9o1`_o=MC%zd0(<8oM7(b%NdcV3FYEVQaUq`|QQ$HtgrU zA$V^?NU*f=61%cyw*FPJI;STu!kz;c&$K&3F7FM0b^kl^SgqGiwd>2|P&59kT<>eU z*3;_G`g!2VS?=-BPrnYPj-_|&jqluKcsXjE?M|Mp)0z4GKz_FC-Os#o|JcHlLf!mH~e3v3yNtb9$<+pO@&hODq0= zOPPP~LfpH3+*>}Yyn(GeJf&wFZNl8OT=JE-+q>5pV!`ZVkywkvJD@OS@aVVMv1IL8cWjPRDHGq8is>2SG?z!r* zYXP)R=oKf2>a``{XY)?asUmm7Z>U0lJokOiKiNCS%HS;?X8addi#qe5!eO>M$~>Qk zRm7jpWGO3iTo2Z|pI?Spzt^m0pIrBG=y|F=o5u-jw+uuhdf~889xTMI`;*CR{vbs4jI59@KG&i^?)#-Lz;@0Pq<)L!tR&+J_ z{w!_wsra`XeU^y+%kn&Zxc z5&*r|Q}O(-*dTlTS26VbxPWFfGdJ$^Jtpn#M^xq@cpfM5P%I1bsJSL%)3HA{*`QtV zXpgtDf&3sE5#z!Tl1LXM|1JIdR_oUvt@t?K z_m6IPZwlLFdoSR5I#^f z+|b6p=EnnW!%8qdlH+|gCFCJBn6d$Mpeqz9(Gps_^tPJ=lwSQukk<6 z-Vm-s@)HmG%>fVgeP)HfO`5;Zn5epjW>ln+p+!@5X{f9!3j!HZG}bDLa7%05QAI)- z&2gXYav0NuiTWXbKY`oQL-(~I{`pQv`u;pN6xrHgpV`BMi>gghEsIqyRFX*=Ni{q^ zb9;=le}!MG6>b^MEt8LP!MqUZW_TH@wdOrO&I$wHc5&!qvb5dGhJPnw^EYtxG`N1= zzMYO+K4Y5Kh-K)p!~E#0BX7=`+k{fy7QKeYrP=82nVlSeE;{umQ8$sqv8)zsT;nk8 zz*%@ntoCs%3GO&ZRpzGSB_MVsNE_EU6uIA&Gn&q)n_XwDk?q1+KDoQI0__(EC$;+d z94WDT?dGTdr}*AK?RAgrt^3`kkIal4_B`<&HGkWy__qpTh+Y&%5toj3q^dIhCGdt? zF)UtJ!J^lHp4>9if8A*{Rxu6#vo62E{^{q5{!9*6PP|7rq&oDd$V7BeO|!6&geBE5 zS41*gZufx2e}sc>*^IhImu)rBLruCvh7doiVn41=l-ILui4`0}2oM=I97u?Kulp&4 z#HdH;Tf0LRNRH?h*eHMY)p^@DvF2G0F8|}evem~{313KI5A9k7dpLojfL!)bIij+{WYEHMldFiD0rPvuo_-J1)lKOs+=D*@~=sW7x z>x2D&|Ma`K1FZZrd>b+|^0xd7U9GJZ7H|hu^-#vyL$3D8wNzNtR+xGt#ZVWh#Jum>u&rq=qPoe75in?AB^?7v5(-UG4ooUu@%P zVAw--RM=s=-l4@!#r9wD97fu>uDxtH+Y4xaySC5bI;qgB#JcDFM>En@3G%4V+> zeUx48J+#)u_H1^wSq(;mV#C72_nW?d8IEzDnHC+GX6n>BHyCASU0rYXSbo;u>DbQP1;5m`(4XtvKV|thM1FR<*(;x1nA^c) z?J(#BJ-1^BCM*;;s)502I80FcD)oB3f7ngfL$Q@Ul}m|-Y83er2?T+zwPOK~3+eGY zb>??Rl6IYXz4ehs#CDexA!Xhod4y~kvse~w=_jyqLg36gKbHF zF>8rO4s1?|0iv$V$R|P9!MgW?Wf3EKAKGF?B4L@39n>NK-7kd)P{M{Xf5oA}Q-pk6 zkUKoREvoa4o~D3pM7tFe4~sp*gS zQA@oyub1BZU)J!#kb%0Yf5z=(ok`tonDsr4JxyNuoW+q{gbuBN+6e2uvR?IGa(i~? zY();g|PrK z^|KM?7}rT4Fb=t)MyKWM(PXZ22d-WyY=xx6r6|M(9j1Pa8^z@Be;&v&%V(olJ(Hr+ z&V*gc#4rL;H6Zlmx%zr;bMUNr?Y~QUzh6)J@99jE$pjkh;Jm#r0wSy43vm2)fJ z%ul`S#wF3tWT2$X9O3D84^=F7GZDuct@%C}nz2Iv1fBD(AVKM_V<0eXgJ&5i0 z-u%+CNVay%k*gmz=j+Z6#kWf!H$NEp9t8C=-F{VUE{PwO4 z13-J{YWDh+e{E!W1D<`rAi0Mxs(RY&EpDMF0F><-A)&y*geRY>-UHztUOipGfAZ#Zdx`JB>E$FrK|uh(d=b&P zy+%9Vh|qRw(=f=#lVVpaXX*|+KK)yEY{PE4I8B&KNeQe3J0hLvif~$i6w#})sO1VF zJDSxLJI@WEB4`b`Xs58U7Sr)04Eu2QJPY887H^yV9W~B&-|P3S9HTt92jm-ro$SvJ z&eVBBe*kvy#+9tZ5N4dTZ}u3+k=zna^I~YEv%dO6i$;hUhE>A^+Y|`~CIQ6nwXEs< zCF8(zyohGw!&Y4n4W6*xVQLOoka+1l?vU`Vt*+PX;)JbkD#JJ!!oM1UwF;DJgBumm zoDk$Q+KgtM)Iu?H4rN2;Iy(exh{c`y@^3b+e}hhLRMmY;OW@v@oX zPgz$6#1qq|YZ)Bv6XANg1Q-sTJ)i*Sm;oSnS{Q5bYIZ_kJ2pt_AlpMagahp?S{>P) zx_V>KlGkI`cfW4Ea(Wt}=S&j{uiOFT8DADKXN{X*YT43ftFn z;@aN;&-7`i$@%Ee`gzF{olZA$6a^Yi@WcK(+hUBiRNG_p;HbH z@W6^20b|pxo$*!!r={%sON}&knSb8&==SZE(aSS4HQRpg|Eh;r!~5#qnw#~8_49J4!%eP8VRxrj($ zVR5({SEah83)>g$*MbPLAcha!e|NfAuNbrYKc`F%MQvJ2y&d=8YmLK#Mw%I{J{&&b zito1i0*{pZ#eM&7J=%Jg1ojvVTh2_H~dF2!<|U0>eO|47<@XJz~hl$_j!7)Q5Hq zk6P&Csea4{ftGwsc&#c@f9xA}=%91M3Ipd{+30A8x zr*E#-wj?SI(=hv8pL?)W(2|z5uY3vUuZ0l-;vaX;rmEQ0piDC-7+cn)DoLFIFWL53 zfZJBi+tY|D8QyHz5UTH9Y+reIRcjDIh5mb&z^g{$MeS(?)F6;Re;`0$8a2ZWLkVj= z0gt7_$t-pPy)43M02=Ng^$dhdycgUwHBP*{^~<3)#q-=~D5i=4qNw@ga&@D_Rd*Cn zxTitW?iLOcDRMQC#owcoCYcb&izx4$nz}Z@3`LoPOQ;@8+U;Zoib2hw#iTsU2o;Oi zXFxH!zg&!8Esn+NfBuh@bbv(!*O*bD88IoqY;fVkCQ_ZV3zubPOcO9>V?i>Sh63T@ z2t$@+rX0#V#G;UNyE7L?Y}+FmKUY&A}pGP*6MIi2kRJ=VxTjoFNZ$cDyD zYqLg}JvuHY8)p5pCXxf|BoFXV59jPXU#azP&lHjb4|s3APT!%R7QEavIJpo{QV4jD z7ps;Y%!Fgtf9bvMROf@>wI19LO!r{7o#+dqe_0Cp*gA-J1uUq$LIP12mJfCifl|+c zJ0X^;&ng`-G(okuSa5)4RHddHC_FLqk2vu@AP*8c*CifE`M^GK9kGBxkVqtO`;SH^ z^?AjFPznNln70ZRdOc8&8P~RJRC}N|yLBGxw5OB_f9dT+^uss|nE;S?V!s<*1b}jY z#xmt_(s9-V89*>cWCwah9x6x*&3#SMdM9MMWb=Xo#appfphsQ4m!DLQ`GJ zo<}18e+tDH_#eRHbM*Fu+a0-vl8PwugG27T?nMPqRW(6H1yj|?@jY-H>vhVx%WU!} zC}}9Bl8;TF;5#KW(-BP+-C$F+3CR+cifuxgPNOu#ds^sJiAY8(*ZEn`y*tS7MA?3WT?S8hqFz zf1Ni9wpA48uFTLFHF|cpH^nukbn~07YcR+R##Pu~{NT?jN|XA_Cy1Zi^Vb%q@Y(%= z{NI1uhw27uI&ttn1@1ppe!l)av(D@IL&qP>M5mAO|D5@M8?TEnhA!`iWAV!AUhL|4hlZAx6JvW`zV0~VpIw;% zKBRX94D7o(9rAbcmy^_7Z}6`to-glr`Z?|P9iP)I1}y_VfbRL+gX`C~ZoK_peCXYR#k1&v6VVPH*>mi+&88 z?*5VVeZ98of1d6>>ik|jxEleTod28nA87i%A6C)zLG&;<_;=uPdvC8EqwT{9kjX-X zKc$WkpEFrTLc%cVm0_Kkm`$8re+jS%VVyWd2WNH&Ac#UAxrEolP4Nr!{gc7p@6$NQ zzV$yr^9twB8nj4WXCFm$Avr8u;*@V0c*(2feJ0tc-Gj1zfASd{joe8_ zP!bSv{JZ`kQp=^w9*Tv;sJn(pG#HK|Bk5_T5CYtzF~(A6DUxJ8jsi{m(VSZE_dp#T zp~BD!pAG^N5%Sq_1DZ%Xn5CUg;<^Z|=7!?W}Fm|V}=TtXMX_aCq-eOKhB$?(AMN4c(&5E2H= z1OqW38yaBcOEoixe@O(%lS8`^gh2#=kRakeJ%Fw;$JQb@$=WW%EDoYnF&&TqHAm{Z zfcm@rMFfyQ36a&lA@O72nLr4EsUhw1YD1_ZMflOG$RtQYq5wz1YTCU%rz8?BCbh;` z6b2_uY(x<@3}sWYmtlVCqDXZ4NnKuv&DYsi!#HFRl6L`>e<*6G39729swqC@pwXg^ zHmay7po^2Bs-h$O@r?|Vj6u08;4h4$47yt9S zGWVXDOft#LCfPl+$?l%>KDmCVn&DH+t|*s$EkvIj+?SFs*J}`qh$Eiii+r}K|Dbfe z6K~#MyMw%hMdxc4jt}mI1eO2=4+7r;p)Q;1{^OSob`ANvO!kAnm{cEH&j$-6PAZJW zX8jkpC#*xQ3-z0}`obi|7rCAewyeI(+g&#W@rhKgfdA%C^B3$?pnDO2maOHB$xb;p z)>H)Bo#b2gg(m>&ut_TCer} zf8kX~mF zcZCb8n_~s=Om?r1U`)+=cDA&H7q_uy-RS0x07cWcEFkx*D_K9;wy+_G z*%8R8u`?gt;+0PwAH+=ugXZNV)_?3r`eD<{G^DhPTZseNVF$;L{f-PNYoub&U(}}7 zVf_6?#NJtE9#HLkd{BxyV#auKOq?!l9Gz})bHgR@*YTj61UH}aJ;U9CBPX+C4NArd z4;132VmeTLfSek$P2vaYrISm?cl5)MdFpuLOrQHDzrZRFq}Ir(qdU0s4KP-VhF>w$$7C%P{+_A~s$TLumIp-~ zfa%9$fd$b!hajBn3!zS-sc(eyUFayE2-HZk5;bZpWBqIFS@3w^<6FmISVlqi7PV-z zBbaewmYUUgl{Dv_SH5C(B90vhgs2|&>+@ZwZW}!sRjxgvtkAh=aD9~87+f-+RlcAr z1-WOzgi`cJCr@*_!^|~fT2jV5<`b!VI?BT#113)&G0Tbl^*Go_%wnptj}VOX-`2;5 zq}rEZ;4vsai`(OJHimtufI_cu%%-g0&0#f%D?>!*PE6afL-nJrC47RC2lu1rwIjvY$QLMy9mb-lM^Iwqq8u z1{}n)$A;gX)k-CMC_pT7S?;<&J7+zTd+mIuP!^XmPZ_&BUg@*!$KH&xxzrm}*6QK>$fGq!uGsb~cyof={+`4da{00ON$JPK3jME>L0br$v8z&%q>kn&-84hv;K>dA4*=LgTJm zvboZqU49qKRHG|-pPgnKHqmpJHtK`#grxf$3PPAu2#_p$E!q^8K7{xdE`7Lr)wsY1r88)%9|fOogN$F`sV1Lw2#IQeoomT-VF$Ih?3q*|V>#PZ;B3QJNfC zMo7ZUicXi38b+jsn=kQ|Sxu~B`yy(pY?slIf#^8VPQOZlbY+n>Y{H0bkwu%&kPk_^ zVCjp(_W+~KSA0ZDxA7gflr<>521u#>Wmgr%X*9U1DAmF{X;*ow)HKYIq_D`IcEH{{ zD{8M||81Kf^MJ*2qCa!bC7dw;MTU`~M>V(cBtcS@fDm&&Q(c}gDh0)HA8vi{fUcAW zhtq4uIhS}7r|+JOPG0?Um4;?bRJ-}MFJTL6DHmlP1wmgult>zknn(P_3V@saR})%6 z53@VmI|Ic$@d?Iu_9aJ*`}y?k=}Q^jpLM`vh3*AwBh&5kg7?M{li7LayJkPv#S!G- zpPR<n`8Hk>Dv2sGt+-IBczEBhxp$v`S!eBTzt#APw0C0 z2K>Hapem|n2(6K51vLyg*GY1Eu+jA!b(l2CO4LpGuiC33lN7J#w4L%ROm+-few8L{ zoN%`8>fUOfGRv;jW2u@W48G zR|_0E?%NcK^AOIydybj#T;|_8)z(6MKRZZ1dhS2sk#}E4@eqgJntESR3Rjw-*-p(g zY20s$aTdD_W6q06Cr$rSQ<}ejGeoMq_a3sZ5QYO{Lk&%bQB{;T0V+z~4 z;7_5Op9};M&xpJ#)_mRGpRm`3BZDdV%HG;3R%+q;mwPQ?R-(WudrnKy>wz2IGU(o(SV+Th;f{l48q zS=NusHRdjhDUU%@&3`5ZE-7C&ZzO|!C)jJQl-MIr3-E)^lT{{=q~wsYW;EZ2f*P+h zt1?-9B25LnT7cuI28jfDTyNU>+L}Cra>y^@BdSa1SD$NNR_dFosM_zACySy6)*Y+d z{3rMch%^flx+U2=Uo7i$ND^IfbYfo9_RX`bY`nioLfuuZ? z80u)2WQP+>d{QxiaJ*6X`+$E5UC2_n-abS6Rb-GNxNT#6&d1w*(+lz-hLOH)!?>D-`~Qu#VXUc zFIqdfjPSEEFE`j5cT6EO$cY3p5B_woj&n_YpPYB&?ubs$w3oEF=)7`o)6~ZIz@RO;SHtovkOD7MV>o$y8|+EK>;t$W#V)xF-9* zaUy40&^n21!1 zcdB{q_~sXFFflniDFN-A!oIWkZNVbe@hYg6id8QJ#y|KbSEZqC}zQmgCU zlVRi@=XdW~tX1E$`1vp3wMwIU02Ic+4%;F>ptAFtWVmZ5fSy4zNUxD?h?MDP^3A)e zrQzmL55IFYcHDEWm)`+@E+92;?M~agl3& zrHq){M*q@gO&Q|*ESR&;zRtO%XJBKs_;^%{$>{eOl|8rRJSsSU+@-bE)PRa;?e+FG zwSs{ClUGOQZm2EL+q~&RNp7+HD3blXr=Eb_&r@;yx)Z4L0 zTcRRAm4*67)4YBv7>CJ~ry}el3lX=f{e(2yLBa z8KZL|bNNr89Ie=1=CcLt=u#1#kdLeM}im0CH)n!8gOam%X@%|e5Kw2I%sS&5%sd*ry4Ggbx)33yTR-v%cyzjO_NQlrfWeOz$U^;7PqZM<&; zaWz49T1GRA=I*naVJ_HMr}u3J2*Doay`>$WcJGpfc4grmEQKIqe3C_O+Nq~6PCgeO zPre5dj$RtJFSMHZj{;xJJBY>#f5%%z>*EPJ%rr#4%-4%iv`2Y&xMU0H$@zXUsM#MA zImukI_rlek#PRQyo+`WsYWel*TlFl0+Q$RD$#+h!QC2!dwl@}^Qtq6lU%eN}>-_f) zLoya_uXNwA0RoO1hqd-L%Va6atpf2HELNZ%8`v)x0l-P2-&Qp(Dra_&BKLg%CwXB7S8DY0rg*}nHd#Xsne&Fi93_u-Z)atnqxFU|E{`IHxjA%+7G_R8k>$A`*#DD zUk+aW*sZGX#_~Ge?zr=waTdroZs_DOS9u&+FrNu`K5IZAMWCbDUzr6fifntHJk~!z zp@ZnUaG&*VbjHE)SQ7eQ-9RL4Z%;gh@5`ZEH;&ZLbI_A)IBEnJb>_a- zeQrx?mR)uSV48(P{Zo1bm2$c~Ci)To)^J=@V?MwB%$TXso@F}7l@WG7R8{urPa#np zQm>e6kym^<{b!$L`Q;gYGR-!q!S6z$&&-6Oy5~eL(bmjwpN3&HJ>hh1jtUNtK!x%q zN{uf&%GGgT;b=zAn)vtv`Fo3X+jsBtYxFsQ{$q4PRJQ2a|BITWzZ=Q9qIndYato-M zxNynHDoixFrBKlMKv^vTeb24yHf>q@_hoqlc-rt&-{^8;^mjDTe_NH|^9TsEWT@>f zdZxR{b@LKzVe9XVP(XCEtpWJ?8~2;EX(f;E8hoo~sj!vL(hJ9O{qfiCUGw;xNc{?1 z?*=#B!4JaYe$3krQ=FeAXg^^gnnl}GB9jz!A&*|^i)h8Xylrjd)F6qfc} zEGmY}ZU{rUxx&xqN+X>n)_y!erDo#r-h~L!<<|T5%4s)d{VTiaLZNC1HKgtAlCl4* zP^W9~YBZths>a>9XXr@ZTj;&N4ewa(W>E)!8l$Qra&v`bn970WvN-Fcxax68d`RbF zA|A(KiENU2ekO<2Cp6*4<;As$Ev_cWbh^to8D8mG#X(=6;L5lZn0l ze|V3X1pXTGOZ-r66?f?-y`#H!B*Z{Ph2`zP6ZeQot|q^z0aake#(kFmmuNpo&N2fn zuxlD)_XUA?$N5kO>4)KfGtr`PU}?`B*RilO)jxI<$0yx3iqHYkAha7}kJEg$lOYl|k0P0S`o-}jtN@N9Z-Q0N71l+#8X)L9A4V9d{_ zlN9~lKVH76B#lYInl1~vNmlDpXS1j)2$ib9;u%&8Z-|nUwg`(^9xsKYF*M*j8`rkM z@b$C*n@;DVTF;}_u7w4Z1UuIuw$N<|=c0F7V9ujQ-xa_Xz3gT4R&nOkr%|0Xf5iRm zj&aiuTZy`)!zpXN%c;eZ@!aJEaWBuN|CWINmiS%wouovK+1Dx|GcwWr?3$eGt^M;h zZc~hwf}PYcWctv>ni&Wr{AC0U#vc<4LT0#*v|p}Z!+NE<<#gkM)Sg&Cgq>`mmr*Gw z>aochCKLekX`@K6M9J7(o?6J-p$;H;x?Yrg-ZAG8ZifFQztR6ZGOzVuBZZz%M)t`} z|NJ*casRF?1ve(V$)c@_Z@ae3$(NgG4@~b!;u}}nn_vuxedsf+*0M*{(~B|Ljbj_E zyKlvI-LYIF1%g{r>}u9AO42TOrUid>F0(Q+B&`5nu57a=#C=D&TT1$&4(I5Nl@gcd zqNtUlLyq5fosZ7Ot$T@jLY*%wXVu~5031v%?7>h^%gl2^c8F4 zU^7`*D4OiIB5$GC+kFXbkO^94gxbXwyjwTpeJUsWpq5%Nhb7vi@$#PlI6n+LEbmYP zKHBiM=zX=QAGI&`V}PIR?^^GYj1~&AS}n8I0}@?nZs6CJ>{>$5&gGNW=TrA}3IjcH zo?kleK9#QQ^{u-)#6N7eN*lg3Yov3n<%@+9w=~}I|F|`Fn=oP1*{8R41ClF}Y-(28 zJJj%V#|~~D1i!}W6A7m`=Yzs>nxqQ`IKSbP_PHRUE`R;nQLdH7aOjQq3W zOJuXQ9z1|&(Fp``;V0a6gBzy;9JeIm~-g*PoFheo6A zn-MZqoJ1Lqkng%fkcIHqdk}9L8t_Q~2a7&e-g=&LGY~%@J+iud&!00Pz#j)q;=O%nR_#c*t@)qp|s#bz1peXhCXA10x^o>b%0 zu?2wsmA=|oEsEc-FO)xTa*Ygcf#b^9f!TpW#SsGjkW!~u9nfMLuMjx!dnUU}8zar} z?hb2d0f8Y1L2zg+5`@|MRE{b1(y}Qn@6PGGK72yHgE4m$p_?AH8H89-Ha(4B>svGy zNl%S~P}(^*T1MyH^(b;T( zy$*-Gb7Z-I;SX_#c(4atel+aN%=s!4+S`}oYuLZ=YOEY=GHOqb4{!cZZvv1H1@$7! zx3ywnaxf!e*^-~aAKo?jFgdk}ZJ9^PYx?;XD?hQasyL19{54r0nBnL+6#XficLgBJ z`Z(zvM`w*?WFK?<@u_?C*T5D$8RDC`jOxC2C+(ie*AnRb`lAW@;`Is=+|S8_gGv*4kgls(^iBo6X*E` zVBBrVg6w0R3ZvYp*+>8Wn>Ij5YZfru%JbYbr?s)&>?RgsMi2olO8>szS$S`zve|UO zTYu2;AcD(idDcF-O+47A+u_mUJIC3HiaPBOKGE|{@4j^fV5-^;V&tQ)Ub=`;5>(Si zoI9kvoI{8*6QDAmzz?3@IyQbq{Ht)dE_t?rWO$JDu3=GVo22;jY7LmYbfWO_pMEQG z#kz2p+Otw4(OVCQxhEk&Fln4oeJMmPxST26f5#cL@d%WwZ)mSjK&am3mUwR+kVM27 zv^Y<5Wt_`O$+6E70%xRb+UMYcV^SXMbJzeKlg*1xE**JBi?E^L(4nuduT>;m$!TuL z-YU;n#3?KR5Ys^f?8O6UPyy!3aOff5!k@mRMgZR68)KX|RuN-mF*Xn$3bhwJ`YBSt zK1<&EC~kkz?&A3`2yA`~_X&gGP})I@Z(x@A)GG?>?%k#WgOn=`-E1Af!bua=3oM-WA~C`5orS88p@zCSCynEJ*$V;{V8FE6Cr=C*-Ud^!47zg zkMv)XPjJnmc<>AALVc$zdoW1yzK}g zYMiHfOcypbF?U#^N9Ir3z#2rxMO;K z0Dc;AXS~O5uFmlGyLNAIJJ;1WKB2mv?V@jQ3kh^_g%$V-qEU>(NqD{;=Oh4zhcCo*2vLWP>p!^(=%k1BCEiDCA-y1Uh2bX-3m!R_UX3L z1tdp*fC@HTcceUW$kP)+`C{dlGach}GqM$>XqplWpLZV$eN8@%3mtg{my}9cn*$HQ zi~7t}cch~Gvqw`~Qt^to_*UwG8<*3?5e0vtovYP>TyqP98cpW0eRo35lreuh)EN+m z!Zm*cmQBp#H;$ru<-?+P}3?Xf#-e}pFidzsD zHcG`(D4O@EKsW_RpvlMl<3a&*>PxMGgi@9Ow-I1JRB%dZG%k0K$?kWa!Y?V|w}&#r zup(;(n9oIuJQ+rdHArjFk(@48vvfz1F1q3GG(hSQKl!@vBE*M7O(R8gXq_}tyTe3R z;6NM69T+(nLkjn8{nh%s(`L`5ykyxy;RJ)94j}^xV+w+I8AgMFCsopTs|D48mQ8F; z6C{Lv=eX#cJB2Ds2GgZR#zG+GX9auwOv-GN9|GksVjhl5DCR|PC!u3?^X7HV*s32hXd}7d=yj*#3C(fe@ouTDy$Rkt z-hQ2k6rFEa$DL~Gjo)VZZH3i#^~ z&wXCgx5M|*8I?K9kB`r<3V&@?WGF9#`q9__iCV;LuVl=i+FEp>y#@ljj0*)ud=9yR zOjs})!#VY{f9gA^2f{3td6g#QRgh~x$k|e06sOTR5M4C9WW;ZHUZ}VHsxpx`Tb)SX za-5c1nwmZl&^HBFB&tfAxUn5YK#?tG@Dn-YrI$FG|E(<+6c2Gbd20PUFk-0j?@-L@ zO9OeMX@(pG<@9J$^v@{L@ZVHr%0mo|tBEqRf=(ghUq6|si(oS^%`}waYgmhdP#3Dx z#Ql&c-@_Ht3<14m77b#$m`Q^)BQQF;)kog+8|8#H&u>&uF>%Bj73O+mIC=+FMoE@p!Q}Pl!Ox0lDo$uR?=o z$hkz~sCHgS!2*SW;GocP%b7oZX`Z*iA_0z9 z7n6Zd&#Qm`G+v*sbTW+|-rH;DUy-@4_oP$avopF`xBb)=NI5^gni1#7-~s&<#hFHgGI!7y^cLc$UGCKa#J<#L}@sJ4{O z#HO#yWfm$G_An&)k0ly6Cwoj(dZfi8Q0pXeVNav6&J5G1+Zf;yWD0XL`QQm6V)MX- ziV$Rrukz{uk8DPuqwC>oVQ_+qER^Z|QKq%O+`ql(1Yb8(&JhR^CkHv2ZMWkDY8NUD zB#x~6-%p+b=iT`p)0;*vH=nUMQsHHWLm=SEWkJH#n&Dm~6=-UBQNKfcq>j9P4fHR& zU!*GmCFE0borfG`iL1mjg(39fv=;T1O?(6+p=PeBggbDiJ22Y;1@$gIK z{sAoCP_D6zR0+g6uLx20@;qiYS9Xs$?Rd zTvAwx1o(g+-P0bFfJ5-~J~ZTig+6_3eE%H?!utNV`+t^VFwBk*^ngI%UnC%quX1kS z{j**AfgPc$-edql^V#gg#*q7lYMu<2YkHK1o9Mc!9Id*OM85U-u7yjpGdDq%TTFX~ zp5I2#p(W&ut}QAO9w}I9(s(Uwe`98>&W^M`SCWstPMsG|83~H}E1OAa5@Y(thKEaG zmRtaxB#RxaWCZdR9V|$JO$d{mR9r(B@ z-;+=PH*0h$G#3O?27$pd8+nol z>iiro9yY0!M`f}fNZ1}jEu#R0IT5JR4^j+M52Q#^2uPXsAm|%Nh<{4alSBlBKO3rE zR#c0)&hz1OV81PUPi2$!ZvdnSs0Z7xkw#6?tili`05cZ^%e82B(YC#(;dw!P9Wdk) zzL?a>N>RNJlKFVn508sLZHJX~dWdD_UU5H8f@tF!@{k-;g9!j}fS?x>D%;xC4Ol?b z_IILP&#oFE85MQtPc)BBevsq=AZW;ni!QdPKOa7KC)nQG(&7gM9-nBWPU{754bXGP$vws1j&KSknHM8Gm}Gy!mMG_;q`TcSN}xJYJ(Is~L5AaJ=dh_!Hd z69fnIM+gn+qN@ug4k84TOoRp^00iL&Lgd~83j~8%VPSMQI_!@JPz1t@J1RE z3F$vLa4o2Z49t!Qs$`5V1A#63mfD?rJ}UFW{%d~_z3QT!uKE4>1a|M``UykB`60hi zUGtb?v#olII~vH@E&$OG(nw4LE5H)018EDc0+W84W&=$_gDeps0xUt;J#5GUFnIVJ zYPQCf6G^J6R4e((;B=OB77X&`R#TpPx zRc!w8bB=b6YBQ@6qp3d1e9d--3sPrsvH8S(c+8f-f|M|;Hgo)x4Z*Fl#ZH%qXk&;} zlj>B%fv9KK25GsE3~iy4ze24&6X|@NG;F?h!f@Egb;!ilymmN)&jSW*zt)BlxCUMM z2`Pwd680N%0mDQ)4-ukabM7#=UO&KvoEjfr7bX@&+FJ}?Nubxma|+G?*Y|MsL|_=Q zYs1$fi70Xxh>}t)6Q4q-;w~dCB3B~Ua`nJNHBt?Vn`1B7V1A9nEMAf1nxOgF*t|Ms z%OOMdU!{U^K@c3je-9fW!-#15&I;2@|2qB*85P2q#3WP?Q%1u(C{1++&YEa}FUxU#_% zB9@jImc}17n{=ZHlg@#gN)^}$HIvI`K6G4OWE=9mOf)r~b%AQ2?v!nCAktPR;zme( z40uf2=kceHZ29ejs#oRfF>JHzX?H5TYk}NpVTtKecL8IVPM#b@ii8F}YKMi@`#_bi zO2|9NAlAs>i$ly^<@1U#E5J3eV?uS9l8X@W6uF55&6yfbLS$IIki(Ey#sU#k}wJwn3;R>CL9I(FXHkwNrV2xO%}$*`T_Cp#}h2GE( zOoWGS0MB%m|6R;MpT*2$BX{EYR4E%uq?2SQkqYFt8OEI0V za>Ha)$S;~MrpAU%m;IHmc!2kN#EoN;+S_myxB6>nCPS$@mXakwFpSmPZtH>p9pQ$0 zvT6v85L|ipw0UE0{SVAuXLzb4O@P)*T7geAiIj#(JB%!SLJrs|a&>PUAk3ZBNDbwR zbkk3&)a7o+@7c)6**?F=Upv+m?&wMW5Y;EJo5OjsYwo}$;IEv1?K~%Yrma{qg@SPN1lpN-ykBjn{N=E zTOE{VQL1m!Wa+tjI#+9yZvilYk_$mnsz;`&RAg?c#y&n5@DhQf`A#MGCge0p`=dJ_ zjGYF@vQ@4ew1vpE0z&~bWUh+TFl(uwL8_|xbTMfm?L}mub`7Hbio%iuli#X;sf(Am zAdC;o1Kd!68>hzMWevI%S4uKNOz;Rwiuy8pliyvw>NKm!KxQbX9)M^#%-d!@NgVS7 z6QkIYVF#YN5}Po-P5mF~tgsp{X4pdgAij`81z%9aJ&+RYH8CcU9KcqmC*N*N~)KyW5r^_~W*tS1q zv)hf??uARZH%TX|nMdL9J(!2OaniAh_LhDQx9K%~_x~fmh|@}s#A0gr5pI2!LAPI- z5Dy1UH^DSPhlvtU^^+RK&D&FlquC~IY5;O3d4S{N zRSNHZdIkOXoogr{i9QRT*KAxG@GV>)ZbvJ3p{`utX}$3`eBk;L0u}0%*5ZvchbD!g zW51Q-OKC5X605IB>(2+)TNVCl#i#?Du+2|d>{%7wCV(4B5ib`Md%JCMJcD$egMwFV&5d}|j!-98j>Z+4mAyJx2^6)Zt#bOhydBENAiS|O$@(>P( zm0OtYxmc}@nw*NR_k1>k@nYmEk)9UQxy~HdL@jp?w8;LM6k`Z6DcvdQ47sHbBw{xr0S*YVts{wEL$p-7b|5dyufvJlG|TkmTxHQteQ zM-?DPWXPY(sX^oY$j>^i8u&#~$M__#w7fR$vUh~X4MO}Te-?_?pae~MA+NOrl1Wsa zDKxHE5{jHip02z-+DO)JH|aO@LVL=;s%T19aWJ@)H$O@0uq3yH^F>xdSD*1W(#JQkT~Xtvu1m}pVj1nq~%SnEqeK0{H$Qk8xGYLHO+ zBNdQd{O0J`o&HWYnPI9#s;}2>+2{taB>c$IQ(k^39w#l-z$&faXR8;(tVh#4Tu}Lp z^slu(#!mUJK#OrEsIAg%CiF~!k&cd-w35ak@41tk>YlN6)b_^!m}W~{U}|o${)R~oGwL2 zf3Ee|duFlKuQNr$iOpL!S@CC|In6)0BZxMeVM@&dVP#QpCa)lPDH{F{(V zek-SKwgpDT&j?%+`;CjFa&+TozYZ{SRnIybLJ`q924hIl+0~D_Za4=3zXP9A(o4%x z$_NWHea-af$fM*$XHSqz?qE+W#nI)R_v(LN3y~3el3$~=sjW{ zYZG}c{d}ot>WILF%M(@eHn;JusuDS|;YisKD{>er4hSP!@a|)z_3Ng%=q7{d*F)=?A{U8JtBap_m<~3xlnd*4C?< z2>~d1=!UO4e6|c_5~g$=k#V2as>TWZ%I1!XDm^Fp+D+kS#B>r+Lgz)m0nY9m0>a!G zo_5{RHFSN9B7csV=}eDoJ>*HKATFvT)8+FIeul9Oj%5pG^Ey!jki-NtG*abFck#6I)6t5pWEdvTx95{_xY4wNa{A|#Tf`;1fc1rwis+hRXDx#2{HZ-bYi1F@(nRkIpfO~SI!SsHeN$teFSo-fN zDXRfR=Llaz=C?d^N4aa)-F9!k1E{wo8UNnv9`}?nV2mTR(IA?^n6(t-EZn7j`4Yd^ zC@5QL6u2a#fzuyy@y8TYyL2?km(YQ zkB@u1NPk0BtAX5u+vx*O+EJsuWc?a7j=eyV76vrDX1K=j3(}nGNH2wjw=C)KQ{BQg z4ElJ4IJtyF6J3{2T2PL!?BM-4#!^8jIbS^GA2t@t>mmxu;$a+B$izqQuhJJR2a8%#l z7v3NeJA2%W15c5<#FFD4L;e1#M}AZ48hQ}p!MU$wiX)1Nqsq)SqUgc5RlmLT(KR-2 zUi2F<% zTMQY+CnWh#;|ar9>VfKXq0!JZGNW*Im}KF#Yp!^~l<~QrEYYU9=n@p+#KVPC4xC=U z+}%bO$Dl%8Q~R~+A-K}fPDkF9yNZRXd?AOA%XoCWzmdD~@C^tY4mp5ugyn!tzmp$7 zWckYPx_(A^ECU{=b0M4&7nhlxk)|O75{THFAKp;1!QD!a9LE@qVG&A0mhPq+L6Zh8 zXZJzClYGSIM+eBx`;TjM=kI*z1h%3Mq zvH;s|Ehx)-OBISw?lv(&I!gHExe2>&Y#uX2d z6$Hr{5hHSu(rS>nMG6ZQ*4h2i-LSjvYk=`=+O2hIPIzu6R9xtn)bP-{{?yLR$JfYb z(*<>Fa%A+nbmrZ22Zymcd>9LLwr#GWco_CJ53)ioL_nMG!-8L+tP}zSfr7f{^tIFp z7Ho_tBQh1FM6PAEIO(E^1D|i|YDL>lP=^myqp$)9$6g1@;ks3G$Idhazxu91cH!{I z~a!PV9)BAb;dQi4(dEqnl@bE2gOklc`R-BY1?kAf%av@Rx zf`qg3Fb1i(4vN*@iHg7v{Pa^S1RvT%4%CLZ-7i;t zq!mmTCI(}Omso!PR{r$-QjM^%W`l_cd#{98#Vh|RIIlkVdE+H|VfCz5%@=VgC?P0r zUKP(8eV7KFM~K*ZgGt2R$Wn_8yHqvF8DBY<4HFh#?K2xax&|`P)xGno>(_k>pjwT? zxf&{!62gJ%s7yiQA;}n@dxSc%C0Dy~-bkurtxH{ebY@$VWKi4|Yw+1kDoBy(h@3&2 zWrztuMG&C7m`ShJ-M@lM>rXyHT3+iigqKe7C`lwvu|rcO;R61rD(``lMVlL!%&jCg zaKoevuH9neBkTaXgu1MZ0+}d_f_m@PB-D5ayLy}&J1ypKS3xF ztSpLbm@>+W?38FK*d|dR8Q*8G8x;HP4i(%%n&031)t^hK!lJe16eu~cpw?4beZqD{ ze^I8U1+~X0$$Qx7eIPIImO2G`ZeBVuSUWKG$bG&9V z0Sqx$m8MngysjnxHi1LJaescm{=GZ7{UPe#`7eQzB<-FDmtrXz^eB?DO6pCIy}g6A z=FznAKbF6Q^%*vC-_hcu$#}VEI$t=F9G*+_F-xd~S+?Y1u9a_*p#COcDcE0nn z&#%z@;5`Fk-gCgM&$iopfc&p>KJf)n{;#Xf+Av{+i1K_T(I55gvU zKBPQsP(FWp%w-Bio!B5Ldy+P?3@wE&kfBnop%fEHdMCsCJq@!xATgs_&!0M%zRz(7 zF72dB;E4UA^YXtSw#Y%d&)ZLs9p}yLwwoU&)D{N}(;yVLwcO%3W~aZ)B&EUNg~?1q zs3vJ}_yEAN_ZK;e?!PzzzTIA%{}3x>CdkbfRT${-7b$dAS%Te0a7B8)6+s|rzjfUD zxORd4K>BD0&`)TgYxL$WI#%pxR(AQU$)l^}G<9aWa%RI}TAH{E2yr6V!kkCVr0qiCd&!cdZ zst`yYa)g%XAY?}nw*$=4jIhX=z07+i_G0gkx*)m}!CAr%`Ud^LEWal;y+V%E)F5z# zVqhqSVJ_y)NvcY7dd~P-J@m`RtHmNtJfnx$Oi3%XG%DW(X<&nEv(r;VzoDf}K#KI& z0XucQlXzlS0s3~Vf!p*8F3UrW%d*zFok7k30q#&3ZTDy1pQ?XpQF2Q%T-HFZc2mom z7%G%F-VRa=7r+Mtcy8SEX_g4@AwUE)t>^}{a`s9hJQ;$Ads_}d~h?VUpNLAV0!J(5^ zF3QBmHCv^3?`k6M1mf{iN2WC~u!VcD4rMyhQvFnT^|kpi;={EFZFV%VWB{Q4cOC$0 z_S~wO?G5n`{`hqnpeFxHklmhFt31qb_J~WhWp}T=Y!H*lb#|c7kz(c?uZ()=5NfL> zajDKe#AQ0T?bl1AcQ7+V=Ya2C9ENFw6Ol_oQW12SD|sUfKke3~)w5-D<}N6u@nC3` zP&INSugH2~&HAZ#Z`3!~><;*xJy@X5Ie`yUe*6zh-vZC{_y3QE&2{FIa%r2n%hq$gH}HbcV5e(Pf(7#f0_N)p**#Wd3(zGs;{2(9THv)A`Xdr=drE{B{smQtk; zm)Ua3wyDbU3#p?Fap!xZADe5dncv#2Ah#S@E$%=;ic1Gn8&i3-}=bsXMx5Q>;NzuYZ3I<7;f3}$fvf*8r_%IOX&Qy>dL4CrC05HjDutvjMI7?rJN zS{y}hv?RPZ*8W?JPN@YKQGJY}bnQG2DT%KkTCDA6O5gf4`0GfxreEs96HiP0y#28q z4(npx1l}r*5$#7z>|tnTY4?(Vsj6#EC9(tUJZ*PC0C8}e;bOF+lOo95c z(Y|~bsIwKD;KS!Lhi z4oWbCZy^Fb6^>?85d`iOhLx4|ut&DqWf2;!&$cCDfx-><7?<+XAn5gC`x1f#Fle*n z)4r$pG)y_@2ZTxv$;hJXF~cKX_PEzCBpP6cxNct{HIWzGcx>C_FB7aSP&3`qe3J6A zeb%04d}4(kRZ#}3B!O`2M6UG5hXhT_Y?EUUI*Ha8n1JnNztiwCWb&&x0Zjo2z8=$$ zqiJd!xsV05XEOwAJq|3vXu_Ql`}k83LZ*Os;3g9c&1A!A9sl0 ziPlmjCt@|(PL-@IRzVG$L=hoa;GxIO9`7D0Tb+ywD-*EG!Qc;`4y3!}2f}mCLNGfK^z?6A03Skoue8GQR0x^QCCyMUS&NJ=*K`1ni-gOQRrwbht6HPKrB|2TUZ

      c=K><1a7^70TX)HY#0OE{!Ncp72)Sq_IO0fQr`SK^5%qH_mNG2D@ zEG74`;^edV5XnlcR2J6Sp`bhnJO)rtHEVp_3BYm{)i+^K~K+9lx}-RVW5kE zL#@IEpJ#gUxZ!Vkq;l#E-w~9@YT``!34y)R!Fihbq6w_-PH>{6*@(Ec!_?z;?;N<$ zkCpZ$r&Z4FO$Vl}xTy`1Oti-Lh}oE$T8O1_T5xNMb>q_^Iz${%#|iNY(x5{$C)tUS z9Goni`gYF#Sm)TY(m~v9-CBC8&eyZ{8=I+De%d1F^o!md{n7GykFxW;^|z;pS=?su zQYD_j2mh`c{9At)8o^(_+MpxIZ%e^Q?rQjaN_^gr?<7V(*Jyx~lVj@thr~r>Ir?+t z#bkCB!w3JTfqaRb~#d?=b?z|#VADt9F720}sJ*>3l5k||!>7qqFHvDu{f@7fq ztJYeLcXvYkZ5NM6S+v(~8v;QsH$dXvGx)?Ws9jYHUuqZ&X=YC=o+^#azd%elc4Mh3 zx`Hht2(LjI3!KG~&z@9MeoKEy=OMJPw3k&<+=_oVIq_WsXYo}j-ws4MWAm%kMa<-m zWzfSe<-X=ldFzbQAyksa_OQQ?L>#j^S$K%g#b2XbqlfCJDb@X@^psnCk%WTCy+m>4 zI0fg=^|dcr9Nilp5Ltdc3hBYzCXT5@VlTxbQQ0ruz;hZ$t|pZqjJZ{=RBA1C_Skmh zqlF^y2Ke>3#f`Au2S4Fmd*8F|O^1hMgw)17jtZElCmx7j_#e9YtoxO)M;9|@Z9mKg zJZhMi{Cq&}XyS`_+X6Wv?(RK%r3C)l?t>ZyqoqpQtiCM2SY}O*^b?Utfg3NgT-P=SgZaZ12QZ6N3fA;s!xIKJmOg9^jXDX^7?I6+BZm`fi3ZhDRy4U zZX7C<%x|p18Oo`4sl2(o+H83!>Qcf{wzl}(!{yk9gZWAiZas2~wf8aG3u8j_zV_X* zk)?j%L?%0Id?{rX@tqznyd*;$ZnVE>P&HAiSL*#W4r>u(o??n~Xx(Is2K*GTfAweQ zGoATxX3Qyck{pA?wHJ594KwQ|GAjJ};Dp-QgM3*vX>vBp$^mBgtO_hk$8-M&9ev7@xPb0T)F>U)$L4=4MpiNJBnNGJ8!3JXdp zJc*v+4ynZ(a%1~zEmh6Z9sYONuIJZ#3GMgXJwK&4$sF@%D5ieUNZCJe?&jXFWb_Vb zYWo(8oETQiQs~A$Vmdy0@Zm>WbZNPN><4GggBtJqdFB$<%|AX3j7XSQ>37L6y{w8< zvzhUnDbN34)2YX$a;D-37jB-9%enxbtB}MzEI;bPr++^|EA#}eaNE-2G1p%w!gVd& z!3zHw^)hnsIFZBtLZg22JzLu2Hs9A`k5}(`1&n46e-VJ^+&uzUGF7s^>{uq#o96$^ zDYy7lr8f5xQ|Ruvx5n&iCoCc2U1&^>B41)^#)$?#dCPee@`x;Zn&Sfd!`1Qe@yM|; zuiPxk{QB%;*Z3T%zFm=3!$8_|0<2BT-^6gU750(*!aLr{-j79lyUt&tT$S72CmJf> zRn)U)Q`vfrg|y*6=PB(IhiGb(picAUjpa;Mmb-cuJYb?6grj_PW>BPnfSM0K{#U4T zr^{|CblQ+B^m67a3 zb)OEGnnP1NMp zNj})=;?^gkDZi-+M}Ba+GcDlM_P%}E1%itqKmPjuA4^H>awtxcB|u8|G?T5i`mw3` z>URvj5YLr6e=(i4)VQ0LL~%BmTDo+Lb6k@&`e2ci^f{F6h&Vq~CFVplAPQIV{9{3a zp&T^>29xc4eFhK-G$W{>jQHbj!yNV7i>@6`B#Bg+j=EU2&RS}$W2{?wnSwUIwS^Gy zpE7eBmU#GY4OX<;kz*TT*w_DsAPdUGX9iRc+9$}?40q*`12wbi?Ha{aDF}A@|`kB zCwS&|Hsg4EWP%x&Y@XbB`&+dCrP2pZUX2fSLMe}-HU+R!TQ2U1N)@AcK6~dEE_^bk zJY4mi?Pz&zO{-4Fv8AIXsWJZyHm_Yi@ASP0d4hKE8*7mpnLBET$QnyOWWkFjr&A#C z4SsRy5uHB9_85ez=#iYCIv-v}5~iV4a|7YvJv!nv_MP)9gBsHxOAP|10|#!1%Nr_s zf89CjEjQVXbR94=3?|TA9R-QX>&H6WmA$=CN#mS=WA)7U}vFup5# zW^Qh=&Ahoz3(dVoEeb=&m-+T0_wKhIy?2a! zI&wq z(~zCKEuO4vP~Kr@_ackL)KMjLJ3%buReN+!IgU9xj1dm0d6PyH^wPPx?s$uP)aN># zN7jhM$-|Wf`jiSTVJjQ}*D0n_!X&NCEei!w$c6edhtn`D3X6u8%!G5J&T3gxWBmOn zf=>yyXXtSWfxiXi>yGsA^?$T){(f_pw>UJbGwPjlUc*Cg@iUj)uWIUOyPT=|xqD64Yb$?m z=Nq{MX86U!Vf(Smrd4>K@gG5tgL?d>q8%T;(7!=!iOaa?5bJ~VASH57Ys~AV_g%pc zcYn+V>XpQsj2F2 zv4>;AtDGMHA+Z#z443#E?Yc4FiIs}7f&7xs*PM2l@r5D%y5Q1SvI9Gvr4Q8&7NB$O#d}FAy9p_-zIu2dg*<<| z87F*8hwH*|`>>7___AoTBiuIc^o$fT=9ZQ=TAQ0Us(gx&A^jp@p zC&%GD!Ke5n(F)drTIa?6gZ#XUJzR>?IqBBaWCboJJG+pN;l-9t4mpdCy<&?S)3Sv# zyW2bQVmh2!B4U1p=B9TU(3t7u=VVb&j`il_=O1{_t#_j(yfLw?voLyAkFtZ4lEcD* zR2R8q93oI>C7&e+Wtmw~FBS8MVI3SKtPx^4*~)#T$=whUz7A1kT`@6SJ=D~S@1o<_ z+OHY96%Ac*D8=_;oIEu(g<9yB_%nh$qFwp=)~eLYY3>Gtol0$*~2hN{**KR#j^JUWv6C^EbLjbccj z;tj?vbeNUUS`JQqGkCC;EZ~XhcV~CXYt3Jr|pw9C^&V>&C&P#TU&l zv|ge<2;V)UTV4J6W?5R!ux7k`b`~GsyYD-RD#~$OZx;CB9A_W>p&4k22qeAloOT5f(N5j%b5BU{)IOs`sJ@j&;Bje&py6% z>O>)`RxjtC)}DxirSz4}dtXiZ?!U|ndZ=p@;wT&M?X>!Od#1QWUa>xtTz21x{A;MW z>8f`SeU7fJVS4zkW(_~l?q2r8F%_e88@-3^JPwbGr+(NhWTq!*ef^b^CN_5rHgPyT zS4e-%-%sh{1NYd4sB{0Tk0A7_4XM87aN8XD{P`fpSBG%==-Jx1Fjsbcu6iQuy3$pr zaJJJ?>32uVMpjj|uG*!XXsOW{UzG7Xl^W2gq!761$EG?S)8hR%c2kAu|LVSep-)B9hJBIxA@Nutldui2EWYHwe$xj zm+GDK-6iH0^xGsQ0?6Lq?O=xGcXFklwPqHU-#-HXBk{a>s7kfU$(Mh9p!Uzr%#rf@ zQsjtQi}BS>&7jXRKb{&A(%OSG{FMA8QA)+k?hJ^0bmN-hwT0%u2pZH@LsUdVgajcV z3dA`b9|+i(qTt$^_(DzG=p6@#6b)+x-zg`U#)u9lh5>_9t*jje@q^vm3h-icQ*$d# zaUyPni12`MxUKv=8a^N4%YnE9bC4&aOi_|AQm{f?n6!=Dt|gI!9><^jROeuH=yii@ zzza%0WZlI(DkL}-3B>cXY%B~tu@|tt7l_-e>LE$ev4lekR0wKOQwx0&%V04(PQ2*z z%8Tpd(3gih!mXJNFaajT4wK5{gsX}9r4PjPn7JwoP!bAD%?db}3?$w>fuq}5&F?)) zTcK|>#fXb(gX!Qw9iq1+<1{hI7+i-uCq#{Cs!TWYR?yP5l1HIp1V%lSlDjlLs$S0M zLF^P(-e#&)-ghNK)>8O$?zSvvA!GbDA>d~qvyjrVi+ol#20)LtCL8;iaAQq%4KC_<)pN|)9r{{ zM27dExdo56zJNwHH;O45?+kvftu+>Tx<>bIC zCmqm|$b+1$8Szs08=Zc!*E zxe?H2S@LKE7U@T~a^|>b=i(@;;$UM67l(zAihT@}7g5QlG?yC|;A61Ov0IN4bBZmn zybu~qkt4&+lvXGIb zq{K&{Laff$&h01;Mcg~_Sf7s`%(uww$ND1ZaXz+*OSq`Gr@N)@w`{aJ5N4$Hb}!Y+ zzS`$LWqEnUtQ0Sg7&I+|)%O2J}-&wW0BBTV+y;jMKAAWTQ2 ztgF&Nw^R;Hg28Cs zLX$ec7#>-W!5BP8il~Mr#>xs}YNz1@!6Ptt^*9}pwe2vR5IZ=8Q(%HXxY!;nXs@mD z2+w0X`YP4Ofi%XgLxl8URV`HUR*6}-am#NUYaWJiZm+wM#b%J~EEF_{g|w1aRwh62 zaFdf1U?di+?0>4+39}y_4uF*+2)V%<~8eo zdtf1pmHevC=*}Jw7YXi!{?wGdQwqh{vNZg%_MTtco*|s~N#t&uaTGa9R+uMpd5zMf ziMG@%|w-rb9M6AR?$V@0QFHLkFUnL z&jKDd2D>#WKd+hpWm1` zn;6R;GF_M(s*K!Nzra{0A6j`?>HF^4%`Km>smf|6-=Z>qw_C)r!?C5~mjqYVBb`r| zIagFpU!HlzA1~Beq^_)q#=k+}nM|rF7Km%X&O}0jGR6$!C9;gV@^LorM#C9sC1fzTson4L5E?^HwD^l0Cjfcg%l_G%@-7cwk_)(g|!t zW0lEjruqr>Gmo$2?XI87)OMX&M=3=9o`F~nm% z-Kv~VyQ!#DzEOM>Gdz!qA#^7snxWuy7OUA30yTqDxS%xX@!%Jk>XzX0l06otI3yVk zHN_n@50-34;*fA;foY&aysSxtr7;x)g}-5mpjmXL>+qf5Ker6OO+Da`TCt%x8=v+0oHVi6QQ2h7vEhJD+S#I?DIo|FMsL9J(wSU_dJx zvaQV4)$-KHvQ=Qv7Qy^UsTgo8XwqEZ^2>XxswoJJBcZgEW~Qu(HxDH|=Y%RLDZ!!A znd)bn+xF6iMvw&{P{7|Q3BS3wo104EhJbm~ac`ufHgD~arI`dcii>YQ)=c3NqndIE z%y}_9LmUA@X<_Q}`G)A;B-wlS;z5LVyzgIl=W^PuQl+x;sQS6QM`gFR&sQzW$97UNm&z+cEaY}+bz;uoKQG&+hk$vhs>pw zv76-Owmkv}a#L_maEF+tq?0$t!4K!YHwL^04-H!xE0I$DRBS~^kw=2nm&b-ImKfxv z*3`OGs`85%q)L^Xn0hkTTvC#B@?@0kJut-grw}nD?pF84!r0K~r`LaOtv%MfyAZ-; zTUg-H^b|C`q~uwM?DqC<(oywz`+Txt_=04capd;ae}U!z71j?TCfdWmfb#MfLP}SO z-5)t1Utd{RDkaFl>3ForL2fj@2#sgad+S)N*cIa&7J{a9vaWN>4^mdL9=hM{kv zflDGpO(h5ygbNyjqi`R{N%Xp6ZTVdzCnt;W?%4H$KQ(94#wI^<(75SIj{H@A4VO3@N`1pd5apYR!`EDIT zcK`_wKo-fQr$C=8jI#nrFa!zg%Pcq+;-lmi>5Y{QHOt;pBS%3L-#>t7vI!&*BWRLg znD)2*2Y=|fc7qeG^E&-Kb+yfMzEpnnZ<^)0ieIv`P5QR?^4ZNl*Jgb3sN`7y)c~g} zEht{KF0P(lbuWah+(O*CTq|`ePOCeIXS(*5TAx7pd-t=h!pc~FISO|6V56{ncs4s& zQS0hzy>|hQCdLI)3?c@FiwV-ikl!BGR904r=e11rCds^F$dnTkKy-oA`?>h|q(GiB z8nIH2J-WIYsjtbw3(v(jPTt()ljRP!UrHoGuZt0 zwy~^n)DgFbZS;qaC&JPvuP!}$cK_HPquq}_v3WL^Yh8QXBr42C8YL=hqSY;ja)qn{ z^m5JpUpH0dCAPK7u>KCfmjGCbBT(=Jw1^;gSbF()vK(pLU+~Pp&yCf3PyyW@)`3?| zm9zLh-q&8HKri7@knP=^zEDG(68q?YhNjLJ`#8r<@v2dE=1%B*A*4JTa8$l>@{-`C zpv&$De7lllwUfBH_~1x5^}jj87FJc9K1&pgH>z1aaQIUq6ZQR)Zq6OIJ0N^Z$+~Jb z&IOZ=kvWZ*Eb~=9UcayK)YyLdr+KFO*%nt%pV-{BhNh7QHD}gHqgz$Oj&sKAKpVF= zO*~ye0q%CKc2D*~*Jhhqjj(B_Kx+AA*@@y`=^mT3&B=>JTbp8~TaVxT<39Pl%zwNg zE}g9dzDEz=jHohZHTN`{7OKzS~KXuQ`Pu?gu zBXoUOG)aR>ZQCzue4HFq+5uvj|EQWmzS3C9Nzt+;>8Km&U*G(BzPQC<98De@>sVP? z=vWP3>n>`+Sev3rn85G*v7QH#ThSQb&-xEyPQl8Cy_dB^oFydCJ)T~w&MqNS2RF`~ zNQ&GBtR>P!_~a4xXv4~=nu>jTi52_(>{xK`?VYu_G5C~;b&{@L!c?p z9t-?*aFVRa&(L-9z^o0wY7Ka)@{3bzCAjHzHvokQv7YFgymQI5>hO?neRb{Bvzw>x ztABo>s;cQy=?qBaKC_gN*pG5~u&9LfrIZ&yfCogw@keI#Lqjmv4eJ8G`R!T7UpuNc5 z?Tv-Gd%~cig1W!5KJM?lO9BbmeK&dQ9J-p`2%xUeji~aBwQYazlUCNN-y6{;%yTqn~z2s zA9*UCUcOo-UOoU|E#FYK^;h`XYvNqEVi&buCIQq;J3D(%gFJnS*Dj*K>+k=z2IkTl zZs_X0bh6OXa|A5i{R8>{$h8b?5x(`5rysDh4E}R9$R}v0YdoN~*5{D-c#Q=fA zQE!b#nt)w@H~yA9mFHQrRMe2@_5T4Jdi)|($_yT3vM}tl`SC?2)SOD@f(U^)iUAML zG=siJXeL3}pxEeRX-h#LFR1@kH2EBonmSj^7*r@0#drE&%{E9omCQyY6H=L(T4(mQ z^O|MEbNhz@S)}ykCHx#d?GN-0D}N5g%$NM-t6jq ze5Ij8Y(>E(!Khy{doP(q-SSujNl4jmzocno+1Yz9Yx#%Zsd%b2K5|EYXVoCkutI^5 zf@Fxp>48Iq8@(%2m%m-V{;K-LK+?h4%wFN)#F>BBu8xg$O75+P>{#A1sCTU3C41dS7&gM)s_f;pu?v#DbW6aqX#|>= z2oVZMr%JF=3NeugD1~N{eSVAduNjkGCoK|qQ`dfxArj*@HIZ;|7y<-07y931m$4xR zh)j$X0>)>Gu_Esi+Dx(HVq3tJ?Y)OhZan^T{cm2$vG=-tb?x1cBw~vS{TtNyoyzA{ z&lZ)>23Qmol{Pd#JN7$zz}WsX<~%}KbN@at1lsw2OSySLZh(VAXC9qw%ir6bdOjPu zp|<~Wj{OgvN}DFGh@NY^PMQXl%Clx#N{=k17rr)|o?)vHyq{O%6rcUV#?Q|W>q}*_ zu?S4jKWcxD<$L_;B`&<9Medf|>X_e6I_bWf9J4Qw0E^7s{l4lsRekPBRWrlWCj;bW zJE)B4_Dpeumk9taxMLH52(ENKyE3-&T=O$47!XUeSqd^0gTUWaAu|jRBxcGch?NJ= zs{bt+d-AdUtG#y-8t4|h96W*1E#IBj4=DnaKT~!&+GuzE&9cGp1$l!sgZ~Bsp-<~C zOS_M$R8_TzrGSA9)c=6`V6aPKQt=El2?n7OQj>$BaEHiy#!->~D-kXkYm92n?cH%o zpKMeko0jVGRN0WmgY<(?2dGFhXyjj+|E41+%gY5v27$E&w_<@$^kP{W1Cnb+m=}em z8OHy6JfpAdyH+CX->4bIKqC-7_S?8l62oviACV zk@^|x)l;yC@_?xIc&UP7=0js(0ehw66Ozt1tG~0~OyW8b#sv`*1Lcwva4c}+`e-;c za(B1-8M$OENz$CsP6Jq0a;vxG*1H)TOw0YL>#=oZxhOO}gnmwp~$kbE}mKSXb5{F7g z(oNyFhJQx~uJNuLK_W#GK`5s{X+*%%I?uptVl08-AT6{!F?VBcr@3Te?A%k(Kn`e% z1+@}{bwz-o#OxK*ONKn{)0g$+e23$2{$7x^#t0~-4>TOD7W0&tU}Ix4TO?CS|6 zKqfqO_7w@OKW)y{yAxO^MNcn~hMT^xj(-jyFIS&?dVMHYPt9+#vFZ|F-BnSOZN6<$ zKZ|Ow>cx#+Y|zWKE1vt)8nF^k56f4r`Bcfz&-I_H6q_Mon`M91+TXkLYNq<1fbZhl5~*&i-!!6y$!&<7;M+8StRB$Gk5K7+_^-xu!t z7j+#gvDZwp5KUOn?XgwZ7u=oR{ni*WP2eF|;FE;%RVErfH6FfW`Ju7QUyv|<7*N^| zjV%w`Oe=_`IyrW4A3v);S8}f8ruKa1%L)@Ab8((mE8PB1`A8!T!t$7H~_DQ#>LAGpR*xM>a(=|!T)rQmOm&yGp;^)78fu2?_*v-QQ`F3Y-3(!eL~GbKvC2G zjdR<=A8_exjl3mB8F|PyCwnUCTy5M|ITaX54nU|VL4Xw350aAvIRreXRiU=1++W}F zb^%dLNB|m_0Z;ULAo*2{frWrCc9@}zVZ?jM@6bHJMcQ+~vWen*bT#g~B48qTLXQag z!E7@&e0?rtJ_0B>QVQVZC@X7_2kp!jG?|3K5}2*M&u%W?{0%alS)^22x?gx44S2(_ zHd#O=iz?XJX21D3OG9q&KDqf3Vg{wg6wuW=B!NVo1Z>f-vT{7^Y{d83QH|H3XQ3&? zg#8K#tQ!%u6umb@PF&0qW7kUvT^Y%=*UIG5Oa$f25oFmzUR>gNayJQMMF1h$y)qX4 z?iH{edXspc$lgs$ed$ zf%zli=~a8h#Kg??C`V^toG;87C0Cddjs^+o_H{tO? zpq6|?!pR^ zL4Zw2LF4bfTAQt%UK@C!U{6Xw@3Tu#YxVQ3hOftZEmnaVSw3qM_5D3G3@QzU=%Z1R z0GPxqjIX)6oGv?@0gTitx0cYq$7S2d=LLJ6)E1cxggg)d7&g1P>hsXYj4LoeW{Pd| zhU-?R%BHHvira3$((p?F`GK3F}b0Uysz{E3IUe#+t>trP_b8W+1D+u7vJo0&o&!aD{Im%EI_S+rr?2R!Z(cE zY;dknvGDO-Gtv3|I#ehQu>GRz_kq4U-M@LgDkuE1O69cpl#8?T>5CO-s7Hm;(#9006T)0zu`ji{67=TP482BDEZ?en@4Bg6V>bqyn zfp1$Sc0T&#-L>{!0!Qt@Sl;8Wj#+p1_~gZU_Pa@BfDLQA6SWuq5o>{eFHZ*Bo&v}i zK31M@nB!Mx<5~Z@#**rj_wQV=82S0HV*lpTo2LhU3a4*vHs$JplGlWOJkZ(bTC*~C z!9HIoU*G=fT!}#%2$o_-nu6%r1F_|^m&N}hBF^eE2W9W|wCN9={Z&Rt_DBVU7{g}9 z%8QFEBX5m>YPx==ko+}ledhbuqw4(&bHMf<1C*-j6HRchpD@SR7h@?PlS)oi-*k5E z1`ZF1PX>a7u_no@qfhdU=Soc0N{5c zdA~CZmGgh$}|%%<@+me?Mk4Q zZaMe^d*hB}7qN8ou$`f~^%(n8z}CvxeeL_lfL>Vqm^cTf!9ZZxJ zL@`G)5wIN?ZeC>HzXdSju(C3G7WtUmbje$*E{I_yC+7wUxSz}A~YdR?*9yH z(;##!B2$cz3d(ls2Lx$t_SU;L9N(h?ZhRpROCTY`Cjfew=2N%r3SZZPbDa4ISvX;`|t{FFqE*)3e>z13UzDH8OUHr6ZWgd>6K{}#EGdGpUNODVgGiwMmG z20|GnE?N3qVHD#*$5By2w@ZM!3)O#aY!6@r@G&Y9=Kxj0eXukpB2eN8jCtZ?GIn!c z7hFwE0kNA0a=ylyn*oG~YAs=YKcRq^n`KP`9`l2iPb@qrU2t#(Q`0>jNy93Xl{J+ivv&r-$#=S>LMbr3<}DqD?<-f}u)M z`^qlS(eb=ELh}v18}ND+_ab%U2$SEYOQU???!XtCYu_4nZ3ImxlLY`4FJ7k1=B|RC z&sgugtay5?CxFKaCy;|jT*%^+;@~&YJJNryf$dnEy^|3nPm}Mk11v%TbQrf)>l0J~ z5UQv;yB?c+8?`|*q#cA-EII--1{5CjXIRGbbS0bv1%jheI>J8v`ksG)6$uP|FoXr5 z1^^@jUgLn^2m56l`RB>ct);-k@Fdy$jr&~?IN1ROH8qnWLg9Geo^9y|tu;OVQNCl` z{td__&`{t_QV~?>@YnUXT%3KR0~1-yI3KrYi^}FqhM{tG=BW53nm{eDH-8 z;LL3pU8x&d466F9tOT+rAt6x=)dt^>QXJ)}%#%L`TWhmN*&Tla+#G{`YfZT}0%jkc*+pVok%dqQvZ3Tz_zu(+j0N@zZGQK(Lf>yYak&wxuBE-*&y7{aAP6hOsg|oB!jKDl3x=Nz3^`U z<`RLQR9f17t;K;#1wF0!+``%WlE*J{ySlo9NBFJ)*1s{ou|BGmk=y!rw`*&*7+GZDoZ|@+KWkUV0!4 z?UCH?R66KiHQ1Wpove8GBnCIflJ!?s27_o4iIgWqG#;R)NCJZ_d;I~wy(u>buzP`) zg6#JZ%w4&Jt=3PTJTeP>Tw;NrYl?R5NcPy-0Kc4Wb z_I*g+pF=?O>TAF|fk6)>%^l04(&d&VGpSeKPfczYA%Te{dM7{X`}(_lKxp+dDgvBi z_kmH(Ij0hqXW{KdPa)#PjKbF{?6>N^G^*JUOLY(5BK=>ZDp=)RHwB7wKtar}?NgIG zuM#5y717o}>%$;S2HKj8XCRnF$!@S9ZvsKL&puDJ&f128R#sww^tKR@Lnv$L^JxO9 z5B`LIKe+sk?b$xxqLeaEApOSx5HJL@MO4wCNY|ij-=YPVh}%=0y8=MNb>DB~rtkL( zvkm$%)}W=vkp8)~-U*M2irj1jU1A7fF66>rzp@xyy6$~u?arg zgMSN{I~x@E{coEfd&~Fs-ksk2dV#UA_98uP&V@~2vKdxnD`12{m`uAx!gHlWFA=n* ziQVs?TSmdm76c&WfHMJ_0K*39V}}9nH${Wx`gAfj-|$M_FGxS&5dSv>3@g>wJ%`=D z7J`(bo?mr8F!k;hE0fE6StDCl2Vg0zERSD2Ha5fM_I~$9BItcriGBQ`VLTZM*>79{ zZ-5W3S86&B46fdiq%%m!_{QA6fl|Iy$7r~&$fr(`bZeS-R%Oh^%m5}Lo+07Lrx z#?15n6L*MfR$y=OL$at?1O5PF!j@?+4<``KG@k5;q!LZVh49H%5H6;a7;K5t@<4D^ z+3x(+mwW3^zmf%0sGf0hshVb&6Ej#M)C0}I(j2RqB{#9{C~0kQ0l+>e?#9COtIGyu_*O;&?(g@3VFT4$&@gX$7pFxb2n;XE8}3 zhQ?05*E{bXI}UxN-Zjwfk(RvJFJLR=-KeWNo@pph>g`OX^(n(Bw?pH))**3FWt3>kodF%Cuh6`5AETh@eo08tYzu<09QSh3cLg zr5N^Nm&btDC&pE6HA`^n#OEkCYko-VtWK6#ue)oZTbAB3{)EDNnBm~-r&U@|Dp|)5 z`F9VJnxqs#h;o%3_ni72YWRI_;nNvHjO1F~%{Q0<1l;{uX#J_pI!hGEC*H1d&;o7u z(`2eKfMy6k%}5@Z_w|~P^{xg{>wS` z{nwbCLij8~FK@j(5pUR{&iYx$$PJ#{^cqvKSZ1|6+%6FbR+h8-#J=!wZ>~o1vT`2( z!?cH*7xi4j+=BB4x><3~L(i6%(iAlo9A}2Jc(-bGFDaZhy~|D zxc4am88_ig&lv#~t~)APkFB#E707&=*4b+rmHCXC*IL>oy4e!k4W zk=m$zKcDOSp3tS-`GIe8wA8D1{nZnrgq4YidS|Dw z^HrQdZ!2X+)a&{tBreu{^7A&4pLw^p!lU?GV>@vO;p^*bLw%dx5p zO28-3?z*gQhO^<6jfdyA`Sh%bM-Q>ek1}f_)IJ_eIq=kf)ICZuWib`<9WId|w&i14 z{)qF1Aw|LTgiHL!P?qyWr=XA0nZDMORZ+3G%UxloJ-XAJ8uN3$jgnH?snSE-DglRE z?^RrGK{yVb(SBCv*F1JbMIj2uslwVEin$utGZCy*4)c zWJ%grCc^1rxIC|vA%5OKJ5wfHh~TBfClzsK=W3_4(QbKN9$r7Q>I8ORmrk~u*04Ip zcP*sSEnC(H=WL`@;opCD=Jc;78hDza1tI+c3a{Tz+*Yn|y;a`Y zs?}Q8#liK!D5KEoZ`H9|+U2!LwfB}T4eT9#YEsq`R*rqmbS=&tA3(;NDgVP3MTuemeJx)tn02*UkF^?)IlwZj%i!dw%mpq<-hn~ zLw{v?IW~VvPh2}MPIBO*R`;mhwuqroTJi8Nz>nrUMh+Fh%|m5 z^*_{`kWTX(kFtUd=7g?j8;A>&j=RVG-CN!4T)6OY=WfKKZ`V!7W~UDc#*!!aX(Y|N z{aX}+`j3ykJJ1@nOe}*pw$?T(_OzHVkJe}lo24Z2o4e8?Mb{kFx>RkQ@}|CCsOaU_ zA5ImfM>pR0P8TC#7t^=AKO9d@%W(IyNAyW>KmKFldfqcJRE4r`fBlK(!7K3{rs-2R zG8!;FaAXJ<_h|IjuZ2#yBSGZX7dPpvH{W?a6{~#f=*>Q)d{r>&!v_lH@e5c*eV2s) zL{*f)v*PxzziuGygG}z~Z-`UY0@pnqthpUNuxVm)uT&?5Oh)4G?V3?2V#S2P)xk+= zF2QG-+o>@!$0)&T2WZPBwL5!VgPx+5ty?aF34)Za=t-K&y;8}RtaAZm*Zhm$zws9h zguPX-n9`7wB5750NstjA-Ld0!DZJ5RE2n7#;Dg~l-&DU04pP#aYu?*;BzwmE&}U!s zBxv*aB=JZaZp4ibCZCf$H(&pxf9t;N%^0?r2|oVH#rbQ=FrmERPd7htbJTMzE_b~f zySV#E+xW&0RdE|@R)@1~FuBJIxwE->{P>vZ8islFzT-#V=fW4{!!zZU8{JH@&qzML zSpF?L-b&O13DIlBdC{9Ig7s?zaXyH+Y^3>*a%9>pcwE!!rHqO-{d6vPjv_Vr|) zMG3Cm9tz2bx^~h@@^}J=U)q<~3Gnu5l<5!3Q`61XdHlT80dwQ{_^Gg$eP>TIO^sxh z`q#RDBp;HBLHvBV`0$v!<$y!-v3N%ToOWFhO*o8p#9#ib8MAy#w(;MlOS3`u5p+JW zkB)-c2D+27si#bm9W<|>C*%GRkJSEPB~3ZMX_s$A&kjEOF&;`cIO%~B{eJ*^K!m?L zNV*`{3WMc`Bz1HFqvoUeh4PAbP&Fxe^N(-0Aa#|;l#Bh*>^t}L>ue93$TF*HW!afy z?K_mxiV{ocq1{>CgO_@1O@0)`X;&685f23w_Pl%L6y%0lvzonS!IhH{5?o7vs7NTq zNRuQ(D-a?SIdcauX#2=SgPVEr%qQ7hp)Xpf61RZthgu};@Uj{gQ}0awA-wx%zZ`@>5x zq2Gm4E6SxxYN|m2)qH{|*%^+1smKn`_W?}_>b%x(=S3YlbH_Z*?w?3R37gqemiiI< zj=&~}8={lVD)_msSgU2l24ugk5T!eh!Y$b&(1bM`KOr)Ht(VPJ>1 zHm8YBEIC#z>iYC>Vtyt){x61yHgTCUycqVZ_>uGR@%O;2k7~DQrzix;E9432dwoSi zF$p~KodN+JSL0}VZ@wNZBJ&}&V- z+SB8VU_m%Dhp7QNkeCI3Bds%}w@!}k?(X`SBYVV=$O*_P@<4qU08nCki!Rrh)$!>c zY4DN>5c84;;P2S&rv@bIN-+D>>M>oyycCg`sJ~*8yrLu;0a7J|8TSdM4`GJbo)nmB zx~Wajb7I2vkkNb(Lh)8tAn>v7N~OezOr)^%BCGI_G74Eoq4aToD9)&(PL}?{2Np%~ zAaZ+9A&i0?d@e&>ZP;5!-1hR|uE}2!+2!-UUh+^+4=|iF@*C0++6TglWL?I9!VHqB zXGW@)Dvl;P44({v1@;id*#H;t8ym+E?Hnh0VQO)nfc&M-nj06#@GES2eMg}ESP6%APz^mvTY0GI7g`LN7qob`T!xaiALoHJcDoT zc12v2W3RI0T{F7S>Z4tN4s&Tr5kTP1gk@#2?jN1zMSH=7l4VWL4=*dUx>-x$gb_j! z{(W}(2hva-)x2rGfmhc-bHB^ydS1N(FmFFiw&jY>L|%WB`88u>2SrV;l*H3u_%P6-$OF4>C-OhF@v14Yrj}UIAVaLJxF}k?kGSY z#8z)DY9@}T7tK;ARmc>gq6%j0kgGx=E}|ODAeybn5g|e=g%o8JRVECboMY0+X`E*| zWH~UsEa;Md;biB?=hthptFS<&2q=|X92d1!15q8S&e9Clt%}Pj3UKsgWW<-A_(@su zd9XG}bKKuMX4whbGw}%MqXtRTNU~UjI7yHf;`8Y8c1pY@Zd_NtYlGjt&D|!QD8yHe zR|7ZOS2Z1-V2No}9rov=L$;}ruN84<4(lXK1tCg*)!CpkD*~%U3J8#+GOmj_FvYnq z9c;wn?&G##Q%_yAgO;0dqgQ*duG?ldm9IQ3M_Q)(D>tPzt5`%)2u>w1(=Q^;HBjP; zL3=bnnR5m(vjJ9dA|BOhJCs|fb9bSWXjx(wYRy9+v)%6^Bsz+fXR|$2HI_~wEYk{& zsS=ETmN$Q@oxJ4%6bdy&2oQUjy=_{Exg5k}B~?a#BkiSRVx>F((d2*X|d)AYyN(~x=VT3r>AH}1f5 zEp7YjscKS8pPx0N)xSAAkE^HI_f9?~+PrY}UUlyK)eQ$ydEo631U)s;*+x3uXpZ!M zd}%x9rfflFjZ;sA?K?R;kmTH!KV#5q1ushvtN{G8X-N3hb z$S)3&w=tR8MNI(i8SO7?lM+2#mBn(|mnf#PNP(LbeO7#*WxI|FJ>6WA2ig%ZScy@vuF>|1R}r18CnoI3REa(uTu zug8*72*-?pv{eSI#F9^&vq0E?dx8KJ03VeKC)D!}Btw&t%Z4azIWD76y%IZ1%?ZAB2|^U_ zhqaj6%z?sMM9Di*n!#z`4!4!%qKuHZ0pZZrwzaolg?K@NNmGqun`MP$D=JA!7=oE< z%q=biJzB2j`9~*20A#CwNrvMM@X|SLwjtrh*I4hummXb?R!&LdY=dgly6mWAn@VIg z-${^^((Z>U8VPq$1UMuh-loRq{GYRqAR+w{0NUA=?;1SO>K6>=FSmJRW?1v}b#Ewymef&T%2G z)Z{FOV|c<4<0$*0aRX4MqyYWd%QFPcr##z&^dB>5Qe~Uw%z(7m5dY|j6xh( z>g;X0ae+4?qq)w0rUgosE2s>R?_noh>w)YHB;-arZ45g1Q)oP$dpSVjNfrk^pmX*G zkewJGGg#Y=)4e%=mW5q#5SIvRhXNRU~|Glk*QGg z>o@0Swr4^ND8my&HVqqKUw@e)x+;HNE|+q8m1Ogzrs{fsQc{}$$eIK%xI|xgL1Y8~ zfqyVibV3Mk$M+kf`E^=4v;Hn$xxMj)@dJOF8#;VzTu73pYnMf~$xlT(1~#MU=@UNU z;;tBl54Dr8ExPNk4e0dOT)TJVF#%UeP&AfROY>xZwsxw-4eEkrWQ|Bx<*qTB8JUqQ zMq{?MwqkgH%C(^As)Ryr%n%SnDuMtZAc@POWPv9~RFpxch@W@s-6_;|zJZjos;ZJn zWL0@@jg=AF>Sc1*S4oyz*Nn~!II_!^B;H&b8)o=>v$2&nxApjjvy*adGZ%8f5lMwp z15T%EfRv>WAV8|RSGPu)nJQEe%(`o#;kK?eKD=>%wzmYG0Gq7?E>AQCbK+k(W@X#aCNS8ZAB5Ar)ZQ2>hjFx+Km9YcF-dV9fQLPr8H+C zo4OKNiMdcmbe3uYs*0MHV5_pwKo>xH8|PtCZHBNgda(4RHX0d(17Y1gMHiFYFb41i ztz;R0x)I`2#C`@rdc_}`U}!=T2?T;lDJi6Az%v$>fGC1$q=Lm1s8k}5P}`R0D!0+a zd2u#3oVjRZPAF7HDHI}y9(n1^!&8aI!CEj=MpnZ+zPxqXi2?duoHC&fQ2u8Sg9Gz*qfyBn$UTFC_bOWS$&2b!Qg(Kvk~JxHL{&2Pe_7jVTPZXdlRyM zs^|w#&h-#MAfI~%7TW062#v~p2)+RF*pcZC8>y-?_)VRi`5r6SeA7ZiDjwY2I@|Zh zN1f*G1-4Fn^ZtB0{1Xr{+jx&z!5`+rd?@l9*Ag>`S5`!UAhXLnQ!)niuU+qO6->;K zO@t>3Wh_|K`xdW(GVm5kFR*p_L1TG;`vf|1=|1%!apxaS^Lfw%xli$gMG#^j4(eruQn*HJ25Q!fYs0c0VRzM4X3n400 zkfjulu!LlF`uEwA3~QiPjaQv(^LSCeL{VCzV3!jrOd1T#C7f&jHv9Zw8Jd)@7)$zf z3*RSnY!U}VVd z#4rSmLbNahnx9;Efxvy<(uPkt4*5OD+2h^mHRq$Ay=U_$RDiKqhCMliI8Ga2v(h0s zQ*H@;<2(3mnVB-p3OsXQ)qeA#R#%^)kpwyTsGxg_H$O9sTIo>WcQAf`VK75}4>&Ot z0}PV`DwV~P=PL-(z~sr1Lo8YP;KOs?dm;HgXS>pPA75@}+*lCUp5{m~g!6oKmwW`} zi_&56u5Y>GRqb+=!LcAbOi`+ksU=sc1kW`ig2<)ygfEKIbITfNcFjc$A$HEc_$8NhlIw$qtEelG5SwGW!2UN%)tFw#!g1u z5K1xhvv0EShxA)$3q%c_x^0^~rw%h#me4+@lQ}AJ(wno5s^)R62Iy-x$9Z7;TyEXd z4&l1Gm)GcU(x^aEDgs+evN}Nt^<7XBraz%CUfp%w%bfU0w@+Dr_Y?Kt2|dAL3{Rz) z8@(I3&}=c(b2tDQlMeI27a5*}?f9@!jeD8|ujyo#50aa}A=ifpp=cOv>p zR4oB`86;u{d*3tP<+KL&Dr4I8Q!5sBgtjW4usY!&aos0t;(M(s9I{!uS%uv6#i6@% zZ7aun-7AlRZVRY?Jq(~EQZjuv4gnkR`n$Z{e&*b3ZJV{%?55dm6e6jJcXD0bOWXAc zs2ZOI6W*T>ofDMy9&=wr{KP~_Z?47f`O`m++35b^Howc|KRo{z__q2U4nXcmx}5v0 zMx`xFL8?kDce_buapBpuyGGDZj`;wD_JA+yL%4~0Fg%kXqNZAC>DX5Y>;eOE4- zkxnT=X8XeoMA@FOWD|Q*vXKa2C5bB~OlIs2nWLWjBvEx~I1J3Qqr$F#X-pSq_)`x) z+RaUqjjVTn>3|xH-Jgs0zVpw$kOd~h0YksfqyiZ}TkC|;HfPliRuJIxy@l0X+(i|m z5-M&sA~M)3ae_vEeJNxHw^O!iT9|~Br2TKRe-z_z>Oc-hf(bi_Nv9nHo%$`dp$$z; zb;4d-^)+ET;}1-d8+$1L=gM7idTqBRw%snFCd>(cjGAB?HoDBqQ?v+uTA!`IE$_jW zA&9bV&;#pW&8(c(z%w$0Bn?*z0;N-LtL6znJjOQ|v;ozx_yRDRB?GM9Y(2`2KB??x zA9mXwBi@@!OjT7?RYoGJh>EJJ;Cc4n(?Th&w-w*5d%mrW2&%6+dZ_?c~qX6Dkp2j{w(%13~1-%7CGRMuPWT(o+Tol9H)9Fj-i7$!zjT)Kog|Do5e=HvR%WE&O!QC2;@zE{%^Vw6wvw4v(SZi zj5pOkes@wBT*e#a+LH{%90}R*qr-CX2`~0cl>U-P9v^3aarzIuHOp^nGrqsG-=CqJ zJraHPXB`GlgF9IH%D+WYYnC94lSROP{7SU9=?BGhi?Es!1{xSZK4mEDLYzxbbSo1vOQ_-c^@E$b`YZ{UO7UN*M<{D}v+) zUM?s!piv`i?DKj6NUiWufISTfQWbC(n9I3oy5B0T6nA%$vrbo}Bhu1_+ z^_>qIfNHb$VxWT5QB4(9ML{tX6h&1*K{HJ;Q9(@=M8Ob6K|w^&QBqMwRS{D&MKJTc zd0g(;}=MKqC0p7~Tpl|%XHNSm0i`LlsQq8jD zS(>vl%EzVKFLXRlyx}#y4014kj~05f1&jp3%VnbbCqEpz@o^%>iV7Y%#!W<(q6qXO zF8WpFGHL|IRxY(HFne!5G~-Bad4M2s{n^0v9vC^n0;Dq4X}L& zn}n$VAR51B)PSWh%2`x@faexf-pVUQ+`k*Fy-fyNSHWsRkkCVHvPE4$r5PdA))}`c zcjC~?FMM9s%@K2JUFTP*gIsFMfE0wN00D$`K!E_k8LSVM;Sf>Npo6l2s!EthhI7B#J#vt7$^o zA!NWF;DPQ0KPj&N;(v_0XCTi%cc0LzgB4L8-3k0;(oL`FC*DJB^uxnb$No|bMHL&* z#hj+GUXatU=E=z*q1xDEUGW@&*hS zKn%CTfI6g8@SKkf0K1G1pu3Rq7Uk|P#=JvT-O8k|P@4(sIG*!u=JG;$ixp37>C!&{ z2z!r?b=O{hyY2U=5{o2B*;<8G3b2(7fp~1uLZX#)+oLVUrwYV)>Y~QcIv@wY;F1Yz z=vN>QB9B4#Ms*t?8qby~r0WiJEoJvQN=+)#;wfo*Qnh;23{)UM5L(g|5F%~dc_R=9 zLC1DYkv1rp!6fFKZZ(Q-Tw8{eh*)+dQ5RUGxRpnLWt9w6!>lNR$E63i)6UZ--p9N1 z>iX^@5q7o$tDh}PmPoKVmqvi?z6Wg$vts!MKKH3*z!P4I!f1vLP6(4uMF zR}9KDoP7urrHB!zj%bBwO5Nb1}f2O{9inXqxxSP!^d zVFkz0af}U$_U4XkG-hN{z!|mNxCV-*&h*EBcqn8AERwphg1=^D5J@DRV0;~(lHO}x zmL!6n@3g8-FL{HZRh3m$qcao;^*QwnfL}}Hg1OCk4v2tM54-n=8kM5Mftw&Ra$Qz% zp_!WcHlrJ9@bk>7x-98?4?n%}gzzkt1L8hkJ!@L;pPu&zhteFo;fWaQ;SE>W2Luj( zR5z~anfuAl)5N5Diq}NCn>f*}_&H#YK1r1Kl)`z@#Z?X#+Q|fxwORYlHcs^%=R@1; zKCJpOt1~MQ{arrr9HJ0HCG+@#4H2AQ?&qX)y>{0BSBE4^weQUN>Mwli!vUPh=uYJP zbHdIf{8K(kmdY2?6ebc>+~`y#h)jilPHckSh`%$Ub?;TQR1k$ z_q^1=;j*cMqH2jdb8$ZLGY($oxCS&eXX%>Z*K-IOLvZ<4WW!H8cn@Pw~^y+{mxj#)l z@zAc~lfs|{AvJ!gcy=Np9+$0NqDs|L11hGLmg6fVVphAn+wvlrveP|&VMss?%($Pq zAc9hET&m%4J1hml z!mlaIVVfgf0`mchlo@UMv)nSOfCet$r78_7mQ`xdsv4&xmvCfUx*TfAnwpaL{-FR} zL5WvzJ&WM6*3x5ZR{<;jMOSgp;9?gqbyMb{(a?Lf>dOpuSckiRW(4Q=kpnQb#M z{e2%{`De2?%YU25!;&I$kMK#Lk)7H!KY87Q9CoU-(8q!oU-|*bPTRk zB4ELTv2X&5l%=Tv;)W^4X&qZqUGh|Tix!V%hPGo?JC|G3F<c0}kC|nm8A9QDSH)gU6e$%O^K6TMB3pSDDNs~p`*-E8mp#W$ zhVbUX?(XXy613Sl%WcCGrfW1~W@_tHxt9X#E<)o&HLYfoZO$_;W}vX$fkdfWQ$Prh zxR8J8_Mvb=T;oXvQVXMixcHbe~%_cLqR+3GScBQhnUKo&4j|)6Ap~9z1XW){f{s&^tDH_V(P6o*ZXB z<`SVHcBJ!rB&^66r6Ot)mr!&{nt*Fkn?cx~q`RSir8i3TrF9`dQl$?phb#nes)Kiz zF{}}`k>1NMd>N2m#2ug@$cRHBkzu*}N13C!G)Ldip^_&AJ?u~smJGwPoEd~XfH;Kq z=FBuiI^FcR1~T8p56}J6LXn|E`}d2=m)uk7ITme(C6)Y z@1}HAo^0>kXm;qUn(x!&pbf+cYe|Ze0f%mX%C>oij<1RC^nrO!q2|MsshXyul^KX)Y6?|ImP#53R)~ryrmCT;siG>PqN=Efs-mi@iJGdaiioPJii%<> znW~8@A|k4)Dwb)6fToRXbv4u{d6oyMX*mhvPP3o50YX17Y2Vr^q6ny}ilU+-Dypig zs;a80s;a$%pSE@PbM=RRRN7h2WS&%iKA14>r;!kyyLSg#Ux#tLz=}=&uBXX9Y3K%K z+3Yp+Oo3tmphMPs(d8x)1`1?dDnT>uTfUicV!KbnGcz^{vkK*ZkD*RIIvq!T=%en% zk*|E1geCPb?Z_vnUwVSwoVavw0I@)WySouD4+0pHu4`=B)?H*J%T!d_Z2|{>yo3*V zHTG{S51JeFC^uOaLM++kmQAO9!dLc5ESVzaoP>IVq@}3zzq( zE7@gO2L?)d8v+dTXI4~t{3L8q0E`x31r-J<(Mf*wKdcqkQpS-a$Jg{gAE;EUrA0L? z09`#25D2I*45=6|Hd4Ux(b>Vmk{~NKhEiNZLa}8af>I<;cvVmt z3Wgz&ddspZs0ymEgjN9z1SAA=UkVkQF8S~0qNTLEoXLa~iOwBDb%E41wN;R*QYl*P zIL?CmC^c1b+l;*-~=OHl+N~$&&GN{3Sb1J3UdDVJe zmtsw(#sv%L$x;rCOcaw78H||9p_b!r;xNnR1(N!Siogz!t48O-b_6<%zSb#8Kdin>B z76dkzeAeea)9couLi%l zggt;@7!F@=gK0#dX%dh-JTRqD(hwaPCVL5_1;8Q*R1U3xgqdX;6~N)x*iO^L-K{0-vZg@Q^tqAcP^fr`4~#`rAB$2F!uY zfK-zhnmjpd9&=YGDX_z;$p`^TVK<$ z&kecj2ol79sXk|a&_}GBdyhT*L=PTBoS;NiRh@O^qtgxJ%Bcgp0qg*$1w@5YI{NAG zd7jG-=eatADm&#mkgq3NGL;eG$ZNZ*>2~XeqCN$_^Rm!p$Tz7tm`rW6f;RY2SphYudR?}_P2-0NJg#(jb8h(c?S#wviaasK-I z+Qou@s+Ly4&@~s!i0j^dXCqiYMly6bGr22g!+<`i9ajrXSvCWEiLKtMy zG&fjko~Z2AxCp2;L;ykoa=<0Xp$uhzySBI5sYhhZV&-LV<1w15Tc-(vNJnc#+M8{o z5pu-aSwDL17n#BIm~b$hk??sqrx4qlK%3ZH)D{G2k;xU*QBx^ZO*)Y>Ob7&4VrN9J zkR&wu12^t58%u!6nOP5|;5a6>AWT|LCK@+j9H^8OJ$84h@-wn;m^c%F%M9oqOm?9#cn$}B2MS}%ZSgC#!V3KBCC5M(%w8@e4bt8qzx}(yRMMOp`07(-Bnj#v7lIV-14icLy z8x4kG0Lv_-u*m^yNsQ*1JkL%+soGNgH?YEi2nYh^&WGo75fJEkj)`nj8^J5rggxhm)z7Hf93Y3 zGfx0}3RVI&<3&4w-XlBwMGPm*DJdcU_yr{lHM7UylWt#oxS6(sd|TnGt=h z@_o2_nVz2q559wJU6SnUC%8Iqa%f??Z=>rGK|vUZDk3ptQ9;<$HchtqB*^j#9oS*# z`A$5>iQspry=GM*H0yLmVy+Spe-wpJxI#t0BPf7&uaZsxKTZ?MVhWX13KQ_7Y$It| zEwUJpxnpdChtpf1fKQ_q0?2bsJ?F-9hI6LOqYC0h#D+5>NG!&T#@xYhOlg#9MaJf4 zF-~G&oW9dzv7-BxeT`OTEIKv{~JMu3S2Yu+s#N>lUD^&=o1F!Gfg=D|x#HC%_v3u2I)2 zp?di71T1g$&fESz@|PTCMOUrOLl<%;>rE>S8MOLSbcU9v-n@JHuiR@b9$doKj7}`%{%hkrd6H3S*a9#fzS+_cH#9&EcB=P6==>iW}`XbnLko+ z4#~GF6TWiP&n1`f2A~rGm6rtvpf`UYLYXBf_;Rqu1mm||Fj=w_W*XIhww;j9@3DCx0{1osHQ%!{G7lln$b0=Ehs^ z_{Pw?U^5JvQdHG@c@0vfTtLe=mT;p!dx7cu9y-2U=Q|A+)0imBb80~0yplp1oqC<% zgdp)MODL%?uItyuW&|skcGZ0>F38ui6;#e^X)c&ndoJmQ>YF7)?PY&MIH8DCjz-h8G;R!kYX1ue+JcUU- z)n7((o#1irHaX|N-#vf&@#DLZ)LN7#5m;Om3{WvgJXgHTYWnw8Ia85)V!f$BC7Cin z;)6Agp1+aqdWd+?soqL~$;@Ir@*Je8tztPL&~`0@w}T>%w)evU-yjhnl1U9|FV!@A zC7f(`!g~;rU`P{R35StSoa2)4I!a(!RhYBgHC_715;@Bou<&8r?Se% zcF{YlWIh~fXE;NoU=6VYdP!;q3)$}s-WVvMvL>andwa41g}ICF8#$l#>N)%`B$8f2 z1Yj}zhsLiT2Dq+<8-tY>D)giPu%OO2nq-T^XQuzYDxE_yV!WZfhV;fNC}5f%M?k2j zFG_*VY3Kx$!fSu4@^|Vl@a>0IRT+lN&o8mRZkfsktg}qxxOTNwVr7&^FLqQ{W{Q@@ zyJ2ukwqgolYOS?xl^RiP>2oRFb3FL71k!Heix&orVCtTDXms+!Y?|+|!*;oQ@=_@6 zZspr3yrW{MqB*u>=f0F=dsuXEpw3iei{)nTlJ9j1auR>nQF~t2i>nJlSkb31h1uEm z&6y7g`qRkUsP_;x5Ey~vYraoYT!F`%lQb^##mac`0;!Kaj}1N-G2oLzuXOzv6%`Ot z*Xv_@9VoSy1cXAUut16p$b!#2o90Zr!t}8AiIBJ`Kl)b;s@8ul%1mzZU=zMPqu*Q z_93ohHqPG98L=c;Hi5!(A+rdwEc$fZlj%0wTATLe);kHYI9$9j4>GTy3Et0Vq26eB z%UD?(#2nhwuR;_QzOklnWx zP`-b#llP!Z3}Ji%?-O=%7#^I6_raA3~H|-1Kr#gD!eDt_8?EFpi58Y zCHV3?ZrMYaJr?mdlMuTE2KaQ;M9fM{EJPOk#v(E`8X%dVL=#CsL5x8JMktCSl+;W+ z>0zo-5dmTrh5p$p3L+u?rJ69JGAvOLM3pFs5NUYhQbSsfoF}6-nmQn9m8^wi(ik7b zg_WPqbvx(s^MLWLxd-Fd@jJ<>C-NaWgF0>bGcuP=4WKQ5dUgVkRaJ_rqKfKTDl2~; zVT83{u(qhWYO1QLuvn_1qN-!37%D4mQ9(mdD>Z4WRZN(J8r2ll1t^6JmQ_VjQnM1P z7A#S6Tb8P+6kEwNFa@kcId9YI*CG(xYA?ko{y%P~cgwPT$Z-*j z1{1qD9&JQ_-vQt#^+p4=w;l>Kh0^5djBeKII6haL(C*!Vyc4Mi_fn$!q>1Lj3AbqZ z6Zr-P;QTs&0DWh)#bw9&$F=b}PSe0Tf&UA7q?9ADOQ%eNo3QId*RMhGL>q9oaH^~i zMN$HWB$Xf-gsjHfbK|Q{TX{(ivueW(*CR!~ry=awN|69r4_ zlaDNa9B9CiOL)IQ*{ z?)>0$;s-mq2s|g;x6Cb-3Gt{0y0$EY3(-GTPn`sL%^%2*kUtRWv45pG@9G>8V$G-A zPd|~+e%@Kmb&cAsNe{T_s4rwq=SA#|8=Zk-J#_rtW@ckz40j}!9L++d&KNbnNs9M> zgasZW2Z+wdU?IxEamPHS89EbtIzS+A#=!;*=c%#d`6;xU{A|fIRl~EN|c}NkkOZ_RIGo_RKt0Xxkmd~_onY<`&D2GAO1&em zI)lejn&urYFd+%gUzM^uN>iQhcG^PC0#c$Xs;a80BC4!*YO1QLs;A_9y=(NwU=QAJXJMO9T* zBC3e0sEUZFil~Z+s*18g44VZK>egagO_`j196D;Ju?Rzqv|Tz%rn?!mSn1B2`={`4 zy7CTO^qLO7Q$`C8pcX`jNyca^_U?KxJ&aFe1JI0+WPCpKrTMyy6Ot7L?S1hh$RYk} zqDKfPVEDdeN|NxBMLlwDD%&o9%8b7k{OMR&$-q>*(cT)dq_ z@`I`hFjz8oq3|Hf<@6{6xlnC1H>19{(^AERrBJjm-@jfaOchai*wr6@Xam?08<$*~ zs3vQE7%des4AI*_nA1CJ9WyfoGcu-5K29-;A|0fC^!YkNR)ZM^#I^or0dbSJDxhjE zTUxNAb{a_}nU-js8H~j$5scPZZ|=Anj+kak5th~?ZHP=gs~ILpnQ4=|owd78I?RSB zK9+B*6cjX!Z7UdK3d?JM5+f~^Wu(MuO{i-nj22rn14%IlTFenc8e1rlNmx`Je4TBy zn-5tChd{j-u>vs`b6+ibaB4T-Kc!-raHvdRk-Vj4=tR1jFA!qU&4w#luj zNfNb^F%g2SI^~8Sf<*-;-?v97yZ%dviL*B?Gc98oSXi{oh60R#L==Fk3yi2QBr3)t zF1220=38$*TP|&Ox~yIE1T6@;6d>d%?I1WvDQO9=R*)rFODHButdhCeTFE%cD4Q z3DAWD3Iv)JGYZPH1Vc0G>d5K&i7yWf$ksB=yToCtCBbhbA}dBgcLVPdcL(El zIcN-Ev1Z$Cwx*H=53k51>G`Ob8AdY`m8e(2I_KA$V>&g(l_g_o2QVbVZ5s+nhBq}ju z_4q>gxwZLBI0iw5H?0|SxIok?$^eVi0Avb4mHl)sJT186*j%T$CvK?^^ohvt&vzrL zYZ@zCZ4s?4DQ&G9(J$h23rkxX(X_QHHKS69l)8ZV+|C_qSh<&6BaenSxZvE(6ynzk zYb%z2v5Hz*h+R`yU0W-dqO7+#x(yn+l@ViZ+NO(_2Trq)2L|U9rKPS+E-fgDd10Jn zyVz~(Wq7p_J>U?OH5FqCdPJBe6^Ldm!C6(&)6|P4E(^jW*jXW}WBKQX05V4MFo|X}asyWq;d(eaknzWjKoo2ijB34>iMQ^9o!%EFKlX;t|qQ;tD zk23sVZ_MS2xO)Z(n=6Ybed>8yXxr8)otReq>$Yz)Nx2fuvvCr3G{se;bzEOeEmWGI z23q^w=NryYKWn7ueDb?P)sb`vmAe*y zEK!-uv135+UERXG35pg%6|S0y9T;_%2jsm6271}K$dld}eWZrIufn;@>6SBSqjYgFd3UW2vI&Y{=S2Tc!WK~`A@V-u6*rFUYH`PH!`-icav0q)~EsQ zb(d5|){3F%PH7+q$!n%t8^P}nDS{*4gCT&(yqvkmiI7!QRZ&S&Pe*Vg6IEE(E21vf z>v?!+#e%vodgxx|>a!kFFfhz40aaIh*M;GWw6DNDla_#{;ha8D7+DA|Tjh@}4x?L{ zX__^sY$=qb*Dyi)^26842d{a5??nTAv*a zEQ$ifkigqwg+QogFoi(dc+)W137#I^o?5`OVj;=qKYK+k#Iq+k&y0(rAC5^k3o)LF zW7BiA~l>EB7{4 z9Rgh^w+y~x&N}ITA+YQd1*1$sEsj{+B2q;lOPzedBlx`Dga%uCAzv_Hu z5ZZcbK9~kZZiJn~1Hpt3AkKpgoO<*DNJ_=%sN*XXK@x)@rR(frwzg*`|RbVCllS~IOPZNEgUz&igk&&&vXCos$n@F4WDS<~a)qUDLOD4l^m zZWuU317I%Qliev5i5zJtqyQX*O)iLuIjR8Rs0ws2($U>zo72^_hW7}I0Z>)hG!IE; zNh0;6c7#Gul1prV6)b3nWLFYJm6?t03}(3H*_pRV;ep78Mj`ECv%5V0IcqP}U&D!s zmDYycIFlVX;)u4@5hgPkjAmwITyRlYa+utr%taJIRYqWgl(yWpZBn2pio%piqL`?P ztGh&c027;<UZxaLfMwyTz=V@$xP+|0_hjVndC znSk3&!xH5%OP4b(FsoaZ;M~g8#BIY6%&6rYZX!{Ml+08{%*N%ka4AcdE+dl!7PT$R zE0wb2aVXrbIJVkiRk5_ImX^7ifzg-A&J!8zn@jKX5m8&Y@cIbHI&`Hjnh=2w5NwPP z!W2SZR|pk<=UEKHbJ63LjhMG6mHl!{goi)_=df?o)*hRi9!Wi?-{Kn_Z7`n%ocu7+ z-jl{6Kw?eiVN$LUP*zEl05_?=wdx!q)MTJr5xRT}1Lt5jBG|5<5#mWq^L&*(0t+%6ppl(o11Ai9d=~`Sb2sHNT86G8HrQ8rGdZY*@%&G7B2qH2kuV! z%Jr2wQRI`Z0OX<9lcfp*Pz4Gjl}RPhwot0pO}Db2R&*x}1E(pBh|)mxCUTZuSa6fk zJCJ05HQndmqg!X|=WssfxS5^jfO<5tgCH}ofI)JE;TOCa0(Nsl0@0;-!sV)ReN-k zlMjAsDOA*zOt-=#CC4G?NgE;|1B*P$alJR@ci@dXW zOUKo&XTx0>ueg2?>J?SR+V-dnLwiz=l1ZabW^bBnXSbUWQ}O+QnEfO%`^Lq|A_mld zpl2osR#8Jk1hune+630ptXOp1&13*sK&HRgSP%@VC@Kh5RneV?NN>`Q8>IElBilfS zBm}}7VS2NWD$r_5dkk#KE}@vms2HX?a0PPe$@E|loF2~?06&T{dt*7I?&a>8%r+HE z%sL{SIcF?TNd{D%RoqVP1sy2L>LF2``@}SOe`a-3984D3+XDn$iwD9NgmPhuyCfpK z>2Ns)*({~QborvW?e#rAx$r0Op}$1wYx!5Q&@$nRH?QkHe?9Ot30+u&CL=OM&mqi& zu>x9`k_WH+{_oE{1jNY`Jg&x`vpRj>e&;q=)LsD1N0nT?PoGb0L4ZuTqsRcM-=p>~ zf1c_{t_BPO82HlVbH$ZC!5F~^!mBIN9>x$sn=`PVxIVpoHd264P?O>m76nJA%%AZS zp3Iwr{N?@eWn{nAI(ZGX*mQg%YX}qQ@~-_?@D0Hsa=~hp8ED=SWxnXaQvL`I`Da!3 z-SY5fd;X<%gVX1I&(%Qfe$F}DcyJmjf2pW+#H1zjR*FPY3(X{8>+^QJOBfWg8IxP_ ziCg{kzXraY^Ix3eczXd!AUE@P&u4i7XNO~TRTUe9oqQ5SWhgzGyO**$@G~4jHUS*Bf@G{uTiF@GJbf_o=*)m}@0&?=WBCM#Xde$mvfBF29 z8E6=GaL_oowJ4c@&?;6@V$lC&snh5)fv(UcoiZ1};@0GaWyhBq7AuL{ zN>(PK1^mZwq%UvAmWz4T_gu>;3v$Z-Swgn!j2u(!%2a~SoB^#U7aiE zjyAXkG-C813?~C$!XF07I{nQZ=+i9Ovv{kIy}E}LdMaD$Uq%qWH=Ber3%9nDK0eC8 zhrs*4Tz%P93aF~S0Qtu5e;@GtXx;N9u#&p`R03}j$fW*afdYuA;1mjFusEM~%^8is(S~OF%kPNC22qc|Pm<0kSF1fbgZw~SAH|Eg@92H=L zJHU0ys&It%^f!k@2|$QIKDSE(!_KIT@A=>&RXTc14-;Mdd;|mFC&VX2J{{eT;GuTt zhJOdC_u(aE^&#ZIf8@@zlt4vfL|G&JoKs% zIbUm_6#=0iQxk8iuH+5L3QwH1JOUo*dOjy;$WnRmoCvr;Z778d%_papq*Dz<{d|u|75*PucfVf0lMXL+%Of-#2}`4%K-0 zQal>ouZ;>)iKlru@ZpQcNx6etTX!DkKzQtWFx7#m1{Du%pRyh18ac@VjGaBn2e@Se z7!_v3fW7u#4)-zCDAANK0IFdNzC6C?a(A;BiM>??Csg8{Kt|*zx66RaDGXQB_S9R83J4QA9;mBB-dU{8}j6QBhSD z`ySGzz6Q)I;KvX3LZ-;Cy34Sl?j;;Z zl7g82$f*BjT@H=l5JE}HbNSyCg=T%ll->}9ljMiPSLT*AL}7+;^x!2%Qt5@aR-l;eSd%0dBTZ_utJ7N~I(0EHSuY+L|;NdUuSg3ybZEWiZ- zf8qs1G!cYs#!y8Rr7#eIGL+I91bYy_3hBuS1&yML0$2=zgdmX_Q4&#t0uo$sTowov zm>e-00Hv5fzylz}2n8WBqLPs?R4B|70Sr~FDGCOR3IO6wB_S12DuSrxqzMtuB1$BJ z(7{-UN(mqki5rrv8Gy$YJ zFp`!-N=sXv3ONihpu{GjNk;%nB%+rT)Cl4_Aa`an4ndL{M`=t(1hiQxMA8uDNL4FI zKon3+P&go%&H;=JOwBaRr5j*nFv!BGS%dO>U?ii_zd%ePj3Bf|YE^ue1hhp&e@>6u zeUG=6MKh`hN(M>=VG48cVBqNt0Q@){WS!C$76@(gI|mT@qjs4$l28;hNJ2zlB%~=q zz(HU@$t5LHQl!Ns%1}_&Eed?|n2xLrV3rC}QUXFu0w4$y6(oqlNRV()sf@^gGJzOn zQZhiQYZVF(ezu(oO2V@tF!x!Ae-w-xm{m%uQWhu_k>+TYDt>qrT7`)a)Eglv=zUfy zIvqARVkjge$8DHUM5#!+6_OyA06_qV%*=?uFn|c_LQW2{zXXYT1AIz7ZE-~>A#KFK z{I}miWSwiIolfZ0~(B}R@n&#kus-RiD_Uq)Z3ZZnb*K47=Xmwe^vR%e@qo7 zRWcKL>GJtyU+!0T%Js!hjdpwLP6dHs)mvK!zj?d{L9d$Ag8 zA2Lssru{w|Ao9=iY5eN(4=-;7P8l*L^7-}f&3@TExI0VUQu1Vu)A?QJF*B zVQ}1cP0yS=J&X<8Dunrae|Uh8>TOOn_bolBs=)rJBBFmhEhDoOcND>q#NT4!k)Hxxb z5r;7hfnbJ%&A=`stF73)$Il=gjUpS?6=h{YNR(=5V|unI|C9(!e;5F;QA`6E5THDV zdI{4V0kX0o2J)(8C9EPw3`CHaB@9y-5R)2U7-fmc$e>kT^KA6_a@CZ0eCj`=r}&sj z1J;VY$9vYb;AL|iF45xN0eYsW7_8^xOEtuo0VH_zp<&U7HemN(eK7m;_PmfPX5b)9 zaqo_P&tGj62^8^P6f(KwW)4_w?QBA(I`|kMn>Z(VM zuV=mN2b1s={;!3Iw2-nP?a(;`At@3koUkCH+z4Hue1o!hODT|J3=EZ!80H~^15QRZ zKxu&_SeYdWbsDA&2tt+6qyZw3bh&BIK0dI1Up!f5#ERnQ6cg3LwdJfWZm# zNCsnUgtQw*kcb9I2@HrNwTNj*kRTXAj8zE25RiP5${2(QK_YLIO|^!wFqG2F)w)9= zG^x5n2^L*2lr&Op0g|KuPJo65oEVz~#K?@1G*ya5fkqq!rG#|>rcz~@3Ij?&N+r4t zZImS}z-Z>Nph^enw4osW9j)GC=;iZr@dEiKW_e* zN_ktie^UZ!+<77(K@{N+SxZU6_jIG`D_5)xrPyA2#6^{g~-8Bod7_{jLRvIXo0raT_{SK0&?~{ zAotRl9H;;(;iWsCDxg4r-gK^W#~vZc%BkK(h77() zLIlB*p1A;Hv{B-(cQFhkgb>6;k|hZ!Y=~&01CiywsU5PNZg9}PT>#)5Wr;+Kn8Lvn z@m^~kkfnq26b@hpLncfw9GN{~mk$)>iM_n`;dj+qE(f+wdRNKz2MQ=$l1s+GLMfrJ z0_CW2af8u+PMhg3U3hNiuU^g#_FIzdkd~%)a7Na(w2*YcqPa|xJCz|lc4QA9&U1kDsslu{8C1r$+0Qqe(F z(9lsp#85;L6i^f~aP7Msts&z#f21g)5bA`V1=J6@o_@X-yN~CdsGA4^rLAJV^zgoC z;q-ied)-G$`h^#>=(M7N45MD6hNy^+e217nU{XWbDYE_GKw!$iqXHdpkqsW*oTj7V zL=UxpUVsO?@e%Q0dqBtx9wq|zAkcZ6Y0?ZzB?06F@dJ7yWAQ3{4bRY%v%`q;v&#uu z6Wio)fTfuUkOGnzLSNMQ-dKeR^lWKO_G47hd&MOq>hMBE)=3Ds27hHp ztzUKr22-FI~Se6}QAXJlW`iI)* z-j)iwe-_2$n=m|2!w5m{Rv9T~OorNjrz9|AY+3Nj@eiw)FWCFK@xsviX)`JJTs!)8 z%42_M+$p5-RXV=-rYYglut;=gq>ohjHuaO1A>?%DvcF75}pnw`(we31Oqd z4~M?f>(-QFUi9U_TL(rK4Huvo-eH^MPW?;)3Q8%H`w33T+=PPWUHO*VL1G`S;P5 zgburpc}|aq<8*H?n1ChKmzv7G&vkbgp00>5Fq{kwA`SuqDsTe+FW2Kib&)8MDH2a% z>^9BwcC6Ay-7@LgE+a#b;r-gVG#4w+UN?QG>|deWn;x%ZvSR?82>~O%eno$R_|~yQY#x zo5~^Go}w0K`45Zpt8_2DJudC~`FnUa!VsW?OyFc|XoiJoSWSvJEO1F>m+#fUzUj5P z*U`l?f-Y$+FdxSlalr=Hav;@ze}F`jc9Fm=Hwz<#1-0G9zhwCXx~?_0#&fZItVdf# zV97G(ZY|B|%{wOQc-2c!GYu z!@fS9-V>N7Uff)pgQ2<XIDW)!>?HIx3TdD}{hs+oNugZylx6UK?h9?DJfndIUP}XJLIHA8(`ufSg?2o?X*P z<{3p)Qk7yM-{@pQ#hLS$kVZK7_O#}m}T_JYi zWo>mT`rNgD6>{bw*oo-DIlVfWDqx(U;vHUt+tQB@Q7XL#FK`(dm&-tTqdR}=#Q8B? zdvStJ5#J#y{wZ>RQ38FuxH-5!Sq=S1r-e|Y`_hX7YaWz9URsR|#U$OPVpbKgO#PkF z+LBNjfQ8P?WfZ+?DML9cYg1{(8}sx8>UmYQ<&1wLEh+H z*=yFSSf@g7Z)uKyY7PMjs)3ug093qu6(dYI$!Du=7r+^YTNn($ijc;}U+;K>6Hsu@ zFpNgz6LW+_sxa`;F)uW6R_s+~9)jz6yQzJhh{ks&o*f9WrYDLt5Q~mC8&jjQ6n9bK zP~NzIie$p)M;t|^y0c<%bcl+SvRCYPWW;>jrk+|BS*^jv&B@hC#FBJ|b9T{K6^KyS zmMmqyZ1WfAOKWrP7AG$D>TdO|Apv)#d0hcD{{S@)63#Nuk2e>$f_&63B${~EIvIPt znj|@;T2mqgg0XA1S2N{=T|y^uPs_>+hyxRUO-cmuh#4m*H;1I8qn?DC#fuiC6xzP4 zCY()Y9F_kd2p$4PZW9#uH=WbCz&Upq+gtQ)Zc#347EL)UHO`4D-D|i2@2DhW`W^oEO33Lma#i>G#H@Ag< zuU1&-2DZnF%!|8@Ch+e;M!#HMm=QrL+e3+)Q*s4v7$*+kltd8_ZGU>XGToZ(bP+H1 zye1W-M5vImUx&!7a46-R_-6R(nO;Dn3>6a=KzZWSp*HTmsZqpW-FEq5oU(>d>AA6SMo z;aXZ++7bwmkC2-+92Q?W3xelG61Hb86cSgMs>_g&qtChMW@L)WEV9n%n>izYyv0G! zT_dvAk#h{MVbsh<3p?UL{plp$p5K=uKvLGNA&ut_@nw%~d&}GC9qAYCPR^FTg2)?l ztALF+M@LI~Bc0t|BaP(MT%60uK!nTP?qVsrgFaD3Uy>srXu!o}Q?3~x3w`e3@(KPy z)PXlQ2K1fX=p7u^_d(oNMrj{^Sm|*02#j@&rJd2W!u&9xIGCDmgD}!PS}{M}~#Xqc4JN?rR`?Un*Xf^{GUgI5aD)Yc&|@eXgQJ0P*){272@C6&dtsJEwt zl%#FV$k;T(y?i_4y_w@8^4W(zxq`qHO|XRtitd5hDcy6dS{x$ZR7&T6t+)$a>CVM= zi?q`?;_QVKEoLvX%~gm&3Wm6~1T%^o+)$)jqDxnkT;gk2vrzx_#mrgo4~*E5LcUS# zfu%_%kk%7rG?|&vjB}81p2{^POJlRmwcRfkJ5BdB1s_36Id9Y7#)rLSWV>mX3|jEc zG+>egXw2l6NB4lN-ptH@75_<=kAj4TgG#d^axoC<(LG?6MaoY5Kr3|qCoojE%MNiz z42H5zp9?{T=;iWpSEmN!ZFh7?JDaT9!**Jd#TL(|ra66ryM~*x(mK0RIm0;Cq^I>4 z*6>1h@xT!djm}OkXBLI!0%}BuWs3sGT}!iw%w263CY#HBBhE^HY&AAXcTx>a#-mLc zsL+}zX4*<-@#F z>7r~9bBayQDP&o_z#IZktDjY&g1!RB?SL%CG6uwLx9hxUMf!R_uEBdbBKF^idFYNk%<9_G&HwE!vvGm zI;?Z9tDD13WNp^l1#W51*6DZA=%_CFW$X?Me;}qj3&0_bZHRJ+a+{2dIMEv`ZQO7z zS4%|TpN-1%u#=a&TU23LbVsAK2dkx(;uKF6guyH*G{%sB5P}4$g+|%-dG<*U?{A8} zB-vX|d2|S{)?Xi=Ca>7w=U})uyEpn*^G}(&OjxG02G++nGjnyY*c}!-*kfK&kYQS@ z#D<}?rtNm{EN|K@<}$%%t~x{AZdJ-Ve0FR=(U}2{A{QdNuwz`^9G+04OU<; zdFN5B7f7nZW627^kY<>FQMl58fkU&bx*Zf+qE3?1=BkQQLNz+#ZV)<$SBVK5rg7;g zu+~95Q{%<3IJm4gN$E#uNf$SFWSvwsyd*oDX%>}#x;Eiyu4V4F*zDm~?AJ?E$&bd# z4}oM<)N9+zX}ZK-$=%Y@tJ|yOTC{If#tHf@h6F(x(&|Ohgh`i3g{nNERnD?^wa>U&D<(PCa_H@RoM+K#pO@zj z5@oHX8K%V`lsc`-P3JMp)3I259eUkFFc%8_ioa;EuC2?zCvS+JwCCnxKsfB1Z7ryO zpI#oG-ja2UN&7n-_OV7rQ`#ZQA4g}%JiW$NY`Ys3leHl5$W2pIjm~Zc;vAV9<|IyynnKnI8?`U=Ye%|;ql=~`&HV-mBxYw#ysUrYw|=2&|>IzlGQLbTT0nyXOU zo05^3DHm5>WzKRrrS90;>pck-oz&NFL0B8WQVuefeEPSXIQ5?+oW1=2vzCj?{uoG&M1tCh{%VK zcj?@vy3a)~cp*!RYj0(hXhUJB+>|QDrv}wltwk70CB9L??tZr@q|M2K#QSb`b79Lc zjE!pLSXpM#fU@SLf#BA)p-Ty%%+<|2Kg&804UYK||{g{Cbv%BF?RuMx_stE$J`#pcPf-(c=e zr+SLc<6R@PkrDyxmr6wz2sS>ghl)27bpgdEgIZ2z=FCJrll!=d)@xK$Rlgb>8ugbo z)wBQ|h4Uqt%^P!rX~YJ9w=2Vf${2TMFiDuXS~D6LJv2(%)s5k}u?sB9Hx-}=GY|m8 zn~QUS!Gw)_VOgxI;)Yg(Cisl7ot?Z;%4H=X;iosSkG>{Lv_zXsDde#&=|Z`>PCF!p z*a1YjbJ57b;ca(@Yny7vtX%O0o6FHwMQNaY~KV3Od9Y zO$OJ1>Z|iY6rNMh7M;-JQV7LO2jJX~w*%elTkOM(}0-5*38oLt*moE1qV(_0*&1~YpySzU6c zlX9?ZFGVoF6={vn=VvoDiGre7EJQ1{$Y!?(*5o(4n+SD7veey$uI#$l!*-#tTCKE= z7>sTLw|IEjJ6!KWKc$|WyHl!wM}oJ7^M?NI~< zhUaRw8=G@ugd5K(%UNgD(uZg4iz=%4)^#zbTfVzEE2tv3k6c zQbodSbqj=H)8uT;Rkw#anF{i={Mm{*lVXH0wnFJU~63a=E%IE_TgbAP%|+ zM#ermJ0aSC#4J&7EWxJpZxgN4POiyboEZ_MZ~>wLoIy2&Ew;(ZR?yzyx>D6j`(UqZ zWv%nqL0}q(`#qW;K%FYme6<_>BJ2y=tfT|O6eO%Hvy`*5(oc1@%O%&IS17Y*F01+3 zWcC)E#wL;~HUmJN>cr`KcY|W^OAr{>;b};TW^71*JUF?$6RU~GKD@1aT9QFmq~sXD z%T^9Q87nq+h|Bp{Ve{lydWrUeCnGH7>eA4r!nESsUXFOLJ311-Y<*$Wfthpi<6(-c15Z>RLXyqMo_D;8ALv8)GO||`{;`qB3?}ipj z6ubR@d1T$eLn)L&G;10NILK0wUr_~XgfKyWbDC!u-iJ7aR=QfPQEps2svT0d-Le)1Ei`nC z_i3v>E-lAVTLl(lJwbO}9s`?^#krv)jde*5&d6917V&J_2OLzita4Mc@e~DLK)Kgv zn_TPLeF@DB$gzs{4XJvv>hBzfM2>_!AnPVH?iMGR3l=dsN^LjY}kP-IPaB+#?omau8}lC&S@h&1slns z+G)AHCx?3hB}@wRu{AZr zxw)hqQ;11NB_h(n%0y(|I`^4cC`^G*4>+^?D#J^A1jbM0Ak}#k;6! zMms4shj``od9`u))x1bZ+*5=0-dAA{3oOXm($L_OW0-DmR~v9fM^&ArvFhmJv=^%D zgr+W+1cqBhq}v7Twb1Y z@DLZ7K*j*Wkr-%&k#R|Xy}?rnLzFRq-r%vlV1=y0W3P@U5sAD;AyAxS(o^?0=2f};jNQg4=n~fBAZ-rRdK%Wg z!g-(r_GSnWy0B1)=_6df5Q(WdM_~CV`n>Y`s*EZqx$SD#x4~?GE3OT+!Go}&7^`z! zOVs7-6Mmt)YGdy)gim6Pi0tr2O)_Pl#t@^-ppYyDTE}E;V1w+V+w<|KDLVZCY2{XB z;h|vbmUE_#bQiky6vVxX3Rc6W%06EenR*X~0fRMoZEm_pCr5-hDCekohPX#bG`=N{ z%n4W*Uz%`na^F|7a``t0 zEiUcS^^2La<}^S#xyLp(xVi@e%4HU+934_~Qd&O1$r7= zty}N!Haa(26VMSHI8QPNX`*s(E{1Pz>&9LO9t6ybz(0IX~CGd3%%ql9dw zwdUJzT_&DVHPOYz#kAaGonw+sYSfZ%j;4BljBKQqguYqbV5DblwS&Y8JS^S%eG46! z6O4&WT9gj;{GSoJDUg@Npn8nb*bX1!ko9h)1Q(yh2U)}0WOtD~m+yLoS4 zhKy`z55t@}nQ=nmOYN-(0QiQpZf-E6dEObUQ-B52Yh19?@NPP(IVreYJ*QKqot(Z~ z?Xr}AlBZ*94p7av*JoFb3RXv?-JPA1E0((731)P<&t6;NaQ2*l7sq;0N=h$6D>r>2 z439GmSyy`KDaJ>)1r&67QGz02<#0KNh5dZHZMMU2y1atiz~~rN z(FX??7T6o&=beO8!>#b7Q>*4ivTg2`AFR* z%PXQm1j2!uH~4XN_ZDY?nE6}dFhO%=r=#H)#2?%8a#Q(E** zG~gjeIzUE4y0t-8QCVt%YE4-x^3Z_Ts@1v6gq5NOY6jjS?m1lKc>vNQuxz5*n^Cs4 zMZbj`8_*S)(7Mg--SO>vYVM*6dgC5{S&*=6$5`C3{Kzq3mabcv(PT0xssaHRA_3Lo zQursG(JK032uB!QtkvReo;);tu$z3vk2rPg-4pW#W2WJzajiXD&jd*UWil)okro2+Z|c^u zEKN7NXlkrQxxKj9Fu=Os%mnl8 zF%4}oNzpbpHzblSX0C@PJlxxjmAqPKZVu35+d9JN-~pHm?JW&v)gN3=0Na~V59pR~ zIc3g#Yqf2fVcNjoF%sk7vb$o8i*k(I zLA>Ay3xU>M<1JLi3B}Rjy6T5nl@bnI{d=`yLR(iVT6~;F4Z~9T6N9qtuCs@JE4UaE zw1=mhyW0)o#z1I)W-KqY_ve?m^>h=~$N6NDKEaPQ&&%@ia07VjWuc+RXqgixgQG+MI}K&(4M~B%IkI$7jy!FhsYib6vb@jZoNxl3bM3(;h!BBdE_J zPTLZILf*K4JT*QwwV*YdNxQZ?CiuM6b_MHf9tMs=n$eko;7h(Q3|R)ZrNC&FO6`P=anfMfh~lx@~W zvq(Ww(NjdaTAA;Su>6aqGMIfWXitHv#phP!r@;t+hgTU#RNr15)J#Mn;c^jLS!#Pp zfqz!a=Q}H@eYfGJ+hHuUMB=er34kchI@Mzf+jKuTI6By;ldh!V?(!6ONhGkZOEB*% zX7Y14C>{H4y5)j?hoZdYsBrRgl2)5d;7H+LCmh@zp54+)iR#+yo?}@y+Ql%o9y-N) zvEU^jeSRH1uPN|a%or-V_w2!tai&dzuAPI z0gCkLb8?&#QPdXnfJ(rvV`*S;c6g>`O(z#f^@~)2!)|Uid_5dmc1cFe$WleFMz|?R z2*cQ7#Gw@-=4;{gwZue(MWiEAb&X0T*Iu)KhTlV$nzBVi&qHrrP?X@4X|PJewxrr( zVXnBMuNmkRl0833K%xeC5nKIytq(JG!W92(>~^{kI2y z3@$p9M5l4EUR*0$djE?-bQZ8d^oDG$h5&adOi%%^++1BD(OpimZh+!dh>2gbJ6`nH z>_;lKiL%)(mF#87(Y-eTe%GQrVw)UW++rKuA{Ho?M1W4}>oXgrjG39S3&pN&=%?aC zXc`;+{1hS(c_&wGQ9~F9NE{ua8gP% zWwY3^2^fhoL>M7zz0S5!~DJLjWhl!?l?h!~rBy&OADVcyJiU@nx#OVT}_o-u)crL^3k z>@~$4+#HZBE~+_-{(eIB9O;C*OF`H##Nm>Pk1-POkI+W~7<-9A#FvW}I1kO@gB_ESa$%Gf|-Mbr>~gDX(2Wue|*G4hGO#VGv} zWfmWxENm6(^kVi|<7>JbWN9v3cZdnR?Wad%j-}OFZTRp6jbJ;t2Pac?lzFYF7}a#4 zv0c1Cnm+&bOI==+xFby-`Rn zuP-Gas?lw=h=;mk3+O2%xdgz$Z@&ZR$_q#jjmQEwxrzJoI$AD zd|a_)U3J4dJ(!iFaK9ygg{|Cj*~r*ygM+jww%)*gZY@~dhtj( zTmmnk2lu0VH^=c1#`|(nvHU>c=QNnCJz@yq1s{OT1o1w*D-)uow^k(<~+Z!tYqFQp5$sh!)rfYQ>_o>XL!k=8)#ZgZ4$b9an%yg>m(;cs$t#aP;ZTc>1R@h&bfsm;mFxraM( z1_J^BM=wilmBC$J+FVK<<>Wp*3tP%@50NWk#)(L^CSZ+$G%u##C49$4JX*4+V6DE| z9^7)e1?Qsx*;$*P+yhFAH#oPtC~3vGWze-^Zd4SxYmIUn9&oz~!-bC=0Ck-N5C}Hg zo)?Ih@+884;?UgQ;@)k@N)B0U9hw%>p|*S<_d@vY?{m!^=F5o?*gNgFcaLs_4ed?| zrsCq1HStz_e11kg=XclXuV6Jm6)Z3zCwJovkPyZUV8s-@{d)4s?xUlOOPz7pL&T<{ z1H#R@Jqq2!COx27vQcWyk z*M4Q?JRR2Uc1GWT*o+DY5l#!f?foaN|_4U5+F9rgT z7y0>r>N5)9B7|sVco^$BlKtq@e34>&1P$HjPd&&PyNLxJ(~y61ed@T^?9q>!9AaCR z$?H4KW1qB@e-@BJy!)?ojEixw=FsW0d5?DwLk_X!Xw4OXz@1!cFqz4}YwgXyBYTyy zfwRt4gy4jSOhK8f8*K4gA94Eo-G?51pJVY=V%i$$rq@Ho4n<;@26ni2^lg&xAOj*U??OmEnKr$||8 zsx3XG+IGw`)_YBvzFH~4$|*%0oTB1goc3_miYq3G=2_N~gW)lphR>6ukS2+D5JLnA z90ukn4yllzQECm<+8x>D)z#(UjOAZ=F4#+4pBcuM&fptJSxm*n4b8Y#w8WE(TA{gC z)NNK?O}??0tVGS)Y^2pSJ&7QHE5Zzd42G@7X6pw7WNAaCVGgcHOdOJvj~FOg{F9Z6 zlGS)NtTS%LCK=`y>ugT3mq`OqqXbefncS0$kZ_6)sV0YaVCN|8mDXCY>tfXJr*iE2 z8xXoaMvxtGcD@U~_1icdw$|%x9b*qaVj>r6$$^YC8}5!YB!d_*Rv2f0$OHwcP8iFvN z9#VWw@kLOaC7QUn(9>jpV>8L+t+)+Um4&Z*xvciWWgE2}O=+F7cFw+tQ}tF)M0#b##s4T0YB2w~NbJfVo& zDW2*VEY|Gy{_>Nv@)AwmBqsWj^@_^sv8qo;6B^B?U)~Ea53f@>i5T15AOWi7Yal3W z1&m+<#gYUT%*if)b#-|#X(1$ySCrip)iH4J7O9x~Ru;=|#KT6VT9WRU%*dMA+ar;1 zN+}J>{Awrr%$A}=@sw4kp6bX2#`P`WO7ayj{oas&U|wc4 zG7JEQypR|KJU%}?rEGhBd9lE(kj6F#a6>@kbXWIx*XsO#ZIv184xQQFx>w7oOOOvW zr_Bb&LfZK3ZjtY=FJjo0wR!GP*Q{j;yw~U(b?QnyVeEJZT;`?Xu<*j_bBve!qz0zZ znE+PUZ}4$s9%J56>iKv|NmuzKl1wHaQ-YI%QDhSh|0^S{nUua+Z^x5io1U+5Zx!1j zdH5;rJtc>KBI4ZYhj~<;o~3JJ64*5FHpZjXV%eJ^A+eM1tJ)r}fzF6mGKw%@D|PK9 zpn!lEx(lR(V9Y=!q#E|Qb$V&{8*a5$6M;DUWr}X|*6B83X4{>0 z)uE+wZgF-+WZoT~9i~#x%5kUk*E{Xc1Av5&cFnjIl;;eY(HIDBiFgb#?GAm$CAqve zusAn=xvHzvMm5oSWYQxSD5DDU`cbTCSscbKFPC=boD;-Ve@R7`CfedK_WMh7Go|pu zYjbK5b8NaaRceX>7h{&HnuwI&f4&q?UBzg|(+OIN(^~8Kbsum(OQo2Ix zuFm)R>vg*MWpl6#EY6e$_38r`M^I6w23!^l!JKqMi-|bK#t798y6m}erX5wCNoW0w z!e4Z@diD=5pU=4A_82-giMV$3kawi;&F)${8Z3)5OWm@HyAfl-TL9CRn+mD1v0mPP zhE|qE=*(IY7yBc0>kAghoL!ya*~m=AJHsgX5E$O@tD=;Di*gg~F0ncHitJ7T%{6s` z={QYhw3n(-LCvwn$;~7=yQu7|lCFw5o+Y}m6BTO1C4aV7t!+^?tORBv)Mlwi5tC5h zWrxdconqKa*R9x~z(P&g;oxABd6UI|sVJgvZBO>~s;K_GWLp5O^CE^O1|}WIp0Y?} zB&a0ZXXNd9sA|S!3}BUwH|baNEo*yp>CU9$@^)06-fK?6wOf15FjyU3@A&JjzZ+?n z#S7Vy3IefNTl)wg>l6?QkR7Hq*lJzfmZDNY)!kww9M=LG8T~aTiOtIWge;VQy7+%9 zq8eG$Xif=7HpD8b*oOT+$^TD`(^ogr8aNirZN{mr5VHW70qVr~-s?V-YH|jY z8gfcJCi3j?x-ln-Opv3bleawPCT==@EHpl)?ndDx+M;4nB*n4=#9*AA9Awr_ z-mcc?I@A@q7nz*93L{Xb!xlt;Va_}ZYa7+{u=R*74lh>A}G4E>65rq^1@a%g(ew=**mjoJw(22H4%#48$gQRwOWl(m^xD@DQeMwW`Ti%g&9cF z0iPwitkO8TU0%@e_|&Rz38C?7#g8jq*OWp_x9Tew2-N9w!(lgbQW;7d9v1^mcFT&< zlNp=}Rp-Kf$0%eV%$+jf-No6{4{NT(o$ZDd0{KA@`OLoucTlHwe^QJ2&@y6Pv@6$`JIL zMje)0UQ%z;R$B6yIqMVT0DwS$zpG|YVAv;a;747W;aVXfZlvI<0;)GAhWo3ISX-Rl zDWL0@=Qp|WJkKEOJ6oD@yJ3yx0HJ3IxHY&rw>bv~D%!P^N=4UGWpHG3f3v{00ic|; zpuoFcoK*r0v*f{a7ni05>Eekpj}}s0W*bulDDPm2bbCXphZgjuwP08kds}5vcX_sz zUp8zkVji)W%Tez253h*J3rl^&#Q)BSQMYivr=rYoZ6BXVi~Qu~1$GQSbt@9R zJ%2x{w-Z@Kd`MEGue-$Of1T^=`YH6Co;qF4k0G}T-s?GlX6WOZ+jm#Vi3jd#R4{;!#c%beb~}He>l*!+~sFo;Gj<6{?jb?DRgYeTOpQRA&rJUV&QC+52%xaMG|())_AfINO}>kWv=;17v+f zD*bC=VYx5X)f>-vgkg5fFj#BW*l$|aTm|+9p4(V!e_LduVuM`iHrD-Px%}7Q zq*yb{&k+t+O2q9(2Db*>FYVjpkrv+p4|u}bY|pF6Wtvm!HHM@~(O2!(7e@J$w7WynN{2Q1 z`1pG?HO|(@e7&`{dMBq?pPiBTZiQ;XwP+k!oplzge;w*F9s!=h*vLQ7l(W_;Sjn18 zTe|Ogv8|EFGT^N<5Dd*dQ6kRS9eZB6Gdj3SEV5hPoo|qw$_U#_YYqbF{?%&BR$Q4P z-B&OzTa<2flhS4uQ(JGhC}tOxcL}~W9odoTVzGH|nSZU?UQ?iU!dmUvh^PmsD%_)EjC@4MwY=0TD_B;)V`+D+*&mUV&Q>Js zQuMTrnAO%sNUHu3nq}Ta?lHCAg~7f``o_!oe_MgCy+lz-sZ8q*(`d3!JX+)4m}0MW zsW)g?s@;i|d(%F)v+;{v@|J6Po|1=guuHE!JVMaEHpt9JIz6#WuiafW)+`!Nt&gpB znK<{!>@3s+Yeo_>dDf5C~z z$Ov4FjRcI-qRP`-WtKte2N?p`zl?T=d_;>YBm51vHo)l(mTPQVCp^hL4J`J-7t?N~ zV$7)fr44H*gVjvT6C6?HBP?_{SoiyTn;Q;kYvaY4YaD~beX8cU?V`%RMy@Sp9i9E! z4+mPDzFgl~+%6Jv7Iru}3@dAce@m3o6vD($x;rw`VXf}9+w${mH0}9$&A!7j^8U}1 z#k#{h*X(V$##{W%Y!fXN!a~0)@QW4#E)qh=K+y{3>tdyGgnEgsP1f6+*YnZ#TQ$Mi z%FwG){c8sU89L5#jFgut8I$KNWqQk7q^22(=HWiE>Q;WcrhbWV)vTg$e}rnu*JmW@ zm5q{ae0R}IzB)%k!P}jqZVnJt$SaJ!jY=o;ahF{x%G})jh-z`MIKeE&W$YNsE8t*z z!dYV_`mi~N_;~n6dmFp0wz%H1&e?gs-*5EHPtovBO>F65Mc-i`6e|=AHYRrEah64p zb(%Z8JG0EBw5@8_T<^8oe;U`L)?QsKj@WyZu5qrvYsgv`+ix=oHi!!*W(q0c;nNpj zR%wEbj@ekcOUgDdhNe|4_{iqTMyiWUTg2t!Yaq(9Ud3Vzb%@5x9hvR6v3s{TVp-)= zd4HX_S8t5eE7vI{w^h_t*+)f*3PrN5u8rw6UT~qMrJa4Ej>oybf4kNeTQ2Q10j4vH zg45rl?oO+Pp61x>?)f`M3nK4yu~5t5+(PCV8T;(U680<-YTPU{au_J~@hxE$sw}of z!0lvgzpFPCzb&JsxY97N&1hz9%rtLStM(pR+mh8ZvAkH>oZKPTjhfXjK-q+#vDTvN zl1x+25}FKUijB#_f3(Egb-`FMQI*HJiR#e0ue`~`B}nCCvpu=iJ#03+{S}5gN*k^) zmdV&=F$Z*>PRVD5u*E?&SfywyqO#9H6M@CZV=QrjA1trB-N=nVa>;k}47 zIWV~|I=MuC#HH1r6u{3nFD}6)YrIzC;;YV0O*Oju=H{sCf6EH#MUu+FU1jlaVFE$6 zzjC+9V4GR6oJaaBV>^W!^cE((#~{ZQVXa{8&QBNUnA_FX?QD@>;j0pjHn)jI=qt_k){_#FQ1*J%71H0AvadaATccZ(oOxo5 zJB7OEO$#w+e_n0MhRcQB`yjnpqLzM*PZv3Pc3*{#exJaFkTbQ!=`b+3hd7l^mqOYGEaF18;= z*Kx$iy}dExXmE@#vUQt0HU+k6=J{%lnr60HMm9FUe6rtdI669&@B{p0VO44#@1bG`ztJ%N2VxyM83J@;VS(dnbmofro`nTsJ28WWoM0K zgN|&5ddOEHup663d9lQvMCs|z2d)c#5QzHqEeRdLzw|Yx^gI%(8R&I=ta<_ZT z#fG}Qe}Il^lD=HouuOG~L$od-p{E+raE3P+HpbQ~FXw-v?fbnP|5p=P=yf$3o&W0eCD=1BYnG_W;sWMYl0z_rRC~7oF|;Te)MIQWCPr!!BT1d~2If%O zReZ8>A^>a55db-`G?V~(xm15=<-LJcA}gR#+xcHuclA~-3}x~r)dRGWLj_1aZ%+^3 zf4uG;oX-9`9lp>!$^ri4sZj|LB_vTQF+nOQMJ&lM2HmffFv)*w{#ZLFB*;iZyAb~b z8vmt^t;jvJD8F)Pkey%9{l~^y$Au*lg5fYHD7m z0Zzh&K&M4Jw$j^Re>~6Wuo3WJRA#7kf6>|Pw%Rs6;M(?f9on2xZ*7Zf&6`_Uxz(o_ z+kv1cLumzCYpb8NxB#r`n+kg~_xB>@|g#8!( z@AR11>9Uj@C;nX&p9w$hJCZ7Bf67fxfBWm#`mh7>`-nrIK0+^~{HI-KOTM&sPB7vD z2~m}r;r@ryPq6A!Ga<5=g7J$RDhz_?UZrJM2X;zk>EL;HB?DCR-y_1n#&`cgTV-wi zyb936)l~EQd;kzvwK``&lEMH6MNa#v)`g3DI_8a$00#EntjPce9{81^e?=_YE8?~L9F6FyRU@&Tt zWth6%8kTKJ{tCB*Wpui`oa7=B$)SOu*>KHC2L3BsJhefOqsE_gAry8E4274A%C5@uYrT#_SuRFHk)5&m@_x*>XBX(^ zb@{%%f5)G-)P8yyj)$M4@9AqaS>BegBzLeR4ZonHc))e{jn;(e^lf9RG+ApA6QiDx#>Vq@XHgB2plUX-Fcfh=7@>iee_E z)BI=zm`JGF=)j+hgsy%M$$83-?%h)*_7*yI|SM}Fho8x>G z4^soVfuXb4^?}N0dI%f#SXDlkKLb+nes87DI|AOfSP%kne|qFuG)mL;=6-QU!wSMOOxzF$P?;o7chxL}J!B8KM_4~hNEC0_nCZ5kjM@5RV z`hTC_pU$8Df2Qbh;`6ABaMZV58orF#{%!ubP}_~V^wgZda%;1P`qDFL*YK_#9#rmT z^0G;K{|oi5HLzsi*P%Zc2FF_`H*td1;bgUc4>h-^YU=dj#!pAHm+3oXayurB#3Vz1 z$<{hWibdtGfo0%O?u7&c0_x6}mo2mFbyy)>uiX$G-+V)y{^m?qooh& ze$^QVC1GFfxvu2JTWrs8Y+~HoKlG%;{Vu;(<&qaF7Q0*(Gw&~t$*ja%>=vor;kC6_ zc}{SwefLJ?0|mvBQi>tDvb)N8S#z)wkaG0fLdA>Wv*Vo^xvk@y5 ztyfzff0sZnoSd7D3sUq8vdSJ+I%1&{I&*wE0WWu1!F!2)nmlXd$G^HNN%v}|nx zvcYVNmcIM0Vd5pSUOtxJjdN#wjB&#;GP+L-e?5x549^EKW1y8`uiCFHt}pc1Yh|9- z6*Vt--G0~NB^~ci*4osQ1@6axm~8G_=VvT*Z!J_amipgfVvexA0}#HOBMe=7XV=q} zg0;!lnQ0y&D-u)ARr%)T*XY)G+q1>J)t>C-QXG+on~B@ ze?Nyim7!^2NM%HV~4_cc*uX{<_F?N1Q1ceq=`G)?V@ zWHGE*dnFxiw+H)cbXq0sw~Jm0=GDH1b-g+{P2kxcY?X=i`(syC_L0LMbZxM}KFdqr ztW?%%Ci&ZoZ0s~G42mn680#!8a6Je+e~scY;`-j(kHpHbGvw>c)BGDd+Z${hiMBr0 z+mRehnb{2D~l5rF~!3JUcz}_ZSn8%D6}}&e}yYU z%LH6KdM?=wkfeWeaI99Dp&AX%ST=~s*+`igR+)HK*(()#YU=RNzbx9!?{0dTgp8M4 z=6JKkSE2)rBy3~j_0_IfMKSkKn%EbYXy^+AE$;IF8nMM~y0d6#oND3H+Hvm84i;uu zYzqX{V!J-oIRvmtS}QlJed7^_f4!}Chm8PXz7D1}g)0U9t>VVLeVC-}Nx-o?PfAQXM+()6@xs?^%UA0amYVb; zXumx@OFmNImqtG~+9w{GulFodiu3Cg-I2b!!7(*tp0P((p(ve~N!Olie$ zmSM2n9-vuP*|1LWcN>jr=YWo}!bH1ENuAyW{{wr9q0HW*J94WU+3mJD*ZEvKy7qmA zs)hlDx!Jl-mO&4hnU-jKQ_h;hNg;B%V()dRr$|`_srYCyXtm*QFCWK6_!f+A0=*+< zj+DyXY_}#`vxVt(Zv%D~e`kmrt%`oy@6CL%om_TBe z@^mo^_@ZOI-lh)D(WQ`vt~yK0OGMvep)q*7WulSUrgCYa<+)(N&$rG_HoHmJTccT_ z=qImuykmxSsv&`j6{b;+WvWiL!Ht=0!7jGXI%e2yGxSg`e-OufSrvJ%ytlNo(#|(8 zS8fZ?lMh%%CueyGmZqr7s@ADE+UUVei}jkvT8X_+ysc@rP1;{>c-@qJEL$_gJCoga zLxs4_N!}jp^KDS}#G%p@QkHvEBvb5_p>^B+SQ1y)={6X9N>Mf1!RHul;qvIDD-GSI zEy~Z4qOVUpf4R(BY#Dn^ezyMODQ;eJcY?UOJ-^A==_|H6>@(A2lSE6K#hV*4hR9X+ zD%h^ISsGSL+Cu{=xlCVJ9o?V}qP1X!_1%NZQ`?1SClzwBxjD78qJh^o&tS%~#@y>R z`#RkNt>NK+ih&yXIv#+rr@U%vwJc3e@mqtn`ASj({lur>n;)rsj~Ex z9f5)&)`_=OVhr+&e@h&tkoV55#XYq(E`MgBzc*xZGd8<4#eM2rNVW_0+Bu?f$sp&Q zm2{@E!baC5Pcqc<`-gsETH{3n8$AmO*liZoSe@$*4i7(gTa#Sn@?o1E8d$Dtm#&a6 z4p8^jf66;1R`l6I*7b8_nR9%^S6Kx#<}!~56!&$AczKzdv#k?WXe}J8RSktqGlc6J z1?93w+H|Xgo>mRgB-kqxFYT-iukb4?n2JQLSbGdSY!$ASN}3JT#(92h?6Dc@< z>o+}Sx3JDTyE{rVvsS2zaN<;=R9#M5jr zzFY9{OX^lDw)iYte8tsdj#c_5Zdt~+9{_W&E>?R*nd-@OY{cVfZa5~?E|tDD!Qf)@ z)(6?eA)%X9U~7cN$lfawnFZH-WR%U7bhC|}xGyx=RBAXj>eKus_FdxJcVc3guTu70 ze{{~&wo3S-XSHB$P?%e+^h^ZDw_4dS=*Y>Iy)n?=?|R1tud@`@hlK$4%!Fj+)xN4Jnlb)hkL3xY~)yty(fH5^!BU_FOB`V1?b)=!1 znqEdW`(c2uv)0<5&o8WYk)dmfqGEz#V3dNuwm;xc8$WJ$ zZ?)+2t+v^mU80i(l&{?5+%YcJme^aWwYhrj?>P)CjQ)4{o4tb<8)%He&O7WcEq68+{Y0zs*5+7iW3_(KT%viBzP8%!B7VPPf4c9h zb_a|Tbaj&&(D1$0U2L*fEe6d+XTw@8c+7jf(+Np&oOHIYvf(vS6{XN@E@?*2&zmbm zjDx#`UJ7-x?*Sx*BBJ8)EUyi*Sd10I=)+sLS=TKMkBzrTK?_AGg`0fKFkYQwn%`NH zqrJ)s!Qu88_SNOV-zdhzd^lBWf3qx+kClojXeXH0h)w&gqYlp5eWG80vr1qDmG1>? zw!bxA7w_*ZHn`f;>}~HK6JT+sxoaGQ<9!3H99k;@(#0nL$1M89<#wz)TxIeL?UZ{g zzMbv59qpnECuX47$1*^h>c4QFER>9n zdkvP5xkWZc;%{hZWy>pn6uGDgY8w@dT&-HUO4Jm5ZH4*a-e~TS`MA}~TWyn4a2qs4 zP{y;u)2=*+QYPi9E`ELzv5yf;b$qBDDJrTc!nq|Mc(5xpM?Sti$D&ce^YQqi=!%3U;ghJ0;(f|?2HlH|k~<{GH4 z?vM=-5zI4C0ZH47bp-<3n_RnwB073u{wGN!-1SD?3zxUh;bPU!f32oua5*atwlZbz znS#YLWw)K$VWQ}8dQD@?#x=fj$xO(@e95kGwK8C!Yv&JJw_h38l@^&5!P>oEn25Ma zN=jI#@UksWP;Hf^B^@D~rZbpq8tiS;8$|n$f=!v#+UXZ)batViqO>^1zc0B-U)Wsb zZ1&iTWezdPn!LK%e<;G}%MjZT-;HS#`|2o5wpEW-;B(PlwHH^TB>hZoR^P9%WvTQ# z7OP^^X4PwTI=_*nvqU|73?D)TM8PT*JXNE)fkeR+Qjnxn*TAW2sT~x9e`hc}JxNcQR+lVmqNvGJEDO=vL?eECfQEf8`MGFf7!t^1kN>llc~Q zkTb2_t>`@NEIAk!a9%fH-!byp&o5u|S@iLKC);O0*~t^?Ak+uncdy9&eRdyT!sK_4 z|B__R*q_5`;p1k8Vc(oj;^pPzx5{x2Yl}oV<(Nh!-pWD$KJCH&hO~Cxk)QP&_hAE2 zB3LXkf4XJYfBj13oQ#k^-C;%uRcx%vaho%q7K{;7RSQ=$J4C@iRTLpb1i-r6XKf1E zZhzFD^jjx`QqQejIxSlVa{6Nd!3yfjDkwtPV3QFN_tLFeQI@ur%_Lpb_JJ_!&4Z1q zB-+?&8g3Ag8Bo9W^0@vq2Hipu6cCY$I2SH=y&TnRmjrsC6n`ERV32@HB47MQ!+;j1 zg6=aqwaB7XM(nm7xDe^IOg(c7Ss;WW>iJMNBQs_QsihgJp%i79CGx-GS^01&Sjwf~ zEg|l`)r%ECaIL9cb#_V!?|n4iRF#EfV~Z$ALW6}(Hqwv$g<1e*LhRBV=%6i%C;~Qj zaRjJQlCD#BK!2oDDjKSany7#Bs>ujYq9Bs+?X6BpVorNfWoY+W$j-JJJaoYb8>n)} zQWmHGd4vL-Lg;Uj>;-NVBBx2i7uOYJBqSz`%tAcwu(1XqQIj1zIyfK@fLMSuMG1icE1D$h+W=>i>?p&~Ji z%0WVWaEDjfw%ISG4DWn6x@2M9?A`0PP51vr)|0N%!1D9D@7iG)kpvigd0ZlRGpc+2 zHZg~toiLU#^s}}|Z<10AHcn)aypGLNS|)I*ab%Fn6eKbR#6uh?VxPSa`=eaQxG$#4 z#()ztP=7861W7O(sE{$`F`Y6TZ|C>X>#OHgReb8?tUvFyyZrF-?Bwq8@vLtlsAwUm zG4vQa)=wRLz&>#~d~S!Ev*iA8e>@Hi>&N-&?y#MVha%;Gw{CUYoF@~Xy|v;sH*1dG z?VQ=+_4?j#QhWdl1UtEqJB6w3;(Eu2Gg^>OAAfOKy&1gw2`_{%ae~FFuqB@$7H0<( zFpvlgK~ToTOWG3ZvNE6|wOb#xHcou`26yV&RW@y}&GR#ckXhEmKF`Mn;Kjt&+<$10 zoIDISc~5U3ryo3b;fTU=6nbQWdHy9&i#}AoSRD_=`u7Jw@&MYtGh?0OhSY2NqB@!W zw|`zqvCf$04*Z$doafW}U*B&IpV$8QAnX0$*A$$*MLYYtCdCkJvKcWbHL!3P0)PnGsnKB0i-Iih8Cgp482;JCY8Jq# zhi4?Jij~02DLE=Kkp~1j(_>0>-d%SKx$xm%a!tRZ#Z$_4Nfe-^p;~C9q@bXrs((g> zpePDyLI|M>LYf+-q@tuz=^`3i0Nd$wa4I=Db*i{^*+^o0%8vlP{aTtu9=kDVc;hf; z>XesJMt)_X|F)w_+SD4#lfG0#tOiBvru2m|s@G|TqbwB@mMs!Bg~W2K;+9>mTW7gp z#u}rVCAj`P%5;>CrrK3th(SP6U z)aBdS&QGLeM_>tMRz(417AxgRSSdZt5>1M|PQs|{tXWEd-JJHAezDx9mX@!4uvolz z-m{xkUdq`vw6!OdqPLDH)WvOyjVK5qm;)>VkuJuy(<%{Di#fn)~%o0)v!A=WZK&>+Pnym+70QM-Y4bb@)bp(NW zl^IaI%tWvll^u#;jfirgX-=JFVe-mQ%CWft%8($ZB?U;aCZ#kba2Y9Odng-IEVc`h zD8WRL6<)*=W1|ZZ4zwypq$zN#TB zSwxW~D^_`GR7x!= z-qFfcD@Ix^w6=*?Eyar#ymL>NJ;S-&hByUYCEN27yKpuPkLQ9IKc0XYBAb`IN+pE( z@E-dmUrPg^a-NgW`+304^rv3x&L;UaKGWa|e-!nid{PIhQWR-(yK}+hl!OjDgvsck&7&u zsRin+;+t}fKrsM+A(REtX|B-Z!IHvf ze>8~z(9FY7kxkp{AU$lz8phUe8WawS)b*^r?T4+^Ng~FA^J`d0wUkuU5QG#1UD*fL zE(cBN^Ld>^^k7dOPN(xfX3X&2|G<8&6hoQkL#?u%u8=<6Nb#qS4({&3-RP{59uxa{ z?nZ?YQ3XVS(GdlaKs5HP|HF3_R65(le>%r#f97vTy9dNo4lj0gcOl61boZR`Nkl}& zJm++OCkLajCl`aw&k`AJvn-WLQ(?~<9^*q)%VDqYGc4BZ`XdLskpsX1B|-j}aFSR& z&vSk|t6+PFvc?`4FQk#`3iq*krC0U;**Fz8D+PRI{Q7|gvm-e#CSEBNYSa{fe|w2% z3LQ^JCqd44frM22)04!w3;(ERzjCX`+vl?nGL-udkGfn-^*wAJEMXIGdkBTLigb1k z$n5b=tu=Lqkj%3aO3k*rIH|X8=00rXO6F>_1Hbb520+_@b86IuLJIR?5)w_|RH_7d zfoqeNLC8?N<%u}I;hselL(z+je`w0EGYEhy%h|hJU29r(I@S+cfx++u@ET{Y*9h>3 z!g-$1c^*xp-!1w)+UPDm2uL?8n%SXokY87iEdJ&D_pl_8dzVXEfe9YjLV*Ufd}RxX zcrYUFV>3_)caZkUN4qaKXjLRs9v_nZHlrANIe4=2NUOya1K11}0#;71e^<5M9UPh+ z8=S!JL#Ca>K7cQBMMyCoK+!ydHi0u5O?Ree5(=HC2hL1p5CnoEUCoqyjDp}h;6(yR zL8y`ngZfhr84gq8e+$xmTbKI}KgW0Wu*lZMG5wNmXer zve7$qzXNI!koEiDajBz9BC4vQiM-=e-Ofp}={LyLF8kN@O60Rcf4Nm9Vi-Bh3KvLd zXi+SrsYuw(dSTO~u$*LvbUNXodR~EuEVSBiggDNA%epDw#SBbqJEzCGb)}l(2Gp9~ z@olxOw%cyOk{C!yI!Ph=y*APY#Y5vPKS6;!LuuDyec;+c%^Ni`evAkf69Pc=S}Ics z3KJngW)go6WXN*Ne-8U%%r0hSZ4g;<=d-mWKeG5Au6_AEFMsFHAG>|F@5pWTU75pu z_wjGs8*>cFfO5NlLS*y5%Y+9#uNdCk{`ejrX(x>9^oIRkEkOy_obMrtcKoIG98xlF z|8a`(QmLIn!Hpb1Of0L1+egk-_5xtadVMlj03Zq| zSK^+0KDx6rGc$iT+eM7|Hb&a&# zdC?0K&XdgJ%L>(8tDwwumuEzXlc5 zmKt<6SgSs+>?hBlXFl)L_n>y|`AO)2bKO-{Wt+$Z^MnHOn-4{(1dDe3@67}C412bB ziNf})-|2DAVVDn3jI3#7m(h5dJ_z&k4C2mdf2#%St}zUFU|t!pGc#J2XGFLT1kv^K zE7Avoss72#@k4w!{M=`+ZM=DhU2*Z0K}8is{U3sE7#@6$^@o9QKWS_FlZEAhRgVdn zZ*evQ_Or%bz_0nSU!9xLU5bY;U*X+Q# z@YO!o?10W(vQJGO^aDoL5(e4&aIrc;K#L-iGZdjpT(Ve|41mdUGDlb-WB8RnB^fbV zaZ_MWa`rJulAnc#o&P8Vpa@-5EK3orf7zcISxz}IZc?_F5-6)ylrh78>&GLcvuVCX zSP00y60u@tVA+mJo2CHO>c6H@FNA*XU^E9Qdb2RDq+BJ5N1g^K50c zG}(oy@!hMQbwO6%!J|byqQL#`u^ykthNdF;fU#n&r@;dpu@B1O_`UL%%4-KT@4z?!{{{%DUXhj7S z_*-ojJ@TD!y2~8>Gxk0NI);^7f2QHy>$+0Xsk7T+zHU1ayMJ$&jCB@gb~|tI`vPsQ zq`bo?n}&r(F!$Pv`D~L}3BP*k6BI#36c!=|LKHQV3^4vJ1kIteHYee-&wfa@p3u{{Hb#S`2qS^mdkG;t;D<6Hxgc-hcR!jOf_ZL#X#}b`7ioI|tQq#6 z-eiI_MXPFP&Y*x4qZIs37ng=dFT%kfw^d^W1fSV5n`X)pT?crmNPdGP z?Z%0krfhZI%WWqmV6zD5e=DX{)t6bQovMl=rirSCsR@dzF-0!2+e>U+CJ@v#imD>2 z2%@k?L`79%qG2;s-)X)ZF?>4QIG|INm8hsROw7tEYcSsJGX+5q zl2jEFNmVpWR@{c*W3FbHoA%|dVWWnI6i0hwh4>$>@};#^bO9k#fAUx?L?ERDAx5&Q zt%EUNG*<%1fzu(GU|9tWgvJt+D2l2Pl-6Ox9<7r>E)im)yQJ?&V6YMnDqt8ayGgV( z*NF90Jct~C@py1Z!3?``skYf`*3i+Zzrgxv*20Tz+-)d|D5?%wa+A2gCvQE0-=C0u zqP|UOs!A%FC|X(?f3CK$bqx&6%wYpFk4?0h;Y?4eL%cd7cQu@3c-1tD>+2kDivaDZ zd?l-CER#baR!P~D+)qAx&0A$l6)L4U80J|bl@wAe1yHuj<4q=#ECtgccOf94mc<(K=*-K}WWqmTPXuUVVw%#(5-J&K+d^sQwBbG9HIvPWPLp>D~>->#2k2 z4=c0oIq1;y-0bU_PevD99?j<0(MQyg`R@l~^Pv0zIKB6vSHV=gbL7T^4~Jy;Q}oyb zc_*nTJ0;)Tf2vk}2?P*YwfwfD(k}+Hq3;jho(IMolgqh~)cPGG-SP?1o$OTFa-32)95;k!8eaFzzy z!l~hOe+ak%=8*A@J$~_ac{kkeB9{&wO%Wl#Sth?n(f(}n1FVy4>O~a19;qit7Be%V zD0_FB(7t&*PLBOMZyYye+IvhIeTIr5*_|Wh*xSBY<}XheEoVkZMluF z_PLp#rwyxg@zU@h>>R1GyUyv*y}Bnz8D9(y@Pw)L5*)mUA9S?GsPQcThEK}YI|3xmS?CTRa_e}!spPx$9%*TE2vmX?e=s2q zz{!a^?Zjuo_Jj?Mam=z|S+@bQoK74Ab9T7sGAUj2uyw@Vitm5~=OpdhFk#lpbA=?L z0XdLB4t#ZxDZ8W6<>Vn3!Cbl&LJK+sBw+&c0FyA7mv;^YHN{7$0IZ?Tsp!L;A9-de z4uJvbBIe{7Wo^qA9RED-&di}yf0kxtWmZ=jmY`yYCJj{02(vE+NMl zESd8x%Q|(_p7`ve?wQ;k$A@UT$B3`I_m>38vIG(pz$_M{@I6%cxR(0p$i zHh3M5%fwVYz&wz1d55>`e?di1K@nZ_C?blYD4`#~`ehMhh>C)P6kv<0QA9;W9*q%1 zVnswyQAJS^Q2|v&G(wDsh{X}cQMI&GP*g-lDvFYt46>+}8mTI#8L5~l38{-S1}$bq ztjcI&C}@geilrzj>sdt*Gc#3FQBx5`6(J)NtjdU^e`rG{^GbfniK48{ zO&KCl0TKz}zgkfOn3G!7l+3+JqT0e{iKvQ+f}=3TqG&~miq@8vwPPKVGVak=RCuNv zC5^Ngv1_YyO%aI9Xfb_c5(}sSRZT3{J(BvBs4*sFu4RAi=U5rKj#+kNr(_#-o_N3A zPzwt)QKiI_P#HxWNKk@Q5j1&plNG8UVDVOJ2A4*xwM>Syx)RGqnnMU8yWMK^{Up(* zD2Nn{F8?NYch3wDCL*FLqQ!`!uY8~qPhtDXw*qEmv6pa>pf7*DQB@UEP(=};Q1ia< zB$r5gVSttZ?VC_Ip@Z25+7N!RrT}yDp)V8m!tb+HOTGH!S7NR#er4R5LahdCnO0rP z^d*fO3$1s(OCojKD@;`3CP3iTknAToWxfCa!Z$sZJTmBEStY|xL<7WaI|khtO1dMC_&hmYq?rb01KH1JQgE;+Sz#&*cl4v>0(5cZ3LoQ zg`f3kssA--l)OLpP>c!y0Vu}o<&nw%^}(7`O47K~4`?5;rXFYi644v|WtLhoQF5fv z@BP7%yGdr>7nZ$)1;k7#ctsYXvR+ka%1yuP!Y@r3yHXO%ygQWtxOOacH6RwX9j!KS zG-roGg)3KmaY>|VIja!pfn$m`2!v8;GzE*GQb>f^Sn5$OQWngDxL6@!Y;0ttlwG5& z#!vfNm*POx$tN}7WY8pTtktSlYhGvc)ZR z3eIAh7Y;V-%f@K$&fO~&U@Yd91%R>@iV(SFGIlDXmA2b$wxTVxwHrmY+ikYmf5c)n zwvf!C$1N3AqAjB3%xy%qjcVG`(%=3oa)^y8#@fo%s*6<$Ybqk;S1x6=w$yF5*0z@0 zDpW1Bs?{aTaK|yCnAEn?w$j=vHh)R-O}4+@|9$^ottaoGc43)ih@7@*zHPR%Y?v%6 zk)w>JK}zI>4qUnK?c7 ztA++VJo)n&?P%ekQ@>Fwf~wiQ9t?ZMw*G4wgZodb{b}?0eT(s5kDs6Xsa9L!{^Rv% zwXg1eYge>Q9V6qW&rR31{NB{NR_eCrKV4Yi*Ke~=+{XM?q-F+n5QMoBe<3n;#yKN< zO_^4PCblwCxU((-S&XA2xD1UgJ2pdRy*P!;jmBAahZLKPD#Y9Z`tjW*AwY{rfAQ%- z*?+hU2B_PBzM20Re~>oV&qcShd6@?vD!RVh)i#U{1z2AEzsvWdAM{x(_r>rSvkARQ zypl*ki_5|^h|u0v` z*@Lg)iuTM||3Ak*@0YK$=gZ`9)l@+dkX^#i6j5X5QDPxb6b&$y1r$Cny2FRBvwjjt zN|s3_UiPBT?0m@cA zgWkiL?f8G9$C4pre}UiCEQY-G{5yK@b{6{mFp8dDusnX9ALKKGA^eZuPsg@BKG^wm zZlMtX_v=k_A1^85Y&}rY0BWkLg@)$Uc_s$$b{GQw-5Dv+?@t?{n^sCcm*^L%^ADBZ zCapa&{45OLKC8~RHawWT{=NTAxhg-!G$?U;?G)4Px5BXTf40yBY4E>?*<#mz*J3QvB#ZqqKU`D` zs<&LkQrR$iQIC4B;W?p=2U{}p54$g~e3f|ktv*+MBk$BG@W+>zjyCvi_0vX~ zmnmpc><`QQEVOmX;*7h?*)W{I3M1_YU(1i-m(Q1if2QCR*Wp#vFukwm=4!v;cK$VY zAZ6|Wi@{@T%P9YUUnStO>GiYiP2-B@3NSg>y83xkt6+bL6iCz1=F=7-yBs85Y{*i+E*pW(|D&MFbR^S!Wg z2UGK!e`Tx()uq}clr^0nxI8tq!wkd>s*SjLwR1*@+#$>88yE$Tngl!c;$#O_ygND6V8c<%X z3Yrio%8Ij7T_yvnkgB3vM=bP-XCZ{GjodpTe~_xCR5f0Xps7a+ZoEQ(<^vLHLy*NZ zF_(u*oD`T`QJ8}Cz+A$@p#=V#S0q|h>biaI-)|$Y-BI@^i;_o<7^?x{))wyI;L?(- z3bbb=v#I|b&e#PoBU5!Um*jq&H_&YxxY ze=bYo*UGIQW#bRKV7+lO34xch2OE@X^3_G3SL62i`5l?Iu`u~$Ar)oY>EV%hsn8W; zJ#qSI!JC!9O6GLf-E-jfu}dvOST}zT{<@6=f!=zL8l9P7PtF%ER7(@Fky^b-IVCfkLGq;6eSQ6mo@;@B2e%pqd zY!_J>nGdc`S>d(!TI_oRUc=0>=LWo^oqIWVyur^N)w! z?Re+eLTB?8ECK{+%Y-FJJhJjoe{%zbcVWZ&GnaOWAp_jWAar^m%W$Tf!G*)@ojrRJ z>z@-?92w=E`|B~;&0Ng-2Oqg4GqmC1sG*(Nb>Etm>=jqELZYgwswy4YP`#QQJC@ZH zpU74eR}RkRVv4k=6fyO%44rrb@_YT}`-kFp^Q4MNzG&{S9zM4|(O=>I?wl(qujXXou({J=0gX}k0`Ya)oJpSH!u?DY z#Il%WP+iB<%b;()YCTP58C4n-1Wif0Tx4j;XAIh0!d!%+g`$#xpbA%5A++iOsQ^Pj zyuYN>YV|`-zW0UzNE{M7Qqe@^d4J2DCS9Ie$~)T)R4BH@7VC`11c3`_;Ml-@paG(H zNz9?O5v@=h%Axt}NO^Z5Hz{HPFsuvq?Iz~DYzxlFA|3S1l@)|efl2Ejg`tQH%_K@JBC?cHN`L~E{2zX_<$rj!Qr2sa zs?yK*V!um+cJbDBH(^HC!TWGy`1Es%8t^)qXacF=Z)_Ap=e4zSti z%j#a3bPc({%~9|8aNXng{P4lUD}A`ArGxAbEFNb6oKEnKuDw&LeKq>EGAR;{c>G|{ z4qj#4izXVe(TSmPm}v$};eYT(*YuD`Qx;gpnDl~ZfN?9EX#F;o9(kBzC*TEeg+Wc> zoM9(*GdRQLht$p#>J|NXu`jr}g9YTXhmQP#mKU^NcCo&hel9X~c>`5iO@97bwXn=( z_}7F#f56V(SAG0_s-wl&a#alQbw&S0g)&#!U>$SrqF+7~y}v)?hJRTvADlQ-cwO1y zbvruMhh4{2Jy<>PRUT>I<+0SvGkWDT)AruJSyfmq9{gU4W&Qc_Vp$)c!JeEruI3yy z+#VjadE0ejSB;u)duhaH^5-=V zRQf0fK31pFPtw0XnSW6H_&_eNPOb#ZelR2laIPjI?EkbhUfl7V?{LkHM3Mr2;|lcs zPwTqfVOd#URuNNX3oL$_cp5dW2EUtX!kPk{0LnoF0><+9n}AIV(w1TcU?>V|63h~n zr|C0jQ}}DjXaqqlt0h>dD)|FF6d#Tc6=gIOr>TSY!+(YRFtDlvsD zr|8i|4N8xvXV>(wjr4*=3YJ0iRshz!Dzd*ZPTz3VmSf0!zhH?s7zjYgUVtNk`eXz1 zzb|TQDP5Q#2sD)i!pRzPLuEJx5d?075f zccWccKAHYX)-DA%uHnWXdZh&lIv=!>z#b7(x&}Z=w5oIF+ihkF6OO+J7`oq%7?D&3 z?qwLdJMBF7&(NZ%pJ*9CjA!s)&#a!Wv!{RxezVaOk%h>Aoo<3fMad+Z1r7)V5ptJEYGn=ifOjwr6K)Oo)d>&rKv1kqz)*x0Dl-7k z37G)NnS^`ersK?G>7*rjw@qGG?%ig)j~K3Gxrrb@Ae&v)>4MfU-)sSbfnutZ2&ew0 zbb$Rv|9|2i)*#pzc>XjSCKIlysQBQ?pN?~Rw_*Q1E=}q|Q{!rXeh<<3ZI2Izw_?u* zY{0bG8@~xq?|#$e)(JTLal@{vJbqKKf*632|Fa*UQP8Q2Q~2>8v%l5<1>mRt1%^l< zY(i4FVPdAglE3Se(x2W_8I>uw=%~m2jIh*6{D11bBRV=gNA$<}n(JK6Z*Hdb5o1kq z-Dsd*%pehJ$f-wqMyuK?Sjt+Wtf9O^4XU)#)#*nvgw<39Y|FSKyIV)&l@uv_-S#5# zfu}m&62t;%D@I0@O0uAbh<6=ow1$azF87PWrkGYWB%nYIm;9_u$&VLqn#gh_Xi~VV ze}A-U!$znePkos)lfz)zRLZ4IiFE@6GpY?p40;_nTU&;;fA~0Aq)2-Lyv->v5RyQb zB~p_#rjiuBR|OT6ThUS86-x*qijpN2!ke<2l)EZH9jit`Sgix!wrywujFjT?_oSy* z))C3(SCX=7!Htd%{KUTF%Y6f_Hq_Hee3wR}pb&qJ-QRh4er`#Ht*TdnUAVlq-K)=$ zH%k5|g_N9<^j9fz(>4orqH6JE$oevVjJKmP=*#*u9cd@q5;YY_RM0>|*Kp&xdE$NL66cO4&b%FACq;r&)MjaiLw!?y6gtsIsH zG-c8omWH7IGl}Ba37x+@#KIEfTTyd;DE5Pe}`RaApuE$O;cc)G~&ye869jVQf$a#uZnVtZ5&{yFA>Ie}Pc-wtv7Bu>R|owzUnWzUzNy z?@&+o=J9V?{|5S3{<);Jg}=GtpXnDAl18rEZ8O8m8I`p(J|r)!#rkh8Nz$HM%S{Ca zr_Ac~==iS|q;ZSU%o!9_?X=Hpc&^s(-qw==YRu`(KhlSLLy)arR^Eo`0K4-G5zkcPMZ|2pH=l6N4a7^k+)Urr$&`uhfYUP z#~%6%vMN(=g%#7tqO8-Nv!31%ux(oc9`&OudHQWSGXg;%az>+~0KD%_Ya)O6?({XJ13fd^qaG@oX2$(TxtCa{pd^3NpQ>i?sYH{v z#kI{p!~ZJum!v&oT7^MGgjWOo3*NJY$whTifr^ALcJ)gr882NI^aZb5ghnvL)U(#w zfUPyCR6lG5bdPpZ0j|6XPzG9wE9w({KgIC@1*>cfuB1sG=XNlK0V#nfKM)gn3oB<( z*H;f`J@(%n*5F%=j^cjc-ze6oe>*?%~^q^0j zNB;Q(Abb^iz0J*)QtLtYK-S;vcfk92^3&{(r zDi5vEQZTEBz0!Xkax=0LefOWZluTVJyWL`>dF8-woCGS42W^;mX6&|hW(uW23ZsM@ zoK>y^SRDc{+Ghc=aEV`80}T`d5rtcdPr>v~0Qr)@Xr&PaY$=Rahj$4mbSmh@(!2#I z-UTx+Qa~tB6m67Sp$ZtfTvQK+J9E`#J7P$v&%r2<+U0)^MqCdh08X)S>I;C=^|Ch3 z1tppR0zNI-7(C~F(vfMp^=PcBMX2N>0FGn`D6j*V=^r~GAwhZR%Rawn98LpnlV9)x z?VUURT8Gxj1%z1;KsS?;Rjy0Bmvn&=u?Z1P0aPZ_gp>s$M72uuz`M1A#7KfW@hM!b zt>l|sFF=22zKK#9d`=nS=-A9Ke}Z9T4)r;z0Gf1mF|CPLdqLB-cp zy-O+1@3XC;iPf31sHW1ws_c`|*n%+Oewr?JE$$2VZO!1rI-qjR zhJ%DMQTA#H6jbD(XEZYJxf|A+uCQO-SOBBE0!@EAeaZ)#YOl~bqLF5m*V(3#CDH{w zdjZlp3dCyNn4$WRi#7ml>(1~7e2oCAG9LF^_*Ln@bZzpze*Z&lw&AEl$|-C=e}+2ow_D--?gd>e zZJjIwQYQa)+#_tf^ntVtT=V0PJ0ryxWGR1a>aYb7Y0*Z68ZZl~*1mvqvWhgXzWtMR zA2Qt<8npBKdy0>vb^IPms&cK+u-!fi#Ta$>;5rlObwnLaZw!L4q6QWVHQ0MyK=gI7 zxV?dDBEl_eN=Kaa0syb3-kO1}!q*BjU_JW%X<_*tcB0Mm)3;r!2r!sWkTUkp*baY_ zzWDf>7to_11Gz**40?Bs_4XKQK^cVuSSzL#=glGM1wmAWrmakf*u{l&e~Nc8MpOU+ z9jN35+h{{W+~FtX>CT#s1m+nqPgZTHJD|6sjXHVh z<`fzYC|IIcrMRM!4|OD@hT#>wVH6HYNj_=np#mTSU8z<}5y6s4I}!$Ofzi8(QmJr2Q&XcEm@?6`4L7lv(@g0$exbAbrv;dfmO*U%@G* z(#Z!>0+-7vl9x&b(_f|0Mxf|+Le?)!v!*~mfZ(Kc{{R1wHHr)G=*)kMjb}$<;Y@yZ z%#R`pBW)J5{@eZ!UM_L2sczBP@Yw_=!4MC)xQenO0XtDx8#}UR{tyAzB;RY?_wl|Q zi;I~6!~(Mt753;bfgV1b=DNf=UQ-T+-3&wZfDXr(Z4C~Y!iM~6yHbUQeU;|iA(enh z2A5xP4C<6o3*9+dO&Nbh5EFW)}exja7_mq51!?%)cIH9a`MX$Yy^t`Tcq!0YXZYp1+rW z(rO1m*F4HEML44l003n_JGweTIP^dHy!!pWKX)46$|)aq7JeT$zcr=51`ELU#u@dW zYbZr!@>OjWZJM6b?nnldqSjzbJfmS5F-#-W+LW5gT5(DcW*Rw%BpWKqs;O1Spd|;m zghBH9xBWUl0X~1V8-A0&$KTRZoNL{EQ>yQO3FFuA|93{#o72D*i!yd(k8trp<@4=;`C5Q|1B;z@ zRHY$h*%MttTH~S}QxjSq->13Mbkpd@+ONT_h1~|n>-xbz9KxcXjTJFny*fZ-uWnb9 zarOqYS|5L8)=oI%n*?HssoZ#gAB;g@44H9=BpufjgpB-%K^mw;CAbg)G{vUzd$80l zjRXK#5y$-%#3GF_1+)S0mrXA9u8liKd%bz@U8OIy)@T`By=wD06=dXIc$)oti;%d90F;m0)S{V>AC8H8?9){Z)cXC_eMCbrXiB0?mQrbkDca)K%(f*D_%0w{)(MrcYBrlOJxhy?Rs#34zx z1u+p62b~Zwaf9OF^~wZ}l%Z7~!a+vu%-B1&Lw}G|HZ8}#;5lGYGf~3Tsn^r)ealZv z11EnQyyL)oKx$c~f4U7?41U53H5u{q|JvGd4@qXvO;@M2tHi`8=W7a_&)?>;d7nLF zzEts150B_K1RH!Rif@y}_})jR<3Bg)m%3KE{p!EXU&HTo+fBXLK3}Sr?6dZUbK5`k zn!vtfXrODCnQf((63hFa_Sx#C2oN1!#9@CBh%51d-k8v{jm=OXh1_+?5FN!xwH0JY zLYFo6KJImV5Ma?U_ZKRtSfdj81{GU7y2ZW}!3I^#!Kl~F7+lleu8;ss%~(hty&TLb zQjjKwBt3eeFpL%}eiRv4q~zii`(hOKQ3^3;Sf1fiLa2Aq7RU_S;4Ii$j(X1V zi>g7W&ADwk*el>@SF4GKO6w0$%+ErgueNqq08BGWrn?L*-GHf*tVGJh#=e7bL7@jb zorGbJZHCEvGS(p8u>DxtHeFSiY9xRB*0md6uomPqWrp=y7$I-XPtOBcy=C#YyxtTV zwoOqYa@@szA4B5#f7bgP$NoGHcs$Ix?>YD1FP$r%v+p@IZ1VkX9TgP)mq*`!=6}om zm9NL^mlahKbf(|VLt9!4Wn9)>Kg_%xR#D13AwS{nwl$N3b67-8S>O4UeTRPwO72;) zb#Sbr+ z_%qcS5cbNj5LAwhhim|a_d>|>H3Uwyr0I*qR(%%{5GMC$XrdED!iFG*Nf@E5|1n_b zXeLE#PL!a5CKhg@5TJzx95AgGDF5N8noR{7lMOd;uSi-KCiOad+0K9O{x$NsjBd+A z#*hr?%%QcB{roMIF%H8qsAsg`{2VDFl>Udlo|vFUsxeBUxECQUm;+iVcv0~)xK^|O zzgulfPB@iQfC>>xKtY0bVcOkU zAnFZGiS(gR?qtrGkn-49`W=9ie6ewOrs@NuAwm+&#VOf&HYf}xDjkhH+RhVE?)0n4 zHx_WowwvRk|ApJ6)^B{EVQq?qK+~nEMPB-~Zo5_5*x{#`^V^(S_-Wr=*R$)-HEnL_ zwMX6+#05x0tkHkPJ=JEVbyCW}S=(nC*ZsO!SDUY2hxq!h^t=8*Z0g-Wov4F_l26quG~e=^uIdV-8O4L zrCRSVnVmL8=Y@OT@9>x{oqe>f&I0YW&!N^Z!$xKpATF4W9xrv%Uw>xa>oz;pYGi@A zDYQ|-LY#lfLjB2rWN5;d#Qi<%@UUD{uPXU6WqM<-udAfFS7grfHZrY2aqHnjI?A?H z^ot~fS%=yH*&12+2kP-SrMNp3}8+8O+Su z?mYBdX=|v87Oe<%y(a&3UbbASO!y^$2?GQNxIurox9YkdZmU!yls`%O>gwR$=H0e$ zfa5!9VC?sey(PBYaJ^hE{QL(u15JRsU`H@u#W=!>aZWk{oLj&P?QA(Is2JyGrg(v97;m`3F=w6L$^DPdcD zB3gg=2XQcv0Y6r!WCHsgc&Tc|*opWB=Cz#$f9ZsO*A*A(1HdtVrSQ+9|Ec*9df`j+ zE9*gg!-M`u$*t;S_xr@D!kbpn>2v*GpkpK0Wp7jHeFoc=vKYwFs-Y_z7;Ul+Nx$+~ z^z~Kut)0o+(Q5eI?mIJqaoCLgk2!;6r9ywhZV9a?mQFfqbuaYZ4a=YoY1DbnMB53s z_kKG})LH%Xq3knRXLpvVC4xjj4&U%6hi~sEQfz<1>AZ${HehuN1IM4_Cd#U+rqraW zlAw~Ryu+ueRBC?>aVi0sm!X$Lt%YGd)u{b7ljXkKdd^=PIN6`!kPj`))jz;bU-o|+ zXCzb+1_k1u9m;)ke-Fp2)OD?YQ#AlK4J8O*43LEWj`cN4#G6BBQK|>il~oTN-7m4JzA|Qs)|)MpHhFC(8UodIoUIx4#0YpPzCA`QC6aW$pE@U|Hs1_ z{Vy1!GMzGl`-^hls?%mq@404tOP_W8E^^%DB0KjtZ_7{Wy??A9U*7#`*Z&WWspsUY z+rvZOV!?TRWEK@zK*X$`GwamadZEV=*0L6C?=ly1sc2pI!#3%5>Bl&5lVpFDP^|c} z6(j^S=<`nu?LBukg#4Z!<8K~QqUNxN^|ki;9(uh0%J`;b=bt*sd4+o#9K#I3Px->i zEj;ca&2Wc{zT|z2U^>+=<`C3b9TWnfs7Pjnjho!VKIFO}5|4Z&)jgj+T+Wtn-IWzp zR(8z64(}b#k9eF51&1)9`ni7=R;t%)Co9{xcJZH1!+&;i>Ikq~zS`hyuEqVq-S%LO z?gSD+CD+WTazos|4v=Rd_em;-=>p)tgs#k7q0>z^Uu(@>PPW*W=*l4-$vt*acNO) zJbZ7{%gfh7Dv!05`nG@BJMw;hd~y3A;ZB2p4@Fv|dJJTcz*IT|fE*x1E2nLA7XhS> znG8Oa8L1CyB9Eyv*#NKuYyC`@)he4Jjp=bdKqp0K$At~CFv!6W!5g8Um)fEMSV>Mp zT}E$%iDCJL0B};l)`j(01Hya=8dUb^lz$|OjpSsdP`K(c0)T%dB`5`ig}Vf>^(33p zn4v?iFMj?^?yux&;^P$_-xYG7b9}kxqTqWG@V3lQ5Gg%drinQc6QeO_L(>CjC}}E6 zYaM-ce-rK!X*sY9n$Balx(C;P%>Xu=PXO$Bz598F=!mD*G{=bdiQnmFlYZTE$KP+u zcVt`wm}Mk_0UduWVafMJheZjLw!>mW$u`g|;0W{h){_8A6k^33DDv(VH$aezi$rD% z+`!3{7{l7if+R8YqO5N$zWeMwU5KI^ln8*03M;51sw?V_p9c45&+l{|zuK&xUGn`W zP~Y$<$@h3~f{H%neD8khz1NA`t;fqw>9p&ls;LY2bQOR556mt}B}J8Y*|V}279iv* zrKl>-8-glh2YTJ)f#wIUit;-neE%JU|Yil ze&etKuklR$xg-!dO~9V72j0OgodT+Wt3VRRzfY~YKjq$$_zL;@sG_NhZ%&LE$eOZKsfOsLxI|9mhXT#vJzN#9s z$$>+(@d{IFf=pa~2LUapOHDLFzKM?uT$WB*3T$!N!1ap*PZ+ zvyXoc-nWjY(^_i$c^j90BoVVVueYex9& zxWC2Q#@KC2?ZqE4+^;vh#m1XEkHLn%&=~cgRa9g)~46dIu>%jltesI3bR)&i=RmRVT!1CO2+{z+B&h;L&X&%+vbrY~Ti zx~{9+m5LjNpkY9&LX|gl%?-)T;!g*oZFKe4-^H>!PV-A02%2y8f()5a&KgQO|)t5O6)fO_+D6qpSOuEQi z2xdAAwASAbkcYzH-OBN0F3i;@$!5A%)t8uQD9MMp6HO01?QEE#CZY=6<>D~;qc++z z2dJQ`s~50d9~bYJuNArPiap7VIVw6Uz*U-UNqjvV)ISuViBoEp;vO$*K?Hy6RekGb z7H>OX;teAdj9GBja&0hWG-;94;8EDp)c6%=xosnTFIk3>Xn3xQwW($^US**mn5G*s zc3Ow)tPPJqI{oo``dn0DN`kv6*`2s5K@wAnOBg7lVi|lp`l^u?ED0RFoZ zTy~3D@mOkAK?IR?g6jvX$TWXYr{(piseHAb#6eZSR$&Xn2L+rSJ(ZpqvamFK_`WGh zP%vTgwad)SNQPB_$E-uS%)3!hiz!{wLh7QetyY>yZ$(-N^i`k1c$*9Q`w&TxZi~ZtWW~{C$7Dd{EDYaB|IEWYoloxzil?xf2eX}>xcRMs=|ro*leLd6&I z;Yi2wZ|ClYJm={6Uw0mKQJrrNDxA<*2_lo?ZWP?o#|8}+2Q)kdra3T5*2i*BL}RH!1SSJ8nNno{9DG6iopGAM59%i4XpKD%xKnT^ol+-O}3-0$L z04_GIw1ek2K_xmY`nIs!+d!p1FVAk=zDT@$Y}*b=tsK%yq?p|R_vrpeg-XyWDtY*a zfB;&RVs2KNsB)V-Qy*UnckNBnavh)({O|a`j5+(exc9@L3j^)X&h-zEbnhp#)}J*N zYIJ}6e#_EoM1k=4`|WLha5kGC#oyXUj948nTo1$8@$=WGsCplirHkM6?068)MhC5$ z5&8RJC&lP?SKJ)W>`!@ppAvihK1(<(%I~cU5p@)%3JgPG1mIcn>Yuf>F-vHws=Nl@ zk!>71yd!oBDds}-^g(nWKCZ`zM{%B|Kt_KR=$~2a2h)K*%er}#u;-EW~1YJ1SL)Q9EpGrT78ocQlHr+)#Muhyg9s-!7a3D(!DfRZxrr6E)# z1Spf`fg%Khr9mTJ0(HN$1aPQRA`%nge^>JwC%7dtajLU6zWCZeGY<0o`p6Fwz<__C z@6J4c0X<3&VhS9WpWO4U)6Q8P`tbG6S>IrrO)N&zDcnjuc|$}}+;BRvC_VQMUfVJc z53sL37*g}PKFf}@PI3a6G6p1Ac{jstp5pJGDrpT(NFR7 z1P##XslGN%-*7*bfb-|f*YiqX@Rb@U3KoYNV|;0YE zx8lxPg(a8Ks3_EC1)JK8h2sH@W8I-(DMDU==NapkZxWmaHFq#MU#3o%YR8~0f3^3% zf#1w^Kq-(9v%5yUC#}L&7I~ke^TmrZ@_VPpk^v#hyXTSO1UMeh6dv7!G4xeva}ORv z%XsY)KU{}c3+IJCUwS`- zT~7MBB5Knc^BD=Zec!w9M<5y8s@Wh;-e*CR;bm90$E!4Ie4&^Ph!IU7UI_JB1Kc_V z`)SxJO%(@Ia6=TSO&lfK04NaxgLFm;s8fZ0o!|-gX>s4R=7C_OQVh`pf7rnK&V2fB z?B(z|UkqY?B55vzD z1Jmm^BQ=ZrrFG)O5^CH?_0Ou_Ji-YXO#8>L&ys+HRzQg=J&{-w@CWFJiG-aeKVDq4 z)6~qKXRfvIiYlltcpmUEnr(|q{yy;v}yGw>lK0Hg{2 zYshD*Js5FmGjm&K%Wmf#d%pIT>U%t~6N<*fKmVseTH=mE?>%`>{--;Y()!(C{ z5bi#}1H%aMN-(IUVL!1T&a(@v41@FrYmu}&8tvDv+Xl-if8B>c6-Ry`b3E7;_d`jW=kdpj6;V&KXK$$pX)>ArJsj)(67>XGUGzzXHVVwr& zm3|<7JqV}6;pv^821EVLU4DVcVbJlrvL#3(1uW&o4!zq>3c=&iT7*?inN{4n+1d-t z;}RzqsAy`ie}9i(vtF$+49FlKwS?uoXcQi#4TBCkEPDr0E=7lCW9*9K*a8EOCHhMX zUuv=I^+1pU7e!b~RaB~#8w3%&hnIvJdG8BxO8Q^iI{h`*DQs>A$?7ue-(lQrH@V^G z%<|`RiFoa2G&!WIoAvlCrJ`|}1K{v`kfAYs)0SHP%Ivnm&;9s_%aSR6s z8G+>K?m2Eee18y5bEBqj;;)dYPJ~nQvWPJzxIpF8s}R`F4%?hfzbbh5`1_9Et>1M4 zJO1&CeGDjj&<^>ZOw$0K^%!z^EV5L+^xNiMSWx@Zx9GsAcH@`Br{fMHPtW_O(EML- z;5zxTK+!5IwAgVSYV*~mvYDPc>kO5TuBC&QKVYbSR5wFgdmB__Sc!#IE0JeES)-R@ z;OAd9(yFvl6CZVTc4cCJ1eZ|EpfP{xXotN}B62Yr=>(t94YDLAjEI2(S69k^=^LO5 zDOv!Oaazd4Xr2OD98r>kl4Pi=R8RwM&J>Oog4Ie^!mtvV9e~XP-z&fgvH^tBLTRZa z*~Fxq4O2!?1L8pdm3##3mDZF%Bw~&-F?uN76d+`gfT4m^8y%CIUqdn~fr5W6LK-{H zj+V(wbU7lrt~gQr(V-J6DC!uJHCSNkpc0(JF;zjkhiQdMI+IIXoY9tDQdW!vxlqNy zBmn0*m~>EO=fSN_BBLIa>7%ZZTSBs=qN?4N3OOmc5e}3j)oO{977`b@P`)vQQ)j)T zN)ZZBO+sf!?d`v<&%cK=+1Y>C=1#a^763NEC{QveP=RVX$s4tX+e-Ils)s)}Tq2R% zuGBsTfCKqg%I5=viGRyx^eQgYD*so#2+R}+1t+07=kcnVN7B-6I37G|pfD_e{a zW>f)6CTOG)7g1`3@3KX~CMjY`)ts+2wlqtEb_zj5!~_mPWo=~UoYQ}d;39#*)CAXo zMnDt{P<9n$3?o1&DZ2xtkUZAIkIY~xL<@%s4MPYxZbwG#te$j5>XC5Xyj8NVlR7VUHafYW7x)NNhf=a4WA(dbtqElGnWSn;GTabUA;8nR$B@RfwuARSqC^ zoNXjVNvY+uld-MjC{wPzzUMgz`f}r!bhF*Cwx|Q+uTQp%Yz?+Vs%lU$wZ96GA_nKB z`i!mr{lOmD(gY4u%Yr_)!_+)x2f-9|P9&W6eVvEg0z;|CQBW4cS`%bdsIawnW^q%% zDv}dW2tp(TP-K57P=Y#kPT~dknUsc6*dR){=~Pz$0LibAlN_+?wDJ-%?#!gn2510~ z$Qhg~gji?fYRMoJ=%_fLxKXuEMlygJUW(;NWmYQ9P^yX^!I4$roz>mipci+C3QG|# zONL?!JG+qTETYd!O)Z2##R&>Tq)tI3q2)&+^Z|k><(_}3O=FB1l~5N-3={;CQOKwy z5XCLj1oQ(@51yd|iVBg=#d;(n(ZGe^gb1jj83zG?7i8^P^yL>d4mGGzXqKfAaUNXu z@C|kz&inM^!>359DyX8YeYC{FN~)lG+;z)9n1&8egD%LM@W|?MqMc&d)+=eg2+K2Z z+L;;&+P8n^?3fA>%#?^>Jh@Fy2%aJY>#?^zr*n6(^I(GtmjkN@%5una z<(_A{cSbP^bR>l1+Ls#9pt1rL$Cu90pca395S1bqf~7j}W-kYj0eH`uVi_6+SI;aN zv*7ak*Mv&}q;M)V+F8aD%doD}1wk7iv$(vhgsGw)F^3J=gttSZl1i(n*P_>;>cNf( z;cCntU<~dq8#BXoDPesyN3a?o0a*au7zU;jaEQ$bvZ$Xz*D5QjO?YGuP=W(!(z<_( zAVmQj3hMU=1-dUQgo#K)v9*enaGVMZA|RbpDI%QN2C`b#!-8P2AyC4qmLbSeq)I?Y zf*GNN8x(3d5>zOvgs}Bt*a#SuQiHcAJ9bkv!QeVqVoBnd<1lb7gff&25E2j+YG>PKXzvI25IAZ>rPLJm0GHcmv%bw~p8z+}rfDmIu&ZVFSagbdt1 zdlCsXptCSksNDvLLT(m$N@y#krlwn)V^l;J7Xd;9w^A{}00ngbCkQJiaD=e|grX;LIn9E4byXlC*mF-8NHpxb~1AR0&x1n4zWu7U?k z1dVamN>&Es>jcoLEGwYWs<$G>{Tk1qd%JXoWD->_Cm4+c43#-L*|gLL>QHDvgejmT zqbcqHQU&(jjN1*cIt?7L41^05Dhq`qUw#IY5`>rQ)1WPXy8%T8z-Y>q>D703a<0pG zR4yB)ybuXOU^yxi#K6WJj)XZzNFqV!*k_M>&!phdiYv#NGE6kno4XBB7gFvbs zRcTrZraLBoz#AgHIL5ll3!)G@DyFH*2nE?n5Jm?8kV)8TmTRPo(ySqYAcYzx`c6ia zE7e{0+lVt`$D^NQDLTFiuZO=31p=FykzhpyA!!Xn$=`Hagfh=La$y833D5U*V*+s< znCQSST%pW_o*p}MI5`A(?=U8@_C5O7WTmt{hGsE;L2WHWvX)rMHpyqk=2IzA0}Wa8 zvtB}I5*r&>YevB4#K3bP6RWavVVBwN- zO>ek=`y_!j_T)FozWwP9j@RHr(E(3rGOGG&5@b8Q-n~8D;J35@?+xS(47>G6pxv;j z#3rR7JPrdgQG_yU2nPVda!IHQdGGCa*ykRb%!Hl&#$W`7L^wRSn|pmuH-z0bkw8Sv zO~`Nw-ay_WcpY{O`u7p?cqX^#5-yL z+YB-c=o^^uFt?r7sGQ_Fu=X3B{B{hE(4|sy(PoEHq@Co*2HFb9T}pupsZgM)2AEd7 zDz=P}$2q%@eKt}cnmFtDydHy*jop)O1=1H-v|j-#_U&8Yh_GP+Rh!`XT$Q>)K+We-;Vwk4fEbwyeRyt0nvmvHFK) zb=-es0O_Hpxb<1ki}dI6y+C$Df5E)K^w*|`Fg(bAtKks-$1g7;J2~C+e{|i|R@n5v zpsUrbzez*yei(U?d0y%Mn+!9v&$#^4{a8ioLH(}dm$SB?TlGkFIP-J~Yq;(6?f$2e zh;odFI62ZDap-y;wlL2pyg|7Acwm(ZOkye&kLmBy+Z(@oy^U-(R2YAJExFe%SU$Zy z;tcN?)@n176MjGPR((Ive~*ffLGhWt;l0aA@bm84H);242+MqWTd4!OIB?rRAckd2 z*;0r0#6@eXfC1AE|GU}aLHk3s5~uajsd2tqr3kv}K-i(i^~_NIxS;-Xg%$mLj$ayT z9m8~A+1W%8H`a_3`jas12@?2Lk~cJ7YcM}(M`AWrPTf@i@I^@52x>4N&z*N4w3iy# zpd5eIe?HLrGRmElBoGgJ+&)UxK;+UCEfhVqVNySGt0e+(LJ(|kMs1-{5`d;iN&TcU zPaLhBUz$fq7JUY%MUo!kY=+WOS>bvN6`&iBJ|!)`w#akzin zez!En?P1*GuG^i?=J~nYp64~<-EObf>)_pA4^K&ZyY9DHebuP-R|_@*+q%Bt?uUB4 zZo7J$k7}-$vvY5%98WMEA@{Lc%C>mWKA?V@N40W1BidRpFKiJrU(ivTQqi=J=vN=RQ8{qcH;6Fa2g3 zGchzaAy(@(AL-`aaocVGy?{gvNKfhSC~HM#(hZ4^`S1g)&99a{X;(G;J4e8UT9oDyLOEYKspI?!!{>E2`X`6qsMVZ+G zk{2ypV+~azic->QmNj)1P~%A0d(;o3$mWUDm;3So)jj7n5A=u!cQb`Mscw2cU+lI0 zMgGJ4HLC0wd0~$AbSz&##Q+!G7fhYgOujwb zCjJbwi7?YK8uGt*w0w3`t zl1V?r`K-U#I1PX)acuORUU^7hNjxjHv8wq2AYD9rxu%N@Je?6qApLvl?m?Y3vTWp% zHlZMCYS0+9s!$2xYG_u($=VDRAzUc67A1B_Z}W8BUOI}Ja^9(MjSct z;+K`xMGH=)^0Jks#D;V!^&-blJO9i3NzWI-_+mN%f8z9gZ_>T}GuRKc$V|iz1ut(8u=&MHo%sd)|MbpOPFHK!j07ING(WW!!bT;>~>FUTgF8Y_|UIma-6$Zm!6o zz+1O;04Hkh{Svw|O^F{t$t2}>EKL+tzlX)GQL7aPF>82Q0;qpti8_6KyVrYH=~Uap z)a|qfdDD!wd7Ey!+35JFZX#O6xq4JmS>B`(NK+4X@`V|!whr51Ui6pN*zx5$wb8qj z`Mi0s^dOLGr{6is*EUB^ItHgETrwii;E~;B`b(;?36z5u2$q1)KSSK=2StN$};Ti zG>x{cq>yPKvf}Nxf3)2XnG7balJd8Q>yFR;o{>)(2jYK+>`qiY|7Sm8@qYvR8rU(} zH$xK`W;DhTih#daN(TC#0CEDo{h}M%6YApLcK~@y*2Mjjd37O;IZ<+o9kaoI{tyg{ z|K@?pocBI{Lvl1an9{L<00RIA?X@V5sEGY;v)5!ERzb8jz; zI-pQG@d@+q0@M@I{`LYS=Fdfi73�WDdo>xvJjKo>=fiv;Ma>H220^0jvZ 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

      X4bDJWg-@LGm{<%6(;}#@K-dxy? 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 z zAH10+G+VPK;Ml{gpEm*3Ku>hI_dl~uLXGQ0*2=ZOz!6i8TQHu`Qf4XSKcO zio1xfQ~OV&p}cWdvbNX;o_X5A%BrQy0T|-A=aA^ozzi}k$Ns>7&?F0gjO~;OgwNIe zG^>pI?rD9r@gTuanUaY(*|0m`#do&F$QfA@afu75Z-(6B7YmngTm!nO9;+B;4%CGt zyu2bfL=3(FZ7w^;>!BK9hDHn~7y9~{O3@WC@D&{2;?v;o+-A@I|Igz5cVqeg{fpV- z|9NekCL3#ltU=c?`PdDAN3*}i#&&nGzYJHOxzeKYIx!obB}%c~{P(`~-lsQ}Y1+n}PIj9ffa zWMozn5;0j8l%S#*NTnDlB7-8;1Wvz)`F)SY-E(5uUzH$BN^B9ngNu`EVZ#Hplzy$y6yf zd7IV?3Cr`>dtUCOhfn>5XUXu*OZhVcDpD%At5s~JBYzxsMe2bG*;akOLXY;)QTdWj zdUc$5oL>~5zwcSs&IldJ+IY|35YxTv&73(Wd&2Ytm7OECY|<`AilXELwhabh48z~F zUunP7%zi(ASn_}S<2(?o40jM&vlQ?p9gc%{*EW*h;{&d%WRsOqw=Q%+aXr$#OI1`bot5A99I6ue<%m)s3{{E^Wk$bx4 zwmU7-+&B~5>&0($CY~37vkqvGoXnOl@5r^V7=JT=zBddERWh{^N*O=sm`RNg~(6$_GC2N<;{Y>`mwk*_tF00t9j+*O(rm#xQmy-Q>Gm*8%DLnst zONmlMnE%1%DN$2fLKf}R@j=RqMeW4OH??zeaMH;JhNede!^naQj#BS3;j0mZyk;FwH`w{@@LN0&&YL|9GP&2$n})K=|( z_w!ho=Kh+=h|&#=PP7H)TV6kABGxe{Q?8UcH332zsS-ueK*c0j;p#hf#5udKqq1!n zK#4>!MWpa~dYQjRbEZ_ET^epIU=E9jR7!NtHseKSR6&w8 zAOV5nQSVK6t!o$=&vIzR+NHGQ@7ib$~>#0}aD{)2hx zrpW@)Rc`Wsp61AMR|PJJ5F;Xg0mgZhMxrDnii{&5vH%h)5)uk5f`CY;6$DY-`3EdtARO7X3ee>i%!5INH%IRb6j)%hWDhWd8M64f`szG zYv%r)=asL!D3vCO#eC-Y9QgSC;5KOuReXT*VK8S79B>I+a}iJ#EID%L^X9Wmb?yb6XgUI$UtqkaQ3&K`d+KWIA}mUxJ-h6=8(~W4D4=tNaXETrFQcE=m=i}n@6KVS9pEvf7;HIEOxDDY zJS?aru^?q%6*F>ndkO@9Zi(DQJ|+qh9I&;_=+CG?FmV+ML?~)putz>_&uwwbf1=3= zZ;d@E<8k^w7-9pmpbm`fFT%rD0P~>Ce7uw}Nc%ga;lH&nsJi&G#@sDkFN{FKO7zRVvzF$!B$y@c|SnL zwwTlHt}an;`Zv4GWec(n=a8dC!1;1-L!~-)vb)c|;>7w56R>if6xplQOKIAy{gJpS zc9!AaKmuz1XkWQXih?+{8NQBQ9Ht{Dt#^zZWls+u+rXcHM;i_@aFw04EU!4m*dGw; zwJO9@fY|$SVyOsNnw>5bHHT1S3u+(;PU&!dYJ#aUXx<5tYJYntC>3HLfx=ocrq=EvxNkD3TP<^dzrx( zDWZtbm20Qj3hXbn%_5ybjG{oSp)=rk$%tScKAQzM7;_SN(EuxU4iXL=x7@l`N}pLGgj*R zT=!M45EC4o?mDMdp=dMzEA|&7%j)gZ^&yd9+x_rw0*O@u`-*#}*nN10}Z|8%8ex_gtmo+$s#Vv@^O3W$Iv=`@z?U&i|Usm(ARFJP&x(#T$G6bm4?OHM>tb| z3cGswamirSs5oMbn=UN)-qbS@5f%NDa0bc98~x}aAaH{tj`LjSotu0r?+bc(Wp8OZ z&}R1giSyX=Pe5A`3-8y*ZTCYQX+_c1dG>8yqVE5d&F1tsH(?M%2A4N8)04^2nTUvN z@Hx$9un#bTC}ARi42S?of}zRo^>f~T1zMAU-%<8gU*&Vn$#Vn%O0Vjg;Q6KJG}KS% z^)3Wo=Dk{=NZqp5>dj)cq5MYYXwlW}y??t+n%?xVdda0aSnIi(wR!S@QEH1*DppFS zCqDaIzFaGF?T&`YW|gh)^wbw3pcEjJ=XK9Kn+%e0A4ns==KCQII>c*hD~J zuDHjrl&1t`ttLhpyyt7cTskKgmj^U>SstYCyiFbp^3D^qwiTsC?L4n_ZmZhk@^8~h z-h;rSB~&qH{h?68*Ypk)rVBcMTMs@+jjzV^-|p0+VEHweC~xpp+UBTj-qd0Zdvao)7#9?W+h^OaM&1`_0zG+ z^wzBZ3ZLtdV)ydx4&Dl0ayQv^>0hKDsPNlaepI&(^;7BeX)v#4K-)S-W9>o$^-{g5 z54Yp%FH0B_$e5`c@6bh(xDh>c$9ZtLcSS)!mQ*xYm5>rw?mRW00zI^Q2sxlvF&`#w zg=o}?N0qElISA?4-pzS`m5_cKmVyv_YEKLm(s|X<_eg{mZr%$W<7=85$IhJ$b}Z8uD2%K@X}mYJcA^=5RmN<8-bn3L&BAJUtPIoWI6< z*&g8gC+abN_`_l&!w|1F(K?bFD8=XoPA1kvag*E6;C>CEp%Z3*b2dLP$;=OX)eq(3 z|8MbGdBw@mODX935Q5aw>P4^)c0=81cY)H3%6$8UMbo3yT4j4^}4%5nsMq>@nl8`s$De`kq||MvH!-S3gTiZ`U}{2uqx^E}>DDXo3zpVmil z(d+zf+x{KnHB-OnA#)SFZ|@cPy?yW(UVf%-c}|AL^H@`$HkO_bQo%aR;W!-Y+^yS% z?YIqIqkOnk)&R^grdi{6(t5k3n5jZhNh#{U!uf7RjKRTwy95i2xb4XJ7pic?yt8os zmDFB^tF^C#2JBwbyEHokpq)asx5{pYiByM0&7}g6!S-L~YBOE^DZG5n5Ud@yeG#rT zlMyFiwiVj{$z&kmoJ6{eNt>DD9KsM{&I$fn{Kkf3dQqkP?_pg@NgSK``I0X&H=Bl+-VJ3Ao2V(R)^Bb6akty`iy^uj`7&@pEut5rO16~(G*wrU)kjVIRb+Lj7W?G6$m2~j8P&iVnHHBKxATwD4+r&K?Gw0 zF^CdECb4RQKUk6=wZQ}flOmwrj74&kg2GgcvXBXXg8+sMkO5&Lvn7B+7w~R~$tA^A zRaH?HRaI40Q5ymW-Fxqy>3;WOPB29&ND2n67YW8S%4K^=hp!gDZgC z`!E(PE(`BR_2IA8n^(W3ZGeKs?BP1zER)3=eG^1ms$g$jyN@~XzKfP`nJ6VS%Lbuv z;-D;li9oTfeet*&i?-QMm`bJm$Zs4HI&!x98Yz#DA=h2JUKDI+iCmlF)zY+Ba3~@m zc-{-EjdfViySNZsxc~%S|AR$=QWA#n`4{q|QRfpk>9#L+`VXN1Y7AZPcY@0seeS&Z z)2G<02t!41oHi1iQw?e|tQ#H4D&XS?gBGrTQ7g#&ti0wNlo{!$B-_aJF%+_eV39o` zsvo}Zr2fS9b}O+EG+7h=8b8W35gz-t^*&7x z%+Ojy$P>Sft4hk@Zjv~+s_&+`lk`PUOt>ta6>$BMGK1>#0Q8!WWYai8r zeUP9?-X@)Ubw7g*opRaCUA47&MX!8`Yu%A)3X8MFMT6|~?*V@3Z}~s18wM70^Y;8* zmActD#s2k0&-EWyc54+tkGsLEpTR4=lW6G`Y^zzA|FAU$tQ2l39U-geo55(g?gzY1 zXHUP>vwxSf+hgA;eT(%_W#P-Plf`X+uHS3ehL?N&>1Hdenq-@>^kdA6_3=B|B*6|N z<_9{`=Fj4UfAS6`@{DOORi#QgijIm(IfO1kVm=^IR__FsQbia5$~cO->&7XQh%|eT zk>m#e1}ot+i2P{z>$j)1jxUpkrVETO`>L#-LmYQX4Gg5Q$N3rF8a52XD_Avu2H{BM zKbUc~YZe?}iQo>cl@S(*_xY?7*-|O}Gl1|YWHU`c*BTsxFrST2sj-18X(R08NCQvr zsHqfxfkc9Cp2E|hKM{-l%8_#dOb#H#D;0M}B*ca#^7n-r)RECuvoj6=tGr#7LhPY} zlOD~OhWBYxu-Hyr-`O12>HBoyZHJZOOKM!IQ*|rs{|@ zc#gZ>g4IRo^$`Ei;0`VW|8#o`mbHfz$EUh2wqy)wtp(Jvxh3I$n~Z-g0MW5GHoIaq zeaP@h|9~;urF(Ly*m{z0u~#9e*}GzJq4FF3?1?T%f5*KaqZ|TPhkn0OU-sA{9o{?~ zRR8mkcnrAa2}ZjCxj5m4%>U1tG1#rKz;_(Gr{mFAkD+HeLXaG8!5z}ZD2(RtI=PL#V2@ICwgsg$pf%{zt|o;Fq#*7tl@vc_a}Rfu>AF! zPvJl{R&f2D6XKon{_h)jukDUt`~PS0yWO5h?X5aK`>sXqMZdBCjP+qSh0nchq;g}M zQXYT7>Ifez40ExdvQx+vpiRy+@)-r*?cned+3;yOACCKflfhz)7m?0v%IAj4&y8uv zPVR2ZJ%1EB3cQnrqyBtD>{MW|k%+=T^%rNRE*7Qqds1s&`9S$=KRYvC%HN0VtoA!* zo3~fi?LYRyY#{d(;100ZwS!%Byp^Q9ojk^k{R0AOGSqUh|DQKj+A3Ff&C)b?bKu%~ z^r8HwUNaYeKiB4eJ*M;1{t#;8^>>5DY93)(9CHJJM0wAv;&qjW*vabkYJg7){WSln zYt%5=`cKi0mAKx)J{)f~i3Rmyms2poxA@c&`|QgYsn@7wvD=XvvY=x(4o$MdWCp|tUdl}39T%Z<#kbTi8AjP zs77fgD-w&cx~_p9bOUq!$7&kkmD?5>RBYT(ohMdm13-f#U!IT8Yp}4x4&%7sJ^{yv zxrYfK8f@#8!7upf<4WYqz6#5wBtSb`fa4w0-&6kGq_cX%rJr)2wR75~*;(GhB2NEw zG|BgW7O?Fm%{g@PN*@F0Ig|hN?lU0qF9^ z)!%GNbCK5p)Q7>*SHhS3l2yz@Suu12SQZ+%7^-zXPim9S{k)C2#;4?AWFHP)+!HU4 zyLRA)s})O(!y01qT!-U1+G&k$f?+2T1>$&rqSRyi3TsaGhr3bHEaUdibPciLKy3H3 z@yCnmw=LzVA@3Q0*PzBk+Y2P=1s8=D>#4a#_$Vkc`WJL9*rd4kA4zZt zIH6HzUwP2xVwZJ9@6#;=+yCdHVdSPy7eN6LHfDxW#njbVu~j_FY&8qjjdAk%X|!H{ z9kLS5famgEE4q6AZ<|Q+SvWRdK6@{m)Y#=G)cAV+Uww@U=MU9eedFot^A*>QfL@|1`zBLAat!crd5Ere+?F^KQ`xm{TeUyGra>#N<@?{4{84?kB+ zs@=NOw#k_DU>5F)bOTO--^!e}l;rs1)+fix`y!?2MCKw_f!vEKa@hlp>_Z|l{vs(( z%>-NeJHTdp!mGR;-bxPenOQNC^kRDq()q9OG*!HAf~eJhU;Q?DbNB+O=ZVOFzkdZ| z)W*!r@bv56SL=rrLjok!3Q+1XmziitE=znLtSsaFNPPpNS$)_e?9J^_aj5g;=Oe|Z#NTVw(B+B z-v36&_xN=zy-QEdtDdv@^c>4C*UzBXVeGz+Cj;%$`*prp&lg_d_Q-gDE_}OhhpEc! zL+bYsmxK$NUU+-UuG;WmO%rSuJJ!T+L^Di5lgfwILZw$v5U#k*V;tEuOWcK3uV2Fd zV#dwTT^(;!*r>Z94hK}BTny)ub(4jZR+OPhj5;@pnm1ZMoAxaWw7o!fcWM5^S?`z! zz`iErV3{fH)~~w8;`EGv1HtD<+Yuyn(KuItVZrO7d6_v^Kq6rMlgdq~|D8xf1cM&S zapFmjmAx`>=*=^^`CE>DUH0W{#^M1wzHtG6kb3Jo?gP@@cdu&yF@-Q+*zv*``u&ps zle+t&gnYTl3-q1;C?!MnqR!?EGaR$Gv!RxiETv_#WQ98_OV%t!WI? zIgV$mzE&Epxn`Q{b(_!5IEjUtdFkdpU4pqLXoVUL4~I33$p35vRL{dWn+EvR-f=Wf z8#6==!`Yx3G76$R98pXVf+z(bCjAJ+282{31qlE_w*?6i04ji3*|v^;u(1RhL47}` zZ_59==R0T{=0uWzG6)EY5kLncmePZ2nDpZkR&wHfrU?^8sncClZ|$5z?y@b_{vQ@?%h zzj5_ld_F$Ci_>fH{qCIIS1M~w&}S)^%>QP7eccWU_i>tkxi5aJNi2scROjILJt7u% zEy@I>Eg>Efdg^gB!fWAZ3ePuE?u9LKLfs?Iui#B$@L|0zWy1A^LuVj58x3^j@fY!`k1a(rCp5YjUYJH&yXpLEkIJ1N z<%TJ{;sxk`V``@`iwcgOofmF|wC?@)BT1&AaGht}L2AC7+WO=VU|hQ|k_IWb1J=d7 zh|&swFx!o#nZp11EkzmlKh?9aV5sPzp{{yAhM-gFm`Vs1y9xs-K@=*2EdU6J$STqT z5MY9-NXU?dYa{_85Gw*I$s_?lB~l^@%dPHh9Y!dB2sKcpA_GM!K@pdnz1sd5ZQZ{& z4EMs_Tm2fl-ya>_@@#c8U9GRLWwXsi(6D))<}-B@fXHBKbA9b*GQ)D>&RFd^nss`s zgQR+FubdpkTLYNx<9z-3%W73`ReQ%;V+~#K^0u0tXK&Yi&2g;K*7Nl6TgQ_OgWARG zJ9}AwB!J>N8tkQ0I(he%Wg(*B!wR02Z-`8|%(ODn(GBCP_JiB$AA~#O8;$25M0iTBXHmUCvrmS!P4R*eW}IQpAC|!Wo1Rvr z!Xtk$>n)O^R-t)>2H)}UV)XcuaIONN63DE7DvP9X9?6=a8oaauQ)RKM;-Cr2DkK?6 zpTCGMP45MR2IfUl2a!7(eG&bvxI_=&`)s2*oho7Vkzg}^DB?63m}l-%@;_~JS7f|O zjBW$vEN|(2M0A@UYjplyBvrg_BJ`#7FAFJSIe2@2!G-L|h$*&hq1AF#prCpG2k@zX z5Ct~q3ZQ3{fQXup_HS8%iew-rcO&|!N9$@dYu}Swp0WNiQXXBu>RUze=j5&VTE13q zxiKAGw?k}sSvow1pPSx~zuv8Upz17?6M@o4+d}(YeD`6z`e^Z6Sr1%?Z~IzyFGlv9 zA&Yys=N8noK?2ikbr8@p8J-1*(M92Z0ugQ9S#JM*#`N8Z)wAM>2#8y}A%X8ix3uvq zEUVItIxFn{uwPHBT|+bncZ<1)gUWs`8_(7NY4!iT+-%FKs;b1fFndHS3qE%>eX)ZD zW7M9-b#u#e6?5z99Z@|qu2X>lo3Ol8-M})4nh(~K{poZ3_U#tr9bdTZkSGs-86{Ko zTBO!6d_d&w_$9a}L^)gPeR`-&>^j`4%dXs6)E88^&Xnj z+n%V#d?T71SPtgSnV7A+HPhICtJ62#B>JgCkhgwZaXdP1BF#f6)M`%F8&4CN@OT&a z_;(rG$>#m;6@|oQascgXsdZBr>fnpaK>>c>>y7P}Ee0aRnEPP2KF6it_i9OYU~!@p z^iHZ9ol#teae8w=b6z<%&?R^R+J`qN&#i+C{$1$b@h&$v8M>c0sje}9M5?FC3TqmQ zZ{dUK9Z3*1jbmu`{r~yhY`>D? zzwY<*_naL0dW^=yUZ_5Cq&M|9O@r0HtsA~HKglh1L!nz~18e#6>H%j&!wGU!awPhz z_MiP}_t&qdCn+)*&ZB0Ntl~Qz7P%t7(b4bP?wTUNLt3(C4LfjuXc^~#A>Bo@q3y0J z=?)1aC-z9J+9Q-V@za+^&fKp~)o-7E!gh+~B;2_X`#u_NY)L$xQvn!$V)&XS6g1WJ zM^m&7afb>h{VLzj-rz`;06j9@}9oc4L^Q~XOqgur|FKjSOQZ5xK?R=C=tp&e%) zBxv7XRvxWtjk{ZCya-r6`UgPkc#jLUKfS@J=A5Hz6%Utxwia%qmvJSUdl+K{TyD9j z=CJ^#aq>459I-R9_)Gk2a^t(X(D zM9T@E6>cX3tZ9L|UE$Yy}3E11W<&^ts&JO<;orZ4e zz5UD`Zy3f3fV0tBrg9yQcq1%FtJEI8VX-N!+QltC^}&#k8=OxHT={?ZfXCo(S5pWY zY(^|qTh@xJ$06$L>!AdJPh*fK>71DFI7oy?D-$7q1y`7g2&E^h*lxT6O%Ny`QqfR*uXv#$F=onJcDd z>tWdM-^MT&OLncM$AcVG!6nimE}Byl%gFXW##}EM0P~7hAYwHiggI*$)kQd*B)}ShXWP}0a2`Z@s4?J8D!x4@jRa7{qx2C*H z(pWm&!oV&9huTcc8~&ap%EeEOS?n^#kB4`oy!!%udSy%ot;`n{RZX6qJHl0@Xa zjwQ(`wtELrDW%N!c>cv})<8iD+9?1LDBJFYn}%(F zl#QAvX~wZL8svxoH5Nk~W2OxJU<0aBtzk2=*tI@p7;@<5csmeu`E|HvlOYd1) zW5{>o!0j_-Z-dKr=D@s*E^lhrdQjAVLPgKE*{7(rh01)nQJB_8I}z0F^Hl2zBIIq; z%yuFJdP62}qM4VR^-8nVpTj(dd0F&b2iDX_O(@d;!OP3HychlLC-2UD-dzf`Gu<&y zKe#*IgCMuOGr4L+?d=diH&L}}wxc%7L5tSZI!z-P$a<>Sy;h0^;~!i7Wv)4Y+unu- zrCf=3CzTw9YNOZfefOWb{fk!vGo0}|llATH^oAj%Q7(bCjCL`ryZNgwH$uClMI=lZ zZd3RfZAB?-l`J+sGOFbMf?&J`hGj&xEvy~QB+Hg4Jm9# z#v5V_n(899(o8&)uk$g?v8+XxsZp(sCuvE$L$&J<&%I6;&ZiLoTijc))zaQVoogh4 zOZHG|lkG<`q^`0<8Q7|SB}d5OJiXSBYY0^_^Vq%`9djwW&h8F>uQomd1!MHgCQ$uu{Y#1>G=!wi&`47;C=!a%22J1v}cqxR`P+4-*CK1TFD%w(N^B?0gdv;r(U7v~(^ z;B-Y`IYfzriXjZE_LtM&JweeF67EJ*OaS4_#Hr805YipCf4xHnd$ zE)^H_Nh)9!_%r{1d|A6;&Hmk9)|(AZVqS?ci;8`G)>Bv9&F9P4xKBuRm49qd%RoAB z0~zm?MnI}jO1N?L{ce-rQ-hb+YaHGyyNym#e!doWk>ta$x6yF5O)p2C}N=BEvLaz7)W{X=p!zezQJDzRr+!Uhy_g@b)j(Tw9G zVhO1boi8Ip7I4mO#rTgjJmMJiPcPh<0~mqrMBk&6nLfhy;>6FGF4+4{%W+1wQrTEf zw~Qgn*X&1>i4UM1%MWp!=5@>HY9XC2d@Id2F&l==^m`_SbPv2l~Ffjx?ZV4IaetKE7FBae|3 zdq(vhE2~%Dgnf@Ayr&i>lra}{h(~MxByq)N%uAu$DM6N1QS~rBua7#se)dApiX6Fxw<#$N{N2^~pOrByF*2Z2PbIWaiv6-8Y@LP<%tSRW5mJUKfN}ea7BpX#tJ-_gV=rog=_xlFq?m zd2^GX0Wh}>W;@lse*%acM|);?%rldXtK`3b!X6FJz^uiZs&uEUhoAmWH(WABLH@%( zQM0`}DsShIe#-{BglcTj_g52ux}X8EbI(xdh_P{JV6shGXS06`E5GNHxP04x*ugB) z&3V$?idI5V@dDZ^*!@x@%~B0dQS5q(PWc}hfw4xTgh;svwsnwnf-D8s-K`OFNRsk@ zl{uE^0~NdrvHqRkeSu_Wmrrmy6fS{RKGk4q9&gLE(GM{6@^ccxaGln3j4M7L<@tvK zMLsXHXeZWt+Xmzg+9X3; zTw#g+3Q@*hiGpwKz(b#)8l(lhxuN9bd8AYNFclFSv5D>_p?^r~G;tcvCx#--2 zRT6`E>%V?ZJqb1t>69@6ViOrc)w;S?8;#0tggMm2Ms)PZ{m`yAXN*~F43hxc8SFt; z6mFyGwC;e7brj9{gHjn)a!Lu&2u+M5cBSVk^)xi6b03VVQ8L)5N*P`XbxiUq zc!Mii5$jH*#pg*(Fa)4}<{PCT;B6hAJ3H_M7mRuHCME+Bd`vbjuT>DF(iSPpCzKGOkChHO4o2l+^-y6dnQ$q-SM4qF?LuV_&NrD?=47(sCx%}Bm2@@3 z=hhD`ZW1+)ZW8X0XPpFM!+t49D5!@AVurfpo!T+vs2smPFvpg9Ul+Y_N*L)|j1h4v zH)KPl;jDxG5iCUPAd@D4ktXXMtVGQ~zwy6;$R%&ZmN_HuByt=MWYNsN)7YK?lnrWuVT1bx}j0>X(C1yb(09Dq3`hpLEiK_o%y1STR* z61jqrN(?+cWXK9^JuNvfu zx&|?VCDT8CV!?t%dqKH%1R8n{POB#Jj_q?t7qTcOU%ptJhwAkgtRF;>C*@yuyW*8b z|KV;p;xP}46gu+9&&rN}70QvR1f5nCFCHHu+s8<; zHUDidWa85rW6k+JvP`RYSedh?j{eT(!)efdE1OFZa-C>@fQxfN39JH@aD$)nW_+UV zES$t9v3Uj1EXqVR4uutVJ87N{B8<;}j=gN6^wcLTmZKHbd#sf<5>X9f4^^x)-b{<%(kL!LUKOvx%Mirt5CNp7#HWhi5t0PuQn! z#@IMME#w`h7w`_C*s8a^w)9l(b$WzOLH5~ZLw>A?)6SkNMFGa1q)vupao;xyQdJm| zhq_Orh)Z&>o$}#9)h!|hQ)=!tUq|z6&dH5SXhENUb-9(Sv-2yd-f!vO#oMW4%@KTx zLba~q&*bZ5vE+Ln-WZeWH*)-AYxSpWF`rHw5aF&}k1_I1etFstJ}$XBl98n@d+cvF zQ2&d|Jk?@=_>2+lNPnv~B_ib?RI{R)B8*I~kN-!Afp8NLIO!i7Um410rNQGf20Z!DYh)2>Wq{FtaALZN7x9u2zY%8vH?PjfoO9Jd+VTE(00ehG?eE z)B?@~^-;aJMNtx|qrG9yeB`I4Q&y2JNGqt~s(|jUp$8YNzb_hIqol0NQj*NDDT;Iy zb?K{8HFvQ z;tWKF-N!dlw=6g|U^3i5+CJpqv`3I5# z;(@OChH2T^%*NBPNrS1I%)3SgQt9p1w63Jj`8ZTTn{;M&oeWM+98 zW*i^1EfVhZwtl5mTiI08k1Uei(jz{LAO8J%e^25BENCN)x)XS7Nmbg~A+GUz5YknV z+34*czdxhsHat@)%(067Pk?&l`z>eRdYd$48P0bH^Y~fb?oUr_&z*NnL(9enR#e*5 znwnMEzXMv?{1&PFBK-mk5UU_55@|*6{~Ocn4-o^a5+3GGa?g#A|02~v$DLKwha!4w ze}m)?7*T{~5dH%uinEm{X30avsnx~eoTqX_pE2`~GIY<)tTU#tc%lkIdxvkoB zRe!LlnnEahMZm`5{bM>FKd5x%)Km8!xuO~b(lN(`Rt_c~C1vnmPLw~~=@w^*EQ_&b zUQlAMvgwz>7`Da~E&_VL7xUgc(m>E4f8#ta*FhHjq_*lZTIyoMgTQJ4fbIPzf=-XQ zxi?O>p%f^Wxc27q&-=`l{@eM}{_vT52H$b%mF;r5*&0={-#^UtIXGC~z8Y?~Zj4IS z6^0k*aL#wu()4-}Q%M-{VN*s~yeVTYI7TbF=yWy(8UF>U<~vBf2Ie3ce^g zzHA!+V2P;gIQ#3#C)n`v)z_<`LXd=feXXTbr}#JD)*g{%vCfi&O;p6;e}I|(UMg$0 z9N*!n94Uq2wsVynbs@DEq2^a^8L8!yoBD8fY|hyvURRIKNfM&fE>$d1Xljw$&D{+D zXaCn;CwStmDD`v%>k!&u;`~+RcG(x9sw;Rb67yrKS}Zb?&BxoNX0Uj9j0{M4e;x+H zLL>IeFsV88O~}&k38L*-e>NW;o`tV2R|EK_XzstC$nzYvTltZvXsPe{p0_#{qfYl$ zb6UU6xBY&)UoMZDdtN~TK#$uI6zqIZy+BcH5dd!#voU<*aE9G;Q#ocOL=BO49%We) zc+tPm5w^Mde(M}Vw5J{F9IpaA>#r{6)ogHrDJa42fmy{IUSv3Re?k=Yju$cvS<-&0 z>AxpNAt8(ZMC`Ui^_fmM-{4L>6E@btXX|VN$0)@;LJ--C3zB_^l>bo?$gd-k%JFLj zk5v0XcVIS(=9GdQf_h}~|2w~Vk1pk$7L<`2N0^_GKT@3osk9BL^D*auuMJVgfO?Yd zm~j#ObZ4$K^Ro!Zf7H+k|q(yxwQYu`2nw3T6mv3pM%O zuw7??qll~(C>1+N_6lepd z(Ot{dX|YUlaq@`|*tAVBK*h40@jmq6Iicj~w|dy=C={X4fBdn5oEWkR4@~XAaxa4c z5qf|GOasUYXj+d2#SjfHCEdW$3J$}nF3EUSRm(>$zU>u^CxUf*fXIfUB=DqY=G+It z1W{L%%Pi_OCq4PRn*}v&I24V%2H{r+zh=pHK2`A>r0}8s-fhc8(jT#}I*~`?gwX@KIG5NfBBM$3L`xYAALgK?4Y=}tq7&L<-T-5Su5&uSN+3U=zF&DMZsOSu1fPk zY(zFN?T;krL_k|OjEN}o!rzcyA82qA_|VH47hVG(DM9&xld$gN!w=O$RCe;1gKF_g zIuM~LrX_wdT4#{F^)IMb>_NT zcP1aN9Oe3C0l&IG-&X#AkwRhd{&m{S|b zKVvTFe|Pe)ew0o7KwK+V&jlP@tBdXNE)V8`N+0a9#Vp~or93bNGL~6SYZoD~uM|iu z<(G7n{61rpCmMzcr&JSW{#z|qJ5n?mYF_Y1*@=~L#$DSQm;t%#e|OH`UD}pHR~hg` zdJ_s;dZZw*h+V5E4?_ICK+A@UrRDFk1_QS6e|L%>g~h>)Yv&Z?k(vfj%;ZP#@ao1q zu7KTMmflSqK$f_Pd2tZx7DP#OQxTs#km`J7bg1EwWI=giC>%8~E@E6bho3XKec{`O6iABVs(e zf1w8z#7nTtMQLFs+Czz#xue9}63NQrd)uGKlGt>6p{W9OaN$CNZlcjy)sU8WZ<@SW z^AW3GXJfDq!-L`p{JMBvZj6YoE}=o^b*gaX@}J)QdJD7ja^EkxhGAI5Bf9VmMX^yx ze-RXS#OMi6DpygD@^m(CRjj@Q9NUXvfAU3AJhbDTF?aK&hjfJ8#S5B4u(>%>{n zH*Ev8e`(3iDM8!=sjd3D!0>f($h^!w-X2E+p{t>oB0ahW1Ec6*?bcf-e=1V4 z76v#hV}^qY#d6T=Z(j_W8tbnv#O$Hji4H%mOz~C7YVg@m?5Tt>8M-M_I=UjtVLi}n z^Cy7cO2AA8e&_pGO!G7LjF_G3E1A<%tr->~=*b?sj|$_Kzss)rjKDFpg$6%Vze{TD4$s9D7bej2jJ3c?z#>t-EG}uYkVu?f3JWD?D z8bh@lTQbxPCWzRf3}SPiHzVx3h>b=x!?+R9>S7=<7MnLl1#z&$R-UY^GhpRAJ$)=( zmT~d9(N{_Gh+bGIM|FI%E6J5o2?x4Fz{c;vR4_MkgH%GyRUM=}_eX);fBMFaJ!FU{ zT^f*U<62*N=#F9q#yQ*UJ9(6H=3JB!O4Q`Rj_a;T9RYS{6k?dkg&TR`W=y9u7fJ1|gD5bU3+xqf1oF0k~8=-!U~@W zg$tBfYcwGBPqm^D?<;!U2y^D`PUHua|3%&XkbduDv%2Cf*D7#XVJ}Y34%@aNYbpPY zt)iQwL%R#v-<(K8giNnHK@U<eCnjMVU?!1A*=-W`!7k_3d1V+8V|NMd3PILh!8 z6bgMq%!b_omL$<8iOmD!@njMK^)D!uoLH{1S>*D8uuwVJnmqQ{qsk+*@xNon=-2t0 z6fmD!_)ZY+e=Gjer#gI1M&+rbWFnlD5Rg-w*Zlt=<^G0H2j+*;6Jz~piTBXqZ;eCm zIQp;un0noh4si?AF0glbP|;;YbbMkP7aOUV;`A`F18n6{?|wfARFHx9PcZY$Z@n`J zafYEQr2nKLlgKpaU;qWHXq(D@ynGP{bacN5R+JeOf6aN&*9c>E3|jmHfeLAz?9@W` zhPs+Th>1vN`^ftAVCACS$+b(1r=+pr-B%-))9S;I{rFY;oZbPJ z75My1fBjFFuL;DV-$2Pl+BU9Z^C8WP+b8*aOYhZ_;~liF)0BA9tp+y=Y{2GYBOuAW z5@Z6`7ywf#M(q>Uh@Ei^=Kq$F2lIaGe=dZK4xQC$;*}VnMfsVUs&I*8*3uiNq0DWQ zpZM?8Tj;BWgQS2s{6ELY{V(qYf4T&LDOx zfXxVcl@exBJJ6yWdKmjUS~4k|6Lf&5CuUp@A}t%h@1i~of6nm7Wb=1mHr1+)4b*c5_n zU1tjr!3X5&`=97LrxKFaA?~58X?f98%GfvpCeYR0NDwjSZ0ho%#iC&5dW*y67<3Lh zxsx7j8j~F`)on1qAygEuTwXM;C};O9fAK#FLEbTp$mcA!Z+NXHCTkc!(>_!z3>(~Iq;Wo715;A)5N_4F}RfB3miw}AP?lq?Qec6WqNJ&|Lez^x^;+>JAY%@x4aXI*5u45CgsnKKIo=W;7Fq6@q%7<

      H|xK&gk_@>)7=n?|0$M^2|;YWH+_6X-CEYe;d6z7%)`v z6t*K%S9#pX{3`vzz`lWKTSskxy!Tdd8BATke$zeI8}q0FYPmpD9%}* z3=NfZckcK4?>~C4+TMwh`y3qwGxI{IF88(1m!4~7GV@G=T>oK9J90Mz&D@BX{*w$a z!w4dXqY;RZL}XB4iU6`Pe^C`dhzK$QMHCSb5fKp}AsG@ZMIgoq$iP4m5fKs~B7%xC zB8d_pkpU3|5fEZA76=F;FoG~ekYgAl5m))P#ZeIuV8%oS0K^eN7{yT}Q2`<-h=UPE zL{*9)kwpX%7@)Bt2nfVPLJT0RV-XP<2*gB009eFCL}DaS5P~8oe<>7DP+*A02mV@E zBtZfoh>S!K7ziklA}S(+A|fIP2@w^70}+uE)o8>-L_k1dG9*M8h=|4lKmDmllh%j+ zjz2K%g7|aj@4e|X8`zEhF3dv|h{sN2m1-8wM|6R&o7jg;GrQ4Ce4s=|U@&fulbo3h zs@%-jeH^Q2H&DGVfBrmQQz(PS3(+#(f$8We=bQVkgG9l+Hli}EUdi?sl7xF&xoD*& z3C362stM#vkdyDZd`b)(>p&dCtCe%8;GO3_DUj-JaM63s1T&d@_`Fe?R^JVGQTs!n1Ku3|A%*Z8&Nw=O zEE!X~@5Rvflm+e1-{o0}6tbtQ0Dt%xpo0d=alp!EfH3f`bW9p=p&ALVoje5*k$?S%Vzul+ImZ`gpe~|{T9AV7{I5D4$RVZn*G*C-h z(w)C|dGA!cdA}VUT48#js(0bhneZV{wPRNHKW3~r@cu*TO^_LjVybCwmkWFg=9@3R zD)n@_&dvy)?F!?Ii4NVxCDPk>B&nH@pgg0h3t_xPTMX$NKkz=F>;nz6EU|z}{CmG+ z+*R%qvvK}2vB1#W>@MV=^R#X&@7IrJ)1soA~R4m&2|l0H!47w#Ze{Q z^=NN#m!mP;AY;N~RkW{Unu-g0nIqVrcCqt&y_!k83quubjFrkVd5N_9o?>%UFlRS2 zpkU9VYN%h>BU|btiGynB$;WY}CrFe&aCj3dV)| zLZq*M504f6$4uV}EH69Jqi^$(9Gtz#o6?|Rj8DN7Yba`O8Bp{hQuYEHYC9(feS%7Q zatqoIQoAH?bT`bmhc?cG5z(^-X;(@1@8|m zP7smj0Y;GZQ}NB2Q?Oc(1?e-8r)Z8(wSTJkgo_-5Fu9)k;e z>H~FRB9whG3Tb|$G!B(;-B#&Hh}ve0TJ*HY7zd@+Akwq)MhGdZVYTv(B1XC10GDDq z_z9>Cz{Ry;R|6I?736eR>SYxOivMUolICB3MeU-HcKnJX|BPzBRaw#v>*+l{f6K8f zO$3B_@+fE_!`cv=^9)ElndhA3=?MqOM)ER4yBO$yL!dpAA*bbso5((JRN-kI(ruA8vr*T0YC}S6-?JEqn_GFh%)SDTEUH<^P9+9cRszI;FD)2 zn^A^wazEPJD<>8)nBu(-+jZy0DzMwkj>Vz9=VRiw?IHmngw}~jxQq?diiIiRRJ!;V-hqPee~#$@ml%&Q zzhyd!*;(OIm4#X!TEuFz!M$LkFO;+`@%uUxMK{CJXok;uw>!Z;ZM_#({Yz2+svk4p zwhc;0+5P>mV5s@78Z?0nB0)%w@McX0J9bq(dr0`lF)td>LZLCl;x{I^8#%7>?LUi_ z>hO@avyT8t;T}ApW3%^oe}Z^%{DHLGokoZC_|dGt2~}aY7hk8Kv!Q)eF(RvF zR}!jCJ8yEtUT%r_$uqR~E-vQ1(0+!?bm32=AOBr;s+|~99=RQb+OZltH7TPQuPCSt zrfxosI`19OJ2k!)hSC31m1?sTQLLp+9u?7c9nuHTyv(cHuD#A`YMt#ZjI{I=&v#I+ z#oMmFWHbKl&S<&Hf4OSwo0^qagguR53qb&O0i+m@g2s4%`yiDWj{P$m6xH%6ZPol3 zem$KEI&W8U6Kb#2Vs~*a$YV81HBM1&%)KaV)l#Vq5Pf}$M1;1Nm#4D~GPyT&*buL} z-!uKuA4?3g$s3;b{)22GPTS>Px}cjL`8u9_*`L-1(r-#|e+5}7;*5{=jcW!M@K1TQLew6NoSe8jF;ys==`JsOz5-dnb?y-|J#hZ^Q3L&X*bV zpD-At9`W|2fBU09o$AOPA?8_g=MT`lCD(ZLzN#tBR z!+eCpo*Ww8ROOJud>XN0$EF#woTYbgs_3Ih099EVC_8k=YV_MWMw!{AF-y=lp3~T- z28%>~e^sUK3hT||68$eYwHd3FcDn>9%l9p}N5NCfc*Rv?wx|vK?x2;BSq@Yx2pkWiHoi`44|V3rlZ|PJzZYv5tKHBYTfK^E`RG?S zZua3usgIDiTbeT3gL;h5G0@z+U{`l=HX--Ze;k5NlMXad>rzs-jr7yhc8^;lOo4^9 z4jaRiTleLtV$iS)KdOtKunCHkK=p~Kd?6q5!6;QmBZnfUBFQO(C0C$@pjk7nPCUl` z5j?}=uKib`CfUBqcxf@nMST&`r))~pw+GRcZB85BRYq4ejho9QK@-b#E{}+t0W&4M ze{}DquBbdaBBCtp%Y9a?BufC$iEmOnwzn5zO9ARPOuPXKnoO$-GAc1nX?8MZoHoYc ziEON*ELEw!bZ(!SjcOQK^*(>@g+y>53i*aBPAAtFQ$j6BQ>jTx3kMn(7&)JgXt6~4 zS`il{)JgiErZTy2fSLjHR&bf7=ksd=e~LL7QkYb%oY2(PS%oIg{zEfH?th$$Hk_|Y zC$k)MG<@N0iZNl!I-#L$2GW!>auzy1u-gr{-22TNoE?4eei8iP5fD!A{$h!-%aJKE zc;Vgw1Z;QUl?S>qA}I;Ufq-FyvL?P!(a_IF_7h!mGqkjsr2ynn(zXi~^%0j#f8fIQ zC1WU1B@FIlq1i_aKbsA3VS|pYlghAnDaca41zQZ5>hcZ;HABP7&Ib6a{i#&mk__x9 zU8c=G(OR&HXX$FW$;O~#u0gjmTI-G*ThSQ^E)mLF0$5sA_Y&|6n{JIhN zG&?Aq`d>41=BE(Ie-#f6$J14bf8bP2fI2U=(Uu*+(c+I^>Tw^V$<5q(i5+${A|`~S z_>=x(xmRK7@yFyD*78V~;Id*U!Tmd-d4S?!hm!JwkMdF3E={`?qy^ImXHhVRkcKEBx`&C+B`5&8pYm*M8Ig^yrc~@e>T0j2Hg}z*KPe|&ln)HGNp&OBU)75E&RGsAaWI4+_LlakHdat}>dkDeCdUFU5t zU6&FxFzuiXBmKQ?L13e*#a4ZjFmU$CS$QYk^ z7u43|S{z~HT~N4sA#f=42PW^1#wSy=;C8=9nEppD;#SIi7$p~vG*KK%hI@b zR_RZ%q8FOv-;7A;=ARg*zvX|(fsER$Q1Ua!2p}!oCK=e@lq2(3rv83Gg<3Vs%>sy# zOS0L^u5abB4Wu{C`k=VtwbVUfhg9KZ zGcrXRd3LEyAN$2mGOTEeKL6NYX7h@?JJo2+4dX_GIRnnz^WYDXRy_YI%|&!ZG%4)U zB+%Wzx)}q}?gKa2qm@L0Q^6tcr?!AX6lf#{f8PB0e-pK&bGU6EGcf?;P`n7Xe_h}O@#G)dT4&4ai~uWV5w4gZ-^Ng#zy~6heGy;o()ulwXQU}ZP2hz zzmA%h`266VXm#LrF^6KVc`krSQd5E#8WdX^J74L4>&L&?*6nN9E~oHx_&$@nwx%|D zz~cBUe@?rsnB$AcNM|I)WO&`jZ0kAulF@sb+LrjFF79#b$ubU@%@D(1^!&^sghaLk z4w8{Lh$#^iibI&&_R^SPiR47WSP?`->4yl!3MDx5+;2hS=4>N zdx4+pMRc;4&4N|po*bz01I%6$jxBXnQZMYBwYPMWBit&Pg~e=2Kcwfm4`kQ)mTS6Q>*Ro zD6%{%KvuF(;~mqq8$JG%5SDOgScrlxGWGGf0^D~V2vUQN)wW;FzfKb0TsK?DgY3C3dPHEBDbwPDUY?kP{fW%9)e z5b=Fe=oU%p{{K4eW z=wWVSL46>eQ#B&+?p}|DlxP{;0+!FC4R#+OLWv%apm&Alo8iUNOpQ%se~FfE;S03h zBlaX~Wf>bDosSW3s;QJ()Sf;bW6Hj)Avv2Y=Ld582t=FNXZdFWDvQX_%|jC?T@(qE!NDDIsM(T+ zp>8eK5yw)F#w8cpj?JR5s+C!kW{PueEp!-j226|Rk&PRcbR#hgQ=40ubz@ThX9^E~ z3?R+G?v5xKUuwuS8FW4$ePnM*X?K%?J+icsAvaC`Uqux`L{W;WEKy=8F;QTV zQACr_e|Cl@kSUZ3f0ZgqkO;MxEppp)F__4>!C^D(>{A&uovxfp!C}F=u)#l%`$v3+ zh6jI>#h}n-K3+-*`7M3j1%%yap z$w%h}hJmA=t-+ncGae%m&HBwd58yjxB7a% zcFmP>v!jW%)RX}ja+ISINgza$56Gv;6_TYIdB;kknR-Z_vH<5G{uc({)C zy#rtFwO2o_O!|kZQ@>v$?A!h>$7ecm+T^`COK8ktRNFEd(R!}#5Z>*9U7D&=m6UZ5 zFsg%Cu~8x{5*FA;jiTg%3s)$m6N{o+FwYIZdAe8&f8l60yv#=nohv?md(KPhc$voR z7VW;$*_{mZZg~{jZ)XEFVTDDfYc7fuDOcQ2ebwqb41=mT2vtRFe$5i{`KiT|LA?c$ zGjAzwaXU9nq^GCD((qj=m9M{)aB5|@?eMZ|e!T3BZS8)pO|m~bxA;ttM(rPSveoRiMyPW@mQw0R*3={|74< zBVXCYTj+W0;Qi}Awe;qxsY0JRZLSpwgUSU0gtkqPrD_pQhuczYI6rQnTx6dZ?=bgx zc8%S|EqH1+Te=2$_fdCrr%vNx ze-oS&bq3;S_4_A!WW_RNr074YXAw^M9e838FGM~ch9_gKNp@DLKA^1 z3LNzU(WM$-|B4&c=8vNN#s!taETYGL&c~4D7S1&waP%T6lli=c8Y7Rr?UXy-4(V{0 ze6~vKOT*cPev`)fF28IdzBPZkIqg&0e{A={p7&`Q5wu<$0F7M=#=%^@e^MNt@1qN5 zD4n**Z#7%~Xi@%%O{Vsh$7d2{I0A(M$E2mdhf-rie=gcj z8WoLZG{yN92M8`OPNJo3?6hR%P6(|cH)c*K8by&SQ+^^`fsz;*!XZK_Y=Cdpj!d86 zYfGVlL>B_Kj`0BPSaQzk7a>MnL zX`(>0LTcTdjVCc(@5xoRGXgI=yqc(US^UEC;K;!OAL##zSVZ3DP}A;ih7l*NQu4pJkY*IkeO zOQ9nw)=FC__d2MEip{n|E1ly_-2l6?Rd3E9?n{l#g6+LZ8t_x%~RQi1alBQ6eks{Sw{_Bu9}+6 zEW?{gVis~s>e;Rd%1$A@f9>!AT$*%Zyn=2~=qOA@8By8x2?5P05)W&$vMv`0sj1q0#;iU=B<-s-U+>O~%Au>RMV zcRKn80eDswyh4gIma4cc6$W&DlLn-~zl?d5L)5j-=S{F-5g~)#$6x zvoo2HMZQByc*dECfA{0CobUee_z+~xP+rN!IZ9*3BAl8sY-GXa;!6N(eWb2MKEYEn zwI#r&ffsca)>0ZuTCPP*CR~(7S!P^;IwGAA5rl-WVvSHKw;VBZ04O;MWU%=^xDt*A zuW;e*xV+Yt>cpohr+p^CjE>6I>ic2Exy#i`t{|%&X-AJVf1Eb`HVy5-E^q2|g9ro= z%DtbTV8mn9&B3Lz;uR`DrJd)n09^GL91n(B%-nX{fL@3Mt_$i#IteHr_p2t^@&CNc zI0@WGiIH1M5A3L3t$OEQNX+o{bUTcoihZI17%KW;7duJG^&l$6bsWm^Uq(VPVzN1- zo>JB8_yXkJXPSGK6f&cLzoX< zkff$$8|=TxqZxZ>B!%{-#dsZyg>tRZZI7|K34UO!cnV5TuAxe^Nua`Dldp>_;LTZlb&(p0sWF z|C0)9#DGDYE`;SHNhIvcy-ZmRt*DKZcPTzVM{(5=t=$CF`7|La&yxgjn5ChXYDb+LqTo11T`G~IcexQ`cgSK-3if2K2$~`CN(Y-R2A2fr zTU00%sKjTd(j9JF*5QMLJ&WXU{F|!-yq6OIJ1}!uALFrIWlgtqOpOud%2Xb^-L%5NNB#0r?TG@MkJTYW46i%!E#=9URanzShV zf0bX~5Nt6*GuB$;at?rM=J4roIr#tg3&+!g@_v^kJm_m!657vi)8 zsY|B zNq&nvD!u)05gQi7ECXR~kD+7TyXJ~2((cqKWN|CpfAhWd z9CVVrBvK}&@HRDEQig7;uga${obu;BM$-6uf;z-~`i~^A1ytSdFlq`k1B2^!e*1wV z?E3rL<|f=c-YpSn6z8Rf74^E-KXp6++i+jBb|jf6~m?Mh$oo9sl0mg&GEM? z!gT4OJDj^2E|2#V)tz0{uuAq^S+fhO(6Gn(u4H(gmmCwr0lz6IzdOM2@j{$p)uM`(5_ctR=C{gJ*?tRGuKJm)`M>k_UEi}&`ot%~v|w_mk( zPRPYme;?~;M&enpsrn9VrM7R7!E*u zv4LW{QO+xKI}WJ8b$3L0f3r8BTShPsL)8GhIge~&#u^~%hy*s@n=N~}UHKdgAxsyV zZWyFb)}kA4<gUx{Q{C#cQTA9Rgvs@v2b(`5ILKZ! zcI6nU+^Q0mW>)Txf31xrt0YpDlLqT*pJ@kif zquh*QCw%($e=v=KY^+|O^BmjHv1JuSDDDHOM@lX&{6wLG@SCO zz3ie{4yhToz_&L@RUCJp?=#+epqxqTxyIsePv=HZf7BODFhLL$*H*mbJdAc5xdc(Z zq%&Q$k|fk0-a|BOZ!hcTi&3;B_d2+#HJ`Q0C@fcFdl>Q1WpO{#_W#>F3wHhc3BS;W z09!7|NE3QFFy`o3HMN+>a~+hZjS2f&g|(|(sLuV5W(opC#JeD$g?ZN8h_N61}A=xBbRk#SGY};HLcF-0Tj0 z{l|N0eT5^|bTt}b<>MpGhf+fb9dVu>j>w|pjBP`4?Nr5e@y7v57BIaZJB&csxXC}l z1zg0ukX!sdX*5*u;dc+*N~%ucS?=QmasxkWe`l50kN#2YE?eMV1y)Az*|UL0{Ci3F z$`9%`4+CcY6+m3#DeX(`qDgX&+9jVgN2G0ZZnNw=lgiVRlarHEs;|3;sm{{XvYOdn zlex6p&{5a1b~kC^PYDd-Ampqv4zF=Et6R$!tpv7>yBnQ=&PeoEC}DydjBqE&+chsr ze=BOVkrm5Pm0puSpznP;3B1K2Q7 z3KEQYMqLa1+U>mT=YO}w+ihQmi>=8Ef@Fz&#EZU$0R@@((qtKw8Jx~$ypE3?om$;s zIS+puTKz6R&ZxC8+RZR)5YfdOjosSPf6Z($G=QGtDK*=U0Y-7~T3dvNp^=C*2a8hm zOn8OosE4p!Ce1_|H!di^ym`; z_YaBK{;we-5h>^2DP!Tch-FN{3Q5`Cs{Hu<-Q99p*sJWFs%79aJ<}#6 z-3LRz82-;6?bxJT;(WwQGL~S&eeU)$s`yYz22U|dmWOlHqtbhVi=BCGp-c}6@}HtVc)7G!d4(=9AjA0@aem7C4W zg#CQp2?bVD`=X{*yK}-!e@*`JP~joCxK5-;sn9w^=+8;d^-0txP=(Tv>X6*fzA%Q7 zN@|A&I@)0A+(n%5Hz-3{&{bDkW+}c%SRM+#b?cu*M`mw9DdZgZHbE_oBI-}6sKX`e zQ%NO@Z7*@b+;rdsFZ?87JDL4s-r$Es*-wNyh0Qp(=ufuqU1P=0f5E(=ZA|Yz-bt3d zi^JCi>o}p`yK9}ZUvu_QxmA&_*N~e61Syi(A%9*qhKTyfz3$BHb_)RgzPJ_U-u z+1YMh0m=hoH#i3aR1sJNEDX=i`Z+?rLFG9=*r0sZ`=nVD%Appkk{tYI+TeX<$&;U* zj^Fv|`E7PkCL_HOJAoPgzX~D9pG@S7M&R1sqsqbZ>$#3^e-Pc&=6x*|vG9Be!LuBra!7qnL>6Fc^yB2&Kte}9MYZeXazQj~-^=<8tAo)WG6 z6@xjE_qzDI5Un_;zhtrF6mgjB+X&F~`A4KogWM*nLeA1;qcz5mdUtLvF272KejIGJ z%t=ZqNk&Rye&He}Ah>7D#r8>1!vhpOwGYaU5yZsOE0Gc;ax)N}c1`ZGsz!5#R`P1~;UJ zb`xlr6CV^Ju^|iT2;WxE(_>NOJ;_)&aldWl#DJ^=e-LV^Q};DB_`Up^NtP{rzq%R8 z3^cH6wk9)Inzu#&n)$eU5q8$J_r#Eh-)C|W<`Vn~dmo{2s5wy_EB0l=WzVL}encTF zu%o93tIhHjGJu*iHNIA~@wmWF!S11nq~NN$&cJ8~#1Rn>KhUeGsOsQ$#(ys3s3;9;c;xM}z%7 ztqO+6oJzM<(KW&xIFdyQd#~7}M{;tcQdWg+JT(|3mf@)(*KH}ro6ki+Xbd9U^Bls@ zTiaJQVLMJk+Y)$lr-&sbi-0ELTZV)$$csW6f3X=)p9gXr=7Mu56;|{Uiw@!^I7!ws zpGQL5#xg-m4(>V$AQeI%Cx>@3Tfb;u%x_A)YC~%j5(5t1{5|LVE|u~Lk*Fd2TS}QC%ifx={lvhGH)r3L)RGY zoh#4CKEdcqsF$GRl?y?zvc1|OgCEho=c-sRqlKADMJYmp4uEwkx?g{yqB)~$q87!i zfpxy3?Lw>72*cdsHP+r%(O!HOAu_;Wf0;8OEV~F6+1UFSojzwFH?*5Z)tt$a{eoA} z*5JZ+5y48tqr!L#mrOEM?*5?T?e<7?9RdFAK3UejiEl%cKP9UVI?@(@fF|RORJ0T~ zpmqL&TRb9b(6$D=cF0uFu@ZdCASS&N+9VOdrj(q07#*e#`VUd4VDj)drK!cte`jG= zB|>mD>su90;!iTzn+)Cdukx-r+#V^Yze}4?ukN#mY1x}pL{V+oY;|C^uQoJUt9y5k zKNJoPJ1*s+p+Ukk_fn(BFW)tSD?R1I2Qt6k6hS_s->4Vbp@_sry7TH#!xbEMf|YRg z|BxtL_zngBN$=0r-b0~oN3ry&f34>WckP9@F8Jcfa?UkH{i+O8I1Nt{uLh{GS;mwyzzc8Z{i!D zc}}e@>YE z0__#=>Hpg>8;n6(%jeByJ!HKJSM$-71J&HO4Qf-U#j$ZpUxujRrW+YEmhPOvPjR|2 zT}C&=6h!}ZwQA&!6U+Rxz`6U~F+)F$=P&k%iwEXAUtUy}m!>!#D^ z6!A&^ZL51cc*r5tpFL8@f4AF}62c$fLULn<1*Jw^;W?J1MY0Q&@)qmJNM0|rc!(nL z7@aDwxpa{b%ei52jX_VZ*Gwj6 z179T2#PXP}A4o;7V*=P+PJ?HCoXKtOl zxe4300PWXlZi8~Yf7x(&g_U8kSZ(Rvj`SD9E&ZbCjq`8P{GpCU)?7h_g(i%AkYH^qs5^KY^_1i}pX4}EpS9o4K+df#y05YW9Aahzgx zQT*Z11*c9yHS-M24-CUmapzUe2MplJft!@Jb!K}v)@5`-f2k~?98V$u*yOg}8VtN0lCE>yc|G=kVtwV^bNgjnpd-+GME!P6mqBL{2IxJn`mL4HsF#P6a&%?(Ngu~t~)t1iRdAQL>? zblW0heSM2PY@(-!kbm!OKLr^pYNL%3ls$mzw#IRC@?u4?WrCJ2dM8xPmf70Ryz|@Q zw;Ip%OO;$)fB6!gKb32yV{=XS^9QOI$f-RD;bAA+-9Lym2Drnq&eLbh(7DfX#(!`* z?>8U)km@y6uYS_ch5YVOFyQ4H=oavz`M8LHAx2zd*MG+rGjcCDOCK=Ho$bbE zadL(|?MC?XXd0)$@SpBM%4saTJ3|r;#?*cCMxefW#SeGc~2!T3;I|!SUU<~OhVle2=UKFF^{D}`XIC- zR|?8Z1Uiul{(ndNdeckWGB*4iPD0UWnVovOb{pKEr~7sDmyz6WftKm#bf)ifmVZ7&aly=)GQ65lEhhT*#L1FG zFrC%h*STy@t&b^2vgTaOY&hi-r-pFj?M+**M*4n(%1`ZS`sF!@lZ-1}v?%YaH@SS_r6PXb|=F+07mqoo-EJ(*ix+-Xkq*-ScJDS0Ic{S2RAK=`( z9Ag-);hCWZH`f@(&U`L3ea1gPK*n_YbMbBh);`tx<|VO&HOJk2(KlvrGCvwW3qN0D zZ>bl=;yn%qKCZHFZ-V0j5bXEqdvm~CXBqLuHh--M{>>V}!}aalT8rsYfuqB?CID1WDFfMl z;QppC2Iil~H4a?r^Mv{hu+o;t3ZH8{zmCvn4L!Vcf!tS76p3FFYu8S%0?2yomj{Hv zRez^368ziVV!LO!Z+3bIsQe|P^~Bt8_1Z6$h9_^t^Y?C4|8Bk;v#Qba`<>s=;P&J~ z{*e{&_Log6{YHiaLlQ5-o#V#cSj0B;37>+<{t0>FffnS`8O%n?$eKhy67N0xK-1=M z+ono4%UC8n7m0i`vb{ z_9rNh-_Hre>BQ1|-%vpG0po`jgC~qm2~V5>jwg~NE(3=Q4hBvdAWtPFCkLiaIJ40x zln`yl_(8>^Y34HwMj#yETra5qYbl2>e69t6v4(Cc6sB|NA|FA3Ie)#z zZ1-uM&$tuu&TO5vYwDl7@UuErQBD%a)>c^;23YNJIQ>pF&CcAt6WSz3=gQ@cur|Zi zD*Y^&jM=Ka2Ue=#S-@R4M0ovSZJcDUqZGy8t#{wOzjec~|GIHmz8+se*v7irY1lSz zw;B*FpyG2dpC0QY&~Af+<8=^NwtvU&T29|p(et?*PEpa<2=#i zxFTl(J;+f(8w^xGJFX7x;#jJM)REfMEN3*th1#k&YxC|&^KU+sE@wt##J(3L?%%Bq z*7`tvF!xAif%r)4U7t$V{<5~q45mHL#OmJpUz|;w&Xqk$Yh1KaNxxWV>VKUS>Zop* zQt-RG@F^+ex@Bxi_%1hds-Sg~Uizc>iM?za|w+x-Mz%V`toc>sGzi z4+XBJu&c;ryOy2@mxJcwXr|fnI?)=~V$v9iuE1h`>x2cJ=d7Mz{^xC;d^Ho|C|!HE z!89&xowlUg9-E<^(aerk$$zu%Gaz~7R&peTCokzE<6oi zDh}dw=d+{VB0GPL+SB^%%S3>m!J}lLBJ;a8UPs*79qp?Kku2zVa(~_aZADF6wF{wl z#&vn8{Co%@pEwTqHkoA79Y zi%^0hz!_&BalL7te~etb+nd5}CEN=qi_O(v&RzXLU@rZ{N$y8q?ITKqzd<<#41zYU z9aO^X$J2&!(6Lt4e1Bup>u2U=1p?&#*=bK#uZu`oE~#uos+`e#j^6Nu=3&dSiDN?n zb$Nk4i)aDk`*kQS^e<~F9_J#uAl##A`@0w_7cWx~%6x@a9rs-;AmZ4vA|TT<)W<}0 z&P?lEc20^FsrWO@9p<8MR4B{nb%!y+%!zBMICkiFC^kbB0Dnw=D0^qJH zhnv5$LVJWPWcbIie-}H2(;u-X6K6^GcQp3+lf+X1u+{h7k9ayElw$`ibidnLG(yu6`WPNjqImlV6O9S z4v%6Klv{ff`F~HNDdA|Yz$sQRNojgpk_z>!$YDH8J`zdaBOTLR(2JJpZvCI#vX}i8 zGXx;K%OMmVhU-R^HZ=qAz^j-urH_j)@_`7$=C*sq_9AJ?_*uG`%@1=oYRqLh2?9&y zL&&2}=1I+(QCK@>IOc0=OjImklv%ZrXF6*o`V>|o?~2=f-WbiMr(J5x z1q`AmfqybXFHsZ?J?HdI-$~d!{nus29e&iqJ>#EzRoH$Ixi18=;4UzF?Jne{<{Z8C z3poE`{bJP++`N3e@7$)rDwIrnmI&Cx5Kx(~=|a(H_F=0o+)iuo=PfsDFjpi;Kpv>o zy~rmRVLEnyOO=IVfr^2=ODKiq?LrpOh&`rEB)1 z8UV#Ld|&MIx*R4}LIDu?Pf722#*~1g<%0#HvL~ceEon=xiYO9m+HLe2dB&FRcH$m! zh%T<=HMi6cFGsK;$MK=t&|}LoElm_(5#{dZpr5q4UE`E+*#O4Q8wH|hjv;cyS$`1< z6%pLSuPEJq?wqjUTH=u=B*=>==s|ge`6uApYP{3MF`nha?8?g$9(4 z0i2A|85l=b8+SK(;HKtXGR46O>QWDG*A#(&trfH}&CcAc!rcd0`0yx`#G>6bYG}8Y zvgy61SNn4iQ@4alZ2YKQ(SKNGDOXYgBbDdCyAqr9m}nJaO<7o%k)8MO#r~=i#Y95soLT=rA8qtNQ}o)|pt#$tG<^?Bl?TA) zVvC9eI0ki!3H2>O12s%>trKgz>CH`y?Z=G{m3qZU8bF;j7~d z{PwobA28Iw;OlW4sYmbE!*EMtdtYWMbmC8^8(G6Dq^&@w4>z8NRl$DveH)9$G1wP5 z64sx6(=7|nf4uS$o{*X?&Detamr5dO%_K$k3Vn!>w zmsBHe5sFKHM`=1!z(|yRLkhv{-V-k44Xt^T%&ZBEzgtH_gPvd)O$)7gPL+%~tiVc4 znk}0fA#nH=;gb5<9snKbbh|*)1rGby#!!X!v(>eCpA~NjcC1!b`};^33(YC?VmuEb zXiTGdl=`+4t$(w$UqxO!nZ|eI+JP8v1D5^%++6~(bmfo(1a);@jf8K*eM$u!qX!WE z$5HG5Dp5a5sbcoi-zy0Ug_S4f+I}kP5gDTWSfg25`QgZDCjp?N;`q@D5ocmEo~dH` z?`y}}Rd4N;qH*RGL4Zy&(-Vs#J0;zV77g&5OWTJZ8Gq5e(;YpErS6^k5-ey4qd$5? z8P@e__RwE?YV2)~P(LLQatvIr3~~cG1BaA6i!;DiB)FD9ShR+YQ1=okU5Keg*uKJ7 zZ4R3LJHHJW9UsbMlFJD8qES%IZb)RvxH)*8z=s7V=k{>;tP-`9<0oWstOQ!vlLF@1 z70Gj?E`PxKlt_9XRAkD8qZ+!{OXb|Y!!j;v&k=eUO0yX&HG*|rL9?T=eG$rzZTNd_ zJ3&75s-5X+O&ndi3W-Eu!wT~WJ_oM+JYqp}fhM^!)gkjBkYC-WJB;^t4eZ5WSGiI0 z#72)kf<%gqd2v|VQ!7S6Y}R7Dc&O$~Cz5=3-G2`K>Ec^LfBW9%{?_;J?0&a@fxAGi z?Bis_L8BQYkVz4cQhkn}h4*@|hquOh|DR|5ClrSpeRtT4IU}QR{%f2M>l%ys;{!4H(oe?5Nob>~J^G+(*e^~F24@I&_9>(% zUw>9Ex6Z2Hxr5wOnAV5w%p4jNc)Yh2s4t0VFDMGAT^LIAAQ^O0@xfA8e5w?sjZvnM zgh0U&faJ_9!_yVaP9`NIZd6YjL2@F;w`|=0;WFC4L~vMBV^(P1jjfdRjN_;!N_+VK zeE#!RZplQ5>%C!JAoatwY1k^&7O^THkAI#_7%;1(Xkp`$*ZknmOvvjZQLUi4C#RH> ztY6?9v>MyJM#nFNojI2QnG=ru8TY>bsoP?_wcUeRYt?UBV$&)zkXa@)xaxIIf)q0D zDeHSeh7h4PMjKXy*oM+2aVVnaZB2bdB=L)aB%JQC+eT8Ax#8GqzO zFR!0}E;1HHfw`9L8_u|9IP;TJNAoXJZ_YIzXQT!5FmRAHbrX)(wMhFtCx$|0;(JJ> z<{ zlqSi}Q#jMH+6UY<%(_6muy>jl9g;+Ev+T)`QzWBsPOD{}Kf+ldB)&gu=6tf``}%Ef zjlFLx`v$SuhSa3Dn-7P(&jn_c7l_`p4WQnfj~*oILmiaaJgw>WwGH1jk$-jRtWmn~ z7(=H2XJvu?#?5@x5t^5X4feJ4ddEOMCBLytqO%yZjuK%B>TP&=ay35u7WVf$70i+s z2!qmUF-*RrF6-_RUX}c{^IW%>`3p7o<9xN?yK@{Yt~&AYqV)be=GLM0Je0E`C`Rn-{LWk=uOLYz z8yf?)gO+e3am<&@hJdQHG81J#Y6a+oJ9%B5X2$NGRdEd@%&{{k$WA-v%ImdBKJk2+ zIJwYWUc5+lQ?N&c#!NZHDXw|n-Vv7e66){1VmxFj+E!S|bTpF8B!Al&cht$dxBng) zprxy~@JH-m%x1yeu^!7V;7&tgL+$!!&jlH@_t5>VEK>u??K!?WJ z3*~C(@z4ubBHXc(b2w}9)(sFwn10G_{07|junNabujPaC zTv#}L?}UfiA2)Ua8OvF>DuAPz9W{FlYekb?jyH2&X362eIe58 z5L%;O8y3nJ)qRdcunVQC(&F9GZ)Cu;`ExuuLmx*(unAz>W`iyxBun=sa-z65)^E{c zAI--NrEbAkFkF)mX0QqqmSxd>K(eg4@+T_ojvF(i^)LWxcO!#LjIsw z!=fGU6~fJw?SE7ExqqhlbQeUcGiU;k8Xz>m{|B?Sl=z{Qkm&7;CfDLrm}XkGTvj>S z?d)}~3VBN$krpzU&<5UAuKj_oEsOMJes9&AF}M4jY_%P*SxdKLNw~?Gmz70~^MxjW z7g)=OlGA-iZ3NdsoAZADOB2S|-0&^J`dU2HYG6xG`G0Y`j(+X0u$eNw7eUuwyI6uX z4RaN_>mQHF-=E59?Xmlg|09PTx0YU@`_dTqWkTBRck5CAH@?2c zz}uBZhJSeI+nsQ$URKG7VOWLPuGfHab5dY};4jAV84I|3gOZayt6h8UyEBRD0`OZm z0n*5nb2i`yL|X?ka|>_U&8<}1OFUFPt_yE$&u`sl-fwtABYE!u!TY*-6*{93HFSw^By!cTY`6 zbJs~CQX>!#zscGP@$JqsLd?cLe5U^<6D|Kd?J^0Z&~GR6ojM1IxQ+E#`WT90Vm8T? zybMh?K(z{3IMBsDDTRK+g?X0DZgATz&n?Qcsm8F|<*j_X#;LFN2jy#leWMOqCYCC^ z6@UMKz0+T7*QzC6^A_)ytJ~SCV!SFZF0HUNnQ#`H1Ci-zd8E}By$5?(_{QH zVs)FDh?DNrJ!5j!s$e!98w5He_AwG}i6q^sf3(`u3f*RWEStTI?iP~|Ml1`?ps)4% zqi4f(>peT!Uz`SZ4diZgS7TnZ{-t1@J7(^YupUTSw8t|Yfv&2kk=zHHwPy8v&wukV zTFf`jNOnAEwBjSgMRp_BZ@g*;hOZjsB#1+a%zU^^pomaG-QlEHnaM_c7!%*(NZE<5%yj$`KGbINX95o_UpYywA zx}>ighuzC!67S~ytd+hTTTc(|(%SJ;CU^do z?+O#Xi7u&O*TukPFuffWF_)l3v9@#G7_<#B}fSw+XY1K)cTg_`@rpOA^59!JJ*dwn?nMro(~MG9q5k51EXk@6&Z2a zw(pnT zOs`>AJh3j-YrkNTS>Wvqqq7(~5Z<}`e?_-3auOB%7DV@zu@$g`}!cz>bZPjiW3f1W*e3`MHb zgM5FASq*hXW8HVuP)tj(;wI# z6caQDPi@+QS>I(G{CxB$&Pw~N*G*uooE*5dX{w<_rbFPRWr3w0CucT@8~UTxVM<6Q zp1mK!e-o!RV}AqAeCAO|y9mybx)a*tz3?Yn3wWIGoO26(=O03V?VFvfnbPw!`0r+P z;aT!pJpZjf+^3l^_b_@JXrfHEsxW-sp}Uiiihk+k$AQ1sAJy87$uBaa?SA@?VcR)| z$^V#RD`F#b=&2zh;ZH>Z;}A@q%f(bDX|eEq-^Z_Q*MHbNFIk1pH>!h=@^?y=4p+tF zJ*(%T-AHKscNqo*ZRN$uQf=VcK<*n(FSNk+2`twC#5IH6=C~ff#+BW>$ zIZ)+0%nO&~HM(dYh~Mea!_(hrd66#oFQJpl82Tw^0N5yaksqXdR5(Gq5{LX=@H^CI zLNVH5l=fIIUB)?;Kqjh8UpCik5Ppqb0+&hXqkmuLSmn2Jfqw~LFYs(3OX}T`SSO{8 zDvvsgf^gt>CS?DXQLYP)gM2{2Nc-?PP$QL@fjI1STRe1V#;9Z9LnCUn`$6IJuu9mB z(B-)vTaafP)NM$@KJk*y1xF-#FhS>xcVi&qQegeTtZy_Qz}A{)?hStJJGX~-Hqd4v zJbw?bx|QPqo&0l4G-T(qZ8G5xJ!taa8RgSL0H>lN z-_gCH$j332FFynM<=%Y&J!0{va)166dsgp0-P2k;*Nw(}pkJPY8f7hBcG$zqzQEY@ zhGF8>946$R7~)*_r}7ya!6Ept84v8ZKO4$@1_=Z@j`7$)WOqO@!SBa%g7XfaGkFuk z3Tm9RjiNpWd->FLpF)E6&nHci4$yNrAG=uLM`A5(hoMZ|TuAPeFBnVH2y#pKOf?AM?t-Gj3^BAK(cr~Rz! zinzdt@N+bo7Kxu=>al#k+X@yq(y#^i$)<#|qG+46$^tZ3q7NQ_b#X&`GLyJlo;Jt6s_{$Z; zB?X_da^!GZ*M!zlcj({FnHVk%lfJTYd{!qv0LTcF&Pn)_1=Z%yZ5y7kF5Eg)xpL|X z)_>rsCkE8c#bN`AHnK3LS1$sLxM&{V0jj-JKuTFgQt7rnvH%FLP6Zg-2~ zBAd31csSc`U8{JT*)R2(-sGtbW4aq++L0QD1GJcS5MF-2`S3)I*mai?5_^Z;>EL?J zVH|J+V6>oYR%Pv^PhD>Q?PVVSJJj*m-O80CPR4f1)$77Q&wt4OZ$;}I?<(K}x8DQ` zNf-W+CP$qgc*Pd{Zi0FK;(b<9#sWty@) zc>AT6*z4Y7;eS-}66!%q5qA}QClBgW9hEAoO@kE97hej3K@n;j6aK`ViO;DL5=Y(o z*XW&bub3%I2vlbLHTrd>?eb4I@hIrsKpwhza7GLT3A|DlaRmi3X!(89@m!Jv$YC>e zGSNEcII(MuL>}&u^~X5}jm*Y>A2W{^(cnDDwg0^#kbh2CTyjO_E@;bMH+7AeTPuc$ zOAtf?T4*fPs&N2ye2`Y{x$Ti_26jct=W~nZgmJTiIxQRmCS9NLtcdvt<5@~8u8St$ z5C2{(|B3wlqi-Lli*vjTw)`jBTFswh_mU!J-pg@ZrZ<=8he8MuhnjI@L)fo0v|byb zE!LqlbbpZ0P2PAl>(58maq-(fe2R0W&Zl0O+%J>8(#T<~G`oxQEMIQ6uU+#F$PPYc zi=cJMu8e8J_Vu0iE0$kaiKm7GDGO)Gb+S%U8%*+WDU8PSHHSuY-PdTD9KD_OK9Zn^ zw~(!N#kHTw{E!X>fpLeuC_RDY?tuMW;y(9hc7K;Xa*z1gOf@M}teXObmQFn_g}J0D z@2NT$&d&*&AN4uA`B3kCyzs(IgPtCF4gvy%tzt&H-C)O<3&+Rv2;6ZmD@+E^VN z&0pADPVn-SUUw3X#?I(2QsaL#9$qyI8FCx3rxDo$`>Xe(mm7cZaWnYLbuJ@r%2abj z^Jf?p11vTbmzPXp9!wK236X9fuJRAg{zeg&9db5dgn&2;lPM4vFT%YFxN>OUye4a41Ck85G9n~v3YnBF|vxbsd*b>n6DRN+aIa?F&uZQbeg zHSUam7QIey4Zk|w(1wq&rr+oCT7E_4%jGZY3Oc9DdX71-zFz;Q+sl^QR5G}?S%h=u zeb*a;ZwYiK<+rgT{d5i{pnlt&%b~0%H_z$*=^rd%n=aE>N}*M^5otEr_Ob#hhpfQB8=9dp z#9kPMG}JOqYi%CX#j&iFdtzM};do{A_} z`UARd^UKnyVm5!i>JPJE-a1E#&qYIg+f{?xPT%fZkd`xyY8D3Mb}Tb6$%p*(N?59@ zt+6R$B`7dM|A3fFnL5ha$UuaN2@GmnCmKSJMKqglaC5&##uyCN*?)Q~w+sB46Q15U z=`ZVwwKB?Qu=te^Nx~nP{%?2zFdDILognQvAJjdLVjFZ&lPVC1wbm)p9j~mjod?fj z#En|GMOao8!HS&DTwRwliB@O7Me1Bz#FyvG?_iNalqGN*#zMrK0{=B`*B{GGQ2N~u(5Ae%xtr&%=1O-2dC=aJDlzj3qFZV|Sy#F{F!U9@}$^ z+8CbRJYP!>#D6vS!*HhM8{zUuFNFA&#ppbRJ<@`4*?tZ}m;5?x2KfPS|_sG_612^If}_Shj{4eb1Wusvejv6I#PjDj0ay|{DZ`lH;Y$nF zJ8n0P6xn|}EZtgH^eSV@h}(s*F}M=mM$4?lpnqEZ>P26S?zd#JV%&?>1U85SB!eL& ziYD{qZB-&~to=FKWOmB8U#h^5z>7xK7ce&8FqjL6Rzf_=fsarq#Pub?Y01+8in^S@3>|SpDyN7k>Hy0R)Hr)to_qUHO3a6^>M#_ zr)5R+HA;NtFeYhz+>V!PxOZ11zWXbZS2Se1Y=p$A<7>==@<$}><1D@~a#Wbh=LAl9 z#|kkFDX3CHdt&!D5NzSAbK`XR-^?Z*8h_WL&(R?hte3OUQ3|L=+zgP8ua~L-3%snK z5?;dgl1v4STup7N+ zYdo}&AxFd-_CO)`NV$^vaRP0U&vrgGV?16KuB5C$;_PxkCq&hQ*{^(N$TN1@Y<~@> zv)+A2zH@3c`35k~Jw*p{*IgHd@%(k%9QqbL3J((58UJSVv<^YIdLel^!>)0-1^l}QG*)Jg z!C-g%d{n6X3)S8Hq_{Zlo{esve^0BAxR25Ky}8P6cl^`t7cp!&Er6!(`+pzgUQ2bp z&Lh?SU95OiI*&~VCd6k@`v&^rWPr-__OHX!(k1WaCNj#$jEX|#sNqi1s#~Fn+8PF` zK;nIGzYZZN%c0(g!69WbNor%{Do>^J43HULAI1EBB=$FMRT9kVgII-O?xx2)igB&y z1Ujl(X^m zAaYWIScEJIrU8yhuaPz&KgaXX$n39)M43YFjsdPMHN3I-a}+4?<9`N%8Fx-rP(jrZ zi};aRYde_qaTNzZwL^IlLy(Ci<>5JqTDE0k=ta@f-hJaLlWP^r>NB(rHdFNaYZrBIGhAaf*b@w86j$Inm_r( zGpJKC=!{O>td^i}fPeP9AK>MeE|=*NpyexSLft>9Ql2;I{tAjOGx3_FDIp2_UU71P z+Rx^@Q?cqXy?Pt=!n^6P8w22);Qb5IC3kq5qKi9&2U+Q^J)sNSF|_^gliBRTArF+M zBrT$c4!xo=0nG|c9JT?iNJpK(j9mOj)HCIjFekYYV$P0PGJja-A=XL!4k0cq=sK?5 zE^ha1ZCgqQTo=8V(sTPwxU)x^Oh-PKXK`Bc(Hi}8PQ0bP5XDlKoe8r%!eEk;pUg@h zodK<_=FlGN92|*1`vU}S(v_jl)oM#h4;vUyVN1t(9LyiTI)dDkv7CB_HyVlV{-IDn zu25f{NUW|*NPnavOll<&zfy(xi|LQI2-;wbwPm+bB7O%nvT(kyNOBu-i0&90T=N{Aa zW7EgY0j=dOhv(cJ&lY+Q{(AJs=C>6Bd#CmKVylQys(-N1#`sl@$`KQyq|!P?2y45r zCNSh#ku9kgK0~LmIz6Q;w-}&S1qmJ;AmXzAo!>=(r^3V?+e9-az$i6ntV#yg^}+uc zWE=+5gHyaaEe1v`waWC-a_+G%7%@-0cuu0|*RtiiA5)TB3jlR963V7O@Q~0s>Li*z z?w{YfaDQF@*>J#9&93xl_Oybg@k~`livM-j+i1%)c9WmM67ZdZSYcX|gAhkeF|(Ip zY?~Lgth`5qp2Qm+#N$O$u?IJCZ!}eI^?BZtKo}3DP)a$0+8vJ>ddyyX# zl^HqNR_Zh3@qf1(tmv#r$R`6h7-QWjq#vZvYdr&nAqYdh)08SK9?6FYLIgWUH&_aO zRB}O(6xq){N&|!uStmNi&l+SR(0|4oi2ChJ)v{NJjdKV0v%A@uOp49NH_qG!(VlG5 zE2sHmb%|A7NQ&ZQZX*gke?57!50o}_!z^1F5q}Qv&7;yF2!U51C(Q<=%7ba=Yn-J! z&NOMT)e%TZa@uF2y7KMbFh@GsW8^MPQQ5vQ(=N2r9wN)3Dc4%!X@Bo%CN0>- z4K*qd<$JnPH61xYkSgq~US{N^W6_k*CEaXdk&vJ>(4k5ix#QBdHy;QhL&A_Di&gvi zy@0$fW1-AXN`J(m>%QdwO&d}!rzbE$SEbGrSwN-Zoq7E*F}j!%l&j6}-cn)-uFUfk zI;&EneKC1@A4`Amy7;*acYkYnM*ANxO*7_o)w24oSGwf2M>fX5it~^8cai@H{aOE~ zh*R@SS5_{*w+4o_8ZER{CtZCZyM64M6SrJHWpyy6+%qJYGw(g6^a$OepfInf8}&hF zh2VjEo|daQ+aCi`tpl9w{X;LBTX> zhB$JZKMx1<&5a+5Xv4Hk7*n9pO^u3j7=3~s5!{qv#DgI?WL~SQlP&jdUOsA4tmX}C z+0H4POoR?f6t^;ho_~RvtyS_{wYP1!=)bwVco$z?oL@EAdR<@jGhGLr<`+TPwpTko zxTeR@l%jemPVw;gE{<37HJ!Td?z-Q89-G5|RKtUuX;#*kz?43=)m2}|w~eW}>lZr; zQ(~0<@k(`hdH<*GdiU?+V$Z>0u29a)OKEV!0EU-j7fcI*T`E% z?LDhqs5SIqbN6Q3!!)AJBSxq1lO$BFuLptA;mVEdrMeS#hKoo!0~M?>5e(p7uv|y} zGB>h>SJZEtv+ItR5LA17-Mka0;|w((n=o4ACM$GD^f!T=i9UsXZuoqKRYd**qYdQp z(_!w+VH=k@1XMPQDD0t4dg|bhpks(U+An73ZQh%P)ixna`O&yqff+bIB?>4f^dLJ097;PwbKnicB}d|Cj6{hqa}4B=2L!v+ z;*JL^QxC7ZP{NrEU%w09j-w+EFB{an_1L7gbQNfMzqa51!Y#^x`@a?Yd&v2br$IJ~ z|JgU=hAA{jTKunaMO1}MYd;0@NXC4#=-SEd5_gO4dtX|-A$t}o zV+E0-tN7$#X7m;Z-n7?V5xLZJKLr7+9d{(Sobnc40J`LDYt(8*V||Za395o zBX*l>BFC2w8|3z~>NVBj|5>=41`zXRPoCO6u878=uS7&S+5OOi#4&0JAinsb@P9W` z3&zraBDd$)Xl6Ba!ivz8Os<2FmN42r6VaE7VvA7~X;%8S6wog964@YR9|g3XqTmI{ zCC8+DRMg10%W5_!(jBShYBE^piHTte&oOBxuEy-f%&E)ackue5M>=7}?EP3`)-qF6 zdl-e}=owBt5snzLJjf7UKqd|BD}UU&=JDBuO~x?wOxFYtDxaZyuQAQKb%S`(_~TO* zVux9ii6f6T@x|dUZrNWJ);%lM?l@75YEY%Dz1-H{-TGFPalw_8K3lLBh`On7v`GQL z?nN!wAc!s&=a`zZdKRolke6niIoS?(z^szlN)y_+jECFoTRu9TKZ~Xj5Pw`+f=q&o zb2;ZgP0HEVyrJjX6^L!vye#xLwB)HxUHSen{0#u=*DM^eSoPv%tf!9ly+~UQgemt= z7q>%$x=MuxOvhuAGX-AOwxJKH!WvT~Sj%W!jzf`X7_LS~vKY5)!`y%Ix0iRB{Fj>u z1}v4>kwfM3{GPAczxF(RmVY@Cibcf{t~HU6o+9?bu)tez@$_jfHRgY^ZgcpTTtkW{ z07-$EW%R|FfJ*#>gjVpj^ClzeF4_~Co{bfrA!~r^$CccZju{8QS8m4wMuGBanVL%vX^n=sJ);lHeZ+L)`jFB0RHY8ZI zDY4Y^HE!$O@eJ>gNZwl*EUJ82CS@b41t6g`9ppWyUI9=GyMmir#Uiwla#(L;_HaV; zui36dLi0`oPubxW2!GPJi=k|(Q-E@>DzEh(J}kGOYgw)(eKM8@X{@e6829+Q@xGYf zLqS(wW2?t2IFVGA=-{bgY~x`|rI7d6x>0!p@6i3)G)RHP_^Xuxj@!ZEJvM8{FBdcjydfDm}O^Y5^Q-6%aU_rD>unLYnt0i%Z zd!xR*AxxEF%;VITiY8Mp@aVF|iG~lURnai%QT~7IYPg@G-egMDU&*ovgX+6XOAql< z({ev%4_9~bCJc3^5PB_4!BPba!8iOj+5R>`t#E$pk~r9m$R?|2$fY|05JuBX zfyK%e2G?P4%YO?8uy;yzZAU3CIR7&Ar~$0Y^#Xfq>m~=C{ehdKORTv}ORK?JQQ|47 zuo)w_l4PQna4f0xJ|;k(`FO0elQOWlIX4n?|GzVxe(rH!Ib z&8+7+21H8)6^8~u^hPyHz#JN5l6QibMK1)k9#i`*6@P+8i-PrRjRy*K8cFM}udz=k zVAZaxbOk_sOcyR>((}aA5@Hr7L};t8M`Fc|207t&_YDl7ATs@ zAZDm1%!sRF>}*{ZaXj0*MT-ArwzX^4!ogYFSRU6Yx^mY!Bp_R~DyAK3YLnlk;WuO~ z(6BLJ!++37f&~3!M>fxcnUq6py0R5@(YMi=MJVv#qcUP0v)>;W=-k;Hn}XbDxPSF| zAV<7ldNN_YS;L{T&UhT&TmK)G|Fyb*Yqi#`DQWb(7#Xv6)_)w<_}6<~jb-|0j_2Vl zkdioyJW*j=P-8PMf-VBC(?KJm*&%ofzs2W@f`6X3Jm^(xcWPxm>h2@l99nJ{dljrj z1BcIlDp8y=<1|B*M(Z{yOQ@0JhmXnnpUdOq<>v13`8>9!lfy};@zaW#e{RQm;e=NE zsTa7AlDJ|kS=z?MPqmYe?SE(H`Mf?xvAaEw*ZqSH?C0(OzO<%e#g6+rWI`KH{a@|t zq<_IG%bt_Mz_Jk?u+cbe<0e)0mKu3gPn^0D?8HJ^xI$B}y*Bmm&h8FQDCCit%EZrj z^TmlI9V70%_Wk|Ey-5jV!{cUQC4LtW33JmVcZ?BG(rVH6#c$SMfaGZeauX9;g(Eebwmh;_EGn3BoUO1t3QsCN`iujB57)f zfa2;uTcBt8{(+`zn~61o5Y diff --git a/test/fixtures/tz-version.txt b/test/fixtures/tz-version.txt index b74fa117a22328..74a7fa8ae9e6d5 100644 --- a/test/fixtures/tz-version.txt +++ b/test/fixtures/tz-version.txt @@ -1 +1 @@ -2022g +2023b From 29d7aecf42772e64f2202f854b51bbbee2f0f080 Mon Sep 17 00:00:00 2001 From: Chemi Atlow Date: Tue, 28 Mar 2023 15:10:34 +0300 Subject: [PATCH 162/186] test_runner: expose reporter for use in run api PR-URL: https://github.com/nodejs/node/pull/47238 Fixes: https://github.com/nodejs/node/issues/47231 Reviewed-By: Moshe Atlow Reviewed-By: Benjamin Gruenbaum --- doc/api/test.md | 28 ++++++++++++++++++++++- lib/test/reporters.js | 38 +++++++++++++++++++++++++++++++ test/parallel/test-runner-run.mjs | 36 +++++++++++++++++++++++++++++ 3 files changed, 101 insertions(+), 1 deletion(-) create mode 100644 lib/test/reporters.js diff --git a/doc/api/test.md b/doc/api/test.md index e59889fff78731..165d38f620b737 100644 --- a/doc/api/test.md +++ b/doc/api/test.md @@ -520,6 +520,10 @@ test('spies on an object method', (t) => { added: - v19.6.0 - v18.15.0 +changes: + - version: REPLACEME + pr-url: https://github.com/nodejs/node/pull/47238 + description: Reporters are now exposed at `node:test/reporters`. --> The `node:test` module supports passing [`--test-reporter`][] @@ -546,6 +550,16 @@ Node.js, and should not be relied on programmatically. If programmatic access to the test runner's output is required, use the events emitted by the {TestsStream}. +The reporters are available via the `node:test/reporters` module: + +```mjs +import { tap, spec, dot } from 'node:test/reporters'; +``` + +```cjs +const { tap, spec, dot } = require('node:test/reporters'); +``` + ### Custom reporters [`--test-reporter`][] can be used to specify a path to custom reporter. @@ -739,8 +753,20 @@ added: **Default:** `undefined`. * Returns: {TestsStream} -```js +```mjs +import { tap } from 'node:test/reporters'; +import process from 'node:process'; + +run({ files: [path.resolve('./tests/test.js')] }) + .compose(tap) + .pipe(process.stdout); +``` + +```cjs +const { tap } = require('node:test/reporters'); + run({ files: [path.resolve('./tests/test.js')] }) + .compose(tap) .pipe(process.stdout); ``` diff --git a/lib/test/reporters.js b/lib/test/reporters.js new file mode 100644 index 00000000000000..287c07510bc13a --- /dev/null +++ b/lib/test/reporters.js @@ -0,0 +1,38 @@ +'use strict'; + +const { ObjectDefineProperties } = primordials; + +let dot; +let spec; +let tap; + +ObjectDefineProperties(module.exports, { + __proto__: null, + dot: { + __proto__: null, + configurable: true, + enumerable: true, + get() { + dot ??= require('internal/test_runner/reporter/dot'); + return dot; + }, + }, + spec: { + __proto__: null, + configurable: true, + enumerable: true, + get() { + spec ??= require('internal/test_runner/reporter/spec'); + return spec; + }, + }, + tap: { + __proto__: null, + configurable: true, + enumerable: true, + get() { + tap ??= require('internal/test_runner/reporter/tap'); + return tap; + }, + }, +}); diff --git a/test/parallel/test-runner-run.mjs b/test/parallel/test-runner-run.mjs index 6ac007bfb5dd6c..b37bdf94f38c02 100644 --- a/test/parallel/test-runner-run.mjs +++ b/test/parallel/test-runner-run.mjs @@ -2,6 +2,7 @@ import * as common from '../common/index.mjs'; import * as fixtures from '../common/fixtures.mjs'; import { join } from 'node:path'; import { describe, it, run } from 'node:test'; +import { dot, spec, tap } from 'node:test/reporters'; import assert from 'node:assert'; const testFixtures = fixtures.path('test-runner'); @@ -65,4 +66,39 @@ describe('require(\'node:test\').run', { concurrency: true }, () => { code: 'ERR_INVALID_ARG_TYPE' })); }); + + it('should be piped with dot', async () => { + const result = await run({ files: [join(testFixtures, 'test/random.cjs')] }).compose(dot).toArray(); + assert.deepStrictEqual(result, [ + '.', + '\n', + ]); + }); + + it('should be piped with spec', async () => { + const specReporter = new spec(); + const result = await run({ files: [join(testFixtures, 'test/random.cjs')] }).compose(specReporter).toArray(); + const stringResults = result.map((bfr) => bfr.toString()); + assert.match(stringResults[0], /this should pass/); + assert.match(stringResults[1], /tests 1/); + assert.match(stringResults[1], /pass 1/); + }); + + it('should be piped with tap', async () => { + const result = await run({ files: [join(testFixtures, 'test/random.cjs')] }).compose(tap).toArray(); + assert.strictEqual(result.length, 13); + assert.strictEqual(result[0], 'TAP version 13\n'); + assert.strictEqual(result[1], '# Subtest: this should pass\n'); + assert.strictEqual(result[2], 'ok 1 - this should pass\n'); + assert.match(result[3], /duration_ms: \d+\.?\d*/); + assert.strictEqual(result[4], '1..1\n'); + assert.strictEqual(result[5], '# tests 1\n'); + assert.strictEqual(result[6], '# suites 0\n'); + assert.strictEqual(result[7], '# pass 1\n'); + assert.strictEqual(result[8], '# fail 0\n'); + assert.strictEqual(result[9], '# cancelled 0\n'); + assert.strictEqual(result[10], '# skipped 0\n'); + assert.strictEqual(result[11], '# todo 0\n'); + assert.match(result[12], /# duration_ms \d+\.?\d*/); + }); }); From fe449a20af144718cc69e9627b7fac1cc7820757 Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Thu, 23 Mar 2023 15:53:16 -0400 Subject: [PATCH 163/186] src: fix some recently introduced coverity issues Signed-off-by: Michael Dawson PR-URL: https://github.com/nodejs/node/pull/47240 Reviewed-By: Richard Lau Reviewed-By: Luigi Pinca --- src/dataqueue/queue.cc | 4 ++-- test/embedding/embedtest.cc | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/dataqueue/queue.cc b/src/dataqueue/queue.cc index 7cf066a7185913..8224b82eba2e7c 100644 --- a/src/dataqueue/queue.cc +++ b/src/dataqueue/queue.cc @@ -787,7 +787,7 @@ class FdEntry final : public EntryImpl { public: static std::unique_ptr Create(Environment* env, Local path) { // We're only going to create the FdEntry if the file exists. - uv_fs_t req; + uv_fs_t req = uv_fs_t(); auto cleanup = OnScopeLeave([&] { uv_fs_req_cleanup(&req); }); auto buf = std::make_shared(env->isolate(), path); @@ -849,7 +849,7 @@ class FdEntry final : public EntryImpl { } static bool CheckModified(FdEntry* entry, int fd) { - uv_fs_t req; + uv_fs_t req = uv_fs_t(); auto cleanup = OnScopeLeave([&] { uv_fs_req_cleanup(&req); }); // TODO(jasnell): Note the use of a sync fs call here is a bit unfortunate. // Doing this asynchronously creates a bit of a race condition tho, a file diff --git a/test/embedding/embedtest.cc b/test/embedding/embedtest.cc index bd639368acdf86..3592ccb9813228 100644 --- a/test/embedding/embedtest.cc +++ b/test/embedding/embedtest.cc @@ -75,7 +75,7 @@ int RunNodeInstance(MultiIsolatePlatform* platform, if (snapshot_as_file_it != args.end()) { snapshot = node::EmbedderSnapshotData::FromFile(fp); } else { - uv_fs_t req; + uv_fs_t req = uv_fs_t(); int statret = uv_fs_stat(nullptr, &req, filename, nullptr); assert(statret == 0); size_t filesize = req.statbuf.st_size; From 9dfd0394c54edd7ac505ce623edcd4fd9ce3d51e Mon Sep 17 00:00:00 2001 From: Khafra <42794878+KhafraDev@users.noreply.github.com> Date: Wed, 22 Mar 2023 16:12:45 -0400 Subject: [PATCH 164/186] test: remove useless WPT init scripts PR-URL: https://github.com/nodejs/node/pull/47221 Reviewed-By: Luigi Pinca Reviewed-By: Filip Skokan Reviewed-By: Yagiz Nizipli --- test/wpt/test-file.js | 5 ----- test/wpt/test-structured-clone.js | 5 ----- 2 files changed, 10 deletions(-) diff --git a/test/wpt/test-file.js b/test/wpt/test-file.js index a48b2fb55299b9..ca337359db263c 100644 --- a/test/wpt/test-file.js +++ b/test/wpt/test-file.js @@ -4,9 +4,4 @@ const { WPTRunner } = require('../common/wpt'); const runner = new WPTRunner('FileAPI/file'); -runner.setInitScript(` - const { File } = require('buffer'); - globalThis.File = File; -`); - runner.runJsTests(); diff --git a/test/wpt/test-structured-clone.js b/test/wpt/test-structured-clone.js index 26edf0607083a9..4dcd44ad6a40bb 100644 --- a/test/wpt/test-structured-clone.js +++ b/test/wpt/test-structured-clone.js @@ -4,9 +4,4 @@ const { WPTRunner } = require('../common/wpt'); const runner = new WPTRunner('html/webappapis/structured-clone'); -runner.setInitScript(` - const { File } = require('buffer'); - globalThis.File = File; -`); - runner.runJsTests(); From ca5c6029fb0b9a303d2b81cda86fa58ac8728d09 Mon Sep 17 00:00:00 2001 From: Richard Lau Date: Thu, 23 Mar 2023 11:50:21 -0400 Subject: [PATCH 165/186] deps: V8: cherry-pick 3e4952cb2a59 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Original commit message: [test] fix uninitialized error In op1a.Equals(&op3) call, that->parameter() is undefined. which triggers uninitialized error from gcc. Change-Id: I87f1fcba3e57adbb5a1e745a3d787c62a87fd1d3 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4307714 Commit-Queue: Toon Verwaest Reviewed-by: Toon Verwaest Cr-Commit-Position: refs/heads/main@{#86267} Refs: https://github.com/v8/v8/commit/3e4952cb2a5969e42e782a66b948dc0ee88c812e PR-URL: https://github.com/nodejs/node/pull/47236 Reviewed-By: Jiawen Geng Reviewed-By: Michaël Zasso --- common.gypi | 2 +- deps/v8/test/cctest/compiler/test-operator.cc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/common.gypi b/common.gypi index 65720283c54109..b1d87780db54c3 100644 --- a/common.gypi +++ b/common.gypi @@ -36,7 +36,7 @@ # Reset this number to 0 on major V8 upgrades. # Increment by one for each non-official patch applied to deps/v8. - 'v8_embedder_string': '-node.11', + 'v8_embedder_string': '-node.12', ##### V8 defaults for Node.js ##### diff --git a/deps/v8/test/cctest/compiler/test-operator.cc b/deps/v8/test/cctest/compiler/test-operator.cc index 7428359223b015..33f0d537f3bc81 100644 --- a/deps/v8/test/cctest/compiler/test-operator.cc +++ b/deps/v8/test/cctest/compiler/test-operator.cc @@ -210,7 +210,7 @@ TEST(TestOperator1double_Equals) { CHECK(!op2b.Equals(&op1a)); CHECK(!op2b.Equals(&op1b)); - Operator op3(25, NONE, "Weepy", 0, 0, 0, 0, 0, 0); + Operator1 op3(25, NONE, "Weepy", 0, 0, 0, 0, 0, 0, 1.1); CHECK(!op1a.Equals(&op3)); CHECK(!op1b.Equals(&op3)); From da2210ef3f24b575e25d71745cec0ea3de5dd0d5 Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Tue, 28 Mar 2023 06:31:20 -0700 Subject: [PATCH 166/186] doc: fix typo in SECURITY.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/47282 Reviewed-By: Colin Ihrig Reviewed-By: Tobias Nießen Reviewed-By: Michael Dawson Reviewed-By: Luigi Pinca --- SECURITY.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SECURITY.md b/SECURITY.md index 450335951b64cc..0ce5cc03e23c3c 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -193,7 +193,7 @@ the community they pose. * If Node.js is asked to connect to a remote site and return an artifact, it is not considered a vulnerability if the size of - that artifact is large enough to impact performance and or + that artifact is large enough to impact performance or cause the runtime to run out of resources. ## Receiving security updates From 09a4bb152fbf24249076572643d976963ca58644 Mon Sep 17 00:00:00 2001 From: James M Snell Date: Sun, 26 Mar 2023 15:05:44 -0700 Subject: [PATCH 167/186] quic: add multiple internal utilities MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * add the CID implementation * add the PreferredAddress implementation * add Path and PathStorage implementations * add Store implementation * add QuicError implementation PR-URL: https://github.com/nodejs/node/pull/47263 Reviewed-By: Yagiz Nizipli Reviewed-By: Stephen Belanger Reviewed-By: Tobias Nießen --- node.gyp | 10 ++ src/quic/cid.cc | 148 ++++++++++++++++++++ src/quic/cid.h | 126 +++++++++++++++++ src/quic/data.cc | 259 +++++++++++++++++++++++++++++++++++ src/quic/data.h | 137 ++++++++++++++++++ src/quic/preferredaddress.cc | 159 +++++++++++++++++++++ src/quic/preferredaddress.h | 72 ++++++++++ test/cctest/test_quic_cid.cc | 95 +++++++++++++ 8 files changed, 1006 insertions(+) create mode 100644 src/quic/cid.cc create mode 100644 src/quic/cid.h create mode 100644 src/quic/data.cc create mode 100644 src/quic/data.h create mode 100644 src/quic/preferredaddress.cc create mode 100644 src/quic/preferredaddress.h create mode 100644 test/cctest/test_quic_cid.cc diff --git a/node.gyp b/node.gyp index cad1061d878b59..45304452e74f33 100644 --- a/node.gyp +++ b/node.gyp @@ -335,6 +335,14 @@ 'src/node_crypto.cc', 'src/node_crypto.h', ], + 'node_quic_sources': [ + 'src/quic/cid.cc', + 'src/quic/data.cc', + 'src/quic/preferredaddress.cc', + 'src/quic/cid.h', + 'src/quic/data.h', + 'src/quic/preferredaddress.h', + ], 'node_mksnapshot_exec': '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)node_mksnapshot<(EXECUTABLE_SUFFIX)', 'conditions': [ ['GENERATOR == "ninja"', { @@ -836,6 +844,7 @@ [ 'node_use_openssl=="true"', { 'sources': [ '<@(node_crypto_sources)', + '<@(node_quic_sources)', ], }], [ 'OS in "linux freebsd mac solaris" and ' @@ -1023,6 +1032,7 @@ 'sources': [ 'test/cctest/test_crypto_clienthello.cc', 'test/cctest/test_node_crypto.cc', + 'test/cctest/test_quic_cid.cc', ] }], ['v8_enable_inspector==1', { diff --git a/src/quic/cid.cc b/src/quic/cid.cc new file mode 100644 index 00000000000000..019896104fb63b --- /dev/null +++ b/src/quic/cid.cc @@ -0,0 +1,148 @@ +#if HAVE_OPENSSL && NODE_OPENSSL_HAS_QUIC +#include "cid.h" +#include +#include +#include +#include + +namespace node { +namespace quic { + +// ============================================================================ +// CID + +CID::CID() : ptr_(&cid_) { + cid_.datalen = 0; +} + +CID::CID(const ngtcp2_cid& cid) : CID(cid.data, cid.datalen) {} + +CID::CID(const uint8_t* data, size_t len) : CID() { + DCHECK_GE(len, kMinLength); + DCHECK_LE(len, kMaxLength); + ngtcp2_cid_init(&cid_, data, len); +} + +CID::CID(const ngtcp2_cid* cid) : ptr_(cid) { + CHECK_NOT_NULL(cid); + DCHECK_GE(cid->datalen, kMinLength); + DCHECK_LE(cid->datalen, kMaxLength); +} + +CID::CID(const CID& other) : ptr_(&cid_) { + CHECK_NOT_NULL(other.ptr_); + ngtcp2_cid_init(&cid_, other.ptr_->data, other.ptr_->datalen); +} + +bool CID::operator==(const CID& other) const noexcept { + if (this == &other || (length() == 0 && other.length() == 0)) return true; + if (length() != other.length()) return false; + return memcmp(ptr_->data, other.ptr_->data, ptr_->datalen) == 0; +} + +bool CID::operator!=(const CID& other) const noexcept { + return !(*this == other); +} + +CID::operator const uint8_t*() const { + return ptr_->data; +} +CID::operator const ngtcp2_cid&() const { + return *ptr_; +} +CID::operator const ngtcp2_cid*() const { + return ptr_; +} +CID::operator bool() const { + return ptr_->datalen >= kMinLength; +} + +size_t CID::length() const { + return ptr_->datalen; +} + +std::string CID::ToString() const { + char dest[kMaxLength * 2]; + size_t written = + StringBytes::hex_encode(reinterpret_cast(ptr_->data), + ptr_->datalen, + dest, + arraysize(dest)); + return std::string(dest, written); +} + +CID CID::kInvalid{}; + +// ============================================================================ +// CID::Hash + +size_t CID::Hash::operator()(const CID& cid) const { + size_t hash = 0; + for (size_t n = 0; n < cid.length(); n++) { + hash ^= std::hash{}(cid.ptr_->data[n] + 0x9e3779b9 + (hash << 6) + + (hash >> 2)); + } + return hash; +} + +// ============================================================================ +// CID::Factory + +namespace { +class RandomCIDFactory : public CID::Factory { + public: + RandomCIDFactory() = default; + RandomCIDFactory(const RandomCIDFactory&) = delete; + RandomCIDFactory(RandomCIDFactory&&) = delete; + RandomCIDFactory& operator=(const RandomCIDFactory&) = delete; + RandomCIDFactory& operator=(RandomCIDFactory&&) = delete; + + CID Generate(size_t length_hint) const override { + DCHECK_GE(length_hint, CID::kMinLength); + DCHECK_LE(length_hint, CID::kMaxLength); + Mutex::ScopedLock lock(mutex_); + maybe_refresh_pool(length_hint); + auto start = pool_ + pos_; + pos_ += length_hint; + return CID(start, length_hint); + } + + void GenerateInto(ngtcp2_cid* cid, + size_t length_hint = CID::kMaxLength) const override { + DCHECK_GE(length_hint, CID::kMinLength); + DCHECK_LE(length_hint, CID::kMaxLength); + Mutex::ScopedLock lock(mutex_); + maybe_refresh_pool(length_hint); + auto start = pool_ + pos_; + pos_ += length_hint; + ngtcp2_cid_init(cid, start, length_hint); + } + + private: + void maybe_refresh_pool(size_t length_hint) const { + // We generate a pool of random data kPoolSize in length + // and pull our random CID from that. If we don't have + // enough random random remaining in the pool to generate + // a CID of the requested size, we regenerate the pool + // and reset it to zero. + if (pos_ + length_hint > kPoolSize) { + CHECK(crypto::CSPRNG(pool_, kPoolSize).is_ok()); + pos_ = 0; + } + } + + static constexpr int kPoolSize = 4096; + mutable int pos_ = kPoolSize; + mutable uint8_t pool_[kPoolSize]; + mutable Mutex mutex_; +}; +} // namespace + +const CID::Factory& CID::Factory::random() { + static RandomCIDFactory instance; + return instance; +} + +} // namespace quic +} // namespace node +#endif // HAVE_OPENSSL && NODE_OPENSSL_HAS_QUIC diff --git a/src/quic/cid.h b/src/quic/cid.h new file mode 100644 index 00000000000000..bfd6eb47c9ff9b --- /dev/null +++ b/src/quic/cid.h @@ -0,0 +1,126 @@ +#pragma once + +#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS +#if HAVE_OPENSSL && NODE_OPENSSL_HAS_QUIC +#include +#include +#include + +namespace node { +namespace quic { + +// CIDS are used to identify endpoints participating in a QUIC session. +// Once created, CID instances are immutable. +// +// CIDs contain between 1 to 20 bytes. Most typically they are selected +// randomly but there is a spec for creating "routable" CIDs that encode +// a specific structure that is meaningful only to the side that creates +// the CID. For most purposes, CIDs should be treated as opaque tokens. +// +// Each peer in a QUIC session generates one or more CIDs that the *other* +// peer will use to identify the session. When a QUIC client initiates a +// brand new session, it will initially generates a CID of its own (its +// source CID) and a random placeholder CID for the server (the original +// destination CID). When the server receives the initial packet, it will +// generate its own source CID and use the clients source CID as the +// server's destination CID. +// +// Client Server +// ------------------------------------------- +// Source CID <====> Destination CID +// Destination CID <====> Source CID +// +// While the connection is being established, it is possible for either +// peer to generate additional CIDs that are also associated with the +// connection. +class CID final : public MemoryRetainer { + public: + static constexpr size_t kMinLength = NGTCP2_MIN_CIDLEN; + static constexpr size_t kMaxLength = NGTCP2_MAX_CIDLEN; + + // Copy the given ngtcp2_cid. + explicit CID(const ngtcp2_cid& cid); + + // Copy the given buffer as a CID. The len must be within + // kMinLength and kMaxLength. + explicit CID(const uint8_t* data, size_t len); + + // Wrap the given ngtcp2_cid. The CID does not take ownership + // of the underlying ngtcp2_cid. + explicit CID(const ngtcp2_cid* cid); + + CID(const CID& other); + CID(CID&& other) = delete; + + struct Hash final { + size_t operator()(const CID& cid) const; + }; + + bool operator==(const CID& other) const noexcept; + bool operator!=(const CID& other) const noexcept; + + operator const uint8_t*() const; + operator const ngtcp2_cid&() const; + operator const ngtcp2_cid*() const; + + // True if the CID length is at least kMinLength; + operator bool() const; + size_t length() const; + + std::string ToString() const; + + SET_NO_MEMORY_INFO() + SET_MEMORY_INFO_NAME(CID) + SET_SELF_SIZE(CID) + + template + using Map = std::unordered_map; + + // A CID::Factory, as the name suggests, is used to create new CIDs. + // Per https://datatracker.ietf.org/doc/draft-ietf-quic-load-balancers/, QUIC + // implementations MAY use the Connection ID associated with a QUIC session + // as a routing mechanism, with each CID instance securely encoding the + // routing information. By default, our implementation creates CIDs randomly + // but will allow user code to provide their own CID::Factory implementation. + class Factory; + + static CID kInvalid; + + private: + // The default constructor creates an empty, zero-length CID. + // Zero-length CIDs are not usable. We use them as a placeholder + // for a missing or empty CID value. + CID(); + + ngtcp2_cid cid_; + const ngtcp2_cid* ptr_; + + friend struct Hash; +}; + +class CID::Factory { + public: + virtual ~Factory() = default; + + // Generate a new CID. The length_hint must be between CID::kMinLength + // and CID::kMaxLength. The implementation can choose to ignore the length. + virtual CID Generate(size_t length_hint = CID::kMaxLength) const = 0; + + // Generate a new CID into the given ngtcp2_cid. This variation of + // Generate should be used far less commonly. It is provided largely + // for a couple of internal cases. + virtual void GenerateInto(ngtcp2_cid* cid, + size_t length_hint = CID::kMaxLength) const = 0; + + // The default random CID generator instance. + static const Factory& random(); + + // TODO(@jasnell): This will soon also include additional implementations + // of CID::Factory that implement the QUIC Load Balancers spec. +}; + +} // namespace quic +} // namespace node + +#endif // HAVE_OPENSSL && NODE_OPENSSL_HAS_QUIC +#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS diff --git a/src/quic/data.cc b/src/quic/data.cc new file mode 100644 index 00000000000000..fcc2335db7adb9 --- /dev/null +++ b/src/quic/data.cc @@ -0,0 +1,259 @@ +#if HAVE_OPENSSL && NODE_OPENSSL_HAS_QUIC + +#include "data.h" +#include +#include +#include +#include +#include +#include "util.h" + +namespace node { + +using v8::Array; +using v8::BigInt; +using v8::Integer; +using v8::Local; +using v8::MaybeLocal; +using v8::Undefined; +using v8::Value; + +namespace quic { + +Path::Path(const SocketAddress& local, const SocketAddress& remote) { + ngtcp2_addr_init(&this->local, local.data(), local.length()); + ngtcp2_addr_init(&this->remote, remote.data(), remote.length()); +} + +PathStorage::PathStorage() { + ngtcp2_path_storage_zero(this); +} +PathStorage::operator ngtcp2_path() { + return path; +} + +// ============================================================================ + +Store::Store(std::shared_ptr store, + size_t length, + size_t offset) + : store_(std::move(store)), length_(length), offset_(offset) { + CHECK_LE(offset_, store->ByteLength()); + CHECK_LE(length_, store->ByteLength() - offset_); +} + +Store::Store(std::unique_ptr store, + size_t length, + size_t offset) + : store_(std::move(store)), length_(length), offset_(offset) { + CHECK_LE(offset_, store->ByteLength()); + CHECK_LE(length_, store->ByteLength() - offset_); +} + +Store::Store(v8::Local buffer, Option option) + : Store(buffer->GetBackingStore(), buffer->ByteLength()) { + if (option == Option::DETACH) { + USE(buffer->Detach(Local())); + } +} + +Store::Store(v8::Local view, Option option) + : Store(view->Buffer()->GetBackingStore(), + view->ByteLength(), + view->ByteOffset()) { + if (option == Option::DETACH) { + USE(view->Buffer()->Detach(Local())); + } +} + +Store::operator bool() const { + return store_ != nullptr; +} +size_t Store::length() const { + return length_; +} + +template +T Store::convert() const { + T buf; + buf.base = + store_ != nullptr ? static_cast(store_->Data()) + offset_ : nullptr; + buf.len = length_; + return buf; +} + +Store::operator uv_buf_t() const { + return convert(); +} + +Store::operator ngtcp2_vec() const { + return convert(); +} + +Store::operator nghttp3_vec() const { + return convert(); +} + +void Store::MemoryInfo(MemoryTracker* tracker) const { + tracker->TrackField("store", store_); +} + +// ============================================================================ + +namespace { +std::string TypeName(QuicError::Type type) { + switch (type) { + case QuicError::Type::APPLICATION: + return "APPLICATION"; + case QuicError::Type::TRANSPORT: + return "TRANSPORT"; + case QuicError::Type::VERSION_NEGOTIATION: + return "VERSION_NEGOTIATION"; + case QuicError::Type::IDLE_CLOSE: + return "IDLE_CLOSE"; + } + UNREACHABLE(); +} +} // namespace + +QuicError::QuicError(const std::string_view reason) + : reason_(reason), ptr_(&error_) {} + +QuicError::QuicError(const ngtcp2_connection_close_error* ptr) + : reason_(reinterpret_cast(ptr->reason), ptr->reasonlen), + ptr_(ptr) {} + +QuicError::QuicError(const ngtcp2_connection_close_error& error) + : reason_(reinterpret_cast(error.reason), error.reasonlen), + error_(error), + ptr_(&error_) {} + +QuicError::operator bool() const { + if ((code() == QUIC_NO_ERROR && type() == Type::TRANSPORT) || + ((code() == QUIC_APP_NO_ERROR && type() == Type::APPLICATION))) { + return false; + } + return true; +} + +const uint8_t* QuicError::reason_c_str() const { + return reinterpret_cast(reason_.c_str()); +} + +bool QuicError::operator!=(const QuicError& other) const { + return !(*this == other); +} + +bool QuicError::operator==(const QuicError& other) const { + if (this == &other) return true; + return type() == other.type() && code() == other.code() && + frame_type() == other.frame_type(); +} + +QuicError::Type QuicError::type() const { + return static_cast(ptr_->type); +} + +QuicError::error_code QuicError::code() const { + return ptr_->error_code; +} + +uint64_t QuicError::frame_type() const { + return ptr_->frame_type; +} + +const std::string_view QuicError::reason() const { + return reason_; +} + +QuicError::operator const ngtcp2_connection_close_error&() const { + return *ptr_; +} + +QuicError::operator const ngtcp2_connection_close_error*() const { + return ptr_; +} + +MaybeLocal QuicError::ToV8Value(Environment* env) const { + Local argv[] = { + Integer::New(env->isolate(), static_cast(type())), + BigInt::NewFromUnsigned(env->isolate(), code()), + Undefined(env->isolate()), + }; + + if (reason_.length() > 0 && + !node::ToV8Value(env->context(), reason()).ToLocal(&argv[2])) { + return MaybeLocal(); + } + return Array::New(env->isolate(), argv, arraysize(argv)).As(); +} + +std::string QuicError::ToString() const { + std::string str = "QuicError("; + str += TypeName(type()) + ") "; + str += std::to_string(code()); + if (!reason_.empty()) str += ": " + reason_; + return str; +} + +void QuicError::MemoryInfo(MemoryTracker* tracker) const { + tracker->TrackField("reason", reason_.length()); +} + +QuicError QuicError::ForTransport(error_code code, + const std::string_view reason) { + QuicError error(reason); + ngtcp2_connection_close_error_set_transport_error( + &error.error_, code, error.reason_c_str(), reason.length()); + return error; +} + +QuicError QuicError::ForApplication(error_code code, + const std::string_view reason) { + QuicError error(reason); + ngtcp2_connection_close_error_set_application_error( + &error.error_, code, error.reason_c_str(), reason.length()); + return error; +} + +QuicError QuicError::ForVersionNegotiation(const std::string_view reason) { + return ForNgtcp2Error(NGTCP2_ERR_RECV_VERSION_NEGOTIATION, reason); +} + +QuicError QuicError::ForIdleClose(const std::string_view reason) { + return ForNgtcp2Error(NGTCP2_ERR_IDLE_CLOSE, reason); +} + +QuicError QuicError::ForNgtcp2Error(int code, const std::string_view reason) { + QuicError error(reason); + ngtcp2_connection_close_error_set_transport_error_liberr( + &error.error_, code, error.reason_c_str(), reason.length()); + return error; +} + +QuicError QuicError::ForTlsAlert(int code, const std::string_view reason) { + QuicError error(reason); + ngtcp2_connection_close_error_set_transport_error_tls_alert( + &error.error_, code, error.reason_c_str(), reason.length()); + return error; +} + +QuicError QuicError::FromConnectionClose(ngtcp2_conn* session) { + QuicError error; + ngtcp2_conn_get_connection_close_error(session, &error.error_); + return error; +} + +QuicError QuicError::TRANSPORT_NO_ERROR = + QuicError::ForTransport(QuicError::QUIC_NO_ERROR); +QuicError QuicError::APPLICATION_NO_ERROR = + QuicError::ForApplication(QuicError::QUIC_APP_NO_ERROR); +QuicError QuicError::VERSION_NEGOTIATION = QuicError::ForVersionNegotiation(); +QuicError QuicError::IDLE_CLOSE = QuicError::ForIdleClose(); +QuicError QuicError::INTERNAL_ERROR = + QuicError::ForNgtcp2Error(NGTCP2_ERR_INTERNAL); + +} // namespace quic +} // namespace node + +#endif // HAVE_OPENSSL && NODE_OPENSSL_HAS_QUIC diff --git a/src/quic/data.h b/src/quic/data.h new file mode 100644 index 00000000000000..14a613df69196b --- /dev/null +++ b/src/quic/data.h @@ -0,0 +1,137 @@ +#pragma once + +#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS +#if HAVE_OPENSSL && NODE_OPENSSL_HAS_QUIC + +#include +#include +#include +#include +#include +#include + +namespace node { +namespace quic { + +struct Path final : public ngtcp2_path { + Path(const SocketAddress& local, const SocketAddress& remote); +}; + +struct PathStorage final : public ngtcp2_path_storage { + PathStorage(); + operator ngtcp2_path(); +}; + +class Store final : public MemoryRetainer { + public: + Store() = default; + + Store(std::shared_ptr store, + size_t length, + size_t offset = 0); + Store(std::unique_ptr store, + size_t length, + size_t offset = 0); + + enum class Option { + NONE, + DETACH, + }; + + Store(v8::Local buffer, Option option = Option::NONE); + Store(v8::Local view, Option option = Option::NONE); + + operator uv_buf_t() const; + operator ngtcp2_vec() const; + operator nghttp3_vec() const; + operator bool() const; + size_t length() const; + + void MemoryInfo(MemoryTracker* tracker) const override; + SET_MEMORY_INFO_NAME(Store) + SET_SELF_SIZE(Store) + + private: + template + T convert() const; + std::shared_ptr store_; + size_t length_ = 0; + size_t offset_ = 0; +}; + +class QuicError final : public MemoryRetainer { + public: + using error_code = uint64_t; + + static constexpr error_code QUIC_NO_ERROR = NGTCP2_NO_ERROR; + static constexpr error_code QUIC_APP_NO_ERROR = 65280; + + enum class Type { + TRANSPORT = NGTCP2_CONNECTION_CLOSE_ERROR_CODE_TYPE_TRANSPORT, + APPLICATION = NGTCP2_CONNECTION_CLOSE_ERROR_CODE_TYPE_APPLICATION, + VERSION_NEGOTIATION = + NGTCP2_CONNECTION_CLOSE_ERROR_CODE_TYPE_TRANSPORT_VERSION_NEGOTIATION, + IDLE_CLOSE = NGTCP2_CONNECTION_CLOSE_ERROR_CODE_TYPE_TRANSPORT_IDLE_CLOSE, + }; + + static constexpr error_code QUIC_ERROR_TYPE_TRANSPORT = + NGTCP2_CONNECTION_CLOSE_ERROR_CODE_TYPE_TRANSPORT; + static constexpr error_code QUIC_ERROR_TYPE_APPLICATION = + NGTCP2_CONNECTION_CLOSE_ERROR_CODE_TYPE_APPLICATION; + + explicit QuicError(const std::string_view reason = ""); + explicit QuicError(const ngtcp2_connection_close_error* ptr); + explicit QuicError(const ngtcp2_connection_close_error& error); + + Type type() const; + error_code code() const; + const std::string_view reason() const; + uint64_t frame_type() const; + + operator const ngtcp2_connection_close_error&() const; + operator const ngtcp2_connection_close_error*() const; + + // Returns false if the QuicError uses a no_error code with type + // transport or application. + operator bool() const; + + bool operator==(const QuicError& other) const; + bool operator!=(const QuicError& other) const; + + void MemoryInfo(MemoryTracker* tracker) const override; + SET_MEMORY_INFO_NAME(QuicError) + SET_SELF_SIZE(QuicError) + + std::string ToString() const; + v8::MaybeLocal ToV8Value(Environment* env) const; + + static QuicError ForTransport(error_code code, + const std::string_view reason = ""); + static QuicError ForApplication(error_code code, + const std::string_view reason = ""); + static QuicError ForVersionNegotiation(const std::string_view reason = ""); + static QuicError ForIdleClose(const std::string_view reason = ""); + static QuicError ForNgtcp2Error(int code, const std::string_view reason = ""); + static QuicError ForTlsAlert(int code, const std::string_view reason = ""); + + static QuicError FromConnectionClose(ngtcp2_conn* session); + + static QuicError TRANSPORT_NO_ERROR; + static QuicError APPLICATION_NO_ERROR; + static QuicError VERSION_NEGOTIATION; + static QuicError IDLE_CLOSE; + static QuicError INTERNAL_ERROR; + + private: + const uint8_t* reason_c_str() const; + + std::string reason_; + ngtcp2_connection_close_error error_; + const ngtcp2_connection_close_error* ptr_ = nullptr; +}; + +} // namespace quic +} // namespace node + +#endif // HAVE_OPENSSL && NODE_OPENSSL_HAS_QUIC +#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS diff --git a/src/quic/preferredaddress.cc b/src/quic/preferredaddress.cc new file mode 100644 index 00000000000000..180241cf272aa8 --- /dev/null +++ b/src/quic/preferredaddress.cc @@ -0,0 +1,159 @@ +#if HAVE_OPENSSL && NODE_OPENSSL_HAS_QUIC + +#include "preferredaddress.h" +#include +#include +#include +#include +#include +#include +#include + +namespace node { + +using v8::Just; +using v8::Local; +using v8::Maybe; +using v8::Nothing; +using v8::Value; + +namespace quic { + +namespace { +template +std::optional get_address_info( + const ngtcp2_preferred_addr& paddr) { + if constexpr (FAMILY == AF_INET) { + if (!paddr.ipv4_present) return std::nullopt; + PreferredAddress::AddressInfo address; + address.family = FAMILY; + address.port = paddr.ipv4_port; + if (uv_inet_ntop( + FAMILY, paddr.ipv4_addr, address.host, sizeof(address.host)) == 0) { + address.address = address.host; + } + return address; + } else { + if (!paddr.ipv6_present) return std::nullopt; + PreferredAddress::AddressInfo address; + address.family = FAMILY; + address.port = paddr.ipv6_port; + if (uv_inet_ntop( + FAMILY, paddr.ipv6_addr, address.host, sizeof(address.host)) == 0) { + address.address = address.host; + } + return address; + } +} + +template +void copy_to_transport_params(ngtcp2_transport_params* params, + const sockaddr* addr) { + params->preferred_address_present = true; + if constexpr (FAMILY == AF_INET) { + const sockaddr_in* src = reinterpret_cast(addr); + params->preferred_address.ipv4_port = SocketAddress::GetPort(addr); + memcpy(params->preferred_address.ipv4_addr, + &src->sin_addr, + sizeof(params->preferred_address.ipv4_addr)); + } else { + DCHECK_EQ(FAMILY, AF_INET6); + const sockaddr_in6* src = reinterpret_cast(addr); + params->preferred_address.ipv6_port = SocketAddress::GetPort(addr); + memcpy(params->preferred_address.ipv6_addr, + &src->sin6_addr, + sizeof(params->preferred_address.ipv4_addr)); + } + UNREACHABLE(); +} + +bool resolve(const PreferredAddress::AddressInfo& address, + uv_getaddrinfo_t* req) { + addrinfo hints{}; + hints.ai_flags = AI_NUMERICHOST | AI_NUMERICSERV; + hints.ai_family = address.family; + hints.ai_socktype = SOCK_DGRAM; + + // ngtcp2 requires the selection of the preferred address + // to be synchronous, which means we have to do a sync resolve + // using uv_getaddrinfo here. + return uv_getaddrinfo(nullptr, + req, + nullptr, + address.host, + // TODO(@jasnell): The to_string here is not really + // the most performant way of converting the uint16_t + // port into a string. Depending on execution count, + // the potential cost here could be mitigated with a + // more efficient conversion. For now, however, this + // works. + std::to_string(address.port).c_str(), + &hints) == 0 && + req->addrinfo != nullptr; +} +} // namespace + +Maybe PreferredAddress::GetPolicy( + Environment* env, Local value) { + CHECK(value->IsUint32()); + uint32_t val = 0; + if (value->Uint32Value(env->context()).To(&val)) { + switch (val) { + case QUIC_PREFERRED_ADDRESS_USE: + return Just(Policy::USE_PREFERRED_ADDRESS); + case QUIC_PREFERRED_ADDRESS_IGNORE: + return Just(Policy::IGNORE_PREFERRED_ADDRESS); + } + } + THROW_ERR_INVALID_ARG_VALUE( + env, "%d is not a valid preferred address policy", val); + return Nothing(); +} + +PreferredAddress::PreferredAddress(ngtcp2_path* dest, + const ngtcp2_preferred_addr* paddr) + : dest_(dest), paddr_(paddr) { + DCHECK_NOT_NULL(paddr); + DCHECK_NOT_NULL(dest); +} + +std::optional PreferredAddress::ipv4() + const { + return get_address_info(*paddr_); +} + +std::optional PreferredAddress::ipv6() + const { + return get_address_info(*paddr_); +} + +void PreferredAddress::Use(const AddressInfo& address) { + uv_getaddrinfo_t req; + auto on_exit = OnScopeLeave([&] { + if (req.addrinfo != nullptr) uv_freeaddrinfo(req.addrinfo); + }); + + if (resolve(address, &req)) { + DCHECK_NOT_NULL(req.addrinfo); + dest_->remote.addrlen = req.addrinfo->ai_addrlen; + memcpy(dest_->remote.addr, req.addrinfo->ai_addr, req.addrinfo->ai_addrlen); + } +} + +void PreferredAddress::Set(ngtcp2_transport_params* params, + const sockaddr* addr) { + DCHECK_NOT_NULL(params); + DCHECK_NOT_NULL(addr); + switch (addr->sa_family) { + case AF_INET: + return copy_to_transport_params(params, addr); + case AF_INET6: + return copy_to_transport_params(params, addr); + } + // Any other value is just ignored. +} + +} // namespace quic +} // namespace node + +#endif // HAVE_OPENSSL && NODE_OPENSSL_HAS_QUIC diff --git a/src/quic/preferredaddress.h b/src/quic/preferredaddress.h new file mode 100644 index 00000000000000..6be468fac2cd08 --- /dev/null +++ b/src/quic/preferredaddress.h @@ -0,0 +1,72 @@ +#pragma once + +#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS +#if HAVE_OPENSSL && NODE_OPENSSL_HAS_QUIC + +#include +#include +#include +#include +#include + +namespace node { +namespace quic { + +// PreferredAddress is a helper class used only when a client Session receives +// an advertised preferred address from a server. The helper provides +// information about the server advertised preferred address and allows +// the preferred address to be selected. +class PreferredAddress final { + public: + enum class Policy { + // Ignore the server-advertised preferred address. + IGNORE_PREFERRED_ADDRESS, + // Use the server-advertised preferred address. + USE_PREFERRED_ADDRESS, + }; + + // The QUIC_* constants are expected to be exported out to be used on + // the JavaScript side of the API. + static constexpr uint32_t QUIC_PREFERRED_ADDRESS_USE = + static_cast(Policy::USE_PREFERRED_ADDRESS); + static constexpr uint32_t QUIC_PREFERRED_ADDRESS_IGNORE = + static_cast(Policy::IGNORE_PREFERRED_ADDRESS); + + static v8::Maybe GetPolicy(Environment* env, + v8::Local value); + + struct AddressInfo final { + char host[NI_MAXHOST]; + int family; + uint16_t port; + std::string_view address; + }; + + explicit PreferredAddress(ngtcp2_path* dest, + const ngtcp2_preferred_addr* paddr); + PreferredAddress(const PreferredAddress&) = delete; + PreferredAddress(PreferredAddress&&) = delete; + PreferredAddress& operator=(const PreferredAddress&) = delete; + PreferredAddress& operator=(PreferredAddress&&) = delete; + + void Use(const AddressInfo& address); + + std::optional ipv4() const; + std::optional ipv6() const; + + // Set the preferred address in the transport params. + // The address family (ipv4 or ipv6) will be automatically + // detected from the given addr. Any other address family + // will be ignored. + static void Set(ngtcp2_transport_params* params, const sockaddr* addr); + + private: + ngtcp2_path* dest_; + const ngtcp2_preferred_addr* paddr_; +}; + +} // namespace quic +} // namespace node + +#endif // HAVE_OPENSSL && NODE_OPENSSL_HAS_QUIC +#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS diff --git a/test/cctest/test_quic_cid.cc b/test/cctest/test_quic_cid.cc new file mode 100644 index 00000000000000..44e4e5d7b998e7 --- /dev/null +++ b/test/cctest/test_quic_cid.cc @@ -0,0 +1,95 @@ +#if HAVE_OPENSSL && NODE_OPENSSL_HAS_QUIC +#include +#include +#include +#include +#include +#include + +using node::quic::CID; + +TEST(CID, Basic) { + auto& random = CID::Factory::random(); + { + auto cid = random.Generate(); + CHECK_EQ(cid.length(), CID::kMaxLength); + CHECK(cid); + CHECK_EQ(cid, cid); + } + { + auto cid = random.Generate(5); + CHECK_EQ(cid.length(), 5); + CHECK(cid); + } + { + auto cid1 = random.Generate(); + auto cid2 = random.Generate(); + CHECK_NE(cid1, cid2); + } + { + auto cid1 = random.Generate(5); + auto cid2 = random.Generate(); + CHECK_NE(cid1, cid2); + } + { + auto cid1 = random.Generate(); + auto cid2 = random.Generate(5); + CHECK_NE(cid1, cid2); + } + { + auto cid = CID::kInvalid; + // They are copy constructible... + auto cid2 = cid; + CHECK(!cid); + CHECK_EQ(cid.length(), 0); + CHECK_EQ(cid, cid2); + } + { + auto cid1 = random.Generate(); + auto cid2 = random.Generate(); + CID::Map map; + map[cid1] = "hello"; + map[cid2] = "there"; + CHECK_EQ(map[cid1], "hello"); + CHECK_EQ(map[cid2], "there"); + CHECK_NE(map[cid2], "hello"); + CHECK_NE(map[cid1], "there"); + } + { + ngtcp2_cid cid_; + uint8_t data[] = {1, 2, 3, 4, 5}; + ngtcp2_cid_init(&cid_, data, 5); + auto cid = CID(cid_); + // This variation of the constructor copies the cid_, so if we + // modify the original data it doesn't change in the CID. + cid_.data[0] = 9; + CHECK_EQ(cid.length(), 5); + CHECK_EQ(cid.ToString(), "0102030405"); + } + { + ngtcp2_cid cid_; + uint8_t data[] = {1, 2, 3, 4, 5}; + ngtcp2_cid_init(&cid_, data, 5); + auto cid = CID(&cid_); + // This variation of the constructor wraps the cid_, so if we + // modify the original data it does change in the CID. + cid_.data[0] = 9; + CHECK_EQ(cid.length(), 5); + CHECK_EQ(cid.ToString(), "0902030405"); + } + { + // Generate a bunch to ensure that the pool is regenerated. + for (int n = 0; n < 1000; n++) { + random.Generate(); + } + } + { + ngtcp2_cid cid_; + // Generate a bunch to ensure that the pool is regenerated. + for (int n = 0; n < 1000; n++) { + random.GenerateInto(&cid_, 10); + CHECK_EQ(cid_.datalen, 10); + } + } +} +#endif // HAVE_OPENSSL && NODE_OPENSSL_HAS_QUIC From 786a7186ece88cb4a58ba8541d648c170a87981b Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Tue, 28 Mar 2023 11:50:38 -0700 Subject: [PATCH 168/186] tools: update codecov branch MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Codecov is still using the old default branch. Update it to "main", the current default branch. I'm not sure why it's not picking it up automatically or if there is a way to ask it to refresh, but setting it in codecov.yml should resolve the issue. PR-URL: https://github.com/nodejs/node/pull/47285 Reviewed-By: Richard Lau Reviewed-By: Moshe Atlow Reviewed-By: Tobias Nießen Reviewed-By: Michael Dawson Reviewed-By: Yagiz Nizipli --- codecov.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/codecov.yml b/codecov.yml index 462fb1e79f8b5b..8160a5e229130d 100644 --- a/codecov.yml +++ b/codecov.yml @@ -8,6 +8,7 @@ comment: false # require_changes: true codecov: + branch: main notify: # Wait for all coverage builds: after_n_builds: 2 From 5314148d8a290e895e57e2a69ce66fd6f0f89177 Mon Sep 17 00:00:00 2001 From: Marco Ippolito Date: Wed, 29 Mar 2023 10:27:33 +0200 Subject: [PATCH 169/186] tools: standardize base64 update PR-URL: https://github.com/nodejs/node/pull/47201 Refs: https://github.com/nodejs/security-wg/issues/828 Reviewed-By: Rafael Gonzaga --- .github/workflows/tools.yml | 11 ++--- tools/dep_updaters/update-base64.sh | 64 +++++++++++++++++++++++++++++ tools/update-base64.sh | 47 --------------------- 3 files changed, 68 insertions(+), 54 deletions(-) create mode 100755 tools/dep_updaters/update-base64.sh delete mode 100755 tools/update-base64.sh diff --git a/.github/workflows/tools.yml b/.github/workflows/tools.yml index 0b4e8c9f79ec86..e980654ae867d3 100644 --- a/.github/workflows/tools.yml +++ b/.github/workflows/tools.yml @@ -87,13 +87,10 @@ jobs: subsystem: deps label: dependencies run: | - NEW_VERSION=$(gh api repos/aklomp/base64/releases/latest -q '.tag_name|ltrimstr("v")') - CURRENT_VERSION=$(grep "base64 LANGUAGES C VERSION" ./deps/base64/base64/CMakeLists.txt | \ - sed -n "s/^.*VERSION \(.*\))/\1/p") - if [ "$NEW_VERSION" != "$CURRENT_VERSION" ]; then - echo "NEW_VERSION=$NEW_VERSION" >> $GITHUB_ENV - ./tools/update-base64.sh "$NEW_VERSION" - fi + ./tools/dep_updaters/update-base64.sh > temp-output + cat temp-output + tail -n1 temp-output | grep "NEW_VERSION=" >> "$GITHUB_ENV" || true + rm temp-output - id: acorn subsystem: deps label: dependencies diff --git a/tools/dep_updaters/update-base64.sh b/tools/dep_updaters/update-base64.sh new file mode 100755 index 00000000000000..05d1c58402d1d6 --- /dev/null +++ b/tools/dep_updaters/update-base64.sh @@ -0,0 +1,64 @@ +#!/bin/sh +set -e +# Shell script to update base64 in the source tree to a specific version + +BASE_DIR=$(cd "$(dirname "$0")/../.." && pwd) +DEPS_DIR="$BASE_DIR/deps" + +[ -z "$NODE" ] && NODE="$BASE_DIR/out/Release/node" +[ -x "$NODE" ] || NODE=$(command -v node) + +NEW_VERSION="$("$NODE" --input-type=module <<'EOF' +const res = await fetch('https://api.github.com/repos/aklomp/base64/releases/latest'); +if (!res.ok) throw new Error(`FetchError: ${res.status} ${res.statusText}`, { cause: res }); +const { tag_name } = await res.json(); +console.log(tag_name.replace('v', '')); +EOF +)" + +CURRENT_VERSION=$(grep "base64 LANGUAGES C VERSION" ./deps/base64/base64/CMakeLists.txt | sed -n "s/^.*VERSION \(.*\))/\1/p") + +echo "Comparing $NEW_VERSION with $CURRENT_VERSION" + +if [ "$NEW_VERSION" = "$CURRENT_VERSION" ]; then + echo "Skipped because base64 is on the latest version." + exit 0 +fi + +echo "Making temporary workspace" + +WORKSPACE=$(mktemp -d 2> /dev/null || mktemp -d -t 'tmp') + +cleanup () { + EXIT_CODE=$? + [ -d "$WORKSPACE" ] && rm -rf "$WORKSPACE" + exit $EXIT_CODE +} + +trap cleanup INT TERM EXIT + +cd "$WORKSPACE" + +echo "Fetching base64 source archive" +curl -sL "https://api.github.com/repos/aklomp/base64/tarball/v$NEW_VERSION" | tar xzf - +mv aklomp-base64-* base64 + +echo "Replacing existing base64" +rm -rf "$DEPS_DIR/base64/base64" +mv "$WORKSPACE/base64" "$DEPS_DIR/base64/" + +# Build configuration is handled by `deps/base64/base64.gyp`, but since `config.h` has to be present for the build +# to work, we create it and leave it empty. +echo "// Intentionally empty" >> "$DEPS_DIR/base64/base64/lib/config.h" + +echo "All done!" +echo "" +echo "Please git add base64/base64, commit the new version:" +echo "" +echo "$ git add -A deps/base64/base64" +echo "$ git commit -m \"deps: update base64 to $NEW_VERSION\"" +echo "" + +# The last line of the script should always print the new version, +# as we need to add it to $GITHUB_ENV variable. +echo "NEW_VERSION=$NEW_VERSION" diff --git a/tools/update-base64.sh b/tools/update-base64.sh deleted file mode 100755 index 50b8da7adb867c..00000000000000 --- a/tools/update-base64.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/sh -set -e -# Shell script to update base64 in the source tree to a specific version - -BASE_DIR=$(cd "$(dirname "$0")/.." && pwd) -DEPS_DIR="$BASE_DIR/deps" -BASE64_VERSION=$1 - -if [ "$#" -le 0 ]; then - echo "Error: please provide an base64 version to update to" - echo " e.g. $0 0.4.0" - exit 1 -fi - -echo "Making temporary workspace" - -WORKSPACE=$(mktemp -d 2> /dev/null || mktemp -d -t 'tmp') - -cleanup () { - EXIT_CODE=$? - [ -d "$WORKSPACE" ] && rm -rf "$WORKSPACE" - exit $EXIT_CODE -} - -trap cleanup INT TERM EXIT - -cd "$WORKSPACE" - -echo "Fetching base64 source archive" -curl -sL "https://api.github.com/repos/aklomp/base64/tarball/v$BASE64_VERSION" | tar xzf - -mv aklomp-base64-* base64 - -echo "Replacing existing base64" -rm -rf "$DEPS_DIR/base64/base64" -mv "$WORKSPACE/base64" "$DEPS_DIR/base64/" - -# Build configuration is handled by `deps/base64/base64.gyp`, but since `config.h` has to be present for the build -# to work, we create it and leave it empty. -echo "// Intentionally empty" >> "$DEPS_DIR/base64/base64/lib/config.h" - -echo "All done!" -echo "" -echo "Please git add base64/base64, commit the new version:" -echo "" -echo "$ git add -A deps/base64/base64" -echo "$ git commit -m \"deps: update base64 to $BASE64_VERSION\"" -echo "" From 0094f90c8a328b9e3846153fef91e1c67ec24336 Mon Sep 17 00:00:00 2001 From: Gabriela Gutierrez Date: Wed, 29 Mar 2023 09:02:23 +0000 Subject: [PATCH 170/186] tools: pin actions by hash for auto-start-ci.yml Signed-off-by: Gabriela Gutierrez PR-URL: https://github.com/nodejs/node/pull/46820 Reviewed-By: Yongsheng Zhang Reviewed-By: James M Snell Reviewed-By: Michael Dawson Reviewed-By: Rafael Gonzaga --- .github/workflows/auto-start-ci.yml | 4 +-- .github/workflows/build-tarball.yml | 12 +++---- .github/workflows/build-windows.yml | 4 +-- .../close-stale-feature-requests.yml | 2 +- .github/workflows/close-stalled.yml | 2 +- .github/workflows/commit-lint.yml | 4 +-- .github/workflows/commit-queue.yml | 4 +-- .../workflows/coverage-linux-without-intl.yml | 6 ++-- .github/workflows/coverage-windows.yml | 6 ++-- .github/workflows/daily-wpt-fyi.yml | 10 +++--- .github/workflows/daily.yml | 4 +-- .github/workflows/doc.yml | 6 ++-- .../workflows/find-inactive-collaborators.yml | 4 +-- .github/workflows/find-inactive-tsc.yml | 6 ++-- .github/workflows/label-pr.yml | 2 +- .github/workflows/license-builder.yml | 2 +- .github/workflows/linters.yml | 32 +++++++++---------- .github/workflows/test-asan.yml | 4 +-- .github/workflows/test-internet.yml | 4 +-- .github/workflows/test-linux.yml | 4 +-- .github/workflows/test-macos.yml | 4 +-- .github/workflows/timezone-update.yml | 4 +-- .github/workflows/tools.yml | 2 +- 23 files changed, 66 insertions(+), 66 deletions(-) diff --git a/.github/workflows/auto-start-ci.yml b/.github/workflows/auto-start-ci.yml index 840d4afe942f1e..4cb5d49fe77324 100644 --- a/.github/workflows/auto-start-ci.yml +++ b/.github/workflows/auto-start-ci.yml @@ -46,12 +46,12 @@ jobs: if: needs.get-prs-for-ci.outputs.numbers != '' runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false - name: Install Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 with: node-version: ${{ env.NODE_VERSION }} diff --git a/.github/workflows/build-tarball.yml b/.github/workflows/build-tarball.yml index 12d5e2794091cd..235a48fa5343c9 100644 --- a/.github/workflows/build-tarball.yml +++ b/.github/workflows/build-tarball.yml @@ -39,11 +39,11 @@ jobs: if: github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v4 + uses: actions/setup-python@d27e3f3d7c64b4bbf8e4abfb9b63b83e846e0435 # v4.5.0 with: python-version: ${{ env.PYTHON_VERSION }} - name: Environment Information @@ -57,7 +57,7 @@ jobs: mkdir tarballs mv *.tar.gz tarballs - name: Upload tarball artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 with: name: tarballs path: tarballs @@ -65,17 +65,17 @@ jobs: needs: build-tarball runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v4 + uses: actions/setup-python@d27e3f3d7c64b4bbf8e4abfb9b63b83e846e0435 # v4.5.0 with: python-version: ${{ env.PYTHON_VERSION }} - name: Environment Information run: npx envinfo - name: Download tarball - uses: actions/download-artifact@v3 + uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2 with: name: tarballs path: tarballs diff --git a/.github/workflows/build-windows.yml b/.github/workflows/build-windows.yml index 64eb7ddad23988..32025677b7f112 100644 --- a/.github/workflows/build-windows.yml +++ b/.github/workflows/build-windows.yml @@ -38,11 +38,11 @@ jobs: fail-fast: false runs-on: ${{ matrix.windows }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v4 + uses: actions/setup-python@d27e3f3d7c64b4bbf8e4abfb9b63b83e846e0435 # v4.5.0 with: python-version: ${{ env.PYTHON_VERSION }} - name: Install deps diff --git a/.github/workflows/close-stale-feature-requests.yml b/.github/workflows/close-stale-feature-requests.yml index f8eef7ce35d84e..0afed4b819a056 100644 --- a/.github/workflows/close-stale-feature-requests.yml +++ b/.github/workflows/close-stale-feature-requests.yml @@ -39,7 +39,7 @@ jobs: if: github.repository == 'nodejs/node' runs-on: ubuntu-latest steps: - - uses: actions/stale@v7 + - uses: actions/stale@6f05e4244c9a0b2ed3401882b05d701dd0a7289b # v7.0.0 with: repo-token: ${{ secrets.GITHUB_TOKEN }} days-before-stale: 180 diff --git a/.github/workflows/close-stalled.yml b/.github/workflows/close-stalled.yml index 6eadfae6dd2481..b83df24780bf9f 100644 --- a/.github/workflows/close-stalled.yml +++ b/.github/workflows/close-stalled.yml @@ -20,7 +20,7 @@ jobs: if: github.repository == 'nodejs/node' runs-on: ubuntu-latest steps: - - uses: actions/stale@v7 + - uses: actions/stale@6f05e4244c9a0b2ed3401882b05d701dd0a7289b # v7.0.0 with: repo-token: ${{ secrets.GITHUB_TOKEN }} days-before-close: 30 diff --git a/.github/workflows/commit-lint.yml b/.github/workflows/commit-lint.yml index 617e434e40404d..1dcc459b24687b 100644 --- a/.github/workflows/commit-lint.yml +++ b/.github/workflows/commit-lint.yml @@ -17,13 +17,13 @@ jobs: run: | echo "plusOne=$((${{ github.event.pull_request.commits }} + 1))" >> $GITHUB_OUTPUT echo "minusOne=$((${{ github.event.pull_request.commits }} - 1))" >> $GITHUB_OUTPUT - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: fetch-depth: ${{ steps.nb-of-commits.outputs.plusOne }} persist-credentials: false - run: git reset HEAD^2 - name: Install Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 with: node-version: ${{ env.NODE_VERSION }} - name: Validate commit message diff --git a/.github/workflows/commit-queue.yml b/.github/workflows/commit-queue.yml index 59ab3d2ce64263..c469c8810daada 100644 --- a/.github/workflows/commit-queue.yml +++ b/.github/workflows/commit-queue.yml @@ -58,7 +58,7 @@ jobs: if: needs.get_mergeable_prs.outputs.numbers != '' runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: # Needs the whole git history for ncu to work # See https://github.com/nodejs/node-core-utils/pull/486 @@ -71,7 +71,7 @@ jobs: # Install dependencies - name: Install Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 with: node-version: ${{ env.NODE_VERSION }} - name: Install node-core-utils diff --git a/.github/workflows/coverage-linux-without-intl.yml b/.github/workflows/coverage-linux-without-intl.yml index f718c5c7773026..88c1338028a4f3 100644 --- a/.github/workflows/coverage-linux-without-intl.yml +++ b/.github/workflows/coverage-linux-without-intl.yml @@ -37,11 +37,11 @@ jobs: if: github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v4 + uses: actions/setup-python@d27e3f3d7c64b4bbf8e4abfb9b63b83e846e0435 # v4.5.0 with: python-version: ${{ env.PYTHON_VERSION }} - name: Environment Information @@ -64,6 +64,6 @@ jobs: - name: Clean tmp run: rm -rf coverage/tmp && rm -rf out - name: Upload - uses: codecov/codecov-action@v3 + uses: codecov/codecov-action@d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70 # v3.1.1 with: directory: ./coverage diff --git a/.github/workflows/coverage-windows.yml b/.github/workflows/coverage-windows.yml index 3dd8d01565c8cb..04ff310d2f0216 100644 --- a/.github/workflows/coverage-windows.yml +++ b/.github/workflows/coverage-windows.yml @@ -39,11 +39,11 @@ jobs: if: github.event.pull_request.draft == false runs-on: windows-2022 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v4 + uses: actions/setup-python@d27e3f3d7c64b4bbf8e4abfb9b63b83e846e0435 # v4.5.0 with: python-version: ${{ env.PYTHON_VERSION }} - name: Install deps @@ -65,6 +65,6 @@ jobs: - name: Clean tmp run: npx rimraf ./coverage/tmp - name: Upload - uses: codecov/codecov-action@v3 + uses: codecov/codecov-action@d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70 # v3.1.1 with: directory: ./coverage diff --git a/.github/workflows/daily-wpt-fyi.yml b/.github/workflows/daily-wpt-fyi.yml index 386f4eab2e222d..0e2c3df9fcbacb 100644 --- a/.github/workflows/daily-wpt-fyi.yml +++ b/.github/workflows/daily-wpt-fyi.yml @@ -33,7 +33,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v4 + uses: actions/setup-python@d27e3f3d7c64b4bbf8e4abfb9b63b83e846e0435 # v4.5.0 with: python-version: ${{ env.PYTHON_VERSION }} - name: Environment Information @@ -45,7 +45,7 @@ jobs: run: echo "NIGHTLY=$(curl -s https://nodejs.org/download/nightly/index.json | jq -r '[.[] | select(.files[] | contains("linux-x64"))][0].version')" >> $GITHUB_ENV - name: Install Node.js id: setup-node - uses: actions/setup-node@v3 + uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 with: node-version: ${{ env.NIGHTLY || matrix.node-version }} check-latest: true @@ -57,7 +57,7 @@ jobs: SHORT_SHA=$(node -p 'process.version.split(/-nightly\d{8}/)[1]') echo "NIGHTLY_REF=$(gh api /repos/nodejs/node/commits/$SHORT_SHA --jq '.sha')" >> $GITHUB_ENV - name: Checkout ${{ steps.setup-node.outputs.node-version }} - uses: actions/checkout@v3 + uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false ref: ${{ env.NIGHTLY_REF || steps.setup-node.outputs.node-version }} @@ -73,7 +73,7 @@ jobs: run: rm -rf wpt working-directory: test/fixtures - name: Checkout epochs/daily WPT - uses: actions/checkout@v3 + uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: repository: web-platform-tests/wpt persist-credentials: false @@ -121,7 +121,7 @@ jobs: run: cp wptreport.json wptreport-${{ steps.setup-node.outputs.node-version }}.json - name: Upload GitHub Actions artifact if: ${{ env.WPT_REPORT != '' }} - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 with: path: out/wpt/wptreport-*.json name: WPT Reports diff --git a/.github/workflows/daily.yml b/.github/workflows/daily.yml index f14bde4c7fb629..0c23505bf0ac07 100644 --- a/.github/workflows/daily.yml +++ b/.github/workflows/daily.yml @@ -17,11 +17,11 @@ jobs: # not working on gcc-8 and gcc-9 see https://github.com/nodejs/node/issues/38570 container: gcc:11 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false - name: Use Node.js ${{ env.NODE_VERSION }} - uses: actions/setup-node@v3 + uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 with: node-version: ${{ env.NODE_VERSION }} - name: Environment Information diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml index 76660343ca2f46..0c24159658c620 100644 --- a/.github/workflows/doc.yml +++ b/.github/workflows/doc.yml @@ -24,18 +24,18 @@ jobs: if: github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false - name: Use Node.js ${{ env.NODE_VERSION }} - uses: actions/setup-node@v3 + uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 with: node-version: ${{ env.NODE_VERSION }} - name: Environment Information run: npx envinfo - name: Build run: NODE=$(command -v node) make doc-only - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 with: name: docs path: out/doc diff --git a/.github/workflows/find-inactive-collaborators.yml b/.github/workflows/find-inactive-collaborators.yml index 33b63389934f5e..d03e994c2a487f 100644 --- a/.github/workflows/find-inactive-collaborators.yml +++ b/.github/workflows/find-inactive-collaborators.yml @@ -19,13 +19,13 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: fetch-depth: 0 persist-credentials: false - name: Use Node.js ${{ env.NODE_VERSION }} - uses: actions/setup-node@v3 + uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 with: node-version: ${{ env.NODE_VERSION }} diff --git a/.github/workflows/find-inactive-tsc.yml b/.github/workflows/find-inactive-tsc.yml index eee9fa539fb2a5..15ccfd5dd82c84 100644 --- a/.github/workflows/find-inactive-tsc.yml +++ b/.github/workflows/find-inactive-tsc.yml @@ -20,13 +20,13 @@ jobs: steps: - name: Checkout the repo - uses: actions/checkout@v3 + uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: fetch-depth: 0 persist-credentials: false - name: Clone nodejs/TSC repository - uses: actions/checkout@v3 + uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: fetch-depth: 0 path: .tmp @@ -34,7 +34,7 @@ jobs: repository: nodejs/TSC - name: Use Node.js ${{ env.NODE_VERSION }} - uses: actions/setup-node@v3 + uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 with: node-version: ${{ env.NODE_VERSION }} diff --git a/.github/workflows/label-pr.yml b/.github/workflows/label-pr.yml index 922a9359f5ed20..95fdd42a4c700a 100644 --- a/.github/workflows/label-pr.yml +++ b/.github/workflows/label-pr.yml @@ -12,7 +12,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: nodejs/node-pr-labeler@v1 + - uses: nodejs/node-pr-labeler@d4cf1b8b9f23189c37917000e5e17e796c770a6b # v1 with: repo-token: ${{ secrets.GH_USER_TOKEN }} configuration-path: .github/label-pr-config.yml diff --git a/.github/workflows/license-builder.yml b/.github/workflows/license-builder.yml index a6732b149c01f5..830865ac3d0e85 100644 --- a/.github/workflows/license-builder.yml +++ b/.github/workflows/license-builder.yml @@ -17,7 +17,7 @@ jobs: if: github.repository == 'nodejs/node' runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false - run: ./tools/license-builder.sh # Run the license builder tool diff --git a/.github/workflows/linters.yml b/.github/workflows/linters.yml index c9b8f08f99e4a4..96eb4604a20b70 100644 --- a/.github/workflows/linters.yml +++ b/.github/workflows/linters.yml @@ -25,11 +25,11 @@ jobs: if: github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false - name: Use Node.js ${{ env.NODE_VERSION }} - uses: actions/setup-node@v3 + uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 with: node-version: ${{ env.NODE_VERSION }} - name: Environment Information @@ -40,11 +40,11 @@ jobs: if: github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v4 + uses: actions/setup-python@d27e3f3d7c64b4bbf8e4abfb9b63b83e846e0435 # v4.5.0 with: python-version: ${{ env.PYTHON_VERSION }} - name: Environment Information @@ -55,16 +55,16 @@ jobs: if: ${{ github.event.pull_request && github.event.pull_request.draft == false && github.base_ref == github.event.repository.default_branch }} runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: fetch-depth: 0 persist-credentials: false - name: Use Node.js ${{ env.NODE_VERSION }} - uses: actions/setup-node@v3 + uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 with: node-version: ${{ env.NODE_VERSION }} - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v4 + uses: actions/setup-python@d27e3f3d7c64b4bbf8e4abfb9b63b83e846e0435 # v4.5.0 with: python-version: ${{ env.PYTHON_VERSION }} - name: Environment Information @@ -93,11 +93,11 @@ jobs: if: github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false - name: Use Node.js ${{ env.NODE_VERSION }} - uses: actions/setup-node@v3 + uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 with: node-version: ${{ env.NODE_VERSION }} - name: Environment Information @@ -118,11 +118,11 @@ jobs: if: github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v4 + uses: actions/setup-python@d27e3f3d7c64b4bbf8e4abfb9b63b83e846e0435 # v4.5.0 with: python-version: ${{ env.PYTHON_VERSION }} - name: Environment Information @@ -135,11 +135,11 @@ jobs: if: github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false - name: Use Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v4 + uses: actions/setup-python@d27e3f3d7c64b4bbf8e4abfb9b63b83e846e0435 # v4.5.0 with: python-version: ${{ env.PYTHON_VERSION }} - name: Environment Information @@ -153,7 +153,7 @@ jobs: if: github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false - run: shellcheck -V @@ -163,7 +163,7 @@ jobs: if: github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false - uses: mszostok/codeowners-validator@7f3f5e28c6d7b8dfae5731e54ce2272ca384592f @@ -173,7 +173,7 @@ jobs: if: ${{ github.event.pull_request }} runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: fetch-depth: 2 persist-credentials: false diff --git a/.github/workflows/test-asan.yml b/.github/workflows/test-asan.yml index fc8d38945dd397..892bcff481a52f 100644 --- a/.github/workflows/test-asan.yml +++ b/.github/workflows/test-asan.yml @@ -47,11 +47,11 @@ jobs: CONFIG_FLAGS: --enable-asan ASAN: true steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v4 + uses: actions/setup-python@d27e3f3d7c64b4bbf8e4abfb9b63b83e846e0435 # v4.5.0 with: python-version: ${{ env.PYTHON_VERSION }} - name: Environment Information diff --git a/.github/workflows/test-internet.yml b/.github/workflows/test-internet.yml index 236d76741be40b..3ecbc5442547da 100644 --- a/.github/workflows/test-internet.yml +++ b/.github/workflows/test-internet.yml @@ -32,11 +32,11 @@ jobs: if: github.repository == 'nodejs/node' || github.event_name != 'schedule' runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v4 + uses: actions/setup-python@d27e3f3d7c64b4bbf8e4abfb9b63b83e846e0435 # v4.5.0 with: python-version: ${{ env.PYTHON_VERSION }} - name: Environment Information diff --git a/.github/workflows/test-linux.yml b/.github/workflows/test-linux.yml index 2a1614e7e8cba1..4c8c0787bf4b0f 100644 --- a/.github/workflows/test-linux.yml +++ b/.github/workflows/test-linux.yml @@ -34,11 +34,11 @@ jobs: if: github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v4 + uses: actions/setup-python@d27e3f3d7c64b4bbf8e4abfb9b63b83e846e0435 # v4.5.0 with: python-version: ${{ env.PYTHON_VERSION }} - name: Environment Information diff --git a/.github/workflows/test-macos.yml b/.github/workflows/test-macos.yml index c09004cbe422c7..9e9bb3e1b45475 100644 --- a/.github/workflows/test-macos.yml +++ b/.github/workflows/test-macos.yml @@ -40,11 +40,11 @@ jobs: if: github.event.pull_request.draft == false runs-on: macos-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v4 + uses: actions/setup-python@d27e3f3d7c64b4bbf8e4abfb9b63b83e846e0435 # v4.5.0 with: python-version: ${{ env.PYTHON_VERSION }} - name: Environment Information diff --git a/.github/workflows/timezone-update.yml b/.github/workflows/timezone-update.yml index a28434f2d9be74..0c6b6f5fafd92c 100644 --- a/.github/workflows/timezone-update.yml +++ b/.github/workflows/timezone-update.yml @@ -20,12 +20,12 @@ jobs: steps: - name: Checkout nodejs/node - uses: actions/checkout@v3 + uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false - name: Checkout unicode-org/icu-data - uses: actions/checkout@v3 + uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: path: icu-data persist-credentials: false diff --git a/.github/workflows/tools.yml b/.github/workflows/tools.yml index e980654ae867d3..c608ae7956d637 100644 --- a/.github/workflows/tools.yml +++ b/.github/workflows/tools.yml @@ -160,7 +160,7 @@ jobs: tail -n1 temp-output | grep "NEW_VERSION=" >> "$GITHUB_ENV" || true rm temp-output steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false - run: ${{ matrix.run }} From 3cf65bd2688d35152accaca4a07df4ec603bdf9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Wed, 29 Mar 2023 13:58:19 +0200 Subject: [PATCH 171/186] test: skip instantiateStreaming-bad-imports WPT MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This test is flaky on ARM with V8 >= 11.2. Skip it so we can update V8 before the release of Nodejs 20.0.0. PR-URL: https://github.com/nodejs/node/pull/47292 Refs: https://github.com/nodejs/node/pull/46815 Reviewed-By: Rafael Gonzaga Reviewed-By: Moshe Atlow Reviewed-By: Jiawen Geng Reviewed-By: Debadree Chatterjee Reviewed-By: Filip Skokan Reviewed-By: Tobias Nießen Reviewed-By: Darshan Sen --- test/wpt/status/wasm/webapi.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/wpt/status/wasm/webapi.json b/test/wpt/status/wasm/webapi.json index 6328e55dc18bc9..3e2075655e5af2 100644 --- a/test/wpt/status/wasm/webapi.json +++ b/test/wpt/status/wasm/webapi.json @@ -16,5 +16,8 @@ }, "status.any.js": { "skip": "WPTRunner does not support fetch()" + }, + "instantiateStreaming-bad-imports.any.js": { + "skip": "Flaky on ARM with V8 >= 11.2" } } From c81e1143e42b92c2b5d4f477ab9a945074165ed7 Mon Sep 17 00:00:00 2001 From: Joyee Cheung Date: Wed, 22 Mar 2023 15:13:13 +0100 Subject: [PATCH 172/186] bootstrap: store internal loaders in C++ via a binding Instead of returning the internal loaders from the bootstrap script, we can simply call a binding to store them in C++. This eliminates the need for specializing the handling of this script. PR-URL: https://github.com/nodejs/node/pull/47215 Reviewed-By: Chengzhong Wu --- lib/internal/bootstrap/loaders.js | 5 +++-- src/node_builtins.cc | 12 +++++++++++ src/node_realm.cc | 33 ++----------------------------- src/node_realm.h | 1 - 4 files changed, 17 insertions(+), 34 deletions(-) diff --git a/lib/internal/bootstrap/loaders.js b/lib/internal/bootstrap/loaders.js index 50e8b8702de6f1..a0a48e6c451dd7 100644 --- a/lib/internal/bootstrap/loaders.js +++ b/lib/internal/bootstrap/loaders.js @@ -182,6 +182,7 @@ const loaderId = 'internal/bootstrap/loaders'; const { builtinIds, compileFunction, + setInternalLoaders, } = internalBinding('builtins'); const getOwn = (target, property, receiver) => { @@ -373,5 +374,5 @@ function requireWithFallbackInDeps(request) { return requireBuiltin(request); } -// Pass the exports back to C++ land for C++ internals to use. -return loaderExports; +// Store the internal loaders in C++. +setInternalLoaders(internalBinding, requireBuiltin); diff --git a/src/node_builtins.cc b/src/node_builtins.cc index 8ec3e828650e44..c3f6d61f20efc9 100644 --- a/src/node_builtins.cc +++ b/src/node_builtins.cc @@ -647,6 +647,16 @@ void BuiltinLoader::HasCachedBuiltins(const FunctionCallbackInfo& args) { args.GetIsolate(), instance->code_cache_->has_code_cache)); } +void SetInternalLoaders(const FunctionCallbackInfo& args) { + Realm* realm = Realm::GetCurrent(args); + CHECK(args[0]->IsFunction()); + CHECK(args[1]->IsFunction()); + DCHECK(realm->internal_binding_loader().IsEmpty()); + DCHECK(realm->builtin_module_require().IsEmpty()); + realm->set_internal_binding_loader(args[0].As()); + realm->set_builtin_module_require(args[1].As()); +} + void BuiltinLoader::CopySourceAndCodeCacheReferenceFrom( const BuiltinLoader* other) { code_cache_ = other->code_cache_; @@ -685,6 +695,7 @@ void BuiltinLoader::CreatePerIsolateProperties(IsolateData* isolate_data, SetMethod(isolate, proto, "getCacheUsage", BuiltinLoader::GetCacheUsage); SetMethod(isolate, proto, "compileFunction", BuiltinLoader::CompileFunction); SetMethod(isolate, proto, "hasCachedBuiltins", HasCachedBuiltins); + SetMethod(isolate, proto, "setInternalLoaders", SetInternalLoaders); } void BuiltinLoader::CreatePerContextProperties(Local target, @@ -703,6 +714,7 @@ void BuiltinLoader::RegisterExternalReferences( registry->Register(GetCacheUsage); registry->Register(CompileFunction); registry->Register(HasCachedBuiltins); + registry->Register(SetInternalLoaders); } } // namespace builtins diff --git a/src/node_realm.cc b/src/node_realm.cc index a8cd9b9a55da2f..6a0876fa6dc87c 100644 --- a/src/node_realm.cc +++ b/src/node_realm.cc @@ -10,7 +10,6 @@ namespace node { using v8::Context; using v8::EscapableHandleScope; -using v8::Function; using v8::HandleScope; using v8::Local; using v8::MaybeLocal; @@ -174,42 +173,14 @@ MaybeLocal Realm::ExecuteBootstrapper(const char* id) { return scope.EscapeMaybe(result); } -MaybeLocal Realm::BootstrapInternalLoaders() { - EscapableHandleScope scope(isolate_); - - // Bootstrap internal loaders - Local loader_exports; - if (!ExecuteBootstrapper("internal/bootstrap/loaders") - .ToLocal(&loader_exports)) { - return MaybeLocal(); - } - CHECK(loader_exports->IsObject()); - Local loader_exports_obj = loader_exports.As(); - Local internal_binding_loader = - loader_exports_obj->Get(context(), env_->internal_binding_string()) - .ToLocalChecked(); - CHECK(internal_binding_loader->IsFunction()); - set_internal_binding_loader(internal_binding_loader.As()); - Local require = - loader_exports_obj->Get(context(), env_->require_string()) - .ToLocalChecked(); - CHECK(require->IsFunction()); - set_builtin_module_require(require.As()); - - return scope.Escape(loader_exports); -} - MaybeLocal Realm::RunBootstrapping() { EscapableHandleScope scope(isolate_); CHECK(!has_run_bootstrapping_code()); - if (BootstrapInternalLoaders().IsEmpty()) { - return MaybeLocal(); - } - Local result; - if (!BootstrapRealm().ToLocal(&result)) { + if (!ExecuteBootstrapper("internal/bootstrap/loaders").ToLocal(&result) || + !BootstrapRealm().ToLocal(&result)) { return MaybeLocal(); } diff --git a/src/node_realm.h b/src/node_realm.h index 73ab1718e002de..4bff386baff227 100644 --- a/src/node_realm.h +++ b/src/node_realm.h @@ -129,7 +129,6 @@ class Realm : public MemoryRetainer { protected: ~Realm(); - v8::MaybeLocal BootstrapInternalLoaders(); virtual v8::MaybeLocal BootstrapRealm() = 0; Environment* env_; From 9b104be502a497a20748b106ad01b2fbf22a6e4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Nie=C3=9Fen?= Date: Wed, 29 Mar 2023 12:02:09 +0000 Subject: [PATCH 173/186] quic: do not dereference shared_ptr after move The stored pointer is assumed to be nullptr after std::move. PR-URL: https://github.com/nodejs/node/pull/47294 Reviewed-By: James M Snell Reviewed-By: Yagiz Nizipli --- src/quic/data.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/quic/data.cc b/src/quic/data.cc index fcc2335db7adb9..e3428141f1ec6b 100644 --- a/src/quic/data.cc +++ b/src/quic/data.cc @@ -38,16 +38,16 @@ Store::Store(std::shared_ptr store, size_t length, size_t offset) : store_(std::move(store)), length_(length), offset_(offset) { - CHECK_LE(offset_, store->ByteLength()); - CHECK_LE(length_, store->ByteLength() - offset_); + CHECK_LE(offset_, store_->ByteLength()); + CHECK_LE(length_, store_->ByteLength() - offset_); } Store::Store(std::unique_ptr store, size_t length, size_t offset) : store_(std::move(store)), length_(length), offset_(offset) { - CHECK_LE(offset_, store->ByteLength()); - CHECK_LE(length_, store->ByteLength() - offset_); + CHECK_LE(offset_, store_->ByteLength()); + CHECK_LE(length_, store_->ByteLength() - offset_); } Store::Store(v8::Local buffer, Option option) From e7b5c0ed47a18fcb24c4258979c211a1c5d5bf48 Mon Sep 17 00:00:00 2001 From: Robert Nagy Date: Wed, 29 Mar 2023 20:02:10 +0200 Subject: [PATCH 174/186] stream: add setter & getter for default highWaterMark (#46929) Adds stream.(get|set)DefaultHighWaterMark to read or update the default hwm. PR-URL: https://github.com/nodejs/node/pull/46929 Reviewed-By: Matteo Collina Reviewed-By: Paolo Insogna Reviewed-By: Moshe Atlow Reviewed-By: Luigi Pinca Reviewed-By: Benjamin Gruenbaum Reviewed-By: Michael Dawson Reviewed-By: Erick Wendel --- doc/api/stream.md | 23 +++++++++++++ lib/_http_outgoing.js | 8 ++--- lib/internal/streams/state.js | 16 ++++++++- lib/stream.js | 3 ++ test/parallel/test-stream-set-default-hwm.js | 36 ++++++++++++++++++++ 5 files changed, 81 insertions(+), 5 deletions(-) create mode 100644 test/parallel/test-stream-set-default-hwm.js diff --git a/doc/api/stream.md b/doc/api/stream.md index a04c30fbd10c2a..f01b6ad6e1f727 100644 --- a/doc/api/stream.md +++ b/doc/api/stream.md @@ -3348,6 +3348,29 @@ reader.read().then(({ value, done }) => { }); ``` +### `stream.getDefaultHighWaterMark(objectMode)` + + + +* {boolean} objectMode +* Returns: {integer} + +Returns the default highWaterMark used by streams. +Defaults to `16384` (16 KiB), or `16` for `objectMode`. + +### `stream.setDefaultHighWaterMark(objectMode, value)` + + + +* {boolean} objectMode +* {integer} highWaterMark value + +Sets the default highWaterMark used by streams. + ## API for stream implementers diff --git a/lib/_http_outgoing.js b/lib/_http_outgoing.js index 7287120c43b713..6b1b8703f9f0de 100644 --- a/lib/_http_outgoing.js +++ b/lib/_http_outgoing.js @@ -80,12 +80,11 @@ let debug = require('internal/util/debuglog').debuglog('http', (fn) => { debug = fn; }); -const HIGH_WATER_MARK = getDefaultHighWaterMark(); - const kCorked = Symbol('corked'); const kUniqueHeaders = Symbol('kUniqueHeaders'); const kBytesWritten = Symbol('kBytesWritten'); const kErrored = Symbol('errored'); +const kHighWaterMark = Symbol('kHighWaterMark'); const nop = () => {}; @@ -150,6 +149,7 @@ function OutgoingMessage() { this._onPendingData = nop; this[kErrored] = null; + this[kHighWaterMark] = getDefaultHighWaterMark(); } ObjectSetPrototypeOf(OutgoingMessage.prototype, Stream.prototype); ObjectSetPrototypeOf(OutgoingMessage, Stream); @@ -196,7 +196,7 @@ ObjectDefineProperty(OutgoingMessage.prototype, 'writableLength', { ObjectDefineProperty(OutgoingMessage.prototype, 'writableHighWaterMark', { __proto__: null, get() { - return this.socket ? this.socket.writableHighWaterMark : HIGH_WATER_MARK; + return this.socket ? this.socket.writableHighWaterMark : this[kHighWaterMark]; }, }); @@ -403,7 +403,7 @@ function _writeRaw(data, encoding, callback, size) { this.outputData.push({ data, encoding, callback }); this.outputSize += data.length; this._onPendingData(data.length); - return this.outputSize < HIGH_WATER_MARK; + return this.outputSize < this[kHighWaterMark]; } diff --git a/lib/internal/streams/state.js b/lib/internal/streams/state.js index 7b05a1ab0b5a51..98f8d8a6cc33d5 100644 --- a/lib/internal/streams/state.js +++ b/lib/internal/streams/state.js @@ -4,16 +4,29 @@ const { MathFloor, NumberIsInteger, } = primordials; +const { validateInteger } = require('internal/validators'); const { ERR_INVALID_ARG_VALUE } = require('internal/errors').codes; +let defaultHighWaterMarkBytes = 16 * 1024; +let defaultHighWaterMarkObjectMode = 16; + function highWaterMarkFrom(options, isDuplex, duplexKey) { return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null; } function getDefaultHighWaterMark(objectMode) { - return objectMode ? 16 : 16 * 1024; + return objectMode ? defaultHighWaterMarkObjectMode : defaultHighWaterMarkBytes; +} + +function setDefaultHighWaterMark(objectMode, value) { + validateInteger(value, 'value', 0); + if (objectMode) { + defaultHighWaterMarkObjectMode = value; + } else { + defaultHighWaterMarkBytes = value; + } } function getHighWaterMark(state, options, duplexKey, isDuplex) { @@ -33,4 +46,5 @@ function getHighWaterMark(state, options, duplexKey, isDuplex) { module.exports = { getHighWaterMark, getDefaultHighWaterMark, + setDefaultHighWaterMark, }; diff --git a/lib/stream.js b/lib/stream.js index e8f205c056834f..9a09401e7d016a 100644 --- a/lib/stream.js +++ b/lib/stream.js @@ -42,6 +42,7 @@ const { }, } = require('internal/errors'); const compose = require('internal/streams/compose'); +const { setDefaultHighWaterMark, getDefaultHighWaterMark } = require('internal/streams/state'); const { pipeline } = require('internal/streams/pipeline'); const { destroyer } = require('internal/streams/destroy'); const eos = require('internal/streams/end-of-stream'); @@ -105,6 +106,8 @@ Stream.addAbortSignal = addAbortSignal; Stream.finished = eos; Stream.destroy = destroyer; Stream.compose = compose; +Stream.setDefaultHighWaterMark = setDefaultHighWaterMark; +Stream.getDefaultHighWaterMark = getDefaultHighWaterMark; ObjectDefineProperty(Stream, 'promises', { __proto__: null, diff --git a/test/parallel/test-stream-set-default-hwm.js b/test/parallel/test-stream-set-default-hwm.js new file mode 100644 index 00000000000000..3d78907b74f5a5 --- /dev/null +++ b/test/parallel/test-stream-set-default-hwm.js @@ -0,0 +1,36 @@ +'use strict'; + +require('../common'); + +const assert = require('node:assert'); +const { + setDefaultHighWaterMark, + getDefaultHighWaterMark, + Writable, + Readable, + Transform +} = require('stream'); + +assert.notStrictEqual(getDefaultHighWaterMark(false), 32 * 1000); +setDefaultHighWaterMark(false, 32 * 1000); +assert.strictEqual(getDefaultHighWaterMark(false), 32 * 1000); + +assert.notStrictEqual(getDefaultHighWaterMark(true), 32); +setDefaultHighWaterMark(true, 32); +assert.strictEqual(getDefaultHighWaterMark(true), 32); + +const w = new Writable({ + write() {} +}); +assert.strictEqual(w.writableHighWaterMark, 32 * 1000); + +const r = new Readable({ + read() {} +}); +assert.strictEqual(r.readableHighWaterMark, 32 * 1000); + +const t = new Transform({ + transform() {} +}); +assert.strictEqual(t.writableHighWaterMark, 32 * 1000); +assert.strictEqual(t.readableHighWaterMark, 32 * 1000); From 143deae6d8fc6fcc98de9d65138d2bbf7aa91bca Mon Sep 17 00:00:00 2001 From: Beth Griggs Date: Mon, 27 Mar 2023 17:40:59 +0100 Subject: [PATCH 175/186] 2023-03-29, Version 16.20.0 'Gallium' (LTS) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Notable changes: - deps: - update undici to 5.20.0 (Node.js GitHub Bot) https://github.com/nodejs/node/pull/46711 - update c-ares to 1.19.0 (Michaël Zasso) https://github.com/nodejs/node/pull/46415 - upgrade npm to 8.19.4 (npm team) https://github.com/nodejs/node/pull/46677 - update corepack to 0.17.0 (Node.js GitHub Bot) https://github.com/nodejs/node/pull/46842 - (SEMVER-MINOR) src: add support for externally shared js builtins (Michael Dawson) [https://github.com/nodejs/node/pull/44376] PR-URL: https://github.com/nodejs/node/pull/47272 --- CHANGELOG.md | 3 ++- doc/changelogs/CHANGELOG_V16.md | 39 +++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2b5e7bf6682730..e74162eeb45e47 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -71,7 +71,8 @@ release. 18.0.0
      -16.19.1
      +16.20.0
      +16.19.1
      16.19.0
      16.18.1
      16.18.0
      diff --git a/doc/changelogs/CHANGELOG_V16.md b/doc/changelogs/CHANGELOG_V16.md index 3c4e5c4f42aae4..6607ae4b6efa9e 100644 --- a/doc/changelogs/CHANGELOG_V16.md +++ b/doc/changelogs/CHANGELOG_V16.md @@ -9,6 +9,7 @@ +16.20.0
      16.19.1
      16.19.0
      16.18.1
      @@ -70,6 +71,44 @@ * [io.js](CHANGELOG_IOJS.md) * [Archive](CHANGELOG_ARCHIVE.md) + + +## 2023-03-29, Version 16.20.0 'Gallium' (LTS), @BethGriggs + +### Notable Changes + +* **deps:** + * update undici to 5.20.0 (Node.js GitHub Bot) [#46711](https://github.com/nodejs/node/pull/46711) + * update c-ares to 1.19.0 (Michaël Zasso) [#46415](https://github.com/nodejs/node/pull/46415) + * upgrade npm to 8.19.4 (npm team) [#46677](https://github.com/nodejs/node/pull/46677) + * update corepack to 0.17.0 (Node.js GitHub Bot) [#46842](https://github.com/nodejs/node/pull/46842) +* **(SEMVER-MINOR)** **src**: add support for externally shared js builtins (Michael Dawson) [#44376](https://github.com/nodejs/node/pull/44376) + +### Commits + +* \[[`de6dd67790`](https://github.com/nodejs/node/commit/de6dd67790)] - **crypto**: avoid hang when no algorithm available (Richard Lau) [#46237](https://github.com/nodejs/node/pull/46237) +* \[[`4617512788`](https://github.com/nodejs/node/commit/4617512788)] - **crypto**: ensure auth tag set for chacha20-poly1305 (Ben Noordhuis) [#46185](https://github.com/nodejs/node/pull/46185) +* \[[`24972164fc`](https://github.com/nodejs/node/commit/24972164fc)] - **deps**: update undici to 5.20.0 (Node.js GitHub Bot) [#46711](https://github.com/nodejs/node/pull/46711) +* \[[`85f88c6a8d`](https://github.com/nodejs/node/commit/85f88c6a8d)] - **deps**: V8: cherry-pick 90be99fab31c (Michaël Zasso) [#46646](https://github.com/nodejs/node/pull/46646) +* \[[`b4ebe6d47b`](https://github.com/nodejs/node/commit/b4ebe6d47b)] - **deps**: update c-ares to 1.19.0 (Michaël Zasso) [#46415](https://github.com/nodejs/node/pull/46415) +* \[[`56cbc7fdda`](https://github.com/nodejs/node/commit/56cbc7fdda)] - **deps**: V8: cherry-pick c2792e58035f (Jiawen Geng) [#44961](https://github.com/nodejs/node/pull/44961) +* \[[`7af9bdb31e`](https://github.com/nodejs/node/commit/7af9bdb31e)] - **deps**: upgrade npm to 8.19.4 (npm team) [#46677](https://github.com/nodejs/node/pull/46677) +* \[[`962a7471b5`](https://github.com/nodejs/node/commit/962a7471b5)] - **deps**: update corepack to 0.17.0 (Node.js GitHub Bot) [#46842](https://github.com/nodejs/node/pull/46842) +* \[[`748bc96e35`](https://github.com/nodejs/node/commit/748bc96e35)] - **deps**: update corepack to 0.16.0 (Node.js GitHub Bot) [#46710](https://github.com/nodejs/node/pull/46710) +* \[[`a467782499`](https://github.com/nodejs/node/commit/a467782499)] - **deps**: update corepack to 0.15.3 (Node.js GitHub Bot) [#46037](https://github.com/nodejs/node/pull/46037) +* \[[`1913b6763d`](https://github.com/nodejs/node/commit/1913b6763d)] - **deps**: update corepack to 0.15.2 (Node.js GitHub Bot) [#45635](https://github.com/nodejs/node/pull/45635) +* \[[`809371a15f`](https://github.com/nodejs/node/commit/809371a15f)] - **module**: require.resolve.paths returns null with node schema (MURAKAMI Masahiko) [#45147](https://github.com/nodejs/node/pull/45147) +* \[[`086bb2f8d4`](https://github.com/nodejs/node/commit/086bb2f8d4)] - _**Revert**_ "**src**: let http2 streams end after session close" (Rich Trott) [#46721](https://github.com/nodejs/node/pull/46721) +* \[[`6a01d39120`](https://github.com/nodejs/node/commit/6a01d39120)] - **(SEMVER-MINOR)** **src**: add support for externally shared js builtins (Michael Dawson) [#44376](https://github.com/nodejs/node/pull/44376) +* \[[`d081032a60`](https://github.com/nodejs/node/commit/d081032a60)] - **test**: fix test-net-connect-reset-until-connected (Vita Batrla) [#46781](https://github.com/nodejs/node/pull/46781) +* \[[`efe1be47ec`](https://github.com/nodejs/node/commit/efe1be47ec)] - **test**: skip test depending on `overlapped-checker` when not available (Antoine du Hamel) [#45015](https://github.com/nodejs/node/pull/45015) +* \[[`fc47d58abe`](https://github.com/nodejs/node/commit/fc47d58abe)] - **test**: remove cjs loader from stack traces (Geoffrey Booth) [#44197](https://github.com/nodejs/node/pull/44197) +* \[[`cf76d0790d`](https://github.com/nodejs/node/commit/cf76d0790d)] - **test**: fix WPT title when no META title is present (Filip Skokan) [#46804](https://github.com/nodejs/node/pull/46804) +* \[[`0d1485b924`](https://github.com/nodejs/node/commit/0d1485b924)] - **test**: fix default WPT titles (Filip Skokan) [#46778](https://github.com/nodejs/node/pull/46778) +* \[[`088e9cde3d`](https://github.com/nodejs/node/commit/088e9cde3d)] - **test**: add WPTRunner support for variants and generating WPT reports (Filip Skokan) [#46498](https://github.com/nodejs/node/pull/46498) +* \[[`908c4dff44`](https://github.com/nodejs/node/commit/908c4dff44)] - **test**: mark test-crypto-key-objects flaky on Linux (Richard Lau) [#46684](https://github.com/nodejs/node/pull/46684) +* \[[`768e56227e`](https://github.com/nodejs/node/commit/768e56227e)] - **tools**: make `utils.SearchFiles` deterministic (Bruno Pitrus) [#44496](https://github.com/nodejs/node/pull/44496) + ## 2023-02-16, Version 16.19.1 'Gallium' (LTS), @richardlau From 2adb8b1054e669f8ae6a0037ffefbae9e4a337e1 Mon Sep 17 00:00:00 2001 From: Deokjin Kim Date: Thu, 30 Mar 2023 03:17:18 +0900 Subject: [PATCH 176/186] doc: revise example of assert.CallTracker In example of tracker.getCalls(), actual and expected are mismatched. So update expected value. In example of tracker.report(), user can check report easily through console.log(). In example of tracker.reset(), defining of tracker is missed in CJS. Plus, use assert.strictEqual() to check result. PR-URL: https://github.com/nodejs/node/pull/47252 Reviewed-By: Luigi Pinca Reviewed-By: Antoine du Hamel --- doc/api/assert.md | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/doc/api/assert.md b/doc/api/assert.md index d40300cc3fdb1b..1467d633c25ffd 100644 --- a/doc/api/assert.md +++ b/doc/api/assert.md @@ -348,7 +348,7 @@ const callsfunc = tracker.calls(func); callsfunc(1, 2, 3); assert.deepStrictEqual(tracker.getCalls(callsfunc), - [{ thisArg: this, arguments: [1, 2, 3 ] }]); + [{ thisArg: undefined, arguments: [1, 2, 3] }]); ``` ```cjs @@ -362,7 +362,7 @@ const callsfunc = tracker.calls(func); callsfunc(1, 2, 3); assert.deepStrictEqual(tracker.getCalls(callsfunc), - [{ thisArg: this, arguments: [1, 2, 3 ] }]); + [{ thisArg: undefined, arguments: [1, 2, 3] }]); ``` ### `tracker.report()` @@ -399,7 +399,7 @@ function func() {} const callsfunc = tracker.calls(func, 2); // Returns an array containing information on callsfunc() -tracker.report(); +console.log(tracker.report()); // [ // { // message: 'Expected the func function to be executed 2 time(s) but was @@ -425,7 +425,7 @@ function func() {} const callsfunc = tracker.calls(func, 2); // Returns an array containing information on callsfunc() -tracker.report(); +console.log(tracker.report()); // [ // { // message: 'Expected the func function to be executed 2 time(s) but was @@ -462,24 +462,26 @@ const callsfunc = tracker.calls(func); callsfunc(); // Tracker was called once -tracker.getCalls(callsfunc).length === 1; +assert.strictEqual(tracker.getCalls(callsfunc).length, 1); tracker.reset(callsfunc); -tracker.getCalls(callsfunc).length === 0; +assert.strictEqual(tracker.getCalls(callsfunc).length, 0); ``` ```cjs const assert = require('node:assert'); +const tracker = new assert.CallTracker(); + function func() {} const callsfunc = tracker.calls(func); callsfunc(); // Tracker was called once -tracker.getCalls(callsfunc).length === 1; +assert.strictEqual(tracker.getCalls(callsfunc).length, 1); tracker.reset(callsfunc); -tracker.getCalls(callsfunc).length === 0; +assert.strictEqual(tracker.getCalls(callsfunc).length, 0); ``` ### `tracker.verify()` From ae4f041cdbe8b7f9b0fa764417f90b09d1e2aef9 Mon Sep 17 00:00:00 2001 From: Mohammed Keyvanzadeh Date: Wed, 29 Mar 2023 23:04:58 +0330 Subject: [PATCH 177/186] build: avoid usage of pipes library Python's `pipes` library is deprecated and will be removed in Python version 3.13, so remove it's import and replace `pipes.quote()` with `shlex.quote()`. PR-URL: https://github.com/nodejs/node/pull/47271 Reviewed-By: Luigi Pinca Reviewed-By: Yagiz Nizipli Reviewed-By: Debadree Chatterjee --- configure.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/configure.py b/configure.py index 1e3a59dd711bbb..a0deed59c1f3df 100755 --- a/configure.py +++ b/configure.py @@ -5,7 +5,6 @@ import errno import argparse import os -import pipes import pprint import re import shlex @@ -2074,7 +2073,7 @@ def make_bin_override(): pprint.pformat(output, indent=2, width=1024) + '\n') write('config.status', '#!/bin/sh\nset -x\nexec ./configure ' + - ' '.join([pipes.quote(arg) for arg in original_argv]) + '\n') + ' '.join([shlex.quote(arg) for arg in original_argv]) + '\n') os.chmod('config.status', 0o775) From 67660e886758ba0ab71cb6bf90745bf0212b4167 Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Tue, 21 Mar 2023 08:59:39 -0400 Subject: [PATCH 178/186] doc: document process for sharing project news Fixes: https://github.com/nodejs/TSC/issues/1333 Signed-off-by: Michael Dawson PR-URL: https://github.com/nodejs/node/pull/47189 Reviewed-By: Gireesh Punathil Reviewed-By: Chengzhong Wu Reviewed-By: Luigi Pinca --- doc/contributing/sharing-project-news.md | 30 ++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 doc/contributing/sharing-project-news.md diff --git a/doc/contributing/sharing-project-news.md b/doc/contributing/sharing-project-news.md new file mode 100644 index 00000000000000..0396bb466c7ee8 --- /dev/null +++ b/doc/contributing/sharing-project-news.md @@ -0,0 +1,30 @@ +# Sharing project news + +The project aims to make it easy +to share project news with those who publish newsletters +that cover Node.js. + +The project's approach is as follows: + +* The project will create one "What's new in YYYY" discussion item in + the `nodejs/node` repo for news related to Node.js core. +* Teams/groups can create a "what's new in YYYY" issue or discussion item + in one or more of their repositories. As an example see + [What's new in the Node-API and node-addon-api world? - 2023 version](https://github.com/nodejs/abi-stable-node/issues/446). +* Collaborators periodically add news as additional comments on these + issues throughout the year. +* At the end of each year the issue is closed and if appropriate a + new one is created. +* A list of these documents is maintained in the section below as a + quick way to find them. +* The next-10 team reaches out to teams/groups on an ad hoc basis + to ensure teams know about the option for sharing news. +* The next-10 team reaches out to those who publish newsletters ad hoc + to let them know about this approach and how they can find the updates. + +We trust/expect collaborators to post project related news versus news +that promotes a specific company or commercial interest. + +## Teams doing updates + +* [node-api/node-addon-api](https://github.com/nodejs/abi-stable-node/issues/446). From 65b79aba0f29c1f657ebddf57e5fb5c26fa4464a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Wed, 29 Mar 2023 17:29:17 +0200 Subject: [PATCH 179/186] test: skip test-wasm-web-api on ARM MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This test is flaky on ARM with V8 >= 11.2. Skip it so we can update V8 before the release of Nodejs 20.0.0. PR-URL: https://github.com/nodejs/node/pull/47299 Refs: https://github.com/nodejs/node/pull/47251 Reviewed-By: Filip Skokan Reviewed-By: Jiawen Geng Reviewed-By: Tobias Nießen Reviewed-By: Richard Lau Reviewed-By: Colin Ihrig Reviewed-By: Luigi Pinca Reviewed-By: Yagiz Nizipli --- test/parallel/parallel.status | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/parallel/parallel.status b/test/parallel/parallel.status index 363cea8f65fb14..2c105b230fae0b 100644 --- a/test/parallel/parallel.status +++ b/test/parallel/parallel.status @@ -32,6 +32,8 @@ test-http-server-request-timeouts-mixed: PASS,FLAKY # https://github.com/nodejs/node/pull/31178 test-crypto-dh-stateless: SKIP test-crypto-keygen: SKIP +# https://github.com/nodejs/node/issues/47297 +test-wasm-web-api: SKIP [$system==solaris] # Also applies to SmartOS # https://github.com/nodejs/node/issues/43457 From 18e1f3c3a3c7afbd48028f2893bf42f9bc1e4550 Mon Sep 17 00:00:00 2001 From: ywave620 <60539365+ywave620@users.noreply.github.com> Date: Thu, 30 Mar 2023 20:40:45 +0800 Subject: [PATCH 180/186] src,http2: ensure cleanup if a frame is not sent Call to JS and close the session if a frame is not sent even there is no frameError listener registered by user. PR-URL: https://github.com/nodejs/node/pull/47244 Reviewed-By: Matteo Collina Reviewed-By: Rafael Gonzaga --- src/node_http2.cc | 3 +- ...-h2-large-header-cause-client-to-hangup.js | 38 +++++++++++++++++++ 2 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 test/parallel/test-h2-large-header-cause-client-to-hangup.js diff --git a/src/node_http2.cc b/src/node_http2.cc index 049b71cb54e58a..a4b559e8e5c3d5 100644 --- a/src/node_http2.cc +++ b/src/node_http2.cc @@ -1072,8 +1072,7 @@ int Http2Session::OnFrameNotSent(nghttp2_session* handle, // Do not report if the frame was not sent due to the session closing if (error_code == NGHTTP2_ERR_SESSION_CLOSING || error_code == NGHTTP2_ERR_STREAM_CLOSED || - error_code == NGHTTP2_ERR_STREAM_CLOSING || - session->js_fields_->frame_error_listener_count == 0) { + error_code == NGHTTP2_ERR_STREAM_CLOSING) { // Nghttp2 contains header limit of 65536. When this value is exceeded the // pipeline is stopped and we should remove the current headers reference // to destroy the session completely. diff --git a/test/parallel/test-h2-large-header-cause-client-to-hangup.js b/test/parallel/test-h2-large-header-cause-client-to-hangup.js new file mode 100644 index 00000000000000..b8b08cecf6817c --- /dev/null +++ b/test/parallel/test-h2-large-header-cause-client-to-hangup.js @@ -0,0 +1,38 @@ +'use strict'; + +const common = require('../common'); +if (!common.hasCrypto) + common.skip('missing crypto'); +const http2 = require('http2'); +const assert = require('assert'); +const { + DEFAULT_SETTINGS_MAX_HEADER_LIST_SIZE, + NGHTTP2_CANCEL, +} = http2.constants; + +const headerSize = DEFAULT_SETTINGS_MAX_HEADER_LIST_SIZE; +const timeout = common.platformTimeout(2_000); +const timer = setTimeout(() => assert.fail(`http2 client timedout +when server can not manage to send a header of size ${headerSize}`), timeout); + +const server = http2.createServer((req, res) => { + res.setHeader('foobar', 'a'.repeat(DEFAULT_SETTINGS_MAX_HEADER_LIST_SIZE)); + res.end(); +}); + +server.listen(0, common.mustCall(() => { + const clientSession = http2.connect(`http://localhost:${server.address().port}`); + clientSession.on('close', common.mustCall()); + clientSession.on('remoteSettings', send); + + function send() { + const stream = clientSession.request({ ':path': '/' }); + stream.on('close', common.mustCall(() => { + assert.strictEqual(stream.rstCode, NGHTTP2_CANCEL); + clearTimeout(timer); + server.close(); + })); + + stream.end(); + } +})); From 42c4a359525f70c322c0df0eac188fa2b05c3f53 Mon Sep 17 00:00:00 2001 From: Matteo Collina Date: Thu, 30 Mar 2023 14:40:57 +0200 Subject: [PATCH 181/186] meta: clarify the threat model to explain the JSON.parse case MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Matteo Collina PR-URL: https://github.com/nodejs/node/pull/47276 Reviewed-By: Michaël Zasso Reviewed-By: Yagiz Nizipli Reviewed-By: Michael Dawson Reviewed-By: Colin Ihrig Reviewed-By: Tobias Nießen Reviewed-By: Rafael Gonzaga Reviewed-By: Luigi Pinca --- SECURITY.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/SECURITY.md b/SECURITY.md index 0ce5cc03e23c3c..acf83434de4e79 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -116,7 +116,8 @@ lead to a loss of confidentiality, integrity, or availability. npm registry. The code run inherits all the privileges of the execution user. 4. Inputs provided to it by the code it is asked to run, as it is the - responsibility of the application to perform the required input validations. + responsibility of the application to perform the required input validations, + e.g. the input to `JSON.parse()`. 5. Any connection used for inspector (debugger protocol) regardless of being opened by command line options or Node.js APIs, and regardless of the remote end being on the local machine or remote. @@ -124,7 +125,8 @@ lead to a loss of confidentiality, integrity, or availability. See . Any unexpected behavior from the data manipulation from Node.js Internal -functions are considered a vulnerability. +functions may be considered a vulnerability if they are expoitable via +untrusted resources. In addition to addressing vulnerabilities based on the above, the project works to avoid APIs and internal implementations that make it "easy" for application From 04cfb8209d32c8a4141ed61bf7423b423282512f Mon Sep 17 00:00:00 2001 From: Mateo Nunez Date: Thu, 30 Mar 2023 16:31:12 +0200 Subject: [PATCH 182/186] tools: add scorecard workflow PR-URL: https://github.com/nodejs/node/pull/47254 Reviewed-By: Rafael Gonzaga Reviewed-By: Michael Dawson Reviewed-By: Marco Ippolito --- .github/workflows/scorecard.yml | 78 +++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 .github/workflows/scorecard.yml diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml new file mode 100644 index 00000000000000..e7519424ccc112 --- /dev/null +++ b/.github/workflows/scorecard.yml @@ -0,0 +1,78 @@ +# This workflow uses actions that are not certified by GitHub. They are provided +# by a third-party and are governed by separate terms of service, privacy +# policy, and support documentation. + +name: Scorecard supply-chain security +on: + # For Branch-Protection check. Only the default branch is supported. See + # https://github.com/ossf/scorecard/blob/main/docs/checks.md#branch-protection + branch_protection_rule: + # To guarantee Maintained check is occasionally updated. See + # https://github.com/ossf/scorecard/blob/main/docs/checks.md#maintained + schedule: + - cron: 16 21 * * 1 + push: + branches: [main] + workflow_dispatch: + +# Declare default permissions as read only. +permissions: read-all + +jobs: + analysis: + name: Scorecard analysis + runs-on: ubuntu-latest + permissions: + # Needed to upload the results to code-scanning dashboard. + security-events: write + # Needed to publish results and get a badge (see publish_results below). + id-token: write + # Uncomment the permissions below if installing in a private repository. + # contents: read + # actions: read + + steps: + - name: Harden Runner + uses: step-security/harden-runner@1f99358870fe1c846a3ccba386cc2b2246836776 # v2.2.1 + with: + egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs + + - name: Checkout code + uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # v3.1.0 + with: + persist-credentials: false + + - name: Run analysis + uses: ossf/scorecard-action@e38b1902ae4f44df626f11ba0734b14fb91f8f86 # v2.1.2 + with: + results_file: results.sarif + results_format: sarif + # (Optional) "write" PAT token. Uncomment the `repo_token` line below if: + # - you want to enable the Branch-Protection check on a *public* repository, or + # - you are installing Scorecard on a *private* repository + # To create the PAT, follow the steps in https://github.com/ossf/scorecard-action#authentication-with-pat. + # repo_token: ${{ secrets.SCORECARD_TOKEN }} + + # Public repositories: + # - Publish results to OpenSSF REST API for easy access by consumers + # - Allows the repository to include the Scorecard badge. + # - See https://github.com/ossf/scorecard-action#publishing-results. + # For private repositories: + # - `publish_results` will always be set to `false`, regardless + # of the value entered here. + publish_results: true + + # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF + # format to the repository Actions tab. + - name: Upload artifact + uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + with: + name: SARIF file + path: results.sarif + retention-days: 5 + + # Upload the results to GitHub's code scanning dashboard. + - name: Upload to code-scanning + uses: github/codeql-action/upload-sarif@16964e90ba004cdf0cd845b866b5df21038b7723 # v2.2.6 + with: + sarif_file: results.sarif From dad0b072c576033a146994980df6ba99fb5f2f30 Mon Sep 17 00:00:00 2001 From: Stefan Stojanovic Date: Thu, 30 Mar 2023 17:16:12 +0200 Subject: [PATCH 183/186] doc: make win arm64 tier 2 platform Refs: https://github.com/nodejs/build/issues/3046 Refs: https://github.com/nodejs/build/issues/2540 Fixes: https://github.com/nodejs/node/issues/25998 PR-URL: https://github.com/nodejs/node/pull/47233 Reviewed-By: Matteo Collina Reviewed-By: Richard Lau Reviewed-By: Luigi Pinca --- BUILDING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BUILDING.md b/BUILDING.md index 82a01ac0aeeef1..238e6e650a3bbd 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -113,7 +113,7 @@ platforms. This is true regardless of entries in the table below. | Windows | x64, x86 (WoW64) | >= Windows 10/Server 2016 | Tier 1 | [^2],[^3] | | Windows | x86 (native) | >= Windows 10/Server 2016 | Tier 1 (running) / Experimental (compiling)[^4] | | | Windows | x64, x86 | Windows 8.1/Server 2012 | Experimental | | -| Windows | arm64 | >= Windows 10 | Tier 2 (compiling) / Experimental (running) | | +| Windows | arm64 | >= Windows 10 | Tier 2 | | | macOS | x64 | >= 10.15 | Tier 1 | For notes about compilation see [^5] | | macOS | arm64 | >= 11 | Tier 1 | | | SmartOS | x64 | >= 18 | Tier 2 | | From 978b57d750511dc61a71673c7a0e777a733f4e7e Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Tue, 28 Mar 2023 15:28:41 -0400 Subject: [PATCH 184/186] wasi: no longer require flag to enable wasi - no longer require flag to enable experimental wasi feature - wasi is still documented as experimental Signed-off-by: Michael Dawson PR-URL: https://github.com/nodejs/node/pull/47286 Reviewed-By: Guy Bedford Reviewed-By: Colin Ihrig --- doc/api/cli.md | 4 ++ doc/api/wasi.md | 3 -- doc/node.1 | 3 +- lib/internal/process/pre_execution.js | 8 ---- src/node_options.cc | 6 +-- src/node_options.h | 1 - test/parallel/test-repl-built-in-modules.js | 48 -------------------- test/wasi/test-return-on-exit.js | 1 - test/wasi/test-wasi-initialize-validation.js | 1 - test/wasi/test-wasi-not-started.js | 1 - test/wasi/test-wasi-options-validation.js | 2 - test/wasi/test-wasi-require-flag.js | 9 ---- test/wasi/test-wasi-start-validation.js | 1 - test/wasi/test-wasi-stdio.js | 1 - test/wasi/test-wasi-symlinks.js | 1 - test/wasi/test-wasi-worker-terminate.js | 1 - test/wasi/test-wasi.js | 1 - 17 files changed, 8 insertions(+), 84 deletions(-) delete mode 100644 test/parallel/test-repl-built-in-modules.js delete mode 100644 test/wasi/test-wasi-require-flag.js diff --git a/doc/api/cli.md b/doc/api/cli.md index 6fe2ce6b2be5e7..cda8232ac91d9f 100644 --- a/doc/api/cli.md +++ b/doc/api/cli.md @@ -626,6 +626,10 @@ added: - v13.3.0 - v12.16.0 changes: + - version: REPLACEME + pr-url: https://github.com/nodejs/node/pull/47286 + description: This option is no longer required as WASI is + enabled by default, but can still be passed. - version: v13.6.0 pr-url: https://github.com/nodejs/node/pull/30980 description: changed from `--experimental-wasi-unstable-preview0` to diff --git a/doc/api/wasi.md b/doc/api/wasi.md index ac395b70894c99..f70470d8dc0732 100644 --- a/doc/api/wasi.md +++ b/doc/api/wasi.md @@ -97,9 +97,6 @@ Use [wabt](https://github.com/WebAssembly/wabt) to compile `.wat` to `.wasm` $ wat2wasm demo.wat ``` -The `--experimental-wasi-unstable-preview1` CLI argument is needed for this -example to run. - ## Class: `WASI`

      hiA~PBCa)0SZwz(`vPs9FMWzH*{tm%1RAhK&Z?XfJlN2$enRm2}h zj|EP91~L>X5DpzN(nLu(dN(hfp!uqdFUV0RWqP{nstG4wsmj;8e}3ar8?_~CX|SxV zHS#M+o>Z_-NA%RPjvX|+uwxXc0}m#F<;ck&h1fk5E9>y_+7}-s>`%bTAVchgNw2_? z=iV`ZKnvKwgaKJlATXSYiOB7K-fzZ{4b^I*DhUewMHxgH+s%`cDsi5zp}NehjC*>_ zzIJA#Cp#_So{yhKf3|QlDXzOwsFyIrB??gqp@&pZRyBXEd(q8twbNNsbwArihr^S+ z=GpI7sjHv21I<-_Pa%I zo#~BhVnRr|aFpy*qpea}=KhZua3DI?8wdO6wJJXt?;xuDi&O7N84A94+4Bn!C)i>t z*eg1T5dAW_f97=X-eb~ReqkT5*ZVj0jc_W&Df+0;`!5|1o892{l)}kJDSe6fHRyO^ z**$zlZsWM&?U)YReU2hNxhs8P89m5f(L?a~M;P(Jz=ArILLb9ZA7|))pVrntG;Y$v zU2D?(eac&a^71fB{Q;-DQgGSqndLPYl5dWwH`SeDf4an|N?5a)6Im6W9ZC*lv$-o) zlXKD+E)}<=X3Wm&8F?{mwJ~LH{~qh0@EEGQz3v+pjQP#ih$N^ZB^8gprEcSO?+js+ zQaWw%s8`HhRL?NS@O*X(C_$izf(Phzh6n~Zq>G2M}vxU^5$h- zVWVkeAWxv=6qadnh1V&oGsw5Y@|AZve#iSXf25*-3v3#)@Reon5qYy5h&>6lbgK2j z0+bvcrj@exZ2cM~n%BoLqQ=x1Zd2Dkg9)Snt}u@=f&%~_SOoufv%mNl+CZ_m`c3f; zm+BT(*3n&R84Hy~404o0ww?t81u`lhA{<`{jVb0i)MV2#2f5xRLdx@THPsYAX_DMh ze=3K;JZ823cK69{s&j{#TZ9KIh@~pck`q>zuk+STmH+jJozCFR81HGYwyo5VtN8WR#28;af#KvnBf4e zimm%kB3E_reYAEwQKmKQC zxaPu1=_2;~FCy7b0LfgPQi08ljj`b7rQzzYw5-lO>uOG1)os4Q10wgntrBIZ@-+K$owu|j1b#-5er`9MB?v!$^Y(_pT+B(e~Z7vL4jr` z_Wf{CoqXoJ{9*T;6HsYF?|Eacyk)Qz=^JZnCa+7U+VP~Qxpm!9)7gi#VA_7+thzK2 z9nF5;K;uIm4exz7{eFL5i)-_>!-jrsx$Z9p-V0h~RL%-rjyfuc?8((K2?PV7bVJO0 zv!|NGp?zk|M`Ph~a_gbhe+YU?KMKG611;hA0*%65c!C7EFZ~zLy$ntN24uStxSc{^ z2$LUyR8<&7uqw&VzSfKc3s)j;zcnXSCE(OTs`9MaEkkLdn8;4j{CznqgTMX7f_%rH zWPZpk0-fcc!A`+JS5cW(bz#d$CkoRZ>!mMsAF5UxZ`#<`A{wyBfAd1{xy9%=R=!|J z^4=Xn7pxgTnhf}N_gj4cU0pnlL_~TR|24j^EdCT~BluwP2p^gp&;MpINv6<%V?zeo zLN5k@AZ-chpw-9)0rvgQr`Gz6{;s>C!#Vj&dAI&;h5{KP?!*dlM3thH4ZDw00Ux!S zwAD4hsNLEuj#I_hf6$zWiAAGn(*f(E1P^v5`|rE&Of(_$B}VkV)?<1Dq+)D}_v#5{ zyjY}|-p;rk2>o78%<6=C&Pex4SDd~zeCP`eWpPpIdG76kR*hFAkKdY>DEzAV z%Tmm;c}_=myKJS?uDZ>s3l#bPamVNBe?xu8@Z*=cx{LmTe{`WHc5*LH4VI6FQ*!qf zqsI91`nv76nEZH9CI5v-GbT=a+|AOStCJCWvoujuW*o%RlMM-)i4JL^!9hYW znKc23BuzSS2!fy{F#wsFO#-ibnr12rZJMbPRoanK2{8-iU_{-}k8=VY>DFRNFiIvR zK$6Vbe_AF?TfL)y;+1n~H--Ob3QUA_h_otc!D1n3RYbIxy}Kf$DSp4xepmFr)#iV{ z*?FF-)U5}R4MyU|V7!PUEh5(8WjX-FY>*HRvDr%TicpcIHgkRXF~0-T2e0+3iC8H<-7 z$^j5kva~G;r4|hf8DfkyA=~CnlbEWZ1n8)ft`KPgM3Hzx@tT=}V+I+6I#V{QlSUY3 ze=OB9hFqc|+S1mgN;ey9xz5|vruvGe>s^$?jchW7ZYt%X<+ZuWT-@NzGnr;9a$^m^ zsJNw=w+<5^lvEbm1+8RSG+A2_ZZKmhVly;LQB^U5tAdDJV;G2Kxw*wsmX#AU#t!Ei zIBTYv%2zp78BC^PM=ZHYiJDZFTWkaie{8nwtpu>xAru>J6bec)Xv{|zsw$bH*r+Bm zOfG41;lqnX%QBhGtzzbuBaG7qBXX59YnnJ|oY?0$2L(htgENA;ZW)9z#Hv*i%qW8G z3h_KFoig@x<=$dgJUq@Ndf9jh{unQBve9O@B4f|h^!%*Ovj4%3xSJ|uRa?%Mf0nCG zqG}>Ngd3?4O_b)eIGXQcu8nYTkG)O%M;d{--*CP2VTOLp^Zn0fz_~V=!2It_+v;Z@ zN4NX6yS99bjHo135k(Pt{FJN_B8th?rBN0Rf9w1X6-8qrr;AQDEKp*46#fSTJG4K>;Zxh8_Mf?& ze)k@k$GJo9Cu#T+k8=r}v_F=9!hMgEGC!{&TlYjU}vLT|2M$vrSYlA`19Z$clj88C*L!ze_4c?>{{Br7drv+ zHowxEX!lI{ZFTR^eM>1}wSEf@*_nsg?qL1@iaB@inayVE|>J7^q3NCDN(>~uh zpZdSTg}qvVveX~WMn2{ae`84-<0`#^xX~rqb z*Oj`DTNUm8!B&cRmbJU;?tDH|IUKil+4}Zzu8#A)mtCuHdHf7iRS1U+H%wXEtKK14 zasDp2)h9VC4l_8DMB@7^tD$Dz`D)cm6=QOFMllt0djxnGH#VXfe@7$+Q2{H&d#IAu z9vd-Wh^B;u^igbYdpa_H%>7}>8w1ou9Rgcuu0`!NCIG=!xj<-bTA&C>XqAXxO|)B5 zjFEsw9>YkJV-oGRwdnmP)_sTYc{_W;uJ>Z%>mPb=a`))#TO~EsCV1SzKzI~Dp4;cd zplz{mf4$$OUdSAPf5+V*4pC?OpEHlney2}QmGO`A+5|%NTd!3g({W$aAYa#FgaRn5 z7;a6T3Y3Qq`WTtKF?n_m(Ie%Zq>PaROtMF=Bk4Zom~FAYKWh~1Y*^UcQ?q4+*>c=S zmB=eUi$tZs-+XB))mV|{Bpi>dU}#*;o?>D;crWuD4t+kZe*_B4)@5EgNZSz|S2cEp z(aY)gYMQapFl9@Osl7$SlOFL>R=2!pd(tjw5H%u8)dsX3*!24-A#hgVm8Nd53Fx`R z8-;0eayY~Q=hJrE|5IV`$OHL4*Zn`Cj+Yul)=m`YV25y+FamI8`yo>uv|oD8260)= zO&hN(AOb*ge@a4iJr8iiX=UalrJ0#0q|Qi{Jg$qnprEb2Liyb{E`bD!Z!9+=<+!(o z;n@gl5-cK+7D$X15*I1Tb+1c!y{&^`V2Bm~Dydw(O#y3B7QOFwv=J8QqbUe%U?@Q+ z0`2a$U3T{udl}*3xqV%^OQi<~ZL_@tNP5yPBRP#{e-H4D%|(gg7TE@A|`u@EhE~JhGX;L}3BIaLQlVfMgd3zojESWl}h+5xKUk2A! z=^{<9f`TBBPQJ^LW4FY71?1aZ9k7!);D9GhcNQD~{<`ie8VnkudwOyB_K;4S@nArl z$0eere|6b`keGm=tV=|sPbojA&8YLYrAh`Hk(Q%4k=NYGmcmOu^ZI-GV&~ZLF5kAsLcP#C#dx~jsp$?PJyeWD zrkS`gD+HoYKOdSC`C_WL=SGY5$gqGhN`L{}Nalaq=&LQAkh`d*78`=b2vmR2 z4>vQx{*=E2ipUx`US}u#lH@>=NtviQoq08@9s0itxv#?t{qF2?ZmDqE=tN<_pJyb0h4O%QPiXmniNG4 zv_XB3`}B)%#SKVYkYvi)))%3(a{O|TkY3CgIp(O2ve-Fr$?3dhoOxy-Z7RW;GH7!ADG+)DoN1n7ZGReLT zRD&Q76q6?n0fTHGu_G3^#YJ~~Hq>}Jg8WHVhxYd@_;m4w$&m8X(pL0mY4+CIwvZPH z4I0c+v*2L3b77i1RC+HMRP=kryAm0N(s^=HRI5mY;vIv8kwQu~-Xw1pf720xdbzt> zyL~LZU~r(erAySvp74xrFcGTEp}LoOU?OTT^5*$gxq=7KE4b0r4^vnbO4Mj_+te>O z^Ymqosmw27$G2XLxa^VpGttg?ET)7$QxyDA-NxpRxidI2M^?)ZC zDspKw7xR0&5=}aa!@)%Me=!vI4tlCVz`>GGWP+xH1b43EX{=%h)Wb)m3rzJnLpSWx zd&O*)-8)Rs)XwNYq{z^-uPWypO|7o8f;5_yH{h8h+V`fW@d2%EnSEMjl2R?ci0dUBIdpvh0Be2q-on(M&cqA%_9k*yu)>R@~Ox^6q7^-ukaE zj+V*alYX1Pt;pM-kO#(_Crlv#`Ny4XLEG#B2A<}hD zOapX{jft}<-MB!U-@jd7&EeZez2vT~^RqU`k=eY@6SE~CS?AJ)hNjR;hAhZ746}V^ z2_wfN4PU259F=a88v{m05Wx}+uxiyVON%_H0gxb#RcQ{qe+yPSMOWX3XF*2zs(PC$EUdXJdefM=i^@uDL+#>A{lRsc$EW6S86B8v` z_-qhAvn%*@J9<(q>09YiKSq3(2htm3D<6iI|7nO5gZ~4Eb zyvJr9J&cA;e-uIetp9b7!NUJ%liYcdJ!`lAeEKRqyI)IuWb!tac#ueD--9pZzPf%) zz&Bq)mlg68{0=BZQwV~Nta>MbxBpke_BX*dAiziZs1A?zujo&`pFx3&Rv)NHgWe$` zKXLuuo)snkFXbV|3N4{gD_+9hl2PU8b1}uC>M`7Se{Ae>kE&0I=bO{^x&7TQm4CC9 zo4=tDd5{zBHg+dAHuL#^armN&8DWtATZiu8{I6yAm-y@CPyPIVvv#e*5O$8o=8(q} z5U#fe9$KN^{cU#0l7Gg<=4Z?4Knnh}*xcFt8hjemPaZL9Ow_DxDe4OWhZyQj)jM=l0tM;|g2J8yf0HS9;}q#>VFHRBcE{HIxDz9G@247e zIM-7XS4^zjZEk2I1TsT>I*i)B z!xPRpb~X(G?~O~{L@Fcb4X}uzGFw8Fkwq*|s|7tehNtx?neX}N5AwX4AfhBe-No(V zf4+~CdX-)}FKaP{#;7IbI^tVfrG0d2chvrQ-TY0*Vw8Y}H?K@@=ydV&Z!?GK<)v8$ z5O%eQhw7;Fba1HT>UG(vI&}B<%0J!}Y98I0L}{lkcOxf7N%GL6{lAmnq_NKHRGNR(^IIet|=>zZf4u z5`J|Lyw~a426bOG%00RCXJ^QO$t0J%WMrWT5?AP@a<}FvGBI=+KR^5y&(qKS9;SCl zYEUE%%eo(6etn@w@*aAWekrbk6fJ$G!=k?A*Yc1=98E?IzR1ScVokM6$gfWAe+I`Q z_EQ=X;gTi-vm)7ZFev2y?A!ggoWWURIhO=NR%t~kHj*lpnfXSo2StTeQ7ofAFVsYX zB^8(a2(%xXQP~SALJMDK&v^jV(`1`*!-(2L4#gBdMS5Zl|L#}Ol_(Q}p3NLL19=UR zl!H*B57?Q!q=c=QwiMzUS2ThQe;Pvd7kT}`i)MlnKn9Sx!3f1CNI|k$`qecpk}CGS zFkx5|V<;x&W++poYDpxF_vQMcFNI*E4Xn5!iCA$J{@Ix}s#M0w3NY#fSUN@`yqOac z(HB43D@AO%&+TToD*A_b5OvHkl!yB6?_KmhM)pE@R3G!8JxP-j@8T>-f8Al6-Th(O zO68p#la-D?Yd=}E;E5Wnpev2~$lL{l#5>P5(sa)6dvwkAWlLkMAv zOot}-RWiYpFaH?KQD)g#ige+cOZntUfHW+HC=w#=Up0G(Hk6c5h%{DkgvBJGMM=G& z=wfmRP@scINw@UXf8KEhAtj7)kxpg`%Tkcl1k$#0u+d8dVlKhD{&X_LU0-c=*7brh zt$xkxH#*+&tj3E%%OaK7pN$$uni^19fSs=50(4j!8*^DP`HpaU_vZ1Vp0>(qx586CV)>I3SRXiL6!!i!?#W z!?pgwm*U3*GJgSJ|6J@q(2@es@Sz(Wh(r`q-UB;b7c>zdnl?t*StPPzWvY_HAy83c z3JOhz-J3$-hf$l$o0~9W?-U5iZwBv3gw&i$8W1j&kras&Dx(*G$uh8*dz2~zVWCb8 zLLW}ECM->!6Kf9IwkY8Zv~r;%2Bk@o;RH%mD?$mBr6K_V6&Mfb+!h7NAWLjn60Tk% zgKbHdAC(nXy`ViY4M5O z79}#j#S$a0a6Q9nflvNuvLZZwq9ju6y)YHgGz=s#ZuDyT zXd6T&yLkrLclj81hHzrl0VpW8R*KOpL>pI!`G2wzl8IU{iV3Tm$k>V@uaN&_Fkvl@ zNZJsC3^K@NX|i-tB8Ws4b{N$vRz{665BpG{gZ}DcCph#Ny(%LKuu8g}QWFF+)-}X^ zi3s5ex=h;#GKCYySSF(-+Jdnt6oNJwQk}?f4LuGGr=qVjp`t@aIZ3TFVUa2m41Z@A z(tm8uNHK&QN)d#J$;?gJQAU0CF+y)hV=_c3lNQSqZ4iMe8mMNB{`w?{CQBmlg(ley z*c(D;8JohKsEih7TMXG2YN_E6u7zH3uQyH@i9p}ZVu1}Jkv0o-F;{ags%0;rXk^ks z;_2E+06;*$zd>s$(gXg5)^Qg7^r^y9n1u~mH->+Wr{f$6sj`I!M>r4)sy?ZX2CCtI zNg*2H|H$glM>TgT4AM?nZ;s3KGe;2d8kcD#kNsA37#ye}m~`Rm5bVehSquL&3`gh? z5YXp=5F*$G!P%lx#lu98HJW#WlcHR^irtY<4B2p(f3`H^-F^k?778}D8g@qFs zICFBMC8-Hih^VnKG3LaQWhp3w`ZIWhmNCuS_73iXzFbDK|oC7@Niaag0G2Ly*o9k|3;J8C)gF ziFb$~nFNqANos?oH&b}j#U+SSVoSB~DlB9olOVHYX+HKOR09YnOiM+q8zvGkZ~e`k zT?JaO&7i1^MWDvB1N*b9g3ZuI3WE<*lJr7jF7z~~_Sz^^1sw;|oCl$!p^QYdpg$F; zNZL#=v{-fwc?j~+ksNW77 z!x<#FR0w)2e+%GD9qqh@<-y zgiatq1)zZ>V?@C)R82sF(jZZRGczT7?4UFv2yI&jH%VgQ69yB=P?N!lnPdVDq#Gg$ z3VCMcV&Pn~XAqhu0T9Cf(4Yw#5sV;j4*=0PD>TEjP85EQ;S1a$bnuEn`uoxNT8kr5p+FStqP;A6@|+-DGDbJ z@vb9;=B|)bktWoYjLbw35|R(vCGDh175zATUIa@H=D?uY*JcIjDpUxhgi8)@F4GFc zeDc~w*!#TW5y7E<*`Mq&M76Qd+>g*q)Cz6E(ES;gQO*Mu3g<4b0K8Ph-FdN>aLxl1 z7Aw2KXxKJ;?GQ)@%vjUx@G5LHJAGT1n$819fAj{lI$|9Zt@xEg+nBenzLgC42;q!9 z=`xMA{ZHzSSbi}s_MC(uR#kc&%>18y;}7^l%O71v8MlrcW~KX4=| ze|F~FFN0a`e6RgIws%cVh66K~Bbdp_?NUKjOd`CYIWprvHm^B_!FmN{ri6KfCwWGD zvD0h91b;@NLNv3ojx^Wv_@{};jBa3=oug~!HNxyzTGmB|ujy`|1^LHsG?jP_KwwTk zTs~=5!-Gze>t1(`;zl2@4?Pbi#HfVtf2ys7t?try^!F6p-m-Eu*&Cl@ynZYFG`8kd zY>o2=U9O_iZLzkGy#z6~KcyLo5Zc}vj!qXhYx+~VGJ*+t$T?y*SQ zR$>ROXL~3)NUxXH8vVAKTMeUR? zaeTjs@!0CTpSawAs&K(x6-Agv-QVYRc6uFR_puA*&*oS}K?Awi*fu&>4EfB4n@sI{ zj=woXo>K3NoUd&EY(lmm=@a7Oe@z~}YaGeuZXqgoF-W}RkUaO%3eHJFYvzi9Fp(?~ zP%syJFaXW~;6Ryx`h_P+C)7Qcbz}=gZMKGaPm$onb8<%Ufg6f89Q@@&Z7Ae3qAN*n zEeBCgkHhb>5E6e+$15}w0tSrf+#%jg8#9z-$Hd{>ywhwN8;U&ax`bK!f9#a_iF~Bp zkHZU?@-)2P?$UF|Y4s!LeJw6^8kVR-NKbiu{+d432C7rFGP6QoosnRXS_+H;CNsR@ga#acmv008Z=fpYT{Vp-dKr!Cejyz&>E)kny_q5@Pe_K7z%?T9ue${;n2@S9`E}1~u2TKUzIcQq{*VBHU7P7Hb zzjAb34+X<*j)nTT1>|Zkdw(Pr3rLLZ*)X9eZm zf~tcj-tXOaeTYOd?uk^3!L)9?if?UrrFzHJBJYBDjTB_vPekY0dUN*Yk2Uy8AV^H$ULwVbAe$7}PD%i5B;lq(o{`bq^7z~A?~@}J=W8n*s1$%J5Y%uylfIpUDOe_LK20Ptua2n;w*xy=5*cz!3f_!e!uY%}d!O*@VwgZ6(XxU*ie zsp%S>KI)Q(qvHADKuZ8<3?x7j2PxeF({q%!2V2X&+&K5QICNHJ{YHS2t}$S-Y)Dcla7<#*^{*Suf z^wZBXh|c<*>OGrZ&EGVGx@&I4AKjwA4{}n?!Nl^UrOj@-?T)vIv-l0gb8mnMJz7^= z%~W&YX0kbZe+SK;U3kAQOK*xs zz(pCwKvBq)0vS#x?so-o`>XATT0c>Pdd$`qmPdU;fxJE{-ksiEn`)~MVG+|XJXu0& z&1=fll7#aj9CAi7d0`qc;sqGvOfFC%HzFpipYpR|f4+I^9ML;!vKA}gQ@eUknb!JG z;<)IgMF-WVsD6Jndp~&n z^Om}K z1-zA+$Vb!nA|%i34Rl!d4lpWoEQKL&a~?c7!XdkVoe5_7eNLoV|HK&tdt(Db{X2~n zCcIsOyfV)b*Zw(WYT)irbo;!iP++Kxre*)~e-Zkx1r2>WI=|S9KcI`LRos_Rd-O~I z$Diu|S7x)}*HvQhS^(}AarvQ-p~_a*|~|&zc)VEESV$-z73&5mqqx_`VAE= z6yBi%)x<@}Q4ZG}7g^3wo|fw$MWW3i zP;cKsjFY2A;^DW3?FSN|tJ*n3?VFc-f8&)TFoA4)d&(+?vwf!8W=|KFbM@Q`PhFZztc@MfLmT7ts5Lf35ik zbBefQjn%jmZ4#|qRnF2I9+$3JwYf*oDF=n=q;xLS+e-5bM-bRwL zY)Q#x>LsWGOX<9c${N+jgK-P-y14oww`0Gyc=*a9t)?GMZl5rNO-ZcR?y!G?Aln zG_ayh8Srflu2UY$J;n`=e}RX)x&{%6+D~P#l4sxeo3AGE{XBZr0Dse91&7>F;~|c3CEUr&`~V$RL~IX;z)z4!98sHjIo&Vvyoaa&<$FX2tIG zsTyhwUrvTGdMqm|pzv&uwX8Xzh|JoEog-$^)Z_{qX#(m2Iv~?glnE_S zi`7j%6>>veHoP3pn>jr6aR@y%)d#$d`O$k6KqT1zIV%W_k3euUrv=M}q#Bn*K2jQ( z;m0~&%ZacgSQDEZf8-8~=xbwo>8=y4zlM5ZF{0SGt@xpM;SeC|ufRh(Xe5e`Lv&}3 z73RSHWg=M<)}U^1I=GV1Cl67x!>_I3zef63469#DYg}&fWb)^xoXv&*g%bpfjWft; zps;_aH)_X!(7_EqLCvSqc7EPbhgO=Ts)Z!El&12pWIUlZf0?8QwJruuwq&T9FsA&> zh7hwei}NH&CJ~;=C}3(-M)cJ|wTx-XxW&Ls-{V#FK*K}>H{#H8-Y@JFnb{y~W6Zeh z-X5Uj*7>W~}tT!eVAGx&heAfh63msOALWIiq614+Bf{i06Gy zy3UdLqXZpbe(FsC!;)^Kp)OGuT?(5k~Wn;*L6^)_pt87fB%E&_MXx*X0EM*KD~U`< zXWAnL zjkr{3>Et#IXrYs=5|~U{)lPtjl{+iY=1*^{M^jD#AK&piLb@aOAhH@r<$ zsa(tr*)JkDD^5L7^)t_E7v!kgHEfwHlxSnM?NhLg35J-9z*8b%3~7%N zfA_1tXed5bjoON??Nv{By`eFUwx!Gq{CY+@mg!9DjgkX^N-Q7|B57Hu+9_eWrjEdl z;SF*+2*jh{(c1;V945=BtFK-NjO37RMCs2=ZNb3`R90VRvau7Q&2h&$-uP->jv#_| zwDZksLTMb9jPfQL3Zu_kS_}{%=@U_Ce|s)Uo3cJ*qFENHe{nH8{KJaaHRa_wxQ#V+ zGj6{8T*dafPdFntwGW!1-0rCx9`Wgf*Kz5g;`B6SNZT2zu02?pq%>hHZ-#Tkfrx-7>qYkX6?<1tazoL1zYi?CNC^e}k!V zRG}FRHO5RsNEbbGG4ba((op6yPi1Q%Q>gE`m^`#(jU>VlC>p2P0hKL`N!^zkVV!X_ z2TRDzi^*VB_B~yPOq=141V#?Vs&cfQkn*pcF@*r13(ls%{YKTi$)${mi*?UeMw&-L ztngg9-uyO=GY~5$Nf)a!O`zHhf2cTG<0@zZOWbNa&a+zbR<3hA!PW8ZMsN zRg0~qoFB_~eP29XR&gXPf9fN)JDAyBo%9jTA5SM(=UQ*TZHEF<>Wf_7Ri#$ERaGTU zH4^1)s7A*-$Xfx!`Ig6jeB*%0^1i+5+RCEp@^YR4#Kq$pIf$g9 zCOArRkS|m>I^uFrjU{HXR;8s>DWvG)dN(xF-4oV~tizT+g+X5`^q|^j6 zF)`rIc8Jbh^O!R+e;gkpT7_rX)wzQw7^OX0|@VXC=$CJT;nY^|W-Xw3;wK>+i_< zSWq^4T4B`&;or0t^3jpGiP(i$&o~LVcx_sCm~@Qex~NB;i~#6fwyM2qvOP>x_wSFl^Cp$gw*i3ui#p7{f8JQH|37RW{%HNJE-#FYvs%3j7hh%t zivPz2$Y$r>G#f^aKJE>>JI$Y&~kN(GS+CeVBuhqzOx(s(%F&r-^o|EDe) ze_246$0GjV%deTm7=i2%3~R}6m>$*nzX}nUXA=J(MH;rZEq&LYW^>-aadOv7#ee<& zwz2&td|I;k1Q48-*5VKFh-*YTmejvT2CeI6V6Im-Lbd`-JXAt?kte}WebSxB^Rq6i3F;^B|F_tM~j?#vVjiZk!x z_lXdX^v|q`V#-l0BMDl5<)eaNPnnJ>_e}0z8MuR3^?bY^fu-Tv>RuH4SrI4)p$7j} zn0<+k_h)Mq<&u0UnwDNmbpBeFYD*nxDN4f|I3hB8_>73|{a5LHKRY@ToaE~xe@29s z`Ltma8xrW-@;&O3Gli@Nm~3b5_mKp9xfKu+2^(%xNP&Wm)ehUu4PnpVvAip3oI+3} zi{XBx*G#^mjjD77^=dUVu|pTUiPzGU(79)U(d)FuWKA2)gf*+wE302+G`2RfKTmu{ zC%iF)Sg$!=WNOu!POLbVYZWI8s#JTV{nYT!!yqVS-Ut+qY%%PDjnX5TK5Q&ipjJZi^C>0=v4?w(W?g~iW-1XSWyZ<;V|cX4>NDpd?aGN#1IF~On@2q={5_i`Ah#P2H_-wgwn&Q11; z7~N#w63NBne}*Ow4!T~8g?JOJBRHVOZxnGe1>Z3jp@XgzM72(4Mg&@}=SrKH(Irk` z6#-Gzz|2z9IFq!!P0lVBtx-v$Vq-K3Ix10k5l8XiL7ROyo4&J~{-+tz9|OKPWK@Jg zG08o6)oUSSyQ4U$a!^MGE)-5L2BDymB#6OkGcX)se>#VX0zQ5fi3dKt|i$jYuUN?1q>9EJs<~+>=}A-x=O0&jL4OLl?Sx z%|Zm0f3$|@me|&>d>ph@rKy1PFTF}HP72-_Vg%rfP3A)ivbK2IEqtlM4l_4OCOU5i zN^~itrt*lN;p=;iq;bB}u9$ZOkN!x$oi6q;3f~VLCbx;&6rCHFGvw6kb){Y^cx_HY zVJYa93ubCgj$F&E6*@M(Cz)&(o zsVK_QP?AwHwJ{hgEHdDcv4RNx znd2w)NO2gdF~da@944x>N~>(IOlu2Ef5W~hmH9f1GI4t76*zSDtOg2DY9J7FfqF)j zj3HE{hHwf5h)CH&ikrYdj?)K}UEQclCY3RnUMX`G##tb=p>GZ5{Y_qqd>+#aF}3N9 z6iwnd7jb$^D)g%qq|Aj6WfcxVFfM|`=&I00(6qaE4>y2fiVm8SDYVvyOTbj{e;hiB z)}}5-N?LT{^;EAIsHI+1TpX1C3Mb2j!xXH!L zULqK6_B=;{-snV>G|1sfYY^~7^`Shp=sTPlSs~@91_9#_Iyt$Pl&mJ&VjKvFSaA~g z#ihmL2G}@6>_a!4Ky0_BTMK*U@}=~~OsZyXM(-ufZKMh%%o`k$Hzl|&e-aF;m|sO2=$K!9hC{=hU`aX^ z!By(|5>3f)V)PR?E|+H5m@k8!Dk`J+i!Tx?@taHij9XI}D+LmU6P=jJs!YA^x|B?6 zU>0ID+F?-A^h+jgxm8;he}f;}yaOd|oJItU8gXZ*shODyL!$=^T?I+f9bzg4?-D9# zoZU|aJnvO>r#P9wn9+ zTsTY`IkoF#;l>L@!c79XI(Mi^1ZYHNDr<~Y$SV~Pp+)480vVV=Zz2pPVg@I@byG+v zDiG12{{Ki~l!9-zG#g&8g@SJOn&`QTss!5?zh0fnL~eG@nJ_y}hPR-}zEX&SAwuds zE=xBrmS!O8ku}N8e^#xExMe!l@w&6V4eCN}>Iw)G6oMi&n3I`LIIK%ldQCnoP-QEI z2*@fh(acVc=IVi}yOVcSc7#ZDHJZFSu?;Q|?-@xke8#kmRzU(6@C!Re3|thjw`w;* z6GR~z-+ylS;Q@7YDYIX=L2AYX}%*w#zdSh*Hvne+b-63)JLZ^>nJwlSh=$ zpmQi>yR^DBslD*ngD(>&^%^#BrQ!m$@|rYTC5f0uW;naKyw3-Di^2sF#-vPFjzkUO zSvH_q5|yJ>%$S)Vh$WC}6d<8Cp3tGESgo&HL4$@Kb6O#bsk%rRL5tq=D>NIMl}Id| z?(Yif_g0gne?z_6n3YkQ49y9=II5CrdW>HRghkwA2oW%Ige8^GvwOO8H=E}y+(t?a z8@o}x?io8xBE;QAXmo)!Pe>*a6eCQODwJu3aTj4Lg@+E%L;-{()l;?kz42C(GdED7 ztjuO+G*uof0zm1RaKRL2FyS~dX2Gt-qBL; zvyDqKr|YWkh23WqIcZmqV|()W{jUgXnC)EV384eCXEUQ&An@T7Zt`DxCS>Q74If4G zVk25G-uY)jjP_15IOo|})ge#TU(JkU^E4H>5*R%Pid))iGQqu`f4LM&_zp!9KxX8ntr{R!eCMg@ud9N{XH?IuONcFyN?%n3zD4v7}FqX7MnMT}dz(YxN`sdhf7g zi{Vo*NDjLGsxPt}*v_bG>pC+i6h;f8oHi&mRM@@5-ejbW+_2K;mUb5`OeX^2DM`B%oB=!|#!@NkzZ6|(iB%9vx2lx0# zggjO8c;AieFk_zmm2W{3ju?dCh-F+0WFtO@dGD+@LFX}wz!KQ#BQof zMjkq&NaJ)2YzrbxBg1NUDu6AkikOj7m4kU<)oLnB5Oa^%9&@a%J$F7f_p zSiLcwQpERb6&f35gCVQqRTsU`yQ5RX3lZ+Ni^96h4B%FZ9cziiinDEk5rP%c)gx}B zLF!qRgQ*zJCt_fOjv?6`O*m671`;GG+RoXC7^QQ5tX0K-=X*xKR3zrl#is zLno(3I8KGG7mZL;z=f)|S^`P5Cg%{~>JIQVG8|&Js4=9$J76Mg(V+1W7h#o!jBBo$ zCbWT=W(?@_5N!~hAVuawkp^^a(KA89yr(v%FEKZgNf>);8)A*b5KhMy);6h_M6wx{ ztdhK?s%A)kP0Op6;~QWNXDmh-fl~%AR575uP2C#rM%1%KB1Ozzb2Amt;2ki_k$6n- z#Y{5q0q$>9*duZm2|<&!h{fTIRN~_I7XZveRH7u5kk)4NgIZl+3<|Ah6QjG)IaYT| zOS`~B;+D`VuYFjkOZkW*Zc)&otS5czj6v2F^g{=Kbp$Ff%>oo4%5Q||>QF)mO(js= zBMx`O#Q`y7FcKyv;fH_A=AvZ0tUVsDX4=k8)D2y?m05&!#w#U-k57R!_n5%fDN#z6 zrYNF7P%(IjQVNtVq7{m~i^$V|Mlou+xG|M%a=NL#Me1o!2HnfKDy3^E1A?zJs)2Jx zN_Y!@5ETeAU?ZjKZ4|TMnbXy$rQW1CiXt2|7#fi2M|)((sCHk|@Yd!o#5HhE5c#6@ zMBp$bUIa-JL&BxPI1z=V`XwB!HpJ%)tuCO6z2K-UT){{!^5|6Y%7~Sbb6?-a*~qPs z(>iTf!K_BP!Kp$e8}=~Bzk^C+Nfhe}B?_T`fAg)u@%HS~11>z{2T9`>$U7=$eol!l z?pFAytuL7dv3$k!Uq_~I36w9Vr=^+lmYWQrBB4kq&G%aGF@=>#9OiQy7ju0~xp#){ ziJ4f$5eB9WD7EEz7?8=jAw1N~9ZjM!oIA`!4IRRyOc{R0^7ftXG$N}am?=vvxoTT~ z>&b9IcaorLk&CHrGDS7@bwUiw(q3}YmU|3{yrNYzg3M_&Z=147<;xcbN}-_(Drtt{ zx*-@4p9ON{`nJXv48Xg_w|O+q#SwuDsb(lsd75HZyFL9B)$R$CuT8?wh=zCY(BZ>N zu@xE`=;225pk(lY!VIkrai*_24IN&8f$<2BV;pDp2dGq4fW=z1$Q1=@ma*&HV`Iao zxPO((N@`I8I*fbeg2r#Ag20GIS?#@Cu^+@Hth$2@3Qqrv^ali3!QBMSAb0@?KuiS3 z51&W_fY1>!ul@}2LPF-B#=1?;`gfzD-`$S$4MTgvfc=S_lBANFRKf}rlK*di@19=( z7r9_hdPv1{0D?#)u%XFl#2*9n3=fEZ5xFce9-t@gTV!($3pBKAc}&A57$~GB#2ITX5Ke(W zc9bE(5K*)O+YZbW+h)lkMu8$rl`sMc6(UGM!)+@z&Y)B!p*iA5yK#dKd*pd{(iAq5V zR~I;L8r&k-;?)tY#&eX$OKiidoCZ~@g>ET}W)Zfcg^Hs*}R)iN90y%PUDH0MHHelGXPTD032_YD9j5W0|w*~`7Q5P;4RKg|BFk=`hRIU{k z(v^rKnkZDpe^VL>oiuJJ=C-xPsfOG{Xxt_SCR$;p9Ae`xa8#&c7Z|D-Gf~4Ts)9Du z#l|UrYKvTB5W`m98!i@#Z@4uI$=O_NNFpw;ULm)EINPw735ED|v zfe@Ku2nNJ7ptM^6z$(QAQAm;kaNt4$8)}$;QvtL?AtC}G#3oFTi%68+lZb{1FsvlY zR%Fvmi;5;La$^@c6Ao<*h$(Sw&6#YAD53)?AXGwPEd~voLxK@T3PNIZL|ogK34t0o zz*KRj3L=_YhY5tp#^VJUb7jtPDQ+oBfZ%N$8`?0$OGF~+1Z@c-(=No4NlKf0O)wXK zMbn1?Q4;H_-`A#ZYBi&j0zFvHSnc9kd@PlyTY{csS!l1 zpk!@Q4(tJoIEzhuDDhf#I4#q4tJ(VRdfUs(smuMnRi6!}?w>6!1CwF6`LX{pz55jV z+Cmy*)I>B3k~oe)>L9iKG^evO+KmfN zk7^(9Zz7fYyYTTx{q~ZQZE}6AEUq`s6c+Fl6`RtL( zL2u}MyjdR#o2sYEK?5EPE*;5#p_$y?_i9A;-_rJT#ADK4KXRVy$ggal<4jqgZs&;n zgOj@E`sM{Rj#D~MeLdeE0)r&6Fl5s257U)S&z!$CPcpG8ftCMxTo2}_3e6iaNTqX| znW&x~86V2SVmaU_x-0C!tJ;pQUwR>(c9AYL_=_Xc)Clc#biI)&I;I##f(1dbKdgcRh1ZhpHv2_yIT14E+dF#~l=h<#BqL#LAYm2B$sB$wHi^Wr*RqD5Twa~f ztVEXKCGma3t!_M>4(m&4!56P7FycV_2p&5}@`T{@v2MRw#n|tEcQ~VQAjGkh=7LQ_ zGkpzEVL`^>>FjvHP-g=ddkv;w|HQiAOc*x23zc^}|6auo4C;3sZpV3GgFIe@Kkk8L z?cIFz%HKz6;NgiI&F|{!gc8;$7W&YVP`WdvgxE;{xc0UX`K)K$s64H9{=JG_eUT2`{t^K+s=3o}O*3rrH)kHf0b|rnJqn z$q3mcujDW4el|FL%l=DA87p!jxgj4l5bm2w-UlbC2tf>gGp!vt)JS@woH4N}hLwA% zl!mI=&w+n{2lxdxA&1hI1~4lx)Yk7JhmY%_ln~Nh{-(X%mzX%27;v>8B7qA9uku~6 zG05XqKiAv&5NC@n{u_kA?I_yiVPiJOxl+i+-1;s)C>c&uDGl2^$1i^{b2dSi@ncUK=su3BB=iX^oNdk`!vA3>49I+=WUwO`yZnquH? zJU_D)L08gRXqy3X*>k&RXe@PU`nqMg$)!@KgHAl`_*Uuv4?NE zjXMi_2wCCf)uk80C0*+YMM~fbcSiwa_kfR*TQg(1Qw1B`H(M<97`GoD3he|CB+22Yd! zj}CHwe(pT}wrzwbW(~XQ{qex}XBcCT`W@C{<26JGA%rrMW?OQ}%#aPGRVU%p=_>Y? zt4P0phhA{A-2HE9!m6uuXxp${paURKF^l7{AP?P;dZ08*KQI4z6%u@X9^?Y0Y-$A( zFapfNZ#h-85FY=bvW&p55<3Qukb%ZfP_G$E^PwtFeuDpuAju$-eDXVS3|dkenEt8| zLqG2xuh+wvH_19o05zzly2A)KwH$JQ&8@by@na zbNm}UNBM7Z{HxD3*1l&71Bhq7VSdh<$KlL#en;@XU9-MvO^Y{9M^`QXlm4aOOde@r=P>TzPQRR-N%H)?_wHFwgYOb_+(A6a0?)iJ1(qF zW2Hh4K`3>#4-s;VgJebWF?}UiYn$eO0TSJ#7BX2On<=%LK!OYID^H=$TD~6v7qH0y z*nkT`mPj@qH9QOfdG2B6Z-LEMA(H^Q-RmZ@I%&B!ZKLd#Iow`hcLs)-9a_H?2jO`T zS|9)kumr&G9~wN?kMF##oNIj9omQn=Nb>tGGi(!g?finWdYnlk=YGibpB~?TZ0F%v zkBOku#!3f%kHiK^We;jlO zWQyBX$3O-*N%@x9 z9#_73M5{9NS!hZX736p-&SgEOJIVkNJrf_PS)XE6BjHq`Hc2p;Nk)pbXio&F%N2au zJH(O&xpf67l9)-zUkH1D0Sb{oL8O_$yg^)iEI5uyEyElq`ck`pNx{UJmD* zeod2zA|DURdRTkq@kycrAt)sWLV?)XV*~DMkzY8Mh6H+K5HwlndB`mUt;smd^Cf}f zPXP+W#DW7wAEnKlL&Sn25N%3tF>`A&a%D#*`$!t7@8!a!|3y20B*lP^%FVm39Eb0s zd~bmT1OX9LQmvCRfxd`4Fw?;KDIGYbZz(st0A3cAh4qL5MmL|(So=N4&-oo?66`)zZWgw8~w(S|^NJ8y1 z5cTNuzR>bEgfQWMA&Kioy`2?yU~)M5Kdqq^NgDne4#WD3{46h8e7{lfX3$6{<*n-J zeL`2h<6y!sicb=UMcJi~b4%?yj2Kta{G4+TKfuiqAG%Aj%exmJr+p8>_;0E(XD8||i}E_3 z#O}y)ZZ*gGT1lV%%S0E^xnxzI)t4K(bR`C}vbAymfw3`k$K?j1g4%7Rh^?sa8B>U~ zTYut*Z0BcmbvKHWu2#habH=9Uat#g>5$`KMh&LX!p^<~=AmT8z zlbn;bqa^8LNWRqwFcaQHr&l-l1J4WLU&J-{=BQQcw#ERw2m}koaNQBkS&N>5hJ$PM z+c;F#)PHsf+VsEYFzk>G!SK<748@+j{W-_<_{Q0PicRAT``ER~SheA;T$hEBN%lCP zuqNit=pIg)rSn;1!*J+cvZH1N@cD6ZFBVoCdZA;?tN7R@5=`XC8?xvCga|-|-s(R9 z1Yj!9lMfpPzx`4DYukN;HKhs!b3gd|PYEssh@$V_ZK`KULCDT@KMpt|L^kITi9{5{ zqEeK9L_%z;UXItm()`=bpUmog@zr)BX}JGGK?6xl6Avj9N^;-Y+o|yOIg3B*&)$3v zyVd;JF~#GreU#O^Kmu=%9{X@*dsW;W!1#I53|+tJ&A)Z)CP76YuyTes?|fU3|HBca z`TO<9zu-#qm?&4oqo{&lV4E!U)j7VRv&>e#%lEk1Cdum;||4L8a>kl7-?hhhAG z$Bo_apji2n1M`VlDlCN=LECfXL{gKD_CR^b94|o2u-kpb@-ysJ&!z1ZHM?1UBdR<<->4#2%p&$ta zf&vF<-Q<;Ud1v32xOZ_B5;|)WOCM&luiqI{h*{W^5wB0tJt$>FNjd z_r(c+fkXA@5JD1}8H7Ph3$oWX?bjM&xTbCNKW}2-MBr45svHb3#mg3s#irv4GTGLK90`HV4qI!;} z#mt7=qzE>XL-u=2N87Ki`LaC8u38DVaN05ag1S08+#!OnkWyGB79&LrA!2NSw}K?w zRAy8%&_zTh6eeJ@;Q|UM_!GW=H`_bz|LN@~J-?g%Uy%Q@oN!Rvg2pBzHK6PvZ3sA_ zy;2Uk>|5E+6?xd(z03c1Yb)8ce|I~}%O{GG&TXDE3oA}b2|umGvQAh0b&On~M_KW{ zongtKVFayO*2h6iNnkm6F4Mv&oufA@jB>900B zjl0>&%@pB4)NdZD&{ty(-3& zjU0incGayB6@>glOVQsGaP* zbS!pHyy~0{$g5;TqR)4KoLT5YZ=*@~hvPoKV3cm7^JB%w$E;bG>3XhxHCW0Q4j(;l z9b!;LFF&uBwq_81D~XB5!onCI%2339yfO_Q&|u=w**hcV8(4p6T>la}bEa<2eA~|J zS^K0-($rFPE^ZQ{zvHY#4s)9H9bxC~o&a4yqQ8#1-0mpST`)yoR3Ka}COazH|=nWh36}A&{)AlR|9!duU8PZpeaD;@~g`Kj9BN4z=$g4v?N) zxh@s+6VT>aXVIbm+C{bhgZeqb{*1*MOpjKEg&7R?(LvT5A=^c#`(W}$U&eUR&p<-w z9P<%hIBu^FuJVb4Rx<1ge*~T$B+uFxQGVj%ImwgIJ<$ua#Q$ew>qDYH3#Mn&x!zU# zQYO?%YOQt51%1sZd-rZTjOexpbdkF_T;8HqrQr~{S$dp}(c!`pO&y;8mRdP6$$rFy zjl-0kOE(k+n2BE}PJc$-AJSo-rW6rSbZiv;D`u`4Fu1TXH8mlLerZ;HjMsQ4a(q>;Lw^I2Cw(N^m2^U=-AKUJf3-B+5&;Cv~2m$u7T z$r@nJtHGx^cYTh>nR2?RQ%e|B&~@qIYxC{6PsiWIpy?!v2-B^}LmuQ8F(Uy8M-o#M zDb7{V{vH9Y8@5_Ve*qtED&rlC+1{*Y<}QVBmMB-@FXQ@;!J~e4a)k{6Xj?*uYpsKK zt;x4qPCov{PD2}R9S?z|wI_7RGhki!Rd1e;`tmyL4h#Gae~z~|3dCI`9RcNKoMIAh zZOrW|Ls1KkNQ97vDD_hDS}B%onHOCI0`|B^%%Oe=xdFXN}xfZ(iZ5Np-fF zN3>FuuWD3W3VFf^C1t=Mcp-FHXAA-tHV8OVMR>U9zShw#J~;i>X+gVxBDjkvI_C5H z!|J}3TIa%fk^Yi2Yv7bb-(c*Gz8gXRz=!s^@hUxL`7nyK0oup7Q-cTDKsdkah8Gzb zwmXEBO&NFJe}acJQ4sx(oL=KMEgaWMJ-+FF%cc2|L)%1o2x*}BF6|x>q1rt{ zmTK|yDVkRqBFqje*TlGNOyb}Y;^DXk14$t!rZGgMDSx^A-7X)~{_Gw^tF!k!3uom| zK8w~~I~+y`YQ{Sc1SkS&50q18Ktd06N6r1O9S02Re-jTV7JsAPiSAcB!fC%{0YzXS zY-11y5sQDHOtf!J+N=l>1RxOv4-d>7Dd+Djdy^qWSDQ4GNADZ^bLel-nEJPcaXRa? zaIRhnoL6oW@TWmzE}(RIXVlHVE3*A8+D% zo>gvff3v?1&?KVHG1e!Yi8xza#174!HUnZ~n^X~zRvRf+5fUj8RpMI}Oyow{1!XW$ zF!;k2)qmy}3L0`i5KuY*A^?dDgu0uOtVsZZJ}mN%Vc8N@%zoSZ{41h$@Irc|1zOC3 zEXdm?L!L9GZ1s~eW<|5f71EoY)>o+NbeIl}e=r@^I&y3w^-Knl2_7?2XATYO<-;^u zMciYl$cdr0SgcAMG2!T2)TUTB0{X<;bf(T(1_%ZNV8ld5BvV7MG8%(xoC4u8aGf)O z6gRPPyf+1~L8DsLH*aSqZfS{xFD8{1Lxe#{rAH-kOjf~(S(g;jl_JcVZZR&ULrQd9 ze-5&#NJec)G!--zFwRxPb#=8+-MCvJeXy`;reuX0m*S^?=_$8fd0dH9`%-=0df9rX z5CoV!D=aj|04NCnUI-ecQUD4r3)VqL^&DJU5CZs$)K5?3AYP-M2dIdzeT&Rn#c00` z_^U5NzdmLya|Y2uK=z*=SEz;ldG4`9e>aWLfn&@-VSK*<)A^r2i2UC%p7d6xntzbSkmGxOP?pfPT?SOcoI5o`AY3zT-p zY3*dzW%RoGo^_AbDH}(D_km|{kFhe0j=_ud4lELj!*e@hIGQ2-iumTk8_Qb)5&Pz)H2C@jqsK9L=TkogSIEoUJ?v*`?h)UAe{u@qUlz}%>3>Lm zn(Lf}YuPg~>M+!@PS`RK94Nnde9`!}7#`NL*5hv(;;C$?_ae<`Ps9Pvrcs_!lDLtd zR^4R1yKIi+1VTVTZ0qzwot%Xv(3~2Uy;NEBHMGz-gYq=jNz`lJVYIR%?vy? zA#*GH9L?ViY{qHefXB*j)frsLBO)@YUbl$ z?q4kQ>)c(w+}oS{xN&O{WxIzd*}RgM&%no7d9PQ;9zrVMf0i_}mD!N%4#=v4Q4eNN zW+QMhaRM1jVNS7@tDI2a9;aUnW5Q5>(*ezZ=TQdHs79O;{e7&4`~M(Hr()EFGP^+C zj|>}M`nq=9d;=9C*VuFgb4@2~V#ych>#2kL%-yWZu2wt3LwZzTjbCbK1b@qpptb5y z<5)@NCsU0Of9JgSmH3)4jRF{*uux1rXWvZLtx@1lXmk0}n&x1HTVd+sET)}fY&{D;m2 z8Sm+T#&!OeS5oz>(v__D631#Nxg&EldL1*!~^ef^jQtDC- zWwOcufA$SL-~=HI7z!}whDwtN^!sgF^u%;yuYR3HneI5#5={ad@zaHY;cC{)JOhm`+fHC ztR0CC+NXocwjq2QI~1=Y zTDRW`bYk1+wI@~&_t!%5bXWCmko`9=McNkCm{Q6?_}Cxsb#-&K-5dt$TeX%P54jjF z*5ZX>;F0MdasmRX^ojyj#Vxdl_2vQ9QoTs4-4eUN2@v8+G%rkJa%eC3!w^#u+0W;;WFw;hTY zryY%rdG1v^`YSFEfo)5=qVmy!whuBC^3iOXS1&6#_}_Z~eaf$6#XO?lUva{tbbm)e zA;_|6n*5<85e;>sv~_zs4d#5oY81FN#h56X+c6DB&kd1CDDgcjUQ6u&9o(eELyM%Jwo>t=dHd;l{^{8ic@z1TxQEs) za8C_jp0`gsj+M0>4URnCTZ4o#)xRWtBx8FIj5n!_at(X`MWevoqULr3gyd2 z%a48iB{V#aNoke61-?s9+nl<<*#D(OP^Y4*#hZBaB=$NdqWR=ieeLw=)O+{na5Io5 z1Y)_FOcC_s#(}ckrnN4K!OCa7`TRQ@kMC1>Wkk(WkyH-?3o5T@HTo2Af3WZd5y=Xv zg5m}b=dCb2+R9JPR|`<95P=y8^rR}Cs@+Yd(P%Jsiu$kb__QjOmb~pJtfgx-sV>iN zNMZ-v{{gZ4vAh4rE_R+{v;+IYb+DcGI^_J|{KYY_A{#b5HWaM|hN}{23ibAc>Mx}n zLDmt!^Gdrg!~ZHiYk0_PN`>|PPV?FA%=;(e6iwyt6ewAo=pUv}3{3faCzaY{<9#gG zANxDk3jKtpB$hbh;^N+f4y4iYy7~|_Ck-=Fc2s4Sroo1joKGB=_ZS2sf7`y0IGJ=G z69J+UlQ%+0VLaoHJgSf)5Zi3c&V%>ZdH%b5E~)bR_%nAo-1-+=R0KC7GW%*(gs-u% z93RbwG}S2gu0Dl`2Pkxz$y@|%WHZo4Mja9m$Q`3Ja$<0SW6vm{2_A7wB`HjZ7@`Os znrE#g$icM1WxNv`mZt;te=XG8C^EUm*+$NGnd5KvLG=K85?-Dh`91!0${u(8wDQad zjhf?{thOI;n!)M2>SKaLw^U9jnMr?^y`lSgr}!wnQpk%OrAXAtlnP!2hzuo`fH=T~ zkqLv40W{fR1i+F7P>jDhWB=p1^k4i(-TVHIj&squu<4^*Op}XHe>NRNXAh!gAzmTV z%YwoDxwL8`=My)?-l7FVJU>VKQ|&LDB0%*2%iH@MYS#K#g(+AD4aBcG_p*_$qZ7Ay z&gN0C=iW-rkm_pWOW1CDJ*XesgS9+@{U(-bJ|pX?U+)mfR?7{H(YhQI@Q(OsXOsy6 zr%WXilQPK?oRW>kf3-}(f>La$q*D&eoZO|Xl~s>BYO{J$#~Flo`TMQ?udRi3dp*pe zHPSHqN+pRN?(lEm`)}Kku&gG*K?PzJn;1ESN|pm!#=BqqlezcE)bN`@3?ATS!BXA; zlCuGkDGFs2$VnhXBqIQ^kZ~jvoM9oZPa*vkasP*zf5OT>e+LimU!@%P{=DU;+#THa zAi&%>H6Ae$Ff|Tl10ZCT5lE1d;FxpqENhCR=od9G(Hp3G&6LWK5dlD1)ZZFo8qD5x z<_Uc|hFYslFsM93v;jEXDyFbDma2V2L1Qs+EqV zXyCc*u5raUf5x?;(&7#89B(4)Ca|*Th?PN@mIVb!L5>qwjh2S- zDIt$Tv_)T91!DiMmR1U(KmtougQQb25E1<0p->J3uU$|v7bF2m zoSX~OiksCkb3)~0t$Z(+TOIb)g=sl`HBJpI@^q=aP!7N<#gOS z3{eLm8lt+JCm`)J)M@6cwrRNDJO6KaqnIpte^x3Ho=2xydC%Egkn^vkyWwt9zre#( z^KCx%`OH;Sd`FX}6=1KVz7fL2dj6smg8W6%(PoXsH1P47k}JU$o_cZeB9|j1d+*IB z&`#Y|8X(X{Uu!!+P<3-g<4vH&L!R^XxXG>hT%)~=pY&{;cKHa`r#Qq>=-_er$IWFk zf7SYj{aCt#y0jR7WG(&WX50Mmbq}-!eo#3Vi-QnY$$4!%qm3V8hY#Th8=w$QH-lXR zJIcJntBSLf;o^u(*PP4@cQkf$^jrCt!<`f{1?==CV1q#ab;@Lv20cLn`iDRdOeqE@ zW&%WYgeeYSh*g8V>eX-I;=33?LZ~h#f5-+XMVZIZ>+p>v6ct5X1i2_|W)c)-DS}df zP|6y$|2zl0-#_2Y>h8aHFbjM7BnM=mh5qQC4+ymO)Dn4-2J}0t_A_a zl3?`6fJ{h}1V14F3b$LvqV%_}fA0vkf2%1c1#n|!NbHwe;T4gsAsLwN*$$f0uH|7% zT$E}YwH?>>$JS!qV%XB9ogCVMiS1w^G}ta}f&-jdlT_E^eBbGxm_Yr>#lF`cW%^Yc zg+!1x(P(Xf!}8WG7-_PFlL=5nP*;OphRkSV^Ye6*23xw!Z<0;)im;GCe^5XL>R1&m zeD(jI+0*j)-@MMep$?PELTLPqKrA6Z%C}D>Axi!x+{obh#3*n>M0?&Woam5_o(a-; z)cZ~gm;Y$uyhuSv{i{KM&abQKuR3$O3(NMsBWB8V9bueSD$8lWb*a8F6^w1M$xLH@ z+eeFX*^7A37q6>Nq3hWre=b+wXZ{{Fyw3CDXLVleekzw*d)Up6@3v7I*+8;;j`vLK z6}!#KPwpvni{!qPIf_8Po3$@X`NS_FEMHYYg_mnR26nEB?a@p%=oe`nkTE|(L-utk z%}&nO1|&cX3#W(zQJ7lY3$80=meQ*cD{XvFpzr*5ll1pb7<^0-e|49eIkD~C<_DzkyA<)Y z+VZmyRj0L;-Y%=Z3FED6DX8zU8db&Pb5~ph0P(YbTN^pVKZ13mX#eo#GsM2B$9gvG z;A1GP7C6Uv`O4p6(;(PrSdlUgse;v!IjZe|L%oT z)}NKpHG@l6p3}g~U&4{cYo2~!?Yo~h9%83z^64RQvnL2ID|R{U4#cF;K!B3gLug9` zK>;}7C^51Ke~sU-qKI>>LU73k1~sWI=ApQOw;3f$Vqlf6OFaz%d@|sATxLuqU6-fQ zgFA4&GCoi2_sRU9nDQ2{zMlgJEEjVJumf6r>bdTYF{{vkU#*-^AVy=giRgc{HN^3rL7? zP~VFB9t}+0lv+I{9=W%Jo_W%znPZ7as8AHpjQygT2fMQ~!R0;utjJ$65lvP~v z<_=)@f9$Dk&VEgJ3Z=k!M=rC>paws=~FWHowCtW zYO_jQWy>DRvdL-aJvT`D26eu}stPAa!5b6_2h=7d51w*;k$^|Whf(D_FV~?Yd#$}6 znew=jFSy;2y7V;mOBb6tRxDgsx=lvXb!5Z`mwh7y34aAxpes2f-&x_Nr>F^$x6C?yKe>8X|Bv4fmixG&LXPw3_Ht$=#D-gk@aR1w< z$y9e0Z|YSnIccWUqRmWc#3@x6ALwhwm*_=qrbq=gVPf1fOl z^?`swL27)G2sTJ+SpbA}zD4hrIB2}XJV-DH3TZWj_CXTJp8t2qUJj2J5#wp6XJ19* zfJ#aPAVUk8fge)Pln>-*e*c^N9`>Uft{%Vslc}F$g^mHTh~r8OCeyvXdy+Iswcodg zxbj%}#NNXn1P<40SRK`OU&Euhe}5uaBu|{Uv51y_G?GZmgXgJ0M5?n~Q`Ic@XUWqH zgsP3(^WDV8n~9{%?!|nElun&(`~s{$aTR8r8vo5ih263&RV<0*b67LM{NVJi zVUXd4chTlyVK-i#%h)s0;{t zZ7y@J&CJToyB{^H188Fy+X^G~N~v^Gh0wBxkn%DjmOq5~DJZ>&BQG5!=PjQdgN8C_ zzhzn$N&onD@8XrKyn;-8e`ABwA_z|n)%SFKZd^FsEm=R7SNFmGZ%2Jyss+G*=5;6i zQu$}@u;TtIdrSP%KgK#5s^H3c6uqEN|My6kTfW8Nyr#qgQwS z=sE*yNntRN+QKX~oS>0$}}XmQe?QLq${0PXd++8uTDT zW+CmG+3Z+j<5fIXO{WO!uXDRN-(K+x9yITplq;8y6u#c%?}OmxGuTHL*~yUoH}p1> zlMEO>sHJ;C=G3Q#Zc`X{8ybWi6RrA^1wcQsaT4N|0pNmEw0A^2hoh;&QUn z5(6IJXG@|`+_CO36>+A|=|8K3?)qhTfO`;xNIuTjph%zZ9lpod)<##m5+EK*OT3(j z9vu_^;L|CIve2zipx#D&!?YC&cpVrFCp&W4rs^~IfAXSTU9dRG+w-nd_>0ZgwTq^= zTqAI1_1bvooX>hB+GBLfZRUbicS!!3OBz@qt#%6(AaDQ2hqvm#(VJuxTDeYLl`g*3 zjcmzzGZBK_t)tYhRKNZN=LH)G27K1}oSBKd$t4C!AhHmE$2zkX-f=%9T+aa>QxT$yiE)B6b6eh&znJ$wW2Sf2Yp!&@ua6OIR2G32wI}*TE~qd$%n)ML z7%50i5jR0{dD&pnjD1#o%LVj8kDsWAuRFNo3z8dCO3()eD>Nwe5 zvj?!rRCTTHX8&9sOWI`3;&wN0**s{rui|~ge~SOZ;V#7@?5&?HCvAMukpe;mPDlmH zn=(5|Slc>KfXU)L4HDjy`=)>?Kas}cvUo4^zB+TK3$e1Xr4K<&!8aKaNtecvDq*;d zS~s=u@7r>>z#rb5&t5-wK!>b)fStlECWUTxeet9qHCdjZgaTOv*B~&rKu=^4AL9>0S|Y zMNPrrdAsX0H0n*5Guw9e9knyXS5Bfnf4X~beUB}9Z!i7ouZf=5xzH-|D)P1!h^`7$ zphAj)a8mN4-3!z7OICRM`WRehb6ra4d7RBKcWKnkd8FKOqe9F+#-SFjxkfk0fH2nASeMiowY(<653Nw?^P>S!3vVae?po0 zxNgeuv9Pc}6CWbi4^COlQtL9JnRzFOy}{B_wXGDrH6}%_;=*`-f$3!qp;JAAVRk~x zJhp-`{$m$MB0e!ij)5aAFtIhajGKiOV4g7g9Qsp^v%Ipn;5aUWoX%d>$xXFpwe}d&Un*v0%N@px3jEX8q zXE8y?JrFDEpVIUkznA9=Pvcl8oRCviobu)r4tzs)FZem+16zcyD>7%7ezrMKZPRd_y zs@mIZlTvnUU$XYQPaKokU28eYlBtIlnhl2nW)?T5y83Fp&G&bEg%O3lYBq|#46h{x z8*4CCS@U8PKR-#nNl}~32_&qdt+R{D{ zg%@d;(kuige`(Jmgu$|J5Jqn3DYXOieE2`A0Tgy%IuHl2aNq{9m z?or;74m2(h&|xgrU3YG?9m5^ftj@1}G#6}VSSv@^bpEF=b06o%OH77i^s!AbzQ}My z{oDkupNr(g`y@NlMQ$*03M@OkD4X@&cRQVzZ4x24e_Bp)-_tR)KVf0Ne7xzx=WX=x zPBv`mb0?fAnF$eAfgr^VF+cL*6!+Z+WW;N8YgfQ@6pTr`b24Y+0Tu2ZC~ z=Gizpe+p38{ck6|VlSk?t;Tg)$XX#@Dib_vD~eH#G{$k7 z+W5bz<?8z{eN9 zIiv1>tr&Y*;H~i9*Vi#X zgV{467bK#|)q}uORI-*5(Im%dxleP^Ovd_5668x@x2cXfS@aMXsIF(IKt@_!8Ru}F zv8GuT$Vb9T5)u!QD2IZafie`*n} zuY{p&g4&W)$J~ei6Oy_0Ut)MypzajK>EYRqsQNX0r6zP2zas9^3B~!$Gbyu9?n? zu~;dt1}~({{})6kX}~u@a4Q0(Y)Vrfa!#F6P^i#gsE<*LuAyvukaAZnXIDj&#Y!PM zT_dR8<80C`Zv!#W!+mvIYqkc&Yp8oZnHatHixWD{RZ0$(<4AbN2$Bi3@ZL6@@LW1_ zHV=0q`yKgeI8eFdhFixc#~gFZPB&PN9CfX(uTGB`Qs%f%7qh-Iyi4AFe8GpYG z&1z>|^_kWfzUl+D-pVg}8|OQP+osvmmYPohxu=!#lu5+anxNuRzk45GXyhr3kAx;o z67p;gnBe73^I{^5=rt8b6%(&kAjdh*k*0dIgEgI$&Msowd7xtz*`?YiUUVpdA{6G6}iS=D?86UR)D~Xqc6}k$JrcVPm*5Sg% z?n-A$>8roNffX?j{|=}z3ehdy}8Y^ef@9fT>qhil0QCHW!s&$k%Y+WZGSw<5D>gp zvbZT2QjN<`+WC`@snKZjoj!}&dHv7bx#04*UyncfuK8`w%s0#CCWB812uvD4n@~vx zMi4>@5&}rX21qg}M2N;fU?gB9g9vlIU#h>E*pqW6q9L$M7{$xg%5s#@aJ9_Ak9OS( za*^X$7b#{~^|_CqItw2DUVj{_TL;sR?pz|dRZyRWMcl7GUt5l+>}*EcskQGj_V&~K zEUdsM5bU--)QJnGo_6o;Dle}6s?8=#HvXBHS^ zKaTZV%t?XW(*}{QefpLd%^8}}d}kq6^spJWwJg{$#(e{@z`}5a^u?dZwc(ujaui2D z>b3HHxWlzCR>FpMA%em=TLvZHof_?&ApD8~nhn=mfpBc5e@9XO-S6~yLUWurxHkN~ zUW^Kh%l;JL8zQW1Re#uv-tI09p;Hl4PAD5j{JTC;{xkyf1sH**O5Nn3a(cqYFo;1q zeUdMdNH#lZ+(7r(ISFH!-%&9ei8w<5mYc!m{G zAB_B?g?|d|=Vt=WjhFwNVqcyiz2V270gcvM_j^0MnyZy{yiN!L&C{sDts%36$Ls!v zn=ekE@qHhZ*W;;J>Q#q~e`w-9FE|wmWQ0pY_64&ZKdXU*ZR|Zz5K`>#2#V~m=%O_= z5Me*o{jW5`0)L*}c9Q*v)fZ@7%zIBLw|M*my|^ytj#%WMVE}J!cKe*njN2Rg>?==6 zBuR+~0D;$H!!zW^ypW8ZZ#MXacbp#T$ae=5$Xavo#>43!Y<=Z8`l!2?(-HpKZja>t zD_+~Ag|hvz%rWA|^5Mh!EgsFUSHs_6fV2B5WRNXSMSr!~2?W1gQb`pi18t!ph-m`^ z13)Y!SpkGm0wV#E3_$_{ATWYO6i`ytvhmXxET$XOS;HbA#E}tTl1PBWSS*JhFUSEk z&+a!Hg0WF&Dc#qzRlC)z+M9uerjuwrY)YE;y=S53{DspA$|)##|7s8fjuo&p-!N!N z4`|atpMR^8NHf|X5oRl|^=)efNI^F%UWx;Zr88vTwZUB99dFQ|rY6qNcM5UkqMa97 zBohLNf*E6K1TVv40LpX>geI1hiw_rSJ_jce)h9Zz@z9W=O-pc z9p!_tfsq$fRp0q(VKBQ_8^uO2?iSKh50dlNMPa3PlJ|aM?#AM05ln^uqLriXl5(%G zD?#Hsoooedc4oBrPIF;0<`#bsSJWcnpEapg}V1GHjg2^7Rfcy)p-*MJir!i${K(0??TFo@0 zxIiP!dHg?LBnOJi=7RG@ma0UCiHkKF{`M(NQ5p#w+m=&@^QAUV^LDhDO>U?)P7xP; zl%R=}t3B-~lk%@}hn3G6nCG^-V+A=9Pru$}r|4=0mnth*%YItxEci-@Vq?|80Ds5J zvJ+lKH!{>vW#HhXK-qg6stLZEk-f>8NBWA=FI=m>^ZNTNWGUjhuQajlyEvde zTOqdC@pC>+e!t#hNYQ94P2z0)9AI@z%)dnT8#Mc5%lIu7i@edFnZ1J#bxxYR?y0R3 z@!Z>FsXEDM5^*-C5weYo^4)(Py(=(f>>G~qjSARkglhNBC zDIg?@&$6KiR0Rb9;rh);d5sT53>b(qK@>z)5=KY}lMvX(35mK2Ahfzp%lTH_eeb-( zy?zH3q`12I`1)LQT0OBmL;{>hfvS+Y6(3#O0CL{?g{HBFFFs^I4;@Y-^GtQLa6&}B z91O4+aPO&Ux?OwEwQ6gFqJJaj)TC+nPBwT~RQ5bA9rMy@;+Z&;NV^st6mR16E})wD z1qzUd6W@Kwx`Eo@1K`tI0}9gcxZ&%lfV^k3mtJ?=vohvq{NDrU>lj$Z1kB9L%*@Qp z%*fx`em8GIesG?LkLpc~i9DOg;(xS$?pm&Hc5-9!M0SW?6Bl7x0Do->27j!(ylQDA z;rnRrb1${s)C;HmMOphFHXtPT4j;d9qkx0F@1s`EThzrTe-Jj9`j_I$kh~M{XkHZr zP=Po!+WDa#3qg{{#42$eX4o{Mp+g_On)?_$82J~#^E(nl`F~4P9Q&JTgL@!3bkor#{lk75tizyzx$|S zIS-N5_#F6t?^0ciI^bd8-%r$)P8WeSO8x((pKQUrGYcNHzE|Boy-9J@6bMTP3rD}a zpoN-MBUU~ZG}wa>0Djjo`2hZvA44S8x4cJxITC* zrtIxT)#6oM7A(1~T5geZ4NK-Me<}+xvGlR<$<2Z&C1eTN3|o9M1_b@tS;4TzKX_>uf9UD5zcu66Fy&E!3h}6~#2lJt zVxFaCOy|{6_i!!y-ETF)XR|u{@ddCmdf^l?M)J7%B&U{vRfP#pOPy$JY;HciiUZfo zr|S6}Z%phJ>!cV3V)n)Ks($nH>Fi&+3V%~$^WS~s_a7IdwaEPoH+g($wQ;UN!x?fQ zDutM9pTy9|g3;IJ@L)&jEnM3CW~Z;U9o=UZJz8pF5qK{28{~uO*ucoEjcJIXX0KBmAx})yhU3+hBf%E>fU43&4Y=6rL zSxeh{$s{kU<3I*{Xk!*}r2|4up&mcA_1{Om+tLR7{Eof^wk;%0h4i~EOhl%GGnuvW z<8b!6D*kJUAB*oiU3EF!KS8bgU4Ge(lvMw9#+{1!f0|2-sm8hHzF$|;Wwo@QF4Z2;KQLTwBfboX*6++Xzl}u^AWu-%xtp3*i zZG~6ajM}m6uAry2r`c*~W|`uD4Yd{;oLa%|N(}X>{n?x2U1OoQ?tRTunSW|5>OG#q z>UX}|+~NVblmPcKrU$zDexm3JFn0qTu@I`{l|hTP8nya8vDEa+V#$@4zyU|b{;!Mp zzq5aT@qN`Opa>|Q_7Y&E!V7#K_@EwL^W2zxq@dVK)-~5#=X+ETAn8wYuDah_=K5M$ zlI)PybDYg*FA6aSz3*e*=YNGBrpbHC`VND<_Pkw<{xkzGImPu`)%!LNOF7U(T6|Bf z{PU}r3G`2e?!3QoBfg?()(LworP-zOj1}iYs2fAAh3kGId(nTPn-B z@KCI}AciyZ${y*z=$raTNHmw>kVtKQ0IGEEYfuP~nYhSxVx76BZ-^fU;qE-Q8-~;T+Oh z7@CFgEcNeDRy*y&;(yy=oOMyGmwP>4=P%^7^E{|O;gI{*aNz$Y^@YRDe<=TTbDc&9 zxz%JOSPeM}#zF$JeGFg-$RY@WAVff75(ttpkc%Lq!DI#?uoMA67A%Ox5hBF~APWL8 zVFiGops@x3v0#dTq!C#G5)lv<3PeE?5MvmC2*@O177=7Yl79lgi3ub|BnZTaFp@El zib64i5+fvtkP$%%xJ4eZzQQTU``ccz3l$Ckn z&ns$*dZf&t?tc_JUf`axXg+8B+NDVkzXeg`dRK*CWVdI$rhfz<-%WwPe=XVR@63GJ z>?qp=DQ~^~uLo=LO#Z=aIeQ)Jb8f=F1CQpk#nPa!lT18TDVKdebXfe^uIkcF3ipbX zCJAjT{WJY=Ofjz`HK4|6QzDCsw|4WfMS$3wJip)k8-L%2P;9XNVu-|RNc)*o?Wgps zlcn2M9r?;$-|2|d{ID8Blz=Hc(12Yht_-N`2qa=)+-j_S#MP8rp^`!ZT$5I)xo-#E00!Ma5mU8p>!aWJ@1hByyfMdtL)kf7sG2n&UTpbtHYv(}iIqo*Z}mut1VJ*YH?@BXZ6C@`DzK{~!hW zx>!I7!xc)q49;gaACRTrGPH`ls+-47UluSZuc z1$>|k-&>LZQ<2*8`}?2}SQ-YwF*KMEVSf-|`HB>uK(lB5n>tRH(5WSb!IXpr z?0BAJC+I$Y@k5yA%t?X0VZp^V=*U_2mpg)lkssxwjE6eOctu=e`$r_-jd%dP6o0}L zDSQI`GWN%eu20La%>9o!_I+pZbz{`~?^o-*o;Ek7P+Fu}qt(I?YoOObL)Nkh5td0L zZEd#OAhxFKIn73Ie4(pHInHyN-zX?U7{(_RRcKeZPcXUHxZULtMKUJHIg`QJsz(StOH^@@i@69|O^`H2bgKS|44&vxy%rBe`S zj|qt#m|39)(n0|SskcrZrRk`IK7`jOyM@r%txvRC9o^}<&D(=xF@FWkK=UJZoGK?2 zhybk?pgw~bG{q`-6IL|)!#MmmdFFc7=iXB*JaqNx7|9vWm_<{VKHUF;2(fc4{mIea zDefaH_-(CUHg}GkgUNcEgt2oI7?k)Dv@5orx#wHGEQcaQZ!%HhJellIDH@;v5nKVK z0U4h;U)Gd&7;*(9%YPxDnp{u{JkKk*f8_!`z5LhNs07L=pSh^2QVj%t?1fcTAe#x9 znUa0tLaM4{n@%dKsQW&S&olKtcdG9`-^oxtP$U9D1bI=_$pVJ^Cb?Ex9Ch)>dYGx~ z?3b6;_?cct^!uv!FBjg@b(S=}cS$m4+LU4o8qdYVH{|*#+J8~iDUIrR-jDaW+CtRu zpGk*^eyp!9)CEU-x|@`#-!<5m3dcBR>)&KzPj|S-y#Lu~(1XgOdwMyf%bEba6o@|` z`Q$&10*~9mCkNs`V*XX_NP5|JW7rlza+#TomPvzeoMd)TL9;$If?LE#IZ>pX{GGI} z0FnCR$kM{8-G8`x_)*4SNR&8FHU6_xoBQoc`r7w-daTrZ|2y{Y_0O~0d@o(nXKOyZ7sIfm*hp*l1ZtWFhvadjc zh?a1)aX(|iM%JF7AUjito;*d>u?8JoAC)m47K6U;=6`51`(LdzmXnFI)DYmBSW+Z9 z>mJ51?8PpkoYn`1dhzl1&G^u5 zvzrZvpAs5E^p?C4JO~ONtlPSvY^ z?VTUjjepa8hVVglI-v`=kq^22{+kNa_7wO(U!D4$w$6+0QY_2=5{i z(vp4o!C@fvkulwyfv^)0# zEax!31>tAZGG$TaB;-fRdp`f$$fDp`dp3@lYJ!fF!-I0xvc_a`ZRagWla6|PVBxh? zRDW6NL&}_KI}dHI`TzO5eif_s>rTjcy9cK6d>xiL@2CDv+yH_iof||E{M%wH=WUNY zEAc7+!eCK;XRYOCWkp}2Y5(hDT7E_-v1c=@rWE>?|1G&?W82#vw_lp;v@}QT+Og~s zruEzJr6^}Y-ww(KBd135USH%SwX=9>8vXw~laAD0-dTyCMAtVq|K zA|;Cv5-$>JTX1eT6TskKW$AOWzhs|%^G8u%Qm04M`A>f%;Hkq`t?%LJ+xpz%Pi_GKV9wIXf{;sZ zG-~bxi{vH^FbNRZ$sj-^_ffiNkE!g4Q2zXwTuno1M1uVG8D-77uN}6n$}&rJ58?O2 z&=B-SMrYocr@=}=6tY+9DEYIoELysnct_#x5s9~d-cfKAOOY;ds`Ls;eC!zy@b$ZAImB@H{8Hv#rKQ|>J&-Z#(XPtT<$8nAWUf=P-o`DEfwk)CQftFx z8Ww+MXMS98LMtM#4aecyVX_sY`1O1*thLEC>jSqB?C~xB&APJFv1NN)_7{It?g;BS zZ6~XmUg7DOxt1h%eOU+q=sNFd>V2(Oe=e|YKR0D2JueH(`aX4APdkF_J*AYQH#~oz zsSzF}LR?h1X?m~E(QqG&anj;wy_3qjFS*>FZ(Ew~wqOeVphIJ60H2)x=BHJCI0YPJ zk5Wsny}6le>MHdW944@WpEiH0jBg0t>COzwaA=gO=7%G)%HNC%oig)LhE@u~baWrF&$w@Mz%>fvm`dqv?R3|6KYrU!W;ewsD= z!Te9w{FB@Du&h6``{D4a!fvK|GZ#iEv zR(`76dgv+YsF3~RC)R)Mp_JIP&H{>ZsYX1KGOF(&zgta^H7J}QcT|6PM>0Y6XD@eb zv@mqlU+=oUyWmlQSC1<9P-L>>zFwqDe`wSnKk?L5HrM~1_WiT>*!5DzTkVyB@q3Ll zH=dWM>Tqa^A}^kA#7?cwN}UFb6@G^OHVZ$t*b4odQ*->icV&NrPsMLHk&jLI+GzMq zCb&PL>@t6u=Dv@~?|&z{({Su;PqJk>9o{AdTT2uCcB9o=?|!vE-shCkJqt(KKJygH zb(pITww=fOewzf6Nk5bIzyA5m|FDEoL=p)k^e^Z65#>VeabuKPd!K^zc3P@)Y5e{} z#%Y}yPju7j-jjcY__t;`K2JDaM-C9DRw~g+1-xdOc}D^(%hAFU)^utiJJ$)xRsVUr*`c!}|YF zGr!qPK8+XQ%QJDm`soNf7am-`)Y3+LXRYDL39vkup^aRn)_h&ZS^0j){A{lMZQZ0U zwTC5{Ib24ob`#zQA@i7iR>{!M|z*O z@8V}UvY`?_m)*cFSoex`?$vBmitIgSwtuQ4&;oy`aKjeYXgc0UQ9k@Rxmm6HFHnR9 z2278BtHHu|5zT8SWzC)*xQLH81?_{~ai0&YXwrP1>(m-HJ>R+@k>q^2txF;6T&0I4 zsZ$z|4dY=r7`c%Q7!QTEAK$7`%#j?&-Q_b_VlEo!`>5da;*a$antxejD~2djmif7V{z zc|vPldE3Y6Zg^Uj$MA{~8TkwT?W&cj#6CX=?-Gek!*n6ueViXRE(TwDy>%V^NeO{)w^Lj^FL^R7grQ$l~s8Pa9bAoT7X2?+z={WY(hI&~038!kt6 z(V4?Iw}X#658Kc+Mf3=@PZ00p@LVdZ5z19K+y09=ReLX!Ps7fvz={l2SsQBlCX9SD zH|ap_wHJ(7@{No@+uZ#BW8`gVY~LSKS~u=n?$s|ppYOh}!aUChd=GKML{-D{mgRr) z4@`!rtP~W8!`oBy6WXRJ`sQ;7A}Dd%Jyrfp+2KJ3C_i51p`j6Ch%gdXj9obN z5P~r`!G0;*Asrdjsv;kN7L3`?7ydl!k>Xx`9>$-eU(}o3j`%)+evU`z2W8+@YKXi* zwM5jpx!hPPac-uR^YIdfc7s6kL6yJmu{m2y~T(5OrnXzUMSoyHbFIW=nv8 zjhH|HE8n*hmq+6A{i(>{ba0kYe82nMS>BKcPp$aI3KG>b(Ham)xa=UX9L7oH_Btf; z?2`$xW&#Q)@kd?tu#nzbkL7>+(E$4$%wAcyWGs+u3^XY_3E=Ep9+%UCFO1RVZQIpG ze7-6OI9NEu;~uLw5UCyia((kwbsx+TCfTp3zHh zEzXxt6l}Eg`^IV7;O$tge{cSLTJ_6gy+C<;Sg_Lk%t$c|5m}r`B`}`Jg?x%0ZxtW7 zwKY6G3^@B=D}(;+c)t>@u7*0APr;z|ms4*lqq%ZzzA7go8t7SZgq!-%K&Xm5s0FC_ zUrBKo`-*x$S()Z{ihY0ABAXvuj!%?Y!hTPh1m9=E`|un;c2MVDmHefqMW#&0fU-4Y zFw0F4-4b6WZM>A#+(C56G+AUX6`+PIO(ds7e7o)Gsn+II0ke57o|wUfQ1n()K1Af7 z;?qbe*FIUBoW5e;qU}7-pr|`VNJECS$F1q*lfHlUgDdPtAI5)+tq<+BcZ^@a<542* zKdTWrsaP=nR`Ge8g{PYHuM?pTM{SoYH3!IayO1X4Q%LePrRvC)8y`Gs&N* zIYtcXavaQ&r6gCw-ig|!U^y{3>P3n}MjY~y)38tg+GDgFi{F0D$2)u)GRr$s0;Nz#9}5}`m6L_nD=wIlnFtLeU3YrpLFe>+9(cZJ=`$)k9DFVgs#;Gd!m|`3(7sTfA79 zf}sPl9gC^l1CE?HGX9rh?Fw-q;+@)im!OM$t`kysn0|kQoBx}+x`M%%G5lZv4sz<7 z#6TLn^;&z^@U@k+R7Kd|=1O+p#Gk&1GH#)gUzSxz`<&Kfm45YbzVY{4-gqG#Z9Pt( zyn1fS*f-90U^e*+bU-3y3s^Lc9ps7c{S=1rGeuXPV0+R+i82*IAwGlmHhATKeQ$b( zfcWv&EzEz?Bv;J8vge`b+9w^^{>2L4&z)MiBdz1@C&AzI&JQl#hnm=b68B3^OU-Mx z9+89)`$FTA(88ai?Whb#<<66F?Z)K*1fYmXB*TqR-Nk;fsns`tw#5Wch3%+3yRp26 z;!{1n+j^X4%{!E#RPT*PI<6@%ZNGT#5b;c2~_)8?4;3RL(?wKBWoDC_cA#8SIs7zK)6uHg^D9mbQxw- zjhla5V|ZJ6@?L$iD_VS&Y-Uof4ND^o`4@4UYO{`aGeM?%TUf|jlBTpkL~m!wGo*9W zqUMRS9_Opv*77sX|83iFM0C<}jv0#LryQnBKig?(-^!DQPFnoC$CF;G#xdO+D-+Le z0o*lHOQa;};|1Mg<3vbQ4f-XAu50)|A2z( zEK6laCS0gS1zJUC3gyPvq-NQ{b9{3#2D~--`%7ZjF!Fn>b2=_a<}hx1EK-GfY*+xv z5q~_Dv8*=(zN;k8X)5=*&B%;SChU?Z!HbtHzwxjL}AiT7i+m$s`3K63^t?NT0!GLqOvkG2a>(7iz3Rfc`#DP~c*4c0BL#0FzY9x!{0TR@y!{&lz`Fu7jz6cjmCyc?M#-oRVGFpE{f|+0e zs09z0B?8}Cm@D2jK6-p!Fbcm5(g$SfU@W4dKA@KaVe<_7CIf5ejPJ%oUkE_~f*drT zhD=hu=fvs?3TShAddOtDqFKJul^EjKzyb7VOtww-(R!3CRY;^H9666Zsri-x%{}~< zrNQPY$x@TY$ig@ItcU4TR5pJ+zg}%2$kv;_LV|8v#8!77-*ty|>6b$V9?kL*7=kzm z{N()AfMLroh;tCo^1;M=`*U9)=Fww4)c5E9&&&saGC;Zu0z6OHIsx|8;@ZZb_>)?Z$u8X{3hGWKx=G zq@Fk(u z92M^MQA{)%9L!uxH#6$xO zEUNMO1!S!>0bj z5&nGi_P>I}A~=7vW9heY;Nf)b_Pp?q6kbIV$mp={?etOW5p+{bP_;e4@z*be0Hc=L zF*%|78Hl3DiKxnf7;p`O7X)H9J*(gf2`iN+)`Df|eMQuH?)cczm~Mg4V0P!FJ!pz1 z*asP~W{7`kS%Ri-;W&X}r$lBCK>$Vc5F~Xz5KC-ydA@&~1&!@h0~E2d>_$oaWa|X; zO;DlYg+4*7+zb83GJSRcZO$#c()$ADDRgBE)mih9#U{**Zz~P-sv^U*;@S~X4$2ji5Dpke;&=e;E-j{vAZ@4cvH6q!1a;I)!M3(J8~(a3qS z5D0ZlXOl&tCa1xmaS~LoJX8l2`7qNWAVhEDGfa~~0m7-terr{wq=95og0K53CqYUk z*@J&Egc#arptm~PBF}_yhGMnd{1h)*TY7eCRwhM0^&f_3yT;A&4vOii;cu!aAsidG zd2tqvXcJeA7i8F~L{-~c;#_rjtPlKz{TzMfV z;6(sp=aYaWmd7x?I0RoAC-5a^rZfU#<_>@T*4v=}Me%uGh_D^bW%Efu8)fUOFHXT) z`v{&(laK{bWrP4;I2+))Qsquk%qfF7BDJs?&pL^t9Z0xbm@j`y zoxwRnLL?3fq94OwWDy?c&?xdlJJ3MnT00%P_|5txZ+zrdm63CXbd>;w-}(gke%R#Q zK_{(%E)(Gs87Hz4Z1QTVBU}Ro0jL|nbOH})@~D5&xe@uMtQN?GA@*}RPtkWZqTGSr zw3e!Z*a*dAC=KvO8?Oc;X6%LGp$LCM5WH=)n_u;EB-zh!@+7tR#{reDy~p6U8Jz`~ z-)ExGZoNHMjBPRmK!Fh>jXtF*Ad(>gz{2@Pmj~Eam!#O1=ZM`IB!70?Yv6c!09?!o z{F`i{7pq-@x5Qfu>Ho62h0_LmX|I8_vS}=o;v?9PNsa7Lvyw|H4mydpcKCm;-adzq z9Ma$v&v^h3&Cc#Y{kY_vXaOS%LJA`xY)~mm z)a+&JPdc(fMNQX$L~PS9S66UeuSxvR^)4{aJ;^Hn7SH;x7gpCtoY*m;F_Zmt9}YC5 z&O9oOEmb-=lVOU88^aHDuq%I2P=8^IA-*UtDM<2cGOdj#}~2dVsk*eh!QItPtVJzfOMinTv2l6qeat0_gvpstOFjrI*!R;;mhtyKZ&ZLKj^lv~)K;9Qe%nBffD%%rHGEKw z6#4AJ$f@3VWdRr$$5DSks|z2{JBQrl>^BZ){FLZKy2ZFr;h7>hX&w4hqW#RjRxjIlv%D07bPkpxOAn9oyzavQp4-~T@OF^QT8 z-Hk$`)g=ZMu^XC!g|d=CSe$p#J;3oj$e>QJ0CTD+Klyv)zR7=%XWyK%5pdi!;73CUdKn;I7xV3bOGrS6jf!_X-ddXG!B=ZowZ0l-BHk1T-|a zU893Q;VA}eL92f=zgvWljXJvr9La}fz18Oi9J?C%*eL)^U?sl7f^o#xy)2^j6@BEa zan8>kd`~C{7k2iA1Z*nQK?~r(9_NzOiL#>ptfyOwob2a6hwXCDAKbhODJ32>_Hno0 z9@i$$TWUP+33C&Eb(tl+L+4)S=G7M_$3o_V`Oh#&0EmAPAVEv4T#mG>Ljw~;-dF{U z6gvL|{V$SmP)FzasB9REU@1%j0t5(1I0Fi9AF*|rH7+A8-3@HXXcEt-h{>X}q;vrS zAt%sc-O<4HyXDG5==5IZRa-<=yMDd92Q?t8Im&)nqjO!Li(2g?5o2?BBZR9k;?3)>@Q2kwb%@fTq?OBe}`_6`XS5=rNUUHMh zze|&5lPj#mv!8;3G}_xW1AI`Pwe)q6JepKdups>svaucu&x<3=gb!bXUr&j< z)r5D>^Bag!ObDCgXAk7b+T>Y3O@3UFcRGLU-aTL}7LfnuNmB?8XzYzGR%pns9w zyYa`X=&1e-`9gVVdrJTV#S4Z>=HA9lCnC6WuZGc0HP+1B73s*n*Q$}5iKo9tTQmKn z{1GEbblx`$S4pN?IBja}D;h?0GrKM|M^kLxTw^u(7KyHkE-AgiS6g+@d(pD3U-*B+ zomdC+hoo#F-|!WrwIpAi62O;2K;?n!Ng(vAN6DT}Z*0EdWe7m1pj+tYkztAp#cx6$ z1B2Z$Fo>)c5egp|eqNM)7%t29c0Oep&}&|KV)!K)5eJv@IpZeVjsHSa%n$=SqYPYn zrx0-U#uOk(Xd=oD;e?$~Kn{fuNA-W#I#&TiPKh_1Px;2nJ~x*6*(UejLiGA^mhyTg zEeYkY#UkC~I7)Iy;Usl@oJ7r>K~n@D5F-H;p}-)KlGpr&QC<qOi~j^2a=d zRw&}6^NGLo_t-^FXH~v*bDgB6B!hPK_v+)xxS~nU#SQ+7#)}TlbIH1u>4twmUu?IX zJ??x<1%LsDgnBX2Bm|O2y)2SH%GATt2YM0)7(_vo7lVe<2$0b7g?WxG7yduCq-bIm z2nzk9V)jpHq3J#q{YIr0jl1P>HUu2kVbGD}jAkXU8%`!%_gk4*rf&(tKQS_gg5~%= zM2WlP;1~%(T%f*{8j};m-Qa&1SP23}%jNwMfs*jaGX2BR!rajW;KpzEX+vOIZ_E0i z2bgOaPg{GFB;sk$hy_^&@^DiNo*?>QW%J-DIASp+(+bhdqjykh4vnX?_NV;LUojie zBulFHMe`MrN<5gczUEN@r7 zTubk?2YhIuEEXK=NFh2R9kB;tnGyhNL>&geJJX^rx`SGn?NYTBS&J^SDP_A}I%{~U z2u}NcdHKG!+^s z&a#G-%&A??3uMV-7WA4+bbw#e1Z^O;!-5b$p`97!^O~-?V!nTh_DcNxp~Pe!^NArx zJM)EJ6C@)Bi-rq8f|7yhP9Bc);kTmmBo`UO`3qzKH;4^Rac8OiINx9PQ}~WQ76qiceXOJg`JB>lHRziKxM(vKh)9MYJhmCV zKP`zhy*17?zq2glP-YC()d(!)M>o{&InT4}+}*C?v2uSNG=-_NMvLw3uNL!|jo!}B z!+mp*%}Wj$^VOkuTL>yVm`$yerKZTaNrjxnw>(@pvB648j2J4OW=ARQL?jbEruSav zg57ZU?I#UDv@GhOWNEbkxA8-^^Nlu9(xu|ple`X zVeaH5B%r#;n2J~hW{O1XC#=`V2?8cAd-Bd?JoA4m?Ka@Tps16fN`vEE;>CjD3N@8t z2rL=r62%jVhKYxg@g^X#h>;O+g&FA`{#7zFXY1Z$GI|Xuh_M=N+i=}@gV;`0db&7_ zjJ2O_b$Md5PMEi?qJnL|C7iQdgj1KNvwu?|=2LU>Hu(?t?dF=+^S{yGaQBfNC(>4@m!u?T6D$^T>~66tb& zh>r;$&o=%xP*}I-zac?a4Frog|4LIEEx2j7ddk@I15Vb{T~8M{ZKG<%+32EULODGi zdO}N><2k7#XD9&LG?Ap$sNP0}x7>QE1=D{JF^#dA7P;w@e!0PjFw5QYG6QkdGX_Z; z_1W&E78p5EBrZvTE$#tg$+$wa(4!Nd$loXma5FLjfbRbN=3a!c*>4vnNf;E$@@Oy^ zA0EUA#?DgZolwH$ATZc52dn@|1YrpNMB{3ZiMThSYJQ1?2j^_nhO{=SrVCDpk;`T-V)s3Vq;!i zPLwQN#m6BlYztU+dD)=eZtBUZC_$B6obqkv?&n+Z2j@g2R$vo#+7)amNd$j1V6dJ9 zAhN@GW6r`C#b9_js1cZImH~Nk5;5@LQ^kaUx@zg9idsRE&YAD*7BfNI0vIE;NjVG+ z=g1`ZsUgrn;|v310M(E=3{$ZaIl;RL_n-N#GIp$QcwEF@!|%@ z3@6eFqDhLt!juT5g1pmdq-WX_4*M4K7IXlP7bnram__E)ul~zuly;+*$2llAMyxHt zbs!QD5DR_!jKE(82N8CVEq4#j?p%L8v|6}DH~}qnhk8z_x78p1ach71-BhxLw5J_? z#i;~f$_OEN$04k;tSet_HscIBZTC`=H(&eIWn_R14B|pi<$OWMNiN;e=GV**+)rj5#NUZ3=LC zyHaSp?sb&L8BIZIJuk*~5&iHA z@w}qw>C6p#zdAek+;C~yt_6zh^KJ%-2V>E9_!gTi7Ge8#T&T^7{X_aZ7s>o5ZZkX; zq_k_nxZ{Pq0+-DBDDWuAH-01N%l(=dbJ--|zVDPi_kkjAad&@7!>5s|8u~dGutJyB zQI+U)MXo`T+?I0rjFkq6sRi90bA_qx%s}AgT=3`&n|wm)BtZ@_J<_Ye5SHg#iaF5C zIP?h1$!cy{B>>RE1{0t{J>a=9P>?tW37I}a$DLB?Dg=`%fq-@K^Tr3|16mf&r1%s? z`@jUSym$~i2mpT_K|zQzDZ?*sK(E&I6jyBnC>zXyMVNL)V4sz1G6I$|M?9bIbPQ-X zyBPM55b+rvI@FjX{Ak6SoCD;T$jl{ZnW zU?ThmlAqH19WH3_egPQ6c|O@J5BBxoivKoqU`N+B%j>0d2^ zPkHqoX(y*XkPaENqTVkg@Ddp|b}2X~DrKoR=|CSV@R}QXi4Woa>?R~s}lLL@z{jfyh?fZoYfe|6%BLlt;Ri<_59Fxoq(nCeougB&V(W;PA z@=r-YaDl{O2lf=Cuy)_xtuSw>9F;_C0NTEVWT*z2Ag(TOMQ6DcNgmiTU#k>hf`@Vl zvjf;z-`>W(K~}CkJhj_TC#ar}Su4JmZEwu1xh8)fAf3bBIB@x>yH-$X$&LY?-+2L#9=c-&?=CmU8E^V z#)xq8NqPW22tkfQx=Ub=YFF73972Bt(bOyU2_GZOIWjiS@wv+7td$+UFATYr1;H z{epkSvcnffP!KG_f8ZALK;TF*aKPNN<(r8vf@bp ztrW~#tgrzbamS1GUI12a62)ev1MC&Hv@dZ0rn4%Gla+{&CgJ?X;!ME)rRx8GMZ9PV z(J_OGt0J?t`xM?$GtJH#qIZ8j_Se?vZTw3)A1$k6#mj?l zYV?0*Md@3cUs;EA&pj0jk3Mw*6*6y_w*p)QfxQ0k(PsexK!9AtHsgrD`fQpv+h-^4 z;QeO1C1~h**ESya&mqiLA^m4h@wB>NeAz2EOM1V|1CCXf$gp3^HkyANr`!}w5?!H< zH3iA)e9Vd=_EnOKsG>)!a%DVCQ<>^Dg}Hjad!gT94e(aoX_N*QP@t3tjbV1H^ZOYl zw6UsUmz8TV5oTb-01z8O`j{?apb0LaI4)_+0q0Lqg5fv&8tdz_W>fjUV`2AcL?!>L zZBq)hDr{OK|7Iv~A?$x5;j2>qLBamsu;&V>DmXDQ7+_Jq?8pRH@Ghs_8L7?yQ~gqP z(k8}Y%l4{|u*8Sat+-zmlC}9`33Fe+x2&G#Tr!~Tn6&hB?ABTi(DEh+T9HjuljE{?Y!B03Sa9v1_)=_Ts%mCD|&T zU;CK&wv{LUv}Ou%#CnV9CY-5*J?MPIK!SdNz~O)C5@@F^@V~DGEJtdDuz@zI#Q!Db z!OQLRm$#ph(>s4PI;+qmWJxtUEB7==U$xCNuqq#VKR@Vx8!3QM2@1yk$WHQeCH1D} zELydz^*4o8?xT*-cbbYKN!)5pKM8=?V)0A&`2K^w!lKZ4Gn0gna=jJVnoEQO@+#BH z8O_a}8a5@%S49qh1IPtR)$S47BuenHk;J25+|8Uqe~N$Wt!|-9{2VsE0P_{8U85n8 z9lNHOGG-|Mxvh`b(Z;utBhEP^k~4cA_ogg?5Q!IH-&618Y?3lbA{x;knYA;V&TArt z^eY&~F@aVQb$i9{ahs3md*RG}Yq*b(E%Rn?_oade)aIw9(1V-saS@-)s3Dx>KrD~) zBa%1573Y6B009?)wCW;(^gDNbAZ-fcT2OvONi-k=Bvtafnv$5R#Q?OjPGl`kZ*wQg zK|q+R=-^?EcwTVQ?B8XW=u?>!b zZbsEmNNxk-6S{`9v1S5FCn)ImSsgOyn4p|>G~g6P0SHWO-tNDIr%ZJ6QK#pnCi>0_ zC3le`UgGnIyFw`NT272lCn+)cLJAJOJ|K9xP}7rZHbS(`AkDnnpNW@&eTxXlX2x5v7a`qJZkl5E6J#!TID#2Y$baZ>9V}1tnDhG zoc#!8?W#)zxg%D$GwD-DAw@5$$!*vZ5e=f@Jop+cCq4}28NLF+Py{+(h@;^6zSDnl z6bD@}A>nq;92RSt2%stwS59FvO}hc7@&qmk$vg%$DsR0GeQQ~cLMp+R%>nvT)ysV6 zpDU59n!ApJa*;?E^x-V zR=z$P)WrO`1cU(XMByaJrj<@HF~NT`hV-1ZYN_DZIv$glZCEbyPhm}VzC>tf@@i<( z>02tR7E@tfX=g@@(?Pjhia+U7qoZaPpl(gqGZ*>5v@vx=2Xwe~`jK5bMwJVT^=I(ZxU%Lv`IhivAbky9s~E1PG8sLgO**@yWY{$=xwM6#k4{GT=G$yO|pNS1?V? zR+m{sj?G>>T=L5*X^&V*5Ucknnk_4~ViWB?N#N&*4lKAUQpkILM#?`50Zq(MG`Um?;$de3?_B&PzK#jVqx|yu5W{ z{`Y-!FTIxMEL?z$@05=M6ldanBVY@=Nc!9LKkGVqmLExoBpk$ekDROfmOtlZ_r_mT zE%)3PJtQ2bO9#DSllOnV|C{||HA)wH4K|WT>|#oWfI0WyFD-7{A?@J!uy}=*A=T zK>~@Eh7lH$1ND`#z~})JaV&V& z2eF8GAwm1q0G#Sg-IncV_|OAyQ%7uAK{Z{kXA773={J9NkN=Q_!n_kr^*HA3!ud_j z&?gZVKV%n@<+1;pzFTS&Ouz>kM>WUO)=wt*NR9-{Zt=&r=-W^RD!!>82!h=g|xhiiJV29!k-A|e&kl1U^| zOris&MHErJX>AD#4exlo-q$1>5=HNO-uJc17rlS)d*0U(3w8EVYDwy_U|=IZM?hAr zrbY-r>?|`Sw$UvG_W@hia`pxakq@QB;N6^vfrIE$j>Mq^F#Tqj7j%O5n>=!&GgMD0n~Y%!j+C8#sPFpv5Ho6<_$oVwD{xQ7tmR)wbe-W5;TkX zh)RDt1%vlqeYY|5xNDiCz5{t;S#3Ne^qLHsVFGMi@qe3=UAR#JIj>v8*kS?QcxEEY z8X|t(Du21ChuZjlSERRSDrsli+e?C=S=mxaE1k{02F&vsdVrf(@|Qy{YJqGovM(&8 zQx&DJ!Cy2b1>i#fJYAQWB7mx%9l?tNMGSwExb8Uti3c6i5FCL-18=Q}1}@eNvy*My zv#soIaeW;{W`79v+yOX|501^-cI=74q5Y$Pq6;Wv^28QL<(@1o^IjMWJ?0G_vzK7m>`>YHL`!t z(C2UuP;8T5tr73Sg_1dN1z2MsIJ+Ev#4A@5R+&!$H4q4Ts=wL`?;*v;7)m6uz;Ja3 zI$sX|fo1mK&zUs9et@+0Xib2l_01|kQWxxv?~#a-pE*Qh5|Qu@``OVgFqzdH(K zZt&D0sg?YL5zX^8bLEL*Uk!gxR*&`NmCGwRI$*=mXIwb)$Owu7QyzwY`{%KkGSk;l zzhy;H^DzC&ssp<`gihtl8>uUVSOl{un{}Ie#jM$<1rBw~NRtmRxrUa~aFNkVAij@y zwbj4Srks(9Fs4hWD5ib4(bz0Kw)R}?;|>{uMT8Cn4uVN(DoHXaOyGam$6<--m|ELj zO@}Fm9)U@^XMTXiDh?^lvZIi8SH5fB9-6Y*W0h95AGhP_yQrfpnApzER>(4b8 zhAT*5{sa&<(Am$y1894<4YWNkZzH3eA(@7~I~2ccL$hw`_V+!jjC|ZxfLw=6$0$;% zT|Q`}w9=kp2#-{3FQ zt`8&J$mtF%N%M|hYOI`knoJ|0__5*d9P5PATlXHOzqjMDt4T&-r#r0{o6?Wc1@Ik;Sr_sr?$ zbML^JDM8iTWkjH1-2z4@D`AV=kn8m2YJry0WEWOx6kqepnTwQ!J=cQ-kj18#U~+k> z1XN#&31Q-GDfML{dJYttK4$@qsD-4QL-LWF5NT(3j+#CrIARFV36BwC#{J!T( z{c^NFm8##j*7MK#Pkqtx))wVFd{YB5cUPEF zzhR7L%MWHbyATz}-ZAGvNxeNjSoVlbwXtUlBRuCd|4V;+0Wq^ZAcz#Yor-+2UdB3j z`Sg88-1I2sMz%@h>^kh0t|c|7AWiW%uX6@z)(V z8fhCmCbWM)f)@12;Td>@lEu9H{q_wa(M!O##Zddm1dRY8icz zh&Ku4OIw#uctL}Q0rkjFL^o?e!Pkt{ao|w?9&~@*wffeVZHZXqS{dyElyFL!@o(29 z&QEHZy5^ak#k(s)F_D??66~t7YQ_}7u*-RWNdK*Oml=>mVCu1yaTLd5a*<2?6H(W( z^!{>Jok3sE@Aacd*P!%wT>h%}B{$bX1seAAawTC1+!7c9h3`h};l$hQGZ-A7$vgke zSd)J^X?z9mfTU%)W$VPZw?gKI22AN+KS>(vHSOJwcAbizFS#kjUsr{ObtY@MFz!2x zeoq-0G%3OUbBe+M%KuRKYx8B#J2P+lD0Z-}ZEoO+l4Pay&hSnsZ`i6#=V^7T(B>M} zFmmUM+vE=j^jD+cfog(slPiwZp{Ff#fPsIOIjjR2^&mLs3raAr(}#xS@@WJk*^Q_1 zo4j|iNuY8Pl*nXGiG2a;bNEFI-%AzUwROWX-Pb8UXwip%U-kX38`+Q9^PaN>{}Ih~ zruV)6{h@)3WFhvK6)9%Wwy8^VLt56rqKF`Z2OTSE#uQ8 zGa5H6yUM{%7F-7Zob)p|id%VW(~aB}*b@rumUpD~fFT`!0*Z!;mtOnrQKMj}+{YUJ zv%l75jP~=R*zy8UbvajpxD;1+-863Jqs-ERNVQM2M>)q z-O*VTXy$%LZl@o=lCfM@+s|JieJ$ssyO;-Gz3{ef50cwUw45Q{;7Ik;Gi_&Wq!y%7 z+Y`dN7-yV-gIqf=NL-+FKpS9pf)EiP_^!>0foLq!(&>PNO(7K703KfRa@v3QRvkWR z=x--{+UutkX&jyZQYB6+j7#lJM^tBU62-d!c$9*BMevgFz@_dj0yYR-hR4BN{QXme%kEn^YFFnWBY|2a0Z{KTEm z06Ow^v9}h2@yy*iQdI&ZVbp)Sdqm~(j_%113O^q-)XN!lU5LDIuloa2jdEQRwA*7B z;uYg4A|JQ3Jf%IBY8fcjnc>Ni*bL3{6~W`lbKFzoxG7pl7Z_+pGFqM?R5HLrRYw5& zfe;s+B^pK}VxXVjD5NFr5$Vksw}KwP$L0=D%a9GkvR>jw3pbw=)bf9Ia>sl8`8#07 ziM?EjkjFA^=W3-e#@n*x=Hq0d9ET#;ubHIf#T^kxC7V~MwUbwp(K{(g#Qi(H4~&f$ zTXekxm_@L3QYtE-gVO9Z+0$;>v-R4b?@+HBrPFeJ=9W4vm9r3%Q3lbv^&Z1O95&!|S+M14 zHrX_a_nscV`Oa&(0_)qQK@;kTxvLm5qKWqBq&@`S7?@0spg&WOk^(?Jf=2I{g~UIu z>FT`E=%gV@n7flg~ z5Z~n0%KE$p8>cQfLFa#<{B}b&0Od#XFaSR6t{<*%+D^8Yv$#+TN5^&OS8jxzT(d!- z@bY!seO$x++qe$0JYk#B2e+r5kF?2RbMLxt$#%h6jC6Grfz;ty^`3c(03kqttAz2c z%cuX4TFrEs#H@cmSP`gg#{`-lWX~3;WZu@!Wj8rIip3apD!wAIYq6KK|9Eey9wpzH z!`%8rmL5qJd~LzyeLo}pp$UvtvoC}vpdi3U&68}dM<(mEuR?}%sVFn}u|g>c7F(k% zIeL{UesaMC%j381yl}EN;UKS~XoDTwR0Dq83sjT{uX2Ba)vEd=P&}5vM6QugWHsg> z5PN;bpu+v8r`hjra+^cWGA2X-rALH@FN%lv7j+d`0M1q2?|HZv1Ot2C_r1WZ-uJy# z1)ejp$?J9u)9p5W)&98D)I(Uz-aZ7+J?I%jSDFv}uV$>ywNE)h|LX8wZyqE5+3jsQ zog_KI=1PAsbXRK+A4w!D_kBl&_wli*0Csns4Y|@l(yenpr^o8Vj` z{%Z=;gWh;DQfZAbjL=1SEshO~G2oT5^wGYCkjDEqZIr%EV4Pi=uoI4lkL_GlC#RO= z>fG}YlozTqAfmt3p87kEr=7v>{Fl9t+WYp^)pdz&M3A)J}17hwLdh0E`5Hf={@Y8?=(ncJ3W1bIV3i%F!oY9!AV*>2Fh!>lE^s6Cn7W)juqU z0G-SeQn_|{gp#lxqjSv%Z$=U7jm|?}gNcZLxz*&6$DHX5XGHBvJWU>~2W12R*kLKa z*+yeUl4A&pRKM$~Ww@n?5%KnGdeza>gDaI`hGVT)Lwj z3xt;wEHtsu&0Hi`SjHQ`1=plz9r%KpRbC0nZNYHRdR}}9iou*RsSTm)p`{$=mY?H9 zB-Y>(c;UU@Zzdq(d+uhoH9QqbSM=L|Ich0ktZnLuJ$4{xY6D&UwbjQK(WN>GK0zLw zJF&gq(Z);yF0+o{no%sXnmf&fqy?4PWz`?UCEtrJEJGV@(@`lJNF#<} z58pWRy<|vv+Se|<9i!!-bi_0AWy0@%H3@=rudaUXqOD&`!;hR+eE$qaIlD4{9B(#Z zB(yat1(dox`9C%1RXy1*%OD`V`+Ghr`qF8cm!For&(WwkJYpORzcDvrRp0bqjQ{C1iBNVVpA!nZh2 z-e>6gl^EF4j40BtNPSYkq=klmI1e%{A40UNiesdNiRR8c%VnKhiN5zjB{%#Z_{^JzS_jLLP^yT^ANfATO*A0uYY`5??g|xulc*FV^by^F z9v5<*j}kI1dkaX|EdM1d|K02Dn%d?w<5MaPZ!u;?j*CT4%1 z+Ofb%Og!r8E3%-obnAULquaS<(~qH&od?43Jc@;J=DUkx!FMlbc#zn0b>;D99keoVbbZa$*qC%Xb zTW~u)F(1n5Qh#*M7dZEPG3hY6pbOGQp&;j>W=CY0ezj+&`#rf_npBe{pd@<2Kjiss zVuSaFE1mo1)kYk~f6ZV`P{lu)v`i@d(11PAsCz|!OpfvNx2Ls#+H=EMV+L;G~`l?=1Hz_FoG3rRMJ5_Lhg! z&A=S}=A9CKCULsuBPKoE*%ApxzV$Lxq5B$xN8ipr`1>FCe$Vd5o%mdTP4~X(e%JS} z0~p2eK}^e;ps|R5fsA7qstqh-6s9l+F^ppvEctofXuSy1?=SG&e0I`v9!kb@JwN_# zec5n67YKa>(H0d5o&qiQMZpS3rK{N+Y9v4eKu2&SYusM+&<_MhL(G3W&%eg%W>H1k zK=zoY#(h=_@&4z<=QEpY|H~_Wx|VMLtpWYo=$3{S6~Gv^aR*&RD>4T^ z?2<1GLpNc&5eb87)pIK~b1_spxYr-incbGkiKdz8dD0~R6EBl}dLIGh6Yp-K8rqEU zX?QFrmh*Uj&OuKd)7W8~%-gM#zIE2}{B1Ycm+YD_eAOjg-q!xsY15ru!m#Il4TcDV z^>&EP7M?k2M0&%r;@<5$4N51qZF-<;Lf)8wvR@I&7sCAsDh>h92`$R4iK>Jo zD!bIH!HM=ZMwvw{YL%|4Rq$o5wY{=ZxilES$3*3Sv6KFVQ1K^wGol))nvkYjX60;F z^(kXukv$Zp&U{^220no0?^MLUc9|0P7mkalm41^b!v7}oXP0F0RJ{@Aq$=f%R~*_} z3g!{UZqt@9Yu?3Hz_EoU$!Zz|NH;#`h}SkQ(5*}8bpEa{gzw<7W;b?nsn8ykfnBw* zWsU29Ofy5e@^Tq>^jTLopRgaDH%g|b# zXH03fI%{0M9+juRLH-KV7(&s z{ACN0?k-&|@v!eIou8dA&5hS(`k8AFVK_xs?YR?*bI5I7zsEoJB)v_LQ8-oi(yO}t z6;{^U$J6JgTLTrlISETjd$u13;2NZ(q`4$ovzE(?cHJ7jzDk2>h0eQEI5JDxDbbyO z)={ZLNkLp_X|5Q#8!-8|}PP{0 z!Nd~k1b%-Sl`)XN=_tK%-llW&lu_M(XwhDT4^*y1ReH5z3u7;w8@yYe%2W7X@(NP@ zim#*#vGP9jDJ639z|c@-CK_GAT?Ou+`y1&9YkdA^mGF=z-q~m{BXqOs-iIi90HV@U z4Ugtle!D$SryaoJ--`@FO&)0LM0kLHIWxhDPYZ!e>8h401C;S0>zzW>~Sy+h&K$3Lug zA1T541qw(}OxL78kELbV;h_b8DbR;d&Z*!_aBv~$@WFliEv85-IC{Ti1Hnz9Cd{G5 zrryxsrnZr8=&&W<<+f^`?prNHoxxs~G1G%+0R8pHR=4`3n0|@Gfl%^hZy+*U2u3V^ zKAr%5KUqR)_2<MwG+2gZ}zjO-Et=p6%mVL%gq;Dkicor55< zKFW)Vz{$giWo=J#5Xl{pDlAGB)rAL58Rp-uS|*ZS*k5H}BxYJ&wV2S$cw?aC)YC^h zD!-m9VPhg|s`Qbs5pItn<*fz#?lLc{S zWk`l_&jDZ%u2-GIBlbRj<|%Xa0Q2+UwMO7Pflc}Fz#owWg{aoC7J7LWiFELebq6}~ zRpJ1Y&?5B?er7fpm9~BexYhuIHU^br;jhgk66v@4O#gx&k;UsS4l_HH@I)kAf78xAVzZd@`owZ)}bvjPb0hI3FrvJ z37hp#;LA#UiB0|1Oi2O3NU>8l+gatPUw3Mdf0^ zpvb6mR)8%ybm7-*`|3*iGnL0C=|KYniG8P z>6sUT*PTKxG2!KC{TBsbyhloPN&J zSq_(XWMiY9%zG$a^IC?HX(V^{*I830yq1XQ3 zK{8;sTn82rg*Y4)9JxH2(m-Sf%9b#x`=lv;pa`GNOk4m5hzw=7tQRS{yxneQZ9!f` z{tDu(m+RMd-*<%MX#kTr|NZgzJsUg>>LKD8JdsF31z>;$>E6N_v%5cya|>FNC@3Sl zx3PwQuAI%xvinu1mhvlk)oTG0lVx5Jeyqdua$-={1P`6iATn1rAx5-> z04CEt8I9X+v41aNiJH#+%!zwnj|Dmo7WDvCLSzEnq%i|S1cNY=V1bPZHij_Qa?+z^ zR50=ub|hLOJ%bjNKiXw8vi4*uDQj~{LX*97+pUcb z-$Wl6bSM9P9gv%j)bi?p-nBZ)r8IH&euX*m#a0eaPFUx%bST<381TF}+wVGVC-r;U zS#mRQGA~c;{UrXwaof3!oUwSTo_5XK? zz{VaijNbRX@0M?S-fw&6E-!a`-m0pqpYr)iI-LwDMZusCgTX;^$=Juy@|n;s6s{6< z<~u_5TS!ktzyilvJLRJDp!}L2srYb;SpJM68*R4lq8G|`Y~A!d9U2F|*WBP=(20zE z;bnUERw$~WJ*A~*=;=l0zr4+VQP23WLZ~rUt8$oSw(aCxnUC{Z{%a4larenk!Y=5H zB*7f11_;l}B;i$F364WgV)%=F0k`+Lk7=)?pCb8Y9ivzgh}j;Y*1JTCw3;&fv82$d zu%wtVtGHO$A;?Redaav#X?6*G1%c$vxo5j!-P3d#Xe*=}se%MBhivhGr;yG=)i41> z{9(olmO%F#4r}uOY`91P20W%apS`U0d5F&ZSWgPKSA6II=5!CC{d`RgF4|8p;}yh{ zT%ep1T4_`67iPg5QGt#2^VX+1*}YB_}^nUmY}>Ca(;x@LLy3 z3p=O0t1`}0IcxY@rkj+19bTMka*7Rs&DhU)pe`qX<*C&2{HK8|v1@yD=~lin)MpVq z%zwDunp=>oNamNR(I^=N{<^!##S780ls{o$%Kin^etuD}w``i-l{xdEPEDp}U?ILS ziT%nfe7JVge4<;*rY)8@Q^g-fEv=QC6F9Y;y)0u9rtmwa4{1EMN4nv(P@y zZ?_P$})^!Y=&c-iOi8{Z?1ep`ooVhfmBA^7+w?lPw?j4X^piw8Af zJmX=Nf9O`RVvQ7kqMID!lnF-Nljz(am4hr%C~1gBmGZp8i-s^fFcu(x@XllI^<6yF zUYZDn2xgo=!oWLY%AlcuOgekL0}@Oy<+}JFT>XdJrxDIb1pnFSqn+3^8=OseS-vb8 z@Xv2oE=-u@j{yTGxzc`=&5qhfB`)f_2-uA1j-Y~2Fu^i^XUh%)M63@o?E5nvZvXkJ zvVlhAr)Vw_EnECiWpwQGS~3bfFCeE^ag2+-Y;IudMe|Fg)WCZ|^&;WG+ z$%`(6Q#~O@Te_h9q=4-pIfe0V#;0XkvLgJ19z1}hMxlZY+W3Y->T`psvr||7|)c^nh$7L5` zoZ9~Hm7C9dKYadl{C;=fUEPoU!+Snhk925%8eI3)Sp)C zLQ{SwlZAdzJ0G?nuL)!J{+ZmPJS-xVTY(3E7xv0lIw=`2GUyKrMqi&Izs{zJqpSn$ zZ-BLM*g-U4lX}fA)FBYwr~YJ1KJ=#2CYO{Z|1qPlzbwgwDOjz)7N?_Sbw$me&}0T#I(txFe0iRFdCCWT}zq{){n4N(Bdw*r9I zvB=lJBmkM}7z0OuL=h&7IDaQRRDulp<=oOVTrq=BDM$$d2XBU;u8x_+KpzQ&3IPm< z9u0??iHTik=-o|uY6Gr+zYq?@>Q3{2?SA7)KMUga{A4?{v7cp27tdS2Wmu@ssQ6wd zd<{Qhe#v$#;Mzayd}D=Hep^vh5r6A-?sJ4+!A~BTGiv?IL0F2%+Vc;k^~Z_lbWOW| z)71pYoDWx;+~t1N%jkXR-*{QPjl{XOT0~*ssDn-i5?4oV9F4d z>&2Yp%bTaYA5xB!fOjN#38+gxU7sFJAOHa5t+ZlJ;qe!v?Phy~G+G~J03BH4J!9A} zDbjX6>Ai22TvDHwR41n9O$#IbaY$^PQEFA_=7%a@ZTqZ;WXH=YE(#W! zx*%uk!rjDCw5Pg&gs`Xn!%Ihh1^&kZjCs^$v$G zSR_U3!omFL@i1+N0Y(n*Ev@OeN_cOmVc$-6yTH=bU6G+&?bHwZ?BWEN4&U?)UV8O)uP%;PkGalgNJ9-V0*|PF*JHcmB}ael z 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

      b{}h#s&!;Bdh6fpM|j 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