diff --git a/.github/workflows/build-tarball.yml b/.github/workflows/build-tarball.yml
index 2686033d401..50ddc858070 100644
--- a/.github/workflows/build-tarball.yml
+++ b/.github/workflows/build-tarball.yml
@@ -48,8 +48,6 @@ jobs:
uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
with:
python-version: ${{ env.PYTHON_VERSION }}
- - name: Environment Information
- run: npx envinfo
- name: Make tarball
run: |
export DISTTYPE=nightly
@@ -85,8 +83,6 @@ jobs:
uses: Mozilla-Actions/sccache-action@7d986dd989559c6ecdb630a3fd2557667be217ad # v0.0.9
with:
version: v0.12.0
- - name: Environment Information
- run: npx envinfo
- name: Download tarball
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
with:
diff --git a/.github/workflows/coverage-linux-without-intl.yml b/.github/workflows/coverage-linux-without-intl.yml
index 197ba34fc75..7b2d5378e9c 100644
--- a/.github/workflows/coverage-linux-without-intl.yml
+++ b/.github/workflows/coverage-linux-without-intl.yml
@@ -62,8 +62,6 @@ jobs:
uses: Mozilla-Actions/sccache-action@7d986dd989559c6ecdb630a3fd2557667be217ad # v0.0.9
with:
version: v0.12.0
- - name: Environment Information
- run: npx envinfo
- name: Install gcovr
run: pip install gcovr==7.2
- name: Configure
diff --git a/.github/workflows/coverage-linux.yml b/.github/workflows/coverage-linux.yml
index 966d91fc944..532d8c68c68 100644
--- a/.github/workflows/coverage-linux.yml
+++ b/.github/workflows/coverage-linux.yml
@@ -62,8 +62,6 @@ jobs:
uses: Mozilla-Actions/sccache-action@7d986dd989559c6ecdb630a3fd2557667be217ad # v0.0.9
with:
version: v0.12.0
- - name: Environment Information
- run: npx envinfo
- name: Install gcovr
run: pip install gcovr==7.2
- name: Configure
diff --git a/.github/workflows/coverage-windows.yml b/.github/workflows/coverage-windows.yml
index fe3cc7179c2..7798184fc61 100644
--- a/.github/workflows/coverage-windows.yml
+++ b/.github/workflows/coverage-windows.yml
@@ -54,8 +54,6 @@ jobs:
python-version: ${{ env.PYTHON_VERSION }}
- name: Install deps
run: choco install nasm
- - name: Environment Information
- run: npx envinfo
- name: Build
run: ./vcbuild.bat
# TODO(bcoe): investigate tests that fail with coverage enabled
diff --git a/.github/workflows/daily-wpt-fyi.yml b/.github/workflows/daily-wpt-fyi.yml
index 6c28e70e6d9..d8def20ff24 100644
--- a/.github/workflows/daily-wpt-fyi.yml
+++ b/.github/workflows/daily-wpt-fyi.yml
@@ -42,8 +42,6 @@ jobs:
uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
with:
python-version: ${{ env.PYTHON_VERSION }}
- - name: Environment Information
- run: npx envinfo
# install a version and checkout
- name: Get latest nightly
diff --git a/.github/workflows/daily.yml b/.github/workflows/daily.yml
index 199896f6d44..566429b9733 100644
--- a/.github/workflows/daily.yml
+++ b/.github/workflows/daily.yml
@@ -22,8 +22,6 @@ jobs:
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
with:
node-version: ${{ env.NODE_VERSION }}
- - name: Environment Information
- run: npx envinfo
- name: Build lto
run: |
sudo apt-get update && sudo apt-get install ninja-build -y
diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml
index f77aa405799..0df59477425 100644
--- a/.github/workflows/doc.yml
+++ b/.github/workflows/doc.yml
@@ -31,8 +31,6 @@ jobs:
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.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@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
diff --git a/.github/workflows/find-inactive-collaborators.yml b/.github/workflows/find-inactive-collaborators.yml
index 2e5290d5d12..612febf103c 100644
--- a/.github/workflows/find-inactive-collaborators.yml
+++ b/.github/workflows/find-inactive-collaborators.yml
@@ -33,7 +33,7 @@ jobs:
run: tools/find-inactive-collaborators.mjs
- name: Open pull request
- uses: gr2m/create-or-update-pull-request-action@77596e3166f328b24613f7082ab30bf2d93079d5
+ uses: gr2m/create-or-update-pull-request-action@b65137ca591da0b9f43bad7b24df13050ea45d1b # v1.10.1
# Creates a PR or update the Action's existing PR, or
# no-op if the base branch is already up-to-date.
env:
diff --git a/.github/workflows/find-inactive-tsc.yml b/.github/workflows/find-inactive-tsc.yml
index 0638a097065..9e01b58c396 100644
--- a/.github/workflows/find-inactive-tsc.yml
+++ b/.github/workflows/find-inactive-tsc.yml
@@ -42,7 +42,7 @@ jobs:
run: tools/find-inactive-tsc.mjs >> $GITHUB_ENV
- name: Open pull request
- uses: gr2m/create-or-update-pull-request-action@77596e3166f328b24613f7082ab30bf2d93079d5
+ uses: gr2m/create-or-update-pull-request-action@b65137ca591da0b9f43bad7b24df13050ea45d1b # v1.10.1
# Creates a PR or update the Action's existing PR, or
# no-op if the base branch is already up-to-date.
env:
diff --git a/.github/workflows/license-builder.yml b/.github/workflows/license-builder.yml
index 3d87cb09ead..15310f5e3db 100644
--- a/.github/workflows/license-builder.yml
+++ b/.github/workflows/license-builder.yml
@@ -21,7 +21,7 @@ jobs:
with:
persist-credentials: false
- run: ./tools/license-builder.sh # Run the license builder tool
- - uses: gr2m/create-or-update-pull-request-action@86ec1766034c8173518f61d2075cc2a173fb8c97 # v1.9.4
+ - uses: gr2m/create-or-update-pull-request-action@b65137ca591da0b9f43bad7b24df13050ea45d1b # v1.10.1
# Creates a PR or update the Action's existing PR, or
# no-op if the base branch is already up-to-date.
env:
diff --git a/.github/workflows/lint-release-proposal.yml b/.github/workflows/lint-release-proposal.yml
index 689580a7173..be6ab233b59 100644
--- a/.github/workflows/lint-release-proposal.yml
+++ b/.github/workflows/lint-release-proposal.yml
@@ -28,13 +28,24 @@ jobs:
persist-credentials: false
fetch-depth: 2
- name: Lint release commit title format
+ id: commit-message-parse
run: |
- EXPECTED_TITLE='^[[:digit:]]{4}-[[:digit:]]{2}-[[:digit:]]{2}, Version [[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+ (\(Current|'.+' \(LTS)\)$'
+ VERSION=$(${CXX:-cc} -E -dM src/node_version.h | awk '
+ $2 == "NODE_MAJOR_VERSION" { maj = $3 }
+ $2 == "NODE_MINOR_VERSION" { min = $3 }
+ $2 == "NODE_PATCH_VERSION" { pat = $3 }
+ $2 == "NODE_VERSION_LTS_CODENAME" { gsub(/^"|"$/, "'"'"'",$3); lts = $3 }
+ END { if (maj) print maj "\\." min "\\." pat " " (lts != "'"''"'" ? lts " \\(LTS" : "\\(Current" ) "\\)" }
+ ')
+ MAJOR=${VERSION%%\\.*}
+ EXPECTED_TITLE='^[[:digit:]]{4}-[[:digit:]]{2}-[[:digit:]]{2}, Version '"$VERSION"'$'
echo "Expected commit title format: $EXPECTED_TITLE"
COMMIT_SUBJECT="$(git --no-pager log -1 --format=%s)"
- echo "Actual: $ACTUAL"
+ echo "Actual: $COMMIT_SUBJECT"
echo "$COMMIT_SUBJECT" | grep -q -E "$EXPECTED_TITLE"
- echo "COMMIT_SUBJECT=$COMMIT_SUBJECT" >> "$GITHUB_ENV"
+
+ echo "COMMIT_SUBJECT=$COMMIT_SUBJECT" >> "$GITHUB_OUTPUT"
+ echo "MAJOR=$MAJOR" >> "$GITHUB_OUTPUT"
- name: Lint release commit message trailers
run: |
EXPECTED_TRAILER="^$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/pull/[[:digit:]]+\$"
@@ -54,8 +65,6 @@ jobs:
SKIP_XZ=1 make release-only
- name: Lint release commit content
run: |
- MAJOR="$(awk '/^#define NODE_MAJOR_VERSION / { print $3 }' src/node_version.h)"
-
echo "Checking for expected files in the release commit:"
missing_expected=
for expected in CHANGELOG.md src/node_version.h doc/changelogs/; do
@@ -73,14 +82,14 @@ jobs:
':(exclude)CHANGELOG.md' \
':(exclude)src/node_version.h' \
':(exclude)test/parallel/test-process-release.js' \
+ ':(exclude)doc/abi_version_registry.json' \
':(exclude)doc/api/' \
- ":(exclude)doc/changelogs/CHANGELOG_V$MAJOR.md")" ]
+ ":(exclude)doc/changelogs/")" ]
- name: Validate CHANGELOG
id: releaser-info
run: |
EXPECTED_CHANGELOG_TITLE_INTRO="## $COMMIT_SUBJECT, @"
echo "Expected CHANGELOG section title: $EXPECTED_CHANGELOG_TITLE_INTRO"
- MAJOR="$(awk '/^#define NODE_MAJOR_VERSION / { print $3 }' src/node_version.h)"
CHANGELOG_PATH="doc/changelogs/CHANGELOG_V${MAJOR}.md"
CHANGELOG_TITLE="$(grep "$EXPECTED_CHANGELOG_TITLE_INTRO" "$CHANGELOG_PATH")"
echo "Actual: $CHANGELOG_TITLE"
@@ -105,4 +114,6 @@ jobs:
done
shell: bash # See https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#exit-codes-and-error-action-preference, we want the pipefail option.
env:
+ COMMIT_SUBJECT: ${{ steps.commit-message-parse.outputs.COMMIT_SUBJECT }}
+ MAJOR: ${{ steps.commit-message-parse.outputs.MAJOR }}
GH_TOKEN: ${{ github.token }}
diff --git a/.github/workflows/linters.yml b/.github/workflows/linters.yml
index faa28d5ce7d..9a7c716495c 100644
--- a/.github/workflows/linters.yml
+++ b/.github/workflows/linters.yml
@@ -32,8 +32,6 @@ jobs:
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
with:
node-version: ${{ env.NODE_VERSION }}
- - name: Environment Information
- run: npx envinfo
- name: Lint addon docs
run: NODE=$(command -v node) make lint-addon-docs
lint-cpp:
@@ -47,8 +45,6 @@ jobs:
uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
with:
python-version: ${{ env.PYTHON_VERSION }}
- - name: Environment Information
- run: npx envinfo
- name: Lint C/C++ files
run: make lint-cpp
format-cpp:
@@ -67,8 +63,6 @@ jobs:
uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
with:
python-version: ${{ env.PYTHON_VERSION }}
- - name: Environment Information
- run: npx envinfo
- name: Format C/C++ files
run: |
make format-cpp-build
@@ -100,8 +94,6 @@ jobs:
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
with:
node-version: ${{ env.NODE_VERSION }}
- - name: Environment Information
- run: npx envinfo
- name: Lint JavaScript files
run: |
set +e
@@ -159,8 +151,6 @@ jobs:
uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
with:
python-version: ${{ env.PYTHON_VERSION }}
- - name: Environment Information
- run: npx envinfo
- name: Lint Python
run: |
make lint-py-build
@@ -182,8 +172,6 @@ jobs:
uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
with:
python-version: ${{ env.PYTHON_VERSION }}
- - name: Environment Information
- run: npx envinfo
- name: Lint YAML
run: |
make lint-yaml-build || true
diff --git a/.github/workflows/test-internet.yml b/.github/workflows/test-internet.yml
index 67c097ad0ae..e9151c6404d 100644
--- a/.github/workflows/test-internet.yml
+++ b/.github/workflows/test-internet.yml
@@ -57,8 +57,6 @@ jobs:
uses: Mozilla-Actions/sccache-action@7d986dd989559c6ecdb630a3fd2557667be217ad # v0.0.9
with:
version: v0.12.0
- - name: Environment Information
- run: npx envinfo
- name: Build
run: make build-ci -j4 V=1 CONFIG_FLAGS="--error-on-warn"
- name: Test Internet
diff --git a/.github/workflows/test-linux.yml b/.github/workflows/test-linux.yml
index 505ffafe9cf..9b7e1063ece 100644
--- a/.github/workflows/test-linux.yml
+++ b/.github/workflows/test-linux.yml
@@ -61,8 +61,6 @@ jobs:
uses: Mozilla-Actions/sccache-action@7d986dd989559c6ecdb630a3fd2557667be217ad # v0.0.9
with:
version: v0.12.0
- - name: Environment Information
- run: npx envinfo
- name: Build
run: make -C node build-ci -j4 V=1 CONFIG_FLAGS="--error-on-warn"
- name: Test
diff --git a/.github/workflows/test-macos.yml b/.github/workflows/test-macos.yml
index 2c167a55a80..0386c195e71 100644
--- a/.github/workflows/test-macos.yml
+++ b/.github/workflows/test-macos.yml
@@ -65,8 +65,6 @@ jobs:
uses: Mozilla-Actions/sccache-action@7d986dd989559c6ecdb630a3fd2557667be217ad # v0.0.9
with:
version: v0.12.0
- - name: Environment Information
- run: npx envinfo
# The `npm ci` for this step fails a lot as part of the Test step. Run it
# now so that we don't have to wait 2 hours for the Build step to pass
# first before that failure happens. (And if there's something about
diff --git a/.github/workflows/timezone-update.yml b/.github/workflows/timezone-update.yml
index 6032e52eaf7..59ffc3fb952 100644
--- a/.github/workflows/timezone-update.yml
+++ b/.github/workflows/timezone-update.yml
@@ -50,7 +50,8 @@ jobs:
- name: Open Pull Request
if: ${{ env.new_version != env.current_version }}
- uses: gr2m/create-or-update-pull-request-action@77596e3166f328b24613f7082ab30bf2d93079d5 # Create a PR or update the Action's existing PR
+ # Create a PR or update the Action's existing PR
+ uses: gr2m/create-or-update-pull-request-action@b65137ca591da0b9f43bad7b24df13050ea45d1b # v1.10.1
env:
GITHUB_TOKEN: ${{ secrets.GH_USER_TOKEN }}
with:
diff --git a/.github/workflows/tools.yml b/.github/workflows/tools.yml
index a1f8cde900b..e9cfaef77ec 100644
--- a/.github/workflows/tools.yml
+++ b/.github/workflows/tools.yml
@@ -306,7 +306,7 @@ jobs:
# no-op if the base branch is already up-to-date.
with:
token: ${{ secrets.GH_USER_TOKEN }}
- branch: actions/tools-update-${{ matrix.id }} # Custom branch *just* for this Action.
+ branch: actions/${{ github.ref_name == 'main' || format('{0}/', github.ref_name) }}tools-update-${{ matrix.id }} # Custom branch *just* for this Action.
delete-branch: true
commit-message: ${{ env.COMMIT_MSG }}
labels: ${{ matrix.label }}
diff --git a/.github/workflows/update-openssl.yml b/.github/workflows/update-openssl.yml
index ec5237a4569..158fa28acb0 100644
--- a/.github/workflows/update-openssl.yml
+++ b/.github/workflows/update-openssl.yml
@@ -12,7 +12,8 @@ permissions:
jobs:
openssl-update:
if: github.repository == 'nodejs/node'
- runs-on: ubuntu-slim
+ # Cannot use ubuntu-slim here because the update script requires Docker
+ runs-on: ubuntu-latest
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
@@ -27,7 +28,7 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GH_USER_TOKEN }}
- name: Create PR with first commit
if: env.NEW_VERSION
- uses: gr2m/create-or-update-pull-request-action@77596e3166f328b24613f7082ab30bf2d93079d5
+ uses: gr2m/create-or-update-pull-request-action@b65137ca591da0b9f43bad7b24df13050ea45d1b # v1.10.1
# Creates a PR with the new OpenSSL source code committed
env:
GITHUB_TOKEN: ${{ secrets.GH_USER_TOKEN }}
@@ -50,7 +51,7 @@ jobs:
- name: Add second commit
# Adds a second commit to the PR with the generated platform-dependent files
if: env.NEW_VERSION
- uses: gr2m/create-or-update-pull-request-action@77596e3166f328b24613f7082ab30bf2d93079d5
+ uses: gr2m/create-or-update-pull-request-action@b65137ca591da0b9f43bad7b24df13050ea45d1b # v1.10.1
env:
GITHUB_TOKEN: ${{ secrets.GH_USER_TOKEN }}
with:
diff --git a/.github/workflows/update-wpt.yml b/.github/workflows/update-wpt.yml
index 355f2780f23..671fcecf95d 100644
--- a/.github/workflows/update-wpt.yml
+++ b/.github/workflows/update-wpt.yml
@@ -52,6 +52,14 @@ jobs:
- name: Update WPT for subsystem ${{ matrix.subsystem }}
run: |
git node wpt "$SUBSYSTEM"
+ # TODO: Remove this workaround after @node-core/utils stops
+ # regenerating test/fixtures/wpt/README.md for every subsystem
+ # update.
+ # git node wpt currently rewrites test/fixtures/wpt/README.md with a
+ # generated summary for every subsystem update. versions.json is the
+ # authoritative metadata, and keeping the README stable avoids
+ # conflicts between concurrent WPT update PRs.
+ git restore test/fixtures/wpt/README.md
env:
SUBSYSTEM: ${{ matrix.subsystem }}
@@ -68,7 +76,7 @@ jobs:
SUBSYSTEM: ${{ matrix.subsystem }}
- name: Open or update PR for the subsystem update
- uses: gr2m/create-or-update-pull-request-action@77596e3166f328b24613f7082ab30bf2d93079d5
+ uses: gr2m/create-or-update-pull-request-action@b65137ca591da0b9f43bad7b24df13050ea45d1b # v1.10.1
with:
# The create-or-update-pull-request-action matches the branch name by prefix,
# which is why we need to add the -wpt suffix. If we dont do that, we risk matching wrong PRs,
diff --git a/CHANGELOG.md b/CHANGELOG.md
index cc6daf1589d..230d849960d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -37,7 +37,8 @@ release.
-22.23.2
+22.23.3
+22.23.2
22.23.1
22.23.0
22.22.3
diff --git a/Makefile b/Makefile
index 2e6d957a8ea..a373e16a6c5 100644
--- a/Makefile
+++ b/Makefile
@@ -1375,15 +1375,15 @@ binary: $(BINARYTAR) ## Build release binary tarballs.
# Note: this is strictly for release builds on release machines only.
binary-upload: binary
ssh $(STAGINGSERVER) "mkdir -p nodejs/$(DISTTYPEDIR)/$(FULLVERSION)"
- chmod 664 $(TARNAME)-$(OSTYPE)-$(ARCH).tar.gz
- scp -p $(TARNAME)-$(OSTYPE)-$(ARCH).tar.gz $(STAGINGSERVER):nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME)-$(OSTYPE)-$(ARCH).tar.gz
- ssh $(STAGINGSERVER) "rclone copyto nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME)-$(OSTYPE)-$(ARCH).tar.gz $(CLOUDFLARE_BUCKET)/nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME)-$(OSTYPE)-$(ARCH).tar.gz"
- ssh $(STAGINGSERVER) "touch nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME)-$(OSTYPE)-$(ARCH).tar.gz.done"
+ chmod 664 $(BINARYNAME).tar.gz
+ scp -p $(BINARYNAME).tar.gz $(STAGINGSERVER):nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(BINARYNAME).tar.gz
+ ssh $(STAGINGSERVER) "rclone copyto nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(BINARYNAME).tar.gz $(CLOUDFLARE_BUCKET)/nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(BINARYNAME).tar.gz"
+ ssh $(STAGINGSERVER) "touch nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(BINARYNAME).tar.gz.done"
ifeq ($(XZ), 1)
- chmod 664 $(TARNAME)-$(OSTYPE)-$(ARCH).tar.xz
- scp -p $(TARNAME)-$(OSTYPE)-$(ARCH).tar.xz $(STAGINGSERVER):nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME)-$(OSTYPE)-$(ARCH).tar.xz
- ssh $(STAGINGSERVER) "rclone copyto nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME)-$(OSTYPE)-$(ARCH).tar.xz $(CLOUDFLARE_BUCKET)/nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME)-$(OSTYPE)-$(ARCH).tar.xz"
- ssh $(STAGINGSERVER) "touch nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME)-$(OSTYPE)-$(ARCH).tar.xz.done"
+ chmod 664 $(BINARYNAME).tar.xz
+ scp -p $(BINARYNAME).tar.xz $(STAGINGSERVER):nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(BINARYNAME).tar.xz
+ ssh $(STAGINGSERVER) "rclone copyto nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(BINARYNAME).tar.xz $(CLOUDFLARE_BUCKET)/nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(BINARYNAME).tar.xz"
+ ssh $(STAGINGSERVER) "touch nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(BINARYNAME).tar.xz.done"
endif
.PHONY: bench-all
diff --git a/README.md b/README.md
index f3281edebf8..f6eb646387b 100644
--- a/README.md
+++ b/README.md
@@ -805,6 +805,8 @@ Primary GPG keys for Node.js Releasers (some Releasers sign with subkeys):
`C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C`
* **Ruy Adorno** <>
`108F52B48DB57BB0CC439B2997B01419BD92F80A`
+* **Stewart X Addison** <>
+ `655F3B5C1FB3FA8D1A0CA6BDE4A7D232B936D2FD`
* **Ulises Gascón** <>
`A363A499291CBBC940DD62E41F10027AF002F8B0`
@@ -822,6 +824,7 @@ gpg --keyserver hkps://keys.openpgp.org --recv-keys 8FCCA13FEF1D0C2E91008E09770F
gpg --keyserver hkps://keys.openpgp.org --recv-keys 890C08DB8579162FEE0DF9DB8BEAB4DFCF555EF4 # Rafael Gonzaga
gpg --keyserver hkps://keys.openpgp.org --recv-keys C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C # Richard Lau
gpg --keyserver hkps://keys.openpgp.org --recv-keys 108F52B48DB57BB0CC439B2997B01419BD92F80A # Ruy Adorno
+gpg --keyserver hkps://keys.openpgp.org --recv-keys 655F3B5C1FB3FA8D1A0CA6BDE4A7D232B936D2FD # Stewart X Addison
gpg --keyserver hkps://keys.openpgp.org --recv-keys A363A499291CBBC940DD62E41F10027AF002F8B0 # Ulises Gascón
```
diff --git a/common.gypi b/common.gypi
index 0ffa5b13719..704eacfc186 100644
--- a/common.gypi
+++ b/common.gypi
@@ -38,7 +38,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.56',
+ 'v8_embedder_string': '-node.57',
##### V8 defaults for Node.js #####
diff --git a/deps/cares/CMakeLists.txt b/deps/cares/CMakeLists.txt
index a2a9c19329e..a9ae8fb952b 100644
--- a/deps/cares/CMakeLists.txt
+++ b/deps/cares/CMakeLists.txt
@@ -12,7 +12,7 @@ INCLUDE (CheckCSourceCompiles)
INCLUDE (CheckStructHasMember)
INCLUDE (CheckLibraryExists)
-PROJECT (c-ares LANGUAGES C VERSION "1.34.6" )
+PROJECT (c-ares LANGUAGES C VERSION "1.34.8" )
# Set this version before release
SET (CARES_VERSION "${PROJECT_VERSION}")
@@ -30,7 +30,7 @@ INCLUDE (GNUInstallDirs) # include this *AFTER* PROJECT(), otherwise paths are w
# For example, a version of 4:0:2 would generate output such as:
# libname.so -> libname.so.2
# libname.so.2 -> libname.so.2.2.0
-SET (CARES_LIB_VERSIONINFO "21:5:19")
+SET (CARES_LIB_VERSIONINFO "21:7:19")
OPTION (CARES_STATIC "Build as a static library" OFF)
@@ -43,6 +43,7 @@ OPTION (CARES_BUILD_TOOLS "Build tools"
OPTION (CARES_SYMBOL_HIDING "Hide private symbols in shared libraries" OFF)
OPTION (CARES_THREADS "Build with thread-safety support" ON)
OPTION (CARES_COVERAGE "Build for code coverage" OFF)
+OPTION (CARES_WERROR "Treat compiler warnings on the c-ares library as errors" OFF)
SET (CARES_RANDOM_FILE "/dev/urandom" CACHE STRING "Suitable File / Device Path for entropy, such as /dev/urandom")
# Tests require static to be enabled on Windows to be able to access otherwise hidden symbols
@@ -54,6 +55,30 @@ ENDIF ()
INCLUDE (EnableWarnings)
+# Optionally treat warnings as errors for the c-ares library itself. This is
+# applied per-target (see cares_set_werror() usage) rather than globally so it
+# does not affect the test/fuzz harnesses (which carry their own warnings) or
+# CMake's own compiler feature checks. Enabled in CI only on toolchains known
+# to be free of spurious warnings at our high warning levels.
+FUNCTION (cares_set_werror target)
+ IF (NOT CARES_WERROR)
+ RETURN ()
+ ENDIF ()
+ IF (MSVC)
+ TARGET_COMPILE_OPTIONS (${target} PRIVATE /WX)
+ ELSE ()
+ TARGET_COMPILE_OPTIONS (${target} PRIVATE -Werror)
+ # Modern libc headers (e.g. glibc ) use the C11 _Generic
+ # keyword for const-correctness of strchr()/memchr()/etc. Clang flags
+ # that as a C11 extension under our C90 + -Wpedantic build even though it
+ # originates in a system header at our call sites. It is not something
+ # we can fix in our own code, so warn but do not fail on it.
+ IF (CMAKE_C_COMPILER_ID MATCHES "Clang")
+ TARGET_COMPILE_OPTIONS (${target} PRIVATE -Wno-error=c11-extensions)
+ ENDIF ()
+ ENDIF ()
+ENDFUNCTION ()
+
IF (MSVC)
# allow linking against the static runtime library in msvc
OPTION (CARES_MSVC_STATIC_RUNTIME "Link against the static runtime library" OFF)
diff --git a/deps/cares/README.md b/deps/cares/README.md
index 6566c9fe6aa..7e818df8fa5 100644
--- a/deps/cares/README.md
+++ b/deps/cares/README.md
@@ -1,7 +1,7 @@
# [](https://c-ares.org/)
-[](https://cirrus-ci.com/github/c-ares/c-ares)
-[](https://ci.appveyor.com/project/c-ares/c-ares/branch/main)
+[](https://github.com/c-ares/c-ares/actions/workflows/ubuntu-latest.yml)
+[](https://github.com/c-ares/c-ares/actions/workflows/windows.yml)
[](https://coveralls.io/github/c-ares/c-ares?branch=main)
[](https://bestpractices.coreinfrastructure.org/projects/291)
[](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:c-ares)
diff --git a/deps/cares/RELEASE-NOTES.md b/deps/cares/RELEASE-NOTES.md
index ded75001b54..93cc10fc74b 100644
--- a/deps/cares/RELEASE-NOTES.md
+++ b/deps/cares/RELEASE-NOTES.md
@@ -1,3 +1,113 @@
+## c-ares version 1.34.8 - July 7 2026
+
+This is a bugfix release.
+
+Bugfixes:
+* Revert "Mark parameters in callbacks as const" which shipped in 1.34.7.
+ Changing the parameter types of the `ares_callback`, `ares_host_callback`,
+ and `ares_nameinfo_callback` function pointer typedefs was an unintended
+ API break: existing applications with the historical non-const callback
+ signatures no longer compiled, particularly in C++ where function pointer
+ types must match exactly. The read-only nature of the callback parameters
+ is now documented instead.
+ [PR #1244](https://github.com/c-ares/c-ares/pull/1244)
+
+Thanks go to these friendly people for their efforts and contributions for this
+release:
+
+* Brad House (@bradh352)
+
+
+## c-ares version 1.34.7 - July 6 2026
+
+This is a security release.
+
+Security:
+* CVE-2026-33630. Use-after-free / double-free in c-ares' query-completion
+ handling, remotely triggerable via ares_getaddrinfo() over TCP. Please see
+ https://github.com/c-ares/c-ares/security/advisories/GHSA-6wfj-rwm7-3542
+* CPU-exhaustion denial of service via unbounded DNS name compression pointer
+ chains. Please see
+ https://github.com/c-ares/c-ares/security/advisories/GHSA-pjmc-gx33-gc76
+* Memory-amplification denial of service via unvalidated DNS header record
+ counts. Please see
+ https://github.com/c-ares/c-ares/security/advisories/GHSA-jv8r-gqr9-68wj
+
+Changes:
+* `ares_getaddrinfo()`: handle a NULL node per POSIX and implement
+ `ARES_AI_PASSIVE`. [PR #1186](https://github.com/c-ares/c-ares/pull/1186)
+* Mark parameters in callbacks as const.
+ [PR #1060](https://github.com/c-ares/c-ares/pull/1060)
+* Correct `ARES_CLASS_HESOID` misspelling to `ARES_CLASS_HESIOD`.
+ [PR #1092](https://github.com/c-ares/c-ares/pull/1092)
+
+Bugfixes:
+* Fix sticky server recovery when all servers have failures. [PR #1192](https://github.com/c-ares/c-ares/pull/1192)
+* Fix UDP socket exhaustion regression: retire connections per-connection, not via server failure count. [PR #1197](https://github.com/c-ares/c-ares/pull/1197)
+* Guard DNS record binary length overflow. [PR #1168](https://github.com/c-ares/c-ares/pull/1168)
+* Prevent integer overflow in allocation size calculations. [PR #1147](https://github.com/c-ares/c-ares/pull/1147)
+* Prevent overflow in ares_array allocation size calculations. [PR #1117](https://github.com/c-ares/c-ares/pull/1117)
+* Prevent integer overflow in buffer size calculation. [PR #1116](https://github.com/c-ares/c-ares/pull/1116)
+* Add overflow checks to ares_buf_ensure_space(). [PR #1094](https://github.com/c-ares/c-ares/pull/1094)
+* Skip name compression offsets beyond the 14-bit pointer limit. [PR #1159](https://github.com/c-ares/c-ares/pull/1159)
+* ares_dns_parse: reject name compression in RDATA where not permitted (RFC 3597). [PR #1190](https://github.com/c-ares/c-ares/pull/1190)
+* ares_dns_parse: reject responses with more than one OPT record (RFC 6891). [PR #1189](https://github.com/c-ares/c-ares/pull/1189)
+* Discard oversized UDP datagrams instead of truncating the length frame. [PR #1161](https://github.com/c-ares/c-ares/pull/1161)
+* Route numeric config parsing through range-checked ares_str_parse_uint. [PR #1158](https://github.com/c-ares/c-ares/pull/1158)
+* Replace atoi-based port parsing with validated helper. [PR #1097](https://github.com/c-ares/c-ares/pull/1097)
+* Defer TCP connection error handling until DNS responses are parsed. [PR #1138](https://github.com/c-ares/c-ares/pull/1138)
+* Prevent undefined-behavior left shift in ares_calc_query_timeout(). [PR #1151](https://github.com/c-ares/c-ares/pull/1151)
+* Use unsigned type for ares_round_up_pow2_u64 to avoid undefined behavior. [PR #1107](https://github.com/c-ares/c-ares/pull/1107)
+* Fix undefined behavior in ares_buf_replace() pointer arithmetic. [PR #1099](https://github.com/c-ares/c-ares/pull/1099)
+* ares_array: reset offset when array becomes empty. [PR #1165](https://github.com/c-ares/c-ares/pull/1165)
+* ares_iface_ips: add ARES_IFACE_IP_NONE zero enum value. [PR #1187](https://github.com/c-ares/c-ares/pull/1187)
+* ares_sysconfig_files: recognize AIX netsvc.conf bind4/local4 tokens. [PR #1188](https://github.com/c-ares/c-ares/pull/1188)
+* Use safe string construction in Windows sysconfig join path. [PR #1143](https://github.com/c-ares/c-ares/pull/1143)
+* Fix zero-length RAW_RR losing type metadata during parsing. [PR #1129](https://github.com/c-ares/c-ares/pull/1129)
+* Fix RAW_RR type tostr/fromstr roundtrip mismatch. [PR #1123](https://github.com/c-ares/c-ares/pull/1123)
+* Fix NULL dereference for ifa netmask. [PR #1120](https://github.com/c-ares/c-ares/pull/1120)
+* adig: fix negated option prefix parsing. [PR #1135](https://github.com/c-ares/c-ares/pull/1135)
+* Use UnregisterWaitEx to prevent use-after-free on Win32. [PR #1111](https://github.com/c-ares/c-ares/pull/1111)
+* Add NULL check after ares_malloc_zero in Windows UTF8 conversion. [PR #1121](https://github.com/c-ares/c-ares/pull/1121)
+* Fix NULL dereference after ares_malloc_zero in Win32 IOCP event add. [PR #1132](https://github.com/c-ares/c-ares/pull/1132)
+* Fix microsecond overflow in ares_queue_wait_empty timeout. [PR #1122](https://github.com/c-ares/c-ares/pull/1122)
+* Fix NULL dereference in ares_buf_replace() on NULL buf. [PR #1124](https://github.com/c-ares/c-ares/pull/1124)
+* Initialize *read_bytes in ares_socket_recvfrom(). [PR #1125](https://github.com/c-ares/c-ares/pull/1125)
+* Fix memory leak of binbuf in ares_buf_parse_dns_binstr_int. [PR #1126](https://github.com/c-ares/c-ares/pull/1126)
+* Fix memory leak of qcache entry on key allocation failure. [PR #1127](https://github.com/c-ares/c-ares/pull/1127)
+* Fix memory leak of buf in ares_dns_multistring_combined() on OOM. [PR #1110](https://github.com/c-ares/c-ares/pull/1110)
+* Fix memory leaks on error paths in two functions. [PR #1109](https://github.com/c-ares/c-ares/pull/1109)
+* Fix memory leak of buckets in ares_htable_dict_keys() error path. [PR #1108](https://github.com/c-ares/c-ares/pull/1108)
+* Fix memory leak of bucket->key in ares_htable_dict_insert error path. [PR #1105](https://github.com/c-ares/c-ares/pull/1105)
+* Fix additional memory leaks. [PR #1091](https://github.com/c-ares/c-ares/pull/1091) [PR #1078](https://github.com/c-ares/c-ares/pull/1078)
+* Prevent corrupt addrinfo nodes on sockaddr allocation failure. [PR #1112](https://github.com/c-ares/c-ares/pull/1112)
+* Fix two logic bugs in DNS cookie handling. [PR #1103](https://github.com/c-ares/c-ares/pull/1103)
+* Fix linked list INSERT_BEFORE corruption and array insertdata_first ordering. [PR #1101](https://github.com/c-ares/c-ares/pull/1101)
+* Fix HASH_IDX macro missing parentheses. [PR #1128](https://github.com/c-ares/c-ares/pull/1128)
+* Fix malloc(0) in ares_htable_all_buckets on empty table. [PR #1131](https://github.com/c-ares/c-ares/pull/1131)
+* Fix wrong sizeof in QNX confstr() call truncating domain names. [PR #1130](https://github.com/c-ares/c-ares/pull/1130)
+* Clear probe pending flag after timeout. [PR #1059](https://github.com/c-ares/c-ares/pull/1059)
+* Fix incorrect check for empty wide string. [PR #1064](https://github.com/c-ares/c-ares/pull/1064)
+* Handle strdup failure. [PR #1077](https://github.com/c-ares/c-ares/pull/1077)
+* doc: reference ares_free_string(), not ares_free(). [PR #1084](https://github.com/c-ares/c-ares/pull/1084)
+
+Thanks go to these friendly people for their efforts and contributions for this
+release:
+
+* (@Alb3e3)
+* Brad House (@bradh352)
+* (@dankmeme01)
+* David Hotham (@dimbleby)
+* Tom Flynn (@Flynnzaa)
+* (@jmestwa-coder)
+* (@kodareef5)
+* Kaixuan Li (@MarkLee131)
+* (@lifenjoiner)
+* (@metsw24-max)
+* Song Li (@SongTonyLi)
+* (@uwezkhan)
+
+
## c-ares version 1.34.6 - December 8 2025
This is a security release.
diff --git a/deps/cares/aminclude_static.am b/deps/cares/aminclude_static.am
index 07239563e6a..9a00ba78917 100644
--- a/deps/cares/aminclude_static.am
+++ b/deps/cares/aminclude_static.am
@@ -1,6 +1,6 @@
# aminclude_static.am generated automatically by Autoconf
-# from AX_AM_MACROS_STATIC on Mon Dec 8 16:21:41 UTC 2025
+# from AX_AM_MACROS_STATIC on Tue Jul 7 16:14:13 UTC 2026
# Code coverage
diff --git a/deps/cares/configure b/deps/cares/configure
index f91e2c95686..c2318a1c3bf 100755
--- a/deps/cares/configure
+++ b/deps/cares/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.71 for c-ares 1.34.6.
+# Generated by GNU Autoconf 2.71 for c-ares 1.34.8.
#
# Report bugs to .
#
@@ -621,8 +621,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='c-ares'
PACKAGE_TARNAME='c-ares'
-PACKAGE_VERSION='1.34.6'
-PACKAGE_STRING='c-ares 1.34.6'
+PACKAGE_VERSION='1.34.8'
+PACKAGE_STRING='c-ares 1.34.8'
PACKAGE_BUGREPORT='c-ares mailing list: http://lists.haxx.se/listinfo/c-ares'
PACKAGE_URL=''
@@ -1430,7 +1430,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures c-ares 1.34.6 to adapt to many kinds of systems.
+\`configure' configures c-ares 1.34.8 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1501,7 +1501,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of c-ares 1.34.6:";;
+ short | recursive ) echo "Configuration of c-ares 1.34.8:";;
esac
cat <<\_ACEOF
@@ -1647,7 +1647,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-c-ares configure 1.34.6
+c-ares configure 1.34.8
generated by GNU Autoconf 2.71
Copyright (C) 2021 Free Software Foundation, Inc.
@@ -2271,7 +2271,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by c-ares $as_me 1.34.6, which was
+It was created by c-ares $as_me 1.34.8, which was
generated by GNU Autoconf 2.71. Invocation command line was
$ $0$ac_configure_args_raw
@@ -3245,7 +3245,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
-CARES_VERSION_INFO="21:5:19"
+CARES_VERSION_INFO="21:7:19"
@@ -6818,7 +6818,7 @@ fi
# Define the identity of the package.
PACKAGE='c-ares'
- VERSION='1.34.6'
+ VERSION='1.34.8'
printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@@ -28238,7 +28238,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by c-ares $as_me 1.34.6, which was
+This file was extended by c-ares $as_me 1.34.8, which was
generated by GNU Autoconf 2.71. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -28306,7 +28306,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config='$ac_cs_config_escaped'
ac_cs_version="\\
-c-ares config.status 1.34.6
+c-ares config.status 1.34.8
configured by $0, generated by GNU Autoconf 2.71,
with options \\"\$ac_cs_config\\"
diff --git a/deps/cares/configure.ac b/deps/cares/configure.ac
index 744a99be56a..637dfb153b1 100644
--- a/deps/cares/configure.ac
+++ b/deps/cares/configure.ac
@@ -2,10 +2,10 @@ dnl Copyright (C) The c-ares project and its contributors
dnl SPDX-License-Identifier: MIT
AC_PREREQ([2.69])
-AC_INIT([c-ares], [1.34.6],
+AC_INIT([c-ares], [1.34.8],
[c-ares mailing list: http://lists.haxx.se/listinfo/c-ares])
-CARES_VERSION_INFO="21:5:19"
+CARES_VERSION_INFO="21:7:19"
dnl This flag accepts an argument of the form current[:revision[:age]]. So,
dnl passing -version-info 3:12:1 sets current to 3, revision to 12, and age to
dnl 1.
diff --git a/deps/cares/docs/ares_dns_record.3 b/deps/cares/docs/ares_dns_record.3
index 47ca95b057a..723f9ab4b98 100644
--- a/deps/cares/docs/ares_dns_record.3
+++ b/deps/cares/docs/ares_dns_record.3
@@ -140,7 +140,7 @@ DNS Classes for requests and responses:
.B ARES_CLASS_CHAOS
- CHAOS
.br
-.B ARES_CLASS_HESOID
+.B ARES_CLASS_HESIOD
- Hesoid [Dyer 87]
.br
.B ARES_CLASS_NONE
diff --git a/deps/cares/docs/ares_getaddrinfo.3 b/deps/cares/docs/ares_getaddrinfo.3
index 5544ce20224..661381e0926 100644
--- a/deps/cares/docs/ares_getaddrinfo.3
+++ b/deps/cares/docs/ares_getaddrinfo.3
@@ -27,6 +27,19 @@ The
and
.I service
parameters give the hostname and service as NULL-terminated C strings.
+Either
+.I name
+or
+.I service
+may be NULL, but not both. If
+.I name
+is NULL, the returned addresses are synthesized from
+.IR service :
+the wildcard address (0.0.0.0 or ::) is returned when
+.B ARES_AI_PASSIVE
+is set in
+.IR ai_flags ,
+otherwise the loopback address (127.0.0.1 or ::1) is returned.
The
.I hints
parameter is an
@@ -63,6 +76,16 @@ If this option is set
.I service
field will be treated as a numeric value.
.TP 19
+.B ARES_AI_PASSIVE
+If this option is set and
+.I name
+is NULL, the returned addresses will use the wildcard address (0.0.0.0 or ::),
+suitable for
+.BR bind (2)ing
+a socket that will accept connections. If not set and
+.I name
+is NULL, the loopback address (127.0.0.1 or ::1) is returned instead.
+.TP 19
.B ARES_AI_CANONNAME
The ares_addrinfo structure will return a canonical names list.
.TP 19
diff --git a/deps/cares/docs/ares_gethostbyaddr.3 b/deps/cares/docs/ares_gethostbyaddr.3
index cc4092285c0..f5b5f0864fc 100644
--- a/deps/cares/docs/ares_gethostbyaddr.3
+++ b/deps/cares/docs/ares_gethostbyaddr.3
@@ -80,7 +80,16 @@ points to a
containing the name of the host returned by the query. The callback
need not and should not attempt to free the memory pointed to by
.IR hostent ;
-the ares library will free it when the callback returns. If the query
+the ares library will free it when the callback returns. The callback
+.B must not
+modify the
+.B struct hostent
+or retain a reference to it after returning; it is owned by c-ares and is only
+valid for the duration of the callback. The parameter is intentionally not
+declared
+.B const
+solely to preserve API/ABI compatibility with existing applications.
+If the query
did not complete successfully,
.I hostent
will be
diff --git a/deps/cares/docs/ares_gethostbyname.3 b/deps/cares/docs/ares_gethostbyname.3
index 06d075ca6c5..40d34034311 100644
--- a/deps/cares/docs/ares_gethostbyname.3
+++ b/deps/cares/docs/ares_gethostbyname.3
@@ -88,7 +88,16 @@ points to a
containing the name of the host returned by the query. The callback
need not and should not attempt to free the memory pointed to by
.IR hostent ;
-the ares library will free it when the callback returns. If the query
+the ares library will free it when the callback returns. The callback
+.B must not
+modify the
+.B struct hostent
+or retain a reference to it after returning; it is owned by c-ares and is only
+valid for the duration of the callback. The parameter is intentionally not
+declared
+.B const
+solely to preserve API/ABI compatibility with existing applications.
+If the query
did not complete successfully,
.I hostent
will be
diff --git a/deps/cares/docs/ares_getnameinfo.3 b/deps/cares/docs/ares_getnameinfo.3
index 66b04f9efc1..800b57b31f3 100644
--- a/deps/cares/docs/ares_getnameinfo.3
+++ b/deps/cares/docs/ares_getnameinfo.3
@@ -24,7 +24,7 @@ function is defined for protocol-independent address translation. The function
is a combination of \fIares_gethostbyaddr(3)\fP and \fIgetservbyport(3)\fP. The function will
translate the address either by executing a host query on the name service channel
identified by
-.IR channel
+.IR channel
or it will attempt to resolve it locally if possible.
The parameters
.I sa
@@ -68,8 +68,8 @@ A hostname lookup is being requested.
A service name lookup is being requested.
.PP
When the query
-is complete or has
-failed, the ares library will invoke \fIcallback\fP. Completion or failure of
+is complete or has
+failed, the ares library will invoke \fIcallback\fP. Completion or failure of
the query may happen immediately, or may happen during a later call to
\fIares_process(3)\fP, \fIares_destroy(3)\fP or \fIares_cancel(3)\fP.
.PP
@@ -129,19 +129,31 @@ given request.
.PP
On successful completion of the query, the callback argument
.I node
-contains a string representing the hostname (assuming
+contains a string representing the hostname (assuming
.B ARES_NI_LOOKUPHOST
-was specified). Additionally,
+was specified). Additionally,
.I service
contains a string representing the service name (assuming
.B ARES_NI_LOOKUPSERVICE
was specified).
If the query did not complete successfully, or one of the values
-was not requested,
+was not requested,
.I node
or
.I service
-will be
+will be
.BR NULL .
+.PP
+The
+.I node
+and
+.I service
+strings are owned by the c-ares library and are only valid for the duration of
+the callback. The callback
+.B must not
+modify or free them, and must not retain references to them after returning;
+treat them as read-only. The parameters are intentionally not declared
+.B const
+solely to preserve API/ABI compatibility with existing applications.
.SH SEE ALSO
.BR ares_process (3),
diff --git a/deps/cares/docs/ares_query.3 b/deps/cares/docs/ares_query.3
index 3aa428b00bb..401d700a44c 100644
--- a/deps/cares/docs/ares_query.3
+++ b/deps/cares/docs/ares_query.3
@@ -146,6 +146,16 @@ or
.I abuf
will be non-NULL, otherwise they will be NULL.
+The
+.I abuf
+buffer is owned by the c-ares library and is only valid for the duration of
+the callback. The callback
+.B must not
+modify or free it, and must not retain a reference to it after returning; treat
+it as read-only. The parameter is intentionally not declared
+.B const
+solely to preserve API/ABI compatibility with existing applications.
+
.SH AVAILABILITY
\fBares_query_dnsrec(3)\fP was introduced in c-ares 1.28.0.
diff --git a/deps/cares/docs/ares_search.3 b/deps/cares/docs/ares_search.3
index 66791b47e90..12d1dede09e 100644
--- a/deps/cares/docs/ares_search.3
+++ b/deps/cares/docs/ares_search.3
@@ -152,6 +152,15 @@ will usually be NULL and
will usually be 0, but in some cases an unsuccessful query result may
be placed in
.IR abuf .
+The
+.I abuf
+buffer is owned by the c-ares library and is only valid for the duration of
+the callback. The callback
+.B must not
+modify or free it, and must not retain a reference to it after returning; treat
+it as read-only. The parameter is intentionally not declared
+.B const
+solely to preserve API/ABI compatibility with existing applications.
The \fIares_search_dnsrec(3)\fP function behaves identically to
\fIares_search(3)\fP, but takes an initialized and filled DNS record object to
diff --git a/deps/cares/docs/ares_send.3 b/deps/cares/docs/ares_send.3
index df3e3bbe413..cf669a001db 100644
--- a/deps/cares/docs/ares_send.3
+++ b/deps/cares/docs/ares_send.3
@@ -131,6 +131,16 @@ and
.IR alen
for \fIares_send(3)\fP will be non-NULL.
+The
+.I abuf
+buffer is owned by the c-ares library and is only valid for the duration of
+the callback. The callback
+.B must not
+modify or free it, and must not retain a reference to it after returning; treat
+it as read-only. The parameter is intentionally not declared
+.B const
+solely to preserve API/ABI compatibility with existing applications.
+
Unless the flag
.B ARES_FLAG_NOCHECKRESP
was set at channel initialization time, \fIares_send_dnsrec(3)\fP and
diff --git a/deps/cares/include/ares.h b/deps/cares/include/ares.h
index 7fe3ec78f4e..1e38463a044 100644
--- a/deps/cares/include/ares.h
+++ b/deps/cares/include/ares.h
@@ -434,6 +434,14 @@ struct ares_addr {
/* DNS record parser, writer, and helpers */
#include "ares_dns_record.h"
+/* IMPORTANT: the pointer parameters below (abuf, hostent, node, service) are
+ * intentionally NOT const. Marking them const changes the function-pointer
+ * type and breaks API/ABI compatibility for existing C and (especially) C++
+ * applications that declare their callbacks with the historical non-const
+ * signature. This was tried in PR #1060 and reverted for that reason. These
+ * buffers are owned by c-ares and MUST be treated as read-only by the callback
+ * (do not modify or free them); that contract is documented in the man pages,
+ * not enforced via const, to preserve compatibility. Do not re-add const. */
typedef void (*ares_callback)(void *arg, int status, int timeouts,
unsigned char *abuf, int alen);
diff --git a/deps/cares/include/ares_dns_record.h b/deps/cares/include/ares_dns_record.h
index cec9f47f63d..1e47a78e143 100644
--- a/deps/cares/include/ares_dns_record.h
+++ b/deps/cares/include/ares_dns_record.h
@@ -76,7 +76,8 @@ typedef enum {
typedef enum {
ARES_CLASS_IN = 1, /*!< Internet */
ARES_CLASS_CHAOS = 3, /*!< CHAOS */
- ARES_CLASS_HESOID = 4, /*!< Hesoid [Dyer 87] */
+ ARES_CLASS_HESIOD = 4, /*!< Hesiod [Dyer 87] */
+ ARES_CLASS_HESOID = 4, /*!< typo from older c-ares version for Hesiod */
ARES_CLASS_NONE = 254, /*!< RFC 2136 */
ARES_CLASS_ANY = 255 /*!< Any class (requests only) */
} ares_dns_class_t;
@@ -1092,7 +1093,7 @@ CARES_EXTERN ares_status_t ares_dns_parse(const unsigned char *buf,
*
* \param[in] dnsrec Pointer to initialized and filled DNS record object.
* \param[out] buf Pointer passed by reference to be filled in with with
- * DNS message. Must be ares_free()'d by caller.
+ * DNS message. Must be ares_free_string()'d by caller.
* \param[out] buf_len Length of returned buffer containing DNS message.
* \return ARES_SUCCESS on success
*/
diff --git a/deps/cares/include/ares_version.h b/deps/cares/include/ares_version.h
index 006029c12df..f836d5f9186 100644
--- a/deps/cares/include/ares_version.h
+++ b/deps/cares/include/ares_version.h
@@ -32,8 +32,8 @@
#define ARES_VERSION_MAJOR 1
#define ARES_VERSION_MINOR 34
-#define ARES_VERSION_PATCH 6
-#define ARES_VERSION_STR "1.34.6"
+#define ARES_VERSION_PATCH 8
+#define ARES_VERSION_STR "1.34.8"
/* NOTE: We cannot make the version string a C preprocessor stringify operation
* due to assumptions made by integrators that aren't properly using
diff --git a/deps/cares/src/lib/CMakeLists.txt b/deps/cares/src/lib/CMakeLists.txt
index bdb2690fb67..a4c1e73f1bd 100644
--- a/deps/cares/src/lib/CMakeLists.txt
+++ b/deps/cares/src/lib/CMakeLists.txt
@@ -66,6 +66,8 @@ IF (CARES_SHARED)
TARGET_COMPILE_DEFINITIONS (${PROJECT_NAME} PRIVATE HAVE_CONFIG_H=1 CARES_BUILDING_LIBRARY)
+ cares_set_werror (${PROJECT_NAME})
+
TARGET_LINK_LIBRARIES (${PROJECT_NAME}
PUBLIC ${CARES_DEPENDENT_LIBS}
PRIVATE ${CMAKE_THREAD_LIBS_INIT}
@@ -136,6 +138,8 @@ IF (CARES_STATIC)
TARGET_COMPILE_DEFINITIONS (${LIBNAME} PRIVATE HAVE_CONFIG_H=1 CARES_BUILDING_LIBRARY)
+ cares_set_werror (${LIBNAME})
+
# Only matters on Windows
IF (WIN32 OR CYGWIN)
TARGET_COMPILE_DEFINITIONS (${LIBNAME} PUBLIC CARES_STATICLIB)
diff --git a/deps/cares/src/lib/Makefile.in b/deps/cares/src/lib/Makefile.in
index e92732eaf72..a9630300c08 100644
--- a/deps/cares/src/lib/Makefile.in
+++ b/deps/cares/src/lib/Makefile.in
@@ -15,7 +15,7 @@
@SET_MAKE@
# aminclude_static.am generated automatically by Autoconf
-# from AX_AM_MACROS_STATIC on Mon Dec 8 16:21:41 UTC 2025
+# from AX_AM_MACROS_STATIC on Tue Jul 7 16:14:13 UTC 2026
# Copyright (C) The c-ares project and its contributors
# SPDX-License-Identifier: MIT
diff --git a/deps/cares/src/lib/ares_addrinfo_localhost.c b/deps/cares/src/lib/ares_addrinfo_localhost.c
index 2abb0c48a6f..b65cf48a2f6 100644
--- a/deps/cares/src/lib/ares_addrinfo_localhost.c
+++ b/deps/cares/src/lib/ares_addrinfo_localhost.c
@@ -67,13 +67,8 @@ ares_status_t ares_append_ai_node(int aftype, unsigned short port,
struct ares_addrinfo_node **nodes)
{
struct ares_addrinfo_node *node;
-
- node = ares_append_addrinfo_node(nodes);
- if (!node) {
- return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
- }
-
- memset(node, 0, sizeof(*node));
+ struct sockaddr *sa;
+ socklen_t salen;
if (aftype == AF_INET) {
struct sockaddr_in *sin = ares_malloc(sizeof(*sin));
@@ -86,14 +81,9 @@ ares_status_t ares_append_ai_node(int aftype, unsigned short port,
sin->sin_family = AF_INET;
sin->sin_port = htons(port);
- node->ai_addr = (struct sockaddr *)sin;
- node->ai_family = AF_INET;
- node->ai_addrlen = sizeof(*sin);
- node->ai_addr = (struct sockaddr *)sin;
- node->ai_ttl = (int)ttl;
- }
-
- if (aftype == AF_INET6) {
+ sa = (struct sockaddr *)sin;
+ salen = sizeof(*sin);
+ } else if (aftype == AF_INET6) {
struct sockaddr_in6 *sin6 = ares_malloc(sizeof(*sin6));
if (!sin6) {
return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
@@ -104,13 +94,23 @@ ares_status_t ares_append_ai_node(int aftype, unsigned short port,
sin6->sin6_family = AF_INET6;
sin6->sin6_port = htons(port);
- node->ai_addr = (struct sockaddr *)sin6;
- node->ai_family = AF_INET6;
- node->ai_addrlen = sizeof(*sin6);
- node->ai_addr = (struct sockaddr *)sin6;
- node->ai_ttl = (int)ttl;
+ sa = (struct sockaddr *)sin6;
+ salen = sizeof(*sin6);
+ } else {
+ return ARES_EFORMERR;
+ }
+
+ node = ares_append_addrinfo_node(nodes);
+ if (!node) {
+ ares_free(sa); /* LCOV_EXCL_LINE: OutOfMemory */
+ return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
}
+ node->ai_addr = sa;
+ node->ai_family = aftype;
+ node->ai_addrlen = salen;
+ node->ai_ttl = (int)ttl;
+
return ARES_SUCCESS;
}
diff --git a/deps/cares/src/lib/ares_close_sockets.c b/deps/cares/src/lib/ares_close_sockets.c
index 347f43e6fcd..7bb72c31ec1 100644
--- a/deps/cares/src/lib/ares_close_sockets.c
+++ b/deps/cares/src/lib/ares_close_sockets.c
@@ -112,11 +112,11 @@ void ares_check_cleanup_conns(const ares_channel_t *channel)
do_cleanup = ARES_TRUE;
}
- /* If the associated server has failures, close it out. Resetting the
- * connection (and specifically the source port number) can help resolve
- * situations where packets are being dropped.
+ /* If the connection has been retired for new queries, close it out once
+ * idle. Resetting the connection (and specifically the source port
+ * number) can help resolve situations where packets are being dropped.
*/
- if (conn->server->consec_failures > 0) {
+ if (conn->flags & ARES_CONN_FLAG_NONEW) {
do_cleanup = ARES_TRUE;
}
diff --git a/deps/cares/src/lib/ares_conn.h b/deps/cares/src/lib/ares_conn.h
index 16ecefdd19f..c332de14b13 100644
--- a/deps/cares/src/lib/ares_conn.h
+++ b/deps/cares/src/lib/ares_conn.h
@@ -43,7 +43,13 @@ typedef enum {
ARES_CONN_FLAG_TFO = 1 << 1,
/*! TCP Fast Open has not yet sent its first packet. Gets unset on first
* write to a connection */
- ARES_CONN_FLAG_TFO_INITIAL = 1 << 2
+ ARES_CONN_FLAG_TFO_INITIAL = 1 << 2,
+ /*! Connection has been retired: it must not be handed any NEW queries (e.g.
+ * it experienced a query timeout, suggesting packets are being dropped on
+ * it). Its in-flight queries continue to drain and it is cleaned up once
+ * idle. This is a per-connection signal so that a transient failure does
+ * not evict otherwise-healthy connections to the same server. */
+ ARES_CONN_FLAG_NONEW = 1 << 3
} ares_conn_flags_t;
typedef enum {
diff --git a/deps/cares/src/lib/ares_cookie.c b/deps/cares/src/lib/ares_cookie.c
index 509e12050e0..25960db6022 100644
--- a/deps/cares/src/lib/ares_cookie.c
+++ b/deps/cares/src/lib/ares_cookie.c
@@ -217,7 +217,7 @@ static const unsigned char *
static ares_bool_t timeval_is_set(const ares_timeval_t *tv)
{
- if (tv->sec != 0 && tv->usec != 0) {
+ if (tv->sec != 0 || tv->usec != 0) {
return ARES_TRUE;
}
return ARES_FALSE;
@@ -324,7 +324,7 @@ ares_status_t ares_cookie_apply(ares_dns_record_t *dnsrec, ares_conn_t *conn,
if (cookie->state == ARES_COOKIE_UNSUPPORTED) {
/* If timer hasn't expired, just delete any possible cookie and return */
if (!timeval_expired(&cookie->unsupported_ts, now,
- COOKIE_REGRESSION_TIMEOUT_MS)) {
+ COOKIE_UNSUPPORTED_TIMEOUT_MS)) {
ares_dns_rr_del_opt_byid(rr, ARES_RR_OPT_OPTIONS, ARES_OPT_PARAM_COOKIE);
return ARES_SUCCESS;
}
diff --git a/deps/cares/src/lib/ares_getaddrinfo.c b/deps/cares/src/lib/ares_getaddrinfo.c
index 6009de36a3d..6d9e21af4bb 100644
--- a/deps/cares/src/lib/ares_getaddrinfo.c
+++ b/deps/cares/src/lib/ares_getaddrinfo.c
@@ -242,6 +242,11 @@ static ares_bool_t fake_addrinfo(const char *name, unsigned short port,
ares_status_t status = ARES_SUCCESS;
ares_bool_t result = ARES_FALSE;
int family = hints->ai_family;
+
+ if (name == NULL) {
+ return ARES_FALSE; /* LCOV_EXCL_LINE: DefensiveCoding */
+ }
+
if (family == AF_INET || family == AF_INET6 || family == AF_UNSPEC) {
/* It only looks like an IP address if it's all numbers and dots. */
size_t numdots = 0;
@@ -268,6 +273,7 @@ static ares_bool_t fake_addrinfo(const char *name, unsigned short port,
if (result) {
status = ares_append_ai_node(AF_INET, port, 0, &addr4, &ai->nodes);
if (status != ARES_SUCCESS) {
+ ares_freeaddrinfo(ai);
callback(arg, (int)status, 0, NULL); /* LCOV_EXCL_LINE: OutOfMemory */
return ARES_TRUE; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -282,6 +288,7 @@ static ares_bool_t fake_addrinfo(const char *name, unsigned short port,
if (result) {
status = ares_append_ai_node(AF_INET6, port, 0, &addr6, &ai->nodes);
if (status != ARES_SUCCESS) {
+ ares_freeaddrinfo(ai);
callback(arg, (int)status, 0, NULL); /* LCOV_EXCL_LINE: OutOfMemory */
return ARES_TRUE; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -575,21 +582,55 @@ static void host_callback(void *arg, ares_status_t status, size_t timeouts,
/* at this point we keep on waiting for the next query to finish */
}
-static ares_bool_t numeric_service_to_port(const char *service,
- unsigned short *port)
+/* Per POSIX getaddrinfo(), when no node/hostname is provided the returned
+ * addresses are synthesized from the service: the wildcard address when
+ * ARES_AI_PASSIVE is set (suitable for bind()ing a listening socket),
+ * otherwise the loopback address (suitable for connect()ing to a peer on the
+ * local host). */
+static ares_status_t
+ ares_append_nulladdr(unsigned short port,
+ const struct ares_addrinfo_hints *hints,
+ struct ares_addrinfo *ai)
{
- char *end;
- unsigned long val;
+ int family = hints->ai_family;
+ ares_bool_t passive = ARES_FALSE;
+ ares_status_t status;
+ struct ares_addrinfo_node *node;
- errno = 0;
- val = strtoul(service, &end, 10);
+ if (hints->ai_flags & ARES_AI_PASSIVE) {
+ passive = ARES_TRUE;
+ }
- if (errno == 0 && *end == '\0' && val <= 65535) {
- *port = (unsigned short)val;
- return ARES_TRUE;
+ if (family == AF_INET6 || family == AF_UNSPEC) {
+ struct ares_in6_addr addr6;
+ memset(&addr6, 0, sizeof(addr6)); /* wildcard "::" */
+ if (!passive) {
+ ares_inet_pton(AF_INET6, "::1", &addr6);
+ }
+ status = ares_append_ai_node(AF_INET6, port, 0, &addr6, &ai->nodes);
+ if (status != ARES_SUCCESS) {
+ return status; /* LCOV_EXCL_LINE: OutOfMemory */
+ }
}
- return ARES_FALSE;
+ if (family == AF_INET || family == AF_UNSPEC) {
+ struct in_addr addr4;
+ memset(&addr4, 0, sizeof(addr4)); /* wildcard "0.0.0.0" */
+ if (!passive) {
+ ares_inet_pton(AF_INET, "127.0.0.1", &addr4);
+ }
+ status = ares_append_ai_node(AF_INET, port, 0, &addr4, &ai->nodes);
+ if (status != ARES_SUCCESS) {
+ return status; /* LCOV_EXCL_LINE: OutOfMemory */
+ }
+ }
+
+ for (node = ai->nodes; node != NULL; node = node->ai_next) {
+ node->ai_socktype = hints->ai_socktype;
+ node->ai_protocol = hints->ai_protocol;
+ }
+
+ return ARES_SUCCESS;
}
static void ares_getaddrinfo_int(ares_channel_t *channel, const char *name,
@@ -616,6 +657,13 @@ static void ares_getaddrinfo_int(ares_channel_t *channel, const char *name,
return;
}
+ /* POSIX getaddrinfo() requires that at least one of node (name) or service
+ * be provided. */
+ if (name == NULL && service == NULL) {
+ callback(arg, ARES_ENOTFOUND, 0, NULL);
+ return;
+ }
+
if (ares_is_onion_domain(name)) {
callback(arg, ARES_ENOTFOUND, 0, NULL);
return;
@@ -623,14 +671,14 @@ static void ares_getaddrinfo_int(ares_channel_t *channel, const char *name,
if (service) {
if (hints->ai_flags & ARES_AI_NUMERICSERV) {
- if (!numeric_service_to_port(service, &port)) {
+ if (!ares_parse_port(service, &port, ARES_TRUE)) {
callback(arg, ARES_ESERVICE, 0, NULL);
return;
}
} else {
port = lookup_service(service, 0);
if (!port) {
- if (!numeric_service_to_port(service, &port)) {
+ if (!ares_parse_port(service, &port, ARES_TRUE)) {
callback(arg, ARES_ESERVICE, 0, NULL);
return;
}
@@ -644,6 +692,19 @@ static void ares_getaddrinfo_int(ares_channel_t *channel, const char *name,
return;
}
+ /* No node/hostname was provided (service-only lookup): synthesize wildcard
+ * or loopback addresses from the resolved port instead of issuing a query. */
+ if (name == NULL) {
+ status = ares_append_nulladdr(port, hints, ai);
+ if (status != ARES_SUCCESS) {
+ ares_freeaddrinfo(ai); /* LCOV_EXCL_LINE: OutOfMemory */
+ callback(arg, (int)status, 0, NULL); /* LCOV_EXCL_LINE: OutOfMemory */
+ return; /* LCOV_EXCL_LINE: OutOfMemory */
+ }
+ callback(arg, ARES_SUCCESS, 0, ai);
+ return;
+ }
+
if (fake_addrinfo(name, port, hints, ai, callback, arg)) {
return;
}
diff --git a/deps/cares/src/lib/ares_gethostbyname.c b/deps/cares/src/lib/ares_gethostbyname.c
index d451b468511..640df74cfc3 100644
--- a/deps/cares/src/lib/ares_gethostbyname.c
+++ b/deps/cares/src/lib/ares_gethostbyname.c
@@ -102,6 +102,10 @@ void ares_gethostbyname(ares_channel_t *channel, const char *name, int family,
struct ares_addrinfo_hints hints;
struct host_query *ghbn_arg;
+ if (channel == NULL) {
+ return;
+ }
+
if (!callback) {
return;
}
diff --git a/deps/cares/src/lib/ares_hosts_file.c b/deps/cares/src/lib/ares_hosts_file.c
index c0fb80766a7..0c8aebaf6ba 100644
--- a/deps/cares/src/lib/ares_hosts_file.c
+++ b/deps/cares/src/lib/ares_hosts_file.c
@@ -674,6 +674,9 @@ static ares_status_t ares_hosts_path(const ares_channel_t *channel,
&dwLength);
ExpandEnvironmentStringsA(tmp, PATH_HOSTS, MAX_PATH);
RegCloseKey(hkeyHosts);
+ if (strlen(PATH_HOSTS)+strlen(WIN_PATH_HOSTS) >= MAX_PATH) {
+ return ARES_ENOTFOUND;
+ }
strcat(PATH_HOSTS, WIN_PATH_HOSTS);
#elif defined(WATT32)
const char *PATH_HOSTS = _w32_GetHostsFile();
diff --git a/deps/cares/src/lib/ares_init.c b/deps/cares/src/lib/ares_init.c
index dc094c4df6e..dc3c1e4f537 100644
--- a/deps/cares/src/lib/ares_init.c
+++ b/deps/cares/src/lib/ares_init.c
@@ -102,6 +102,20 @@ static int server_sort_cb(const void *data1, const void *data2)
if (s1->consec_failures > s2->consec_failures) {
return 1;
}
+
+ /* Among servers with the same failure count, prefer the one that failed
+ * least recently so that a server that went down long ago (and may have
+ * since recovered) is tried before one that just failed. This also keeps
+ * retries rotating across servers once the failure counts saturate at
+ * SERVER_CONSEC_FAILURES_CAP. Healthy servers all have a zeroed retry
+ * time and fall through to configuration order. */
+ if (s1->next_retry_time.sec != s2->next_retry_time.sec) {
+ return s1->next_retry_time.sec < s2->next_retry_time.sec ? -1 : 1;
+ }
+ if (s1->next_retry_time.usec != s2->next_retry_time.usec) {
+ return s1->next_retry_time.usec < s2->next_retry_time.usec ? -1 : 1;
+ }
+
if (s1->idx < s2->idx) {
return -1;
}
diff --git a/deps/cares/src/lib/ares_library_init.c b/deps/cares/src/lib/ares_library_init.c
index 2b91692baec..10c88de0095 100644
--- a/deps/cares/src/lib/ares_library_init.c
+++ b/deps/cares/src/lib/ares_library_init.c
@@ -105,6 +105,27 @@ void *ares_realloc_zero(void *ptr, size_t orig_size, size_t new_size)
return p;
}
+void *ares_malloc_zero_array(size_t num, size_t size)
+{
+ size_t total;
+ if (ares_size_t_mul_overflow(num, size, &total)) {
+ return NULL;
+ }
+ return ares_malloc_zero(total);
+}
+
+void *ares_realloc_zero_array(void *ptr, size_t orig_num, size_t new_num,
+ size_t size)
+{
+ size_t orig_total;
+ size_t new_total;
+ if (ares_size_t_mul_overflow(orig_num, size, &orig_total) ||
+ ares_size_t_mul_overflow(new_num, size, &new_total)) {
+ return NULL;
+ }
+ return ares_realloc_zero(ptr, orig_total, new_total);
+}
+
int ares_library_init(int flags)
{
if (ares_initialized) {
diff --git a/deps/cares/src/lib/ares_private.h b/deps/cares/src/lib/ares_private.h
index d6bd426d39c..04d4576ed20 100644
--- a/deps/cares/src/lib/ares_private.h
+++ b/deps/cares/src/lib/ares_private.h
@@ -131,6 +131,13 @@ W32_FUNC const char *_w32_GetHostsFile(void);
#define DEFAULT_SERVER_RETRY_CHANCE 10
#define DEFAULT_SERVER_RETRY_DELAY 5000
+/* Upper bound on the consecutive failure count tracked per server. Only the
+ * relative order of the counts is used for server selection, so magnitude
+ * beyond "clearly down" carries no additional signal. Capping it bounds how
+ * long a server that failed for an extended period sorts behind other failed
+ * servers once it comes back online. */
+#define SERVER_CONSEC_FAILURES_CAP 16
+
typedef void (*ares_query_enqueue_cb)(void *data);
struct ares_query;
@@ -418,6 +425,9 @@ ares_status_t ares_parse_sortlist(struct apattern **sortlist, size_t *nsort,
ares_status_t ares_lookup_hostaliases(const ares_channel_t *channel,
const char *name, char **alias);
+ares_bool_t ares_parse_port(const char *str, unsigned short *port,
+ ares_bool_t allow_zero);
+
ares_status_t ares_cat_domain(const char *name, const char *domain, char **s);
ares_status_t ares_sortaddrinfo(ares_channel_t *channel,
struct ares_addrinfo_node *ai_node);
@@ -539,10 +549,15 @@ void ares_gethostbyaddr_nolock(ares_channel_t *channel, const void *addr,
* ares_free()'d by the caller.
* \param[in] is_hostname if ARES_TRUE, will validate the character set for
* a valid hostname or will return error.
+ * \param[in] allow_compression if ARES_FALSE, a compression pointer
+ * encountered while parsing the name will be rejected
+ * with ARES_EBADNAME. Used for RR types (e.g. SRV)
+ * whose RDATA names must not use name compression.
* \return ARES_SUCCESS on success
*/
ares_status_t ares_dns_name_parse(ares_buf_t *buf, char **name,
- ares_bool_t is_hostname);
+ ares_bool_t is_hostname,
+ ares_bool_t allow_compression);
/*! Write the DNS name to the buffer in the DNS domain-name syntax as a
* series of labels. The maximum domain name length is 255 characters with
diff --git a/deps/cares/src/lib/ares_process.c b/deps/cares/src/lib/ares_process.c
index 9352968419e..b2316c4b333 100644
--- a/deps/cares/src/lib/ares_process.c
+++ b/deps/cares/src/lib/ares_process.c
@@ -45,7 +45,6 @@
#include
-static void timeadd(ares_timeval_t *now, size_t millisecs);
static ares_status_t process_write(ares_channel_t *channel,
ares_socket_t write_fd);
static ares_status_t process_read(ares_channel_t *channel,
@@ -66,6 +65,11 @@ static void end_query(ares_channel_t *channel, ares_server_t *server,
ares_query_t *query, ares_status_t status,
ares_dns_record_t *dnsrec,
ares_array_t **requeue);
+static ares_status_t ares_send_query_int(ares_server_t *requested_server,
+ ares_query_t *query,
+ const ares_timeval_t *now,
+ ares_array_t **requeue);
+static void ares_detach_query(ares_query_t *query);
static void ares_query_remove_from_conn(ares_query_t *query)
{
@@ -124,13 +128,22 @@ static void server_increment_failures(ares_server_t *server,
return; /* LCOV_EXCL_LINE: DefensiveCoding */
}
- server->consec_failures++;
- ares_slist_node_reinsert(node);
+ /* Cap the failure count. Only the relative order matters for server
+ * selection, and an uncapped count would require an unbounded number of
+ * failures on other servers before a server that failed during an
+ * extended outage could be selected again. */
+ if (server->consec_failures < SERVER_CONSEC_FAILURES_CAP) {
+ server->consec_failures++;
+ }
+ /* Must update the retry time before reinserting since the sort uses it to
+ * order servers with the same failure count */
ares_tvnow(&next_retry_time);
- timeadd(&next_retry_time, channel->server_retry_delay);
+ ares_timeval_add(&next_retry_time, channel->server_retry_delay);
server->next_retry_time = next_retry_time;
+ ares_slist_node_reinsert(node);
+
invoke_server_state_cb(server, ARES_FALSE,
used_tcp == ARES_TRUE ? ARES_SERV_STATE_TCP
: ARES_SERV_STATE_UDP);
@@ -148,12 +161,13 @@ static void server_set_good(ares_server_t *server, ares_bool_t used_tcp)
if (server->consec_failures > 0) {
server->consec_failures = 0;
+ /* Must update the retry time before reinserting since the sort uses it
+ * to order servers with the same failure count */
+ server->next_retry_time.sec = 0;
+ server->next_retry_time.usec = 0;
ares_slist_node_reinsert(node);
}
- server->next_retry_time.sec = 0;
- server->next_retry_time.usec = 0;
-
invoke_server_state_cb(server, ARES_TRUE,
used_tcp == ARES_TRUE ? ARES_SERV_STATE_TCP
: ARES_SERV_STATE_UDP);
@@ -178,18 +192,6 @@ ares_bool_t ares_timedout(const ares_timeval_t *now,
: ARES_FALSE;
}
-/* add the specific number of milliseconds to the time in the first argument */
-static void timeadd(ares_timeval_t *now, size_t millisecs)
-{
- now->sec += (ares_int64_t)millisecs / 1000;
- now->usec += (unsigned int)((millisecs % 1000) * 1000);
-
- if (now->usec >= 1000000) {
- now->sec += now->usec / 1000000;
- now->usec %= 1000000;
- }
-}
-
static ares_status_t ares_process_fds_nolock(ares_channel_t *channel,
const ares_fd_events_t *events,
size_t nevents, unsigned int flags)
@@ -445,12 +447,19 @@ void ares_process_pending_write(ares_channel_t *channel)
ares_channel_unlock(channel);
}
-static ares_status_t read_conn_packets(ares_conn_t *conn)
+static ares_status_t read_conn_packets(ares_conn_t *conn,
+ ares_bool_t *conn_error)
{
ares_bool_t read_again;
ares_conn_err_t err;
const ares_channel_t *channel = conn->server->channel;
+ if (conn_error == NULL) {
+ return ARES_EFORMERR;
+ }
+
+ *conn_error = ARES_FALSE;
+
do {
size_t count;
size_t len = 65535;
@@ -498,6 +507,18 @@ static ares_status_t read_conn_packets(ares_conn_t *conn)
/* If UDP, overwrite length */
if (!(conn->flags & ARES_CONN_FLAG_TCP)) {
+ /* The read buffer is grown in powers of two, so a single recvfrom() can
+ * return more than the 2-byte length prefix is able to represent. A
+ * datagram that large can't be a valid DNS message, and writing the
+ * truncated (unsigned short)count would desync the framing of everything
+ * buffered after it, so discard it. Standard UDP can't actually deliver
+ * a payload this large (max is 65507 IPv4 / 65527 IPv6); the only vector
+ * is IPv6 jumbograms (RFC 2675), which DNS never uses. This is purely
+ * defense-in-depth. */
+ if (count > 65535) {
+ ares_buf_set_length(conn->in_buf, start_len);
+ break;
+ }
len = ares_buf_len(conn->in_buf);
ares_buf_set_length(conn->in_buf, start_len);
ares_buf_append_be16(conn->in_buf, (unsigned short)count);
@@ -508,8 +529,15 @@ static ares_status_t read_conn_packets(ares_conn_t *conn)
} while (read_again);
if (err != ARES_CONN_ERR_SUCCESS && err != ARES_CONN_ERR_WOULDBLOCK) {
- handle_conn_error(conn, ARES_TRUE, ARES_ECONNREFUSED);
- return ARES_ECONNREFUSED;
+ /* If there is no packet data buffered, preserve the historical
+ * immediate connection-failure behavior so retries happen promptly.
+ * Only defer if there is buffered data to parse first. */
+ if (ares_buf_len(conn->in_buf) == 0) {
+ handle_conn_error(conn, ARES_TRUE, ARES_ECONNREFUSED);
+ return ARES_ECONNREFUSED;
+ }
+
+ *conn_error = ARES_TRUE;
}
return ARES_SUCCESS;
@@ -573,6 +601,79 @@ static ares_status_t ares_append_endqueue(ares_array_t **requeue,
dnsrec);
}
+/* Drain the deferred requeue/endqueue list iteratively. All flush sites
+ * (read_answers(), process_timeouts(), and ares_send_query()) funnel through
+ * here so that:
+ * 1. Retries are re-dispatched by appending to this same list and looping,
+ * rather than recursing ares_requeue_query() -> ares_send_query() until
+ * the stack is exhausted (issue #1043).
+ * 2. A query is fully detached from all lookup lists before its callback is
+ * invoked, so a reentrant ares_cancel() from within that callback cannot
+ * find and free the same query, which would otherwise double-free it
+ * (CVE-2026-33630 / GHSA-6wfj-rwm7-3542).
+ *
+ * On return the list has been fully processed, an empty-queue notification has
+ * been sent if appropriate, and *requeue has been destroyed and set to NULL. */
+static ares_status_t ares_flush_requeue(ares_channel_t *channel,
+ const ares_timeval_t *now,
+ ares_array_t **requeue)
+{
+ ares_status_t status = ARES_SUCCESS;
+
+ if (requeue == NULL) {
+ return status;
+ }
+
+ while (*requeue != NULL && ares_array_len(*requeue) > 0) {
+ ares_query_t *query;
+ ares_requeue_t entry;
+ ares_status_t internal_status;
+
+ internal_status = ares_array_claim_at(&entry, sizeof(entry), *requeue, 0);
+ if (internal_status != ARES_SUCCESS) {
+ break; /* LCOV_EXCL_LINE: DefensiveCoding */
+ }
+
+ query = ares_htable_szvp_get_direct(channel->queries_by_qid, entry.qid);
+
+ if (entry.type == REQUEUE_REQUEUE) {
+ /* Query disappeared (e.g. a prior callback in this drain cancelled it) */
+ if (query == NULL) {
+ continue;
+ }
+ /* Re-dispatch via the internal entrypoint so any further requeues are
+ * appended back onto this same list and drained by the loop above,
+ * rather than recursing. */
+ internal_status = ares_send_query_int(entry.server, query, now, requeue);
+ /* We only care about ARES_ENOMEM */
+ if (internal_status == ARES_ENOMEM) {
+ status = ARES_ENOMEM;
+ }
+ } else { /* REQUEUE_ENDQUERY */
+ if (query != NULL) {
+ /* Detach the query from all lookup lists BEFORE invoking the callback.
+ * Otherwise a reentrant ares_cancel() from within the callback would
+ * find this query still linked in all_queries/queries_by_qid, free it,
+ * and the ares_free_query() below would then double-free it. */
+ ares_detach_query(query);
+ query->callback(query->arg, entry.status, query->timeouts,
+ entry.dnsrec);
+ ares_free_query(query);
+ }
+ ares_dns_record_destroy(entry.dnsrec);
+ }
+ }
+
+ /* Don't forget to send notification if queue emptied */
+ if (*requeue != NULL) {
+ ares_queue_notify_empty(channel);
+ }
+ ares_array_destroy(*requeue);
+ *requeue = NULL;
+
+ return status;
+}
+
static ares_status_t read_answers(ares_conn_t *conn, const ares_timeval_t *now)
{
ares_status_t status;
@@ -625,43 +726,11 @@ static ares_status_t read_answers(ares_conn_t *conn, const ares_timeval_t *now)
}
cleanup:
-
- /* Flush requeue */
- while (ares_array_len(requeue) > 0) {
- ares_query_t *query;
- ares_requeue_t entry;
- ares_status_t internal_status;
-
- internal_status = ares_array_claim_at(&entry, sizeof(entry), requeue, 0);
- if (internal_status != ARES_SUCCESS) {
- break;
- }
-
- query = ares_htable_szvp_get_direct(channel->queries_by_qid, entry.qid);
-
- if (entry.type == REQUEUE_REQUEUE) {
- /* query disappeared */
- if (query == NULL) {
- continue;
- }
- internal_status = ares_send_query(entry.server, query, now);
- /* We only care about ARES_ENOMEM */
- if (internal_status == ARES_ENOMEM) {
- status = ARES_ENOMEM;
- }
- } else { /* REQUEUE_ENDQUERY */
- if (query != NULL) {
- query->callback(query->arg, entry.status, query->timeouts, entry.dnsrec);
- ares_free_query(query);
- }
- ares_dns_record_destroy(entry.dnsrec);
- }
- }
- /* Don't forget to send notification if queue emptied */
- if (requeue != NULL) {
- ares_queue_notify_empty(channel);
+ /* Flush requeue - re-dispatch retries and invoke deferred callbacks
+ * iteratively and safely */
+ if (ares_flush_requeue(channel, now, &requeue) == ARES_ENOMEM) {
+ status = ARES_ENOMEM;
}
- ares_array_destroy(requeue);
return status;
}
@@ -671,24 +740,32 @@ static ares_status_t process_read(ares_channel_t *channel,
const ares_timeval_t *now)
{
ares_conn_t *conn = ares_conn_from_fd(channel, read_fd);
+ ares_bool_t conn_error;
ares_status_t status;
if (conn == NULL) {
return ARES_SUCCESS;
}
- /* TODO: There might be a potential issue here where there was a read that
- * read some data, then looped and read again and got a disconnect.
- * Right now, that would cause a resend instead of processing the data
- * we have. This is fairly unlikely to occur due to only looping if
- * a full buffer of 65535 bytes was read. */
- status = read_conn_packets(conn);
+ status = read_conn_packets(conn, &conn_error);
if (status != ARES_SUCCESS) {
return status;
}
- return read_answers(conn, now);
+ status = read_answers(conn, now);
+ if (status != ARES_SUCCESS) {
+ return status;
+ }
+
+ if (conn_error) {
+ conn = ares_conn_from_fd(channel, read_fd);
+ if (conn != NULL) {
+ handle_conn_error(conn, ARES_TRUE, ARES_ECONNREFUSED);
+ }
+ }
+
+ return ARES_SUCCESS;
}
/* If any queries have timed out, note the timeout and move them on. */
@@ -696,7 +773,8 @@ static ares_status_t process_timeouts(ares_channel_t *channel,
const ares_timeval_t *now)
{
ares_slist_node_t *node;
- ares_status_t status = ARES_SUCCESS;
+ ares_status_t status = ARES_SUCCESS;
+ ares_array_t *requeue = NULL;
/* Just keep popping off the first as this list will re-sort as things come
* and go. We don't want to try to rely on 'next' as some operation might
@@ -714,14 +792,26 @@ static ares_status_t process_timeouts(ares_channel_t *channel,
query->timeouts++;
conn = query->conn;
+ /* Retire this connection for NEW queries. A timeout suggests packets are
+ * being dropped on it, so route new queries to a fresh source port while
+ * the in-flight queries here drain (it is cleaned up once idle). This is
+ * per-connection so a transient failure doesn't stop reuse of healthy
+ * connections to the same server. */
+ conn->flags |= ARES_CONN_FLAG_NONEW;
server_increment_failures(conn->server, query->using_tcp);
- status = ares_requeue_query(query, now, ARES_ETIMEOUT, ARES_TRUE, NULL,
- NULL);
+ status =
+ ares_requeue_query(query, now, ARES_ETIMEOUT, ARES_TRUE, NULL, &requeue);
if (status == ARES_ENOMEM) {
goto done;
}
}
done:
+ /* Flush requeue - re-dispatch retries and invoke deferred callbacks
+ * iteratively and safely */
+ if (ares_flush_requeue(channel, now, &requeue) == ARES_ENOMEM) {
+ status = ARES_ENOMEM;
+ }
+
if (status == ARES_ENOMEM) {
return ARES_ENOMEM;
}
@@ -871,7 +961,7 @@ static ares_status_t process_answer(ares_channel_t *channel,
if (issue_might_be_edns(query->query, rdnsrec)) {
status = rewrite_without_edns(query);
if (status != ARES_SUCCESS) {
- end_query(channel, server, query, status, NULL, NULL);
+ end_query(channel, server, query, status, NULL, requeue);
goto cleanup;
}
@@ -975,6 +1065,11 @@ ares_status_t ares_requeue_query(ares_query_t *query, const ares_timeval_t *now,
{
ares_channel_t *channel = query->channel;
size_t max_tries = ares_slist_len(channel->servers) * channel->tries;
+ ares_server_t *server = NULL;
+
+ if (query->conn != NULL) {
+ server = query->conn->server;
+ }
ares_query_remove_from_conn(query);
@@ -999,7 +1094,7 @@ ares_status_t ares_requeue_query(ares_query_t *query, const ares_timeval_t *now,
query->error_status = ARES_ETIMEOUT;
}
- end_query(channel, NULL, query, query->error_status, dnsrec, requeue);
+ end_query(channel, server, query, query->error_status, dnsrec, requeue);
return ARES_ETIMEOUT;
}
@@ -1102,22 +1197,23 @@ static void ares_probe_failed_server(ares_channel_t *channel,
}
/* Select the first server with failures to retry that has passed the retry
- * timeout and doesn't already have a pending probe */
+ * timeout and doesn't already have a pending probe. Skip the server the
+ * triggering query was just sent to since that query is already exercising
+ * it. */
ares_tvnow(&now);
for (node = ares_slist_node_first(channel->servers); node != NULL;
node = ares_slist_node_next(node)) {
ares_server_t *node_val = ares_slist_node_val(node);
- if (node_val != NULL && node_val->consec_failures > 0 &&
- !node_val->probe_pending &&
+ if (node_val != NULL && node_val != server &&
+ node_val->consec_failures > 0 && !node_val->probe_pending &&
ares_timedout(&now, &node_val->next_retry_time)) {
probe_server = node_val;
break;
}
}
- /* Either nothing to probe or the query was enqueud to the same server
- * we were going to probe. Do nothing. */
- if (probe_server == NULL || server == probe_server) {
+ /* Nothing to probe */
+ if (probe_server == NULL) {
return;
}
@@ -1148,7 +1244,12 @@ static size_t ares_calc_query_timeout(const ares_query_t *query,
* retry from the last retry */
rounds = (query->try_count / num_servers);
if (rounds > 0) {
- timeplus <<= rounds;
+ if (rounds >= sizeof(timeplus) * CHAR_BIT ||
+ timeplus > (SIZE_MAX >> rounds)) {
+ timeplus = SIZE_MAX;
+ } else {
+ timeplus <<= rounds;
+ }
}
if (channel->maxtimeout && timeplus > channel->maxtimeout) {
@@ -1205,9 +1306,13 @@ static ares_conn_t *ares_fetch_connection(const ares_channel_t *channel,
return NULL;
}
- /* If the associated server has failures, don't use it. It should be cleaned
- * up later. */
- if (conn->server->consec_failures > 0) {
+ /* Don't hand new queries to a connection that has been retired (e.g. it saw
+ * a timeout). It keeps servicing its in-flight queries and is cleaned up
+ * once idle. Note this is a per-connection check: a server-wide failure
+ * counter must not be used here or a single transient failure would evict
+ * every (including healthy) connection to the server and spawn a new socket
+ * per query. */
+ if (conn->flags & ARES_CONN_FLAG_NONEW) {
return NULL;
}
@@ -1262,8 +1367,44 @@ static ares_status_t ares_conn_query_write(ares_conn_t *conn,
return ares_conn_flush(conn);
}
+/* Public entrypoint. Establishes a requeue list and drives
+ * ares_send_query_int() plus any retries/deferred callbacks it produces
+ * iteratively, so a chain of retryable failures can never recurse until the
+ * stack is exhausted (#1043). */
ares_status_t ares_send_query(ares_server_t *requested_server,
ares_query_t *query, const ares_timeval_t *now)
+{
+ ares_channel_t *channel = query->channel;
+ ares_array_t *requeue = NULL;
+ unsigned short qid = query->qid;
+ ares_status_t status;
+
+ status = ares_send_query_int(requested_server, query, now, &requeue);
+
+ /* Drain any retries/deferred callbacks this send produced.
+ * ares_flush_requeue() always fully processes and destroys the list (even on
+ * ENOMEM), and sends the empty-queue notification if needed. */
+ if (ares_flush_requeue(channel, now, &requeue) == ARES_ENOMEM) {
+ status = ARES_ENOMEM;
+ }
+
+ /* A retry may have been deferred (returning ARES_SUCCESS from the append)
+ * and then terminally failed while draining, in which case the query has
+ * been freed. Do not dereference 'query' here. If it is no longer tracked
+ * it ended, so don't report success to the caller (which would, e.g., cause
+ * ares_send_nolock() to write to a now-freed *qid). */
+ if (status == ARES_SUCCESS &&
+ ares_htable_szvp_get_direct(channel->queries_by_qid, qid) == NULL) {
+ status = ARES_ETIMEOUT;
+ }
+
+ return status;
+}
+
+static ares_status_t ares_send_query_int(ares_server_t *requested_server,
+ ares_query_t *query,
+ const ares_timeval_t *now,
+ ares_array_t **requeue)
{
ares_channel_t *channel = query->channel;
ares_server_t *server;
@@ -1286,14 +1427,16 @@ ares_status_t ares_send_query(ares_server_t *requested_server,
}
if (server == NULL) {
- end_query(channel, server, query, ARES_ENOSERVER /* ? */, NULL, NULL);
+ end_query(channel, server, query, ARES_ENOSERVER /* ? */, NULL, requeue);
return ARES_ENOSERVER;
}
- /* If a query is directed to a specific query, or the server chosen has
- * failures, or the query is being retried, don't probe for downed servers */
- if (requested_server != NULL || server->consec_failures > 0 ||
- query->try_count != 0) {
+ /* If a query is directed to a specific server, or the query is being
+ * retried, don't probe for downed servers. Note that the chosen server
+ * having failures itself does NOT disable probing: when every server has
+ * failures (e.g. during an extended outage), probes are the only way a
+ * recovered server that sorts behind the current best can be noticed. */
+ if (requested_server != NULL || query->try_count != 0) {
probe_downed_server = ARES_FALSE;
}
@@ -1310,11 +1453,11 @@ ares_status_t ares_send_query(ares_server_t *requested_server,
case ARES_ECONNREFUSED:
case ARES_EBADFAMILY:
server_increment_failures(server, query->using_tcp);
- return ares_requeue_query(query, now, status, ARES_TRUE, NULL, NULL);
+ return ares_requeue_query(query, now, status, ARES_TRUE, NULL, requeue);
/* Anything else is not retryable, likely ENOMEM */
default:
- end_query(channel, server, query, status, NULL, NULL);
+ end_query(channel, server, query, status, NULL, requeue);
return status;
}
}
@@ -1328,7 +1471,7 @@ ares_status_t ares_send_query(ares_server_t *requested_server,
case ARES_ENOMEM:
/* Not retryable */
- end_query(channel, server, query, status, NULL, NULL);
+ end_query(channel, server, query, status, NULL, requeue);
return status;
/* These conditions are retryable as they are server-specific
@@ -1336,7 +1479,7 @@ ares_status_t ares_send_query(ares_server_t *requested_server,
case ARES_ECONNREFUSED:
case ARES_EBADFAMILY:
handle_conn_error(conn, ARES_TRUE, status);
- status = ares_requeue_query(query, now, status, ARES_TRUE, NULL, NULL);
+ status = ares_requeue_query(query, now, status, ARES_TRUE, NULL, requeue);
if (status == ARES_ETIMEOUT) {
status = ARES_ECONNREFUSED;
}
@@ -1344,7 +1487,7 @@ ares_status_t ares_send_query(ares_server_t *requested_server,
default:
server_increment_failures(server, query->using_tcp);
- status = ares_requeue_query(query, now, status, ARES_TRUE, NULL, NULL);
+ status = ares_requeue_query(query, now, status, ARES_TRUE, NULL, requeue);
return status;
}
@@ -1355,12 +1498,12 @@ ares_status_t ares_send_query(ares_server_t *requested_server,
ares_slist_node_destroy(query->node_queries_by_timeout);
query->ts = *now;
query->timeout = *now;
- timeadd(&query->timeout, timeplus);
+ ares_timeval_add(&query->timeout, timeplus);
query->node_queries_by_timeout =
ares_slist_insert(channel->queries_by_timeout, query);
if (!query->node_queries_by_timeout) {
/* LCOV_EXCL_START: OutOfMemory */
- end_query(channel, server, query, ARES_ENOMEM, NULL, NULL);
+ end_query(channel, server, query, ARES_ENOMEM, NULL, requeue);
return ARES_ENOMEM;
/* LCOV_EXCL_STOP */
}
@@ -1373,7 +1516,7 @@ ares_status_t ares_send_query(ares_server_t *requested_server,
if (query->node_queries_to_conn == NULL) {
/* LCOV_EXCL_START: OutOfMemory */
- end_query(channel, server, query, ARES_ENOMEM, NULL, NULL);
+ end_query(channel, server, query, ARES_ENOMEM, NULL, requeue);
return ARES_ENOMEM;
/* LCOV_EXCL_STOP */
}
diff --git a/deps/cares/src/lib/ares_qcache.c b/deps/cares/src/lib/ares_qcache.c
index 4050ff54bf1..ad3bc83505a 100644
--- a/deps/cares/src/lib/ares_qcache.c
+++ b/deps/cares/src/lib/ares_qcache.c
@@ -371,9 +371,11 @@ static ares_status_t ares_qcache_insert_int(ares_qcache_t *qcache,
/* LCOV_EXCL_START: OutOfMemory */
fail:
- if (entry != NULL && entry->key != NULL) {
- ares_htable_strvp_remove(qcache->cache, entry->key);
- ares_free(entry->key);
+ if (entry != NULL) {
+ if (entry->key != NULL) {
+ ares_htable_strvp_remove(qcache->cache, entry->key);
+ ares_free(entry->key);
+ }
ares_free(entry);
}
return ARES_ENOMEM;
diff --git a/deps/cares/src/lib/ares_socket.c b/deps/cares/src/lib/ares_socket.c
index 516852a84ab..4ad3034021a 100644
--- a/deps/cares/src/lib/ares_socket.c
+++ b/deps/cares/src/lib/ares_socket.c
@@ -188,6 +188,8 @@ ares_conn_err_t ares_socket_recvfrom(ares_channel_t *channel, ares_socket_t s,
{
ares_ssize_t rv;
+ *read_bytes = 0;
+
rv = channel->sock_funcs.arecvfrom(s, data, data_len, flags, from, from_len,
channel->sock_func_cb_data);
diff --git a/deps/cares/src/lib/ares_sysconfig.c b/deps/cares/src/lib/ares_sysconfig.c
index 286db60328f..9e389c17672 100644
--- a/deps/cares/src/lib/ares_sysconfig.c
+++ b/deps/cares/src/lib/ares_sysconfig.c
@@ -218,13 +218,16 @@ static ares_status_t ares_init_sysconfig_android(const ares_channel_t *channel,
status = ares_sconfig_append_fromstr(channel, &sysconfig->sconfig,
dns_servers[i], ARES_TRUE);
if (status != ARES_SUCCESS) {
- return status;
+ break;
}
}
for (i = 0; i < num_servers; i++) {
ares_free(dns_servers[i]);
}
ares_free(dns_servers);
+ if (status != ARES_SUCCESS) {
+ return status;
+ }
}
domains = ares_get_android_search_domains_list();
@@ -273,7 +276,7 @@ static ares_status_t
* 3. if confstr(_CS_DOMAIN, ...) this is the domain name. Use this as
* preference over anything else found.
*/
- ares_buf_t *buf = ares_buf_create();
+ ares_buf_t *buf = NULL;
unsigned char *data = NULL;
size_t data_size = 0;
ares_bool_t process_resolvconf = ARES_TRUE;
@@ -330,7 +333,7 @@ static ares_status_t
char domain[256];
size_t domain_len;
- domain_len = confstr(_CS_DOMAIN, domain, sizeof(domain_len));
+ domain_len = confstr(_CS_DOMAIN, domain, sizeof(domain));
if (domain_len != 0) {
ares_strsplit_free(sysconfig->domains, sysconfig->ndomains);
sysconfig->domains = ares_strsplit(domain, ", ", &sysconfig->ndomains);
diff --git a/deps/cares/src/lib/ares_sysconfig_files.c b/deps/cares/src/lib/ares_sysconfig_files.c
index a6c2a8e62bb..2caa3b20007 100644
--- a/deps/cares/src/lib/ares_sysconfig_files.c
+++ b/deps/cares/src/lib/ares_sysconfig_files.c
@@ -27,6 +27,8 @@
#include "ares_private.h"
+#include
+
#ifdef HAVE_SYS_PARAM_H
# include
#endif
@@ -170,8 +172,8 @@ static ares_status_t parse_sort(ares_buf_t *buf, struct apattern *pat)
if (ares_str_isnum(maskstr)) {
/* Numeric mask */
- int mask = atoi(maskstr);
- if (mask < 0 || mask > 128) {
+ unsigned int mask;
+ if (!ares_str_parse_uint(maskstr, 128, &mask)) {
return ARES_EBADSTR;
}
if (pat->addr.family == AF_INET && mask > 32) {
@@ -340,12 +342,17 @@ static ares_status_t config_lookup(ares_sysconfig_t *sysconfig, ares_buf_t *buf,
const char *value = lookups[i];
char ch;
+ /* AIX /etc/netsvc.conf uses address-family-suffixed tokens such as
+ * "bind4"/"bind6" and "local4"/"local6" in addition to the bare forms. */
if (ares_strcaseeq(value, "dns") || ares_strcaseeq(value, "bind") ||
+ ares_strcaseeq(value, "bind4") || ares_strcaseeq(value, "bind6") ||
ares_strcaseeq(value, "resolv") || ares_strcaseeq(value, "resolve")) {
ch = 'b';
} else if (ares_strcaseeq(value, "files") ||
ares_strcaseeq(value, "file") ||
- ares_strcaseeq(value, "local")) {
+ ares_strcaseeq(value, "local") ||
+ ares_strcaseeq(value, "local4") ||
+ ares_strcaseeq(value, "local6")) {
ch = 'f';
} else {
continue;
@@ -401,20 +408,25 @@ static ares_status_t process_option(ares_sysconfig_t *sysconfig,
key = kv[0];
if (num == 2) {
- val = kv[1];
- valint = (unsigned int)strtoul(val, NULL, 10);
+ val = kv[1];
+ if (!ares_str_parse_uint(val, UINT_MAX, &valint)) {
+ status = ARES_EBADSTR;
+ goto done;
+ }
}
if (ares_streq(key, "ndots")) {
sysconfig->ndots = valint;
} else if (ares_streq(key, "retrans") || ares_streq(key, "timeout")) {
if (valint == 0) {
- return ARES_EFORMERR;
+ status = ARES_EFORMERR;
+ goto done;
}
sysconfig->timeout_ms = valint * 1000;
} else if (ares_streq(key, "retry") || ares_streq(key, "attempts")) {
if (valint == 0) {
- return ARES_EFORMERR;
+ status = ARES_EFORMERR;
+ goto done;
}
sysconfig->tries = valint;
} else if (ares_streq(key, "rotate")) {
diff --git a/deps/cares/src/lib/ares_sysconfig_win.c b/deps/cares/src/lib/ares_sysconfig_win.c
index 35f4bd8e72a..e0daf1103e2 100644
--- a/deps/cares/src/lib/ares_sysconfig_win.c
+++ b/deps/cares/src/lib/ares_sysconfig_win.c
@@ -106,7 +106,7 @@ static ares_bool_t get_REG_SZ(HKEY hKey, const WCHAR *leafKeyName, char **outptr
/* Get the value for real */
res = RegQueryValueExW(hKey, leafKeyName, 0, NULL, (BYTE *)val, &size);
- if (res != ERROR_SUCCESS || size == 1) {
+ if (res != ERROR_SUCCESS || size == sizeof(WCHAR)) {
ares_free(val);
return ARES_FALSE;
}
@@ -114,56 +114,69 @@ static ares_bool_t get_REG_SZ(HKEY hKey, const WCHAR *leafKeyName, char **outptr
/* Convert to UTF8 */
len = WideCharToMultiByte(CP_UTF8, 0, val, -1, NULL, 0, NULL, NULL);
if (len == 0) {
+ ares_free(val);
return ARES_FALSE;
}
*outptr = ares_malloc_zero((size_t)len + 1);
+ if (*outptr == NULL) {
+ ares_free(val);
+ return ARES_FALSE;
+ }
if (WideCharToMultiByte(CP_UTF8, 0, val, -1, *outptr, len, NULL, NULL)
== 0) {
ares_free(*outptr);
*outptr = NULL;
+ ares_free(val);
return ARES_FALSE;
}
+ ares_free(val);
return ARES_TRUE;
}
-static void commanjoin(char **dst, const char * const src, const size_t len)
+static ares_status_t sysconfig_commajoin(ares_buf_t *buf, const char *src,
+ ares_bool_t asciionly)
{
- char *newbuf;
- size_t newsize;
+ ares_status_t status;
- /* 1 for terminating 0 and 2 for , and terminating 0 */
- newsize = len + (*dst ? (ares_strlen(*dst) + 2) : 1);
- newbuf = ares_realloc(*dst, newsize);
- if (!newbuf) {
- return;
+ if (buf == NULL) {
+ return ARES_ENOMEM;
}
- if (*dst == NULL) {
- *newbuf = '\0';
+
+ if (src == NULL || *src == '\0') {
+ return ARES_SUCCESS;
}
- *dst = newbuf;
- if (ares_strlen(*dst) != 0) {
- strcat(*dst, ",");
+
+ if (asciionly && !ares_str_isprint(src, ares_strlen(src))) {
+ return ARES_SUCCESS;
}
- strncat(*dst, src, len);
-}
-/*
- * commajoin()
- *
- * RTF code.
- */
-static void commajoin(char **dst, const char *src)
-{
- commanjoin(dst, src, ares_strlen(src));
+ if (ares_buf_len(buf) > 0) {
+ status = ares_buf_append_byte(buf, ',');
+ if (status != ARES_SUCCESS) {
+ return status;
+ }
+ }
+
+ return ares_buf_append_str(buf, src);
}
-static void commajoin_asciionly(char **dst, const char *src)
+/* Read a REG_SZ value and comma-append it (ASCII-only) to *buf.
+ * On allocation failure, destroys *buf and sets it to NULL. */
+static void reg_commajoin(ares_buf_t **buf, HKEY key, const WCHAR *leaf)
{
- if (!ares_str_isprint(src, ares_strlen(src))) {
+ char *p = NULL;
+
+ if (*buf == NULL || !get_REG_SZ(key, leaf, &p)) {
return;
}
- commanjoin(dst, src, ares_strlen(src));
+
+ if (sysconfig_commajoin(*buf, p, ARES_TRUE) != ARES_SUCCESS) {
+ ares_buf_destroy(*buf);
+ *buf = NULL;
+ }
+
+ ares_free(p);
}
/* A structure to hold the string form of IPv4 and IPv6 addresses so we can
@@ -494,8 +507,10 @@ static ares_bool_t get_DNS_Windows(char **outptr)
/* Join them all into a single string, removing duplicates. */
{
- size_t i;
- for (i = 0; i < addressesIndex; ++i) {
+ size_t i;
+ ares_buf_t *buf = ares_buf_create();
+
+ for (i = 0; buf != NULL && i < addressesIndex; ++i) {
size_t j;
/* Look for this address text appearing previously in the results. */
for (j = 0; j < i; ++j) {
@@ -505,10 +520,22 @@ static ares_bool_t get_DNS_Windows(char **outptr)
}
/* Iff we didn't emit this address already, emit it now. */
if (j == i) {
- /* Add that to outptr (if we can). */
- commajoin(outptr, addresses[i].text);
+ /* Add that to buf (if we can). */
+ if (sysconfig_commajoin(buf, addresses[i].text, ARES_FALSE) !=
+ ARES_SUCCESS) {
+ ares_buf_destroy(buf);
+ buf = NULL;
+ break;
+ }
}
}
+
+ if (buf != NULL && ares_buf_len(buf) == 0) {
+ ares_buf_destroy(buf);
+ buf = NULL;
+ }
+
+ *outptr = ares_buf_finish_str(buf, NULL);
}
done:
@@ -540,51 +567,46 @@ static ares_bool_t get_DNS_Windows(char **outptr)
*/
static ares_bool_t get_SuffixList_Windows(char **outptr)
{
- HKEY hKey;
- HKEY hKeyEnum;
- char keyName[256];
- DWORD keyNameBuffSize;
- DWORD keyIdx = 0;
- char *p = NULL;
+ HKEY hKey;
+ HKEY hKeyEnum;
+ char keyName[256];
+ DWORD keyNameBuffSize;
+ DWORD keyIdx = 0;
+ ares_buf_t *buf = ares_buf_create();
*outptr = NULL;
+ if (buf == NULL) {
+ return ARES_FALSE;
+ }
+
/* 1. Global DNS Suffix Search List */
if (RegOpenKeyExA(HKEY_LOCAL_MACHINE, WIN_NS_NT_KEY, 0, KEY_READ, &hKey) ==
ERROR_SUCCESS) {
- get_REG_SZ(hKey, SEARCHLIST_KEY, outptr);
- if (get_REG_SZ(hKey, DOMAIN_KEY, &p)) {
- commajoin_asciionly(outptr, p);
- ares_free(p);
- p = NULL;
- }
+ reg_commajoin(&buf, hKey, SEARCHLIST_KEY);
+ reg_commajoin(&buf, hKey, DOMAIN_KEY);
RegCloseKey(hKey);
}
- if (RegOpenKeyExA(HKEY_LOCAL_MACHINE, WIN_NT_DNSCLIENT, 0, KEY_READ, &hKey) ==
- ERROR_SUCCESS) {
- if (get_REG_SZ(hKey, SEARCHLIST_KEY, &p)) {
- commajoin_asciionly(outptr, p);
- ares_free(p);
- p = NULL;
- }
+ if (buf != NULL &&
+ RegOpenKeyExA(HKEY_LOCAL_MACHINE, WIN_NT_DNSCLIENT, 0, KEY_READ, &hKey) ==
+ ERROR_SUCCESS) {
+ reg_commajoin(&buf, hKey, SEARCHLIST_KEY);
RegCloseKey(hKey);
}
/* 2. Connection Specific Search List composed of:
* a. Primary DNS Suffix */
- if (RegOpenKeyExA(HKEY_LOCAL_MACHINE, WIN_DNSCLIENT, 0, KEY_READ, &hKey) ==
- ERROR_SUCCESS) {
- if (get_REG_SZ(hKey, PRIMARYDNSSUFFIX_KEY, &p)) {
- commajoin_asciionly(outptr, p);
- ares_free(p);
- p = NULL;
- }
+ if (buf != NULL &&
+ RegOpenKeyExA(HKEY_LOCAL_MACHINE, WIN_DNSCLIENT, 0, KEY_READ, &hKey) ==
+ ERROR_SUCCESS) {
+ reg_commajoin(&buf, hKey, PRIMARYDNSSUFFIX_KEY);
RegCloseKey(hKey);
}
/* b. Interface SearchList, Domain, DhcpDomain */
- if (RegOpenKeyExA(HKEY_LOCAL_MACHINE, WIN_NS_NT_KEY "\\" INTERFACES_KEY, 0,
+ if (buf != NULL &&
+ RegOpenKeyExA(HKEY_LOCAL_MACHINE, WIN_NS_NT_KEY "\\" INTERFACES_KEY, 0,
KEY_READ, &hKey) == ERROR_SUCCESS) {
for (;;) {
keyNameBuffSize = sizeof(keyName);
@@ -596,27 +618,26 @@ static ares_bool_t get_SuffixList_Windows(char **outptr)
ERROR_SUCCESS) {
continue;
}
- /* p can be comma separated (SearchList) */
- if (get_REG_SZ(hKeyEnum, SEARCHLIST_KEY, &p)) {
- commajoin_asciionly(outptr, p);
- ares_free(p);
- p = NULL;
- }
- if (get_REG_SZ(hKeyEnum, DOMAIN_KEY, &p)) {
- commajoin_asciionly(outptr, p);
- ares_free(p);
- p = NULL;
- }
- if (get_REG_SZ(hKeyEnum, DHCPDOMAIN_KEY, &p)) {
- commajoin_asciionly(outptr, p);
- ares_free(p);
- p = NULL;
- }
+ /* SearchList can be comma separated */
+ reg_commajoin(&buf, hKeyEnum, SEARCHLIST_KEY);
+ reg_commajoin(&buf, hKeyEnum, DOMAIN_KEY);
+ reg_commajoin(&buf, hKeyEnum, DHCPDOMAIN_KEY);
RegCloseKey(hKeyEnum);
+
+ if (buf == NULL) {
+ break;
+ }
}
RegCloseKey(hKey);
}
+ if (ares_buf_len(buf) == 0) {
+ ares_buf_destroy(buf);
+ buf = NULL;
+ }
+
+ *outptr = ares_buf_finish_str(buf, NULL);
+
return *outptr != NULL ? ARES_TRUE : ARES_FALSE;
}
diff --git a/deps/cares/src/lib/ares_timeout.c b/deps/cares/src/lib/ares_timeout.c
index 0d2fdcff21f..dbd5cf443d6 100644
--- a/deps/cares/src/lib/ares_timeout.c
+++ b/deps/cares/src/lib/ares_timeout.c
@@ -32,6 +32,17 @@
#endif
+void ares_timeval_add(ares_timeval_t *now, size_t millisecs)
+{
+ now->sec += (ares_int64_t)millisecs / 1000;
+ now->usec += (unsigned int)((millisecs % 1000) * 1000);
+
+ if (now->usec >= 1000000) {
+ now->sec += now->usec / 1000000;
+ now->usec %= 1000000;
+ }
+}
+
void ares_timeval_remaining(ares_timeval_t *remaining,
const ares_timeval_t *now,
const ares_timeval_t *tout)
diff --git a/deps/cares/src/lib/ares_update_servers.c b/deps/cares/src/lib/ares_update_servers.c
index 70a9381499f..f8d441accf2 100644
--- a/deps/cares/src/lib/ares_update_servers.c
+++ b/deps/cares/src/lib/ares_update_servers.c
@@ -27,6 +27,8 @@
*/
#include "ares_private.h"
+#include
+
#ifdef HAVE_ARPA_INET_H
# include
#endif
@@ -234,7 +236,10 @@ static ares_status_t parse_nameserver_uri(ares_buf_t *buf,
sconfig->tcp_port = sconfig->udp_port;
port = ares_uri_get_query_key(uri, "tcpport");
if (port != NULL) {
- sconfig->tcp_port = (unsigned short)atoi(port);
+ if (!ares_parse_port(port, &sconfig->tcp_port, ARES_TRUE)) {
+ status = ARES_EBADSTR;
+ goto done;
+ }
}
done:
@@ -352,7 +357,9 @@ static ares_status_t parse_nameserver(ares_buf_t *buf, ares_sconfig_t *sconfig)
return status;
}
- sconfig->udp_port = (unsigned short)atoi(portstr);
+ if (!ares_parse_port(portstr, &sconfig->udp_port, ARES_TRUE)) {
+ return ARES_EBADSTR;
+ }
sconfig->tcp_port = sconfig->udp_port;
}
@@ -398,7 +405,13 @@ static ares_status_t ares_sconfig_linklocal(const ares_channel_t *channel,
if (ares_str_isnum(ll_iface)) {
char ifname[IF_NAMESIZE] = "";
- ll_scope = (unsigned int)atoi(ll_iface);
+
+ /* The interface identifier is all digits but may not fit in an
+ * unsigned int; parse with the range-checked helper rather than atoi(),
+ * whose behavior on overflow is undefined. */
+ if (!ares_str_parse_uint(ll_iface, UINT_MAX, &ll_scope)) {
+ return ARES_ENOTFOUND;
+ }
if (channel->sock_funcs.aif_indextoname == NULL ||
channel->sock_funcs.aif_indextoname(ll_scope, ifname, sizeof(ifname),
channel->sock_func_cb_data) ==
@@ -967,7 +980,8 @@ ares_status_t ares_in_addr_to_sconfig_llist(const struct in_addr *servers,
sizeof(sconfig->addr.addr.addr4));
if (ares_llist_insert_last(s, sconfig) == NULL) {
- goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
+ ares_free(sconfig); /* LCOV_EXCL_LINE: OutOfMemory */
+ goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
}
}
diff --git a/deps/cares/src/lib/dsa/ares_array.c b/deps/cares/src/lib/dsa/ares_array.c
index c421d5c5f67..e6bce6e41db 100644
--- a/deps/cares/src/lib/dsa/ares_array.c
+++ b/deps/cares/src/lib/dsa/ares_array.c
@@ -171,14 +171,19 @@ void *ares_array_finish(ares_array_t *arr, size_t *num_members)
ares_status_t ares_array_set_size(ares_array_t *arr, size_t size)
{
- void *temp;
+ void *temp;
+ size_t rounded_size;
if (arr == NULL || size == 0 || size < arr->cnt) {
return ARES_EFORMERR;
}
/* Always operate on powers of 2 */
- size = ares_round_up_pow2(size);
+ rounded_size = ares_round_up_pow2(size);
+ if (rounded_size < size) {
+ return ARES_ENOMEM; /* rounding wrapped around */
+ }
+ size = rounded_size;
if (size < ARES__ARRAY_MIN) {
size = ARES__ARRAY_MIN;
@@ -189,8 +194,8 @@ ares_status_t ares_array_set_size(ares_array_t *arr, size_t size)
return ARES_SUCCESS;
}
- temp = ares_realloc_zero(arr->arr, arr->alloc_cnt * arr->member_size,
- size * arr->member_size);
+ temp =
+ ares_realloc_zero_array(arr->arr, arr->alloc_cnt, size, arr->member_size);
if (temp == NULL) {
return ARES_ENOMEM;
}
@@ -295,7 +300,7 @@ ares_status_t ares_array_insertdata_first(ares_array_t *arr,
ares_status_t status;
void *ptr = NULL;
- status = ares_array_insert_last(&ptr, arr);
+ status = ares_array_insert_first(&ptr, arr);
if (status != ARES_SUCCESS) {
return status;
}
@@ -362,6 +367,16 @@ ares_status_t ares_array_claim_at(void *dest, size_t dest_size,
}
arr->cnt--;
+
+ /* When empty, reset offset so a later insert doesn't compact from an
+ * out-of-range index (offset can reach alloc_cnt after front claims).
+ * This also protects ares_array_finish(), which has the same
+ * move(0, offset) and would otherwise fail on an offset == alloc_cnt
+ * array. */
+ if (arr->cnt == 0) {
+ arr->offset = 0;
+ }
+
return ARES_SUCCESS;
}
diff --git a/deps/cares/src/lib/dsa/ares_htable.c b/deps/cares/src/lib/dsa/ares_htable.c
index f76b67cae9a..d6ac7a065a6 100644
--- a/deps/cares/src/lib/dsa/ares_htable.c
+++ b/deps/cares/src/lib/dsa/ares_htable.c
@@ -150,6 +150,10 @@ const void **ares_htable_all_buckets(const ares_htable_t *htable, size_t *num)
*num = 0;
+ if (htable->num_keys == 0) {
+ return NULL;
+ }
+
out = ares_malloc_zero(sizeof(*out) * htable->num_keys);
if (out == NULL) {
return NULL; /* LCOV_EXCL_LINE */
@@ -172,7 +176,7 @@ const void **ares_htable_all_buckets(const ares_htable_t *htable, size_t *num)
* We are doing "hash & (size - 1)" since we are guaranteeing a power of
* 2 for size. This is equivalent to "hash % size", but should be more
* efficient */
-#define HASH_IDX(h, key) h->hash(key, h->seed) & (h->size - 1)
+#define HASH_IDX(h, key) ((h)->hash((key), (h)->seed) & ((h)->size - 1))
static ares_llist_node_t *ares_htable_find(const ares_htable_t *htable,
unsigned int idx, const void *key)
diff --git a/deps/cares/src/lib/dsa/ares_htable_dict.c b/deps/cares/src/lib/dsa/ares_htable_dict.c
index 93d7a20137c..cda7a49c79d 100644
--- a/deps/cares/src/lib/dsa/ares_htable_dict.c
+++ b/deps/cares/src/lib/dsa/ares_htable_dict.c
@@ -132,6 +132,7 @@ ares_bool_t ares_htable_dict_insert(ares_htable_dict_t *htable, const char *key,
fail:
if (bucket) {
+ ares_free(bucket->key);
ares_free(bucket->val);
ares_free(bucket);
}
@@ -223,6 +224,7 @@ char **ares_htable_dict_keys(const ares_htable_dict_t *htable, size_t *num)
fail:
*num = 0;
+ ares_free(buckets);
ares_free_array(out, cnt, ares_free);
return NULL;
}
diff --git a/deps/cares/src/lib/dsa/ares_llist.c b/deps/cares/src/lib/dsa/ares_llist.c
index 6bd7de269a4..ce1a3114940 100644
--- a/deps/cares/src/lib/dsa/ares_llist.c
+++ b/deps/cares/src/lib/dsa/ares_llist.c
@@ -103,7 +103,10 @@ static void ares_llist_attach_at(ares_llist_t *list,
case ARES__LLIST_INSERT_BEFORE:
node->next = at;
node->prev = at->prev;
- at->prev = node;
+ if (at->prev) {
+ at->prev->next = node;
+ }
+ at->prev = node;
break;
}
if (list->tail == NULL) {
diff --git a/deps/cares/src/lib/event/ares_event_configchg.c b/deps/cares/src/lib/event/ares_event_configchg.c
index add729574e4..d73c4862058 100644
--- a/deps/cares/src/lib/event/ares_event_configchg.c
+++ b/deps/cares/src/lib/event/ares_event_configchg.c
@@ -207,12 +207,14 @@ void ares_event_configchg_destroy(ares_event_configchg_t *configchg)
# ifdef HAVE_REGISTERWAITFORSINGLEOBJECT
if (configchg->regip4_wait != NULL) {
- UnregisterWait(configchg->regip4_wait);
+ /* Use INVALID_HANDLE_VALUE to wait for any running callback to complete
+ * before returning, preventing use-after-free of configchg */
+ UnregisterWaitEx(configchg->regip4_wait, INVALID_HANDLE_VALUE);
configchg->regip4_wait = NULL;
}
if (configchg->regip6_wait != NULL) {
- UnregisterWait(configchg->regip6_wait);
+ UnregisterWaitEx(configchg->regip6_wait, INVALID_HANDLE_VALUE);
configchg->regip6_wait = NULL;
}
diff --git a/deps/cares/src/lib/event/ares_event_wake_pipe.c b/deps/cares/src/lib/event/ares_event_wake_pipe.c
index cd1534bbbd5..2ea72c29415 100644
--- a/deps/cares/src/lib/event/ares_event_wake_pipe.c
+++ b/deps/cares/src/lib/event/ares_event_wake_pipe.c
@@ -117,7 +117,13 @@ static void ares_pipeevent_signal(const ares_event_t *e)
}
p = e->data;
- (void)write(p->filedes[1], "1", 1);
+ /* Best-effort wakeup. A failed or short write is harmless: it can only
+ * happen when the pipe buffer is already full, which means a wakeup is
+ * already pending. The result is consumed to satisfy warn_unused_result
+ * (a plain (void) cast does not silence it under _FORTIFY_SOURCE). */
+ if (write(p->filedes[1], "1", 1) < 0) {
+ return;
+ }
}
static void ares_pipeevent_cb(ares_event_thread_t *e, ares_socket_t fd,
diff --git a/deps/cares/src/lib/event/ares_event_win32.c b/deps/cares/src/lib/event/ares_event_win32.c
index d7d1d657350..d558b6930a6 100644
--- a/deps/cares/src/lib/event/ares_event_win32.c
+++ b/deps/cares/src/lib/event/ares_event_win32.c
@@ -707,6 +707,9 @@ static ares_bool_t ares_evsys_win32_event_add(ares_event_t *event)
ares_bool_t rc = ARES_FALSE;
ed = ares_malloc_zero(sizeof(*ed));
+ if (ed == NULL) {
+ return ARES_FALSE; /* LCOV_EXCL_LINE: OutOfMemory */
+ }
ed->event = event;
ed->socket = event->fd;
ed->base_socket = ARES_SOCKET_BAD;
diff --git a/deps/cares/src/lib/include/ares_mem.h b/deps/cares/src/lib/include/ares_mem.h
index 371cd4266dc..d980923e581 100644
--- a/deps/cares/src/lib/include/ares_mem.h
+++ b/deps/cares/src/lib/include/ares_mem.h
@@ -34,5 +34,8 @@ CARES_EXTERN void ares_free(void *ptr);
CARES_EXTERN void *ares_malloc_zero(size_t size);
CARES_EXTERN void *ares_realloc_zero(void *ptr, size_t orig_size,
size_t new_size);
+CARES_EXTERN void *ares_malloc_zero_array(size_t num, size_t size);
+CARES_EXTERN void *ares_realloc_zero_array(void *ptr, size_t orig_num,
+ size_t new_num, size_t size);
#endif
diff --git a/deps/cares/src/lib/include/ares_str.h b/deps/cares/src/lib/include/ares_str.h
index 4ee339510bf..c7fdf4fc4c8 100644
--- a/deps/cares/src/lib/include/ares_str.h
+++ b/deps/cares/src/lib/include/ares_str.h
@@ -60,6 +60,23 @@ CARES_EXTERN size_t ares_strcpy(char *dest, const char *src, size_t dest_size);
CARES_EXTERN ares_bool_t ares_str_isnum(const char *str);
CARES_EXTERN ares_bool_t ares_str_isalnum(const char *str);
+/*! Parse a base-10 unsigned integer from a NULL-terminated string. Unlike
+ * atoi(), this rejects overflow, leading or trailing garbage (a sign,
+ * whitespace, or non-digit characters), and any value that does not fit
+ * within the caller-provided maximum.
+ *
+ * \param[in] str String to parse. May be NULL or empty, in which case
+ * ARES_FALSE is returned.
+ * \param[in] max Largest value considered valid. Values above UINT_MAX
+ * are capped to UINT_MAX since out is an unsigned int.
+ * \param[out] out On success, receives the parsed value. Untouched on
+ * failure.
+ * \return ARES_TRUE if a valid in-range integer was parsed, ARES_FALSE
+ * otherwise.
+ */
+CARES_EXTERN ares_bool_t ares_str_parse_uint(const char *str, unsigned long max,
+ unsigned int *out);
+
CARES_EXTERN void ares_str_ltrim(char *str);
CARES_EXTERN void ares_str_rtrim(char *str);
CARES_EXTERN void ares_str_trim(char *str);
diff --git a/deps/cares/src/lib/legacy/ares_expand_name.c b/deps/cares/src/lib/legacy/ares_expand_name.c
index 72668f4cb60..ee1d70076be 100644
--- a/deps/cares/src/lib/legacy/ares_expand_name.c
+++ b/deps/cares/src/lib/legacy/ares_expand_name.c
@@ -69,7 +69,7 @@ ares_status_t ares_expand_name_validated(const unsigned char *encoded,
}
start_len = ares_buf_len(buf);
- status = ares_dns_name_parse(buf, s, is_hostname);
+ status = ares_dns_name_parse(buf, s, is_hostname, ARES_TRUE);
if (status != ARES_SUCCESS) {
goto done;
}
diff --git a/deps/cares/src/lib/legacy/ares_parse_ns_reply.c b/deps/cares/src/lib/legacy/ares_parse_ns_reply.c
index fc9ab9219d3..7013ce28b90 100644
--- a/deps/cares/src/lib/legacy/ares_parse_ns_reply.c
+++ b/deps/cares/src/lib/legacy/ares_parse_ns_reply.c
@@ -97,12 +97,12 @@ int ares_parse_ns_reply(const unsigned char *abuf, int alen_int,
}
/* Preallocate the maximum number + 1 */
- hostent->h_aliases = ares_malloc((ancount + 1) * sizeof(*hostent->h_aliases));
+ hostent->h_aliases =
+ ares_malloc_zero_array(ancount + 1, sizeof(*hostent->h_aliases));
if (hostent->h_aliases == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */
}
- memset(hostent->h_aliases, 0, (ancount + 1) * sizeof(*hostent->h_aliases));
for (i = 0; i < ancount; i++) {
const ares_dns_rr_t *rr =
diff --git a/deps/cares/src/lib/legacy/ares_parse_ptr_reply.c b/deps/cares/src/lib/legacy/ares_parse_ptr_reply.c
index 0e52f9db09b..a275f3802ff 100644
--- a/deps/cares/src/lib/legacy/ares_parse_ptr_reply.c
+++ b/deps/cares/src/lib/legacy/ares_parse_ptr_reply.c
@@ -88,12 +88,12 @@ ares_status_t ares_parse_ptr_reply_dnsrec(const ares_dns_record_t *dnsrec,
hostent->h_length = (HOSTENT_LENGTH_TYPE)addrlen;
/* Preallocate the maximum number + 1 */
- hostent->h_aliases = ares_malloc((ancount + 1) * sizeof(*hostent->h_aliases));
+ hostent->h_aliases =
+ ares_malloc_zero_array(ancount + 1, sizeof(*hostent->h_aliases));
if (hostent->h_aliases == NULL) {
status = ARES_ENOMEM;
goto done;
}
- memset(hostent->h_aliases, 0, (ancount + 1) * sizeof(*hostent->h_aliases));
/* Cycle through answers */
diff --git a/deps/cares/src/lib/record/ares_dns_mapping.c b/deps/cares/src/lib/record/ares_dns_mapping.c
index 5a3ec28abf1..38dedd438c6 100644
--- a/deps/cares/src/lib/record/ares_dns_mapping.c
+++ b/deps/cares/src/lib/record/ares_dns_mapping.c
@@ -147,7 +147,7 @@ ares_bool_t ares_dns_class_isvalid(ares_dns_class_t qclass,
switch (qclass) {
case ARES_CLASS_IN:
case ARES_CLASS_CHAOS:
- case ARES_CLASS_HESOID:
+ case ARES_CLASS_HESIOD:
case ARES_CLASS_NONE:
return ARES_TRUE;
case ARES_CLASS_ANY:
@@ -228,7 +228,7 @@ const char *ares_dns_rec_type_tostr(ares_dns_rec_type_t type)
case ARES_REC_TYPE_CAA:
return "CAA";
case ARES_REC_TYPE_RAW_RR:
- return "RAWRR";
+ return "RAW_RR";
}
return "UNKNOWN";
}
@@ -240,7 +240,7 @@ const char *ares_dns_class_tostr(ares_dns_class_t qclass)
return "IN";
case ARES_CLASS_CHAOS:
return "CH";
- case ARES_CLASS_HESOID:
+ case ARES_CLASS_HESIOD:
return "HS";
case ARES_CLASS_ANY:
return "ANY";
@@ -670,7 +670,7 @@ ares_bool_t ares_dns_class_fromstr(ares_dns_class_t *qclass, const char *str)
} list[] = {
{ "IN", ARES_CLASS_IN },
{ "CH", ARES_CLASS_CHAOS },
- { "HS", ARES_CLASS_HESOID },
+ { "HS", ARES_CLASS_HESIOD },
{ "NONE", ARES_CLASS_NONE },
{ "ANY", ARES_CLASS_ANY },
{ NULL, 0 }
diff --git a/deps/cares/src/lib/record/ares_dns_multistring.c b/deps/cares/src/lib/record/ares_dns_multistring.c
index 44fcaccd65b..a2a7adc4e45 100644
--- a/deps/cares/src/lib/record/ares_dns_multistring.c
+++ b/deps/cares/src/lib/record/ares_dns_multistring.c
@@ -227,7 +227,9 @@ const unsigned char *ares_dns_multistring_combined(ares_dns_multistring_t *strs,
strs->cache_str =
(unsigned char *)ares_buf_finish_str(buf, &strs->cache_str_len);
- if (strs->cache_str != NULL) {
+ if (strs->cache_str == NULL) {
+ ares_buf_destroy(buf);
+ } else {
strs->cache_invalidated = ARES_FALSE;
}
*len = strs->cache_str_len;
diff --git a/deps/cares/src/lib/record/ares_dns_name.c b/deps/cares/src/lib/record/ares_dns_name.c
index a9b92e03ca9..ffcaf5e110d 100644
--- a/deps/cares/src/lib/record/ares_dns_name.c
+++ b/deps/cares/src/lib/record/ares_dns_name.c
@@ -25,6 +25,18 @@
*/
#include "ares_private.h"
+/* RFC 1035 3.1 limits a name to 255 octets. We track presentation length
+ * (label octets plus one separator before each label after the first), which is
+ * up to ~2 octets looser than the strict wire limit and so never rejects a
+ * compliant name. Shared by the read and write paths. */
+#define ARES_MAX_NAME_PRESENTATION_LEN 255
+
+/* A name of <= 255 octets holds at most 128 labels, so it can never legitimately
+ * require more than that many compression-pointer jumps. Bounding the number of
+ * indirections stops a name built purely from pointers (which never adds label
+ * bytes, so the length cap never fires) from being walked without limit. */
+#define ARES_MAX_INDIRS 128
+
typedef struct {
char *name;
size_t name_len;
@@ -48,10 +60,18 @@ static ares_status_t ares_nameoffset_create(ares_llist_t **list,
ares_nameoffset_t *off = NULL;
if (list == NULL || name == NULL || ares_strlen(name) == 0 ||
- ares_strlen(name) > 255) {
+ ares_strlen(name) > ARES_MAX_NAME_PRESENTATION_LEN) {
return ARES_EFORMERR; /* LCOV_EXCL_LINE: DefensiveCoding */
}
+ /* Don't record a name as a compression target if it can't be referenced by
+ * a pointer. DNS name compression offsets are only 14 bits (RFC 1035
+ * 4.1.4), so a name positioned beyond 0x3FFF would have its offset
+ * truncated when written, producing a pointer to the wrong location. */
+ if (idx > 0x3FFF) {
+ return ARES_SUCCESS;
+ }
+
if (*list == NULL) {
*list = ares_llist_create(ares_nameoffset_free);
}
@@ -65,7 +85,12 @@ static ares_status_t ares_nameoffset_create(ares_llist_t **list,
return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
}
- off->name = ares_strdup(name);
+ off->name = ares_strdup(name);
+ if (off->name == NULL) {
+ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
+ goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
+ }
+
off->name_len = ares_strlen(off->name);
off->idx = idx;
@@ -335,7 +360,8 @@ static ares_status_t ares_split_dns_name(ares_array_t *labels,
}
/* Can't exceed maximum (unescaped) length */
- if (ares_array_len(labels) && total_len + ares_array_len(labels) - 1 > 255) {
+ if (ares_array_len(labels) &&
+ total_len + ares_array_len(labels) - 1 > ARES_MAX_NAME_PRESENTATION_LEN) {
status = ARES_EBADNAME;
goto done;
}
@@ -419,6 +445,9 @@ ares_status_t ares_dns_name_write(ares_buf_t *buf, ares_llist_t **list,
/* Output name compression offset jump */
if (off != NULL) {
+ /* off->idx is guaranteed to fit in 14 bits: ares_nameoffset_create()
+ * refuses to record offsets beyond 0x3FFF, so the mask below never
+ * actually truncates. */
unsigned short u16 =
(unsigned short)0xC000 | (unsigned short)(off->idx & 0x3FFF);
status = ares_buf_append_be16(buf, u16);
@@ -531,13 +560,16 @@ static ares_status_t ares_fetch_dnsname_into_buf(ares_buf_t *buf,
}
ares_status_t ares_dns_name_parse(ares_buf_t *buf, char **name,
- ares_bool_t is_hostname)
+ ares_bool_t is_hostname,
+ ares_bool_t allow_compression)
{
size_t save_offset = 0;
unsigned char c;
ares_status_t status;
ares_buf_t *namebuf = NULL;
size_t label_start = ares_buf_get_position(buf);
+ size_t name_len = 0;
+ size_t indir = 0;
if (buf == NULL) {
return ARES_EFORMERR;
@@ -588,6 +620,13 @@ ares_status_t ares_dns_name_parse(ares_buf_t *buf, char **name,
*/
size_t offset = (size_t)((c & 0x3F) << 8);
+ /* Some RR types (e.g. SRV) do not permit name compression within their
+ * RDATA. Reject a compression pointer when it is not allowed. */
+ if (!allow_compression) {
+ status = ARES_EBADNAME;
+ goto fail;
+ }
+
/* Fetch second byte of the redirect length */
status = ares_buf_fetch_bytes(buf, &c, 1);
if (status != ARES_SUCCESS) {
@@ -609,6 +648,16 @@ ares_status_t ares_dns_name_parse(ares_buf_t *buf, char **name,
goto fail;
}
+ /* Bound the number of indirections. A name made purely of pointers never
+ * adds label bytes, so the length cap below can't stop it; the
+ * strictly-decreasing rule alone still allows thousands of jumps per name.
+ * No legitimate <= 255 octet name needs more than 128 labels/jumps. */
+ indir++;
+ if (indir > ARES_MAX_INDIRS) {
+ status = ARES_EBADNAME;
+ goto fail;
+ }
+
/* First time we make a jump, save the current position */
if (save_offset == 0) {
save_offset = ares_buf_get_position(buf);
@@ -632,6 +681,20 @@ ares_status_t ares_dns_name_parse(ares_buf_t *buf, char **name,
/* New label */
+ /* RFC 1035 3.1 limits a name to 255 octets. Enforce it during
+ * decompression so labels reached through a chain of pointers can't expand a
+ * single name without bound. Track the presentation length (label data plus
+ * the separator that precedes each label after the first), matching
+ * ares_split_dns_name() on the write side. */
+ if (name_len) {
+ name_len++;
+ }
+ name_len += c;
+ if (name_len > ARES_MAX_NAME_PRESENTATION_LEN) {
+ status = ARES_EBADNAME;
+ goto fail;
+ }
+
/* Labels are separated by periods */
if (ares_buf_len(namebuf) != 0 && name != NULL) {
status = ares_buf_append_byte(namebuf, '.');
diff --git a/deps/cares/src/lib/record/ares_dns_parse.c b/deps/cares/src/lib/record/ares_dns_parse.c
index 0c545d7aa18..9dc28e92d84 100644
--- a/deps/cares/src/lib/record/ares_dns_parse.c
+++ b/deps/cares/src/lib/record/ares_dns_parse.c
@@ -46,8 +46,14 @@ static ares_status_t ares_dns_parse_and_set_dns_name(ares_buf_t *buf,
{
ares_status_t status;
char *name = NULL;
+ /* Only RR types defined in RFC1035 may use name compression within their
+ * RDATA (RFC3597). Reject compression pointers for any other type (e.g.
+ * SRV per RFC2782) to match the write-side policy and avoid following
+ * pointers that a non-understanding nameserver could not have rewritten. */
+ ares_bool_t allow_compression =
+ ares_dns_rec_allow_name_comp(ares_dns_rr_get_type(rr));
- status = ares_dns_name_parse(buf, &name, is_hostname);
+ status = ares_dns_name_parse(buf, &name, is_hostname, allow_compression);
if (status != ARES_SUCCESS) {
return status;
}
@@ -514,6 +520,7 @@ static ares_status_t ares_dns_parse_rr_opt(ares_buf_t *buf, ares_dns_rr_t *rr,
status = ares_dns_rr_set_opt_own(rr, ARES_RR_OPT_OPTIONS, opt, val, len);
if (status != ARES_SUCCESS) {
+ ares_free(val);
return status;
}
}
@@ -607,6 +614,7 @@ static ares_status_t ares_dns_parse_rr_svcb(ares_buf_t *buf, ares_dns_rr_t *rr,
status = ares_dns_rr_set_opt_own(rr, ARES_RR_SVCB_PARAMS, opt, val, len);
if (status != ARES_SUCCESS) {
+ ares_free(val);
return status;
}
}
@@ -658,6 +666,7 @@ static ares_status_t ares_dns_parse_rr_https(ares_buf_t *buf, ares_dns_rr_t *rr,
status = ares_dns_rr_set_opt_own(rr, ARES_RR_HTTPS_PARAMS, opt, val, len);
if (status != ARES_SUCCESS) {
+ ares_free(val);
return status;
}
}
@@ -765,6 +774,12 @@ static ares_status_t ares_dns_parse_rr_raw_rr(ares_buf_t *buf,
ares_status_t status;
unsigned char *bytes = NULL;
+ /* Can't fail */
+ status = ares_dns_rr_set_u16(rr, ARES_RR_RAW_RR_TYPE, raw_type);
+ if (status != ARES_SUCCESS) {
+ return status;
+ }
+
if (rdlength == 0) {
return ARES_SUCCESS;
}
@@ -774,13 +789,6 @@ static ares_status_t ares_dns_parse_rr_raw_rr(ares_buf_t *buf,
return status;
}
- /* Can't fail */
- status = ares_dns_rr_set_u16(rr, ARES_RR_RAW_RR_TYPE, raw_type);
- if (status != ARES_SUCCESS) {
- ares_free(bytes);
- return status;
- }
-
status = ares_dns_rr_set_bin_own(rr, ARES_RR_RAW_RR_DATA, bytes, rdlength);
if (status != ARES_SUCCESS) {
ares_free(bytes);
@@ -920,30 +928,6 @@ static ares_status_t ares_dns_parse_header(ares_buf_t *buf, unsigned int flags,
(*dnsrec)->raw_rcode = rcode;
- if (*ancount > 0) {
- status =
- ares_dns_record_rr_prealloc(*dnsrec, ARES_SECTION_ANSWER, *ancount);
- if (status != ARES_SUCCESS) {
- goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
- }
- }
-
- if (*nscount > 0) {
- status =
- ares_dns_record_rr_prealloc(*dnsrec, ARES_SECTION_AUTHORITY, *nscount);
- if (status != ARES_SUCCESS) {
- goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
- }
- }
-
- if (*arcount > 0) {
- status =
- ares_dns_record_rr_prealloc(*dnsrec, ARES_SECTION_ADDITIONAL, *arcount);
- if (status != ARES_SUCCESS) {
- goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
- }
- }
-
return ARES_SUCCESS;
fail:
@@ -1032,7 +1016,7 @@ static ares_status_t ares_dns_parse_qd(ares_buf_t *buf,
*/
/* Name */
- status = ares_dns_name_parse(buf, &name, ARES_FALSE);
+ status = ares_dns_name_parse(buf, &name, ARES_FALSE, ARES_TRUE);
if (status != ARES_SUCCESS) {
goto done;
}
@@ -1103,7 +1087,7 @@ static ares_status_t ares_dns_parse_rr(ares_buf_t *buf, unsigned int flags,
*/
/* Name */
- status = ares_dns_name_parse(buf, &name, ARES_FALSE);
+ status = ares_dns_name_parse(buf, &name, ARES_FALSE, ARES_TRUE);
if (status != ARES_SUCCESS) {
goto done;
}
@@ -1208,6 +1192,8 @@ static ares_status_t ares_dns_parse_buf(ares_buf_t *buf, unsigned int flags,
ares_dns_record_t **dnsrec)
{
ares_status_t status;
+ size_t total_rr_count;
+ const size_t min_rr_wire_len = 11;
unsigned short qdcount;
unsigned short ancount;
unsigned short nscount;
@@ -1268,6 +1254,35 @@ static ares_status_t ares_dns_parse_buf(ares_buf_t *buf, unsigned int flags,
}
}
+ total_rr_count = (size_t)ancount + (size_t)nscount + (size_t)arcount;
+ if (total_rr_count > ares_buf_len(buf) / min_rr_wire_len) {
+ status = ARES_EBADRESP;
+ goto fail;
+ }
+
+ if (ancount > 0) {
+ status = ares_dns_record_rr_prealloc(*dnsrec, ARES_SECTION_ANSWER, ancount);
+ if (status != ARES_SUCCESS) {
+ goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
+ }
+ }
+
+ if (nscount > 0) {
+ status =
+ ares_dns_record_rr_prealloc(*dnsrec, ARES_SECTION_AUTHORITY, nscount);
+ if (status != ARES_SUCCESS) {
+ goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
+ }
+ }
+
+ if (arcount > 0) {
+ status =
+ ares_dns_record_rr_prealloc(*dnsrec, ARES_SECTION_ADDITIONAL, arcount);
+ if (status != ARES_SUCCESS) {
+ goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
+ }
+ }
+
/* Parse Answers */
for (i = 0; i < ancount; i++) {
status = ares_dns_parse_rr(buf, flags, ARES_SECTION_ANSWER, *dnsrec);
@@ -1292,6 +1307,22 @@ static ares_status_t ares_dns_parse_buf(ares_buf_t *buf, unsigned int flags,
}
}
+ /* RFC 6891 6.1.1: a message MUST NOT contain more than one OPT RR. Reject
+ * any response carrying multiple OPT records in the additional section. */
+ {
+ size_t rr_cnt = ares_dns_record_rr_cnt(*dnsrec, ARES_SECTION_ADDITIONAL);
+ size_t opt_cnt = 0;
+ size_t j;
+ for (j = 0; j < rr_cnt; j++) {
+ const ares_dns_rr_t *rr =
+ ares_dns_record_rr_get_const(*dnsrec, ARES_SECTION_ADDITIONAL, j);
+ if (ares_dns_rr_get_type(rr) == ARES_REC_TYPE_OPT && ++opt_cnt > 1) {
+ status = ARES_EBADRESP;
+ goto fail;
+ }
+ }
+ }
+
/* Finalize rcode now that if we have OPT it is processed */
if (!ares_dns_rcode_isvalid((*dnsrec)->raw_rcode)) {
(*dnsrec)->rcode = ARES_RCODE_SERVFAIL;
diff --git a/deps/cares/src/lib/record/ares_dns_record.c b/deps/cares/src/lib/record/ares_dns_record.c
index ec0dfbd13c4..2c0dadd084c 100644
--- a/deps/cares/src/lib/record/ares_dns_record.c
+++ b/deps/cares/src/lib/record/ares_dns_record.c
@@ -929,7 +929,7 @@ ares_status_t ares_dns_rr_add_abin(ares_dns_rr_t *dns_rr, ares_dns_rr_key_t key,
ares_dns_datatype_t datatype = ares_dns_rr_key_datatype(key);
ares_bool_t is_nullterm =
(datatype == ARES_DATATYPE_ABINP) ? ARES_TRUE : ARES_FALSE;
- size_t alloclen = is_nullterm ? len + 1 : len;
+ size_t alloclen;
unsigned char *temp;
ares_dns_multistring_t **strs;
@@ -937,6 +937,15 @@ ares_status_t ares_dns_rr_add_abin(ares_dns_rr_t *dns_rr, ares_dns_rr_key_t key,
return ARES_EFORMERR;
}
+ if (val == NULL && len != 0) {
+ return ARES_EFORMERR;
+ }
+
+ if (is_nullterm && len == SIZE_MAX) {
+ return ARES_ENOMEM;
+ }
+ alloclen = is_nullterm ? len + 1 : len;
+
strs = ares_dns_rr_data_ptr(dns_rr, key, NULL);
if (strs == NULL) {
return ARES_EFORMERR;
@@ -954,7 +963,9 @@ ares_status_t ares_dns_rr_add_abin(ares_dns_rr_t *dns_rr, ares_dns_rr_key_t key,
return ARES_ENOMEM;
}
- memcpy(temp, val, len);
+ if (len != 0) {
+ memcpy(temp, val, len);
+ }
/* NULL-term ABINP */
if (is_nullterm) {
@@ -1237,14 +1248,32 @@ ares_status_t ares_dns_rr_set_bin(ares_dns_rr_t *dns_rr, ares_dns_rr_key_t key,
(datatype == ARES_DATATYPE_BINP || datatype == ARES_DATATYPE_ABINP)
? ARES_TRUE
: ARES_FALSE;
- size_t alloclen = is_nullterm ? len + 1 : len;
- unsigned char *temp = ares_malloc(alloclen);
+ size_t alloclen;
+ unsigned char *temp;
+
+ if (datatype != ARES_DATATYPE_BIN && datatype != ARES_DATATYPE_BINP &&
+ datatype != ARES_DATATYPE_ABINP) {
+ return ARES_EFORMERR;
+ }
+
+ if (val == NULL && len != 0) {
+ return ARES_EFORMERR;
+ }
+
+ if (is_nullterm && len == SIZE_MAX) {
+ return ARES_ENOMEM;
+ }
+ alloclen = is_nullterm ? len + 1 : len;
+
+ temp = ares_malloc(alloclen);
if (temp == NULL) {
return ARES_ENOMEM;
}
- memcpy(temp, val, len);
+ if (len != 0) {
+ memcpy(temp, val, len);
+ }
/* NULL-term BINP */
if (is_nullterm) {
@@ -1400,12 +1429,23 @@ ares_status_t ares_dns_rr_set_opt(ares_dns_rr_t *dns_rr, ares_dns_rr_key_t key,
ares_status_t status;
if (val != NULL) {
- temp = ares_malloc(val_len + 1);
+ size_t alloclen;
+
+ if (val_len == SIZE_MAX) {
+ return ARES_ENOMEM;
+ }
+ alloclen = val_len + 1;
+
+ temp = ares_malloc(alloclen);
if (temp == NULL) {
return ARES_ENOMEM;
}
- memcpy(temp, val, val_len);
+ if (val_len != 0) {
+ memcpy(temp, val, val_len);
+ }
temp[val_len] = 0;
+ } else if (val_len != 0) {
+ return ARES_EFORMERR;
}
status = ares_dns_rr_set_opt_own(dns_rr, key, opt, temp, val_len);
diff --git a/deps/cares/src/lib/str/ares_buf.c b/deps/cares/src/lib/str/ares_buf.c
index 63acc6cf771..25f0372e4db 100644
--- a/deps/cares/src/lib/str/ares_buf.c
+++ b/deps/cares/src/lib/str/ares_buf.c
@@ -139,6 +139,7 @@ static ares_status_t ares_buf_ensure_space(ares_buf_t *buf, size_t needed_size)
{
size_t remaining_size;
size_t alloc_size;
+ size_t total_required;
unsigned char *ptr;
if (buf == NULL) {
@@ -151,9 +152,20 @@ static ares_status_t ares_buf_ensure_space(ares_buf_t *buf, size_t needed_size)
/* When calling ares_buf_finish_str() we end up adding a null terminator,
* so we want to ensure the size is always sufficient for this as we don't
- * want an ARES_ENOMEM at that point */
+ * want an ARES_ENOMEM at that point.
+ */
+ if (buf->data_len >= SIZE_MAX - 1) {
+ return ARES_ENOMEM;
+ }
+
needed_size++;
+ if (needed_size > SIZE_MAX - buf->data_len) {
+ return ARES_ENOMEM;
+ }
+
+ total_required = buf->data_len + needed_size;
+
/* No need to do an expensive move operation, we have enough to just append */
remaining_size = buf->alloc_buf_len - buf->data_len;
if (remaining_size >= needed_size) {
@@ -177,9 +189,11 @@ static ares_status_t ares_buf_ensure_space(ares_buf_t *buf, size_t needed_size)
/* Increase allocation by powers of 2 */
do {
- alloc_size <<= 1;
- remaining_size = alloc_size - buf->data_len;
- } while (remaining_size < needed_size);
+ if (alloc_size > SIZE_MAX >> 1) {
+ return ARES_ENOMEM;
+ }
+ alloc_size <<= 1;
+ } while (alloc_size < total_required);
ptr = ares_realloc(buf->alloc_buf, alloc_size);
if (ptr == NULL) {
@@ -1111,7 +1125,7 @@ ares_status_t ares_buf_replace(ares_buf_t *buf, const unsigned char *srch,
size_t processed_len = 0;
ares_status_t status;
- if (buf->alloc_buf == NULL || srch == NULL || srch_size == 0 ||
+ if (buf == NULL || buf->alloc_buf == NULL || srch == NULL || srch_size == 0 ||
(rplc == NULL && rplc_size != 0)) {
return ARES_EFORMERR;
}
@@ -1131,7 +1145,7 @@ ares_status_t ares_buf_replace(ares_buf_t *buf, const unsigned char *srch,
/* Store the offset this was found because our actual pointer might be
* switched out from under us by the call to ensure_space() if the
* replacement pattern is larger than the search pattern */
- found_offset = (size_t)(ptr - (size_t)(buf->alloc_buf + buf->offset));
+ found_offset = (size_t)(ptr - buf->alloc_buf) - buf->offset;
if (rplc_size > srch_size) {
status = ares_buf_ensure_space(buf, rplc_size - srch_size);
if (status != ARES_SUCCESS) {
@@ -1262,17 +1276,15 @@ static ares_status_t
}
done:
- if (status != ARES_SUCCESS) {
- ares_buf_destroy(binbuf);
+ if (status == ARES_SUCCESS && bin != NULL) {
+ size_t mylen = 0;
+ /* NOTE: we use ares_buf_finish_str() here as we guarantee NULL
+ * Termination even though we are technically returning binary data.
+ */
+ *bin = (unsigned char *)ares_buf_finish_str(binbuf, &mylen);
+ *bin_len = mylen;
} else {
- if (bin != NULL) {
- size_t mylen = 0;
- /* NOTE: we use ares_buf_finish_str() here as we guarantee NULL
- * Termination even though we are technically returning binary data.
- */
- *bin = (unsigned char *)ares_buf_finish_str(binbuf, &mylen);
- *bin_len = mylen;
- }
+ ares_buf_destroy(binbuf);
}
return status;
diff --git a/deps/cares/src/lib/str/ares_str.c b/deps/cares/src/lib/str/ares_str.c
index 0eda1ab9f15..0819dc57849 100644
--- a/deps/cares/src/lib/str/ares_str.c
+++ b/deps/cares/src/lib/str/ares_str.c
@@ -28,6 +28,9 @@
#include "ares_private.h"
#include "ares_str.h"
+#include
+#include
+
#ifdef HAVE_STDINT_H
# include
#endif
@@ -125,6 +128,57 @@ ares_bool_t ares_str_isnum(const char *str)
return ARES_TRUE;
}
+ares_bool_t ares_str_parse_uint(const char *str, unsigned long max,
+ unsigned int *out)
+{
+ char *end = NULL;
+ unsigned long val;
+
+ /* Require a leading digit so strtoul()'s tolerance of a sign or leading
+ * whitespace (e.g. "-1" wrapping to UINT_MAX) can't slip through here. This
+ * also rejects NULL and empty strings. */
+ if (str == NULL || out == NULL || !ares_isdigit(*str)) {
+ return ARES_FALSE;
+ }
+
+ /* out is unsigned int, so a max above UINT_MAX would let strtoul's result
+ * truncate silently on assignment. Cap it. */
+ if (max > UINT_MAX) {
+ max = UINT_MAX;
+ }
+
+ errno = 0;
+ val = strtoul(str, &end, 10);
+ if (errno == ERANGE || *end != '\0' || val > max) {
+ return ARES_FALSE;
+ }
+
+ *out = (unsigned int)val;
+ return ARES_TRUE;
+}
+
+ares_bool_t ares_parse_port(const char *str, unsigned short *port,
+ ares_bool_t allow_zero)
+{
+ unsigned int val;
+
+ if (port == NULL) {
+ return ARES_FALSE;
+ }
+
+ if (!ares_str_parse_uint(str, 65535UL, &val)) {
+ return ARES_FALSE;
+ }
+
+ if (!allow_zero && val == 0) {
+ return ARES_FALSE;
+ }
+
+ *port = (unsigned short)val;
+
+ return ARES_TRUE;
+}
+
ares_bool_t ares_str_isalnum(const char *str)
{
size_t i;
diff --git a/deps/cares/src/lib/util/ares_iface_ips.c b/deps/cares/src/lib/util/ares_iface_ips.c
index c5f507f87e1..66d1fba84d4 100644
--- a/deps/cares/src/lib/util/ares_iface_ips.c
+++ b/deps/cares/src/lib/util/ares_iface_ips.c
@@ -25,6 +25,8 @@
*/
#include "ares_private.h"
+#include
+
#ifdef USE_WINSOCK
# include
# include
@@ -256,12 +258,12 @@ ares_iface_ip_flags_t ares_iface_ips_get_flags(const ares_iface_ips_t *ips,
const ares_iface_ip_t *ip;
if (ips == NULL) {
- return 0;
+ return ARES_IFACE_IP_NONE;
}
ip = ares_array_at_const(ips->ips, idx);
if (ip == NULL) {
- return 0;
+ return ARES_IFACE_IP_NONE;
}
return ip->flags;
@@ -329,6 +331,8 @@ static char *wcharp_to_charp(const wchar_t *in)
static ares_bool_t name_match(const char *name, const char *adapter_name,
unsigned int ll_scope)
{
+ unsigned int scope;
+
if (name == NULL || *name == 0) {
return ARES_TRUE;
}
@@ -337,7 +341,7 @@ static ares_bool_t name_match(const char *name, const char *adapter_name,
return ARES_TRUE;
}
- if (ares_str_isnum(name) && (unsigned int)atoi(name) == ll_scope) {
+ if (ares_str_parse_uint(name, UINT_MAX, &scope) && scope == ll_scope) {
return ARES_TRUE;
}
@@ -376,7 +380,7 @@ static ares_status_t ares_iface_ips_enumerate(ares_iface_ips_t *ips,
for (address = addresses; address != NULL; address = address->Next) {
IP_ADAPTER_UNICAST_ADDRESS *ipaddr = NULL;
- ares_iface_ip_flags_t addrflag = 0;
+ ares_iface_ip_flags_t addrflag = ARES_IFACE_IP_NONE;
char ifname[64] = "";
# if defined(HAVE_CONVERTINTERFACEINDEXTOLUID) && \
@@ -477,7 +481,7 @@ static ares_status_t ares_iface_ips_enumerate(ares_iface_ips_t *ips,
}
for (ifa = ifap; ifa != NULL; ifa = ifa->ifa_next) {
- ares_iface_ip_flags_t addrflag = 0;
+ ares_iface_ip_flags_t addrflag = ARES_IFACE_IP_NONE;
struct ares_addr addr;
unsigned char netmask = 0;
unsigned int ll_scope = 0;
@@ -500,20 +504,28 @@ static ares_status_t ares_iface_ips_enumerate(ares_iface_ips_t *ips,
addr.family = AF_INET;
memcpy(&addr.addr.addr4, &sockaddr_in->sin_addr, sizeof(addr.addr.addr4));
/* netmask */
- sockaddr_in = (struct sockaddr_in *)((void *)ifa->ifa_netmask);
- netmask = count_addr_bits((const void *)&sockaddr_in->sin_addr, 4);
+ if (ifa->ifa_netmask != NULL) {
+ sockaddr_in = (struct sockaddr_in *)((void *)ifa->ifa_netmask);
+ netmask = count_addr_bits((const void *)&sockaddr_in->sin_addr, 4);
+ } else {
+ netmask = 32;
+ }
} else if (ifa->ifa_addr->sa_family == AF_INET6) {
const struct sockaddr_in6 *sockaddr_in6 =
(const struct sockaddr_in6 *)((void *)ifa->ifa_addr);
addr.family = AF_INET6;
memcpy(&addr.addr.addr6, &sockaddr_in6->sin6_addr,
sizeof(addr.addr.addr6));
- /* netmask */
- sockaddr_in6 = (struct sockaddr_in6 *)((void *)ifa->ifa_netmask);
- netmask = count_addr_bits((const void *)&sockaddr_in6->sin6_addr, 16);
# ifdef HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID
ll_scope = sockaddr_in6->sin6_scope_id;
# endif
+ /* netmask */
+ if (ifa->ifa_netmask != NULL) {
+ sockaddr_in6 = (struct sockaddr_in6 *)((void *)ifa->ifa_netmask);
+ netmask = count_addr_bits((const void *)&sockaddr_in6->sin6_addr, 16);
+ } else {
+ netmask = 128;
+ }
} else {
/* unknown */
continue;
diff --git a/deps/cares/src/lib/util/ares_iface_ips.h b/deps/cares/src/lib/util/ares_iface_ips.h
index f22e09046a0..ec2353448fb 100644
--- a/deps/cares/src/lib/util/ares_iface_ips.h
+++ b/deps/cares/src/lib/util/ares_iface_ips.h
@@ -28,6 +28,7 @@
/*! Flags for interface ip addresses. */
typedef enum {
+ ARES_IFACE_IP_NONE = 0, /*!< No flags set / unspecified */
ARES_IFACE_IP_V4 = 1 << 0, /*!< IPv4 address. During enumeration if
* this flag is set ARES_IFACE_IP_V6
* is not, will only enumerate v4
diff --git a/deps/cares/src/lib/util/ares_math.c b/deps/cares/src/lib/util/ares_math.c
index 1106bf6bf15..3513146c3dd 100644
--- a/deps/cares/src/lib/util/ares_math.c
+++ b/deps/cares/src/lib/util/ares_math.c
@@ -42,7 +42,7 @@ static unsigned int ares_round_up_pow2_u32(unsigned int n)
return n;
}
-static ares_int64_t ares_round_up_pow2_u64(ares_int64_t n)
+static ares_uint64_t ares_round_up_pow2_u64(ares_uint64_t n)
{
/* NOTE: if already a power of 2, will return itself, not the next */
n--;
@@ -73,7 +73,7 @@ ares_bool_t ares_is_64bit(void)
size_t ares_round_up_pow2(size_t n)
{
if (ares_is_64bit()) {
- return (size_t)ares_round_up_pow2_u64((ares_int64_t)n);
+ return (size_t)ares_round_up_pow2_u64((ares_uint64_t)n);
}
return (size_t)ares_round_up_pow2_u32((unsigned int)n);
@@ -156,3 +156,12 @@ unsigned char ares_count_bits_u8(unsigned char x)
static const unsigned char lookup[256] = { B6(0), B6(1), B6(1), B6(2) };
return lookup[x];
}
+
+ares_bool_t ares_size_t_mul_overflow(size_t a, size_t b, size_t *res)
+{
+ if (a > 0 && b > SIZE_MAX / a) {
+ return ARES_TRUE;
+ }
+ *res = a * b;
+ return ARES_FALSE;
+}
diff --git a/deps/cares/src/lib/util/ares_math.h b/deps/cares/src/lib/util/ares_math.h
index 3b60b00bdbb..76e1e488370 100644
--- a/deps/cares/src/lib/util/ares_math.h
+++ b/deps/cares/src/lib/util/ares_math.h
@@ -50,4 +50,9 @@ size_t ares_count_digits(size_t n);
size_t ares_count_hexdigits(size_t n);
unsigned char ares_count_bits_u8(unsigned char x);
+/*! Multiply two size_t values, checking for overflow. On success writes the
+ * product to *res and returns ARES_FALSE. On overflow returns ARES_TRUE and
+ * leaves *res untouched. */
+ares_bool_t ares_size_t_mul_overflow(size_t a, size_t b, size_t *res);
+
#endif
diff --git a/deps/cares/src/lib/util/ares_threads.c b/deps/cares/src/lib/util/ares_threads.c
index ab0b51afb70..b27b7ebd700 100644
--- a/deps/cares/src/lib/util/ares_threads.c
+++ b/deps/cares/src/lib/util/ares_threads.c
@@ -563,8 +563,7 @@ ares_status_t ares_queue_wait_empty(ares_channel_t *channel, int timeout_ms)
if (timeout_ms >= 0) {
ares_tvnow(&tout);
- tout.sec += (ares_int64_t)(timeout_ms / 1000);
- tout.usec += (unsigned int)(timeout_ms % 1000) * 1000;
+ ares_timeval_add(&tout, (size_t)timeout_ms);
}
ares_thread_mutex_lock(channel->lock);
diff --git a/deps/cares/src/lib/util/ares_time.h b/deps/cares/src/lib/util/ares_time.h
index c6eaf973663..ecb721de188 100644
--- a/deps/cares/src/lib/util/ares_time.h
+++ b/deps/cares/src/lib/util/ares_time.h
@@ -39,6 +39,7 @@ ares_bool_t ares_timedout(const ares_timeval_t *now,
const ares_timeval_t *check);
void ares_tvnow(ares_timeval_t *now);
+void ares_timeval_add(ares_timeval_t *now, size_t millisecs);
void ares_timeval_remaining(ares_timeval_t *remaining,
const ares_timeval_t *now,
const ares_timeval_t *tout);
diff --git a/deps/cares/src/lib/util/ares_uri.c b/deps/cares/src/lib/util/ares_uri.c
index 04bad0074a7..97f3f3f542a 100644
--- a/deps/cares/src/lib/util/ares_uri.c
+++ b/deps/cares/src/lib/util/ares_uri.c
@@ -1174,6 +1174,7 @@ static ares_status_t ares_uri_parse_hostport(ares_uri_t *uri, ares_buf_t *buf)
unsigned char b;
char host[256];
char port[6];
+ unsigned short parsed_port;
size_t len;
ares_status_t status;
@@ -1242,11 +1243,11 @@ static ares_status_t ares_uri_parse_hostport(ares_uri_t *uri, ares_buf_t *buf)
}
port[len] = 0;
- if (!ares_str_isnum(port)) {
+ if (!ares_parse_port(port, &parsed_port, ARES_TRUE)) {
return ARES_EBADSTR;
}
- status = ares_uri_set_port(uri, (unsigned short)atoi(port));
+ status = ares_uri_set_port(uri, parsed_port);
if (status != ARES_SUCCESS) {
return status;
}
diff --git a/deps/cares/src/tools/adig.c b/deps/cares/src/tools/adig.c
index fce210a8053..29f359a3928 100644
--- a/deps/cares/src/tools/adig.c
+++ b/deps/cares/src/tools/adig.c
@@ -1162,12 +1162,12 @@ static ares_bool_t read_cmdline(int argc, const char * const *argv,
/* skip prefix */
if (dig_options[opt].prefix != 0) {
nameptr++;
- }
-
- /* Negated option if it has a 'no' prefix */
- if (ares_streq_max(nameptr, "no", 2)) {
- is_true = ARES_FALSE;
- nameptr += 2;
+ /* Negated option if it has a 'no' prefix */
+ if (dig_options[opt].prefix == '+' &&
+ ares_streq_max(nameptr, "no", 2)) {
+ is_true = ARES_FALSE;
+ nameptr += 2;
+ }
}
if (dig_options[opt].separator != 0) {
diff --git a/deps/cares/src/tools/ahost.c b/deps/cares/src/tools/ahost.c
index 7d1d4a86dc7..67b5677cad6 100644
--- a/deps/cares/src/tools/ahost.c
+++ b/deps/cares/src/tools/ahost.c
@@ -44,6 +44,13 @@
#include "ares_str.h"
+#define RV_OK 0 /* Success */
+#define RV_SYSERR 1 /* Internal system failure */
+#define RV_MISUSE 2 /* Misuse (command line) */
+#define RV_FAIL 3 /* Resolution failure */
+static int final_rv = RV_OK;
+
+
static void callback(void *arg, int status, int timeouts, struct hostent *host);
static void ai_callback(void *arg, int status, int timeouts,
struct ares_addrinfo *result);
diff --git a/deps/corepack/CHANGELOG.md b/deps/corepack/CHANGELOG.md
index dfc1dddd7b6..c90032328ab 100644
--- a/deps/corepack/CHANGELOG.md
+++ b/deps/corepack/CHANGELOG.md
@@ -1,5 +1,53 @@
# Changelog
+## [0.36.0](https://github.com/nodejs/corepack/compare/v0.35.0...v0.36.0) (2026-08-28)
+
+
+### Features
+
+* add `COREPACK_ON_UNVERIFIED_DOWNLOAD` env variable ([#856](https://github.com/nodejs/corepack/issues/856)) ([0125d89](https://github.com/nodejs/corepack/commit/0125d89ac904672bb42bc48bb6612d137beeccda))
+* fall back to package-root metadata when dist.signatures is missing on the version endpoint ([#870](https://github.com/nodejs/corepack/issues/870)) ([b26c9d5](https://github.com/nodejs/corepack/commit/b26c9d52fdbc5db326e631de3f6557f7e1b7e55d))
+* only load closest env file, for every commands ([#891](https://github.com/nodejs/corepack/issues/891)) ([b856c51](https://github.com/nodejs/corepack/commit/b856c516c3d0a92ded6b3f9cbbaa0d3f3eb094f1))
+* update package manager versions ([#852](https://github.com/nodejs/corepack/issues/852)) ([7e613b8](https://github.com/nodejs/corepack/commit/7e613b84b079411cb9eab1f90b254597fb9ef70c))
+* use range from `devEngines` when no `packageManager` is set ([#892](https://github.com/nodejs/corepack/issues/892)) ([dec830b](https://github.com/nodejs/corepack/commit/dec830b035f540d1b4ebc516e81fbf43c5e0ffcf))
+
+
+### Bug Fixes
+
+* **npmRegistryUtils:** env vars names in integrity check fail error message ([#854](https://github.com/nodejs/corepack/issues/854)) ([8ca01c3](https://github.com/nodejs/corepack/commit/8ca01c3fbeed6c8b5d1bb94df1aacb3fe6cff846))
+* strip trailing slashes from COREPACK_NPM_REGISTRY ([#871](https://github.com/nodejs/corepack/issues/871)) ([b81e92c](https://github.com/nodejs/corepack/commit/b81e92c2338ed6c4c38cfe1239002a261e47e6d5))
+
+## [0.35.0](https://github.com/nodejs/corepack/compare/v0.34.7...v0.35.0) (2026-05-15)
+
+
+### ⚠ BREAKING CHANGES
+
+* Drop support for Node.js 20 and Node.js 25.
+* Switching to Node.js built-in proxy support, meaning that proxy support is now
+ gated by having `NODE_USE_ENV_PROXY` set as an environment variable.
+
+### Features
+
+* update package manager versions ([#820](https://github.com/nodejs/corepack/issues/820)) ([fdbd751](https://github.com/nodejs/corepack/commit/fdbd751d9851a50730925de053e9722963c2e135))
+
+
+### Bug Fixes
+
+* target node 22.22.2 in esbuild ([#845](https://github.com/nodejs/corepack/issues/845)) ([0f01502](https://github.com/nodejs/corepack/commit/0f01502fd8832649a573bc68e1851128f547646d))
+
+
+### Miscellaneous Chores
+
+* **deps:** bump engine support matrix ([88c602a](https://github.com/nodejs/corepack/commit/88c602a6ea3f75bf30dc1d071bdb488fae2c8276))
+* **deps:** drop Undici and `proxy-from-env` ([8167b0d](https://github.com/nodejs/corepack/commit/8167b0d65acc091af464ead019f7485cb512082f))
+
+## [0.34.7](https://github.com/nodejs/corepack/compare/v0.34.6...v0.34.7) (2026-04-17)
+
+
+### Bug Fixes
+
+* update package manager versions ([#790](https://github.com/nodejs/corepack/issues/790)) ([e8961d6](https://github.com/nodejs/corepack/commit/e8961d6bdc14b8141fbda008febdd3649022862c))
+
## [0.34.6](https://github.com/nodejs/corepack/compare/v0.34.5...v0.34.6) (2026-01-23)
diff --git a/deps/corepack/README.md b/deps/corepack/README.md
index 1920174797a..e2adeb94958 100644
--- a/deps/corepack/README.md
+++ b/deps/corepack/README.md
@@ -127,9 +127,9 @@ Depending on the value of `devEngines.packageManager.onFail`:
of mismatch.
If the top-level `packageManager` field is missing, Corepack will use the
-package manager defined in `devEngines.packageManager` – in which case you must
-provide a specific version in `devEngines.packageManager.version`, ideally with
-a hash, as explained in the previous section:
+package manager defined in `devEngines.packageManager`. You should provide a
+specific version in `devEngines.packageManager.version`, ideally with a hash, as
+explained in the previous section:
```json
{
@@ -142,6 +142,16 @@ a hash, as explained in the previous section:
}
```
+When `devEngines.packageManager.version` is a range rather than a specific
+version, Corepack resolves it the same way as when a range is given on the
+command line: the latest version matching the range is looked up on the npm
+registry, which means the resolution requires network access (or a cache
+containing a matching version, see [Offline Workflow](#offline-workflow)), and
+may change over time. Set `COREPACK_ENABLE_AUTO_PIN=1` to have Corepack add the
+resolved version to the `packageManager` field. When
+`devEngines.packageManager.version` is missing, Corepack falls back to its
+[Known Good Release](#known-good-releases) for that package manager.
+
## Known Good Releases
When running Corepack within projects that don't list a supported package
@@ -328,8 +338,6 @@ same major line. Should you need to upgrade to a new major, use an explicit
Only keys that start with `COREPACK_` and are not in the exception list
(`COREPACK_ENABLE_DOWNLOAD_PROMPT` and `COREPACK_ENV_FILE` are ignored)
will be taken into account.
- For Node.js 18.x users, this setting has no effect as that version doesn't
- support parsing of `.env` files.
- `COREPACK_HOME` can be set in order to define where Corepack should install
the package managers. By default it is set to `%LOCALAPPDATA%\node\corepack`
@@ -351,8 +359,21 @@ same major line. Should you need to upgrade to a new major, use an explicit
environment variables are required and as plain text. If you want to send an
empty password, explicitly set `COREPACK_NPM_PASSWORD` to an empty string.
+- `COREPACK_ON_UNVERIFIED_DOWNLOAD` can be set to:
+ - `warn` (case insensitive): attempting to download an unsigned version without
+ providing a hash will emit a warning to stderr.
+ - `error` (case insensitive): attempting to download an unsigned version without
+ providing a hash will fail with an error, and nothing gets downloaded.
+ - `strict-warn` (case insensitive): same as `warn`, and additionally emits a
+ warning when downloading a version that is not pinned by a hash, even when
+ its signature can be verified.
+ - `strict-error` (case insensitive): same as `error`, and additionally fails
+ when downloading a version that is not pinned by a hash, even when its
+ signature can be verified.
+ - `ignore` (or any other unsupported value): disables that security feature.
+
- `HTTP_PROXY`, `HTTPS_PROXY`, and `NO_PROXY` are supported through
- [`proxy-from-env`](https://github.com/Rob--W/proxy-from-env).
+ [`NODE_USE_ENV_PROXY=1`](https://nodejs.org/api/cli.html#node_use_env_proxy1).
- `COREPACK_INTEGRITY_KEYS` can be set to an empty string or `0` to
instruct Corepack to skip integrity checks, or to a JSON string containing
diff --git a/deps/corepack/dist/lib/corepack.cjs b/deps/corepack/dist/lib/corepack.cjs
index 2d570f7b702..ff66960d4ae 100644
--- a/deps/corepack/dist/lib/corepack.cjs
+++ b/deps/corepack/dist/lib/corepack.cjs
@@ -5,11 +5,20 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __esm = (fn2, res) => function __init() {
- return fn2 && (res = (0, fn2[__getOwnPropNames(fn2)[0]])(fn2 = 0)), res;
+var __esm = (fn2, res, err) => function __init() {
+ if (err) throw err[0];
+ try {
+ return fn2 && (res = (0, fn2[__getOwnPropNames(fn2)[0]])(fn2 = 0)), res;
+ } catch (e) {
+ throw err = [e], e;
+ }
};
var __commonJS = (cb, mod) => function __require() {
- return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
+ try {
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
+ } catch (e) {
+ throw mod = 0, e;
+ }
};
var __export = (target, all) => {
for (var name2 in all)
@@ -33,7 +42,248 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
-// .yarn/cache/typanion-npm-3.14.0-8af344c436-8b03b19844.zip/node_modules/typanion/lib/index.mjs
+// node_modules/clipanion/lib/constants.js
+var require_constants = __commonJS({
+ "node_modules/clipanion/lib/constants.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ var NODE_INITIAL = 0;
+ var NODE_SUCCESS = 1;
+ var NODE_ERRORED = 2;
+ var START_OF_INPUT = ``;
+ var END_OF_INPUT = `\0`;
+ var HELP_COMMAND_INDEX = -1;
+ var HELP_REGEX = /^(-h|--help)(?:=([0-9]+))?$/;
+ var OPTION_REGEX = /^(--[a-z]+(?:-[a-z]+)*|-[a-zA-Z]+)$/;
+ var BATCH_REGEX = /^-[a-zA-Z]{2,}$/;
+ var BINDING_REGEX = /^([^=]+)=([\s\S]*)$/;
+ var DEBUG = process.env.DEBUG_CLI === `1`;
+ exports2.BATCH_REGEX = BATCH_REGEX;
+ exports2.BINDING_REGEX = BINDING_REGEX;
+ exports2.DEBUG = DEBUG;
+ exports2.END_OF_INPUT = END_OF_INPUT;
+ exports2.HELP_COMMAND_INDEX = HELP_COMMAND_INDEX;
+ exports2.HELP_REGEX = HELP_REGEX;
+ exports2.NODE_ERRORED = NODE_ERRORED;
+ exports2.NODE_INITIAL = NODE_INITIAL;
+ exports2.NODE_SUCCESS = NODE_SUCCESS;
+ exports2.OPTION_REGEX = OPTION_REGEX;
+ exports2.START_OF_INPUT = START_OF_INPUT;
+ }
+});
+
+// node_modules/clipanion/lib/errors.js
+var require_errors = __commonJS({
+ "node_modules/clipanion/lib/errors.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ var constants2 = require_constants();
+ var UsageError16 = class extends Error {
+ constructor(message) {
+ super(message);
+ this.clipanion = { type: `usage` };
+ this.name = `UsageError`;
+ }
+ };
+ var UnknownSyntaxError = class extends Error {
+ constructor(input, candidates) {
+ super();
+ this.input = input;
+ this.candidates = candidates;
+ this.clipanion = { type: `none` };
+ this.name = `UnknownSyntaxError`;
+ if (this.candidates.length === 0) {
+ this.message = `Command not found, but we're not sure what's the alternative.`;
+ } else if (this.candidates.every((candidate) => candidate.reason !== null && candidate.reason === candidates[0].reason)) {
+ const [{ reason }] = this.candidates;
+ this.message = `${reason}
+
+${this.candidates.map(({ usage }) => `$ ${usage}`).join(`
+`)}`;
+ } else if (this.candidates.length === 1) {
+ const [{ usage }] = this.candidates;
+ this.message = `Command not found; did you mean:
+
+$ ${usage}
+${whileRunning(input)}`;
+ } else {
+ this.message = `Command not found; did you mean one of:
+
+${this.candidates.map(({ usage }, index) => {
+ return `${`${index}.`.padStart(4)} ${usage}`;
+ }).join(`
+`)}
+
+${whileRunning(input)}`;
+ }
+ }
+ };
+ var AmbiguousSyntaxError = class extends Error {
+ constructor(input, usages) {
+ super();
+ this.input = input;
+ this.usages = usages;
+ this.clipanion = { type: `none` };
+ this.name = `AmbiguousSyntaxError`;
+ this.message = `Cannot find which to pick amongst the following alternatives:
+
+${this.usages.map((usage, index) => {
+ return `${`${index}.`.padStart(4)} ${usage}`;
+ }).join(`
+`)}
+
+${whileRunning(input)}`;
+ }
+ };
+ var whileRunning = (input) => `While running ${input.filter((token) => {
+ return token !== constants2.END_OF_INPUT;
+ }).map((token) => {
+ const json = JSON.stringify(token);
+ if (token.match(/\s/) || token.length === 0 || json !== `"${token}"`) {
+ return json;
+ } else {
+ return token;
+ }
+ }).join(` `)}`;
+ exports2.AmbiguousSyntaxError = AmbiguousSyntaxError;
+ exports2.UnknownSyntaxError = UnknownSyntaxError;
+ exports2.UsageError = UsageError16;
+ }
+});
+
+// node_modules/clipanion/lib/format.js
+var require_format = __commonJS({
+ "node_modules/clipanion/lib/format.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ var MAX_LINE_LENGTH = 80;
+ var richLine = Array(MAX_LINE_LENGTH).fill(`\u2501`);
+ for (let t = 0; t <= 24; ++t)
+ richLine[richLine.length - t] = `\x1B[38;5;${232 + t}m\u2501`;
+ var richFormat = {
+ header: (str) => `\x1B[1m\u2501\u2501\u2501 ${str}${str.length < MAX_LINE_LENGTH - 5 ? ` ${richLine.slice(str.length + 5).join(``)}` : `:`}\x1B[0m`,
+ bold: (str) => `\x1B[1m${str}\x1B[22m`,
+ error: (str) => `\x1B[31m\x1B[1m${str}\x1B[22m\x1B[39m`,
+ code: (str) => `\x1B[36m${str}\x1B[39m`
+ };
+ var textFormat = {
+ header: (str) => str,
+ bold: (str) => str,
+ error: (str) => str,
+ code: (str) => str
+ };
+ function dedent(text) {
+ const lines = text.split(`
+`);
+ const nonEmptyLines = lines.filter((line) => line.match(/\S/));
+ const indent = nonEmptyLines.length > 0 ? nonEmptyLines.reduce((minLength, line) => Math.min(minLength, line.length - line.trimStart().length), Number.MAX_VALUE) : 0;
+ return lines.map((line) => line.slice(indent).trimRight()).join(`
+`);
+ }
+ function formatMarkdownish(text, { format, paragraphs }) {
+ text = text.replace(/\r\n?/g, `
+`);
+ text = dedent(text);
+ text = text.replace(/^\n+|\n+$/g, ``);
+ text = text.replace(/^(\s*)-([^\n]*?)\n+/gm, `$1-$2
+
+`);
+ text = text.replace(/\n(\n)?\n*/g, ($0, $1) => $1 ? $1 : ` `);
+ if (paragraphs) {
+ text = text.split(/\n/).map((paragraph) => {
+ const bulletMatch = paragraph.match(/^\s*[*-][\t ]+(.*)/);
+ if (!bulletMatch)
+ return paragraph.match(/(.{1,80})(?: |$)/g).join(`
+`);
+ const indent = paragraph.length - paragraph.trimStart().length;
+ return bulletMatch[1].match(new RegExp(`(.{1,${78 - indent}})(?: |$)`, `g`)).map((line, index) => {
+ return ` `.repeat(indent) + (index === 0 ? `- ` : ` `) + line;
+ }).join(`
+`);
+ }).join(`
+
+`);
+ }
+ text = text.replace(/(`+)((?:.|[\n])*?)\1/g, ($0, $1, $2) => {
+ return format.code($1 + $2 + $1);
+ });
+ text = text.replace(/(\*\*)((?:.|[\n])*?)\1/g, ($0, $1, $2) => {
+ return format.bold($1 + $2 + $1);
+ });
+ return text ? `${text}
+` : ``;
+ }
+ exports2.formatMarkdownish = formatMarkdownish;
+ exports2.richFormat = richFormat;
+ exports2.textFormat = textFormat;
+ }
+});
+
+// node_modules/clipanion/lib/advanced/options/utils.js
+var require_utils = __commonJS({
+ "node_modules/clipanion/lib/advanced/options/utils.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ var errors = require_errors();
+ var isOptionSymbol = /* @__PURE__ */ Symbol(`clipanion/isOption`);
+ function makeCommandOption(spec) {
+ return { ...spec, [isOptionSymbol]: true };
+ }
+ function rerouteArguments(a, b) {
+ if (typeof a === `undefined`)
+ return [a, b];
+ if (typeof a === `object` && a !== null && !Array.isArray(a)) {
+ return [void 0, a];
+ } else {
+ return [a, b];
+ }
+ }
+ function cleanValidationError(message, { mergeName = false } = {}) {
+ const match = message.match(/^([^:]+): (.*)$/m);
+ if (!match)
+ return `validation failed`;
+ let [, path16, line] = match;
+ if (mergeName)
+ line = line[0].toLowerCase() + line.slice(1);
+ line = path16 !== `.` || !mergeName ? `${path16.replace(/^\.(\[|$)/, `$1`)}: ${line}` : `: ${line}`;
+ return line;
+ }
+ function formatError(message, errors$1) {
+ if (errors$1.length === 1) {
+ return new errors.UsageError(`${message}${cleanValidationError(errors$1[0], { mergeName: true })}`);
+ } else {
+ return new errors.UsageError(`${message}:
+${errors$1.map((error) => `
+- ${cleanValidationError(error)}`).join(``)}`);
+ }
+ }
+ function applyValidator(name2, value, validator) {
+ if (typeof validator === `undefined`)
+ return value;
+ const errors2 = [];
+ const coercions = [];
+ const coercion = (v) => {
+ const orig = value;
+ value = v;
+ return coercion.bind(null, orig);
+ };
+ const check = validator(value, { errors: errors2, coercions, coercion });
+ if (!check)
+ throw formatError(`Invalid value for ${name2}`, errors2);
+ for (const [, op] of coercions)
+ op();
+ return value;
+ }
+ exports2.applyValidator = applyValidator;
+ exports2.cleanValidationError = cleanValidationError;
+ exports2.formatError = formatError;
+ exports2.isOptionSymbol = isOptionSymbol;
+ exports2.makeCommandOption = makeCommandOption;
+ exports2.rerouteArguments = rerouteArguments;
+ }
+});
+
+// node_modules/typanion/lib/index.mjs
var lib_exports = {};
__export(lib_exports, {
KeyRelationship: () => KeyRelationship,
@@ -946,7 +1196,7 @@ function hasKeyRelationship(subject, relationship, others, options) {
}
var simpleKeyRegExp, colorStringRegExp, colorStringAlphaRegExp, base64RegExp, uuid4RegExp, iso8601RegExp, BOOLEAN_COERCIONS, isInstanceOf, isOneOf, TypeAssertionError, checks, KeyRelationship, keyRelationships;
var init_lib = __esm({
- ".yarn/cache/typanion-npm-3.14.0-8af344c436-8b03b19844.zip/node_modules/typanion/lib/index.mjs"() {
+ "node_modules/typanion/lib/index.mjs"() {
simpleKeyRegExp = /^[a-zA-Z_][a-zA-Z0-9_]*$/;
colorStringRegExp = /^#[0-9a-f]{6}$/i;
colorStringAlphaRegExp = /^#[0-9a-f]{6}([0-9a-f]{2})?$/i;
@@ -1037,14369 +1287,5364 @@ var init_lib = __esm({
}
});
-// .yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/platform/node.js
-var require_node = __commonJS({
- ".yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/platform/node.js"(exports2) {
+// node_modules/clipanion/lib/advanced/Command.js
+var require_Command = __commonJS({
+ "node_modules/clipanion/lib/advanced/Command.js"(exports2) {
"use strict";
Object.defineProperty(exports2, "__esModule", { value: true });
- var tty2 = require("tty");
- function _interopDefaultLegacy(e) {
- return e && typeof e === "object" && "default" in e ? e : { "default": e };
- }
- var tty__default = /* @__PURE__ */ _interopDefaultLegacy(tty2);
- function getDefaultColorDepth2() {
- if (tty__default["default"] && `getColorDepth` in tty__default["default"].WriteStream.prototype)
- return tty__default["default"].WriteStream.prototype.getColorDepth();
- if (process.env.FORCE_COLOR === `0`)
- return 1;
- if (process.env.FORCE_COLOR === `1`)
- return 8;
- if (typeof process.stdout !== `undefined` && process.stdout.isTTY)
- return 8;
- return 1;
- }
- var gContextStorage;
- function getCaptureActivator2(context) {
- let contextStorage = gContextStorage;
- if (typeof contextStorage === `undefined`) {
- if (context.stdout === process.stdout && context.stderr === process.stderr)
- return null;
- const { AsyncLocalStorage: LazyAsyncLocalStorage } = require("async_hooks");
- contextStorage = gContextStorage = new LazyAsyncLocalStorage();
- const origStdoutWrite = process.stdout._write;
- process.stdout._write = function(chunk, encoding, cb) {
- const context2 = contextStorage.getStore();
- if (typeof context2 === `undefined`)
- return origStdoutWrite.call(this, chunk, encoding, cb);
- return context2.stdout.write(chunk, encoding, cb);
- };
- const origStderrWrite = process.stderr._write;
- process.stderr._write = function(chunk, encoding, cb) {
- const context2 = contextStorage.getStore();
- if (typeof context2 === `undefined`)
- return origStderrWrite.call(this, chunk, encoding, cb);
- return context2.stderr.write(chunk, encoding, cb);
- };
+ var advanced_options_utils = require_utils();
+ function _interopNamespace(e) {
+ if (e && e.__esModule) return e;
+ var n = /* @__PURE__ */ Object.create(null);
+ if (e) {
+ Object.keys(e).forEach(function(k) {
+ if (k !== "default") {
+ var d = Object.getOwnPropertyDescriptor(e, k);
+ Object.defineProperty(n, k, d.get ? d : {
+ enumerable: true,
+ get: function() {
+ return e[k];
+ }
+ });
+ }
+ });
}
- return (fn2) => {
- return contextStorage.run(context, fn2);
- };
+ n["default"] = e;
+ return Object.freeze(n);
}
- exports2.getCaptureActivator = getCaptureActivator2;
- exports2.getDefaultColorDepth = getDefaultColorDepth2;
- }
-});
-
-// .yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/internal/debug.js
-var require_debug = __commonJS({
- ".yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/internal/debug.js"(exports2, module2) {
- "use strict";
- var debug2 = typeof process === "object" && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error("SEMVER", ...args) : () => {
- };
- module2.exports = debug2;
- }
-});
-
-// .yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/internal/constants.js
-var require_constants = __commonJS({
- ".yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/internal/constants.js"(exports2, module2) {
- "use strict";
- var SEMVER_SPEC_VERSION = "2.0.0";
- var MAX_LENGTH = 256;
- var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */
- 9007199254740991;
- var MAX_SAFE_COMPONENT_LENGTH = 16;
- var MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6;
- var RELEASE_TYPES = [
- "major",
- "premajor",
- "minor",
- "preminor",
- "patch",
- "prepatch",
- "prerelease"
- ];
- module2.exports = {
- MAX_LENGTH,
- MAX_SAFE_COMPONENT_LENGTH,
- MAX_SAFE_BUILD_LENGTH,
- MAX_SAFE_INTEGER,
- RELEASE_TYPES,
- SEMVER_SPEC_VERSION,
- FLAG_INCLUDE_PRERELEASE: 1,
- FLAG_LOOSE: 2
- };
- }
-});
-
-// .yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/internal/re.js
-var require_re = __commonJS({
- ".yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/internal/re.js"(exports2, module2) {
- "use strict";
- var {
- MAX_SAFE_COMPONENT_LENGTH,
- MAX_SAFE_BUILD_LENGTH,
- MAX_LENGTH
- } = require_constants();
- var debug2 = require_debug();
- exports2 = module2.exports = {};
- var re = exports2.re = [];
- var safeRe = exports2.safeRe = [];
- var src = exports2.src = [];
- var safeSrc = exports2.safeSrc = [];
- var t = exports2.t = {};
- var R = 0;
- var LETTERDASHNUMBER = "[a-zA-Z0-9-]";
- var safeRegexReplacements = [
- ["\\s", 1],
- ["\\d", MAX_LENGTH],
- [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH]
- ];
- var makeSafeRegex = (value) => {
- for (const [token, max] of safeRegexReplacements) {
- value = value.split(`${token}*`).join(`${token}{0,${max}}`).split(`${token}+`).join(`${token}{1,${max}}`);
+ var Command12 = class {
+ constructor() {
+ this.help = false;
}
- return value;
- };
- var createToken = (name2, value, isGlobal) => {
- const safe = makeSafeRegex(value);
- const index = R++;
- debug2(name2, index, value);
- t[name2] = index;
- src[index] = value;
- safeSrc[index] = safe;
- re[index] = new RegExp(value, isGlobal ? "g" : void 0);
- safeRe[index] = new RegExp(safe, isGlobal ? "g" : void 0);
- };
- createToken("NUMERICIDENTIFIER", "0|[1-9]\\d*");
- createToken("NUMERICIDENTIFIERLOOSE", "\\d+");
- createToken("NONNUMERICIDENTIFIER", `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`);
- createToken("MAINVERSION", `(${src[t.NUMERICIDENTIFIER]})\\.(${src[t.NUMERICIDENTIFIER]})\\.(${src[t.NUMERICIDENTIFIER]})`);
- createToken("MAINVERSIONLOOSE", `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.(${src[t.NUMERICIDENTIFIERLOOSE]})\\.(${src[t.NUMERICIDENTIFIERLOOSE]})`);
- createToken("PRERELEASEIDENTIFIER", `(?:${src[t.NONNUMERICIDENTIFIER]}|${src[t.NUMERICIDENTIFIER]})`);
- createToken("PRERELEASEIDENTIFIERLOOSE", `(?:${src[t.NONNUMERICIDENTIFIER]}|${src[t.NUMERICIDENTIFIERLOOSE]})`);
- createToken("PRERELEASE", `(?:-(${src[t.PRERELEASEIDENTIFIER]}(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`);
- createToken("PRERELEASELOOSE", `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`);
- createToken("BUILDIDENTIFIER", `${LETTERDASHNUMBER}+`);
- createToken("BUILD", `(?:\\+(${src[t.BUILDIDENTIFIER]}(?:\\.${src[t.BUILDIDENTIFIER]})*))`);
- createToken("FULLPLAIN", `v?${src[t.MAINVERSION]}${src[t.PRERELEASE]}?${src[t.BUILD]}?`);
- createToken("FULL", `^${src[t.FULLPLAIN]}$`);
- createToken("LOOSEPLAIN", `[v=\\s]*${src[t.MAINVERSIONLOOSE]}${src[t.PRERELEASELOOSE]}?${src[t.BUILD]}?`);
- createToken("LOOSE", `^${src[t.LOOSEPLAIN]}$`);
- createToken("GTLT", "((?:<|>)?=?)");
- createToken("XRANGEIDENTIFIERLOOSE", `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);
- createToken("XRANGEIDENTIFIER", `${src[t.NUMERICIDENTIFIER]}|x|X|\\*`);
- createToken("XRANGEPLAIN", `[v=\\s]*(${src[t.XRANGEIDENTIFIER]})(?:\\.(${src[t.XRANGEIDENTIFIER]})(?:\\.(${src[t.XRANGEIDENTIFIER]})(?:${src[t.PRERELEASE]})?${src[t.BUILD]}?)?)?`);
- createToken("XRANGEPLAINLOOSE", `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:${src[t.PRERELEASELOOSE]})?${src[t.BUILD]}?)?)?`);
- createToken("XRANGE", `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`);
- createToken("XRANGELOOSE", `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`);
- createToken("COERCEPLAIN", `${"(^|[^\\d])(\\d{1,"}${MAX_SAFE_COMPONENT_LENGTH}})(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`);
- createToken("COERCE", `${src[t.COERCEPLAIN]}(?:$|[^\\d])`);
- createToken("COERCEFULL", src[t.COERCEPLAIN] + `(?:${src[t.PRERELEASE]})?(?:${src[t.BUILD]})?(?:$|[^\\d])`);
- createToken("COERCERTL", src[t.COERCE], true);
- createToken("COERCERTLFULL", src[t.COERCEFULL], true);
- createToken("LONETILDE", "(?:~>?)");
- createToken("TILDETRIM", `(\\s*)${src[t.LONETILDE]}\\s+`, true);
- exports2.tildeTrimReplace = "$1~";
- createToken("TILDE", `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`);
- createToken("TILDELOOSE", `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`);
- createToken("LONECARET", "(?:\\^)");
- createToken("CARETTRIM", `(\\s*)${src[t.LONECARET]}\\s+`, true);
- exports2.caretTrimReplace = "$1^";
- createToken("CARET", `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`);
- createToken("CARETLOOSE", `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`);
- createToken("COMPARATORLOOSE", `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`);
- createToken("COMPARATOR", `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`);
- createToken("COMPARATORTRIM", `(\\s*)${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true);
- exports2.comparatorTrimReplace = "$1$2$3";
- createToken("HYPHENRANGE", `^\\s*(${src[t.XRANGEPLAIN]})\\s+-\\s+(${src[t.XRANGEPLAIN]})\\s*$`);
- createToken("HYPHENRANGELOOSE", `^\\s*(${src[t.XRANGEPLAINLOOSE]})\\s+-\\s+(${src[t.XRANGEPLAINLOOSE]})\\s*$`);
- createToken("STAR", "(<|>)?=?\\s*\\*");
- createToken("GTE0", "^\\s*>=\\s*0\\.0\\.0\\s*$");
- createToken("GTE0PRE", "^\\s*>=\\s*0\\.0\\.0-0\\s*$");
- }
-});
-
-// .yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/internal/parse-options.js
-var require_parse_options = __commonJS({
- ".yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/internal/parse-options.js"(exports2, module2) {
- "use strict";
- var looseOption = Object.freeze({ loose: true });
- var emptyOpts = Object.freeze({});
- var parseOptions = (options) => {
- if (!options) {
- return emptyOpts;
+ /**
+ * Defines the usage information for the given command.
+ */
+ static Usage(usage) {
+ return usage;
}
- if (typeof options !== "object") {
- return looseOption;
+ /**
+ * Standard error handler which will simply rethrow the error. Can be used
+ * to add custom logic to handle errors from the command or simply return
+ * the parent class error handling.
+ */
+ async catch(error) {
+ throw error;
+ }
+ async validateAndExecute() {
+ const commandClass = this.constructor;
+ const cascade2 = commandClass.schema;
+ if (Array.isArray(cascade2)) {
+ const { isDict: isDict2, isUnknown: isUnknown2, applyCascade: applyCascade2 } = await Promise.resolve().then(function() {
+ return /* @__PURE__ */ _interopNamespace((init_lib(), __toCommonJS(lib_exports)));
+ });
+ const schema = applyCascade2(isDict2(isUnknown2()), cascade2);
+ const errors = [];
+ const coercions = [];
+ const check = schema(this, { errors, coercions });
+ if (!check)
+ throw advanced_options_utils.formatError(`Invalid option schema`, errors);
+ for (const [, op] of coercions) {
+ op();
+ }
+ } else if (cascade2 != null) {
+ throw new Error(`Invalid command schema`);
+ }
+ const exitCode = await this.execute();
+ if (typeof exitCode !== `undefined`) {
+ return exitCode;
+ } else {
+ return 0;
+ }
}
- return options;
};
- module2.exports = parseOptions;
+ Command12.isOption = advanced_options_utils.isOptionSymbol;
+ Command12.Default = [];
+ exports2.Command = Command12;
}
});
-// .yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/internal/identifiers.js
-var require_identifiers = __commonJS({
- ".yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/internal/identifiers.js"(exports2, module2) {
+// node_modules/clipanion/lib/core.js
+var require_core = __commonJS({
+ "node_modules/clipanion/lib/core.js"(exports2) {
"use strict";
- var numeric = /^[0-9]+$/;
- var compareIdentifiers = (a, b) => {
- if (typeof a === "number" && typeof b === "number") {
- return a === b ? 0 : a < b ? -1 : 1;
- }
- const anum = numeric.test(a);
- const bnum = numeric.test(b);
- if (anum && bnum) {
- a = +a;
- b = +b;
- }
- return a === b ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a < b ? -1 : 1;
- };
- var rcompareIdentifiers = (a, b) => compareIdentifiers(b, a);
- module2.exports = {
- compareIdentifiers,
- rcompareIdentifiers
- };
- }
-});
-
-// .yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/classes/semver.js
-var require_semver = __commonJS({
- ".yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/classes/semver.js"(exports2, module2) {
- "use strict";
- var debug2 = require_debug();
- var { MAX_LENGTH, MAX_SAFE_INTEGER } = require_constants();
- var { safeRe: re, t } = require_re();
- var parseOptions = require_parse_options();
- var { compareIdentifiers } = require_identifiers();
- var SemVer3 = class _SemVer {
- constructor(version2, options) {
- options = parseOptions(options);
- if (version2 instanceof _SemVer) {
- if (version2.loose === !!options.loose && version2.includePrerelease === !!options.includePrerelease) {
- return version2;
- } else {
- version2 = version2.version;
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ var constants2 = require_constants();
+ var errors = require_errors();
+ function debug(str) {
+ if (constants2.DEBUG) {
+ console.log(str);
+ }
+ }
+ var basicHelpState = {
+ candidateUsage: null,
+ requiredOptions: [],
+ errorMessage: null,
+ ignoreOptions: false,
+ path: [],
+ positionals: [],
+ options: [],
+ remainder: null,
+ selectedIndex: constants2.HELP_COMMAND_INDEX
+ };
+ function makeStateMachine() {
+ return {
+ nodes: [makeNode(), makeNode(), makeNode()]
+ };
+ }
+ function makeAnyOfMachine(inputs) {
+ const output = makeStateMachine();
+ const heads = [];
+ let offset = output.nodes.length;
+ for (const input of inputs) {
+ heads.push(offset);
+ for (let t = 0; t < input.nodes.length; ++t)
+ if (!isTerminalNode(t))
+ output.nodes.push(cloneNode(input.nodes[t], offset));
+ offset += input.nodes.length - 2;
+ }
+ for (const head of heads)
+ registerShortcut(output, constants2.NODE_INITIAL, head);
+ return output;
+ }
+ function injectNode(machine, node) {
+ machine.nodes.push(node);
+ return machine.nodes.length - 1;
+ }
+ function simplifyMachine(input) {
+ const visited = /* @__PURE__ */ new Set();
+ const process5 = (node) => {
+ if (visited.has(node))
+ return;
+ visited.add(node);
+ const nodeDef = input.nodes[node];
+ for (const transitions of Object.values(nodeDef.statics))
+ for (const { to } of transitions)
+ process5(to);
+ for (const [, { to }] of nodeDef.dynamics)
+ process5(to);
+ for (const { to } of nodeDef.shortcuts)
+ process5(to);
+ const shortcuts = new Set(nodeDef.shortcuts.map(({ to }) => to));
+ while (nodeDef.shortcuts.length > 0) {
+ const { to } = nodeDef.shortcuts.shift();
+ const toDef = input.nodes[to];
+ for (const [segment, transitions] of Object.entries(toDef.statics)) {
+ const store = !Object.prototype.hasOwnProperty.call(nodeDef.statics, segment) ? nodeDef.statics[segment] = [] : nodeDef.statics[segment];
+ for (const transition of transitions) {
+ if (!store.some(({ to: to2 }) => transition.to === to2)) {
+ store.push(transition);
+ }
+ }
+ }
+ for (const [test, transition] of toDef.dynamics)
+ if (!nodeDef.dynamics.some(([otherTest, { to: to2 }]) => test === otherTest && transition.to === to2))
+ nodeDef.dynamics.push([test, transition]);
+ for (const transition of toDef.shortcuts) {
+ if (!shortcuts.has(transition.to)) {
+ nodeDef.shortcuts.push(transition);
+ shortcuts.add(transition.to);
+ }
}
- } else if (typeof version2 !== "string") {
- throw new TypeError(`Invalid version. Must be a string. Got type "${typeof version2}".`);
- }
- if (version2.length > MAX_LENGTH) {
- throw new TypeError(
- `version is longer than ${MAX_LENGTH} characters`
- );
- }
- debug2("SemVer", version2, options);
- this.options = options;
- this.loose = !!options.loose;
- this.includePrerelease = !!options.includePrerelease;
- const m = version2.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]);
- if (!m) {
- throw new TypeError(`Invalid Version: ${version2}`);
}
- this.raw = version2;
- this.major = +m[1];
- this.minor = +m[2];
- this.patch = +m[3];
- if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
- throw new TypeError("Invalid major version");
+ };
+ process5(constants2.NODE_INITIAL);
+ }
+ function debugMachine(machine, { prefix = `` } = {}) {
+ if (constants2.DEBUG) {
+ debug(`${prefix}Nodes are:`);
+ for (let t = 0; t < machine.nodes.length; ++t) {
+ debug(`${prefix} ${t}: ${JSON.stringify(machine.nodes[t])}`);
+ }
+ }
+ }
+ function runMachineInternal(machine, input, partial = false) {
+ debug(`Running a vm on ${JSON.stringify(input)}`);
+ let branches = [{ node: constants2.NODE_INITIAL, state: {
+ candidateUsage: null,
+ requiredOptions: [],
+ errorMessage: null,
+ ignoreOptions: false,
+ options: [],
+ path: [],
+ positionals: [],
+ remainder: null,
+ selectedIndex: null
+ } }];
+ debugMachine(machine, { prefix: ` ` });
+ const tokens = [constants2.START_OF_INPUT, ...input];
+ for (let t = 0; t < tokens.length; ++t) {
+ const segment = tokens[t];
+ debug(` Processing ${JSON.stringify(segment)}`);
+ const nextBranches = [];
+ for (const { node, state } of branches) {
+ debug(` Current node is ${node}`);
+ const nodeDef = machine.nodes[node];
+ if (node === constants2.NODE_ERRORED) {
+ nextBranches.push({ node, state });
+ continue;
+ }
+ console.assert(nodeDef.shortcuts.length === 0, `Shortcuts should have been eliminated by now`);
+ const hasExactMatch = Object.prototype.hasOwnProperty.call(nodeDef.statics, segment);
+ if (!partial || t < tokens.length - 1 || hasExactMatch) {
+ if (hasExactMatch) {
+ const transitions = nodeDef.statics[segment];
+ for (const { to, reducer } of transitions) {
+ nextBranches.push({ node: to, state: typeof reducer !== `undefined` ? execute(reducers, reducer, state, segment) : state });
+ debug(` Static transition to ${to} found`);
+ }
+ } else {
+ debug(` No static transition found`);
+ }
+ } else {
+ let hasMatches = false;
+ for (const candidate of Object.keys(nodeDef.statics)) {
+ if (!candidate.startsWith(segment))
+ continue;
+ if (segment === candidate) {
+ for (const { to, reducer } of nodeDef.statics[candidate]) {
+ nextBranches.push({ node: to, state: typeof reducer !== `undefined` ? execute(reducers, reducer, state, segment) : state });
+ debug(` Static transition to ${to} found`);
+ }
+ } else {
+ for (const { to } of nodeDef.statics[candidate]) {
+ nextBranches.push({ node: to, state: { ...state, remainder: candidate.slice(segment.length) } });
+ debug(` Static transition to ${to} found (partial match)`);
+ }
+ }
+ hasMatches = true;
+ }
+ if (!hasMatches) {
+ debug(` No partial static transition found`);
+ }
+ }
+ if (segment !== constants2.END_OF_INPUT) {
+ for (const [test, { to, reducer }] of nodeDef.dynamics) {
+ if (execute(tests, test, state, segment)) {
+ nextBranches.push({ node: to, state: typeof reducer !== `undefined` ? execute(reducers, reducer, state, segment) : state });
+ debug(` Dynamic transition to ${to} found (via ${test})`);
+ }
+ }
+ }
}
- if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
- throw new TypeError("Invalid minor version");
+ if (nextBranches.length === 0 && segment === constants2.END_OF_INPUT && input.length === 1) {
+ return [{
+ node: constants2.NODE_INITIAL,
+ state: basicHelpState
+ }];
}
- if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
- throw new TypeError("Invalid patch version");
+ if (nextBranches.length === 0) {
+ throw new errors.UnknownSyntaxError(input, branches.filter(({ node }) => {
+ return node !== constants2.NODE_ERRORED;
+ }).map(({ state }) => {
+ return { usage: state.candidateUsage, reason: null };
+ }));
}
- if (!m[4]) {
- this.prerelease = [];
- } else {
- this.prerelease = m[4].split(".").map((id) => {
- if (/^[0-9]+$/.test(id)) {
- const num = +id;
- if (num >= 0 && num < MAX_SAFE_INTEGER) {
- return num;
- }
- }
- return id;
- });
+ if (nextBranches.every(({ node }) => node === constants2.NODE_ERRORED)) {
+ throw new errors.UnknownSyntaxError(input, nextBranches.map(({ state }) => {
+ return { usage: state.candidateUsage, reason: state.errorMessage };
+ }));
}
- this.build = m[5] ? m[5].split(".") : [];
- this.format();
+ branches = trimSmallerBranches(nextBranches);
}
- format() {
- this.version = `${this.major}.${this.minor}.${this.patch}`;
- if (this.prerelease.length) {
- this.version += `-${this.prerelease.join(".")}`;
+ if (branches.length > 0) {
+ debug(` Results:`);
+ for (const branch of branches) {
+ debug(` - ${branch.node} -> ${JSON.stringify(branch.state)}`);
}
- return this.version;
+ } else {
+ debug(` No results`);
}
- toString() {
- return this.version;
+ return branches;
+ }
+ function checkIfNodeIsFinished(node, state) {
+ if (state.selectedIndex !== null)
+ return true;
+ if (Object.prototype.hasOwnProperty.call(node.statics, constants2.END_OF_INPUT)) {
+ for (const { to } of node.statics[constants2.END_OF_INPUT])
+ if (to === constants2.NODE_SUCCESS)
+ return true;
}
- compare(other) {
- debug2("SemVer.compare", this.version, this.options, other);
- if (!(other instanceof _SemVer)) {
- if (typeof other === "string" && other === this.version) {
- return 0;
+ return false;
+ }
+ function suggestMachine(machine, input, partial) {
+ const prefix = partial && input.length > 0 ? [``] : [];
+ const branches = runMachineInternal(machine, input, partial);
+ const suggestions = [];
+ const suggestionsJson = /* @__PURE__ */ new Set();
+ const traverseSuggestion = (suggestion, node, skipFirst = true) => {
+ let nextNodes = [node];
+ while (nextNodes.length > 0) {
+ const currentNodes = nextNodes;
+ nextNodes = [];
+ for (const node2 of currentNodes) {
+ const nodeDef = machine.nodes[node2];
+ const keys = Object.keys(nodeDef.statics);
+ for (const key of Object.keys(nodeDef.statics)) {
+ const segment = keys[0];
+ for (const { to, reducer } of nodeDef.statics[segment]) {
+ if (reducer !== `pushPath`)
+ continue;
+ if (!skipFirst)
+ suggestion.push(segment);
+ nextNodes.push(to);
+ }
+ }
}
- other = new _SemVer(other, this.options);
- }
- if (other.version === this.version) {
- return 0;
+ skipFirst = false;
}
- return this.compareMain(other) || this.comparePre(other);
- }
- compareMain(other) {
- if (!(other instanceof _SemVer)) {
- other = new _SemVer(other, this.options);
- }
- if (this.major < other.major) {
- return -1;
- }
- if (this.major > other.major) {
- return 1;
- }
- if (this.minor < other.minor) {
- return -1;
- }
- if (this.minor > other.minor) {
- return 1;
+ const json = JSON.stringify(suggestion);
+ if (suggestionsJson.has(json))
+ return;
+ suggestions.push(suggestion);
+ suggestionsJson.add(json);
+ };
+ for (const { node, state } of branches) {
+ if (state.remainder !== null) {
+ traverseSuggestion([state.remainder], node);
+ continue;
}
- if (this.patch < other.patch) {
- return -1;
+ const nodeDef = machine.nodes[node];
+ const isFinished = checkIfNodeIsFinished(nodeDef, state);
+ for (const [candidate, transitions] of Object.entries(nodeDef.statics))
+ if (isFinished && candidate !== constants2.END_OF_INPUT || !candidate.startsWith(`-`) && transitions.some(({ reducer }) => reducer === `pushPath`))
+ traverseSuggestion([...prefix, candidate], node);
+ if (!isFinished)
+ continue;
+ for (const [test, { to }] of nodeDef.dynamics) {
+ if (to === constants2.NODE_ERRORED)
+ continue;
+ const tokens = suggest(test, state);
+ if (tokens === null)
+ continue;
+ for (const token of tokens) {
+ traverseSuggestion([...prefix, token], node);
+ }
}
- if (this.patch > other.patch) {
- return 1;
+ }
+ return [...suggestions].sort();
+ }
+ function runMachine(machine, input) {
+ const branches = runMachineInternal(machine, [...input, constants2.END_OF_INPUT]);
+ return selectBestState(input, branches.map(({ state }) => {
+ return state;
+ }));
+ }
+ function trimSmallerBranches(branches) {
+ let maxPathSize = 0;
+ for (const { state } of branches)
+ if (state.path.length > maxPathSize)
+ maxPathSize = state.path.length;
+ return branches.filter(({ state }) => {
+ return state.path.length === maxPathSize;
+ });
+ }
+ function selectBestState(input, states) {
+ const terminalStates = states.filter((state) => {
+ return state.selectedIndex !== null;
+ });
+ if (terminalStates.length === 0)
+ throw new Error();
+ const requiredOptionsSetStates = terminalStates.filter((state) => state.selectedIndex === constants2.HELP_COMMAND_INDEX || state.requiredOptions.every((names) => names.some((name2) => state.options.find((opt) => opt.name === name2))));
+ if (requiredOptionsSetStates.length === 0) {
+ throw new errors.UnknownSyntaxError(input, terminalStates.map((state) => ({
+ usage: state.candidateUsage,
+ reason: null
+ })));
+ }
+ let maxPathSize = 0;
+ for (const state of requiredOptionsSetStates)
+ if (state.path.length > maxPathSize)
+ maxPathSize = state.path.length;
+ const bestPathBranches = requiredOptionsSetStates.filter((state) => {
+ return state.path.length === maxPathSize;
+ });
+ const getPositionalCount = (state) => state.positionals.filter(({ extra }) => {
+ return !extra;
+ }).length + state.options.length;
+ const statesWithPositionalCount = bestPathBranches.map((state) => {
+ return { state, positionalCount: getPositionalCount(state) };
+ });
+ let maxPositionalCount = 0;
+ for (const { positionalCount } of statesWithPositionalCount)
+ if (positionalCount > maxPositionalCount)
+ maxPositionalCount = positionalCount;
+ const bestPositionalStates = statesWithPositionalCount.filter(({ positionalCount }) => {
+ return positionalCount === maxPositionalCount;
+ }).map(({ state }) => {
+ return state;
+ });
+ const fixedStates = aggregateHelpStates(bestPositionalStates);
+ if (fixedStates.length > 1)
+ throw new errors.AmbiguousSyntaxError(input, fixedStates.map((state) => state.candidateUsage));
+ return fixedStates[0];
+ }
+ function aggregateHelpStates(states) {
+ const notHelps = [];
+ const helps = [];
+ for (const state of states) {
+ if (state.selectedIndex === constants2.HELP_COMMAND_INDEX) {
+ helps.push(state);
+ } else {
+ notHelps.push(state);
}
- return 0;
}
- comparePre(other) {
- if (!(other instanceof _SemVer)) {
- other = new _SemVer(other, this.options);
+ if (helps.length > 0) {
+ notHelps.push({
+ ...basicHelpState,
+ path: findCommonPrefix(...helps.map((state) => state.path)),
+ options: helps.reduce((options, state) => options.concat(state.options), [])
+ });
+ }
+ return notHelps;
+ }
+ function findCommonPrefix(firstPath, secondPath, ...rest) {
+ if (secondPath === void 0)
+ return Array.from(firstPath);
+ return findCommonPrefix(firstPath.filter((segment, i) => segment === secondPath[i]), ...rest);
+ }
+ function makeNode() {
+ return {
+ dynamics: [],
+ shortcuts: [],
+ statics: {}
+ };
+ }
+ function isTerminalNode(node) {
+ return node === constants2.NODE_SUCCESS || node === constants2.NODE_ERRORED;
+ }
+ function cloneTransition(input, offset = 0) {
+ return {
+ to: !isTerminalNode(input.to) ? input.to > 2 ? input.to + offset - 2 : input.to + offset : input.to,
+ reducer: input.reducer
+ };
+ }
+ function cloneNode(input, offset = 0) {
+ const output = makeNode();
+ for (const [test, transition] of input.dynamics)
+ output.dynamics.push([test, cloneTransition(transition, offset)]);
+ for (const transition of input.shortcuts)
+ output.shortcuts.push(cloneTransition(transition, offset));
+ for (const [segment, transitions] of Object.entries(input.statics))
+ output.statics[segment] = transitions.map((transition) => cloneTransition(transition, offset));
+ return output;
+ }
+ function registerDynamic(machine, from, test, to, reducer) {
+ machine.nodes[from].dynamics.push([
+ test,
+ { to, reducer }
+ ]);
+ }
+ function registerShortcut(machine, from, to, reducer) {
+ machine.nodes[from].shortcuts.push({ to, reducer });
+ }
+ function registerStatic(machine, from, test, to, reducer) {
+ const store = !Object.prototype.hasOwnProperty.call(machine.nodes[from].statics, test) ? machine.nodes[from].statics[test] = [] : machine.nodes[from].statics[test];
+ store.push({ to, reducer });
+ }
+ function execute(store, callback, state, segment) {
+ if (Array.isArray(callback)) {
+ const [name2, ...args] = callback;
+ return store[name2](state, segment, ...args);
+ } else {
+ return store[callback](state, segment);
+ }
+ }
+ function suggest(callback, state) {
+ const fn2 = Array.isArray(callback) ? tests[callback[0]] : tests[callback];
+ if (typeof fn2.suggest === `undefined`)
+ return null;
+ const args = Array.isArray(callback) ? callback.slice(1) : [];
+ return fn2.suggest(state, ...args);
+ }
+ var tests = {
+ always: () => {
+ return true;
+ },
+ isOptionLike: (state, segment) => {
+ return !state.ignoreOptions && (segment !== `-` && segment.startsWith(`-`));
+ },
+ isNotOptionLike: (state, segment) => {
+ return state.ignoreOptions || segment === `-` || !segment.startsWith(`-`);
+ },
+ isOption: (state, segment, name2, hidden) => {
+ return !state.ignoreOptions && segment === name2;
+ },
+ isBatchOption: (state, segment, names) => {
+ return !state.ignoreOptions && constants2.BATCH_REGEX.test(segment) && [...segment.slice(1)].every((name2) => names.includes(`-${name2}`));
+ },
+ isBoundOption: (state, segment, names, options) => {
+ const optionParsing = segment.match(constants2.BINDING_REGEX);
+ return !state.ignoreOptions && !!optionParsing && constants2.OPTION_REGEX.test(optionParsing[1]) && names.includes(optionParsing[1]) && options.filter((opt) => opt.names.includes(optionParsing[1])).every((opt) => opt.allowBinding);
+ },
+ isNegatedOption: (state, segment, name2) => {
+ return !state.ignoreOptions && segment === `--no-${name2.slice(2)}`;
+ },
+ isHelp: (state, segment) => {
+ return !state.ignoreOptions && constants2.HELP_REGEX.test(segment);
+ },
+ isUnsupportedOption: (state, segment, names) => {
+ return !state.ignoreOptions && segment.startsWith(`-`) && constants2.OPTION_REGEX.test(segment) && !names.includes(segment);
+ },
+ isInvalidOption: (state, segment) => {
+ return !state.ignoreOptions && segment.startsWith(`-`) && !constants2.OPTION_REGEX.test(segment);
+ }
+ };
+ tests.isOption.suggest = (state, name2, hidden = true) => {
+ return !hidden ? [name2] : null;
+ };
+ var reducers = {
+ setCandidateState: (state, segment, candidateState) => {
+ return { ...state, ...candidateState };
+ },
+ setSelectedIndex: (state, segment, index) => {
+ return { ...state, selectedIndex: index };
+ },
+ pushBatch: (state, segment) => {
+ return { ...state, options: state.options.concat([...segment.slice(1)].map((name2) => ({ name: `-${name2}`, value: true }))) };
+ },
+ pushBound: (state, segment) => {
+ const [, name2, value] = segment.match(constants2.BINDING_REGEX);
+ return { ...state, options: state.options.concat({ name: name2, value }) };
+ },
+ pushPath: (state, segment) => {
+ return { ...state, path: state.path.concat(segment) };
+ },
+ pushPositional: (state, segment) => {
+ return { ...state, positionals: state.positionals.concat({ value: segment, extra: false }) };
+ },
+ pushExtra: (state, segment) => {
+ return { ...state, positionals: state.positionals.concat({ value: segment, extra: true }) };
+ },
+ pushExtraNoLimits: (state, segment) => {
+ return { ...state, positionals: state.positionals.concat({ value: segment, extra: NoLimits }) };
+ },
+ pushTrue: (state, segment, name2 = segment) => {
+ return { ...state, options: state.options.concat({ name: segment, value: true }) };
+ },
+ pushFalse: (state, segment, name2 = segment) => {
+ return { ...state, options: state.options.concat({ name: name2, value: false }) };
+ },
+ pushUndefined: (state, segment) => {
+ return { ...state, options: state.options.concat({ name: segment, value: void 0 }) };
+ },
+ pushStringValue: (state, segment) => {
+ var _a;
+ const copy = { ...state, options: [...state.options] };
+ const lastOption = state.options[state.options.length - 1];
+ lastOption.value = ((_a = lastOption.value) !== null && _a !== void 0 ? _a : []).concat([segment]);
+ return copy;
+ },
+ setStringValue: (state, segment) => {
+ const copy = { ...state, options: [...state.options] };
+ const lastOption = state.options[state.options.length - 1];
+ lastOption.value = segment;
+ return copy;
+ },
+ inhibateOptions: (state) => {
+ return { ...state, ignoreOptions: true };
+ },
+ useHelp: (state, segment, command) => {
+ const [
+ ,
+ /* name */
+ ,
+ index
+ ] = segment.match(constants2.HELP_REGEX);
+ if (typeof index !== `undefined`) {
+ return { ...state, options: [{ name: `-c`, value: String(command) }, { name: `-i`, value: index }] };
+ } else {
+ return { ...state, options: [{ name: `-c`, value: String(command) }] };
}
- if (this.prerelease.length && !other.prerelease.length) {
- return -1;
- } else if (!this.prerelease.length && other.prerelease.length) {
- return 1;
- } else if (!this.prerelease.length && !other.prerelease.length) {
- return 0;
+ },
+ setError: (state, segment, errorMessage) => {
+ if (segment === constants2.END_OF_INPUT) {
+ return { ...state, errorMessage: `${errorMessage}.` };
+ } else {
+ return { ...state, errorMessage: `${errorMessage} ("${segment}").` };
}
- let i = 0;
- do {
- const a = this.prerelease[i];
- const b = other.prerelease[i];
- debug2("prerelease compare", i, a, b);
- if (a === void 0 && b === void 0) {
- return 0;
- } else if (b === void 0) {
- return 1;
- } else if (a === void 0) {
- return -1;
- } else if (a === b) {
- continue;
- } else {
- return compareIdentifiers(a, b);
- }
- } while (++i);
+ },
+ setOptionArityError: (state, segment) => {
+ const lastOption = state.options[state.options.length - 1];
+ return { ...state, errorMessage: `Not enough arguments to option ${lastOption.name}.` };
+ }
+ };
+ var NoLimits = /* @__PURE__ */ Symbol();
+ var CommandBuilder = class {
+ constructor(cliIndex, cliOpts) {
+ this.allOptionNames = [];
+ this.arity = { leading: [], trailing: [], extra: [], proxy: false };
+ this.options = [];
+ this.paths = [];
+ this.cliIndex = cliIndex;
+ this.cliOpts = cliOpts;
+ }
+ addPath(path16) {
+ this.paths.push(path16);
+ }
+ setArity({ leading = this.arity.leading, trailing = this.arity.trailing, extra = this.arity.extra, proxy = this.arity.proxy }) {
+ Object.assign(this.arity, { leading, trailing, extra, proxy });
+ }
+ addPositional({ name: name2 = `arg`, required = true } = {}) {
+ if (!required && this.arity.extra === NoLimits)
+ throw new Error(`Optional parameters cannot be declared when using .rest() or .proxy()`);
+ if (!required && this.arity.trailing.length > 0)
+ throw new Error(`Optional parameters cannot be declared after the required trailing positional arguments`);
+ if (!required && this.arity.extra !== NoLimits) {
+ this.arity.extra.push(name2);
+ } else if (this.arity.extra !== NoLimits && this.arity.extra.length === 0) {
+ this.arity.leading.push(name2);
+ } else {
+ this.arity.trailing.push(name2);
+ }
+ }
+ addRest({ name: name2 = `arg`, required = 0 } = {}) {
+ if (this.arity.extra === NoLimits)
+ throw new Error(`Infinite lists cannot be declared multiple times in the same command`);
+ if (this.arity.trailing.length > 0)
+ throw new Error(`Infinite lists cannot be declared after the required trailing positional arguments`);
+ for (let t = 0; t < required; ++t)
+ this.addPositional({ name: name2 });
+ this.arity.extra = NoLimits;
+ }
+ addProxy({ required = 0 } = {}) {
+ this.addRest({ required });
+ this.arity.proxy = true;
+ }
+ addOption({ names, description, arity = 0, hidden = false, required = false, allowBinding = true }) {
+ if (!allowBinding && arity > 1)
+ throw new Error(`The arity cannot be higher than 1 when the option only supports the --arg=value syntax`);
+ if (!Number.isInteger(arity))
+ throw new Error(`The arity must be an integer, got ${arity}`);
+ if (arity < 0)
+ throw new Error(`The arity must be positive, got ${arity}`);
+ this.allOptionNames.push(...names);
+ this.options.push({ names, description, arity, hidden, required, allowBinding });
+ }
+ setContext(context) {
+ this.context = context;
}
- compareBuild(other) {
- if (!(other instanceof _SemVer)) {
- other = new _SemVer(other, this.options);
+ usage({ detailed = true, inlineOptions = true } = {}) {
+ const segments = [this.cliOpts.binaryName];
+ const detailedOptionList = [];
+ if (this.paths.length > 0)
+ segments.push(...this.paths[0]);
+ if (detailed) {
+ for (const { names, arity, hidden, description, required } of this.options) {
+ if (hidden)
+ continue;
+ const args = [];
+ for (let t = 0; t < arity; ++t)
+ args.push(` #${t}`);
+ const definition = `${names.join(`,`)}${args.join(``)}`;
+ if (!inlineOptions && description) {
+ detailedOptionList.push({ definition, description, required });
+ } else {
+ segments.push(required ? `<${definition}>` : `[${definition}]`);
+ }
+ }
+ segments.push(...this.arity.leading.map((name2) => `<${name2}>`));
+ if (this.arity.extra === NoLimits)
+ segments.push(`...`);
+ else
+ segments.push(...this.arity.extra.map((name2) => `[${name2}]`));
+ segments.push(...this.arity.trailing.map((name2) => `<${name2}>`));
+ }
+ const usage = segments.join(` `);
+ return { usage, options: detailedOptionList };
+ }
+ compile() {
+ if (typeof this.context === `undefined`)
+ throw new Error(`Assertion failed: No context attached`);
+ const machine = makeStateMachine();
+ let firstNode = constants2.NODE_INITIAL;
+ const candidateUsage = this.usage().usage;
+ const requiredOptions = this.options.filter((opt) => opt.required).map((opt) => opt.names);
+ firstNode = injectNode(machine, makeNode());
+ registerStatic(machine, constants2.NODE_INITIAL, constants2.START_OF_INPUT, firstNode, [`setCandidateState`, { candidateUsage, requiredOptions }]);
+ const positionalArgument = this.arity.proxy ? `always` : `isNotOptionLike`;
+ const paths = this.paths.length > 0 ? this.paths : [[]];
+ for (const path16 of paths) {
+ let lastPathNode = firstNode;
+ if (path16.length > 0) {
+ const optionPathNode = injectNode(machine, makeNode());
+ registerShortcut(machine, lastPathNode, optionPathNode);
+ this.registerOptions(machine, optionPathNode);
+ lastPathNode = optionPathNode;
+ }
+ for (let t = 0; t < path16.length; ++t) {
+ const nextPathNode = injectNode(machine, makeNode());
+ registerStatic(machine, lastPathNode, path16[t], nextPathNode, `pushPath`);
+ lastPathNode = nextPathNode;
+ }
+ if (this.arity.leading.length > 0 || !this.arity.proxy) {
+ const helpNode = injectNode(machine, makeNode());
+ registerDynamic(machine, lastPathNode, `isHelp`, helpNode, [`useHelp`, this.cliIndex]);
+ registerDynamic(machine, helpNode, `always`, helpNode, `pushExtra`);
+ registerStatic(machine, helpNode, constants2.END_OF_INPUT, constants2.NODE_SUCCESS, [`setSelectedIndex`, constants2.HELP_COMMAND_INDEX]);
+ this.registerOptions(machine, lastPathNode);
+ }
+ if (this.arity.leading.length > 0)
+ registerStatic(machine, lastPathNode, constants2.END_OF_INPUT, constants2.NODE_ERRORED, [`setError`, `Not enough positional arguments`]);
+ let lastLeadingNode = lastPathNode;
+ for (let t = 0; t < this.arity.leading.length; ++t) {
+ const nextLeadingNode = injectNode(machine, makeNode());
+ if (!this.arity.proxy || t + 1 !== this.arity.leading.length)
+ this.registerOptions(machine, nextLeadingNode);
+ if (this.arity.trailing.length > 0 || t + 1 !== this.arity.leading.length)
+ registerStatic(machine, nextLeadingNode, constants2.END_OF_INPUT, constants2.NODE_ERRORED, [`setError`, `Not enough positional arguments`]);
+ registerDynamic(machine, lastLeadingNode, `isNotOptionLike`, nextLeadingNode, `pushPositional`);
+ lastLeadingNode = nextLeadingNode;
+ }
+ let lastExtraNode = lastLeadingNode;
+ if (this.arity.extra === NoLimits || this.arity.extra.length > 0) {
+ const extraShortcutNode = injectNode(machine, makeNode());
+ registerShortcut(machine, lastLeadingNode, extraShortcutNode);
+ if (this.arity.extra === NoLimits) {
+ const extraNode = injectNode(machine, makeNode());
+ if (!this.arity.proxy)
+ this.registerOptions(machine, extraNode);
+ registerDynamic(machine, lastLeadingNode, positionalArgument, extraNode, `pushExtraNoLimits`);
+ registerDynamic(machine, extraNode, positionalArgument, extraNode, `pushExtraNoLimits`);
+ registerShortcut(machine, extraNode, extraShortcutNode);
+ } else {
+ for (let t = 0; t < this.arity.extra.length; ++t) {
+ const nextExtraNode = injectNode(machine, makeNode());
+ if (!this.arity.proxy || t > 0)
+ this.registerOptions(machine, nextExtraNode);
+ registerDynamic(machine, lastExtraNode, positionalArgument, nextExtraNode, `pushExtra`);
+ registerShortcut(machine, nextExtraNode, extraShortcutNode);
+ lastExtraNode = nextExtraNode;
+ }
+ }
+ lastExtraNode = extraShortcutNode;
+ }
+ if (this.arity.trailing.length > 0)
+ registerStatic(machine, lastExtraNode, constants2.END_OF_INPUT, constants2.NODE_ERRORED, [`setError`, `Not enough positional arguments`]);
+ let lastTrailingNode = lastExtraNode;
+ for (let t = 0; t < this.arity.trailing.length; ++t) {
+ const nextTrailingNode = injectNode(machine, makeNode());
+ if (!this.arity.proxy)
+ this.registerOptions(machine, nextTrailingNode);
+ if (t + 1 < this.arity.trailing.length)
+ registerStatic(machine, nextTrailingNode, constants2.END_OF_INPUT, constants2.NODE_ERRORED, [`setError`, `Not enough positional arguments`]);
+ registerDynamic(machine, lastTrailingNode, `isNotOptionLike`, nextTrailingNode, `pushPositional`);
+ lastTrailingNode = nextTrailingNode;
+ }
+ registerDynamic(machine, lastTrailingNode, positionalArgument, constants2.NODE_ERRORED, [`setError`, `Extraneous positional argument`]);
+ registerStatic(machine, lastTrailingNode, constants2.END_OF_INPUT, constants2.NODE_SUCCESS, [`setSelectedIndex`, this.cliIndex]);
}
- let i = 0;
- do {
- const a = this.build[i];
- const b = other.build[i];
- debug2("build compare", i, a, b);
- if (a === void 0 && b === void 0) {
- return 0;
- } else if (b === void 0) {
- return 1;
- } else if (a === void 0) {
- return -1;
- } else if (a === b) {
- continue;
+ return {
+ machine,
+ context: this.context
+ };
+ }
+ registerOptions(machine, node) {
+ registerDynamic(machine, node, [`isOption`, `--`], node, `inhibateOptions`);
+ registerDynamic(machine, node, [`isBatchOption`, this.allOptionNames], node, `pushBatch`);
+ registerDynamic(machine, node, [`isBoundOption`, this.allOptionNames, this.options], node, `pushBound`);
+ registerDynamic(machine, node, [`isUnsupportedOption`, this.allOptionNames], constants2.NODE_ERRORED, [`setError`, `Unsupported option name`]);
+ registerDynamic(machine, node, [`isInvalidOption`], constants2.NODE_ERRORED, [`setError`, `Invalid option name`]);
+ for (const option of this.options) {
+ const longestName = option.names.reduce((longestName2, name2) => {
+ return name2.length > longestName2.length ? name2 : longestName2;
+ }, ``);
+ if (option.arity === 0) {
+ for (const name2 of option.names) {
+ registerDynamic(machine, node, [`isOption`, name2, option.hidden || name2 !== longestName], node, `pushTrue`);
+ if (name2.startsWith(`--`) && !name2.startsWith(`--no-`)) {
+ registerDynamic(machine, node, [`isNegatedOption`, name2], node, [`pushFalse`, name2]);
+ }
+ }
} else {
- return compareIdentifiers(a, b);
+ let lastNode = injectNode(machine, makeNode());
+ for (const name2 of option.names)
+ registerDynamic(machine, node, [`isOption`, name2, option.hidden || name2 !== longestName], lastNode, `pushUndefined`);
+ for (let t = 0; t < option.arity; ++t) {
+ const nextNode = injectNode(machine, makeNode());
+ registerStatic(machine, lastNode, constants2.END_OF_INPUT, constants2.NODE_ERRORED, `setOptionArityError`);
+ registerDynamic(machine, lastNode, `isOptionLike`, constants2.NODE_ERRORED, `setOptionArityError`);
+ const action = option.arity === 1 ? `setStringValue` : `pushStringValue`;
+ registerDynamic(machine, lastNode, `isNotOptionLike`, nextNode, action);
+ lastNode = nextNode;
+ }
+ registerShortcut(machine, lastNode, node);
}
- } while (++i);
+ }
}
- // preminor will bump the version up to the next minor release, and immediately
- // down to pre-release. premajor and prepatch work the same way.
- inc(release, identifier, identifierBase) {
- if (release.startsWith("pre")) {
- if (!identifier && identifierBase === false) {
- throw new Error("invalid increment argument: identifier is empty");
- }
- if (identifier) {
- const match = `-${identifier}`.match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE]);
- if (!match || match[1] !== identifier) {
- throw new Error(`invalid identifier: ${identifier}`);
- }
- }
- }
- switch (release) {
- case "premajor":
- this.prerelease.length = 0;
- this.patch = 0;
- this.minor = 0;
- this.major++;
- this.inc("pre", identifier, identifierBase);
- break;
- case "preminor":
- this.prerelease.length = 0;
- this.patch = 0;
- this.minor++;
- this.inc("pre", identifier, identifierBase);
- break;
- case "prepatch":
- this.prerelease.length = 0;
- this.inc("patch", identifier, identifierBase);
- this.inc("pre", identifier, identifierBase);
- break;
- // If the input is a non-prerelease version, this acts the same as
- // prepatch.
- case "prerelease":
- if (this.prerelease.length === 0) {
- this.inc("patch", identifier, identifierBase);
- }
- this.inc("pre", identifier, identifierBase);
- break;
- case "release":
- if (this.prerelease.length === 0) {
- throw new Error(`version ${this.raw} is not a prerelease`);
- }
- this.prerelease.length = 0;
- break;
- case "major":
- if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {
- this.major++;
- }
- this.minor = 0;
- this.patch = 0;
- this.prerelease = [];
- break;
- case "minor":
- if (this.patch !== 0 || this.prerelease.length === 0) {
- this.minor++;
- }
- this.patch = 0;
- this.prerelease = [];
- break;
- case "patch":
- if (this.prerelease.length === 0) {
- this.patch++;
- }
- this.prerelease = [];
- break;
- // This probably shouldn't be used publicly.
- // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.
- case "pre": {
- const base = Number(identifierBase) ? 1 : 0;
- if (this.prerelease.length === 0) {
- this.prerelease = [base];
- } else {
- let i = this.prerelease.length;
- while (--i >= 0) {
- if (typeof this.prerelease[i] === "number") {
- this.prerelease[i]++;
- i = -2;
- }
- }
- if (i === -1) {
- if (identifier === this.prerelease.join(".") && identifierBase === false) {
- throw new Error("invalid increment argument: identifier already exists");
- }
- this.prerelease.push(base);
- }
- }
- if (identifier) {
- let prerelease = [identifier, base];
- if (identifierBase === false) {
- prerelease = [identifier];
- }
- if (compareIdentifiers(this.prerelease[0], identifier) === 0) {
- if (isNaN(this.prerelease[1])) {
- this.prerelease = prerelease;
- }
- } else {
- this.prerelease = prerelease;
- }
- }
- break;
- }
- default:
- throw new Error(`invalid increment argument: ${release}`);
- }
- this.raw = this.format();
- if (this.build.length) {
- this.raw += `+${this.build.join(".")}`;
- }
+ };
+ var CliBuilder = class _CliBuilder {
+ constructor({ binaryName = `...` } = {}) {
+ this.builders = [];
+ this.opts = { binaryName };
+ }
+ static build(cbs, opts = {}) {
+ return new _CliBuilder(opts).commands(cbs).compile();
+ }
+ getBuilderByIndex(n) {
+ if (!(n >= 0 && n < this.builders.length))
+ throw new Error(`Assertion failed: Out-of-bound command index (${n})`);
+ return this.builders[n];
+ }
+ commands(cbs) {
+ for (const cb of cbs)
+ cb(this.command());
return this;
}
+ command() {
+ const builder = new CommandBuilder(this.builders.length, this.opts);
+ this.builders.push(builder);
+ return builder;
+ }
+ compile() {
+ const machines = [];
+ const contexts = [];
+ for (const builder of this.builders) {
+ const { machine: machine2, context } = builder.compile();
+ machines.push(machine2);
+ contexts.push(context);
+ }
+ const machine = makeAnyOfMachine(machines);
+ simplifyMachine(machine);
+ return {
+ machine,
+ contexts,
+ process: (input) => {
+ return runMachine(machine, input);
+ },
+ suggest: (input, partial) => {
+ return suggestMachine(machine, input, partial);
+ }
+ };
+ }
};
- module2.exports = SemVer3;
- }
-});
-
-// .yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/functions/compare.js
-var require_compare = __commonJS({
- ".yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/functions/compare.js"(exports2, module2) {
- "use strict";
- var SemVer3 = require_semver();
- var compare = (a, b, loose) => new SemVer3(a, loose).compare(new SemVer3(b, loose));
- module2.exports = compare;
- }
-});
-
-// .yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/functions/rcompare.js
-var require_rcompare = __commonJS({
- ".yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/functions/rcompare.js"(exports2, module2) {
- "use strict";
- var compare = require_compare();
- var rcompare = (a, b, loose) => compare(b, a, loose);
- module2.exports = rcompare;
+ exports2.CliBuilder = CliBuilder;
+ exports2.CommandBuilder = CommandBuilder;
+ exports2.NoLimits = NoLimits;
+ exports2.aggregateHelpStates = aggregateHelpStates;
+ exports2.cloneNode = cloneNode;
+ exports2.cloneTransition = cloneTransition;
+ exports2.debug = debug;
+ exports2.debugMachine = debugMachine;
+ exports2.execute = execute;
+ exports2.injectNode = injectNode;
+ exports2.isTerminalNode = isTerminalNode;
+ exports2.makeAnyOfMachine = makeAnyOfMachine;
+ exports2.makeNode = makeNode;
+ exports2.makeStateMachine = makeStateMachine;
+ exports2.reducers = reducers;
+ exports2.registerDynamic = registerDynamic;
+ exports2.registerShortcut = registerShortcut;
+ exports2.registerStatic = registerStatic;
+ exports2.runMachineInternal = runMachineInternal;
+ exports2.selectBestState = selectBestState;
+ exports2.simplifyMachine = simplifyMachine;
+ exports2.suggest = suggest;
+ exports2.tests = tests;
+ exports2.trimSmallerBranches = trimSmallerBranches;
+ }
+});
+
+// node_modules/clipanion/lib/platform/node.mjs
+var node_exports = {};
+__export(node_exports, {
+ getCaptureActivator: () => getCaptureActivator,
+ getDefaultColorDepth: () => getDefaultColorDepth
+});
+function getDefaultColorDepth() {
+ if (import_tty.default && `getColorDepth` in import_tty.default.WriteStream.prototype)
+ return import_tty.default.WriteStream.prototype.getColorDepth();
+ if (process.env.FORCE_COLOR === `0`)
+ return 1;
+ if (process.env.FORCE_COLOR === `1`)
+ return 8;
+ if (typeof process.stdout !== `undefined` && process.stdout.isTTY)
+ return 8;
+ return 1;
+}
+function getCaptureActivator(context) {
+ let contextStorage = gContextStorage;
+ if (typeof contextStorage === `undefined`) {
+ if (context.stdout === process.stdout && context.stderr === process.stderr)
+ return null;
+ const { AsyncLocalStorage: LazyAsyncLocalStorage } = require("async_hooks");
+ contextStorage = gContextStorage = new LazyAsyncLocalStorage();
+ const origStdoutWrite = process.stdout._write;
+ process.stdout._write = function(chunk, encoding, cb) {
+ const context2 = contextStorage.getStore();
+ if (typeof context2 === `undefined`)
+ return origStdoutWrite.call(this, chunk, encoding, cb);
+ return context2.stdout.write(chunk, encoding, cb);
+ };
+ const origStderrWrite = process.stderr._write;
+ process.stderr._write = function(chunk, encoding, cb) {
+ const context2 = contextStorage.getStore();
+ if (typeof context2 === `undefined`)
+ return origStderrWrite.call(this, chunk, encoding, cb);
+ return context2.stderr.write(chunk, encoding, cb);
+ };
+ }
+ return (fn2) => {
+ return contextStorage.run(context, fn2);
+ };
+}
+var import_tty, gContextStorage;
+var init_node = __esm({
+ "node_modules/clipanion/lib/platform/node.mjs"() {
+ import_tty = __toESM(require("tty"), 1);
}
});
-// .yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/functions/parse.js
-var require_parse = __commonJS({
- ".yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/functions/parse.js"(exports2, module2) {
+// node_modules/clipanion/lib/advanced/HelpCommand.js
+var require_HelpCommand = __commonJS({
+ "node_modules/clipanion/lib/advanced/HelpCommand.js"(exports2) {
"use strict";
- var SemVer3 = require_semver();
- var parse4 = (version2, options, throwErrors = false) => {
- if (version2 instanceof SemVer3) {
- return version2;
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ var advanced_Command = require_Command();
+ var HelpCommand = class _HelpCommand extends advanced_Command.Command {
+ constructor(contexts) {
+ super();
+ this.contexts = contexts;
+ this.commands = [];
+ }
+ static from(state, contexts) {
+ const command = new _HelpCommand(contexts);
+ command.path = state.path;
+ for (const opt of state.options) {
+ switch (opt.name) {
+ case `-c`:
+ {
+ command.commands.push(Number(opt.value));
+ }
+ break;
+ case `-i`:
+ {
+ command.index = Number(opt.value);
+ }
+ break;
+ }
+ }
+ return command;
}
- try {
- return new SemVer3(version2, options);
- } catch (er) {
- if (!throwErrors) {
- return null;
+ async execute() {
+ let commands = this.commands;
+ if (typeof this.index !== `undefined` && this.index >= 0 && this.index < commands.length)
+ commands = [commands[this.index]];
+ if (commands.length === 0) {
+ this.context.stdout.write(this.cli.usage());
+ } else if (commands.length === 1) {
+ this.context.stdout.write(this.cli.usage(this.contexts[commands[0]].commandClass, { detailed: true }));
+ } else if (commands.length > 1) {
+ this.context.stdout.write(`Multiple commands match your selection:
+`);
+ this.context.stdout.write(`
+`);
+ let index = 0;
+ for (const command of this.commands)
+ this.context.stdout.write(this.cli.usage(this.contexts[command].commandClass, { prefix: `${index++}. `.padStart(5) }));
+ this.context.stdout.write(`
+`);
+ this.context.stdout.write(`Run again with -h= to see the longer details of any of those commands.
+`);
}
- throw er;
}
};
- module2.exports = parse4;
- }
-});
-
-// .yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/functions/valid.js
-var require_valid = __commonJS({
- ".yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/functions/valid.js"(exports2, module2) {
- "use strict";
- var parse4 = require_parse();
- var valid = (version2, options) => {
- const v = parse4(version2, options);
- return v ? v.version : null;
- };
- module2.exports = valid;
+ exports2.HelpCommand = HelpCommand;
}
});
-// .yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/internal/lrucache.js
-var require_lrucache = __commonJS({
- ".yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/internal/lrucache.js"(exports2, module2) {
+// node_modules/clipanion/lib/advanced/Cli.js
+var require_Cli = __commonJS({
+ "node_modules/clipanion/lib/advanced/Cli.js"(exports2) {
"use strict";
- var LRUCache = class {
- constructor() {
- this.max = 1e3;
- this.map = /* @__PURE__ */ new Map();
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ var constants2 = require_constants();
+ var core = require_core();
+ var format = require_format();
+ var platform5 = (init_node(), __toCommonJS(node_exports));
+ var advanced_Command = require_Command();
+ var advanced_HelpCommand = require_HelpCommand();
+ var errorCommandSymbol = /* @__PURE__ */ Symbol(`clipanion/errorCommand`);
+ async function runExit(...args) {
+ const { resolvedOptions, resolvedCommandClasses, resolvedArgv, resolvedContext } = resolveRunParameters(args);
+ const cli = Cli2.from(resolvedCommandClasses, resolvedOptions);
+ return cli.runExit(resolvedArgv, resolvedContext);
+ }
+ async function run(...args) {
+ const { resolvedOptions, resolvedCommandClasses, resolvedArgv, resolvedContext } = resolveRunParameters(args);
+ const cli = Cli2.from(resolvedCommandClasses, resolvedOptions);
+ return cli.run(resolvedArgv, resolvedContext);
+ }
+ function resolveRunParameters(args) {
+ let resolvedOptions;
+ let resolvedCommandClasses;
+ let resolvedArgv;
+ let resolvedContext;
+ if (typeof process !== `undefined` && typeof process.argv !== `undefined`)
+ resolvedArgv = process.argv.slice(2);
+ switch (args.length) {
+ case 1:
+ {
+ resolvedCommandClasses = args[0];
+ }
+ break;
+ case 2:
+ {
+ if (args[0] && args[0].prototype instanceof advanced_Command.Command || Array.isArray(args[0])) {
+ resolvedCommandClasses = args[0];
+ if (Array.isArray(args[1])) {
+ resolvedArgv = args[1];
+ } else {
+ resolvedContext = args[1];
+ }
+ } else {
+ resolvedOptions = args[0];
+ resolvedCommandClasses = args[1];
+ }
+ }
+ break;
+ case 3:
+ {
+ if (Array.isArray(args[2])) {
+ resolvedOptions = args[0];
+ resolvedCommandClasses = args[1];
+ resolvedArgv = args[2];
+ } else if (args[0] && args[0].prototype instanceof advanced_Command.Command || Array.isArray(args[0])) {
+ resolvedCommandClasses = args[0];
+ resolvedArgv = args[1];
+ resolvedContext = args[2];
+ } else {
+ resolvedOptions = args[0];
+ resolvedCommandClasses = args[1];
+ resolvedContext = args[2];
+ }
+ }
+ break;
+ default:
+ {
+ resolvedOptions = args[0];
+ resolvedCommandClasses = args[1];
+ resolvedArgv = args[2];
+ resolvedContext = args[3];
+ }
+ break;
}
- get(key) {
- const value = this.map.get(key);
- if (value === void 0) {
- return void 0;
+ if (typeof resolvedArgv === `undefined`)
+ throw new Error(`The argv parameter must be provided when running Clipanion outside of a Node context`);
+ return {
+ resolvedOptions,
+ resolvedCommandClasses,
+ resolvedArgv,
+ resolvedContext
+ };
+ }
+ var Cli2 = class _Cli {
+ constructor({ binaryLabel, binaryName: binaryNameOpt = `...`, binaryVersion, enableCapture = false, enableColors } = {}) {
+ this.registrations = /* @__PURE__ */ new Map();
+ this.builder = new core.CliBuilder({ binaryName: binaryNameOpt });
+ this.binaryLabel = binaryLabel;
+ this.binaryName = binaryNameOpt;
+ this.binaryVersion = binaryVersion;
+ this.enableCapture = enableCapture;
+ this.enableColors = enableColors;
+ }
+ /**
+ * Creates a new Cli and registers all commands passed as parameters.
+ *
+ * @param commandClasses The Commands to register
+ * @returns The created `Cli` instance
+ */
+ static from(commandClasses, options = {}) {
+ const cli = new _Cli(options);
+ const resolvedCommandClasses = Array.isArray(commandClasses) ? commandClasses : [commandClasses];
+ for (const commandClass of resolvedCommandClasses)
+ cli.register(commandClass);
+ return cli;
+ }
+ /**
+ * Registers a command inside the CLI.
+ */
+ register(commandClass) {
+ var _a;
+ const specs = /* @__PURE__ */ new Map();
+ const command = new commandClass();
+ for (const key in command) {
+ const value = command[key];
+ if (typeof value === `object` && value !== null && value[advanced_Command.Command.isOption]) {
+ specs.set(key, value);
+ }
+ }
+ const builder = this.builder.command();
+ const index = builder.cliIndex;
+ const paths = (_a = commandClass.paths) !== null && _a !== void 0 ? _a : command.paths;
+ if (typeof paths !== `undefined`)
+ for (const path16 of paths)
+ builder.addPath(path16);
+ this.registrations.set(commandClass, { specs, builder, index });
+ for (const [key, { definition }] of specs.entries())
+ definition(builder, key);
+ builder.setContext({
+ commandClass
+ });
+ }
+ process(input, userContext) {
+ const { contexts, process: process5 } = this.builder.compile();
+ const state = process5(input);
+ const context = {
+ ..._Cli.defaultContext,
+ ...userContext
+ };
+ switch (state.selectedIndex) {
+ case constants2.HELP_COMMAND_INDEX: {
+ const command = advanced_HelpCommand.HelpCommand.from(state, contexts);
+ command.context = context;
+ return command;
+ }
+ default:
+ {
+ const { commandClass } = contexts[state.selectedIndex];
+ const record = this.registrations.get(commandClass);
+ if (typeof record === `undefined`)
+ throw new Error(`Assertion failed: Expected the command class to have been registered.`);
+ const command = new commandClass();
+ command.context = context;
+ command.path = state.path;
+ try {
+ for (const [key, { transformer }] of record.specs.entries())
+ command[key] = transformer(record.builder, key, state, context);
+ return command;
+ } catch (error) {
+ error[errorCommandSymbol] = command;
+ throw error;
+ }
+ }
+ break;
+ }
+ }
+ async run(input, userContext) {
+ var _a, _b;
+ let command;
+ const context = {
+ ..._Cli.defaultContext,
+ ...userContext
+ };
+ const colored = (_a = this.enableColors) !== null && _a !== void 0 ? _a : context.colorDepth > 1;
+ if (!Array.isArray(input)) {
+ command = input;
} else {
- this.map.delete(key);
- this.map.set(key, value);
- return value;
+ try {
+ command = this.process(input, context);
+ } catch (error) {
+ context.stdout.write(this.error(error, { colored }));
+ return 1;
+ }
+ }
+ if (command.help) {
+ context.stdout.write(this.usage(command, { colored, detailed: true }));
+ return 0;
+ }
+ command.context = context;
+ command.cli = {
+ binaryLabel: this.binaryLabel,
+ binaryName: this.binaryName,
+ binaryVersion: this.binaryVersion,
+ enableCapture: this.enableCapture,
+ enableColors: this.enableColors,
+ definitions: () => this.definitions(),
+ error: (error, opts) => this.error(error, opts),
+ format: (colored2) => this.format(colored2),
+ process: (input2, subContext) => this.process(input2, { ...context, ...subContext }),
+ run: (input2, subContext) => this.run(input2, { ...context, ...subContext }),
+ usage: (command2, opts) => this.usage(command2, opts)
+ };
+ const activate = this.enableCapture ? (_b = platform5.getCaptureActivator(context)) !== null && _b !== void 0 ? _b : noopCaptureActivator : noopCaptureActivator;
+ let exitCode;
+ try {
+ exitCode = await activate(() => command.validateAndExecute().catch((error) => command.catch(error).then(() => 0)));
+ } catch (error) {
+ context.stdout.write(this.error(error, { colored, command }));
+ return 1;
}
+ return exitCode;
}
- delete(key) {
- return this.map.delete(key);
+ async runExit(input, context) {
+ process.exitCode = await this.run(input, context);
}
- set(key, value) {
- const deleted = this.delete(key);
- if (!deleted && value !== void 0) {
- if (this.map.size >= this.max) {
- const firstKey = this.map.keys().next().value;
- this.delete(firstKey);
+ suggest(input, partial) {
+ const { suggest } = this.builder.compile();
+ return suggest(input, partial);
+ }
+ definitions({ colored = false } = {}) {
+ const data = [];
+ for (const [commandClass, { index }] of this.registrations) {
+ if (typeof commandClass.usage === `undefined`)
+ continue;
+ const { usage: path16 } = this.getUsageByIndex(index, { detailed: false });
+ const { usage, options } = this.getUsageByIndex(index, { detailed: true, inlineOptions: false });
+ const category = typeof commandClass.usage.category !== `undefined` ? format.formatMarkdownish(commandClass.usage.category, { format: this.format(colored), paragraphs: false }) : void 0;
+ const description = typeof commandClass.usage.description !== `undefined` ? format.formatMarkdownish(commandClass.usage.description, { format: this.format(colored), paragraphs: false }) : void 0;
+ const details = typeof commandClass.usage.details !== `undefined` ? format.formatMarkdownish(commandClass.usage.details, { format: this.format(colored), paragraphs: true }) : void 0;
+ const examples = typeof commandClass.usage.examples !== `undefined` ? commandClass.usage.examples.map(([label, cli]) => [format.formatMarkdownish(label, { format: this.format(colored), paragraphs: false }), cli.replace(/\$0/g, this.binaryName)]) : void 0;
+ data.push({ path: path16, usage, category, description, details, examples, options });
+ }
+ return data;
+ }
+ usage(command = null, { colored, detailed = false, prefix = `$ ` } = {}) {
+ var _a;
+ if (command === null) {
+ for (const commandClass2 of this.registrations.keys()) {
+ const paths = commandClass2.paths;
+ const isDocumented = typeof commandClass2.usage !== `undefined`;
+ const isExclusivelyDefault = !paths || paths.length === 0 || paths.length === 1 && paths[0].length === 0;
+ const isDefault = isExclusivelyDefault || ((_a = paths === null || paths === void 0 ? void 0 : paths.some((path16) => path16.length === 0)) !== null && _a !== void 0 ? _a : false);
+ if (isDefault) {
+ if (command) {
+ command = null;
+ break;
+ } else {
+ command = commandClass2;
+ }
+ } else {
+ if (isDocumented) {
+ command = null;
+ continue;
+ }
+ }
+ }
+ if (command) {
+ detailed = true;
}
- this.map.set(key, value);
}
- return this;
- }
+ const commandClass = command !== null && command instanceof advanced_Command.Command ? command.constructor : command;
+ let result = ``;
+ if (!commandClass) {
+ const commandsByCategories = /* @__PURE__ */ new Map();
+ for (const [commandClass2, { index }] of this.registrations.entries()) {
+ if (typeof commandClass2.usage === `undefined`)
+ continue;
+ const category = typeof commandClass2.usage.category !== `undefined` ? format.formatMarkdownish(commandClass2.usage.category, { format: this.format(colored), paragraphs: false }) : null;
+ let categoryCommands = commandsByCategories.get(category);
+ if (typeof categoryCommands === `undefined`)
+ commandsByCategories.set(category, categoryCommands = []);
+ const { usage } = this.getUsageByIndex(index);
+ categoryCommands.push({ commandClass: commandClass2, usage });
+ }
+ const categoryNames = Array.from(commandsByCategories.keys()).sort((a, b) => {
+ if (a === null)
+ return -1;
+ if (b === null)
+ return 1;
+ return a.localeCompare(b, `en`, { usage: `sort`, caseFirst: `upper` });
+ });
+ const hasLabel = typeof this.binaryLabel !== `undefined`;
+ const hasVersion = typeof this.binaryVersion !== `undefined`;
+ if (hasLabel || hasVersion) {
+ if (hasLabel && hasVersion)
+ result += `${this.format(colored).header(`${this.binaryLabel} - ${this.binaryVersion}`)}
+
+`;
+ else if (hasLabel)
+ result += `${this.format(colored).header(`${this.binaryLabel}`)}
+`;
+ else
+ result += `${this.format(colored).header(`${this.binaryVersion}`)}
+`;
+ result += ` ${this.format(colored).bold(prefix)}${this.binaryName}
+`;
+ } else {
+ result += `${this.format(colored).bold(prefix)}${this.binaryName}
+`;
+ }
+ for (const categoryName of categoryNames) {
+ const commands = commandsByCategories.get(categoryName).slice().sort((a, b) => {
+ return a.usage.localeCompare(b.usage, `en`, { usage: `sort`, caseFirst: `upper` });
+ });
+ const header = categoryName !== null ? categoryName.trim() : `General commands`;
+ result += `
+`;
+ result += `${this.format(colored).header(`${header}`)}
+`;
+ for (const { commandClass: commandClass2, usage } of commands) {
+ const doc = commandClass2.usage.description || `undocumented`;
+ result += `
+`;
+ result += ` ${this.format(colored).bold(usage)}
+`;
+ result += ` ${format.formatMarkdownish(doc, { format: this.format(colored), paragraphs: false })}`;
+ }
+ }
+ result += `
+`;
+ result += format.formatMarkdownish(`You can also print more details about any of these commands by calling them with the \`-h,--help\` flag right after the command name.`, { format: this.format(colored), paragraphs: true });
+ } else {
+ if (!detailed) {
+ const { usage } = this.getUsageByRegistration(commandClass);
+ result += `${this.format(colored).bold(prefix)}${usage}
+`;
+ } else {
+ const { description = ``, details = ``, examples = [] } = commandClass.usage || {};
+ if (description !== ``) {
+ result += format.formatMarkdownish(description, { format: this.format(colored), paragraphs: false }).replace(/^./, ($0) => $0.toUpperCase());
+ result += `
+`;
+ }
+ if (details !== `` || examples.length > 0) {
+ result += `${this.format(colored).header(`Usage`)}
+`;
+ result += `
+`;
+ }
+ const { usage, options } = this.getUsageByRegistration(commandClass, { inlineOptions: false });
+ result += `${this.format(colored).bold(prefix)}${usage}
+`;
+ if (options.length > 0) {
+ result += `
+`;
+ result += `${this.format(colored).header(`Options`)}
+`;
+ const maxDefinitionLength = options.reduce((length, option) => {
+ return Math.max(length, option.definition.length);
+ }, 0);
+ result += `
+`;
+ for (const { definition, description: description2 } of options) {
+ result += ` ${this.format(colored).bold(definition.padEnd(maxDefinitionLength))} ${format.formatMarkdownish(description2, { format: this.format(colored), paragraphs: false })}`;
+ }
+ }
+ if (details !== ``) {
+ result += `
+`;
+ result += `${this.format(colored).header(`Details`)}
+`;
+ result += `
+`;
+ result += format.formatMarkdownish(details, { format: this.format(colored), paragraphs: true });
+ }
+ if (examples.length > 0) {
+ result += `
+`;
+ result += `${this.format(colored).header(`Examples`)}
+`;
+ for (const [description2, example] of examples) {
+ result += `
+`;
+ result += format.formatMarkdownish(description2, { format: this.format(colored), paragraphs: false });
+ result += `${example.replace(/^/m, ` ${this.format(colored).bold(prefix)}`).replace(/\$0/g, this.binaryName)}
+`;
+ }
+ }
+ }
+ }
+ return result;
+ }
+ error(error, _a) {
+ var _b;
+ var { colored, command = (_b = error[errorCommandSymbol]) !== null && _b !== void 0 ? _b : null } = _a === void 0 ? {} : _a;
+ if (!error || typeof error !== `object` || !(`stack` in error))
+ error = new Error(`Execution failed with a non-error rejection (rejected value: ${JSON.stringify(error)})`);
+ let result = ``;
+ let name2 = error.name.replace(/([a-z])([A-Z])/g, `$1 $2`);
+ if (name2 === `Error`)
+ name2 = `Internal Error`;
+ result += `${this.format(colored).error(name2)}: ${error.message}
+`;
+ const meta = error.clipanion;
+ if (typeof meta !== `undefined`) {
+ if (meta.type === `usage`) {
+ result += `
+`;
+ result += this.usage(command);
+ }
+ } else {
+ if (error.stack) {
+ result += `${error.stack.replace(/^.*\n/, ``)}
+`;
+ }
+ }
+ return result;
+ }
+ format(colored) {
+ var _a;
+ return ((_a = colored !== null && colored !== void 0 ? colored : this.enableColors) !== null && _a !== void 0 ? _a : _Cli.defaultContext.colorDepth > 1) ? format.richFormat : format.textFormat;
+ }
+ getUsageByRegistration(klass, opts) {
+ const record = this.registrations.get(klass);
+ if (typeof record === `undefined`)
+ throw new Error(`Assertion failed: Unregistered command`);
+ return this.getUsageByIndex(record.index, opts);
+ }
+ getUsageByIndex(n, opts) {
+ return this.builder.getBuilderByIndex(n).usage(opts);
+ }
};
- module2.exports = LRUCache;
+ Cli2.defaultContext = {
+ env: process.env,
+ stdin: process.stdin,
+ stdout: process.stdout,
+ stderr: process.stderr,
+ colorDepth: platform5.getDefaultColorDepth()
+ };
+ function noopCaptureActivator(fn2) {
+ return fn2();
+ }
+ exports2.Cli = Cli2;
+ exports2.run = run;
+ exports2.runExit = runExit;
}
});
-// .yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/functions/eq.js
-var require_eq = __commonJS({
- ".yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/functions/eq.js"(exports2, module2) {
+// node_modules/clipanion/lib/advanced/builtins/definitions.js
+var require_definitions = __commonJS({
+ "node_modules/clipanion/lib/advanced/builtins/definitions.js"(exports2) {
"use strict";
- var compare = require_compare();
- var eq = (a, b, loose) => compare(a, b, loose) === 0;
- module2.exports = eq;
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ var advanced_Command = require_Command();
+ var DefinitionsCommand = class extends advanced_Command.Command {
+ async execute() {
+ this.context.stdout.write(`${JSON.stringify(this.cli.definitions(), null, 2)}
+`);
+ }
+ };
+ DefinitionsCommand.paths = [[`--clipanion=definitions`]];
+ exports2.DefinitionsCommand = DefinitionsCommand;
}
});
-// .yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/functions/neq.js
-var require_neq = __commonJS({
- ".yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/functions/neq.js"(exports2, module2) {
+// node_modules/clipanion/lib/advanced/builtins/help.js
+var require_help = __commonJS({
+ "node_modules/clipanion/lib/advanced/builtins/help.js"(exports2) {
"use strict";
- var compare = require_compare();
- var neq = (a, b, loose) => compare(a, b, loose) !== 0;
- module2.exports = neq;
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ var advanced_Command = require_Command();
+ var HelpCommand = class extends advanced_Command.Command {
+ async execute() {
+ this.context.stdout.write(this.cli.usage());
+ }
+ };
+ HelpCommand.paths = [[`-h`], [`--help`]];
+ exports2.HelpCommand = HelpCommand;
}
});
-// .yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/functions/gt.js
-var require_gt = __commonJS({
- ".yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/functions/gt.js"(exports2, module2) {
+// node_modules/clipanion/lib/advanced/builtins/version.js
+var require_version = __commonJS({
+ "node_modules/clipanion/lib/advanced/builtins/version.js"(exports2) {
"use strict";
- var compare = require_compare();
- var gt = (a, b, loose) => compare(a, b, loose) > 0;
- module2.exports = gt;
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ var advanced_Command = require_Command();
+ var VersionCommand = class extends advanced_Command.Command {
+ async execute() {
+ var _a;
+ this.context.stdout.write(`${(_a = this.cli.binaryVersion) !== null && _a !== void 0 ? _a : ``}
+`);
+ }
+ };
+ VersionCommand.paths = [[`-v`], [`--version`]];
+ exports2.VersionCommand = VersionCommand;
}
});
-// .yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/functions/gte.js
-var require_gte = __commonJS({
- ".yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/functions/gte.js"(exports2, module2) {
+// node_modules/clipanion/lib/advanced/builtins/index.js
+var require_builtins = __commonJS({
+ "node_modules/clipanion/lib/advanced/builtins/index.js"(exports2) {
"use strict";
- var compare = require_compare();
- var gte = (a, b, loose) => compare(a, b, loose) >= 0;
- module2.exports = gte;
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ var advanced_builtins_definitions = require_definitions();
+ var advanced_builtins_help = require_help();
+ var advanced_builtins_version = require_version();
+ exports2.DefinitionsCommand = advanced_builtins_definitions.DefinitionsCommand;
+ exports2.HelpCommand = advanced_builtins_help.HelpCommand;
+ exports2.VersionCommand = advanced_builtins_version.VersionCommand;
}
});
-// .yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/functions/lt.js
-var require_lt = __commonJS({
- ".yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/functions/lt.js"(exports2, module2) {
+// node_modules/clipanion/lib/advanced/options/Array.js
+var require_Array = __commonJS({
+ "node_modules/clipanion/lib/advanced/options/Array.js"(exports2) {
"use strict";
- var compare = require_compare();
- var lt = (a, b, loose) => compare(a, b, loose) < 0;
- module2.exports = lt;
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ var advanced_options_utils = require_utils();
+ function Array2(descriptor, initialValueBase, optsBase) {
+ const [initialValue, opts] = advanced_options_utils.rerouteArguments(initialValueBase, optsBase !== null && optsBase !== void 0 ? optsBase : {});
+ const { arity = 1 } = opts;
+ const optNames = descriptor.split(`,`);
+ const nameSet = new Set(optNames);
+ return advanced_options_utils.makeCommandOption({
+ definition(builder) {
+ builder.addOption({
+ names: optNames,
+ arity,
+ hidden: opts === null || opts === void 0 ? void 0 : opts.hidden,
+ description: opts === null || opts === void 0 ? void 0 : opts.description,
+ required: opts.required
+ });
+ },
+ transformer(builder, key, state) {
+ let usedName;
+ let currentValue = typeof initialValue !== `undefined` ? [...initialValue] : void 0;
+ for (const { name: name2, value } of state.options) {
+ if (!nameSet.has(name2))
+ continue;
+ usedName = name2;
+ currentValue = currentValue !== null && currentValue !== void 0 ? currentValue : [];
+ currentValue.push(value);
+ }
+ if (typeof currentValue !== `undefined`) {
+ return advanced_options_utils.applyValidator(usedName !== null && usedName !== void 0 ? usedName : key, currentValue, opts.validator);
+ } else {
+ return currentValue;
+ }
+ }
+ });
+ }
+ exports2.Array = Array2;
}
});
-// .yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/functions/lte.js
-var require_lte = __commonJS({
- ".yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/functions/lte.js"(exports2, module2) {
+// node_modules/clipanion/lib/advanced/options/Boolean.js
+var require_Boolean = __commonJS({
+ "node_modules/clipanion/lib/advanced/options/Boolean.js"(exports2) {
"use strict";
- var compare = require_compare();
- var lte = (a, b, loose) => compare(a, b, loose) <= 0;
- module2.exports = lte;
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ var advanced_options_utils = require_utils();
+ function Boolean2(descriptor, initialValueBase, optsBase) {
+ const [initialValue, opts] = advanced_options_utils.rerouteArguments(initialValueBase, optsBase !== null && optsBase !== void 0 ? optsBase : {});
+ const optNames = descriptor.split(`,`);
+ const nameSet = new Set(optNames);
+ return advanced_options_utils.makeCommandOption({
+ definition(builder) {
+ builder.addOption({
+ names: optNames,
+ allowBinding: false,
+ arity: 0,
+ hidden: opts.hidden,
+ description: opts.description,
+ required: opts.required
+ });
+ },
+ transformer(builer, key, state) {
+ let currentValue = initialValue;
+ for (const { name: name2, value } of state.options) {
+ if (!nameSet.has(name2))
+ continue;
+ currentValue = value;
+ }
+ return currentValue;
+ }
+ });
+ }
+ exports2.Boolean = Boolean2;
}
});
-// .yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/functions/cmp.js
-var require_cmp = __commonJS({
- ".yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/functions/cmp.js"(exports2, module2) {
+// node_modules/clipanion/lib/advanced/options/Counter.js
+var require_Counter = __commonJS({
+ "node_modules/clipanion/lib/advanced/options/Counter.js"(exports2) {
"use strict";
- var eq = require_eq();
- var neq = require_neq();
- var gt = require_gt();
- var gte = require_gte();
- var lt = require_lt();
- var lte = require_lte();
- var cmp = (a, op, b, loose) => {
- switch (op) {
- case "===":
- if (typeof a === "object") {
- a = a.version;
- }
- if (typeof b === "object") {
- b = b.version;
- }
- return a === b;
- case "!==":
- if (typeof a === "object") {
- a = a.version;
- }
- if (typeof b === "object") {
- b = b.version;
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ var advanced_options_utils = require_utils();
+ function Counter(descriptor, initialValueBase, optsBase) {
+ const [initialValue, opts] = advanced_options_utils.rerouteArguments(initialValueBase, optsBase !== null && optsBase !== void 0 ? optsBase : {});
+ const optNames = descriptor.split(`,`);
+ const nameSet = new Set(optNames);
+ return advanced_options_utils.makeCommandOption({
+ definition(builder) {
+ builder.addOption({
+ names: optNames,
+ allowBinding: false,
+ arity: 0,
+ hidden: opts.hidden,
+ description: opts.description,
+ required: opts.required
+ });
+ },
+ transformer(builder, key, state) {
+ let currentValue = initialValue;
+ for (const { name: name2, value } of state.options) {
+ if (!nameSet.has(name2))
+ continue;
+ currentValue !== null && currentValue !== void 0 ? currentValue : currentValue = 0;
+ if (!value) {
+ currentValue = 0;
+ } else {
+ currentValue += 1;
+ }
}
- return a !== b;
- case "":
- case "=":
- case "==":
- return eq(a, b, loose);
- case "!=":
- return neq(a, b, loose);
- case ">":
- return gt(a, b, loose);
- case ">=":
- return gte(a, b, loose);
- case "<":
- return lt(a, b, loose);
- case "<=":
- return lte(a, b, loose);
- default:
- throw new TypeError(`Invalid operator: ${op}`);
- }
- };
- module2.exports = cmp;
+ return currentValue;
+ }
+ });
+ }
+ exports2.Counter = Counter;
}
});
-// .yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/classes/comparator.js
-var require_comparator = __commonJS({
- ".yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/classes/comparator.js"(exports2, module2) {
+// node_modules/clipanion/lib/advanced/options/Proxy.js
+var require_Proxy = __commonJS({
+ "node_modules/clipanion/lib/advanced/options/Proxy.js"(exports2) {
"use strict";
- var ANY = Symbol("SemVer ANY");
- var Comparator = class _Comparator {
- static get ANY() {
- return ANY;
- }
- constructor(comp, options) {
- options = parseOptions(options);
- if (comp instanceof _Comparator) {
- if (comp.loose === !!options.loose) {
- return comp;
- } else {
- comp = comp.value;
- }
- }
- comp = comp.trim().split(/\s+/).join(" ");
- debug2("comparator", comp, options);
- this.options = options;
- this.loose = !!options.loose;
- this.parse(comp);
- if (this.semver === ANY) {
- this.value = "";
- } else {
- this.value = this.operator + this.semver.version;
- }
- debug2("comp", this);
- }
- parse(comp) {
- const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR];
- const m = comp.match(r);
- if (!m) {
- throw new TypeError(`Invalid comparator: ${comp}`);
- }
- this.operator = m[1] !== void 0 ? m[1] : "";
- if (this.operator === "=") {
- this.operator = "";
- }
- if (!m[2]) {
- this.semver = ANY;
- } else {
- this.semver = new SemVer3(m[2], this.options.loose);
- }
- }
- toString() {
- return this.value;
- }
- test(version2) {
- debug2("Comparator.test", version2, this.options.loose);
- if (this.semver === ANY || version2 === ANY) {
- return true;
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ var advanced_options_utils = require_utils();
+ function Proxy2(opts = {}) {
+ return advanced_options_utils.makeCommandOption({
+ definition(builder, key) {
+ var _a;
+ builder.addProxy({
+ name: (_a = opts.name) !== null && _a !== void 0 ? _a : key,
+ required: opts.required
+ });
+ },
+ transformer(builder, key, state) {
+ return state.positionals.map(({ value }) => value);
}
- if (typeof version2 === "string") {
- try {
- version2 = new SemVer3(version2, this.options);
- } catch (er) {
+ });
+ }
+ exports2.Proxy = Proxy2;
+ }
+});
+
+// node_modules/clipanion/lib/advanced/options/Rest.js
+var require_Rest = __commonJS({
+ "node_modules/clipanion/lib/advanced/options/Rest.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ var core = require_core();
+ var advanced_options_utils = require_utils();
+ function Rest(opts = {}) {
+ return advanced_options_utils.makeCommandOption({
+ definition(builder, key) {
+ var _a;
+ builder.addRest({
+ name: (_a = opts.name) !== null && _a !== void 0 ? _a : key,
+ required: opts.required
+ });
+ },
+ transformer(builder, key, state) {
+ const isRestPositional = (index) => {
+ const positional = state.positionals[index];
+ if (positional.extra === core.NoLimits)
+ return true;
+ if (positional.extra === false && index < builder.arity.leading.length)
+ return true;
return false;
- }
- }
- return cmp(version2, this.operator, this.semver, this.options);
- }
- intersects(comp, options) {
- if (!(comp instanceof _Comparator)) {
- throw new TypeError("a Comparator is required");
+ };
+ let count = 0;
+ while (count < state.positionals.length && isRestPositional(count))
+ count += 1;
+ return state.positionals.splice(0, count).map(({ value }) => value);
}
- if (this.operator === "") {
- if (this.value === "") {
- return true;
+ });
+ }
+ exports2.Rest = Rest;
+ }
+});
+
+// node_modules/clipanion/lib/advanced/options/String.js
+var require_String = __commonJS({
+ "node_modules/clipanion/lib/advanced/options/String.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ var core = require_core();
+ var advanced_options_utils = require_utils();
+ function StringOption(descriptor, initialValueBase, optsBase) {
+ const [initialValue, opts] = advanced_options_utils.rerouteArguments(initialValueBase, optsBase !== null && optsBase !== void 0 ? optsBase : {});
+ const { arity = 1 } = opts;
+ const optNames = descriptor.split(`,`);
+ const nameSet = new Set(optNames);
+ return advanced_options_utils.makeCommandOption({
+ definition(builder) {
+ builder.addOption({
+ names: optNames,
+ arity: opts.tolerateBoolean ? 0 : arity,
+ hidden: opts.hidden,
+ description: opts.description,
+ required: opts.required
+ });
+ },
+ transformer(builder, key, state, context) {
+ let usedName;
+ let currentValue = initialValue;
+ if (typeof opts.env !== `undefined` && context.env[opts.env]) {
+ usedName = opts.env;
+ currentValue = context.env[opts.env];
+ }
+ for (const { name: name2, value } of state.options) {
+ if (!nameSet.has(name2))
+ continue;
+ usedName = name2;
+ currentValue = value;
}
- return new Range3(comp.value, options).test(this.value);
- } else if (comp.operator === "") {
- if (comp.value === "") {
- return true;
+ if (typeof currentValue === `string`) {
+ return advanced_options_utils.applyValidator(usedName !== null && usedName !== void 0 ? usedName : key, currentValue, opts.validator);
+ } else {
+ return currentValue;
}
- return new Range3(this.value, options).test(comp.semver);
}
- options = parseOptions(options);
- if (options.includePrerelease && (this.value === "<0.0.0-0" || comp.value === "<0.0.0-0")) {
- return false;
- }
- if (!options.includePrerelease && (this.value.startsWith("<0.0.0") || comp.value.startsWith("<0.0.0"))) {
- return false;
- }
- if (this.operator.startsWith(">") && comp.operator.startsWith(">")) {
- return true;
- }
- if (this.operator.startsWith("<") && comp.operator.startsWith("<")) {
- return true;
- }
- if (this.semver.version === comp.semver.version && this.operator.includes("=") && comp.operator.includes("=")) {
- return true;
- }
- if (cmp(this.semver, "<", comp.semver, options) && this.operator.startsWith(">") && comp.operator.startsWith("<")) {
- return true;
- }
- if (cmp(this.semver, ">", comp.semver, options) && this.operator.startsWith("<") && comp.operator.startsWith(">")) {
- return true;
+ });
+ }
+ function StringPositional(opts = {}) {
+ const { required = true } = opts;
+ return advanced_options_utils.makeCommandOption({
+ definition(builder, key) {
+ var _a;
+ builder.addPositional({
+ name: (_a = opts.name) !== null && _a !== void 0 ? _a : key,
+ required: opts.required
+ });
+ },
+ transformer(builder, key, state) {
+ var _a;
+ for (let i = 0; i < state.positionals.length; ++i) {
+ if (state.positionals[i].extra === core.NoLimits)
+ continue;
+ if (required && state.positionals[i].extra === true)
+ continue;
+ if (!required && state.positionals[i].extra === false)
+ continue;
+ const [positional] = state.positionals.splice(i, 1);
+ return advanced_options_utils.applyValidator((_a = opts.name) !== null && _a !== void 0 ? _a : key, positional.value, opts.validator);
+ }
+ return void 0;
}
- return false;
+ });
+ }
+ function String2(descriptor, ...args) {
+ if (typeof descriptor === `string`) {
+ return StringOption(descriptor, ...args);
+ } else {
+ return StringPositional(descriptor);
}
+ }
+ exports2.String = String2;
+ }
+});
+
+// node_modules/clipanion/lib/advanced/options/index.js
+var require_options = __commonJS({
+ "node_modules/clipanion/lib/advanced/options/index.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ var advanced_options_utils = require_utils();
+ var advanced_options_Array = require_Array();
+ var advanced_options_Boolean = require_Boolean();
+ var advanced_options_Counter = require_Counter();
+ var advanced_options_Proxy = require_Proxy();
+ var advanced_options_Rest = require_Rest();
+ var advanced_options_String = require_String();
+ exports2.applyValidator = advanced_options_utils.applyValidator;
+ exports2.cleanValidationError = advanced_options_utils.cleanValidationError;
+ exports2.formatError = advanced_options_utils.formatError;
+ exports2.isOptionSymbol = advanced_options_utils.isOptionSymbol;
+ exports2.makeCommandOption = advanced_options_utils.makeCommandOption;
+ exports2.rerouteArguments = advanced_options_utils.rerouteArguments;
+ exports2.Array = advanced_options_Array.Array;
+ exports2.Boolean = advanced_options_Boolean.Boolean;
+ exports2.Counter = advanced_options_Counter.Counter;
+ exports2.Proxy = advanced_options_Proxy.Proxy;
+ exports2.Rest = advanced_options_Rest.Rest;
+ exports2.String = advanced_options_String.String;
+ }
+});
+
+// node_modules/clipanion/lib/advanced/index.js
+var require_advanced = __commonJS({
+ "node_modules/clipanion/lib/advanced/index.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ var errors = require_errors();
+ var format = require_format();
+ var advanced_Command = require_Command();
+ var advanced_Cli = require_Cli();
+ var advanced_builtins_index = require_builtins();
+ var advanced_options_index = require_options();
+ exports2.UsageError = errors.UsageError;
+ exports2.formatMarkdownish = format.formatMarkdownish;
+ exports2.Command = advanced_Command.Command;
+ exports2.Cli = advanced_Cli.Cli;
+ exports2.run = advanced_Cli.run;
+ exports2.runExit = advanced_Cli.runExit;
+ exports2.Builtins = advanced_builtins_index;
+ exports2.Option = advanced_options_index;
+ }
+});
+
+// node_modules/semver/internal/debug.js
+var require_debug = __commonJS({
+ "node_modules/semver/internal/debug.js"(exports2, module2) {
+ "use strict";
+ var debug = typeof process === "object" && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error("SEMVER", ...args) : () => {
};
- module2.exports = Comparator;
- var parseOptions = require_parse_options();
- var { safeRe: re, t } = require_re();
- var cmp = require_cmp();
- var debug2 = require_debug();
- var SemVer3 = require_semver();
- var Range3 = require_range();
+ module2.exports = debug;
}
});
-// .yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/classes/range.js
-var require_range = __commonJS({
- ".yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/classes/range.js"(exports2, module2) {
+// node_modules/semver/internal/constants.js
+var require_constants2 = __commonJS({
+ "node_modules/semver/internal/constants.js"(exports2, module2) {
"use strict";
- var SPACE_CHARACTERS = /\s+/g;
- var Range3 = class _Range {
- constructor(range, options) {
+ var SEMVER_SPEC_VERSION = "2.0.0";
+ var MAX_LENGTH = 256;
+ var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */
+ 9007199254740991;
+ var MAX_SAFE_COMPONENT_LENGTH = 16;
+ var MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6;
+ var RELEASE_TYPES = [
+ "major",
+ "premajor",
+ "minor",
+ "preminor",
+ "patch",
+ "prepatch",
+ "prerelease"
+ ];
+ module2.exports = {
+ MAX_LENGTH,
+ MAX_SAFE_COMPONENT_LENGTH,
+ MAX_SAFE_BUILD_LENGTH,
+ MAX_SAFE_INTEGER,
+ RELEASE_TYPES,
+ SEMVER_SPEC_VERSION,
+ FLAG_INCLUDE_PRERELEASE: 1,
+ FLAG_LOOSE: 2
+ };
+ }
+});
+
+// node_modules/semver/internal/re.js
+var require_re = __commonJS({
+ "node_modules/semver/internal/re.js"(exports2, module2) {
+ "use strict";
+ var {
+ MAX_SAFE_COMPONENT_LENGTH,
+ MAX_SAFE_BUILD_LENGTH,
+ MAX_LENGTH
+ } = require_constants2();
+ var debug = require_debug();
+ exports2 = module2.exports = {};
+ var re = exports2.re = [];
+ var safeRe = exports2.safeRe = [];
+ var src = exports2.src = [];
+ var safeSrc = exports2.safeSrc = [];
+ var t = exports2.t = {};
+ var R = 0;
+ var LETTERDASHNUMBER = "[a-zA-Z0-9-]";
+ var safeRegexReplacements = [
+ ["\\s", 1],
+ ["\\d", MAX_LENGTH],
+ [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH]
+ ];
+ var makeSafeRegex = (value) => {
+ for (const [token, max] of safeRegexReplacements) {
+ value = value.split(`${token}*`).join(`${token}{0,${max}}`).split(`${token}+`).join(`${token}{1,${max}}`);
+ }
+ return value;
+ };
+ var createToken = (name2, value, isGlobal) => {
+ const safe = makeSafeRegex(value);
+ const index = R++;
+ debug(name2, index, value);
+ t[name2] = index;
+ src[index] = value;
+ safeSrc[index] = safe;
+ re[index] = new RegExp(value, isGlobal ? "g" : void 0);
+ safeRe[index] = new RegExp(safe, isGlobal ? "g" : void 0);
+ };
+ createToken("NUMERICIDENTIFIER", "0|[1-9]\\d*");
+ createToken("NUMERICIDENTIFIERLOOSE", "\\d+");
+ createToken("NONNUMERICIDENTIFIER", `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`);
+ createToken("MAINVERSION", `(${src[t.NUMERICIDENTIFIER]})\\.(${src[t.NUMERICIDENTIFIER]})\\.(${src[t.NUMERICIDENTIFIER]})`);
+ createToken("MAINVERSIONLOOSE", `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.(${src[t.NUMERICIDENTIFIERLOOSE]})\\.(${src[t.NUMERICIDENTIFIERLOOSE]})`);
+ createToken("PRERELEASEIDENTIFIER", `(?:${src[t.NONNUMERICIDENTIFIER]}|${src[t.NUMERICIDENTIFIER]})`);
+ createToken("PRERELEASEIDENTIFIERLOOSE", `(?:${src[t.NONNUMERICIDENTIFIER]}|${src[t.NUMERICIDENTIFIERLOOSE]})`);
+ createToken("PRERELEASE", `(?:-(${src[t.PRERELEASEIDENTIFIER]}(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`);
+ createToken("PRERELEASELOOSE", `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`);
+ createToken("BUILDIDENTIFIER", `${LETTERDASHNUMBER}+`);
+ createToken("BUILD", `(?:\\+(${src[t.BUILDIDENTIFIER]}(?:\\.${src[t.BUILDIDENTIFIER]})*))`);
+ createToken("FULLPLAIN", `v?${src[t.MAINVERSION]}${src[t.PRERELEASE]}?${src[t.BUILD]}?`);
+ createToken("FULL", `^${src[t.FULLPLAIN]}$`);
+ createToken("LOOSEPLAIN", `[v=\\s]*${src[t.MAINVERSIONLOOSE]}${src[t.PRERELEASELOOSE]}?${src[t.BUILD]}?`);
+ createToken("LOOSE", `^${src[t.LOOSEPLAIN]}$`);
+ createToken("GTLT", "((?:<|>)?=?)");
+ createToken("XRANGEIDENTIFIERLOOSE", `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);
+ createToken("XRANGEIDENTIFIER", `${src[t.NUMERICIDENTIFIER]}|x|X|\\*`);
+ createToken("XRANGEPLAIN", `[v=\\s]*(${src[t.XRANGEIDENTIFIER]})(?:\\.(${src[t.XRANGEIDENTIFIER]})(?:\\.(${src[t.XRANGEIDENTIFIER]})(?:${src[t.PRERELEASE]})?${src[t.BUILD]}?)?)?`);
+ createToken("XRANGEPLAINLOOSE", `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:${src[t.PRERELEASELOOSE]})?${src[t.BUILD]}?)?)?`);
+ createToken("XRANGE", `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`);
+ createToken("XRANGELOOSE", `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`);
+ createToken("COERCEPLAIN", `${"(^|[^\\d])(\\d{1,"}${MAX_SAFE_COMPONENT_LENGTH}})(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`);
+ createToken("COERCE", `${src[t.COERCEPLAIN]}(?:$|[^\\d])`);
+ createToken("COERCEFULL", src[t.COERCEPLAIN] + `(?:${src[t.PRERELEASE]})?(?:${src[t.BUILD]})?(?:$|[^\\d])`);
+ createToken("COERCERTL", src[t.COERCE], true);
+ createToken("COERCERTLFULL", src[t.COERCEFULL], true);
+ createToken("LONETILDE", "(?:~>?)");
+ createToken("TILDETRIM", `(\\s*)${src[t.LONETILDE]}\\s+`, true);
+ exports2.tildeTrimReplace = "$1~";
+ createToken("TILDE", `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`);
+ createToken("TILDELOOSE", `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`);
+ createToken("LONECARET", "(?:\\^)");
+ createToken("CARETTRIM", `(\\s*)${src[t.LONECARET]}\\s+`, true);
+ exports2.caretTrimReplace = "$1^";
+ createToken("CARET", `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`);
+ createToken("CARETLOOSE", `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`);
+ createToken("COMPARATORLOOSE", `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`);
+ createToken("COMPARATOR", `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`);
+ createToken("COMPARATORTRIM", `(\\s*)${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true);
+ exports2.comparatorTrimReplace = "$1$2$3";
+ createToken("HYPHENRANGE", `^\\s*(${src[t.XRANGEPLAIN]})\\s+-\\s+(${src[t.XRANGEPLAIN]})\\s*$`);
+ createToken("HYPHENRANGELOOSE", `^\\s*(${src[t.XRANGEPLAINLOOSE]})\\s+-\\s+(${src[t.XRANGEPLAINLOOSE]})\\s*$`);
+ createToken("STAR", "(<|>)?=?\\s*\\*");
+ createToken("GTE0", "^\\s*>=\\s*0\\.0\\.0\\s*$");
+ createToken("GTE0PRE", "^\\s*>=\\s*0\\.0\\.0-0\\s*$");
+ }
+});
+
+// node_modules/semver/internal/parse-options.js
+var require_parse_options = __commonJS({
+ "node_modules/semver/internal/parse-options.js"(exports2, module2) {
+ "use strict";
+ var looseOption = Object.freeze({ loose: true });
+ var emptyOpts = Object.freeze({});
+ var parseOptions = (options) => {
+ if (!options) {
+ return emptyOpts;
+ }
+ if (typeof options !== "object") {
+ return looseOption;
+ }
+ return options;
+ };
+ module2.exports = parseOptions;
+ }
+});
+
+// node_modules/semver/internal/identifiers.js
+var require_identifiers = __commonJS({
+ "node_modules/semver/internal/identifiers.js"(exports2, module2) {
+ "use strict";
+ var numeric = /^[0-9]+$/;
+ var compareIdentifiers = (a, b) => {
+ if (typeof a === "number" && typeof b === "number") {
+ return a === b ? 0 : a < b ? -1 : 1;
+ }
+ const anum = numeric.test(a);
+ const bnum = numeric.test(b);
+ if (anum && bnum) {
+ a = +a;
+ b = +b;
+ }
+ return a === b ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a < b ? -1 : 1;
+ };
+ var rcompareIdentifiers = (a, b) => compareIdentifiers(b, a);
+ module2.exports = {
+ compareIdentifiers,
+ rcompareIdentifiers
+ };
+ }
+});
+
+// node_modules/semver/classes/semver.js
+var require_semver = __commonJS({
+ "node_modules/semver/classes/semver.js"(exports2, module2) {
+ "use strict";
+ var debug = require_debug();
+ var { MAX_LENGTH, MAX_SAFE_INTEGER } = require_constants2();
+ var { safeRe: re, t } = require_re();
+ var parseOptions = require_parse_options();
+ var { compareIdentifiers } = require_identifiers();
+ var isPrereleaseIdentifier = (prerelease, identifier) => {
+ const identifiers = identifier.split(".");
+ if (identifiers.length > prerelease.length) {
+ return false;
+ }
+ for (let i = 0; i < identifiers.length; i++) {
+ if (compareIdentifiers(prerelease[i], identifiers[i]) !== 0) {
+ return false;
+ }
+ }
+ return true;
+ };
+ var SemVer3 = class _SemVer {
+ constructor(version, options) {
options = parseOptions(options);
- if (range instanceof _Range) {
- if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) {
- return range;
+ if (version instanceof _SemVer) {
+ if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) {
+ return version;
} else {
- return new _Range(range.raw, options);
+ version = version.version;
}
+ } else if (typeof version !== "string") {
+ throw new TypeError(`Invalid version. Must be a string. Got type "${typeof version}".`);
}
- if (range instanceof Comparator) {
- this.raw = range.value;
- this.set = [[range]];
- this.formatted = void 0;
- return this;
+ if (version.length > MAX_LENGTH) {
+ throw new TypeError(
+ `version is longer than ${MAX_LENGTH} characters`
+ );
}
+ debug("SemVer", version, options);
this.options = options;
this.loose = !!options.loose;
this.includePrerelease = !!options.includePrerelease;
- this.raw = range.trim().replace(SPACE_CHARACTERS, " ");
- this.set = this.raw.split("||").map((r) => this.parseRange(r.trim())).filter((c) => c.length);
- if (!this.set.length) {
- throw new TypeError(`Invalid SemVer Range: ${this.raw}`);
+ const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]);
+ if (!m) {
+ throw new TypeError(`Invalid Version: ${version}`);
}
- if (this.set.length > 1) {
- const first = this.set[0];
- this.set = this.set.filter((c) => !isNullSet(c[0]));
- if (this.set.length === 0) {
- this.set = [first];
- } else if (this.set.length > 1) {
- for (const c of this.set) {
- if (c.length === 1 && isAny(c[0])) {
- this.set = [c];
- break;
- }
- }
- }
+ this.raw = version;
+ this.major = +m[1];
+ this.minor = +m[2];
+ this.patch = +m[3];
+ if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
+ throw new TypeError("Invalid major version");
}
- this.formatted = void 0;
- }
- get range() {
- if (this.formatted === void 0) {
- this.formatted = "";
- for (let i = 0; i < this.set.length; i++) {
- if (i > 0) {
- this.formatted += "||";
- }
- const comps = this.set[i];
- for (let k = 0; k < comps.length; k++) {
- if (k > 0) {
- this.formatted += " ";
+ if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
+ throw new TypeError("Invalid minor version");
+ }
+ if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
+ throw new TypeError("Invalid patch version");
+ }
+ if (!m[4]) {
+ this.prerelease = [];
+ } else {
+ this.prerelease = m[4].split(".").map((id) => {
+ if (/^[0-9]+$/.test(id)) {
+ const num = +id;
+ if (num >= 0 && num < MAX_SAFE_INTEGER) {
+ return num;
}
- this.formatted += comps[k].toString().trim();
}
- }
+ return id;
+ });
}
- return this.formatted;
+ this.build = m[5] ? m[5].split(".") : [];
+ this.format();
}
format() {
- return this.range;
+ this.version = `${this.major}.${this.minor}.${this.patch}`;
+ if (this.prerelease.length) {
+ this.version += `-${this.prerelease.join(".")}`;
+ }
+ return this.version;
}
toString() {
- return this.range;
+ return this.version;
}
- parseRange(range) {
- const memoOpts = (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) | (this.options.loose && FLAG_LOOSE);
- const memoKey = memoOpts + ":" + range;
- const cached = cache2.get(memoKey);
- if (cached) {
- return cached;
- }
- const loose = this.options.loose;
- const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE];
- range = range.replace(hr, hyphenReplace(this.options.includePrerelease));
- debug2("hyphen replace", range);
- range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace);
- debug2("comparator trim", range);
- range = range.replace(re[t.TILDETRIM], tildeTrimReplace);
- debug2("tilde trim", range);
- range = range.replace(re[t.CARETTRIM], caretTrimReplace);
- debug2("caret trim", range);
- let rangeList = range.split(" ").map((comp) => parseComparator(comp, this.options)).join(" ").split(/\s+/).map((comp) => replaceGTE0(comp, this.options));
- if (loose) {
- rangeList = rangeList.filter((comp) => {
- debug2("loose invalid filter", comp, this.options);
- return !!comp.match(re[t.COMPARATORLOOSE]);
- });
- }
- debug2("range list", rangeList);
- const rangeMap = /* @__PURE__ */ new Map();
- const comparators = rangeList.map((comp) => new Comparator(comp, this.options));
- for (const comp of comparators) {
- if (isNullSet(comp)) {
- return [comp];
+ compare(other) {
+ debug("SemVer.compare", this.version, this.options, other);
+ if (!(other instanceof _SemVer)) {
+ if (typeof other === "string" && other === this.version) {
+ return 0;
}
- rangeMap.set(comp.value, comp);
+ other = new _SemVer(other, this.options);
}
- if (rangeMap.size > 1 && rangeMap.has("")) {
- rangeMap.delete("");
+ if (other.version === this.version) {
+ return 0;
}
- const result = [...rangeMap.values()];
- cache2.set(memoKey, result);
- return result;
+ return this.compareMain(other) || this.comparePre(other);
}
- intersects(range, options) {
- if (!(range instanceof _Range)) {
- throw new TypeError("a Range is required");
+ compareMain(other) {
+ if (!(other instanceof _SemVer)) {
+ other = new _SemVer(other, this.options);
}
- return this.set.some((thisComparators) => {
- return isSatisfiable(thisComparators, options) && range.set.some((rangeComparators) => {
- return isSatisfiable(rangeComparators, options) && thisComparators.every((thisComparator) => {
- return rangeComparators.every((rangeComparator) => {
- return thisComparator.intersects(rangeComparator, options);
- });
- });
- });
- });
- }
- // if ANY of the sets match ALL of its comparators, then pass
- test(version2) {
- if (!version2) {
- return false;
+ if (this.major < other.major) {
+ return -1;
}
- if (typeof version2 === "string") {
- try {
- version2 = new SemVer3(version2, this.options);
- } catch (er) {
- return false;
- }
+ if (this.major > other.major) {
+ return 1;
}
- for (let i = 0; i < this.set.length; i++) {
- if (testSet(this.set[i], version2, this.options)) {
- return true;
- }
+ if (this.minor < other.minor) {
+ return -1;
}
- return false;
+ if (this.minor > other.minor) {
+ return 1;
+ }
+ if (this.patch < other.patch) {
+ return -1;
+ }
+ if (this.patch > other.patch) {
+ return 1;
+ }
+ return 0;
}
- };
- module2.exports = Range3;
- var LRU = require_lrucache();
- var cache2 = new LRU();
- var parseOptions = require_parse_options();
- var Comparator = require_comparator();
- var debug2 = require_debug();
- var SemVer3 = require_semver();
- var {
- safeRe: re,
- t,
- comparatorTrimReplace,
- tildeTrimReplace,
- caretTrimReplace
- } = require_re();
- var { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require_constants();
- var isNullSet = (c) => c.value === "<0.0.0-0";
- var isAny = (c) => c.value === "";
- var isSatisfiable = (comparators, options) => {
- let result = true;
- const remainingComparators = comparators.slice();
- let testComparator = remainingComparators.pop();
- while (result && remainingComparators.length) {
- result = remainingComparators.every((otherComparator) => {
- return testComparator.intersects(otherComparator, options);
- });
- testComparator = remainingComparators.pop();
+ comparePre(other) {
+ if (!(other instanceof _SemVer)) {
+ other = new _SemVer(other, this.options);
+ }
+ if (this.prerelease.length && !other.prerelease.length) {
+ return -1;
+ } else if (!this.prerelease.length && other.prerelease.length) {
+ return 1;
+ } else if (!this.prerelease.length && !other.prerelease.length) {
+ return 0;
+ }
+ let i = 0;
+ do {
+ const a = this.prerelease[i];
+ const b = other.prerelease[i];
+ debug("prerelease compare", i, a, b);
+ if (a === void 0 && b === void 0) {
+ return 0;
+ } else if (b === void 0) {
+ return 1;
+ } else if (a === void 0) {
+ return -1;
+ } else if (a === b) {
+ continue;
+ } else {
+ return compareIdentifiers(a, b);
+ }
+ } while (++i);
}
- return result;
- };
- var parseComparator = (comp, options) => {
- comp = comp.replace(re[t.BUILD], "");
- debug2("comp", comp, options);
- comp = replaceCarets(comp, options);
- debug2("caret", comp);
- comp = replaceTildes(comp, options);
- debug2("tildes", comp);
- comp = replaceXRanges(comp, options);
- debug2("xrange", comp);
- comp = replaceStars(comp, options);
- debug2("stars", comp);
- return comp;
- };
- var isX = (id) => !id || id.toLowerCase() === "x" || id === "*";
- var replaceTildes = (comp, options) => {
- return comp.trim().split(/\s+/).map((c) => replaceTilde(c, options)).join(" ");
- };
- var replaceTilde = (comp, options) => {
- const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE];
- return comp.replace(r, (_, M, m, p, pr) => {
- debug2("tilde", comp, _, M, m, p, pr);
- let ret;
- if (isX(M)) {
- ret = "";
- } else if (isX(m)) {
- ret = `>=${M}.0.0 <${+M + 1}.0.0-0`;
- } else if (isX(p)) {
- ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`;
- } else if (pr) {
- debug2("replaceTilde pr", pr);
- ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;
- } else {
- ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`;
+ compareBuild(other) {
+ if (!(other instanceof _SemVer)) {
+ other = new _SemVer(other, this.options);
}
- debug2("tilde return", ret);
- return ret;
- });
- };
- var replaceCarets = (comp, options) => {
- return comp.trim().split(/\s+/).map((c) => replaceCaret(c, options)).join(" ");
- };
- var replaceCaret = (comp, options) => {
- debug2("caret", comp, options);
- const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET];
- const z = options.includePrerelease ? "-0" : "";
- return comp.replace(r, (_, M, m, p, pr) => {
- debug2("caret", comp, _, M, m, p, pr);
- let ret;
- if (isX(M)) {
- ret = "";
- } else if (isX(m)) {
- ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`;
- } else if (isX(p)) {
- if (M === "0") {
- ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`;
+ let i = 0;
+ do {
+ const a = this.build[i];
+ const b = other.build[i];
+ debug("build compare", i, a, b);
+ if (a === void 0 && b === void 0) {
+ return 0;
+ } else if (b === void 0) {
+ return 1;
+ } else if (a === void 0) {
+ return -1;
+ } else if (a === b) {
+ continue;
} else {
- ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`;
+ return compareIdentifiers(a, b);
}
- } else if (pr) {
- debug2("replaceCaret pr", pr);
- if (M === "0") {
- if (m === "0") {
- ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`;
- } else {
- ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;
+ } while (++i);
+ }
+ // preminor will bump the version up to the next minor release, and immediately
+ // down to pre-release. premajor and prepatch work the same way.
+ inc(release, identifier, identifierBase) {
+ if (release.startsWith("pre")) {
+ if (!identifier && identifierBase === false) {
+ throw new Error("invalid increment argument: identifier is empty");
+ }
+ if (identifier) {
+ const match = `-${identifier}`.match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE]);
+ if (!match || match[1] !== identifier) {
+ throw new Error(`invalid identifier: ${identifier}`);
}
- } else {
- ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`;
}
- } else {
- debug2("no pr");
- if (M === "0") {
- if (m === "0") {
- ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`;
- } else {
- ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`;
- }
- } else {
- ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;
- }
- }
- debug2("caret return", ret);
- return ret;
- });
- };
- var replaceXRanges = (comp, options) => {
- debug2("replaceXRanges", comp, options);
- return comp.split(/\s+/).map((c) => replaceXRange(c, options)).join(" ");
- };
- var replaceXRange = (comp, options) => {
- comp = comp.trim();
- const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE];
- return comp.replace(r, (ret, gtlt, M, m, p, pr) => {
- debug2("xRange", comp, ret, gtlt, M, m, p, pr);
- const xM = isX(M);
- const xm = xM || isX(m);
- const xp = xm || isX(p);
- const anyX = xp;
- if (gtlt === "=" && anyX) {
- gtlt = "";
}
- pr = options.includePrerelease ? "-0" : "";
- if (xM) {
- if (gtlt === ">" || gtlt === "<") {
- ret = "<0.0.0-0";
- } else {
- ret = "*";
- }
- } else if (gtlt && anyX) {
- if (xm) {
- m = 0;
- }
- p = 0;
- if (gtlt === ">") {
- gtlt = ">=";
- if (xm) {
- M = +M + 1;
- m = 0;
- p = 0;
- } else {
- m = +m + 1;
- p = 0;
+ switch (release) {
+ case "premajor":
+ this.prerelease.length = 0;
+ this.patch = 0;
+ this.minor = 0;
+ this.major++;
+ this.inc("pre", identifier, identifierBase);
+ break;
+ case "preminor":
+ this.prerelease.length = 0;
+ this.patch = 0;
+ this.minor++;
+ this.inc("pre", identifier, identifierBase);
+ break;
+ case "prepatch":
+ this.prerelease.length = 0;
+ this.inc("patch", identifier, identifierBase);
+ this.inc("pre", identifier, identifierBase);
+ break;
+ // If the input is a non-prerelease version, this acts the same as
+ // prepatch.
+ case "prerelease":
+ if (this.prerelease.length === 0) {
+ this.inc("patch", identifier, identifierBase);
}
- } else if (gtlt === "<=") {
- gtlt = "<";
- if (xm) {
- M = +M + 1;
+ this.inc("pre", identifier, identifierBase);
+ break;
+ case "release":
+ if (this.prerelease.length === 0) {
+ throw new Error(`version ${this.raw} is not a prerelease`);
+ }
+ this.prerelease.length = 0;
+ break;
+ case "major":
+ if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {
+ this.major++;
+ }
+ this.minor = 0;
+ this.patch = 0;
+ this.prerelease = [];
+ break;
+ case "minor":
+ if (this.patch !== 0 || this.prerelease.length === 0) {
+ this.minor++;
+ }
+ this.patch = 0;
+ this.prerelease = [];
+ break;
+ case "patch":
+ if (this.prerelease.length === 0) {
+ this.patch++;
+ }
+ this.prerelease = [];
+ break;
+ // This probably shouldn't be used publicly.
+ // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.
+ case "pre": {
+ const base = Number(identifierBase) ? 1 : 0;
+ if (this.prerelease.length === 0) {
+ this.prerelease = [base];
} else {
- m = +m + 1;
+ let i = this.prerelease.length;
+ while (--i >= 0) {
+ if (typeof this.prerelease[i] === "number") {
+ this.prerelease[i]++;
+ i = -2;
+ }
+ }
+ if (i === -1) {
+ if (identifier === this.prerelease.join(".") && identifierBase === false) {
+ throw new Error("invalid increment argument: identifier already exists");
+ }
+ this.prerelease.push(base);
+ }
}
- }
- if (gtlt === "<") {
- pr = "-0";
- }
- ret = `${gtlt + M}.${m}.${p}${pr}`;
- } else if (xm) {
- ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`;
- } else if (xp) {
- ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`;
- }
- debug2("xRange return", ret);
- return ret;
- });
- };
- var replaceStars = (comp, options) => {
- debug2("replaceStars", comp, options);
- return comp.trim().replace(re[t.STAR], "");
- };
- var replaceGTE0 = (comp, options) => {
- debug2("replaceGTE0", comp, options);
- return comp.trim().replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], "");
- };
- var hyphenReplace = (incPr) => ($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => {
- if (isX(fM)) {
- from = "";
- } else if (isX(fm)) {
- from = `>=${fM}.0.0${incPr ? "-0" : ""}`;
- } else if (isX(fp)) {
- from = `>=${fM}.${fm}.0${incPr ? "-0" : ""}`;
- } else if (fpr) {
- from = `>=${from}`;
- } else {
- from = `>=${from}${incPr ? "-0" : ""}`;
- }
- if (isX(tM)) {
- to = "";
- } else if (isX(tm)) {
- to = `<${+tM + 1}.0.0-0`;
- } else if (isX(tp)) {
- to = `<${tM}.${+tm + 1}.0-0`;
- } else if (tpr) {
- to = `<=${tM}.${tm}.${tp}-${tpr}`;
- } else if (incPr) {
- to = `<${tM}.${tm}.${+tp + 1}-0`;
- } else {
- to = `<=${to}`;
- }
- return `${from} ${to}`.trim();
- };
- var testSet = (set, version2, options) => {
- for (let i = 0; i < set.length; i++) {
- if (!set[i].test(version2)) {
- return false;
- }
- }
- if (version2.prerelease.length && !options.includePrerelease) {
- for (let i = 0; i < set.length; i++) {
- debug2(set[i].semver);
- if (set[i].semver === Comparator.ANY) {
- continue;
- }
- if (set[i].semver.prerelease.length > 0) {
- const allowed = set[i].semver;
- if (allowed.major === version2.major && allowed.minor === version2.minor && allowed.patch === version2.patch) {
- return true;
+ if (identifier) {
+ let prerelease = [identifier, base];
+ if (identifierBase === false) {
+ prerelease = [identifier];
+ }
+ if (isPrereleaseIdentifier(this.prerelease, identifier)) {
+ const prereleaseBase = this.prerelease[identifier.split(".").length];
+ if (isNaN(prereleaseBase)) {
+ this.prerelease = prerelease;
+ }
+ } else {
+ this.prerelease = prerelease;
+ }
}
+ break;
}
+ default:
+ throw new Error(`invalid increment argument: ${release}`);
}
- return false;
+ this.raw = this.format();
+ if (this.build.length) {
+ this.raw += `+${this.build.join(".")}`;
+ }
+ return this;
}
- return true;
};
+ module2.exports = SemVer3;
}
});
-// .yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/ranges/valid.js
-var require_valid2 = __commonJS({
- ".yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/ranges/valid.js"(exports2, module2) {
+// node_modules/semver/functions/compare.js
+var require_compare = __commonJS({
+ "node_modules/semver/functions/compare.js"(exports2, module2) {
"use strict";
- var Range3 = require_range();
- var validRange = (range, options) => {
+ var SemVer3 = require_semver();
+ var compare = (a, b, loose) => new SemVer3(a, loose).compare(new SemVer3(b, loose));
+ module2.exports = compare;
+ }
+});
+
+// node_modules/semver/functions/rcompare.js
+var require_rcompare = __commonJS({
+ "node_modules/semver/functions/rcompare.js"(exports2, module2) {
+ "use strict";
+ var compare = require_compare();
+ var rcompare = (a, b, loose) => compare(b, a, loose);
+ module2.exports = rcompare;
+ }
+});
+
+// node_modules/semver/functions/parse.js
+var require_parse = __commonJS({
+ "node_modules/semver/functions/parse.js"(exports2, module2) {
+ "use strict";
+ var SemVer3 = require_semver();
+ var parse4 = (version, options, throwErrors = false) => {
+ if (version instanceof SemVer3) {
+ return version;
+ }
try {
- return new Range3(range, options).range || "*";
+ return new SemVer3(version, options);
} catch (er) {
- return null;
+ if (!throwErrors) {
+ return null;
+ }
+ throw er;
}
};
- module2.exports = validRange;
+ module2.exports = parse4;
}
});
-// .yarn/cache/ms-npm-2.1.3-81ff3cfac1-d924b57e73.zip/node_modules/ms/index.js
-var require_ms = __commonJS({
- ".yarn/cache/ms-npm-2.1.3-81ff3cfac1-d924b57e73.zip/node_modules/ms/index.js"(exports2, module2) {
- var s = 1e3;
- var m = s * 60;
- var h = m * 60;
- var d = h * 24;
- var w = d * 7;
- var y = d * 365.25;
- module2.exports = function(val, options) {
- options = options || {};
- var type = typeof val;
- if (type === "string" && val.length > 0) {
- return parse4(val);
- } else if (type === "number" && isFinite(val)) {
- return options.long ? fmtLong(val) : fmtShort(val);
- }
- throw new Error(
- "val is not a non-empty string or a valid number. val=" + JSON.stringify(val)
- );
+// node_modules/semver/functions/valid.js
+var require_valid = __commonJS({
+ "node_modules/semver/functions/valid.js"(exports2, module2) {
+ "use strict";
+ var parse4 = require_parse();
+ var valid = (version, options) => {
+ const v = parse4(version, options);
+ return v ? v.version : null;
};
- function parse4(str) {
- str = String(str);
- if (str.length > 100) {
- return;
- }
- var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(
- str
- );
- if (!match) {
- return;
+ module2.exports = valid;
+ }
+});
+
+// node_modules/semver/internal/lrucache.js
+var require_lrucache = __commonJS({
+ "node_modules/semver/internal/lrucache.js"(exports2, module2) {
+ "use strict";
+ var LRUCache = class {
+ constructor() {
+ this.max = 1e3;
+ this.map = /* @__PURE__ */ new Map();
}
- var n = parseFloat(match[1]);
- var type = (match[2] || "ms").toLowerCase();
- switch (type) {
- case "years":
- case "year":
- case "yrs":
- case "yr":
- case "y":
- return n * y;
- case "weeks":
- case "week":
- case "w":
- return n * w;
- case "days":
- case "day":
- case "d":
- return n * d;
- case "hours":
- case "hour":
- case "hrs":
- case "hr":
- case "h":
- return n * h;
- case "minutes":
- case "minute":
- case "mins":
- case "min":
- case "m":
- return n * m;
- case "seconds":
- case "second":
- case "secs":
- case "sec":
- case "s":
- return n * s;
- case "milliseconds":
- case "millisecond":
- case "msecs":
- case "msec":
- case "ms":
- return n;
- default:
+ get(key) {
+ const value = this.map.get(key);
+ if (value === void 0) {
return void 0;
+ } else {
+ this.map.delete(key);
+ this.map.set(key, value);
+ return value;
+ }
}
- }
- function fmtShort(ms) {
- var msAbs = Math.abs(ms);
- if (msAbs >= d) {
- return Math.round(ms / d) + "d";
- }
- if (msAbs >= h) {
- return Math.round(ms / h) + "h";
- }
- if (msAbs >= m) {
- return Math.round(ms / m) + "m";
- }
- if (msAbs >= s) {
- return Math.round(ms / s) + "s";
- }
- return ms + "ms";
- }
- function fmtLong(ms) {
- var msAbs = Math.abs(ms);
- if (msAbs >= d) {
- return plural2(ms, msAbs, d, "day");
- }
- if (msAbs >= h) {
- return plural2(ms, msAbs, h, "hour");
- }
- if (msAbs >= m) {
- return plural2(ms, msAbs, m, "minute");
+ delete(key) {
+ return this.map.delete(key);
}
- if (msAbs >= s) {
- return plural2(ms, msAbs, s, "second");
+ set(key, value) {
+ const deleted = this.delete(key);
+ if (!deleted && value !== void 0) {
+ if (this.map.size >= this.max) {
+ const firstKey = this.map.keys().next().value;
+ this.delete(firstKey);
+ }
+ this.map.set(key, value);
+ }
+ return this;
}
- return ms + " ms";
- }
- function plural2(ms, msAbs, n, name2) {
- var isPlural = msAbs >= n * 1.5;
- return Math.round(ms / n) + " " + name2 + (isPlural ? "s" : "");
- }
+ };
+ module2.exports = LRUCache;
}
});
-// .yarn/__virtual__/debug-virtual-436baa457e/0/cache/debug-npm-4.4.3-0105c6123a-d79136ec6c.zip/node_modules/debug/src/common.js
-var require_common = __commonJS({
- ".yarn/__virtual__/debug-virtual-436baa457e/0/cache/debug-npm-4.4.3-0105c6123a-d79136ec6c.zip/node_modules/debug/src/common.js"(exports2, module2) {
- function setup(env2) {
- createDebug.debug = createDebug;
- createDebug.default = createDebug;
- createDebug.coerce = coerce;
- createDebug.disable = disable;
- createDebug.enable = enable;
- createDebug.enabled = enabled;
- createDebug.humanize = require_ms();
- createDebug.destroy = destroy;
- Object.keys(env2).forEach((key) => {
- createDebug[key] = env2[key];
- });
- createDebug.names = [];
- createDebug.skips = [];
- createDebug.formatters = {};
- function selectColor(namespace) {
- let hash = 0;
- for (let i = 0; i < namespace.length; i++) {
- hash = (hash << 5) - hash + namespace.charCodeAt(i);
- hash |= 0;
- }
- return createDebug.colors[Math.abs(hash) % createDebug.colors.length];
- }
- createDebug.selectColor = selectColor;
- function createDebug(namespace) {
- let prevTime;
- let enableOverride = null;
- let namespacesCache;
- let enabledCache;
- function debug2(...args) {
- if (!debug2.enabled) {
- return;
+// node_modules/semver/functions/eq.js
+var require_eq = __commonJS({
+ "node_modules/semver/functions/eq.js"(exports2, module2) {
+ "use strict";
+ var compare = require_compare();
+ var eq = (a, b, loose) => compare(a, b, loose) === 0;
+ module2.exports = eq;
+ }
+});
+
+// node_modules/semver/functions/neq.js
+var require_neq = __commonJS({
+ "node_modules/semver/functions/neq.js"(exports2, module2) {
+ "use strict";
+ var compare = require_compare();
+ var neq = (a, b, loose) => compare(a, b, loose) !== 0;
+ module2.exports = neq;
+ }
+});
+
+// node_modules/semver/functions/gt.js
+var require_gt = __commonJS({
+ "node_modules/semver/functions/gt.js"(exports2, module2) {
+ "use strict";
+ var compare = require_compare();
+ var gt = (a, b, loose) => compare(a, b, loose) > 0;
+ module2.exports = gt;
+ }
+});
+
+// node_modules/semver/functions/gte.js
+var require_gte = __commonJS({
+ "node_modules/semver/functions/gte.js"(exports2, module2) {
+ "use strict";
+ var compare = require_compare();
+ var gte = (a, b, loose) => compare(a, b, loose) >= 0;
+ module2.exports = gte;
+ }
+});
+
+// node_modules/semver/functions/lt.js
+var require_lt = __commonJS({
+ "node_modules/semver/functions/lt.js"(exports2, module2) {
+ "use strict";
+ var compare = require_compare();
+ var lt = (a, b, loose) => compare(a, b, loose) < 0;
+ module2.exports = lt;
+ }
+});
+
+// node_modules/semver/functions/lte.js
+var require_lte = __commonJS({
+ "node_modules/semver/functions/lte.js"(exports2, module2) {
+ "use strict";
+ var compare = require_compare();
+ var lte = (a, b, loose) => compare(a, b, loose) <= 0;
+ module2.exports = lte;
+ }
+});
+
+// node_modules/semver/functions/cmp.js
+var require_cmp = __commonJS({
+ "node_modules/semver/functions/cmp.js"(exports2, module2) {
+ "use strict";
+ var eq = require_eq();
+ var neq = require_neq();
+ var gt = require_gt();
+ var gte = require_gte();
+ var lt = require_lt();
+ var lte = require_lte();
+ var cmp = (a, op, b, loose) => {
+ switch (op) {
+ case "===":
+ if (typeof a === "object") {
+ a = a.version;
}
- const self2 = debug2;
- const curr = Number(/* @__PURE__ */ new Date());
- const ms = curr - (prevTime || curr);
- self2.diff = ms;
- self2.prev = prevTime;
- self2.curr = curr;
- prevTime = curr;
- args[0] = createDebug.coerce(args[0]);
- if (typeof args[0] !== "string") {
- args.unshift("%O");
+ if (typeof b === "object") {
+ b = b.version;
}
- let index = 0;
- args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {
- if (match === "%%") {
- return "%";
- }
- index++;
- const formatter = createDebug.formatters[format];
- if (typeof formatter === "function") {
- const val = args[index];
- match = formatter.call(self2, val);
- args.splice(index, 1);
- index--;
- }
- return match;
- });
- createDebug.formatArgs.call(self2, args);
- const logFn = self2.log || createDebug.log;
- logFn.apply(self2, args);
- }
- debug2.namespace = namespace;
- debug2.useColors = createDebug.useColors();
- debug2.color = createDebug.selectColor(namespace);
- debug2.extend = extend;
- debug2.destroy = createDebug.destroy;
- Object.defineProperty(debug2, "enabled", {
- enumerable: true,
- configurable: false,
- get: () => {
- if (enableOverride !== null) {
- return enableOverride;
- }
- if (namespacesCache !== createDebug.namespaces) {
- namespacesCache = createDebug.namespaces;
- enabledCache = createDebug.enabled(namespace);
- }
- return enabledCache;
- },
- set: (v) => {
- enableOverride = v;
+ return a === b;
+ case "!==":
+ if (typeof a === "object") {
+ a = a.version;
}
- });
- if (typeof createDebug.init === "function") {
- createDebug.init(debug2);
- }
- return debug2;
+ if (typeof b === "object") {
+ b = b.version;
+ }
+ return a !== b;
+ case "":
+ case "=":
+ case "==":
+ return eq(a, b, loose);
+ case "!=":
+ return neq(a, b, loose);
+ case ">":
+ return gt(a, b, loose);
+ case ">=":
+ return gte(a, b, loose);
+ case "<":
+ return lt(a, b, loose);
+ case "<=":
+ return lte(a, b, loose);
+ default:
+ throw new TypeError(`Invalid operator: ${op}`);
}
- function extend(namespace, delimiter) {
- const newDebug = createDebug(this.namespace + (typeof delimiter === "undefined" ? ":" : delimiter) + namespace);
- newDebug.log = this.log;
- return newDebug;
+ };
+ module2.exports = cmp;
+ }
+});
+
+// node_modules/semver/classes/comparator.js
+var require_comparator = __commonJS({
+ "node_modules/semver/classes/comparator.js"(exports2, module2) {
+ "use strict";
+ var ANY = /* @__PURE__ */ Symbol("SemVer ANY");
+ var Comparator = class _Comparator {
+ static get ANY() {
+ return ANY;
}
- function enable(namespaces) {
- createDebug.save(namespaces);
- createDebug.namespaces = namespaces;
- createDebug.names = [];
- createDebug.skips = [];
- const split = (typeof namespaces === "string" ? namespaces : "").trim().replace(/\s+/g, ",").split(",").filter(Boolean);
- for (const ns of split) {
- if (ns[0] === "-") {
- createDebug.skips.push(ns.slice(1));
+ constructor(comp, options) {
+ options = parseOptions(options);
+ if (comp instanceof _Comparator) {
+ if (comp.loose === !!options.loose) {
+ return comp;
} else {
- createDebug.names.push(ns);
+ comp = comp.value;
}
}
+ comp = comp.trim().split(/\s+/).join(" ");
+ debug("comparator", comp, options);
+ this.options = options;
+ this.loose = !!options.loose;
+ this.parse(comp);
+ if (this.semver === ANY) {
+ this.value = "";
+ } else {
+ this.value = this.operator + this.semver.version;
+ }
+ debug("comp", this);
}
- function matchesTemplate(search, template) {
- let searchIndex = 0;
- let templateIndex = 0;
- let starIndex = -1;
- let matchIndex = 0;
- while (searchIndex < search.length) {
- if (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === "*")) {
- if (template[templateIndex] === "*") {
- starIndex = templateIndex;
- matchIndex = searchIndex;
- templateIndex++;
- } else {
- searchIndex++;
- templateIndex++;
- }
- } else if (starIndex !== -1) {
- templateIndex = starIndex + 1;
- matchIndex++;
- searchIndex = matchIndex;
- } else {
- return false;
- }
+ parse(comp) {
+ const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR];
+ const m = comp.match(r);
+ if (!m) {
+ throw new TypeError(`Invalid comparator: ${comp}`);
}
- while (templateIndex < template.length && template[templateIndex] === "*") {
- templateIndex++;
+ this.operator = m[1] !== void 0 ? m[1] : "";
+ if (this.operator === "=") {
+ this.operator = "";
+ }
+ if (!m[2]) {
+ this.semver = ANY;
+ } else {
+ this.semver = new SemVer3(m[2], this.options.loose);
}
- return templateIndex === template.length;
}
- function disable() {
- const namespaces = [
- ...createDebug.names,
- ...createDebug.skips.map((namespace) => "-" + namespace)
- ].join(",");
- createDebug.enable("");
- return namespaces;
+ toString() {
+ return this.value;
}
- function enabled(name2) {
- for (const skip of createDebug.skips) {
- if (matchesTemplate(name2, skip)) {
+ test(version) {
+ debug("Comparator.test", version, this.options.loose);
+ if (this.semver === ANY || version === ANY) {
+ return true;
+ }
+ if (typeof version === "string") {
+ try {
+ version = new SemVer3(version, this.options);
+ } catch (er) {
return false;
}
}
- for (const ns of createDebug.names) {
- if (matchesTemplate(name2, ns)) {
+ return cmp(version, this.operator, this.semver, this.options);
+ }
+ intersects(comp, options) {
+ if (!(comp instanceof _Comparator)) {
+ throw new TypeError("a Comparator is required");
+ }
+ if (this.operator === "") {
+ if (this.value === "") {
+ return true;
+ }
+ return new Range3(comp.value, options).test(this.value);
+ } else if (comp.operator === "") {
+ if (comp.value === "") {
return true;
}
+ return new Range3(this.value, options).test(comp.semver);
}
- return false;
- }
- function coerce(val) {
- if (val instanceof Error) {
- return val.stack || val.message;
+ options = parseOptions(options);
+ if (options.includePrerelease && (this.value === "<0.0.0-0" || comp.value === "<0.0.0-0")) {
+ return false;
}
- return val;
- }
- function destroy() {
- console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");
+ if (!options.includePrerelease && (this.value.startsWith("<0.0.0") || comp.value.startsWith("<0.0.0"))) {
+ return false;
+ }
+ if (this.operator.startsWith(">") && comp.operator.startsWith(">")) {
+ return true;
+ }
+ if (this.operator.startsWith("<") && comp.operator.startsWith("<")) {
+ return true;
+ }
+ if (this.semver.version === comp.semver.version && this.operator.includes("=") && comp.operator.includes("=")) {
+ return true;
+ }
+ if (cmp(this.semver, "<", comp.semver, options) && this.operator.startsWith(">") && comp.operator.startsWith("<")) {
+ return true;
+ }
+ if (cmp(this.semver, ">", comp.semver, options) && this.operator.startsWith("<") && comp.operator.startsWith(">")) {
+ return true;
+ }
+ return false;
}
- createDebug.enable(createDebug.load());
- return createDebug;
- }
- module2.exports = setup;
+ };
+ module2.exports = Comparator;
+ var parseOptions = require_parse_options();
+ var { safeRe: re, t } = require_re();
+ var cmp = require_cmp();
+ var debug = require_debug();
+ var SemVer3 = require_semver();
+ var Range3 = require_range();
}
});
-// .yarn/__virtual__/debug-virtual-436baa457e/0/cache/debug-npm-4.4.3-0105c6123a-d79136ec6c.zip/node_modules/debug/src/browser.js
-var require_browser = __commonJS({
- ".yarn/__virtual__/debug-virtual-436baa457e/0/cache/debug-npm-4.4.3-0105c6123a-d79136ec6c.zip/node_modules/debug/src/browser.js"(exports2, module2) {
- exports2.formatArgs = formatArgs;
- exports2.save = save;
- exports2.load = load;
- exports2.useColors = useColors;
- exports2.storage = localstorage();
- exports2.destroy = /* @__PURE__ */ (() => {
- let warned = false;
- return () => {
- if (!warned) {
- warned = true;
- console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");
+// node_modules/semver/classes/range.js
+var require_range = __commonJS({
+ "node_modules/semver/classes/range.js"(exports2, module2) {
+ "use strict";
+ var SPACE_CHARACTERS = /\s+/g;
+ var Range3 = class _Range {
+ constructor(range, options) {
+ options = parseOptions(options);
+ if (range instanceof _Range) {
+ if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) {
+ return range;
+ } else {
+ return new _Range(range.raw, options);
+ }
}
- };
- })();
- exports2.colors = [
- "#0000CC",
- "#0000FF",
- "#0033CC",
- "#0033FF",
- "#0066CC",
- "#0066FF",
- "#0099CC",
- "#0099FF",
- "#00CC00",
- "#00CC33",
- "#00CC66",
- "#00CC99",
- "#00CCCC",
- "#00CCFF",
- "#3300CC",
- "#3300FF",
- "#3333CC",
- "#3333FF",
- "#3366CC",
- "#3366FF",
- "#3399CC",
- "#3399FF",
- "#33CC00",
- "#33CC33",
- "#33CC66",
- "#33CC99",
- "#33CCCC",
- "#33CCFF",
- "#6600CC",
- "#6600FF",
- "#6633CC",
- "#6633FF",
- "#66CC00",
- "#66CC33",
- "#9900CC",
- "#9900FF",
- "#9933CC",
- "#9933FF",
- "#99CC00",
- "#99CC33",
- "#CC0000",
- "#CC0033",
- "#CC0066",
- "#CC0099",
- "#CC00CC",
- "#CC00FF",
- "#CC3300",
- "#CC3333",
- "#CC3366",
- "#CC3399",
- "#CC33CC",
- "#CC33FF",
- "#CC6600",
- "#CC6633",
- "#CC9900",
- "#CC9933",
- "#CCCC00",
- "#CCCC33",
- "#FF0000",
- "#FF0033",
- "#FF0066",
- "#FF0099",
- "#FF00CC",
- "#FF00FF",
- "#FF3300",
- "#FF3333",
- "#FF3366",
- "#FF3399",
- "#FF33CC",
- "#FF33FF",
- "#FF6600",
- "#FF6633",
- "#FF9900",
- "#FF9933",
- "#FFCC00",
- "#FFCC33"
- ];
- function useColors() {
- if (typeof window !== "undefined" && window.process && (window.process.type === "renderer" || window.process.__nwjs)) {
- return true;
+ if (range instanceof Comparator) {
+ this.raw = range.value;
+ this.set = [[range]];
+ this.formatted = void 0;
+ return this;
+ }
+ this.options = options;
+ this.loose = !!options.loose;
+ this.includePrerelease = !!options.includePrerelease;
+ this.raw = range.trim().replace(SPACE_CHARACTERS, " ");
+ this.set = this.raw.split("||").map((r) => this.parseRange(r.trim())).filter((c) => c.length);
+ if (!this.set.length) {
+ throw new TypeError(`Invalid SemVer Range: ${this.raw}`);
+ }
+ if (this.set.length > 1) {
+ const first = this.set[0];
+ this.set = this.set.filter((c) => !isNullSet(c[0]));
+ if (this.set.length === 0) {
+ this.set = [first];
+ } else if (this.set.length > 1) {
+ for (const c of this.set) {
+ if (c.length === 1 && isAny(c[0])) {
+ this.set = [c];
+ break;
+ }
+ }
+ }
+ }
+ this.formatted = void 0;
}
- if (typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) {
- return false;
+ get range() {
+ if (this.formatted === void 0) {
+ this.formatted = "";
+ for (let i = 0; i < this.set.length; i++) {
+ if (i > 0) {
+ this.formatted += "||";
+ }
+ const comps = this.set[i];
+ for (let k = 0; k < comps.length; k++) {
+ if (k > 0) {
+ this.formatted += " ";
+ }
+ this.formatted += comps[k].toString().trim();
+ }
+ }
+ }
+ return this.formatted;
}
- let m;
- return typeof document !== "undefined" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773
- typeof window !== "undefined" && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31?
- // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages
- typeof navigator !== "undefined" && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)) && parseInt(m[1], 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker
- typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/);
- }
- function formatArgs(args) {
- args[0] = (this.useColors ? "%c" : "") + this.namespace + (this.useColors ? " %c" : " ") + args[0] + (this.useColors ? "%c " : " ") + "+" + module2.exports.humanize(this.diff);
- if (!this.useColors) {
- return;
+ format() {
+ return this.range;
}
- const c = "color: " + this.color;
- args.splice(1, 0, c, "color: inherit");
- let index = 0;
- let lastC = 0;
- args[0].replace(/%[a-zA-Z%]/g, (match) => {
- if (match === "%%") {
- return;
+ toString() {
+ return this.range;
+ }
+ parseRange(range) {
+ range = range.replace(BUILDSTRIPRE, "");
+ const memoOpts = (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) | (this.options.loose && FLAG_LOOSE);
+ const memoKey = memoOpts + ":" + range;
+ const cached = cache2.get(memoKey);
+ if (cached) {
+ return cached;
}
- index++;
- if (match === "%c") {
- lastC = index;
+ const loose = this.options.loose;
+ const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE];
+ range = range.replace(hr, hyphenReplace(this.options.includePrerelease));
+ debug("hyphen replace", range);
+ range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace);
+ debug("comparator trim", range);
+ range = range.replace(re[t.TILDETRIM], tildeTrimReplace);
+ debug("tilde trim", range);
+ range = range.replace(re[t.CARETTRIM], caretTrimReplace);
+ debug("caret trim", range);
+ let rangeList = range.split(" ").map((comp) => parseComparator(comp, this.options)).join(" ").split(/\s+/).map((comp) => replaceGTE0(comp, this.options));
+ if (loose) {
+ rangeList = rangeList.filter((comp) => {
+ debug("loose invalid filter", comp, this.options);
+ return !!comp.match(re[t.COMPARATORLOOSE]);
+ });
}
- });
- args.splice(lastC, 0, c);
- }
- exports2.log = console.debug || console.log || (() => {
- });
- function save(namespaces) {
- try {
- if (namespaces) {
- exports2.storage.setItem("debug", namespaces);
- } else {
- exports2.storage.removeItem("debug");
+ debug("range list", rangeList);
+ const rangeMap = /* @__PURE__ */ new Map();
+ const comparators = rangeList.map((comp) => new Comparator(comp, this.options));
+ for (const comp of comparators) {
+ if (isNullSet(comp)) {
+ return [comp];
+ }
+ rangeMap.set(comp.value, comp);
}
- } catch (error) {
- }
- }
- function load() {
- let r;
- try {
- r = exports2.storage.getItem("debug") || exports2.storage.getItem("DEBUG");
- } catch (error) {
+ if (rangeMap.size > 1 && rangeMap.has("")) {
+ rangeMap.delete("");
+ }
+ const result = [...rangeMap.values()];
+ cache2.set(memoKey, result);
+ return result;
}
- if (!r && typeof process !== "undefined" && "env" in process) {
- r = process.env.DEBUG;
+ intersects(range, options) {
+ if (!(range instanceof _Range)) {
+ throw new TypeError("a Range is required");
+ }
+ return this.set.some((thisComparators) => {
+ return isSatisfiable(thisComparators, options) && range.set.some((rangeComparators) => {
+ return isSatisfiable(rangeComparators, options) && thisComparators.every((thisComparator) => {
+ return rangeComparators.every((rangeComparator) => {
+ return thisComparator.intersects(rangeComparator, options);
+ });
+ });
+ });
+ });
}
- return r;
- }
- function localstorage() {
- try {
- return localStorage;
- } catch (error) {
+ // if ANY of the sets match ALL of its comparators, then pass
+ test(version) {
+ if (!version) {
+ return false;
+ }
+ if (typeof version === "string") {
+ try {
+ version = new SemVer3(version, this.options);
+ } catch (er) {
+ return false;
+ }
+ }
+ for (let i = 0; i < this.set.length; i++) {
+ if (testSet(this.set[i], version, this.options)) {
+ return true;
+ }
+ }
+ return false;
}
- }
- module2.exports = require_common()(exports2);
- var { formatters } = module2.exports;
- formatters.j = function(v) {
- try {
- return JSON.stringify(v);
- } catch (error) {
- return "[UnexpectedJSONParseError]: " + error.message;
+ };
+ module2.exports = Range3;
+ var LRU = require_lrucache();
+ var cache2 = new LRU();
+ var parseOptions = require_parse_options();
+ var Comparator = require_comparator();
+ var debug = require_debug();
+ var SemVer3 = require_semver();
+ var {
+ safeRe: re,
+ src,
+ t,
+ comparatorTrimReplace,
+ tildeTrimReplace,
+ caretTrimReplace
+ } = require_re();
+ var { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require_constants2();
+ var BUILDSTRIPRE = new RegExp(src[t.BUILD], "g");
+ var isNullSet = (c) => c.value === "<0.0.0-0";
+ var isAny = (c) => c.value === "";
+ var isSatisfiable = (comparators, options) => {
+ let result = true;
+ const remainingComparators = comparators.slice();
+ let testComparator = remainingComparators.pop();
+ while (result && remainingComparators.length) {
+ result = remainingComparators.every((otherComparator) => {
+ return testComparator.intersects(otherComparator, options);
+ });
+ testComparator = remainingComparators.pop();
}
+ return result;
};
- }
-});
-
-// .yarn/cache/supports-color-npm-10.2.2-e43ac15f9f-fb28dd7e0c.zip/node_modules/supports-color/index.js
-var supports_color_exports = {};
-__export(supports_color_exports, {
- createSupportsColor: () => createSupportsColor,
- default: () => supports_color_default
-});
-function hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : import_node_process.default.argv) {
- const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--";
- const position = argv.indexOf(prefix + flag);
- const terminatorPosition = argv.indexOf("--");
- return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);
-}
-function envForceColor() {
- if (!("FORCE_COLOR" in env)) {
- return;
- }
- if (env.FORCE_COLOR === "true") {
- return 1;
- }
- if (env.FORCE_COLOR === "false") {
- return 0;
- }
- if (env.FORCE_COLOR.length === 0) {
- return 1;
- }
- const level = Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3);
- if (![0, 1, 2, 3].includes(level)) {
- return;
- }
- return level;
-}
-function translateLevel(level) {
- if (level === 0) {
- return false;
- }
- return {
- level,
- hasBasic: true,
- has256: level >= 2,
- has16m: level >= 3
- };
-}
-function _supportsColor(haveStream, { streamIsTTY, sniffFlags = true } = {}) {
- const noFlagForceColor = envForceColor();
- if (noFlagForceColor !== void 0) {
- flagForceColor = noFlagForceColor;
- }
- const forceColor = sniffFlags ? flagForceColor : noFlagForceColor;
- if (forceColor === 0) {
- return 0;
- }
- if (sniffFlags) {
- if (hasFlag("color=16m") || hasFlag("color=full") || hasFlag("color=truecolor")) {
- return 3;
- }
- if (hasFlag("color=256")) {
- return 2;
- }
- }
- if ("TF_BUILD" in env && "AGENT_NAME" in env) {
- return 1;
- }
- if (haveStream && !streamIsTTY && forceColor === void 0) {
- return 0;
- }
- const min = forceColor || 0;
- if (env.TERM === "dumb") {
- return min;
- }
- if (import_node_process.default.platform === "win32") {
- const osRelease = import_node_os.default.release().split(".");
- if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) {
- return Number(osRelease[2]) >= 14931 ? 3 : 2;
- }
- return 1;
- }
- if ("CI" in env) {
- if (["GITHUB_ACTIONS", "GITEA_ACTIONS", "CIRCLECI"].some((key) => key in env)) {
- return 3;
- }
- if (["TRAVIS", "APPVEYOR", "GITLAB_CI", "BUILDKITE", "DRONE"].some((sign) => sign in env) || env.CI_NAME === "codeship") {
- return 1;
- }
- return min;
- }
- if ("TEAMCITY_VERSION" in env) {
- return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;
- }
- if (env.COLORTERM === "truecolor") {
- return 3;
- }
- if (env.TERM === "xterm-kitty") {
- return 3;
- }
- if (env.TERM === "xterm-ghostty") {
- return 3;
- }
- if (env.TERM === "wezterm") {
- return 3;
- }
- if ("TERM_PROGRAM" in env) {
- const version2 = Number.parseInt((env.TERM_PROGRAM_VERSION || "").split(".")[0], 10);
- switch (env.TERM_PROGRAM) {
- case "iTerm.app": {
- return version2 >= 3 ? 3 : 2;
- }
- case "Apple_Terminal": {
- return 2;
- }
- }
- }
- if (/-256(color)?$/i.test(env.TERM)) {
- return 2;
- }
- if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {
- return 1;
- }
- if ("COLORTERM" in env) {
- return 1;
- }
- return min;
-}
-function createSupportsColor(stream, options = {}) {
- const level = _supportsColor(stream, {
- streamIsTTY: stream && stream.isTTY,
- ...options
- });
- return translateLevel(level);
-}
-var import_node_process, import_node_os, import_node_tty, env, flagForceColor, supportsColor, supports_color_default;
-var init_supports_color = __esm({
- ".yarn/cache/supports-color-npm-10.2.2-e43ac15f9f-fb28dd7e0c.zip/node_modules/supports-color/index.js"() {
- import_node_process = __toESM(require("node:process"), 1);
- import_node_os = __toESM(require("node:os"), 1);
- import_node_tty = __toESM(require("node:tty"), 1);
- ({ env } = import_node_process.default);
- if (hasFlag("no-color") || hasFlag("no-colors") || hasFlag("color=false") || hasFlag("color=never")) {
- flagForceColor = 0;
- } else if (hasFlag("color") || hasFlag("colors") || hasFlag("color=true") || hasFlag("color=always")) {
- flagForceColor = 1;
- }
- supportsColor = {
- stdout: createSupportsColor({ isTTY: import_node_tty.default.isatty(1) }),
- stderr: createSupportsColor({ isTTY: import_node_tty.default.isatty(2) })
- };
- supports_color_default = supportsColor;
- }
-});
-
-// .yarn/__virtual__/debug-virtual-436baa457e/0/cache/debug-npm-4.4.3-0105c6123a-d79136ec6c.zip/node_modules/debug/src/node.js
-var require_node2 = __commonJS({
- ".yarn/__virtual__/debug-virtual-436baa457e/0/cache/debug-npm-4.4.3-0105c6123a-d79136ec6c.zip/node_modules/debug/src/node.js"(exports2, module2) {
- var tty2 = require("tty");
- var util = require("util");
- exports2.init = init;
- exports2.log = log2;
- exports2.formatArgs = formatArgs;
- exports2.save = save;
- exports2.load = load;
- exports2.useColors = useColors;
- exports2.destroy = util.deprecate(
- () => {
- },
- "Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."
- );
- exports2.colors = [6, 2, 3, 4, 5, 1];
- try {
- const supportsColor2 = (init_supports_color(), __toCommonJS(supports_color_exports));
- if (supportsColor2 && (supportsColor2.stderr || supportsColor2).level >= 2) {
- exports2.colors = [
- 20,
- 21,
- 26,
- 27,
- 32,
- 33,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 56,
- 57,
- 62,
- 63,
- 68,
- 69,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 92,
- 93,
- 98,
- 99,
- 112,
- 113,
- 128,
- 129,
- 134,
- 135,
- 148,
- 149,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 178,
- 179,
- 184,
- 185,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 214,
- 215,
- 220,
- 221
- ];
- }
- } catch (error) {
- }
- exports2.inspectOpts = Object.keys(process.env).filter((key) => {
- return /^debug_/i.test(key);
- }).reduce((obj, key) => {
- const prop = key.substring(6).toLowerCase().replace(/_([a-z])/g, (_, k) => {
- return k.toUpperCase();
- });
- let val = process.env[key];
- if (/^(yes|on|true|enabled)$/i.test(val)) {
- val = true;
- } else if (/^(no|off|false|disabled)$/i.test(val)) {
- val = false;
- } else if (val === "null") {
- val = null;
- } else {
- val = Number(val);
- }
- obj[prop] = val;
- return obj;
- }, {});
- function useColors() {
- return "colors" in exports2.inspectOpts ? Boolean(exports2.inspectOpts.colors) : tty2.isatty(process.stderr.fd);
- }
- function formatArgs(args) {
- const { namespace: name2, useColors: useColors2 } = this;
- if (useColors2) {
- const c = this.color;
- const colorCode = "\x1B[3" + (c < 8 ? c : "8;5;" + c);
- const prefix = ` ${colorCode};1m${name2} \x1B[0m`;
- args[0] = prefix + args[0].split("\n").join("\n" + prefix);
- args.push(colorCode + "m+" + module2.exports.humanize(this.diff) + "\x1B[0m");
- } else {
- args[0] = getDate() + name2 + " " + args[0];
- }
- }
- function getDate() {
- if (exports2.inspectOpts.hideDate) {
- return "";
- }
- return (/* @__PURE__ */ new Date()).toISOString() + " ";
- }
- function log2(...args) {
- return process.stderr.write(util.formatWithOptions(exports2.inspectOpts, ...args) + "\n");
- }
- function save(namespaces) {
- if (namespaces) {
- process.env.DEBUG = namespaces;
- } else {
- delete process.env.DEBUG;
- }
- }
- function load() {
- return process.env.DEBUG;
- }
- function init(debug2) {
- debug2.inspectOpts = {};
- const keys = Object.keys(exports2.inspectOpts);
- for (let i = 0; i < keys.length; i++) {
- debug2.inspectOpts[keys[i]] = exports2.inspectOpts[keys[i]];
- }
- }
- module2.exports = require_common()(exports2);
- var { formatters } = module2.exports;
- formatters.o = function(v) {
- this.inspectOpts.colors = this.useColors;
- return util.inspect(v, this.inspectOpts).split("\n").map((str) => str.trim()).join(" ");
- };
- formatters.O = function(v) {
- this.inspectOpts.colors = this.useColors;
- return util.inspect(v, this.inspectOpts);
- };
- }
-});
-
-// .yarn/__virtual__/debug-virtual-436baa457e/0/cache/debug-npm-4.4.3-0105c6123a-d79136ec6c.zip/node_modules/debug/src/index.js
-var require_src = __commonJS({
- ".yarn/__virtual__/debug-virtual-436baa457e/0/cache/debug-npm-4.4.3-0105c6123a-d79136ec6c.zip/node_modules/debug/src/index.js"(exports2, module2) {
- if (typeof process === "undefined" || process.type === "renderer" || process.browser === true || process.__nwjs) {
- module2.exports = require_browser();
- } else {
- module2.exports = require_node2();
- }
- }
-});
-
-// .yarn/cache/proxy-from-env-npm-1.1.0-c13d07f26b-fe7dd8b1bd.zip/node_modules/proxy-from-env/index.js
-var require_proxy_from_env = __commonJS({
- ".yarn/cache/proxy-from-env-npm-1.1.0-c13d07f26b-fe7dd8b1bd.zip/node_modules/proxy-from-env/index.js"(exports2) {
- "use strict";
- var parseUrl = require("url").parse;
- var DEFAULT_PORTS = {
- ftp: 21,
- gopher: 70,
- http: 80,
- https: 443,
- ws: 80,
- wss: 443
- };
- var stringEndsWith = String.prototype.endsWith || function(s) {
- return s.length <= this.length && this.indexOf(s, this.length - s.length) !== -1;
- };
- function getProxyForUrl(url) {
- var parsedUrl = typeof url === "string" ? parseUrl(url) : url || {};
- var proto = parsedUrl.protocol;
- var hostname = parsedUrl.host;
- var port = parsedUrl.port;
- if (typeof hostname !== "string" || !hostname || typeof proto !== "string") {
- return "";
- }
- proto = proto.split(":", 1)[0];
- hostname = hostname.replace(/:\d*$/, "");
- port = parseInt(port) || DEFAULT_PORTS[proto] || 0;
- if (!shouldProxy(hostname, port)) {
- return "";
- }
- var proxy = getEnv("npm_config_" + proto + "_proxy") || getEnv(proto + "_proxy") || getEnv("npm_config_proxy") || getEnv("all_proxy");
- if (proxy && proxy.indexOf("://") === -1) {
- proxy = proto + "://" + proxy;
- }
- return proxy;
- }
- function shouldProxy(hostname, port) {
- var NO_PROXY = (getEnv("npm_config_no_proxy") || getEnv("no_proxy")).toLowerCase();
- if (!NO_PROXY) {
- return true;
- }
- if (NO_PROXY === "*") {
- return false;
- }
- return NO_PROXY.split(/[,\s]/).every(function(proxy) {
- if (!proxy) {
- return true;
- }
- var parsedProxy = proxy.match(/^(.+):(\d+)$/);
- var parsedProxyHostname = parsedProxy ? parsedProxy[1] : proxy;
- var parsedProxyPort = parsedProxy ? parseInt(parsedProxy[2]) : 0;
- if (parsedProxyPort && parsedProxyPort !== port) {
- return true;
- }
- if (!/^[.*]/.test(parsedProxyHostname)) {
- return hostname !== parsedProxyHostname;
- }
- if (parsedProxyHostname.charAt(0) === "*") {
- parsedProxyHostname = parsedProxyHostname.slice(1);
- }
- return !stringEndsWith.call(hostname, parsedProxyHostname);
- });
- }
- function getEnv(key) {
- return process.env[key.toLowerCase()] || process.env[key.toUpperCase()] || "";
- }
- exports2.getProxyForUrl = getProxyForUrl;
- }
-});
-
-// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/core/errors.js
-var require_errors = __commonJS({
- ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/core/errors.js"(exports2, module2) {
- "use strict";
- var kUndiciError = Symbol.for("undici.error.UND_ERR");
- var UndiciError = class extends Error {
- constructor(message) {
- super(message);
- this.name = "UndiciError";
- this.code = "UND_ERR";
- }
- static [Symbol.hasInstance](instance) {
- return instance && instance[kUndiciError] === true;
- }
- [kUndiciError] = true;
- };
- var kConnectTimeoutError = Symbol.for("undici.error.UND_ERR_CONNECT_TIMEOUT");
- var ConnectTimeoutError = class extends UndiciError {
- constructor(message) {
- super(message);
- this.name = "ConnectTimeoutError";
- this.message = message || "Connect Timeout Error";
- this.code = "UND_ERR_CONNECT_TIMEOUT";
- }
- static [Symbol.hasInstance](instance) {
- return instance && instance[kConnectTimeoutError] === true;
- }
- [kConnectTimeoutError] = true;
- };
- var kHeadersTimeoutError = Symbol.for("undici.error.UND_ERR_HEADERS_TIMEOUT");
- var HeadersTimeoutError = class extends UndiciError {
- constructor(message) {
- super(message);
- this.name = "HeadersTimeoutError";
- this.message = message || "Headers Timeout Error";
- this.code = "UND_ERR_HEADERS_TIMEOUT";
- }
- static [Symbol.hasInstance](instance) {
- return instance && instance[kHeadersTimeoutError] === true;
- }
- [kHeadersTimeoutError] = true;
- };
- var kHeadersOverflowError = Symbol.for("undici.error.UND_ERR_HEADERS_OVERFLOW");
- var HeadersOverflowError = class extends UndiciError {
- constructor(message) {
- super(message);
- this.name = "HeadersOverflowError";
- this.message = message || "Headers Overflow Error";
- this.code = "UND_ERR_HEADERS_OVERFLOW";
- }
- static [Symbol.hasInstance](instance) {
- return instance && instance[kHeadersOverflowError] === true;
- }
- [kHeadersOverflowError] = true;
- };
- var kBodyTimeoutError = Symbol.for("undici.error.UND_ERR_BODY_TIMEOUT");
- var BodyTimeoutError = class extends UndiciError {
- constructor(message) {
- super(message);
- this.name = "BodyTimeoutError";
- this.message = message || "Body Timeout Error";
- this.code = "UND_ERR_BODY_TIMEOUT";
- }
- static [Symbol.hasInstance](instance) {
- return instance && instance[kBodyTimeoutError] === true;
- }
- [kBodyTimeoutError] = true;
- };
- var kResponseStatusCodeError = Symbol.for("undici.error.UND_ERR_RESPONSE_STATUS_CODE");
- var ResponseStatusCodeError = class extends UndiciError {
- constructor(message, statusCode, headers, body) {
- super(message);
- this.name = "ResponseStatusCodeError";
- this.message = message || "Response Status Code Error";
- this.code = "UND_ERR_RESPONSE_STATUS_CODE";
- this.body = body;
- this.status = statusCode;
- this.statusCode = statusCode;
- this.headers = headers;
- }
- static [Symbol.hasInstance](instance) {
- return instance && instance[kResponseStatusCodeError] === true;
- }
- [kResponseStatusCodeError] = true;
- };
- var kInvalidArgumentError = Symbol.for("undici.error.UND_ERR_INVALID_ARG");
- var InvalidArgumentError = class extends UndiciError {
- constructor(message) {
- super(message);
- this.name = "InvalidArgumentError";
- this.message = message || "Invalid Argument Error";
- this.code = "UND_ERR_INVALID_ARG";
- }
- static [Symbol.hasInstance](instance) {
- return instance && instance[kInvalidArgumentError] === true;
- }
- [kInvalidArgumentError] = true;
- };
- var kInvalidReturnValueError = Symbol.for("undici.error.UND_ERR_INVALID_RETURN_VALUE");
- var InvalidReturnValueError = class extends UndiciError {
- constructor(message) {
- super(message);
- this.name = "InvalidReturnValueError";
- this.message = message || "Invalid Return Value Error";
- this.code = "UND_ERR_INVALID_RETURN_VALUE";
- }
- static [Symbol.hasInstance](instance) {
- return instance && instance[kInvalidReturnValueError] === true;
- }
- [kInvalidReturnValueError] = true;
- };
- var kAbortError = Symbol.for("undici.error.UND_ERR_ABORT");
- var AbortError = class extends UndiciError {
- constructor(message) {
- super(message);
- this.name = "AbortError";
- this.message = message || "The operation was aborted";
- this.code = "UND_ERR_ABORT";
- }
- static [Symbol.hasInstance](instance) {
- return instance && instance[kAbortError] === true;
- }
- [kAbortError] = true;
- };
- var kRequestAbortedError = Symbol.for("undici.error.UND_ERR_ABORTED");
- var RequestAbortedError = class extends AbortError {
- constructor(message) {
- super(message);
- this.name = "AbortError";
- this.message = message || "Request aborted";
- this.code = "UND_ERR_ABORTED";
- }
- static [Symbol.hasInstance](instance) {
- return instance && instance[kRequestAbortedError] === true;
- }
- [kRequestAbortedError] = true;
- };
- var kInformationalError = Symbol.for("undici.error.UND_ERR_INFO");
- var InformationalError = class extends UndiciError {
- constructor(message) {
- super(message);
- this.name = "InformationalError";
- this.message = message || "Request information";
- this.code = "UND_ERR_INFO";
- }
- static [Symbol.hasInstance](instance) {
- return instance && instance[kInformationalError] === true;
- }
- [kInformationalError] = true;
- };
- var kRequestContentLengthMismatchError = Symbol.for("undici.error.UND_ERR_REQ_CONTENT_LENGTH_MISMATCH");
- var RequestContentLengthMismatchError = class extends UndiciError {
- constructor(message) {
- super(message);
- this.name = "RequestContentLengthMismatchError";
- this.message = message || "Request body length does not match content-length header";
- this.code = "UND_ERR_REQ_CONTENT_LENGTH_MISMATCH";
- }
- static [Symbol.hasInstance](instance) {
- return instance && instance[kRequestContentLengthMismatchError] === true;
- }
- [kRequestContentLengthMismatchError] = true;
- };
- var kResponseContentLengthMismatchError = Symbol.for("undici.error.UND_ERR_RES_CONTENT_LENGTH_MISMATCH");
- var ResponseContentLengthMismatchError = class extends UndiciError {
- constructor(message) {
- super(message);
- this.name = "ResponseContentLengthMismatchError";
- this.message = message || "Response body length does not match content-length header";
- this.code = "UND_ERR_RES_CONTENT_LENGTH_MISMATCH";
- }
- static [Symbol.hasInstance](instance) {
- return instance && instance[kResponseContentLengthMismatchError] === true;
- }
- [kResponseContentLengthMismatchError] = true;
- };
- var kClientDestroyedError = Symbol.for("undici.error.UND_ERR_DESTROYED");
- var ClientDestroyedError = class extends UndiciError {
- constructor(message) {
- super(message);
- this.name = "ClientDestroyedError";
- this.message = message || "The client is destroyed";
- this.code = "UND_ERR_DESTROYED";
- }
- static [Symbol.hasInstance](instance) {
- return instance && instance[kClientDestroyedError] === true;
- }
- [kClientDestroyedError] = true;
- };
- var kClientClosedError = Symbol.for("undici.error.UND_ERR_CLOSED");
- var ClientClosedError = class extends UndiciError {
- constructor(message) {
- super(message);
- this.name = "ClientClosedError";
- this.message = message || "The client is closed";
- this.code = "UND_ERR_CLOSED";
- }
- static [Symbol.hasInstance](instance) {
- return instance && instance[kClientClosedError] === true;
- }
- [kClientClosedError] = true;
- };
- var kSocketError = Symbol.for("undici.error.UND_ERR_SOCKET");
- var SocketError = class extends UndiciError {
- constructor(message, socket) {
- super(message);
- this.name = "SocketError";
- this.message = message || "Socket error";
- this.code = "UND_ERR_SOCKET";
- this.socket = socket;
- }
- static [Symbol.hasInstance](instance) {
- return instance && instance[kSocketError] === true;
- }
- [kSocketError] = true;
- };
- var kNotSupportedError = Symbol.for("undici.error.UND_ERR_NOT_SUPPORTED");
- var NotSupportedError = class extends UndiciError {
- constructor(message) {
- super(message);
- this.name = "NotSupportedError";
- this.message = message || "Not supported error";
- this.code = "UND_ERR_NOT_SUPPORTED";
- }
- static [Symbol.hasInstance](instance) {
- return instance && instance[kNotSupportedError] === true;
- }
- [kNotSupportedError] = true;
- };
- var kBalancedPoolMissingUpstreamError = Symbol.for("undici.error.UND_ERR_BPL_MISSING_UPSTREAM");
- var BalancedPoolMissingUpstreamError = class extends UndiciError {
- constructor(message) {
- super(message);
- this.name = "MissingUpstreamError";
- this.message = message || "No upstream has been added to the BalancedPool";
- this.code = "UND_ERR_BPL_MISSING_UPSTREAM";
- }
- static [Symbol.hasInstance](instance) {
- return instance && instance[kBalancedPoolMissingUpstreamError] === true;
- }
- [kBalancedPoolMissingUpstreamError] = true;
- };
- var kHTTPParserError = Symbol.for("undici.error.UND_ERR_HTTP_PARSER");
- var HTTPParserError = class extends Error {
- constructor(message, code2, data) {
- super(message);
- this.name = "HTTPParserError";
- this.code = code2 ? `HPE_${code2}` : void 0;
- this.data = data ? data.toString() : void 0;
- }
- static [Symbol.hasInstance](instance) {
- return instance && instance[kHTTPParserError] === true;
- }
- [kHTTPParserError] = true;
- };
- var kResponseExceededMaxSizeError = Symbol.for("undici.error.UND_ERR_RES_EXCEEDED_MAX_SIZE");
- var ResponseExceededMaxSizeError = class extends UndiciError {
- constructor(message) {
- super(message);
- this.name = "ResponseExceededMaxSizeError";
- this.message = message || "Response content exceeded max size";
- this.code = "UND_ERR_RES_EXCEEDED_MAX_SIZE";
- }
- static [Symbol.hasInstance](instance) {
- return instance && instance[kResponseExceededMaxSizeError] === true;
- }
- [kResponseExceededMaxSizeError] = true;
- };
- var kRequestRetryError = Symbol.for("undici.error.UND_ERR_REQ_RETRY");
- var RequestRetryError = class extends UndiciError {
- constructor(message, code2, { headers, data }) {
- super(message);
- this.name = "RequestRetryError";
- this.message = message || "Request retry error";
- this.code = "UND_ERR_REQ_RETRY";
- this.statusCode = code2;
- this.data = data;
- this.headers = headers;
- }
- static [Symbol.hasInstance](instance) {
- return instance && instance[kRequestRetryError] === true;
- }
- [kRequestRetryError] = true;
- };
- var kResponseError = Symbol.for("undici.error.UND_ERR_RESPONSE");
- var ResponseError = class extends UndiciError {
- constructor(message, code2, { headers, data }) {
- super(message);
- this.name = "ResponseError";
- this.message = message || "Response error";
- this.code = "UND_ERR_RESPONSE";
- this.statusCode = code2;
- this.data = data;
- this.headers = headers;
- }
- static [Symbol.hasInstance](instance) {
- return instance && instance[kResponseError] === true;
- }
- [kResponseError] = true;
- };
- var kSecureProxyConnectionError = Symbol.for("undici.error.UND_ERR_PRX_TLS");
- var SecureProxyConnectionError = class extends UndiciError {
- constructor(cause, message, options) {
- super(message, { cause, ...options ?? {} });
- this.name = "SecureProxyConnectionError";
- this.message = message || "Secure Proxy Connection failed";
- this.code = "UND_ERR_PRX_TLS";
- this.cause = cause;
- }
- static [Symbol.hasInstance](instance) {
- return instance && instance[kSecureProxyConnectionError] === true;
- }
- [kSecureProxyConnectionError] = true;
- };
- module2.exports = {
- AbortError,
- HTTPParserError,
- UndiciError,
- HeadersTimeoutError,
- HeadersOverflowError,
- BodyTimeoutError,
- RequestContentLengthMismatchError,
- ConnectTimeoutError,
- ResponseStatusCodeError,
- InvalidArgumentError,
- InvalidReturnValueError,
- RequestAbortedError,
- ClientDestroyedError,
- ClientClosedError,
- InformationalError,
- SocketError,
- NotSupportedError,
- ResponseContentLengthMismatchError,
- BalancedPoolMissingUpstreamError,
- ResponseExceededMaxSizeError,
- RequestRetryError,
- ResponseError,
- SecureProxyConnectionError
- };
- }
-});
-
-// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/core/symbols.js
-var require_symbols = __commonJS({
- ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/core/symbols.js"(exports2, module2) {
- module2.exports = {
- kClose: Symbol("close"),
- kDestroy: Symbol("destroy"),
- kDispatch: Symbol("dispatch"),
- kUrl: Symbol("url"),
- kWriting: Symbol("writing"),
- kResuming: Symbol("resuming"),
- kQueue: Symbol("queue"),
- kConnect: Symbol("connect"),
- kConnecting: Symbol("connecting"),
- kKeepAliveDefaultTimeout: Symbol("default keep alive timeout"),
- kKeepAliveMaxTimeout: Symbol("max keep alive timeout"),
- kKeepAliveTimeoutThreshold: Symbol("keep alive timeout threshold"),
- kKeepAliveTimeoutValue: Symbol("keep alive timeout"),
- kKeepAlive: Symbol("keep alive"),
- kHeadersTimeout: Symbol("headers timeout"),
- kBodyTimeout: Symbol("body timeout"),
- kServerName: Symbol("server name"),
- kLocalAddress: Symbol("local address"),
- kHost: Symbol("host"),
- kNoRef: Symbol("no ref"),
- kBodyUsed: Symbol("used"),
- kBody: Symbol("abstracted request body"),
- kRunning: Symbol("running"),
- kBlocking: Symbol("blocking"),
- kPending: Symbol("pending"),
- kSize: Symbol("size"),
- kBusy: Symbol("busy"),
- kQueued: Symbol("queued"),
- kFree: Symbol("free"),
- kConnected: Symbol("connected"),
- kClosed: Symbol("closed"),
- kNeedDrain: Symbol("need drain"),
- kReset: Symbol("reset"),
- kDestroyed: Symbol.for("nodejs.stream.destroyed"),
- kResume: Symbol("resume"),
- kOnError: Symbol("on error"),
- kMaxHeadersSize: Symbol("max headers size"),
- kRunningIdx: Symbol("running index"),
- kPendingIdx: Symbol("pending index"),
- kError: Symbol("error"),
- kClients: Symbol("clients"),
- kClient: Symbol("client"),
- kParser: Symbol("parser"),
- kOnDestroyed: Symbol("destroy callbacks"),
- kPipelining: Symbol("pipelining"),
- kSocket: Symbol("socket"),
- kHostHeader: Symbol("host header"),
- kConnector: Symbol("connector"),
- kStrictContentLength: Symbol("strict content length"),
- kMaxRedirections: Symbol("maxRedirections"),
- kMaxRequests: Symbol("maxRequestsPerClient"),
- kProxy: Symbol("proxy agent options"),
- kCounter: Symbol("socket request counter"),
- kInterceptors: Symbol("dispatch interceptors"),
- kMaxResponseSize: Symbol("max response size"),
- kHTTP2Session: Symbol("http2Session"),
- kHTTP2SessionState: Symbol("http2Session state"),
- kRetryHandlerDefaultRetry: Symbol("retry agent default retry"),
- kConstruct: Symbol("constructable"),
- kListeners: Symbol("listeners"),
- kHTTPContext: Symbol("http context"),
- kMaxConcurrentStreams: Symbol("max concurrent streams"),
- kNoProxyAgent: Symbol("no proxy agent"),
- kHttpProxyAgent: Symbol("http proxy agent"),
- kHttpsProxyAgent: Symbol("https proxy agent")
- };
- }
-});
-
-// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/core/constants.js
-var require_constants2 = __commonJS({
- ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/core/constants.js"(exports2, module2) {
- "use strict";
- var headerNameLowerCasedRecord = {};
- var wellknownHeaderNames = [
- "Accept",
- "Accept-Encoding",
- "Accept-Language",
- "Accept-Ranges",
- "Access-Control-Allow-Credentials",
- "Access-Control-Allow-Headers",
- "Access-Control-Allow-Methods",
- "Access-Control-Allow-Origin",
- "Access-Control-Expose-Headers",
- "Access-Control-Max-Age",
- "Access-Control-Request-Headers",
- "Access-Control-Request-Method",
- "Age",
- "Allow",
- "Alt-Svc",
- "Alt-Used",
- "Authorization",
- "Cache-Control",
- "Clear-Site-Data",
- "Connection",
- "Content-Disposition",
- "Content-Encoding",
- "Content-Language",
- "Content-Length",
- "Content-Location",
- "Content-Range",
- "Content-Security-Policy",
- "Content-Security-Policy-Report-Only",
- "Content-Type",
- "Cookie",
- "Cross-Origin-Embedder-Policy",
- "Cross-Origin-Opener-Policy",
- "Cross-Origin-Resource-Policy",
- "Date",
- "Device-Memory",
- "Downlink",
- "ECT",
- "ETag",
- "Expect",
- "Expect-CT",
- "Expires",
- "Forwarded",
- "From",
- "Host",
- "If-Match",
- "If-Modified-Since",
- "If-None-Match",
- "If-Range",
- "If-Unmodified-Since",
- "Keep-Alive",
- "Last-Modified",
- "Link",
- "Location",
- "Max-Forwards",
- "Origin",
- "Permissions-Policy",
- "Pragma",
- "Proxy-Authenticate",
- "Proxy-Authorization",
- "RTT",
- "Range",
- "Referer",
- "Referrer-Policy",
- "Refresh",
- "Retry-After",
- "Sec-WebSocket-Accept",
- "Sec-WebSocket-Extensions",
- "Sec-WebSocket-Key",
- "Sec-WebSocket-Protocol",
- "Sec-WebSocket-Version",
- "Server",
- "Server-Timing",
- "Service-Worker-Allowed",
- "Service-Worker-Navigation-Preload",
- "Set-Cookie",
- "SourceMap",
- "Strict-Transport-Security",
- "Supports-Loading-Mode",
- "TE",
- "Timing-Allow-Origin",
- "Trailer",
- "Transfer-Encoding",
- "Upgrade",
- "Upgrade-Insecure-Requests",
- "User-Agent",
- "Vary",
- "Via",
- "WWW-Authenticate",
- "X-Content-Type-Options",
- "X-DNS-Prefetch-Control",
- "X-Frame-Options",
- "X-Permitted-Cross-Domain-Policies",
- "X-Powered-By",
- "X-Requested-With",
- "X-XSS-Protection"
- ];
- for (let i = 0; i < wellknownHeaderNames.length; ++i) {
- const key = wellknownHeaderNames[i];
- const lowerCasedKey = key.toLowerCase();
- headerNameLowerCasedRecord[key] = headerNameLowerCasedRecord[lowerCasedKey] = lowerCasedKey;
- }
- Object.setPrototypeOf(headerNameLowerCasedRecord, null);
- module2.exports = {
- wellknownHeaderNames,
- headerNameLowerCasedRecord
- };
- }
-});
-
-// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/core/tree.js
-var require_tree = __commonJS({
- ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/core/tree.js"(exports2, module2) {
- "use strict";
- var {
- wellknownHeaderNames,
- headerNameLowerCasedRecord
- } = require_constants2();
- var TstNode = class _TstNode {
- /** @type {any} */
- value = null;
- /** @type {null | TstNode} */
- left = null;
- /** @type {null | TstNode} */
- middle = null;
- /** @type {null | TstNode} */
- right = null;
- /** @type {number} */
- code;
- /**
- * @param {string} key
- * @param {any} value
- * @param {number} index
- */
- constructor(key, value, index) {
- if (index === void 0 || index >= key.length) {
- throw new TypeError("Unreachable");
- }
- const code2 = this.code = key.charCodeAt(index);
- if (code2 > 127) {
- throw new TypeError("key must be ascii string");
- }
- if (key.length !== ++index) {
- this.middle = new _TstNode(key, value, index);
- } else {
- this.value = value;
- }
- }
- /**
- * @param {string} key
- * @param {any} value
- */
- add(key, value) {
- const length = key.length;
- if (length === 0) {
- throw new TypeError("Unreachable");
- }
- let index = 0;
- let node = this;
- while (true) {
- const code2 = key.charCodeAt(index);
- if (code2 > 127) {
- throw new TypeError("key must be ascii string");
- }
- if (node.code === code2) {
- if (length === ++index) {
- node.value = value;
- break;
- } else if (node.middle !== null) {
- node = node.middle;
- } else {
- node.middle = new _TstNode(key, value, index);
- break;
- }
- } else if (node.code < code2) {
- if (node.left !== null) {
- node = node.left;
- } else {
- node.left = new _TstNode(key, value, index);
- break;
- }
- } else if (node.right !== null) {
- node = node.right;
- } else {
- node.right = new _TstNode(key, value, index);
- break;
- }
- }
- }
- /**
- * @param {Uint8Array} key
- * @return {TstNode | null}
- */
- search(key) {
- const keylength = key.length;
- let index = 0;
- let node = this;
- while (node !== null && index < keylength) {
- let code2 = key[index];
- if (code2 <= 90 && code2 >= 65) {
- code2 |= 32;
- }
- while (node !== null) {
- if (code2 === node.code) {
- if (keylength === ++index) {
- return node;
- }
- node = node.middle;
- break;
- }
- node = node.code < code2 ? node.left : node.right;
- }
- }
- return null;
- }
- };
- var TernarySearchTree = class {
- /** @type {TstNode | null} */
- node = null;
- /**
- * @param {string} key
- * @param {any} value
- * */
- insert(key, value) {
- if (this.node === null) {
- this.node = new TstNode(key, value, 0);
- } else {
- this.node.add(key, value);
- }
- }
- /**
- * @param {Uint8Array} key
- * @return {any}
- */
- lookup(key) {
- return this.node?.search(key)?.value ?? null;
- }
- };
- var tree = new TernarySearchTree();
- for (let i = 0; i < wellknownHeaderNames.length; ++i) {
- const key = headerNameLowerCasedRecord[wellknownHeaderNames[i]];
- tree.insert(key, key);
- }
- module2.exports = {
- TernarySearchTree,
- tree
- };
- }
-});
-
-// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/core/util.js
-var require_util = __commonJS({
- ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/core/util.js"(exports2, module2) {
- "use strict";
- var assert5 = require("node:assert");
- var { kDestroyed, kBodyUsed, kListeners, kBody } = require_symbols();
- var { IncomingMessage } = require("node:http");
- var stream = require("node:stream");
- var net = require("node:net");
- var { Blob: Blob2 } = require("node:buffer");
- var nodeUtil = require("node:util");
- var { stringify } = require("node:querystring");
- var { EventEmitter: EE3 } = require("node:events");
- var { InvalidArgumentError } = require_errors();
- var { headerNameLowerCasedRecord } = require_constants2();
- var { tree } = require_tree();
- var [nodeMajor, nodeMinor] = process.versions.node.split(".").map((v) => Number(v));
- var BodyAsyncIterable = class {
- constructor(body) {
- this[kBody] = body;
- this[kBodyUsed] = false;
- }
- async *[Symbol.asyncIterator]() {
- assert5(!this[kBodyUsed], "disturbed");
- this[kBodyUsed] = true;
- yield* this[kBody];
- }
- };
- function wrapRequestBody(body) {
- if (isStream2(body)) {
- if (bodyLength(body) === 0) {
- body.on("data", function() {
- assert5(false);
- });
- }
- if (typeof body.readableDidRead !== "boolean") {
- body[kBodyUsed] = false;
- EE3.prototype.on.call(body, "data", function() {
- this[kBodyUsed] = true;
- });
- }
- return body;
- } else if (body && typeof body.pipeTo === "function") {
- return new BodyAsyncIterable(body);
- } else if (body && typeof body !== "string" && !ArrayBuffer.isView(body) && isIterable(body)) {
- return new BodyAsyncIterable(body);
- } else {
- return body;
- }
- }
- function nop() {
- }
- function isStream2(obj) {
- return obj && typeof obj === "object" && typeof obj.pipe === "function" && typeof obj.on === "function";
- }
- function isBlobLike(object) {
- if (object === null) {
- return false;
- } else if (object instanceof Blob2) {
- return true;
- } else if (typeof object !== "object") {
- return false;
- } else {
- const sTag = object[Symbol.toStringTag];
- return (sTag === "Blob" || sTag === "File") && ("stream" in object && typeof object.stream === "function" || "arrayBuffer" in object && typeof object.arrayBuffer === "function");
- }
- }
- function buildURL(url, queryParams) {
- if (url.includes("?") || url.includes("#")) {
- throw new Error('Query params cannot be passed when url already contains "?" or "#".');
- }
- const stringified = stringify(queryParams);
- if (stringified) {
- url += "?" + stringified;
- }
- return url;
- }
- function isValidPort(port) {
- const value = parseInt(port, 10);
- return value === Number(port) && value >= 0 && value <= 65535;
- }
- function isHttpOrHttpsPrefixed(value) {
- return value != null && value[0] === "h" && value[1] === "t" && value[2] === "t" && value[3] === "p" && (value[4] === ":" || value[4] === "s" && value[5] === ":");
- }
- function parseURL(url) {
- if (typeof url === "string") {
- url = new URL(url);
- if (!isHttpOrHttpsPrefixed(url.origin || url.protocol)) {
- throw new InvalidArgumentError("Invalid URL protocol: the URL must start with `http:` or `https:`.");
- }
- return url;
- }
- if (!url || typeof url !== "object") {
- throw new InvalidArgumentError("Invalid URL: The URL argument must be a non-null object.");
- }
- if (!(url instanceof URL)) {
- if (url.port != null && url.port !== "" && isValidPort(url.port) === false) {
- throw new InvalidArgumentError("Invalid URL: port must be a valid integer or a string representation of an integer.");
- }
- if (url.path != null && typeof url.path !== "string") {
- throw new InvalidArgumentError("Invalid URL path: the path must be a string or null/undefined.");
- }
- if (url.pathname != null && typeof url.pathname !== "string") {
- throw new InvalidArgumentError("Invalid URL pathname: the pathname must be a string or null/undefined.");
- }
- if (url.hostname != null && typeof url.hostname !== "string") {
- throw new InvalidArgumentError("Invalid URL hostname: the hostname must be a string or null/undefined.");
- }
- if (url.origin != null && typeof url.origin !== "string") {
- throw new InvalidArgumentError("Invalid URL origin: the origin must be a string or null/undefined.");
- }
- if (!isHttpOrHttpsPrefixed(url.origin || url.protocol)) {
- throw new InvalidArgumentError("Invalid URL protocol: the URL must start with `http:` or `https:`.");
- }
- const port = url.port != null ? url.port : url.protocol === "https:" ? 443 : 80;
- let origin = url.origin != null ? url.origin : `${url.protocol || ""}//${url.hostname || ""}:${port}`;
- let path16 = url.path != null ? url.path : `${url.pathname || ""}${url.search || ""}`;
- if (origin[origin.length - 1] === "/") {
- origin = origin.slice(0, origin.length - 1);
- }
- if (path16 && path16[0] !== "/") {
- path16 = `/${path16}`;
- }
- return new URL(`${origin}${path16}`);
- }
- if (!isHttpOrHttpsPrefixed(url.origin || url.protocol)) {
- throw new InvalidArgumentError("Invalid URL protocol: the URL must start with `http:` or `https:`.");
- }
- return url;
- }
- function parseOrigin(url) {
- url = parseURL(url);
- if (url.pathname !== "/" || url.search || url.hash) {
- throw new InvalidArgumentError("invalid url");
- }
- return url;
- }
- function getHostname(host) {
- if (host[0] === "[") {
- const idx2 = host.indexOf("]");
- assert5(idx2 !== -1);
- return host.substring(1, idx2);
- }
- const idx = host.indexOf(":");
- if (idx === -1) return host;
- return host.substring(0, idx);
- }
- function getServerName(host) {
- if (!host) {
- return null;
- }
- assert5(typeof host === "string");
- const servername = getHostname(host);
- if (net.isIP(servername)) {
- return "";
- }
- return servername;
- }
- function deepClone(obj) {
- return JSON.parse(JSON.stringify(obj));
- }
- function isAsyncIterable(obj) {
- return !!(obj != null && typeof obj[Symbol.asyncIterator] === "function");
- }
- function isIterable(obj) {
- return !!(obj != null && (typeof obj[Symbol.iterator] === "function" || typeof obj[Symbol.asyncIterator] === "function"));
- }
- function bodyLength(body) {
- if (body == null) {
- return 0;
- } else if (isStream2(body)) {
- const state = body._readableState;
- return state && state.objectMode === false && state.ended === true && Number.isFinite(state.length) ? state.length : null;
- } else if (isBlobLike(body)) {
- return body.size != null ? body.size : null;
- } else if (isBuffer(body)) {
- return body.byteLength;
- }
- return null;
- }
- function isDestroyed(body) {
- return body && !!(body.destroyed || body[kDestroyed] || stream.isDestroyed?.(body));
- }
- function destroy(stream2, err) {
- if (stream2 == null || !isStream2(stream2) || isDestroyed(stream2)) {
- return;
- }
- if (typeof stream2.destroy === "function") {
- if (Object.getPrototypeOf(stream2).constructor === IncomingMessage) {
- stream2.socket = null;
- }
- stream2.destroy(err);
- } else if (err) {
- queueMicrotask(() => {
- stream2.emit("error", err);
- });
- }
- if (stream2.destroyed !== true) {
- stream2[kDestroyed] = true;
- }
- }
- var KEEPALIVE_TIMEOUT_EXPR = /timeout=(\d+)/;
- function parseKeepAliveTimeout(val) {
- const m = val.toString().match(KEEPALIVE_TIMEOUT_EXPR);
- return m ? parseInt(m[1], 10) * 1e3 : null;
- }
- function headerNameToString(value) {
- return typeof value === "string" ? headerNameLowerCasedRecord[value] ?? value.toLowerCase() : tree.lookup(value) ?? value.toString("latin1").toLowerCase();
- }
- function bufferToLowerCasedHeaderName(value) {
- return tree.lookup(value) ?? value.toString("latin1").toLowerCase();
- }
- function parseHeaders(headers, obj) {
- if (obj === void 0) obj = {};
- for (let i = 0; i < headers.length; i += 2) {
- const key = headerNameToString(headers[i]);
- let val = obj[key];
- if (val) {
- if (typeof val === "string") {
- val = [val];
- obj[key] = val;
- }
- val.push(headers[i + 1].toString("utf8"));
- } else {
- const headersValue = headers[i + 1];
- if (typeof headersValue === "string") {
- obj[key] = headersValue;
- } else {
- obj[key] = Array.isArray(headersValue) ? headersValue.map((x) => x.toString("utf8")) : headersValue.toString("utf8");
- }
- }
- }
- if ("content-length" in obj && "content-disposition" in obj) {
- obj["content-disposition"] = Buffer.from(obj["content-disposition"]).toString("latin1");
- }
- return obj;
- }
- function parseRawHeaders(headers) {
- const len = headers.length;
- const ret = new Array(len);
- let hasContentLength = false;
- let contentDispositionIdx = -1;
- let key;
- let val;
- let kLen = 0;
- for (let n = 0; n < headers.length; n += 2) {
- key = headers[n];
- val = headers[n + 1];
- typeof key !== "string" && (key = key.toString());
- typeof val !== "string" && (val = val.toString("utf8"));
- kLen = key.length;
- if (kLen === 14 && key[7] === "-" && (key === "content-length" || key.toLowerCase() === "content-length")) {
- hasContentLength = true;
- } else if (kLen === 19 && key[7] === "-" && (key === "content-disposition" || key.toLowerCase() === "content-disposition")) {
- contentDispositionIdx = n + 1;
- }
- ret[n] = key;
- ret[n + 1] = val;
- }
- if (hasContentLength && contentDispositionIdx !== -1) {
- ret[contentDispositionIdx] = Buffer.from(ret[contentDispositionIdx]).toString("latin1");
- }
- return ret;
- }
- function isBuffer(buffer) {
- return buffer instanceof Uint8Array || Buffer.isBuffer(buffer);
- }
- function validateHandler(handler, method, upgrade) {
- if (!handler || typeof handler !== "object") {
- throw new InvalidArgumentError("handler must be an object");
- }
- if (typeof handler.onConnect !== "function") {
- throw new InvalidArgumentError("invalid onConnect method");
- }
- if (typeof handler.onError !== "function") {
- throw new InvalidArgumentError("invalid onError method");
- }
- if (typeof handler.onBodySent !== "function" && handler.onBodySent !== void 0) {
- throw new InvalidArgumentError("invalid onBodySent method");
- }
- if (upgrade || method === "CONNECT") {
- if (typeof handler.onUpgrade !== "function") {
- throw new InvalidArgumentError("invalid onUpgrade method");
- }
- } else {
- if (typeof handler.onHeaders !== "function") {
- throw new InvalidArgumentError("invalid onHeaders method");
- }
- if (typeof handler.onData !== "function") {
- throw new InvalidArgumentError("invalid onData method");
- }
- if (typeof handler.onComplete !== "function") {
- throw new InvalidArgumentError("invalid onComplete method");
- }
- }
- }
- function isDisturbed(body) {
- return !!(body && (stream.isDisturbed(body) || body[kBodyUsed]));
- }
- function isErrored(body) {
- return !!(body && stream.isErrored(body));
- }
- function isReadable2(body) {
- return !!(body && stream.isReadable(body));
- }
- function getSocketInfo(socket) {
- return {
- localAddress: socket.localAddress,
- localPort: socket.localPort,
- remoteAddress: socket.remoteAddress,
- remotePort: socket.remotePort,
- remoteFamily: socket.remoteFamily,
- timeout: socket.timeout,
- bytesWritten: socket.bytesWritten,
- bytesRead: socket.bytesRead
- };
- }
- function ReadableStreamFrom(iterable) {
- let iterator;
- return new ReadableStream(
- {
- async start() {
- iterator = iterable[Symbol.asyncIterator]();
- },
- async pull(controller) {
- const { done, value } = await iterator.next();
- if (done) {
- queueMicrotask(() => {
- controller.close();
- controller.byobRequest?.respond(0);
- });
- } else {
- const buf = Buffer.isBuffer(value) ? value : Buffer.from(value);
- if (buf.byteLength) {
- controller.enqueue(new Uint8Array(buf));
- }
- }
- return controller.desiredSize > 0;
- },
- async cancel(reason) {
- await iterator.return();
- },
- type: "bytes"
- }
- );
- }
- function isFormDataLike(object) {
- return object && typeof object === "object" && typeof object.append === "function" && typeof object.delete === "function" && typeof object.get === "function" && typeof object.getAll === "function" && typeof object.has === "function" && typeof object.set === "function" && object[Symbol.toStringTag] === "FormData";
- }
- function addAbortListener(signal, listener) {
- if ("addEventListener" in signal) {
- signal.addEventListener("abort", listener, { once: true });
- return () => signal.removeEventListener("abort", listener);
- }
- signal.addListener("abort", listener);
- return () => signal.removeListener("abort", listener);
- }
- var hasToWellFormed = typeof String.prototype.toWellFormed === "function";
- var hasIsWellFormed = typeof String.prototype.isWellFormed === "function";
- function toUSVString(val) {
- return hasToWellFormed ? `${val}`.toWellFormed() : nodeUtil.toUSVString(val);
- }
- function isUSVString(val) {
- return hasIsWellFormed ? `${val}`.isWellFormed() : toUSVString(val) === `${val}`;
- }
- function isTokenCharCode(c) {
- switch (c) {
- case 34:
- case 40:
- case 41:
- case 44:
- case 47:
- case 58:
- case 59:
- case 60:
- case 61:
- case 62:
- case 63:
- case 64:
- case 91:
- case 92:
- case 93:
- case 123:
- case 125:
- return false;
- default:
- return c >= 33 && c <= 126;
- }
- }
- function isValidHTTPToken(characters) {
- if (characters.length === 0) {
- return false;
- }
- for (let i = 0; i < characters.length; ++i) {
- if (!isTokenCharCode(characters.charCodeAt(i))) {
- return false;
- }
- }
- return true;
- }
- var headerCharRegex = /[^\t\x20-\x7e\x80-\xff]/;
- function isValidHeaderValue(characters) {
- return !headerCharRegex.test(characters);
- }
- function parseRangeHeader(range) {
- if (range == null || range === "") return { start: 0, end: null, size: null };
- const m = range ? range.match(/^bytes (\d+)-(\d+)\/(\d+)?$/) : null;
- return m ? {
- start: parseInt(m[1]),
- end: m[2] ? parseInt(m[2]) : null,
- size: m[3] ? parseInt(m[3]) : null
- } : null;
- }
- function addListener(obj, name2, listener) {
- const listeners = obj[kListeners] ??= [];
- listeners.push([name2, listener]);
- obj.on(name2, listener);
- return obj;
- }
- function removeAllListeners(obj) {
- for (const [name2, listener] of obj[kListeners] ?? []) {
- obj.removeListener(name2, listener);
- }
- obj[kListeners] = null;
- }
- function errorRequest(client, request, err) {
- try {
- request.onError(err);
- assert5(request.aborted);
- } catch (err2) {
- client.emit("error", err2);
- }
- }
- var kEnumerableProperty = /* @__PURE__ */ Object.create(null);
- kEnumerableProperty.enumerable = true;
- var normalizedMethodRecordsBase = {
- delete: "DELETE",
- DELETE: "DELETE",
- get: "GET",
- GET: "GET",
- head: "HEAD",
- HEAD: "HEAD",
- options: "OPTIONS",
- OPTIONS: "OPTIONS",
- post: "POST",
- POST: "POST",
- put: "PUT",
- PUT: "PUT"
- };
- var normalizedMethodRecords = {
- ...normalizedMethodRecordsBase,
- patch: "patch",
- PATCH: "PATCH"
- };
- Object.setPrototypeOf(normalizedMethodRecordsBase, null);
- Object.setPrototypeOf(normalizedMethodRecords, null);
- module2.exports = {
- kEnumerableProperty,
- nop,
- isDisturbed,
- isErrored,
- isReadable: isReadable2,
- toUSVString,
- isUSVString,
- isBlobLike,
- parseOrigin,
- parseURL,
- getServerName,
- isStream: isStream2,
- isIterable,
- isAsyncIterable,
- isDestroyed,
- headerNameToString,
- bufferToLowerCasedHeaderName,
- addListener,
- removeAllListeners,
- errorRequest,
- parseRawHeaders,
- parseHeaders,
- parseKeepAliveTimeout,
- destroy,
- bodyLength,
- deepClone,
- ReadableStreamFrom,
- isBuffer,
- validateHandler,
- getSocketInfo,
- isFormDataLike,
- buildURL,
- addAbortListener,
- isValidHTTPToken,
- isValidHeaderValue,
- isTokenCharCode,
- parseRangeHeader,
- normalizedMethodRecordsBase,
- normalizedMethodRecords,
- isValidPort,
- isHttpOrHttpsPrefixed,
- nodeMajor,
- nodeMinor,
- safeHTTPMethods: ["GET", "HEAD", "OPTIONS", "TRACE"],
- wrapRequestBody
- };
- }
-});
-
-// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/api/readable.js
-var require_readable = __commonJS({
- ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/api/readable.js"(exports2, module2) {
- "use strict";
- var assert5 = require("node:assert");
- var { Readable: Readable2 } = require("node:stream");
- var { RequestAbortedError, NotSupportedError, InvalidArgumentError, AbortError } = require_errors();
- var util = require_util();
- var { ReadableStreamFrom } = require_util();
- var kConsume = Symbol("kConsume");
- var kReading = Symbol("kReading");
- var kBody = Symbol("kBody");
- var kAbort = Symbol("kAbort");
- var kContentType = Symbol("kContentType");
- var kContentLength = Symbol("kContentLength");
- var noop3 = () => {
- };
- var BodyReadable = class extends Readable2 {
- constructor({
- resume,
- abort,
- contentType = "",
- contentLength,
- highWaterMark = 64 * 1024
- // Same as nodejs fs streams.
- }) {
- super({
- autoDestroy: true,
- read: resume,
- highWaterMark
- });
- this._readableState.dataEmitted = false;
- this[kAbort] = abort;
- this[kConsume] = null;
- this[kBody] = null;
- this[kContentType] = contentType;
- this[kContentLength] = contentLength;
- this[kReading] = false;
- }
- destroy(err) {
- if (!err && !this._readableState.endEmitted) {
- err = new RequestAbortedError();
- }
- if (err) {
- this[kAbort]();
- }
- return super.destroy(err);
- }
- _destroy(err, callback) {
- if (!this[kReading]) {
- setImmediate(() => {
- callback(err);
- });
- } else {
- callback(err);
- }
- }
- on(ev, ...args) {
- if (ev === "data" || ev === "readable") {
- this[kReading] = true;
- }
- return super.on(ev, ...args);
- }
- addListener(ev, ...args) {
- return this.on(ev, ...args);
- }
- off(ev, ...args) {
- const ret = super.off(ev, ...args);
- if (ev === "data" || ev === "readable") {
- this[kReading] = this.listenerCount("data") > 0 || this.listenerCount("readable") > 0;
- }
- return ret;
- }
- removeListener(ev, ...args) {
- return this.off(ev, ...args);
- }
- push(chunk) {
- if (this[kConsume] && chunk !== null) {
- consumePush(this[kConsume], chunk);
- return this[kReading] ? super.push(chunk) : true;
- }
- return super.push(chunk);
- }
- // https://fetch.spec.whatwg.org/#dom-body-text
- async text() {
- return consume(this, "text");
- }
- // https://fetch.spec.whatwg.org/#dom-body-json
- async json() {
- return consume(this, "json");
- }
- // https://fetch.spec.whatwg.org/#dom-body-blob
- async blob() {
- return consume(this, "blob");
- }
- // https://fetch.spec.whatwg.org/#dom-body-bytes
- async bytes() {
- return consume(this, "bytes");
- }
- // https://fetch.spec.whatwg.org/#dom-body-arraybuffer
- async arrayBuffer() {
- return consume(this, "arrayBuffer");
- }
- // https://fetch.spec.whatwg.org/#dom-body-formdata
- async formData() {
- throw new NotSupportedError();
- }
- // https://fetch.spec.whatwg.org/#dom-body-bodyused
- get bodyUsed() {
- return util.isDisturbed(this);
- }
- // https://fetch.spec.whatwg.org/#dom-body-body
- get body() {
- if (!this[kBody]) {
- this[kBody] = ReadableStreamFrom(this);
- if (this[kConsume]) {
- this[kBody].getReader();
- assert5(this[kBody].locked);
- }
- }
- return this[kBody];
- }
- async dump(opts) {
- let limit = Number.isFinite(opts?.limit) ? opts.limit : 128 * 1024;
- const signal = opts?.signal;
- if (signal != null && (typeof signal !== "object" || !("aborted" in signal))) {
- throw new InvalidArgumentError("signal must be an AbortSignal");
- }
- signal?.throwIfAborted();
- if (this._readableState.closeEmitted) {
- return null;
- }
- return await new Promise((resolve, reject) => {
- if (this[kContentLength] > limit) {
- this.destroy(new AbortError());
- }
- const onAbort = () => {
- this.destroy(signal.reason ?? new AbortError());
- };
- signal?.addEventListener("abort", onAbort);
- this.on("close", function() {
- signal?.removeEventListener("abort", onAbort);
- if (signal?.aborted) {
- reject(signal.reason ?? new AbortError());
- } else {
- resolve(null);
- }
- }).on("error", noop3).on("data", function(chunk) {
- limit -= chunk.length;
- if (limit <= 0) {
- this.destroy();
- }
- }).resume();
- });
- }
- };
- function isLocked(self2) {
- return self2[kBody] && self2[kBody].locked === true || self2[kConsume];
- }
- function isUnusable(self2) {
- return util.isDisturbed(self2) || isLocked(self2);
- }
- async function consume(stream, type) {
- assert5(!stream[kConsume]);
- return new Promise((resolve, reject) => {
- if (isUnusable(stream)) {
- const rState = stream._readableState;
- if (rState.destroyed && rState.closeEmitted === false) {
- stream.on("error", (err) => {
- reject(err);
- }).on("close", () => {
- reject(new TypeError("unusable"));
- });
- } else {
- reject(rState.errored ?? new TypeError("unusable"));
- }
- } else {
- queueMicrotask(() => {
- stream[kConsume] = {
- type,
- stream,
- resolve,
- reject,
- length: 0,
- body: []
- };
- stream.on("error", function(err) {
- consumeFinish(this[kConsume], err);
- }).on("close", function() {
- if (this[kConsume].body !== null) {
- consumeFinish(this[kConsume], new RequestAbortedError());
- }
- });
- consumeStart(stream[kConsume]);
- });
- }
- });
- }
- function consumeStart(consume2) {
- if (consume2.body === null) {
- return;
- }
- const { _readableState: state } = consume2.stream;
- if (state.bufferIndex) {
- const start = state.bufferIndex;
- const end = state.buffer.length;
- for (let n = start; n < end; n++) {
- consumePush(consume2, state.buffer[n]);
- }
- } else {
- for (const chunk of state.buffer) {
- consumePush(consume2, chunk);
- }
- }
- if (state.endEmitted) {
- consumeEnd(this[kConsume]);
- } else {
- consume2.stream.on("end", function() {
- consumeEnd(this[kConsume]);
- });
- }
- consume2.stream.resume();
- while (consume2.stream.read() != null) {
- }
- }
- function chunksDecode(chunks, length) {
- if (chunks.length === 0 || length === 0) {
- return "";
- }
- const buffer = chunks.length === 1 ? chunks[0] : Buffer.concat(chunks, length);
- const bufferLength = buffer.length;
- const start = bufferLength > 2 && buffer[0] === 239 && buffer[1] === 187 && buffer[2] === 191 ? 3 : 0;
- return buffer.utf8Slice(start, bufferLength);
- }
- function chunksConcat(chunks, length) {
- if (chunks.length === 0 || length === 0) {
- return new Uint8Array(0);
- }
- if (chunks.length === 1) {
- return new Uint8Array(chunks[0]);
- }
- const buffer = new Uint8Array(Buffer.allocUnsafeSlow(length).buffer);
- let offset = 0;
- for (let i = 0; i < chunks.length; ++i) {
- const chunk = chunks[i];
- buffer.set(chunk, offset);
- offset += chunk.length;
- }
- return buffer;
- }
- function consumeEnd(consume2) {
- const { type, body, resolve, stream, length } = consume2;
- try {
- if (type === "text") {
- resolve(chunksDecode(body, length));
- } else if (type === "json") {
- resolve(JSON.parse(chunksDecode(body, length)));
- } else if (type === "arrayBuffer") {
- resolve(chunksConcat(body, length).buffer);
- } else if (type === "blob") {
- resolve(new Blob(body, { type: stream[kContentType] }));
- } else if (type === "bytes") {
- resolve(chunksConcat(body, length));
- }
- consumeFinish(consume2);
- } catch (err) {
- stream.destroy(err);
- }
- }
- function consumePush(consume2, chunk) {
- consume2.length += chunk.length;
- consume2.body.push(chunk);
- }
- function consumeFinish(consume2, err) {
- if (consume2.body === null) {
- return;
- }
- if (err) {
- consume2.reject(err);
- } else {
- consume2.resolve();
- }
- consume2.type = null;
- consume2.stream = null;
- consume2.resolve = null;
- consume2.reject = null;
- consume2.length = 0;
- consume2.body = null;
- }
- module2.exports = { Readable: BodyReadable, chunksDecode };
- }
-});
-
-// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/api/util.js
-var require_util2 = __commonJS({
- ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/api/util.js"(exports2, module2) {
- var assert5 = require("node:assert");
- var {
- ResponseStatusCodeError
- } = require_errors();
- var { chunksDecode } = require_readable();
- var CHUNK_LIMIT = 128 * 1024;
- async function getResolveErrorBodyCallback({ callback, body, contentType, statusCode, statusMessage, headers }) {
- assert5(body);
- let chunks = [];
- let length = 0;
- try {
- for await (const chunk of body) {
- chunks.push(chunk);
- length += chunk.length;
- if (length > CHUNK_LIMIT) {
- chunks = [];
- length = 0;
- break;
- }
- }
- } catch {
- chunks = [];
- length = 0;
- }
- const message = `Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ""}`;
- if (statusCode === 204 || !contentType || !length) {
- queueMicrotask(() => callback(new ResponseStatusCodeError(message, statusCode, headers)));
- return;
- }
- const stackTraceLimit = Error.stackTraceLimit;
- Error.stackTraceLimit = 0;
- let payload;
- try {
- if (isContentTypeApplicationJson(contentType)) {
- payload = JSON.parse(chunksDecode(chunks, length));
- } else if (isContentTypeText(contentType)) {
- payload = chunksDecode(chunks, length);
- }
- } catch {
- } finally {
- Error.stackTraceLimit = stackTraceLimit;
- }
- queueMicrotask(() => callback(new ResponseStatusCodeError(message, statusCode, headers, payload)));
- }
- var isContentTypeApplicationJson = (contentType) => {
- return contentType.length > 15 && contentType[11] === "/" && contentType[0] === "a" && contentType[1] === "p" && contentType[2] === "p" && contentType[3] === "l" && contentType[4] === "i" && contentType[5] === "c" && contentType[6] === "a" && contentType[7] === "t" && contentType[8] === "i" && contentType[9] === "o" && contentType[10] === "n" && contentType[12] === "j" && contentType[13] === "s" && contentType[14] === "o" && contentType[15] === "n";
- };
- var isContentTypeText = (contentType) => {
- return contentType.length > 4 && contentType[4] === "/" && contentType[0] === "t" && contentType[1] === "e" && contentType[2] === "x" && contentType[3] === "t";
- };
- module2.exports = {
- getResolveErrorBodyCallback,
- isContentTypeApplicationJson,
- isContentTypeText
- };
- }
-});
-
-// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/api/api-request.js
-var require_api_request = __commonJS({
- ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/api/api-request.js"(exports2, module2) {
- "use strict";
- var assert5 = require("node:assert");
- var { Readable: Readable2 } = require_readable();
- var { InvalidArgumentError, RequestAbortedError } = require_errors();
- var util = require_util();
- var { getResolveErrorBodyCallback } = require_util2();
- var { AsyncResource } = require("node:async_hooks");
- var RequestHandler = class extends AsyncResource {
- constructor(opts, callback) {
- if (!opts || typeof opts !== "object") {
- throw new InvalidArgumentError("invalid opts");
- }
- const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError, highWaterMark } = opts;
- try {
- if (typeof callback !== "function") {
- throw new InvalidArgumentError("invalid callback");
- }
- if (highWaterMark && (typeof highWaterMark !== "number" || highWaterMark < 0)) {
- throw new InvalidArgumentError("invalid highWaterMark");
- }
- if (signal && typeof signal.on !== "function" && typeof signal.addEventListener !== "function") {
- throw new InvalidArgumentError("signal must be an EventEmitter or EventTarget");
- }
- if (method === "CONNECT") {
- throw new InvalidArgumentError("invalid method");
- }
- if (onInfo && typeof onInfo !== "function") {
- throw new InvalidArgumentError("invalid onInfo callback");
- }
- super("UNDICI_REQUEST");
- } catch (err) {
- if (util.isStream(body)) {
- util.destroy(body.on("error", util.nop), err);
- }
- throw err;
- }
- this.method = method;
- this.responseHeaders = responseHeaders || null;
- this.opaque = opaque || null;
- this.callback = callback;
- this.res = null;
- this.abort = null;
- this.body = body;
- this.trailers = {};
- this.context = null;
- this.onInfo = onInfo || null;
- this.throwOnError = throwOnError;
- this.highWaterMark = highWaterMark;
- this.signal = signal;
- this.reason = null;
- this.removeAbortListener = null;
- if (util.isStream(body)) {
- body.on("error", (err) => {
- this.onError(err);
- });
- }
- if (this.signal) {
- if (this.signal.aborted) {
- this.reason = this.signal.reason ?? new RequestAbortedError();
- } else {
- this.removeAbortListener = util.addAbortListener(this.signal, () => {
- this.reason = this.signal.reason ?? new RequestAbortedError();
- if (this.res) {
- util.destroy(this.res.on("error", util.nop), this.reason);
- } else if (this.abort) {
- this.abort(this.reason);
- }
- if (this.removeAbortListener) {
- this.res?.off("close", this.removeAbortListener);
- this.removeAbortListener();
- this.removeAbortListener = null;
- }
- });
- }
- }
- }
- onConnect(abort, context) {
- if (this.reason) {
- abort(this.reason);
- return;
- }
- assert5(this.callback);
- this.abort = abort;
- this.context = context;
- }
- onHeaders(statusCode, rawHeaders, resume, statusMessage) {
- const { callback, opaque, abort, context, responseHeaders, highWaterMark } = this;
- const headers = responseHeaders === "raw" ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders);
- if (statusCode < 200) {
- if (this.onInfo) {
- this.onInfo({ statusCode, headers });
- }
- return;
- }
- const parsedHeaders = responseHeaders === "raw" ? util.parseHeaders(rawHeaders) : headers;
- const contentType = parsedHeaders["content-type"];
- const contentLength = parsedHeaders["content-length"];
- const res = new Readable2({
- resume,
- abort,
- contentType,
- contentLength: this.method !== "HEAD" && contentLength ? Number(contentLength) : null,
- highWaterMark
- });
- if (this.removeAbortListener) {
- res.on("close", this.removeAbortListener);
- }
- this.callback = null;
- this.res = res;
- if (callback !== null) {
- if (this.throwOnError && statusCode >= 400) {
- this.runInAsyncScope(
- getResolveErrorBodyCallback,
- null,
- { callback, body: res, contentType, statusCode, statusMessage, headers }
- );
- } else {
- this.runInAsyncScope(callback, null, null, {
- statusCode,
- headers,
- trailers: this.trailers,
- opaque,
- body: res,
- context
- });
- }
- }
- }
- onData(chunk) {
- return this.res.push(chunk);
- }
- onComplete(trailers) {
- util.parseHeaders(trailers, this.trailers);
- this.res.push(null);
- }
- onError(err) {
- const { res, callback, body, opaque } = this;
- if (callback) {
- this.callback = null;
- queueMicrotask(() => {
- this.runInAsyncScope(callback, null, err, { opaque });
- });
- }
- if (res) {
- this.res = null;
- queueMicrotask(() => {
- util.destroy(res, err);
- });
- }
- if (body) {
- this.body = null;
- util.destroy(body, err);
- }
- if (this.removeAbortListener) {
- res?.off("close", this.removeAbortListener);
- this.removeAbortListener();
- this.removeAbortListener = null;
- }
- }
- };
- function request(opts, callback) {
- if (callback === void 0) {
- return new Promise((resolve, reject) => {
- request.call(this, opts, (err, data) => {
- return err ? reject(err) : resolve(data);
- });
- });
- }
- try {
- this.dispatch(opts, new RequestHandler(opts, callback));
- } catch (err) {
- if (typeof callback !== "function") {
- throw err;
- }
- const opaque = opts?.opaque;
- queueMicrotask(() => callback(err, { opaque }));
- }
- }
- module2.exports = request;
- module2.exports.RequestHandler = RequestHandler;
- }
-});
-
-// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/api/abort-signal.js
-var require_abort_signal = __commonJS({
- ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/api/abort-signal.js"(exports2, module2) {
- var { addAbortListener } = require_util();
- var { RequestAbortedError } = require_errors();
- var kListener = Symbol("kListener");
- var kSignal = Symbol("kSignal");
- function abort(self2) {
- if (self2.abort) {
- self2.abort(self2[kSignal]?.reason);
- } else {
- self2.reason = self2[kSignal]?.reason ?? new RequestAbortedError();
- }
- removeSignal(self2);
- }
- function addSignal(self2, signal) {
- self2.reason = null;
- self2[kSignal] = null;
- self2[kListener] = null;
- if (!signal) {
- return;
- }
- if (signal.aborted) {
- abort(self2);
- return;
- }
- self2[kSignal] = signal;
- self2[kListener] = () => {
- abort(self2);
- };
- addAbortListener(self2[kSignal], self2[kListener]);
- }
- function removeSignal(self2) {
- if (!self2[kSignal]) {
- return;
- }
- if ("removeEventListener" in self2[kSignal]) {
- self2[kSignal].removeEventListener("abort", self2[kListener]);
- } else {
- self2[kSignal].removeListener("abort", self2[kListener]);
- }
- self2[kSignal] = null;
- self2[kListener] = null;
- }
- module2.exports = {
- addSignal,
- removeSignal
- };
- }
-});
-
-// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/api/api-stream.js
-var require_api_stream = __commonJS({
- ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/api/api-stream.js"(exports2, module2) {
- "use strict";
- var assert5 = require("node:assert");
- var { finished, PassThrough } = require("node:stream");
- var { InvalidArgumentError, InvalidReturnValueError } = require_errors();
- var util = require_util();
- var { getResolveErrorBodyCallback } = require_util2();
- var { AsyncResource } = require("node:async_hooks");
- var { addSignal, removeSignal } = require_abort_signal();
- var StreamHandler = class extends AsyncResource {
- constructor(opts, factory, callback) {
- if (!opts || typeof opts !== "object") {
- throw new InvalidArgumentError("invalid opts");
- }
- const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError } = opts;
- try {
- if (typeof callback !== "function") {
- throw new InvalidArgumentError("invalid callback");
- }
- if (typeof factory !== "function") {
- throw new InvalidArgumentError("invalid factory");
- }
- if (signal && typeof signal.on !== "function" && typeof signal.addEventListener !== "function") {
- throw new InvalidArgumentError("signal must be an EventEmitter or EventTarget");
- }
- if (method === "CONNECT") {
- throw new InvalidArgumentError("invalid method");
- }
- if (onInfo && typeof onInfo !== "function") {
- throw new InvalidArgumentError("invalid onInfo callback");
- }
- super("UNDICI_STREAM");
- } catch (err) {
- if (util.isStream(body)) {
- util.destroy(body.on("error", util.nop), err);
- }
- throw err;
- }
- this.responseHeaders = responseHeaders || null;
- this.opaque = opaque || null;
- this.factory = factory;
- this.callback = callback;
- this.res = null;
- this.abort = null;
- this.context = null;
- this.trailers = null;
- this.body = body;
- this.onInfo = onInfo || null;
- this.throwOnError = throwOnError || false;
- if (util.isStream(body)) {
- body.on("error", (err) => {
- this.onError(err);
- });
- }
- addSignal(this, signal);
- }
- onConnect(abort, context) {
- if (this.reason) {
- abort(this.reason);
- return;
- }
- assert5(this.callback);
- this.abort = abort;
- this.context = context;
- }
- onHeaders(statusCode, rawHeaders, resume, statusMessage) {
- const { factory, opaque, context, callback, responseHeaders } = this;
- const headers = responseHeaders === "raw" ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders);
- if (statusCode < 200) {
- if (this.onInfo) {
- this.onInfo({ statusCode, headers });
- }
- return;
- }
- this.factory = null;
- let res;
- if (this.throwOnError && statusCode >= 400) {
- const parsedHeaders = responseHeaders === "raw" ? util.parseHeaders(rawHeaders) : headers;
- const contentType = parsedHeaders["content-type"];
- res = new PassThrough();
- this.callback = null;
- this.runInAsyncScope(
- getResolveErrorBodyCallback,
- null,
- { callback, body: res, contentType, statusCode, statusMessage, headers }
- );
- } else {
- if (factory === null) {
- return;
- }
- res = this.runInAsyncScope(factory, null, {
- statusCode,
- headers,
- opaque,
- context
- });
- if (!res || typeof res.write !== "function" || typeof res.end !== "function" || typeof res.on !== "function") {
- throw new InvalidReturnValueError("expected Writable");
- }
- finished(res, { readable: false }, (err) => {
- const { callback: callback2, res: res2, opaque: opaque2, trailers, abort } = this;
- this.res = null;
- if (err || !res2.readable) {
- util.destroy(res2, err);
- }
- this.callback = null;
- this.runInAsyncScope(callback2, null, err || null, { opaque: opaque2, trailers });
- if (err) {
- abort();
- }
- });
- }
- res.on("drain", resume);
- this.res = res;
- const needDrain = res.writableNeedDrain !== void 0 ? res.writableNeedDrain : res._writableState?.needDrain;
- return needDrain !== true;
- }
- onData(chunk) {
- const { res } = this;
- return res ? res.write(chunk) : true;
- }
- onComplete(trailers) {
- const { res } = this;
- removeSignal(this);
- if (!res) {
- return;
- }
- this.trailers = util.parseHeaders(trailers);
- res.end();
- }
- onError(err) {
- const { res, callback, opaque, body } = this;
- removeSignal(this);
- this.factory = null;
- if (res) {
- this.res = null;
- util.destroy(res, err);
- } else if (callback) {
- this.callback = null;
- queueMicrotask(() => {
- this.runInAsyncScope(callback, null, err, { opaque });
- });
- }
- if (body) {
- this.body = null;
- util.destroy(body, err);
- }
- }
- };
- function stream(opts, factory, callback) {
- if (callback === void 0) {
- return new Promise((resolve, reject) => {
- stream.call(this, opts, factory, (err, data) => {
- return err ? reject(err) : resolve(data);
- });
- });
- }
- try {
- this.dispatch(opts, new StreamHandler(opts, factory, callback));
- } catch (err) {
- if (typeof callback !== "function") {
- throw err;
- }
- const opaque = opts?.opaque;
- queueMicrotask(() => callback(err, { opaque }));
- }
- }
- module2.exports = stream;
- }
-});
-
-// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/api/api-pipeline.js
-var require_api_pipeline = __commonJS({
- ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/api/api-pipeline.js"(exports2, module2) {
- "use strict";
- var {
- Readable: Readable2,
- Duplex,
- PassThrough
- } = require("node:stream");
- var {
- InvalidArgumentError,
- InvalidReturnValueError,
- RequestAbortedError
- } = require_errors();
- var util = require_util();
- var { AsyncResource } = require("node:async_hooks");
- var { addSignal, removeSignal } = require_abort_signal();
- var assert5 = require("node:assert");
- var kResume = Symbol("resume");
- var PipelineRequest = class extends Readable2 {
- constructor() {
- super({ autoDestroy: true });
- this[kResume] = null;
- }
- _read() {
- const { [kResume]: resume } = this;
- if (resume) {
- this[kResume] = null;
- resume();
- }
- }
- _destroy(err, callback) {
- this._read();
- callback(err);
- }
- };
- var PipelineResponse = class extends Readable2 {
- constructor(resume) {
- super({ autoDestroy: true });
- this[kResume] = resume;
- }
- _read() {
- this[kResume]();
- }
- _destroy(err, callback) {
- if (!err && !this._readableState.endEmitted) {
- err = new RequestAbortedError();
- }
- callback(err);
- }
- };
- var PipelineHandler = class extends AsyncResource {
- constructor(opts, handler) {
- if (!opts || typeof opts !== "object") {
- throw new InvalidArgumentError("invalid opts");
- }
- if (typeof handler !== "function") {
- throw new InvalidArgumentError("invalid handler");
- }
- const { signal, method, opaque, onInfo, responseHeaders } = opts;
- if (signal && typeof signal.on !== "function" && typeof signal.addEventListener !== "function") {
- throw new InvalidArgumentError("signal must be an EventEmitter or EventTarget");
- }
- if (method === "CONNECT") {
- throw new InvalidArgumentError("invalid method");
- }
- if (onInfo && typeof onInfo !== "function") {
- throw new InvalidArgumentError("invalid onInfo callback");
- }
- super("UNDICI_PIPELINE");
- this.opaque = opaque || null;
- this.responseHeaders = responseHeaders || null;
- this.handler = handler;
- this.abort = null;
- this.context = null;
- this.onInfo = onInfo || null;
- this.req = new PipelineRequest().on("error", util.nop);
- this.ret = new Duplex({
- readableObjectMode: opts.objectMode,
- autoDestroy: true,
- read: () => {
- const { body } = this;
- if (body?.resume) {
- body.resume();
- }
- },
- write: (chunk, encoding, callback) => {
- const { req } = this;
- if (req.push(chunk, encoding) || req._readableState.destroyed) {
- callback();
- } else {
- req[kResume] = callback;
- }
- },
- destroy: (err, callback) => {
- const { body, req, res, ret, abort } = this;
- if (!err && !ret._readableState.endEmitted) {
- err = new RequestAbortedError();
- }
- if (abort && err) {
- abort();
- }
- util.destroy(body, err);
- util.destroy(req, err);
- util.destroy(res, err);
- removeSignal(this);
- callback(err);
- }
- }).on("prefinish", () => {
- const { req } = this;
- req.push(null);
- });
- this.res = null;
- addSignal(this, signal);
- }
- onConnect(abort, context) {
- const { ret, res } = this;
- if (this.reason) {
- abort(this.reason);
- return;
- }
- assert5(!res, "pipeline cannot be retried");
- assert5(!ret.destroyed);
- this.abort = abort;
- this.context = context;
- }
- onHeaders(statusCode, rawHeaders, resume) {
- const { opaque, handler, context } = this;
- if (statusCode < 200) {
- if (this.onInfo) {
- const headers = this.responseHeaders === "raw" ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders);
- this.onInfo({ statusCode, headers });
- }
- return;
- }
- this.res = new PipelineResponse(resume);
- let body;
- try {
- this.handler = null;
- const headers = this.responseHeaders === "raw" ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders);
- body = this.runInAsyncScope(handler, null, {
- statusCode,
- headers,
- opaque,
- body: this.res,
- context
- });
- } catch (err) {
- this.res.on("error", util.nop);
- throw err;
- }
- if (!body || typeof body.on !== "function") {
- throw new InvalidReturnValueError("expected Readable");
- }
- body.on("data", (chunk) => {
- const { ret, body: body2 } = this;
- if (!ret.push(chunk) && body2.pause) {
- body2.pause();
- }
- }).on("error", (err) => {
- const { ret } = this;
- util.destroy(ret, err);
- }).on("end", () => {
- const { ret } = this;
- ret.push(null);
- }).on("close", () => {
- const { ret } = this;
- if (!ret._readableState.ended) {
- util.destroy(ret, new RequestAbortedError());
- }
- });
- this.body = body;
- }
- onData(chunk) {
- const { res } = this;
- return res.push(chunk);
- }
- onComplete(trailers) {
- const { res } = this;
- res.push(null);
- }
- onError(err) {
- const { ret } = this;
- this.handler = null;
- util.destroy(ret, err);
- }
- };
- function pipeline(opts, handler) {
- try {
- const pipelineHandler = new PipelineHandler(opts, handler);
- this.dispatch({ ...opts, body: pipelineHandler.req }, pipelineHandler);
- return pipelineHandler.ret;
- } catch (err) {
- return new PassThrough().destroy(err);
- }
- }
- module2.exports = pipeline;
- }
-});
-
-// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/api/api-upgrade.js
-var require_api_upgrade = __commonJS({
- ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/api/api-upgrade.js"(exports2, module2) {
- "use strict";
- var { InvalidArgumentError, SocketError } = require_errors();
- var { AsyncResource } = require("node:async_hooks");
- var util = require_util();
- var { addSignal, removeSignal } = require_abort_signal();
- var assert5 = require("node:assert");
- var UpgradeHandler = class extends AsyncResource {
- constructor(opts, callback) {
- if (!opts || typeof opts !== "object") {
- throw new InvalidArgumentError("invalid opts");
- }
- if (typeof callback !== "function") {
- throw new InvalidArgumentError("invalid callback");
- }
- const { signal, opaque, responseHeaders } = opts;
- if (signal && typeof signal.on !== "function" && typeof signal.addEventListener !== "function") {
- throw new InvalidArgumentError("signal must be an EventEmitter or EventTarget");
- }
- super("UNDICI_UPGRADE");
- this.responseHeaders = responseHeaders || null;
- this.opaque = opaque || null;
- this.callback = callback;
- this.abort = null;
- this.context = null;
- addSignal(this, signal);
- }
- onConnect(abort, context) {
- if (this.reason) {
- abort(this.reason);
- return;
- }
- assert5(this.callback);
- this.abort = abort;
- this.context = null;
- }
- onHeaders() {
- throw new SocketError("bad upgrade", null);
- }
- onUpgrade(statusCode, rawHeaders, socket) {
- assert5(statusCode === 101);
- const { callback, opaque, context } = this;
- removeSignal(this);
- this.callback = null;
- const headers = this.responseHeaders === "raw" ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders);
- this.runInAsyncScope(callback, null, null, {
- headers,
- socket,
- opaque,
- context
- });
- }
- onError(err) {
- const { callback, opaque } = this;
- removeSignal(this);
- if (callback) {
- this.callback = null;
- queueMicrotask(() => {
- this.runInAsyncScope(callback, null, err, { opaque });
- });
- }
- }
- };
- function upgrade(opts, callback) {
- if (callback === void 0) {
- return new Promise((resolve, reject) => {
- upgrade.call(this, opts, (err, data) => {
- return err ? reject(err) : resolve(data);
- });
- });
- }
- try {
- const upgradeHandler = new UpgradeHandler(opts, callback);
- this.dispatch({
- ...opts,
- method: opts.method || "GET",
- upgrade: opts.protocol || "Websocket"
- }, upgradeHandler);
- } catch (err) {
- if (typeof callback !== "function") {
- throw err;
- }
- const opaque = opts?.opaque;
- queueMicrotask(() => callback(err, { opaque }));
- }
- }
- module2.exports = upgrade;
- }
-});
-
-// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/api/api-connect.js
-var require_api_connect = __commonJS({
- ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/api/api-connect.js"(exports2, module2) {
- "use strict";
- var assert5 = require("node:assert");
- var { AsyncResource } = require("node:async_hooks");
- var { InvalidArgumentError, SocketError } = require_errors();
- var util = require_util();
- var { addSignal, removeSignal } = require_abort_signal();
- var ConnectHandler = class extends AsyncResource {
- constructor(opts, callback) {
- if (!opts || typeof opts !== "object") {
- throw new InvalidArgumentError("invalid opts");
- }
- if (typeof callback !== "function") {
- throw new InvalidArgumentError("invalid callback");
- }
- const { signal, opaque, responseHeaders } = opts;
- if (signal && typeof signal.on !== "function" && typeof signal.addEventListener !== "function") {
- throw new InvalidArgumentError("signal must be an EventEmitter or EventTarget");
- }
- super("UNDICI_CONNECT");
- this.opaque = opaque || null;
- this.responseHeaders = responseHeaders || null;
- this.callback = callback;
- this.abort = null;
- addSignal(this, signal);
- }
- onConnect(abort, context) {
- if (this.reason) {
- abort(this.reason);
- return;
- }
- assert5(this.callback);
- this.abort = abort;
- this.context = context;
- }
- onHeaders() {
- throw new SocketError("bad connect", null);
- }
- onUpgrade(statusCode, rawHeaders, socket) {
- const { callback, opaque, context } = this;
- removeSignal(this);
- this.callback = null;
- let headers = rawHeaders;
- if (headers != null) {
- headers = this.responseHeaders === "raw" ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders);
- }
- this.runInAsyncScope(callback, null, null, {
- statusCode,
- headers,
- socket,
- opaque,
- context
- });
- }
- onError(err) {
- const { callback, opaque } = this;
- removeSignal(this);
- if (callback) {
- this.callback = null;
- queueMicrotask(() => {
- this.runInAsyncScope(callback, null, err, { opaque });
- });
- }
- }
- };
- function connect(opts, callback) {
- if (callback === void 0) {
- return new Promise((resolve, reject) => {
- connect.call(this, opts, (err, data) => {
- return err ? reject(err) : resolve(data);
- });
- });
- }
- try {
- const connectHandler = new ConnectHandler(opts, callback);
- this.dispatch({ ...opts, method: "CONNECT" }, connectHandler);
- } catch (err) {
- if (typeof callback !== "function") {
- throw err;
- }
- const opaque = opts?.opaque;
- queueMicrotask(() => callback(err, { opaque }));
- }
- }
- module2.exports = connect;
- }
-});
-
-// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/api/index.js
-var require_api = __commonJS({
- ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/api/index.js"(exports2, module2) {
- "use strict";
- module2.exports.request = require_api_request();
- module2.exports.stream = require_api_stream();
- module2.exports.pipeline = require_api_pipeline();
- module2.exports.upgrade = require_api_upgrade();
- module2.exports.connect = require_api_connect();
- }
-});
-
-// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/dispatcher/dispatcher.js
-var require_dispatcher = __commonJS({
- ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/dispatcher/dispatcher.js"(exports2, module2) {
- "use strict";
- var EventEmitter2 = require("node:events");
- var Dispatcher = class extends EventEmitter2 {
- dispatch() {
- throw new Error("not implemented");
- }
- close() {
- throw new Error("not implemented");
- }
- destroy() {
- throw new Error("not implemented");
- }
- compose(...args) {
- const interceptors = Array.isArray(args[0]) ? args[0] : args;
- let dispatch = this.dispatch.bind(this);
- for (const interceptor of interceptors) {
- if (interceptor == null) {
- continue;
- }
- if (typeof interceptor !== "function") {
- throw new TypeError(`invalid interceptor, expected function received ${typeof interceptor}`);
- }
- dispatch = interceptor(dispatch);
- if (dispatch == null || typeof dispatch !== "function" || dispatch.length !== 2) {
- throw new TypeError("invalid interceptor");
- }
- }
- return new ComposedDispatcher(this, dispatch);
- }
- };
- var ComposedDispatcher = class extends Dispatcher {
- #dispatcher = null;
- #dispatch = null;
- constructor(dispatcher, dispatch) {
- super();
- this.#dispatcher = dispatcher;
- this.#dispatch = dispatch;
- }
- dispatch(...args) {
- this.#dispatch(...args);
- }
- close(...args) {
- return this.#dispatcher.close(...args);
- }
- destroy(...args) {
- return this.#dispatcher.destroy(...args);
- }
- };
- module2.exports = Dispatcher;
- }
-});
-
-// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/dispatcher/dispatcher-base.js
-var require_dispatcher_base = __commonJS({
- ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/dispatcher/dispatcher-base.js"(exports2, module2) {
- "use strict";
- var Dispatcher = require_dispatcher();
- var {
- ClientDestroyedError,
- ClientClosedError,
- InvalidArgumentError
- } = require_errors();
- var { kDestroy, kClose, kClosed, kDestroyed, kDispatch, kInterceptors } = require_symbols();
- var kOnDestroyed = Symbol("onDestroyed");
- var kOnClosed = Symbol("onClosed");
- var kInterceptedDispatch = Symbol("Intercepted Dispatch");
- var DispatcherBase = class extends Dispatcher {
- constructor() {
- super();
- this[kDestroyed] = false;
- this[kOnDestroyed] = null;
- this[kClosed] = false;
- this[kOnClosed] = [];
- }
- get destroyed() {
- return this[kDestroyed];
- }
- get closed() {
- return this[kClosed];
- }
- get interceptors() {
- return this[kInterceptors];
- }
- set interceptors(newInterceptors) {
- if (newInterceptors) {
- for (let i = newInterceptors.length - 1; i >= 0; i--) {
- const interceptor = this[kInterceptors][i];
- if (typeof interceptor !== "function") {
- throw new InvalidArgumentError("interceptor must be an function");
- }
- }
- }
- this[kInterceptors] = newInterceptors;
- }
- close(callback) {
- if (callback === void 0) {
- return new Promise((resolve, reject) => {
- this.close((err, data) => {
- return err ? reject(err) : resolve(data);
- });
- });
- }
- if (typeof callback !== "function") {
- throw new InvalidArgumentError("invalid callback");
- }
- if (this[kDestroyed]) {
- queueMicrotask(() => callback(new ClientDestroyedError(), null));
- return;
- }
- if (this[kClosed]) {
- if (this[kOnClosed]) {
- this[kOnClosed].push(callback);
- } else {
- queueMicrotask(() => callback(null, null));
- }
- return;
- }
- this[kClosed] = true;
- this[kOnClosed].push(callback);
- const onClosed = () => {
- const callbacks = this[kOnClosed];
- this[kOnClosed] = null;
- for (let i = 0; i < callbacks.length; i++) {
- callbacks[i](null, null);
- }
- };
- this[kClose]().then(() => this.destroy()).then(() => {
- queueMicrotask(onClosed);
- });
- }
- destroy(err, callback) {
- if (typeof err === "function") {
- callback = err;
- err = null;
- }
- if (callback === void 0) {
- return new Promise((resolve, reject) => {
- this.destroy(err, (err2, data) => {
- return err2 ? (
- /* istanbul ignore next: should never error */
- reject(err2)
- ) : resolve(data);
- });
- });
- }
- if (typeof callback !== "function") {
- throw new InvalidArgumentError("invalid callback");
- }
- if (this[kDestroyed]) {
- if (this[kOnDestroyed]) {
- this[kOnDestroyed].push(callback);
- } else {
- queueMicrotask(() => callback(null, null));
- }
- return;
- }
- if (!err) {
- err = new ClientDestroyedError();
- }
- this[kDestroyed] = true;
- this[kOnDestroyed] = this[kOnDestroyed] || [];
- this[kOnDestroyed].push(callback);
- const onDestroyed = () => {
- const callbacks = this[kOnDestroyed];
- this[kOnDestroyed] = null;
- for (let i = 0; i < callbacks.length; i++) {
- callbacks[i](null, null);
- }
- };
- this[kDestroy](err).then(() => {
- queueMicrotask(onDestroyed);
- });
- }
- [kInterceptedDispatch](opts, handler) {
- if (!this[kInterceptors] || this[kInterceptors].length === 0) {
- this[kInterceptedDispatch] = this[kDispatch];
- return this[kDispatch](opts, handler);
- }
- let dispatch = this[kDispatch].bind(this);
- for (let i = this[kInterceptors].length - 1; i >= 0; i--) {
- dispatch = this[kInterceptors][i](dispatch);
- }
- this[kInterceptedDispatch] = dispatch;
- return dispatch(opts, handler);
- }
- dispatch(opts, handler) {
- if (!handler || typeof handler !== "object") {
- throw new InvalidArgumentError("handler must be an object");
- }
- try {
- if (!opts || typeof opts !== "object") {
- throw new InvalidArgumentError("opts must be an object.");
- }
- if (this[kDestroyed] || this[kOnDestroyed]) {
- throw new ClientDestroyedError();
- }
- if (this[kClosed]) {
- throw new ClientClosedError();
- }
- return this[kInterceptedDispatch](opts, handler);
- } catch (err) {
- if (typeof handler.onError !== "function") {
- throw new InvalidArgumentError("invalid onError method");
- }
- handler.onError(err);
- return false;
- }
- }
- };
- module2.exports = DispatcherBase;
- }
-});
-
-// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/dispatcher/fixed-queue.js
-var require_fixed_queue = __commonJS({
- ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/dispatcher/fixed-queue.js"(exports2, module2) {
- "use strict";
- var kSize = 2048;
- var kMask = kSize - 1;
- var FixedCircularBuffer = class {
- constructor() {
- this.bottom = 0;
- this.top = 0;
- this.list = new Array(kSize);
- this.next = null;
- }
- isEmpty() {
- return this.top === this.bottom;
- }
- isFull() {
- return (this.top + 1 & kMask) === this.bottom;
- }
- push(data) {
- this.list[this.top] = data;
- this.top = this.top + 1 & kMask;
- }
- shift() {
- const nextItem = this.list[this.bottom];
- if (nextItem === void 0)
- return null;
- this.list[this.bottom] = void 0;
- this.bottom = this.bottom + 1 & kMask;
- return nextItem;
- }
- };
- module2.exports = class FixedQueue {
- constructor() {
- this.head = this.tail = new FixedCircularBuffer();
- }
- isEmpty() {
- return this.head.isEmpty();
- }
- push(data) {
- if (this.head.isFull()) {
- this.head = this.head.next = new FixedCircularBuffer();
- }
- this.head.push(data);
- }
- shift() {
- const tail = this.tail;
- const next = tail.shift();
- if (tail.isEmpty() && tail.next !== null) {
- this.tail = tail.next;
- }
- return next;
- }
- };
- }
-});
-
-// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/dispatcher/pool-stats.js
-var require_pool_stats = __commonJS({
- ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/dispatcher/pool-stats.js"(exports2, module2) {
- var { kFree, kConnected, kPending, kQueued, kRunning, kSize } = require_symbols();
- var kPool = Symbol("pool");
- var PoolStats = class {
- constructor(pool) {
- this[kPool] = pool;
- }
- get connected() {
- return this[kPool][kConnected];
- }
- get free() {
- return this[kPool][kFree];
- }
- get pending() {
- return this[kPool][kPending];
- }
- get queued() {
- return this[kPool][kQueued];
- }
- get running() {
- return this[kPool][kRunning];
- }
- get size() {
- return this[kPool][kSize];
- }
- };
- module2.exports = PoolStats;
- }
-});
-
-// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/dispatcher/pool-base.js
-var require_pool_base = __commonJS({
- ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/dispatcher/pool-base.js"(exports2, module2) {
- "use strict";
- var DispatcherBase = require_dispatcher_base();
- var FixedQueue = require_fixed_queue();
- var { kConnected, kSize, kRunning, kPending, kQueued, kBusy, kFree, kUrl, kClose, kDestroy, kDispatch } = require_symbols();
- var PoolStats = require_pool_stats();
- var kClients = Symbol("clients");
- var kNeedDrain = Symbol("needDrain");
- var kQueue = Symbol("queue");
- var kClosedResolve = Symbol("closed resolve");
- var kOnDrain = Symbol("onDrain");
- var kOnConnect = Symbol("onConnect");
- var kOnDisconnect = Symbol("onDisconnect");
- var kOnConnectionError = Symbol("onConnectionError");
- var kGetDispatcher = Symbol("get dispatcher");
- var kAddClient = Symbol("add client");
- var kRemoveClient = Symbol("remove client");
- var kStats = Symbol("stats");
- var PoolBase = class extends DispatcherBase {
- constructor() {
- super();
- this[kQueue] = new FixedQueue();
- this[kClients] = [];
- this[kQueued] = 0;
- const pool = this;
- this[kOnDrain] = function onDrain(origin, targets) {
- const queue = pool[kQueue];
- let needDrain = false;
- while (!needDrain) {
- const item = queue.shift();
- if (!item) {
- break;
- }
- pool[kQueued]--;
- needDrain = !this.dispatch(item.opts, item.handler);
- }
- this[kNeedDrain] = needDrain;
- if (!this[kNeedDrain] && pool[kNeedDrain]) {
- pool[kNeedDrain] = false;
- pool.emit("drain", origin, [pool, ...targets]);
- }
- if (pool[kClosedResolve] && queue.isEmpty()) {
- Promise.all(pool[kClients].map((c) => c.close())).then(pool[kClosedResolve]);
- }
- };
- this[kOnConnect] = (origin, targets) => {
- pool.emit("connect", origin, [pool, ...targets]);
- };
- this[kOnDisconnect] = (origin, targets, err) => {
- pool.emit("disconnect", origin, [pool, ...targets], err);
- };
- this[kOnConnectionError] = (origin, targets, err) => {
- pool.emit("connectionError", origin, [pool, ...targets], err);
- };
- this[kStats] = new PoolStats(this);
- }
- get [kBusy]() {
- return this[kNeedDrain];
- }
- get [kConnected]() {
- return this[kClients].filter((client) => client[kConnected]).length;
- }
- get [kFree]() {
- return this[kClients].filter((client) => client[kConnected] && !client[kNeedDrain]).length;
- }
- get [kPending]() {
- let ret = this[kQueued];
- for (const { [kPending]: pending } of this[kClients]) {
- ret += pending;
- }
- return ret;
- }
- get [kRunning]() {
- let ret = 0;
- for (const { [kRunning]: running } of this[kClients]) {
- ret += running;
- }
- return ret;
- }
- get [kSize]() {
- let ret = this[kQueued];
- for (const { [kSize]: size } of this[kClients]) {
- ret += size;
- }
- return ret;
- }
- get stats() {
- return this[kStats];
- }
- async [kClose]() {
- if (this[kQueue].isEmpty()) {
- await Promise.all(this[kClients].map((c) => c.close()));
- } else {
- await new Promise((resolve) => {
- this[kClosedResolve] = resolve;
- });
- }
- }
- async [kDestroy](err) {
- while (true) {
- const item = this[kQueue].shift();
- if (!item) {
- break;
- }
- item.handler.onError(err);
- }
- await Promise.all(this[kClients].map((c) => c.destroy(err)));
- }
- [kDispatch](opts, handler) {
- const dispatcher = this[kGetDispatcher]();
- if (!dispatcher) {
- this[kNeedDrain] = true;
- this[kQueue].push({ opts, handler });
- this[kQueued]++;
- } else if (!dispatcher.dispatch(opts, handler)) {
- dispatcher[kNeedDrain] = true;
- this[kNeedDrain] = !this[kGetDispatcher]();
- }
- return !this[kNeedDrain];
- }
- [kAddClient](client) {
- client.on("drain", this[kOnDrain]).on("connect", this[kOnConnect]).on("disconnect", this[kOnDisconnect]).on("connectionError", this[kOnConnectionError]);
- this[kClients].push(client);
- if (this[kNeedDrain]) {
- queueMicrotask(() => {
- if (this[kNeedDrain]) {
- this[kOnDrain](client[kUrl], [this, client]);
- }
- });
- }
- return this;
- }
- [kRemoveClient](client) {
- client.close(() => {
- const idx = this[kClients].indexOf(client);
- if (idx !== -1) {
- this[kClients].splice(idx, 1);
- }
- });
- this[kNeedDrain] = this[kClients].some((dispatcher) => !dispatcher[kNeedDrain] && dispatcher.closed !== true && dispatcher.destroyed !== true);
- }
- };
- module2.exports = {
- PoolBase,
- kClients,
- kNeedDrain,
- kAddClient,
- kRemoveClient,
- kGetDispatcher
- };
- }
-});
-
-// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/core/diagnostics.js
-var require_diagnostics = __commonJS({
- ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/core/diagnostics.js"(exports2, module2) {
- "use strict";
- var diagnosticsChannel = require("node:diagnostics_channel");
- var util = require("node:util");
- var undiciDebugLog = util.debuglog("undici");
- var fetchDebuglog = util.debuglog("fetch");
- var websocketDebuglog = util.debuglog("websocket");
- var isClientSet = false;
- var channels = {
- // Client
- beforeConnect: diagnosticsChannel.channel("undici:client:beforeConnect"),
- connected: diagnosticsChannel.channel("undici:client:connected"),
- connectError: diagnosticsChannel.channel("undici:client:connectError"),
- sendHeaders: diagnosticsChannel.channel("undici:client:sendHeaders"),
- // Request
- create: diagnosticsChannel.channel("undici:request:create"),
- bodySent: diagnosticsChannel.channel("undici:request:bodySent"),
- headers: diagnosticsChannel.channel("undici:request:headers"),
- trailers: diagnosticsChannel.channel("undici:request:trailers"),
- error: diagnosticsChannel.channel("undici:request:error"),
- // WebSocket
- open: diagnosticsChannel.channel("undici:websocket:open"),
- close: diagnosticsChannel.channel("undici:websocket:close"),
- socketError: diagnosticsChannel.channel("undici:websocket:socket_error"),
- ping: diagnosticsChannel.channel("undici:websocket:ping"),
- pong: diagnosticsChannel.channel("undici:websocket:pong")
- };
- if (undiciDebugLog.enabled || fetchDebuglog.enabled) {
- const debuglog = fetchDebuglog.enabled ? fetchDebuglog : undiciDebugLog;
- diagnosticsChannel.channel("undici:client:beforeConnect").subscribe((evt) => {
- const {
- connectParams: { version: version2, protocol, port, host }
- } = evt;
- debuglog(
- "connecting to %s using %s%s",
- `${host}${port ? `:${port}` : ""}`,
- protocol,
- version2
- );
- });
- diagnosticsChannel.channel("undici:client:connected").subscribe((evt) => {
- const {
- connectParams: { version: version2, protocol, port, host }
- } = evt;
- debuglog(
- "connected to %s using %s%s",
- `${host}${port ? `:${port}` : ""}`,
- protocol,
- version2
- );
- });
- diagnosticsChannel.channel("undici:client:connectError").subscribe((evt) => {
- const {
- connectParams: { version: version2, protocol, port, host },
- error
- } = evt;
- debuglog(
- "connection to %s using %s%s errored - %s",
- `${host}${port ? `:${port}` : ""}`,
- protocol,
- version2,
- error.message
- );
- });
- diagnosticsChannel.channel("undici:client:sendHeaders").subscribe((evt) => {
- const {
- request: { method, path: path16, origin }
- } = evt;
- debuglog("sending request to %s %s/%s", method, origin, path16);
- });
- diagnosticsChannel.channel("undici:request:headers").subscribe((evt) => {
- const {
- request: { method, path: path16, origin },
- response: { statusCode }
- } = evt;
- debuglog(
- "received response to %s %s/%s - HTTP %d",
- method,
- origin,
- path16,
- statusCode
- );
- });
- diagnosticsChannel.channel("undici:request:trailers").subscribe((evt) => {
- const {
- request: { method, path: path16, origin }
- } = evt;
- debuglog("trailers received from %s %s/%s", method, origin, path16);
- });
- diagnosticsChannel.channel("undici:request:error").subscribe((evt) => {
- const {
- request: { method, path: path16, origin },
- error
- } = evt;
- debuglog(
- "request to %s %s/%s errored - %s",
- method,
- origin,
- path16,
- error.message
- );
- });
- isClientSet = true;
- }
- if (websocketDebuglog.enabled) {
- if (!isClientSet) {
- const debuglog = undiciDebugLog.enabled ? undiciDebugLog : websocketDebuglog;
- diagnosticsChannel.channel("undici:client:beforeConnect").subscribe((evt) => {
- const {
- connectParams: { version: version2, protocol, port, host }
- } = evt;
- debuglog(
- "connecting to %s%s using %s%s",
- host,
- port ? `:${port}` : "",
- protocol,
- version2
- );
- });
- diagnosticsChannel.channel("undici:client:connected").subscribe((evt) => {
- const {
- connectParams: { version: version2, protocol, port, host }
- } = evt;
- debuglog(
- "connected to %s%s using %s%s",
- host,
- port ? `:${port}` : "",
- protocol,
- version2
- );
- });
- diagnosticsChannel.channel("undici:client:connectError").subscribe((evt) => {
- const {
- connectParams: { version: version2, protocol, port, host },
- error
- } = evt;
- debuglog(
- "connection to %s%s using %s%s errored - %s",
- host,
- port ? `:${port}` : "",
- protocol,
- version2,
- error.message
- );
- });
- diagnosticsChannel.channel("undici:client:sendHeaders").subscribe((evt) => {
- const {
- request: { method, path: path16, origin }
- } = evt;
- debuglog("sending request to %s %s/%s", method, origin, path16);
- });
- }
- diagnosticsChannel.channel("undici:websocket:open").subscribe((evt) => {
- const {
- address: { address, port }
- } = evt;
- websocketDebuglog("connection opened %s%s", address, port ? `:${port}` : "");
- });
- diagnosticsChannel.channel("undici:websocket:close").subscribe((evt) => {
- const { websocket, code: code2, reason } = evt;
- websocketDebuglog(
- "closed connection to %s - %s %s",
- websocket.url,
- code2,
- reason
- );
- });
- diagnosticsChannel.channel("undici:websocket:socket_error").subscribe((err) => {
- websocketDebuglog("connection errored - %s", err.message);
- });
- diagnosticsChannel.channel("undici:websocket:ping").subscribe((evt) => {
- websocketDebuglog("ping received");
- });
- diagnosticsChannel.channel("undici:websocket:pong").subscribe((evt) => {
- websocketDebuglog("pong received");
- });
- }
- module2.exports = {
- channels
- };
- }
-});
-
-// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/core/request.js
-var require_request = __commonJS({
- ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/core/request.js"(exports2, module2) {
- "use strict";
- var {
- InvalidArgumentError,
- NotSupportedError
- } = require_errors();
- var assert5 = require("node:assert");
- var {
- isValidHTTPToken,
- isValidHeaderValue,
- isStream: isStream2,
- destroy,
- isBuffer,
- isFormDataLike,
- isIterable,
- isBlobLike,
- buildURL,
- validateHandler,
- getServerName,
- normalizedMethodRecords
- } = require_util();
- var { channels } = require_diagnostics();
- var { headerNameLowerCasedRecord } = require_constants2();
- var invalidPathRegex = /[^\u0021-\u00ff]/;
- var kHandler = Symbol("handler");
- var Request = class {
- constructor(origin, {
- path: path16,
- method,
- body,
- headers,
- query,
- idempotent,
- blocking,
- upgrade,
- headersTimeout,
- bodyTimeout,
- reset,
- throwOnError,
- expectContinue,
- servername
- }, handler) {
- if (typeof path16 !== "string") {
- throw new InvalidArgumentError("path must be a string");
- } else if (path16[0] !== "/" && !(path16.startsWith("http://") || path16.startsWith("https://")) && method !== "CONNECT") {
- throw new InvalidArgumentError("path must be an absolute URL or start with a slash");
- } else if (invalidPathRegex.test(path16)) {
- throw new InvalidArgumentError("invalid request path");
- }
- if (typeof method !== "string") {
- throw new InvalidArgumentError("method must be a string");
- } else if (normalizedMethodRecords[method] === void 0 && !isValidHTTPToken(method)) {
- throw new InvalidArgumentError("invalid request method");
- }
- if (upgrade && typeof upgrade !== "string") {
- throw new InvalidArgumentError("upgrade must be a string");
- }
- if (headersTimeout != null && (!Number.isFinite(headersTimeout) || headersTimeout < 0)) {
- throw new InvalidArgumentError("invalid headersTimeout");
- }
- if (bodyTimeout != null && (!Number.isFinite(bodyTimeout) || bodyTimeout < 0)) {
- throw new InvalidArgumentError("invalid bodyTimeout");
- }
- if (reset != null && typeof reset !== "boolean") {
- throw new InvalidArgumentError("invalid reset");
- }
- if (expectContinue != null && typeof expectContinue !== "boolean") {
- throw new InvalidArgumentError("invalid expectContinue");
- }
- this.headersTimeout = headersTimeout;
- this.bodyTimeout = bodyTimeout;
- this.throwOnError = throwOnError === true;
- this.method = method;
- this.abort = null;
- if (body == null) {
- this.body = null;
- } else if (isStream2(body)) {
- this.body = body;
- const rState = this.body._readableState;
- if (!rState || !rState.autoDestroy) {
- this.endHandler = function autoDestroy() {
- destroy(this);
- };
- this.body.on("end", this.endHandler);
- }
- this.errorHandler = (err) => {
- if (this.abort) {
- this.abort(err);
- } else {
- this.error = err;
- }
- };
- this.body.on("error", this.errorHandler);
- } else if (isBuffer(body)) {
- this.body = body.byteLength ? body : null;
- } else if (ArrayBuffer.isView(body)) {
- this.body = body.buffer.byteLength ? Buffer.from(body.buffer, body.byteOffset, body.byteLength) : null;
- } else if (body instanceof ArrayBuffer) {
- this.body = body.byteLength ? Buffer.from(body) : null;
- } else if (typeof body === "string") {
- this.body = body.length ? Buffer.from(body) : null;
- } else if (isFormDataLike(body) || isIterable(body) || isBlobLike(body)) {
- this.body = body;
- } else {
- throw new InvalidArgumentError("body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable");
- }
- this.completed = false;
- this.aborted = false;
- this.upgrade = upgrade || null;
- this.path = query ? buildURL(path16, query) : path16;
- this.origin = origin;
- this.idempotent = idempotent == null ? method === "HEAD" || method === "GET" : idempotent;
- this.blocking = blocking == null ? false : blocking;
- this.reset = reset == null ? null : reset;
- this.host = null;
- this.contentLength = null;
- this.contentType = null;
- this.headers = [];
- this.expectContinue = expectContinue != null ? expectContinue : false;
- if (Array.isArray(headers)) {
- if (headers.length % 2 !== 0) {
- throw new InvalidArgumentError("headers array must be even");
- }
- for (let i = 0; i < headers.length; i += 2) {
- processHeader(this, headers[i], headers[i + 1]);
- }
- } else if (headers && typeof headers === "object") {
- if (headers[Symbol.iterator]) {
- for (const header of headers) {
- if (!Array.isArray(header) || header.length !== 2) {
- throw new InvalidArgumentError("headers must be in key-value pair format");
- }
- processHeader(this, header[0], header[1]);
- }
- } else {
- const keys = Object.keys(headers);
- for (let i = 0; i < keys.length; ++i) {
- processHeader(this, keys[i], headers[keys[i]]);
- }
- }
- } else if (headers != null) {
- throw new InvalidArgumentError("headers must be an object or an array");
- }
- validateHandler(handler, method, upgrade);
- this.servername = servername || getServerName(this.host);
- this[kHandler] = handler;
- if (channels.create.hasSubscribers) {
- channels.create.publish({ request: this });
- }
- }
- onBodySent(chunk) {
- if (this[kHandler].onBodySent) {
- try {
- return this[kHandler].onBodySent(chunk);
- } catch (err) {
- this.abort(err);
- }
- }
- }
- onRequestSent() {
- if (channels.bodySent.hasSubscribers) {
- channels.bodySent.publish({ request: this });
- }
- if (this[kHandler].onRequestSent) {
- try {
- return this[kHandler].onRequestSent();
- } catch (err) {
- this.abort(err);
- }
- }
- }
- onConnect(abort) {
- assert5(!this.aborted);
- assert5(!this.completed);
- if (this.error) {
- abort(this.error);
- } else {
- this.abort = abort;
- return this[kHandler].onConnect(abort);
- }
- }
- onResponseStarted() {
- return this[kHandler].onResponseStarted?.();
- }
- onHeaders(statusCode, headers, resume, statusText) {
- assert5(!this.aborted);
- assert5(!this.completed);
- if (channels.headers.hasSubscribers) {
- channels.headers.publish({ request: this, response: { statusCode, headers, statusText } });
- }
- try {
- return this[kHandler].onHeaders(statusCode, headers, resume, statusText);
- } catch (err) {
- this.abort(err);
- }
- }
- onData(chunk) {
- assert5(!this.aborted);
- assert5(!this.completed);
- try {
- return this[kHandler].onData(chunk);
- } catch (err) {
- this.abort(err);
- return false;
- }
- }
- onUpgrade(statusCode, headers, socket) {
- assert5(!this.aborted);
- assert5(!this.completed);
- return this[kHandler].onUpgrade(statusCode, headers, socket);
- }
- onComplete(trailers) {
- this.onFinally();
- assert5(!this.aborted);
- this.completed = true;
- if (channels.trailers.hasSubscribers) {
- channels.trailers.publish({ request: this, trailers });
- }
- try {
- return this[kHandler].onComplete(trailers);
- } catch (err) {
- this.onError(err);
- }
- }
- onError(error) {
- this.onFinally();
- if (channels.error.hasSubscribers) {
- channels.error.publish({ request: this, error });
- }
- if (this.aborted) {
- return;
- }
- this.aborted = true;
- return this[kHandler].onError(error);
- }
- onFinally() {
- if (this.errorHandler) {
- this.body.off("error", this.errorHandler);
- this.errorHandler = null;
- }
- if (this.endHandler) {
- this.body.off("end", this.endHandler);
- this.endHandler = null;
- }
- }
- addHeader(key, value) {
- processHeader(this, key, value);
- return this;
- }
- };
- function processHeader(request, key, val) {
- if (val && (typeof val === "object" && !Array.isArray(val))) {
- throw new InvalidArgumentError(`invalid ${key} header`);
- } else if (val === void 0) {
- return;
- }
- let headerName = headerNameLowerCasedRecord[key];
- if (headerName === void 0) {
- headerName = key.toLowerCase();
- if (headerNameLowerCasedRecord[headerName] === void 0 && !isValidHTTPToken(headerName)) {
- throw new InvalidArgumentError("invalid header key");
- }
- }
- if (Array.isArray(val)) {
- const arr = [];
- for (let i = 0; i < val.length; i++) {
- if (typeof val[i] === "string") {
- if (!isValidHeaderValue(val[i])) {
- throw new InvalidArgumentError(`invalid ${key} header`);
- }
- arr.push(val[i]);
- } else if (val[i] === null) {
- arr.push("");
- } else if (typeof val[i] === "object") {
- throw new InvalidArgumentError(`invalid ${key} header`);
- } else {
- arr.push(`${val[i]}`);
- }
- }
- val = arr;
- } else if (typeof val === "string") {
- if (!isValidHeaderValue(val)) {
- throw new InvalidArgumentError(`invalid ${key} header`);
- }
- } else if (val === null) {
- val = "";
- } else {
- val = `${val}`;
- }
- if (request.host === null && headerName === "host") {
- if (typeof val !== "string") {
- throw new InvalidArgumentError("invalid host header");
- }
- request.host = val;
- } else if (request.contentLength === null && headerName === "content-length") {
- request.contentLength = parseInt(val, 10);
- if (!Number.isFinite(request.contentLength)) {
- throw new InvalidArgumentError("invalid content-length header");
- }
- } else if (request.contentType === null && headerName === "content-type") {
- request.contentType = val;
- request.headers.push(key, val);
- } else if (headerName === "transfer-encoding" || headerName === "keep-alive" || headerName === "upgrade") {
- throw new InvalidArgumentError(`invalid ${headerName} header`);
- } else if (headerName === "connection") {
- const value = typeof val === "string" ? val.toLowerCase() : null;
- if (value !== "close" && value !== "keep-alive") {
- throw new InvalidArgumentError("invalid connection header");
- }
- if (value === "close") {
- request.reset = true;
- }
- } else if (headerName === "expect") {
- throw new NotSupportedError("expect header not supported");
- } else {
- request.headers.push(key, val);
- }
- }
- module2.exports = Request;
- }
-});
-
-// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/util/timers.js
-var require_timers = __commonJS({
- ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/util/timers.js"(exports2, module2) {
- "use strict";
- var fastNow = 0;
- var RESOLUTION_MS = 1e3;
- var TICK_MS = (RESOLUTION_MS >> 1) - 1;
- var fastNowTimeout;
- var kFastTimer = Symbol("kFastTimer");
- var fastTimers = [];
- var NOT_IN_LIST = -2;
- var TO_BE_CLEARED = -1;
- var PENDING2 = 0;
- var ACTIVE = 1;
- function onTick() {
- fastNow += TICK_MS;
- let idx = 0;
- let len = fastTimers.length;
- while (idx < len) {
- const timer = fastTimers[idx];
- if (timer._state === PENDING2) {
- timer._idleStart = fastNow - TICK_MS;
- timer._state = ACTIVE;
- } else if (timer._state === ACTIVE && fastNow >= timer._idleStart + timer._idleTimeout) {
- timer._state = TO_BE_CLEARED;
- timer._idleStart = -1;
- timer._onTimeout(timer._timerArg);
- }
- if (timer._state === TO_BE_CLEARED) {
- timer._state = NOT_IN_LIST;
- if (--len !== 0) {
- fastTimers[idx] = fastTimers[len];
- }
- } else {
- ++idx;
- }
- }
- fastTimers.length = len;
- if (fastTimers.length !== 0) {
- refreshTimeout();
- }
- }
- function refreshTimeout() {
- if (fastNowTimeout) {
- fastNowTimeout.refresh();
- } else {
- clearTimeout(fastNowTimeout);
- fastNowTimeout = setTimeout(onTick, TICK_MS);
- if (fastNowTimeout.unref) {
- fastNowTimeout.unref();
- }
- }
- }
- var FastTimer = class {
- [kFastTimer] = true;
- /**
- * The state of the timer, which can be one of the following:
- * - NOT_IN_LIST (-2)
- * - TO_BE_CLEARED (-1)
- * - PENDING (0)
- * - ACTIVE (1)
- *
- * @type {-2|-1|0|1}
- * @private
- */
- _state = NOT_IN_LIST;
- /**
- * The number of milliseconds to wait before calling the callback.
- *
- * @type {number}
- * @private
- */
- _idleTimeout = -1;
- /**
- * The time in milliseconds when the timer was started. This value is used to
- * calculate when the timer should expire.
- *
- * @type {number}
- * @default -1
- * @private
- */
- _idleStart = -1;
- /**
- * The function to be executed when the timer expires.
- * @type {Function}
- * @private
- */
- _onTimeout;
- /**
- * The argument to be passed to the callback when the timer expires.
- *
- * @type {*}
- * @private
- */
- _timerArg;
- /**
- * @constructor
- * @param {Function} callback A function to be executed after the timer
- * expires.
- * @param {number} delay The time, in milliseconds that the timer should wait
- * before the specified function or code is executed.
- * @param {*} arg
- */
- constructor(callback, delay, arg) {
- this._onTimeout = callback;
- this._idleTimeout = delay;
- this._timerArg = arg;
- this.refresh();
- }
- /**
- * Sets the timer's start time to the current time, and reschedules the timer
- * to call its callback at the previously specified duration adjusted to the
- * current time.
- * Using this on a timer that has already called its callback will reactivate
- * the timer.
- *
- * @returns {void}
- */
- refresh() {
- if (this._state === NOT_IN_LIST) {
- fastTimers.push(this);
- }
- if (!fastNowTimeout || fastTimers.length === 1) {
- refreshTimeout();
- }
- this._state = PENDING2;
- }
- /**
- * The `clear` method cancels the timer, preventing it from executing.
- *
- * @returns {void}
- * @private
- */
- clear() {
- this._state = TO_BE_CLEARED;
- this._idleStart = -1;
- }
- };
- module2.exports = {
- /**
- * The setTimeout() method sets a timer which executes a function once the
- * timer expires.
- * @param {Function} callback A function to be executed after the timer
- * expires.
- * @param {number} delay The time, in milliseconds that the timer should
- * wait before the specified function or code is executed.
- * @param {*} [arg] An optional argument to be passed to the callback function
- * when the timer expires.
- * @returns {NodeJS.Timeout|FastTimer}
- */
- setTimeout(callback, delay, arg) {
- return delay <= RESOLUTION_MS ? setTimeout(callback, delay, arg) : new FastTimer(callback, delay, arg);
- },
- /**
- * The clearTimeout method cancels an instantiated Timer previously created
- * by calling setTimeout.
- *
- * @param {NodeJS.Timeout|FastTimer} timeout
- */
- clearTimeout(timeout) {
- if (timeout[kFastTimer]) {
- timeout.clear();
- } else {
- clearTimeout(timeout);
- }
- },
- /**
- * The setFastTimeout() method sets a fastTimer which executes a function once
- * the timer expires.
- * @param {Function} callback A function to be executed after the timer
- * expires.
- * @param {number} delay The time, in milliseconds that the timer should
- * wait before the specified function or code is executed.
- * @param {*} [arg] An optional argument to be passed to the callback function
- * when the timer expires.
- * @returns {FastTimer}
- */
- setFastTimeout(callback, delay, arg) {
- return new FastTimer(callback, delay, arg);
- },
- /**
- * The clearTimeout method cancels an instantiated FastTimer previously
- * created by calling setFastTimeout.
- *
- * @param {FastTimer} timeout
- */
- clearFastTimeout(timeout) {
- timeout.clear();
- },
- /**
- * The now method returns the value of the internal fast timer clock.
- *
- * @returns {number}
- */
- now() {
- return fastNow;
- },
- /**
- * Trigger the onTick function to process the fastTimers array.
- * Exported for testing purposes only.
- * Marking as deprecated to discourage any use outside of testing.
- * @deprecated
- * @param {number} [delay=0] The delay in milliseconds to add to the now value.
- */
- tick(delay = 0) {
- fastNow += delay - RESOLUTION_MS + 1;
- onTick();
- onTick();
- },
- /**
- * Reset FastTimers.
- * Exported for testing purposes only.
- * Marking as deprecated to discourage any use outside of testing.
- * @deprecated
- */
- reset() {
- fastNow = 0;
- fastTimers.length = 0;
- clearTimeout(fastNowTimeout);
- fastNowTimeout = null;
- },
- /**
- * Exporting for testing purposes only.
- * Marking as deprecated to discourage any use outside of testing.
- * @deprecated
- */
- kFastTimer
- };
- }
-});
-
-// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/core/connect.js
-var require_connect = __commonJS({
- ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/core/connect.js"(exports2, module2) {
- "use strict";
- var net = require("node:net");
- var assert5 = require("node:assert");
- var util = require_util();
- var { InvalidArgumentError, ConnectTimeoutError } = require_errors();
- var timers = require_timers();
- function noop3() {
- }
- var tls;
- var SessionCache;
- if (global.FinalizationRegistry && !(process.env.NODE_V8_COVERAGE || process.env.UNDICI_NO_FG)) {
- SessionCache = class WeakSessionCache {
- constructor(maxCachedSessions) {
- this._maxCachedSessions = maxCachedSessions;
- this._sessionCache = /* @__PURE__ */ new Map();
- this._sessionRegistry = new global.FinalizationRegistry((key) => {
- if (this._sessionCache.size < this._maxCachedSessions) {
- return;
- }
- const ref = this._sessionCache.get(key);
- if (ref !== void 0 && ref.deref() === void 0) {
- this._sessionCache.delete(key);
- }
- });
- }
- get(sessionKey) {
- const ref = this._sessionCache.get(sessionKey);
- return ref ? ref.deref() : null;
- }
- set(sessionKey, session) {
- if (this._maxCachedSessions === 0) {
- return;
- }
- this._sessionCache.set(sessionKey, new WeakRef(session));
- this._sessionRegistry.register(session, sessionKey);
- }
- };
- } else {
- SessionCache = class SimpleSessionCache {
- constructor(maxCachedSessions) {
- this._maxCachedSessions = maxCachedSessions;
- this._sessionCache = /* @__PURE__ */ new Map();
- }
- get(sessionKey) {
- return this._sessionCache.get(sessionKey);
- }
- set(sessionKey, session) {
- if (this._maxCachedSessions === 0) {
- return;
- }
- if (this._sessionCache.size >= this._maxCachedSessions) {
- const { value: oldestKey } = this._sessionCache.keys().next();
- this._sessionCache.delete(oldestKey);
- }
- this._sessionCache.set(sessionKey, session);
- }
- };
- }
- function buildConnector({ allowH2, maxCachedSessions, socketPath, timeout, session: customSession, ...opts }) {
- if (maxCachedSessions != null && (!Number.isInteger(maxCachedSessions) || maxCachedSessions < 0)) {
- throw new InvalidArgumentError("maxCachedSessions must be a positive integer or zero");
- }
- const options = { path: socketPath, ...opts };
- const sessionCache = new SessionCache(maxCachedSessions == null ? 100 : maxCachedSessions);
- timeout = timeout == null ? 1e4 : timeout;
- allowH2 = allowH2 != null ? allowH2 : false;
- return function connect({ hostname, host, protocol, port, servername, localAddress, httpSocket }, callback) {
- let socket;
- if (protocol === "https:") {
- if (!tls) {
- tls = require("node:tls");
- }
- servername = servername || options.servername || util.getServerName(host) || null;
- const sessionKey = servername || hostname;
- assert5(sessionKey);
- const session = customSession || sessionCache.get(sessionKey) || null;
- port = port || 443;
- socket = tls.connect({
- highWaterMark: 16384,
- // TLS in node can't have bigger HWM anyway...
- ...options,
- servername,
- session,
- localAddress,
- // TODO(HTTP/2): Add support for h2c
- ALPNProtocols: allowH2 ? ["http/1.1", "h2"] : ["http/1.1"],
- socket: httpSocket,
- // upgrade socket connection
- port,
- host: hostname
- });
- socket.on("session", function(session2) {
- sessionCache.set(sessionKey, session2);
- });
- } else {
- assert5(!httpSocket, "httpSocket can only be sent on TLS update");
- port = port || 80;
- socket = net.connect({
- highWaterMark: 64 * 1024,
- // Same as nodejs fs streams.
- ...options,
- localAddress,
- port,
- host: hostname
- });
- }
- if (options.keepAlive == null || options.keepAlive) {
- const keepAliveInitialDelay = options.keepAliveInitialDelay === void 0 ? 6e4 : options.keepAliveInitialDelay;
- socket.setKeepAlive(true, keepAliveInitialDelay);
- }
- const clearConnectTimeout = setupConnectTimeout(new WeakRef(socket), { timeout, hostname, port });
- socket.setNoDelay(true).once(protocol === "https:" ? "secureConnect" : "connect", function() {
- queueMicrotask(clearConnectTimeout);
- if (callback) {
- const cb = callback;
- callback = null;
- cb(null, this);
- }
- }).on("error", function(err) {
- queueMicrotask(clearConnectTimeout);
- if (callback) {
- const cb = callback;
- callback = null;
- cb(err);
- }
- });
- return socket;
- };
- }
- var setupConnectTimeout = process.platform === "win32" ? (socketWeakRef, opts) => {
- if (!opts.timeout) {
- return noop3;
- }
- let s1 = null;
- let s2 = null;
- const fastTimer = timers.setFastTimeout(() => {
- s1 = setImmediate(() => {
- s2 = setImmediate(() => onConnectTimeout(socketWeakRef.deref(), opts));
- });
- }, opts.timeout);
- return () => {
- timers.clearFastTimeout(fastTimer);
- clearImmediate(s1);
- clearImmediate(s2);
- };
- } : (socketWeakRef, opts) => {
- if (!opts.timeout) {
- return noop3;
- }
- let s1 = null;
- const fastTimer = timers.setFastTimeout(() => {
- s1 = setImmediate(() => {
- onConnectTimeout(socketWeakRef.deref(), opts);
- });
- }, opts.timeout);
- return () => {
- timers.clearFastTimeout(fastTimer);
- clearImmediate(s1);
- };
- };
- function onConnectTimeout(socket, opts) {
- if (socket == null) {
- return;
- }
- let message = "Connect Timeout Error";
- if (Array.isArray(socket.autoSelectFamilyAttemptedAddresses)) {
- message += ` (attempted addresses: ${socket.autoSelectFamilyAttemptedAddresses.join(", ")},`;
- } else {
- message += ` (attempted address: ${opts.hostname}:${opts.port},`;
- }
- message += ` timeout: ${opts.timeout}ms)`;
- util.destroy(socket, new ConnectTimeoutError(message));
- }
- module2.exports = buildConnector;
- }
-});
-
-// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/llhttp/utils.js
-var require_utils = __commonJS({
- ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/llhttp/utils.js"(exports2) {
- "use strict";
- Object.defineProperty(exports2, "__esModule", { value: true });
- exports2.enumToMap = void 0;
- function enumToMap(obj) {
- const res = {};
- Object.keys(obj).forEach((key) => {
- const value = obj[key];
- if (typeof value === "number") {
- res[key] = value;
- }
- });
- return res;
- }
- exports2.enumToMap = enumToMap;
- }
-});
-
-// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/llhttp/constants.js
-var require_constants3 = __commonJS({
- ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/llhttp/constants.js"(exports2) {
- "use strict";
- Object.defineProperty(exports2, "__esModule", { value: true });
- exports2.SPECIAL_HEADERS = exports2.HEADER_STATE = exports2.MINOR = exports2.MAJOR = exports2.CONNECTION_TOKEN_CHARS = exports2.HEADER_CHARS = exports2.TOKEN = exports2.STRICT_TOKEN = exports2.HEX = exports2.URL_CHAR = exports2.STRICT_URL_CHAR = exports2.USERINFO_CHARS = exports2.MARK = exports2.ALPHANUM = exports2.NUM = exports2.HEX_MAP = exports2.NUM_MAP = exports2.ALPHA = exports2.FINISH = exports2.H_METHOD_MAP = exports2.METHOD_MAP = exports2.METHODS_RTSP = exports2.METHODS_ICE = exports2.METHODS_HTTP = exports2.METHODS = exports2.LENIENT_FLAGS = exports2.FLAGS = exports2.TYPE = exports2.ERROR = void 0;
- var utils_1 = require_utils();
- var ERROR2;
- (function(ERROR3) {
- ERROR3[ERROR3["OK"] = 0] = "OK";
- ERROR3[ERROR3["INTERNAL"] = 1] = "INTERNAL";
- ERROR3[ERROR3["STRICT"] = 2] = "STRICT";
- ERROR3[ERROR3["LF_EXPECTED"] = 3] = "LF_EXPECTED";
- ERROR3[ERROR3["UNEXPECTED_CONTENT_LENGTH"] = 4] = "UNEXPECTED_CONTENT_LENGTH";
- ERROR3[ERROR3["CLOSED_CONNECTION"] = 5] = "CLOSED_CONNECTION";
- ERROR3[ERROR3["INVALID_METHOD"] = 6] = "INVALID_METHOD";
- ERROR3[ERROR3["INVALID_URL"] = 7] = "INVALID_URL";
- ERROR3[ERROR3["INVALID_CONSTANT"] = 8] = "INVALID_CONSTANT";
- ERROR3[ERROR3["INVALID_VERSION"] = 9] = "INVALID_VERSION";
- ERROR3[ERROR3["INVALID_HEADER_TOKEN"] = 10] = "INVALID_HEADER_TOKEN";
- ERROR3[ERROR3["INVALID_CONTENT_LENGTH"] = 11] = "INVALID_CONTENT_LENGTH";
- ERROR3[ERROR3["INVALID_CHUNK_SIZE"] = 12] = "INVALID_CHUNK_SIZE";
- ERROR3[ERROR3["INVALID_STATUS"] = 13] = "INVALID_STATUS";
- ERROR3[ERROR3["INVALID_EOF_STATE"] = 14] = "INVALID_EOF_STATE";
- ERROR3[ERROR3["INVALID_TRANSFER_ENCODING"] = 15] = "INVALID_TRANSFER_ENCODING";
- ERROR3[ERROR3["CB_MESSAGE_BEGIN"] = 16] = "CB_MESSAGE_BEGIN";
- ERROR3[ERROR3["CB_HEADERS_COMPLETE"] = 17] = "CB_HEADERS_COMPLETE";
- ERROR3[ERROR3["CB_MESSAGE_COMPLETE"] = 18] = "CB_MESSAGE_COMPLETE";
- ERROR3[ERROR3["CB_CHUNK_HEADER"] = 19] = "CB_CHUNK_HEADER";
- ERROR3[ERROR3["CB_CHUNK_COMPLETE"] = 20] = "CB_CHUNK_COMPLETE";
- ERROR3[ERROR3["PAUSED"] = 21] = "PAUSED";
- ERROR3[ERROR3["PAUSED_UPGRADE"] = 22] = "PAUSED_UPGRADE";
- ERROR3[ERROR3["PAUSED_H2_UPGRADE"] = 23] = "PAUSED_H2_UPGRADE";
- ERROR3[ERROR3["USER"] = 24] = "USER";
- })(ERROR2 = exports2.ERROR || (exports2.ERROR = {}));
- var TYPE;
- (function(TYPE2) {
- TYPE2[TYPE2["BOTH"] = 0] = "BOTH";
- TYPE2[TYPE2["REQUEST"] = 1] = "REQUEST";
- TYPE2[TYPE2["RESPONSE"] = 2] = "RESPONSE";
- })(TYPE = exports2.TYPE || (exports2.TYPE = {}));
- var FLAGS;
- (function(FLAGS2) {
- FLAGS2[FLAGS2["CONNECTION_KEEP_ALIVE"] = 1] = "CONNECTION_KEEP_ALIVE";
- FLAGS2[FLAGS2["CONNECTION_CLOSE"] = 2] = "CONNECTION_CLOSE";
- FLAGS2[FLAGS2["CONNECTION_UPGRADE"] = 4] = "CONNECTION_UPGRADE";
- FLAGS2[FLAGS2["CHUNKED"] = 8] = "CHUNKED";
- FLAGS2[FLAGS2["UPGRADE"] = 16] = "UPGRADE";
- FLAGS2[FLAGS2["CONTENT_LENGTH"] = 32] = "CONTENT_LENGTH";
- FLAGS2[FLAGS2["SKIPBODY"] = 64] = "SKIPBODY";
- FLAGS2[FLAGS2["TRAILING"] = 128] = "TRAILING";
- FLAGS2[FLAGS2["TRANSFER_ENCODING"] = 512] = "TRANSFER_ENCODING";
- })(FLAGS = exports2.FLAGS || (exports2.FLAGS = {}));
- var LENIENT_FLAGS;
- (function(LENIENT_FLAGS2) {
- LENIENT_FLAGS2[LENIENT_FLAGS2["HEADERS"] = 1] = "HEADERS";
- LENIENT_FLAGS2[LENIENT_FLAGS2["CHUNKED_LENGTH"] = 2] = "CHUNKED_LENGTH";
- LENIENT_FLAGS2[LENIENT_FLAGS2["KEEP_ALIVE"] = 4] = "KEEP_ALIVE";
- })(LENIENT_FLAGS = exports2.LENIENT_FLAGS || (exports2.LENIENT_FLAGS = {}));
- var METHODS;
- (function(METHODS2) {
- METHODS2[METHODS2["DELETE"] = 0] = "DELETE";
- METHODS2[METHODS2["GET"] = 1] = "GET";
- METHODS2[METHODS2["HEAD"] = 2] = "HEAD";
- METHODS2[METHODS2["POST"] = 3] = "POST";
- METHODS2[METHODS2["PUT"] = 4] = "PUT";
- METHODS2[METHODS2["CONNECT"] = 5] = "CONNECT";
- METHODS2[METHODS2["OPTIONS"] = 6] = "OPTIONS";
- METHODS2[METHODS2["TRACE"] = 7] = "TRACE";
- METHODS2[METHODS2["COPY"] = 8] = "COPY";
- METHODS2[METHODS2["LOCK"] = 9] = "LOCK";
- METHODS2[METHODS2["MKCOL"] = 10] = "MKCOL";
- METHODS2[METHODS2["MOVE"] = 11] = "MOVE";
- METHODS2[METHODS2["PROPFIND"] = 12] = "PROPFIND";
- METHODS2[METHODS2["PROPPATCH"] = 13] = "PROPPATCH";
- METHODS2[METHODS2["SEARCH"] = 14] = "SEARCH";
- METHODS2[METHODS2["UNLOCK"] = 15] = "UNLOCK";
- METHODS2[METHODS2["BIND"] = 16] = "BIND";
- METHODS2[METHODS2["REBIND"] = 17] = "REBIND";
- METHODS2[METHODS2["UNBIND"] = 18] = "UNBIND";
- METHODS2[METHODS2["ACL"] = 19] = "ACL";
- METHODS2[METHODS2["REPORT"] = 20] = "REPORT";
- METHODS2[METHODS2["MKACTIVITY"] = 21] = "MKACTIVITY";
- METHODS2[METHODS2["CHECKOUT"] = 22] = "CHECKOUT";
- METHODS2[METHODS2["MERGE"] = 23] = "MERGE";
- METHODS2[METHODS2["M-SEARCH"] = 24] = "M-SEARCH";
- METHODS2[METHODS2["NOTIFY"] = 25] = "NOTIFY";
- METHODS2[METHODS2["SUBSCRIBE"] = 26] = "SUBSCRIBE";
- METHODS2[METHODS2["UNSUBSCRIBE"] = 27] = "UNSUBSCRIBE";
- METHODS2[METHODS2["PATCH"] = 28] = "PATCH";
- METHODS2[METHODS2["PURGE"] = 29] = "PURGE";
- METHODS2[METHODS2["MKCALENDAR"] = 30] = "MKCALENDAR";
- METHODS2[METHODS2["LINK"] = 31] = "LINK";
- METHODS2[METHODS2["UNLINK"] = 32] = "UNLINK";
- METHODS2[METHODS2["SOURCE"] = 33] = "SOURCE";
- METHODS2[METHODS2["PRI"] = 34] = "PRI";
- METHODS2[METHODS2["DESCRIBE"] = 35] = "DESCRIBE";
- METHODS2[METHODS2["ANNOUNCE"] = 36] = "ANNOUNCE";
- METHODS2[METHODS2["SETUP"] = 37] = "SETUP";
- METHODS2[METHODS2["PLAY"] = 38] = "PLAY";
- METHODS2[METHODS2["PAUSE"] = 39] = "PAUSE";
- METHODS2[METHODS2["TEARDOWN"] = 40] = "TEARDOWN";
- METHODS2[METHODS2["GET_PARAMETER"] = 41] = "GET_PARAMETER";
- METHODS2[METHODS2["SET_PARAMETER"] = 42] = "SET_PARAMETER";
- METHODS2[METHODS2["REDIRECT"] = 43] = "REDIRECT";
- METHODS2[METHODS2["RECORD"] = 44] = "RECORD";
- METHODS2[METHODS2["FLUSH"] = 45] = "FLUSH";
- })(METHODS = exports2.METHODS || (exports2.METHODS = {}));
- exports2.METHODS_HTTP = [
- METHODS.DELETE,
- METHODS.GET,
- METHODS.HEAD,
- METHODS.POST,
- METHODS.PUT,
- METHODS.CONNECT,
- METHODS.OPTIONS,
- METHODS.TRACE,
- METHODS.COPY,
- METHODS.LOCK,
- METHODS.MKCOL,
- METHODS.MOVE,
- METHODS.PROPFIND,
- METHODS.PROPPATCH,
- METHODS.SEARCH,
- METHODS.UNLOCK,
- METHODS.BIND,
- METHODS.REBIND,
- METHODS.UNBIND,
- METHODS.ACL,
- METHODS.REPORT,
- METHODS.MKACTIVITY,
- METHODS.CHECKOUT,
- METHODS.MERGE,
- METHODS["M-SEARCH"],
- METHODS.NOTIFY,
- METHODS.SUBSCRIBE,
- METHODS.UNSUBSCRIBE,
- METHODS.PATCH,
- METHODS.PURGE,
- METHODS.MKCALENDAR,
- METHODS.LINK,
- METHODS.UNLINK,
- METHODS.PRI,
- // TODO(indutny): should we allow it with HTTP?
- METHODS.SOURCE
- ];
- exports2.METHODS_ICE = [
- METHODS.SOURCE
- ];
- exports2.METHODS_RTSP = [
- METHODS.OPTIONS,
- METHODS.DESCRIBE,
- METHODS.ANNOUNCE,
- METHODS.SETUP,
- METHODS.PLAY,
- METHODS.PAUSE,
- METHODS.TEARDOWN,
- METHODS.GET_PARAMETER,
- METHODS.SET_PARAMETER,
- METHODS.REDIRECT,
- METHODS.RECORD,
- METHODS.FLUSH,
- // For AirPlay
- METHODS.GET,
- METHODS.POST
- ];
- exports2.METHOD_MAP = utils_1.enumToMap(METHODS);
- exports2.H_METHOD_MAP = {};
- Object.keys(exports2.METHOD_MAP).forEach((key) => {
- if (/^H/.test(key)) {
- exports2.H_METHOD_MAP[key] = exports2.METHOD_MAP[key];
- }
- });
- var FINISH;
- (function(FINISH2) {
- FINISH2[FINISH2["SAFE"] = 0] = "SAFE";
- FINISH2[FINISH2["SAFE_WITH_CB"] = 1] = "SAFE_WITH_CB";
- FINISH2[FINISH2["UNSAFE"] = 2] = "UNSAFE";
- })(FINISH = exports2.FINISH || (exports2.FINISH = {}));
- exports2.ALPHA = [];
- for (let i = "A".charCodeAt(0); i <= "Z".charCodeAt(0); i++) {
- exports2.ALPHA.push(String.fromCharCode(i));
- exports2.ALPHA.push(String.fromCharCode(i + 32));
- }
- exports2.NUM_MAP = {
- 0: 0,
- 1: 1,
- 2: 2,
- 3: 3,
- 4: 4,
- 5: 5,
- 6: 6,
- 7: 7,
- 8: 8,
- 9: 9
- };
- exports2.HEX_MAP = {
- 0: 0,
- 1: 1,
- 2: 2,
- 3: 3,
- 4: 4,
- 5: 5,
- 6: 6,
- 7: 7,
- 8: 8,
- 9: 9,
- A: 10,
- B: 11,
- C: 12,
- D: 13,
- E: 14,
- F: 15,
- a: 10,
- b: 11,
- c: 12,
- d: 13,
- e: 14,
- f: 15
- };
- exports2.NUM = [
- "0",
- "1",
- "2",
- "3",
- "4",
- "5",
- "6",
- "7",
- "8",
- "9"
- ];
- exports2.ALPHANUM = exports2.ALPHA.concat(exports2.NUM);
- exports2.MARK = ["-", "_", ".", "!", "~", "*", "'", "(", ")"];
- exports2.USERINFO_CHARS = exports2.ALPHANUM.concat(exports2.MARK).concat(["%", ";", ":", "&", "=", "+", "$", ","]);
- exports2.STRICT_URL_CHAR = [
- "!",
- '"',
- "$",
- "%",
- "&",
- "'",
- "(",
- ")",
- "*",
- "+",
- ",",
- "-",
- ".",
- "/",
- ":",
- ";",
- "<",
- "=",
- ">",
- "@",
- "[",
- "\\",
- "]",
- "^",
- "_",
- "`",
- "{",
- "|",
- "}",
- "~"
- ].concat(exports2.ALPHANUM);
- exports2.URL_CHAR = exports2.STRICT_URL_CHAR.concat([" ", "\f"]);
- for (let i = 128; i <= 255; i++) {
- exports2.URL_CHAR.push(i);
- }
- exports2.HEX = exports2.NUM.concat(["a", "b", "c", "d", "e", "f", "A", "B", "C", "D", "E", "F"]);
- exports2.STRICT_TOKEN = [
- "!",
- "#",
- "$",
- "%",
- "&",
- "'",
- "*",
- "+",
- "-",
- ".",
- "^",
- "_",
- "`",
- "|",
- "~"
- ].concat(exports2.ALPHANUM);
- exports2.TOKEN = exports2.STRICT_TOKEN.concat([" "]);
- exports2.HEADER_CHARS = [" "];
- for (let i = 32; i <= 255; i++) {
- if (i !== 127) {
- exports2.HEADER_CHARS.push(i);
- }
- }
- exports2.CONNECTION_TOKEN_CHARS = exports2.HEADER_CHARS.filter((c) => c !== 44);
- exports2.MAJOR = exports2.NUM_MAP;
- exports2.MINOR = exports2.MAJOR;
- var HEADER_STATE;
- (function(HEADER_STATE2) {
- HEADER_STATE2[HEADER_STATE2["GENERAL"] = 0] = "GENERAL";
- HEADER_STATE2[HEADER_STATE2["CONNECTION"] = 1] = "CONNECTION";
- HEADER_STATE2[HEADER_STATE2["CONTENT_LENGTH"] = 2] = "CONTENT_LENGTH";
- HEADER_STATE2[HEADER_STATE2["TRANSFER_ENCODING"] = 3] = "TRANSFER_ENCODING";
- HEADER_STATE2[HEADER_STATE2["UPGRADE"] = 4] = "UPGRADE";
- HEADER_STATE2[HEADER_STATE2["CONNECTION_KEEP_ALIVE"] = 5] = "CONNECTION_KEEP_ALIVE";
- HEADER_STATE2[HEADER_STATE2["CONNECTION_CLOSE"] = 6] = "CONNECTION_CLOSE";
- HEADER_STATE2[HEADER_STATE2["CONNECTION_UPGRADE"] = 7] = "CONNECTION_UPGRADE";
- HEADER_STATE2[HEADER_STATE2["TRANSFER_ENCODING_CHUNKED"] = 8] = "TRANSFER_ENCODING_CHUNKED";
- })(HEADER_STATE = exports2.HEADER_STATE || (exports2.HEADER_STATE = {}));
- exports2.SPECIAL_HEADERS = {
- "connection": HEADER_STATE.CONNECTION,
- "content-length": HEADER_STATE.CONTENT_LENGTH,
- "proxy-connection": HEADER_STATE.CONNECTION,
- "transfer-encoding": HEADER_STATE.TRANSFER_ENCODING,
- "upgrade": HEADER_STATE.UPGRADE
- };
- }
-});
-
-// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/llhttp/llhttp-wasm.js
-var require_llhttp_wasm = __commonJS({
- ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/llhttp/llhttp-wasm.js"(exports2, module2) {
- "use strict";
- var { Buffer: Buffer3 } = require("node:buffer");
- module2.exports = Buffer3.from("AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVuaWVudF9oZWFkZXJzACEhbGxodHRwX3NldF9sZW5pZW50X2NodW5rZWRfbGVuZ3RoACIdbGxodHRwX3NldF9sZW5pZW50X2tlZXBfYWxpdmUAIyRsbGh0dHBfc2V0X2xlbmllbnRfdHJhbnNmZXJfZW5jb2RpbmcAJBhsbGh0dHBfbWVzc2FnZV9uZWVkc19lb2YALgkXAQBBAQsRAQIDBAUKBgcrLSwqKSglJyYK07MCLBYAQYjQACgCAARAAAtBiNAAQQE2AgALFAAgABAwIAAgAjYCOCAAIAE6ACgLFAAgACAALwEyIAAtAC4gABAvEAALHgEBf0HAABAyIgEQMCABQYAINgI4IAEgADoAKCABC48MAQd/AkAgAEUNACAAQQhrIgEgAEEEaygCACIAQXhxIgRqIQUCQCAAQQFxDQAgAEEDcUUNASABIAEoAgAiAGsiAUGc0AAoAgBJDQEgACAEaiEEAkACQEGg0AAoAgAgAUcEQCAAQf8BTQRAIABBA3YhAyABKAIIIgAgASgCDCICRgRAQYzQAEGM0AAoAgBBfiADd3E2AgAMBQsgAiAANgIIIAAgAjYCDAwECyABKAIYIQYgASABKAIMIgBHBEAgACABKAIIIgI2AgggAiAANgIMDAMLIAFBFGoiAygCACICRQRAIAEoAhAiAkUNAiABQRBqIQMLA0AgAyEHIAIiAEEUaiIDKAIAIgINACAAQRBqIQMgACgCECICDQALIAdBADYCAAwCCyAFKAIEIgBBA3FBA0cNAiAFIABBfnE2AgRBlNAAIAQ2AgAgBSAENgIAIAEgBEEBcjYCBAwDC0EAIQALIAZFDQACQCABKAIcIgJBAnRBvNIAaiIDKAIAIAFGBEAgAyAANgIAIAANAUGQ0ABBkNAAKAIAQX4gAndxNgIADAILIAZBEEEUIAYoAhAgAUYbaiAANgIAIABFDQELIAAgBjYCGCABKAIQIgIEQCAAIAI2AhAgAiAANgIYCyABQRRqKAIAIgJFDQAgAEEUaiACNgIAIAIgADYCGAsgASAFTw0AIAUoAgQiAEEBcUUNAAJAAkACQAJAIABBAnFFBEBBpNAAKAIAIAVGBEBBpNAAIAE2AgBBmNAAQZjQACgCACAEaiIANgIAIAEgAEEBcjYCBCABQaDQACgCAEcNBkGU0ABBADYCAEGg0ABBADYCAAwGC0Gg0AAoAgAgBUYEQEGg0AAgATYCAEGU0ABBlNAAKAIAIARqIgA2AgAgASAAQQFyNgIEIAAgAWogADYCAAwGCyAAQXhxIARqIQQgAEH/AU0EQCAAQQN2IQMgBSgCCCIAIAUoAgwiAkYEQEGM0ABBjNAAKAIAQX4gA3dxNgIADAULIAIgADYCCCAAIAI2AgwMBAsgBSgCGCEGIAUgBSgCDCIARwRAQZzQACgCABogACAFKAIIIgI2AgggAiAANgIMDAMLIAVBFGoiAygCACICRQRAIAUoAhAiAkUNAiAFQRBqIQMLA0AgAyEHIAIiAEEUaiIDKAIAIgINACAAQRBqIQMgACgCECICDQALIAdBADYCAAwCCyAFIABBfnE2AgQgASAEaiAENgIAIAEgBEEBcjYCBAwDC0EAIQALIAZFDQACQCAFKAIcIgJBAnRBvNIAaiIDKAIAIAVGBEAgAyAANgIAIAANAUGQ0ABBkNAAKAIAQX4gAndxNgIADAILIAZBEEEUIAYoAhAgBUYbaiAANgIAIABFDQELIAAgBjYCGCAFKAIQIgIEQCAAIAI2AhAgAiAANgIYCyAFQRRqKAIAIgJFDQAgAEEUaiACNgIAIAIgADYCGAsgASAEaiAENgIAIAEgBEEBcjYCBCABQaDQACgCAEcNAEGU0AAgBDYCAAwBCyAEQf8BTQRAIARBeHFBtNAAaiEAAn9BjNAAKAIAIgJBASAEQQN2dCIDcUUEQEGM0AAgAiADcjYCACAADAELIAAoAggLIgIgATYCDCAAIAE2AgggASAANgIMIAEgAjYCCAwBC0EfIQIgBEH///8HTQRAIARBJiAEQQh2ZyIAa3ZBAXEgAEEBdGtBPmohAgsgASACNgIcIAFCADcCECACQQJ0QbzSAGohAAJAQZDQACgCACIDQQEgAnQiB3FFBEAgACABNgIAQZDQACADIAdyNgIAIAEgADYCGCABIAE2AgggASABNgIMDAELIARBGSACQQF2a0EAIAJBH0cbdCECIAAoAgAhAAJAA0AgACIDKAIEQXhxIARGDQEgAkEddiEAIAJBAXQhAiADIABBBHFqQRBqIgcoAgAiAA0ACyAHIAE2AgAgASADNgIYIAEgATYCDCABIAE2AggMAQsgAygCCCIAIAE2AgwgAyABNgIIIAFBADYCGCABIAM2AgwgASAANgIIC0Gs0ABBrNAAKAIAQQFrIgBBfyAAGzYCAAsLBwAgAC0AKAsHACAALQAqCwcAIAAtACsLBwAgAC0AKQsHACAALwEyCwcAIAAtAC4LQAEEfyAAKAIYIQEgAC0ALSECIAAtACghAyAAKAI4IQQgABAwIAAgBDYCOCAAIAM6ACggACACOgAtIAAgATYCGAu74gECB38DfiABIAJqIQQCQCAAIgIoAgwiAA0AIAIoAgQEQCACIAE2AgQLIwBBEGsiCCQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAIoAhwiA0EBaw7dAdoBAdkBAgMEBQYHCAkKCwwNDtgBDxDXARES1gETFBUWFxgZGhvgAd8BHB0e1QEfICEiIyQl1AEmJygpKiss0wHSAS0u0QHQAS8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRtsBR0hJSs8BzgFLzQFMzAFNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AAYEBggGDAYQBhQGGAYcBiAGJAYoBiwGMAY0BjgGPAZABkQGSAZMBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwGwAbEBsgGzAbQBtQG2AbcBywHKAbgByQG5AcgBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgEA3AELQQAMxgELQQ4MxQELQQ0MxAELQQ8MwwELQRAMwgELQRMMwQELQRQMwAELQRUMvwELQRYMvgELQRgMvQELQRkMvAELQRoMuwELQRsMugELQRwMuQELQR0MuAELQQgMtwELQR4MtgELQSAMtQELQR8MtAELQQcMswELQSEMsgELQSIMsQELQSMMsAELQSQMrwELQRIMrgELQREMrQELQSUMrAELQSYMqwELQScMqgELQSgMqQELQcMBDKgBC0EqDKcBC0ErDKYBC0EsDKUBC0EtDKQBC0EuDKMBC0EvDKIBC0HEAQyhAQtBMAygAQtBNAyfAQtBDAyeAQtBMQydAQtBMgycAQtBMwybAQtBOQyaAQtBNQyZAQtBxQEMmAELQQsMlwELQToMlgELQTYMlQELQQoMlAELQTcMkwELQTgMkgELQTwMkQELQTsMkAELQT0MjwELQQkMjgELQSkMjQELQT4MjAELQT8MiwELQcAADIoBC0HBAAyJAQtBwgAMiAELQcMADIcBC0HEAAyGAQtBxQAMhQELQcYADIQBC0EXDIMBC0HHAAyCAQtByAAMgQELQckADIABC0HKAAx/C0HLAAx+C0HNAAx9C0HMAAx8C0HOAAx7C0HPAAx6C0HQAAx5C0HRAAx4C0HSAAx3C0HTAAx2C0HUAAx1C0HWAAx0C0HVAAxzC0EGDHILQdcADHELQQUMcAtB2AAMbwtBBAxuC0HZAAxtC0HaAAxsC0HbAAxrC0HcAAxqC0EDDGkLQd0ADGgLQd4ADGcLQd8ADGYLQeEADGULQeAADGQLQeIADGMLQeMADGILQQIMYQtB5AAMYAtB5QAMXwtB5gAMXgtB5wAMXQtB6AAMXAtB6QAMWwtB6gAMWgtB6wAMWQtB7AAMWAtB7QAMVwtB7gAMVgtB7wAMVQtB8AAMVAtB8QAMUwtB8gAMUgtB8wAMUQtB9AAMUAtB9QAMTwtB9gAMTgtB9wAMTQtB+AAMTAtB+QAMSwtB+gAMSgtB+wAMSQtB/AAMSAtB/QAMRwtB/gAMRgtB/wAMRQtBgAEMRAtBgQEMQwtBggEMQgtBgwEMQQtBhAEMQAtBhQEMPwtBhgEMPgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADDsYBAAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHyAhIyUmKCorLC8wMTIzNDU2Nzk6Ozw9lANAQkRFRklLTk9QUVJTVFVWWFpbXF1eX2BhYmNkZWZnaGpsb3Bxc3V2eHl6e3x/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEBkgGTAZQBlQGWAZcBmAGZAZoBmwGcAZ0BngGfAaABoQGiAaMBpAGlAaYBpwGoAakBqgGrAawBrQGuAa8BsAGxAbIBswG0AbUBtgG3AbgBuQG6AbsBvAG9Ab4BvwHAAcEBwgHDAcQBxQHGAccByAHJAcsBzAHNAc4BzwGKA4kDiAOHA4QDgwOAA/sC+gL5AvgC9wL0AvMC8gLLAsECsALZAQsgASAERw3wAkHdASEDDLMDCyABIARHDcgBQcMBIQMMsgMLIAEgBEcNe0H3ACEDDLEDCyABIARHDXBB7wAhAwywAwsgASAERw1pQeoAIQMMrwMLIAEgBEcNZUHoACEDDK4DCyABIARHDWJB5gAhAwytAwsgASAERw0aQRghAwysAwsgASAERw0VQRIhAwyrAwsgASAERw1CQcUAIQMMqgMLIAEgBEcNNEE/IQMMqQMLIAEgBEcNMkE8IQMMqAMLIAEgBEcNK0ExIQMMpwMLIAItAC5BAUYNnwMMwQILQQAhAAJAAkACQCACLQAqRQ0AIAItACtFDQAgAi8BMCIDQQJxRQ0BDAILIAIvATAiA0EBcUUNAQtBASEAIAItAChBAUYNACACLwEyIgVB5ABrQeQASQ0AIAVBzAFGDQAgBUGwAkYNACADQcAAcQ0AQQAhACADQYgEcUGABEYNACADQShxQQBHIQALIAJBADsBMCACQQA6AC8gAEUN3wIgAkIANwMgDOACC0EAIQACQCACKAI4IgNFDQAgAygCLCIDRQ0AIAIgAxEAACEACyAARQ3MASAAQRVHDd0CIAJBBDYCHCACIAE2AhQgAkGwGDYCECACQRU2AgxBACEDDKQDCyABIARGBEBBBiEDDKQDCyABQQFqIQFBACEAAkAgAigCOCIDRQ0AIAMoAlQiA0UNACACIAMRAAAhAAsgAA3ZAgwcCyACQgA3AyBBEiEDDIkDCyABIARHDRZBHSEDDKEDCyABIARHBEAgAUEBaiEBQRAhAwyIAwtBByEDDKADCyACIAIpAyAiCiAEIAFrrSILfSIMQgAgCiAMWhs3AyAgCiALWA3UAkEIIQMMnwMLIAEgBEcEQCACQQk2AgggAiABNgIEQRQhAwyGAwtBCSEDDJ4DCyACKQMgQgBSDccBIAIgAi8BMEGAAXI7ATAMQgsgASAERw0/QdAAIQMMnAMLIAEgBEYEQEELIQMMnAMLIAFBAWohAUEAIQACQCACKAI4IgNFDQAgAygCUCIDRQ0AIAIgAxEAACEACyAADc8CDMYBC0EAIQACQCACKAI4IgNFDQAgAygCSCIDRQ0AIAIgAxEAACEACyAARQ3GASAAQRVHDc0CIAJBCzYCHCACIAE2AhQgAkGCGTYCECACQRU2AgxBACEDDJoDC0EAIQACQCACKAI4IgNFDQAgAygCSCIDRQ0AIAIgAxEAACEACyAARQ0MIABBFUcNygIgAkEaNgIcIAIgATYCFCACQYIZNgIQIAJBFTYCDEEAIQMMmQMLQQAhAAJAIAIoAjgiA0UNACADKAJMIgNFDQAgAiADEQAAIQALIABFDcQBIABBFUcNxwIgAkELNgIcIAIgATYCFCACQZEXNgIQIAJBFTYCDEEAIQMMmAMLIAEgBEYEQEEPIQMMmAMLIAEtAAAiAEE7Rg0HIABBDUcNxAIgAUEBaiEBDMMBC0EAIQACQCACKAI4IgNFDQAgAygCTCIDRQ0AIAIgAxEAACEACyAARQ3DASAAQRVHDcICIAJBDzYCHCACIAE2AhQgAkGRFzYCECACQRU2AgxBACEDDJYDCwNAIAEtAABB8DVqLQAAIgBBAUcEQCAAQQJHDcECIAIoAgQhAEEAIQMgAkEANgIEIAIgACABQQFqIgEQLSIADcICDMUBCyAEIAFBAWoiAUcNAAtBEiEDDJUDC0EAIQACQCACKAI4IgNFDQAgAygCTCIDRQ0AIAIgAxEAACEACyAARQ3FASAAQRVHDb0CIAJBGzYCHCACIAE2AhQgAkGRFzYCECACQRU2AgxBACEDDJQDCyABIARGBEBBFiEDDJQDCyACQQo2AgggAiABNgIEQQAhAAJAIAIoAjgiA0UNACADKAJIIgNFDQAgAiADEQAAIQALIABFDcIBIABBFUcNuQIgAkEVNgIcIAIgATYCFCACQYIZNgIQIAJBFTYCDEEAIQMMkwMLIAEgBEcEQANAIAEtAABB8DdqLQAAIgBBAkcEQAJAIABBAWsOBMQCvQIAvgK9AgsgAUEBaiEBQQghAwz8AgsgBCABQQFqIgFHDQALQRUhAwyTAwtBFSEDDJIDCwNAIAEtAABB8DlqLQAAIgBBAkcEQCAAQQFrDgTFArcCwwK4ArcCCyAEIAFBAWoiAUcNAAtBGCEDDJEDCyABIARHBEAgAkELNgIIIAIgATYCBEEHIQMM+AILQRkhAwyQAwsgAUEBaiEBDAILIAEgBEYEQEEaIQMMjwMLAkAgAS0AAEENaw4UtQG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwEAvwELQQAhAyACQQA2AhwgAkGvCzYCECACQQI2AgwgAiABQQFqNgIUDI4DCyABIARGBEBBGyEDDI4DCyABLQAAIgBBO0cEQCAAQQ1HDbECIAFBAWohAQy6AQsgAUEBaiEBC0EiIQMM8wILIAEgBEYEQEEcIQMMjAMLQgAhCgJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAS0AAEEwaw43wQLAAgABAgMEBQYH0AHQAdAB0AHQAdAB0AEICQoLDA3QAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdABDg8QERIT0AELQgIhCgzAAgtCAyEKDL8CC0IEIQoMvgILQgUhCgy9AgtCBiEKDLwCC0IHIQoMuwILQgghCgy6AgtCCSEKDLkCC0IKIQoMuAILQgshCgy3AgtCDCEKDLYCC0INIQoMtQILQg4hCgy0AgtCDyEKDLMCC0IKIQoMsgILQgshCgyxAgtCDCEKDLACC0INIQoMrwILQg4hCgyuAgtCDyEKDK0CC0IAIQoCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEtAABBMGsON8ACvwIAAQIDBAUGB74CvgK+Ar4CvgK+Ar4CCAkKCwwNvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ag4PEBESE74CC0ICIQoMvwILQgMhCgy+AgtCBCEKDL0CC0IFIQoMvAILQgYhCgy7AgtCByEKDLoCC0IIIQoMuQILQgkhCgy4AgtCCiEKDLcCC0ILIQoMtgILQgwhCgy1AgtCDSEKDLQCC0IOIQoMswILQg8hCgyyAgtCCiEKDLECC0ILIQoMsAILQgwhCgyvAgtCDSEKDK4CC0IOIQoMrQILQg8hCgysAgsgAiACKQMgIgogBCABa60iC30iDEIAIAogDFobNwMgIAogC1gNpwJBHyEDDIkDCyABIARHBEAgAkEJNgIIIAIgATYCBEElIQMM8AILQSAhAwyIAwtBASEFIAIvATAiA0EIcUUEQCACKQMgQgBSIQULAkAgAi0ALgRAQQEhACACLQApQQVGDQEgA0HAAHFFIAVxRQ0BC0EAIQAgA0HAAHENAEECIQAgA0EIcQ0AIANBgARxBEACQCACLQAoQQFHDQAgAi0ALUEKcQ0AQQUhAAwCC0EEIQAMAQsgA0EgcUUEQAJAIAItAChBAUYNACACLwEyIgBB5ABrQeQASQ0AIABBzAFGDQAgAEGwAkYNAEEEIQAgA0EocUUNAiADQYgEcUGABEYNAgtBACEADAELQQBBAyACKQMgUBshAAsgAEEBaw4FvgIAsAEBpAKhAgtBESEDDO0CCyACQQE6AC8MhAMLIAEgBEcNnQJBJCEDDIQDCyABIARHDRxBxgAhAwyDAwtBACEAAkAgAigCOCIDRQ0AIAMoAkQiA0UNACACIAMRAAAhAAsgAEUNJyAAQRVHDZgCIAJB0AA2AhwgAiABNgIUIAJBkRg2AhAgAkEVNgIMQQAhAwyCAwsgASAERgRAQSghAwyCAwtBACEDIAJBADYCBCACQQw2AgggAiABIAEQKiIARQ2UAiACQSc2AhwgAiABNgIUIAIgADYCDAyBAwsgASAERgRAQSkhAwyBAwsgAS0AACIAQSBGDRMgAEEJRw2VAiABQQFqIQEMFAsgASAERwRAIAFBAWohAQwWC0EqIQMM/wILIAEgBEYEQEErIQMM/wILIAEtAAAiAEEJRyAAQSBHcQ2QAiACLQAsQQhHDd0CIAJBADoALAzdAgsgASAERgRAQSwhAwz+AgsgAS0AAEEKRw2OAiABQQFqIQEMsAELIAEgBEcNigJBLyEDDPwCCwNAIAEtAAAiAEEgRwRAIABBCmsOBIQCiAKIAoQChgILIAQgAUEBaiIBRw0AC0ExIQMM+wILQTIhAyABIARGDfoCIAIoAgAiACAEIAFraiEHIAEgAGtBA2ohBgJAA0AgAEHwO2otAAAgAS0AACIFQSByIAUgBUHBAGtB/wFxQRpJG0H/AXFHDQEgAEEDRgRAQQYhAQziAgsgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAc2AgAM+wILIAJBADYCAAyGAgtBMyEDIAQgASIARg35AiAEIAFrIAIoAgAiAWohByAAIAFrQQhqIQYCQANAIAFB9DtqLQAAIAAtAAAiBUEgciAFIAVBwQBrQf8BcUEaSRtB/wFxRw0BIAFBCEYEQEEFIQEM4QILIAFBAWohASAEIABBAWoiAEcNAAsgAiAHNgIADPoCCyACQQA2AgAgACEBDIUCC0E0IQMgBCABIgBGDfgCIAQgAWsgAigCACIBaiEHIAAgAWtBBWohBgJAA0AgAUHQwgBqLQAAIAAtAAAiBUEgciAFIAVBwQBrQf8BcUEaSRtB/wFxRw0BIAFBBUYEQEEHIQEM4AILIAFBAWohASAEIABBAWoiAEcNAAsgAiAHNgIADPkCCyACQQA2AgAgACEBDIQCCyABIARHBEADQCABLQAAQYA+ai0AACIAQQFHBEAgAEECRg0JDIECCyAEIAFBAWoiAUcNAAtBMCEDDPgCC0EwIQMM9wILIAEgBEcEQANAIAEtAAAiAEEgRwRAIABBCmsOBP8B/gH+Af8B/gELIAQgAUEBaiIBRw0AC0E4IQMM9wILQTghAwz2AgsDQCABLQAAIgBBIEcgAEEJR3EN9gEgBCABQQFqIgFHDQALQTwhAwz1AgsDQCABLQAAIgBBIEcEQAJAIABBCmsOBPkBBAT5AQALIABBLEYN9QEMAwsgBCABQQFqIgFHDQALQT8hAwz0AgtBwAAhAyABIARGDfMCIAIoAgAiACAEIAFraiEFIAEgAGtBBmohBgJAA0AgAEGAQGstAAAgAS0AAEEgckcNASAAQQZGDdsCIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADPQCCyACQQA2AgALQTYhAwzZAgsgASAERgRAQcEAIQMM8gILIAJBDDYCCCACIAE2AgQgAi0ALEEBaw4E+wHuAewB6wHUAgsgAUEBaiEBDPoBCyABIARHBEADQAJAIAEtAAAiAEEgciAAIABBwQBrQf8BcUEaSRtB/wFxIgBBCUYNACAAQSBGDQACQAJAAkACQCAAQeMAaw4TAAMDAwMDAwMBAwMDAwMDAwMDAgMLIAFBAWohAUExIQMM3AILIAFBAWohAUEyIQMM2wILIAFBAWohAUEzIQMM2gILDP4BCyAEIAFBAWoiAUcNAAtBNSEDDPACC0E1IQMM7wILIAEgBEcEQANAIAEtAABBgDxqLQAAQQFHDfcBIAQgAUEBaiIBRw0AC0E9IQMM7wILQT0hAwzuAgtBACEAAkAgAigCOCIDRQ0AIAMoAkAiA0UNACACIAMRAAAhAAsgAEUNASAAQRVHDeYBIAJBwgA2AhwgAiABNgIUIAJB4xg2AhAgAkEVNgIMQQAhAwztAgsgAUEBaiEBC0E8IQMM0gILIAEgBEYEQEHCACEDDOsCCwJAA0ACQCABLQAAQQlrDhgAAswCzALRAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAgDMAgsgBCABQQFqIgFHDQALQcIAIQMM6wILIAFBAWohASACLQAtQQFxRQ3+AQtBLCEDDNACCyABIARHDd4BQcQAIQMM6AILA0AgAS0AAEGQwABqLQAAQQFHDZwBIAQgAUEBaiIBRw0AC0HFACEDDOcCCyABLQAAIgBBIEYN/gEgAEE6Rw3AAiACKAIEIQBBACEDIAJBADYCBCACIAAgARApIgAN3gEM3QELQccAIQMgBCABIgBGDeUCIAQgAWsgAigCACIBaiEHIAAgAWtBBWohBgNAIAFBkMIAai0AACAALQAAIgVBIHIgBSAFQcEAa0H/AXFBGkkbQf8BcUcNvwIgAUEFRg3CAiABQQFqIQEgBCAAQQFqIgBHDQALIAIgBzYCAAzlAgtByAAhAyAEIAEiAEYN5AIgBCABayACKAIAIgFqIQcgACABa0EJaiEGA0AgAUGWwgBqLQAAIAAtAAAiBUEgciAFIAVBwQBrQf8BcUEaSRtB/wFxRw2+AkECIAFBCUYNwgIaIAFBAWohASAEIABBAWoiAEcNAAsgAiAHNgIADOQCCyABIARGBEBByQAhAwzkAgsCQAJAIAEtAAAiAEEgciAAIABBwQBrQf8BcUEaSRtB/wFxQe4Aaw4HAL8CvwK/Ar8CvwIBvwILIAFBAWohAUE+IQMMywILIAFBAWohAUE/IQMMygILQcoAIQMgBCABIgBGDeICIAQgAWsgAigCACIBaiEGIAAgAWtBAWohBwNAIAFBoMIAai0AACAALQAAIgVBIHIgBSAFQcEAa0H/AXFBGkkbQf8BcUcNvAIgAUEBRg2+AiABQQFqIQEgBCAAQQFqIgBHDQALIAIgBjYCAAziAgtBywAhAyAEIAEiAEYN4QIgBCABayACKAIAIgFqIQcgACABa0EOaiEGA0AgAUGiwgBqLQAAIAAtAAAiBUEgciAFIAVBwQBrQf8BcUEaSRtB/wFxRw27AiABQQ5GDb4CIAFBAWohASAEIABBAWoiAEcNAAsgAiAHNgIADOECC0HMACEDIAQgASIARg3gAiAEIAFrIAIoAgAiAWohByAAIAFrQQ9qIQYDQCABQcDCAGotAAAgAC0AACIFQSByIAUgBUHBAGtB/wFxQRpJG0H/AXFHDboCQQMgAUEPRg2+AhogAUEBaiEBIAQgAEEBaiIARw0ACyACIAc2AgAM4AILQc0AIQMgBCABIgBGDd8CIAQgAWsgAigCACIBaiEHIAAgAWtBBWohBgNAIAFB0MIAai0AACAALQAAIgVBIHIgBSAFQcEAa0H/AXFBGkkbQf8BcUcNuQJBBCABQQVGDb0CGiABQQFqIQEgBCAAQQFqIgBHDQALIAIgBzYCAAzfAgsgASAERgRAQc4AIQMM3wILAkACQAJAAkAgAS0AACIAQSByIAAgAEHBAGtB/wFxQRpJG0H/AXFB4wBrDhMAvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCAbwCvAK8AgIDvAILIAFBAWohAUHBACEDDMgCCyABQQFqIQFBwgAhAwzHAgsgAUEBaiEBQcMAIQMMxgILIAFBAWohAUHEACEDDMUCCyABIARHBEAgAkENNgIIIAIgATYCBEHFACEDDMUCC0HPACEDDN0CCwJAAkAgAS0AAEEKaw4EAZABkAEAkAELIAFBAWohAQtBKCEDDMMCCyABIARGBEBB0QAhAwzcAgsgAS0AAEEgRw0AIAFBAWohASACLQAtQQFxRQ3QAQtBFyEDDMECCyABIARHDcsBQdIAIQMM2QILQdMAIQMgASAERg3YAiACKAIAIgAgBCABa2ohBiABIABrQQFqIQUDQCABLQAAIABB1sIAai0AAEcNxwEgAEEBRg3KASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBjYCAAzYAgsgASAERgRAQdUAIQMM2AILIAEtAABBCkcNwgEgAUEBaiEBDMoBCyABIARGBEBB1gAhAwzXAgsCQAJAIAEtAABBCmsOBADDAcMBAcMBCyABQQFqIQEMygELIAFBAWohAUHKACEDDL0CC0EAIQACQCACKAI4IgNFDQAgAygCPCIDRQ0AIAIgAxEAACEACyAADb8BQc0AIQMMvAILIAItAClBIkYNzwIMiQELIAQgASIFRgRAQdsAIQMM1AILQQAhAEEBIQFBASEGQQAhAwJAAn8CQAJAAkACQAJAAkACQCAFLQAAQTBrDgrFAcQBAAECAwQFBgjDAQtBAgwGC0EDDAULQQQMBAtBBQwDC0EGDAILQQcMAQtBCAshA0EAIQFBACEGDL0BC0EJIQNBASEAQQAhAUEAIQYMvAELIAEgBEYEQEHdACEDDNMCCyABLQAAQS5HDbgBIAFBAWohAQyIAQsgASAERw22AUHfACEDDNECCyABIARHBEAgAkEONgIIIAIgATYCBEHQACEDDLgCC0HgACEDDNACC0HhACEDIAEgBEYNzwIgAigCACIAIAQgAWtqIQUgASAAa0EDaiEGA0AgAS0AACAAQeLCAGotAABHDbEBIABBA0YNswEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMzwILQeIAIQMgASAERg3OAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYDQCABLQAAIABB5sIAai0AAEcNsAEgAEECRg2vASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAzOAgtB4wAhAyABIARGDc0CIAIoAgAiACAEIAFraiEFIAEgAGtBA2ohBgNAIAEtAAAgAEHpwgBqLQAARw2vASAAQQNGDa0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADM0CCyABIARGBEBB5QAhAwzNAgsgAUEBaiEBQQAhAAJAIAIoAjgiA0UNACADKAIwIgNFDQAgAiADEQAAIQALIAANqgFB1gAhAwyzAgsgASAERwRAA0AgAS0AACIAQSBHBEACQAJAAkAgAEHIAGsOCwABswGzAbMBswGzAbMBswGzAQKzAQsgAUEBaiEBQdIAIQMMtwILIAFBAWohAUHTACEDDLYCCyABQQFqIQFB1AAhAwy1AgsgBCABQQFqIgFHDQALQeQAIQMMzAILQeQAIQMMywILA0AgAS0AAEHwwgBqLQAAIgBBAUcEQCAAQQJrDgOnAaYBpQGkAQsgBCABQQFqIgFHDQALQeYAIQMMygILIAFBAWogASAERw0CGkHnACEDDMkCCwNAIAEtAABB8MQAai0AACIAQQFHBEACQCAAQQJrDgSiAaEBoAEAnwELQdcAIQMMsQILIAQgAUEBaiIBRw0AC0HoACEDDMgCCyABIARGBEBB6QAhAwzIAgsCQCABLQAAIgBBCmsOGrcBmwGbAbQBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBpAGbAZsBAJkBCyABQQFqCyEBQQYhAwytAgsDQCABLQAAQfDGAGotAABBAUcNfSAEIAFBAWoiAUcNAAtB6gAhAwzFAgsgAUEBaiABIARHDQIaQesAIQMMxAILIAEgBEYEQEHsACEDDMQCCyABQQFqDAELIAEgBEYEQEHtACEDDMMCCyABQQFqCyEBQQQhAwyoAgsgASAERgRAQe4AIQMMwQILAkACQAJAIAEtAABB8MgAai0AAEEBaw4HkAGPAY4BAHwBAo0BCyABQQFqIQEMCwsgAUEBagyTAQtBACEDIAJBADYCHCACQZsSNgIQIAJBBzYCDCACIAFBAWo2AhQMwAILAkADQCABLQAAQfDIAGotAAAiAEEERwRAAkACQCAAQQFrDgeUAZMBkgGNAQAEAY0BC0HaACEDDKoCCyABQQFqIQFB3AAhAwypAgsgBCABQQFqIgFHDQALQe8AIQMMwAILIAFBAWoMkQELIAQgASIARgRAQfAAIQMMvwILIAAtAABBL0cNASAAQQFqIQEMBwsgBCABIgBGBEBB8QAhAwy+AgsgAC0AACIBQS9GBEAgAEEBaiEBQd0AIQMMpQILIAFBCmsiA0EWSw0AIAAhAUEBIAN0QYmAgAJxDfkBC0EAIQMgAkEANgIcIAIgADYCFCACQYwcNgIQIAJBBzYCDAy8AgsgASAERwRAIAFBAWohAUHeACEDDKMCC0HyACEDDLsCCyABIARGBEBB9AAhAwy7AgsCQCABLQAAQfDMAGotAABBAWsOA/cBcwCCAQtB4QAhAwyhAgsgASAERwRAA0AgAS0AAEHwygBqLQAAIgBBA0cEQAJAIABBAWsOAvkBAIUBC0HfACEDDKMCCyAEIAFBAWoiAUcNAAtB8wAhAwy6AgtB8wAhAwy5AgsgASAERwRAIAJBDzYCCCACIAE2AgRB4AAhAwygAgtB9QAhAwy4AgsgASAERgRAQfYAIQMMuAILIAJBDzYCCCACIAE2AgQLQQMhAwydAgsDQCABLQAAQSBHDY4CIAQgAUEBaiIBRw0AC0H3ACEDDLUCCyABIARGBEBB+AAhAwy1AgsgAS0AAEEgRw16IAFBAWohAQxbC0EAIQACQCACKAI4IgNFDQAgAygCOCIDRQ0AIAIgAxEAACEACyAADXgMgAILIAEgBEYEQEH6ACEDDLMCCyABLQAAQcwARw10IAFBAWohAUETDHYLQfsAIQMgASAERg2xAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYDQCABLQAAIABB8M4Aai0AAEcNcyAAQQVGDXUgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMsQILIAEgBEYEQEH8ACEDDLECCwJAAkAgAS0AAEHDAGsODAB0dHR0dHR0dHR0AXQLIAFBAWohAUHmACEDDJgCCyABQQFqIQFB5wAhAwyXAgtB/QAhAyABIARGDa8CIAIoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQe3PAGotAABHDXIgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADLACCyACQQA2AgAgBkEBaiEBQRAMcwtB/gAhAyABIARGDa4CIAIoAgAiACAEIAFraiEFIAEgAGtBBWohBgJAA0AgAS0AACAAQfbOAGotAABHDXEgAEEFRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADK8CCyACQQA2AgAgBkEBaiEBQRYMcgtB/wAhAyABIARGDa0CIAIoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQfzOAGotAABHDXAgAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADK4CCyACQQA2AgAgBkEBaiEBQQUMcQsgASAERgRAQYABIQMMrQILIAEtAABB2QBHDW4gAUEBaiEBQQgMcAsgASAERgRAQYEBIQMMrAILAkACQCABLQAAQc4Aaw4DAG8BbwsgAUEBaiEBQesAIQMMkwILIAFBAWohAUHsACEDDJICCyABIARGBEBBggEhAwyrAgsCQAJAIAEtAABByABrDggAbm5ubm5uAW4LIAFBAWohAUHqACEDDJICCyABQQFqIQFB7QAhAwyRAgtBgwEhAyABIARGDakCIAIoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQYDPAGotAABHDWwgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADKoCCyACQQA2AgAgBkEBaiEBQQAMbQtBhAEhAyABIARGDagCIAIoAgAiACAEIAFraiEFIAEgAGtBBGohBgJAA0AgAS0AACAAQYPPAGotAABHDWsgAEEERg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADKkCCyACQQA2AgAgBkEBaiEBQSMMbAsgASAERgRAQYUBIQMMqAILAkACQCABLQAAQcwAaw4IAGtra2trawFrCyABQQFqIQFB7wAhAwyPAgsgAUEBaiEBQfAAIQMMjgILIAEgBEYEQEGGASEDDKcCCyABLQAAQcUARw1oIAFBAWohAQxgC0GHASEDIAEgBEYNpQIgAigCACIAIAQgAWtqIQUgASAAa0EDaiEGAkADQCABLQAAIABBiM8Aai0AAEcNaCAAQQNGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMpgILIAJBADYCACAGQQFqIQFBLQxpC0GIASEDIAEgBEYNpAIgAigCACIAIAQgAWtqIQUgASAAa0EIaiEGAkADQCABLQAAIABB0M8Aai0AAEcNZyAAQQhGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMpQILIAJBADYCACAGQQFqIQFBKQxoCyABIARGBEBBiQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEVDF8LQZIBIQMgASAERg2aAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGhzwBqLQAARw1dIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAybAgsgAkEANgIAIAZBAWohAUEeDF4LIAEgBEYEQEGTASEDDJoCCyABLQAAQcwARw1bIAFBAWohAUEKDF0LIAEgBEYEQEGUASEDDJkCCwJAAkAgAS0AAEHBAGsODwBcXFxcXFxcXFxcXFxcAVwLIAFBAWohAUH+ACEDDIACCyABQQFqIQFB/wAhAwz/AQsgASAERgRAQZUBIQMMmAILAkACQCABLQAAQcEAaw4DAFsBWwsgAUEBaiEBQf0AIQMM/wELIAFBAWohAUGAASEDDP4BC0GWASEDIAEgBEYNlgIgAigCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBp88Aai0AAEcNWSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMlwILIAJBADYCACAGQQFqIQFBCwxaCyABIARGBEBBlwEhAwyWAgsCQAJAAkACQCABLQAAQS1rDiMAW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1sBW1tbW1sCW1tbA1sLIAFBAWohAUH7ACEDDP8BCyABQQFqIQFB/AAhAwz+AQsgAUEBaiEBQYEBIQMM/QELIAFBAWohAUGCASEDDPwBC0GYASEDIAEgBEYNlAIgAigCACIAIAQgAWtqIQUgASAAa0EEaiEGAkADQCABLQAAIABBqc8Aai0AAEcNVyAAQQRGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMlQILIAJBADYCACAGQQFqIQFBGQxYC0GZASEDIAEgBEYNkwIgAigCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABBrs8Aai0AAEcNViAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMlAILIAJBADYCACAGQQFqIQFBBgxXC0GaASEDIAEgBEYNkgIgAigCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBtM8Aai0AAEcNVSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMkwILIAJBADYCACAGQQFqIQFBHAxWC0GbASEDIAEgBEYNkQIgAigCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBts8Aai0AAEcNVCAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMkgILIAJBADYCACAGQQFqIQFBJwxVCyABIARGBEBBnAEhAwyRAgsCQAJAIAEtAABB1ABrDgIAAVQLIAFBAWohAUGGASEDDPgBCyABQQFqIQFBhwEhAwz3AQtBnQEhAyABIARGDY8CIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQbjPAGotAABHDVIgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADJACCyACQQA2AgAgBkEBaiEBQSYMUwtBngEhAyABIARGDY4CIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQbrPAGotAABHDVEgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADI8CCyACQQA2AgAgBkEBaiEBQQMMUgtBnwEhAyABIARGDY0CIAIoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQe3PAGotAABHDVAgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADI4CCyACQQA2AgAgBkEBaiEBQQwMUQtBoAEhAyABIARGDYwCIAIoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQbzPAGotAABHDU8gAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADI0CCyACQQA2AgAgBkEBaiEBQQ0MUAsgASAERgRAQaEBIQMMjAILAkACQCABLQAAQcYAaw4LAE9PT09PT09PTwFPCyABQQFqIQFBiwEhAwzzAQsgAUEBaiEBQYwBIQMM8gELIAEgBEYEQEGiASEDDIsCCyABLQAAQdAARw1MIAFBAWohAQxGCyABIARGBEBBowEhAwyKAgsCQAJAIAEtAABByQBrDgcBTU1NTU0ATQsgAUEBaiEBQY4BIQMM8QELIAFBAWohAUEiDE0LQaQBIQMgASAERg2IAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHAzwBqLQAARw1LIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyJAgsgAkEANgIAIAZBAWohAUEdDEwLIAEgBEYEQEGlASEDDIgCCwJAAkAgAS0AAEHSAGsOAwBLAUsLIAFBAWohAUGQASEDDO8BCyABQQFqIQFBBAxLCyABIARGBEBBpgEhAwyHAgsCQAJAAkACQAJAIAEtAABBwQBrDhUATU1NTU1NTU1NTQFNTQJNTQNNTQRNCyABQQFqIQFBiAEhAwzxAQsgAUEBaiEBQYkBIQMM8AELIAFBAWohAUGKASEDDO8BCyABQQFqIQFBjwEhAwzuAQsgAUEBaiEBQZEBIQMM7QELQacBIQMgASAERg2FAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHtzwBqLQAARw1IIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyGAgsgAkEANgIAIAZBAWohAUERDEkLQagBIQMgASAERg2EAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHCzwBqLQAARw1HIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyFAgsgAkEANgIAIAZBAWohAUEsDEgLQakBIQMgASAERg2DAiACKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANAIAEtAAAgAEHFzwBqLQAARw1GIABBBEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyEAgsgAkEANgIAIAZBAWohAUErDEcLQaoBIQMgASAERg2CAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHKzwBqLQAARw1FIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyDAgsgAkEANgIAIAZBAWohAUEUDEYLIAEgBEYEQEGrASEDDIICCwJAAkACQAJAIAEtAABBwgBrDg8AAQJHR0dHR0dHR0dHRwNHCyABQQFqIQFBkwEhAwzrAQsgAUEBaiEBQZQBIQMM6gELIAFBAWohAUGVASEDDOkBCyABQQFqIQFBlgEhAwzoAQsgASAERgRAQawBIQMMgQILIAEtAABBxQBHDUIgAUEBaiEBDD0LQa0BIQMgASAERg3/ASACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHNzwBqLQAARw1CIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyAAgsgAkEANgIAIAZBAWohAUEODEMLIAEgBEYEQEGuASEDDP8BCyABLQAAQdAARw1AIAFBAWohAUElDEILQa8BIQMgASAERg39ASACKAIAIgAgBCABa2ohBSABIABrQQhqIQYCQANAIAEtAAAgAEHQzwBqLQAARw1AIABBCEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAz+AQsgAkEANgIAIAZBAWohAUEqDEELIAEgBEYEQEGwASEDDP0BCwJAAkAgAS0AAEHVAGsOCwBAQEBAQEBAQEABQAsgAUEBaiEBQZoBIQMM5AELIAFBAWohAUGbASEDDOMBCyABIARGBEBBsQEhAwz8AQsCQAJAIAEtAABBwQBrDhQAPz8/Pz8/Pz8/Pz8/Pz8/Pz8/AT8LIAFBAWohAUGZASEDDOMBCyABQQFqIQFBnAEhAwziAQtBsgEhAyABIARGDfoBIAIoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQdnPAGotAABHDT0gAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADPsBCyACQQA2AgAgBkEBaiEBQSEMPgtBswEhAyABIARGDfkBIAIoAgAiACAEIAFraiEFIAEgAGtBBmohBgJAA0AgAS0AACAAQd3PAGotAABHDTwgAEEGRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADPoBCyACQQA2AgAgBkEBaiEBQRoMPQsgASAERgRAQbQBIQMM+QELAkACQAJAIAEtAABBxQBrDhEAPT09PT09PT09AT09PT09Aj0LIAFBAWohAUGdASEDDOEBCyABQQFqIQFBngEhAwzgAQsgAUEBaiEBQZ8BIQMM3wELQbUBIQMgASAERg33ASACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEHkzwBqLQAARw06IABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAz4AQsgAkEANgIAIAZBAWohAUEoDDsLQbYBIQMgASAERg32ASACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHqzwBqLQAARw05IABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAz3AQsgAkEANgIAIAZBAWohAUEHDDoLIAEgBEYEQEG3ASEDDPYBCwJAAkAgAS0AAEHFAGsODgA5OTk5OTk5OTk5OTkBOQsgAUEBaiEBQaEBIQMM3QELIAFBAWohAUGiASEDDNwBC0G4ASEDIAEgBEYN9AEgAigCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABB7c8Aai0AAEcNNyAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAM9QELIAJBADYCACAGQQFqIQFBEgw4C0G5ASEDIAEgBEYN8wEgAigCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABB8M8Aai0AAEcNNiAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAM9AELIAJBADYCACAGQQFqIQFBIAw3C0G6ASEDIAEgBEYN8gEgAigCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABB8s8Aai0AAEcNNSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAM8wELIAJBADYCACAGQQFqIQFBDww2CyABIARGBEBBuwEhAwzyAQsCQAJAIAEtAABByQBrDgcANTU1NTUBNQsgAUEBaiEBQaUBIQMM2QELIAFBAWohAUGmASEDDNgBC0G8ASEDIAEgBEYN8AEgAigCACIAIAQgAWtqIQUgASAAa0EHaiEGAkADQCABLQAAIABB9M8Aai0AAEcNMyAAQQdGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAM8QELIAJBADYCACAGQQFqIQFBGww0CyABIARGBEBBvQEhAwzwAQsCQAJAAkAgAS0AAEHCAGsOEgA0NDQ0NDQ0NDQBNDQ0NDQ0AjQLIAFBAWohAUGkASEDDNgBCyABQQFqIQFBpwEhAwzXAQsgAUEBaiEBQagBIQMM1gELIAEgBEYEQEG+ASEDDO8BCyABLQAAQc4ARw0wIAFBAWohAQwsCyABIARGBEBBvwEhAwzuAQsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABLQAAQcEAaw4VAAECAz8EBQY/Pz8HCAkKCz8MDQ4PPwsgAUEBaiEBQegAIQMM4wELIAFBAWohAUHpACEDDOIBCyABQQFqIQFB7gAhAwzhAQsgAUEBaiEBQfIAIQMM4AELIAFBAWohAUHzACEDDN8BCyABQQFqIQFB9gAhAwzeAQsgAUEBaiEBQfcAIQMM3QELIAFBAWohAUH6ACEDDNwBCyABQQFqIQFBgwEhAwzbAQsgAUEBaiEBQYQBIQMM2gELIAFBAWohAUGFASEDDNkBCyABQQFqIQFBkgEhAwzYAQsgAUEBaiEBQZgBIQMM1wELIAFBAWohAUGgASEDDNYBCyABQQFqIQFBowEhAwzVAQsgAUEBaiEBQaoBIQMM1AELIAEgBEcEQCACQRA2AgggAiABNgIEQasBIQMM1AELQcABIQMM7AELQQAhAAJAIAIoAjgiA0UNACADKAI0IgNFDQAgAiADEQAAIQALIABFDV4gAEEVRw0HIAJB0QA2AhwgAiABNgIUIAJBsBc2AhAgAkEVNgIMQQAhAwzrAQsgAUEBaiABIARHDQgaQcIBIQMM6gELA0ACQCABLQAAQQprDgQIAAALAAsgBCABQQFqIgFHDQALQcMBIQMM6QELIAEgBEcEQCACQRE2AgggAiABNgIEQQEhAwzQAQtBxAEhAwzoAQsgASAERgRAQcUBIQMM6AELAkACQCABLQAAQQprDgQBKCgAKAsgAUEBagwJCyABQQFqDAULIAEgBEYEQEHGASEDDOcBCwJAAkAgAS0AAEEKaw4XAQsLAQsLCwsLCwsLCwsLCwsLCwsLCwALCyABQQFqIQELQbABIQMMzQELIAEgBEYEQEHIASEDDOYBCyABLQAAQSBHDQkgAkEAOwEyIAFBAWohAUGzASEDDMwBCwNAIAEhAAJAIAEgBEcEQCABLQAAQTBrQf8BcSIDQQpJDQEMJwtBxwEhAwzmAQsCQCACLwEyIgFBmTNLDQAgAiABQQpsIgU7ATIgBUH+/wNxIANB//8Dc0sNACAAQQFqIQEgAiADIAVqIgM7ATIgA0H//wNxQegHSQ0BCwtBACEDIAJBADYCHCACQcEJNgIQIAJBDTYCDCACIABBAWo2AhQM5AELIAJBADYCHCACIAE2AhQgAkHwDDYCECACQRs2AgxBACEDDOMBCyACKAIEIQAgAkEANgIEIAIgACABECYiAA0BIAFBAWoLIQFBrQEhAwzIAQsgAkHBATYCHCACIAA2AgwgAiABQQFqNgIUQQAhAwzgAQsgAigCBCEAIAJBADYCBCACIAAgARAmIgANASABQQFqCyEBQa4BIQMMxQELIAJBwgE2AhwgAiAANgIMIAIgAUEBajYCFEEAIQMM3QELIAJBADYCHCACIAE2AhQgAkGXCzYCECACQQ02AgxBACEDDNwBCyACQQA2AhwgAiABNgIUIAJB4xA2AhAgAkEJNgIMQQAhAwzbAQsgAkECOgAoDKwBC0EAIQMgAkEANgIcIAJBrws2AhAgAkECNgIMIAIgAUEBajYCFAzZAQtBAiEDDL8BC0ENIQMMvgELQSYhAwy9AQtBFSEDDLwBC0EWIQMMuwELQRghAwy6AQtBHCEDDLkBC0EdIQMMuAELQSAhAwy3AQtBISEDDLYBC0EjIQMMtQELQcYAIQMMtAELQS4hAwyzAQtBPSEDDLIBC0HLACEDDLEBC0HOACEDDLABC0HYACEDDK8BC0HZACEDDK4BC0HbACEDDK0BC0HxACEDDKwBC0H0ACEDDKsBC0GNASEDDKoBC0GXASEDDKkBC0GpASEDDKgBC0GvASEDDKcBC0GxASEDDKYBCyACQQA2AgALQQAhAyACQQA2AhwgAiABNgIUIAJB8Rs2AhAgAkEGNgIMDL0BCyACQQA2AgAgBkEBaiEBQSQLOgApIAIoAgQhACACQQA2AgQgAiAAIAEQJyIARQRAQeUAIQMMowELIAJB+QA2AhwgAiABNgIUIAIgADYCDEEAIQMMuwELIABBFUcEQCACQQA2AhwgAiABNgIUIAJBzA42AhAgAkEgNgIMQQAhAwy7AQsgAkH4ADYCHCACIAE2AhQgAkHKGDYCECACQRU2AgxBACEDDLoBCyACQQA2AhwgAiABNgIUIAJBjhs2AhAgAkEGNgIMQQAhAwy5AQsgAkEANgIcIAIgATYCFCACQf4RNgIQIAJBBzYCDEEAIQMMuAELIAJBADYCHCACIAE2AhQgAkGMHDYCECACQQc2AgxBACEDDLcBCyACQQA2AhwgAiABNgIUIAJBww82AhAgAkEHNgIMQQAhAwy2AQsgAkEANgIcIAIgATYCFCACQcMPNgIQIAJBBzYCDEEAIQMMtQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxBACEDDKIBCyACQeQANgIcIAIgATYCFCACQeMXNgIQIAJBFTYCDEEAIQMMoQELIAJBADYCACAGQQFqIQEgAi0AKSIAQSNrQQtJDQQCQCAAQQZLDQBBASAAdEHKAHFFDQAMBQtBACEDIAJBADYCHCACIAE2AhQgAkH3CTYCECACQQg2AgwMoAELIAJBADYCACAGQQFqIQEgAi0AKUEhRg0DIAJBADYCHCACIAE2AhQgAkGbCjYCECACQQg2AgxBACEDDJ8BCyACQQA2AgALQQAhAyACQQA2AhwgAiABNgIUIAJBkDM2AhAgAkEINgIMDJ0BCyACQQA2AgAgBkEBaiEBIAItAClBI0kNACACQQA2AhwgAiABNgIUIAJB0wk2AhAgAkEINgIMQQAhAwycAQtB0QAhAwyCAQsgAS0AAEEwayIAQf8BcUEKSQRAIAIgADoAKiABQQFqIQFBzwAhAwyCAQsgAigCBCEAIAJBADYCBCACIAAgARAoIgBFDYYBIAJB3gA2AhwgAiABNgIUIAIgADYCDEEAIQMMmgELIAIoAgQhACACQQA2AgQgAiAAIAEQKCIARQ2GASACQdwANgIcIAIgATYCFCACIAA2AgxBACEDDJkBCyACKAIEIQAgAkEANgIEIAIgACAFECgiAEUEQCAFIQEMhwELIAJB2gA2AhwgAiAFNgIUIAIgADYCDAyYAQtBACEBQQEhAwsgAiADOgArIAVBAWohAwJAAkACQCACLQAtQRBxDQACQAJAAkAgAi0AKg4DAQACBAsgBkUNAwwCCyAADQEMAgsgAUUNAQsgAigCBCEAIAJBADYCBCACIAAgAxAoIgBFBEAgAyEBDAILIAJB2AA2AhwgAiADNgIUIAIgADYCDEEAIQMMmAELIAIoAgQhACACQQA2AgQgAiAAIAMQKCIARQRAIAMhAQyHAQsgAkHZADYCHCACIAM2AhQgAiAANgIMQQAhAwyXAQtBzAAhAwx9CyAAQRVHBEAgAkEANgIcIAIgATYCFCACQZQNNgIQIAJBITYCDEEAIQMMlgELIAJB1wA2AhwgAiABNgIUIAJByRc2AhAgAkEVNgIMQQAhAwyVAQtBACEDIAJBADYCHCACIAE2AhQgAkGAETYCECACQQk2AgwMlAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0AIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMkwELQckAIQMMeQsgAkEANgIcIAIgATYCFCACQcEoNgIQIAJBBzYCDCACQQA2AgBBACEDDJEBCyACKAIEIQBBACEDIAJBADYCBCACIAAgARAlIgBFDQAgAkHSADYCHCACIAE2AhQgAiAANgIMDJABC0HIACEDDHYLIAJBADYCACAFIQELIAJBgBI7ASogAUEBaiEBQQAhAAJAIAIoAjgiA0UNACADKAIwIgNFDQAgAiADEQAAIQALIAANAQtBxwAhAwxzCyAAQRVGBEAgAkHRADYCHCACIAE2AhQgAkHjFzYCECACQRU2AgxBACEDDIwBC0EAIQMgAkEANgIcIAIgATYCFCACQbkNNgIQIAJBGjYCDAyLAQtBACEDIAJBADYCHCACIAE2AhQgAkGgGTYCECACQR42AgwMigELIAEtAABBOkYEQCACKAIEIQBBACEDIAJBADYCBCACIAAgARApIgBFDQEgAkHDADYCHCACIAA2AgwgAiABQQFqNgIUDIoBC0EAIQMgAkEANgIcIAIgATYCFCACQbERNgIQIAJBCjYCDAyJAQsgAUEBaiEBQTshAwxvCyACQcMANgIcIAIgADYCDCACIAFBAWo2AhQMhwELQQAhAyACQQA2AhwgAiABNgIUIAJB8A42AhAgAkEcNgIMDIYBCyACIAIvATBBEHI7ATAMZgsCQCACLwEwIgBBCHFFDQAgAi0AKEEBRw0AIAItAC1BCHFFDQMLIAIgAEH3+wNxQYAEcjsBMAwECyABIARHBEACQANAIAEtAABBMGsiAEH/AXFBCk8EQEE1IQMMbgsgAikDICIKQpmz5syZs+bMGVYNASACIApCCn4iCjcDICAKIACtQv8BgyILQn+FVg0BIAIgCiALfDcDICAEIAFBAWoiAUcNAAtBOSEDDIUBCyACKAIEIQBBACEDIAJBADYCBCACIAAgAUEBaiIBECoiAA0MDHcLQTkhAwyDAQsgAi0AMEEgcQ0GQcUBIQMMaQtBACEDIAJBADYCBCACIAEgARAqIgBFDQQgAkE6NgIcIAIgADYCDCACIAFBAWo2AhQMgQELIAItAChBAUcNACACLQAtQQhxRQ0BC0E3IQMMZgsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQKiIABEAgAkE7NgIcIAIgADYCDCACIAFBAWo2AhQMfwsgAUEBaiEBDG4LIAJBCDoALAwECyABQQFqIQEMbQtBACEDIAJBADYCHCACIAE2AhQgAkHkEjYCECACQQQ2AgwMewsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQKiIARQ1sIAJBNzYCHCACIAE2AhQgAiAANgIMDHoLIAIgAi8BMEEgcjsBMAtBMCEDDF8LIAJBNjYCHCACIAE2AhQgAiAANgIMDHcLIABBLEcNASABQQFqIQBBASEBAkACQAJAAkACQCACLQAsQQVrDgQDAQIEAAsgACEBDAQLQQIhAQwBC0EEIQELIAJBAToALCACIAIvATAgAXI7ATAgACEBDAELIAIgAi8BMEEIcjsBMCAAIQELQTkhAwxcCyACQQA6ACwLQTQhAwxaCyABIARGBEBBLSEDDHMLAkACQANAAkAgAS0AAEEKaw4EAgAAAwALIAQgAUEBaiIBRw0AC0EtIQMMdAsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQKiIARQ0CIAJBLDYCHCACIAE2AhQgAiAANgIMDHMLIAIoAgQhAEEAIQMgAkEANgIEIAIgACABECoiAEUEQCABQQFqIQEMAgsgAkEsNgIcIAIgADYCDCACIAFBAWo2AhQMcgsgAS0AAEENRgRAIAIoAgQhAEEAIQMgAkEANgIEIAIgACABECoiAEUEQCABQQFqIQEMAgsgAkEsNgIcIAIgADYCDCACIAFBAWo2AhQMcgsgAi0ALUEBcQRAQcQBIQMMWQsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQKiIADQEMZQtBLyEDDFcLIAJBLjYCHCACIAE2AhQgAiAANgIMDG8LQQAhAyACQQA2AhwgAiABNgIUIAJB8BQ2AhAgAkEDNgIMDG4LQQEhAwJAAkACQAJAIAItACxBBWsOBAMBAgAECyACIAIvATBBCHI7ATAMAwtBAiEDDAELQQQhAwsgAkEBOgAsIAIgAi8BMCADcjsBMAtBKiEDDFMLQQAhAyACQQA2AhwgAiABNgIUIAJB4Q82AhAgAkEKNgIMDGsLQQEhAwJAAkACQAJAAkACQCACLQAsQQJrDgcFBAQDAQIABAsgAiACLwEwQQhyOwEwDAMLQQIhAwwBC0EEIQMLIAJBAToALCACIAIvATAgA3I7ATALQSshAwxSC0EAIQMgAkEANgIcIAIgATYCFCACQasSNgIQIAJBCzYCDAxqC0EAIQMgAkEANgIcIAIgATYCFCACQf0NNgIQIAJBHTYCDAxpCyABIARHBEADQCABLQAAQSBHDUggBCABQQFqIgFHDQALQSUhAwxpC0ElIQMMaAsgAi0ALUEBcQRAQcMBIQMMTwsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQKSIABEAgAkEmNgIcIAIgADYCDCACIAFBAWo2AhQMaAsgAUEBaiEBDFwLIAFBAWohASACLwEwIgBBgAFxBEBBACEAAkAgAigCOCIDRQ0AIAMoAlQiA0UNACACIAMRAAAhAAsgAEUNBiAAQRVHDR8gAkEFNgIcIAIgATYCFCACQfkXNgIQIAJBFTYCDEEAIQMMZwsCQCAAQaAEcUGgBEcNACACLQAtQQJxDQBBACEDIAJBADYCHCACIAE2AhQgAkGWEzYCECACQQQ2AgwMZwsgAgJ/IAIvATBBFHFBFEYEQEEBIAItAChBAUYNARogAi8BMkHlAEYMAQsgAi0AKUEFRgs6AC5BACEAAkAgAigCOCIDRQ0AIAMoAiQiA0UNACACIAMRAAAhAAsCQAJAAkACQAJAIAAOFgIBAAQEBAQEBAQEBAQEBAQEBAQEBAMECyACQQE6AC4LIAIgAi8BMEHAAHI7ATALQSchAwxPCyACQSM2AhwgAiABNgIUIAJBpRY2AhAgAkEVNgIMQQAhAwxnC0EAIQMgAkEANgIcIAIgATYCFCACQdULNgIQIAJBETYCDAxmC0EAIQACQCACKAI4IgNFDQAgAygCLCIDRQ0AIAIgAxEAACEACyAADQELQQ4hAwxLCyAAQRVGBEAgAkECNgIcIAIgATYCFCACQbAYNgIQIAJBFTYCDEEAIQMMZAtBACEDIAJBADYCHCACIAE2AhQgAkGnDjYCECACQRI2AgwMYwtBACEDIAJBADYCHCACIAE2AhQgAkGqHDYCECACQQ82AgwMYgsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEgCqdqIgEQKyIARQ0AIAJBBTYCHCACIAE2AhQgAiAANgIMDGELQQ8hAwxHC0EAIQMgAkEANgIcIAIgATYCFCACQc0TNgIQIAJBDDYCDAxfC0IBIQoLIAFBAWohAQJAIAIpAyAiC0L//////////w9YBEAgAiALQgSGIAqENwMgDAELQQAhAyACQQA2AhwgAiABNgIUIAJBrQk2AhAgAkEMNgIMDF4LQSQhAwxEC0EAIQMgAkEANgIcIAIgATYCFCACQc0TNgIQIAJBDDYCDAxcCyACKAIEIQBBACEDIAJBADYCBCACIAAgARAsIgBFBEAgAUEBaiEBDFILIAJBFzYCHCACIAA2AgwgAiABQQFqNgIUDFsLIAIoAgQhAEEAIQMgAkEANgIEAkAgAiAAIAEQLCIARQRAIAFBAWohAQwBCyACQRY2AhwgAiAANgIMIAIgAUEBajYCFAxbC0EfIQMMQQtBACEDIAJBADYCHCACIAE2AhQgAkGaDzYCECACQSI2AgwMWQsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQLSIARQRAIAFBAWohAQxQCyACQRQ2AhwgAiAANgIMIAIgAUEBajYCFAxYCyACKAIEIQBBACEDIAJBADYCBAJAIAIgACABEC0iAEUEQCABQQFqIQEMAQsgAkETNgIcIAIgADYCDCACIAFBAWo2AhQMWAtBHiEDDD4LQQAhAyACQQA2AhwgAiABNgIUIAJBxgw2AhAgAkEjNgIMDFYLIAIoAgQhAEEAIQMgAkEANgIEIAIgACABEC0iAEUEQCABQQFqIQEMTgsgAkERNgIcIAIgADYCDCACIAFBAWo2AhQMVQsgAkEQNgIcIAIgATYCFCACIAA2AgwMVAtBACEDIAJBADYCHCACIAE2AhQgAkHGDDYCECACQSM2AgwMUwtBACEDIAJBADYCHCACIAE2AhQgAkHAFTYCECACQQI2AgwMUgsgAigCBCEAQQAhAyACQQA2AgQCQCACIAAgARAtIgBFBEAgAUEBaiEBDAELIAJBDjYCHCACIAA2AgwgAiABQQFqNgIUDFILQRshAww4C0EAIQMgAkEANgIcIAIgATYCFCACQcYMNgIQIAJBIzYCDAxQCyACKAIEIQBBACEDIAJBADYCBAJAIAIgACABECwiAEUEQCABQQFqIQEMAQsgAkENNgIcIAIgADYCDCACIAFBAWo2AhQMUAtBGiEDDDYLQQAhAyACQQA2AhwgAiABNgIUIAJBmg82AhAgAkEiNgIMDE4LIAIoAgQhAEEAIQMgAkEANgIEAkAgAiAAIAEQLCIARQRAIAFBAWohAQwBCyACQQw2AhwgAiAANgIMIAIgAUEBajYCFAxOC0EZIQMMNAtBACEDIAJBADYCHCACIAE2AhQgAkGaDzYCECACQSI2AgwMTAsgAEEVRwRAQQAhAyACQQA2AhwgAiABNgIUIAJBgww2AhAgAkETNgIMDEwLIAJBCjYCHCACIAE2AhQgAkHkFjYCECACQRU2AgxBACEDDEsLIAIoAgQhAEEAIQMgAkEANgIEIAIgACABIAqnaiIBECsiAARAIAJBBzYCHCACIAE2AhQgAiAANgIMDEsLQRMhAwwxCyAAQRVHBEBBACEDIAJBADYCHCACIAE2AhQgAkHaDTYCECACQRQ2AgwMSgsgAkEeNgIcIAIgATYCFCACQfkXNgIQIAJBFTYCDEEAIQMMSQtBACEAAkAgAigCOCIDRQ0AIAMoAiwiA0UNACACIAMRAAAhAAsgAEUNQSAAQRVGBEAgAkEDNgIcIAIgATYCFCACQbAYNgIQIAJBFTYCDEEAIQMMSQtBACEDIAJBADYCHCACIAE2AhQgAkGnDjYCECACQRI2AgwMSAtBACEDIAJBADYCHCACIAE2AhQgAkHaDTYCECACQRQ2AgwMRwtBACEDIAJBADYCHCACIAE2AhQgAkGnDjYCECACQRI2AgwMRgsgAkEAOgAvIAItAC1BBHFFDT8LIAJBADoALyACQQE6ADRBACEDDCsLQQAhAyACQQA2AhwgAkHkETYCECACQQc2AgwgAiABQQFqNgIUDEMLAkADQAJAIAEtAABBCmsOBAACAgACCyAEIAFBAWoiAUcNAAtB3QEhAwxDCwJAAkAgAi0ANEEBRw0AQQAhAAJAIAIoAjgiA0UNACADKAJYIgNFDQAgAiADEQAAIQALIABFDQAgAEEVRw0BIAJB3AE2AhwgAiABNgIUIAJB1RY2AhAgAkEVNgIMQQAhAwxEC0HBASEDDCoLIAJBADYCHCACIAE2AhQgAkHpCzYCECACQR82AgxBACEDDEILAkACQCACLQAoQQFrDgIEAQALQcABIQMMKQtBuQEhAwwoCyACQQI6AC9BACEAAkAgAigCOCIDRQ0AIAMoAgAiA0UNACACIAMRAAAhAAsgAEUEQEHCASEDDCgLIABBFUcEQCACQQA2AhwgAiABNgIUIAJBpAw2AhAgAkEQNgIMQQAhAwxBCyACQdsBNgIcIAIgATYCFCACQfoWNgIQIAJBFTYCDEEAIQMMQAsgASAERgRAQdoBIQMMQAsgAS0AAEHIAEYNASACQQE6ACgLQawBIQMMJQtBvwEhAwwkCyABIARHBEAgAkEQNgIIIAIgATYCBEG+ASEDDCQLQdkBIQMMPAsgASAERgRAQdgBIQMMPAsgAS0AAEHIAEcNBCABQQFqIQFBvQEhAwwiCyABIARGBEBB1wEhAww7CwJAAkAgAS0AAEHFAGsOEAAFBQUFBQUFBQUFBQUFBQEFCyABQQFqIQFBuwEhAwwiCyABQQFqIQFBvAEhAwwhC0HWASEDIAEgBEYNOSACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGD0ABqLQAARw0DIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAw6CyACKAIEIQAgAkIANwMAIAIgACAGQQFqIgEQJyIARQRAQcYBIQMMIQsgAkHVATYCHCACIAE2AhQgAiAANgIMQQAhAww5C0HUASEDIAEgBEYNOCACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGB0ABqLQAARw0CIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAw5CyACQYEEOwEoIAIoAgQhACACQgA3AwAgAiAAIAZBAWoiARAnIgANAwwCCyACQQA2AgALQQAhAyACQQA2AhwgAiABNgIUIAJB2Bs2AhAgAkEINgIMDDYLQboBIQMMHAsgAkHTATYCHCACIAE2AhQgAiAANgIMQQAhAww0C0EAIQACQCACKAI4IgNFDQAgAygCOCIDRQ0AIAIgAxEAACEACyAARQ0AIABBFUYNASACQQA2AhwgAiABNgIUIAJBzA42AhAgAkEgNgIMQQAhAwwzC0HkACEDDBkLIAJB+AA2AhwgAiABNgIUIAJByhg2AhAgAkEVNgIMQQAhAwwxC0HSASEDIAQgASIARg0wIAQgAWsgAigCACIBaiEFIAAgAWtBBGohBgJAA0AgAC0AACABQfzPAGotAABHDQEgAUEERg0DIAFBAWohASAEIABBAWoiAEcNAAsgAiAFNgIADDELIAJBADYCHCACIAA2AhQgAkGQMzYCECACQQg2AgwgAkEANgIAQQAhAwwwCyABIARHBEAgAkEONgIIIAIgATYCBEG3ASEDDBcLQdEBIQMMLwsgAkEANgIAIAZBAWohAQtBuAEhAwwUCyABIARGBEBB0AEhAwwtCyABLQAAQTBrIgBB/wFxQQpJBEAgAiAAOgAqIAFBAWohAUG2ASEDDBQLIAIoAgQhACACQQA2AgQgAiAAIAEQKCIARQ0UIAJBzwE2AhwgAiABNgIUIAIgADYCDEEAIQMMLAsgASAERgRAQc4BIQMMLAsCQCABLQAAQS5GBEAgAUEBaiEBDAELIAIoAgQhACACQQA2AgQgAiAAIAEQKCIARQ0VIAJBzQE2AhwgAiABNgIUIAIgADYCDEEAIQMMLAtBtQEhAwwSCyAEIAEiBUYEQEHMASEDDCsLQQAhAEEBIQFBASEGQQAhAwJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAIAUtAABBMGsOCgoJAAECAwQFBggLC0ECDAYLQQMMBQtBBAwEC0EFDAMLQQYMAgtBBwwBC0EICyEDQQAhAUEAIQYMAgtBCSEDQQEhAEEAIQFBACEGDAELQQAhAUEBIQMLIAIgAzoAKyAFQQFqIQMCQAJAIAItAC1BEHENAAJAAkACQCACLQAqDgMBAAIECyAGRQ0DDAILIAANAQwCCyABRQ0BCyACKAIEIQAgAkEANgIEIAIgACADECgiAEUEQCADIQEMAwsgAkHJATYCHCACIAM2AhQgAiAANgIMQQAhAwwtCyACKAIEIQAgAkEANgIEIAIgACADECgiAEUEQCADIQEMGAsgAkHKATYCHCACIAM2AhQgAiAANgIMQQAhAwwsCyACKAIEIQAgAkEANgIEIAIgACAFECgiAEUEQCAFIQEMFgsgAkHLATYCHCACIAU2AhQgAiAANgIMDCsLQbQBIQMMEQtBACEAAkAgAigCOCIDRQ0AIAMoAjwiA0UNACACIAMRAAAhAAsCQCAABEAgAEEVRg0BIAJBADYCHCACIAE2AhQgAkGUDTYCECACQSE2AgxBACEDDCsLQbIBIQMMEQsgAkHIATYCHCACIAE2AhQgAkHJFzYCECACQRU2AgxBACEDDCkLIAJBADYCACAGQQFqIQFB9QAhAwwPCyACLQApQQVGBEBB4wAhAwwPC0HiACEDDA4LIAAhASACQQA2AgALIAJBADoALEEJIQMMDAsgAkEANgIAIAdBAWohAUHAACEDDAsLQQELOgAsIAJBADYCACAGQQFqIQELQSkhAwwIC0E4IQMMBwsCQCABIARHBEADQCABLQAAQYA+ai0AACIAQQFHBEAgAEECRw0DIAFBAWohAQwFCyAEIAFBAWoiAUcNAAtBPiEDDCELQT4hAwwgCwsgAkEAOgAsDAELQQshAwwEC0E6IQMMAwsgAUEBaiEBQS0hAwwCCyACIAE6ACwgAkEANgIAIAZBAWohAUEMIQMMAQsgAkEANgIAIAZBAWohAUEKIQMMAAsAC0EAIQMgAkEANgIcIAIgATYCFCACQc0QNgIQIAJBCTYCDAwXC0EAIQMgAkEANgIcIAIgATYCFCACQekKNgIQIAJBCTYCDAwWC0EAIQMgAkEANgIcIAIgATYCFCACQbcQNgIQIAJBCTYCDAwVC0EAIQMgAkEANgIcIAIgATYCFCACQZwRNgIQIAJBCTYCDAwUC0EAIQMgAkEANgIcIAIgATYCFCACQc0QNgIQIAJBCTYCDAwTC0EAIQMgAkEANgIcIAIgATYCFCACQekKNgIQIAJBCTYCDAwSC0EAIQMgAkEANgIcIAIgATYCFCACQbcQNgIQIAJBCTYCDAwRC0EAIQMgAkEANgIcIAIgATYCFCACQZwRNgIQIAJBCTYCDAwQC0EAIQMgAkEANgIcIAIgATYCFCACQZcVNgIQIAJBDzYCDAwPC0EAIQMgAkEANgIcIAIgATYCFCACQZcVNgIQIAJBDzYCDAwOC0EAIQMgAkEANgIcIAIgATYCFCACQcASNgIQIAJBCzYCDAwNC0EAIQMgAkEANgIcIAIgATYCFCACQZUJNgIQIAJBCzYCDAwMC0EAIQMgAkEANgIcIAIgATYCFCACQeEPNgIQIAJBCjYCDAwLC0EAIQMgAkEANgIcIAIgATYCFCACQfsPNgIQIAJBCjYCDAwKC0EAIQMgAkEANgIcIAIgATYCFCACQfEZNgIQIAJBAjYCDAwJC0EAIQMgAkEANgIcIAIgATYCFCACQcQUNgIQIAJBAjYCDAwIC0EAIQMgAkEANgIcIAIgATYCFCACQfIVNgIQIAJBAjYCDAwHCyACQQI2AhwgAiABNgIUIAJBnBo2AhAgAkEWNgIMQQAhAwwGC0EBIQMMBQtB1AAhAyABIARGDQQgCEEIaiEJIAIoAgAhBQJAAkAgASAERwRAIAVB2MIAaiEHIAQgBWogAWshACAFQX9zQQpqIgUgAWohBgNAIAEtAAAgBy0AAEcEQEECIQcMAwsgBUUEQEEAIQcgBiEBDAMLIAVBAWshBSAHQQFqIQcgBCABQQFqIgFHDQALIAAhBSAEIQELIAlBATYCACACIAU2AgAMAQsgAkEANgIAIAkgBzYCAAsgCSABNgIEIAgoAgwhACAIKAIIDgMBBAIACwALIAJBADYCHCACQbUaNgIQIAJBFzYCDCACIABBAWo2AhRBACEDDAILIAJBADYCHCACIAA2AhQgAkHKGjYCECACQQk2AgxBACEDDAELIAEgBEYEQEEiIQMMAQsgAkEJNgIIIAIgATYCBEEhIQMLIAhBEGokACADRQRAIAIoAgwhAAwBCyACIAM2AhxBACEAIAIoAgQiAUUNACACIAEgBCACKAIIEQEAIgFFDQAgAiAENgIUIAIgATYCDCABIQALIAALvgIBAn8gAEEAOgAAIABB3ABqIgFBAWtBADoAACAAQQA6AAIgAEEAOgABIAFBA2tBADoAACABQQJrQQA6AAAgAEEAOgADIAFBBGtBADoAAEEAIABrQQNxIgEgAGoiAEEANgIAQdwAIAFrQXxxIgIgAGoiAUEEa0EANgIAAkAgAkEJSQ0AIABBADYCCCAAQQA2AgQgAUEIa0EANgIAIAFBDGtBADYCACACQRlJDQAgAEEANgIYIABBADYCFCAAQQA2AhAgAEEANgIMIAFBEGtBADYCACABQRRrQQA2AgAgAUEYa0EANgIAIAFBHGtBADYCACACIABBBHFBGHIiAmsiAUEgSQ0AIAAgAmohAANAIABCADcDGCAAQgA3AxAgAEIANwMIIABCADcDACAAQSBqIQAgAUEgayIBQR9LDQALCwtWAQF/AkAgACgCDA0AAkACQAJAAkAgAC0ALw4DAQADAgsgACgCOCIBRQ0AIAEoAiwiAUUNACAAIAERAAAiAQ0DC0EADwsACyAAQcMWNgIQQQ4hAQsgAQsaACAAKAIMRQRAIABB0Rs2AhAgAEEVNgIMCwsUACAAKAIMQRVGBEAgAEEANgIMCwsUACAAKAIMQRZGBEAgAEEANgIMCwsHACAAKAIMCwcAIAAoAhALCQAgACABNgIQCwcAIAAoAhQLFwAgAEEkTwRAAAsgAEECdEGgM2ooAgALFwAgAEEuTwRAAAsgAEECdEGwNGooAgALvwkBAX9B6yghAQJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB9ysPC0GQMQ8LQdcxDwtBoi0PC0HUJw8LQeArDwtBnywPC0HrMQ8LQdUfDwtByjEPC0HeJQ8LQdQeDwtB9BwPC0GnMg8LQbEdDwtBoB0PC0G5MQ8LQbwwDwtBkiEPC0GzJg8LQeksDwtBrB4PC0HUKw8LQfcmDwtBgCYPC0GwIQ8LQf4eDwtBjSMPC0GJLQ8LQfciDwtBoDEPC0GuHw8LQcYlDwtB6B4PC0GTIg8LQcIvDwtBwx0PC0GLLA8LQeEdDwtBjS8PC0HqIQ8LQbQtDwtB0i8PC0HfMg8LQdIyDwtB8DAPC0GpIg8LQfkjDwtBmR4PC0G1LA8LQZswDwtBkjIPC0G2Kw8LQcIiDwtB+DIPC0GeJQ8LQdAiDwtBuh4PC0GBHg8LAAtB1iEhAQsgAQsWACAAIAAtAC1B/gFxIAFBAEdyOgAtCxkAIAAgAC0ALUH9AXEgAUEAR0EBdHI6AC0LGQAgACAALQAtQfsBcSABQQBHQQJ0cjoALQsZACAAIAAtAC1B9wFxIAFBAEdBA3RyOgAtCz4BAn8CQCAAKAI4IgNFDQAgAygCBCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABBxhE2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCCCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABB9go2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCDCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABB7Ro2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCECIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABBlRA2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCFCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABBqhs2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCGCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABB7RM2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCKCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABB9gg2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCHCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABBwhk2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCICIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABBlBQ2AhBBGCEECyAEC1kBAn8CQCAALQAoQQFGDQAgAC8BMiIBQeQAa0HkAEkNACABQcwBRg0AIAFBsAJGDQAgAC8BMCIAQcAAcQ0AQQEhAiAAQYgEcUGABEYNACAAQShxRSECCyACC4wBAQJ/AkACQAJAIAAtACpFDQAgAC0AK0UNACAALwEwIgFBAnFFDQEMAgsgAC8BMCIBQQFxRQ0BC0EBIQIgAC0AKEEBRg0AIAAvATIiAEHkAGtB5ABJDQAgAEHMAUYNACAAQbACRg0AIAFBwABxDQBBACECIAFBiARxQYAERg0AIAFBKHFBAEchAgsgAgtXACAAQRhqQgA3AwAgAEIANwMAIABBOGpCADcDACAAQTBqQgA3AwAgAEEoakIANwMAIABBIGpCADcDACAAQRBqQgA3AwAgAEEIakIANwMAIABB3QE2AhwLBgAgABAyC5otAQt/IwBBEGsiCiQAQaTQACgCACIJRQRAQeTTACgCACIFRQRAQfDTAEJ/NwIAQejTAEKAgISAgIDAADcCAEHk0wAgCkEIakFwcUHYqtWqBXMiBTYCAEH40wBBADYCAEHI0wBBADYCAAtBzNMAQYDUBDYCAEGc0ABBgNQENgIAQbDQACAFNgIAQazQAEF/NgIAQdDTAEGArAM2AgADQCABQcjQAGogAUG80ABqIgI2AgAgAiABQbTQAGoiAzYCACABQcDQAGogAzYCACABQdDQAGogAUHE0ABqIgM2AgAgAyACNgIAIAFB2NAAaiABQczQAGoiAjYCACACIAM2AgAgAUHU0ABqIAI2AgAgAUEgaiIBQYACRw0AC0GM1ARBwasDNgIAQajQAEH00wAoAgA2AgBBmNAAQcCrAzYCAEGk0ABBiNQENgIAQcz/B0E4NgIAQYjUBCEJCwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB7AFNBEBBjNAAKAIAIgZBECAAQRNqQXBxIABBC0kbIgRBA3YiAHYiAUEDcQRAAkAgAUEBcSAAckEBcyICQQN0IgBBtNAAaiIBIABBvNAAaigCACIAKAIIIgNGBEBBjNAAIAZBfiACd3E2AgAMAQsgASADNgIIIAMgATYCDAsgAEEIaiEBIAAgAkEDdCICQQNyNgIEIAAgAmoiACAAKAIEQQFyNgIEDBELQZTQACgCACIIIARPDQEgAQRAAkBBAiAAdCICQQAgAmtyIAEgAHRxaCIAQQN0IgJBtNAAaiIBIAJBvNAAaigCACICKAIIIgNGBEBBjNAAIAZBfiAAd3EiBjYCAAwBCyABIAM2AgggAyABNgIMCyACIARBA3I2AgQgAEEDdCIAIARrIQUgACACaiAFNgIAIAIgBGoiBCAFQQFyNgIEIAgEQCAIQXhxQbTQAGohAEGg0AAoAgAhAwJ/QQEgCEEDdnQiASAGcUUEQEGM0AAgASAGcjYCACAADAELIAAoAggLIgEgAzYCDCAAIAM2AgggAyAANgIMIAMgATYCCAsgAkEIaiEBQaDQACAENgIAQZTQACAFNgIADBELQZDQACgCACILRQ0BIAtoQQJ0QbzSAGooAgAiACgCBEF4cSAEayEFIAAhAgNAAkAgAigCECIBRQRAIAJBFGooAgAiAUUNAQsgASgCBEF4cSAEayIDIAVJIQIgAyAFIAIbIQUgASAAIAIbIQAgASECDAELCyAAKAIYIQkgACgCDCIDIABHBEBBnNAAKAIAGiADIAAoAggiATYCCCABIAM2AgwMEAsgAEEUaiICKAIAIgFFBEAgACgCECIBRQ0DIABBEGohAgsDQCACIQcgASIDQRRqIgIoAgAiAQ0AIANBEGohAiADKAIQIgENAAsgB0EANgIADA8LQX8hBCAAQb9/Sw0AIABBE2oiAUFwcSEEQZDQACgCACIIRQ0AQQAgBGshBQJAAkACQAJ/QQAgBEGAAkkNABpBHyAEQf///wdLDQAaIARBJiABQQh2ZyIAa3ZBAXEgAEEBdGtBPmoLIgZBAnRBvNIAaigCACICRQRAQQAhAUEAIQMMAQtBACEBIARBGSAGQQF2a0EAIAZBH0cbdCEAQQAhAwNAAkAgAigCBEF4cSAEayIHIAVPDQAgAiEDIAciBQ0AQQAhBSACIQEMAwsgASACQRRqKAIAIgcgByACIABBHXZBBHFqQRBqKAIAIgJGGyABIAcbIQEgAEEBdCEAIAINAAsLIAEgA3JFBEBBACEDQQIgBnQiAEEAIABrciAIcSIARQ0DIABoQQJ0QbzSAGooAgAhAQsgAUUNAQsDQCABKAIEQXhxIARrIgIgBUkhACACIAUgABshBSABIAMgABshAyABKAIQIgAEfyAABSABQRRqKAIACyIBDQALCyADRQ0AIAVBlNAAKAIAIARrTw0AIAMoAhghByADIAMoAgwiAEcEQEGc0AAoAgAaIAAgAygCCCIBNgIIIAEgADYCDAwOCyADQRRqIgIoAgAiAUUEQCADKAIQIgFFDQMgA0EQaiECCwNAIAIhBiABIgBBFGoiAigCACIBDQAgAEEQaiECIAAoAhAiAQ0ACyAGQQA2AgAMDQtBlNAAKAIAIgMgBE8EQEGg0AAoAgAhAQJAIAMgBGsiAkEQTwRAIAEgBGoiACACQQFyNgIEIAEgA2ogAjYCACABIARBA3I2AgQMAQsgASADQQNyNgIEIAEgA2oiACAAKAIEQQFyNgIEQQAhAEEAIQILQZTQACACNgIAQaDQACAANgIAIAFBCGohAQwPC0GY0AAoAgAiAyAESwRAIAQgCWoiACADIARrIgFBAXI2AgRBpNAAIAA2AgBBmNAAIAE2AgAgCSAEQQNyNgIEIAlBCGohAQwPC0EAIQEgBAJ/QeTTACgCAARAQezTACgCAAwBC0Hw0wBCfzcCAEHo0wBCgICEgICAwAA3AgBB5NMAIApBDGpBcHFB2KrVqgVzNgIAQfjTAEEANgIAQcjTAEEANgIAQYCABAsiACAEQccAaiIFaiIGQQAgAGsiB3EiAk8EQEH80wBBMDYCAAwPCwJAQcTTACgCACIBRQ0AQbzTACgCACIIIAJqIQAgACABTSAAIAhLcQ0AQQAhAUH80wBBMDYCAAwPC0HI0wAtAABBBHENBAJAAkAgCQRAQczTACEBA0AgASgCACIAIAlNBEAgACABKAIEaiAJSw0DCyABKAIIIgENAAsLQQAQMyIAQX9GDQUgAiEGQejTACgCACIBQQFrIgMgAHEEQCACIABrIAAgA2pBACABa3FqIQYLIAQgBk8NBSAGQf7///8HSw0FQcTTACgCACIDBEBBvNMAKAIAIgcgBmohASABIAdNDQYgASADSw0GCyAGEDMiASAARw0BDAcLIAYgA2sgB3EiBkH+////B0sNBCAGEDMhACAAIAEoAgAgASgCBGpGDQMgACEBCwJAIAYgBEHIAGpPDQAgAUF/Rg0AQezTACgCACIAIAUgBmtqQQAgAGtxIgBB/v///wdLBEAgASEADAcLIAAQM0F/RwRAIAAgBmohBiABIQAMBwtBACAGaxAzGgwECyABIgBBf0cNBQwDC0EAIQMMDAtBACEADAoLIABBf0cNAgtByNMAQcjTACgCAEEEcjYCAAsgAkH+////B0sNASACEDMhAEEAEDMhASAAQX9GDQEgAUF/Rg0BIAAgAU8NASABIABrIgYgBEE4ak0NAQtBvNMAQbzTACgCACAGaiIBNgIAQcDTACgCACABSQRAQcDTACABNgIACwJAAkACQEGk0AAoAgAiAgRAQczTACEBA0AgACABKAIAIgMgASgCBCIFakYNAiABKAIIIgENAAsMAgtBnNAAKAIAIgFBAEcgACABT3FFBEBBnNAAIAA2AgALQQAhAUHQ0wAgBjYCAEHM0wAgADYCAEGs0ABBfzYCAEGw0ABB5NMAKAIANgIAQdjTAEEANgIAA0AgAUHI0ABqIAFBvNAAaiICNgIAIAIgAUG00ABqIgM2AgAgAUHA0ABqIAM2AgAgAUHQ0ABqIAFBxNAAaiIDNgIAIAMgAjYCACABQdjQAGogAUHM0ABqIgI2AgAgAiADNgIAIAFB1NAAaiACNgIAIAFBIGoiAUGAAkcNAAtBeCAAa0EPcSIBIABqIgIgBkE4ayIDIAFrIgFBAXI2AgRBqNAAQfTTACgCADYCAEGY0AAgATYCAEGk0AAgAjYCACAAIANqQTg2AgQMAgsgACACTQ0AIAIgA0kNACABKAIMQQhxDQBBeCACa0EPcSIAIAJqIgNBmNAAKAIAIAZqIgcgAGsiAEEBcjYCBCABIAUgBmo2AgRBqNAAQfTTACgCADYCAEGY0AAgADYCAEGk0AAgAzYCACACIAdqQTg2AgQMAQsgAEGc0AAoAgBJBEBBnNAAIAA2AgALIAAgBmohA0HM0wAhAQJAAkACQANAIAMgASgCAEcEQCABKAIIIgENAQwCCwsgAS0ADEEIcUUNAQtBzNMAIQEDQCABKAIAIgMgAk0EQCADIAEoAgRqIgUgAksNAwsgASgCCCEBDAALAAsgASAANgIAIAEgASgCBCAGajYCBCAAQXggAGtBD3FqIgkgBEEDcjYCBCADQXggA2tBD3FqIgYgBCAJaiIEayEBIAIgBkYEQEGk0AAgBDYCAEGY0ABBmNAAKAIAIAFqIgA2AgAgBCAAQQFyNgIEDAgLQaDQACgCACAGRgRAQaDQACAENgIAQZTQAEGU0AAoAgAgAWoiADYCACAEIABBAXI2AgQgACAEaiAANgIADAgLIAYoAgQiBUEDcUEBRw0GIAVBeHEhCCAFQf8BTQRAIAVBA3YhAyAGKAIIIgAgBigCDCICRgRAQYzQAEGM0AAoAgBBfiADd3E2AgAMBwsgAiAANgIIIAAgAjYCDAwGCyAGKAIYIQcgBiAGKAIMIgBHBEAgACAGKAIIIgI2AgggAiAANgIMDAULIAZBFGoiAigCACIFRQRAIAYoAhAiBUUNBCAGQRBqIQILA0AgAiEDIAUiAEEUaiICKAIAIgUNACAAQRBqIQIgACgCECIFDQALIANBADYCAAwEC0F4IABrQQ9xIgEgAGoiByAGQThrIgMgAWsiAUEBcjYCBCAAIANqQTg2AgQgAiAFQTcgBWtBD3FqQT9rIgMgAyACQRBqSRsiA0EjNgIEQajQAEH00wAoAgA2AgBBmNAAIAE2AgBBpNAAIAc2AgAgA0EQakHU0wApAgA3AgAgA0HM0wApAgA3AghB1NMAIANBCGo2AgBB0NMAIAY2AgBBzNMAIAA2AgBB2NMAQQA2AgAgA0EkaiEBA0AgAUEHNgIAIAUgAUEEaiIBSw0ACyACIANGDQAgAyADKAIEQX5xNgIEIAMgAyACayIFNgIAIAIgBUEBcjYCBCAFQf8BTQRAIAVBeHFBtNAAaiEAAn9BjNAAKAIAIgFBASAFQQN2dCIDcUUEQEGM0AAgASADcjYCACAADAELIAAoAggLIgEgAjYCDCAAIAI2AgggAiAANgIMIAIgATYCCAwBC0EfIQEgBUH///8HTQRAIAVBJiAFQQh2ZyIAa3ZBAXEgAEEBdGtBPmohAQsgAiABNgIcIAJCADcCECABQQJ0QbzSAGohAEGQ0AAoAgAiA0EBIAF0IgZxRQRAIAAgAjYCAEGQ0AAgAyAGcjYCACACIAA2AhggAiACNgIIIAIgAjYCDAwBCyAFQRkgAUEBdmtBACABQR9HG3QhASAAKAIAIQMCQANAIAMiACgCBEF4cSAFRg0BIAFBHXYhAyABQQF0IQEgACADQQRxakEQaiIGKAIAIgMNAAsgBiACNgIAIAIgADYCGCACIAI2AgwgAiACNgIIDAELIAAoAggiASACNgIMIAAgAjYCCCACQQA2AhggAiAANgIMIAIgATYCCAtBmNAAKAIAIgEgBE0NAEGk0AAoAgAiACAEaiICIAEgBGsiAUEBcjYCBEGY0AAgATYCAEGk0AAgAjYCACAAIARBA3I2AgQgAEEIaiEBDAgLQQAhAUH80wBBMDYCAAwHC0EAIQALIAdFDQACQCAGKAIcIgJBAnRBvNIAaiIDKAIAIAZGBEAgAyAANgIAIAANAUGQ0ABBkNAAKAIAQX4gAndxNgIADAILIAdBEEEUIAcoAhAgBkYbaiAANgIAIABFDQELIAAgBzYCGCAGKAIQIgIEQCAAIAI2AhAgAiAANgIYCyAGQRRqKAIAIgJFDQAgAEEUaiACNgIAIAIgADYCGAsgASAIaiEBIAYgCGoiBigCBCEFCyAGIAVBfnE2AgQgASAEaiABNgIAIAQgAUEBcjYCBCABQf8BTQRAIAFBeHFBtNAAaiEAAn9BjNAAKAIAIgJBASABQQN2dCIBcUUEQEGM0AAgASACcjYCACAADAELIAAoAggLIgEgBDYCDCAAIAQ2AgggBCAANgIMIAQgATYCCAwBC0EfIQUgAUH///8HTQRAIAFBJiABQQh2ZyIAa3ZBAXEgAEEBdGtBPmohBQsgBCAFNgIcIARCADcCECAFQQJ0QbzSAGohAEGQ0AAoAgAiAkEBIAV0IgNxRQRAIAAgBDYCAEGQ0AAgAiADcjYCACAEIAA2AhggBCAENgIIIAQgBDYCDAwBCyABQRkgBUEBdmtBACAFQR9HG3QhBSAAKAIAIQACQANAIAAiAigCBEF4cSABRg0BIAVBHXYhACAFQQF0IQUgAiAAQQRxakEQaiIDKAIAIgANAAsgAyAENgIAIAQgAjYCGCAEIAQ2AgwgBCAENgIIDAELIAIoAggiACAENgIMIAIgBDYCCCAEQQA2AhggBCACNgIMIAQgADYCCAsgCUEIaiEBDAILAkAgB0UNAAJAIAMoAhwiAUECdEG80gBqIgIoAgAgA0YEQCACIAA2AgAgAA0BQZDQACAIQX4gAXdxIgg2AgAMAgsgB0EQQRQgBygCECADRhtqIAA2AgAgAEUNAQsgACAHNgIYIAMoAhAiAQRAIAAgATYCECABIAA2AhgLIANBFGooAgAiAUUNACAAQRRqIAE2AgAgASAANgIYCwJAIAVBD00EQCADIAQgBWoiAEEDcjYCBCAAIANqIgAgACgCBEEBcjYCBAwBCyADIARqIgIgBUEBcjYCBCADIARBA3I2AgQgAiAFaiAFNgIAIAVB/wFNBEAgBUF4cUG00ABqIQACf0GM0AAoAgAiAUEBIAVBA3Z0IgVxRQRAQYzQACABIAVyNgIAIAAMAQsgACgCCAsiASACNgIMIAAgAjYCCCACIAA2AgwgAiABNgIIDAELQR8hASAFQf///wdNBEAgBUEmIAVBCHZnIgBrdkEBcSAAQQF0a0E+aiEBCyACIAE2AhwgAkIANwIQIAFBAnRBvNIAaiEAQQEgAXQiBCAIcUUEQCAAIAI2AgBBkNAAIAQgCHI2AgAgAiAANgIYIAIgAjYCCCACIAI2AgwMAQsgBUEZIAFBAXZrQQAgAUEfRxt0IQEgACgCACEEAkADQCAEIgAoAgRBeHEgBUYNASABQR12IQQgAUEBdCEBIAAgBEEEcWpBEGoiBigCACIEDQALIAYgAjYCACACIAA2AhggAiACNgIMIAIgAjYCCAwBCyAAKAIIIgEgAjYCDCAAIAI2AgggAkEANgIYIAIgADYCDCACIAE2AggLIANBCGohAQwBCwJAIAlFDQACQCAAKAIcIgFBAnRBvNIAaiICKAIAIABGBEAgAiADNgIAIAMNAUGQ0AAgC0F+IAF3cTYCAAwCCyAJQRBBFCAJKAIQIABGG2ogAzYCACADRQ0BCyADIAk2AhggACgCECIBBEAgAyABNgIQIAEgAzYCGAsgAEEUaigCACIBRQ0AIANBFGogATYCACABIAM2AhgLAkAgBUEPTQRAIAAgBCAFaiIBQQNyNgIEIAAgAWoiASABKAIEQQFyNgIEDAELIAAgBGoiByAFQQFyNgIEIAAgBEEDcjYCBCAFIAdqIAU2AgAgCARAIAhBeHFBtNAAaiEBQaDQACgCACEDAn9BASAIQQN2dCICIAZxRQRAQYzQACACIAZyNgIAIAEMAQsgASgCCAsiAiADNgIMIAEgAzYCCCADIAE2AgwgAyACNgIIC0Gg0AAgBzYCAEGU0AAgBTYCAAsgAEEIaiEBCyAKQRBqJAAgAQtDACAARQRAPwBBEHQPCwJAIABB//8DcQ0AIABBAEgNACAAQRB2QAAiAEF/RgRAQfzTAEEwNgIAQX8PCyAAQRB0DwsACwvcPyIAQYAICwkBAAAAAgAAAAMAQZQICwUEAAAABQBBpAgLCQYAAAAHAAAACABB3AgLii1JbnZhbGlkIGNoYXIgaW4gdXJsIHF1ZXJ5AFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fYm9keQBDb250ZW50LUxlbmd0aCBvdmVyZmxvdwBDaHVuayBzaXplIG92ZXJmbG93AFJlc3BvbnNlIG92ZXJmbG93AEludmFsaWQgbWV0aG9kIGZvciBIVFRQL3gueCByZXF1ZXN0AEludmFsaWQgbWV0aG9kIGZvciBSVFNQL3gueCByZXF1ZXN0AEV4cGVjdGVkIFNPVVJDRSBtZXRob2QgZm9yIElDRS94LnggcmVxdWVzdABJbnZhbGlkIGNoYXIgaW4gdXJsIGZyYWdtZW50IHN0YXJ0AEV4cGVjdGVkIGRvdABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3N0YXR1cwBJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zAFVzZXIgY2FsbGJhY2sgZXJyb3IAYG9uX3Jlc2V0YCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfaGVhZGVyYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9iZWdpbmAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3N0YXR1c19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3ZlcnNpb25fY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl91cmxfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXRob2RfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfZmllbGRfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fbmFtZWAgY2FsbGJhY2sgZXJyb3IAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzZXJ2ZXIASW52YWxpZCBoZWFkZXIgdmFsdWUgY2hhcgBJbnZhbGlkIGhlYWRlciBmaWVsZCBjaGFyAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdmVyc2lvbgBJbnZhbGlkIG1pbm9yIHZlcnNpb24ASW52YWxpZCBtYWpvciB2ZXJzaW9uAEV4cGVjdGVkIHNwYWNlIGFmdGVyIHZlcnNpb24ARXhwZWN0ZWQgQ1JMRiBhZnRlciB2ZXJzaW9uAEludmFsaWQgSFRUUCB2ZXJzaW9uAEludmFsaWQgaGVhZGVyIHRva2VuAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdXJsAEludmFsaWQgY2hhcmFjdGVycyBpbiB1cmwAVW5leHBlY3RlZCBzdGFydCBjaGFyIGluIHVybABEb3VibGUgQCBpbiB1cmwARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgARHVwbGljYXRlIENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhciBpbiB1cmwgcGF0aABDb250ZW50LUxlbmd0aCBjYW4ndCBiZSBwcmVzZW50IHdpdGggVHJhbnNmZXItRW5jb2RpbmcASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgc2l6ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl92YWx1ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlZCB2YWx1ZQBQYXVzZWQgYnkgb25faGVhZGVyc19jb21wbGV0ZQBJbnZhbGlkIEVPRiBzdGF0ZQBvbl9yZXNldCBwYXVzZQBvbl9jaHVua19oZWFkZXIgcGF1c2UAb25fbWVzc2FnZV9iZWdpbiBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fdmFsdWUgcGF1c2UAb25fc3RhdHVzX2NvbXBsZXRlIHBhdXNlAG9uX3ZlcnNpb25fY29tcGxldGUgcGF1c2UAb25fdXJsX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXNzYWdlX2NvbXBsZXRlIHBhdXNlAG9uX21ldGhvZF9jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfZmllbGRfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUgcGF1c2UAVW5leHBlY3RlZCBzcGFjZSBhZnRlciBzdGFydCBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAFBhdXNlIG9uIENPTk5FQ1QvVXBncmFkZQBQYXVzZSBvbiBQUkkvVXBncmFkZQBFeHBlY3RlZCBIVFRQLzIgQ29ubmVjdGlvbiBQcmVmYWNlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fbWV0aG9kAEV4cGVjdGVkIHNwYWNlIGFmdGVyIG1ldGhvZABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl9maWVsZABQYXVzZWQASW52YWxpZCB3b3JkIGVuY291bnRlcmVkAEludmFsaWQgbWV0aG9kIGVuY291bnRlcmVkAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2NoZW1hAFJlcXVlc3QgaGFzIGludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYABTV0lUQ0hfUFJPWFkAVVNFX1BST1hZAE1LQUNUSVZJVFkAVU5QUk9DRVNTQUJMRV9FTlRJVFkAQ09QWQBNT1ZFRF9QRVJNQU5FTlRMWQBUT09fRUFSTFkATk9USUZZAEZBSUxFRF9ERVBFTkRFTkNZAEJBRF9HQVRFV0FZAFBMQVkAUFVUAENIRUNLT1VUAEdBVEVXQVlfVElNRU9VVABSRVFVRVNUX1RJTUVPVVQATkVUV09SS19DT05ORUNUX1RJTUVPVVQAQ09OTkVDVElPTl9USU1FT1VUAExPR0lOX1RJTUVPVVQATkVUV09SS19SRUFEX1RJTUVPVVQAUE9TVABNSVNESVJFQ1RFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX0xPQURfQkFMQU5DRURfUkVRVUVTVABCQURfUkVRVUVTVABIVFRQX1JFUVVFU1RfU0VOVF9UT19IVFRQU19QT1JUAFJFUE9SVABJTV9BX1RFQVBPVABSRVNFVF9DT05URU5UAE5PX0NPTlRFTlQAUEFSVElBTF9DT05URU5UAEhQRV9JTlZBTElEX0NPTlNUQU5UAEhQRV9DQl9SRVNFVABHRVQASFBFX1NUUklDVABDT05GTElDVABURU1QT1JBUllfUkVESVJFQ1QAUEVSTUFORU5UX1JFRElSRUNUAENPTk5FQ1QATVVMVElfU1RBVFVTAEhQRV9JTlZBTElEX1NUQVRVUwBUT09fTUFOWV9SRVFVRVNUUwBFQVJMWV9ISU5UUwBVTkFWQUlMQUJMRV9GT1JfTEVHQUxfUkVBU09OUwBPUFRJT05TAFNXSVRDSElOR19QUk9UT0NPTFMAVkFSSUFOVF9BTFNPX05FR09USUFURVMATVVMVElQTEVfQ0hPSUNFUwBJTlRFUk5BTF9TRVJWRVJfRVJST1IAV0VCX1NFUlZFUl9VTktOT1dOX0VSUk9SAFJBSUxHVU5fRVJST1IASURFTlRJVFlfUFJPVklERVJfQVVUSEVOVElDQVRJT05fRVJST1IAU1NMX0NFUlRJRklDQVRFX0VSUk9SAElOVkFMSURfWF9GT1JXQVJERURfRk9SAFNFVF9QQVJBTUVURVIAR0VUX1BBUkFNRVRFUgBIUEVfVVNFUgBTRUVfT1RIRVIASFBFX0NCX0NIVU5LX0hFQURFUgBNS0NBTEVOREFSAFNFVFVQAFdFQl9TRVJWRVJfSVNfRE9XTgBURUFSRE9XTgBIUEVfQ0xPU0VEX0NPTk5FQ1RJT04ASEVVUklTVElDX0VYUElSQVRJT04ARElTQ09OTkVDVEVEX09QRVJBVElPTgBOT05fQVVUSE9SSVRBVElWRV9JTkZPUk1BVElPTgBIUEVfSU5WQUxJRF9WRVJTSU9OAEhQRV9DQl9NRVNTQUdFX0JFR0lOAFNJVEVfSVNfRlJPWkVOAEhQRV9JTlZBTElEX0hFQURFUl9UT0tFTgBJTlZBTElEX1RPS0VOAEZPUkJJRERFTgBFTkhBTkNFX1lPVVJfQ0FMTQBIUEVfSU5WQUxJRF9VUkwAQkxPQ0tFRF9CWV9QQVJFTlRBTF9DT05UUk9MAE1LQ09MAEFDTABIUEVfSU5URVJOQUwAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRV9VTk9GRklDSUFMAEhQRV9PSwBVTkxJTksAVU5MT0NLAFBSSQBSRVRSWV9XSVRIAEhQRV9JTlZBTElEX0NPTlRFTlRfTEVOR1RIAEhQRV9VTkVYUEVDVEVEX0NPTlRFTlRfTEVOR1RIAEZMVVNIAFBST1BQQVRDSABNLVNFQVJDSABVUklfVE9PX0xPTkcAUFJPQ0VTU0lORwBNSVNDRUxMQU5FT1VTX1BFUlNJU1RFTlRfV0FSTklORwBNSVNDRUxMQU5FT1VTX1dBUk5JTkcASFBFX0lOVkFMSURfVFJBTlNGRVJfRU5DT0RJTkcARXhwZWN0ZWQgQ1JMRgBIUEVfSU5WQUxJRF9DSFVOS19TSVpFAE1PVkUAQ09OVElOVUUASFBFX0NCX1NUQVRVU19DT01QTEVURQBIUEVfQ0JfSEVBREVSU19DT01QTEVURQBIUEVfQ0JfVkVSU0lPTl9DT01QTEVURQBIUEVfQ0JfVVJMX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8AAF4TAAAmEwAAMBAAAPAXAACdEwAAFRIAADkXAADwEgAAChAAAHUSAACtEgAAghMAAE8UAAB/EAAAoBUAACMUAACJEgAAixQAAE0VAADUEQAAzxQAABAYAADJFgAA3BYAAMERAADgFwAAuxQAAHQUAAB8FQAA5RQAAAgXAAAfEAAAZRUAAKMUAAAoFQAAAhUAAJkVAAAsEAAAixkAAE8PAADUDgAAahAAAM4QAAACFwAAiQ4AAG4TAAAcEwAAZhQAAFYXAADBEwAAzRMAAGwTAABoFwAAZhcAAF8XAAAiEwAAzg8AAGkOAADYDgAAYxYAAMsTAACqDgAAKBcAACYXAADFEwAAXRYAAOgRAABnEwAAZRMAAPIWAABzEwAAHRcAAPkWAADzEQAAzw4AAM4VAAAMEgAAsxEAAKURAABhEAAAMhcAALsTAEH5NQsBAQBBkDYL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB/TcLAQEAQZE4C14CAwICAgICAAACAgACAgACAgICAgICAgICAAQAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEH9OQsBAQBBkToLXgIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAQfA7Cw1sb3NlZWVwLWFsaXZlAEGJPAsBAQBBoDwL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBiT4LAQEAQaA+C+cBAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAEGwwAALXwEBAAEBAQEBAAABAQABAQABAQEBAQEBAQEBAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAEGQwgALIWVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgBBwMIACy1yYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AQfnCAAsFAQIAAQMAQZDDAAvgAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH5xAALBQECAAEDAEGQxQAL4AEEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cYACwQBAAABAEGRxwAL3wEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH6yAALBAEAAAIAQZDJAAtfAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAQfrKAAsEAQAAAQBBkMsACwEBAEGqywALQQIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAEH6zAALBAEAAAEAQZDNAAsBAQBBms0ACwYCAAAAAAIAQbHNAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB8M4AC5YBTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRU9SRElSRUNUT1JUUkNIUEFSQU1FVEVSVVJDRUJTQ1JJQkVBUkRPV05BQ0VJTkROS0NLVUJTQ1JJQkVIVFRQL0FEVFAv", "base64");
- }
-});
-
-// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js
-var require_llhttp_simd_wasm = __commonJS({
- ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js"(exports2, module2) {
- "use strict";
- var { Buffer: Buffer3 } = require("node:buffer");
- module2.exports = Buffer3.from("AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVuaWVudF9oZWFkZXJzACEhbGxodHRwX3NldF9sZW5pZW50X2NodW5rZWRfbGVuZ3RoACIdbGxodHRwX3NldF9sZW5pZW50X2tlZXBfYWxpdmUAIyRsbGh0dHBfc2V0X2xlbmllbnRfdHJhbnNmZXJfZW5jb2RpbmcAJBhsbGh0dHBfbWVzc2FnZV9uZWVkc19lb2YALgkXAQBBAQsRAQIDBAUKBgcrLSwqKSglJyYK77MCLBYAQYjQACgCAARAAAtBiNAAQQE2AgALFAAgABAwIAAgAjYCOCAAIAE6ACgLFAAgACAALwEyIAAtAC4gABAvEAALHgEBf0HAABAyIgEQMCABQYAINgI4IAEgADoAKCABC48MAQd/AkAgAEUNACAAQQhrIgEgAEEEaygCACIAQXhxIgRqIQUCQCAAQQFxDQAgAEEDcUUNASABIAEoAgAiAGsiAUGc0AAoAgBJDQEgACAEaiEEAkACQEGg0AAoAgAgAUcEQCAAQf8BTQRAIABBA3YhAyABKAIIIgAgASgCDCICRgRAQYzQAEGM0AAoAgBBfiADd3E2AgAMBQsgAiAANgIIIAAgAjYCDAwECyABKAIYIQYgASABKAIMIgBHBEAgACABKAIIIgI2AgggAiAANgIMDAMLIAFBFGoiAygCACICRQRAIAEoAhAiAkUNAiABQRBqIQMLA0AgAyEHIAIiAEEUaiIDKAIAIgINACAAQRBqIQMgACgCECICDQALIAdBADYCAAwCCyAFKAIEIgBBA3FBA0cNAiAFIABBfnE2AgRBlNAAIAQ2AgAgBSAENgIAIAEgBEEBcjYCBAwDC0EAIQALIAZFDQACQCABKAIcIgJBAnRBvNIAaiIDKAIAIAFGBEAgAyAANgIAIAANAUGQ0ABBkNAAKAIAQX4gAndxNgIADAILIAZBEEEUIAYoAhAgAUYbaiAANgIAIABFDQELIAAgBjYCGCABKAIQIgIEQCAAIAI2AhAgAiAANgIYCyABQRRqKAIAIgJFDQAgAEEUaiACNgIAIAIgADYCGAsgASAFTw0AIAUoAgQiAEEBcUUNAAJAAkACQAJAIABBAnFFBEBBpNAAKAIAIAVGBEBBpNAAIAE2AgBBmNAAQZjQACgCACAEaiIANgIAIAEgAEEBcjYCBCABQaDQACgCAEcNBkGU0ABBADYCAEGg0ABBADYCAAwGC0Gg0AAoAgAgBUYEQEGg0AAgATYCAEGU0ABBlNAAKAIAIARqIgA2AgAgASAAQQFyNgIEIAAgAWogADYCAAwGCyAAQXhxIARqIQQgAEH/AU0EQCAAQQN2IQMgBSgCCCIAIAUoAgwiAkYEQEGM0ABBjNAAKAIAQX4gA3dxNgIADAULIAIgADYCCCAAIAI2AgwMBAsgBSgCGCEGIAUgBSgCDCIARwRAQZzQACgCABogACAFKAIIIgI2AgggAiAANgIMDAMLIAVBFGoiAygCACICRQRAIAUoAhAiAkUNAiAFQRBqIQMLA0AgAyEHIAIiAEEUaiIDKAIAIgINACAAQRBqIQMgACgCECICDQALIAdBADYCAAwCCyAFIABBfnE2AgQgASAEaiAENgIAIAEgBEEBcjYCBAwDC0EAIQALIAZFDQACQCAFKAIcIgJBAnRBvNIAaiIDKAIAIAVGBEAgAyAANgIAIAANAUGQ0ABBkNAAKAIAQX4gAndxNgIADAILIAZBEEEUIAYoAhAgBUYbaiAANgIAIABFDQELIAAgBjYCGCAFKAIQIgIEQCAAIAI2AhAgAiAANgIYCyAFQRRqKAIAIgJFDQAgAEEUaiACNgIAIAIgADYCGAsgASAEaiAENgIAIAEgBEEBcjYCBCABQaDQACgCAEcNAEGU0AAgBDYCAAwBCyAEQf8BTQRAIARBeHFBtNAAaiEAAn9BjNAAKAIAIgJBASAEQQN2dCIDcUUEQEGM0AAgAiADcjYCACAADAELIAAoAggLIgIgATYCDCAAIAE2AgggASAANgIMIAEgAjYCCAwBC0EfIQIgBEH///8HTQRAIARBJiAEQQh2ZyIAa3ZBAXEgAEEBdGtBPmohAgsgASACNgIcIAFCADcCECACQQJ0QbzSAGohAAJAQZDQACgCACIDQQEgAnQiB3FFBEAgACABNgIAQZDQACADIAdyNgIAIAEgADYCGCABIAE2AgggASABNgIMDAELIARBGSACQQF2a0EAIAJBH0cbdCECIAAoAgAhAAJAA0AgACIDKAIEQXhxIARGDQEgAkEddiEAIAJBAXQhAiADIABBBHFqQRBqIgcoAgAiAA0ACyAHIAE2AgAgASADNgIYIAEgATYCDCABIAE2AggMAQsgAygCCCIAIAE2AgwgAyABNgIIIAFBADYCGCABIAM2AgwgASAANgIIC0Gs0ABBrNAAKAIAQQFrIgBBfyAAGzYCAAsLBwAgAC0AKAsHACAALQAqCwcAIAAtACsLBwAgAC0AKQsHACAALwEyCwcAIAAtAC4LQAEEfyAAKAIYIQEgAC0ALSECIAAtACghAyAAKAI4IQQgABAwIAAgBDYCOCAAIAM6ACggACACOgAtIAAgATYCGAu74gECB38DfiABIAJqIQQCQCAAIgIoAgwiAA0AIAIoAgQEQCACIAE2AgQLIwBBEGsiCCQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAIoAhwiA0EBaw7dAdoBAdkBAgMEBQYHCAkKCwwNDtgBDxDXARES1gETFBUWFxgZGhvgAd8BHB0e1QEfICEiIyQl1AEmJygpKiss0wHSAS0u0QHQAS8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRtsBR0hJSs8BzgFLzQFMzAFNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AAYEBggGDAYQBhQGGAYcBiAGJAYoBiwGMAY0BjgGPAZABkQGSAZMBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwGwAbEBsgGzAbQBtQG2AbcBywHKAbgByQG5AcgBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgEA3AELQQAMxgELQQ4MxQELQQ0MxAELQQ8MwwELQRAMwgELQRMMwQELQRQMwAELQRUMvwELQRYMvgELQRgMvQELQRkMvAELQRoMuwELQRsMugELQRwMuQELQR0MuAELQQgMtwELQR4MtgELQSAMtQELQR8MtAELQQcMswELQSEMsgELQSIMsQELQSMMsAELQSQMrwELQRIMrgELQREMrQELQSUMrAELQSYMqwELQScMqgELQSgMqQELQcMBDKgBC0EqDKcBC0ErDKYBC0EsDKUBC0EtDKQBC0EuDKMBC0EvDKIBC0HEAQyhAQtBMAygAQtBNAyfAQtBDAyeAQtBMQydAQtBMgycAQtBMwybAQtBOQyaAQtBNQyZAQtBxQEMmAELQQsMlwELQToMlgELQTYMlQELQQoMlAELQTcMkwELQTgMkgELQTwMkQELQTsMkAELQT0MjwELQQkMjgELQSkMjQELQT4MjAELQT8MiwELQcAADIoBC0HBAAyJAQtBwgAMiAELQcMADIcBC0HEAAyGAQtBxQAMhQELQcYADIQBC0EXDIMBC0HHAAyCAQtByAAMgQELQckADIABC0HKAAx/C0HLAAx+C0HNAAx9C0HMAAx8C0HOAAx7C0HPAAx6C0HQAAx5C0HRAAx4C0HSAAx3C0HTAAx2C0HUAAx1C0HWAAx0C0HVAAxzC0EGDHILQdcADHELQQUMcAtB2AAMbwtBBAxuC0HZAAxtC0HaAAxsC0HbAAxrC0HcAAxqC0EDDGkLQd0ADGgLQd4ADGcLQd8ADGYLQeEADGULQeAADGQLQeIADGMLQeMADGILQQIMYQtB5AAMYAtB5QAMXwtB5gAMXgtB5wAMXQtB6AAMXAtB6QAMWwtB6gAMWgtB6wAMWQtB7AAMWAtB7QAMVwtB7gAMVgtB7wAMVQtB8AAMVAtB8QAMUwtB8gAMUgtB8wAMUQtB9AAMUAtB9QAMTwtB9gAMTgtB9wAMTQtB+AAMTAtB+QAMSwtB+gAMSgtB+wAMSQtB/AAMSAtB/QAMRwtB/gAMRgtB/wAMRQtBgAEMRAtBgQEMQwtBggEMQgtBgwEMQQtBhAEMQAtBhQEMPwtBhgEMPgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADDsYBAAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHyAhIyUmKCorLC8wMTIzNDU2Nzk6Ozw9lANAQkRFRklLTk9QUVJTVFVWWFpbXF1eX2BhYmNkZWZnaGpsb3Bxc3V2eHl6e3x/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEBkgGTAZQBlQGWAZcBmAGZAZoBmwGcAZ0BngGfAaABoQGiAaMBpAGlAaYBpwGoAakBqgGrAawBrQGuAa8BsAGxAbIBswG0AbUBtgG3AbgBuQG6AbsBvAG9Ab4BvwHAAcEBwgHDAcQBxQHGAccByAHJAcsBzAHNAc4BzwGKA4kDiAOHA4QDgwOAA/sC+gL5AvgC9wL0AvMC8gLLAsECsALZAQsgASAERw3wAkHdASEDDLMDCyABIARHDcgBQcMBIQMMsgMLIAEgBEcNe0H3ACEDDLEDCyABIARHDXBB7wAhAwywAwsgASAERw1pQeoAIQMMrwMLIAEgBEcNZUHoACEDDK4DCyABIARHDWJB5gAhAwytAwsgASAERw0aQRghAwysAwsgASAERw0VQRIhAwyrAwsgASAERw1CQcUAIQMMqgMLIAEgBEcNNEE/IQMMqQMLIAEgBEcNMkE8IQMMqAMLIAEgBEcNK0ExIQMMpwMLIAItAC5BAUYNnwMMwQILQQAhAAJAAkACQCACLQAqRQ0AIAItACtFDQAgAi8BMCIDQQJxRQ0BDAILIAIvATAiA0EBcUUNAQtBASEAIAItAChBAUYNACACLwEyIgVB5ABrQeQASQ0AIAVBzAFGDQAgBUGwAkYNACADQcAAcQ0AQQAhACADQYgEcUGABEYNACADQShxQQBHIQALIAJBADsBMCACQQA6AC8gAEUN3wIgAkIANwMgDOACC0EAIQACQCACKAI4IgNFDQAgAygCLCIDRQ0AIAIgAxEAACEACyAARQ3MASAAQRVHDd0CIAJBBDYCHCACIAE2AhQgAkGwGDYCECACQRU2AgxBACEDDKQDCyABIARGBEBBBiEDDKQDCyABQQFqIQFBACEAAkAgAigCOCIDRQ0AIAMoAlQiA0UNACACIAMRAAAhAAsgAA3ZAgwcCyACQgA3AyBBEiEDDIkDCyABIARHDRZBHSEDDKEDCyABIARHBEAgAUEBaiEBQRAhAwyIAwtBByEDDKADCyACIAIpAyAiCiAEIAFrrSILfSIMQgAgCiAMWhs3AyAgCiALWA3UAkEIIQMMnwMLIAEgBEcEQCACQQk2AgggAiABNgIEQRQhAwyGAwtBCSEDDJ4DCyACKQMgQgBSDccBIAIgAi8BMEGAAXI7ATAMQgsgASAERw0/QdAAIQMMnAMLIAEgBEYEQEELIQMMnAMLIAFBAWohAUEAIQACQCACKAI4IgNFDQAgAygCUCIDRQ0AIAIgAxEAACEACyAADc8CDMYBC0EAIQACQCACKAI4IgNFDQAgAygCSCIDRQ0AIAIgAxEAACEACyAARQ3GASAAQRVHDc0CIAJBCzYCHCACIAE2AhQgAkGCGTYCECACQRU2AgxBACEDDJoDC0EAIQACQCACKAI4IgNFDQAgAygCSCIDRQ0AIAIgAxEAACEACyAARQ0MIABBFUcNygIgAkEaNgIcIAIgATYCFCACQYIZNgIQIAJBFTYCDEEAIQMMmQMLQQAhAAJAIAIoAjgiA0UNACADKAJMIgNFDQAgAiADEQAAIQALIABFDcQBIABBFUcNxwIgAkELNgIcIAIgATYCFCACQZEXNgIQIAJBFTYCDEEAIQMMmAMLIAEgBEYEQEEPIQMMmAMLIAEtAAAiAEE7Rg0HIABBDUcNxAIgAUEBaiEBDMMBC0EAIQACQCACKAI4IgNFDQAgAygCTCIDRQ0AIAIgAxEAACEACyAARQ3DASAAQRVHDcICIAJBDzYCHCACIAE2AhQgAkGRFzYCECACQRU2AgxBACEDDJYDCwNAIAEtAABB8DVqLQAAIgBBAUcEQCAAQQJHDcECIAIoAgQhAEEAIQMgAkEANgIEIAIgACABQQFqIgEQLSIADcICDMUBCyAEIAFBAWoiAUcNAAtBEiEDDJUDC0EAIQACQCACKAI4IgNFDQAgAygCTCIDRQ0AIAIgAxEAACEACyAARQ3FASAAQRVHDb0CIAJBGzYCHCACIAE2AhQgAkGRFzYCECACQRU2AgxBACEDDJQDCyABIARGBEBBFiEDDJQDCyACQQo2AgggAiABNgIEQQAhAAJAIAIoAjgiA0UNACADKAJIIgNFDQAgAiADEQAAIQALIABFDcIBIABBFUcNuQIgAkEVNgIcIAIgATYCFCACQYIZNgIQIAJBFTYCDEEAIQMMkwMLIAEgBEcEQANAIAEtAABB8DdqLQAAIgBBAkcEQAJAIABBAWsOBMQCvQIAvgK9AgsgAUEBaiEBQQghAwz8AgsgBCABQQFqIgFHDQALQRUhAwyTAwtBFSEDDJIDCwNAIAEtAABB8DlqLQAAIgBBAkcEQCAAQQFrDgTFArcCwwK4ArcCCyAEIAFBAWoiAUcNAAtBGCEDDJEDCyABIARHBEAgAkELNgIIIAIgATYCBEEHIQMM+AILQRkhAwyQAwsgAUEBaiEBDAILIAEgBEYEQEEaIQMMjwMLAkAgAS0AAEENaw4UtQG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwEAvwELQQAhAyACQQA2AhwgAkGvCzYCECACQQI2AgwgAiABQQFqNgIUDI4DCyABIARGBEBBGyEDDI4DCyABLQAAIgBBO0cEQCAAQQ1HDbECIAFBAWohAQy6AQsgAUEBaiEBC0EiIQMM8wILIAEgBEYEQEEcIQMMjAMLQgAhCgJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAS0AAEEwaw43wQLAAgABAgMEBQYH0AHQAdAB0AHQAdAB0AEICQoLDA3QAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdABDg8QERIT0AELQgIhCgzAAgtCAyEKDL8CC0IEIQoMvgILQgUhCgy9AgtCBiEKDLwCC0IHIQoMuwILQgghCgy6AgtCCSEKDLkCC0IKIQoMuAILQgshCgy3AgtCDCEKDLYCC0INIQoMtQILQg4hCgy0AgtCDyEKDLMCC0IKIQoMsgILQgshCgyxAgtCDCEKDLACC0INIQoMrwILQg4hCgyuAgtCDyEKDK0CC0IAIQoCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEtAABBMGsON8ACvwIAAQIDBAUGB74CvgK+Ar4CvgK+Ar4CCAkKCwwNvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ag4PEBESE74CC0ICIQoMvwILQgMhCgy+AgtCBCEKDL0CC0IFIQoMvAILQgYhCgy7AgtCByEKDLoCC0IIIQoMuQILQgkhCgy4AgtCCiEKDLcCC0ILIQoMtgILQgwhCgy1AgtCDSEKDLQCC0IOIQoMswILQg8hCgyyAgtCCiEKDLECC0ILIQoMsAILQgwhCgyvAgtCDSEKDK4CC0IOIQoMrQILQg8hCgysAgsgAiACKQMgIgogBCABa60iC30iDEIAIAogDFobNwMgIAogC1gNpwJBHyEDDIkDCyABIARHBEAgAkEJNgIIIAIgATYCBEElIQMM8AILQSAhAwyIAwtBASEFIAIvATAiA0EIcUUEQCACKQMgQgBSIQULAkAgAi0ALgRAQQEhACACLQApQQVGDQEgA0HAAHFFIAVxRQ0BC0EAIQAgA0HAAHENAEECIQAgA0EIcQ0AIANBgARxBEACQCACLQAoQQFHDQAgAi0ALUEKcQ0AQQUhAAwCC0EEIQAMAQsgA0EgcUUEQAJAIAItAChBAUYNACACLwEyIgBB5ABrQeQASQ0AIABBzAFGDQAgAEGwAkYNAEEEIQAgA0EocUUNAiADQYgEcUGABEYNAgtBACEADAELQQBBAyACKQMgUBshAAsgAEEBaw4FvgIAsAEBpAKhAgtBESEDDO0CCyACQQE6AC8MhAMLIAEgBEcNnQJBJCEDDIQDCyABIARHDRxBxgAhAwyDAwtBACEAAkAgAigCOCIDRQ0AIAMoAkQiA0UNACACIAMRAAAhAAsgAEUNJyAAQRVHDZgCIAJB0AA2AhwgAiABNgIUIAJBkRg2AhAgAkEVNgIMQQAhAwyCAwsgASAERgRAQSghAwyCAwtBACEDIAJBADYCBCACQQw2AgggAiABIAEQKiIARQ2UAiACQSc2AhwgAiABNgIUIAIgADYCDAyBAwsgASAERgRAQSkhAwyBAwsgAS0AACIAQSBGDRMgAEEJRw2VAiABQQFqIQEMFAsgASAERwRAIAFBAWohAQwWC0EqIQMM/wILIAEgBEYEQEErIQMM/wILIAEtAAAiAEEJRyAAQSBHcQ2QAiACLQAsQQhHDd0CIAJBADoALAzdAgsgASAERgRAQSwhAwz+AgsgAS0AAEEKRw2OAiABQQFqIQEMsAELIAEgBEcNigJBLyEDDPwCCwNAIAEtAAAiAEEgRwRAIABBCmsOBIQCiAKIAoQChgILIAQgAUEBaiIBRw0AC0ExIQMM+wILQTIhAyABIARGDfoCIAIoAgAiACAEIAFraiEHIAEgAGtBA2ohBgJAA0AgAEHwO2otAAAgAS0AACIFQSByIAUgBUHBAGtB/wFxQRpJG0H/AXFHDQEgAEEDRgRAQQYhAQziAgsgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAc2AgAM+wILIAJBADYCAAyGAgtBMyEDIAQgASIARg35AiAEIAFrIAIoAgAiAWohByAAIAFrQQhqIQYCQANAIAFB9DtqLQAAIAAtAAAiBUEgciAFIAVBwQBrQf8BcUEaSRtB/wFxRw0BIAFBCEYEQEEFIQEM4QILIAFBAWohASAEIABBAWoiAEcNAAsgAiAHNgIADPoCCyACQQA2AgAgACEBDIUCC0E0IQMgBCABIgBGDfgCIAQgAWsgAigCACIBaiEHIAAgAWtBBWohBgJAA0AgAUHQwgBqLQAAIAAtAAAiBUEgciAFIAVBwQBrQf8BcUEaSRtB/wFxRw0BIAFBBUYEQEEHIQEM4AILIAFBAWohASAEIABBAWoiAEcNAAsgAiAHNgIADPkCCyACQQA2AgAgACEBDIQCCyABIARHBEADQCABLQAAQYA+ai0AACIAQQFHBEAgAEECRg0JDIECCyAEIAFBAWoiAUcNAAtBMCEDDPgCC0EwIQMM9wILIAEgBEcEQANAIAEtAAAiAEEgRwRAIABBCmsOBP8B/gH+Af8B/gELIAQgAUEBaiIBRw0AC0E4IQMM9wILQTghAwz2AgsDQCABLQAAIgBBIEcgAEEJR3EN9gEgBCABQQFqIgFHDQALQTwhAwz1AgsDQCABLQAAIgBBIEcEQAJAIABBCmsOBPkBBAT5AQALIABBLEYN9QEMAwsgBCABQQFqIgFHDQALQT8hAwz0AgtBwAAhAyABIARGDfMCIAIoAgAiACAEIAFraiEFIAEgAGtBBmohBgJAA0AgAEGAQGstAAAgAS0AAEEgckcNASAAQQZGDdsCIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADPQCCyACQQA2AgALQTYhAwzZAgsgASAERgRAQcEAIQMM8gILIAJBDDYCCCACIAE2AgQgAi0ALEEBaw4E+wHuAewB6wHUAgsgAUEBaiEBDPoBCyABIARHBEADQAJAIAEtAAAiAEEgciAAIABBwQBrQf8BcUEaSRtB/wFxIgBBCUYNACAAQSBGDQACQAJAAkACQCAAQeMAaw4TAAMDAwMDAwMBAwMDAwMDAwMDAgMLIAFBAWohAUExIQMM3AILIAFBAWohAUEyIQMM2wILIAFBAWohAUEzIQMM2gILDP4BCyAEIAFBAWoiAUcNAAtBNSEDDPACC0E1IQMM7wILIAEgBEcEQANAIAEtAABBgDxqLQAAQQFHDfcBIAQgAUEBaiIBRw0AC0E9IQMM7wILQT0hAwzuAgtBACEAAkAgAigCOCIDRQ0AIAMoAkAiA0UNACACIAMRAAAhAAsgAEUNASAAQRVHDeYBIAJBwgA2AhwgAiABNgIUIAJB4xg2AhAgAkEVNgIMQQAhAwztAgsgAUEBaiEBC0E8IQMM0gILIAEgBEYEQEHCACEDDOsCCwJAA0ACQCABLQAAQQlrDhgAAswCzALRAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAgDMAgsgBCABQQFqIgFHDQALQcIAIQMM6wILIAFBAWohASACLQAtQQFxRQ3+AQtBLCEDDNACCyABIARHDd4BQcQAIQMM6AILA0AgAS0AAEGQwABqLQAAQQFHDZwBIAQgAUEBaiIBRw0AC0HFACEDDOcCCyABLQAAIgBBIEYN/gEgAEE6Rw3AAiACKAIEIQBBACEDIAJBADYCBCACIAAgARApIgAN3gEM3QELQccAIQMgBCABIgBGDeUCIAQgAWsgAigCACIBaiEHIAAgAWtBBWohBgNAIAFBkMIAai0AACAALQAAIgVBIHIgBSAFQcEAa0H/AXFBGkkbQf8BcUcNvwIgAUEFRg3CAiABQQFqIQEgBCAAQQFqIgBHDQALIAIgBzYCAAzlAgtByAAhAyAEIAEiAEYN5AIgBCABayACKAIAIgFqIQcgACABa0EJaiEGA0AgAUGWwgBqLQAAIAAtAAAiBUEgciAFIAVBwQBrQf8BcUEaSRtB/wFxRw2+AkECIAFBCUYNwgIaIAFBAWohASAEIABBAWoiAEcNAAsgAiAHNgIADOQCCyABIARGBEBByQAhAwzkAgsCQAJAIAEtAAAiAEEgciAAIABBwQBrQf8BcUEaSRtB/wFxQe4Aaw4HAL8CvwK/Ar8CvwIBvwILIAFBAWohAUE+IQMMywILIAFBAWohAUE/IQMMygILQcoAIQMgBCABIgBGDeICIAQgAWsgAigCACIBaiEGIAAgAWtBAWohBwNAIAFBoMIAai0AACAALQAAIgVBIHIgBSAFQcEAa0H/AXFBGkkbQf8BcUcNvAIgAUEBRg2+AiABQQFqIQEgBCAAQQFqIgBHDQALIAIgBjYCAAziAgtBywAhAyAEIAEiAEYN4QIgBCABayACKAIAIgFqIQcgACABa0EOaiEGA0AgAUGiwgBqLQAAIAAtAAAiBUEgciAFIAVBwQBrQf8BcUEaSRtB/wFxRw27AiABQQ5GDb4CIAFBAWohASAEIABBAWoiAEcNAAsgAiAHNgIADOECC0HMACEDIAQgASIARg3gAiAEIAFrIAIoAgAiAWohByAAIAFrQQ9qIQYDQCABQcDCAGotAAAgAC0AACIFQSByIAUgBUHBAGtB/wFxQRpJG0H/AXFHDboCQQMgAUEPRg2+AhogAUEBaiEBIAQgAEEBaiIARw0ACyACIAc2AgAM4AILQc0AIQMgBCABIgBGDd8CIAQgAWsgAigCACIBaiEHIAAgAWtBBWohBgNAIAFB0MIAai0AACAALQAAIgVBIHIgBSAFQcEAa0H/AXFBGkkbQf8BcUcNuQJBBCABQQVGDb0CGiABQQFqIQEgBCAAQQFqIgBHDQALIAIgBzYCAAzfAgsgASAERgRAQc4AIQMM3wILAkACQAJAAkAgAS0AACIAQSByIAAgAEHBAGtB/wFxQRpJG0H/AXFB4wBrDhMAvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCAbwCvAK8AgIDvAILIAFBAWohAUHBACEDDMgCCyABQQFqIQFBwgAhAwzHAgsgAUEBaiEBQcMAIQMMxgILIAFBAWohAUHEACEDDMUCCyABIARHBEAgAkENNgIIIAIgATYCBEHFACEDDMUCC0HPACEDDN0CCwJAAkAgAS0AAEEKaw4EAZABkAEAkAELIAFBAWohAQtBKCEDDMMCCyABIARGBEBB0QAhAwzcAgsgAS0AAEEgRw0AIAFBAWohASACLQAtQQFxRQ3QAQtBFyEDDMECCyABIARHDcsBQdIAIQMM2QILQdMAIQMgASAERg3YAiACKAIAIgAgBCABa2ohBiABIABrQQFqIQUDQCABLQAAIABB1sIAai0AAEcNxwEgAEEBRg3KASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBjYCAAzYAgsgASAERgRAQdUAIQMM2AILIAEtAABBCkcNwgEgAUEBaiEBDMoBCyABIARGBEBB1gAhAwzXAgsCQAJAIAEtAABBCmsOBADDAcMBAcMBCyABQQFqIQEMygELIAFBAWohAUHKACEDDL0CC0EAIQACQCACKAI4IgNFDQAgAygCPCIDRQ0AIAIgAxEAACEACyAADb8BQc0AIQMMvAILIAItAClBIkYNzwIMiQELIAQgASIFRgRAQdsAIQMM1AILQQAhAEEBIQFBASEGQQAhAwJAAn8CQAJAAkACQAJAAkACQCAFLQAAQTBrDgrFAcQBAAECAwQFBgjDAQtBAgwGC0EDDAULQQQMBAtBBQwDC0EGDAILQQcMAQtBCAshA0EAIQFBACEGDL0BC0EJIQNBASEAQQAhAUEAIQYMvAELIAEgBEYEQEHdACEDDNMCCyABLQAAQS5HDbgBIAFBAWohAQyIAQsgASAERw22AUHfACEDDNECCyABIARHBEAgAkEONgIIIAIgATYCBEHQACEDDLgCC0HgACEDDNACC0HhACEDIAEgBEYNzwIgAigCACIAIAQgAWtqIQUgASAAa0EDaiEGA0AgAS0AACAAQeLCAGotAABHDbEBIABBA0YNswEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMzwILQeIAIQMgASAERg3OAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYDQCABLQAAIABB5sIAai0AAEcNsAEgAEECRg2vASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAzOAgtB4wAhAyABIARGDc0CIAIoAgAiACAEIAFraiEFIAEgAGtBA2ohBgNAIAEtAAAgAEHpwgBqLQAARw2vASAAQQNGDa0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADM0CCyABIARGBEBB5QAhAwzNAgsgAUEBaiEBQQAhAAJAIAIoAjgiA0UNACADKAIwIgNFDQAgAiADEQAAIQALIAANqgFB1gAhAwyzAgsgASAERwRAA0AgAS0AACIAQSBHBEACQAJAAkAgAEHIAGsOCwABswGzAbMBswGzAbMBswGzAQKzAQsgAUEBaiEBQdIAIQMMtwILIAFBAWohAUHTACEDDLYCCyABQQFqIQFB1AAhAwy1AgsgBCABQQFqIgFHDQALQeQAIQMMzAILQeQAIQMMywILA0AgAS0AAEHwwgBqLQAAIgBBAUcEQCAAQQJrDgOnAaYBpQGkAQsgBCABQQFqIgFHDQALQeYAIQMMygILIAFBAWogASAERw0CGkHnACEDDMkCCwNAIAEtAABB8MQAai0AACIAQQFHBEACQCAAQQJrDgSiAaEBoAEAnwELQdcAIQMMsQILIAQgAUEBaiIBRw0AC0HoACEDDMgCCyABIARGBEBB6QAhAwzIAgsCQCABLQAAIgBBCmsOGrcBmwGbAbQBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBpAGbAZsBAJkBCyABQQFqCyEBQQYhAwytAgsDQCABLQAAQfDGAGotAABBAUcNfSAEIAFBAWoiAUcNAAtB6gAhAwzFAgsgAUEBaiABIARHDQIaQesAIQMMxAILIAEgBEYEQEHsACEDDMQCCyABQQFqDAELIAEgBEYEQEHtACEDDMMCCyABQQFqCyEBQQQhAwyoAgsgASAERgRAQe4AIQMMwQILAkACQAJAIAEtAABB8MgAai0AAEEBaw4HkAGPAY4BAHwBAo0BCyABQQFqIQEMCwsgAUEBagyTAQtBACEDIAJBADYCHCACQZsSNgIQIAJBBzYCDCACIAFBAWo2AhQMwAILAkADQCABLQAAQfDIAGotAAAiAEEERwRAAkACQCAAQQFrDgeUAZMBkgGNAQAEAY0BC0HaACEDDKoCCyABQQFqIQFB3AAhAwypAgsgBCABQQFqIgFHDQALQe8AIQMMwAILIAFBAWoMkQELIAQgASIARgRAQfAAIQMMvwILIAAtAABBL0cNASAAQQFqIQEMBwsgBCABIgBGBEBB8QAhAwy+AgsgAC0AACIBQS9GBEAgAEEBaiEBQd0AIQMMpQILIAFBCmsiA0EWSw0AIAAhAUEBIAN0QYmAgAJxDfkBC0EAIQMgAkEANgIcIAIgADYCFCACQYwcNgIQIAJBBzYCDAy8AgsgASAERwRAIAFBAWohAUHeACEDDKMCC0HyACEDDLsCCyABIARGBEBB9AAhAwy7AgsCQCABLQAAQfDMAGotAABBAWsOA/cBcwCCAQtB4QAhAwyhAgsgASAERwRAA0AgAS0AAEHwygBqLQAAIgBBA0cEQAJAIABBAWsOAvkBAIUBC0HfACEDDKMCCyAEIAFBAWoiAUcNAAtB8wAhAwy6AgtB8wAhAwy5AgsgASAERwRAIAJBDzYCCCACIAE2AgRB4AAhAwygAgtB9QAhAwy4AgsgASAERgRAQfYAIQMMuAILIAJBDzYCCCACIAE2AgQLQQMhAwydAgsDQCABLQAAQSBHDY4CIAQgAUEBaiIBRw0AC0H3ACEDDLUCCyABIARGBEBB+AAhAwy1AgsgAS0AAEEgRw16IAFBAWohAQxbC0EAIQACQCACKAI4IgNFDQAgAygCOCIDRQ0AIAIgAxEAACEACyAADXgMgAILIAEgBEYEQEH6ACEDDLMCCyABLQAAQcwARw10IAFBAWohAUETDHYLQfsAIQMgASAERg2xAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYDQCABLQAAIABB8M4Aai0AAEcNcyAAQQVGDXUgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMsQILIAEgBEYEQEH8ACEDDLECCwJAAkAgAS0AAEHDAGsODAB0dHR0dHR0dHR0AXQLIAFBAWohAUHmACEDDJgCCyABQQFqIQFB5wAhAwyXAgtB/QAhAyABIARGDa8CIAIoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQe3PAGotAABHDXIgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADLACCyACQQA2AgAgBkEBaiEBQRAMcwtB/gAhAyABIARGDa4CIAIoAgAiACAEIAFraiEFIAEgAGtBBWohBgJAA0AgAS0AACAAQfbOAGotAABHDXEgAEEFRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADK8CCyACQQA2AgAgBkEBaiEBQRYMcgtB/wAhAyABIARGDa0CIAIoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQfzOAGotAABHDXAgAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADK4CCyACQQA2AgAgBkEBaiEBQQUMcQsgASAERgRAQYABIQMMrQILIAEtAABB2QBHDW4gAUEBaiEBQQgMcAsgASAERgRAQYEBIQMMrAILAkACQCABLQAAQc4Aaw4DAG8BbwsgAUEBaiEBQesAIQMMkwILIAFBAWohAUHsACEDDJICCyABIARGBEBBggEhAwyrAgsCQAJAIAEtAABByABrDggAbm5ubm5uAW4LIAFBAWohAUHqACEDDJICCyABQQFqIQFB7QAhAwyRAgtBgwEhAyABIARGDakCIAIoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQYDPAGotAABHDWwgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADKoCCyACQQA2AgAgBkEBaiEBQQAMbQtBhAEhAyABIARGDagCIAIoAgAiACAEIAFraiEFIAEgAGtBBGohBgJAA0AgAS0AACAAQYPPAGotAABHDWsgAEEERg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADKkCCyACQQA2AgAgBkEBaiEBQSMMbAsgASAERgRAQYUBIQMMqAILAkACQCABLQAAQcwAaw4IAGtra2trawFrCyABQQFqIQFB7wAhAwyPAgsgAUEBaiEBQfAAIQMMjgILIAEgBEYEQEGGASEDDKcCCyABLQAAQcUARw1oIAFBAWohAQxgC0GHASEDIAEgBEYNpQIgAigCACIAIAQgAWtqIQUgASAAa0EDaiEGAkADQCABLQAAIABBiM8Aai0AAEcNaCAAQQNGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMpgILIAJBADYCACAGQQFqIQFBLQxpC0GIASEDIAEgBEYNpAIgAigCACIAIAQgAWtqIQUgASAAa0EIaiEGAkADQCABLQAAIABB0M8Aai0AAEcNZyAAQQhGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMpQILIAJBADYCACAGQQFqIQFBKQxoCyABIARGBEBBiQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEVDF8LQZIBIQMgASAERg2aAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGhzwBqLQAARw1dIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAybAgsgAkEANgIAIAZBAWohAUEeDF4LIAEgBEYEQEGTASEDDJoCCyABLQAAQcwARw1bIAFBAWohAUEKDF0LIAEgBEYEQEGUASEDDJkCCwJAAkAgAS0AAEHBAGsODwBcXFxcXFxcXFxcXFxcAVwLIAFBAWohAUH+ACEDDIACCyABQQFqIQFB/wAhAwz/AQsgASAERgRAQZUBIQMMmAILAkACQCABLQAAQcEAaw4DAFsBWwsgAUEBaiEBQf0AIQMM/wELIAFBAWohAUGAASEDDP4BC0GWASEDIAEgBEYNlgIgAigCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBp88Aai0AAEcNWSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMlwILIAJBADYCACAGQQFqIQFBCwxaCyABIARGBEBBlwEhAwyWAgsCQAJAAkACQCABLQAAQS1rDiMAW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1sBW1tbW1sCW1tbA1sLIAFBAWohAUH7ACEDDP8BCyABQQFqIQFB/AAhAwz+AQsgAUEBaiEBQYEBIQMM/QELIAFBAWohAUGCASEDDPwBC0GYASEDIAEgBEYNlAIgAigCACIAIAQgAWtqIQUgASAAa0EEaiEGAkADQCABLQAAIABBqc8Aai0AAEcNVyAAQQRGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMlQILIAJBADYCACAGQQFqIQFBGQxYC0GZASEDIAEgBEYNkwIgAigCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABBrs8Aai0AAEcNViAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMlAILIAJBADYCACAGQQFqIQFBBgxXC0GaASEDIAEgBEYNkgIgAigCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBtM8Aai0AAEcNVSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMkwILIAJBADYCACAGQQFqIQFBHAxWC0GbASEDIAEgBEYNkQIgAigCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBts8Aai0AAEcNVCAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMkgILIAJBADYCACAGQQFqIQFBJwxVCyABIARGBEBBnAEhAwyRAgsCQAJAIAEtAABB1ABrDgIAAVQLIAFBAWohAUGGASEDDPgBCyABQQFqIQFBhwEhAwz3AQtBnQEhAyABIARGDY8CIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQbjPAGotAABHDVIgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADJACCyACQQA2AgAgBkEBaiEBQSYMUwtBngEhAyABIARGDY4CIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQbrPAGotAABHDVEgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADI8CCyACQQA2AgAgBkEBaiEBQQMMUgtBnwEhAyABIARGDY0CIAIoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQe3PAGotAABHDVAgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADI4CCyACQQA2AgAgBkEBaiEBQQwMUQtBoAEhAyABIARGDYwCIAIoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQbzPAGotAABHDU8gAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADI0CCyACQQA2AgAgBkEBaiEBQQ0MUAsgASAERgRAQaEBIQMMjAILAkACQCABLQAAQcYAaw4LAE9PT09PT09PTwFPCyABQQFqIQFBiwEhAwzzAQsgAUEBaiEBQYwBIQMM8gELIAEgBEYEQEGiASEDDIsCCyABLQAAQdAARw1MIAFBAWohAQxGCyABIARGBEBBowEhAwyKAgsCQAJAIAEtAABByQBrDgcBTU1NTU0ATQsgAUEBaiEBQY4BIQMM8QELIAFBAWohAUEiDE0LQaQBIQMgASAERg2IAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHAzwBqLQAARw1LIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyJAgsgAkEANgIAIAZBAWohAUEdDEwLIAEgBEYEQEGlASEDDIgCCwJAAkAgAS0AAEHSAGsOAwBLAUsLIAFBAWohAUGQASEDDO8BCyABQQFqIQFBBAxLCyABIARGBEBBpgEhAwyHAgsCQAJAAkACQAJAIAEtAABBwQBrDhUATU1NTU1NTU1NTQFNTQJNTQNNTQRNCyABQQFqIQFBiAEhAwzxAQsgAUEBaiEBQYkBIQMM8AELIAFBAWohAUGKASEDDO8BCyABQQFqIQFBjwEhAwzuAQsgAUEBaiEBQZEBIQMM7QELQacBIQMgASAERg2FAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHtzwBqLQAARw1IIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyGAgsgAkEANgIAIAZBAWohAUERDEkLQagBIQMgASAERg2EAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHCzwBqLQAARw1HIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyFAgsgAkEANgIAIAZBAWohAUEsDEgLQakBIQMgASAERg2DAiACKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANAIAEtAAAgAEHFzwBqLQAARw1GIABBBEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyEAgsgAkEANgIAIAZBAWohAUErDEcLQaoBIQMgASAERg2CAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHKzwBqLQAARw1FIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyDAgsgAkEANgIAIAZBAWohAUEUDEYLIAEgBEYEQEGrASEDDIICCwJAAkACQAJAIAEtAABBwgBrDg8AAQJHR0dHR0dHR0dHRwNHCyABQQFqIQFBkwEhAwzrAQsgAUEBaiEBQZQBIQMM6gELIAFBAWohAUGVASEDDOkBCyABQQFqIQFBlgEhAwzoAQsgASAERgRAQawBIQMMgQILIAEtAABBxQBHDUIgAUEBaiEBDD0LQa0BIQMgASAERg3/ASACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHNzwBqLQAARw1CIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyAAgsgAkEANgIAIAZBAWohAUEODEMLIAEgBEYEQEGuASEDDP8BCyABLQAAQdAARw1AIAFBAWohAUElDEILQa8BIQMgASAERg39ASACKAIAIgAgBCABa2ohBSABIABrQQhqIQYCQANAIAEtAAAgAEHQzwBqLQAARw1AIABBCEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAz+AQsgAkEANgIAIAZBAWohAUEqDEELIAEgBEYEQEGwASEDDP0BCwJAAkAgAS0AAEHVAGsOCwBAQEBAQEBAQEABQAsgAUEBaiEBQZoBIQMM5AELIAFBAWohAUGbASEDDOMBCyABIARGBEBBsQEhAwz8AQsCQAJAIAEtAABBwQBrDhQAPz8/Pz8/Pz8/Pz8/Pz8/Pz8/AT8LIAFBAWohAUGZASEDDOMBCyABQQFqIQFBnAEhAwziAQtBsgEhAyABIARGDfoBIAIoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQdnPAGotAABHDT0gAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADPsBCyACQQA2AgAgBkEBaiEBQSEMPgtBswEhAyABIARGDfkBIAIoAgAiACAEIAFraiEFIAEgAGtBBmohBgJAA0AgAS0AACAAQd3PAGotAABHDTwgAEEGRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADPoBCyACQQA2AgAgBkEBaiEBQRoMPQsgASAERgRAQbQBIQMM+QELAkACQAJAIAEtAABBxQBrDhEAPT09PT09PT09AT09PT09Aj0LIAFBAWohAUGdASEDDOEBCyABQQFqIQFBngEhAwzgAQsgAUEBaiEBQZ8BIQMM3wELQbUBIQMgASAERg33ASACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEHkzwBqLQAARw06IABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAz4AQsgAkEANgIAIAZBAWohAUEoDDsLQbYBIQMgASAERg32ASACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHqzwBqLQAARw05IABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAz3AQsgAkEANgIAIAZBAWohAUEHDDoLIAEgBEYEQEG3ASEDDPYBCwJAAkAgAS0AAEHFAGsODgA5OTk5OTk5OTk5OTkBOQsgAUEBaiEBQaEBIQMM3QELIAFBAWohAUGiASEDDNwBC0G4ASEDIAEgBEYN9AEgAigCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABB7c8Aai0AAEcNNyAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAM9QELIAJBADYCACAGQQFqIQFBEgw4C0G5ASEDIAEgBEYN8wEgAigCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABB8M8Aai0AAEcNNiAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAM9AELIAJBADYCACAGQQFqIQFBIAw3C0G6ASEDIAEgBEYN8gEgAigCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABB8s8Aai0AAEcNNSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAM8wELIAJBADYCACAGQQFqIQFBDww2CyABIARGBEBBuwEhAwzyAQsCQAJAIAEtAABByQBrDgcANTU1NTUBNQsgAUEBaiEBQaUBIQMM2QELIAFBAWohAUGmASEDDNgBC0G8ASEDIAEgBEYN8AEgAigCACIAIAQgAWtqIQUgASAAa0EHaiEGAkADQCABLQAAIABB9M8Aai0AAEcNMyAAQQdGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAM8QELIAJBADYCACAGQQFqIQFBGww0CyABIARGBEBBvQEhAwzwAQsCQAJAAkAgAS0AAEHCAGsOEgA0NDQ0NDQ0NDQBNDQ0NDQ0AjQLIAFBAWohAUGkASEDDNgBCyABQQFqIQFBpwEhAwzXAQsgAUEBaiEBQagBIQMM1gELIAEgBEYEQEG+ASEDDO8BCyABLQAAQc4ARw0wIAFBAWohAQwsCyABIARGBEBBvwEhAwzuAQsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABLQAAQcEAaw4VAAECAz8EBQY/Pz8HCAkKCz8MDQ4PPwsgAUEBaiEBQegAIQMM4wELIAFBAWohAUHpACEDDOIBCyABQQFqIQFB7gAhAwzhAQsgAUEBaiEBQfIAIQMM4AELIAFBAWohAUHzACEDDN8BCyABQQFqIQFB9gAhAwzeAQsgAUEBaiEBQfcAIQMM3QELIAFBAWohAUH6ACEDDNwBCyABQQFqIQFBgwEhAwzbAQsgAUEBaiEBQYQBIQMM2gELIAFBAWohAUGFASEDDNkBCyABQQFqIQFBkgEhAwzYAQsgAUEBaiEBQZgBIQMM1wELIAFBAWohAUGgASEDDNYBCyABQQFqIQFBowEhAwzVAQsgAUEBaiEBQaoBIQMM1AELIAEgBEcEQCACQRA2AgggAiABNgIEQasBIQMM1AELQcABIQMM7AELQQAhAAJAIAIoAjgiA0UNACADKAI0IgNFDQAgAiADEQAAIQALIABFDV4gAEEVRw0HIAJB0QA2AhwgAiABNgIUIAJBsBc2AhAgAkEVNgIMQQAhAwzrAQsgAUEBaiABIARHDQgaQcIBIQMM6gELA0ACQCABLQAAQQprDgQIAAALAAsgBCABQQFqIgFHDQALQcMBIQMM6QELIAEgBEcEQCACQRE2AgggAiABNgIEQQEhAwzQAQtBxAEhAwzoAQsgASAERgRAQcUBIQMM6AELAkACQCABLQAAQQprDgQBKCgAKAsgAUEBagwJCyABQQFqDAULIAEgBEYEQEHGASEDDOcBCwJAAkAgAS0AAEEKaw4XAQsLAQsLCwsLCwsLCwsLCwsLCwsLCwALCyABQQFqIQELQbABIQMMzQELIAEgBEYEQEHIASEDDOYBCyABLQAAQSBHDQkgAkEAOwEyIAFBAWohAUGzASEDDMwBCwNAIAEhAAJAIAEgBEcEQCABLQAAQTBrQf8BcSIDQQpJDQEMJwtBxwEhAwzmAQsCQCACLwEyIgFBmTNLDQAgAiABQQpsIgU7ATIgBUH+/wNxIANB//8Dc0sNACAAQQFqIQEgAiADIAVqIgM7ATIgA0H//wNxQegHSQ0BCwtBACEDIAJBADYCHCACQcEJNgIQIAJBDTYCDCACIABBAWo2AhQM5AELIAJBADYCHCACIAE2AhQgAkHwDDYCECACQRs2AgxBACEDDOMBCyACKAIEIQAgAkEANgIEIAIgACABECYiAA0BIAFBAWoLIQFBrQEhAwzIAQsgAkHBATYCHCACIAA2AgwgAiABQQFqNgIUQQAhAwzgAQsgAigCBCEAIAJBADYCBCACIAAgARAmIgANASABQQFqCyEBQa4BIQMMxQELIAJBwgE2AhwgAiAANgIMIAIgAUEBajYCFEEAIQMM3QELIAJBADYCHCACIAE2AhQgAkGXCzYCECACQQ02AgxBACEDDNwBCyACQQA2AhwgAiABNgIUIAJB4xA2AhAgAkEJNgIMQQAhAwzbAQsgAkECOgAoDKwBC0EAIQMgAkEANgIcIAJBrws2AhAgAkECNgIMIAIgAUEBajYCFAzZAQtBAiEDDL8BC0ENIQMMvgELQSYhAwy9AQtBFSEDDLwBC0EWIQMMuwELQRghAwy6AQtBHCEDDLkBC0EdIQMMuAELQSAhAwy3AQtBISEDDLYBC0EjIQMMtQELQcYAIQMMtAELQS4hAwyzAQtBPSEDDLIBC0HLACEDDLEBC0HOACEDDLABC0HYACEDDK8BC0HZACEDDK4BC0HbACEDDK0BC0HxACEDDKwBC0H0ACEDDKsBC0GNASEDDKoBC0GXASEDDKkBC0GpASEDDKgBC0GvASEDDKcBC0GxASEDDKYBCyACQQA2AgALQQAhAyACQQA2AhwgAiABNgIUIAJB8Rs2AhAgAkEGNgIMDL0BCyACQQA2AgAgBkEBaiEBQSQLOgApIAIoAgQhACACQQA2AgQgAiAAIAEQJyIARQRAQeUAIQMMowELIAJB+QA2AhwgAiABNgIUIAIgADYCDEEAIQMMuwELIABBFUcEQCACQQA2AhwgAiABNgIUIAJBzA42AhAgAkEgNgIMQQAhAwy7AQsgAkH4ADYCHCACIAE2AhQgAkHKGDYCECACQRU2AgxBACEDDLoBCyACQQA2AhwgAiABNgIUIAJBjhs2AhAgAkEGNgIMQQAhAwy5AQsgAkEANgIcIAIgATYCFCACQf4RNgIQIAJBBzYCDEEAIQMMuAELIAJBADYCHCACIAE2AhQgAkGMHDYCECACQQc2AgxBACEDDLcBCyACQQA2AhwgAiABNgIUIAJBww82AhAgAkEHNgIMQQAhAwy2AQsgAkEANgIcIAIgATYCFCACQcMPNgIQIAJBBzYCDEEAIQMMtQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxBACEDDKIBCyACQeQANgIcIAIgATYCFCACQeMXNgIQIAJBFTYCDEEAIQMMoQELIAJBADYCACAGQQFqIQEgAi0AKSIAQSNrQQtJDQQCQCAAQQZLDQBBASAAdEHKAHFFDQAMBQtBACEDIAJBADYCHCACIAE2AhQgAkH3CTYCECACQQg2AgwMoAELIAJBADYCACAGQQFqIQEgAi0AKUEhRg0DIAJBADYCHCACIAE2AhQgAkGbCjYCECACQQg2AgxBACEDDJ8BCyACQQA2AgALQQAhAyACQQA2AhwgAiABNgIUIAJBkDM2AhAgAkEINgIMDJ0BCyACQQA2AgAgBkEBaiEBIAItAClBI0kNACACQQA2AhwgAiABNgIUIAJB0wk2AhAgAkEINgIMQQAhAwycAQtB0QAhAwyCAQsgAS0AAEEwayIAQf8BcUEKSQRAIAIgADoAKiABQQFqIQFBzwAhAwyCAQsgAigCBCEAIAJBADYCBCACIAAgARAoIgBFDYYBIAJB3gA2AhwgAiABNgIUIAIgADYCDEEAIQMMmgELIAIoAgQhACACQQA2AgQgAiAAIAEQKCIARQ2GASACQdwANgIcIAIgATYCFCACIAA2AgxBACEDDJkBCyACKAIEIQAgAkEANgIEIAIgACAFECgiAEUEQCAFIQEMhwELIAJB2gA2AhwgAiAFNgIUIAIgADYCDAyYAQtBACEBQQEhAwsgAiADOgArIAVBAWohAwJAAkACQCACLQAtQRBxDQACQAJAAkAgAi0AKg4DAQACBAsgBkUNAwwCCyAADQEMAgsgAUUNAQsgAigCBCEAIAJBADYCBCACIAAgAxAoIgBFBEAgAyEBDAILIAJB2AA2AhwgAiADNgIUIAIgADYCDEEAIQMMmAELIAIoAgQhACACQQA2AgQgAiAAIAMQKCIARQRAIAMhAQyHAQsgAkHZADYCHCACIAM2AhQgAiAANgIMQQAhAwyXAQtBzAAhAwx9CyAAQRVHBEAgAkEANgIcIAIgATYCFCACQZQNNgIQIAJBITYCDEEAIQMMlgELIAJB1wA2AhwgAiABNgIUIAJByRc2AhAgAkEVNgIMQQAhAwyVAQtBACEDIAJBADYCHCACIAE2AhQgAkGAETYCECACQQk2AgwMlAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0AIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMkwELQckAIQMMeQsgAkEANgIcIAIgATYCFCACQcEoNgIQIAJBBzYCDCACQQA2AgBBACEDDJEBCyACKAIEIQBBACEDIAJBADYCBCACIAAgARAlIgBFDQAgAkHSADYCHCACIAE2AhQgAiAANgIMDJABC0HIACEDDHYLIAJBADYCACAFIQELIAJBgBI7ASogAUEBaiEBQQAhAAJAIAIoAjgiA0UNACADKAIwIgNFDQAgAiADEQAAIQALIAANAQtBxwAhAwxzCyAAQRVGBEAgAkHRADYCHCACIAE2AhQgAkHjFzYCECACQRU2AgxBACEDDIwBC0EAIQMgAkEANgIcIAIgATYCFCACQbkNNgIQIAJBGjYCDAyLAQtBACEDIAJBADYCHCACIAE2AhQgAkGgGTYCECACQR42AgwMigELIAEtAABBOkYEQCACKAIEIQBBACEDIAJBADYCBCACIAAgARApIgBFDQEgAkHDADYCHCACIAA2AgwgAiABQQFqNgIUDIoBC0EAIQMgAkEANgIcIAIgATYCFCACQbERNgIQIAJBCjYCDAyJAQsgAUEBaiEBQTshAwxvCyACQcMANgIcIAIgADYCDCACIAFBAWo2AhQMhwELQQAhAyACQQA2AhwgAiABNgIUIAJB8A42AhAgAkEcNgIMDIYBCyACIAIvATBBEHI7ATAMZgsCQCACLwEwIgBBCHFFDQAgAi0AKEEBRw0AIAItAC1BCHFFDQMLIAIgAEH3+wNxQYAEcjsBMAwECyABIARHBEACQANAIAEtAABBMGsiAEH/AXFBCk8EQEE1IQMMbgsgAikDICIKQpmz5syZs+bMGVYNASACIApCCn4iCjcDICAKIACtQv8BgyILQn+FVg0BIAIgCiALfDcDICAEIAFBAWoiAUcNAAtBOSEDDIUBCyACKAIEIQBBACEDIAJBADYCBCACIAAgAUEBaiIBECoiAA0MDHcLQTkhAwyDAQsgAi0AMEEgcQ0GQcUBIQMMaQtBACEDIAJBADYCBCACIAEgARAqIgBFDQQgAkE6NgIcIAIgADYCDCACIAFBAWo2AhQMgQELIAItAChBAUcNACACLQAtQQhxRQ0BC0E3IQMMZgsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQKiIABEAgAkE7NgIcIAIgADYCDCACIAFBAWo2AhQMfwsgAUEBaiEBDG4LIAJBCDoALAwECyABQQFqIQEMbQtBACEDIAJBADYCHCACIAE2AhQgAkHkEjYCECACQQQ2AgwMewsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQKiIARQ1sIAJBNzYCHCACIAE2AhQgAiAANgIMDHoLIAIgAi8BMEEgcjsBMAtBMCEDDF8LIAJBNjYCHCACIAE2AhQgAiAANgIMDHcLIABBLEcNASABQQFqIQBBASEBAkACQAJAAkACQCACLQAsQQVrDgQDAQIEAAsgACEBDAQLQQIhAQwBC0EEIQELIAJBAToALCACIAIvATAgAXI7ATAgACEBDAELIAIgAi8BMEEIcjsBMCAAIQELQTkhAwxcCyACQQA6ACwLQTQhAwxaCyABIARGBEBBLSEDDHMLAkACQANAAkAgAS0AAEEKaw4EAgAAAwALIAQgAUEBaiIBRw0AC0EtIQMMdAsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQKiIARQ0CIAJBLDYCHCACIAE2AhQgAiAANgIMDHMLIAIoAgQhAEEAIQMgAkEANgIEIAIgACABECoiAEUEQCABQQFqIQEMAgsgAkEsNgIcIAIgADYCDCACIAFBAWo2AhQMcgsgAS0AAEENRgRAIAIoAgQhAEEAIQMgAkEANgIEIAIgACABECoiAEUEQCABQQFqIQEMAgsgAkEsNgIcIAIgADYCDCACIAFBAWo2AhQMcgsgAi0ALUEBcQRAQcQBIQMMWQsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQKiIADQEMZQtBLyEDDFcLIAJBLjYCHCACIAE2AhQgAiAANgIMDG8LQQAhAyACQQA2AhwgAiABNgIUIAJB8BQ2AhAgAkEDNgIMDG4LQQEhAwJAAkACQAJAIAItACxBBWsOBAMBAgAECyACIAIvATBBCHI7ATAMAwtBAiEDDAELQQQhAwsgAkEBOgAsIAIgAi8BMCADcjsBMAtBKiEDDFMLQQAhAyACQQA2AhwgAiABNgIUIAJB4Q82AhAgAkEKNgIMDGsLQQEhAwJAAkACQAJAAkACQCACLQAsQQJrDgcFBAQDAQIABAsgAiACLwEwQQhyOwEwDAMLQQIhAwwBC0EEIQMLIAJBAToALCACIAIvATAgA3I7ATALQSshAwxSC0EAIQMgAkEANgIcIAIgATYCFCACQasSNgIQIAJBCzYCDAxqC0EAIQMgAkEANgIcIAIgATYCFCACQf0NNgIQIAJBHTYCDAxpCyABIARHBEADQCABLQAAQSBHDUggBCABQQFqIgFHDQALQSUhAwxpC0ElIQMMaAsgAi0ALUEBcQRAQcMBIQMMTwsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQKSIABEAgAkEmNgIcIAIgADYCDCACIAFBAWo2AhQMaAsgAUEBaiEBDFwLIAFBAWohASACLwEwIgBBgAFxBEBBACEAAkAgAigCOCIDRQ0AIAMoAlQiA0UNACACIAMRAAAhAAsgAEUNBiAAQRVHDR8gAkEFNgIcIAIgATYCFCACQfkXNgIQIAJBFTYCDEEAIQMMZwsCQCAAQaAEcUGgBEcNACACLQAtQQJxDQBBACEDIAJBADYCHCACIAE2AhQgAkGWEzYCECACQQQ2AgwMZwsgAgJ/IAIvATBBFHFBFEYEQEEBIAItAChBAUYNARogAi8BMkHlAEYMAQsgAi0AKUEFRgs6AC5BACEAAkAgAigCOCIDRQ0AIAMoAiQiA0UNACACIAMRAAAhAAsCQAJAAkACQAJAIAAOFgIBAAQEBAQEBAQEBAQEBAQEBAQEBAMECyACQQE6AC4LIAIgAi8BMEHAAHI7ATALQSchAwxPCyACQSM2AhwgAiABNgIUIAJBpRY2AhAgAkEVNgIMQQAhAwxnC0EAIQMgAkEANgIcIAIgATYCFCACQdULNgIQIAJBETYCDAxmC0EAIQACQCACKAI4IgNFDQAgAygCLCIDRQ0AIAIgAxEAACEACyAADQELQQ4hAwxLCyAAQRVGBEAgAkECNgIcIAIgATYCFCACQbAYNgIQIAJBFTYCDEEAIQMMZAtBACEDIAJBADYCHCACIAE2AhQgAkGnDjYCECACQRI2AgwMYwtBACEDIAJBADYCHCACIAE2AhQgAkGqHDYCECACQQ82AgwMYgsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEgCqdqIgEQKyIARQ0AIAJBBTYCHCACIAE2AhQgAiAANgIMDGELQQ8hAwxHC0EAIQMgAkEANgIcIAIgATYCFCACQc0TNgIQIAJBDDYCDAxfC0IBIQoLIAFBAWohAQJAIAIpAyAiC0L//////////w9YBEAgAiALQgSGIAqENwMgDAELQQAhAyACQQA2AhwgAiABNgIUIAJBrQk2AhAgAkEMNgIMDF4LQSQhAwxEC0EAIQMgAkEANgIcIAIgATYCFCACQc0TNgIQIAJBDDYCDAxcCyACKAIEIQBBACEDIAJBADYCBCACIAAgARAsIgBFBEAgAUEBaiEBDFILIAJBFzYCHCACIAA2AgwgAiABQQFqNgIUDFsLIAIoAgQhAEEAIQMgAkEANgIEAkAgAiAAIAEQLCIARQRAIAFBAWohAQwBCyACQRY2AhwgAiAANgIMIAIgAUEBajYCFAxbC0EfIQMMQQtBACEDIAJBADYCHCACIAE2AhQgAkGaDzYCECACQSI2AgwMWQsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQLSIARQRAIAFBAWohAQxQCyACQRQ2AhwgAiAANgIMIAIgAUEBajYCFAxYCyACKAIEIQBBACEDIAJBADYCBAJAIAIgACABEC0iAEUEQCABQQFqIQEMAQsgAkETNgIcIAIgADYCDCACIAFBAWo2AhQMWAtBHiEDDD4LQQAhAyACQQA2AhwgAiABNgIUIAJBxgw2AhAgAkEjNgIMDFYLIAIoAgQhAEEAIQMgAkEANgIEIAIgACABEC0iAEUEQCABQQFqIQEMTgsgAkERNgIcIAIgADYCDCACIAFBAWo2AhQMVQsgAkEQNgIcIAIgATYCFCACIAA2AgwMVAtBACEDIAJBADYCHCACIAE2AhQgAkHGDDYCECACQSM2AgwMUwtBACEDIAJBADYCHCACIAE2AhQgAkHAFTYCECACQQI2AgwMUgsgAigCBCEAQQAhAyACQQA2AgQCQCACIAAgARAtIgBFBEAgAUEBaiEBDAELIAJBDjYCHCACIAA2AgwgAiABQQFqNgIUDFILQRshAww4C0EAIQMgAkEANgIcIAIgATYCFCACQcYMNgIQIAJBIzYCDAxQCyACKAIEIQBBACEDIAJBADYCBAJAIAIgACABECwiAEUEQCABQQFqIQEMAQsgAkENNgIcIAIgADYCDCACIAFBAWo2AhQMUAtBGiEDDDYLQQAhAyACQQA2AhwgAiABNgIUIAJBmg82AhAgAkEiNgIMDE4LIAIoAgQhAEEAIQMgAkEANgIEAkAgAiAAIAEQLCIARQRAIAFBAWohAQwBCyACQQw2AhwgAiAANgIMIAIgAUEBajYCFAxOC0EZIQMMNAtBACEDIAJBADYCHCACIAE2AhQgAkGaDzYCECACQSI2AgwMTAsgAEEVRwRAQQAhAyACQQA2AhwgAiABNgIUIAJBgww2AhAgAkETNgIMDEwLIAJBCjYCHCACIAE2AhQgAkHkFjYCECACQRU2AgxBACEDDEsLIAIoAgQhAEEAIQMgAkEANgIEIAIgACABIAqnaiIBECsiAARAIAJBBzYCHCACIAE2AhQgAiAANgIMDEsLQRMhAwwxCyAAQRVHBEBBACEDIAJBADYCHCACIAE2AhQgAkHaDTYCECACQRQ2AgwMSgsgAkEeNgIcIAIgATYCFCACQfkXNgIQIAJBFTYCDEEAIQMMSQtBACEAAkAgAigCOCIDRQ0AIAMoAiwiA0UNACACIAMRAAAhAAsgAEUNQSAAQRVGBEAgAkEDNgIcIAIgATYCFCACQbAYNgIQIAJBFTYCDEEAIQMMSQtBACEDIAJBADYCHCACIAE2AhQgAkGnDjYCECACQRI2AgwMSAtBACEDIAJBADYCHCACIAE2AhQgAkHaDTYCECACQRQ2AgwMRwtBACEDIAJBADYCHCACIAE2AhQgAkGnDjYCECACQRI2AgwMRgsgAkEAOgAvIAItAC1BBHFFDT8LIAJBADoALyACQQE6ADRBACEDDCsLQQAhAyACQQA2AhwgAkHkETYCECACQQc2AgwgAiABQQFqNgIUDEMLAkADQAJAIAEtAABBCmsOBAACAgACCyAEIAFBAWoiAUcNAAtB3QEhAwxDCwJAAkAgAi0ANEEBRw0AQQAhAAJAIAIoAjgiA0UNACADKAJYIgNFDQAgAiADEQAAIQALIABFDQAgAEEVRw0BIAJB3AE2AhwgAiABNgIUIAJB1RY2AhAgAkEVNgIMQQAhAwxEC0HBASEDDCoLIAJBADYCHCACIAE2AhQgAkHpCzYCECACQR82AgxBACEDDEILAkACQCACLQAoQQFrDgIEAQALQcABIQMMKQtBuQEhAwwoCyACQQI6AC9BACEAAkAgAigCOCIDRQ0AIAMoAgAiA0UNACACIAMRAAAhAAsgAEUEQEHCASEDDCgLIABBFUcEQCACQQA2AhwgAiABNgIUIAJBpAw2AhAgAkEQNgIMQQAhAwxBCyACQdsBNgIcIAIgATYCFCACQfoWNgIQIAJBFTYCDEEAIQMMQAsgASAERgRAQdoBIQMMQAsgAS0AAEHIAEYNASACQQE6ACgLQawBIQMMJQtBvwEhAwwkCyABIARHBEAgAkEQNgIIIAIgATYCBEG+ASEDDCQLQdkBIQMMPAsgASAERgRAQdgBIQMMPAsgAS0AAEHIAEcNBCABQQFqIQFBvQEhAwwiCyABIARGBEBB1wEhAww7CwJAAkAgAS0AAEHFAGsOEAAFBQUFBQUFBQUFBQUFBQEFCyABQQFqIQFBuwEhAwwiCyABQQFqIQFBvAEhAwwhC0HWASEDIAEgBEYNOSACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGD0ABqLQAARw0DIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAw6CyACKAIEIQAgAkIANwMAIAIgACAGQQFqIgEQJyIARQRAQcYBIQMMIQsgAkHVATYCHCACIAE2AhQgAiAANgIMQQAhAww5C0HUASEDIAEgBEYNOCACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGB0ABqLQAARw0CIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAw5CyACQYEEOwEoIAIoAgQhACACQgA3AwAgAiAAIAZBAWoiARAnIgANAwwCCyACQQA2AgALQQAhAyACQQA2AhwgAiABNgIUIAJB2Bs2AhAgAkEINgIMDDYLQboBIQMMHAsgAkHTATYCHCACIAE2AhQgAiAANgIMQQAhAww0C0EAIQACQCACKAI4IgNFDQAgAygCOCIDRQ0AIAIgAxEAACEACyAARQ0AIABBFUYNASACQQA2AhwgAiABNgIUIAJBzA42AhAgAkEgNgIMQQAhAwwzC0HkACEDDBkLIAJB+AA2AhwgAiABNgIUIAJByhg2AhAgAkEVNgIMQQAhAwwxC0HSASEDIAQgASIARg0wIAQgAWsgAigCACIBaiEFIAAgAWtBBGohBgJAA0AgAC0AACABQfzPAGotAABHDQEgAUEERg0DIAFBAWohASAEIABBAWoiAEcNAAsgAiAFNgIADDELIAJBADYCHCACIAA2AhQgAkGQMzYCECACQQg2AgwgAkEANgIAQQAhAwwwCyABIARHBEAgAkEONgIIIAIgATYCBEG3ASEDDBcLQdEBIQMMLwsgAkEANgIAIAZBAWohAQtBuAEhAwwUCyABIARGBEBB0AEhAwwtCyABLQAAQTBrIgBB/wFxQQpJBEAgAiAAOgAqIAFBAWohAUG2ASEDDBQLIAIoAgQhACACQQA2AgQgAiAAIAEQKCIARQ0UIAJBzwE2AhwgAiABNgIUIAIgADYCDEEAIQMMLAsgASAERgRAQc4BIQMMLAsCQCABLQAAQS5GBEAgAUEBaiEBDAELIAIoAgQhACACQQA2AgQgAiAAIAEQKCIARQ0VIAJBzQE2AhwgAiABNgIUIAIgADYCDEEAIQMMLAtBtQEhAwwSCyAEIAEiBUYEQEHMASEDDCsLQQAhAEEBIQFBASEGQQAhAwJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAIAUtAABBMGsOCgoJAAECAwQFBggLC0ECDAYLQQMMBQtBBAwEC0EFDAMLQQYMAgtBBwwBC0EICyEDQQAhAUEAIQYMAgtBCSEDQQEhAEEAIQFBACEGDAELQQAhAUEBIQMLIAIgAzoAKyAFQQFqIQMCQAJAIAItAC1BEHENAAJAAkACQCACLQAqDgMBAAIECyAGRQ0DDAILIAANAQwCCyABRQ0BCyACKAIEIQAgAkEANgIEIAIgACADECgiAEUEQCADIQEMAwsgAkHJATYCHCACIAM2AhQgAiAANgIMQQAhAwwtCyACKAIEIQAgAkEANgIEIAIgACADECgiAEUEQCADIQEMGAsgAkHKATYCHCACIAM2AhQgAiAANgIMQQAhAwwsCyACKAIEIQAgAkEANgIEIAIgACAFECgiAEUEQCAFIQEMFgsgAkHLATYCHCACIAU2AhQgAiAANgIMDCsLQbQBIQMMEQtBACEAAkAgAigCOCIDRQ0AIAMoAjwiA0UNACACIAMRAAAhAAsCQCAABEAgAEEVRg0BIAJBADYCHCACIAE2AhQgAkGUDTYCECACQSE2AgxBACEDDCsLQbIBIQMMEQsgAkHIATYCHCACIAE2AhQgAkHJFzYCECACQRU2AgxBACEDDCkLIAJBADYCACAGQQFqIQFB9QAhAwwPCyACLQApQQVGBEBB4wAhAwwPC0HiACEDDA4LIAAhASACQQA2AgALIAJBADoALEEJIQMMDAsgAkEANgIAIAdBAWohAUHAACEDDAsLQQELOgAsIAJBADYCACAGQQFqIQELQSkhAwwIC0E4IQMMBwsCQCABIARHBEADQCABLQAAQYA+ai0AACIAQQFHBEAgAEECRw0DIAFBAWohAQwFCyAEIAFBAWoiAUcNAAtBPiEDDCELQT4hAwwgCwsgAkEAOgAsDAELQQshAwwEC0E6IQMMAwsgAUEBaiEBQS0hAwwCCyACIAE6ACwgAkEANgIAIAZBAWohAUEMIQMMAQsgAkEANgIAIAZBAWohAUEKIQMMAAsAC0EAIQMgAkEANgIcIAIgATYCFCACQc0QNgIQIAJBCTYCDAwXC0EAIQMgAkEANgIcIAIgATYCFCACQekKNgIQIAJBCTYCDAwWC0EAIQMgAkEANgIcIAIgATYCFCACQbcQNgIQIAJBCTYCDAwVC0EAIQMgAkEANgIcIAIgATYCFCACQZwRNgIQIAJBCTYCDAwUC0EAIQMgAkEANgIcIAIgATYCFCACQc0QNgIQIAJBCTYCDAwTC0EAIQMgAkEANgIcIAIgATYCFCACQekKNgIQIAJBCTYCDAwSC0EAIQMgAkEANgIcIAIgATYCFCACQbcQNgIQIAJBCTYCDAwRC0EAIQMgAkEANgIcIAIgATYCFCACQZwRNgIQIAJBCTYCDAwQC0EAIQMgAkEANgIcIAIgATYCFCACQZcVNgIQIAJBDzYCDAwPC0EAIQMgAkEANgIcIAIgATYCFCACQZcVNgIQIAJBDzYCDAwOC0EAIQMgAkEANgIcIAIgATYCFCACQcASNgIQIAJBCzYCDAwNC0EAIQMgAkEANgIcIAIgATYCFCACQZUJNgIQIAJBCzYCDAwMC0EAIQMgAkEANgIcIAIgATYCFCACQeEPNgIQIAJBCjYCDAwLC0EAIQMgAkEANgIcIAIgATYCFCACQfsPNgIQIAJBCjYCDAwKC0EAIQMgAkEANgIcIAIgATYCFCACQfEZNgIQIAJBAjYCDAwJC0EAIQMgAkEANgIcIAIgATYCFCACQcQUNgIQIAJBAjYCDAwIC0EAIQMgAkEANgIcIAIgATYCFCACQfIVNgIQIAJBAjYCDAwHCyACQQI2AhwgAiABNgIUIAJBnBo2AhAgAkEWNgIMQQAhAwwGC0EBIQMMBQtB1AAhAyABIARGDQQgCEEIaiEJIAIoAgAhBQJAAkAgASAERwRAIAVB2MIAaiEHIAQgBWogAWshACAFQX9zQQpqIgUgAWohBgNAIAEtAAAgBy0AAEcEQEECIQcMAwsgBUUEQEEAIQcgBiEBDAMLIAVBAWshBSAHQQFqIQcgBCABQQFqIgFHDQALIAAhBSAEIQELIAlBATYCACACIAU2AgAMAQsgAkEANgIAIAkgBzYCAAsgCSABNgIEIAgoAgwhACAIKAIIDgMBBAIACwALIAJBADYCHCACQbUaNgIQIAJBFzYCDCACIABBAWo2AhRBACEDDAILIAJBADYCHCACIAA2AhQgAkHKGjYCECACQQk2AgxBACEDDAELIAEgBEYEQEEiIQMMAQsgAkEJNgIIIAIgATYCBEEhIQMLIAhBEGokACADRQRAIAIoAgwhAAwBCyACIAM2AhxBACEAIAIoAgQiAUUNACACIAEgBCACKAIIEQEAIgFFDQAgAiAENgIUIAIgATYCDCABIQALIAALvgIBAn8gAEEAOgAAIABB3ABqIgFBAWtBADoAACAAQQA6AAIgAEEAOgABIAFBA2tBADoAACABQQJrQQA6AAAgAEEAOgADIAFBBGtBADoAAEEAIABrQQNxIgEgAGoiAEEANgIAQdwAIAFrQXxxIgIgAGoiAUEEa0EANgIAAkAgAkEJSQ0AIABBADYCCCAAQQA2AgQgAUEIa0EANgIAIAFBDGtBADYCACACQRlJDQAgAEEANgIYIABBADYCFCAAQQA2AhAgAEEANgIMIAFBEGtBADYCACABQRRrQQA2AgAgAUEYa0EANgIAIAFBHGtBADYCACACIABBBHFBGHIiAmsiAUEgSQ0AIAAgAmohAANAIABCADcDGCAAQgA3AxAgAEIANwMIIABCADcDACAAQSBqIQAgAUEgayIBQR9LDQALCwtWAQF/AkAgACgCDA0AAkACQAJAAkAgAC0ALw4DAQADAgsgACgCOCIBRQ0AIAEoAiwiAUUNACAAIAERAAAiAQ0DC0EADwsACyAAQcMWNgIQQQ4hAQsgAQsaACAAKAIMRQRAIABB0Rs2AhAgAEEVNgIMCwsUACAAKAIMQRVGBEAgAEEANgIMCwsUACAAKAIMQRZGBEAgAEEANgIMCwsHACAAKAIMCwcAIAAoAhALCQAgACABNgIQCwcAIAAoAhQLFwAgAEEkTwRAAAsgAEECdEGgM2ooAgALFwAgAEEuTwRAAAsgAEECdEGwNGooAgALvwkBAX9B6yghAQJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB9ysPC0GQMQ8LQdcxDwtBoi0PC0HUJw8LQeArDwtBnywPC0HrMQ8LQdUfDwtByjEPC0HeJQ8LQdQeDwtB9BwPC0GnMg8LQbEdDwtBoB0PC0G5MQ8LQbwwDwtBkiEPC0GzJg8LQeksDwtBrB4PC0HUKw8LQfcmDwtBgCYPC0GwIQ8LQf4eDwtBjSMPC0GJLQ8LQfciDwtBoDEPC0GuHw8LQcYlDwtB6B4PC0GTIg8LQcIvDwtBwx0PC0GLLA8LQeEdDwtBjS8PC0HqIQ8LQbQtDwtB0i8PC0HfMg8LQdIyDwtB8DAPC0GpIg8LQfkjDwtBmR4PC0G1LA8LQZswDwtBkjIPC0G2Kw8LQcIiDwtB+DIPC0GeJQ8LQdAiDwtBuh4PC0GBHg8LAAtB1iEhAQsgAQsWACAAIAAtAC1B/gFxIAFBAEdyOgAtCxkAIAAgAC0ALUH9AXEgAUEAR0EBdHI6AC0LGQAgACAALQAtQfsBcSABQQBHQQJ0cjoALQsZACAAIAAtAC1B9wFxIAFBAEdBA3RyOgAtCz4BAn8CQCAAKAI4IgNFDQAgAygCBCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABBxhE2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCCCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABB9go2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCDCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABB7Ro2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCECIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABBlRA2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCFCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABBqhs2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCGCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABB7RM2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCKCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABB9gg2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCHCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABBwhk2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCICIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABBlBQ2AhBBGCEECyAEC1kBAn8CQCAALQAoQQFGDQAgAC8BMiIBQeQAa0HkAEkNACABQcwBRg0AIAFBsAJGDQAgAC8BMCIAQcAAcQ0AQQEhAiAAQYgEcUGABEYNACAAQShxRSECCyACC4wBAQJ/AkACQAJAIAAtACpFDQAgAC0AK0UNACAALwEwIgFBAnFFDQEMAgsgAC8BMCIBQQFxRQ0BC0EBIQIgAC0AKEEBRg0AIAAvATIiAEHkAGtB5ABJDQAgAEHMAUYNACAAQbACRg0AIAFBwABxDQBBACECIAFBiARxQYAERg0AIAFBKHFBAEchAgsgAgtzACAAQRBq/QwAAAAAAAAAAAAAAAAAAAAA/QsDACAA/QwAAAAAAAAAAAAAAAAAAAAA/QsDACAAQTBq/QwAAAAAAAAAAAAAAAAAAAAA/QsDACAAQSBq/QwAAAAAAAAAAAAAAAAAAAAA/QsDACAAQd0BNgIcCwYAIAAQMguaLQELfyMAQRBrIgokAEGk0AAoAgAiCUUEQEHk0wAoAgAiBUUEQEHw0wBCfzcCAEHo0wBCgICEgICAwAA3AgBB5NMAIApBCGpBcHFB2KrVqgVzIgU2AgBB+NMAQQA2AgBByNMAQQA2AgALQczTAEGA1AQ2AgBBnNAAQYDUBDYCAEGw0AAgBTYCAEGs0ABBfzYCAEHQ0wBBgKwDNgIAA0AgAUHI0ABqIAFBvNAAaiICNgIAIAIgAUG00ABqIgM2AgAgAUHA0ABqIAM2AgAgAUHQ0ABqIAFBxNAAaiIDNgIAIAMgAjYCACABQdjQAGogAUHM0ABqIgI2AgAgAiADNgIAIAFB1NAAaiACNgIAIAFBIGoiAUGAAkcNAAtBjNQEQcGrAzYCAEGo0ABB9NMAKAIANgIAQZjQAEHAqwM2AgBBpNAAQYjUBDYCAEHM/wdBODYCAEGI1AQhCQsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAQewBTQRAQYzQACgCACIGQRAgAEETakFwcSAAQQtJGyIEQQN2IgB2IgFBA3EEQAJAIAFBAXEgAHJBAXMiAkEDdCIAQbTQAGoiASAAQbzQAGooAgAiACgCCCIDRgRAQYzQACAGQX4gAndxNgIADAELIAEgAzYCCCADIAE2AgwLIABBCGohASAAIAJBA3QiAkEDcjYCBCAAIAJqIgAgACgCBEEBcjYCBAwRC0GU0AAoAgAiCCAETw0BIAEEQAJAQQIgAHQiAkEAIAJrciABIAB0cWgiAEEDdCICQbTQAGoiASACQbzQAGooAgAiAigCCCIDRgRAQYzQACAGQX4gAHdxIgY2AgAMAQsgASADNgIIIAMgATYCDAsgAiAEQQNyNgIEIABBA3QiACAEayEFIAAgAmogBTYCACACIARqIgQgBUEBcjYCBCAIBEAgCEF4cUG00ABqIQBBoNAAKAIAIQMCf0EBIAhBA3Z0IgEgBnFFBEBBjNAAIAEgBnI2AgAgAAwBCyAAKAIICyIBIAM2AgwgACADNgIIIAMgADYCDCADIAE2AggLIAJBCGohAUGg0AAgBDYCAEGU0AAgBTYCAAwRC0GQ0AAoAgAiC0UNASALaEECdEG80gBqKAIAIgAoAgRBeHEgBGshBSAAIQIDQAJAIAIoAhAiAUUEQCACQRRqKAIAIgFFDQELIAEoAgRBeHEgBGsiAyAFSSECIAMgBSACGyEFIAEgACACGyEAIAEhAgwBCwsgACgCGCEJIAAoAgwiAyAARwRAQZzQACgCABogAyAAKAIIIgE2AgggASADNgIMDBALIABBFGoiAigCACIBRQRAIAAoAhAiAUUNAyAAQRBqIQILA0AgAiEHIAEiA0EUaiICKAIAIgENACADQRBqIQIgAygCECIBDQALIAdBADYCAAwPC0F/IQQgAEG/f0sNACAAQRNqIgFBcHEhBEGQ0AAoAgAiCEUNAEEAIARrIQUCQAJAAkACf0EAIARBgAJJDQAaQR8gBEH///8HSw0AGiAEQSYgAUEIdmciAGt2QQFxIABBAXRrQT5qCyIGQQJ0QbzSAGooAgAiAkUEQEEAIQFBACEDDAELQQAhASAEQRkgBkEBdmtBACAGQR9HG3QhAEEAIQMDQAJAIAIoAgRBeHEgBGsiByAFTw0AIAIhAyAHIgUNAEEAIQUgAiEBDAMLIAEgAkEUaigCACIHIAcgAiAAQR12QQRxakEQaigCACICRhsgASAHGyEBIABBAXQhACACDQALCyABIANyRQRAQQAhA0ECIAZ0IgBBACAAa3IgCHEiAEUNAyAAaEECdEG80gBqKAIAIQELIAFFDQELA0AgASgCBEF4cSAEayICIAVJIQAgAiAFIAAbIQUgASADIAAbIQMgASgCECIABH8gAAUgAUEUaigCAAsiAQ0ACwsgA0UNACAFQZTQACgCACAEa08NACADKAIYIQcgAyADKAIMIgBHBEBBnNAAKAIAGiAAIAMoAggiATYCCCABIAA2AgwMDgsgA0EUaiICKAIAIgFFBEAgAygCECIBRQ0DIANBEGohAgsDQCACIQYgASIAQRRqIgIoAgAiAQ0AIABBEGohAiAAKAIQIgENAAsgBkEANgIADA0LQZTQACgCACIDIARPBEBBoNAAKAIAIQECQCADIARrIgJBEE8EQCABIARqIgAgAkEBcjYCBCABIANqIAI2AgAgASAEQQNyNgIEDAELIAEgA0EDcjYCBCABIANqIgAgACgCBEEBcjYCBEEAIQBBACECC0GU0AAgAjYCAEGg0AAgADYCACABQQhqIQEMDwtBmNAAKAIAIgMgBEsEQCAEIAlqIgAgAyAEayIBQQFyNgIEQaTQACAANgIAQZjQACABNgIAIAkgBEEDcjYCBCAJQQhqIQEMDwtBACEBIAQCf0Hk0wAoAgAEQEHs0wAoAgAMAQtB8NMAQn83AgBB6NMAQoCAhICAgMAANwIAQeTTACAKQQxqQXBxQdiq1aoFczYCAEH40wBBADYCAEHI0wBBADYCAEGAgAQLIgAgBEHHAGoiBWoiBkEAIABrIgdxIgJPBEBB/NMAQTA2AgAMDwsCQEHE0wAoAgAiAUUNAEG80wAoAgAiCCACaiEAIAAgAU0gACAIS3ENAEEAIQFB/NMAQTA2AgAMDwtByNMALQAAQQRxDQQCQAJAIAkEQEHM0wAhAQNAIAEoAgAiACAJTQRAIAAgASgCBGogCUsNAwsgASgCCCIBDQALC0EAEDMiAEF/Rg0FIAIhBkHo0wAoAgAiAUEBayIDIABxBEAgAiAAayAAIANqQQAgAWtxaiEGCyAEIAZPDQUgBkH+////B0sNBUHE0wAoAgAiAwRAQbzTACgCACIHIAZqIQEgASAHTQ0GIAEgA0sNBgsgBhAzIgEgAEcNAQwHCyAGIANrIAdxIgZB/v///wdLDQQgBhAzIQAgACABKAIAIAEoAgRqRg0DIAAhAQsCQCAGIARByABqTw0AIAFBf0YNAEHs0wAoAgAiACAFIAZrakEAIABrcSIAQf7///8HSwRAIAEhAAwHCyAAEDNBf0cEQCAAIAZqIQYgASEADAcLQQAgBmsQMxoMBAsgASIAQX9HDQUMAwtBACEDDAwLQQAhAAwKCyAAQX9HDQILQcjTAEHI0wAoAgBBBHI2AgALIAJB/v///wdLDQEgAhAzIQBBABAzIQEgAEF/Rg0BIAFBf0YNASAAIAFPDQEgASAAayIGIARBOGpNDQELQbzTAEG80wAoAgAgBmoiATYCAEHA0wAoAgAgAUkEQEHA0wAgATYCAAsCQAJAAkBBpNAAKAIAIgIEQEHM0wAhAQNAIAAgASgCACIDIAEoAgQiBWpGDQIgASgCCCIBDQALDAILQZzQACgCACIBQQBHIAAgAU9xRQRAQZzQACAANgIAC0EAIQFB0NMAIAY2AgBBzNMAIAA2AgBBrNAAQX82AgBBsNAAQeTTACgCADYCAEHY0wBBADYCAANAIAFByNAAaiABQbzQAGoiAjYCACACIAFBtNAAaiIDNgIAIAFBwNAAaiADNgIAIAFB0NAAaiABQcTQAGoiAzYCACADIAI2AgAgAUHY0ABqIAFBzNAAaiICNgIAIAIgAzYCACABQdTQAGogAjYCACABQSBqIgFBgAJHDQALQXggAGtBD3EiASAAaiICIAZBOGsiAyABayIBQQFyNgIEQajQAEH00wAoAgA2AgBBmNAAIAE2AgBBpNAAIAI2AgAgACADakE4NgIEDAILIAAgAk0NACACIANJDQAgASgCDEEIcQ0AQXggAmtBD3EiACACaiIDQZjQACgCACAGaiIHIABrIgBBAXI2AgQgASAFIAZqNgIEQajQAEH00wAoAgA2AgBBmNAAIAA2AgBBpNAAIAM2AgAgAiAHakE4NgIEDAELIABBnNAAKAIASQRAQZzQACAANgIACyAAIAZqIQNBzNMAIQECQAJAAkADQCADIAEoAgBHBEAgASgCCCIBDQEMAgsLIAEtAAxBCHFFDQELQczTACEBA0AgASgCACIDIAJNBEAgAyABKAIEaiIFIAJLDQMLIAEoAgghAQwACwALIAEgADYCACABIAEoAgQgBmo2AgQgAEF4IABrQQ9xaiIJIARBA3I2AgQgA0F4IANrQQ9xaiIGIAQgCWoiBGshASACIAZGBEBBpNAAIAQ2AgBBmNAAQZjQACgCACABaiIANgIAIAQgAEEBcjYCBAwIC0Gg0AAoAgAgBkYEQEGg0AAgBDYCAEGU0ABBlNAAKAIAIAFqIgA2AgAgBCAAQQFyNgIEIAAgBGogADYCAAwICyAGKAIEIgVBA3FBAUcNBiAFQXhxIQggBUH/AU0EQCAFQQN2IQMgBigCCCIAIAYoAgwiAkYEQEGM0ABBjNAAKAIAQX4gA3dxNgIADAcLIAIgADYCCCAAIAI2AgwMBgsgBigCGCEHIAYgBigCDCIARwRAIAAgBigCCCICNgIIIAIgADYCDAwFCyAGQRRqIgIoAgAiBUUEQCAGKAIQIgVFDQQgBkEQaiECCwNAIAIhAyAFIgBBFGoiAigCACIFDQAgAEEQaiECIAAoAhAiBQ0ACyADQQA2AgAMBAtBeCAAa0EPcSIBIABqIgcgBkE4ayIDIAFrIgFBAXI2AgQgACADakE4NgIEIAIgBUE3IAVrQQ9xakE/ayIDIAMgAkEQakkbIgNBIzYCBEGo0ABB9NMAKAIANgIAQZjQACABNgIAQaTQACAHNgIAIANBEGpB1NMAKQIANwIAIANBzNMAKQIANwIIQdTTACADQQhqNgIAQdDTACAGNgIAQczTACAANgIAQdjTAEEANgIAIANBJGohAQNAIAFBBzYCACAFIAFBBGoiAUsNAAsgAiADRg0AIAMgAygCBEF+cTYCBCADIAMgAmsiBTYCACACIAVBAXI2AgQgBUH/AU0EQCAFQXhxQbTQAGohAAJ/QYzQACgCACIBQQEgBUEDdnQiA3FFBEBBjNAAIAEgA3I2AgAgAAwBCyAAKAIICyIBIAI2AgwgACACNgIIIAIgADYCDCACIAE2AggMAQtBHyEBIAVB////B00EQCAFQSYgBUEIdmciAGt2QQFxIABBAXRrQT5qIQELIAIgATYCHCACQgA3AhAgAUECdEG80gBqIQBBkNAAKAIAIgNBASABdCIGcUUEQCAAIAI2AgBBkNAAIAMgBnI2AgAgAiAANgIYIAIgAjYCCCACIAI2AgwMAQsgBUEZIAFBAXZrQQAgAUEfRxt0IQEgACgCACEDAkADQCADIgAoAgRBeHEgBUYNASABQR12IQMgAUEBdCEBIAAgA0EEcWpBEGoiBigCACIDDQALIAYgAjYCACACIAA2AhggAiACNgIMIAIgAjYCCAwBCyAAKAIIIgEgAjYCDCAAIAI2AgggAkEANgIYIAIgADYCDCACIAE2AggLQZjQACgCACIBIARNDQBBpNAAKAIAIgAgBGoiAiABIARrIgFBAXI2AgRBmNAAIAE2AgBBpNAAIAI2AgAgACAEQQNyNgIEIABBCGohAQwIC0EAIQFB/NMAQTA2AgAMBwtBACEACyAHRQ0AAkAgBigCHCICQQJ0QbzSAGoiAygCACAGRgRAIAMgADYCACAADQFBkNAAQZDQACgCAEF+IAJ3cTYCAAwCCyAHQRBBFCAHKAIQIAZGG2ogADYCACAARQ0BCyAAIAc2AhggBigCECICBEAgACACNgIQIAIgADYCGAsgBkEUaigCACICRQ0AIABBFGogAjYCACACIAA2AhgLIAEgCGohASAGIAhqIgYoAgQhBQsgBiAFQX5xNgIEIAEgBGogATYCACAEIAFBAXI2AgQgAUH/AU0EQCABQXhxQbTQAGohAAJ/QYzQACgCACICQQEgAUEDdnQiAXFFBEBBjNAAIAEgAnI2AgAgAAwBCyAAKAIICyIBIAQ2AgwgACAENgIIIAQgADYCDCAEIAE2AggMAQtBHyEFIAFB////B00EQCABQSYgAUEIdmciAGt2QQFxIABBAXRrQT5qIQULIAQgBTYCHCAEQgA3AhAgBUECdEG80gBqIQBBkNAAKAIAIgJBASAFdCIDcUUEQCAAIAQ2AgBBkNAAIAIgA3I2AgAgBCAANgIYIAQgBDYCCCAEIAQ2AgwMAQsgAUEZIAVBAXZrQQAgBUEfRxt0IQUgACgCACEAAkADQCAAIgIoAgRBeHEgAUYNASAFQR12IQAgBUEBdCEFIAIgAEEEcWpBEGoiAygCACIADQALIAMgBDYCACAEIAI2AhggBCAENgIMIAQgBDYCCAwBCyACKAIIIgAgBDYCDCACIAQ2AgggBEEANgIYIAQgAjYCDCAEIAA2AggLIAlBCGohAQwCCwJAIAdFDQACQCADKAIcIgFBAnRBvNIAaiICKAIAIANGBEAgAiAANgIAIAANAUGQ0AAgCEF+IAF3cSIINgIADAILIAdBEEEUIAcoAhAgA0YbaiAANgIAIABFDQELIAAgBzYCGCADKAIQIgEEQCAAIAE2AhAgASAANgIYCyADQRRqKAIAIgFFDQAgAEEUaiABNgIAIAEgADYCGAsCQCAFQQ9NBEAgAyAEIAVqIgBBA3I2AgQgACADaiIAIAAoAgRBAXI2AgQMAQsgAyAEaiICIAVBAXI2AgQgAyAEQQNyNgIEIAIgBWogBTYCACAFQf8BTQRAIAVBeHFBtNAAaiEAAn9BjNAAKAIAIgFBASAFQQN2dCIFcUUEQEGM0AAgASAFcjYCACAADAELIAAoAggLIgEgAjYCDCAAIAI2AgggAiAANgIMIAIgATYCCAwBC0EfIQEgBUH///8HTQRAIAVBJiAFQQh2ZyIAa3ZBAXEgAEEBdGtBPmohAQsgAiABNgIcIAJCADcCECABQQJ0QbzSAGohAEEBIAF0IgQgCHFFBEAgACACNgIAQZDQACAEIAhyNgIAIAIgADYCGCACIAI2AgggAiACNgIMDAELIAVBGSABQQF2a0EAIAFBH0cbdCEBIAAoAgAhBAJAA0AgBCIAKAIEQXhxIAVGDQEgAUEddiEEIAFBAXQhASAAIARBBHFqQRBqIgYoAgAiBA0ACyAGIAI2AgAgAiAANgIYIAIgAjYCDCACIAI2AggMAQsgACgCCCIBIAI2AgwgACACNgIIIAJBADYCGCACIAA2AgwgAiABNgIICyADQQhqIQEMAQsCQCAJRQ0AAkAgACgCHCIBQQJ0QbzSAGoiAigCACAARgRAIAIgAzYCACADDQFBkNAAIAtBfiABd3E2AgAMAgsgCUEQQRQgCSgCECAARhtqIAM2AgAgA0UNAQsgAyAJNgIYIAAoAhAiAQRAIAMgATYCECABIAM2AhgLIABBFGooAgAiAUUNACADQRRqIAE2AgAgASADNgIYCwJAIAVBD00EQCAAIAQgBWoiAUEDcjYCBCAAIAFqIgEgASgCBEEBcjYCBAwBCyAAIARqIgcgBUEBcjYCBCAAIARBA3I2AgQgBSAHaiAFNgIAIAgEQCAIQXhxQbTQAGohAUGg0AAoAgAhAwJ/QQEgCEEDdnQiAiAGcUUEQEGM0AAgAiAGcjYCACABDAELIAEoAggLIgIgAzYCDCABIAM2AgggAyABNgIMIAMgAjYCCAtBoNAAIAc2AgBBlNAAIAU2AgALIABBCGohAQsgCkEQaiQAIAELQwAgAEUEQD8AQRB0DwsCQCAAQf//A3ENACAAQQBIDQAgAEEQdkAAIgBBf0YEQEH80wBBMDYCAEF/DwsgAEEQdA8LAAsL3D8iAEGACAsJAQAAAAIAAAADAEGUCAsFBAAAAAUAQaQICwkGAAAABwAAAAgAQdwIC4otSW52YWxpZCBjaGFyIGluIHVybCBxdWVyeQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2JvZHkAQ29udGVudC1MZW5ndGggb3ZlcmZsb3cAQ2h1bmsgc2l6ZSBvdmVyZmxvdwBSZXNwb25zZSBvdmVyZmxvdwBJbnZhbGlkIG1ldGhvZCBmb3IgSFRUUC94LnggcmVxdWVzdABJbnZhbGlkIG1ldGhvZCBmb3IgUlRTUC94LnggcmVxdWVzdABFeHBlY3RlZCBTT1VSQ0UgbWV0aG9kIGZvciBJQ0UveC54IHJlcXVlc3QASW52YWxpZCBjaGFyIGluIHVybCBmcmFnbWVudCBzdGFydABFeHBlY3RlZCBkb3QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9zdGF0dXMASW52YWxpZCByZXNwb25zZSBzdGF0dXMASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucwBVc2VyIGNhbGxiYWNrIGVycm9yAGBvbl9yZXNldGAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2hlYWRlcmAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfYmVnaW5gIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwBB+TULAQEAQZA2C+ABAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQf03CwEBAEGROAteAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgBB/TkLAQEAQZE6C14CAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEHwOwsNbG9zZWVlcC1hbGl2ZQBBiTwLAQEAQaA8C+ABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQYk+CwEBAEGgPgvnAQEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZABBsMAAC18BAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBBkMIACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQcDCAAstcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQoNClNNDQoNClRUUC9DRS9UU1AvAEH5wgALBQECAAEDAEGQwwAL4AEEAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cQACwUBAgABAwBBkMUAC+ABBAEBBQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQfnGAAsEAQAAAQBBkccAC98BAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+sgACwQBAAACAEGQyQALXwMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAEH6ygALBAEAAAEAQZDLAAsBAQBBqssAC0ECAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB+swACwQBAAABAEGQzQALAQEAQZrNAAsGAgAAAAACAEGxzQALOgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQfDOAAuWAU5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw==", "base64");
- }
-});
-
-// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/web/fetch/constants.js
-var require_constants4 = __commonJS({
- ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/web/fetch/constants.js"(exports2, module2) {
- "use strict";
- var corsSafeListedMethods = (
- /** @type {const} */
- ["GET", "HEAD", "POST"]
- );
- var corsSafeListedMethodsSet = new Set(corsSafeListedMethods);
- var nullBodyStatus = (
- /** @type {const} */
- [101, 204, 205, 304]
- );
- var redirectStatus = (
- /** @type {const} */
- [301, 302, 303, 307, 308]
- );
- var redirectStatusSet = new Set(redirectStatus);
- var badPorts = (
- /** @type {const} */
- [
- "1",
- "7",
- "9",
- "11",
- "13",
- "15",
- "17",
- "19",
- "20",
- "21",
- "22",
- "23",
- "25",
- "37",
- "42",
- "43",
- "53",
- "69",
- "77",
- "79",
- "87",
- "95",
- "101",
- "102",
- "103",
- "104",
- "109",
- "110",
- "111",
- "113",
- "115",
- "117",
- "119",
- "123",
- "135",
- "137",
- "139",
- "143",
- "161",
- "179",
- "389",
- "427",
- "465",
- "512",
- "513",
- "514",
- "515",
- "526",
- "530",
- "531",
- "532",
- "540",
- "548",
- "554",
- "556",
- "563",
- "587",
- "601",
- "636",
- "989",
- "990",
- "993",
- "995",
- "1719",
- "1720",
- "1723",
- "2049",
- "3659",
- "4045",
- "4190",
- "5060",
- "5061",
- "6000",
- "6566",
- "6665",
- "6666",
- "6667",
- "6668",
- "6669",
- "6679",
- "6697",
- "10080"
- ]
- );
- var badPortsSet = new Set(badPorts);
- var referrerPolicy = (
- /** @type {const} */
- [
- "",
- "no-referrer",
- "no-referrer-when-downgrade",
- "same-origin",
- "origin",
- "strict-origin",
- "origin-when-cross-origin",
- "strict-origin-when-cross-origin",
- "unsafe-url"
- ]
- );
- var referrerPolicySet = new Set(referrerPolicy);
- var requestRedirect = (
- /** @type {const} */
- ["follow", "manual", "error"]
- );
- var safeMethods = (
- /** @type {const} */
- ["GET", "HEAD", "OPTIONS", "TRACE"]
- );
- var safeMethodsSet = new Set(safeMethods);
- var requestMode = (
- /** @type {const} */
- ["navigate", "same-origin", "no-cors", "cors"]
- );
- var requestCredentials = (
- /** @type {const} */
- ["omit", "same-origin", "include"]
- );
- var requestCache = (
- /** @type {const} */
- [
- "default",
- "no-store",
- "reload",
- "no-cache",
- "force-cache",
- "only-if-cached"
- ]
- );
- var requestBodyHeader = (
- /** @type {const} */
- [
- "content-encoding",
- "content-language",
- "content-location",
- "content-type",
- // See https://github.com/nodejs/undici/issues/2021
- // 'Content-Length' is a forbidden header name, which is typically
- // removed in the Headers implementation. However, undici doesn't
- // filter out headers, so we add it here.
- "content-length"
- ]
- );
- var requestDuplex = (
- /** @type {const} */
- [
- "half"
- ]
- );
- var forbiddenMethods = (
- /** @type {const} */
- ["CONNECT", "TRACE", "TRACK"]
- );
- var forbiddenMethodsSet = new Set(forbiddenMethods);
- var subresource = (
- /** @type {const} */
- [
- "audio",
- "audioworklet",
- "font",
- "image",
- "manifest",
- "paintworklet",
- "script",
- "style",
- "track",
- "video",
- "xslt",
- ""
- ]
- );
- var subresourceSet = new Set(subresource);
- module2.exports = {
- subresource,
- forbiddenMethods,
- requestBodyHeader,
- referrerPolicy,
- requestRedirect,
- requestMode,
- requestCredentials,
- requestCache,
- redirectStatus,
- corsSafeListedMethods,
- nullBodyStatus,
- safeMethods,
- badPorts,
- requestDuplex,
- subresourceSet,
- badPortsSet,
- redirectStatusSet,
- corsSafeListedMethodsSet,
- safeMethodsSet,
- forbiddenMethodsSet,
- referrerPolicySet
- };
- }
-});
-
-// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/web/fetch/global.js
-var require_global = __commonJS({
- ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/web/fetch/global.js"(exports2, module2) {
- "use strict";
- var globalOrigin = Symbol.for("undici.globalOrigin.1");
- function getGlobalOrigin() {
- return globalThis[globalOrigin];
- }
- function setGlobalOrigin(newOrigin) {
- if (newOrigin === void 0) {
- Object.defineProperty(globalThis, globalOrigin, {
- value: void 0,
- writable: true,
- enumerable: false,
- configurable: false
- });
- return;
- }
- const parsedURL = new URL(newOrigin);
- if (parsedURL.protocol !== "http:" && parsedURL.protocol !== "https:") {
- throw new TypeError(`Only http & https urls are allowed, received ${parsedURL.protocol}`);
- }
- Object.defineProperty(globalThis, globalOrigin, {
- value: parsedURL,
- writable: true,
- enumerable: false,
- configurable: false
- });
- }
- module2.exports = {
- getGlobalOrigin,
- setGlobalOrigin
- };
- }
-});
-
-// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/web/fetch/data-url.js
-var require_data_url = __commonJS({
- ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/web/fetch/data-url.js"(exports2, module2) {
- "use strict";
- var assert5 = require("node:assert");
- var encoder = new TextEncoder();
- var HTTP_TOKEN_CODEPOINTS = /^[!#$%&'*+\-.^_|~A-Za-z0-9]+$/;
- var HTTP_WHITESPACE_REGEX = /[\u000A\u000D\u0009\u0020]/;
- var ASCII_WHITESPACE_REPLACE_REGEX = /[\u0009\u000A\u000C\u000D\u0020]/g;
- var HTTP_QUOTED_STRING_TOKENS = /^[\u0009\u0020-\u007E\u0080-\u00FF]+$/;
- function dataURLProcessor(dataURL) {
- assert5(dataURL.protocol === "data:");
- let input = URLSerializer(dataURL, true);
- input = input.slice(5);
- const position = { position: 0 };
- let mimeType = collectASequenceOfCodePointsFast(
- ",",
- input,
- position
- );
- const mimeTypeLength = mimeType.length;
- mimeType = removeASCIIWhitespace(mimeType, true, true);
- if (position.position >= input.length) {
- return "failure";
- }
- position.position++;
- const encodedBody = input.slice(mimeTypeLength + 1);
- let body = stringPercentDecode(encodedBody);
- if (/;(\u0020){0,}base64$/i.test(mimeType)) {
- const stringBody = isomorphicDecode(body);
- body = forgivingBase64(stringBody);
- if (body === "failure") {
- return "failure";
- }
- mimeType = mimeType.slice(0, -6);
- mimeType = mimeType.replace(/(\u0020)+$/, "");
- mimeType = mimeType.slice(0, -1);
- }
- if (mimeType.startsWith(";")) {
- mimeType = "text/plain" + mimeType;
- }
- let mimeTypeRecord = parseMIMEType(mimeType);
- if (mimeTypeRecord === "failure") {
- mimeTypeRecord = parseMIMEType("text/plain;charset=US-ASCII");
- }
- return { mimeType: mimeTypeRecord, body };
- }
- function URLSerializer(url, excludeFragment = false) {
- if (!excludeFragment) {
- return url.href;
- }
- const href = url.href;
- const hashLength = url.hash.length;
- const serialized = hashLength === 0 ? href : href.substring(0, href.length - hashLength);
- if (!hashLength && href.endsWith("#")) {
- return serialized.slice(0, -1);
- }
- return serialized;
- }
- function collectASequenceOfCodePoints(condition, input, position) {
- let result = "";
- while (position.position < input.length && condition(input[position.position])) {
- result += input[position.position];
- position.position++;
- }
- return result;
- }
- function collectASequenceOfCodePointsFast(char, input, position) {
- const idx = input.indexOf(char, position.position);
- const start = position.position;
- if (idx === -1) {
- position.position = input.length;
- return input.slice(start);
- }
- position.position = idx;
- return input.slice(start, position.position);
- }
- function stringPercentDecode(input) {
- const bytes = encoder.encode(input);
- return percentDecode(bytes);
- }
- function isHexCharByte(byte) {
- return byte >= 48 && byte <= 57 || byte >= 65 && byte <= 70 || byte >= 97 && byte <= 102;
- }
- function hexByteToNumber(byte) {
- return (
- // 0-9
- byte >= 48 && byte <= 57 ? byte - 48 : (byte & 223) - 55
- );
- }
- function percentDecode(input) {
- const length = input.length;
- const output = new Uint8Array(length);
- let j = 0;
- for (let i = 0; i < length; ++i) {
- const byte = input[i];
- if (byte !== 37) {
- output[j++] = byte;
- } else if (byte === 37 && !(isHexCharByte(input[i + 1]) && isHexCharByte(input[i + 2]))) {
- output[j++] = 37;
- } else {
- output[j++] = hexByteToNumber(input[i + 1]) << 4 | hexByteToNumber(input[i + 2]);
- i += 2;
- }
- }
- return length === j ? output : output.subarray(0, j);
- }
- function parseMIMEType(input) {
- input = removeHTTPWhitespace(input, true, true);
- const position = { position: 0 };
- const type = collectASequenceOfCodePointsFast(
- "/",
- input,
- position
- );
- if (type.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(type)) {
- return "failure";
- }
- if (position.position > input.length) {
- return "failure";
- }
- position.position++;
- let subtype = collectASequenceOfCodePointsFast(
- ";",
- input,
- position
- );
- subtype = removeHTTPWhitespace(subtype, false, true);
- if (subtype.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(subtype)) {
- return "failure";
- }
- const typeLowercase = type.toLowerCase();
- const subtypeLowercase = subtype.toLowerCase();
- const mimeType = {
- type: typeLowercase,
- subtype: subtypeLowercase,
- /** @type {Map} */
- parameters: /* @__PURE__ */ new Map(),
- // https://mimesniff.spec.whatwg.org/#mime-type-essence
- essence: `${typeLowercase}/${subtypeLowercase}`
- };
- while (position.position < input.length) {
- position.position++;
- collectASequenceOfCodePoints(
- // https://fetch.spec.whatwg.org/#http-whitespace
- (char) => HTTP_WHITESPACE_REGEX.test(char),
- input,
- position
- );
- let parameterName = collectASequenceOfCodePoints(
- (char) => char !== ";" && char !== "=",
- input,
- position
- );
- parameterName = parameterName.toLowerCase();
- if (position.position < input.length) {
- if (input[position.position] === ";") {
- continue;
- }
- position.position++;
- }
- if (position.position > input.length) {
- break;
- }
- let parameterValue = null;
- if (input[position.position] === '"') {
- parameterValue = collectAnHTTPQuotedString(input, position, true);
- collectASequenceOfCodePointsFast(
- ";",
- input,
- position
- );
- } else {
- parameterValue = collectASequenceOfCodePointsFast(
- ";",
- input,
- position
- );
- parameterValue = removeHTTPWhitespace(parameterValue, false, true);
- if (parameterValue.length === 0) {
- continue;
- }
- }
- if (parameterName.length !== 0 && HTTP_TOKEN_CODEPOINTS.test(parameterName) && (parameterValue.length === 0 || HTTP_QUOTED_STRING_TOKENS.test(parameterValue)) && !mimeType.parameters.has(parameterName)) {
- mimeType.parameters.set(parameterName, parameterValue);
- }
- }
- return mimeType;
- }
- function forgivingBase64(data) {
- data = data.replace(ASCII_WHITESPACE_REPLACE_REGEX, "");
- let dataLength = data.length;
- if (dataLength % 4 === 0) {
- if (data.charCodeAt(dataLength - 1) === 61) {
- --dataLength;
- if (data.charCodeAt(dataLength - 1) === 61) {
- --dataLength;
- }
- }
- }
- if (dataLength % 4 === 1) {
- return "failure";
- }
- if (/[^+/0-9A-Za-z]/.test(data.length === dataLength ? data : data.substring(0, dataLength))) {
- return "failure";
- }
- const buffer = Buffer.from(data, "base64");
- return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);
- }
- function collectAnHTTPQuotedString(input, position, extractValue) {
- const positionStart = position.position;
- let value = "";
- assert5(input[position.position] === '"');
- position.position++;
- while (true) {
- value += collectASequenceOfCodePoints(
- (char) => char !== '"' && char !== "\\",
- input,
- position
- );
- if (position.position >= input.length) {
- break;
- }
- const quoteOrBackslash = input[position.position];
- position.position++;
- if (quoteOrBackslash === "\\") {
- if (position.position >= input.length) {
- value += "\\";
- break;
- }
- value += input[position.position];
- position.position++;
- } else {
- assert5(quoteOrBackslash === '"');
- break;
- }
- }
- if (extractValue) {
- return value;
- }
- return input.slice(positionStart, position.position);
- }
- function serializeAMimeType(mimeType) {
- assert5(mimeType !== "failure");
- const { parameters, essence } = mimeType;
- let serialization = essence;
- for (let [name2, value] of parameters.entries()) {
- serialization += ";";
- serialization += name2;
- serialization += "=";
- if (!HTTP_TOKEN_CODEPOINTS.test(value)) {
- value = value.replace(/(\\|")/g, "\\$1");
- value = '"' + value;
- value += '"';
- }
- serialization += value;
- }
- return serialization;
- }
- function isHTTPWhiteSpace(char) {
- return char === 13 || char === 10 || char === 9 || char === 32;
- }
- function removeHTTPWhitespace(str, leading = true, trailing = true) {
- return removeChars(str, leading, trailing, isHTTPWhiteSpace);
- }
- function isASCIIWhitespace(char) {
- return char === 13 || char === 10 || char === 9 || char === 12 || char === 32;
- }
- function removeASCIIWhitespace(str, leading = true, trailing = true) {
- return removeChars(str, leading, trailing, isASCIIWhitespace);
- }
- function removeChars(str, leading, trailing, predicate) {
- let lead = 0;
- let trail = str.length - 1;
- if (leading) {
- while (lead < str.length && predicate(str.charCodeAt(lead))) lead++;
- }
- if (trailing) {
- while (trail > 0 && predicate(str.charCodeAt(trail))) trail--;
- }
- return lead === 0 && trail === str.length - 1 ? str : str.slice(lead, trail + 1);
- }
- function isomorphicDecode(input) {
- const length = input.length;
- if ((2 << 15) - 1 > length) {
- return String.fromCharCode.apply(null, input);
- }
- let result = "";
- let i = 0;
- let addition = (2 << 15) - 1;
- while (i < length) {
- if (i + addition > length) {
- addition = length - i;
- }
- result += String.fromCharCode.apply(null, input.subarray(i, i += addition));
- }
- return result;
- }
- function minimizeSupportedMimeType(mimeType) {
- switch (mimeType.essence) {
- case "application/ecmascript":
- case "application/javascript":
- case "application/x-ecmascript":
- case "application/x-javascript":
- case "text/ecmascript":
- case "text/javascript":
- case "text/javascript1.0":
- case "text/javascript1.1":
- case "text/javascript1.2":
- case "text/javascript1.3":
- case "text/javascript1.4":
- case "text/javascript1.5":
- case "text/jscript":
- case "text/livescript":
- case "text/x-ecmascript":
- case "text/x-javascript":
- return "text/javascript";
- case "application/json":
- case "text/json":
- return "application/json";
- case "image/svg+xml":
- return "image/svg+xml";
- case "text/xml":
- case "application/xml":
- return "application/xml";
- }
- if (mimeType.subtype.endsWith("+json")) {
- return "application/json";
- }
- if (mimeType.subtype.endsWith("+xml")) {
- return "application/xml";
- }
- return "";
- }
- module2.exports = {
- dataURLProcessor,
- URLSerializer,
- collectASequenceOfCodePoints,
- collectASequenceOfCodePointsFast,
- stringPercentDecode,
- parseMIMEType,
- collectAnHTTPQuotedString,
- serializeAMimeType,
- removeChars,
- removeHTTPWhitespace,
- minimizeSupportedMimeType,
- HTTP_TOKEN_CODEPOINTS,
- isomorphicDecode
- };
- }
-});
-
-// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/web/fetch/webidl.js
-var require_webidl = __commonJS({
- ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/web/fetch/webidl.js"(exports2, module2) {
- "use strict";
- var { types, inspect } = require("node:util");
- var { markAsUncloneable } = require("node:worker_threads");
- var { toUSVString } = require_util();
- var webidl = {};
- webidl.converters = {};
- webidl.util = {};
- webidl.errors = {};
- webidl.errors.exception = function(message) {
- return new TypeError(`${message.header}: ${message.message}`);
- };
- webidl.errors.conversionFailed = function(context) {
- const plural2 = context.types.length === 1 ? "" : " one of";
- const message = `${context.argument} could not be converted to${plural2}: ${context.types.join(", ")}.`;
- return webidl.errors.exception({
- header: context.prefix,
- message
- });
- };
- webidl.errors.invalidArgument = function(context) {
- return webidl.errors.exception({
- header: context.prefix,
- message: `"${context.value}" is an invalid ${context.type}.`
- });
- };
- webidl.brandCheck = function(V, I, opts) {
- if (opts?.strict !== false) {
- if (!(V instanceof I)) {
- const err = new TypeError("Illegal invocation");
- err.code = "ERR_INVALID_THIS";
- throw err;
- }
- } else {
- if (V?.[Symbol.toStringTag] !== I.prototype[Symbol.toStringTag]) {
- const err = new TypeError("Illegal invocation");
- err.code = "ERR_INVALID_THIS";
- throw err;
- }
- }
- };
- webidl.argumentLengthCheck = function({ length }, min, ctx) {
- if (length < min) {
- throw webidl.errors.exception({
- message: `${min} argument${min !== 1 ? "s" : ""} required, but${length ? " only" : ""} ${length} found.`,
- header: ctx
- });
- }
- };
- webidl.illegalConstructor = function() {
- throw webidl.errors.exception({
- header: "TypeError",
- message: "Illegal constructor"
- });
- };
- webidl.util.Type = function(V) {
- switch (typeof V) {
- case "undefined":
- return "Undefined";
- case "boolean":
- return "Boolean";
- case "string":
- return "String";
- case "symbol":
- return "Symbol";
- case "number":
- return "Number";
- case "bigint":
- return "BigInt";
- case "function":
- case "object": {
- if (V === null) {
- return "Null";
- }
- return "Object";
- }
- }
- };
- webidl.util.markAsUncloneable = markAsUncloneable || (() => {
- });
- webidl.util.ConvertToInt = function(V, bitLength, signedness, opts) {
- let upperBound;
- let lowerBound;
- if (bitLength === 64) {
- upperBound = Math.pow(2, 53) - 1;
- if (signedness === "unsigned") {
- lowerBound = 0;
- } else {
- lowerBound = Math.pow(-2, 53) + 1;
- }
- } else if (signedness === "unsigned") {
- lowerBound = 0;
- upperBound = Math.pow(2, bitLength) - 1;
- } else {
- lowerBound = Math.pow(-2, bitLength) - 1;
- upperBound = Math.pow(2, bitLength - 1) - 1;
- }
- let x = Number(V);
- if (x === 0) {
- x = 0;
- }
- if (opts?.enforceRange === true) {
- if (Number.isNaN(x) || x === Number.POSITIVE_INFINITY || x === Number.NEGATIVE_INFINITY) {
- throw webidl.errors.exception({
- header: "Integer conversion",
- message: `Could not convert ${webidl.util.Stringify(V)} to an integer.`
- });
- }
- x = webidl.util.IntegerPart(x);
- if (x < lowerBound || x > upperBound) {
- throw webidl.errors.exception({
- header: "Integer conversion",
- message: `Value must be between ${lowerBound}-${upperBound}, got ${x}.`
- });
- }
- return x;
- }
- if (!Number.isNaN(x) && opts?.clamp === true) {
- x = Math.min(Math.max(x, lowerBound), upperBound);
- if (Math.floor(x) % 2 === 0) {
- x = Math.floor(x);
- } else {
- x = Math.ceil(x);
- }
- return x;
- }
- if (Number.isNaN(x) || x === 0 && Object.is(0, x) || x === Number.POSITIVE_INFINITY || x === Number.NEGATIVE_INFINITY) {
- return 0;
- }
- x = webidl.util.IntegerPart(x);
- x = x % Math.pow(2, bitLength);
- if (signedness === "signed" && x >= Math.pow(2, bitLength) - 1) {
- return x - Math.pow(2, bitLength);
- }
- return x;
- };
- webidl.util.IntegerPart = function(n) {
- const r = Math.floor(Math.abs(n));
- if (n < 0) {
- return -1 * r;
- }
- return r;
- };
- webidl.util.Stringify = function(V) {
- const type = webidl.util.Type(V);
- switch (type) {
- case "Symbol":
- return `Symbol(${V.description})`;
- case "Object":
- return inspect(V);
- case "String":
- return `"${V}"`;
- default:
- return `${V}`;
- }
- };
- webidl.sequenceConverter = function(converter) {
- return (V, prefix, argument, Iterable) => {
- if (webidl.util.Type(V) !== "Object") {
- throw webidl.errors.exception({
- header: prefix,
- message: `${argument} (${webidl.util.Stringify(V)}) is not iterable.`
- });
- }
- const method = typeof Iterable === "function" ? Iterable() : V?.[Symbol.iterator]?.();
- const seq = [];
- let index = 0;
- if (method === void 0 || typeof method.next !== "function") {
- throw webidl.errors.exception({
- header: prefix,
- message: `${argument} is not iterable.`
- });
- }
- while (true) {
- const { done, value } = method.next();
- if (done) {
- break;
- }
- seq.push(converter(value, prefix, `${argument}[${index++}]`));
- }
- return seq;
- };
- };
- webidl.recordConverter = function(keyConverter, valueConverter) {
- return (O, prefix, argument) => {
- if (webidl.util.Type(O) !== "Object") {
- throw webidl.errors.exception({
- header: prefix,
- message: `${argument} ("${webidl.util.Type(O)}") is not an Object.`
- });
- }
- const result = {};
- if (!types.isProxy(O)) {
- const keys2 = [...Object.getOwnPropertyNames(O), ...Object.getOwnPropertySymbols(O)];
- for (const key of keys2) {
- const typedKey = keyConverter(key, prefix, argument);
- const typedValue = valueConverter(O[key], prefix, argument);
- result[typedKey] = typedValue;
- }
- return result;
- }
- const keys = Reflect.ownKeys(O);
- for (const key of keys) {
- const desc2 = Reflect.getOwnPropertyDescriptor(O, key);
- if (desc2?.enumerable) {
- const typedKey = keyConverter(key, prefix, argument);
- const typedValue = valueConverter(O[key], prefix, argument);
- result[typedKey] = typedValue;
- }
- }
- return result;
- };
- };
- webidl.interfaceConverter = function(i) {
- return (V, prefix, argument, opts) => {
- if (opts?.strict !== false && !(V instanceof i)) {
- throw webidl.errors.exception({
- header: prefix,
- message: `Expected ${argument} ("${webidl.util.Stringify(V)}") to be an instance of ${i.name}.`
- });
- }
- return V;
- };
- };
- webidl.dictionaryConverter = function(converters) {
- return (dictionary, prefix, argument) => {
- const type = webidl.util.Type(dictionary);
- const dict = {};
- if (type === "Null" || type === "Undefined") {
- return dict;
- } else if (type !== "Object") {
- throw webidl.errors.exception({
- header: prefix,
- message: `Expected ${dictionary} to be one of: Null, Undefined, Object.`
- });
- }
- for (const options of converters) {
- const { key, defaultValue, required, converter } = options;
- if (required === true) {
- if (!Object.hasOwn(dictionary, key)) {
- throw webidl.errors.exception({
- header: prefix,
- message: `Missing required key "${key}".`
- });
- }
- }
- let value = dictionary[key];
- const hasDefault = Object.hasOwn(options, "defaultValue");
- if (hasDefault && value !== null) {
- value ??= defaultValue();
- }
- if (required || hasDefault || value !== void 0) {
- value = converter(value, prefix, `${argument}.${key}`);
- if (options.allowedValues && !options.allowedValues.includes(value)) {
- throw webidl.errors.exception({
- header: prefix,
- message: `${value} is not an accepted type. Expected one of ${options.allowedValues.join(", ")}.`
- });
- }
- dict[key] = value;
- }
- }
- return dict;
- };
- };
- webidl.nullableConverter = function(converter) {
- return (V, prefix, argument) => {
- if (V === null) {
- return V;
- }
- return converter(V, prefix, argument);
- };
- };
- webidl.converters.DOMString = function(V, prefix, argument, opts) {
- if (V === null && opts?.legacyNullToEmptyString) {
- return "";
- }
- if (typeof V === "symbol") {
- throw webidl.errors.exception({
- header: prefix,
- message: `${argument} is a symbol, which cannot be converted to a DOMString.`
- });
- }
- return String(V);
- };
- webidl.converters.ByteString = function(V, prefix, argument) {
- const x = webidl.converters.DOMString(V, prefix, argument);
- for (let index = 0; index < x.length; index++) {
- if (x.charCodeAt(index) > 255) {
- throw new TypeError(
- `Cannot convert argument to a ByteString because the character at index ${index} has a value of ${x.charCodeAt(index)} which is greater than 255.`
- );
- }
- }
- return x;
- };
- webidl.converters.USVString = toUSVString;
- webidl.converters.boolean = function(V) {
- const x = Boolean(V);
- return x;
- };
- webidl.converters.any = function(V) {
- return V;
- };
- webidl.converters["long long"] = function(V, prefix, argument) {
- const x = webidl.util.ConvertToInt(V, 64, "signed", void 0, prefix, argument);
- return x;
- };
- webidl.converters["unsigned long long"] = function(V, prefix, argument) {
- const x = webidl.util.ConvertToInt(V, 64, "unsigned", void 0, prefix, argument);
- return x;
- };
- webidl.converters["unsigned long"] = function(V, prefix, argument) {
- const x = webidl.util.ConvertToInt(V, 32, "unsigned", void 0, prefix, argument);
- return x;
- };
- webidl.converters["unsigned short"] = function(V, prefix, argument, opts) {
- const x = webidl.util.ConvertToInt(V, 16, "unsigned", opts, prefix, argument);
- return x;
- };
- webidl.converters.ArrayBuffer = function(V, prefix, argument, opts) {
- if (webidl.util.Type(V) !== "Object" || !types.isAnyArrayBuffer(V)) {
- throw webidl.errors.conversionFailed({
- prefix,
- argument: `${argument} ("${webidl.util.Stringify(V)}")`,
- types: ["ArrayBuffer"]
- });
- }
- if (opts?.allowShared === false && types.isSharedArrayBuffer(V)) {
- throw webidl.errors.exception({
- header: "ArrayBuffer",
- message: "SharedArrayBuffer is not allowed."
- });
- }
- if (V.resizable || V.growable) {
- throw webidl.errors.exception({
- header: "ArrayBuffer",
- message: "Received a resizable ArrayBuffer."
- });
- }
- return V;
- };
- webidl.converters.TypedArray = function(V, T, prefix, name2, opts) {
- if (webidl.util.Type(V) !== "Object" || !types.isTypedArray(V) || V.constructor.name !== T.name) {
- throw webidl.errors.conversionFailed({
- prefix,
- argument: `${name2} ("${webidl.util.Stringify(V)}")`,
- types: [T.name]
- });
- }
- if (opts?.allowShared === false && types.isSharedArrayBuffer(V.buffer)) {
- throw webidl.errors.exception({
- header: "ArrayBuffer",
- message: "SharedArrayBuffer is not allowed."
- });
- }
- if (V.buffer.resizable || V.buffer.growable) {
- throw webidl.errors.exception({
- header: "ArrayBuffer",
- message: "Received a resizable ArrayBuffer."
- });
- }
- return V;
- };
- webidl.converters.DataView = function(V, prefix, name2, opts) {
- if (webidl.util.Type(V) !== "Object" || !types.isDataView(V)) {
- throw webidl.errors.exception({
- header: prefix,
- message: `${name2} is not a DataView.`
- });
- }
- if (opts?.allowShared === false && types.isSharedArrayBuffer(V.buffer)) {
- throw webidl.errors.exception({
- header: "ArrayBuffer",
- message: "SharedArrayBuffer is not allowed."
- });
- }
- if (V.buffer.resizable || V.buffer.growable) {
- throw webidl.errors.exception({
- header: "ArrayBuffer",
- message: "Received a resizable ArrayBuffer."
- });
- }
- return V;
- };
- webidl.converters.BufferSource = function(V, prefix, name2, opts) {
- if (types.isAnyArrayBuffer(V)) {
- return webidl.converters.ArrayBuffer(V, prefix, name2, { ...opts, allowShared: false });
- }
- if (types.isTypedArray(V)) {
- return webidl.converters.TypedArray(V, V.constructor, prefix, name2, { ...opts, allowShared: false });
- }
- if (types.isDataView(V)) {
- return webidl.converters.DataView(V, prefix, name2, { ...opts, allowShared: false });
- }
- throw webidl.errors.conversionFailed({
- prefix,
- argument: `${name2} ("${webidl.util.Stringify(V)}")`,
- types: ["BufferSource"]
- });
- };
- webidl.converters["sequence"] = webidl.sequenceConverter(
- webidl.converters.ByteString
- );
- webidl.converters["sequence>"] = webidl.sequenceConverter(
- webidl.converters["sequence"]
- );
- webidl.converters["record"] = webidl.recordConverter(
- webidl.converters.ByteString,
- webidl.converters.ByteString
- );
- module2.exports = {
- webidl
- };
- }
-});
-
-// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/web/fetch/util.js
-var require_util3 = __commonJS({
- ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/web/fetch/util.js"(exports2, module2) {
- "use strict";
- var { Transform } = require("node:stream");
- var zlib = require("node:zlib");
- var { redirectStatusSet, referrerPolicySet: referrerPolicyTokens, badPortsSet } = require_constants4();
- var { getGlobalOrigin } = require_global();
- var { collectASequenceOfCodePoints, collectAnHTTPQuotedString, removeChars, parseMIMEType } = require_data_url();
- var { performance } = require("node:perf_hooks");
- var { isBlobLike, ReadableStreamFrom, isValidHTTPToken, normalizedMethodRecordsBase } = require_util();
- var assert5 = require("node:assert");
- var { isUint8Array } = require("node:util/types");
- var { webidl } = require_webidl();
- var supportedHashes = [];
- var crypto;
- try {
- crypto = require("node:crypto");
- const possibleRelevantHashes = ["sha256", "sha384", "sha512"];
- supportedHashes = crypto.getHashes().filter((hash) => possibleRelevantHashes.includes(hash));
- } catch {
- }
- function responseURL(response) {
- const urlList = response.urlList;
- const length = urlList.length;
- return length === 0 ? null : urlList[length - 1].toString();
- }
- function responseLocationURL(response, requestFragment) {
- if (!redirectStatusSet.has(response.status)) {
- return null;
- }
- let location = response.headersList.get("location", true);
- if (location !== null && isValidHeaderValue(location)) {
- if (!isValidEncodedURL(location)) {
- location = normalizeBinaryStringToUtf8(location);
- }
- location = new URL(location, responseURL(response));
- }
- if (location && !location.hash) {
- location.hash = requestFragment;
- }
- return location;
- }
- function isValidEncodedURL(url) {
- for (let i = 0; i < url.length; ++i) {
- const code2 = url.charCodeAt(i);
- if (code2 > 126 || // Non-US-ASCII + DEL
- code2 < 32) {
- return false;
- }
- }
- return true;
- }
- function normalizeBinaryStringToUtf8(value) {
- return Buffer.from(value, "binary").toString("utf8");
- }
- function requestCurrentURL(request) {
- return request.urlList[request.urlList.length - 1];
- }
- function requestBadPort(request) {
- const url = requestCurrentURL(request);
- if (urlIsHttpHttpsScheme(url) && badPortsSet.has(url.port)) {
- return "blocked";
- }
- return "allowed";
- }
- function isErrorLike(object) {
- return object instanceof Error || (object?.constructor?.name === "Error" || object?.constructor?.name === "DOMException");
- }
- function isValidReasonPhrase(statusText) {
- for (let i = 0; i < statusText.length; ++i) {
- const c = statusText.charCodeAt(i);
- if (!(c === 9 || // HTAB
- c >= 32 && c <= 126 || // SP / VCHAR
- c >= 128 && c <= 255)) {
- return false;
- }
- }
- return true;
- }
- var isValidHeaderName = isValidHTTPToken;
- function isValidHeaderValue(potentialValue) {
- return (potentialValue[0] === " " || potentialValue[0] === " " || potentialValue[potentialValue.length - 1] === " " || potentialValue[potentialValue.length - 1] === " " || potentialValue.includes("\n") || potentialValue.includes("\r") || potentialValue.includes("\0")) === false;
- }
- function setRequestReferrerPolicyOnRedirect(request, actualResponse) {
- const { headersList } = actualResponse;
- const policyHeader = (headersList.get("referrer-policy", true) ?? "").split(",");
- let policy = "";
- if (policyHeader.length > 0) {
- for (let i = policyHeader.length; i !== 0; i--) {
- const token = policyHeader[i - 1].trim();
- if (referrerPolicyTokens.has(token)) {
- policy = token;
- break;
- }
- }
- }
- if (policy !== "") {
- request.referrerPolicy = policy;
- }
- }
- function crossOriginResourcePolicyCheck() {
- return "allowed";
- }
- function corsCheck() {
- return "success";
- }
- function TAOCheck() {
- return "success";
- }
- function appendFetchMetadata(httpRequest) {
- let header = null;
- header = httpRequest.mode;
- httpRequest.headersList.set("sec-fetch-mode", header, true);
- }
- function appendRequestOriginHeader(request) {
- let serializedOrigin = request.origin;
- if (serializedOrigin === "client" || serializedOrigin === void 0) {
- return;
- }
- if (request.responseTainting === "cors" || request.mode === "websocket") {
- request.headersList.append("origin", serializedOrigin, true);
- } else if (request.method !== "GET" && request.method !== "HEAD") {
- switch (request.referrerPolicy) {
- case "no-referrer":
- serializedOrigin = null;
- break;
- case "no-referrer-when-downgrade":
- case "strict-origin":
- case "strict-origin-when-cross-origin":
- if (request.origin && urlHasHttpsScheme(request.origin) && !urlHasHttpsScheme(requestCurrentURL(request))) {
- serializedOrigin = null;
- }
- break;
- case "same-origin":
- if (!sameOrigin(request, requestCurrentURL(request))) {
- serializedOrigin = null;
- }
- break;
- default:
- }
- request.headersList.append("origin", serializedOrigin, true);
- }
- }
- function coarsenTime(timestamp, crossOriginIsolatedCapability) {
- return timestamp;
- }
- function clampAndCoarsenConnectionTimingInfo(connectionTimingInfo, defaultStartTime, crossOriginIsolatedCapability) {
- if (!connectionTimingInfo?.startTime || connectionTimingInfo.startTime < defaultStartTime) {
- return {
- domainLookupStartTime: defaultStartTime,
- domainLookupEndTime: defaultStartTime,
- connectionStartTime: defaultStartTime,
- connectionEndTime: defaultStartTime,
- secureConnectionStartTime: defaultStartTime,
- ALPNNegotiatedProtocol: connectionTimingInfo?.ALPNNegotiatedProtocol
- };
- }
- return {
- domainLookupStartTime: coarsenTime(connectionTimingInfo.domainLookupStartTime, crossOriginIsolatedCapability),
- domainLookupEndTime: coarsenTime(connectionTimingInfo.domainLookupEndTime, crossOriginIsolatedCapability),
- connectionStartTime: coarsenTime(connectionTimingInfo.connectionStartTime, crossOriginIsolatedCapability),
- connectionEndTime: coarsenTime(connectionTimingInfo.connectionEndTime, crossOriginIsolatedCapability),
- secureConnectionStartTime: coarsenTime(connectionTimingInfo.secureConnectionStartTime, crossOriginIsolatedCapability),
- ALPNNegotiatedProtocol: connectionTimingInfo.ALPNNegotiatedProtocol
- };
- }
- function coarsenedSharedCurrentTime(crossOriginIsolatedCapability) {
- return coarsenTime(performance.now(), crossOriginIsolatedCapability);
- }
- function createOpaqueTimingInfo(timingInfo) {
- return {
- startTime: timingInfo.startTime ?? 0,
- redirectStartTime: 0,
- redirectEndTime: 0,
- postRedirectStartTime: timingInfo.startTime ?? 0,
- finalServiceWorkerStartTime: 0,
- finalNetworkResponseStartTime: 0,
- finalNetworkRequestStartTime: 0,
- endTime: 0,
- encodedBodySize: 0,
- decodedBodySize: 0,
- finalConnectionTimingInfo: null
- };
- }
- function makePolicyContainer() {
- return {
- referrerPolicy: "strict-origin-when-cross-origin"
- };
- }
- function clonePolicyContainer(policyContainer) {
- return {
- referrerPolicy: policyContainer.referrerPolicy
- };
- }
- function determineRequestsReferrer(request) {
- const policy = request.referrerPolicy;
- assert5(policy);
- let referrerSource = null;
- if (request.referrer === "client") {
- const globalOrigin = getGlobalOrigin();
- if (!globalOrigin || globalOrigin.origin === "null") {
- return "no-referrer";
- }
- referrerSource = new URL(globalOrigin);
- } else if (request.referrer instanceof URL) {
- referrerSource = request.referrer;
- }
- let referrerURL = stripURLForReferrer(referrerSource);
- const referrerOrigin = stripURLForReferrer(referrerSource, true);
- if (referrerURL.toString().length > 4096) {
- referrerURL = referrerOrigin;
- }
- const areSameOrigin = sameOrigin(request, referrerURL);
- const isNonPotentiallyTrustWorthy = isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(request.url);
- switch (policy) {
- case "origin":
- return referrerOrigin != null ? referrerOrigin : stripURLForReferrer(referrerSource, true);
- case "unsafe-url":
- return referrerURL;
- case "same-origin":
- return areSameOrigin ? referrerOrigin : "no-referrer";
- case "origin-when-cross-origin":
- return areSameOrigin ? referrerURL : referrerOrigin;
- case "strict-origin-when-cross-origin": {
- const currentURL = requestCurrentURL(request);
- if (sameOrigin(referrerURL, currentURL)) {
- return referrerURL;
- }
- if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) {
- return "no-referrer";
- }
- return referrerOrigin;
- }
- case "strict-origin":
- // eslint-disable-line
- /**
- * 1. If referrerURL is a potentially trustworthy URL and
- * request’s current URL is not a potentially trustworthy URL,
- * then return no referrer.
- * 2. Return referrerOrigin
- */
- case "no-referrer-when-downgrade":
- // eslint-disable-line
- /**
- * 1. If referrerURL is a potentially trustworthy URL and
- * request’s current URL is not a potentially trustworthy URL,
- * then return no referrer.
- * 2. Return referrerOrigin
- */
- default:
- return isNonPotentiallyTrustWorthy ? "no-referrer" : referrerOrigin;
- }
- }
- function stripURLForReferrer(url, originOnly) {
- assert5(url instanceof URL);
- url = new URL(url);
- if (url.protocol === "file:" || url.protocol === "about:" || url.protocol === "blank:") {
- return "no-referrer";
- }
- url.username = "";
- url.password = "";
- url.hash = "";
- if (originOnly) {
- url.pathname = "";
- url.search = "";
- }
- return url;
- }
- function isURLPotentiallyTrustworthy(url) {
- if (!(url instanceof URL)) {
- return false;
- }
- if (url.href === "about:blank" || url.href === "about:srcdoc") {
- return true;
- }
- if (url.protocol === "data:") return true;
- if (url.protocol === "file:") return true;
- return isOriginPotentiallyTrustworthy(url.origin);
- function isOriginPotentiallyTrustworthy(origin) {
- if (origin == null || origin === "null") return false;
- const originAsURL = new URL(origin);
- if (originAsURL.protocol === "https:" || originAsURL.protocol === "wss:") {
- return true;
- }
- if (/^127(?:\.[0-9]+){0,2}\.[0-9]+$|^\[(?:0*:)*?:?0*1\]$/.test(originAsURL.hostname) || (originAsURL.hostname === "localhost" || originAsURL.hostname.includes("localhost.")) || originAsURL.hostname.endsWith(".localhost")) {
- return true;
- }
- return false;
- }
- }
- function bytesMatch(bytes, metadataList) {
- if (crypto === void 0) {
- return true;
- }
- const parsedMetadata = parseMetadata(metadataList);
- if (parsedMetadata === "no metadata") {
- return true;
- }
- if (parsedMetadata.length === 0) {
- return true;
- }
- const strongest = getStrongestMetadata(parsedMetadata);
- const metadata = filterMetadataListByAlgorithm(parsedMetadata, strongest);
- for (const item of metadata) {
- const algorithm = item.algo;
- const expectedValue = item.hash;
- let actualValue = crypto.createHash(algorithm).update(bytes).digest("base64");
- if (actualValue[actualValue.length - 1] === "=") {
- if (actualValue[actualValue.length - 2] === "=") {
- actualValue = actualValue.slice(0, -2);
- } else {
- actualValue = actualValue.slice(0, -1);
- }
- }
- if (compareBase64Mixed(actualValue, expectedValue)) {
- return true;
- }
- }
- return false;
- }
- var parseHashWithOptions = /(?sha256|sha384|sha512)-((?[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\s|$)( +[!-~]*)?)?/i;
- function parseMetadata(metadata) {
- const result = [];
- let empty = true;
- for (const token of metadata.split(" ")) {
- empty = false;
- const parsedToken = parseHashWithOptions.exec(token);
- if (parsedToken === null || parsedToken.groups === void 0 || parsedToken.groups.algo === void 0) {
- continue;
- }
- const algorithm = parsedToken.groups.algo.toLowerCase();
- if (supportedHashes.includes(algorithm)) {
- result.push(parsedToken.groups);
- }
- }
- if (empty === true) {
- return "no metadata";
- }
- return result;
- }
- function getStrongestMetadata(metadataList) {
- let algorithm = metadataList[0].algo;
- if (algorithm[3] === "5") {
- return algorithm;
- }
- for (let i = 1; i < metadataList.length; ++i) {
- const metadata = metadataList[i];
- if (metadata.algo[3] === "5") {
- algorithm = "sha512";
- break;
- } else if (algorithm[3] === "3") {
- continue;
- } else if (metadata.algo[3] === "3") {
- algorithm = "sha384";
- }
- }
- return algorithm;
- }
- function filterMetadataListByAlgorithm(metadataList, algorithm) {
- if (metadataList.length === 1) {
- return metadataList;
- }
- let pos2 = 0;
- for (let i = 0; i < metadataList.length; ++i) {
- if (metadataList[i].algo === algorithm) {
- metadataList[pos2++] = metadataList[i];
- }
- }
- metadataList.length = pos2;
- return metadataList;
- }
- function compareBase64Mixed(actualValue, expectedValue) {
- if (actualValue.length !== expectedValue.length) {
- return false;
- }
- for (let i = 0; i < actualValue.length; ++i) {
- if (actualValue[i] !== expectedValue[i]) {
- if (actualValue[i] === "+" && expectedValue[i] === "-" || actualValue[i] === "/" && expectedValue[i] === "_") {
- continue;
- }
- return false;
- }
- }
- return true;
- }
- function tryUpgradeRequestToAPotentiallyTrustworthyURL(request) {
- }
- function sameOrigin(A, B) {
- if (A.origin === B.origin && A.origin === "null") {
- return true;
- }
- if (A.protocol === B.protocol && A.hostname === B.hostname && A.port === B.port) {
- return true;
- }
- return false;
- }
- function createDeferredPromise() {
- let res;
- let rej;
- const promise = new Promise((resolve, reject) => {
- res = resolve;
- rej = reject;
- });
- return { promise, resolve: res, reject: rej };
- }
- function isAborted(fetchParams) {
- return fetchParams.controller.state === "aborted";
- }
- function isCancelled(fetchParams) {
- return fetchParams.controller.state === "aborted" || fetchParams.controller.state === "terminated";
- }
- function normalizeMethod(method) {
- return normalizedMethodRecordsBase[method.toLowerCase()] ?? method;
- }
- function serializeJavascriptValueToJSONString(value) {
- const result = JSON.stringify(value);
- if (result === void 0) {
- throw new TypeError("Value is not JSON serializable");
- }
- assert5(typeof result === "string");
- return result;
- }
- var esIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()));
- function createIterator(name2, kInternalIterator, keyIndex = 0, valueIndex = 1) {
- class FastIterableIterator {
- /** @type {any} */
- #target;
- /** @type {'key' | 'value' | 'key+value'} */
- #kind;
- /** @type {number} */
- #index;
- /**
- * @see https://webidl.spec.whatwg.org/#dfn-default-iterator-object
- * @param {unknown} target
- * @param {'key' | 'value' | 'key+value'} kind
- */
- constructor(target, kind) {
- this.#target = target;
- this.#kind = kind;
- this.#index = 0;
- }
- next() {
- if (typeof this !== "object" || this === null || !(#target in this)) {
- throw new TypeError(
- `'next' called on an object that does not implement interface ${name2} Iterator.`
- );
- }
- const index = this.#index;
- const values = this.#target[kInternalIterator];
- const len = values.length;
- if (index >= len) {
- return {
- value: void 0,
- done: true
- };
- }
- const { [keyIndex]: key, [valueIndex]: value } = values[index];
- this.#index = index + 1;
- let result;
- switch (this.#kind) {
- case "key":
- result = key;
- break;
- case "value":
- result = value;
- break;
- case "key+value":
- result = [key, value];
- break;
- }
- return {
- value: result,
- done: false
- };
- }
- }
- delete FastIterableIterator.prototype.constructor;
- Object.setPrototypeOf(FastIterableIterator.prototype, esIteratorPrototype);
- Object.defineProperties(FastIterableIterator.prototype, {
- [Symbol.toStringTag]: {
- writable: false,
- enumerable: false,
- configurable: true,
- value: `${name2} Iterator`
- },
- next: { writable: true, enumerable: true, configurable: true }
- });
- return function(target, kind) {
- return new FastIterableIterator(target, kind);
- };
- }
- function iteratorMixin(name2, object, kInternalIterator, keyIndex = 0, valueIndex = 1) {
- const makeIterator = createIterator(name2, kInternalIterator, keyIndex, valueIndex);
- const properties = {
- keys: {
- writable: true,
- enumerable: true,
- configurable: true,
- value: function keys() {
- webidl.brandCheck(this, object);
- return makeIterator(this, "key");
- }
- },
- values: {
- writable: true,
- enumerable: true,
- configurable: true,
- value: function values() {
- webidl.brandCheck(this, object);
- return makeIterator(this, "value");
- }
- },
- entries: {
- writable: true,
- enumerable: true,
- configurable: true,
- value: function entries() {
- webidl.brandCheck(this, object);
- return makeIterator(this, "key+value");
- }
- },
- forEach: {
- writable: true,
- enumerable: true,
- configurable: true,
- value: function forEach(callbackfn, thisArg = globalThis) {
- webidl.brandCheck(this, object);
- webidl.argumentLengthCheck(arguments, 1, `${name2}.forEach`);
- if (typeof callbackfn !== "function") {
- throw new TypeError(
- `Failed to execute 'forEach' on '${name2}': parameter 1 is not of type 'Function'.`
- );
- }
- for (const { 0: key, 1: value } of makeIterator(this, "key+value")) {
- callbackfn.call(thisArg, value, key, this);
- }
- }
- }
- };
- return Object.defineProperties(object.prototype, {
- ...properties,
- [Symbol.iterator]: {
- writable: true,
- enumerable: false,
- configurable: true,
- value: properties.entries.value
- }
- });
- }
- async function fullyReadBody(body, processBody, processBodyError) {
- const successSteps = processBody;
- const errorSteps = processBodyError;
- let reader;
- try {
- reader = body.stream.getReader();
- } catch (e) {
- errorSteps(e);
- return;
- }
- try {
- successSteps(await readAllBytes(reader));
- } catch (e) {
- errorSteps(e);
- }
- }
- function isReadableStreamLike(stream) {
- return stream instanceof ReadableStream || stream[Symbol.toStringTag] === "ReadableStream" && typeof stream.tee === "function";
- }
- function readableStreamClose(controller) {
- try {
- controller.close();
- controller.byobRequest?.respond(0);
- } catch (err) {
- if (!err.message.includes("Controller is already closed") && !err.message.includes("ReadableStream is already closed")) {
- throw err;
- }
- }
- }
- var invalidIsomorphicEncodeValueRegex = /[^\x00-\xFF]/;
- function isomorphicEncode(input) {
- assert5(!invalidIsomorphicEncodeValueRegex.test(input));
- return input;
- }
- async function readAllBytes(reader) {
- const bytes = [];
- let byteLength = 0;
- while (true) {
- const { done, value: chunk } = await reader.read();
- if (done) {
- return Buffer.concat(bytes, byteLength);
- }
- if (!isUint8Array(chunk)) {
- throw new TypeError("Received non-Uint8Array chunk");
- }
- bytes.push(chunk);
- byteLength += chunk.length;
- }
- }
- function urlIsLocal(url) {
- assert5("protocol" in url);
- const protocol = url.protocol;
- return protocol === "about:" || protocol === "blob:" || protocol === "data:";
- }
- function urlHasHttpsScheme(url) {
- return typeof url === "string" && url[5] === ":" && url[0] === "h" && url[1] === "t" && url[2] === "t" && url[3] === "p" && url[4] === "s" || url.protocol === "https:";
- }
- function urlIsHttpHttpsScheme(url) {
- assert5("protocol" in url);
- const protocol = url.protocol;
- return protocol === "http:" || protocol === "https:";
- }
- function simpleRangeHeaderValue(value, allowWhitespace) {
- const data = value;
- if (!data.startsWith("bytes")) {
- return "failure";
- }
- const position = { position: 5 };
- if (allowWhitespace) {
- collectASequenceOfCodePoints(
- (char) => char === " " || char === " ",
- data,
- position
- );
- }
- if (data.charCodeAt(position.position) !== 61) {
- return "failure";
- }
- position.position++;
- if (allowWhitespace) {
- collectASequenceOfCodePoints(
- (char) => char === " " || char === " ",
- data,
- position
- );
- }
- const rangeStart = collectASequenceOfCodePoints(
- (char) => {
- const code2 = char.charCodeAt(0);
- return code2 >= 48 && code2 <= 57;
- },
- data,
- position
- );
- const rangeStartValue = rangeStart.length ? Number(rangeStart) : null;
- if (allowWhitespace) {
- collectASequenceOfCodePoints(
- (char) => char === " " || char === " ",
- data,
- position
- );
- }
- if (data.charCodeAt(position.position) !== 45) {
- return "failure";
- }
- position.position++;
- if (allowWhitespace) {
- collectASequenceOfCodePoints(
- (char) => char === " " || char === " ",
- data,
- position
- );
- }
- const rangeEnd = collectASequenceOfCodePoints(
- (char) => {
- const code2 = char.charCodeAt(0);
- return code2 >= 48 && code2 <= 57;
- },
- data,
- position
- );
- const rangeEndValue = rangeEnd.length ? Number(rangeEnd) : null;
- if (position.position < data.length) {
- return "failure";
- }
- if (rangeEndValue === null && rangeStartValue === null) {
- return "failure";
- }
- if (rangeStartValue > rangeEndValue) {
- return "failure";
- }
- return { rangeStartValue, rangeEndValue };
- }
- function buildContentRange(rangeStart, rangeEnd, fullLength) {
- let contentRange = "bytes ";
- contentRange += isomorphicEncode(`${rangeStart}`);
- contentRange += "-";
- contentRange += isomorphicEncode(`${rangeEnd}`);
- contentRange += "/";
- contentRange += isomorphicEncode(`${fullLength}`);
- return contentRange;
- }
- var InflateStream = class extends Transform {
- #zlibOptions;
- /** @param {zlib.ZlibOptions} [zlibOptions] */
- constructor(zlibOptions) {
- super();
- this.#zlibOptions = zlibOptions;
- }
- _transform(chunk, encoding, callback) {
- if (!this._inflateStream) {
- if (chunk.length === 0) {
- callback();
- return;
- }
- this._inflateStream = (chunk[0] & 15) === 8 ? zlib.createInflate(this.#zlibOptions) : zlib.createInflateRaw(this.#zlibOptions);
- this._inflateStream.on("data", this.push.bind(this));
- this._inflateStream.on("end", () => this.push(null));
- this._inflateStream.on("error", (err) => this.destroy(err));
- }
- this._inflateStream.write(chunk, encoding, callback);
- }
- _final(callback) {
- if (this._inflateStream) {
- this._inflateStream.end();
- this._inflateStream = null;
- }
- callback();
- }
- };
- function createInflate(zlibOptions) {
- return new InflateStream(zlibOptions);
- }
- function extractMimeType(headers) {
- let charset = null;
- let essence = null;
- let mimeType = null;
- const values = getDecodeSplit("content-type", headers);
- if (values === null) {
- return "failure";
- }
- for (const value of values) {
- const temporaryMimeType = parseMIMEType(value);
- if (temporaryMimeType === "failure" || temporaryMimeType.essence === "*/*") {
- continue;
- }
- mimeType = temporaryMimeType;
- if (mimeType.essence !== essence) {
- charset = null;
- if (mimeType.parameters.has("charset")) {
- charset = mimeType.parameters.get("charset");
- }
- essence = mimeType.essence;
- } else if (!mimeType.parameters.has("charset") && charset !== null) {
- mimeType.parameters.set("charset", charset);
- }
- }
- if (mimeType == null) {
- return "failure";
- }
- return mimeType;
- }
- function gettingDecodingSplitting(value) {
- const input = value;
- const position = { position: 0 };
- const values = [];
- let temporaryValue = "";
- while (position.position < input.length) {
- temporaryValue += collectASequenceOfCodePoints(
- (char) => char !== '"' && char !== ",",
- input,
- position
- );
- if (position.position < input.length) {
- if (input.charCodeAt(position.position) === 34) {
- temporaryValue += collectAnHTTPQuotedString(
- input,
- position
- );
- if (position.position < input.length) {
- continue;
- }
- } else {
- assert5(input.charCodeAt(position.position) === 44);
- position.position++;
- }
- }
- temporaryValue = removeChars(temporaryValue, true, true, (char) => char === 9 || char === 32);
- values.push(temporaryValue);
- temporaryValue = "";
- }
- return values;
- }
- function getDecodeSplit(name2, list2) {
- const value = list2.get(name2, true);
- if (value === null) {
- return null;
- }
- return gettingDecodingSplitting(value);
- }
- var textDecoder = new TextDecoder();
- function utf8DecodeBytes(buffer) {
- if (buffer.length === 0) {
- return "";
- }
- if (buffer[0] === 239 && buffer[1] === 187 && buffer[2] === 191) {
- buffer = buffer.subarray(3);
- }
- const output = textDecoder.decode(buffer);
- return output;
- }
- var EnvironmentSettingsObjectBase = class {
- get baseUrl() {
- return getGlobalOrigin();
- }
- get origin() {
- return this.baseUrl?.origin;
- }
- policyContainer = makePolicyContainer();
- };
- var EnvironmentSettingsObject = class {
- settingsObject = new EnvironmentSettingsObjectBase();
- };
- var environmentSettingsObject = new EnvironmentSettingsObject();
- module2.exports = {
- isAborted,
- isCancelled,
- isValidEncodedURL,
- createDeferredPromise,
- ReadableStreamFrom,
- tryUpgradeRequestToAPotentiallyTrustworthyURL,
- clampAndCoarsenConnectionTimingInfo,
- coarsenedSharedCurrentTime,
- determineRequestsReferrer,
- makePolicyContainer,
- clonePolicyContainer,
- appendFetchMetadata,
- appendRequestOriginHeader,
- TAOCheck,
- corsCheck,
- crossOriginResourcePolicyCheck,
- createOpaqueTimingInfo,
- setRequestReferrerPolicyOnRedirect,
- isValidHTTPToken,
- requestBadPort,
- requestCurrentURL,
- responseURL,
- responseLocationURL,
- isBlobLike,
- isURLPotentiallyTrustworthy,
- isValidReasonPhrase,
- sameOrigin,
- normalizeMethod,
- serializeJavascriptValueToJSONString,
- iteratorMixin,
- createIterator,
- isValidHeaderName,
- isValidHeaderValue,
- isErrorLike,
- fullyReadBody,
- bytesMatch,
- isReadableStreamLike,
- readableStreamClose,
- isomorphicEncode,
- urlIsLocal,
- urlHasHttpsScheme,
- urlIsHttpHttpsScheme,
- readAllBytes,
- simpleRangeHeaderValue,
- buildContentRange,
- parseMetadata,
- createInflate,
- extractMimeType,
- getDecodeSplit,
- utf8DecodeBytes,
- environmentSettingsObject
- };
- }
-});
-
-// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/web/fetch/symbols.js
-var require_symbols2 = __commonJS({
- ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/web/fetch/symbols.js"(exports2, module2) {
- "use strict";
- module2.exports = {
- kUrl: Symbol("url"),
- kHeaders: Symbol("headers"),
- kSignal: Symbol("signal"),
- kState: Symbol("state"),
- kDispatcher: Symbol("dispatcher")
- };
- }
-});
-
-// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/web/fetch/file.js
-var require_file = __commonJS({
- ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/web/fetch/file.js"(exports2, module2) {
- "use strict";
- var { Blob: Blob2, File } = require("node:buffer");
- var { kState } = require_symbols2();
- var { webidl } = require_webidl();
- var FileLike = class _FileLike {
- constructor(blobLike, fileName, options = {}) {
- const n = fileName;
- const t = options.type;
- const d = options.lastModified ?? Date.now();
- this[kState] = {
- blobLike,
- name: n,
- type: t,
- lastModified: d
- };
- }
- stream(...args) {
- webidl.brandCheck(this, _FileLike);
- return this[kState].blobLike.stream(...args);
- }
- arrayBuffer(...args) {
- webidl.brandCheck(this, _FileLike);
- return this[kState].blobLike.arrayBuffer(...args);
- }
- slice(...args) {
- webidl.brandCheck(this, _FileLike);
- return this[kState].blobLike.slice(...args);
- }
- text(...args) {
- webidl.brandCheck(this, _FileLike);
- return this[kState].blobLike.text(...args);
- }
- get size() {
- webidl.brandCheck(this, _FileLike);
- return this[kState].blobLike.size;
- }
- get type() {
- webidl.brandCheck(this, _FileLike);
- return this[kState].blobLike.type;
- }
- get name() {
- webidl.brandCheck(this, _FileLike);
- return this[kState].name;
- }
- get lastModified() {
- webidl.brandCheck(this, _FileLike);
- return this[kState].lastModified;
- }
- get [Symbol.toStringTag]() {
- return "File";
- }
- };
- webidl.converters.Blob = webidl.interfaceConverter(Blob2);
- function isFileLike(object) {
- return object instanceof File || object && (typeof object.stream === "function" || typeof object.arrayBuffer === "function") && object[Symbol.toStringTag] === "File";
- }
- module2.exports = { FileLike, isFileLike };
- }
-});
-
-// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/web/fetch/formdata.js
-var require_formdata = __commonJS({
- ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/web/fetch/formdata.js"(exports2, module2) {
- "use strict";
- var { isBlobLike, iteratorMixin } = require_util3();
- var { kState } = require_symbols2();
- var { kEnumerableProperty } = require_util();
- var { FileLike, isFileLike } = require_file();
- var { webidl } = require_webidl();
- var { File: NativeFile } = require("node:buffer");
- var nodeUtil = require("node:util");
- var File = globalThis.File ?? NativeFile;
- var FormData = class _FormData {
- constructor(form) {
- webidl.util.markAsUncloneable(this);
- if (form !== void 0) {
- throw webidl.errors.conversionFailed({
- prefix: "FormData constructor",
- argument: "Argument 1",
- types: ["undefined"]
- });
- }
- this[kState] = [];
- }
- append(name2, value, filename = void 0) {
- webidl.brandCheck(this, _FormData);
- const prefix = "FormData.append";
- webidl.argumentLengthCheck(arguments, 2, prefix);
- if (arguments.length === 3 && !isBlobLike(value)) {
- throw new TypeError(
- "Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'"
- );
- }
- name2 = webidl.converters.USVString(name2, prefix, "name");
- value = isBlobLike(value) ? webidl.converters.Blob(value, prefix, "value", { strict: false }) : webidl.converters.USVString(value, prefix, "value");
- filename = arguments.length === 3 ? webidl.converters.USVString(filename, prefix, "filename") : void 0;
- const entry = makeEntry(name2, value, filename);
- this[kState].push(entry);
- }
- delete(name2) {
- webidl.brandCheck(this, _FormData);
- const prefix = "FormData.delete";
- webidl.argumentLengthCheck(arguments, 1, prefix);
- name2 = webidl.converters.USVString(name2, prefix, "name");
- this[kState] = this[kState].filter((entry) => entry.name !== name2);
- }
- get(name2) {
- webidl.brandCheck(this, _FormData);
- const prefix = "FormData.get";
- webidl.argumentLengthCheck(arguments, 1, prefix);
- name2 = webidl.converters.USVString(name2, prefix, "name");
- const idx = this[kState].findIndex((entry) => entry.name === name2);
- if (idx === -1) {
- return null;
- }
- return this[kState][idx].value;
- }
- getAll(name2) {
- webidl.brandCheck(this, _FormData);
- const prefix = "FormData.getAll";
- webidl.argumentLengthCheck(arguments, 1, prefix);
- name2 = webidl.converters.USVString(name2, prefix, "name");
- return this[kState].filter((entry) => entry.name === name2).map((entry) => entry.value);
- }
- has(name2) {
- webidl.brandCheck(this, _FormData);
- const prefix = "FormData.has";
- webidl.argumentLengthCheck(arguments, 1, prefix);
- name2 = webidl.converters.USVString(name2, prefix, "name");
- return this[kState].findIndex((entry) => entry.name === name2) !== -1;
- }
- set(name2, value, filename = void 0) {
- webidl.brandCheck(this, _FormData);
- const prefix = "FormData.set";
- webidl.argumentLengthCheck(arguments, 2, prefix);
- if (arguments.length === 3 && !isBlobLike(value)) {
- throw new TypeError(
- "Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'"
- );
- }
- name2 = webidl.converters.USVString(name2, prefix, "name");
- value = isBlobLike(value) ? webidl.converters.Blob(value, prefix, "name", { strict: false }) : webidl.converters.USVString(value, prefix, "name");
- filename = arguments.length === 3 ? webidl.converters.USVString(filename, prefix, "name") : void 0;
- const entry = makeEntry(name2, value, filename);
- const idx = this[kState].findIndex((entry2) => entry2.name === name2);
- if (idx !== -1) {
- this[kState] = [
- ...this[kState].slice(0, idx),
- entry,
- ...this[kState].slice(idx + 1).filter((entry2) => entry2.name !== name2)
- ];
- } else {
- this[kState].push(entry);
- }
- }
- [nodeUtil.inspect.custom](depth, options) {
- const state = this[kState].reduce((a, b) => {
- if (a[b.name]) {
- if (Array.isArray(a[b.name])) {
- a[b.name].push(b.value);
- } else {
- a[b.name] = [a[b.name], b.value];
- }
- } else {
- a[b.name] = b.value;
- }
- return a;
- }, { __proto__: null });
- options.depth ??= depth;
- options.colors ??= true;
- const output = nodeUtil.formatWithOptions(options, state);
- return `FormData ${output.slice(output.indexOf("]") + 2)}`;
- }
- };
- iteratorMixin("FormData", FormData, kState, "name", "value");
- Object.defineProperties(FormData.prototype, {
- append: kEnumerableProperty,
- delete: kEnumerableProperty,
- get: kEnumerableProperty,
- getAll: kEnumerableProperty,
- has: kEnumerableProperty,
- set: kEnumerableProperty,
- [Symbol.toStringTag]: {
- value: "FormData",
- configurable: true
- }
- });
- function makeEntry(name2, value, filename) {
- if (typeof value === "string") {
- } else {
- if (!isFileLike(value)) {
- value = value instanceof Blob ? new File([value], "blob", { type: value.type }) : new FileLike(value, "blob", { type: value.type });
- }
- if (filename !== void 0) {
- const options = {
- type: value.type,
- lastModified: value.lastModified
- };
- value = value instanceof NativeFile ? new File([value], filename, options) : new FileLike(value, filename, options);
- }
- }
- return { name: name2, value };
- }
- module2.exports = { FormData, makeEntry };
- }
-});
-
-// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/web/fetch/formdata-parser.js
-var require_formdata_parser = __commonJS({
- ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/web/fetch/formdata-parser.js"(exports2, module2) {
- "use strict";
- var { isUSVString, bufferToLowerCasedHeaderName } = require_util();
- var { utf8DecodeBytes } = require_util3();
- var { HTTP_TOKEN_CODEPOINTS, isomorphicDecode } = require_data_url();
- var { isFileLike } = require_file();
- var { makeEntry } = require_formdata();
- var assert5 = require("node:assert");
- var { File: NodeFile } = require("node:buffer");
- var File = globalThis.File ?? NodeFile;
- var formDataNameBuffer = Buffer.from('form-data; name="');
- var filenameBuffer = Buffer.from("; filename");
- var dd = Buffer.from("--");
- var ddcrlf = Buffer.from("--\r\n");
- function isAsciiString(chars) {
- for (let i = 0; i < chars.length; ++i) {
- if ((chars.charCodeAt(i) & ~127) !== 0) {
- return false;
- }
- }
- return true;
- }
- function validateBoundary(boundary) {
- const length = boundary.length;
- if (length < 27 || length > 70) {
- return false;
- }
- for (let i = 0; i < length; ++i) {
- const cp = boundary.charCodeAt(i);
- if (!(cp >= 48 && cp <= 57 || cp >= 65 && cp <= 90 || cp >= 97 && cp <= 122 || cp === 39 || cp === 45 || cp === 95)) {
- return false;
- }
- }
- return true;
- }
- function multipartFormDataParser(input, mimeType) {
- assert5(mimeType !== "failure" && mimeType.essence === "multipart/form-data");
- const boundaryString = mimeType.parameters.get("boundary");
- if (boundaryString === void 0) {
- return "failure";
- }
- const boundary = Buffer.from(`--${boundaryString}`, "utf8");
- const entryList = [];
- const position = { position: 0 };
- while (input[position.position] === 13 && input[position.position + 1] === 10) {
- position.position += 2;
- }
- let trailing = input.length;
- while (input[trailing - 1] === 10 && input[trailing - 2] === 13) {
- trailing -= 2;
- }
- if (trailing !== input.length) {
- input = input.subarray(0, trailing);
- }
- while (true) {
- if (input.subarray(position.position, position.position + boundary.length).equals(boundary)) {
- position.position += boundary.length;
- } else {
- return "failure";
- }
- if (position.position === input.length - 2 && bufferStartsWith(input, dd, position) || position.position === input.length - 4 && bufferStartsWith(input, ddcrlf, position)) {
- return entryList;
- }
- if (input[position.position] !== 13 || input[position.position + 1] !== 10) {
- return "failure";
- }
- position.position += 2;
- const result = parseMultipartFormDataHeaders(input, position);
- if (result === "failure") {
- return "failure";
- }
- let { name: name2, filename, contentType, encoding } = result;
- position.position += 2;
- let body;
- {
- const boundaryIndex = input.indexOf(boundary.subarray(2), position.position);
- if (boundaryIndex === -1) {
- return "failure";
- }
- body = input.subarray(position.position, boundaryIndex - 4);
- position.position += body.length;
- if (encoding === "base64") {
- body = Buffer.from(body.toString(), "base64");
- }
- }
- if (input[position.position] !== 13 || input[position.position + 1] !== 10) {
- return "failure";
- } else {
- position.position += 2;
- }
- let value;
- if (filename !== null) {
- contentType ??= "text/plain";
- if (!isAsciiString(contentType)) {
- contentType = "";
- }
- value = new File([body], filename, { type: contentType });
- } else {
- value = utf8DecodeBytes(Buffer.from(body));
- }
- assert5(isUSVString(name2));
- assert5(typeof value === "string" && isUSVString(value) || isFileLike(value));
- entryList.push(makeEntry(name2, value, filename));
- }
- }
- function parseMultipartFormDataHeaders(input, position) {
- let name2 = null;
- let filename = null;
- let contentType = null;
- let encoding = null;
- while (true) {
- if (input[position.position] === 13 && input[position.position + 1] === 10) {
- if (name2 === null) {
- return "failure";
- }
- return { name: name2, filename, contentType, encoding };
- }
- let headerName = collectASequenceOfBytes(
- (char) => char !== 10 && char !== 13 && char !== 58,
- input,
- position
- );
- headerName = removeChars(headerName, true, true, (char) => char === 9 || char === 32);
- if (!HTTP_TOKEN_CODEPOINTS.test(headerName.toString())) {
- return "failure";
- }
- if (input[position.position] !== 58) {
- return "failure";
- }
- position.position++;
- collectASequenceOfBytes(
- (char) => char === 32 || char === 9,
- input,
- position
- );
- switch (bufferToLowerCasedHeaderName(headerName)) {
- case "content-disposition": {
- name2 = filename = null;
- if (!bufferStartsWith(input, formDataNameBuffer, position)) {
- return "failure";
- }
- position.position += 17;
- name2 = parseMultipartFormDataName(input, position);
- if (name2 === null) {
- return "failure";
- }
- if (bufferStartsWith(input, filenameBuffer, position)) {
- let check = position.position + filenameBuffer.length;
- if (input[check] === 42) {
- position.position += 1;
- check += 1;
- }
- if (input[check] !== 61 || input[check + 1] !== 34) {
- return "failure";
- }
- position.position += 12;
- filename = parseMultipartFormDataName(input, position);
- if (filename === null) {
- return "failure";
- }
- }
- break;
- }
- case "content-type": {
- let headerValue = collectASequenceOfBytes(
- (char) => char !== 10 && char !== 13,
- input,
- position
- );
- headerValue = removeChars(headerValue, false, true, (char) => char === 9 || char === 32);
- contentType = isomorphicDecode(headerValue);
- break;
- }
- case "content-transfer-encoding": {
- let headerValue = collectASequenceOfBytes(
- (char) => char !== 10 && char !== 13,
- input,
- position
- );
- headerValue = removeChars(headerValue, false, true, (char) => char === 9 || char === 32);
- encoding = isomorphicDecode(headerValue);
- break;
- }
- default: {
- collectASequenceOfBytes(
- (char) => char !== 10 && char !== 13,
- input,
- position
- );
- }
- }
- if (input[position.position] !== 13 && input[position.position + 1] !== 10) {
- return "failure";
- } else {
- position.position += 2;
- }
- }
- }
- function parseMultipartFormDataName(input, position) {
- assert5(input[position.position - 1] === 34);
- let name2 = collectASequenceOfBytes(
- (char) => char !== 10 && char !== 13 && char !== 34,
- input,
- position
- );
- if (input[position.position] !== 34) {
- return null;
- } else {
- position.position++;
- }
- name2 = new TextDecoder().decode(name2).replace(/%0A/ig, "\n").replace(/%0D/ig, "\r").replace(/%22/g, '"');
- return name2;
- }
- function collectASequenceOfBytes(condition, input, position) {
- let start = position.position;
- while (start < input.length && condition(input[start])) {
- ++start;
- }
- return input.subarray(position.position, position.position = start);
- }
- function removeChars(buf, leading, trailing, predicate) {
- let lead = 0;
- let trail = buf.length - 1;
- if (leading) {
- while (lead < buf.length && predicate(buf[lead])) lead++;
- }
- if (trailing) {
- while (trail > 0 && predicate(buf[trail])) trail--;
- }
- return lead === 0 && trail === buf.length - 1 ? buf : buf.subarray(lead, trail + 1);
- }
- function bufferStartsWith(buffer, start, position) {
- if (buffer.length < start.length) {
- return false;
- }
- for (let i = 0; i < start.length; i++) {
- if (start[i] !== buffer[position.position + i]) {
- return false;
- }
- }
- return true;
- }
- module2.exports = {
- multipartFormDataParser,
- validateBoundary
- };
- }
-});
-
-// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/web/fetch/body.js
-var require_body = __commonJS({
- ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/web/fetch/body.js"(exports2, module2) {
- "use strict";
- var util = require_util();
- var {
- ReadableStreamFrom,
- isBlobLike,
- isReadableStreamLike,
- readableStreamClose,
- createDeferredPromise,
- fullyReadBody,
- extractMimeType,
- utf8DecodeBytes
- } = require_util3();
- var { FormData } = require_formdata();
- var { kState } = require_symbols2();
- var { webidl } = require_webidl();
- var { Blob: Blob2 } = require("node:buffer");
- var assert5 = require("node:assert");
- var { isErrored, isDisturbed } = require("node:stream");
- var { isArrayBuffer } = require("node:util/types");
- var { serializeAMimeType } = require_data_url();
- var { multipartFormDataParser } = require_formdata_parser();
- var random;
- try {
- const crypto = require("node:crypto");
- random = (max) => crypto.randomInt(0, max);
- } catch {
- random = (max) => Math.floor(Math.random(max));
- }
- var textEncoder = new TextEncoder();
- function noop3() {
- }
- var hasFinalizationRegistry = globalThis.FinalizationRegistry && process.version.indexOf("v18") !== 0;
- var streamRegistry;
- if (hasFinalizationRegistry) {
- streamRegistry = new FinalizationRegistry((weakRef) => {
- const stream = weakRef.deref();
- if (stream && !stream.locked && !isDisturbed(stream) && !isErrored(stream)) {
- stream.cancel("Response object has been garbage collected").catch(noop3);
- }
- });
- }
- function extractBody(object, keepalive = false) {
- let stream = null;
- if (object instanceof ReadableStream) {
- stream = object;
- } else if (isBlobLike(object)) {
- stream = object.stream();
- } else {
- stream = new ReadableStream({
- async pull(controller) {
- const buffer = typeof source === "string" ? textEncoder.encode(source) : source;
- if (buffer.byteLength) {
- controller.enqueue(buffer);
- }
- queueMicrotask(() => readableStreamClose(controller));
- },
- start() {
- },
- type: "bytes"
- });
- }
- assert5(isReadableStreamLike(stream));
- let action = null;
- let source = null;
- let length = null;
- let type = null;
- if (typeof object === "string") {
- source = object;
- type = "text/plain;charset=UTF-8";
- } else if (object instanceof URLSearchParams) {
- source = object.toString();
- type = "application/x-www-form-urlencoded;charset=UTF-8";
- } else if (isArrayBuffer(object)) {
- source = new Uint8Array(object.slice());
- } else if (ArrayBuffer.isView(object)) {
- source = new Uint8Array(object.buffer.slice(object.byteOffset, object.byteOffset + object.byteLength));
- } else if (util.isFormDataLike(object)) {
- const boundary = `----formdata-undici-0${`${random(1e11)}`.padStart(11, "0")}`;
- const prefix = `--${boundary}\r
-Content-Disposition: form-data`;
- const escape = (str) => str.replace(/\n/g, "%0A").replace(/\r/g, "%0D").replace(/"/g, "%22");
- const normalizeLinefeeds = (value) => value.replace(/\r?\n|\r/g, "\r\n");
- const blobParts = [];
- const rn = new Uint8Array([13, 10]);
- length = 0;
- let hasUnknownSizeValue = false;
- for (const [name2, value] of object) {
- if (typeof value === "string") {
- const chunk2 = textEncoder.encode(prefix + `; name="${escape(normalizeLinefeeds(name2))}"\r
-\r
-${normalizeLinefeeds(value)}\r
-`);
- blobParts.push(chunk2);
- length += chunk2.byteLength;
- } else {
- const chunk2 = textEncoder.encode(`${prefix}; name="${escape(normalizeLinefeeds(name2))}"` + (value.name ? `; filename="${escape(value.name)}"` : "") + `\r
-Content-Type: ${value.type || "application/octet-stream"}\r
-\r
-`);
- blobParts.push(chunk2, value, rn);
- if (typeof value.size === "number") {
- length += chunk2.byteLength + value.size + rn.byteLength;
- } else {
- hasUnknownSizeValue = true;
- }
- }
- }
- const chunk = textEncoder.encode(`--${boundary}--\r
-`);
- blobParts.push(chunk);
- length += chunk.byteLength;
- if (hasUnknownSizeValue) {
- length = null;
- }
- source = object;
- action = async function* () {
- for (const part of blobParts) {
- if (part.stream) {
- yield* part.stream();
- } else {
- yield part;
- }
- }
- };
- type = `multipart/form-data; boundary=${boundary}`;
- } else if (isBlobLike(object)) {
- source = object;
- length = object.size;
- if (object.type) {
- type = object.type;
- }
- } else if (typeof object[Symbol.asyncIterator] === "function") {
- if (keepalive) {
- throw new TypeError("keepalive");
- }
- if (util.isDisturbed(object) || object.locked) {
- throw new TypeError(
- "Response body object should not be disturbed or locked"
- );
- }
- stream = object instanceof ReadableStream ? object : ReadableStreamFrom(object);
- }
- if (typeof source === "string" || util.isBuffer(source)) {
- length = Buffer.byteLength(source);
- }
- if (action != null) {
- let iterator;
- stream = new ReadableStream({
- async start() {
- iterator = action(object)[Symbol.asyncIterator]();
- },
- async pull(controller) {
- const { value, done } = await iterator.next();
- if (done) {
- queueMicrotask(() => {
- controller.close();
- controller.byobRequest?.respond(0);
- });
- } else {
- if (!isErrored(stream)) {
- const buffer = new Uint8Array(value);
- if (buffer.byteLength) {
- controller.enqueue(buffer);
- }
- }
- }
- return controller.desiredSize > 0;
- },
- async cancel(reason) {
- await iterator.return();
- },
- type: "bytes"
- });
- }
- const body = { stream, source, length };
- return [body, type];
- }
- function safelyExtractBody(object, keepalive = false) {
- if (object instanceof ReadableStream) {
- assert5(!util.isDisturbed(object), "The body has already been consumed.");
- assert5(!object.locked, "The stream is locked.");
- }
- return extractBody(object, keepalive);
- }
- function cloneBody(instance, body) {
- const [out1, out2] = body.stream.tee();
- body.stream = out1;
- return {
- stream: out2,
- length: body.length,
- source: body.source
- };
- }
- function throwIfAborted(state) {
- if (state.aborted) {
- throw new DOMException("The operation was aborted.", "AbortError");
- }
- }
- function bodyMixinMethods(instance) {
- const methods = {
- blob() {
- return consumeBody(this, (bytes) => {
- let mimeType = bodyMimeType(this);
- if (mimeType === null) {
- mimeType = "";
- } else if (mimeType) {
- mimeType = serializeAMimeType(mimeType);
- }
- return new Blob2([bytes], { type: mimeType });
- }, instance);
- },
- arrayBuffer() {
- return consumeBody(this, (bytes) => {
- return new Uint8Array(bytes).buffer;
- }, instance);
- },
- text() {
- return consumeBody(this, utf8DecodeBytes, instance);
- },
- json() {
- return consumeBody(this, parseJSONFromBytes, instance);
- },
- formData() {
- return consumeBody(this, (value) => {
- const mimeType = bodyMimeType(this);
- if (mimeType !== null) {
- switch (mimeType.essence) {
- case "multipart/form-data": {
- const parsed = multipartFormDataParser(value, mimeType);
- if (parsed === "failure") {
- throw new TypeError("Failed to parse body as FormData.");
- }
- const fd = new FormData();
- fd[kState] = parsed;
- return fd;
- }
- case "application/x-www-form-urlencoded": {
- const entries = new URLSearchParams(value.toString());
- const fd = new FormData();
- for (const [name2, value2] of entries) {
- fd.append(name2, value2);
- }
- return fd;
- }
- }
- }
- throw new TypeError(
- 'Content-Type was not one of "multipart/form-data" or "application/x-www-form-urlencoded".'
- );
- }, instance);
- },
- bytes() {
- return consumeBody(this, (bytes) => {
- return new Uint8Array(bytes);
- }, instance);
- }
- };
- return methods;
- }
- function mixinBody(prototype) {
- Object.assign(prototype.prototype, bodyMixinMethods(prototype));
- }
- async function consumeBody(object, convertBytesToJSValue, instance) {
- webidl.brandCheck(object, instance);
- if (bodyUnusable(object)) {
- throw new TypeError("Body is unusable: Body has already been read");
- }
- throwIfAborted(object[kState]);
- const promise = createDeferredPromise();
- const errorSteps = (error) => promise.reject(error);
- const successSteps = (data) => {
- try {
- promise.resolve(convertBytesToJSValue(data));
- } catch (e) {
- errorSteps(e);
- }
- };
- if (object[kState].body == null) {
- successSteps(Buffer.allocUnsafe(0));
- return promise.promise;
- }
- await fullyReadBody(object[kState].body, successSteps, errorSteps);
- return promise.promise;
- }
- function bodyUnusable(object) {
- const body = object[kState].body;
- return body != null && (body.stream.locked || util.isDisturbed(body.stream));
- }
- function parseJSONFromBytes(bytes) {
- return JSON.parse(utf8DecodeBytes(bytes));
- }
- function bodyMimeType(requestOrResponse) {
- const headers = requestOrResponse[kState].headersList;
- const mimeType = extractMimeType(headers);
- if (mimeType === "failure") {
- return null;
- }
- return mimeType;
- }
- module2.exports = {
- extractBody,
- safelyExtractBody,
- cloneBody,
- mixinBody,
- streamRegistry,
- hasFinalizationRegistry,
- bodyUnusable
- };
- }
-});
-
-// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/dispatcher/client-h1.js
-var require_client_h1 = __commonJS({
- ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/dispatcher/client-h1.js"(exports2, module2) {
- "use strict";
- var assert5 = require("node:assert");
- var util = require_util();
- var { channels } = require_diagnostics();
- var timers = require_timers();
- var {
- RequestContentLengthMismatchError,
- ResponseContentLengthMismatchError,
- RequestAbortedError,
- HeadersTimeoutError,
- HeadersOverflowError,
- SocketError,
- InformationalError,
- BodyTimeoutError,
- HTTPParserError,
- ResponseExceededMaxSizeError
- } = require_errors();
- var {
- kUrl,
- kReset,
- kClient,
- kParser,
- kBlocking,
- kRunning,
- kPending,
- kSize,
- kWriting,
- kQueue,
- kNoRef,
- kKeepAliveDefaultTimeout,
- kHostHeader,
- kPendingIdx,
- kRunningIdx,
- kError,
- kPipelining,
- kSocket,
- kKeepAliveTimeoutValue,
- kMaxHeadersSize,
- kKeepAliveMaxTimeout,
- kKeepAliveTimeoutThreshold,
- kHeadersTimeout,
- kBodyTimeout,
- kStrictContentLength,
- kMaxRequests,
- kCounter,
- kMaxResponseSize,
- kOnError,
- kResume,
- kHTTPContext
- } = require_symbols();
- var constants2 = require_constants3();
- var EMPTY_BUF = Buffer.alloc(0);
- var FastBuffer = Buffer[Symbol.species];
- var addListener = util.addListener;
- var removeAllListeners = util.removeAllListeners;
- var extractBody;
- async function lazyllhttp() {
- const llhttpWasmData = process.env.JEST_WORKER_ID ? require_llhttp_wasm() : void 0;
- let mod;
- try {
- mod = await WebAssembly.compile(require_llhttp_simd_wasm());
- } catch (e) {
- mod = await WebAssembly.compile(llhttpWasmData || require_llhttp_wasm());
- }
- return await WebAssembly.instantiate(mod, {
- env: {
- /* eslint-disable camelcase */
- wasm_on_url: (p, at, len) => {
- return 0;
- },
- wasm_on_status: (p, at, len) => {
- assert5(currentParser.ptr === p);
- const start = at - currentBufferPtr + currentBufferRef.byteOffset;
- return currentParser.onStatus(new FastBuffer(currentBufferRef.buffer, start, len)) || 0;
- },
- wasm_on_message_begin: (p) => {
- assert5(currentParser.ptr === p);
- return currentParser.onMessageBegin() || 0;
- },
- wasm_on_header_field: (p, at, len) => {
- assert5(currentParser.ptr === p);
- const start = at - currentBufferPtr + currentBufferRef.byteOffset;
- return currentParser.onHeaderField(new FastBuffer(currentBufferRef.buffer, start, len)) || 0;
- },
- wasm_on_header_value: (p, at, len) => {
- assert5(currentParser.ptr === p);
- const start = at - currentBufferPtr + currentBufferRef.byteOffset;
- return currentParser.onHeaderValue(new FastBuffer(currentBufferRef.buffer, start, len)) || 0;
- },
- wasm_on_headers_complete: (p, statusCode, upgrade, shouldKeepAlive) => {
- assert5(currentParser.ptr === p);
- return currentParser.onHeadersComplete(statusCode, Boolean(upgrade), Boolean(shouldKeepAlive)) || 0;
- },
- wasm_on_body: (p, at, len) => {
- assert5(currentParser.ptr === p);
- const start = at - currentBufferPtr + currentBufferRef.byteOffset;
- return currentParser.onBody(new FastBuffer(currentBufferRef.buffer, start, len)) || 0;
- },
- wasm_on_message_complete: (p) => {
- assert5(currentParser.ptr === p);
- return currentParser.onMessageComplete() || 0;
- }
- /* eslint-enable camelcase */
- }
- });
- }
- var llhttpInstance = null;
- var llhttpPromise = lazyllhttp();
- llhttpPromise.catch();
- var currentParser = null;
- var currentBufferRef = null;
- var currentBufferSize = 0;
- var currentBufferPtr = null;
- var USE_NATIVE_TIMER = 0;
- var USE_FAST_TIMER = 1;
- var TIMEOUT_HEADERS = 2 | USE_FAST_TIMER;
- var TIMEOUT_BODY = 4 | USE_FAST_TIMER;
- var TIMEOUT_KEEP_ALIVE = 8 | USE_NATIVE_TIMER;
- var Parser2 = class {
- constructor(client, socket, { exports: exports3 }) {
- assert5(Number.isFinite(client[kMaxHeadersSize]) && client[kMaxHeadersSize] > 0);
- this.llhttp = exports3;
- this.ptr = this.llhttp.llhttp_alloc(constants2.TYPE.RESPONSE);
- this.client = client;
- this.socket = socket;
- this.timeout = null;
- this.timeoutValue = null;
- this.timeoutType = null;
- this.statusCode = null;
- this.statusText = "";
- this.upgrade = false;
- this.headers = [];
- this.headersSize = 0;
- this.headersMaxSize = client[kMaxHeadersSize];
- this.shouldKeepAlive = false;
- this.paused = false;
- this.resume = this.resume.bind(this);
- this.bytesRead = 0;
- this.keepAlive = "";
- this.contentLength = "";
- this.connection = "";
- this.maxResponseSize = client[kMaxResponseSize];
- }
- setTimeout(delay, type) {
- if (delay !== this.timeoutValue || type & USE_FAST_TIMER ^ this.timeoutType & USE_FAST_TIMER) {
- if (this.timeout) {
- timers.clearTimeout(this.timeout);
- this.timeout = null;
- }
- if (delay) {
- if (type & USE_FAST_TIMER) {
- this.timeout = timers.setFastTimeout(onParserTimeout, delay, new WeakRef(this));
- } else {
- this.timeout = setTimeout(onParserTimeout, delay, new WeakRef(this));
- this.timeout.unref();
- }
- }
- this.timeoutValue = delay;
- } else if (this.timeout) {
- if (this.timeout.refresh) {
- this.timeout.refresh();
- }
- }
- this.timeoutType = type;
- }
- resume() {
- if (this.socket.destroyed || !this.paused) {
- return;
- }
- assert5(this.ptr != null);
- assert5(currentParser == null);
- this.llhttp.llhttp_resume(this.ptr);
- assert5(this.timeoutType === TIMEOUT_BODY);
- if (this.timeout) {
- if (this.timeout.refresh) {
- this.timeout.refresh();
- }
- }
- this.paused = false;
- this.execute(this.socket.read() || EMPTY_BUF);
- this.readMore();
- }
- readMore() {
- while (!this.paused && this.ptr) {
- const chunk = this.socket.read();
- if (chunk === null) {
- break;
- }
- this.execute(chunk);
- }
- }
- execute(data) {
- assert5(this.ptr != null);
- assert5(currentParser == null);
- assert5(!this.paused);
- const { socket, llhttp } = this;
- if (data.length > currentBufferSize) {
- if (currentBufferPtr) {
- llhttp.free(currentBufferPtr);
- }
- currentBufferSize = Math.ceil(data.length / 4096) * 4096;
- currentBufferPtr = llhttp.malloc(currentBufferSize);
- }
- new Uint8Array(llhttp.memory.buffer, currentBufferPtr, currentBufferSize).set(data);
- try {
- let ret;
- try {
- currentBufferRef = data;
- currentParser = this;
- ret = llhttp.llhttp_execute(this.ptr, currentBufferPtr, data.length);
- } catch (err) {
- throw err;
- } finally {
- currentParser = null;
- currentBufferRef = null;
- }
- const offset = llhttp.llhttp_get_error_pos(this.ptr) - currentBufferPtr;
- if (ret === constants2.ERROR.PAUSED_UPGRADE) {
- this.onUpgrade(data.slice(offset));
- } else if (ret === constants2.ERROR.PAUSED) {
- this.paused = true;
- socket.unshift(data.slice(offset));
- } else if (ret !== constants2.ERROR.OK) {
- const ptr = llhttp.llhttp_get_error_reason(this.ptr);
- let message = "";
- if (ptr) {
- const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0);
- message = "Response does not match the HTTP/1.1 protocol (" + Buffer.from(llhttp.memory.buffer, ptr, len).toString() + ")";
- }
- throw new HTTPParserError(message, constants2.ERROR[ret], data.slice(offset));
- }
- } catch (err) {
- util.destroy(socket, err);
- }
- }
- destroy() {
- assert5(this.ptr != null);
- assert5(currentParser == null);
- this.llhttp.llhttp_free(this.ptr);
- this.ptr = null;
- this.timeout && timers.clearTimeout(this.timeout);
- this.timeout = null;
- this.timeoutValue = null;
- this.timeoutType = null;
- this.paused = false;
- }
- onStatus(buf) {
- this.statusText = buf.toString();
- }
- onMessageBegin() {
- const { socket, client } = this;
- if (socket.destroyed) {
- return -1;
- }
- const request = client[kQueue][client[kRunningIdx]];
- if (!request) {
- return -1;
- }
- request.onResponseStarted();
- }
- onHeaderField(buf) {
- const len = this.headers.length;
- if ((len & 1) === 0) {
- this.headers.push(buf);
- } else {
- this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf]);
- }
- this.trackHeader(buf.length);
- }
- onHeaderValue(buf) {
- let len = this.headers.length;
- if ((len & 1) === 1) {
- this.headers.push(buf);
- len += 1;
- } else {
- this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf]);
- }
- const key = this.headers[len - 2];
- if (key.length === 10) {
- const headerName = util.bufferToLowerCasedHeaderName(key);
- if (headerName === "keep-alive") {
- this.keepAlive += buf.toString();
- } else if (headerName === "connection") {
- this.connection += buf.toString();
- }
- } else if (key.length === 14 && util.bufferToLowerCasedHeaderName(key) === "content-length") {
- this.contentLength += buf.toString();
- }
- this.trackHeader(buf.length);
- }
- trackHeader(len) {
- this.headersSize += len;
- if (this.headersSize >= this.headersMaxSize) {
- util.destroy(this.socket, new HeadersOverflowError());
- }
- }
- onUpgrade(head) {
- const { upgrade, client, socket, headers, statusCode } = this;
- assert5(upgrade);
- assert5(client[kSocket] === socket);
- assert5(!socket.destroyed);
- assert5(!this.paused);
- assert5((headers.length & 1) === 0);
- const request = client[kQueue][client[kRunningIdx]];
- assert5(request);
- assert5(request.upgrade || request.method === "CONNECT");
- this.statusCode = null;
- this.statusText = "";
- this.shouldKeepAlive = null;
- this.headers = [];
- this.headersSize = 0;
- socket.unshift(head);
- socket[kParser].destroy();
- socket[kParser] = null;
- socket[kClient] = null;
- socket[kError] = null;
- removeAllListeners(socket);
- client[kSocket] = null;
- client[kHTTPContext] = null;
- client[kQueue][client[kRunningIdx]++] = null;
- client.emit("disconnect", client[kUrl], [client], new InformationalError("upgrade"));
- try {
- request.onUpgrade(statusCode, headers, socket);
- } catch (err) {
- util.destroy(socket, err);
- }
- client[kResume]();
- }
- onHeadersComplete(statusCode, upgrade, shouldKeepAlive) {
- const { client, socket, headers, statusText } = this;
- if (socket.destroyed) {
- return -1;
- }
- const request = client[kQueue][client[kRunningIdx]];
- if (!request) {
- return -1;
- }
- assert5(!this.upgrade);
- assert5(this.statusCode < 200);
- if (statusCode === 100) {
- util.destroy(socket, new SocketError("bad response", util.getSocketInfo(socket)));
- return -1;
- }
- if (upgrade && !request.upgrade) {
- util.destroy(socket, new SocketError("bad upgrade", util.getSocketInfo(socket)));
- return -1;
- }
- assert5(this.timeoutType === TIMEOUT_HEADERS);
- this.statusCode = statusCode;
- this.shouldKeepAlive = shouldKeepAlive || // Override llhttp value which does not allow keepAlive for HEAD.
- request.method === "HEAD" && !socket[kReset] && this.connection.toLowerCase() === "keep-alive";
- if (this.statusCode >= 200) {
- const bodyTimeout = request.bodyTimeout != null ? request.bodyTimeout : client[kBodyTimeout];
- this.setTimeout(bodyTimeout, TIMEOUT_BODY);
- } else if (this.timeout) {
- if (this.timeout.refresh) {
- this.timeout.refresh();
- }
- }
- if (request.method === "CONNECT") {
- assert5(client[kRunning] === 1);
- this.upgrade = true;
- return 2;
- }
- if (upgrade) {
- assert5(client[kRunning] === 1);
- this.upgrade = true;
- return 2;
- }
- assert5((this.headers.length & 1) === 0);
- this.headers = [];
- this.headersSize = 0;
- if (this.shouldKeepAlive && client[kPipelining]) {
- const keepAliveTimeout = this.keepAlive ? util.parseKeepAliveTimeout(this.keepAlive) : null;
- if (keepAliveTimeout != null) {
- const timeout = Math.min(
- keepAliveTimeout - client[kKeepAliveTimeoutThreshold],
- client[kKeepAliveMaxTimeout]
- );
- if (timeout <= 0) {
- socket[kReset] = true;
- } else {
- client[kKeepAliveTimeoutValue] = timeout;
- }
- } else {
- client[kKeepAliveTimeoutValue] = client[kKeepAliveDefaultTimeout];
- }
- } else {
- socket[kReset] = true;
- }
- const pause = request.onHeaders(statusCode, headers, this.resume, statusText) === false;
- if (request.aborted) {
- return -1;
- }
- if (request.method === "HEAD") {
- return 1;
- }
- if (statusCode < 200) {
- return 1;
- }
- if (socket[kBlocking]) {
- socket[kBlocking] = false;
- client[kResume]();
- }
- return pause ? constants2.ERROR.PAUSED : 0;
- }
- onBody(buf) {
- const { client, socket, statusCode, maxResponseSize } = this;
- if (socket.destroyed) {
- return -1;
- }
- const request = client[kQueue][client[kRunningIdx]];
- assert5(request);
- assert5(this.timeoutType === TIMEOUT_BODY);
- if (this.timeout) {
- if (this.timeout.refresh) {
- this.timeout.refresh();
- }
- }
- assert5(statusCode >= 200);
- if (maxResponseSize > -1 && this.bytesRead + buf.length > maxResponseSize) {
- util.destroy(socket, new ResponseExceededMaxSizeError());
- return -1;
- }
- this.bytesRead += buf.length;
- if (request.onData(buf) === false) {
- return constants2.ERROR.PAUSED;
- }
- }
- onMessageComplete() {
- const { client, socket, statusCode, upgrade, headers, contentLength, bytesRead, shouldKeepAlive } = this;
- if (socket.destroyed && (!statusCode || shouldKeepAlive)) {
- return -1;
- }
- if (upgrade) {
- return;
- }
- assert5(statusCode >= 100);
- assert5((this.headers.length & 1) === 0);
- const request = client[kQueue][client[kRunningIdx]];
- assert5(request);
- this.statusCode = null;
- this.statusText = "";
- this.bytesRead = 0;
- this.contentLength = "";
- this.keepAlive = "";
- this.connection = "";
- this.headers = [];
- this.headersSize = 0;
- if (statusCode < 200) {
- return;
- }
- if (request.method !== "HEAD" && contentLength && bytesRead !== parseInt(contentLength, 10)) {
- util.destroy(socket, new ResponseContentLengthMismatchError());
- return -1;
- }
- request.onComplete(headers);
- client[kQueue][client[kRunningIdx]++] = null;
- if (socket[kWriting]) {
- assert5(client[kRunning] === 0);
- util.destroy(socket, new InformationalError("reset"));
- return constants2.ERROR.PAUSED;
- } else if (!shouldKeepAlive) {
- util.destroy(socket, new InformationalError("reset"));
- return constants2.ERROR.PAUSED;
- } else if (socket[kReset] && client[kRunning] === 0) {
- util.destroy(socket, new InformationalError("reset"));
- return constants2.ERROR.PAUSED;
- } else if (client[kPipelining] == null || client[kPipelining] === 1) {
- setImmediate(() => client[kResume]());
- } else {
- client[kResume]();
- }
- }
- };
- function onParserTimeout(parser) {
- const { socket, timeoutType, client, paused } = parser.deref();
- if (timeoutType === TIMEOUT_HEADERS) {
- if (!socket[kWriting] || socket.writableNeedDrain || client[kRunning] > 1) {
- assert5(!paused, "cannot be paused while waiting for headers");
- util.destroy(socket, new HeadersTimeoutError());
- }
- } else if (timeoutType === TIMEOUT_BODY) {
- if (!paused) {
- util.destroy(socket, new BodyTimeoutError());
- }
- } else if (timeoutType === TIMEOUT_KEEP_ALIVE) {
- assert5(client[kRunning] === 0 && client[kKeepAliveTimeoutValue]);
- util.destroy(socket, new InformationalError("socket idle timeout"));
- }
- }
- async function connectH1(client, socket) {
- client[kSocket] = socket;
- if (!llhttpInstance) {
- llhttpInstance = await llhttpPromise;
- llhttpPromise = null;
- }
- socket[kNoRef] = false;
- socket[kWriting] = false;
- socket[kReset] = false;
- socket[kBlocking] = false;
- socket[kParser] = new Parser2(client, socket, llhttpInstance);
- addListener(socket, "error", function(err) {
- assert5(err.code !== "ERR_TLS_CERT_ALTNAME_INVALID");
- const parser = this[kParser];
- if (err.code === "ECONNRESET" && parser.statusCode && !parser.shouldKeepAlive) {
- parser.onMessageComplete();
- return;
- }
- this[kError] = err;
- this[kClient][kOnError](err);
- });
- addListener(socket, "readable", function() {
- const parser = this[kParser];
- if (parser) {
- parser.readMore();
- }
- });
- addListener(socket, "end", function() {
- const parser = this[kParser];
- if (parser.statusCode && !parser.shouldKeepAlive) {
- parser.onMessageComplete();
- return;
- }
- util.destroy(this, new SocketError("other side closed", util.getSocketInfo(this)));
- });
- addListener(socket, "close", function() {
- const client2 = this[kClient];
- const parser = this[kParser];
- if (parser) {
- if (!this[kError] && parser.statusCode && !parser.shouldKeepAlive) {
- parser.onMessageComplete();
- }
- this[kParser].destroy();
- this[kParser] = null;
- }
- const err = this[kError] || new SocketError("closed", util.getSocketInfo(this));
- client2[kSocket] = null;
- client2[kHTTPContext] = null;
- if (client2.destroyed) {
- assert5(client2[kPending] === 0);
- const requests = client2[kQueue].splice(client2[kRunningIdx]);
- for (let i = 0; i < requests.length; i++) {
- const request = requests[i];
- util.errorRequest(client2, request, err);
- }
- } else if (client2[kRunning] > 0 && err.code !== "UND_ERR_INFO") {
- const request = client2[kQueue][client2[kRunningIdx]];
- client2[kQueue][client2[kRunningIdx]++] = null;
- util.errorRequest(client2, request, err);
- }
- client2[kPendingIdx] = client2[kRunningIdx];
- assert5(client2[kRunning] === 0);
- client2.emit("disconnect", client2[kUrl], [client2], err);
- client2[kResume]();
- });
- let closed = false;
- socket.on("close", () => {
- closed = true;
- });
- return {
- version: "h1",
- defaultPipelining: 1,
- write(...args) {
- return writeH1(client, ...args);
- },
- resume() {
- resumeH1(client);
- },
- destroy(err, callback) {
- if (closed) {
- queueMicrotask(callback);
- } else {
- socket.destroy(err).on("close", callback);
- }
- },
- get destroyed() {
- return socket.destroyed;
- },
- busy(request) {
- if (socket[kWriting] || socket[kReset] || socket[kBlocking]) {
- return true;
- }
- if (request) {
- if (client[kRunning] > 0 && !request.idempotent) {
- return true;
- }
- if (client[kRunning] > 0 && (request.upgrade || request.method === "CONNECT")) {
- return true;
- }
- if (client[kRunning] > 0 && util.bodyLength(request.body) !== 0 && (util.isStream(request.body) || util.isAsyncIterable(request.body) || util.isFormDataLike(request.body))) {
- return true;
- }
- }
- return false;
- }
- };
- }
- function resumeH1(client) {
- const socket = client[kSocket];
- if (socket && !socket.destroyed) {
- if (client[kSize] === 0) {
- if (!socket[kNoRef] && socket.unref) {
- socket.unref();
- socket[kNoRef] = true;
- }
- } else if (socket[kNoRef] && socket.ref) {
- socket.ref();
- socket[kNoRef] = false;
- }
- if (client[kSize] === 0) {
- if (socket[kParser].timeoutType !== TIMEOUT_KEEP_ALIVE) {
- socket[kParser].setTimeout(client[kKeepAliveTimeoutValue], TIMEOUT_KEEP_ALIVE);
- }
- } else if (client[kRunning] > 0 && socket[kParser].statusCode < 200) {
- if (socket[kParser].timeoutType !== TIMEOUT_HEADERS) {
- const request = client[kQueue][client[kRunningIdx]];
- const headersTimeout = request.headersTimeout != null ? request.headersTimeout : client[kHeadersTimeout];
- socket[kParser].setTimeout(headersTimeout, TIMEOUT_HEADERS);
- }
- }
- }
- }
- function shouldSendContentLength(method) {
- return method !== "GET" && method !== "HEAD" && method !== "OPTIONS" && method !== "TRACE" && method !== "CONNECT";
- }
- function writeH1(client, request) {
- const { method, path: path16, host, upgrade, blocking, reset } = request;
- let { body, headers, contentLength } = request;
- const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH" || method === "QUERY" || method === "PROPFIND" || method === "PROPPATCH";
- if (util.isFormDataLike(body)) {
- if (!extractBody) {
- extractBody = require_body().extractBody;
- }
- const [bodyStream, contentType] = extractBody(body);
- if (request.contentType == null) {
- headers.push("content-type", contentType);
- }
- body = bodyStream.stream;
- contentLength = bodyStream.length;
- } else if (util.isBlobLike(body) && request.contentType == null && body.type) {
- headers.push("content-type", body.type);
- }
- if (body && typeof body.read === "function") {
- body.read(0);
- }
- const bodyLength = util.bodyLength(body);
- contentLength = bodyLength ?? contentLength;
- if (contentLength === null) {
- contentLength = request.contentLength;
- }
- if (contentLength === 0 && !expectsPayload) {
- contentLength = null;
- }
- if (shouldSendContentLength(method) && contentLength > 0 && request.contentLength !== null && request.contentLength !== contentLength) {
- if (client[kStrictContentLength]) {
- util.errorRequest(client, request, new RequestContentLengthMismatchError());
- return false;
- }
- process.emitWarning(new RequestContentLengthMismatchError());
- }
- const socket = client[kSocket];
- const abort = (err) => {
- if (request.aborted || request.completed) {
- return;
- }
- util.errorRequest(client, request, err || new RequestAbortedError());
- util.destroy(body);
- util.destroy(socket, new InformationalError("aborted"));
- };
- try {
- request.onConnect(abort);
- } catch (err) {
- util.errorRequest(client, request, err);
- }
- if (request.aborted) {
- return false;
- }
- if (method === "HEAD") {
- socket[kReset] = true;
- }
- if (upgrade || method === "CONNECT") {
- socket[kReset] = true;
- }
- if (reset != null) {
- socket[kReset] = reset;
- }
- if (client[kMaxRequests] && socket[kCounter]++ >= client[kMaxRequests]) {
- socket[kReset] = true;
- }
- if (blocking) {
- socket[kBlocking] = true;
- }
- let header = `${method} ${path16} HTTP/1.1\r
-`;
- if (typeof host === "string") {
- header += `host: ${host}\r
-`;
- } else {
- header += client[kHostHeader];
- }
- if (upgrade) {
- header += `connection: upgrade\r
-upgrade: ${upgrade}\r
-`;
- } else if (client[kPipelining] && !socket[kReset]) {
- header += "connection: keep-alive\r\n";
- } else {
- header += "connection: close\r\n";
- }
- if (Array.isArray(headers)) {
- for (let n = 0; n < headers.length; n += 2) {
- const key = headers[n + 0];
- const val = headers[n + 1];
- if (Array.isArray(val)) {
- for (let i = 0; i < val.length; i++) {
- header += `${key}: ${val[i]}\r
-`;
- }
- } else {
- header += `${key}: ${val}\r
-`;
- }
- }
- }
- if (channels.sendHeaders.hasSubscribers) {
- channels.sendHeaders.publish({ request, headers: header, socket });
- }
- if (!body || bodyLength === 0) {
- writeBuffer(abort, null, client, request, socket, contentLength, header, expectsPayload);
- } else if (util.isBuffer(body)) {
- writeBuffer(abort, body, client, request, socket, contentLength, header, expectsPayload);
- } else if (util.isBlobLike(body)) {
- if (typeof body.stream === "function") {
- writeIterable(abort, body.stream(), client, request, socket, contentLength, header, expectsPayload);
- } else {
- writeBlob(abort, body, client, request, socket, contentLength, header, expectsPayload);
- }
- } else if (util.isStream(body)) {
- writeStream(abort, body, client, request, socket, contentLength, header, expectsPayload);
- } else if (util.isIterable(body)) {
- writeIterable(abort, body, client, request, socket, contentLength, header, expectsPayload);
- } else {
- assert5(false);
- }
- return true;
- }
- function writeStream(abort, body, client, request, socket, contentLength, header, expectsPayload) {
- assert5(contentLength !== 0 || client[kRunning] === 0, "stream body cannot be pipelined");
- let finished = false;
- const writer = new AsyncWriter({ abort, socket, request, contentLength, client, expectsPayload, header });
- const onData = function(chunk) {
- if (finished) {
- return;
- }
- try {
- if (!writer.write(chunk) && this.pause) {
- this.pause();
- }
- } catch (err) {
- util.destroy(this, err);
- }
- };
- const onDrain = function() {
- if (finished) {
- return;
- }
- if (body.resume) {
- body.resume();
- }
- };
- const onClose = function() {
- queueMicrotask(() => {
- body.removeListener("error", onFinished);
- });
- if (!finished) {
- const err = new RequestAbortedError();
- queueMicrotask(() => onFinished(err));
- }
- };
- const onFinished = function(err) {
- if (finished) {
- return;
- }
- finished = true;
- assert5(socket.destroyed || socket[kWriting] && client[kRunning] <= 1);
- socket.off("drain", onDrain).off("error", onFinished);
- body.removeListener("data", onData).removeListener("end", onFinished).removeListener("close", onClose);
- if (!err) {
- try {
- writer.end();
- } catch (er) {
- err = er;
- }
- }
- writer.destroy(err);
- if (err && (err.code !== "UND_ERR_INFO" || err.message !== "reset")) {
- util.destroy(body, err);
- } else {
- util.destroy(body);
- }
- };
- body.on("data", onData).on("end", onFinished).on("error", onFinished).on("close", onClose);
- if (body.resume) {
- body.resume();
- }
- socket.on("drain", onDrain).on("error", onFinished);
- if (body.errorEmitted ?? body.errored) {
- setImmediate(() => onFinished(body.errored));
- } else if (body.endEmitted ?? body.readableEnded) {
- setImmediate(() => onFinished(null));
- }
- if (body.closeEmitted ?? body.closed) {
- setImmediate(onClose);
- }
- }
- function writeBuffer(abort, body, client, request, socket, contentLength, header, expectsPayload) {
- try {
- if (!body) {
- if (contentLength === 0) {
- socket.write(`${header}content-length: 0\r
-\r
-`, "latin1");
- } else {
- assert5(contentLength === null, "no body must not have content length");
- socket.write(`${header}\r
-`, "latin1");
- }
- } else if (util.isBuffer(body)) {
- assert5(contentLength === body.byteLength, "buffer body must have content length");
- socket.cork();
- socket.write(`${header}content-length: ${contentLength}\r
-\r
-`, "latin1");
- socket.write(body);
- socket.uncork();
- request.onBodySent(body);
- if (!expectsPayload && request.reset !== false) {
- socket[kReset] = true;
- }
- }
- request.onRequestSent();
- client[kResume]();
- } catch (err) {
- abort(err);
- }
- }
- async function writeBlob(abort, body, client, request, socket, contentLength, header, expectsPayload) {
- assert5(contentLength === body.size, "blob body must have content length");
- try {
- if (contentLength != null && contentLength !== body.size) {
- throw new RequestContentLengthMismatchError();
- }
- const buffer = Buffer.from(await body.arrayBuffer());
- socket.cork();
- socket.write(`${header}content-length: ${contentLength}\r
-\r
-`, "latin1");
- socket.write(buffer);
- socket.uncork();
- request.onBodySent(buffer);
- request.onRequestSent();
- if (!expectsPayload && request.reset !== false) {
- socket[kReset] = true;
- }
- client[kResume]();
- } catch (err) {
- abort(err);
- }
- }
- async function writeIterable(abort, body, client, request, socket, contentLength, header, expectsPayload) {
- assert5(contentLength !== 0 || client[kRunning] === 0, "iterator body cannot be pipelined");
- let callback = null;
- function onDrain() {
- if (callback) {
- const cb = callback;
- callback = null;
- cb();
- }
- }
- const waitForDrain = () => new Promise((resolve, reject) => {
- assert5(callback === null);
- if (socket[kError]) {
- reject(socket[kError]);
- } else {
- callback = resolve;
- }
- });
- socket.on("close", onDrain).on("drain", onDrain);
- const writer = new AsyncWriter({ abort, socket, request, contentLength, client, expectsPayload, header });
- try {
- for await (const chunk of body) {
- if (socket[kError]) {
- throw socket[kError];
- }
- if (!writer.write(chunk)) {
- await waitForDrain();
- }
- }
- writer.end();
- } catch (err) {
- writer.destroy(err);
- } finally {
- socket.off("close", onDrain).off("drain", onDrain);
- }
- }
- var AsyncWriter = class {
- constructor({ abort, socket, request, contentLength, client, expectsPayload, header }) {
- this.socket = socket;
- this.request = request;
- this.contentLength = contentLength;
- this.client = client;
- this.bytesWritten = 0;
- this.expectsPayload = expectsPayload;
- this.header = header;
- this.abort = abort;
- socket[kWriting] = true;
- }
- write(chunk) {
- const { socket, request, contentLength, client, bytesWritten, expectsPayload, header } = this;
- if (socket[kError]) {
- throw socket[kError];
- }
- if (socket.destroyed) {
- return false;
- }
- const len = Buffer.byteLength(chunk);
- if (!len) {
- return true;
- }
- if (contentLength !== null && bytesWritten + len > contentLength) {
- if (client[kStrictContentLength]) {
- throw new RequestContentLengthMismatchError();
- }
- process.emitWarning(new RequestContentLengthMismatchError());
- }
- socket.cork();
- if (bytesWritten === 0) {
- if (!expectsPayload && request.reset !== false) {
- socket[kReset] = true;
- }
- if (contentLength === null) {
- socket.write(`${header}transfer-encoding: chunked\r
-`, "latin1");
- } else {
- socket.write(`${header}content-length: ${contentLength}\r
-\r
-`, "latin1");
- }
- }
- if (contentLength === null) {
- socket.write(`\r
-${len.toString(16)}\r
-`, "latin1");
- }
- this.bytesWritten += len;
- const ret = socket.write(chunk);
- socket.uncork();
- request.onBodySent(chunk);
- if (!ret) {
- if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) {
- if (socket[kParser].timeout.refresh) {
- socket[kParser].timeout.refresh();
- }
- }
- }
- return ret;
- }
- end() {
- const { socket, contentLength, client, bytesWritten, expectsPayload, header, request } = this;
- request.onRequestSent();
- socket[kWriting] = false;
- if (socket[kError]) {
- throw socket[kError];
- }
- if (socket.destroyed) {
- return;
- }
- if (bytesWritten === 0) {
- if (expectsPayload) {
- socket.write(`${header}content-length: 0\r
-\r
-`, "latin1");
- } else {
- socket.write(`${header}\r
-`, "latin1");
- }
- } else if (contentLength === null) {
- socket.write("\r\n0\r\n\r\n", "latin1");
- }
- if (contentLength !== null && bytesWritten !== contentLength) {
- if (client[kStrictContentLength]) {
- throw new RequestContentLengthMismatchError();
- } else {
- process.emitWarning(new RequestContentLengthMismatchError());
- }
- }
- if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) {
- if (socket[kParser].timeout.refresh) {
- socket[kParser].timeout.refresh();
- }
- }
- client[kResume]();
- }
- destroy(err) {
- const { socket, client, abort } = this;
- socket[kWriting] = false;
- if (err) {
- assert5(client[kRunning] <= 1, "pipeline should only contain this request");
- abort(err);
- }
- }
- };
- module2.exports = connectH1;
- }
-});
-
-// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/dispatcher/client-h2.js
-var require_client_h2 = __commonJS({
- ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/dispatcher/client-h2.js"(exports2, module2) {
- "use strict";
- var assert5 = require("node:assert");
- var { pipeline } = require("node:stream");
- var util = require_util();
- var {
- RequestContentLengthMismatchError,
- RequestAbortedError,
- SocketError,
- InformationalError
- } = require_errors();
- var {
- kUrl,
- kReset,
- kClient,
- kRunning,
- kPending,
- kQueue,
- kPendingIdx,
- kRunningIdx,
- kError,
- kSocket,
- kStrictContentLength,
- kOnError,
- kMaxConcurrentStreams,
- kHTTP2Session,
- kResume,
- kSize,
- kHTTPContext
- } = require_symbols();
- var kOpenStreams = Symbol("open streams");
- var extractBody;
- var h2ExperimentalWarned = false;
- var http2;
- try {
- http2 = require("node:http2");
- } catch {
- http2 = { constants: {} };
- }
- var {
- constants: {
- HTTP2_HEADER_AUTHORITY,
- HTTP2_HEADER_METHOD,
- HTTP2_HEADER_PATH,
- HTTP2_HEADER_SCHEME,
- HTTP2_HEADER_CONTENT_LENGTH,
- HTTP2_HEADER_EXPECT,
- HTTP2_HEADER_STATUS
- }
- } = http2;
- function parseH2Headers(headers) {
- const result = [];
- for (const [name2, value] of Object.entries(headers)) {
- if (Array.isArray(value)) {
- for (const subvalue of value) {
- result.push(Buffer.from(name2), Buffer.from(subvalue));
- }
- } else {
- result.push(Buffer.from(name2), Buffer.from(value));
- }
- }
- return result;
- }
- async function connectH2(client, socket) {
- client[kSocket] = socket;
- if (!h2ExperimentalWarned) {
- h2ExperimentalWarned = true;
- process.emitWarning("H2 support is experimental, expect them to change at any time.", {
- code: "UNDICI-H2"
- });
- }
- const session = http2.connect(client[kUrl], {
- createConnection: () => socket,
- peerMaxConcurrentStreams: client[kMaxConcurrentStreams]
- });
- session[kOpenStreams] = 0;
- session[kClient] = client;
- session[kSocket] = socket;
- util.addListener(session, "error", onHttp2SessionError);
- util.addListener(session, "frameError", onHttp2FrameError);
- util.addListener(session, "end", onHttp2SessionEnd);
- util.addListener(session, "goaway", onHTTP2GoAway);
- util.addListener(session, "close", function() {
- const { [kClient]: client2 } = this;
- const { [kSocket]: socket2 } = client2;
- const err = this[kSocket][kError] || this[kError] || new SocketError("closed", util.getSocketInfo(socket2));
- client2[kHTTP2Session] = null;
- if (client2.destroyed) {
- assert5(client2[kPending] === 0);
- const requests = client2[kQueue].splice(client2[kRunningIdx]);
- for (let i = 0; i < requests.length; i++) {
- const request = requests[i];
- util.errorRequest(client2, request, err);
- }
- }
- });
- session.unref();
- client[kHTTP2Session] = session;
- socket[kHTTP2Session] = session;
- util.addListener(socket, "error", function(err) {
- assert5(err.code !== "ERR_TLS_CERT_ALTNAME_INVALID");
- this[kError] = err;
- this[kClient][kOnError](err);
- });
- util.addListener(socket, "end", function() {
- util.destroy(this, new SocketError("other side closed", util.getSocketInfo(this)));
- });
- util.addListener(socket, "close", function() {
- const err = this[kError] || new SocketError("closed", util.getSocketInfo(this));
- client[kSocket] = null;
- if (this[kHTTP2Session] != null) {
- this[kHTTP2Session].destroy(err);
- }
- client[kPendingIdx] = client[kRunningIdx];
- assert5(client[kRunning] === 0);
- client.emit("disconnect", client[kUrl], [client], err);
- client[kResume]();
- });
- let closed = false;
- socket.on("close", () => {
- closed = true;
- });
- return {
- version: "h2",
- defaultPipelining: Infinity,
- write(...args) {
- return writeH2(client, ...args);
- },
- resume() {
- resumeH2(client);
- },
- destroy(err, callback) {
- if (closed) {
- queueMicrotask(callback);
- } else {
- socket.destroy(err).on("close", callback);
- }
- },
- get destroyed() {
- return socket.destroyed;
- },
- busy() {
- return false;
- }
- };
- }
- function resumeH2(client) {
- const socket = client[kSocket];
- if (socket?.destroyed === false) {
- if (client[kSize] === 0 && client[kMaxConcurrentStreams] === 0) {
- socket.unref();
- client[kHTTP2Session].unref();
- } else {
- socket.ref();
- client[kHTTP2Session].ref();
- }
- }
- }
- function onHttp2SessionError(err) {
- assert5(err.code !== "ERR_TLS_CERT_ALTNAME_INVALID");
- this[kSocket][kError] = err;
- this[kClient][kOnError](err);
- }
- function onHttp2FrameError(type, code2, id) {
- if (id === 0) {
- const err = new InformationalError(`HTTP/2: "frameError" received - type ${type}, code ${code2}`);
- this[kSocket][kError] = err;
- this[kClient][kOnError](err);
- }
- }
- function onHttp2SessionEnd() {
- const err = new SocketError("other side closed", util.getSocketInfo(this[kSocket]));
- this.destroy(err);
- util.destroy(this[kSocket], err);
- }
- function onHTTP2GoAway(code2) {
- const err = this[kError] || new SocketError(`HTTP/2: "GOAWAY" frame received with code ${code2}`, util.getSocketInfo(this));
- const client = this[kClient];
- client[kSocket] = null;
- client[kHTTPContext] = null;
- if (this[kHTTP2Session] != null) {
- this[kHTTP2Session].destroy(err);
- this[kHTTP2Session] = null;
- }
- util.destroy(this[kSocket], err);
- if (client[kRunningIdx] < client[kQueue].length) {
- const request = client[kQueue][client[kRunningIdx]];
- client[kQueue][client[kRunningIdx]++] = null;
- util.errorRequest(client, request, err);
- client[kPendingIdx] = client[kRunningIdx];
- }
- assert5(client[kRunning] === 0);
- client.emit("disconnect", client[kUrl], [client], err);
- client[kResume]();
- }
- function shouldSendContentLength(method) {
- return method !== "GET" && method !== "HEAD" && method !== "OPTIONS" && method !== "TRACE" && method !== "CONNECT";
- }
- function writeH2(client, request) {
- const session = client[kHTTP2Session];
- const { method, path: path16, host, upgrade, expectContinue, signal, headers: reqHeaders } = request;
- let { body } = request;
- if (upgrade) {
- util.errorRequest(client, request, new Error("Upgrade not supported for H2"));
- return false;
- }
- const headers = {};
- for (let n = 0; n < reqHeaders.length; n += 2) {
- const key = reqHeaders[n + 0];
- const val = reqHeaders[n + 1];
- if (Array.isArray(val)) {
- for (let i = 0; i < val.length; i++) {
- if (headers[key]) {
- headers[key] += `,${val[i]}`;
- } else {
- headers[key] = val[i];
- }
- }
- } else {
- headers[key] = val;
- }
- }
- let stream;
- const { hostname, port } = client[kUrl];
- headers[HTTP2_HEADER_AUTHORITY] = host || `${hostname}${port ? `:${port}` : ""}`;
- headers[HTTP2_HEADER_METHOD] = method;
- const abort = (err) => {
- if (request.aborted || request.completed) {
- return;
- }
- err = err || new RequestAbortedError();
- util.errorRequest(client, request, err);
- if (stream != null) {
- util.destroy(stream, err);
- }
- util.destroy(body, err);
- client[kQueue][client[kRunningIdx]++] = null;
- client[kResume]();
- };
- try {
- request.onConnect(abort);
- } catch (err) {
- util.errorRequest(client, request, err);
- }
- if (request.aborted) {
- return false;
- }
- if (method === "CONNECT") {
- session.ref();
- stream = session.request(headers, { endStream: false, signal });
- if (stream.id && !stream.pending) {
- request.onUpgrade(null, null, stream);
- ++session[kOpenStreams];
- client[kQueue][client[kRunningIdx]++] = null;
- } else {
- stream.once("ready", () => {
- request.onUpgrade(null, null, stream);
- ++session[kOpenStreams];
- client[kQueue][client[kRunningIdx]++] = null;
- });
- }
- stream.once("close", () => {
- session[kOpenStreams] -= 1;
- if (session[kOpenStreams] === 0) session.unref();
- });
- return true;
- }
- headers[HTTP2_HEADER_PATH] = path16;
- headers[HTTP2_HEADER_SCHEME] = "https";
- const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH";
- if (body && typeof body.read === "function") {
- body.read(0);
- }
- let contentLength = util.bodyLength(body);
- if (util.isFormDataLike(body)) {
- extractBody ??= require_body().extractBody;
- const [bodyStream, contentType] = extractBody(body);
- headers["content-type"] = contentType;
- body = bodyStream.stream;
- contentLength = bodyStream.length;
- }
- if (contentLength == null) {
- contentLength = request.contentLength;
- }
- if (contentLength === 0 || !expectsPayload) {
- contentLength = null;
- }
- if (shouldSendContentLength(method) && contentLength > 0 && request.contentLength != null && request.contentLength !== contentLength) {
- if (client[kStrictContentLength]) {
- util.errorRequest(client, request, new RequestContentLengthMismatchError());
- return false;
- }
- process.emitWarning(new RequestContentLengthMismatchError());
- }
- if (contentLength != null) {
- assert5(body, "no body must not have content length");
- headers[HTTP2_HEADER_CONTENT_LENGTH] = `${contentLength}`;
- }
- session.ref();
- const shouldEndStream = method === "GET" || method === "HEAD" || body === null;
- if (expectContinue) {
- headers[HTTP2_HEADER_EXPECT] = "100-continue";
- stream = session.request(headers, { endStream: shouldEndStream, signal });
- stream.once("continue", writeBodyH2);
- } else {
- stream = session.request(headers, {
- endStream: shouldEndStream,
- signal
- });
- writeBodyH2();
- }
- ++session[kOpenStreams];
- stream.once("response", (headers2) => {
- const { [HTTP2_HEADER_STATUS]: statusCode, ...realHeaders } = headers2;
- request.onResponseStarted();
- if (request.aborted) {
- const err = new RequestAbortedError();
- util.errorRequest(client, request, err);
- util.destroy(stream, err);
- return;
- }
- if (request.onHeaders(Number(statusCode), parseH2Headers(realHeaders), stream.resume.bind(stream), "") === false) {
- stream.pause();
- }
- stream.on("data", (chunk) => {
- if (request.onData(chunk) === false) {
- stream.pause();
- }
- });
- });
- stream.once("end", () => {
- if (stream.state?.state == null || stream.state.state < 6) {
- request.onComplete([]);
- }
- if (session[kOpenStreams] === 0) {
- session.unref();
- }
- abort(new InformationalError("HTTP/2: stream half-closed (remote)"));
- client[kQueue][client[kRunningIdx]++] = null;
- client[kPendingIdx] = client[kRunningIdx];
- client[kResume]();
- });
- stream.once("close", () => {
- session[kOpenStreams] -= 1;
- if (session[kOpenStreams] === 0) {
- session.unref();
- }
- });
- stream.once("error", function(err) {
- abort(err);
- });
- stream.once("frameError", (type, code2) => {
- abort(new InformationalError(`HTTP/2: "frameError" received - type ${type}, code ${code2}`));
- });
- return true;
- function writeBodyH2() {
- if (!body || contentLength === 0) {
- writeBuffer(
- abort,
- stream,
- null,
- client,
- request,
- client[kSocket],
- contentLength,
- expectsPayload
- );
- } else if (util.isBuffer(body)) {
- writeBuffer(
- abort,
- stream,
- body,
- client,
- request,
- client[kSocket],
- contentLength,
- expectsPayload
- );
- } else if (util.isBlobLike(body)) {
- if (typeof body.stream === "function") {
- writeIterable(
- abort,
- stream,
- body.stream(),
- client,
- request,
- client[kSocket],
- contentLength,
- expectsPayload
- );
- } else {
- writeBlob(
- abort,
- stream,
- body,
- client,
- request,
- client[kSocket],
- contentLength,
- expectsPayload
- );
- }
- } else if (util.isStream(body)) {
- writeStream(
- abort,
- client[kSocket],
- expectsPayload,
- stream,
- body,
- client,
- request,
- contentLength
- );
- } else if (util.isIterable(body)) {
- writeIterable(
- abort,
- stream,
- body,
- client,
- request,
- client[kSocket],
- contentLength,
- expectsPayload
- );
- } else {
- assert5(false);
- }
- }
- }
- function writeBuffer(abort, h2stream, body, client, request, socket, contentLength, expectsPayload) {
- try {
- if (body != null && util.isBuffer(body)) {
- assert5(contentLength === body.byteLength, "buffer body must have content length");
- h2stream.cork();
- h2stream.write(body);
- h2stream.uncork();
- h2stream.end();
- request.onBodySent(body);
- }
- if (!expectsPayload) {
- socket[kReset] = true;
- }
- request.onRequestSent();
- client[kResume]();
- } catch (error) {
- abort(error);
- }
- }
- function writeStream(abort, socket, expectsPayload, h2stream, body, client, request, contentLength) {
- assert5(contentLength !== 0 || client[kRunning] === 0, "stream body cannot be pipelined");
- const pipe = pipeline(
- body,
- h2stream,
- (err) => {
- if (err) {
- util.destroy(pipe, err);
- abort(err);
- } else {
- util.removeAllListeners(pipe);
- request.onRequestSent();
- if (!expectsPayload) {
- socket[kReset] = true;
- }
- client[kResume]();
- }
- }
- );
- util.addListener(pipe, "data", onPipeData);
- function onPipeData(chunk) {
- request.onBodySent(chunk);
- }
- }
- async function writeBlob(abort, h2stream, body, client, request, socket, contentLength, expectsPayload) {
- assert5(contentLength === body.size, "blob body must have content length");
- try {
- if (contentLength != null && contentLength !== body.size) {
- throw new RequestContentLengthMismatchError();
- }
- const buffer = Buffer.from(await body.arrayBuffer());
- h2stream.cork();
- h2stream.write(buffer);
- h2stream.uncork();
- h2stream.end();
- request.onBodySent(buffer);
- request.onRequestSent();
- if (!expectsPayload) {
- socket[kReset] = true;
- }
- client[kResume]();
- } catch (err) {
- abort(err);
- }
- }
- async function writeIterable(abort, h2stream, body, client, request, socket, contentLength, expectsPayload) {
- assert5(contentLength !== 0 || client[kRunning] === 0, "iterator body cannot be pipelined");
- let callback = null;
- function onDrain() {
- if (callback) {
- const cb = callback;
- callback = null;
- cb();
- }
- }
- const waitForDrain = () => new Promise((resolve, reject) => {
- assert5(callback === null);
- if (socket[kError]) {
- reject(socket[kError]);
- } else {
- callback = resolve;
- }
- });
- h2stream.on("close", onDrain).on("drain", onDrain);
- try {
- for await (const chunk of body) {
- if (socket[kError]) {
- throw socket[kError];
- }
- const res = h2stream.write(chunk);
- request.onBodySent(chunk);
- if (!res) {
- await waitForDrain();
- }
- }
- h2stream.end();
- request.onRequestSent();
- if (!expectsPayload) {
- socket[kReset] = true;
- }
- client[kResume]();
- } catch (err) {
- abort(err);
- } finally {
- h2stream.off("close", onDrain).off("drain", onDrain);
- }
- }
- module2.exports = connectH2;
- }
-});
-
-// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/handler/redirect-handler.js
-var require_redirect_handler = __commonJS({
- ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/handler/redirect-handler.js"(exports2, module2) {
- "use strict";
- var util = require_util();
- var { kBodyUsed } = require_symbols();
- var assert5 = require("node:assert");
- var { InvalidArgumentError } = require_errors();
- var EE3 = require("node:events");
- var redirectableStatusCodes = [300, 301, 302, 303, 307, 308];
- var kBody = Symbol("body");
- var BodyAsyncIterable = class {
- constructor(body) {
- this[kBody] = body;
- this[kBodyUsed] = false;
- }
- async *[Symbol.asyncIterator]() {
- assert5(!this[kBodyUsed], "disturbed");
- this[kBodyUsed] = true;
- yield* this[kBody];
- }
- };
- var RedirectHandler = class {
- constructor(dispatch, maxRedirections, opts, handler) {
- if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) {
- throw new InvalidArgumentError("maxRedirections must be a positive number");
- }
- util.validateHandler(handler, opts.method, opts.upgrade);
- this.dispatch = dispatch;
- this.location = null;
- this.abort = null;
- this.opts = { ...opts, maxRedirections: 0 };
- this.maxRedirections = maxRedirections;
- this.handler = handler;
- this.history = [];
- this.redirectionLimitReached = false;
- if (util.isStream(this.opts.body)) {
- if (util.bodyLength(this.opts.body) === 0) {
- this.opts.body.on("data", function() {
- assert5(false);
- });
- }
- if (typeof this.opts.body.readableDidRead !== "boolean") {
- this.opts.body[kBodyUsed] = false;
- EE3.prototype.on.call(this.opts.body, "data", function() {
- this[kBodyUsed] = true;
- });
- }
- } else if (this.opts.body && typeof this.opts.body.pipeTo === "function") {
- this.opts.body = new BodyAsyncIterable(this.opts.body);
- } else if (this.opts.body && typeof this.opts.body !== "string" && !ArrayBuffer.isView(this.opts.body) && util.isIterable(this.opts.body)) {
- this.opts.body = new BodyAsyncIterable(this.opts.body);
- }
- }
- onConnect(abort) {
- this.abort = abort;
- this.handler.onConnect(abort, { history: this.history });
- }
- onUpgrade(statusCode, headers, socket) {
- this.handler.onUpgrade(statusCode, headers, socket);
- }
- onError(error) {
- this.handler.onError(error);
- }
- onHeaders(statusCode, headers, resume, statusText) {
- this.location = this.history.length >= this.maxRedirections || util.isDisturbed(this.opts.body) ? null : parseLocation(statusCode, headers);
- if (this.opts.throwOnMaxRedirect && this.history.length >= this.maxRedirections) {
- if (this.request) {
- this.request.abort(new Error("max redirects"));
- }
- this.redirectionLimitReached = true;
- this.abort(new Error("max redirects"));
- return;
- }
- if (this.opts.origin) {
- this.history.push(new URL(this.opts.path, this.opts.origin));
- }
- if (!this.location) {
- return this.handler.onHeaders(statusCode, headers, resume, statusText);
- }
- const { origin, pathname, search } = util.parseURL(new URL(this.location, this.opts.origin && new URL(this.opts.path, this.opts.origin)));
- const path16 = search ? `${pathname}${search}` : pathname;
- this.opts.headers = cleanRequestHeaders(this.opts.headers, statusCode === 303, this.opts.origin !== origin);
- this.opts.path = path16;
- this.opts.origin = origin;
- this.opts.maxRedirections = 0;
- this.opts.query = null;
- if (statusCode === 303 && this.opts.method !== "HEAD") {
- this.opts.method = "GET";
- this.opts.body = null;
- }
- }
- onData(chunk) {
- if (this.location) {
- } else {
- return this.handler.onData(chunk);
- }
- }
- onComplete(trailers) {
- if (this.location) {
- this.location = null;
- this.abort = null;
- this.dispatch(this.opts, this);
- } else {
- this.handler.onComplete(trailers);
- }
- }
- onBodySent(chunk) {
- if (this.handler.onBodySent) {
- this.handler.onBodySent(chunk);
- }
- }
- };
- function parseLocation(statusCode, headers) {
- if (redirectableStatusCodes.indexOf(statusCode) === -1) {
- return null;
- }
- for (let i = 0; i < headers.length; i += 2) {
- if (headers[i].length === 8 && util.headerNameToString(headers[i]) === "location") {
- return headers[i + 1];
- }
- }
- }
- function shouldRemoveHeader(header, removeContent, unknownOrigin) {
- if (header.length === 4) {
- return util.headerNameToString(header) === "host";
- }
- if (removeContent && util.headerNameToString(header).startsWith("content-")) {
- return true;
- }
- if (unknownOrigin && (header.length === 13 || header.length === 6 || header.length === 19)) {
- const name2 = util.headerNameToString(header);
- return name2 === "authorization" || name2 === "cookie" || name2 === "proxy-authorization";
- }
- return false;
- }
- function cleanRequestHeaders(headers, removeContent, unknownOrigin) {
- const ret = [];
- if (Array.isArray(headers)) {
- for (let i = 0; i < headers.length; i += 2) {
- if (!shouldRemoveHeader(headers[i], removeContent, unknownOrigin)) {
- ret.push(headers[i], headers[i + 1]);
- }
- }
- } else if (headers && typeof headers === "object") {
- for (const key of Object.keys(headers)) {
- if (!shouldRemoveHeader(key, removeContent, unknownOrigin)) {
- ret.push(key, headers[key]);
- }
- }
- } else {
- assert5(headers == null, "headers must be an object or an array");
- }
- return ret;
- }
- module2.exports = RedirectHandler;
- }
-});
-
-// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/interceptor/redirect-interceptor.js
-var require_redirect_interceptor = __commonJS({
- ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/interceptor/redirect-interceptor.js"(exports2, module2) {
- "use strict";
- var RedirectHandler = require_redirect_handler();
- function createRedirectInterceptor({ maxRedirections: defaultMaxRedirections }) {
- return (dispatch) => {
- return function Intercept(opts, handler) {
- const { maxRedirections = defaultMaxRedirections } = opts;
- if (!maxRedirections) {
- return dispatch(opts, handler);
- }
- const redirectHandler = new RedirectHandler(dispatch, maxRedirections, opts, handler);
- opts = { ...opts, maxRedirections: 0 };
- return dispatch(opts, redirectHandler);
- };
- };
- }
- module2.exports = createRedirectInterceptor;
- }
-});
-
-// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/dispatcher/client.js
-var require_client = __commonJS({
- ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/dispatcher/client.js"(exports2, module2) {
- "use strict";
- var assert5 = require("node:assert");
- var net = require("node:net");
- var http = require("node:http");
- var util = require_util();
- var { channels } = require_diagnostics();
- var Request = require_request();
- var DispatcherBase = require_dispatcher_base();
- var {
- InvalidArgumentError,
- InformationalError,
- ClientDestroyedError
- } = require_errors();
- var buildConnector = require_connect();
- var {
- kUrl,
- kServerName,
- kClient,
- kBusy,
- kConnect,
- kResuming,
- kRunning,
- kPending,
- kSize,
- kQueue,
- kConnected,
- kConnecting,
- kNeedDrain,
- kKeepAliveDefaultTimeout,
- kHostHeader,
- kPendingIdx,
- kRunningIdx,
- kError,
- kPipelining,
- kKeepAliveTimeoutValue,
- kMaxHeadersSize,
- kKeepAliveMaxTimeout,
- kKeepAliveTimeoutThreshold,
- kHeadersTimeout,
- kBodyTimeout,
- kStrictContentLength,
- kConnector,
- kMaxRedirections,
- kMaxRequests,
- kCounter,
- kClose,
- kDestroy,
- kDispatch,
- kInterceptors,
- kLocalAddress,
- kMaxResponseSize,
- kOnError,
- kHTTPContext,
- kMaxConcurrentStreams,
- kResume
- } = require_symbols();
- var connectH1 = require_client_h1();
- var connectH2 = require_client_h2();
- var deprecatedInterceptorWarned = false;
- var kClosedResolve = Symbol("kClosedResolve");
- var noop3 = () => {
- };
- function getPipelining(client) {
- return client[kPipelining] ?? client[kHTTPContext]?.defaultPipelining ?? 1;
- }
- var Client = class extends DispatcherBase {
- /**
- *
- * @param {string|URL} url
- * @param {import('../../types/client.js').Client.Options} options
- */
- constructor(url, {
- interceptors,
- maxHeaderSize,
- headersTimeout,
- socketTimeout,
- requestTimeout,
- connectTimeout,
- bodyTimeout,
- idleTimeout,
- keepAlive,
- keepAliveTimeout,
- maxKeepAliveTimeout,
- keepAliveMaxTimeout,
- keepAliveTimeoutThreshold,
- socketPath,
- pipelining,
- tls,
- strictContentLength,
- maxCachedSessions,
- maxRedirections,
- connect: connect2,
- maxRequestsPerClient,
- localAddress,
- maxResponseSize,
- autoSelectFamily,
- autoSelectFamilyAttemptTimeout,
- // h2
- maxConcurrentStreams,
- allowH2
- } = {}) {
- super();
- if (keepAlive !== void 0) {
- throw new InvalidArgumentError("unsupported keepAlive, use pipelining=0 instead");
- }
- if (socketTimeout !== void 0) {
- throw new InvalidArgumentError("unsupported socketTimeout, use headersTimeout & bodyTimeout instead");
- }
- if (requestTimeout !== void 0) {
- throw new InvalidArgumentError("unsupported requestTimeout, use headersTimeout & bodyTimeout instead");
- }
- if (idleTimeout !== void 0) {
- throw new InvalidArgumentError("unsupported idleTimeout, use keepAliveTimeout instead");
- }
- if (maxKeepAliveTimeout !== void 0) {
- throw new InvalidArgumentError("unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead");
- }
- if (maxHeaderSize != null && !Number.isFinite(maxHeaderSize)) {
- throw new InvalidArgumentError("invalid maxHeaderSize");
- }
- if (socketPath != null && typeof socketPath !== "string") {
- throw new InvalidArgumentError("invalid socketPath");
- }
- if (connectTimeout != null && (!Number.isFinite(connectTimeout) || connectTimeout < 0)) {
- throw new InvalidArgumentError("invalid connectTimeout");
- }
- if (keepAliveTimeout != null && (!Number.isFinite(keepAliveTimeout) || keepAliveTimeout <= 0)) {
- throw new InvalidArgumentError("invalid keepAliveTimeout");
- }
- if (keepAliveMaxTimeout != null && (!Number.isFinite(keepAliveMaxTimeout) || keepAliveMaxTimeout <= 0)) {
- throw new InvalidArgumentError("invalid keepAliveMaxTimeout");
- }
- if (keepAliveTimeoutThreshold != null && !Number.isFinite(keepAliveTimeoutThreshold)) {
- throw new InvalidArgumentError("invalid keepAliveTimeoutThreshold");
- }
- if (headersTimeout != null && (!Number.isInteger(headersTimeout) || headersTimeout < 0)) {
- throw new InvalidArgumentError("headersTimeout must be a positive integer or zero");
- }
- if (bodyTimeout != null && (!Number.isInteger(bodyTimeout) || bodyTimeout < 0)) {
- throw new InvalidArgumentError("bodyTimeout must be a positive integer or zero");
- }
- if (connect2 != null && typeof connect2 !== "function" && typeof connect2 !== "object") {
- throw new InvalidArgumentError("connect must be a function or an object");
- }
- if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) {
- throw new InvalidArgumentError("maxRedirections must be a positive number");
- }
- if (maxRequestsPerClient != null && (!Number.isInteger(maxRequestsPerClient) || maxRequestsPerClient < 0)) {
- throw new InvalidArgumentError("maxRequestsPerClient must be a positive number");
- }
- if (localAddress != null && (typeof localAddress !== "string" || net.isIP(localAddress) === 0)) {
- throw new InvalidArgumentError("localAddress must be valid string IP address");
- }
- if (maxResponseSize != null && (!Number.isInteger(maxResponseSize) || maxResponseSize < -1)) {
- throw new InvalidArgumentError("maxResponseSize must be a positive number");
- }
- if (autoSelectFamilyAttemptTimeout != null && (!Number.isInteger(autoSelectFamilyAttemptTimeout) || autoSelectFamilyAttemptTimeout < -1)) {
- throw new InvalidArgumentError("autoSelectFamilyAttemptTimeout must be a positive number");
- }
- if (allowH2 != null && typeof allowH2 !== "boolean") {
- throw new InvalidArgumentError("allowH2 must be a valid boolean value");
- }
- if (maxConcurrentStreams != null && (typeof maxConcurrentStreams !== "number" || maxConcurrentStreams < 1)) {
- throw new InvalidArgumentError("maxConcurrentStreams must be a positive integer, greater than 0");
- }
- if (typeof connect2 !== "function") {
- connect2 = buildConnector({
- ...tls,
- maxCachedSessions,
- allowH2,
- socketPath,
- timeout: connectTimeout,
- ...autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : void 0,
- ...connect2
- });
- }
- if (interceptors?.Client && Array.isArray(interceptors.Client)) {
- this[kInterceptors] = interceptors.Client;
- if (!deprecatedInterceptorWarned) {
- deprecatedInterceptorWarned = true;
- process.emitWarning("Client.Options#interceptor is deprecated. Use Dispatcher#compose instead.", {
- code: "UNDICI-CLIENT-INTERCEPTOR-DEPRECATED"
- });
- }
- } else {
- this[kInterceptors] = [createRedirectInterceptor({ maxRedirections })];
- }
- this[kUrl] = util.parseOrigin(url);
- this[kConnector] = connect2;
- this[kPipelining] = pipelining != null ? pipelining : 1;
- this[kMaxHeadersSize] = maxHeaderSize || http.maxHeaderSize;
- this[kKeepAliveDefaultTimeout] = keepAliveTimeout == null ? 4e3 : keepAliveTimeout;
- this[kKeepAliveMaxTimeout] = keepAliveMaxTimeout == null ? 6e5 : keepAliveMaxTimeout;
- this[kKeepAliveTimeoutThreshold] = keepAliveTimeoutThreshold == null ? 2e3 : keepAliveTimeoutThreshold;
- this[kKeepAliveTimeoutValue] = this[kKeepAliveDefaultTimeout];
- this[kServerName] = null;
- this[kLocalAddress] = localAddress != null ? localAddress : null;
- this[kResuming] = 0;
- this[kNeedDrain] = 0;
- this[kHostHeader] = `host: ${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ""}\r
-`;
- this[kBodyTimeout] = bodyTimeout != null ? bodyTimeout : 3e5;
- this[kHeadersTimeout] = headersTimeout != null ? headersTimeout : 3e5;
- this[kStrictContentLength] = strictContentLength == null ? true : strictContentLength;
- this[kMaxRedirections] = maxRedirections;
- this[kMaxRequests] = maxRequestsPerClient;
- this[kClosedResolve] = null;
- this[kMaxResponseSize] = maxResponseSize > -1 ? maxResponseSize : -1;
- this[kMaxConcurrentStreams] = maxConcurrentStreams != null ? maxConcurrentStreams : 100;
- this[kHTTPContext] = null;
- this[kQueue] = [];
- this[kRunningIdx] = 0;
- this[kPendingIdx] = 0;
- this[kResume] = (sync) => resume(this, sync);
- this[kOnError] = (err) => onError(this, err);
- }
- get pipelining() {
- return this[kPipelining];
- }
- set pipelining(value) {
- this[kPipelining] = value;
- this[kResume](true);
- }
- get [kPending]() {
- return this[kQueue].length - this[kPendingIdx];
- }
- get [kRunning]() {
- return this[kPendingIdx] - this[kRunningIdx];
- }
- get [kSize]() {
- return this[kQueue].length - this[kRunningIdx];
- }
- get [kConnected]() {
- return !!this[kHTTPContext] && !this[kConnecting] && !this[kHTTPContext].destroyed;
- }
- get [kBusy]() {
- return Boolean(
- this[kHTTPContext]?.busy(null) || this[kSize] >= (getPipelining(this) || 1) || this[kPending] > 0
- );
- }
- /* istanbul ignore: only used for test */
- [kConnect](cb) {
- connect(this);
- this.once("connect", cb);
- }
- [kDispatch](opts, handler) {
- const origin = opts.origin || this[kUrl].origin;
- const request = new Request(origin, opts, handler);
- this[kQueue].push(request);
- if (this[kResuming]) {
- } else if (util.bodyLength(request.body) == null && util.isIterable(request.body)) {
- this[kResuming] = 1;
- queueMicrotask(() => resume(this));
- } else {
- this[kResume](true);
- }
- if (this[kResuming] && this[kNeedDrain] !== 2 && this[kBusy]) {
- this[kNeedDrain] = 2;
- }
- return this[kNeedDrain] < 2;
- }
- async [kClose]() {
- return new Promise((resolve) => {
- if (this[kSize]) {
- this[kClosedResolve] = resolve;
- } else {
- resolve(null);
- }
- });
- }
- async [kDestroy](err) {
- return new Promise((resolve) => {
- const requests = this[kQueue].splice(this[kPendingIdx]);
- for (let i = 0; i < requests.length; i++) {
- const request = requests[i];
- util.errorRequest(this, request, err);
- }
- const callback = () => {
- if (this[kClosedResolve]) {
- this[kClosedResolve]();
- this[kClosedResolve] = null;
- }
- resolve(null);
- };
- if (this[kHTTPContext]) {
- this[kHTTPContext].destroy(err, callback);
- this[kHTTPContext] = null;
- } else {
- queueMicrotask(callback);
- }
- this[kResume]();
- });
- }
- };
- var createRedirectInterceptor = require_redirect_interceptor();
- function onError(client, err) {
- if (client[kRunning] === 0 && err.code !== "UND_ERR_INFO" && err.code !== "UND_ERR_SOCKET") {
- assert5(client[kPendingIdx] === client[kRunningIdx]);
- const requests = client[kQueue].splice(client[kRunningIdx]);
- for (let i = 0; i < requests.length; i++) {
- const request = requests[i];
- util.errorRequest(client, request, err);
- }
- assert5(client[kSize] === 0);
- }
- }
- async function connect(client) {
- assert5(!client[kConnecting]);
- assert5(!client[kHTTPContext]);
- let { host, hostname, protocol, port } = client[kUrl];
- if (hostname[0] === "[") {
- const idx = hostname.indexOf("]");
- assert5(idx !== -1);
- const ip = hostname.substring(1, idx);
- assert5(net.isIP(ip));
- hostname = ip;
- }
- client[kConnecting] = true;
- if (channels.beforeConnect.hasSubscribers) {
- channels.beforeConnect.publish({
- connectParams: {
- host,
- hostname,
- protocol,
- port,
- version: client[kHTTPContext]?.version,
- servername: client[kServerName],
- localAddress: client[kLocalAddress]
- },
- connector: client[kConnector]
- });
- }
- try {
- const socket = await new Promise((resolve, reject) => {
- client[kConnector]({
- host,
- hostname,
- protocol,
- port,
- servername: client[kServerName],
- localAddress: client[kLocalAddress]
- }, (err, socket2) => {
- if (err) {
- reject(err);
- } else {
- resolve(socket2);
- }
- });
- });
- if (client.destroyed) {
- util.destroy(socket.on("error", noop3), new ClientDestroyedError());
- return;
- }
- assert5(socket);
- try {
- client[kHTTPContext] = socket.alpnProtocol === "h2" ? await connectH2(client, socket) : await connectH1(client, socket);
- } catch (err) {
- socket.destroy().on("error", noop3);
- throw err;
- }
- client[kConnecting] = false;
- socket[kCounter] = 0;
- socket[kMaxRequests] = client[kMaxRequests];
- socket[kClient] = client;
- socket[kError] = null;
- if (channels.connected.hasSubscribers) {
- channels.connected.publish({
- connectParams: {
- host,
- hostname,
- protocol,
- port,
- version: client[kHTTPContext]?.version,
- servername: client[kServerName],
- localAddress: client[kLocalAddress]
- },
- connector: client[kConnector],
- socket
- });
- }
- client.emit("connect", client[kUrl], [client]);
- } catch (err) {
- if (client.destroyed) {
- return;
- }
- client[kConnecting] = false;
- if (channels.connectError.hasSubscribers) {
- channels.connectError.publish({
- connectParams: {
- host,
- hostname,
- protocol,
- port,
- version: client[kHTTPContext]?.version,
- servername: client[kServerName],
- localAddress: client[kLocalAddress]
- },
- connector: client[kConnector],
- error: err
- });
- }
- if (err.code === "ERR_TLS_CERT_ALTNAME_INVALID") {
- assert5(client[kRunning] === 0);
- while (client[kPending] > 0 && client[kQueue][client[kPendingIdx]].servername === client[kServerName]) {
- const request = client[kQueue][client[kPendingIdx]++];
- util.errorRequest(client, request, err);
- }
- } else {
- onError(client, err);
- }
- client.emit("connectionError", client[kUrl], [client], err);
- }
- client[kResume]();
- }
- function emitDrain(client) {
- client[kNeedDrain] = 0;
- client.emit("drain", client[kUrl], [client]);
- }
- function resume(client, sync) {
- if (client[kResuming] === 2) {
- return;
- }
- client[kResuming] = 2;
- _resume(client, sync);
- client[kResuming] = 0;
- if (client[kRunningIdx] > 256) {
- client[kQueue].splice(0, client[kRunningIdx]);
- client[kPendingIdx] -= client[kRunningIdx];
- client[kRunningIdx] = 0;
- }
- }
- function _resume(client, sync) {
- while (true) {
- if (client.destroyed) {
- assert5(client[kPending] === 0);
- return;
- }
- if (client[kClosedResolve] && !client[kSize]) {
- client[kClosedResolve]();
- client[kClosedResolve] = null;
- return;
- }
- if (client[kHTTPContext]) {
- client[kHTTPContext].resume();
- }
- if (client[kBusy]) {
- client[kNeedDrain] = 2;
- } else if (client[kNeedDrain] === 2) {
- if (sync) {
- client[kNeedDrain] = 1;
- queueMicrotask(() => emitDrain(client));
- } else {
- emitDrain(client);
- }
- continue;
- }
- if (client[kPending] === 0) {
- return;
- }
- if (client[kRunning] >= (getPipelining(client) || 1)) {
- return;
- }
- const request = client[kQueue][client[kPendingIdx]];
- if (client[kUrl].protocol === "https:" && client[kServerName] !== request.servername) {
- if (client[kRunning] > 0) {
- return;
- }
- client[kServerName] = request.servername;
- client[kHTTPContext]?.destroy(new InformationalError("servername changed"), () => {
- client[kHTTPContext] = null;
- resume(client);
- });
- }
- if (client[kConnecting]) {
- return;
- }
- if (!client[kHTTPContext]) {
- connect(client);
- return;
- }
- if (client[kHTTPContext].destroyed) {
- return;
- }
- if (client[kHTTPContext].busy(request)) {
- return;
- }
- if (!request.aborted && client[kHTTPContext].write(request)) {
- client[kPendingIdx]++;
- } else {
- client[kQueue].splice(client[kPendingIdx], 1);
- }
- }
- }
- module2.exports = Client;
- }
-});
-
-// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/dispatcher/pool.js
-var require_pool = __commonJS({
- ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/dispatcher/pool.js"(exports2, module2) {
- "use strict";
- var {
- PoolBase,
- kClients,
- kNeedDrain,
- kAddClient,
- kGetDispatcher
- } = require_pool_base();
- var Client = require_client();
- var {
- InvalidArgumentError
- } = require_errors();
- var util = require_util();
- var { kUrl, kInterceptors } = require_symbols();
- var buildConnector = require_connect();
- var kOptions = Symbol("options");
- var kConnections = Symbol("connections");
- var kFactory = Symbol("factory");
- function defaultFactory(origin, opts) {
- return new Client(origin, opts);
- }
- var Pool = class extends PoolBase {
- constructor(origin, {
- connections,
- factory = defaultFactory,
- connect,
- connectTimeout,
- tls,
- maxCachedSessions,
- socketPath,
- autoSelectFamily,
- autoSelectFamilyAttemptTimeout,
- allowH2,
- ...options
- } = {}) {
- super();
- if (connections != null && (!Number.isFinite(connections) || connections < 0)) {
- throw new InvalidArgumentError("invalid connections");
- }
- if (typeof factory !== "function") {
- throw new InvalidArgumentError("factory must be a function.");
- }
- if (connect != null && typeof connect !== "function" && typeof connect !== "object") {
- throw new InvalidArgumentError("connect must be a function or an object");
- }
- if (typeof connect !== "function") {
- connect = buildConnector({
- ...tls,
- maxCachedSessions,
- allowH2,
- socketPath,
- timeout: connectTimeout,
- ...autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : void 0,
- ...connect
- });
- }
- this[kInterceptors] = options.interceptors?.Pool && Array.isArray(options.interceptors.Pool) ? options.interceptors.Pool : [];
- this[kConnections] = connections || null;
- this[kUrl] = util.parseOrigin(origin);
- this[kOptions] = { ...util.deepClone(options), connect, allowH2 };
- this[kOptions].interceptors = options.interceptors ? { ...options.interceptors } : void 0;
- this[kFactory] = factory;
- this.on("connectionError", (origin2, targets, error) => {
- for (const target of targets) {
- const idx = this[kClients].indexOf(target);
- if (idx !== -1) {
- this[kClients].splice(idx, 1);
- }
- }
- });
- }
- [kGetDispatcher]() {
- for (const client of this[kClients]) {
- if (!client[kNeedDrain]) {
- return client;
- }
- }
- if (!this[kConnections] || this[kClients].length < this[kConnections]) {
- const dispatcher = this[kFactory](this[kUrl], this[kOptions]);
- this[kAddClient](dispatcher);
- return dispatcher;
- }
- }
- };
- module2.exports = Pool;
- }
-});
-
-// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/dispatcher/agent.js
-var require_agent = __commonJS({
- ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/dispatcher/agent.js"(exports2, module2) {
- "use strict";
- var { InvalidArgumentError } = require_errors();
- var { kClients, kRunning, kClose, kDestroy, kDispatch, kInterceptors } = require_symbols();
- var DispatcherBase = require_dispatcher_base();
- var Pool = require_pool();
- var Client = require_client();
- var util = require_util();
- var createRedirectInterceptor = require_redirect_interceptor();
- var kOnConnect = Symbol("onConnect");
- var kOnDisconnect = Symbol("onDisconnect");
- var kOnConnectionError = Symbol("onConnectionError");
- var kMaxRedirections = Symbol("maxRedirections");
- var kOnDrain = Symbol("onDrain");
- var kFactory = Symbol("factory");
- var kOptions = Symbol("options");
- function defaultFactory(origin, opts) {
- return opts && opts.connections === 1 ? new Client(origin, opts) : new Pool(origin, opts);
- }
- var Agent = class extends DispatcherBase {
- constructor({ factory = defaultFactory, maxRedirections = 0, connect, ...options } = {}) {
- super();
- if (typeof factory !== "function") {
- throw new InvalidArgumentError("factory must be a function.");
- }
- if (connect != null && typeof connect !== "function" && typeof connect !== "object") {
- throw new InvalidArgumentError("connect must be a function or an object");
- }
- if (!Number.isInteger(maxRedirections) || maxRedirections < 0) {
- throw new InvalidArgumentError("maxRedirections must be a positive number");
- }
- if (connect && typeof connect !== "function") {
- connect = { ...connect };
- }
- this[kInterceptors] = options.interceptors?.Agent && Array.isArray(options.interceptors.Agent) ? options.interceptors.Agent : [createRedirectInterceptor({ maxRedirections })];
- this[kOptions] = { ...util.deepClone(options), connect };
- this[kOptions].interceptors = options.interceptors ? { ...options.interceptors } : void 0;
- this[kMaxRedirections] = maxRedirections;
- this[kFactory] = factory;
- this[kClients] = /* @__PURE__ */ new Map();
- this[kOnDrain] = (origin, targets) => {
- this.emit("drain", origin, [this, ...targets]);
- };
- this[kOnConnect] = (origin, targets) => {
- this.emit("connect", origin, [this, ...targets]);
- };
- this[kOnDisconnect] = (origin, targets, err) => {
- this.emit("disconnect", origin, [this, ...targets], err);
- };
- this[kOnConnectionError] = (origin, targets, err) => {
- this.emit("connectionError", origin, [this, ...targets], err);
- };
- }
- get [kRunning]() {
- let ret = 0;
- for (const client of this[kClients].values()) {
- ret += client[kRunning];
- }
- return ret;
- }
- [kDispatch](opts, handler) {
- let key;
- if (opts.origin && (typeof opts.origin === "string" || opts.origin instanceof URL)) {
- key = String(opts.origin);
- } else {
- throw new InvalidArgumentError("opts.origin must be a non-empty string or URL.");
- }
- let dispatcher = this[kClients].get(key);
- if (!dispatcher) {
- dispatcher = this[kFactory](opts.origin, this[kOptions]).on("drain", this[kOnDrain]).on("connect", this[kOnConnect]).on("disconnect", this[kOnDisconnect]).on("connectionError", this[kOnConnectionError]);
- this[kClients].set(key, dispatcher);
- }
- return dispatcher.dispatch(opts, handler);
- }
- async [kClose]() {
- const closePromises = [];
- for (const client of this[kClients].values()) {
- closePromises.push(client.close());
- }
- this[kClients].clear();
- await Promise.all(closePromises);
- }
- async [kDestroy](err) {
- const destroyPromises = [];
- for (const client of this[kClients].values()) {
- destroyPromises.push(client.destroy(err));
- }
- this[kClients].clear();
- await Promise.all(destroyPromises);
- }
- };
- module2.exports = Agent;
- }
-});
-
-// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/dispatcher/proxy-agent.js
-var require_proxy_agent = __commonJS({
- ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/dispatcher/proxy-agent.js"(exports2, module2) {
- "use strict";
- var { kProxy, kClose, kDestroy, kDispatch, kInterceptors } = require_symbols();
- var { URL: URL2 } = require("node:url");
- var Agent = require_agent();
- var Pool = require_pool();
- var DispatcherBase = require_dispatcher_base();
- var { InvalidArgumentError, RequestAbortedError, SecureProxyConnectionError } = require_errors();
- var buildConnector = require_connect();
- var Client = require_client();
- var kAgent = Symbol("proxy agent");
- var kClient = Symbol("proxy client");
- var kProxyHeaders = Symbol("proxy headers");
- var kRequestTls = Symbol("request tls settings");
- var kProxyTls = Symbol("proxy tls settings");
- var kConnectEndpoint = Symbol("connect endpoint function");
- var kTunnelProxy = Symbol("tunnel proxy");
- function defaultProtocolPort(protocol) {
- return protocol === "https:" ? 443 : 80;
- }
- function defaultFactory(origin, opts) {
- return new Pool(origin, opts);
- }
- var noop3 = () => {
- };
- function defaultAgentFactory(origin, opts) {
- if (opts.connections === 1) {
- return new Client(origin, opts);
- }
- return new Pool(origin, opts);
- }
- var Http1ProxyWrapper = class extends DispatcherBase {
- #client;
- constructor(proxyUrl, { headers = {}, connect, factory }) {
- super();
- if (!proxyUrl) {
- throw new InvalidArgumentError("Proxy URL is mandatory");
- }
- this[kProxyHeaders] = headers;
- if (factory) {
- this.#client = factory(proxyUrl, { connect });
- } else {
- this.#client = new Client(proxyUrl, { connect });
- }
- }
- [kDispatch](opts, handler) {
- const onHeaders = handler.onHeaders;
- handler.onHeaders = function(statusCode, data, resume) {
- if (statusCode === 407) {
- if (typeof handler.onError === "function") {
- handler.onError(new InvalidArgumentError("Proxy Authentication Required (407)"));
- }
- return;
- }
- if (onHeaders) onHeaders.call(this, statusCode, data, resume);
- };
- const {
- origin,
- path: path16 = "/",
- headers = {}
- } = opts;
- opts.path = origin + path16;
- if (!("host" in headers) && !("Host" in headers)) {
- const { host } = new URL2(origin);
- headers.host = host;
- }
- opts.headers = { ...this[kProxyHeaders], ...headers };
- return this.#client[kDispatch](opts, handler);
- }
- async [kClose]() {
- return this.#client.close();
- }
- async [kDestroy](err) {
- return this.#client.destroy(err);
- }
- };
- var ProxyAgent2 = class extends DispatcherBase {
- constructor(opts) {
- super();
- if (!opts || typeof opts === "object" && !(opts instanceof URL2) && !opts.uri) {
- throw new InvalidArgumentError("Proxy uri is mandatory");
- }
- const { clientFactory = defaultFactory } = opts;
- if (typeof clientFactory !== "function") {
- throw new InvalidArgumentError("Proxy opts.clientFactory must be a function.");
- }
- const { proxyTunnel = true } = opts;
- const url = this.#getUrl(opts);
- const { href, origin, port, protocol, username, password, hostname: proxyHostname } = url;
- this[kProxy] = { uri: href, protocol };
- this[kInterceptors] = opts.interceptors?.ProxyAgent && Array.isArray(opts.interceptors.ProxyAgent) ? opts.interceptors.ProxyAgent : [];
- this[kRequestTls] = opts.requestTls;
- this[kProxyTls] = opts.proxyTls;
- this[kProxyHeaders] = opts.headers || {};
- this[kTunnelProxy] = proxyTunnel;
- if (opts.auth && opts.token) {
- throw new InvalidArgumentError("opts.auth cannot be used in combination with opts.token");
- } else if (opts.auth) {
- this[kProxyHeaders]["proxy-authorization"] = `Basic ${opts.auth}`;
- } else if (opts.token) {
- this[kProxyHeaders]["proxy-authorization"] = opts.token;
- } else if (username && password) {
- this[kProxyHeaders]["proxy-authorization"] = `Basic ${Buffer.from(`${decodeURIComponent(username)}:${decodeURIComponent(password)}`).toString("base64")}`;
- }
- const connect = buildConnector({ ...opts.proxyTls });
- this[kConnectEndpoint] = buildConnector({ ...opts.requestTls });
- const agentFactory = opts.factory || defaultAgentFactory;
- const factory = (origin2, options) => {
- const { protocol: protocol2 } = new URL2(origin2);
- if (!this[kTunnelProxy] && protocol2 === "http:" && this[kProxy].protocol === "http:") {
- return new Http1ProxyWrapper(this[kProxy].uri, {
- headers: this[kProxyHeaders],
- connect,
- factory: agentFactory
- });
- }
- return agentFactory(origin2, options);
- };
- this[kClient] = clientFactory(url, { connect });
- this[kAgent] = new Agent({
- ...opts,
- factory,
- connect: async (opts2, callback) => {
- let requestedPath = opts2.host;
- if (!opts2.port) {
- requestedPath += `:${defaultProtocolPort(opts2.protocol)}`;
- }
- try {
- const { socket, statusCode } = await this[kClient].connect({
- origin,
- port,
- path: requestedPath,
- signal: opts2.signal,
- headers: {
- ...this[kProxyHeaders],
- host: opts2.host
- },
- servername: this[kProxyTls]?.servername || proxyHostname
- });
- if (statusCode !== 200) {
- socket.on("error", noop3).destroy();
- callback(new RequestAbortedError(`Proxy response (${statusCode}) !== 200 when HTTP Tunneling`));
- }
- if (opts2.protocol !== "https:") {
- callback(null, socket);
- return;
- }
- let servername;
- if (this[kRequestTls]) {
- servername = this[kRequestTls].servername;
- } else {
- servername = opts2.servername;
- }
- this[kConnectEndpoint]({ ...opts2, servername, httpSocket: socket }, callback);
- } catch (err) {
- if (err.code === "ERR_TLS_CERT_ALTNAME_INVALID") {
- callback(new SecureProxyConnectionError(err));
- } else {
- callback(err);
- }
- }
- }
- });
- }
- dispatch(opts, handler) {
- const headers = buildHeaders(opts.headers);
- throwIfProxyAuthIsSent(headers);
- if (headers && !("host" in headers) && !("Host" in headers)) {
- const { host } = new URL2(opts.origin);
- headers.host = host;
- }
- return this[kAgent].dispatch(
- {
- ...opts,
- headers
- },
- handler
- );
- }
- /**
- * @param {import('../types/proxy-agent').ProxyAgent.Options | string | URL} opts
- * @returns {URL}
- */
- #getUrl(opts) {
- if (typeof opts === "string") {
- return new URL2(opts);
- } else if (opts instanceof URL2) {
- return opts;
- } else {
- return new URL2(opts.uri);
- }
- }
- async [kClose]() {
- await this[kAgent].close();
- await this[kClient].close();
- }
- async [kDestroy]() {
- await this[kAgent].destroy();
- await this[kClient].destroy();
- }
- };
- function buildHeaders(headers) {
- if (Array.isArray(headers)) {
- const headersPair = {};
- for (let i = 0; i < headers.length; i += 2) {
- headersPair[headers[i]] = headers[i + 1];
- }
- return headersPair;
- }
- return headers;
- }
- function throwIfProxyAuthIsSent(headers) {
- const existProxyAuth = headers && Object.keys(headers).find((key) => key.toLowerCase() === "proxy-authorization");
- if (existProxyAuth) {
- throw new InvalidArgumentError("Proxy-Authorization should be sent in ProxyAgent constructor");
- }
- }
- module2.exports = ProxyAgent2;
- }
-});
-
-// .yarn/cache/minipass-npm-7.1.2-3a5327d36d-b0fd20bb9f.zip/node_modules/minipass/dist/esm/index.js
-var import_node_events, import_node_stream, import_node_string_decoder, proc, isStream, isReadable, isWritable, EOF, MAYBE_EMIT_END, EMITTED_END, EMITTING_END, EMITTED_ERROR, CLOSED, READ, FLUSH, FLUSHCHUNK, ENCODING, DECODER, FLOWING, PAUSED, RESUME, BUFFER, PIPES, BUFFERLENGTH, BUFFERPUSH, BUFFERSHIFT, OBJECTMODE, DESTROYED, ERROR, EMITDATA, EMITEND, EMITEND2, ASYNC, ABORT, ABORTED, SIGNAL, DATALISTENERS, DISCARDED, defer, nodefer, isEndish, isArrayBufferLike, isArrayBufferView, Pipe, PipeProxyErrors, isObjectModeOptions, isEncodingOptions, Minipass;
-var init_esm = __esm({
- ".yarn/cache/minipass-npm-7.1.2-3a5327d36d-b0fd20bb9f.zip/node_modules/minipass/dist/esm/index.js"() {
- import_node_events = require("node:events");
- import_node_stream = __toESM(require("node:stream"), 1);
- import_node_string_decoder = require("node:string_decoder");
- proc = typeof process === "object" && process ? process : {
- stdout: null,
- stderr: null
- };
- isStream = (s) => !!s && typeof s === "object" && (s instanceof Minipass || s instanceof import_node_stream.default || isReadable(s) || isWritable(s));
- isReadable = (s) => !!s && typeof s === "object" && s instanceof import_node_events.EventEmitter && typeof s.pipe === "function" && // node core Writable streams have a pipe() method, but it throws
- s.pipe !== import_node_stream.default.Writable.prototype.pipe;
- isWritable = (s) => !!s && typeof s === "object" && s instanceof import_node_events.EventEmitter && typeof s.write === "function" && typeof s.end === "function";
- EOF = Symbol("EOF");
- MAYBE_EMIT_END = Symbol("maybeEmitEnd");
- EMITTED_END = Symbol("emittedEnd");
- EMITTING_END = Symbol("emittingEnd");
- EMITTED_ERROR = Symbol("emittedError");
- CLOSED = Symbol("closed");
- READ = Symbol("read");
- FLUSH = Symbol("flush");
- FLUSHCHUNK = Symbol("flushChunk");
- ENCODING = Symbol("encoding");
- DECODER = Symbol("decoder");
- FLOWING = Symbol("flowing");
- PAUSED = Symbol("paused");
- RESUME = Symbol("resume");
- BUFFER = Symbol("buffer");
- PIPES = Symbol("pipes");
- BUFFERLENGTH = Symbol("bufferLength");
- BUFFERPUSH = Symbol("bufferPush");
- BUFFERSHIFT = Symbol("bufferShift");
- OBJECTMODE = Symbol("objectMode");
- DESTROYED = Symbol("destroyed");
- ERROR = Symbol("error");
- EMITDATA = Symbol("emitData");
- EMITEND = Symbol("emitEnd");
- EMITEND2 = Symbol("emitEnd2");
- ASYNC = Symbol("async");
- ABORT = Symbol("abort");
- ABORTED = Symbol("aborted");
- SIGNAL = Symbol("signal");
- DATALISTENERS = Symbol("dataListeners");
- DISCARDED = Symbol("discarded");
- defer = (fn2) => Promise.resolve().then(fn2);
- nodefer = (fn2) => fn2();
- isEndish = (ev) => ev === "end" || ev === "finish" || ev === "prefinish";
- isArrayBufferLike = (b) => b instanceof ArrayBuffer || !!b && typeof b === "object" && b.constructor && b.constructor.name === "ArrayBuffer" && b.byteLength >= 0;
- isArrayBufferView = (b) => !Buffer.isBuffer(b) && ArrayBuffer.isView(b);
- Pipe = class {
- src;
- dest;
- opts;
- ondrain;
- constructor(src, dest, opts) {
- this.src = src;
- this.dest = dest;
- this.opts = opts;
- this.ondrain = () => src[RESUME]();
- this.dest.on("drain", this.ondrain);
- }
- unpipe() {
- this.dest.removeListener("drain", this.ondrain);
- }
- // only here for the prototype
- /* c8 ignore start */
- proxyErrors(_er) {
- }
- /* c8 ignore stop */
- end() {
- this.unpipe();
- if (this.opts.end)
- this.dest.end();
- }
- };
- PipeProxyErrors = class 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);
- }
- };
- isObjectModeOptions = (o) => !!o.objectMode;
- isEncodingOptions = (o) => !o.objectMode && !!o.encoding && o.encoding !== "buffer";
- Minipass = class extends import_node_events.EventEmitter {
- [FLOWING] = false;
- [PAUSED] = false;
- [PIPES] = [];
- [BUFFER] = [];
- [OBJECTMODE];
- [ENCODING];
- [ASYNC];
- [DECODER];
- [EOF] = false;
- [EMITTED_END] = false;
- [EMITTING_END] = false;
- [CLOSED] = false;
- [EMITTED_ERROR] = null;
- [BUFFERLENGTH] = 0;
- [DESTROYED] = false;
- [SIGNAL];
- [ABORTED] = false;
- [DATALISTENERS] = 0;
- [DISCARDED] = false;
- /**
- * true if the stream can be written
- */
- writable = true;
- /**
- * true if the stream can be read
- */
- readable = true;
- /**
- * If `RType` is Buffer, then options do not need to be provided.
- * Otherwise, an options object must be provided to specify either
- * {@link Minipass.SharedOptions.objectMode} or
- * {@link Minipass.SharedOptions.encoding}, as appropriate.
- */
- constructor(...args) {
- const options = args[0] || {};
- super();
- if (options.objectMode && typeof options.encoding === "string") {
- throw new TypeError("Encoding and objectMode may not be used together");
- }
- if (isObjectModeOptions(options)) {
- this[OBJECTMODE] = true;
- this[ENCODING] = null;
- } else if (isEncodingOptions(options)) {
- this[ENCODING] = options.encoding;
- this[OBJECTMODE] = false;
- } else {
- this[OBJECTMODE] = false;
- this[ENCODING] = null;
- }
- this[ASYNC] = !!options.async;
- this[DECODER] = this[ENCODING] ? new import_node_string_decoder.StringDecoder(this[ENCODING]) : null;
- if (options && options.debugExposeBuffer === true) {
- Object.defineProperty(this, "buffer", { get: () => this[BUFFER] });
- }
- if (options && options.debugExposePipes === true) {
- Object.defineProperty(this, "pipes", { get: () => this[PIPES] });
- }
- const { signal } = options;
- if (signal) {
- this[SIGNAL] = signal;
- if (signal.aborted) {
- this[ABORT]();
- } else {
- signal.addEventListener("abort", () => this[ABORT]());
- }
- }
- }
- /**
- * The amount of data stored in the buffer waiting to be read.
- *
- * For Buffer strings, this will be the total byte length.
- * For string encoding streams, this will be the string character length,
- * according to JavaScript's `string.length` logic.
- * For objectMode streams, this is a count of the items waiting to be
- * emitted.
- */
- get bufferLength() {
- return this[BUFFERLENGTH];
- }
- /**
- * The `BufferEncoding` currently in use, or `null`
- */
- get encoding() {
- return this[ENCODING];
- }
- /**
- * @deprecated - This is a read only property
- */
- set encoding(_enc) {
- throw new Error("Encoding must be set at instantiation time");
- }
- /**
- * @deprecated - Encoding may only be set at instantiation time
- */
- setEncoding(_enc) {
- throw new Error("Encoding must be set at instantiation time");
- }
- /**
- * True if this is an objectMode stream
- */
- get objectMode() {
- return this[OBJECTMODE];
- }
- /**
- * @deprecated - This is a read-only property
- */
- set objectMode(_om) {
- throw new Error("objectMode must be set at instantiation time");
- }
- /**
- * true if this is an async stream
- */
- get ["async"]() {
- return this[ASYNC];
- }
- /**
- * Set to true to make this stream async.
- *
- * Once set, it cannot be unset, as this would potentially cause incorrect
- * behavior. Ie, a sync stream can be made async, but an async stream
- * cannot be safely made sync.
- */
- 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);
- }
- /**
- * True if the stream has been aborted.
- */
- get aborted() {
- return this[ABORTED];
- }
- /**
- * No-op setter. Stream aborted status is set via the AbortSignal provided
- * in the constructor options.
- */
- 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 fn2 = this[ASYNC] ? defer : nodefer;
- if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) {
- if (isArrayBufferView(chunk)) {
- chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength);
- } else if (isArrayBufferLike(chunk)) {
- chunk = Buffer.from(chunk);
- } else if (typeof chunk !== "string") {
- throw new Error("Non-contiguous data written to non-objectMode stream");
- }
- }
- if (this[OBJECTMODE]) {
- 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)
- fn2(cb);
- return this[FLOWING];
- }
- if (!chunk.length) {
- if (this[BUFFERLENGTH] !== 0)
- this.emit("readable");
- if (cb)
- fn2(cb);
- return this[FLOWING];
- }
- 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);
- }
- 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)
- fn2(cb);
- return this[FLOWING];
- }
- /**
- * Low-level explicit read method.
- *
- * In objectMode, the argument is ignored, and one item is returned if
- * available.
- *
- * `n` is the number of bytes (or in the case of encoding streams,
- * characters) to consume. If `n` is not provided, then the entire buffer
- * is returned, or `null` is returned if no data is available.
- *
- * If `n` is greater that the amount of data in the internal buffer,
- * then `null` is returned.
- */
- read(n) {
- if (this[DESTROYED])
- return null;
- this[DISCARDED] = false;
- if (this[BUFFERLENGTH] === 0 || n === 0 || n && n > this[BUFFERLENGTH]) {
- this[MAYBE_EMIT_END]();
- return null;
- }
- if (this[OBJECTMODE])
- n = null;
- if (this[BUFFER].length > 1 && !this[OBJECTMODE]) {
- this[BUFFER] = [
- this[ENCODING] ? this[BUFFER].join("") : 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 (this[OBJECTMODE])
- this[BUFFERSHIFT]();
- else {
- const c = chunk;
- if (n === c.length || n === null)
- this[BUFFERSHIFT]();
- else if (typeof c === "string") {
- this[BUFFER][0] = c.slice(n);
- chunk = c.slice(0, n);
- this[BUFFERLENGTH] -= n;
- } else {
- this[BUFFER][0] = c.subarray(n);
- chunk = c.subarray(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 = void 0;
- }
- if (typeof encoding === "function") {
- cb = encoding;
- encoding = "utf8";
- }
- if (chunk !== void 0)
- this.write(chunk, encoding);
- if (cb)
- this.once("end", cb);
- this[EOF] = true;
- this.writable = false;
- if (this[FLOWING] || !this[PAUSED])
- this[MAYBE_EMIT_END]();
- return this;
- }
- // don't let the internal resume be overwritten
- [RESUME]() {
- if (this[DESTROYED])
- return;
- if (!this[DATALISTENERS] && !this[PIPES].length) {
- this[DISCARDED] = true;
- }
- 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 the stream if it is currently in a paused state
- *
- * If called when there are no pipe destinations or `data` event listeners,
- * this will place the stream in a "discarded" state, where all data will
- * be thrown away. The discarded state is removed if a pipe destination or
- * data handler is added, if pause() is called, or if any synchronous or
- * asynchronous iteration is started.
- */
- resume() {
- return this[RESUME]();
- }
- /**
- * Pause the stream
- */
- pause() {
- this[FLOWING] = false;
- this[PAUSED] = true;
- this[DISCARDED] = false;
- }
- /**
- * true if the stream has been forcibly destroyed
- */
- get destroyed() {
- return this[DESTROYED];
- }
- /**
- * true if the stream is currently in a flowing state, meaning that
- * any writes will be immediately emitted.
- */
- get flowing() {
- return this[FLOWING];
- }
- /**
- * true if the stream is currently in a paused state
- */
- 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 = false) {
- 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 all data emitted by this stream into the destination provided.
- *
- * Triggers the flow of data.
- */
- pipe(dest, opts) {
- if (this[DESTROYED])
- return dest;
- this[DISCARDED] = false;
- 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;
- 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;
- }
- /**
- * Fully unhook a piped destination stream.
- *
- * If the destination stream was the only consumer of this stream (ie,
- * there are no other piped destinations or `'data'` event listeners)
- * then the flow of data will stop until there is another consumer or
- * {@link Minipass#resume} is explicitly called.
- */
- unpipe(dest) {
- const p = this[PIPES].find((p2) => p2.dest === dest);
- if (p) {
- if (this[PIPES].length === 1) {
- if (this[FLOWING] && this[DATALISTENERS] === 0) {
- this[FLOWING] = false;
- }
- this[PIPES] = [];
- } else
- this[PIPES].splice(this[PIPES].indexOf(p), 1);
- p.unpipe();
- }
- }
- /**
- * Alias for {@link Minipass#on}
- */
- addListener(ev, handler) {
- return this.on(ev, handler);
- }
- /**
- * Mostly identical to `EventEmitter.on`, with the following
- * behavior differences to prevent data loss and unnecessary hangs:
- *
- * - Adding a 'data' event handler will trigger the flow of data
- *
- * - Adding a 'readable' event handler when there is data waiting to be read
- * will cause 'readable' to be emitted immediately.
- *
- * - Adding an 'endish' event handler ('end', 'finish', etc.) which has
- * already passed will cause the event to be emitted immediately and all
- * handlers removed.
- *
- * - Adding an 'error' event handler after an error has been emitted will
- * cause the event to be re-emitted immediately with the error previously
- * raised.
- */
- on(ev, handler) {
- const ret = super.on(ev, handler);
- if (ev === "data") {
- this[DISCARDED] = false;
- this[DATALISTENERS]++;
- if (!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]) {
- const h = handler;
- if (this[ASYNC])
- defer(() => h.call(this, this[EMITTED_ERROR]));
- else
- h.call(this, this[EMITTED_ERROR]);
+ var parseComparator = (comp, options) => {
+ comp = comp.replace(re[t.BUILD], "");
+ debug("comp", comp, options);
+ comp = replaceCarets(comp, options);
+ debug("caret", comp);
+ comp = replaceTildes(comp, options);
+ debug("tildes", comp);
+ comp = replaceXRanges(comp, options);
+ debug("xrange", comp);
+ comp = replaceStars(comp, options);
+ debug("stars", comp);
+ return comp;
+ };
+ var isX = (id) => !id || id.toLowerCase() === "x" || id === "*";
+ var invalidXRangeOrder = (M, m, p) => isX(M) && !isX(m) || isX(m) && p && !isX(p);
+ var replaceTildes = (comp, options) => {
+ return comp.trim().split(/\s+/).map((c) => replaceTilde(c, options)).join(" ");
+ };
+ var replaceTilde = (comp, options) => {
+ const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE];
+ const z = options.includePrerelease ? "-0" : "";
+ return comp.replace(r, (_, M, m, p, pr) => {
+ debug("tilde", comp, _, M, m, p, pr);
+ let ret;
+ if (isX(M)) {
+ ret = "";
+ } else if (isX(m)) {
+ ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`;
+ } else if (isX(p)) {
+ ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`;
+ } else if (pr) {
+ debug("replaceTilde pr", pr);
+ ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;
+ } else {
+ ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`;
}
+ debug("tilde return", ret);
return ret;
- }
- /**
- * Alias for {@link Minipass#off}
- */
- removeListener(ev, handler) {
- return this.off(ev, handler);
- }
- /**
- * Mostly identical to `EventEmitter.off`
- *
- * If a 'data' event handler is removed, and it was the last consumer
- * (ie, there are no pipe destinations or other 'data' event listeners),
- * then the flow of data will stop until there is another consumer or
- * {@link Minipass#resume} is explicitly called.
- */
- off(ev, handler) {
- const ret = super.off(ev, handler);
- if (ev === "data") {
- this[DATALISTENERS] = this.listeners("data").length;
- if (this[DATALISTENERS] === 0 && !this[DISCARDED] && !this[PIPES].length) {
- this[FLOWING] = false;
+ });
+ };
+ var replaceCarets = (comp, options) => {
+ return comp.trim().split(/\s+/).map((c) => replaceCaret(c, options)).join(" ");
+ };
+ var replaceCaret = (comp, options) => {
+ debug("caret", comp, options);
+ const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET];
+ const z = options.includePrerelease ? "-0" : "";
+ return comp.replace(r, (_, M, m, p, pr) => {
+ debug("caret", comp, _, M, m, p, pr);
+ let ret;
+ if (isX(M)) {
+ ret = "";
+ } else if (isX(m)) {
+ ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`;
+ } else if (isX(p)) {
+ if (M === "0") {
+ ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`;
+ } else {
+ ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`;
}
- }
- return ret;
- }
- /**
- * Mostly identical to `EventEmitter.removeAllListeners`
- *
- * If all 'data' event handlers are removed, and they were the last consumer
- * (ie, there are no pipe destinations), then the flow of data will stop
- * until there is another consumer or {@link Minipass#resume} is explicitly
- * called.
- */
- removeAllListeners(ev) {
- const ret = super.removeAllListeners(ev);
- if (ev === "data" || ev === void 0) {
- this[DATALISTENERS] = 0;
- if (!this[DISCARDED] && !this[PIPES].length) {
- this[FLOWING] = false;
+ } else if (pr) {
+ debug("replaceCaret pr", pr);
+ if (M === "0") {
+ if (m === "0") {
+ ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`;
+ } else {
+ ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;
+ }
+ } else {
+ ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`;
+ }
+ } else {
+ debug("no pr");
+ if (M === "0") {
+ if (m === "0") {
+ ret = `>=${M}.${m}.${p} <${M}.${m}.${+p + 1}-0`;
+ } else {
+ ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`;
+ }
+ } else {
+ ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;
}
}
+ debug("caret return", ret);
return ret;
- }
- /**
- * true if the 'end' event has been emitted
- */
- 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;
- }
- }
- /**
- * Mostly identical to `EventEmitter.emit`, with the following
- * behavior differences to prevent data loss and unnecessary hangs:
- *
- * If the stream has been destroyed, and the event is something other
- * than 'close' or 'error', then `false` is returned and no handlers
- * are called.
- *
- * If the event is 'end', and has already been emitted, then the event
- * is ignored. If the stream is in a paused or non-flowing state, then
- * the event will be deferred until data flow resumes. If the stream is
- * async, then handlers will be called on the next tick rather than
- * immediately.
- *
- * If the event is 'close', and 'end' has not yet been emitted, then
- * the event will be deferred until after 'end' is emitted.
- *
- * If the event is 'error', and an AbortSignal was provided for the stream,
- * and there are no listeners, then the event is ignored, matching the
- * behavior of node core streams in the presense of an AbortSignal.
- *
- * If the event is 'finish' or 'prefinish', then all listeners will be
- * removed after emitting the event, to prevent double-firing.
- */
- emit(ev, ...args) {
- const data = args[0];
- if (ev !== "error" && ev !== "close" && ev !== DESTROYED && this[DESTROYED]) {
- return false;
- } else if (ev === "data") {
- return !this[OBJECTMODE] && !data ? false : this[ASYNC] ? (defer(() => this[EMITDATA](data)), true) : this[EMITDATA](data);
- } else if (ev === "end") {
- return this[EMITEND]();
- } else if (ev === "close") {
- this[CLOSED] = true;
- if (!this[EMITTED_END] && !this[DESTROYED])
- return false;
- const ret2 = super.emit("close");
- this.removeAllListeners("close");
- return ret2;
- } else if (ev === "error") {
- this[EMITTED_ERROR] = data;
- super.emit(ERROR, data);
- const ret2 = !this[SIGNAL] || this.listeners("error").length ? super.emit("error", data) : false;
- this[MAYBE_EMIT_END]();
- return ret2;
- } else if (ev === "resume") {
- const ret2 = super.emit("resume");
- this[MAYBE_EMIT_END]();
- return ret2;
- } else if (ev === "finish" || ev === "prefinish") {
- const ret2 = super.emit(ev);
- this.removeAllListeners(ev);
- return ret2;
+ });
+ };
+ var replaceXRanges = (comp, options) => {
+ debug("replaceXRanges", comp, options);
+ return comp.split(/\s+/).map((c) => replaceXRange(c, options)).join(" ");
+ };
+ var replaceXRange = (comp, options) => {
+ comp = comp.trim();
+ const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE];
+ return comp.replace(r, (ret, gtlt, M, m, p, pr) => {
+ debug("xRange", comp, ret, gtlt, M, m, p, pr);
+ if (invalidXRangeOrder(M, m, p)) {
+ return comp;
}
- const ret = super.emit(ev, ...args);
- this[MAYBE_EMIT_END]();
- return ret;
- }
- [EMITDATA](data) {
- for (const p of this[PIPES]) {
- if (p.dest.write(data) === false)
- this.pause();
+ const xM = isX(M);
+ const xm = xM || isX(m);
+ const xp = xm || isX(p);
+ const anyX = xp;
+ if (gtlt === "=" && anyX) {
+ gtlt = "";
}
- const ret = this[DISCARDED] ? false : super.emit("data", data);
- this[MAYBE_EMIT_END]();
- return ret;
- }
- [EMITEND]() {
- if (this[EMITTED_END])
- return false;
- this[EMITTED_END] = true;
- this.readable = false;
- return this[ASYNC] ? (defer(() => this[EMITEND2]()), true) : this[EMITEND2]();
- }
- [EMITEND2]() {
- if (this[DECODER]) {
- const data = this[DECODER].end();
- if (data) {
- for (const p of this[PIPES]) {
- p.dest.write(data);
+ pr = options.includePrerelease ? "-0" : "";
+ if (xM) {
+ if (gtlt === ">" || gtlt === "<") {
+ ret = "<0.0.0-0";
+ } else {
+ ret = "*";
+ }
+ } else if (gtlt && anyX) {
+ if (xm) {
+ m = 0;
+ }
+ p = 0;
+ if (gtlt === ">") {
+ gtlt = ">=";
+ if (xm) {
+ M = +M + 1;
+ m = 0;
+ p = 0;
+ } else {
+ m = +m + 1;
+ p = 0;
+ }
+ } else if (gtlt === "<=") {
+ gtlt = "<";
+ if (xm) {
+ M = +M + 1;
+ } else {
+ m = +m + 1;
}
- if (!this[DISCARDED])
- super.emit("data", data);
}
+ if (gtlt === "<") {
+ pr = "-0";
+ }
+ ret = `${gtlt + M}.${m}.${p}${pr}`;
+ } else if (xm) {
+ ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`;
+ } else if (xp) {
+ ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`;
}
- for (const p of this[PIPES]) {
- p.end();
- }
- const ret = super.emit("end");
- this.removeAllListeners("end");
+ debug("xRange return", ret);
return ret;
+ });
+ };
+ var replaceStars = (comp, options) => {
+ debug("replaceStars", comp, options);
+ return comp.trim().replace(re[t.STAR], "");
+ };
+ var replaceGTE0 = (comp, options) => {
+ debug("replaceGTE0", comp, options);
+ return comp.trim().replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], "");
+ };
+ var hyphenReplace = (incPr) => ($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => {
+ if (isX(fM)) {
+ from = "";
+ } else if (isX(fm)) {
+ from = `>=${fM}.0.0${incPr ? "-0" : ""}`;
+ } else if (isX(fp)) {
+ from = `>=${fM}.${fm}.0${incPr ? "-0" : ""}`;
+ } else if (fpr) {
+ from = `>=${from}`;
+ } else {
+ from = `>=${from}${incPr ? "-0" : ""}`;
}
- /**
- * Return a Promise that resolves to an array of all emitted data once
- * the stream ends.
- */
- async collect() {
- const buf = Object.assign([], {
- dataLength: 0
- });
- if (!this[OBJECTMODE])
- buf.dataLength = 0;
- const p = this.promise();
- this.on("data", (c) => {
- buf.push(c);
- if (!this[OBJECTMODE])
- buf.dataLength += c.length;
- });
- await p;
- return buf;
+ if (isX(tM)) {
+ to = "";
+ } else if (isX(tm)) {
+ to = `<${+tM + 1}.0.0-0`;
+ } else if (isX(tp)) {
+ to = `<${tM}.${+tm + 1}.0-0`;
+ } else if (tpr) {
+ to = `<=${tM}.${tm}.${tp}-${tpr}`;
+ } else if (incPr) {
+ to = `<${tM}.${tm}.${+tp + 1}-0`;
+ } else {
+ to = `<=${to}`;
}
- /**
- * Return a Promise that resolves to the concatenation of all emitted data
- * once the stream ends.
- *
- * Not allowed on objectMode streams.
- */
- async concat() {
- if (this[OBJECTMODE]) {
- throw new Error("cannot concat in objectMode");
+ return `${from} ${to}`.trim();
+ };
+ var testSet = (set, version, options) => {
+ for (let i = 0; i < set.length; i++) {
+ if (!set[i].test(version)) {
+ return false;
}
- const buf = await this.collect();
- return this[ENCODING] ? buf.join("") : Buffer.concat(buf, buf.dataLength);
- }
- /**
- * Return a void Promise that resolves once the stream ends.
- */
- async promise() {
- return new Promise((resolve, reject) => {
- this.on(DESTROYED, () => reject(new Error("stream destroyed")));
- this.on("error", (er) => reject(er));
- this.on("end", () => resolve());
- });
}
- /**
- * Asynchronous `for await of` iteration.
- *
- * This will continue emitting all chunks until the stream terminates.
- */
- [Symbol.asyncIterator]() {
- this[DISCARDED] = false;
- let stopped = false;
- const stop = async () => {
- this.pause();
- stopped = true;
- return { value: void 0, 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;
- let reject;
- const onerr = (er) => {
- this.off("data", ondata);
- this.off("end", onend);
- this.off(DESTROYED, ondestroy);
- stop();
- reject(er);
- };
- const ondata = (value) => {
- this.off("error", onerr);
- this.off("end", onend);
- this.off(DESTROYED, ondestroy);
- this.pause();
- resolve({ value, done: !!this[EOF] });
- };
- const onend = () => {
- this.off("error", onerr);
- this.off("data", ondata);
- this.off(DESTROYED, ondestroy);
- stop();
- resolve({ done: true, value: void 0 });
- };
- const ondestroy = () => onerr(new Error("stream destroyed"));
- return new Promise((res2, rej) => {
- reject = rej;
- resolve = res2;
- this.once(DESTROYED, ondestroy);
- this.once("error", onerr);
- this.once("end", onend);
- this.once("data", ondata);
- });
- };
- return {
- next,
- throw: stop,
- return: stop,
- [Symbol.asyncIterator]() {
- return this;
+ if (version.prerelease.length && !options.includePrerelease) {
+ for (let i = 0; i < set.length; i++) {
+ debug(set[i].semver);
+ if (set[i].semver === Comparator.ANY) {
+ continue;
}
- };
- }
- /**
- * Synchronous `for of` iteration.
- *
- * The iteration will terminate when the internal buffer runs out, even
- * if the stream has not yet terminated.
- */
- [Symbol.iterator]() {
- this[DISCARDED] = false;
- let stopped = false;
- const stop = () => {
- this.pause();
- this.off(ERROR, stop);
- this.off(DESTROYED, stop);
- this.off("end", stop);
- stopped = true;
- return { done: true, value: void 0 };
- };
- const next = () => {
- if (stopped)
- return stop();
- const value = this.read();
- return value === null ? stop() : { done: false, value };
- };
- this.once("end", stop);
- this.once(ERROR, stop);
- this.once(DESTROYED, stop);
- return {
- next,
- throw: stop,
- return: stop,
- [Symbol.iterator]() {
- return this;
+ if (set[i].semver.prerelease.length > 0) {
+ const allowed = set[i].semver;
+ if (allowed.major === version.major && allowed.minor === version.minor && allowed.patch === version.patch) {
+ return true;
+ }
}
- };
- }
- /**
- * Destroy a stream, preventing it from being used for any further purpose.
- *
- * If the stream has a `close()` method, then it will be called on
- * destruction.
- *
- * After destruction, any attempt to write data, read data, or emit most
- * events will be ignored.
- *
- * If an error argument is provided, then it will be emitted in an
- * 'error' event.
- */
- destroy(er) {
- if (this[DESTROYED]) {
- if (er)
- this.emit("error", er);
- else
- this.emit(DESTROYED);
- return this;
}
- this[DESTROYED] = true;
- this[DISCARDED] = true;
- this[BUFFER].length = 0;
- this[BUFFERLENGTH] = 0;
- const wc = this;
- if (typeof wc.close === "function" && !this[CLOSED])
- wc.close();
- if (er)
- this.emit("error", er);
- else
- this.emit(DESTROYED);
- return this;
- }
- /**
- * Alias for {@link isStream}
- *
- * Former export location, maintained for backwards compatibility.
- *
- * @deprecated
- */
- static get isStream() {
- return isStream;
+ return false;
}
+ return true;
};
}
});
-// .yarn/cache/@isaacs-fs-minipass-npm-4.0.1-677026e841-c25b6dc159.zip/node_modules/@isaacs/fs-minipass/dist/esm/index.js
-var import_events2, import_fs2, writev, _autoClose, _close, _ended, _fd, _finished, _flags, _flush, _handleChunk, _makeBuf, _mode, _needDrain, _onerror, _onopen, _onread, _onwrite, _open, _path, _pos, _queue, _read, _readSize, _reading, _remain, _size, _write, _writing, _defaultFlag, _errored, ReadStream, ReadStreamSync, WriteStream, WriteStreamSync;
-var init_esm2 = __esm({
- ".yarn/cache/@isaacs-fs-minipass-npm-4.0.1-677026e841-c25b6dc159.zip/node_modules/@isaacs/fs-minipass/dist/esm/index.js"() {
- import_events2 = __toESM(require("events"), 1);
- import_fs2 = __toESM(require("fs"), 1);
- init_esm();
- writev = import_fs2.default.writev;
- _autoClose = Symbol("_autoClose");
- _close = Symbol("_close");
- _ended = Symbol("_ended");
- _fd = Symbol("_fd");
- _finished = Symbol("_finished");
- _flags = Symbol("_flags");
- _flush = Symbol("_flush");
- _handleChunk = Symbol("_handleChunk");
- _makeBuf = Symbol("_makeBuf");
- _mode = Symbol("_mode");
- _needDrain = Symbol("_needDrain");
- _onerror = Symbol("_onerror");
- _onopen = Symbol("_onopen");
- _onread = Symbol("_onread");
- _onwrite = Symbol("_onwrite");
- _open = Symbol("_open");
- _path = Symbol("_path");
- _pos = Symbol("_pos");
- _queue = Symbol("_queue");
- _read = Symbol("_read");
- _readSize = Symbol("_readSize");
- _reading = Symbol("_reading");
- _remain = Symbol("_remain");
- _size = Symbol("_size");
- _write = Symbol("_write");
- _writing = Symbol("_writing");
- _defaultFlag = Symbol("_defaultFlag");
- _errored = Symbol("_errored");
- ReadStream = class extends Minipass {
- [_errored] = false;
- [_fd];
- [_path];
- [_readSize];
- [_reading] = false;
- [_size];
- [_remain];
- [_autoClose];
- constructor(path16, opt) {
- opt = opt || {};
- super(opt);
- this.readable = true;
- this.writable = false;
- if (typeof path16 !== "string") {
- throw new TypeError("path must be a string");
- }
- this[_errored] = false;
- this[_fd] = typeof opt.fd === "number" ? opt.fd : void 0;
- this[_path] = path16;
- this[_readSize] = opt.readSize || 16 * 1024 * 1024;
- this[_reading] = false;
- this[_size] = typeof opt.size === "number" ? opt.size : Infinity;
- this[_remain] = this[_size];
- this[_autoClose] = typeof opt.autoClose === "boolean" ? opt.autoClose : true;
- if (typeof this[_fd] === "number") {
- this[_read]();
- } else {
- this[_open]();
- }
+// node_modules/semver/ranges/valid.js
+var require_valid2 = __commonJS({
+ "node_modules/semver/ranges/valid.js"(exports2, module2) {
+ "use strict";
+ var Range3 = require_range();
+ var validRange = (range, options) => {
+ try {
+ return new Range3(range, options).range || "*";
+ } catch (er) {
+ return null;
}
- get fd() {
- return this[_fd];
+ };
+ module2.exports = validRange;
+ }
+});
+
+// node_modules/ms/index.js
+var require_ms = __commonJS({
+ "node_modules/ms/index.js"(exports2, module2) {
+ var s = 1e3;
+ var m = s * 60;
+ var h = m * 60;
+ var d = h * 24;
+ var w = d * 7;
+ var y = d * 365.25;
+ module2.exports = function(val, options) {
+ options = options || {};
+ var type = typeof val;
+ if (type === "string" && val.length > 0) {
+ return parse4(val);
+ } else if (type === "number" && isFinite(val)) {
+ return options.long ? fmtLong(val) : fmtShort(val);
}
- get path() {
- return this[_path];
+ throw new Error(
+ "val is not a non-empty string or a valid number. val=" + JSON.stringify(val)
+ );
+ };
+ function parse4(str) {
+ str = String(str);
+ if (str.length > 100) {
+ return;
}
- //@ts-ignore
- write() {
- throw new TypeError("this is a readable stream");
+ var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(
+ str
+ );
+ if (!match) {
+ return;
}
- //@ts-ignore
- end() {
- throw new TypeError("this is a readable stream");
+ var n = parseFloat(match[1]);
+ var type = (match[2] || "ms").toLowerCase();
+ switch (type) {
+ case "years":
+ case "year":
+ case "yrs":
+ case "yr":
+ case "y":
+ return n * y;
+ case "weeks":
+ case "week":
+ case "w":
+ return n * w;
+ case "days":
+ case "day":
+ case "d":
+ return n * d;
+ case "hours":
+ case "hour":
+ case "hrs":
+ case "hr":
+ case "h":
+ return n * h;
+ case "minutes":
+ case "minute":
+ case "mins":
+ case "min":
+ case "m":
+ return n * m;
+ case "seconds":
+ case "second":
+ case "secs":
+ case "sec":
+ case "s":
+ return n * s;
+ case "milliseconds":
+ case "millisecond":
+ case "msecs":
+ case "msec":
+ case "ms":
+ return n;
+ default:
+ return void 0;
}
- [_open]() {
- import_fs2.default.open(this[_path], "r", (er, fd) => this[_onopen](er, fd));
+ }
+ function fmtShort(ms) {
+ var msAbs = Math.abs(ms);
+ if (msAbs >= d) {
+ return Math.round(ms / d) + "d";
}
- [_onopen](er, fd) {
- if (er) {
- this[_onerror](er);
- } else {
- this[_fd] = fd;
- this.emit("open", fd);
- this[_read]();
- }
+ if (msAbs >= h) {
+ return Math.round(ms / h) + "h";
}
- [_makeBuf]() {
- return Buffer.allocUnsafe(Math.min(this[_readSize], this[_remain]));
+ if (msAbs >= m) {
+ return Math.round(ms / m) + "m";
}
- [_read]() {
- if (!this[_reading]) {
- this[_reading] = true;
- const buf = this[_makeBuf]();
- if (buf.length === 0) {
- return process.nextTick(() => this[_onread](null, 0, buf));
- }
- import_fs2.default.read(this[_fd], buf, 0, buf.length, null, (er, br, b) => this[_onread](er, br, b));
- }
+ if (msAbs >= s) {
+ return Math.round(ms / s) + "s";
}
- [_onread](er, br, buf) {
- this[_reading] = false;
- if (er) {
- this[_onerror](er);
- } else if (this[_handleChunk](br, buf)) {
- this[_read]();
- }
+ return ms + "ms";
+ }
+ function fmtLong(ms) {
+ var msAbs = Math.abs(ms);
+ if (msAbs >= d) {
+ return plural2(ms, msAbs, d, "day");
}
- [_close]() {
- if (this[_autoClose] && typeof this[_fd] === "number") {
- const fd = this[_fd];
- this[_fd] = void 0;
- import_fs2.default.close(fd, (er) => er ? this.emit("error", er) : this.emit("close"));
- }
+ if (msAbs >= h) {
+ return plural2(ms, msAbs, h, "hour");
}
- [_onerror](er) {
- this[_reading] = true;
- this[_close]();
- this.emit("error", er);
+ if (msAbs >= m) {
+ return plural2(ms, msAbs, m, "minute");
}
- [_handleChunk](br, buf) {
- let ret = false;
- this[_remain] -= br;
- if (br > 0) {
- ret = super.write(br < buf.length ? buf.subarray(0, br) : buf);
- }
- if (br === 0 || this[_remain] <= 0) {
- ret = false;
- this[_close]();
- super.end();
+ if (msAbs >= s) {
+ return plural2(ms, msAbs, s, "second");
+ }
+ return ms + " ms";
+ }
+ function plural2(ms, msAbs, n, name2) {
+ var isPlural = msAbs >= n * 1.5;
+ return Math.round(ms / n) + " " + name2 + (isPlural ? "s" : "");
+ }
+ }
+});
+
+// node_modules/debug/src/common.js
+var require_common = __commonJS({
+ "node_modules/debug/src/common.js"(exports2, module2) {
+ function setup(env2) {
+ createDebug.debug = createDebug;
+ createDebug.default = createDebug;
+ createDebug.coerce = coerce;
+ createDebug.disable = disable;
+ createDebug.enable = enable;
+ createDebug.enabled = enabled;
+ createDebug.humanize = require_ms();
+ createDebug.destroy = destroy;
+ Object.keys(env2).forEach((key) => {
+ createDebug[key] = env2[key];
+ });
+ createDebug.names = [];
+ createDebug.skips = [];
+ createDebug.formatters = {};
+ function selectColor(namespace) {
+ let hash = 0;
+ for (let i = 0; i < namespace.length; i++) {
+ hash = (hash << 5) - hash + namespace.charCodeAt(i);
+ hash |= 0;
}
- return ret;
+ return createDebug.colors[Math.abs(hash) % createDebug.colors.length];
}
- emit(ev, ...args) {
- switch (ev) {
- case "prefinish":
- case "finish":
- return false;
- case "drain":
- if (typeof this[_fd] === "number") {
- this[_read]();
+ createDebug.selectColor = selectColor;
+ function createDebug(namespace) {
+ let prevTime;
+ let enableOverride = null;
+ let namespacesCache;
+ let enabledCache;
+ function debug(...args) {
+ if (!debug.enabled) {
+ return;
+ }
+ const self2 = debug;
+ const curr = Number(/* @__PURE__ */ new Date());
+ const ms = curr - (prevTime || curr);
+ self2.diff = ms;
+ self2.prev = prevTime;
+ self2.curr = curr;
+ prevTime = curr;
+ args[0] = createDebug.coerce(args[0]);
+ if (typeof args[0] !== "string") {
+ args.unshift("%O");
+ }
+ let index = 0;
+ args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {
+ if (match === "%%") {
+ return "%";
}
- return false;
- case "error":
- if (this[_errored]) {
- return false;
+ index++;
+ const formatter = createDebug.formatters[format];
+ if (typeof formatter === "function") {
+ const val = args[index];
+ match = formatter.call(self2, val);
+ args.splice(index, 1);
+ index--;
}
- this[_errored] = true;
- return super.emit(ev, ...args);
- default:
- return super.emit(ev, ...args);
+ return match;
+ });
+ createDebug.formatArgs.call(self2, args);
+ const logFn = self2.log || createDebug.log;
+ logFn.apply(self2, args);
+ }
+ debug.namespace = namespace;
+ debug.useColors = createDebug.useColors();
+ debug.color = createDebug.selectColor(namespace);
+ debug.extend = extend;
+ debug.destroy = createDebug.destroy;
+ Object.defineProperty(debug, "enabled", {
+ enumerable: true,
+ configurable: false,
+ get: () => {
+ if (enableOverride !== null) {
+ return enableOverride;
+ }
+ if (namespacesCache !== createDebug.namespaces) {
+ namespacesCache = createDebug.namespaces;
+ enabledCache = createDebug.enabled(namespace);
+ }
+ return enabledCache;
+ },
+ set: (v) => {
+ enableOverride = v;
+ }
+ });
+ if (typeof createDebug.init === "function") {
+ createDebug.init(debug);
}
+ return debug;
}
- };
- ReadStreamSync = class extends ReadStream {
- [_open]() {
- let threw = true;
- try {
- this[_onopen](null, import_fs2.default.openSync(this[_path], "r"));
- threw = false;
- } finally {
- if (threw) {
- this[_close]();
+ function extend(namespace, delimiter) {
+ const newDebug = createDebug(this.namespace + (typeof delimiter === "undefined" ? ":" : delimiter) + namespace);
+ newDebug.log = this.log;
+ return newDebug;
+ }
+ function enable(namespaces) {
+ createDebug.save(namespaces);
+ createDebug.namespaces = namespaces;
+ createDebug.names = [];
+ createDebug.skips = [];
+ const split = (typeof namespaces === "string" ? namespaces : "").trim().replace(/\s+/g, ",").split(",").filter(Boolean);
+ for (const ns of split) {
+ if (ns[0] === "-") {
+ createDebug.skips.push(ns.slice(1));
+ } else {
+ createDebug.names.push(ns);
}
}
}
- [_read]() {
- let threw = true;
- try {
- if (!this[_reading]) {
- this[_reading] = true;
- do {
- const buf = this[_makeBuf]();
- const br = buf.length === 0 ? 0 : import_fs2.default.readSync(this[_fd], buf, 0, buf.length, null);
- if (!this[_handleChunk](br, buf)) {
- break;
- }
- } while (true);
- this[_reading] = false;
- }
- threw = false;
- } finally {
- if (threw) {
- this[_close]();
+ function matchesTemplate(search, template) {
+ let searchIndex = 0;
+ let templateIndex = 0;
+ let starIndex = -1;
+ let matchIndex = 0;
+ while (searchIndex < search.length) {
+ if (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === "*")) {
+ if (template[templateIndex] === "*") {
+ starIndex = templateIndex;
+ matchIndex = searchIndex;
+ templateIndex++;
+ } else {
+ searchIndex++;
+ templateIndex++;
+ }
+ } else if (starIndex !== -1) {
+ templateIndex = starIndex + 1;
+ matchIndex++;
+ searchIndex = matchIndex;
+ } else {
+ return false;
}
}
- }
- [_close]() {
- if (this[_autoClose] && typeof this[_fd] === "number") {
- const fd = this[_fd];
- this[_fd] = void 0;
- import_fs2.default.closeSync(fd);
- this.emit("close");
+ while (templateIndex < template.length && template[templateIndex] === "*") {
+ templateIndex++;
}
+ return templateIndex === template.length;
}
- };
- WriteStream = class extends import_events2.default {
- readable = false;
- writable = true;
- [_errored] = false;
- [_writing] = false;
- [_ended] = false;
- [_queue] = [];
- [_needDrain] = false;
- [_path];
- [_mode];
- [_autoClose];
- [_fd];
- [_defaultFlag];
- [_flags];
- [_finished] = false;
- [_pos];
- constructor(path16, opt) {
- opt = opt || {};
- super(opt);
- this[_path] = path16;
- this[_fd] = typeof opt.fd === "number" ? opt.fd : void 0;
- this[_mode] = opt.mode === void 0 ? 438 : opt.mode;
- this[_pos] = typeof opt.start === "number" ? opt.start : void 0;
- this[_autoClose] = typeof opt.autoClose === "boolean" ? opt.autoClose : true;
- const defaultFlag = this[_pos] !== void 0 ? "r+" : "w";
- this[_defaultFlag] = opt.flags === void 0;
- this[_flags] = opt.flags === void 0 ? defaultFlag : opt.flags;
- if (this[_fd] === void 0) {
- this[_open]();
- }
+ function disable() {
+ const namespaces = [
+ ...createDebug.names,
+ ...createDebug.skips.map((namespace) => "-" + namespace)
+ ].join(",");
+ createDebug.enable("");
+ return namespaces;
}
- emit(ev, ...args) {
- if (ev === "error") {
- if (this[_errored]) {
+ function enabled(name2) {
+ for (const skip of createDebug.skips) {
+ if (matchesTemplate(name2, skip)) {
return false;
}
- this[_errored] = true;
}
- return super.emit(ev, ...args);
- }
- get fd() {
- return this[_fd];
- }
- get path() {
- return this[_path];
- }
- [_onerror](er) {
- this[_close]();
- this[_writing] = true;
- this.emit("error", er);
- }
- [_open]() {
- import_fs2.default.open(this[_path], this[_flags], this[_mode], (er, fd) => this[_onopen](er, fd));
- }
- [_onopen](er, fd) {
- if (this[_defaultFlag] && this[_flags] === "r+" && er && er.code === "ENOENT") {
- this[_flags] = "w";
- this[_open]();
- } else if (er) {
- this[_onerror](er);
- } else {
- this[_fd] = fd;
- this.emit("open", fd);
- if (!this[_writing]) {
- this[_flush]();
+ for (const ns of createDebug.names) {
+ if (matchesTemplate(name2, ns)) {
+ return true;
}
}
+ return false;
}
- end(buf, enc) {
- if (buf) {
- this.write(buf, enc);
- }
- this[_ended] = true;
- if (!this[_writing] && !this[_queue].length && typeof this[_fd] === "number") {
- this[_onwrite](null, 0);
+ function coerce(val) {
+ if (val instanceof Error) {
+ return val.stack || val.message;
}
- return this;
+ return val;
}
- write(buf, enc) {
- if (typeof buf === "string") {
- buf = Buffer.from(buf, enc);
- }
- if (this[_ended]) {
- this.emit("error", new Error("write() after end()"));
- return false;
- }
- if (this[_fd] === void 0 || this[_writing] || this[_queue].length) {
- this[_queue].push(buf);
- this[_needDrain] = true;
- return false;
+ function destroy() {
+ console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");
+ }
+ createDebug.enable(createDebug.load());
+ return createDebug;
+ }
+ module2.exports = setup;
+ }
+});
+
+// node_modules/debug/src/browser.js
+var require_browser = __commonJS({
+ "node_modules/debug/src/browser.js"(exports2, module2) {
+ exports2.formatArgs = formatArgs;
+ exports2.save = save;
+ exports2.load = load;
+ exports2.useColors = useColors;
+ exports2.storage = localstorage();
+ exports2.destroy = /* @__PURE__ */ (() => {
+ let warned = false;
+ return () => {
+ if (!warned) {
+ warned = true;
+ console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");
}
- this[_writing] = true;
- this[_write](buf);
+ };
+ })();
+ exports2.colors = [
+ "#0000CC",
+ "#0000FF",
+ "#0033CC",
+ "#0033FF",
+ "#0066CC",
+ "#0066FF",
+ "#0099CC",
+ "#0099FF",
+ "#00CC00",
+ "#00CC33",
+ "#00CC66",
+ "#00CC99",
+ "#00CCCC",
+ "#00CCFF",
+ "#3300CC",
+ "#3300FF",
+ "#3333CC",
+ "#3333FF",
+ "#3366CC",
+ "#3366FF",
+ "#3399CC",
+ "#3399FF",
+ "#33CC00",
+ "#33CC33",
+ "#33CC66",
+ "#33CC99",
+ "#33CCCC",
+ "#33CCFF",
+ "#6600CC",
+ "#6600FF",
+ "#6633CC",
+ "#6633FF",
+ "#66CC00",
+ "#66CC33",
+ "#9900CC",
+ "#9900FF",
+ "#9933CC",
+ "#9933FF",
+ "#99CC00",
+ "#99CC33",
+ "#CC0000",
+ "#CC0033",
+ "#CC0066",
+ "#CC0099",
+ "#CC00CC",
+ "#CC00FF",
+ "#CC3300",
+ "#CC3333",
+ "#CC3366",
+ "#CC3399",
+ "#CC33CC",
+ "#CC33FF",
+ "#CC6600",
+ "#CC6633",
+ "#CC9900",
+ "#CC9933",
+ "#CCCC00",
+ "#CCCC33",
+ "#FF0000",
+ "#FF0033",
+ "#FF0066",
+ "#FF0099",
+ "#FF00CC",
+ "#FF00FF",
+ "#FF3300",
+ "#FF3333",
+ "#FF3366",
+ "#FF3399",
+ "#FF33CC",
+ "#FF33FF",
+ "#FF6600",
+ "#FF6633",
+ "#FF9900",
+ "#FF9933",
+ "#FFCC00",
+ "#FFCC33"
+ ];
+ function useColors() {
+ if (typeof window !== "undefined" && window.process && (window.process.type === "renderer" || window.process.__nwjs)) {
return true;
}
- [_write](buf) {
- import_fs2.default.write(this[_fd], buf, 0, buf.length, this[_pos], (er, bw) => this[_onwrite](er, bw));
+ if (typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) {
+ return false;
}
- [_onwrite](er, bw) {
- if (er) {
- this[_onerror](er);
- } else {
- if (this[_pos] !== void 0 && typeof bw === "number") {
- this[_pos] += bw;
- }
- if (this[_queue].length) {
- this[_flush]();
- } else {
- this[_writing] = false;
- if (this[_ended] && !this[_finished]) {
- this[_finished] = true;
- this[_close]();
- this.emit("finish");
- } else if (this[_needDrain]) {
- this[_needDrain] = false;
- this.emit("drain");
- }
- }
- }
+ let m;
+ return typeof document !== "undefined" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773
+ typeof window !== "undefined" && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31?
+ // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages
+ typeof navigator !== "undefined" && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)) && parseInt(m[1], 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker
+ typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/);
+ }
+ function formatArgs(args) {
+ args[0] = (this.useColors ? "%c" : "") + this.namespace + (this.useColors ? " %c" : " ") + args[0] + (this.useColors ? "%c " : " ") + "+" + module2.exports.humanize(this.diff);
+ if (!this.useColors) {
+ return;
}
- [_flush]() {
- if (this[_queue].length === 0) {
- if (this[_ended]) {
- this[_onwrite](null, 0);
- }
- } else if (this[_queue].length === 1) {
- this[_write](this[_queue].pop());
- } else {
- const iovec = this[_queue];
- this[_queue] = [];
- writev(this[_fd], iovec, this[_pos], (er, bw) => this[_onwrite](er, bw));
+ const c = "color: " + this.color;
+ args.splice(1, 0, c, "color: inherit");
+ let index = 0;
+ let lastC = 0;
+ args[0].replace(/%[a-zA-Z%]/g, (match) => {
+ if (match === "%%") {
+ return;
}
- }
- [_close]() {
- if (this[_autoClose] && typeof this[_fd] === "number") {
- const fd = this[_fd];
- this[_fd] = void 0;
- import_fs2.default.close(fd, (er) => er ? this.emit("error", er) : this.emit("close"));
+ index++;
+ if (match === "%c") {
+ lastC = index;
}
- }
- };
- WriteStreamSync = class extends WriteStream {
- [_open]() {
- let fd;
- if (this[_defaultFlag] && this[_flags] === "r+") {
- try {
- fd = import_fs2.default.openSync(this[_path], this[_flags], this[_mode]);
- } catch (er) {
- if (er?.code === "ENOENT") {
- this[_flags] = "w";
- return this[_open]();
- } else {
- throw er;
- }
- }
+ });
+ args.splice(lastC, 0, c);
+ }
+ exports2.log = console.debug || console.log || (() => {
+ });
+ function save(namespaces) {
+ try {
+ if (namespaces) {
+ exports2.storage.setItem("debug", namespaces);
} else {
- fd = import_fs2.default.openSync(this[_path], this[_flags], this[_mode]);
+ exports2.storage.removeItem("debug");
}
- this[_onopen](null, fd);
+ } catch (error) {
}
- [_close]() {
- if (this[_autoClose] && typeof this[_fd] === "number") {
- const fd = this[_fd];
- this[_fd] = void 0;
- import_fs2.default.closeSync(fd);
- this.emit("close");
- }
+ }
+ function load() {
+ let r;
+ try {
+ r = exports2.storage.getItem("debug") || exports2.storage.getItem("DEBUG");
+ } catch (error) {
}
- [_write](buf) {
- let threw = true;
- try {
- this[_onwrite](null, import_fs2.default.writeSync(this[_fd], buf, 0, buf.length, this[_pos]));
- threw = false;
- } finally {
- if (threw) {
- try {
- this[_close]();
- } catch {
- }
- }
- }
+ if (!r && typeof process !== "undefined" && "env" in process) {
+ r = process.env.DEBUG;
+ }
+ return r;
+ }
+ function localstorage() {
+ try {
+ return localStorage;
+ } catch (error) {
+ }
+ }
+ module2.exports = require_common()(exports2);
+ var { formatters } = module2.exports;
+ formatters.j = function(v) {
+ try {
+ return JSON.stringify(v);
+ } catch (error) {
+ return "[UnexpectedJSONParseError]: " + error.message;
}
};
}
-});
-
-// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/options.js
-var argmap, isSyncFile, isAsyncFile, isSyncNoFile, isAsyncNoFile, dealiasKey, dealias;
-var init_options = __esm({
- ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/options.js"() {
- argmap = /* @__PURE__ */ new Map([
- ["C", "cwd"],
- ["f", "file"],
- ["z", "gzip"],
- ["P", "preservePaths"],
- ["U", "unlink"],
- ["strip-components", "strip"],
- ["stripComponents", "strip"],
- ["keep-newer", "newer"],
- ["keepNewer", "newer"],
- ["keep-newer-files", "newer"],
- ["keepNewerFiles", "newer"],
- ["k", "keep"],
- ["keep-existing", "keep"],
- ["keepExisting", "keep"],
- ["m", "noMtime"],
- ["no-mtime", "noMtime"],
- ["p", "preserveOwner"],
- ["L", "follow"],
- ["h", "follow"],
- ["onentry", "onReadEntry"]
- ]);
- isSyncFile = (o) => !!o.sync && !!o.file;
- isAsyncFile = (o) => !o.sync && !!o.file;
- isSyncNoFile = (o) => !!o.sync && !o.file;
- isAsyncNoFile = (o) => !o.sync && !o.file;
- dealiasKey = (k) => {
- const d = argmap.get(k);
- if (d)
- return d;
- return k;
- };
- dealias = (opt = {}) => {
- if (!opt)
- return {};
- const result = {};
- for (const [key, v] of Object.entries(opt)) {
- const k = dealiasKey(key);
- result[k] = v;
+});
+
+// node_modules/supports-color/index.js
+var supports_color_exports = {};
+__export(supports_color_exports, {
+ createSupportsColor: () => createSupportsColor,
+ default: () => supports_color_default
+});
+function hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : import_node_process.default.argv) {
+ const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--";
+ const position = argv.indexOf(prefix + flag);
+ const terminatorPosition = argv.indexOf("--");
+ return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);
+}
+function envForceColor() {
+ if (!("FORCE_COLOR" in env)) {
+ return;
+ }
+ if (env.FORCE_COLOR === "true") {
+ return 1;
+ }
+ if (env.FORCE_COLOR === "false") {
+ return 0;
+ }
+ if (env.FORCE_COLOR.length === 0) {
+ return 1;
+ }
+ if (!new RegExp("^\\d+$", "v").test(env.FORCE_COLOR)) {
+ return;
+ }
+ const level = Math.min(Number(env.FORCE_COLOR), 3);
+ if (![0, 1, 2, 3].includes(level)) {
+ return;
+ }
+ return level;
+}
+function translateLevel(level) {
+ if (level === 0) {
+ return false;
+ }
+ return {
+ level,
+ hasBasic: true,
+ has256: level >= 2,
+ has16m: level >= 3
+ };
+}
+function _supportsColor(haveStream, { streamIsTTY, sniffFlags = true } = {}) {
+ const noFlagForceColor = envForceColor();
+ if (noFlagForceColor !== void 0) {
+ flagForceColor = noFlagForceColor;
+ }
+ const forceColor = sniffFlags ? flagForceColor : noFlagForceColor;
+ if (forceColor === 0) {
+ return 0;
+ }
+ if (sniffFlags) {
+ if (hasFlag("color=16m") || hasFlag("color=full") || hasFlag("color=truecolor")) {
+ return 3;
+ }
+ if (hasFlag("color=256")) {
+ return 2;
+ }
+ }
+ if (forceColor !== void 0 && new RegExp("^\\d+$", "v").test(env.FORCE_COLOR)) {
+ return forceColor;
+ }
+ if ("TF_BUILD" in env && "AGENT_NAME" in env) {
+ return 1;
+ }
+ if (haveStream && !streamIsTTY && forceColor === void 0) {
+ return 0;
+ }
+ const min = forceColor || 0;
+ if (env.TERM === "dumb") {
+ return min;
+ }
+ if (import_node_process.default.platform === "win32") {
+ const osRelease = import_node_os.default.release().split(".");
+ if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) {
+ return Number(osRelease[2]) >= 14931 ? 3 : 2;
+ }
+ return 1;
+ }
+ if ("CI" in env) {
+ if (["GITHUB_ACTIONS", "GITEA_ACTIONS", "CIRCLECI"].some((key) => Object.hasOwn(env, key))) {
+ return 3;
+ }
+ if (["TRAVIS", "APPVEYOR", "GITLAB_CI", "BUILDKITE", "DRONE"].some((sign) => Object.hasOwn(env, sign)) || env.CI_NAME === "codeship") {
+ return 1;
+ }
+ return min;
+ }
+ if ("TEAMCITY_VERSION" in env) {
+ return new RegExp("^(?:9\\.0*[1-9]\\d*\\.|\\d{2,}\\.)", "v").test(env.TEAMCITY_VERSION) ? 1 : 0;
+ }
+ if (env.COLORTERM === "truecolor") {
+ return 3;
+ }
+ if (env.TERM === "xterm-kitty") {
+ return 3;
+ }
+ if (env.TERM === "xterm-ghostty") {
+ return 3;
+ }
+ if (env.TERM === "wezterm") {
+ return 3;
+ }
+ if ("TERM_PROGRAM" in env) {
+ const version = Number((env.TERM_PROGRAM_VERSION || "").split(".", 1)[0]);
+ switch (env.TERM_PROGRAM) {
+ case "iTerm.app": {
+ return version >= 3 ? 3 : 2;
}
- if (result.chmod === void 0 && result.noChmod === false) {
- result.chmod = true;
+ case "Apple_Terminal": {
+ return 2;
}
- delete result.noChmod;
- return result;
+ }
+ }
+ if (new RegExp("-256(?:color)?$", "iv").test(env.TERM)) {
+ return 2;
+ }
+ if (new RegExp("^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux", "iv").test(env.TERM)) {
+ return 1;
+ }
+ if ("COLORTERM" in env) {
+ return 1;
+ }
+ return min;
+}
+function createSupportsColor(stream, options = {}) {
+ const level = _supportsColor(stream, {
+ streamIsTTY: stream && stream.isTTY,
+ ...options
+ });
+ return translateLevel(level);
+}
+var import_node_process, import_node_os, import_node_tty, env, flagForceColor, supportsColor, supports_color_default;
+var init_supports_color = __esm({
+ "node_modules/supports-color/index.js"() {
+ import_node_process = __toESM(require("node:process"), 1);
+ import_node_os = __toESM(require("node:os"), 1);
+ import_node_tty = __toESM(require("node:tty"), 1);
+ ({ env } = import_node_process.default);
+ if (hasFlag("no-color") || hasFlag("no-colors") || hasFlag("color=false") || hasFlag("color=never")) {
+ flagForceColor = 0;
+ } else if (hasFlag("color") || hasFlag("colors") || hasFlag("color=true") || hasFlag("color=always")) {
+ flagForceColor = 1;
+ }
+ supportsColor = {
+ stdout: createSupportsColor({ isTTY: import_node_tty.default.isatty(1) }),
+ stderr: createSupportsColor({ isTTY: import_node_tty.default.isatty(2) })
};
+ supports_color_default = supportsColor;
}
});
-// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/make-command.js
-var makeCommand;
-var init_make_command = __esm({
- ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/make-command.js"() {
- init_options();
- makeCommand = (syncFile, asyncFile, syncNoFile, asyncNoFile, validate) => {
- return Object.assign((opt_ = [], entries, cb) => {
- if (Array.isArray(opt_)) {
- entries = opt_;
- opt_ = {};
- }
- if (typeof entries === "function") {
- cb = entries;
- entries = void 0;
- }
- if (!entries) {
- entries = [];
- } else {
- entries = Array.from(entries);
- }
- const opt = dealias(opt_);
- validate?.(opt, entries);
- if (isSyncFile(opt)) {
- if (typeof cb === "function") {
- throw new TypeError("callback not supported for sync tar functions");
- }
- return syncFile(opt, entries);
- } else if (isAsyncFile(opt)) {
- const p = asyncFile(opt, entries);
- const c = cb ? cb : void 0;
- return c ? p.then(() => c(), c) : p;
- } else if (isSyncNoFile(opt)) {
- if (typeof cb === "function") {
- throw new TypeError("callback not supported for sync tar functions");
- }
- return syncNoFile(opt, entries);
- } else if (isAsyncNoFile(opt)) {
- if (typeof cb === "function") {
- throw new TypeError("callback only supported with file option");
- }
- return asyncNoFile(opt, entries);
- } else {
- throw new Error("impossible options??");
- }
- }, {
- syncFile,
- asyncFile,
- syncNoFile,
- asyncNoFile,
- validate
+// node_modules/debug/src/node.js
+var require_node = __commonJS({
+ "node_modules/debug/src/node.js"(exports2, module2) {
+ var tty3 = require("tty");
+ var util = require("util");
+ exports2.init = init;
+ exports2.log = log2;
+ exports2.formatArgs = formatArgs;
+ exports2.save = save;
+ exports2.load = load;
+ exports2.useColors = useColors;
+ exports2.destroy = util.deprecate(
+ () => {
+ },
+ "Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."
+ );
+ exports2.colors = [6, 2, 3, 4, 5, 1];
+ try {
+ const supportsColor2 = (init_supports_color(), __toCommonJS(supports_color_exports));
+ if (supportsColor2 && (supportsColor2.stderr || supportsColor2).level >= 2) {
+ exports2.colors = [
+ 20,
+ 21,
+ 26,
+ 27,
+ 32,
+ 33,
+ 38,
+ 39,
+ 40,
+ 41,
+ 42,
+ 43,
+ 44,
+ 45,
+ 56,
+ 57,
+ 62,
+ 63,
+ 68,
+ 69,
+ 74,
+ 75,
+ 76,
+ 77,
+ 78,
+ 79,
+ 80,
+ 81,
+ 92,
+ 93,
+ 98,
+ 99,
+ 112,
+ 113,
+ 128,
+ 129,
+ 134,
+ 135,
+ 148,
+ 149,
+ 160,
+ 161,
+ 162,
+ 163,
+ 164,
+ 165,
+ 166,
+ 167,
+ 168,
+ 169,
+ 170,
+ 171,
+ 172,
+ 173,
+ 178,
+ 179,
+ 184,
+ 185,
+ 196,
+ 197,
+ 198,
+ 199,
+ 200,
+ 201,
+ 202,
+ 203,
+ 204,
+ 205,
+ 206,
+ 207,
+ 208,
+ 209,
+ 214,
+ 215,
+ 220,
+ 221
+ ];
+ }
+ } catch (error) {
+ }
+ exports2.inspectOpts = Object.keys(process.env).filter((key) => {
+ return /^debug_/i.test(key);
+ }).reduce((obj, key) => {
+ const prop = key.substring(6).toLowerCase().replace(/_([a-z])/g, (_, k) => {
+ return k.toUpperCase();
});
+ let val = process.env[key];
+ if (/^(yes|on|true|enabled)$/i.test(val)) {
+ val = true;
+ } else if (/^(no|off|false|disabled)$/i.test(val)) {
+ val = false;
+ } else if (val === "null") {
+ val = null;
+ } else {
+ val = Number(val);
+ }
+ obj[prop] = val;
+ return obj;
+ }, {});
+ function useColors() {
+ return "colors" in exports2.inspectOpts ? Boolean(exports2.inspectOpts.colors) : tty3.isatty(process.stderr.fd);
+ }
+ function formatArgs(args) {
+ const { namespace: name2, useColors: useColors2 } = this;
+ if (useColors2) {
+ const c = this.color;
+ const colorCode = "\x1B[3" + (c < 8 ? c : "8;5;" + c);
+ const prefix = ` ${colorCode};1m${name2} \x1B[0m`;
+ args[0] = prefix + args[0].split("\n").join("\n" + prefix);
+ args.push(colorCode + "m+" + module2.exports.humanize(this.diff) + "\x1B[0m");
+ } else {
+ args[0] = getDate() + name2 + " " + args[0];
+ }
+ }
+ function getDate() {
+ if (exports2.inspectOpts.hideDate) {
+ return "";
+ }
+ return (/* @__PURE__ */ new Date()).toISOString() + " ";
+ }
+ function log2(...args) {
+ return process.stderr.write(util.formatWithOptions(exports2.inspectOpts, ...args) + "\n");
+ }
+ function save(namespaces) {
+ if (namespaces) {
+ process.env.DEBUG = namespaces;
+ } else {
+ delete process.env.DEBUG;
+ }
+ }
+ function load() {
+ return process.env.DEBUG;
+ }
+ function init(debug) {
+ debug.inspectOpts = {};
+ const keys = Object.keys(exports2.inspectOpts);
+ for (let i = 0; i < keys.length; i++) {
+ debug.inspectOpts[keys[i]] = exports2.inspectOpts[keys[i]];
+ }
+ }
+ module2.exports = require_common()(exports2);
+ var { formatters } = module2.exports;
+ formatters.o = function(v) {
+ this.inspectOpts.colors = this.useColors;
+ return util.inspect(v, this.inspectOpts).split("\n").map((str) => str.trim()).join(" ");
+ };
+ formatters.O = function(v) {
+ this.inspectOpts.colors = this.useColors;
+ return util.inspect(v, this.inspectOpts);
};
}
});
-// .yarn/cache/minizlib-npm-3.1.0-6680befdba-5aad75ab00.zip/node_modules/minizlib/dist/esm/constants.js
-var import_zlib, realZlibConstants, constants;
-var init_constants = __esm({
- ".yarn/cache/minizlib-npm-3.1.0-6680befdba-5aad75ab00.zip/node_modules/minizlib/dist/esm/constants.js"() {
- import_zlib = __toESM(require("zlib"), 1);
- realZlibConstants = import_zlib.default.constants || { ZLIB_VERNUM: 4736 };
- constants = Object.freeze(Object.assign(/* @__PURE__ */ Object.create(null), {
- Z_NO_FLUSH: 0,
- Z_PARTIAL_FLUSH: 1,
- Z_SYNC_FLUSH: 2,
- Z_FULL_FLUSH: 3,
- Z_FINISH: 4,
- Z_BLOCK: 5,
- Z_OK: 0,
- Z_STREAM_END: 1,
- Z_NEED_DICT: 2,
- Z_ERRNO: -1,
- Z_STREAM_ERROR: -2,
- Z_DATA_ERROR: -3,
- Z_MEM_ERROR: -4,
- Z_BUF_ERROR: -5,
- Z_VERSION_ERROR: -6,
- Z_NO_COMPRESSION: 0,
- Z_BEST_SPEED: 1,
- Z_BEST_COMPRESSION: 9,
- Z_DEFAULT_COMPRESSION: -1,
- Z_FILTERED: 1,
- Z_HUFFMAN_ONLY: 2,
- Z_RLE: 3,
- Z_FIXED: 4,
- Z_DEFAULT_STRATEGY: 0,
- DEFLATE: 1,
- INFLATE: 2,
- GZIP: 3,
- GUNZIP: 4,
- DEFLATERAW: 5,
- INFLATERAW: 6,
- UNZIP: 7,
- BROTLI_DECODE: 8,
- BROTLI_ENCODE: 9,
- Z_MIN_WINDOWBITS: 8,
- Z_MAX_WINDOWBITS: 15,
- Z_DEFAULT_WINDOWBITS: 15,
- Z_MIN_CHUNK: 64,
- Z_MAX_CHUNK: Infinity,
- Z_DEFAULT_CHUNK: 16384,
- Z_MIN_MEMLEVEL: 1,
- Z_MAX_MEMLEVEL: 9,
- Z_DEFAULT_MEMLEVEL: 8,
- Z_MIN_LEVEL: -1,
- Z_MAX_LEVEL: 9,
- Z_DEFAULT_LEVEL: -1,
- BROTLI_OPERATION_PROCESS: 0,
- BROTLI_OPERATION_FLUSH: 1,
- BROTLI_OPERATION_FINISH: 2,
- BROTLI_OPERATION_EMIT_METADATA: 3,
- BROTLI_MODE_GENERIC: 0,
- BROTLI_MODE_TEXT: 1,
- BROTLI_MODE_FONT: 2,
- BROTLI_DEFAULT_MODE: 0,
- BROTLI_MIN_QUALITY: 0,
- BROTLI_MAX_QUALITY: 11,
- BROTLI_DEFAULT_QUALITY: 11,
- BROTLI_MIN_WINDOW_BITS: 10,
- BROTLI_MAX_WINDOW_BITS: 24,
- BROTLI_LARGE_MAX_WINDOW_BITS: 30,
- BROTLI_DEFAULT_WINDOW: 22,
- BROTLI_MIN_INPUT_BLOCK_BITS: 16,
- BROTLI_MAX_INPUT_BLOCK_BITS: 24,
- BROTLI_PARAM_MODE: 0,
- BROTLI_PARAM_QUALITY: 1,
- BROTLI_PARAM_LGWIN: 2,
- BROTLI_PARAM_LGBLOCK: 3,
- BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING: 4,
- BROTLI_PARAM_SIZE_HINT: 5,
- BROTLI_PARAM_LARGE_WINDOW: 6,
- BROTLI_PARAM_NPOSTFIX: 7,
- BROTLI_PARAM_NDIRECT: 8,
- BROTLI_DECODER_RESULT_ERROR: 0,
- BROTLI_DECODER_RESULT_SUCCESS: 1,
- BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT: 2,
- BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT: 3,
- BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION: 0,
- BROTLI_DECODER_PARAM_LARGE_WINDOW: 1,
- BROTLI_DECODER_NO_ERROR: 0,
- BROTLI_DECODER_SUCCESS: 1,
- BROTLI_DECODER_NEEDS_MORE_INPUT: 2,
- BROTLI_DECODER_NEEDS_MORE_OUTPUT: 3,
- BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE: -1,
- BROTLI_DECODER_ERROR_FORMAT_RESERVED: -2,
- BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE: -3,
- BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET: -4,
- BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME: -5,
- BROTLI_DECODER_ERROR_FORMAT_CL_SPACE: -6,
- BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE: -7,
- BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT: -8,
- BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1: -9,
- BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2: -10,
- BROTLI_DECODER_ERROR_FORMAT_TRANSFORM: -11,
- BROTLI_DECODER_ERROR_FORMAT_DICTIONARY: -12,
- BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS: -13,
- BROTLI_DECODER_ERROR_FORMAT_PADDING_1: -14,
- BROTLI_DECODER_ERROR_FORMAT_PADDING_2: -15,
- BROTLI_DECODER_ERROR_FORMAT_DISTANCE: -16,
- BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET: -19,
- BROTLI_DECODER_ERROR_INVALID_ARGUMENTS: -20,
- BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES: -21,
- BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS: -22,
- BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP: -25,
- BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1: -26,
- BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2: -27,
- BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES: -30,
- BROTLI_DECODER_ERROR_UNREACHABLE: -31
- }, realZlibConstants));
+// node_modules/debug/src/index.js
+var require_src = __commonJS({
+ "node_modules/debug/src/index.js"(exports2, module2) {
+ if (typeof process === "undefined" || process.type === "renderer" || process.browser === true || process.__nwjs) {
+ module2.exports = require_browser();
+ } else {
+ module2.exports = require_node();
+ }
}
});
-// .yarn/cache/minizlib-npm-3.1.0-6680befdba-5aad75ab00.zip/node_modules/minizlib/dist/esm/index.js
-var import_assert2, import_buffer, realZlib2, OriginalBufferConcat, desc, noop, passthroughBufferConcat, _superWrite, ZlibError, _flushFlag, ZlibBase, Zlib, Gzip, Unzip, Brotli, BrotliCompress, BrotliDecompress, Zstd, ZstdCompress, ZstdDecompress;
-var init_esm3 = __esm({
- ".yarn/cache/minizlib-npm-3.1.0-6680befdba-5aad75ab00.zip/node_modules/minizlib/dist/esm/index.js"() {
- import_assert2 = __toESM(require("assert"), 1);
- import_buffer = require("buffer");
- init_esm();
- realZlib2 = __toESM(require("zlib"), 1);
- init_constants();
- init_constants();
- OriginalBufferConcat = import_buffer.Buffer.concat;
- desc = Object.getOwnPropertyDescriptor(import_buffer.Buffer, "concat");
- noop = (args) => args;
- passthroughBufferConcat = desc?.writable === true || desc?.set !== void 0 ? (makeNoOp) => {
- import_buffer.Buffer.concat = makeNoOp ? noop : OriginalBufferConcat;
- } : (_) => {
- };
- _superWrite = Symbol("_superWrite");
- ZlibError = class extends Error {
- code;
- errno;
- constructor(err, origin) {
- super("zlib: " + err.message, { cause: err });
- this.code = err.code;
- this.errno = err.errno;
- if (!this.code)
- this.code = "ZLIB_ERROR";
- this.message = "zlib: " + err.message;
- Error.captureStackTrace(this, origin ?? this.constructor);
- }
- get name() {
- return "ZlibError";
- }
+// node_modules/minipass/dist/esm/index.js
+var import_node_events, import_node_stream, import_node_string_decoder, proc, isStream, isReadable, isWritable, EOF, MAYBE_EMIT_END, EMITTED_END, EMITTING_END, EMITTED_ERROR, CLOSED, READ, FLUSH, FLUSHCHUNK, ENCODING, DECODER, FLOWING, PAUSED, RESUME, BUFFER, PIPES, BUFFERLENGTH, BUFFERPUSH, BUFFERSHIFT, OBJECTMODE, DESTROYED, ERROR, EMITDATA, EMITEND, EMITEND2, ASYNC, ABORT, ABORTED, SIGNAL, DATALISTENERS, DISCARDED, defer, nodefer, isEndish, isArrayBufferLike, isArrayBufferView, Pipe, PipeProxyErrors, isObjectModeOptions, isEncodingOptions, Minipass;
+var init_esm = __esm({
+ "node_modules/minipass/dist/esm/index.js"() {
+ import_node_events = require("node:events");
+ import_node_stream = __toESM(require("node:stream"), 1);
+ import_node_string_decoder = require("node:string_decoder");
+ proc = typeof process === "object" && process ? process : {
+ stdout: null,
+ stderr: null
};
- _flushFlag = Symbol("flushFlag");
- ZlibBase = class extends Minipass {
- #sawError = false;
- #ended = false;
- #flushFlag;
- #finishFlushFlag;
- #fullFlushFlag;
- #handle;
- #onError;
- get sawError() {
- return this.#sawError;
- }
- get handle() {
- return this.#handle;
- }
- /* c8 ignore start */
- get flushFlag() {
- return this.#flushFlag;
- }
- /* c8 ignore stop */
- constructor(opts, mode) {
- if (!opts || typeof opts !== "object")
- throw new TypeError("invalid options for ZlibBase constructor");
- super(opts);
- this.#flushFlag = opts.flush ?? 0;
- this.#finishFlushFlag = opts.finishFlush ?? 0;
- this.#fullFlushFlag = opts.fullFlushFlag ?? 0;
- if (typeof realZlib2[mode] !== "function") {
- throw new TypeError("Compression method not supported: " + mode);
- }
- try {
- this.#handle = new realZlib2[mode](opts);
- } catch (er) {
- throw new ZlibError(er, this.constructor);
- }
- this.#onError = (err) => {
- if (this.#sawError)
- return;
- this.#sawError = true;
- this.close();
- this.emit("error", err);
- };
- this.#handle?.on("error", (er) => this.#onError(new ZlibError(er)));
- this.once("end", () => this.close);
+ isStream = (s) => !!s && typeof s === "object" && (s instanceof Minipass || s instanceof import_node_stream.default || isReadable(s) || isWritable(s));
+ isReadable = (s) => !!s && typeof s === "object" && s instanceof import_node_events.EventEmitter && typeof s.pipe === "function" && // node core Writable streams have a pipe() method, but it throws
+ s.pipe !== import_node_stream.default.Writable.prototype.pipe;
+ isWritable = (s) => !!s && typeof s === "object" && s instanceof import_node_events.EventEmitter && typeof s.write === "function" && typeof s.end === "function";
+ EOF = /* @__PURE__ */ Symbol("EOF");
+ MAYBE_EMIT_END = /* @__PURE__ */ Symbol("maybeEmitEnd");
+ EMITTED_END = /* @__PURE__ */ Symbol("emittedEnd");
+ EMITTING_END = /* @__PURE__ */ Symbol("emittingEnd");
+ EMITTED_ERROR = /* @__PURE__ */ Symbol("emittedError");
+ CLOSED = /* @__PURE__ */ Symbol("closed");
+ READ = /* @__PURE__ */ Symbol("read");
+ FLUSH = /* @__PURE__ */ Symbol("flush");
+ FLUSHCHUNK = /* @__PURE__ */ Symbol("flushChunk");
+ ENCODING = /* @__PURE__ */ Symbol("encoding");
+ DECODER = /* @__PURE__ */ Symbol("decoder");
+ FLOWING = /* @__PURE__ */ Symbol("flowing");
+ PAUSED = /* @__PURE__ */ Symbol("paused");
+ RESUME = /* @__PURE__ */ Symbol("resume");
+ BUFFER = /* @__PURE__ */ Symbol("buffer");
+ PIPES = /* @__PURE__ */ Symbol("pipes");
+ BUFFERLENGTH = /* @__PURE__ */ Symbol("bufferLength");
+ BUFFERPUSH = /* @__PURE__ */ Symbol("bufferPush");
+ BUFFERSHIFT = /* @__PURE__ */ Symbol("bufferShift");
+ OBJECTMODE = /* @__PURE__ */ Symbol("objectMode");
+ DESTROYED = /* @__PURE__ */ Symbol("destroyed");
+ ERROR = /* @__PURE__ */ Symbol("error");
+ EMITDATA = /* @__PURE__ */ Symbol("emitData");
+ EMITEND = /* @__PURE__ */ Symbol("emitEnd");
+ EMITEND2 = /* @__PURE__ */ Symbol("emitEnd2");
+ ASYNC = /* @__PURE__ */ Symbol("async");
+ ABORT = /* @__PURE__ */ Symbol("abort");
+ ABORTED = /* @__PURE__ */ Symbol("aborted");
+ SIGNAL = /* @__PURE__ */ Symbol("signal");
+ DATALISTENERS = /* @__PURE__ */ Symbol("dataListeners");
+ DISCARDED = /* @__PURE__ */ Symbol("discarded");
+ defer = (fn2) => Promise.resolve().then(fn2);
+ nodefer = (fn2) => fn2();
+ isEndish = (ev) => ev === "end" || ev === "finish" || ev === "prefinish";
+ isArrayBufferLike = (b) => b instanceof ArrayBuffer || !!b && typeof b === "object" && b.constructor && b.constructor.name === "ArrayBuffer" && b.byteLength >= 0;
+ isArrayBufferView = (b) => !Buffer.isBuffer(b) && ArrayBuffer.isView(b);
+ Pipe = class {
+ src;
+ dest;
+ opts;
+ ondrain;
+ constructor(src, dest, opts) {
+ this.src = src;
+ this.dest = dest;
+ this.opts = opts;
+ this.ondrain = () => src[RESUME]();
+ this.dest.on("drain", this.ondrain);
}
- close() {
- if (this.#handle) {
- this.#handle.close();
- this.#handle = void 0;
- this.emit("close");
- }
+ unpipe() {
+ this.dest.removeListener("drain", this.ondrain);
}
- reset() {
- if (!this.#sawError) {
- (0, import_assert2.default)(this.#handle, "zlib binding closed");
- return this.#handle.reset?.();
- }
+ // only here for the prototype
+ /* c8 ignore start */
+ proxyErrors(_er) {
}
- flush(flushFlag) {
- if (this.ended)
- return;
- if (typeof flushFlag !== "number")
- flushFlag = this.#fullFlushFlag;
- this.write(Object.assign(import_buffer.Buffer.alloc(0), { [_flushFlag]: flushFlag }));
+ /* c8 ignore stop */
+ end() {
+ this.unpipe();
+ if (this.opts.end)
+ this.dest.end();
}
- end(chunk, encoding, cb) {
- if (typeof chunk === "function") {
- cb = chunk;
- encoding = void 0;
- chunk = void 0;
+ };
+ PipeProxyErrors = class extends Pipe {
+ unpipe() {
+ this.src.removeListener("error", this.proxyErrors);
+ super.unpipe();
+ }
+ constructor(src, dest, opts) {
+ super(src, dest, opts);
+ this.proxyErrors = (er) => this.dest.emit("error", er);
+ src.on("error", this.proxyErrors);
+ }
+ };
+ isObjectModeOptions = (o) => !!o.objectMode;
+ isEncodingOptions = (o) => !o.objectMode && !!o.encoding && o.encoding !== "buffer";
+ Minipass = class extends import_node_events.EventEmitter {
+ [FLOWING] = false;
+ [PAUSED] = false;
+ [PIPES] = [];
+ [BUFFER] = [];
+ [OBJECTMODE];
+ [ENCODING];
+ [ASYNC];
+ [DECODER];
+ [EOF] = false;
+ [EMITTED_END] = false;
+ [EMITTING_END] = false;
+ [CLOSED] = false;
+ [EMITTED_ERROR] = null;
+ [BUFFERLENGTH] = 0;
+ [DESTROYED] = false;
+ [SIGNAL];
+ [ABORTED] = false;
+ [DATALISTENERS] = 0;
+ [DISCARDED] = false;
+ /**
+ * true if the stream can be written
+ */
+ writable = true;
+ /**
+ * true if the stream can be read
+ */
+ readable = true;
+ /**
+ * If `RType` is Buffer, then options do not need to be provided.
+ * Otherwise, an options object must be provided to specify either
+ * {@link Minipass.SharedOptions.objectMode} or
+ * {@link Minipass.SharedOptions.encoding}, as appropriate.
+ */
+ constructor(...args) {
+ const options = args[0] || {};
+ super();
+ if (options.objectMode && typeof options.encoding === "string") {
+ throw new TypeError("Encoding and objectMode may not be used together");
}
- if (typeof encoding === "function") {
- cb = encoding;
- encoding = void 0;
+ if (isObjectModeOptions(options)) {
+ this[OBJECTMODE] = true;
+ this[ENCODING] = null;
+ } else if (isEncodingOptions(options)) {
+ this[ENCODING] = options.encoding;
+ this[OBJECTMODE] = false;
+ } else {
+ this[OBJECTMODE] = false;
+ this[ENCODING] = null;
}
- if (chunk) {
- if (encoding)
- this.write(chunk, encoding);
- else
- this.write(chunk);
+ this[ASYNC] = !!options.async;
+ this[DECODER] = this[ENCODING] ? new import_node_string_decoder.StringDecoder(this[ENCODING]) : null;
+ if (options && options.debugExposeBuffer === true) {
+ Object.defineProperty(this, "buffer", { get: () => this[BUFFER] });
}
- this.flush(this.#finishFlushFlag);
- this.#ended = true;
- return super.end(cb);
- }
- get ended() {
- return this.#ended;
- }
- // overridden in the gzip classes to do portable writes
- [_superWrite](data) {
- return super.write(data);
- }
- write(chunk, encoding, cb) {
- if (typeof encoding === "function")
- cb = encoding, encoding = "utf8";
- if (typeof chunk === "string")
- chunk = import_buffer.Buffer.from(chunk, encoding);
- if (this.#sawError)
- return;
- (0, import_assert2.default)(this.#handle, "zlib binding closed");
- const nativeHandle = this.#handle._handle;
- const originalNativeClose = nativeHandle.close;
- nativeHandle.close = () => {
- };
- const originalClose = this.#handle.close;
- this.#handle.close = () => {
- };
- passthroughBufferConcat(true);
- let result = void 0;
- try {
- const flushFlag = typeof chunk[_flushFlag] === "number" ? chunk[_flushFlag] : this.#flushFlag;
- result = this.#handle._processChunk(chunk, flushFlag);
- passthroughBufferConcat(false);
- } catch (err) {
- passthroughBufferConcat(false);
- this.#onError(new ZlibError(err, this.write));
- } finally {
- if (this.#handle) {
- ;
- this.#handle._handle = nativeHandle;
- nativeHandle.close = originalNativeClose;
- this.#handle.close = originalClose;
- this.#handle.removeAllListeners("error");
- }
+ if (options && options.debugExposePipes === true) {
+ Object.defineProperty(this, "pipes", { get: () => this[PIPES] });
}
- if (this.#handle)
- this.#handle.on("error", (er) => this.#onError(new ZlibError(er, this.write)));
- let writeReturn;
- if (result) {
- if (Array.isArray(result) && result.length > 0) {
- const r = result[0];
- writeReturn = this[_superWrite](import_buffer.Buffer.from(r));
- for (let i = 1; i < result.length; i++) {
- writeReturn = this[_superWrite](result[i]);
- }
+ const { signal } = options;
+ if (signal) {
+ this[SIGNAL] = signal;
+ if (signal.aborted) {
+ this[ABORT]();
} else {
- writeReturn = this[_superWrite](import_buffer.Buffer.from(result));
- }
- }
- if (cb)
- cb();
- return writeReturn;
- }
- };
- Zlib = class extends ZlibBase {
- #level;
- #strategy;
- constructor(opts, mode) {
- opts = opts || {};
- opts.flush = opts.flush || constants.Z_NO_FLUSH;
- opts.finishFlush = opts.finishFlush || constants.Z_FINISH;
- opts.fullFlushFlag = constants.Z_FULL_FLUSH;
- super(opts, mode);
- this.#level = opts.level;
- this.#strategy = opts.strategy;
- }
- params(level, strategy) {
- if (this.sawError)
- return;
- if (!this.handle)
- throw new Error("cannot switch params when binding is closed");
- if (!this.handle.params)
- throw new Error("not supported in this implementation");
- if (this.#level !== level || this.#strategy !== strategy) {
- this.flush(constants.Z_SYNC_FLUSH);
- (0, import_assert2.default)(this.handle, "zlib binding closed");
- const origFlush = this.handle.flush;
- this.handle.flush = (flushFlag, cb) => {
- if (typeof flushFlag === "function") {
- cb = flushFlag;
- flushFlag = this.flushFlag;
- }
- this.flush(flushFlag);
- cb?.();
- };
- try {
- ;
- this.handle.params(level, strategy);
- } finally {
- this.handle.flush = origFlush;
- }
- if (this.handle) {
- this.#level = level;
- this.#strategy = strategy;
+ signal.addEventListener("abort", () => this[ABORT]());
}
}
}
- };
- Gzip = class extends Zlib {
- #portable;
- constructor(opts) {
- super(opts, "Gzip");
- this.#portable = opts && !!opts.portable;
- }
- [_superWrite](data) {
- if (!this.#portable)
- return super[_superWrite](data);
- this.#portable = false;
- data[9] = 255;
- return super[_superWrite](data);
- }
- };
- Unzip = class extends Zlib {
- constructor(opts) {
- super(opts, "Unzip");
- }
- };
- Brotli = class extends ZlibBase {
- constructor(opts, mode) {
- opts = opts || {};
- opts.flush = opts.flush || constants.BROTLI_OPERATION_PROCESS;
- opts.finishFlush = opts.finishFlush || constants.BROTLI_OPERATION_FINISH;
- opts.fullFlushFlag = constants.BROTLI_OPERATION_FLUSH;
- super(opts, mode);
+ /**
+ * The amount of data stored in the buffer waiting to be read.
+ *
+ * For Buffer strings, this will be the total byte length.
+ * For string encoding streams, this will be the string character length,
+ * according to JavaScript's `string.length` logic.
+ * For objectMode streams, this is a count of the items waiting to be
+ * emitted.
+ */
+ get bufferLength() {
+ return this[BUFFERLENGTH];
}
- };
- BrotliCompress = class extends Brotli {
- constructor(opts) {
- super(opts, "BrotliCompress");
+ /**
+ * The `BufferEncoding` currently in use, or `null`
+ */
+ get encoding() {
+ return this[ENCODING];
}
- };
- BrotliDecompress = class extends Brotli {
- constructor(opts) {
- super(opts, "BrotliDecompress");
+ /**
+ * @deprecated - This is a read only property
+ */
+ set encoding(_enc) {
+ throw new Error("Encoding must be set at instantiation time");
}
- };
- Zstd = class extends ZlibBase {
- constructor(opts, mode) {
- opts = opts || {};
- opts.flush = opts.flush || constants.ZSTD_e_continue;
- opts.finishFlush = opts.finishFlush || constants.ZSTD_e_end;
- opts.fullFlushFlag = constants.ZSTD_e_flush;
- super(opts, mode);
+ /**
+ * @deprecated - Encoding may only be set at instantiation time
+ */
+ setEncoding(_enc) {
+ throw new Error("Encoding must be set at instantiation time");
}
- };
- ZstdCompress = class extends Zstd {
- constructor(opts) {
- super(opts, "ZstdCompress");
+ /**
+ * True if this is an objectMode stream
+ */
+ get objectMode() {
+ return this[OBJECTMODE];
}
- };
- ZstdDecompress = class extends Zstd {
- constructor(opts) {
- super(opts, "ZstdDecompress");
+ /**
+ * @deprecated - This is a read-only property
+ */
+ set objectMode(_om) {
+ throw new Error("objectMode must be set at instantiation time");
}
- };
- }
-});
-
-// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/large-numbers.js
-var encode, encodePositive, encodeNegative, parse, twos, pos, onesComp, twosComp;
-var init_large_numbers = __esm({
- ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/large-numbers.js"() {
- encode = (num, buf) => {
- if (!Number.isSafeInteger(num)) {
- throw Error("cannot encode number outside of javascript safe integer range");
- } else if (num < 0) {
- encodeNegative(num, buf);
- } else {
- encodePositive(num, buf);
+ /**
+ * true if this is an async stream
+ */
+ get ["async"]() {
+ return this[ASYNC];
}
- return buf;
- };
- encodePositive = (num, buf) => {
- buf[0] = 128;
- for (var i = buf.length; i > 1; i--) {
- buf[i - 1] = num & 255;
- num = Math.floor(num / 256);
+ /**
+ * Set to true to make this stream async.
+ *
+ * Once set, it cannot be unset, as this would potentially cause incorrect
+ * behavior. Ie, a sync stream can be made async, but an async stream
+ * cannot be safely made sync.
+ */
+ set ["async"](a) {
+ this[ASYNC] = this[ASYNC] || !!a;
}
- };
- encodeNegative = (num, buf) => {
- buf[0] = 255;
- var flipped = false;
- num = num * -1;
- for (var i = buf.length; i > 1; i--) {
- var byte = num & 255;
- num = Math.floor(num / 256);
- if (flipped) {
- buf[i - 1] = onesComp(byte);
- } else if (byte === 0) {
- buf[i - 1] = 0;
- } else {
- flipped = true;
- buf[i - 1] = twosComp(byte);
- }
+ // drop everything and get out of the flow completely
+ [ABORT]() {
+ this[ABORTED] = true;
+ this.emit("abort", this[SIGNAL]?.reason);
+ this.destroy(this[SIGNAL]?.reason);
}
- };
- parse = (buf) => {
- const pre = buf[0];
- const value = pre === 128 ? pos(buf.subarray(1, buf.length)) : pre === 255 ? twos(buf) : null;
- if (value === null) {
- throw Error("invalid base256 encoding");
+ /**
+ * True if the stream has been aborted.
+ */
+ get aborted() {
+ return this[ABORTED];
}
- if (!Number.isSafeInteger(value)) {
- throw Error("parsed number outside of javascript safe integer range");
+ /**
+ * No-op setter. Stream aborted status is set via the AbortSignal provided
+ * in the constructor options.
+ */
+ set aborted(_) {
}
- return value;
- };
- twos = (buf) => {
- var len = buf.length;
- var sum = 0;
- var flipped = false;
- for (var i = len - 1; i > -1; i--) {
- var byte = Number(buf[i]);
- var f;
- if (flipped) {
- f = onesComp(byte);
- } else if (byte === 0) {
- f = byte;
- } else {
- flipped = true;
- f = twosComp(byte);
- }
- if (f !== 0) {
- sum -= f * Math.pow(256, len - i - 1);
+ 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;
}
- }
- return sum;
- };
- pos = (buf) => {
- var len = buf.length;
- var sum = 0;
- for (var i = len - 1; i > -1; i--) {
- var byte = Number(buf[i]);
- if (byte !== 0) {
- sum += byte * Math.pow(256, len - i - 1);
+ if (typeof encoding === "function") {
+ cb = encoding;
+ encoding = "utf8";
}
- }
- return sum;
- };
- onesComp = (byte) => (255 ^ byte) & 255;
- twosComp = (byte) => (255 ^ byte) + 1 & 255;
- }
-});
-
-// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/types.js
-var isCode, name, code;
-var init_types = __esm({
- ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/types.js"() {
- isCode = (c) => name.has(c);
- name = /* @__PURE__ */ new Map([
- ["0", "File"],
- // same as File
- ["", "OldFile"],
- ["1", "Link"],
- ["2", "SymbolicLink"],
- // Devices and FIFOs aren't fully supported
- // they are parsed, but skipped when unpacking
- ["3", "CharacterDevice"],
- ["4", "BlockDevice"],
- ["5", "Directory"],
- ["6", "FIFO"],
- // same as File
- ["7", "ContiguousFile"],
- // pax headers
- ["g", "GlobalExtendedHeader"],
- ["x", "ExtendedHeader"],
- // vendor-specific stuff
- // skip
- ["A", "SolarisACL"],
- // like 5, but with data, which should be skipped
- ["D", "GNUDumpDir"],
- // metadata only, skip
- ["I", "Inode"],
- // data = link path of next file
- ["K", "NextFileHasLongLinkpath"],
- // data = path of next file
- ["L", "NextFileHasLongPath"],
- // skip
- ["M", "ContinuationFile"],
- // like L
- ["N", "OldGnuLongPath"],
- // skip
- ["S", "SparseFile"],
- // skip
- ["V", "TapeVolumeHeader"],
- // like x
- ["X", "OldExtendedHeader"]
- ]);
- code = new Map(Array.from(name).map((kv) => [kv[1], kv[0]]));
- }
-});
-
-// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/header.js
-var import_node_path, Header, splitPrefix, decString, decDate, numToDate, decNumber, nanUndef, decSmallNumber, MAXNUM, encNumber, encSmallNumber, octalString, padOctal, encDate, NULLS, encString;
-var init_header = __esm({
- ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/header.js"() {
- import_node_path = require("node:path");
- init_large_numbers();
- init_types();
- Header = class {
- cksumValid = false;
- needPax = false;
- nullBlock = false;
- block;
- path;
- mode;
- uid;
- gid;
- size;
- cksum;
- #type = "Unsupported";
- linkpath;
- uname;
- gname;
- devmaj = 0;
- devmin = 0;
- atime;
- ctime;
- mtime;
- charset;
- comment;
- constructor(data, off = 0, ex, gex) {
- if (Buffer.isBuffer(data)) {
- this.decode(data, off || 0, ex, gex);
- } else if (data) {
- this.#slurp(data);
+ if (!encoding)
+ encoding = "utf8";
+ const fn2 = this[ASYNC] ? defer : nodefer;
+ if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) {
+ if (isArrayBufferView(chunk)) {
+ chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength);
+ } else if (isArrayBufferLike(chunk)) {
+ chunk = Buffer.from(chunk);
+ } else if (typeof chunk !== "string") {
+ throw new Error("Non-contiguous data written to non-objectMode stream");
+ }
}
- }
- decode(buf, off, ex, gex) {
- if (!off) {
- off = 0;
+ if (this[OBJECTMODE]) {
+ 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)
+ fn2(cb);
+ return this[FLOWING];
}
- if (!buf || !(buf.length >= off + 512)) {
- throw new Error("need 512 bytes for header");
+ if (!chunk.length) {
+ if (this[BUFFERLENGTH] !== 0)
+ this.emit("readable");
+ if (cb)
+ fn2(cb);
+ return this[FLOWING];
}
- this.path = ex?.path ?? decString(buf, off, 100);
- this.mode = ex?.mode ?? gex?.mode ?? decNumber(buf, off + 100, 8);
- this.uid = ex?.uid ?? gex?.uid ?? decNumber(buf, off + 108, 8);
- this.gid = ex?.gid ?? gex?.gid ?? decNumber(buf, off + 116, 8);
- this.size = ex?.size ?? gex?.size ?? decNumber(buf, off + 124, 12);
- this.mtime = ex?.mtime ?? gex?.mtime ?? decDate(buf, off + 136, 12);
- this.cksum = decNumber(buf, off + 148, 12);
- if (gex)
- this.#slurp(gex, true);
- if (ex)
- this.#slurp(ex);
- const t = decString(buf, off + 156, 1);
- if (isCode(t)) {
- this.#type = t || "0";
+ 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 (this.#type === "0" && this.path.slice(-1) === "/") {
- this.#type = "5";
+ if (Buffer.isBuffer(chunk) && this[ENCODING]) {
+ chunk = this[DECODER].write(chunk);
}
- if (this.#type === "5") {
- this.size = 0;
+ 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)
+ fn2(cb);
+ return this[FLOWING];
+ }
+ /**
+ * Low-level explicit read method.
+ *
+ * In objectMode, the argument is ignored, and one item is returned if
+ * available.
+ *
+ * `n` is the number of bytes (or in the case of encoding streams,
+ * characters) to consume. If `n` is not provided, then the entire buffer
+ * is returned, or `null` is returned if no data is available.
+ *
+ * If `n` is greater that the amount of data in the internal buffer,
+ * then `null` is returned.
+ */
+ read(n) {
+ if (this[DESTROYED])
+ return null;
+ this[DISCARDED] = false;
+ if (this[BUFFERLENGTH] === 0 || n === 0 || n && n > this[BUFFERLENGTH]) {
+ this[MAYBE_EMIT_END]();
+ return null;
}
- this.linkpath = decString(buf, off + 157, 100);
- if (buf.subarray(off + 257, off + 265).toString() === "ustar\x0000") {
- this.uname = ex?.uname ?? gex?.uname ?? decString(buf, off + 265, 32);
- this.gname = ex?.gname ?? gex?.gname ?? decString(buf, off + 297, 32);
- this.devmaj = ex?.devmaj ?? gex?.devmaj ?? decNumber(buf, off + 329, 8) ?? 0;
- this.devmin = ex?.devmin ?? gex?.devmin ?? decNumber(buf, off + 337, 8) ?? 0;
- if (buf[off + 475] !== 0) {
- const prefix = decString(buf, off + 345, 155);
- this.path = prefix + "/" + this.path;
+ if (this[OBJECTMODE])
+ n = null;
+ if (this[BUFFER].length > 1 && !this[OBJECTMODE]) {
+ this[BUFFER] = [
+ this[ENCODING] ? this[BUFFER].join("") : 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 (this[OBJECTMODE])
+ this[BUFFERSHIFT]();
+ else {
+ const c = chunk;
+ if (n === c.length || n === null)
+ this[BUFFERSHIFT]();
+ else if (typeof c === "string") {
+ this[BUFFER][0] = c.slice(n);
+ chunk = c.slice(0, n);
+ this[BUFFERLENGTH] -= n;
} else {
- const prefix = decString(buf, off + 345, 130);
- if (prefix) {
- this.path = prefix + "/" + this.path;
- }
- this.atime = ex?.atime ?? gex?.atime ?? decDate(buf, off + 476, 12);
- this.ctime = ex?.ctime ?? gex?.ctime ?? decDate(buf, off + 488, 12);
+ this[BUFFER][0] = c.subarray(n);
+ chunk = c.subarray(0, n);
+ this[BUFFERLENGTH] -= n;
}
}
- let sum = 8 * 32;
- for (let i = off; i < off + 148; i++) {
- sum += buf[i];
+ 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 = void 0;
}
- for (let i = off + 156; i < off + 512; i++) {
- sum += buf[i];
+ if (typeof encoding === "function") {
+ cb = encoding;
+ encoding = "utf8";
}
- this.cksumValid = sum === this.cksum;
- if (this.cksum === void 0 && sum === 8 * 32) {
- this.nullBlock = true;
+ if (chunk !== void 0)
+ this.write(chunk, encoding);
+ if (cb)
+ this.once("end", cb);
+ this[EOF] = true;
+ this.writable = false;
+ if (this[FLOWING] || !this[PAUSED])
+ this[MAYBE_EMIT_END]();
+ return this;
+ }
+ // don't let the internal resume be overwritten
+ [RESUME]() {
+ if (this[DESTROYED])
+ return;
+ if (!this[DATALISTENERS] && !this[PIPES].length) {
+ this[DISCARDED] = true;
}
+ 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");
}
- #slurp(ex, gex = false) {
- Object.assign(this, Object.fromEntries(Object.entries(ex).filter(([k, v]) => {
- return !(v === null || v === void 0 || k === "path" && gex || k === "linkpath" && gex || k === "global");
- })));
+ /**
+ * Resume the stream if it is currently in a paused state
+ *
+ * If called when there are no pipe destinations or `data` event listeners,
+ * this will place the stream in a "discarded" state, where all data will
+ * be thrown away. The discarded state is removed if a pipe destination or
+ * data handler is added, if pause() is called, or if any synchronous or
+ * asynchronous iteration is started.
+ */
+ resume() {
+ return this[RESUME]();
}
- encode(buf, off = 0) {
- if (!buf) {
- buf = this.block = Buffer.alloc(512);
- }
- if (this.#type === "Unsupported") {
- this.#type = "0";
- }
- if (!(buf.length >= off + 512)) {
- throw new Error("need 512 bytes for header");
- }
- const prefixSize = this.ctime || this.atime ? 130 : 155;
- const split = splitPrefix(this.path || "", prefixSize);
- const path16 = split[0];
- const prefix = split[1];
- this.needPax = !!split[2];
- this.needPax = encString(buf, off, 100, path16) || this.needPax;
- this.needPax = encNumber(buf, off + 100, 8, this.mode) || this.needPax;
- this.needPax = encNumber(buf, off + 108, 8, this.uid) || this.needPax;
- this.needPax = encNumber(buf, off + 116, 8, this.gid) || this.needPax;
- this.needPax = encNumber(buf, off + 124, 12, this.size) || this.needPax;
- this.needPax = encDate(buf, off + 136, 12, this.mtime) || this.needPax;
- buf[off + 156] = this.#type.charCodeAt(0);
- this.needPax = encString(buf, off + 157, 100, this.linkpath) || this.needPax;
- buf.write("ustar\x0000", off + 257, 8);
- this.needPax = encString(buf, off + 265, 32, this.uname) || this.needPax;
- this.needPax = encString(buf, off + 297, 32, this.gname) || this.needPax;
- this.needPax = encNumber(buf, off + 329, 8, this.devmaj) || this.needPax;
- this.needPax = encNumber(buf, off + 337, 8, this.devmin) || this.needPax;
- this.needPax = encString(buf, off + 345, prefixSize, prefix) || this.needPax;
- if (buf[off + 475] !== 0) {
- this.needPax = encString(buf, off + 345, 155, prefix) || this.needPax;
+ /**
+ * Pause the stream
+ */
+ pause() {
+ this[FLOWING] = false;
+ this[PAUSED] = true;
+ this[DISCARDED] = false;
+ }
+ /**
+ * true if the stream has been forcibly destroyed
+ */
+ get destroyed() {
+ return this[DESTROYED];
+ }
+ /**
+ * true if the stream is currently in a flowing state, meaning that
+ * any writes will be immediately emitted.
+ */
+ get flowing() {
+ return this[FLOWING];
+ }
+ /**
+ * true if the stream is currently in a paused state
+ */
+ 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 = false) {
+ 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 all data emitted by this stream into the destination provided.
+ *
+ * Triggers the flow of data.
+ */
+ pipe(dest, opts) {
+ if (this[DESTROYED])
+ return dest;
+ this[DISCARDED] = false;
+ 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;
+ if (ended) {
+ if (opts.end)
+ dest.end();
} else {
- this.needPax = encString(buf, off + 345, 130, prefix) || this.needPax;
- this.needPax = encDate(buf, off + 476, 12, this.atime) || this.needPax;
- this.needPax = encDate(buf, off + 488, 12, this.ctime) || this.needPax;
- }
- let sum = 8 * 32;
- for (let i = off; i < off + 148; i++) {
- sum += buf[i];
+ this[PIPES].push(!opts.proxyErrors ? new Pipe(this, dest, opts) : new PipeProxyErrors(this, dest, opts));
+ if (this[ASYNC])
+ defer(() => this[RESUME]());
+ else
+ this[RESUME]();
}
- for (let i = off + 156; i < off + 512; i++) {
- sum += buf[i];
+ return dest;
+ }
+ /**
+ * Fully unhook a piped destination stream.
+ *
+ * If the destination stream was the only consumer of this stream (ie,
+ * there are no other piped destinations or `'data'` event listeners)
+ * then the flow of data will stop until there is another consumer or
+ * {@link Minipass#resume} is explicitly called.
+ */
+ unpipe(dest) {
+ const p = this[PIPES].find((p2) => p2.dest === dest);
+ if (p) {
+ if (this[PIPES].length === 1) {
+ if (this[FLOWING] && this[DATALISTENERS] === 0) {
+ this[FLOWING] = false;
+ }
+ this[PIPES] = [];
+ } else
+ this[PIPES].splice(this[PIPES].indexOf(p), 1);
+ p.unpipe();
}
- this.cksum = sum;
- encNumber(buf, off + 148, 8, this.cksum);
- this.cksumValid = true;
- return this.needPax;
}
- get type() {
- return this.#type === "Unsupported" ? this.#type : name.get(this.#type);
+ /**
+ * Alias for {@link Minipass#on}
+ */
+ addListener(ev, handler) {
+ return this.on(ev, handler);
}
- get typeKey() {
- return this.#type;
+ /**
+ * Mostly identical to `EventEmitter.on`, with the following
+ * behavior differences to prevent data loss and unnecessary hangs:
+ *
+ * - Adding a 'data' event handler will trigger the flow of data
+ *
+ * - Adding a 'readable' event handler when there is data waiting to be read
+ * will cause 'readable' to be emitted immediately.
+ *
+ * - Adding an 'endish' event handler ('end', 'finish', etc.) which has
+ * already passed will cause the event to be emitted immediately and all
+ * handlers removed.
+ *
+ * - Adding an 'error' event handler after an error has been emitted will
+ * cause the event to be re-emitted immediately with the error previously
+ * raised.
+ */
+ on(ev, handler) {
+ const ret = super.on(ev, handler);
+ if (ev === "data") {
+ this[DISCARDED] = false;
+ this[DATALISTENERS]++;
+ if (!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]) {
+ const h = handler;
+ if (this[ASYNC])
+ defer(() => h.call(this, this[EMITTED_ERROR]));
+ else
+ h.call(this, this[EMITTED_ERROR]);
+ }
+ return ret;
}
- set type(type) {
- const c = String(code.get(type));
- if (isCode(c) || c === "Unsupported") {
- this.#type = c;
- } else if (isCode(type)) {
- this.#type = type;
- } else {
- throw new TypeError("invalid entry type: " + type);
+ /**
+ * Alias for {@link Minipass#off}
+ */
+ removeListener(ev, handler) {
+ return this.off(ev, handler);
+ }
+ /**
+ * Mostly identical to `EventEmitter.off`
+ *
+ * If a 'data' event handler is removed, and it was the last consumer
+ * (ie, there are no pipe destinations or other 'data' event listeners),
+ * then the flow of data will stop until there is another consumer or
+ * {@link Minipass#resume} is explicitly called.
+ */
+ off(ev, handler) {
+ const ret = super.off(ev, handler);
+ if (ev === "data") {
+ this[DATALISTENERS] = this.listeners("data").length;
+ if (this[DATALISTENERS] === 0 && !this[DISCARDED] && !this[PIPES].length) {
+ this[FLOWING] = false;
+ }
}
+ return ret;
}
- };
- splitPrefix = (p, prefixSize) => {
- const pathSize = 100;
- let pp = p;
- let prefix = "";
- let ret = void 0;
- const root = import_node_path.posix.parse(p).root || ".";
- if (Buffer.byteLength(pp) < pathSize) {
- ret = [pp, prefix, false];
- } else {
- prefix = import_node_path.posix.dirname(pp);
- pp = import_node_path.posix.basename(pp);
- do {
- if (Buffer.byteLength(pp) <= pathSize && Buffer.byteLength(prefix) <= prefixSize) {
- ret = [pp, prefix, false];
- } else if (Buffer.byteLength(pp) > pathSize && Buffer.byteLength(prefix) <= prefixSize) {
- ret = [pp.slice(0, pathSize - 1), prefix, true];
- } else {
- pp = import_node_path.posix.join(import_node_path.posix.basename(prefix), pp);
- prefix = import_node_path.posix.dirname(prefix);
+ /**
+ * Mostly identical to `EventEmitter.removeAllListeners`
+ *
+ * If all 'data' event handlers are removed, and they were the last consumer
+ * (ie, there are no pipe destinations), then the flow of data will stop
+ * until there is another consumer or {@link Minipass#resume} is explicitly
+ * called.
+ */
+ removeAllListeners(ev) {
+ const ret = super.removeAllListeners(ev);
+ if (ev === "data" || ev === void 0) {
+ this[DATALISTENERS] = 0;
+ if (!this[DISCARDED] && !this[PIPES].length) {
+ this[FLOWING] = false;
}
- } while (prefix !== root && ret === void 0);
- if (!ret) {
- ret = [p.slice(0, pathSize - 1), "", true];
}
+ return ret;
}
- return ret;
- };
- decString = (buf, off, size) => buf.subarray(off, off + size).toString("utf8").replace(/\0.*/, "");
- decDate = (buf, off, size) => numToDate(decNumber(buf, off, size));
- numToDate = (num) => num === void 0 ? void 0 : new Date(num * 1e3);
- decNumber = (buf, off, size) => Number(buf[off]) & 128 ? parse(buf.subarray(off, off + size)) : decSmallNumber(buf, off, size);
- nanUndef = (value) => isNaN(value) ? void 0 : value;
- decSmallNumber = (buf, off, size) => nanUndef(parseInt(buf.subarray(off, off + size).toString("utf8").replace(/\0.*$/, "").trim(), 8));
- MAXNUM = {
- 12: 8589934591,
- 8: 2097151
- };
- encNumber = (buf, off, size, num) => num === void 0 ? false : num > MAXNUM[size] || num < 0 ? (encode(num, buf.subarray(off, off + size)), true) : (encSmallNumber(buf, off, size, num), false);
- encSmallNumber = (buf, off, size, num) => buf.write(octalString(num, size), off, size, "ascii");
- octalString = (num, size) => padOctal(Math.floor(num).toString(8), size);
- padOctal = (str, size) => (str.length === size - 1 ? str : new Array(size - str.length - 1).join("0") + str + " ") + "\0";
- encDate = (buf, off, size, date) => date === void 0 ? false : encNumber(buf, off, size, date.getTime() / 1e3);
- NULLS = new Array(156).join("\0");
- encString = (buf, off, size, str) => str === void 0 ? false : (buf.write(str + NULLS, off, size, "utf8"), str.length !== Buffer.byteLength(str) || str.length > size);
- }
-});
-
-// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/pax.js
-var import_node_path2, Pax, merge, parseKV, parseKVLine;
-var init_pax = __esm({
- ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/pax.js"() {
- import_node_path2 = require("node:path");
- init_header();
- Pax = class _Pax {
- atime;
- mtime;
- ctime;
- charset;
- comment;
- gid;
- uid;
- gname;
- uname;
- linkpath;
- dev;
- ino;
- nlink;
- path;
- size;
- mode;
- global;
- constructor(obj, global2 = false) {
- this.atime = obj.atime;
- this.charset = obj.charset;
- this.comment = obj.comment;
- this.ctime = obj.ctime;
- this.dev = obj.dev;
- this.gid = obj.gid;
- this.global = global2;
- this.gname = obj.gname;
- this.ino = obj.ino;
- this.linkpath = obj.linkpath;
- this.mtime = obj.mtime;
- this.nlink = obj.nlink;
- this.path = obj.path;
- this.size = obj.size;
- this.uid = obj.uid;
- this.uname = obj.uname;
+ /**
+ * true if the 'end' event has been emitted
+ */
+ 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;
+ }
+ }
+ /**
+ * Mostly identical to `EventEmitter.emit`, with the following
+ * behavior differences to prevent data loss and unnecessary hangs:
+ *
+ * If the stream has been destroyed, and the event is something other
+ * than 'close' or 'error', then `false` is returned and no handlers
+ * are called.
+ *
+ * If the event is 'end', and has already been emitted, then the event
+ * is ignored. If the stream is in a paused or non-flowing state, then
+ * the event will be deferred until data flow resumes. If the stream is
+ * async, then handlers will be called on the next tick rather than
+ * immediately.
+ *
+ * If the event is 'close', and 'end' has not yet been emitted, then
+ * the event will be deferred until after 'end' is emitted.
+ *
+ * If the event is 'error', and an AbortSignal was provided for the stream,
+ * and there are no listeners, then the event is ignored, matching the
+ * behavior of node core streams in the presense of an AbortSignal.
+ *
+ * If the event is 'finish' or 'prefinish', then all listeners will be
+ * removed after emitting the event, to prevent double-firing.
+ */
+ emit(ev, ...args) {
+ const data = args[0];
+ if (ev !== "error" && ev !== "close" && ev !== DESTROYED && this[DESTROYED]) {
+ return false;
+ } else if (ev === "data") {
+ return !this[OBJECTMODE] && !data ? false : this[ASYNC] ? (defer(() => this[EMITDATA](data)), true) : this[EMITDATA](data);
+ } else if (ev === "end") {
+ return this[EMITEND]();
+ } else if (ev === "close") {
+ this[CLOSED] = true;
+ if (!this[EMITTED_END] && !this[DESTROYED])
+ return false;
+ const ret2 = super.emit("close");
+ this.removeAllListeners("close");
+ return ret2;
+ } else if (ev === "error") {
+ this[EMITTED_ERROR] = data;
+ super.emit(ERROR, data);
+ const ret2 = !this[SIGNAL] || this.listeners("error").length ? super.emit("error", data) : false;
+ this[MAYBE_EMIT_END]();
+ return ret2;
+ } else if (ev === "resume") {
+ const ret2 = super.emit("resume");
+ this[MAYBE_EMIT_END]();
+ return ret2;
+ } else if (ev === "finish" || ev === "prefinish") {
+ const ret2 = super.emit(ev);
+ this.removeAllListeners(ev);
+ return ret2;
+ }
+ const ret = super.emit(ev, ...args);
+ this[MAYBE_EMIT_END]();
+ return ret;
}
- encode() {
- const body = this.encodeBody();
- if (body === "") {
- return Buffer.allocUnsafe(0);
+ [EMITDATA](data) {
+ for (const p of this[PIPES]) {
+ if (p.dest.write(data) === false)
+ this.pause();
}
- const bodyLen = Buffer.byteLength(body);
- const bufLen = 512 * Math.ceil(1 + bodyLen / 512);
- const buf = Buffer.allocUnsafe(bufLen);
- for (let i = 0; i < 512; i++) {
- buf[i] = 0;
+ const ret = this[DISCARDED] ? false : super.emit("data", data);
+ this[MAYBE_EMIT_END]();
+ return ret;
+ }
+ [EMITEND]() {
+ if (this[EMITTED_END])
+ return false;
+ this[EMITTED_END] = true;
+ this.readable = false;
+ return this[ASYNC] ? (defer(() => this[EMITEND2]()), true) : this[EMITEND2]();
+ }
+ [EMITEND2]() {
+ if (this[DECODER]) {
+ const data = this[DECODER].end();
+ if (data) {
+ for (const p of this[PIPES]) {
+ p.dest.write(data);
+ }
+ if (!this[DISCARDED])
+ super.emit("data", data);
+ }
}
- new Header({
- // XXX split the path
- // then the path should be PaxHeader + basename, but less than 99,
- // prepend with the dirname
- /* c8 ignore start */
- path: ("PaxHeader/" + (0, import_node_path2.basename)(this.path ?? "")).slice(0, 99),
- /* c8 ignore stop */
- mode: this.mode || 420,
- uid: this.uid,
- gid: this.gid,
- size: bodyLen,
- mtime: this.mtime,
- type: this.global ? "GlobalExtendedHeader" : "ExtendedHeader",
- linkpath: "",
- uname: this.uname || "",
- gname: this.gname || "",
- devmaj: 0,
- devmin: 0,
- atime: this.atime,
- ctime: this.ctime
- }).encode(buf);
- buf.write(body, 512, bodyLen, "utf8");
- for (let i = bodyLen + 512; i < buf.length; i++) {
- buf[i] = 0;
+ for (const p of this[PIPES]) {
+ p.end();
}
- return buf;
+ const ret = super.emit("end");
+ this.removeAllListeners("end");
+ return ret;
}
- encodeBody() {
- return this.encodeField("path") + this.encodeField("ctime") + this.encodeField("atime") + this.encodeField("dev") + this.encodeField("ino") + this.encodeField("nlink") + this.encodeField("charset") + this.encodeField("comment") + this.encodeField("gid") + this.encodeField("gname") + this.encodeField("linkpath") + this.encodeField("mtime") + this.encodeField("size") + this.encodeField("uid") + this.encodeField("uname");
+ /**
+ * Return a Promise that resolves to an array of all emitted data once
+ * the stream ends.
+ */
+ async collect() {
+ const buf = Object.assign([], {
+ dataLength: 0
+ });
+ if (!this[OBJECTMODE])
+ buf.dataLength = 0;
+ const p = this.promise();
+ this.on("data", (c) => {
+ buf.push(c);
+ if (!this[OBJECTMODE])
+ buf.dataLength += c.length;
+ });
+ await p;
+ return buf;
}
- encodeField(field) {
- if (this[field] === void 0) {
- return "";
- }
- const r = this[field];
- const v = r instanceof Date ? r.getTime() / 1e3 : r;
- const s = " " + (field === "dev" || field === "ino" || field === "nlink" ? "SCHILY." : "") + field + "=" + v + "\n";
- const byteLen = Buffer.byteLength(s);
- let digits = Math.floor(Math.log(byteLen) / Math.log(10)) + 1;
- if (byteLen + digits >= Math.pow(10, digits)) {
- digits += 1;
+ /**
+ * Return a Promise that resolves to the concatenation of all emitted data
+ * once the stream ends.
+ *
+ * Not allowed on objectMode streams.
+ */
+ async concat() {
+ if (this[OBJECTMODE]) {
+ throw new Error("cannot concat in objectMode");
}
- const len = digits + byteLen;
- return len + s;
+ const buf = await this.collect();
+ return this[ENCODING] ? buf.join("") : Buffer.concat(buf, buf.dataLength);
}
- static parse(str, ex, g = false) {
- return new _Pax(merge(parseKV(str), ex), g);
+ /**
+ * Return a void Promise that resolves once the stream ends.
+ */
+ async promise() {
+ return new Promise((resolve, reject) => {
+ this.on(DESTROYED, () => reject(new Error("stream destroyed")));
+ this.on("error", (er) => reject(er));
+ this.on("end", () => resolve());
+ });
+ }
+ /**
+ * Asynchronous `for await of` iteration.
+ *
+ * This will continue emitting all chunks until the stream terminates.
+ */
+ [Symbol.asyncIterator]() {
+ this[DISCARDED] = false;
+ let stopped = false;
+ const stop = async () => {
+ this.pause();
+ stopped = true;
+ return { value: void 0, 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;
+ let reject;
+ const onerr = (er) => {
+ this.off("data", ondata);
+ this.off("end", onend);
+ this.off(DESTROYED, ondestroy);
+ stop();
+ reject(er);
+ };
+ const ondata = (value) => {
+ this.off("error", onerr);
+ this.off("end", onend);
+ this.off(DESTROYED, ondestroy);
+ this.pause();
+ resolve({ value, done: !!this[EOF] });
+ };
+ const onend = () => {
+ this.off("error", onerr);
+ this.off("data", ondata);
+ this.off(DESTROYED, ondestroy);
+ stop();
+ resolve({ done: true, value: void 0 });
+ };
+ const ondestroy = () => onerr(new Error("stream destroyed"));
+ return new Promise((res2, rej) => {
+ reject = rej;
+ resolve = res2;
+ this.once(DESTROYED, ondestroy);
+ this.once("error", onerr);
+ this.once("end", onend);
+ this.once("data", ondata);
+ });
+ };
+ return {
+ next,
+ throw: stop,
+ return: stop,
+ [Symbol.asyncIterator]() {
+ return this;
+ },
+ [Symbol.asyncDispose]: async () => {
+ }
+ };
+ }
+ /**
+ * Synchronous `for of` iteration.
+ *
+ * The iteration will terminate when the internal buffer runs out, even
+ * if the stream has not yet terminated.
+ */
+ [Symbol.iterator]() {
+ this[DISCARDED] = false;
+ let stopped = false;
+ const stop = () => {
+ this.pause();
+ this.off(ERROR, stop);
+ this.off(DESTROYED, stop);
+ this.off("end", stop);
+ stopped = true;
+ return { done: true, value: void 0 };
+ };
+ const next = () => {
+ if (stopped)
+ return stop();
+ const value = this.read();
+ return value === null ? stop() : { done: false, value };
+ };
+ this.once("end", stop);
+ this.once(ERROR, stop);
+ this.once(DESTROYED, stop);
+ return {
+ next,
+ throw: stop,
+ return: stop,
+ [Symbol.iterator]() {
+ return this;
+ },
+ [Symbol.dispose]: () => {
+ }
+ };
}
- };
- merge = (a, b) => b ? Object.assign({}, b, a) : a;
- parseKV = (str) => str.replace(/\n$/, "").split("\n").reduce(parseKVLine, /* @__PURE__ */ Object.create(null));
- parseKVLine = (set, line) => {
- const n = parseInt(line, 10);
- if (n !== Buffer.byteLength(line) + 1) {
- return set;
+ /**
+ * Destroy a stream, preventing it from being used for any further purpose.
+ *
+ * If the stream has a `close()` method, then it will be called on
+ * destruction.
+ *
+ * After destruction, any attempt to write data, read data, or emit most
+ * events will be ignored.
+ *
+ * If an error argument is provided, then it will be emitted in an
+ * 'error' event.
+ */
+ destroy(er) {
+ if (this[DESTROYED]) {
+ if (er)
+ this.emit("error", er);
+ else
+ this.emit(DESTROYED);
+ return this;
+ }
+ this[DESTROYED] = true;
+ this[DISCARDED] = true;
+ this[BUFFER].length = 0;
+ this[BUFFERLENGTH] = 0;
+ const wc = this;
+ if (typeof wc.close === "function" && !this[CLOSED])
+ wc.close();
+ if (er)
+ this.emit("error", er);
+ else
+ this.emit(DESTROYED);
+ return this;
}
- line = line.slice((n + " ").length);
- const kv = line.split("=");
- const r = kv.shift();
- if (!r) {
- return set;
+ /**
+ * Alias for {@link isStream}
+ *
+ * Former export location, maintained for backwards compatibility.
+ *
+ * @deprecated
+ */
+ static get isStream() {
+ return isStream;
}
- const k = r.replace(/^SCHILY\.(dev|ino|nlink)/, "$1");
- const v = kv.join("=");
- set[k] = /^([A-Z]+\.)?([mac]|birth|creation)time$/.test(k) ? new Date(Number(v) * 1e3) : /^[0-9]+$/.test(v) ? +v : v;
- return set;
};
}
});
-// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/normalize-windows-path.js
-var platform, normalizeWindowsPath;
-var init_normalize_windows_path = __esm({
- ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/normalize-windows-path.js"() {
- platform = process.env.TESTING_TAR_FAKE_PLATFORM || process.platform;
- normalizeWindowsPath = platform !== "win32" ? (p) => p : (p) => p && p.replace(/\\/g, "/");
- }
-});
-
-// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/read-entry.js
-var ReadEntry;
-var init_read_entry = __esm({
- ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/read-entry.js"() {
+// node_modules/@isaacs/fs-minipass/dist/esm/index.js
+var import_events2, import_fs2, writev, _autoClose, _close, _ended, _fd, _finished, _flags, _flush, _handleChunk, _makeBuf, _mode, _needDrain, _onerror, _onopen, _onread, _onwrite, _open, _path, _pos, _queue, _read, _readSize, _reading, _remain, _size, _write, _writing, _defaultFlag, _errored, ReadStream, ReadStreamSync, WriteStream, WriteStreamSync;
+var init_esm2 = __esm({
+ "node_modules/@isaacs/fs-minipass/dist/esm/index.js"() {
+ import_events2 = __toESM(require("events"), 1);
+ import_fs2 = __toESM(require("fs"), 1);
init_esm();
- init_normalize_windows_path();
- ReadEntry = class extends Minipass {
- extended;
- globalExtended;
- header;
- startBlockSize;
- blockRemain;
- remain;
- type;
- meta = false;
- ignore = false;
- path;
- mode;
- uid;
- gid;
- uname;
- gname;
- size = 0;
- mtime;
- atime;
- ctime;
- linkpath;
- dev;
- ino;
- nlink;
- invalid = false;
- absolute;
- unsupported = false;
- constructor(header, ex, gex) {
- super({});
- this.pause();
- this.extended = ex;
- this.globalExtended = gex;
- this.header = header;
- this.remain = header.size ?? 0;
- this.startBlockSize = 512 * Math.ceil(this.remain / 512);
- this.blockRemain = this.startBlockSize;
- this.type = header.type;
- switch (this.type) {
- case "File":
- case "OldFile":
- case "Link":
- case "SymbolicLink":
- case "CharacterDevice":
- case "BlockDevice":
- case "Directory":
- case "FIFO":
- case "ContiguousFile":
- case "GNUDumpDir":
- break;
- case "NextFileHasLongLinkpath":
- case "NextFileHasLongPath":
- case "OldGnuLongPath":
- case "GlobalExtendedHeader":
- case "ExtendedHeader":
- case "OldExtendedHeader":
- this.meta = true;
- break;
- // NOTE: gnutar and bsdtar treat unrecognized types as 'File'
- // it may be worth doing the same, but with a warning.
- default:
- this.ignore = true;
- }
- if (!header.path) {
- throw new Error("no path provided for tar.ReadEntry");
- }
- this.path = normalizeWindowsPath(header.path);
- this.mode = header.mode;
- if (this.mode) {
- this.mode = this.mode & 4095;
- }
- this.uid = header.uid;
- this.gid = header.gid;
- this.uname = header.uname;
- this.gname = header.gname;
- this.size = this.remain;
- this.mtime = header.mtime;
- this.atime = header.atime;
- this.ctime = header.ctime;
- this.linkpath = header.linkpath ? normalizeWindowsPath(header.linkpath) : void 0;
- this.uname = header.uname;
- this.gname = header.gname;
- if (ex) {
- this.#slurp(ex);
+ writev = import_fs2.default.writev;
+ _autoClose = /* @__PURE__ */ Symbol("_autoClose");
+ _close = /* @__PURE__ */ Symbol("_close");
+ _ended = /* @__PURE__ */ Symbol("_ended");
+ _fd = /* @__PURE__ */ Symbol("_fd");
+ _finished = /* @__PURE__ */ Symbol("_finished");
+ _flags = /* @__PURE__ */ Symbol("_flags");
+ _flush = /* @__PURE__ */ Symbol("_flush");
+ _handleChunk = /* @__PURE__ */ Symbol("_handleChunk");
+ _makeBuf = /* @__PURE__ */ Symbol("_makeBuf");
+ _mode = /* @__PURE__ */ Symbol("_mode");
+ _needDrain = /* @__PURE__ */ Symbol("_needDrain");
+ _onerror = /* @__PURE__ */ Symbol("_onerror");
+ _onopen = /* @__PURE__ */ Symbol("_onopen");
+ _onread = /* @__PURE__ */ Symbol("_onread");
+ _onwrite = /* @__PURE__ */ Symbol("_onwrite");
+ _open = /* @__PURE__ */ Symbol("_open");
+ _path = /* @__PURE__ */ Symbol("_path");
+ _pos = /* @__PURE__ */ Symbol("_pos");
+ _queue = /* @__PURE__ */ Symbol("_queue");
+ _read = /* @__PURE__ */ Symbol("_read");
+ _readSize = /* @__PURE__ */ Symbol("_readSize");
+ _reading = /* @__PURE__ */ Symbol("_reading");
+ _remain = /* @__PURE__ */ Symbol("_remain");
+ _size = /* @__PURE__ */ Symbol("_size");
+ _write = /* @__PURE__ */ Symbol("_write");
+ _writing = /* @__PURE__ */ Symbol("_writing");
+ _defaultFlag = /* @__PURE__ */ Symbol("_defaultFlag");
+ _errored = /* @__PURE__ */ Symbol("_errored");
+ ReadStream = class extends Minipass {
+ [_errored] = false;
+ [_fd];
+ [_path];
+ [_readSize];
+ [_reading] = false;
+ [_size];
+ [_remain];
+ [_autoClose];
+ constructor(path16, opt) {
+ opt = opt || {};
+ super(opt);
+ this.readable = true;
+ this.writable = false;
+ if (typeof path16 !== "string") {
+ throw new TypeError("path must be a string");
}
- if (gex) {
- this.#slurp(gex, true);
+ this[_errored] = false;
+ this[_fd] = typeof opt.fd === "number" ? opt.fd : void 0;
+ this[_path] = path16;
+ this[_readSize] = opt.readSize || 16 * 1024 * 1024;
+ this[_reading] = false;
+ this[_size] = typeof opt.size === "number" ? opt.size : Infinity;
+ this[_remain] = this[_size];
+ this[_autoClose] = typeof opt.autoClose === "boolean" ? opt.autoClose : true;
+ if (typeof this[_fd] === "number") {
+ this[_read]();
+ } else {
+ this[_open]();
}
}
- write(data) {
- const writeLen = data.length;
- if (writeLen > this.blockRemain) {
- throw new Error("writing more to entry than is appropriate");
- }
- const r = this.remain;
- const br = this.blockRemain;
- this.remain = Math.max(0, r - writeLen);
- this.blockRemain = Math.max(0, br - writeLen);
- if (this.ignore) {
- return true;
- }
- if (r >= writeLen) {
- return super.write(data);
- }
- return super.write(data.subarray(0, r));
+ get fd() {
+ return this[_fd];
}
- #slurp(ex, gex = false) {
- if (ex.path)
- ex.path = normalizeWindowsPath(ex.path);
- if (ex.linkpath)
- ex.linkpath = normalizeWindowsPath(ex.linkpath);
- Object.assign(this, Object.fromEntries(Object.entries(ex).filter(([k, v]) => {
- return !(v === null || v === void 0 || k === "path" && gex);
- })));
+ get path() {
+ return this[_path];
}
- };
- }
-});
-
-// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/warn-method.js
-var warnMethod;
-var init_warn_method = __esm({
- ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/warn-method.js"() {
- warnMethod = (self2, code2, message, data = {}) => {
- if (self2.file) {
- data.file = self2.file;
+ //@ts-ignore
+ write() {
+ throw new TypeError("this is a readable stream");
}
- if (self2.cwd) {
- data.cwd = self2.cwd;
+ //@ts-ignore
+ end() {
+ throw new TypeError("this is a readable stream");
}
- data.code = message instanceof Error && message.code || code2;
- data.tarCode = code2;
- if (!self2.strict && data.recoverable !== false) {
- if (message instanceof Error) {
- data = Object.assign(message, data);
- message = message.message;
- }
- self2.emit("warn", code2, message, data);
- } else if (message instanceof Error) {
- self2.emit("error", Object.assign(message, data));
- } else {
- self2.emit("error", Object.assign(new Error(`${code2}: ${message}`), data));
+ [_open]() {
+ import_fs2.default.open(this[_path], "r", (er, fd) => this[_onopen](er, fd));
+ }
+ [_onopen](er, fd) {
+ if (er) {
+ this[_onerror](er);
+ } else {
+ this[_fd] = fd;
+ this.emit("open", fd);
+ this[_read]();
+ }
}
- };
- }
-});
-
-// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/parse.js
-var import_events3, maxMetaEntrySize, gzipHeader, zstdHeader, ZIP_HEADER_LEN, STATE, WRITEENTRY, READENTRY, NEXTENTRY, PROCESSENTRY, EX, GEX, META, EMITMETA, BUFFER2, QUEUE, ENDED, EMITTEDEND, EMIT, UNZIP, CONSUMECHUNK, CONSUMECHUNKSUB, CONSUMEBODY, CONSUMEMETA, CONSUMEHEADER, CONSUMING, BUFFERCONCAT, MAYBEEND, WRITING, ABORTED2, DONE, SAW_VALID_ENTRY, SAW_NULL_BLOCK, SAW_EOF, CLOSESTREAM, noop2, Parser;
-var init_parse = __esm({
- ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/parse.js"() {
- import_events3 = require("events");
- init_esm3();
- init_header();
- init_pax();
- init_read_entry();
- init_warn_method();
- maxMetaEntrySize = 1024 * 1024;
- gzipHeader = Buffer.from([31, 139]);
- zstdHeader = Buffer.from([40, 181, 47, 253]);
- ZIP_HEADER_LEN = Math.max(gzipHeader.length, zstdHeader.length);
- STATE = Symbol("state");
- WRITEENTRY = Symbol("writeEntry");
- READENTRY = Symbol("readEntry");
- NEXTENTRY = Symbol("nextEntry");
- PROCESSENTRY = Symbol("processEntry");
- EX = Symbol("extendedHeader");
- GEX = Symbol("globalExtendedHeader");
- META = Symbol("meta");
- EMITMETA = Symbol("emitMeta");
- BUFFER2 = Symbol("buffer");
- QUEUE = Symbol("queue");
- ENDED = Symbol("ended");
- EMITTEDEND = Symbol("emittedEnd");
- EMIT = Symbol("emit");
- UNZIP = Symbol("unzip");
- CONSUMECHUNK = Symbol("consumeChunk");
- CONSUMECHUNKSUB = Symbol("consumeChunkSub");
- CONSUMEBODY = Symbol("consumeBody");
- CONSUMEMETA = Symbol("consumeMeta");
- CONSUMEHEADER = Symbol("consumeHeader");
- CONSUMING = Symbol("consuming");
- BUFFERCONCAT = Symbol("bufferConcat");
- MAYBEEND = Symbol("maybeEnd");
- WRITING = Symbol("writing");
- ABORTED2 = Symbol("aborted");
- DONE = Symbol("onDone");
- SAW_VALID_ENTRY = Symbol("sawValidEntry");
- SAW_NULL_BLOCK = Symbol("sawNullBlock");
- SAW_EOF = Symbol("sawEOF");
- CLOSESTREAM = Symbol("closeStream");
- noop2 = () => true;
- Parser = class extends import_events3.EventEmitter {
- file;
- strict;
- maxMetaEntrySize;
- filter;
- brotli;
- zstd;
- writable = true;
- readable = false;
- [QUEUE] = [];
- [BUFFER2];
- [READENTRY];
- [WRITEENTRY];
- [STATE] = "begin";
- [META] = "";
- [EX];
- [GEX];
- [ENDED] = false;
- [UNZIP];
- [ABORTED2] = false;
- [SAW_VALID_ENTRY];
- [SAW_NULL_BLOCK] = false;
- [SAW_EOF] = false;
- [WRITING] = false;
- [CONSUMING] = false;
- [EMITTEDEND] = false;
- constructor(opt = {}) {
- super();
- this.file = opt.file || "";
- this.on(DONE, () => {
- if (this[STATE] === "begin" || this[SAW_VALID_ENTRY] === false) {
- this.warn("TAR_BAD_ARCHIVE", "Unrecognized archive format");
+ [_makeBuf]() {
+ return Buffer.allocUnsafe(Math.min(this[_readSize], this[_remain]));
+ }
+ [_read]() {
+ if (!this[_reading]) {
+ this[_reading] = true;
+ const buf = this[_makeBuf]();
+ if (buf.length === 0) {
+ return process.nextTick(() => this[_onread](null, 0, buf));
}
- });
- if (opt.ondone) {
- this.on(DONE, opt.ondone);
- } else {
- this.on(DONE, () => {
- this.emit("prefinish");
- this.emit("finish");
- this.emit("end");
- });
+ import_fs2.default.read(this[_fd], buf, 0, buf.length, null, (er, br, b) => this[_onread](er, br, b));
}
- this.strict = !!opt.strict;
- this.maxMetaEntrySize = opt.maxMetaEntrySize || maxMetaEntrySize;
- this.filter = typeof opt.filter === "function" ? opt.filter : noop2;
- const isTBR = opt.file && (opt.file.endsWith(".tar.br") || opt.file.endsWith(".tbr"));
- this.brotli = !(opt.gzip || opt.zstd) && opt.brotli !== void 0 ? opt.brotli : isTBR ? void 0 : false;
- const isTZST = opt.file && (opt.file.endsWith(".tar.zst") || opt.file.endsWith(".tzst"));
- this.zstd = !(opt.gzip || opt.brotli) && opt.zstd !== void 0 ? opt.zstd : isTZST ? true : void 0;
- this.on("end", () => this[CLOSESTREAM]());
- if (typeof opt.onwarn === "function") {
- this.on("warn", opt.onwarn);
+ }
+ [_onread](er, br, buf) {
+ this[_reading] = false;
+ if (er) {
+ this[_onerror](er);
+ } else if (this[_handleChunk](br, buf)) {
+ this[_read]();
}
- if (typeof opt.onReadEntry === "function") {
- this.on("entry", opt.onReadEntry);
+ }
+ [_close]() {
+ if (this[_autoClose] && typeof this[_fd] === "number") {
+ const fd = this[_fd];
+ this[_fd] = void 0;
+ import_fs2.default.close(fd, (er) => er ? this.emit("error", er) : this.emit("close"));
}
}
- warn(code2, message, data = {}) {
- warnMethod(this, code2, message, data);
+ [_onerror](er) {
+ this[_reading] = true;
+ this[_close]();
+ this.emit("error", er);
}
- [CONSUMEHEADER](chunk, position) {
- if (this[SAW_VALID_ENTRY] === void 0) {
- this[SAW_VALID_ENTRY] = false;
+ [_handleChunk](br, buf) {
+ let ret = false;
+ this[_remain] -= br;
+ if (br > 0) {
+ ret = super.write(br < buf.length ? buf.subarray(0, br) : buf);
}
- let header;
- try {
- header = new Header(chunk, position, this[EX], this[GEX]);
- } catch (er) {
- return this.warn("TAR_ENTRY_INVALID", er);
+ if (br === 0 || this[_remain] <= 0) {
+ ret = false;
+ this[_close]();
+ super.end();
}
- if (header.nullBlock) {
- if (this[SAW_NULL_BLOCK]) {
- this[SAW_EOF] = true;
- if (this[STATE] === "begin") {
- this[STATE] = "header";
+ return ret;
+ }
+ emit(ev, ...args) {
+ switch (ev) {
+ case "prefinish":
+ case "finish":
+ return false;
+ case "drain":
+ if (typeof this[_fd] === "number") {
+ this[_read]();
}
- this[EMIT]("eof");
- } else {
- this[SAW_NULL_BLOCK] = true;
- this[EMIT]("nullBlock");
+ return false;
+ case "error":
+ if (this[_errored]) {
+ return false;
+ }
+ this[_errored] = true;
+ return super.emit(ev, ...args);
+ default:
+ return super.emit(ev, ...args);
+ }
+ }
+ };
+ ReadStreamSync = class extends ReadStream {
+ [_open]() {
+ let threw = true;
+ try {
+ this[_onopen](null, import_fs2.default.openSync(this[_path], "r"));
+ threw = false;
+ } finally {
+ if (threw) {
+ this[_close]();
}
- } else {
- this[SAW_NULL_BLOCK] = false;
- if (!header.cksumValid) {
- this.warn("TAR_ENTRY_INVALID", "checksum failure", { header });
- } else if (!header.path) {
- this.warn("TAR_ENTRY_INVALID", "path is required", { header });
- } else {
- const type = header.type;
- if (/^(Symbolic)?Link$/.test(type) && !header.linkpath) {
- this.warn("TAR_ENTRY_INVALID", "linkpath required", {
- header
- });
- } else if (!/^(Symbolic)?Link$/.test(type) && !/^(Global)?ExtendedHeader$/.test(type) && header.linkpath) {
- this.warn("TAR_ENTRY_INVALID", "linkpath forbidden", {
- header
- });
- } else {
- const entry = this[WRITEENTRY] = new ReadEntry(header, this[EX], this[GEX]);
- if (!this[SAW_VALID_ENTRY]) {
- if (entry.remain) {
- const onend = () => {
- if (!entry.invalid) {
- this[SAW_VALID_ENTRY] = true;
- }
- };
- entry.on("end", onend);
- } else {
- this[SAW_VALID_ENTRY] = true;
- }
- }
- if (entry.meta) {
- if (entry.size > this.maxMetaEntrySize) {
- entry.ignore = true;
- this[EMIT]("ignoredEntry", entry);
- this[STATE] = "ignore";
- entry.resume();
- } else if (entry.size > 0) {
- this[META] = "";
- entry.on("data", (c) => this[META] += c);
- this[STATE] = "meta";
- }
- } else {
- this[EX] = void 0;
- entry.ignore = entry.ignore || !this.filter(entry.path, entry);
- if (entry.ignore) {
- this[EMIT]("ignoredEntry", entry);
- this[STATE] = entry.remain ? "ignore" : "header";
- entry.resume();
- } else {
- if (entry.remain) {
- this[STATE] = "body";
- } else {
- this[STATE] = "header";
- entry.end();
- }
- if (!this[READENTRY]) {
- this[QUEUE].push(entry);
- this[NEXTENTRY]();
- } else {
- this[QUEUE].push(entry);
- }
- }
+ }
+ }
+ [_read]() {
+ let threw = true;
+ try {
+ if (!this[_reading]) {
+ this[_reading] = true;
+ do {
+ const buf = this[_makeBuf]();
+ const br = buf.length === 0 ? 0 : import_fs2.default.readSync(this[_fd], buf, 0, buf.length, null);
+ if (!this[_handleChunk](br, buf)) {
+ break;
}
- }
+ } while (true);
+ this[_reading] = false;
+ }
+ threw = false;
+ } finally {
+ if (threw) {
+ this[_close]();
+ }
+ }
+ }
+ [_close]() {
+ if (this[_autoClose] && typeof this[_fd] === "number") {
+ const fd = this[_fd];
+ this[_fd] = void 0;
+ import_fs2.default.closeSync(fd);
+ this.emit("close");
+ }
+ }
+ };
+ WriteStream = class extends import_events2.default {
+ readable = false;
+ writable = true;
+ [_errored] = false;
+ [_writing] = false;
+ [_ended] = false;
+ [_queue] = [];
+ [_needDrain] = false;
+ [_path];
+ [_mode];
+ [_autoClose];
+ [_fd];
+ [_defaultFlag];
+ [_flags];
+ [_finished] = false;
+ [_pos];
+ constructor(path16, opt) {
+ opt = opt || {};
+ super(opt);
+ this[_path] = path16;
+ this[_fd] = typeof opt.fd === "number" ? opt.fd : void 0;
+ this[_mode] = opt.mode === void 0 ? 438 : opt.mode;
+ this[_pos] = typeof opt.start === "number" ? opt.start : void 0;
+ this[_autoClose] = typeof opt.autoClose === "boolean" ? opt.autoClose : true;
+ const defaultFlag = this[_pos] !== void 0 ? "r+" : "w";
+ this[_defaultFlag] = opt.flags === void 0;
+ this[_flags] = opt.flags === void 0 ? defaultFlag : opt.flags;
+ if (this[_fd] === void 0) {
+ this[_open]();
+ }
+ }
+ emit(ev, ...args) {
+ if (ev === "error") {
+ if (this[_errored]) {
+ return false;
}
+ this[_errored] = true;
}
+ return super.emit(ev, ...args);
}
- [CLOSESTREAM]() {
- queueMicrotask(() => this.emit("close"));
+ get fd() {
+ return this[_fd];
}
- [PROCESSENTRY](entry) {
- let go = true;
- if (!entry) {
- this[READENTRY] = void 0;
- go = false;
- } else if (Array.isArray(entry)) {
- const [ev, ...args] = entry;
- this.emit(ev, ...args);
+ get path() {
+ return this[_path];
+ }
+ [_onerror](er) {
+ this[_close]();
+ this[_writing] = true;
+ this.emit("error", er);
+ }
+ [_open]() {
+ import_fs2.default.open(this[_path], this[_flags], this[_mode], (er, fd) => this[_onopen](er, fd));
+ }
+ [_onopen](er, fd) {
+ if (this[_defaultFlag] && this[_flags] === "r+" && er && er.code === "ENOENT") {
+ this[_flags] = "w";
+ this[_open]();
+ } else if (er) {
+ this[_onerror](er);
} else {
- this[READENTRY] = entry;
- this.emit("entry", entry);
- if (!entry.emittedEnd) {
- entry.on("end", () => this[NEXTENTRY]());
- go = false;
+ this[_fd] = fd;
+ this.emit("open", fd);
+ if (!this[_writing]) {
+ this[_flush]();
}
}
- return go;
}
- [NEXTENTRY]() {
- do {
- } while (this[PROCESSENTRY](this[QUEUE].shift()));
- if (!this[QUEUE].length) {
- const re = this[READENTRY];
- const drainNow = !re || re.flowing || re.size === re.remain;
- if (drainNow) {
- if (!this[WRITING]) {
+ end(buf, enc) {
+ if (buf) {
+ this.write(buf, enc);
+ }
+ this[_ended] = true;
+ if (!this[_writing] && !this[_queue].length && typeof this[_fd] === "number") {
+ this[_onwrite](null, 0);
+ }
+ return this;
+ }
+ write(buf, enc) {
+ if (typeof buf === "string") {
+ buf = Buffer.from(buf, enc);
+ }
+ if (this[_ended]) {
+ this.emit("error", new Error("write() after end()"));
+ return false;
+ }
+ if (this[_fd] === void 0 || this[_writing] || this[_queue].length) {
+ this[_queue].push(buf);
+ this[_needDrain] = true;
+ return false;
+ }
+ this[_writing] = true;
+ this[_write](buf);
+ return true;
+ }
+ [_write](buf) {
+ import_fs2.default.write(this[_fd], buf, 0, buf.length, this[_pos], (er, bw) => this[_onwrite](er, bw));
+ }
+ [_onwrite](er, bw) {
+ if (er) {
+ this[_onerror](er);
+ } else {
+ if (this[_pos] !== void 0 && typeof bw === "number") {
+ this[_pos] += bw;
+ }
+ if (this[_queue].length) {
+ this[_flush]();
+ } else {
+ this[_writing] = false;
+ if (this[_ended] && !this[_finished]) {
+ this[_finished] = true;
+ this[_close]();
+ this.emit("finish");
+ } else if (this[_needDrain]) {
+ this[_needDrain] = false;
this.emit("drain");
}
- } else {
- re.once("drain", () => this.emit("drain"));
}
}
}
- [CONSUMEBODY](chunk, position) {
- const entry = this[WRITEENTRY];
- if (!entry) {
- throw new Error("attempt to consume body without entry??");
- }
- const br = entry.blockRemain ?? 0;
- const c = br >= chunk.length && position === 0 ? chunk : chunk.subarray(position, position + br);
- entry.write(c);
- if (!entry.blockRemain) {
- this[STATE] = "header";
- this[WRITEENTRY] = void 0;
- entry.end();
+ [_flush]() {
+ if (this[_queue].length === 0) {
+ if (this[_ended]) {
+ this[_onwrite](null, 0);
+ }
+ } else if (this[_queue].length === 1) {
+ this[_write](this[_queue].pop());
+ } else {
+ const iovec = this[_queue];
+ this[_queue] = [];
+ writev(this[_fd], iovec, this[_pos], (er, bw) => this[_onwrite](er, bw));
}
- return c.length;
}
- [CONSUMEMETA](chunk, position) {
- const entry = this[WRITEENTRY];
- const ret = this[CONSUMEBODY](chunk, position);
- if (!this[WRITEENTRY] && entry) {
- this[EMITMETA](entry);
+ [_close]() {
+ if (this[_autoClose] && typeof this[_fd] === "number") {
+ const fd = this[_fd];
+ this[_fd] = void 0;
+ import_fs2.default.close(fd, (er) => er ? this.emit("error", er) : this.emit("close"));
}
- return ret;
}
- [EMIT](ev, data, extra) {
- if (!this[QUEUE].length && !this[READENTRY]) {
- this.emit(ev, data, extra);
+ };
+ WriteStreamSync = class extends WriteStream {
+ [_open]() {
+ let fd;
+ if (this[_defaultFlag] && this[_flags] === "r+") {
+ try {
+ fd = import_fs2.default.openSync(this[_path], this[_flags], this[_mode]);
+ } catch (er) {
+ if (er?.code === "ENOENT") {
+ this[_flags] = "w";
+ return this[_open]();
+ } else {
+ throw er;
+ }
+ }
} else {
- this[QUEUE].push([ev, data, extra]);
+ fd = import_fs2.default.openSync(this[_path], this[_flags], this[_mode]);
}
+ this[_onopen](null, fd);
}
- [EMITMETA](entry) {
- this[EMIT]("meta", this[META]);
- switch (entry.type) {
- case "ExtendedHeader":
- case "OldExtendedHeader":
- this[EX] = Pax.parse(this[META], this[EX], false);
- break;
- case "GlobalExtendedHeader":
- this[GEX] = Pax.parse(this[META], this[GEX], true);
- break;
- case "NextFileHasLongPath":
- case "OldGnuLongPath": {
- const ex = this[EX] ?? /* @__PURE__ */ Object.create(null);
- this[EX] = ex;
- ex.path = this[META].replace(/\0.*/, "");
- break;
- }
- case "NextFileHasLongLinkpath": {
- const ex = this[EX] || /* @__PURE__ */ Object.create(null);
- this[EX] = ex;
- ex.linkpath = this[META].replace(/\0.*/, "");
- break;
+ [_close]() {
+ if (this[_autoClose] && typeof this[_fd] === "number") {
+ const fd = this[_fd];
+ this[_fd] = void 0;
+ import_fs2.default.closeSync(fd);
+ this.emit("close");
+ }
+ }
+ [_write](buf) {
+ let threw = true;
+ try {
+ this[_onwrite](null, import_fs2.default.writeSync(this[_fd], buf, 0, buf.length, this[_pos]));
+ threw = false;
+ } finally {
+ if (threw) {
+ try {
+ this[_close]();
+ } catch {
+ }
}
- /* c8 ignore start */
- default:
- throw new Error("unknown meta: " + entry.type);
}
}
- abort(error) {
- this[ABORTED2] = true;
- this.emit("abort", error);
- this.warn("TAR_ABORT", error, { recoverable: false });
+ };
+ }
+});
+
+// node_modules/tar/dist/esm/options.js
+var argmap, isSyncFile, isAsyncFile, isSyncNoFile, isAsyncNoFile, dealiasKey, dealias;
+var init_options = __esm({
+ "node_modules/tar/dist/esm/options.js"() {
+ argmap = /* @__PURE__ */ new Map([
+ ["C", "cwd"],
+ ["f", "file"],
+ ["z", "gzip"],
+ ["P", "preservePaths"],
+ ["U", "unlink"],
+ ["strip-components", "strip"],
+ ["stripComponents", "strip"],
+ ["keep-newer", "newer"],
+ ["keepNewer", "newer"],
+ ["keep-newer-files", "newer"],
+ ["keepNewerFiles", "newer"],
+ ["k", "keep"],
+ ["keep-existing", "keep"],
+ ["keepExisting", "keep"],
+ ["m", "noMtime"],
+ ["no-mtime", "noMtime"],
+ ["p", "preserveOwner"],
+ ["L", "follow"],
+ ["h", "follow"],
+ ["onentry", "onReadEntry"]
+ ]);
+ isSyncFile = (o) => !!o.sync && !!o.file;
+ isAsyncFile = (o) => !o.sync && !!o.file;
+ isSyncNoFile = (o) => !!o.sync && !o.file;
+ isAsyncNoFile = (o) => !o.sync && !o.file;
+ dealiasKey = (k) => {
+ const d = argmap.get(k);
+ if (d)
+ return d;
+ return k;
+ };
+ dealias = (opt = {}) => {
+ if (!opt)
+ return {};
+ const result = {};
+ for (const [key, v] of Object.entries(opt)) {
+ const k = dealiasKey(key);
+ result[k] = v;
+ }
+ if (result.chmod === void 0 && result.noChmod === false) {
+ result.chmod = true;
}
- write(chunk, encoding, cb) {
- if (typeof encoding === "function") {
- cb = encoding;
- encoding = void 0;
- }
- if (typeof chunk === "string") {
- chunk = Buffer.from(
- chunk,
- /* c8 ignore next */
- typeof encoding === "string" ? encoding : "utf8"
- );
+ delete result.noChmod;
+ return result;
+ };
+ }
+});
+
+// node_modules/tar/dist/esm/make-command.js
+var makeCommand;
+var init_make_command = __esm({
+ "node_modules/tar/dist/esm/make-command.js"() {
+ init_options();
+ makeCommand = (syncFile, asyncFile, syncNoFile, asyncNoFile, validate) => {
+ return Object.assign((opt_ = [], entries, cb) => {
+ if (Array.isArray(opt_)) {
+ entries = opt_;
+ opt_ = {};
}
- if (this[ABORTED2]) {
- cb?.();
- return false;
+ if (typeof entries === "function") {
+ cb = entries;
+ entries = void 0;
}
- const needSniff = this[UNZIP] === void 0 || this.brotli === void 0 && this[UNZIP] === false;
- if (needSniff && chunk) {
- if (this[BUFFER2]) {
- chunk = Buffer.concat([this[BUFFER2], chunk]);
- this[BUFFER2] = void 0;
- }
- if (chunk.length < ZIP_HEADER_LEN) {
- this[BUFFER2] = chunk;
- cb?.();
- return true;
- }
- for (let i = 0; this[UNZIP] === void 0 && i < gzipHeader.length; i++) {
- if (chunk[i] !== gzipHeader[i]) {
- this[UNZIP] = false;
- }
- }
- let isZstd = false;
- if (this[UNZIP] === false && this.zstd !== false) {
- isZstd = true;
- for (let i = 0; i < zstdHeader.length; i++) {
- if (chunk[i] !== zstdHeader[i]) {
- isZstd = false;
- break;
- }
- }
+ entries = !entries ? [] : Array.from(entries);
+ const opt = dealias(opt_);
+ validate?.(opt, entries);
+ if (isSyncFile(opt)) {
+ if (typeof cb === "function") {
+ throw new TypeError("callback not supported for sync tar functions");
}
- const maybeBrotli = this.brotli === void 0 && !isZstd;
- if (this[UNZIP] === false && maybeBrotli) {
- if (chunk.length < 512) {
- if (this[ENDED]) {
- this.brotli = true;
- } else {
- this[BUFFER2] = chunk;
- cb?.();
- return true;
- }
- } else {
- try {
- new Header(chunk.subarray(0, 512));
- this.brotli = false;
- } catch (_) {
- this.brotli = true;
- }
- }
+ return syncFile(opt, entries);
+ } else if (isAsyncFile(opt)) {
+ const p = asyncFile(opt, entries);
+ return cb ? p.then(() => cb(), cb) : p;
+ } else if (isSyncNoFile(opt)) {
+ if (typeof cb === "function") {
+ throw new TypeError("callback not supported for sync tar functions");
}
- if (this[UNZIP] === void 0 || this[UNZIP] === false && (this.brotli || isZstd)) {
- const ended = this[ENDED];
- this[ENDED] = false;
- this[UNZIP] = this[UNZIP] === void 0 ? new Unzip({}) : isZstd ? new ZstdDecompress({}) : new BrotliDecompress({});
- this[UNZIP].on("data", (chunk2) => this[CONSUMECHUNK](chunk2));
- this[UNZIP].on("error", (er) => this.abort(er));
- this[UNZIP].on("end", () => {
- this[ENDED] = true;
- this[CONSUMECHUNK]();
- });
- this[WRITING] = true;
- const ret2 = !!this[UNZIP][ended ? "end" : "write"](chunk);
- this[WRITING] = false;
- cb?.();
- return ret2;
+ return syncNoFile(opt, entries);
+ } else if (isAsyncNoFile(opt)) {
+ if (typeof cb === "function") {
+ throw new TypeError("callback only supported with file option");
}
+ return asyncNoFile(opt, entries);
}
- this[WRITING] = true;
- if (this[UNZIP]) {
- this[UNZIP].write(chunk);
- } else {
- this[CONSUMECHUNK](chunk);
- }
- this[WRITING] = false;
- const ret = this[QUEUE].length ? false : this[READENTRY] ? this[READENTRY].flowing : true;
- if (!ret && !this[QUEUE].length) {
- this[READENTRY]?.once("drain", () => this.emit("drain"));
- }
- cb?.();
- return ret;
+ throw new Error("impossible options??");
+ }, {
+ syncFile,
+ asyncFile,
+ syncNoFile,
+ asyncNoFile,
+ validate
+ });
+ };
+ }
+});
+
+// node_modules/minizlib/dist/esm/constants.js
+var import_zlib, realZlibConstants, constants;
+var init_constants = __esm({
+ "node_modules/minizlib/dist/esm/constants.js"() {
+ import_zlib = __toESM(require("zlib"), 1);
+ realZlibConstants = import_zlib.default.constants || { ZLIB_VERNUM: 4736 };
+ constants = Object.freeze(Object.assign(/* @__PURE__ */ Object.create(null), {
+ Z_NO_FLUSH: 0,
+ Z_PARTIAL_FLUSH: 1,
+ Z_SYNC_FLUSH: 2,
+ Z_FULL_FLUSH: 3,
+ Z_FINISH: 4,
+ Z_BLOCK: 5,
+ Z_OK: 0,
+ Z_STREAM_END: 1,
+ Z_NEED_DICT: 2,
+ Z_ERRNO: -1,
+ Z_STREAM_ERROR: -2,
+ Z_DATA_ERROR: -3,
+ Z_MEM_ERROR: -4,
+ Z_BUF_ERROR: -5,
+ Z_VERSION_ERROR: -6,
+ Z_NO_COMPRESSION: 0,
+ Z_BEST_SPEED: 1,
+ Z_BEST_COMPRESSION: 9,
+ Z_DEFAULT_COMPRESSION: -1,
+ Z_FILTERED: 1,
+ Z_HUFFMAN_ONLY: 2,
+ Z_RLE: 3,
+ Z_FIXED: 4,
+ Z_DEFAULT_STRATEGY: 0,
+ DEFLATE: 1,
+ INFLATE: 2,
+ GZIP: 3,
+ GUNZIP: 4,
+ DEFLATERAW: 5,
+ INFLATERAW: 6,
+ UNZIP: 7,
+ BROTLI_DECODE: 8,
+ BROTLI_ENCODE: 9,
+ Z_MIN_WINDOWBITS: 8,
+ Z_MAX_WINDOWBITS: 15,
+ Z_DEFAULT_WINDOWBITS: 15,
+ Z_MIN_CHUNK: 64,
+ Z_MAX_CHUNK: Infinity,
+ Z_DEFAULT_CHUNK: 16384,
+ Z_MIN_MEMLEVEL: 1,
+ Z_MAX_MEMLEVEL: 9,
+ Z_DEFAULT_MEMLEVEL: 8,
+ Z_MIN_LEVEL: -1,
+ Z_MAX_LEVEL: 9,
+ Z_DEFAULT_LEVEL: -1,
+ BROTLI_OPERATION_PROCESS: 0,
+ BROTLI_OPERATION_FLUSH: 1,
+ BROTLI_OPERATION_FINISH: 2,
+ BROTLI_OPERATION_EMIT_METADATA: 3,
+ BROTLI_MODE_GENERIC: 0,
+ BROTLI_MODE_TEXT: 1,
+ BROTLI_MODE_FONT: 2,
+ BROTLI_DEFAULT_MODE: 0,
+ BROTLI_MIN_QUALITY: 0,
+ BROTLI_MAX_QUALITY: 11,
+ BROTLI_DEFAULT_QUALITY: 11,
+ BROTLI_MIN_WINDOW_BITS: 10,
+ BROTLI_MAX_WINDOW_BITS: 24,
+ BROTLI_LARGE_MAX_WINDOW_BITS: 30,
+ BROTLI_DEFAULT_WINDOW: 22,
+ BROTLI_MIN_INPUT_BLOCK_BITS: 16,
+ BROTLI_MAX_INPUT_BLOCK_BITS: 24,
+ BROTLI_PARAM_MODE: 0,
+ BROTLI_PARAM_QUALITY: 1,
+ BROTLI_PARAM_LGWIN: 2,
+ BROTLI_PARAM_LGBLOCK: 3,
+ BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING: 4,
+ BROTLI_PARAM_SIZE_HINT: 5,
+ BROTLI_PARAM_LARGE_WINDOW: 6,
+ BROTLI_PARAM_NPOSTFIX: 7,
+ BROTLI_PARAM_NDIRECT: 8,
+ BROTLI_DECODER_RESULT_ERROR: 0,
+ BROTLI_DECODER_RESULT_SUCCESS: 1,
+ BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT: 2,
+ BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT: 3,
+ BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION: 0,
+ BROTLI_DECODER_PARAM_LARGE_WINDOW: 1,
+ BROTLI_DECODER_NO_ERROR: 0,
+ BROTLI_DECODER_SUCCESS: 1,
+ BROTLI_DECODER_NEEDS_MORE_INPUT: 2,
+ BROTLI_DECODER_NEEDS_MORE_OUTPUT: 3,
+ BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE: -1,
+ BROTLI_DECODER_ERROR_FORMAT_RESERVED: -2,
+ BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE: -3,
+ BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET: -4,
+ BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME: -5,
+ BROTLI_DECODER_ERROR_FORMAT_CL_SPACE: -6,
+ BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE: -7,
+ BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT: -8,
+ BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1: -9,
+ BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2: -10,
+ BROTLI_DECODER_ERROR_FORMAT_TRANSFORM: -11,
+ BROTLI_DECODER_ERROR_FORMAT_DICTIONARY: -12,
+ BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS: -13,
+ BROTLI_DECODER_ERROR_FORMAT_PADDING_1: -14,
+ BROTLI_DECODER_ERROR_FORMAT_PADDING_2: -15,
+ BROTLI_DECODER_ERROR_FORMAT_DISTANCE: -16,
+ BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET: -19,
+ BROTLI_DECODER_ERROR_INVALID_ARGUMENTS: -20,
+ BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES: -21,
+ BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS: -22,
+ BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP: -25,
+ BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1: -26,
+ BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2: -27,
+ BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES: -30,
+ BROTLI_DECODER_ERROR_UNREACHABLE: -31
+ }, realZlibConstants));
+ }
+});
+
+// node_modules/minizlib/dist/esm/index.js
+var import_assert2, import_buffer, realZlib2, OriginalBufferConcat, desc, noop, passthroughBufferConcat, _superWrite, ZlibError, _flushFlag, ZlibBase, Zlib, Gzip, Unzip, Brotli, BrotliCompress, BrotliDecompress, Zstd, ZstdCompress, ZstdDecompress;
+var init_esm3 = __esm({
+ "node_modules/minizlib/dist/esm/index.js"() {
+ import_assert2 = __toESM(require("assert"), 1);
+ import_buffer = require("buffer");
+ init_esm();
+ realZlib2 = __toESM(require("zlib"), 1);
+ init_constants();
+ init_constants();
+ OriginalBufferConcat = import_buffer.Buffer.concat;
+ desc = Object.getOwnPropertyDescriptor(import_buffer.Buffer, "concat");
+ noop = (args) => args;
+ passthroughBufferConcat = desc?.writable === true || desc?.set !== void 0 ? (makeNoOp) => {
+ import_buffer.Buffer.concat = makeNoOp ? noop : OriginalBufferConcat;
+ } : (_) => {
+ };
+ _superWrite = /* @__PURE__ */ Symbol("_superWrite");
+ ZlibError = class extends Error {
+ code;
+ errno;
+ constructor(err, origin) {
+ super("zlib: " + err.message, { cause: err });
+ this.code = err.code;
+ this.errno = err.errno;
+ if (!this.code)
+ this.code = "ZLIB_ERROR";
+ this.message = "zlib: " + err.message;
+ Error.captureStackTrace(this, origin ?? this.constructor);
}
- [BUFFERCONCAT](c) {
- if (c && !this[ABORTED2]) {
- this[BUFFER2] = this[BUFFER2] ? Buffer.concat([this[BUFFER2], c]) : c;
- }
+ get name() {
+ return "ZlibError";
}
- [MAYBEEND]() {
- if (this[ENDED] && !this[EMITTEDEND] && !this[ABORTED2] && !this[CONSUMING]) {
- this[EMITTEDEND] = true;
- const entry = this[WRITEENTRY];
- if (entry && entry.blockRemain) {
- const have = this[BUFFER2] ? this[BUFFER2].length : 0;
- this.warn("TAR_BAD_ARCHIVE", `Truncated input (needed ${entry.blockRemain} more bytes, only ${have} available)`, { entry });
- if (this[BUFFER2]) {
- entry.write(this[BUFFER2]);
- }
- entry.end();
- }
- this[EMIT](DONE);
- }
+ };
+ _flushFlag = /* @__PURE__ */ Symbol("flushFlag");
+ ZlibBase = class extends Minipass {
+ #sawError = false;
+ #ended = false;
+ #flushFlag;
+ #finishFlushFlag;
+ #fullFlushFlag;
+ #handle;
+ #onError;
+ get sawError() {
+ return this.#sawError;
}
- [CONSUMECHUNK](chunk) {
- if (this[CONSUMING] && chunk) {
- this[BUFFERCONCAT](chunk);
- } else if (!chunk && !this[BUFFER2]) {
- this[MAYBEEND]();
- } else if (chunk) {
- this[CONSUMING] = true;
- if (this[BUFFER2]) {
- this[BUFFERCONCAT](chunk);
- const c = this[BUFFER2];
- this[BUFFER2] = void 0;
- this[CONSUMECHUNKSUB](c);
- } else {
- this[CONSUMECHUNKSUB](chunk);
- }
- while (this[BUFFER2] && this[BUFFER2]?.length >= 512 && !this[ABORTED2] && !this[SAW_EOF]) {
- const c = this[BUFFER2];
- this[BUFFER2] = void 0;
- this[CONSUMECHUNKSUB](c);
- }
- this[CONSUMING] = false;
+ get handle() {
+ return this.#handle;
+ }
+ /* c8 ignore start */
+ get flushFlag() {
+ return this.#flushFlag;
+ }
+ /* c8 ignore stop */
+ constructor(opts, mode) {
+ if (!opts || typeof opts !== "object")
+ throw new TypeError("invalid options for ZlibBase constructor");
+ super(opts);
+ this.#flushFlag = opts.flush ?? 0;
+ this.#finishFlushFlag = opts.finishFlush ?? 0;
+ this.#fullFlushFlag = opts.fullFlushFlag ?? 0;
+ if (typeof realZlib2[mode] !== "function") {
+ throw new TypeError("Compression method not supported: " + mode);
}
- if (!this[BUFFER2] || this[ENDED]) {
- this[MAYBEEND]();
+ try {
+ this.#handle = new realZlib2[mode](opts);
+ } catch (er) {
+ throw new ZlibError(er, this.constructor);
}
+ this.#onError = (err) => {
+ if (this.#sawError)
+ return;
+ this.#sawError = true;
+ this.close();
+ this.emit("error", err);
+ };
+ this.#handle?.on("error", (er) => this.#onError(new ZlibError(er)));
+ this.once("end", () => this.close);
}
- [CONSUMECHUNKSUB](chunk) {
- let position = 0;
- const length = chunk.length;
- while (position + 512 <= length && !this[ABORTED2] && !this[SAW_EOF]) {
- switch (this[STATE]) {
- case "begin":
- case "header":
- this[CONSUMEHEADER](chunk, position);
- position += 512;
- break;
- case "ignore":
- case "body":
- position += this[CONSUMEBODY](chunk, position);
- break;
- case "meta":
- position += this[CONSUMEMETA](chunk, position);
- break;
- /* c8 ignore start */
- default:
- throw new Error("invalid state: " + this[STATE]);
- }
+ close() {
+ if (this.#handle) {
+ this.#handle.close();
+ this.#handle = void 0;
+ this.emit("close");
}
- if (position < length) {
- if (this[BUFFER2]) {
- this[BUFFER2] = Buffer.concat([
- chunk.subarray(position),
- this[BUFFER2]
- ]);
- } else {
- this[BUFFER2] = chunk.subarray(position);
- }
+ }
+ reset() {
+ if (!this.#sawError) {
+ (0, import_assert2.default)(this.#handle, "zlib binding closed");
+ return this.#handle.reset?.();
}
}
+ flush(flushFlag) {
+ if (this.ended)
+ return;
+ if (typeof flushFlag !== "number")
+ flushFlag = this.#fullFlushFlag;
+ this.write(Object.assign(import_buffer.Buffer.alloc(0), { [_flushFlag]: flushFlag }));
+ }
end(chunk, encoding, cb) {
if (typeof chunk === "function") {
cb = chunk;
@@ -15410,3629 +6655,4587 @@ var init_parse = __esm({
cb = encoding;
encoding = void 0;
}
- if (typeof chunk === "string") {
- chunk = Buffer.from(chunk, encoding);
+ if (chunk) {
+ if (encoding)
+ this.write(chunk, encoding);
+ else
+ this.write(chunk);
}
- if (cb)
- this.once("finish", cb);
- if (!this[ABORTED2]) {
- if (this[UNZIP]) {
- if (chunk)
- this[UNZIP].write(chunk);
- this[UNZIP].end();
+ this.flush(this.#finishFlushFlag);
+ this.#ended = true;
+ return super.end(cb);
+ }
+ get ended() {
+ return this.#ended;
+ }
+ // overridden in the gzip classes to do portable writes
+ [_superWrite](data) {
+ return super.write(data);
+ }
+ write(chunk, encoding, cb) {
+ if (typeof encoding === "function")
+ cb = encoding, encoding = "utf8";
+ if (typeof chunk === "string")
+ chunk = import_buffer.Buffer.from(chunk, encoding);
+ if (this.#sawError)
+ return;
+ (0, import_assert2.default)(this.#handle, "zlib binding closed");
+ const nativeHandle = this.#handle._handle;
+ const originalNativeClose = nativeHandle.close;
+ nativeHandle.close = () => {
+ };
+ const originalClose = this.#handle.close;
+ this.#handle.close = () => {
+ };
+ passthroughBufferConcat(true);
+ let result = void 0;
+ try {
+ const flushFlag = typeof chunk[_flushFlag] === "number" ? chunk[_flushFlag] : this.#flushFlag;
+ result = this.#handle._processChunk(chunk, flushFlag);
+ passthroughBufferConcat(false);
+ } catch (err) {
+ passthroughBufferConcat(false);
+ this.#onError(new ZlibError(err, this.write));
+ } finally {
+ if (this.#handle) {
+ ;
+ this.#handle._handle = nativeHandle;
+ nativeHandle.close = originalNativeClose;
+ this.#handle.close = originalClose;
+ this.#handle.removeAllListeners("error");
+ }
+ }
+ if (this.#handle)
+ this.#handle.on("error", (er) => this.#onError(new ZlibError(er, this.write)));
+ let writeReturn;
+ if (result) {
+ if (Array.isArray(result) && result.length > 0) {
+ const r = result[0];
+ writeReturn = this[_superWrite](import_buffer.Buffer.from(r));
+ for (let i = 1; i < result.length; i++) {
+ writeReturn = this[_superWrite](result[i]);
+ }
} else {
- this[ENDED] = true;
- if (this.brotli === void 0 || this.zstd === void 0)
- chunk = chunk || Buffer.alloc(0);
- if (chunk)
- this.write(chunk);
- this[MAYBEEND]();
+ writeReturn = this[_superWrite](import_buffer.Buffer.from(result));
+ }
+ }
+ if (cb)
+ cb();
+ return writeReturn;
+ }
+ };
+ Zlib = class extends ZlibBase {
+ #level;
+ #strategy;
+ constructor(opts, mode) {
+ opts = opts || {};
+ opts.flush = opts.flush || constants.Z_NO_FLUSH;
+ opts.finishFlush = opts.finishFlush || constants.Z_FINISH;
+ opts.fullFlushFlag = constants.Z_FULL_FLUSH;
+ super(opts, mode);
+ this.#level = opts.level;
+ this.#strategy = opts.strategy;
+ }
+ params(level, strategy) {
+ if (this.sawError)
+ return;
+ if (!this.handle)
+ throw new Error("cannot switch params when binding is closed");
+ if (!this.handle.params)
+ throw new Error("not supported in this implementation");
+ if (this.#level !== level || this.#strategy !== strategy) {
+ this.flush(constants.Z_SYNC_FLUSH);
+ (0, import_assert2.default)(this.handle, "zlib binding closed");
+ const origFlush = this.handle.flush;
+ this.handle.flush = (flushFlag, cb) => {
+ if (typeof flushFlag === "function") {
+ cb = flushFlag;
+ flushFlag = this.flushFlag;
+ }
+ this.flush(flushFlag);
+ cb?.();
+ };
+ try {
+ ;
+ this.handle.params(level, strategy);
+ } finally {
+ this.handle.flush = origFlush;
+ }
+ if (this.handle) {
+ this.#level = level;
+ this.#strategy = strategy;
}
}
- return this;
}
};
- }
-});
-
-// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/strip-trailing-slashes.js
-var stripTrailingSlashes;
-var init_strip_trailing_slashes = __esm({
- ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/strip-trailing-slashes.js"() {
- stripTrailingSlashes = (str) => {
- let i = str.length - 1;
- let slashesStart = -1;
- while (i > -1 && str.charAt(i) === "/") {
- slashesStart = i;
- i--;
+ Gzip = class extends Zlib {
+ #portable;
+ constructor(opts) {
+ super(opts, "Gzip");
+ this.#portable = opts && !!opts.portable;
+ }
+ [_superWrite](data) {
+ if (!this.#portable)
+ return super[_superWrite](data);
+ this.#portable = false;
+ data[9] = 255;
+ return super[_superWrite](data);
}
- return slashesStart === -1 ? str : str.slice(0, slashesStart);
};
- }
-});
-
-// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/list.js
-var list_exports = {};
-__export(list_exports, {
- filesFilter: () => filesFilter,
- list: () => list
-});
-var import_node_fs, import_path2, onReadEntryFunction, filesFilter, listFileSync, listFile, list;
-var init_list = __esm({
- ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/list.js"() {
- init_esm2();
- import_node_fs = __toESM(require("node:fs"), 1);
- import_path2 = require("path");
- init_make_command();
- init_parse();
- init_strip_trailing_slashes();
- onReadEntryFunction = (opt) => {
- const onReadEntry = opt.onReadEntry;
- opt.onReadEntry = onReadEntry ? (e) => {
- onReadEntry(e);
- e.resume();
- } : (e) => e.resume();
+ Unzip = class extends Zlib {
+ constructor(opts) {
+ super(opts, "Unzip");
+ }
};
- filesFilter = (opt, files) => {
- const map = new Map(files.map((f) => [stripTrailingSlashes(f), true]));
- const filter = opt.filter;
- const mapHas = (file, r = "") => {
- const root = r || (0, import_path2.parse)(file).root || ".";
- let ret;
- if (file === root)
- ret = false;
- else {
- const m = map.get(file);
- if (m !== void 0) {
- ret = m;
- } else {
- ret = mapHas((0, import_path2.dirname)(file), root);
- }
- }
- map.set(file, ret);
- return ret;
- };
- opt.filter = filter ? (file, entry) => filter(file, entry) && mapHas(stripTrailingSlashes(file)) : (file) => mapHas(stripTrailingSlashes(file));
+ Brotli = class extends ZlibBase {
+ constructor(opts, mode) {
+ opts = opts || {};
+ opts.flush = opts.flush || constants.BROTLI_OPERATION_PROCESS;
+ opts.finishFlush = opts.finishFlush || constants.BROTLI_OPERATION_FINISH;
+ opts.fullFlushFlag = constants.BROTLI_OPERATION_FLUSH;
+ super(opts, mode);
+ }
};
- listFileSync = (opt) => {
- const p = new Parser(opt);
- const file = opt.file;
- let fd;
- try {
- fd = import_node_fs.default.openSync(file, "r");
- const stat = import_node_fs.default.fstatSync(fd);
- const readSize = opt.maxReadSize || 16 * 1024 * 1024;
- if (stat.size < readSize) {
- const buf = Buffer.allocUnsafe(stat.size);
- const read = import_node_fs.default.readSync(fd, buf, 0, stat.size, 0);
- p.end(read === buf.byteLength ? buf : buf.subarray(0, read));
- } else {
- let pos2 = 0;
- const buf = Buffer.allocUnsafe(readSize);
- while (pos2 < stat.size) {
- const bytesRead = import_node_fs.default.readSync(fd, buf, 0, readSize, pos2);
- if (bytesRead === 0)
- break;
- pos2 += bytesRead;
- p.write(buf.subarray(0, bytesRead));
- }
- p.end();
- }
- } finally {
- if (typeof fd === "number") {
- try {
- import_node_fs.default.closeSync(fd);
- } catch (er) {
- }
- }
+ BrotliCompress = class extends Brotli {
+ constructor(opts) {
+ super(opts, "BrotliCompress");
}
};
- listFile = (opt, _files) => {
- const parse4 = new Parser(opt);
- const readSize = opt.maxReadSize || 16 * 1024 * 1024;
- const file = opt.file;
- const p = new Promise((resolve, reject) => {
- parse4.on("error", reject);
- parse4.on("end", resolve);
- import_node_fs.default.stat(file, (er, stat) => {
- if (er) {
- reject(er);
- } else {
- const stream = new ReadStream(file, {
- readSize,
- size: stat.size
- });
- stream.on("error", reject);
- stream.pipe(parse4);
- }
- });
- });
- return p;
+ BrotliDecompress = class extends Brotli {
+ constructor(opts) {
+ super(opts, "BrotliDecompress");
+ }
+ };
+ Zstd = class extends ZlibBase {
+ constructor(opts, mode) {
+ opts = opts || {};
+ opts.flush = opts.flush || constants.ZSTD_e_continue;
+ opts.finishFlush = opts.finishFlush || constants.ZSTD_e_end;
+ opts.fullFlushFlag = constants.ZSTD_e_flush;
+ super(opts, mode);
+ }
+ };
+ ZstdCompress = class extends Zstd {
+ constructor(opts) {
+ super(opts, "ZstdCompress");
+ }
+ };
+ ZstdDecompress = class extends Zstd {
+ constructor(opts) {
+ super(opts, "ZstdDecompress");
+ }
};
- list = makeCommand(listFileSync, listFile, (opt) => new Parser(opt), (opt) => new Parser(opt), (opt, files) => {
- if (files?.length)
- filesFilter(opt, files);
- if (!opt.noResume)
- onReadEntryFunction(opt);
- });
- }
-});
-
-// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/get-write-flag.js
-var import_fs3, platform2, isWindows, O_CREAT, O_TRUNC, O_WRONLY, UV_FS_O_FILEMAP, fMapEnabled, fMapLimit, fMapFlag, getWriteFlag;
-var init_get_write_flag = __esm({
- ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/get-write-flag.js"() {
- import_fs3 = __toESM(require("fs"), 1);
- platform2 = process.env.__FAKE_PLATFORM__ || process.platform;
- isWindows = platform2 === "win32";
- ({ O_CREAT, O_TRUNC, O_WRONLY } = import_fs3.default.constants);
- UV_FS_O_FILEMAP = Number(process.env.__FAKE_FS_O_FILENAME__) || import_fs3.default.constants.UV_FS_O_FILEMAP || 0;
- fMapEnabled = isWindows && !!UV_FS_O_FILEMAP;
- fMapLimit = 512 * 1024;
- fMapFlag = UV_FS_O_FILEMAP | O_TRUNC | O_CREAT | O_WRONLY;
- getWriteFlag = !fMapEnabled ? () => "w" : (size) => size < fMapLimit ? fMapFlag : "w";
}
});
-// .yarn/cache/chownr-npm-3.0.0-5275e85d25-43925b8770.zip/node_modules/chownr/dist/esm/index.js
-var import_node_fs2, import_node_path3, lchownSync, chown, chownrKid, chownr, chownrKidSync, chownrSync;
-var init_esm4 = __esm({
- ".yarn/cache/chownr-npm-3.0.0-5275e85d25-43925b8770.zip/node_modules/chownr/dist/esm/index.js"() {
- import_node_fs2 = __toESM(require("node:fs"), 1);
- import_node_path3 = __toESM(require("node:path"), 1);
- lchownSync = (path16, uid, gid) => {
- try {
- return import_node_fs2.default.lchownSync(path16, uid, gid);
- } catch (er) {
- if (er?.code !== "ENOENT")
- throw er;
+// node_modules/tar/dist/esm/large-numbers.js
+var encode, encodePositive, encodeNegative, parse, twos, pos, onesComp, twosComp;
+var init_large_numbers = __esm({
+ "node_modules/tar/dist/esm/large-numbers.js"() {
+ encode = (num, buf) => {
+ if (!Number.isSafeInteger(num)) {
+ throw Error("cannot encode number outside of javascript safe integer range");
+ } else if (num < 0) {
+ encodeNegative(num, buf);
+ } else {
+ encodePositive(num, buf);
}
+ return buf;
};
- chown = (cpath, uid, gid, cb) => {
- import_node_fs2.default.lchown(cpath, uid, gid, (er) => {
- cb(er && er?.code !== "ENOENT" ? er : null);
- });
+ encodePositive = (num, buf) => {
+ buf[0] = 128;
+ for (var i = buf.length; i > 1; i--) {
+ buf[i - 1] = num & 255;
+ num = Math.floor(num / 256);
+ }
};
- chownrKid = (p, child, uid, gid, cb) => {
- if (child.isDirectory()) {
- chownr(import_node_path3.default.resolve(p, child.name), uid, gid, (er) => {
- if (er)
- return cb(er);
- const cpath = import_node_path3.default.resolve(p, child.name);
- chown(cpath, uid, gid, cb);
- });
- } else {
- const cpath = import_node_path3.default.resolve(p, child.name);
- chown(cpath, uid, gid, cb);
+ encodeNegative = (num, buf) => {
+ buf[0] = 255;
+ var flipped = false;
+ num = num * -1;
+ for (var i = buf.length; i > 1; i--) {
+ var byte = num & 255;
+ num = Math.floor(num / 256);
+ if (flipped) {
+ buf[i - 1] = onesComp(byte);
+ } else if (byte === 0) {
+ buf[i - 1] = 0;
+ } else {
+ flipped = true;
+ buf[i - 1] = twosComp(byte);
+ }
+ }
+ };
+ parse = (buf) => {
+ const pre = buf[0];
+ const value = pre === 128 ? pos(buf.subarray(1, buf.length)) : pre === 255 ? twos(buf) : null;
+ if (value === null) {
+ throw Error("invalid base256 encoding");
+ }
+ if (!Number.isSafeInteger(value)) {
+ throw Error("parsed number outside of javascript safe integer range");
}
+ return value;
};
- chownr = (p, uid, gid, cb) => {
- import_node_fs2.default.readdir(p, { withFileTypes: true }, (er, children) => {
- if (er) {
- if (er.code === "ENOENT")
- return cb();
- else if (er.code !== "ENOTDIR" && er.code !== "ENOTSUP")
- return cb(er);
+ twos = (buf) => {
+ var len = buf.length;
+ var sum = 0;
+ var flipped = false;
+ for (var i = len - 1; i > -1; i--) {
+ var byte = Number(buf[i]);
+ var f;
+ if (flipped) {
+ f = onesComp(byte);
+ } else if (byte === 0) {
+ f = byte;
+ } else {
+ flipped = true;
+ f = twosComp(byte);
}
- if (er || !children.length)
- return chown(p, uid, gid, cb);
- let len = children.length;
- let errState = null;
- const then = (er2) => {
- if (errState)
- return;
- if (er2)
- return cb(errState = er2);
- if (--len === 0)
- return chown(p, uid, gid, cb);
- };
- for (const child of children) {
- chownrKid(p, child, uid, gid, then);
+ if (f !== 0) {
+ sum -= f * Math.pow(256, len - i - 1);
}
- });
- };
- chownrKidSync = (p, child, uid, gid) => {
- if (child.isDirectory())
- chownrSync(import_node_path3.default.resolve(p, child.name), uid, gid);
- lchownSync(import_node_path3.default.resolve(p, child.name), uid, gid);
- };
- chownrSync = (p, uid, gid) => {
- let children;
- try {
- children = import_node_fs2.default.readdirSync(p, { withFileTypes: true });
- } catch (er) {
- const e = er;
- if (e?.code === "ENOENT")
- return;
- else if (e?.code === "ENOTDIR" || e?.code === "ENOTSUP")
- return lchownSync(p, uid, gid);
- else
- throw e;
}
- for (const child of children) {
- chownrKidSync(p, child, uid, gid);
+ return sum;
+ };
+ pos = (buf) => {
+ var len = buf.length;
+ var sum = 0;
+ for (var i = len - 1; i > -1; i--) {
+ var byte = Number(buf[i]);
+ if (byte !== 0) {
+ sum += byte * Math.pow(256, len - i - 1);
+ }
}
- return lchownSync(p, uid, gid);
+ return sum;
};
+ onesComp = (byte) => (255 ^ byte) & 255;
+ twosComp = (byte) => (255 ^ byte) + 1 & 255;
}
});
-// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/cwd-error.js
-var CwdError;
-var init_cwd_error = __esm({
- ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/cwd-error.js"() {
- CwdError = class extends Error {
+// node_modules/tar/dist/esm/types.js
+var isCode, normalFsTypes, name, code;
+var init_types = __esm({
+ "node_modules/tar/dist/esm/types.js"() {
+ isCode = (c) => name.has(c);
+ normalFsTypes = /* @__PURE__ */ new Set([
+ "0",
+ "",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "D"
+ ]);
+ name = /* @__PURE__ */ new Map([
+ ["0", "File"],
+ // same as File
+ ["", "OldFile"],
+ ["1", "Link"],
+ ["2", "SymbolicLink"],
+ // Devices and FIFOs aren't fully supported
+ // they are parsed, but skipped when unpacking
+ ["3", "CharacterDevice"],
+ ["4", "BlockDevice"],
+ ["5", "Directory"],
+ ["6", "FIFO"],
+ // same as File
+ ["7", "ContiguousFile"],
+ // pax headers
+ ["g", "GlobalExtendedHeader"],
+ ["x", "ExtendedHeader"],
+ // vendor-specific stuff
+ // skip
+ ["A", "SolarisACL"],
+ // like 5, but with data, which should be skipped
+ ["D", "GNUDumpDir"],
+ // metadata only, skip
+ ["I", "Inode"],
+ // data = link path of next file
+ ["K", "NextFileHasLongLinkpath"],
+ // data = path of next file
+ ["L", "NextFileHasLongPath"],
+ // skip
+ ["M", "ContinuationFile"],
+ // like L
+ ["N", "OldGnuLongPath"],
+ // skip
+ ["S", "SparseFile"],
+ // skip
+ ["V", "TapeVolumeHeader"],
+ // like x
+ ["X", "OldExtendedHeader"]
+ ]);
+ code = new Map(Array.from(name).map((kv) => [kv[1], kv[0]]));
+ }
+});
+
+// node_modules/tar/dist/esm/header.js
+var import_node_path, notNegative, Header, splitPrefix, decString, decDate, numToDate, decNumber, nanUndef, decSmallNumber, MAXNUM, encNumber, encSmallNumber, octalString, padOctal, encDate, NULLS, encString;
+var init_header = __esm({
+ "node_modules/tar/dist/esm/header.js"() {
+ import_node_path = require("node:path");
+ init_large_numbers();
+ init_types();
+ notNegative = (n) => n === void 0 || n < 0 ? void 0 : n;
+ Header = class {
+ cksumValid = false;
+ needPax = false;
+ nullBlock = false;
+ block;
path;
- code;
- syscall = "chdir";
- constructor(path16, code2) {
- super(`${code2}: Cannot cd into '${path16}'`);
- this.path = path16;
- this.code = code2;
+ mode;
+ uid;
+ gid;
+ size;
+ cksum;
+ #type = "Unsupported";
+ linkpath;
+ uname;
+ gname;
+ devmaj = 0;
+ devmin = 0;
+ atime;
+ ctime;
+ mtime;
+ charset;
+ comment;
+ constructor(data, off = 0, ex, gex) {
+ if (Buffer.isBuffer(data)) {
+ this.decode(data, off || 0, ex, gex);
+ } else if (data) {
+ this.#slurp(data);
+ }
}
- get name() {
- return "CwdError";
+ decode(buf, off, ex, gex) {
+ if (!off) {
+ off = 0;
+ }
+ if (!buf || !(buf.length >= off + 512)) {
+ throw new Error("need 512 bytes for header");
+ }
+ const t = decString(buf, off + 156, 1);
+ const isNormalFS = normalFsTypes.has(t);
+ const exForFields = isNormalFS ? ex : void 0;
+ const gexForFields = isNormalFS ? gex : void 0;
+ this.path = exForFields?.path ?? decString(buf, off, 100);
+ this.mode = exForFields?.mode ?? gexForFields?.mode ?? decNumber(buf, off + 100, 8);
+ this.uid = exForFields?.uid ?? gexForFields?.uid ?? decNumber(buf, off + 108, 8);
+ this.gid = exForFields?.gid ?? gexForFields?.gid ?? decNumber(buf, off + 116, 8);
+ this.size = notNegative(exForFields?.size ?? gexForFields?.size ?? decNumber(buf, off + 124, 12));
+ this.mtime = exForFields?.mtime ?? gexForFields?.mtime ?? decDate(buf, off + 136, 12);
+ this.cksum = decNumber(buf, off + 148, 12);
+ if (gexForFields)
+ this.#slurp(gexForFields, true);
+ if (exForFields)
+ this.#slurp(exForFields);
+ if (isCode(t)) {
+ this.#type = t || "0";
+ }
+ if (this.#type === "0" && this.path.slice(-1) === "/") {
+ this.#type = "5";
+ }
+ if (this.#type === "5") {
+ this.size = 0;
+ }
+ this.linkpath = decString(buf, off + 157, 100);
+ if (buf.subarray(off + 257, off + 265).toString() === "ustar\x0000") {
+ this.uname = exForFields?.uname ?? gexForFields?.uname ?? decString(buf, off + 265, 32);
+ this.gname = exForFields?.gname ?? gexForFields?.gname ?? decString(buf, off + 297, 32);
+ this.devmaj = exForFields?.devmaj ?? gexForFields?.devmaj ?? decNumber(buf, off + 329, 8) ?? 0;
+ this.devmin = exForFields?.devmin ?? gexForFields?.devmin ?? decNumber(buf, off + 337, 8) ?? 0;
+ if (buf[off + 475] !== 0) {
+ const prefix = decString(buf, off + 345, 155);
+ this.path = prefix + "/" + this.path;
+ } else {
+ const prefix = decString(buf, off + 345, 130);
+ if (prefix) {
+ this.path = prefix + "/" + this.path;
+ }
+ this.atime = ex?.atime ?? gex?.atime ?? decDate(buf, off + 476, 12);
+ this.ctime = ex?.ctime ?? gex?.ctime ?? decDate(buf, off + 488, 12);
+ }
+ }
+ let sum = 8 * 32;
+ for (let i = off; i < off + 148; i++) {
+ sum += buf[i];
+ }
+ for (let i = off + 156; i < off + 512; i++) {
+ sum += buf[i];
+ }
+ this.cksumValid = sum === this.cksum;
+ if (this.cksum === void 0 && sum === 8 * 32) {
+ this.nullBlock = true;
+ }
+ }
+ #slurp(ex, gex = false) {
+ Object.assign(this, Object.fromEntries(Object.entries(ex).filter(([k, v]) => {
+ return !(v === null || v === void 0 || k === "size" && Number(v) < 0 || k === "path" && gex || k === "linkpath" && gex || k === "global");
+ })));
+ }
+ encode(buf, off = 0) {
+ if (!buf) {
+ buf = this.block = Buffer.alloc(512);
+ }
+ if (this.#type === "Unsupported") {
+ this.#type = "0";
+ }
+ if (!(buf.length >= off + 512)) {
+ throw new Error("need 512 bytes for header");
+ }
+ const prefixSize = this.ctime || this.atime ? 130 : 155;
+ const split = splitPrefix(this.path || "", prefixSize);
+ const path16 = split[0];
+ const prefix = split[1];
+ this.needPax = !!split[2];
+ this.needPax = encString(buf, off, 100, path16) || this.needPax;
+ this.needPax = encNumber(buf, off + 100, 8, this.mode) || this.needPax;
+ this.needPax = encNumber(buf, off + 108, 8, this.uid) || this.needPax;
+ this.needPax = encNumber(buf, off + 116, 8, this.gid) || this.needPax;
+ this.needPax = encNumber(buf, off + 124, 12, this.size) || this.needPax;
+ this.needPax = encDate(buf, off + 136, 12, this.mtime) || this.needPax;
+ buf[off + 156] = Number(this.#type.codePointAt(0));
+ this.needPax = encString(buf, off + 157, 100, this.linkpath) || this.needPax;
+ buf.write("ustar\x0000", off + 257, 8);
+ this.needPax = encString(buf, off + 265, 32, this.uname) || this.needPax;
+ this.needPax = encString(buf, off + 297, 32, this.gname) || this.needPax;
+ this.needPax = encNumber(buf, off + 329, 8, this.devmaj) || this.needPax;
+ this.needPax = encNumber(buf, off + 337, 8, this.devmin) || this.needPax;
+ this.needPax = encString(buf, off + 345, prefixSize, prefix) || this.needPax;
+ if (buf[off + 475] !== 0) {
+ this.needPax = encString(buf, off + 345, 155, prefix) || this.needPax;
+ } else {
+ this.needPax = encString(buf, off + 345, 130, prefix) || this.needPax;
+ this.needPax = encDate(buf, off + 476, 12, this.atime) || this.needPax;
+ this.needPax = encDate(buf, off + 488, 12, this.ctime) || this.needPax;
+ }
+ let sum = 8 * 32;
+ for (let i = off; i < off + 148; i++) {
+ sum += buf[i];
+ }
+ for (let i = off + 156; i < off + 512; i++) {
+ sum += buf[i];
+ }
+ this.cksum = sum;
+ encNumber(buf, off + 148, 8, this.cksum);
+ this.cksumValid = true;
+ return this.needPax;
}
- };
- }
-});
-
-// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/symlink-error.js
-var SymlinkError;
-var init_symlink_error = __esm({
- ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/symlink-error.js"() {
- SymlinkError = class extends Error {
- path;
- symlink;
- syscall = "symlink";
- code = "TAR_SYMLINK_ERROR";
- constructor(symlink, path16) {
- super("TAR_SYMLINK_ERROR: Cannot extract through symbolic link");
- this.symlink = symlink;
- this.path = path16;
+ get type() {
+ return this.#type === "Unsupported" ? this.#type : name.get(this.#type);
}
- get name() {
- return "SymlinkError";
+ get typeKey() {
+ return this.#type;
}
- };
- }
-});
-
-// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/mkdir.js
-var import_node_fs3, import_promises, import_node_path4, checkCwd, mkdir, mkdir_, onmkdir, checkCwdSync, mkdirSync2;
-var init_mkdir = __esm({
- ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/mkdir.js"() {
- init_esm4();
- import_node_fs3 = __toESM(require("node:fs"), 1);
- import_promises = __toESM(require("node:fs/promises"), 1);
- import_node_path4 = __toESM(require("node:path"), 1);
- init_cwd_error();
- init_normalize_windows_path();
- init_symlink_error();
- checkCwd = (dir, cb) => {
- import_node_fs3.default.stat(dir, (er, st) => {
- if (er || !st.isDirectory()) {
- er = new CwdError(dir, er?.code || "ENOTDIR");
+ set type(type) {
+ const c = String(code.get(type));
+ if (isCode(c) || c === "Unsupported") {
+ this.#type = c;
+ } else if (isCode(type)) {
+ this.#type = type;
+ } else {
+ throw new TypeError("invalid entry type: " + type);
}
- cb(er);
- });
+ }
};
- mkdir = (dir, opt, cb) => {
- dir = normalizeWindowsPath(dir);
- const umask = opt.umask ?? 18;
- const mode = opt.mode | 448;
- const needChmod = (mode & umask) !== 0;
- const uid = opt.uid;
- const gid = opt.gid;
- const doChown = typeof uid === "number" && typeof gid === "number" && (uid !== opt.processUid || gid !== opt.processGid);
- const preserve = opt.preserve;
- const unlink = opt.unlink;
- const cwd = normalizeWindowsPath(opt.cwd);
- const done = (er, created) => {
- if (er) {
- cb(er);
- } else {
- if (created && doChown) {
- chownr(created, uid, gid, (er2) => done(er2));
- } else if (needChmod) {
- import_node_fs3.default.chmod(dir, mode, cb);
+ splitPrefix = (p, prefixSize) => {
+ const pathSize = 100;
+ let pp = p;
+ let prefix = "";
+ let ret = void 0;
+ const root = import_node_path.posix.parse(p).root || ".";
+ if (Buffer.byteLength(pp) < pathSize) {
+ ret = [pp, prefix, false];
+ } else {
+ prefix = import_node_path.posix.dirname(pp);
+ pp = import_node_path.posix.basename(pp);
+ do {
+ if (Buffer.byteLength(pp) <= pathSize && Buffer.byteLength(prefix) <= prefixSize) {
+ ret = [pp, prefix, false];
+ } else if (Buffer.byteLength(pp) > pathSize && Buffer.byteLength(prefix) <= prefixSize) {
+ ret = [pp.slice(0, pathSize - 1), prefix, true];
} else {
- cb();
+ pp = import_node_path.posix.join(import_node_path.posix.basename(prefix), pp);
+ prefix = import_node_path.posix.dirname(prefix);
}
+ } while (prefix !== root && ret === void 0);
+ if (!ret) {
+ ret = [p.slice(0, pathSize - 1), "", true];
}
- };
- if (dir === cwd) {
- return checkCwd(dir, done);
- }
- if (preserve) {
- return import_promises.default.mkdir(dir, { mode, recursive: true }).then(
- (made) => done(null, made ?? void 0),
- // oh, ts
- done
- );
}
- const sub = normalizeWindowsPath(import_node_path4.default.relative(cwd, dir));
- const parts = sub.split("/");
- mkdir_(cwd, parts, mode, unlink, cwd, void 0, done);
+ return ret;
};
- mkdir_ = (base, parts, mode, unlink, cwd, created, cb) => {
- if (!parts.length) {
- return cb(null, created);
- }
- const p = parts.shift();
- const part = normalizeWindowsPath(import_node_path4.default.resolve(base + "/" + p));
- import_node_fs3.default.mkdir(part, mode, onmkdir(part, parts, mode, unlink, cwd, created, cb));
+ decString = (buf, off, size) => buf.subarray(off, off + size).toString("utf8").replace(/\0.*/, "");
+ decDate = (buf, off, size) => numToDate(decNumber(buf, off, size));
+ numToDate = (num) => num === void 0 ? void 0 : new Date(num * 1e3);
+ decNumber = (buf, off, size) => Number(buf[off]) & 128 ? parse(buf.subarray(off, off + size)) : decSmallNumber(buf, off, size);
+ nanUndef = (value) => isNaN(value) ? void 0 : value;
+ decSmallNumber = (buf, off, size) => nanUndef(parseInt(buf.subarray(off, off + size).toString("utf8").replace(/\0.*$/, "").trim(), 8));
+ MAXNUM = {
+ 12: 8589934591,
+ 8: 2097151
};
- onmkdir = (part, parts, mode, unlink, cwd, created, cb) => (er) => {
- if (er) {
- import_node_fs3.default.lstat(part, (statEr, st) => {
- if (statEr) {
- statEr.path = statEr.path && normalizeWindowsPath(statEr.path);
- cb(statEr);
- } else if (st.isDirectory()) {
- mkdir_(part, parts, mode, unlink, cwd, created, cb);
- } else if (unlink) {
- import_node_fs3.default.unlink(part, (er2) => {
- if (er2) {
- return cb(er2);
- }
- import_node_fs3.default.mkdir(part, mode, onmkdir(part, parts, mode, unlink, cwd, created, cb));
- });
- } else if (st.isSymbolicLink()) {
- return cb(new SymlinkError(part, part + "/" + parts.join("/")));
- } else {
- cb(er);
- }
- });
- } else {
- created = created || part;
- mkdir_(part, parts, mode, unlink, cwd, created, cb);
+ encNumber = (buf, off, size, num) => num === void 0 ? false : num > MAXNUM[size] || num < 0 ? (encode(num, buf.subarray(off, off + size)), true) : (encSmallNumber(buf, off, size, num), false);
+ encSmallNumber = (buf, off, size, num) => buf.write(octalString(num, size), off, size, "ascii");
+ octalString = (num, size) => padOctal(Math.floor(num).toString(8), size);
+ padOctal = (str, size) => (str.length === size - 1 ? str : new Array(size - str.length - 1).join("0") + str + " ") + "\0";
+ encDate = (buf, off, size, date) => date === void 0 ? false : encNumber(buf, off, size, date.getTime() / 1e3);
+ NULLS = new Array(156).join("\0");
+ encString = (buf, off, size, str) => str === void 0 ? false : (buf.write(str + NULLS, off, size, "utf8"), str.length !== Buffer.byteLength(str) || str.length > size);
+ }
+});
+
+// node_modules/tar/dist/esm/pax.js
+var import_node_path2, Pax, merge, parseKV, parseKVLine;
+var init_pax = __esm({
+ "node_modules/tar/dist/esm/pax.js"() {
+ import_node_path2 = require("node:path");
+ init_header();
+ Pax = class _Pax {
+ atime;
+ mtime;
+ ctime;
+ charset;
+ comment;
+ gid;
+ uid;
+ gname;
+ uname;
+ linkpath;
+ dev;
+ ino;
+ nlink;
+ path;
+ size;
+ mode;
+ global;
+ constructor(obj, global2 = false) {
+ this.atime = obj.atime;
+ this.charset = obj.charset;
+ this.comment = obj.comment;
+ this.ctime = obj.ctime;
+ this.dev = obj.dev;
+ this.gid = obj.gid;
+ this.global = global2;
+ this.gname = obj.gname;
+ this.ino = obj.ino;
+ this.linkpath = obj.linkpath;
+ this.mtime = obj.mtime;
+ this.nlink = obj.nlink;
+ this.path = obj.path;
+ this.size = obj.size;
+ this.uid = obj.uid;
+ this.uname = obj.uname;
}
- };
- checkCwdSync = (dir) => {
- let ok = false;
- let code2 = void 0;
- try {
- ok = import_node_fs3.default.statSync(dir).isDirectory();
- } catch (er) {
- code2 = er?.code;
- } finally {
- if (!ok) {
- throw new CwdError(dir, code2 ?? "ENOTDIR");
+ encode() {
+ const body = this.encodeBody();
+ if (body === "") {
+ return Buffer.allocUnsafe(0);
}
- }
- };
- mkdirSync2 = (dir, opt) => {
- dir = normalizeWindowsPath(dir);
- const umask = opt.umask ?? 18;
- const mode = opt.mode | 448;
- const needChmod = (mode & umask) !== 0;
- const uid = opt.uid;
- const gid = opt.gid;
- const doChown = typeof uid === "number" && typeof gid === "number" && (uid !== opt.processUid || gid !== opt.processGid);
- const preserve = opt.preserve;
- const unlink = opt.unlink;
- const cwd = normalizeWindowsPath(opt.cwd);
- const done = (created2) => {
- if (created2 && doChown) {
- chownrSync(created2, uid, gid);
+ const bodyLen = Buffer.byteLength(body);
+ const bufLen = 512 * Math.ceil(1 + bodyLen / 512);
+ const buf = Buffer.allocUnsafe(bufLen);
+ for (let i = 0; i < 512; i++) {
+ buf[i] = 0;
}
- if (needChmod) {
- import_node_fs3.default.chmodSync(dir, mode);
+ new Header({
+ // XXX split the path
+ // then the path should be PaxHeader + basename, but less than 99,
+ // prepend with the dirname
+ /* c8 ignore start */
+ path: ("PaxHeader/" + (0, import_node_path2.basename)(this.path ?? "")).slice(0, 99),
+ /* c8 ignore stop */
+ mode: this.mode || 420,
+ uid: this.uid,
+ gid: this.gid,
+ size: bodyLen,
+ mtime: this.mtime,
+ type: this.global ? "GlobalExtendedHeader" : "ExtendedHeader",
+ linkpath: "",
+ uname: this.uname || "",
+ gname: this.gname || "",
+ devmaj: 0,
+ devmin: 0,
+ atime: this.atime,
+ ctime: this.ctime
+ }).encode(buf);
+ buf.write(body, 512, bodyLen, "utf8");
+ for (let i = bodyLen + 512; i < buf.length; i++) {
+ buf[i] = 0;
}
- };
- if (dir === cwd) {
- checkCwdSync(cwd);
- return done();
+ return buf;
}
- if (preserve) {
- return done(import_node_fs3.default.mkdirSync(dir, { mode, recursive: true }) ?? void 0);
+ encodeBody() {
+ return this.encodeField("path") + this.encodeField("ctime") + this.encodeField("atime") + this.encodeField("dev") + this.encodeField("ino") + this.encodeField("nlink") + this.encodeField("charset") + this.encodeField("comment") + this.encodeField("gid") + this.encodeField("gname") + this.encodeField("linkpath") + this.encodeField("mtime") + this.encodeField("size") + this.encodeField("uid") + this.encodeField("uname");
}
- const sub = normalizeWindowsPath(import_node_path4.default.relative(cwd, dir));
- const parts = sub.split("/");
- let created = void 0;
- for (let p = parts.shift(), part = cwd; p && (part += "/" + p); p = parts.shift()) {
- part = normalizeWindowsPath(import_node_path4.default.resolve(part));
- try {
- import_node_fs3.default.mkdirSync(part, mode);
- created = created || part;
- } catch (er) {
- const st = import_node_fs3.default.lstatSync(part);
- if (st.isDirectory()) {
- continue;
- } else if (unlink) {
- import_node_fs3.default.unlinkSync(part);
- import_node_fs3.default.mkdirSync(part, mode);
- created = created || part;
- continue;
- } else if (st.isSymbolicLink()) {
- return new SymlinkError(part, part + "/" + parts.join("/"));
- }
+ encodeField(field) {
+ if (this[field] === void 0) {
+ return "";
+ }
+ const r = this[field];
+ const v = r instanceof Date ? r.getTime() / 1e3 : r;
+ const s = " " + (field === "dev" || field === "ino" || field === "nlink" ? "SCHILY." : "") + field + "=" + v + "\n";
+ const byteLen = Buffer.byteLength(s);
+ let digits = Math.floor(Math.log(byteLen) / Math.log(10)) + 1;
+ if (byteLen + digits >= Math.pow(10, digits)) {
+ digits += 1;
}
+ const len = digits + byteLen;
+ return len + s;
+ }
+ static parse(str, ex, g = false) {
+ return new _Pax(merge(parseKV(str), ex), g);
}
- return done(created);
};
- }
-});
-
-// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/strip-absolute-path.js
-var import_node_path5, isAbsolute, parse3, stripAbsolutePath;
-var init_strip_absolute_path = __esm({
- ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/strip-absolute-path.js"() {
- import_node_path5 = require("node:path");
- ({ isAbsolute, parse: parse3 } = import_node_path5.win32);
- stripAbsolutePath = (path16) => {
- let r = "";
- let parsed = parse3(path16);
- while (isAbsolute(path16) || parsed.root) {
- const root = path16.charAt(0) === "/" && path16.slice(0, 4) !== "//?/" ? "/" : parsed.root;
- path16 = path16.slice(root.length);
- r += root;
- parsed = parse3(path16);
+ merge = (a, b) => b ? Object.assign({}, b, a) : a;
+ parseKV = (str) => str.replace(/\n$/, "").split("\n").reduce(parseKVLine, /* @__PURE__ */ Object.create(null));
+ parseKVLine = (set, line) => {
+ const n = parseInt(line, 10);
+ if (n !== Buffer.byteLength(line) + 1) {
+ return set;
}
- return [r, path16];
+ line = line.slice((n + " ").length);
+ const kv = line.split("=");
+ const r = kv.shift();
+ if (!r) {
+ return set;
+ }
+ const k = r.replace(/^SCHILY\.(dev|ino|nlink)/, "$1");
+ const v = kv.join("=").replace(/\0.*/, "");
+ switch (k) {
+ case "path":
+ case "linkpath":
+ case "type":
+ case "charset":
+ case "comment":
+ case "gname":
+ case "uname":
+ set[k] = v;
+ break;
+ case "ctime":
+ case "atime":
+ case "mtime":
+ set[k] = new Date(Number(v) * 1e3);
+ break;
+ case "size":
+ const s = +v;
+ if (s >= 0)
+ set[k] = s;
+ break;
+ case "gid":
+ case "uid":
+ case "dev":
+ case "ino":
+ case "nlink":
+ case "mode":
+ set[k] = +v;
+ break;
+ }
+ return set;
};
}
});
-// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/winchars.js
-var raw, win, toWin, toRaw, encode2, decode;
-var init_winchars = __esm({
- ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/winchars.js"() {
- raw = ["|", "<", ">", "?", ":"];
- win = raw.map((char) => String.fromCharCode(61440 + char.charCodeAt(0)));
- toWin = new Map(raw.map((char, i) => [char, win[i]]));
- toRaw = new Map(win.map((char, i) => [char, raw[i]]));
- encode2 = (s) => raw.reduce((s2, c) => s2.split(c).join(toWin.get(c)), s);
- decode = (s) => win.reduce((s2, c) => s2.split(c).join(toRaw.get(c)), s);
+// node_modules/tar/dist/esm/normalize-windows-path.js
+var platform, normalizeWindowsPath;
+var init_normalize_windows_path = __esm({
+ "node_modules/tar/dist/esm/normalize-windows-path.js"() {
+ platform = process.env.TESTING_TAR_FAKE_PLATFORM || process.platform;
+ normalizeWindowsPath = platform !== "win32" ? (p) => String(p) : (p) => String(p).replaceAll(/\\/g, "/");
}
});
-// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/normalize-unicode.js
-var normalizeCache, MAX, cache, normalizeUnicode;
-var init_normalize_unicode = __esm({
- ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/normalize-unicode.js"() {
- normalizeCache = /* @__PURE__ */ Object.create(null);
- MAX = 1e4;
- cache = /* @__PURE__ */ new Set();
- normalizeUnicode = (s) => {
- if (!cache.has(s)) {
- normalizeCache[s] = s.normalize("NFD").toLocaleLowerCase("en").toLocaleUpperCase("en");
- } else {
- cache.delete(s);
- }
- cache.add(s);
- const ret = normalizeCache[s];
- let i = cache.size - MAX;
- if (i > MAX / 10) {
- for (const s2 of cache) {
- cache.delete(s2);
- delete normalizeCache[s2];
- if (--i <= 0)
+// node_modules/tar/dist/esm/read-entry.js
+var ReadEntry;
+var init_read_entry = __esm({
+ "node_modules/tar/dist/esm/read-entry.js"() {
+ init_esm();
+ init_normalize_windows_path();
+ ReadEntry = class extends Minipass {
+ extended;
+ globalExtended;
+ header;
+ startBlockSize;
+ blockRemain;
+ remain;
+ type;
+ meta = false;
+ ignore = false;
+ path;
+ mode;
+ uid;
+ gid;
+ uname;
+ gname;
+ size = 0;
+ mtime;
+ atime;
+ ctime;
+ linkpath;
+ dev;
+ ino;
+ nlink;
+ invalid = false;
+ absolute;
+ unsupported = false;
+ constructor(header, ex, gex) {
+ super({});
+ this.pause();
+ this.extended = ex;
+ this.globalExtended = gex;
+ this.header = header;
+ this.remain = header.size ?? 0;
+ this.startBlockSize = 512 * Math.ceil(this.remain / 512);
+ this.blockRemain = this.startBlockSize;
+ this.type = header.type;
+ switch (this.type) {
+ case "File":
+ case "OldFile":
+ case "Link":
+ case "SymbolicLink":
+ case "CharacterDevice":
+ case "BlockDevice":
+ case "Directory":
+ case "FIFO":
+ case "ContiguousFile":
+ case "GNUDumpDir":
break;
+ case "NextFileHasLongLinkpath":
+ case "NextFileHasLongPath":
+ case "OldGnuLongPath":
+ case "GlobalExtendedHeader":
+ case "ExtendedHeader":
+ case "OldExtendedHeader":
+ this.meta = true;
+ break;
+ // NOTE: gnutar and bsdtar treat unrecognized types as 'File'
+ // it may be worth doing the same, but with a warning.
+ default:
+ this.ignore = true;
}
- }
- return ret;
- };
- }
-});
-
-// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/path-reservations.js
-var import_node_path6, platform3, isWindows2, getDirs, PathReservations;
-var init_path_reservations = __esm({
- ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/path-reservations.js"() {
- import_node_path6 = require("node:path");
- init_normalize_unicode();
- init_strip_trailing_slashes();
- platform3 = process.env.TESTING_TAR_FAKE_PLATFORM || process.platform;
- isWindows2 = platform3 === "win32";
- getDirs = (path16) => {
- const dirs = path16.split("/").slice(0, -1).reduce((set, path17) => {
- const s = set[set.length - 1];
- if (s !== void 0) {
- path17 = (0, import_node_path6.join)(s, path17);
- }
- set.push(path17 || "/");
- return set;
- }, []);
- return dirs;
- };
- PathReservations = class {
- // path => [function or Set]
- // A Set object means a directory reservation
- // A fn is a direct reservation on that path
- #queues = /* @__PURE__ */ new Map();
- // fn => {paths:[path,...], dirs:[path, ...]}
- #reservations = /* @__PURE__ */ new Map();
- // functions currently running
- #running = /* @__PURE__ */ new Set();
- reserve(paths, fn2) {
- paths = isWindows2 ? ["win32 parallelization disabled"] : paths.map((p) => {
- return stripTrailingSlashes((0, import_node_path6.join)(normalizeUnicode(p)));
- });
- const dirs = new Set(paths.map((path16) => getDirs(path16)).reduce((a, b) => a.concat(b)));
- this.#reservations.set(fn2, { dirs, paths });
- for (const p of paths) {
- const q = this.#queues.get(p);
- if (!q) {
- this.#queues.set(p, [fn2]);
- } else {
- q.push(fn2);
- }
+ if (!header.path) {
+ throw new Error("no path provided for tar.ReadEntry");
}
- for (const dir of dirs) {
- const q = this.#queues.get(dir);
- if (!q) {
- this.#queues.set(dir, [/* @__PURE__ */ new Set([fn2])]);
- } else {
- const l = q[q.length - 1];
- if (l instanceof Set) {
- l.add(fn2);
- } else {
- q.push(/* @__PURE__ */ new Set([fn2]));
- }
- }
+ this.path = normalizeWindowsPath(header.path);
+ this.mode = header.mode;
+ if (this.mode) {
+ this.mode = this.mode & 4095;
}
- return this.#run(fn2);
- }
- // return the queues for each path the function cares about
- // fn => {paths, dirs}
- #getQueues(fn2) {
- const res = this.#reservations.get(fn2);
- if (!res) {
- throw new Error("function does not have any path reservations");
+ this.uid = header.uid;
+ this.gid = header.gid;
+ this.uname = header.uname;
+ this.gname = header.gname;
+ this.size = this.remain;
+ this.mtime = header.mtime;
+ this.atime = header.atime;
+ this.ctime = header.ctime;
+ this.linkpath = header.linkpath ? normalizeWindowsPath(header.linkpath) : void 0;
+ this.uname = header.uname;
+ this.gname = header.gname;
+ if (ex) {
+ this.#slurp(ex);
}
- return {
- paths: res.paths.map((path16) => this.#queues.get(path16)),
- dirs: [...res.dirs].map((path16) => this.#queues.get(path16))
- };
- }
- // check if fn is first in line for all its paths, and is
- // included in the first set for all its dir queues
- check(fn2) {
- const { paths, dirs } = this.#getQueues(fn2);
- return paths.every((q) => q && q[0] === fn2) && dirs.every((q) => q && q[0] instanceof Set && q[0].has(fn2));
- }
- // run the function if it's first in line and not already running
- #run(fn2) {
- if (this.#running.has(fn2) || !this.check(fn2)) {
- return false;
+ if (gex) {
+ this.#slurp(gex, true);
}
- this.#running.add(fn2);
- fn2(() => this.#clear(fn2));
- return true;
}
- #clear(fn2) {
- if (!this.#running.has(fn2)) {
- return false;
- }
- const res = this.#reservations.get(fn2);
- if (!res) {
- throw new Error("invalid reservation");
+ write(data) {
+ const writeLen = data.length;
+ if (writeLen > this.blockRemain) {
+ throw new Error("writing more to entry than is appropriate");
}
- const { paths, dirs } = res;
- const next = /* @__PURE__ */ new Set();
- for (const path16 of paths) {
- const q = this.#queues.get(path16);
- if (!q || q?.[0] !== fn2) {
- continue;
- }
- const q0 = q[1];
- if (!q0) {
- this.#queues.delete(path16);
- continue;
- }
- q.shift();
- if (typeof q0 === "function") {
- next.add(q0);
- } else {
- for (const f of q0) {
- next.add(f);
- }
- }
+ const r = this.remain;
+ const br = this.blockRemain;
+ this.remain = Math.max(0, r - writeLen);
+ this.blockRemain = Math.max(0, br - writeLen);
+ if (this.ignore) {
+ return true;
}
- for (const dir of dirs) {
- const q = this.#queues.get(dir);
- const q0 = q?.[0];
- if (!q || !(q0 instanceof Set))
- continue;
- if (q0.size === 1 && q.length === 1) {
- this.#queues.delete(dir);
- continue;
- } else if (q0.size === 1) {
- q.shift();
- const n = q[0];
- if (typeof n === "function") {
- next.add(n);
- }
- } else {
- q0.delete(fn2);
- }
+ if (r >= writeLen) {
+ return super.write(data);
}
- this.#running.delete(fn2);
- next.forEach((fn3) => this.#run(fn3));
- return true;
+ return super.write(data.subarray(0, r));
+ }
+ #slurp(ex, gex = false) {
+ if (ex.path)
+ ex.path = normalizeWindowsPath(ex.path);
+ if (ex.linkpath)
+ ex.linkpath = normalizeWindowsPath(ex.linkpath);
+ Object.assign(this, Object.fromEntries(Object.entries(ex).filter(([k, v]) => {
+ return !(v === null || v === void 0 || k === "path" && gex);
+ })));
}
};
}
});
-// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/unpack.js
-var import_node_assert, import_node_crypto, import_node_fs4, import_node_path7, ONENTRY, CHECKFS, CHECKFS2, ISREUSABLE, MAKEFS, FILE, DIRECTORY, LINK, SYMLINK, HARDLINK, UNSUPPORTED, CHECKPATH, STRIPABSOLUTEPATH, MKDIR, ONERROR, PENDING, PEND, UNPEND, ENDED2, MAYBECLOSE, SKIP, DOCHOWN, UID, GID, CHECKED_CWD, platform4, isWindows3, DEFAULT_MAX_DEPTH, unlinkFile, unlinkFileSync, uint32, Unpack, callSync, UnpackSync;
-var init_unpack = __esm({
- ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/unpack.js"() {
- init_esm2();
- import_node_assert = __toESM(require("node:assert"), 1);
- import_node_crypto = require("node:crypto");
- import_node_fs4 = __toESM(require("node:fs"), 1);
- import_node_path7 = __toESM(require("node:path"), 1);
- init_get_write_flag();
- init_mkdir();
- init_normalize_windows_path();
- init_parse();
- init_strip_absolute_path();
- init_winchars();
- init_path_reservations();
- ONENTRY = Symbol("onEntry");
- CHECKFS = Symbol("checkFs");
- CHECKFS2 = Symbol("checkFs2");
- ISREUSABLE = Symbol("isReusable");
- MAKEFS = Symbol("makeFs");
- FILE = Symbol("file");
- DIRECTORY = Symbol("directory");
- LINK = Symbol("link");
- SYMLINK = Symbol("symlink");
- HARDLINK = Symbol("hardlink");
- UNSUPPORTED = Symbol("unsupported");
- CHECKPATH = Symbol("checkPath");
- STRIPABSOLUTEPATH = Symbol("stripAbsolutePath");
- MKDIR = Symbol("mkdir");
- ONERROR = Symbol("onError");
- PENDING = Symbol("pending");
- PEND = Symbol("pend");
- UNPEND = Symbol("unpend");
- ENDED2 = Symbol("ended");
- MAYBECLOSE = Symbol("maybeClose");
- SKIP = Symbol("skip");
- DOCHOWN = Symbol("doChown");
- UID = Symbol("uid");
- GID = Symbol("gid");
- CHECKED_CWD = Symbol("checkedCwd");
- platform4 = process.env.TESTING_TAR_FAKE_PLATFORM || process.platform;
- isWindows3 = platform4 === "win32";
- DEFAULT_MAX_DEPTH = 1024;
- unlinkFile = (path16, cb) => {
- if (!isWindows3) {
- return import_node_fs4.default.unlink(path16, cb);
+// node_modules/tar/dist/esm/warn-method.js
+var warnMethod;
+var init_warn_method = __esm({
+ "node_modules/tar/dist/esm/warn-method.js"() {
+ warnMethod = (self2, code2, message, data = {}) => {
+ if (self2.file) {
+ data.file = self2.file;
}
- const name2 = path16 + ".DELETE." + (0, import_node_crypto.randomBytes)(16).toString("hex");
- import_node_fs4.default.rename(path16, name2, (er) => {
- if (er) {
- return cb(er);
+ if (self2.cwd) {
+ data.cwd = self2.cwd;
+ }
+ data.code = message instanceof Error && message.code || code2;
+ data.tarCode = code2;
+ if (!self2.strict && data.recoverable !== false) {
+ if (message instanceof Error) {
+ data = Object.assign(message, data);
+ message = message.message;
}
- import_node_fs4.default.unlink(name2, cb);
- });
- };
- unlinkFileSync = (path16) => {
- if (!isWindows3) {
- return import_node_fs4.default.unlinkSync(path16);
+ self2.emit("warn", code2, message, data);
+ } else if (message instanceof Error) {
+ self2.emit("error", Object.assign(message, data));
+ } else {
+ self2.emit("error", Object.assign(new Error(`${code2}: ${message}`), data));
}
- const name2 = path16 + ".DELETE." + (0, import_node_crypto.randomBytes)(16).toString("hex");
- import_node_fs4.default.renameSync(path16, name2);
- import_node_fs4.default.unlinkSync(name2);
};
- uint32 = (a, b, c) => a !== void 0 && a === a >>> 0 ? a : b !== void 0 && b === b >>> 0 ? b : c;
- Unpack = class extends Parser {
- [ENDED2] = false;
- [CHECKED_CWD] = false;
- [PENDING] = 0;
- reservations = new PathReservations();
- transform;
+ }
+});
+
+// node_modules/tar/dist/esm/parse.js
+var import_events3, maxMetaEntrySize, gzipHeader, zstdHeader, ZIP_HEADER_LEN, STATE, WRITEENTRY, READENTRY, NEXTENTRY, PROCESSENTRY, EX, GEX, META, EMITMETA, BUFFER2, QUEUE, ENDED, EMITTEDEND, EMIT, UNZIP, CONSUMECHUNK, CONSUMECHUNKSUB, CONSUMEBODY, CONSUMEMETA, CONSUMEHEADER, CONSUMING, BUFFERCONCAT, MAYBEEND, WRITING, ABORTED2, DONE, SAW_VALID_ENTRY, SAW_NULL_BLOCK, SAW_EOF, CLOSESTREAM, MAX_DECOMPRESSION_RATIO, COMPRESSEDBYTESREAD, DECOMPRESSEDBYTESREAD, CHECKDECOMPRESSIONRATIO, noop2, Parser;
+var init_parse = __esm({
+ "node_modules/tar/dist/esm/parse.js"() {
+ import_events3 = require("events");
+ init_esm3();
+ init_header();
+ init_pax();
+ init_read_entry();
+ init_warn_method();
+ maxMetaEntrySize = 1024 * 1024;
+ gzipHeader = Buffer.from([31, 139]);
+ zstdHeader = Buffer.from([40, 181, 47, 253]);
+ ZIP_HEADER_LEN = Math.max(gzipHeader.length, zstdHeader.length);
+ STATE = /* @__PURE__ */ Symbol("state");
+ WRITEENTRY = /* @__PURE__ */ Symbol("writeEntry");
+ READENTRY = /* @__PURE__ */ Symbol("readEntry");
+ NEXTENTRY = /* @__PURE__ */ Symbol("nextEntry");
+ PROCESSENTRY = /* @__PURE__ */ Symbol("processEntry");
+ EX = /* @__PURE__ */ Symbol("extendedHeader");
+ GEX = /* @__PURE__ */ Symbol("globalExtendedHeader");
+ META = /* @__PURE__ */ Symbol("meta");
+ EMITMETA = /* @__PURE__ */ Symbol("emitMeta");
+ BUFFER2 = /* @__PURE__ */ Symbol("buffer");
+ QUEUE = /* @__PURE__ */ Symbol("queue");
+ ENDED = /* @__PURE__ */ Symbol("ended");
+ EMITTEDEND = /* @__PURE__ */ Symbol("emittedEnd");
+ EMIT = /* @__PURE__ */ Symbol("emit");
+ UNZIP = /* @__PURE__ */ Symbol("unzip");
+ CONSUMECHUNK = /* @__PURE__ */ Symbol("consumeChunk");
+ CONSUMECHUNKSUB = /* @__PURE__ */ Symbol("consumeChunkSub");
+ CONSUMEBODY = /* @__PURE__ */ Symbol("consumeBody");
+ CONSUMEMETA = /* @__PURE__ */ Symbol("consumeMeta");
+ CONSUMEHEADER = /* @__PURE__ */ Symbol("consumeHeader");
+ CONSUMING = /* @__PURE__ */ Symbol("consuming");
+ BUFFERCONCAT = /* @__PURE__ */ Symbol("bufferConcat");
+ MAYBEEND = /* @__PURE__ */ Symbol("maybeEnd");
+ WRITING = /* @__PURE__ */ Symbol("writing");
+ ABORTED2 = /* @__PURE__ */ Symbol("aborted");
+ DONE = /* @__PURE__ */ Symbol("onDone");
+ SAW_VALID_ENTRY = /* @__PURE__ */ Symbol("sawValidEntry");
+ SAW_NULL_BLOCK = /* @__PURE__ */ Symbol("sawNullBlock");
+ SAW_EOF = /* @__PURE__ */ Symbol("sawEOF");
+ CLOSESTREAM = /* @__PURE__ */ Symbol("closeStream");
+ MAX_DECOMPRESSION_RATIO = 1e3;
+ COMPRESSEDBYTESREAD = /* @__PURE__ */ Symbol("compressedBytesRead");
+ DECOMPRESSEDBYTESREAD = /* @__PURE__ */ Symbol("decompressedBytesRead");
+ CHECKDECOMPRESSIONRATIO = /* @__PURE__ */ Symbol("checkDecompressionRatio");
+ noop2 = () => true;
+ Parser = class extends import_events3.EventEmitter {
+ file;
+ strict;
+ maxMetaEntrySize;
+ filter;
+ brotli;
+ zstd;
+ maxDecompressionRatio;
writable = true;
readable = false;
- uid;
- gid;
- setOwner;
- preserveOwner;
- processGid;
- processUid;
- maxDepth;
- forceChown;
- win32;
- newer;
- keep;
- noMtime;
- preservePaths;
- unlink;
- cwd;
- strip;
- processUmask;
- umask;
- dmode;
- fmode;
- chmod;
+ [QUEUE] = [];
+ [BUFFER2];
+ [READENTRY];
+ [WRITEENTRY];
+ [STATE] = "begin";
+ [META] = "";
+ [EX];
+ [GEX];
+ [ENDED] = false;
+ [UNZIP];
+ [ABORTED2] = false;
+ [SAW_VALID_ENTRY];
+ [SAW_NULL_BLOCK] = false;
+ [SAW_EOF] = false;
+ [WRITING] = false;
+ [CONSUMING] = false;
+ [EMITTEDEND] = false;
+ [COMPRESSEDBYTESREAD] = 0;
+ [DECOMPRESSEDBYTESREAD] = 0;
constructor(opt = {}) {
- opt.ondone = () => {
- this[ENDED2] = true;
- this[MAYBECLOSE]();
- };
- super(opt);
- this.transform = opt.transform;
- this.chmod = !!opt.chmod;
- if (typeof opt.uid === "number" || typeof opt.gid === "number") {
- if (typeof opt.uid !== "number" || typeof opt.gid !== "number") {
- throw new TypeError("cannot set owner without number uid and gid");
- }
- if (opt.preserveOwner) {
- throw new TypeError("cannot preserve owner in archive and also set owner explicitly");
+ super();
+ this.file = opt.file || "";
+ this.on(DONE, () => {
+ if (this[STATE] === "begin" || this[SAW_VALID_ENTRY] === false) {
+ this.warn("TAR_BAD_ARCHIVE", "Unrecognized archive format");
}
- this.uid = opt.uid;
- this.gid = opt.gid;
- this.setOwner = true;
+ });
+ if (opt.ondone) {
+ this.on(DONE, opt.ondone);
} else {
- this.uid = void 0;
- this.gid = void 0;
- this.setOwner = false;
+ this.on(DONE, () => {
+ this.emit("prefinish");
+ this.emit("finish");
+ this.emit("end");
+ });
}
- if (opt.preserveOwner === void 0 && typeof opt.uid !== "number") {
- this.preserveOwner = !!(process.getuid && process.getuid() === 0);
- } else {
- this.preserveOwner = !!opt.preserveOwner;
+ this.strict = !!opt.strict;
+ this.maxDecompressionRatio = typeof opt.maxDecompressionRatio === "number" ? opt.maxDecompressionRatio : MAX_DECOMPRESSION_RATIO;
+ this.maxMetaEntrySize = opt.maxMetaEntrySize || maxMetaEntrySize;
+ this.filter = typeof opt.filter === "function" ? opt.filter : noop2;
+ const isTBR = opt.file && (opt.file.endsWith(".tar.br") || opt.file.endsWith(".tbr"));
+ this.brotli = !(opt.gzip || opt.zstd) && opt.brotli !== void 0 ? opt.brotli : isTBR ? void 0 : false;
+ const isTZST = opt.file && (opt.file.endsWith(".tar.zst") || opt.file.endsWith(".tzst"));
+ this.zstd = !(opt.gzip || opt.brotli) && opt.zstd !== void 0 ? opt.zstd : isTZST ? true : void 0;
+ this.on("end", () => this[CLOSESTREAM]());
+ if (typeof opt.onwarn === "function") {
+ this.on("warn", opt.onwarn);
+ }
+ if (typeof opt.onReadEntry === "function") {
+ this.on("entry", opt.onReadEntry);
}
- this.processUid = (this.preserveOwner || this.setOwner) && process.getuid ? process.getuid() : void 0;
- this.processGid = (this.preserveOwner || this.setOwner) && process.getgid ? process.getgid() : void 0;
- this.maxDepth = typeof opt.maxDepth === "number" ? opt.maxDepth : DEFAULT_MAX_DEPTH;
- this.forceChown = opt.forceChown === true;
- this.win32 = !!opt.win32 || isWindows3;
- this.newer = !!opt.newer;
- this.keep = !!opt.keep;
- this.noMtime = !!opt.noMtime;
- this.preservePaths = !!opt.preservePaths;
- this.unlink = !!opt.unlink;
- this.cwd = normalizeWindowsPath(import_node_path7.default.resolve(opt.cwd || process.cwd()));
- this.strip = Number(opt.strip) || 0;
- this.processUmask = !this.chmod ? 0 : typeof opt.processUmask === "number" ? opt.processUmask : process.umask();
- this.umask = typeof opt.umask === "number" ? opt.umask : this.processUmask;
- this.dmode = opt.dmode || 511 & ~this.umask;
- this.fmode = opt.fmode || 438 & ~this.umask;
- this.on("entry", (entry) => this[ONENTRY](entry));
}
- // a bad or damaged archive is a warning for Parser, but an error
- // when extracting. Mark those errors as unrecoverable, because
- // the Unpack contract cannot be met.
- warn(code2, msg, data = {}) {
- if (code2 === "TAR_BAD_ARCHIVE" || code2 === "TAR_ABORT") {
- data.recoverable = false;
- }
- return super.warn(code2, msg, data);
+ warn(code2, message, data = {}) {
+ warnMethod(this, code2, message, data);
}
- [MAYBECLOSE]() {
- if (this[ENDED2] && this[PENDING] === 0) {
- this.emit("prefinish");
- this.emit("finish");
- this.emit("end");
+ [CONSUMEHEADER](chunk, position) {
+ if (this[SAW_VALID_ENTRY] === void 0) {
+ this[SAW_VALID_ENTRY] = false;
}
- }
- // return false if we need to skip this file
- // return true if the field was successfully sanitized
- [STRIPABSOLUTEPATH](entry, field) {
- const p = entry[field];
- if (!p || this.preservePaths)
- return true;
- const parts = p.split("/");
- if (parts.includes("..") || /* c8 ignore next */
- isWindows3 && /^[a-z]:\.\.$/i.test(parts[0] ?? "")) {
- if (field === "path") {
- this.warn("TAR_ENTRY_ERROR", `${field} contains '..'`, {
- entry,
- [field]: p
- });
- return false;
+ let header;
+ try {
+ header = new Header(chunk, position, this[EX], this[GEX]);
+ } catch (er) {
+ return this.warn("TAR_ENTRY_INVALID", er);
+ }
+ if (header.nullBlock) {
+ if (this[SAW_NULL_BLOCK]) {
+ this[SAW_EOF] = true;
+ if (this[STATE] === "begin") {
+ this[STATE] = "header";
+ }
+ this[EMIT]("eof");
} else {
- const entryDir = import_node_path7.default.posix.dirname(entry.path);
- const resolved = import_node_path7.default.posix.normalize(import_node_path7.default.posix.join(entryDir, p));
- if (resolved.startsWith("../") || resolved === "..") {
- this.warn("TAR_ENTRY_ERROR", `${field} escapes extraction directory`, {
- entry,
- [field]: p
+ this[SAW_NULL_BLOCK] = true;
+ this[EMIT]("nullBlock");
+ }
+ } else {
+ this[SAW_NULL_BLOCK] = false;
+ if (!header.cksumValid) {
+ this.warn("TAR_ENTRY_INVALID", "checksum failure", { header });
+ } else if (!header.path) {
+ this.warn("TAR_ENTRY_INVALID", "path is required", { header });
+ } else {
+ const type = header.type;
+ if (/^(Symbolic)?Link$/.test(type) && !header.linkpath) {
+ this.warn("TAR_ENTRY_INVALID", "linkpath required", {
+ header
});
- return false;
+ } else if (!/^(Symbolic)?Link$/.test(type) && !/^(Global)?ExtendedHeader$/.test(type) && header.linkpath) {
+ this.warn("TAR_ENTRY_INVALID", "linkpath forbidden", {
+ header
+ });
+ } else {
+ const entry = this[WRITEENTRY] = new ReadEntry(header, this[EX], this[GEX]);
+ if (!this[SAW_VALID_ENTRY]) {
+ if (entry.remain) {
+ const onend = () => {
+ if (!entry.invalid) {
+ this[SAW_VALID_ENTRY] = true;
+ }
+ };
+ entry.on("end", onend);
+ } else {
+ this[SAW_VALID_ENTRY] = true;
+ }
+ }
+ if (entry.meta) {
+ if (entry.size > this.maxMetaEntrySize) {
+ entry.ignore = true;
+ this[EMIT]("ignoredEntry", entry);
+ this[STATE] = "ignore";
+ entry.resume();
+ } else if (entry.size > 0) {
+ this[META] = "";
+ entry.on("data", (c) => this[META] += c);
+ this[STATE] = "meta";
+ }
+ } else {
+ this[EX] = void 0;
+ entry.ignore = entry.ignore || !this.filter(entry.path, entry);
+ if (entry.ignore) {
+ this[EMIT]("ignoredEntry", entry);
+ this[STATE] = entry.remain ? "ignore" : "header";
+ entry.resume();
+ } else {
+ if (entry.remain) {
+ this[STATE] = "body";
+ } else {
+ this[STATE] = "header";
+ entry.end();
+ }
+ if (!this[READENTRY]) {
+ this[QUEUE].push(entry);
+ this[NEXTENTRY]();
+ } else {
+ this[QUEUE].push(entry);
+ }
+ }
+ }
}
}
}
- const [root, stripped] = stripAbsolutePath(p);
- if (root) {
- entry[field] = String(stripped);
- this.warn("TAR_ENTRY_INFO", `stripping ${root} from absolute ${field}`, {
- entry,
- [field]: p
- });
- }
- return true;
}
- [CHECKPATH](entry) {
- const p = normalizeWindowsPath(entry.path);
- const parts = p.split("/");
- if (this.strip) {
- if (parts.length < this.strip) {
- return false;
+ [CLOSESTREAM]() {
+ queueMicrotask(() => this.emit("close"));
+ }
+ [PROCESSENTRY](entry) {
+ let go = true;
+ if (!entry) {
+ this[READENTRY] = void 0;
+ go = false;
+ } else if (Array.isArray(entry)) {
+ const [ev, ...args] = entry;
+ this.emit(ev, ...args);
+ } else {
+ this[READENTRY] = entry;
+ this.emit("entry", entry);
+ if (!entry.emittedEnd) {
+ entry.on("end", () => this[NEXTENTRY]());
+ go = false;
}
- if (entry.type === "Link") {
- const linkparts = normalizeWindowsPath(String(entry.linkpath)).split("/");
- if (linkparts.length >= this.strip) {
- entry.linkpath = linkparts.slice(this.strip).join("/");
- } else {
- return false;
+ }
+ return go;
+ }
+ [NEXTENTRY]() {
+ do {
+ } while (this[PROCESSENTRY](this[QUEUE].shift()));
+ if (this[QUEUE].length === 0) {
+ const re = this[READENTRY];
+ const drainNow = !re || re.flowing || re.size === re.remain;
+ if (drainNow) {
+ if (!this[WRITING]) {
+ this.emit("drain");
}
+ } else {
+ re.once("drain", () => this.emit("drain"));
}
- parts.splice(0, this.strip);
- entry.path = parts.join("/");
}
- if (isFinite(this.maxDepth) && parts.length > this.maxDepth) {
- this.warn("TAR_ENTRY_ERROR", "path excessively deep", {
- entry,
- path: p,
- depth: parts.length,
- maxDepth: this.maxDepth
- });
- return false;
+ }
+ [CONSUMEBODY](chunk, position) {
+ const entry = this[WRITEENTRY];
+ if (!entry) {
+ throw new Error("attempt to consume body without entry??");
}
- if (!this[STRIPABSOLUTEPATH](entry, "path") || !this[STRIPABSOLUTEPATH](entry, "linkpath")) {
- return false;
+ const br = entry.blockRemain ?? 0;
+ const c = br >= chunk.length && position === 0 ? chunk : chunk.subarray(position, position + br);
+ entry.write(c);
+ if (!entry.blockRemain) {
+ this[STATE] = "header";
+ this[WRITEENTRY] = void 0;
+ entry.end();
+ }
+ return c.length;
+ }
+ [CONSUMEMETA](chunk, position) {
+ const entry = this[WRITEENTRY];
+ const ret = this[CONSUMEBODY](chunk, position);
+ if (!this[WRITEENTRY] && entry) {
+ this[EMITMETA](entry);
}
- if (import_node_path7.default.isAbsolute(entry.path)) {
- entry.absolute = normalizeWindowsPath(import_node_path7.default.resolve(entry.path));
+ return ret;
+ }
+ [EMIT](ev, data, extra) {
+ if (this[QUEUE].length === 0 && !this[READENTRY]) {
+ this.emit(ev, data, extra);
} else {
- entry.absolute = normalizeWindowsPath(import_node_path7.default.resolve(this.cwd, entry.path));
+ this[QUEUE].push([ev, data, extra]);
}
- if (!this.preservePaths && typeof entry.absolute === "string" && entry.absolute.indexOf(this.cwd + "/") !== 0 && entry.absolute !== this.cwd) {
- this.warn("TAR_ENTRY_ERROR", "path escaped extraction target", {
- entry,
- path: normalizeWindowsPath(entry.path),
- resolvedPath: entry.absolute,
- cwd: this.cwd
- });
- return false;
+ }
+ [EMITMETA](entry) {
+ this[EMIT]("meta", this[META]);
+ switch (entry.type) {
+ case "ExtendedHeader":
+ case "OldExtendedHeader":
+ this[EX] = Pax.parse(this[META], this[EX], false);
+ break;
+ case "GlobalExtendedHeader":
+ this[GEX] = Pax.parse(this[META], this[GEX], true);
+ break;
+ case "NextFileHasLongPath":
+ case "OldGnuLongPath": {
+ const ex = this[EX] ?? /* @__PURE__ */ Object.create(null);
+ this[EX] = ex;
+ ex.path = this[META].replace(/\0.*/, "");
+ break;
+ }
+ case "NextFileHasLongLinkpath": {
+ const ex = this[EX] || /* @__PURE__ */ Object.create(null);
+ this[EX] = ex;
+ ex.linkpath = this[META].replace(/\0.*/, "");
+ break;
+ }
+ /* c8 ignore start */
+ default:
+ throw new Error("unknown meta: " + entry.type);
+ }
+ }
+ abort(error) {
+ if (this[ABORTED2]) {
+ return;
}
- if (entry.absolute === this.cwd && entry.type !== "Directory" && entry.type !== "GNUDumpDir") {
- return false;
+ if (this[UNZIP]) {
+ const u = this[UNZIP];
+ u.write = () => true;
+ u.end = () => u;
+ u.emit = () => false;
+ u.destroy?.();
}
- if (this.win32) {
- const { root: aRoot } = import_node_path7.default.win32.parse(String(entry.absolute));
- entry.absolute = aRoot + encode2(String(entry.absolute).slice(aRoot.length));
- const { root: pRoot } = import_node_path7.default.win32.parse(entry.path);
- entry.path = pRoot + encode2(entry.path.slice(pRoot.length));
+ this[ABORTED2] = true;
+ this.emit("abort", error);
+ this.warn("TAR_ABORT", error, { recoverable: false });
+ }
+ [CHECKDECOMPRESSIONRATIO](chunk) {
+ this[DECOMPRESSEDBYTESREAD] += chunk.length;
+ const ratio = this[DECOMPRESSEDBYTESREAD] / this[COMPRESSEDBYTESREAD];
+ if (ratio > this.maxDecompressionRatio) {
+ this.abort(new Error(`max decompression ratio exceeded: ${ratio.toFixed(2)} > ${this.maxDecompressionRatio}`));
+ return false;
}
return true;
}
- [ONENTRY](entry) {
- if (!this[CHECKPATH](entry)) {
- return entry.resume();
+ write(chunk, encoding, cb) {
+ if (typeof encoding === "function") {
+ cb = encoding;
+ encoding = void 0;
}
- import_node_assert.default.equal(typeof entry.absolute, "string");
- switch (entry.type) {
- case "Directory":
- case "GNUDumpDir":
- if (entry.mode) {
- entry.mode = entry.mode | 448;
- }
- // eslint-disable-next-line no-fallthrough
- case "File":
- case "OldFile":
- case "ContiguousFile":
- case "Link":
- case "SymbolicLink":
- return this[CHECKFS](entry);
- case "CharacterDevice":
- case "BlockDevice":
- case "FIFO":
- default:
- return this[UNSUPPORTED](entry);
+ if (typeof chunk === "string") {
+ chunk = Buffer.from(
+ chunk,
+ /* c8 ignore next */
+ typeof encoding === "string" ? encoding : "utf8"
+ );
}
- }
- [ONERROR](er, entry) {
- if (er.name === "CwdError") {
- this.emit("error", er);
- } else {
- this.warn("TAR_ENTRY_ERROR", er, { entry });
- this[UNPEND]();
- entry.resume();
+ if (this[ABORTED2]) {
+ cb?.();
+ return false;
}
- }
- [MKDIR](dir, mode, cb) {
- mkdir(normalizeWindowsPath(dir), {
- uid: this.uid,
- gid: this.gid,
- processUid: this.processUid,
- processGid: this.processGid,
- umask: this.processUmask,
- preserve: this.preservePaths,
- unlink: this.unlink,
- cwd: this.cwd,
- mode
- }, cb);
- }
- [DOCHOWN](entry) {
- return this.forceChown || this.preserveOwner && (typeof entry.uid === "number" && entry.uid !== this.processUid || typeof entry.gid === "number" && entry.gid !== this.processGid) || typeof this.uid === "number" && this.uid !== this.processUid || typeof this.gid === "number" && this.gid !== this.processGid;
- }
- [UID](entry) {
- return uint32(this.uid, entry.uid, this.processUid);
- }
- [GID](entry) {
- return uint32(this.gid, entry.gid, this.processGid);
- }
- [FILE](entry, fullyDone) {
- const mode = typeof entry.mode === "number" ? entry.mode & 4095 : this.fmode;
- const stream = new WriteStream(String(entry.absolute), {
- // slight lie, but it can be numeric flags
- flags: getWriteFlag(entry.size),
- mode,
- autoClose: false
- });
- stream.on("error", (er) => {
- if (stream.fd) {
- import_node_fs4.default.close(stream.fd, () => {
- });
+ const needSniff = this[UNZIP] === void 0 || this.brotli === void 0 && this[UNZIP] === false;
+ if (needSniff && chunk) {
+ if (this[BUFFER2]) {
+ chunk = Buffer.concat([this[BUFFER2], chunk]);
+ this[BUFFER2] = void 0;
}
- stream.write = () => true;
- this[ONERROR](er, entry);
- fullyDone();
- });
- let actions = 1;
- const done = (er) => {
- if (er) {
- if (stream.fd) {
- import_node_fs4.default.close(stream.fd, () => {
- });
- }
- this[ONERROR](er, entry);
- fullyDone();
- return;
+ if (chunk.length < ZIP_HEADER_LEN) {
+ this[BUFFER2] = chunk;
+ cb?.();
+ return true;
}
- if (--actions === 0) {
- if (stream.fd !== void 0) {
- import_node_fs4.default.close(stream.fd, (er2) => {
- if (er2) {
- this[ONERROR](er2, entry);
- } else {
- this[UNPEND]();
- }
- fullyDone();
- });
+ for (let i = 0; this[UNZIP] === void 0 && i < gzipHeader.length; i++) {
+ if (chunk[i] !== gzipHeader[i]) {
+ this[UNZIP] = false;
}
}
- };
- stream.on("finish", () => {
- const abs = String(entry.absolute);
- const fd = stream.fd;
- if (typeof fd === "number" && entry.mtime && !this.noMtime) {
- actions++;
- const atime = entry.atime || /* @__PURE__ */ new Date();
- const mtime = entry.mtime;
- import_node_fs4.default.futimes(fd, atime, mtime, (er) => er ? import_node_fs4.default.utimes(abs, atime, mtime, (er2) => done(er2 && er)) : done());
+ let isZstd = false;
+ if (this[UNZIP] === false && this.zstd !== false) {
+ isZstd = true;
+ for (let i = 0; i < zstdHeader.length; i++) {
+ if (chunk[i] !== zstdHeader[i]) {
+ isZstd = false;
+ break;
+ }
+ }
}
- if (typeof fd === "number" && this[DOCHOWN](entry)) {
- actions++;
- const uid = this[UID](entry);
- const gid = this[GID](entry);
- if (typeof uid === "number" && typeof gid === "number") {
- import_node_fs4.default.fchown(fd, uid, gid, (er) => er ? import_node_fs4.default.chown(abs, uid, gid, (er2) => done(er2 && er)) : done());
+ const maybeBrotli = this.brotli === void 0 && !isZstd;
+ if (this[UNZIP] === false && maybeBrotli) {
+ if (chunk.length < 512) {
+ if (this[ENDED]) {
+ this.brotli = true;
+ } else {
+ this[BUFFER2] = chunk;
+ cb?.();
+ return true;
+ }
+ } else {
+ try {
+ new Header(chunk.subarray(0, 512));
+ this.brotli = false;
+ } catch (_) {
+ this.brotli = true;
+ }
}
}
- done();
- });
- const tx = this.transform ? this.transform(entry) || entry : entry;
- if (tx !== entry) {
- tx.on("error", (er) => {
- this[ONERROR](er, entry);
- fullyDone();
- });
- entry.pipe(tx);
+ if (this[UNZIP] === void 0 || this[UNZIP] === false && (this.brotli || isZstd)) {
+ const ended = this[ENDED];
+ this[ENDED] = false;
+ this[UNZIP] = this[UNZIP] === void 0 ? new Unzip({}) : isZstd ? new ZstdDecompress({}) : new BrotliDecompress({});
+ this[UNZIP].on("data", (chunk2) => {
+ if (this[CHECKDECOMPRESSIONRATIO](chunk2)) {
+ this[CONSUMECHUNK](chunk2);
+ }
+ });
+ this[UNZIP].on("error", (er) => {
+ if (!this[ABORTED2]) {
+ this.abort(er);
+ }
+ });
+ this[UNZIP].on("end", () => {
+ this[ENDED] = true;
+ this[CONSUMECHUNK]();
+ });
+ this[WRITING] = true;
+ this[COMPRESSEDBYTESREAD] += chunk.length;
+ const ret2 = !!this[UNZIP][ended ? "end" : "write"](chunk);
+ this[WRITING] = false;
+ cb?.();
+ return ret2;
+ }
}
- tx.pipe(stream);
+ this[WRITING] = true;
+ if (this[UNZIP]) {
+ this[COMPRESSEDBYTESREAD] += chunk.length;
+ this[UNZIP].write(chunk);
+ } else {
+ this[CONSUMECHUNK](chunk);
+ }
+ this[WRITING] = false;
+ const ret = this[QUEUE].length > 0 ? false : this[READENTRY] ? this[READENTRY].flowing : true;
+ if (!ret && this[QUEUE].length === 0) {
+ this[READENTRY]?.once("drain", () => this.emit("drain"));
+ }
+ cb?.();
+ return ret;
}
- [DIRECTORY](entry, fullyDone) {
- const mode = typeof entry.mode === "number" ? entry.mode & 4095 : this.dmode;
- this[MKDIR](String(entry.absolute), mode, (er) => {
- if (er) {
- this[ONERROR](er, entry);
- fullyDone();
- return;
- }
- let actions = 1;
- const done = () => {
- if (--actions === 0) {
- fullyDone();
- this[UNPEND]();
- entry.resume();
+ [BUFFERCONCAT](c) {
+ if (c && !this[ABORTED2]) {
+ this[BUFFER2] = this[BUFFER2] ? Buffer.concat([this[BUFFER2], c]) : c;
+ }
+ }
+ [MAYBEEND]() {
+ if (this[ENDED] && !this[EMITTEDEND] && !this[ABORTED2] && !this[CONSUMING]) {
+ this[EMITTEDEND] = true;
+ const entry = this[WRITEENTRY];
+ if (entry?.blockRemain) {
+ const have = this[BUFFER2] ? this[BUFFER2].length : 0;
+ this.warn("TAR_BAD_ARCHIVE", `Truncated input (needed ${entry.blockRemain} more bytes, only ${have} available)`, { entry });
+ if (this[BUFFER2]) {
+ entry.write(this[BUFFER2]);
}
- };
- if (entry.mtime && !this.noMtime) {
- actions++;
- import_node_fs4.default.utimes(String(entry.absolute), entry.atime || /* @__PURE__ */ new Date(), entry.mtime, done);
+ entry.end();
+ }
+ this[EMIT](DONE);
+ }
+ }
+ [CONSUMECHUNK](chunk) {
+ if (this[CONSUMING] && chunk) {
+ this[BUFFERCONCAT](chunk);
+ } else if (!chunk && !this[BUFFER2]) {
+ this[MAYBEEND]();
+ } else if (chunk) {
+ this[CONSUMING] = true;
+ if (this[BUFFER2]) {
+ this[BUFFERCONCAT](chunk);
+ const c = this[BUFFER2];
+ this[BUFFER2] = void 0;
+ this[CONSUMECHUNKSUB](c);
+ } else {
+ this[CONSUMECHUNKSUB](chunk);
}
- if (this[DOCHOWN](entry)) {
- actions++;
- import_node_fs4.default.chown(String(entry.absolute), Number(this[UID](entry)), Number(this[GID](entry)), done);
+ while (this[BUFFER2] && this[BUFFER2]?.length >= 512 && !this[ABORTED2] && !this[SAW_EOF]) {
+ const c = this[BUFFER2];
+ this[BUFFER2] = void 0;
+ this[CONSUMECHUNKSUB](c);
}
- done();
- });
- }
- [UNSUPPORTED](entry) {
- entry.unsupported = true;
- this.warn("TAR_ENTRY_UNSUPPORTED", `unsupported entry type: ${entry.type}`, { entry });
- entry.resume();
- }
- [SYMLINK](entry, done) {
- this[LINK](entry, String(entry.linkpath), "symlink", done);
- }
- [HARDLINK](entry, done) {
- const linkpath = normalizeWindowsPath(import_node_path7.default.resolve(this.cwd, String(entry.linkpath)));
- this[LINK](entry, linkpath, "link", done);
- }
- [PEND]() {
- this[PENDING]++;
- }
- [UNPEND]() {
- this[PENDING]--;
- this[MAYBECLOSE]();
- }
- [SKIP](entry) {
- this[UNPEND]();
- entry.resume();
- }
- // Check if we can reuse an existing filesystem entry safely and
- // overwrite it, rather than unlinking and recreating
- // Windows doesn't report a useful nlink, so we just never reuse entries
- [ISREUSABLE](entry, st) {
- return entry.type === "File" && !this.unlink && st.isFile() && st.nlink <= 1 && !isWindows3;
+ this[CONSUMING] = false;
+ }
+ if (!this[BUFFER2] || this[ENDED]) {
+ this[MAYBEEND]();
+ }
}
- // check if a thing is there, and if so, try to clobber it
- [CHECKFS](entry) {
- this[PEND]();
- const paths = [entry.path];
- if (entry.linkpath) {
- paths.push(entry.linkpath);
+ [CONSUMECHUNKSUB](chunk) {
+ let position = 0;
+ const length = chunk.length;
+ while (position + 512 <= length && !this[ABORTED2] && !this[SAW_EOF]) {
+ switch (this[STATE]) {
+ case "begin":
+ case "header":
+ this[CONSUMEHEADER](chunk, position);
+ position += 512;
+ break;
+ case "ignore":
+ case "body":
+ position += this[CONSUMEBODY](chunk, position);
+ break;
+ case "meta":
+ position += this[CONSUMEMETA](chunk, position);
+ break;
+ /* c8 ignore start */
+ default:
+ throw new Error("invalid state: " + this[STATE]);
+ }
+ }
+ if (position < length) {
+ this[BUFFER2] = this[BUFFER2] ? Buffer.concat([chunk.subarray(position), this[BUFFER2]]) : chunk.subarray(position);
}
- this.reservations.reserve(paths, (done) => this[CHECKFS2](entry, done));
}
- [CHECKFS2](entry, fullyDone) {
- const done = (er) => {
- fullyDone(er);
- };
- const checkCwd2 = () => {
- this[MKDIR](this.cwd, this.dmode, (er) => {
- if (er) {
- this[ONERROR](er, entry);
- done();
- return;
- }
- this[CHECKED_CWD] = true;
- start();
- });
- };
- const start = () => {
- if (entry.absolute !== this.cwd) {
- const parent = normalizeWindowsPath(import_node_path7.default.dirname(String(entry.absolute)));
- if (parent !== this.cwd) {
- return this[MKDIR](parent, this.dmode, (er) => {
- if (er) {
- this[ONERROR](er, entry);
- done();
- return;
- }
- afterMakeParent();
- });
+ end(chunk, encoding, cb) {
+ if (typeof chunk === "function") {
+ cb = chunk;
+ encoding = void 0;
+ chunk = void 0;
+ }
+ if (typeof encoding === "function") {
+ cb = encoding;
+ encoding = void 0;
+ }
+ if (typeof chunk === "string") {
+ chunk = Buffer.from(chunk, encoding);
+ }
+ if (cb)
+ this.once("finish", cb);
+ if (!this[ABORTED2]) {
+ if (this[UNZIP]) {
+ if (chunk) {
+ this[COMPRESSEDBYTESREAD] += chunk.length;
+ this[UNZIP].write(chunk);
}
+ this[UNZIP].end();
+ } else {
+ this[ENDED] = true;
+ if (this.brotli === void 0 || this.zstd === void 0)
+ chunk = chunk || Buffer.alloc(0);
+ if (chunk)
+ this.write(chunk);
+ this[MAYBEEND]();
}
- afterMakeParent();
- };
- const afterMakeParent = () => {
- import_node_fs4.default.lstat(String(entry.absolute), (lstatEr, st) => {
- if (st && (this.keep || /* c8 ignore next */
- this.newer && st.mtime > (entry.mtime ?? st.mtime))) {
- this[SKIP](entry);
- done();
- return;
- }
- if (lstatEr || this[ISREUSABLE](entry, st)) {
- return this[MAKEFS](null, entry, done);
- }
- if (st.isDirectory()) {
- if (entry.type === "Directory") {
- const needChmod = this.chmod && entry.mode && (st.mode & 4095) !== entry.mode;
- const afterChmod = (er) => this[MAKEFS](er ?? null, entry, done);
- if (!needChmod) {
- return afterChmod();
- }
- return import_node_fs4.default.chmod(String(entry.absolute), Number(entry.mode), afterChmod);
- }
- if (entry.absolute !== this.cwd) {
- return import_node_fs4.default.rmdir(String(entry.absolute), (er) => this[MAKEFS](er ?? null, entry, done));
- }
- }
- if (entry.absolute === this.cwd) {
- return this[MAKEFS](null, entry, done);
- }
- unlinkFile(String(entry.absolute), (er) => this[MAKEFS](er ?? null, entry, done));
- });
- };
- if (this[CHECKED_CWD]) {
- start();
- } else {
- checkCwd2();
}
+ return this;
}
- [MAKEFS](er, entry, done) {
- if (er) {
- this[ONERROR](er, entry);
- done();
- return;
+ };
+ }
+});
+
+// node_modules/tar/dist/esm/strip-trailing-slashes.js
+var stripTrailingSlashes;
+var init_strip_trailing_slashes = __esm({
+ "node_modules/tar/dist/esm/strip-trailing-slashes.js"() {
+ stripTrailingSlashes = (str) => {
+ let i = str.length - 1;
+ let slashesStart = -1;
+ while (i > -1 && str.charAt(i) === "/") {
+ slashesStart = i;
+ i--;
+ }
+ return slashesStart === -1 ? str : str.slice(0, slashesStart);
+ };
+ }
+});
+
+// node_modules/tar/dist/esm/list.js
+var list_exports = {};
+__export(list_exports, {
+ filesFilter: () => filesFilter,
+ list: () => list
+});
+var import_node_fs, import_path2, onReadEntryFunction, filesFilter, listFileSync, listFile, list;
+var init_list = __esm({
+ "node_modules/tar/dist/esm/list.js"() {
+ init_esm2();
+ import_node_fs = __toESM(require("node:fs"), 1);
+ import_path2 = require("path");
+ init_make_command();
+ init_parse();
+ init_strip_trailing_slashes();
+ onReadEntryFunction = (opt) => {
+ const onReadEntry = opt.onReadEntry;
+ opt.onReadEntry = onReadEntry ? (e) => {
+ onReadEntry(e);
+ e.resume();
+ } : (e) => e.resume();
+ };
+ filesFilter = (opt, files) => {
+ const map = new Map(files.map((f) => [stripTrailingSlashes(f), true]));
+ const filter = opt.filter;
+ const MAX2 = 100;
+ const mapHas = (file, r = "", depth = 0) => {
+ if (depth >= MAX2) {
+ map.set(file, false);
+ return false;
}
- switch (entry.type) {
- case "File":
- case "OldFile":
- case "ContiguousFile":
- return this[FILE](entry, done);
- case "Link":
- return this[HARDLINK](entry, done);
- case "SymbolicLink":
- return this[SYMLINK](entry, done);
- case "Directory":
- case "GNUDumpDir":
- return this[DIRECTORY](entry, done);
+ const root = r || (0, import_path2.parse)(file).root || ".";
+ let ret;
+ if (file === root)
+ ret = false;
+ else {
+ const m = map.get(file);
+ ret = m !== void 0 ? m : mapHas((0, import_path2.dirname)(file), root, depth + 1);
+ }
+ map.set(file, ret);
+ return ret;
+ };
+ opt.filter = filter ? (file, entry) => filter(file, entry) && mapHas(stripTrailingSlashes(file)) : (file) => mapHas(stripTrailingSlashes(file));
+ };
+ listFileSync = (opt) => {
+ const p = new Parser(opt);
+ const file = opt.file;
+ let fd;
+ try {
+ fd = import_node_fs.default.openSync(file, "r");
+ const stat = import_node_fs.default.fstatSync(fd);
+ const readSize = opt.maxReadSize || 16 * 1024 * 1024;
+ if (stat.size < readSize) {
+ const buf = Buffer.allocUnsafe(stat.size);
+ const read = import_node_fs.default.readSync(fd, buf, 0, stat.size, 0);
+ p.end(read === buf.byteLength ? buf : buf.subarray(0, read));
+ } else {
+ let pos2 = 0;
+ const buf = Buffer.allocUnsafe(readSize);
+ while (pos2 < stat.size) {
+ const bytesRead = import_node_fs.default.readSync(fd, buf, 0, readSize, pos2);
+ if (bytesRead === 0)
+ break;
+ pos2 += bytesRead;
+ p.write(buf.subarray(0, bytesRead));
+ }
+ p.end();
+ }
+ } finally {
+ if (typeof fd === "number") {
+ try {
+ import_node_fs.default.closeSync(fd);
+ } catch {
+ }
}
}
- [LINK](entry, linkpath, link, done) {
- import_node_fs4.default[link](linkpath, String(entry.absolute), (er) => {
+ };
+ listFile = (opt, _files) => {
+ const parse4 = new Parser(opt);
+ const readSize = opt.maxReadSize || 16 * 1024 * 1024;
+ const file = opt.file;
+ const p = new Promise((resolve, reject) => {
+ parse4.on("error", reject);
+ parse4.on("end", resolve);
+ import_node_fs.default.stat(file, (er, stat) => {
if (er) {
- this[ONERROR](er, entry);
+ reject(er);
} else {
- this[UNPEND]();
- entry.resume();
+ const stream = new ReadStream(file, {
+ readSize,
+ size: stat.size
+ });
+ stream.on("error", reject);
+ stream.pipe(parse4);
}
- done();
});
- }
+ });
+ return p;
};
- callSync = (fn2) => {
+ list = makeCommand(listFileSync, listFile, (opt) => new Parser(opt), (opt) => new Parser(opt), (opt, files) => {
+ if (files?.length)
+ filesFilter(opt, files);
+ if (!opt.noResume)
+ onReadEntryFunction(opt);
+ });
+ }
+});
+
+// node_modules/tar/dist/esm/get-write-flag.js
+var import_fs3, platform2, isWindows, O_CREAT, O_NOFOLLOW, O_TRUNC, O_WRONLY, UV_FS_O_FILEMAP, fMapEnabled, fMapLimit, fMapFlag, noFollowFlag, getWriteFlag;
+var init_get_write_flag = __esm({
+ "node_modules/tar/dist/esm/get-write-flag.js"() {
+ import_fs3 = __toESM(require("fs"), 1);
+ platform2 = process.env.__FAKE_PLATFORM__ || process.platform;
+ isWindows = platform2 === "win32";
+ ({ O_CREAT, O_NOFOLLOW, O_TRUNC, O_WRONLY } = import_fs3.default.constants);
+ UV_FS_O_FILEMAP = Number(process.env.__FAKE_FS_O_FILENAME__) || import_fs3.default.constants.UV_FS_O_FILEMAP || 0;
+ fMapEnabled = isWindows && !!UV_FS_O_FILEMAP;
+ fMapLimit = 512 * 1024;
+ fMapFlag = UV_FS_O_FILEMAP | O_TRUNC | O_CREAT | O_WRONLY;
+ noFollowFlag = !isWindows && typeof O_NOFOLLOW === "number" ? O_NOFOLLOW | O_TRUNC | O_CREAT | O_WRONLY : null;
+ getWriteFlag = noFollowFlag !== null ? () => noFollowFlag : !fMapEnabled ? () => "w" : (size) => size < fMapLimit ? fMapFlag : "w";
+ }
+});
+
+// node_modules/chownr/dist/esm/index.js
+var import_node_fs2, import_node_path3, lchownSync, chown, chownrKid, chownr, chownrKidSync, chownrSync;
+var init_esm4 = __esm({
+ "node_modules/chownr/dist/esm/index.js"() {
+ import_node_fs2 = __toESM(require("node:fs"), 1);
+ import_node_path3 = __toESM(require("node:path"), 1);
+ lchownSync = (path16, uid, gid) => {
try {
- return [null, fn2()];
+ return import_node_fs2.default.lchownSync(path16, uid, gid);
} catch (er) {
- return [er, null];
+ if (er?.code !== "ENOENT")
+ throw er;
}
};
- UnpackSync = class extends Unpack {
- sync = true;
- [MAKEFS](er, entry) {
- return super[MAKEFS](er, entry, () => {
+ chown = (cpath, uid, gid, cb) => {
+ import_node_fs2.default.lchown(cpath, uid, gid, (er) => {
+ cb(er && er?.code !== "ENOENT" ? er : null);
+ });
+ };
+ chownrKid = (p, child, uid, gid, cb) => {
+ if (child.isDirectory()) {
+ chownr(import_node_path3.default.resolve(p, child.name), uid, gid, (er) => {
+ if (er)
+ return cb(er);
+ const cpath = import_node_path3.default.resolve(p, child.name);
+ chown(cpath, uid, gid, cb);
});
+ } else {
+ const cpath = import_node_path3.default.resolve(p, child.name);
+ chown(cpath, uid, gid, cb);
}
- [CHECKFS](entry) {
- if (!this[CHECKED_CWD]) {
- const er2 = this[MKDIR](this.cwd, this.dmode);
- if (er2) {
- return this[ONERROR](er2, entry);
- }
- this[CHECKED_CWD] = true;
- }
- if (entry.absolute !== this.cwd) {
- const parent = normalizeWindowsPath(import_node_path7.default.dirname(String(entry.absolute)));
- if (parent !== this.cwd) {
- const mkParent = this[MKDIR](parent, this.dmode);
- if (mkParent) {
- return this[ONERROR](mkParent, entry);
- }
- }
- }
- const [lstatEr, st] = callSync(() => import_node_fs4.default.lstatSync(String(entry.absolute)));
- if (st && (this.keep || /* c8 ignore next */
- this.newer && st.mtime > (entry.mtime ?? st.mtime))) {
- return this[SKIP](entry);
- }
- if (lstatEr || this[ISREUSABLE](entry, st)) {
- return this[MAKEFS](null, entry);
- }
- if (st.isDirectory()) {
- if (entry.type === "Directory") {
- const needChmod = this.chmod && entry.mode && (st.mode & 4095) !== entry.mode;
- const [er3] = needChmod ? callSync(() => {
- import_node_fs4.default.chmodSync(String(entry.absolute), Number(entry.mode));
- }) : [];
- return this[MAKEFS](er3, entry);
- }
- const [er2] = callSync(() => import_node_fs4.default.rmdirSync(String(entry.absolute)));
- this[MAKEFS](er2, entry);
+ };
+ chownr = (p, uid, gid, cb) => {
+ import_node_fs2.default.readdir(p, { withFileTypes: true }, (er, children) => {
+ if (er) {
+ if (er.code === "ENOENT")
+ return cb();
+ else if (er.code !== "ENOTDIR" && er.code !== "ENOTSUP")
+ return cb(er);
}
- const [er] = entry.absolute === this.cwd ? [] : callSync(() => unlinkFileSync(String(entry.absolute)));
- this[MAKEFS](er, entry);
- }
- [FILE](entry, done) {
- const mode = typeof entry.mode === "number" ? entry.mode & 4095 : this.fmode;
- const oner = (er) => {
- let closeError;
- try {
- import_node_fs4.default.closeSync(fd);
- } catch (e) {
- closeError = e;
- }
- if (er || closeError) {
- this[ONERROR](er || closeError, entry);
- }
- done();
+ if (er || !children.length)
+ return chown(p, uid, gid, cb);
+ let len = children.length;
+ let errState = null;
+ const then = (er2) => {
+ if (errState)
+ return;
+ if (er2)
+ return cb(errState = er2);
+ if (--len === 0)
+ return chown(p, uid, gid, cb);
};
- let fd;
- try {
- fd = import_node_fs4.default.openSync(String(entry.absolute), getWriteFlag(entry.size), mode);
- } catch (er) {
- return oner(er);
- }
- const tx = this.transform ? this.transform(entry) || entry : entry;
- if (tx !== entry) {
- tx.on("error", (er) => this[ONERROR](er, entry));
- entry.pipe(tx);
+ for (const child of children) {
+ chownrKid(p, child, uid, gid, then);
}
- tx.on("data", (chunk) => {
- try {
- import_node_fs4.default.writeSync(fd, chunk, 0, chunk.length);
- } catch (er) {
- oner(er);
- }
- });
- tx.on("end", () => {
- let er = null;
- if (entry.mtime && !this.noMtime) {
- const atime = entry.atime || /* @__PURE__ */ new Date();
- const mtime = entry.mtime;
- try {
- import_node_fs4.default.futimesSync(fd, atime, mtime);
- } catch (futimeser) {
- try {
- import_node_fs4.default.utimesSync(String(entry.absolute), atime, mtime);
- } catch (utimeser) {
- er = futimeser;
- }
- }
+ });
+ };
+ chownrKidSync = (p, child, uid, gid) => {
+ if (child.isDirectory())
+ chownrSync(import_node_path3.default.resolve(p, child.name), uid, gid);
+ lchownSync(import_node_path3.default.resolve(p, child.name), uid, gid);
+ };
+ chownrSync = (p, uid, gid) => {
+ let children;
+ try {
+ children = import_node_fs2.default.readdirSync(p, { withFileTypes: true });
+ } catch (er) {
+ const e = er;
+ if (e?.code === "ENOENT")
+ return;
+ else if (e?.code === "ENOTDIR" || e?.code === "ENOTSUP")
+ return lchownSync(p, uid, gid);
+ else
+ throw e;
+ }
+ for (const child of children) {
+ chownrKidSync(p, child, uid, gid);
+ }
+ return lchownSync(p, uid, gid);
+ };
+ }
+});
+
+// node_modules/tar/dist/esm/cwd-error.js
+var CwdError;
+var init_cwd_error = __esm({
+ "node_modules/tar/dist/esm/cwd-error.js"() {
+ CwdError = class extends Error {
+ path;
+ code;
+ syscall = "chdir";
+ constructor(path16, code2) {
+ super(`${code2}: Cannot cd into '${path16}'`);
+ this.path = path16;
+ this.code = code2;
+ }
+ get name() {
+ return "CwdError";
+ }
+ };
+ }
+});
+
+// node_modules/tar/dist/esm/symlink-error.js
+var SymlinkError;
+var init_symlink_error = __esm({
+ "node_modules/tar/dist/esm/symlink-error.js"() {
+ SymlinkError = class extends Error {
+ path;
+ symlink;
+ syscall = "symlink";
+ code = "TAR_SYMLINK_ERROR";
+ constructor(symlink, path16) {
+ super("TAR_SYMLINK_ERROR: Cannot extract through symbolic link");
+ this.symlink = symlink;
+ this.path = path16;
+ }
+ get name() {
+ return "SymlinkError";
+ }
+ };
+ }
+});
+
+// node_modules/tar/dist/esm/mkdir.js
+var import_node_fs3, import_promises, import_node_path4, checkCwd, mkdir, mkdir_, onmkdir, checkCwdSync, mkdirSync2;
+var init_mkdir = __esm({
+ "node_modules/tar/dist/esm/mkdir.js"() {
+ init_esm4();
+ import_node_fs3 = __toESM(require("node:fs"), 1);
+ import_promises = __toESM(require("node:fs/promises"), 1);
+ import_node_path4 = __toESM(require("node:path"), 1);
+ init_cwd_error();
+ init_normalize_windows_path();
+ init_symlink_error();
+ checkCwd = (dir, cb) => {
+ import_node_fs3.default.stat(dir, (er, st) => {
+ if (er || !st.isDirectory()) {
+ er = new CwdError(dir, er?.code || "ENOTDIR");
+ }
+ cb(er);
+ });
+ };
+ mkdir = (dir, opt, cb) => {
+ dir = normalizeWindowsPath(dir);
+ const umask2 = opt.umask ?? 18;
+ const mode = opt.mode | 448;
+ const needChmod = (mode & umask2) !== 0;
+ const uid = opt.uid;
+ const gid = opt.gid;
+ const doChown = typeof uid === "number" && typeof gid === "number" && (uid !== opt.processUid || gid !== opt.processGid);
+ const preserve = opt.preserve;
+ const unlink = opt.unlink;
+ const cwd = normalizeWindowsPath(opt.cwd);
+ const done = (er, created) => {
+ if (er) {
+ cb(er);
+ } else {
+ if (created && doChown) {
+ chownr(created, uid, gid, (er2) => done(er2));
+ } else if (needChmod) {
+ import_node_fs3.default.chmod(dir, mode, cb);
+ } else {
+ cb();
}
- if (this[DOCHOWN](entry)) {
- const uid = this[UID](entry);
- const gid = this[GID](entry);
- try {
- import_node_fs4.default.fchownSync(fd, Number(uid), Number(gid));
- } catch (fchowner) {
- try {
- import_node_fs4.default.chownSync(String(entry.absolute), Number(uid), Number(gid));
- } catch (chowner) {
- er = er || fchowner;
+ }
+ };
+ if (dir === cwd) {
+ return checkCwd(dir, done);
+ }
+ if (preserve) {
+ return import_promises.default.mkdir(dir, { mode, recursive: true }).then(
+ (made) => done(null, made ?? void 0),
+ // oh, ts
+ done
+ );
+ }
+ const sub = normalizeWindowsPath(import_node_path4.default.relative(cwd, dir));
+ const parts = sub.split("/");
+ mkdir_(cwd, parts, mode, unlink, cwd, void 0, done);
+ };
+ mkdir_ = (base, parts, mode, unlink, cwd, created, cb) => {
+ if (parts.length === 0) {
+ return cb(null, created);
+ }
+ const p = parts.shift();
+ const part = normalizeWindowsPath(import_node_path4.default.resolve(base + "/" + p));
+ import_node_fs3.default.mkdir(part, mode, onmkdir(part, parts, mode, unlink, cwd, created, cb));
+ };
+ onmkdir = (part, parts, mode, unlink, cwd, created, cb) => (er) => {
+ if (er) {
+ import_node_fs3.default.lstat(part, (statEr, st) => {
+ if (statEr) {
+ statEr.path = statEr.path && normalizeWindowsPath(statEr.path);
+ cb(statEr);
+ } else if (st.isDirectory()) {
+ mkdir_(part, parts, mode, unlink, cwd, created, cb);
+ } else if (unlink) {
+ import_node_fs3.default.unlink(part, (er2) => {
+ if (er2) {
+ return cb(er2);
}
- }
+ import_node_fs3.default.mkdir(part, mode, onmkdir(part, parts, mode, unlink, cwd, created, cb));
+ });
+ } else if (st.isSymbolicLink()) {
+ return cb(new SymlinkError(part, part + "/" + parts.join("/")));
+ } else {
+ cb(er);
}
- oner(er);
});
+ } else {
+ created = created || part;
+ mkdir_(part, parts, mode, unlink, cwd, created, cb);
}
- [DIRECTORY](entry, done) {
- const mode = typeof entry.mode === "number" ? entry.mode & 4095 : this.dmode;
- const er = this[MKDIR](String(entry.absolute), mode);
- if (er) {
- this[ONERROR](er, entry);
- done();
- return;
+ };
+ checkCwdSync = (dir) => {
+ let ok = false;
+ let code2;
+ try {
+ ok = import_node_fs3.default.statSync(dir).isDirectory();
+ } catch (er) {
+ code2 = er?.code;
+ } finally {
+ if (!ok) {
+ throw new CwdError(dir, code2 ?? "ENOTDIR");
}
- if (entry.mtime && !this.noMtime) {
- try {
- import_node_fs4.default.utimesSync(String(entry.absolute), entry.atime || /* @__PURE__ */ new Date(), entry.mtime);
- } catch (er2) {
- }
+ }
+ };
+ mkdirSync2 = (dir, opt) => {
+ dir = normalizeWindowsPath(dir);
+ const umask2 = opt.umask ?? 18;
+ const mode = opt.mode | 448;
+ const needChmod = (mode & umask2) !== 0;
+ const uid = opt.uid;
+ const gid = opt.gid;
+ const doChown = typeof uid === "number" && typeof gid === "number" && (uid !== opt.processUid || gid !== opt.processGid);
+ const preserve = opt.preserve;
+ const unlink = opt.unlink;
+ const cwd = normalizeWindowsPath(opt.cwd);
+ const done = (created2) => {
+ if (created2 && doChown) {
+ chownrSync(created2, uid, gid);
}
- if (this[DOCHOWN](entry)) {
- try {
- import_node_fs4.default.chownSync(String(entry.absolute), Number(this[UID](entry)), Number(this[GID](entry)));
- } catch (er2) {
- }
+ if (needChmod) {
+ import_node_fs3.default.chmodSync(dir, mode);
}
- done();
- entry.resume();
+ };
+ if (dir === cwd) {
+ checkCwdSync(cwd);
+ return done();
}
- [MKDIR](dir, mode) {
- try {
- return mkdirSync2(normalizeWindowsPath(dir), {
- uid: this.uid,
- gid: this.gid,
- processUid: this.processUid,
- processGid: this.processGid,
- umask: this.processUmask,
- preserve: this.preservePaths,
- unlink: this.unlink,
- cwd: this.cwd,
- mode
- });
- } catch (er) {
- return er;
- }
+ if (preserve) {
+ return done(import_node_fs3.default.mkdirSync(dir, { mode, recursive: true }) ?? void 0);
}
- [LINK](entry, linkpath, link, done) {
- const ls = `${link}Sync`;
+ const sub = normalizeWindowsPath(import_node_path4.default.relative(cwd, dir));
+ const parts = sub.split("/");
+ let created;
+ for (let p = parts.shift(), part = cwd; p && (part += "/" + p); p = parts.shift()) {
+ part = normalizeWindowsPath(import_node_path4.default.resolve(part));
try {
- import_node_fs4.default[ls](linkpath, String(entry.absolute));
- done();
- entry.resume();
- } catch (er) {
- return this[ONERROR](er, entry);
+ import_node_fs3.default.mkdirSync(part, mode);
+ created = created || part;
+ } catch {
+ const st = import_node_fs3.default.lstatSync(part);
+ if (st.isDirectory()) {
+ continue;
+ } else if (unlink) {
+ import_node_fs3.default.unlinkSync(part);
+ import_node_fs3.default.mkdirSync(part, mode);
+ created = created || part;
+ continue;
+ } else if (st.isSymbolicLink()) {
+ return new SymlinkError(part, part + "/" + parts.join("/"));
+ }
}
}
+ return done(created);
};
}
});
-// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/extract.js
-var extract_exports = {};
-__export(extract_exports, {
- extract: () => extract
-});
-var import_node_fs5, extractFileSync, extractFile, extract;
-var init_extract = __esm({
- ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/extract.js"() {
- init_esm2();
- import_node_fs5 = __toESM(require("node:fs"), 1);
- init_list();
- init_make_command();
- init_unpack();
- extractFileSync = (opt) => {
- const u = new UnpackSync(opt);
- const file = opt.file;
- const stat = import_node_fs5.default.statSync(file);
- const readSize = opt.maxReadSize || 16 * 1024 * 1024;
- const stream = new ReadStreamSync(file, {
- readSize,
- size: stat.size
- });
- stream.pipe(u);
+// node_modules/tar/dist/esm/strip-absolute-path.js
+var import_node_path5, isAbsolute, parse3, stripAbsolutePath;
+var init_strip_absolute_path = __esm({
+ "node_modules/tar/dist/esm/strip-absolute-path.js"() {
+ import_node_path5 = require("node:path");
+ ({ isAbsolute, parse: parse3 } = import_node_path5.win32);
+ stripAbsolutePath = (path16) => {
+ let r = "";
+ let parsed = parse3(path16);
+ while (isAbsolute(path16) || parsed.root) {
+ const root = path16.charAt(0) === "/" && path16.slice(0, 4) !== "//?/" ? "/" : parsed.root;
+ path16 = path16.slice(root.length);
+ r += root;
+ parsed = parse3(path16);
+ }
+ return [r, path16];
};
- extractFile = (opt, _) => {
- const u = new Unpack(opt);
- const readSize = opt.maxReadSize || 16 * 1024 * 1024;
- const file = opt.file;
- const p = new Promise((resolve, reject) => {
- u.on("error", reject);
- u.on("close", resolve);
- import_node_fs5.default.stat(file, (er, stat) => {
- if (er) {
- reject(er);
- } else {
- const stream = new ReadStream(file, {
- readSize,
- size: stat.size
- });
- stream.on("error", reject);
- stream.pipe(u);
- }
- });
- });
- return p;
+ }
+});
+
+// node_modules/tar/dist/esm/winchars.js
+var raw, win, toWin, toRaw, encode2, decode;
+var init_winchars = __esm({
+ "node_modules/tar/dist/esm/winchars.js"() {
+ raw = ["|", "<", ">", "?", ":"];
+ win = raw.map((char) => String.fromCodePoint(61440 + Number(char.codePointAt(0))));
+ toWin = new Map(raw.map((char, i) => [char, win[i]]));
+ toRaw = new Map(win.map((char, i) => [char, raw[i]]));
+ encode2 = (s) => raw.reduce((s2, c) => s2.split(c).join(toWin.get(c)), s);
+ decode = (s) => win.reduce((s2, c) => s2.split(c).join(toRaw.get(c)), s);
+ }
+});
+
+// node_modules/tar/dist/esm/normalize-unicode.js
+var normalizeCache, MAX, cache, normalizeUnicode;
+var init_normalize_unicode = __esm({
+ "node_modules/tar/dist/esm/normalize-unicode.js"() {
+ normalizeCache = /* @__PURE__ */ Object.create(null);
+ MAX = 1e4;
+ cache = /* @__PURE__ */ new Set();
+ normalizeUnicode = (s) => {
+ if (!cache.has(s)) {
+ normalizeCache[s] = s.normalize("NFD").toLocaleLowerCase("en").toLocaleUpperCase("en");
+ } else {
+ cache.delete(s);
+ }
+ cache.add(s);
+ const ret = normalizeCache[s];
+ let i = cache.size - MAX;
+ if (i > MAX / 10) {
+ for (const s2 of cache) {
+ cache.delete(s2);
+ delete normalizeCache[s2];
+ if (--i <= 0)
+ break;
+ }
+ }
+ return ret;
};
- extract = makeCommand(extractFileSync, extractFile, (opt) => new UnpackSync(opt), (opt) => new Unpack(opt), (opt, files) => {
- if (files?.length)
- filesFilter(opt, files);
- });
}
});
-// .yarn/cache/v8-compile-cache-npm-2.4.0-5979f8e405-3878511925.zip/node_modules/v8-compile-cache/v8-compile-cache.js
-var require_v8_compile_cache = __commonJS({
- ".yarn/cache/v8-compile-cache-npm-2.4.0-5979f8e405-3878511925.zip/node_modules/v8-compile-cache/v8-compile-cache.js"(exports2, module2) {
- "use strict";
- var Module2 = require("module");
- var crypto = require("crypto");
- var fs17 = require("fs");
- var path16 = require("path");
- var vm = require("vm");
- var os3 = require("os");
- var hasOwnProperty = Object.prototype.hasOwnProperty;
- var FileSystemBlobStore = class {
- constructor(directory, prefix) {
- const name2 = prefix ? slashEscape(prefix + ".") : "";
- this._blobFilename = path16.join(directory, name2 + "BLOB");
- this._mapFilename = path16.join(directory, name2 + "MAP");
- this._lockFilename = path16.join(directory, name2 + "LOCK");
- this._directory = directory;
- this._load();
- }
- has(key, invalidationKey) {
- if (hasOwnProperty.call(this._memoryBlobs, key)) {
- return this._invalidationKeys[key] === invalidationKey;
- } else if (hasOwnProperty.call(this._storedMap, key)) {
- return this._storedMap[key][0] === invalidationKey;
+// node_modules/tar/dist/esm/path-reservations.js
+var import_node_path6, platform3, isWindows2, getDirs, PathReservations;
+var init_path_reservations = __esm({
+ "node_modules/tar/dist/esm/path-reservations.js"() {
+ import_node_path6 = require("node:path");
+ init_normalize_unicode();
+ init_strip_trailing_slashes();
+ platform3 = process.env.TESTING_TAR_FAKE_PLATFORM || process.platform;
+ isWindows2 = platform3 === "win32";
+ getDirs = (path16) => {
+ const dirs = path16.split("/").slice(0, -1).reduce((set, path17) => {
+ const s = set.at(-1);
+ if (s !== void 0) {
+ path17 = (0, import_node_path6.join)(s, path17);
}
- return false;
- }
- get(key, invalidationKey) {
- if (hasOwnProperty.call(this._memoryBlobs, key)) {
- if (this._invalidationKeys[key] === invalidationKey) {
- return this._memoryBlobs[key];
+ set.push(path17 || "/");
+ return set;
+ }, []);
+ return dirs;
+ };
+ PathReservations = class {
+ // path => [function or Set]
+ // A Set object means a directory reservation
+ // A fn is a direct reservation on that path
+ #queues = /* @__PURE__ */ new Map();
+ // fn => {paths:[path,...], dirs:[path, ...]}
+ #reservations = /* @__PURE__ */ new Map();
+ // functions currently running
+ #running = /* @__PURE__ */ new Set();
+ reserve(paths, fn2) {
+ paths = isWindows2 ? ["win32 parallelization disabled"] : paths.map((p) => {
+ return stripTrailingSlashes((0, import_node_path6.join)(normalizeUnicode(p)));
+ });
+ const dirs = new Set(paths.map((path16) => getDirs(path16)).reduce((a, b) => a.concat(b)));
+ this.#reservations.set(fn2, { dirs, paths });
+ for (const p of paths) {
+ const q = this.#queues.get(p);
+ if (!q) {
+ this.#queues.set(p, [fn2]);
+ } else {
+ q.push(fn2);
}
- } else if (hasOwnProperty.call(this._storedMap, key)) {
- const mapping = this._storedMap[key];
- if (mapping[0] === invalidationKey) {
- return this._storedBlob.slice(mapping[1], mapping[2]);
+ }
+ for (const dir of dirs) {
+ const q = this.#queues.get(dir);
+ if (!q) {
+ this.#queues.set(dir, [/* @__PURE__ */ new Set([fn2])]);
+ } else {
+ const l = q.at(-1);
+ if (l instanceof Set) {
+ l.add(fn2);
+ } else {
+ q.push(/* @__PURE__ */ new Set([fn2]));
+ }
}
}
+ return this.#run(fn2);
}
- set(key, invalidationKey, buffer) {
- this._invalidationKeys[key] = invalidationKey;
- this._memoryBlobs[key] = buffer;
- this._dirty = true;
- }
- delete(key) {
- if (hasOwnProperty.call(this._memoryBlobs, key)) {
- this._dirty = true;
- delete this._memoryBlobs[key];
- }
- if (hasOwnProperty.call(this._invalidationKeys, key)) {
- this._dirty = true;
- delete this._invalidationKeys[key];
- }
- if (hasOwnProperty.call(this._storedMap, key)) {
- this._dirty = true;
- delete this._storedMap[key];
+ // return the queues for each path the function cares about
+ // fn => {paths, dirs}
+ #getQueues(fn2) {
+ const res = this.#reservations.get(fn2);
+ if (!res) {
+ throw new Error("function does not have any path reservations");
}
+ return {
+ paths: res.paths.map((path16) => this.#queues.get(path16)),
+ dirs: [...res.dirs].map((path16) => this.#queues.get(path16))
+ };
}
- isDirty() {
- return this._dirty;
+ // check if fn is first in line for all its paths, and is
+ // included in the first set for all its dir queues
+ check(fn2) {
+ const { paths, dirs } = this.#getQueues(fn2);
+ return paths.every((q) => q && q[0] === fn2) && dirs.every((q) => q && q[0] instanceof Set && q[0].has(fn2));
}
- save() {
- const dump = this._getDump();
- const blobToStore = Buffer.concat(dump[0]);
- const mapToStore = JSON.stringify(dump[1]);
- try {
- mkdirpSync(this._directory);
- fs17.writeFileSync(this._lockFilename, "LOCK", { flag: "wx" });
- } catch (error) {
+ // run the function if it's first in line and not already running
+ #run(fn2) {
+ if (this.#running.has(fn2) || !this.check(fn2)) {
return false;
}
- try {
- fs17.writeFileSync(this._blobFilename, blobToStore);
- fs17.writeFileSync(this._mapFilename, mapToStore);
- } finally {
- fs17.unlinkSync(this._lockFilename);
- }
+ this.#running.add(fn2);
+ fn2(() => this.#clear(fn2));
return true;
}
- _load() {
- try {
- this._storedBlob = fs17.readFileSync(this._blobFilename);
- this._storedMap = JSON.parse(fs17.readFileSync(this._mapFilename));
- } catch (e) {
- this._storedBlob = Buffer.alloc(0);
- this._storedMap = {};
- }
- this._dirty = false;
- this._memoryBlobs = {};
- this._invalidationKeys = {};
- }
- _getDump() {
- const buffers = [];
- const newMap = {};
- let offset = 0;
- function push2(key, invalidationKey, buffer) {
- buffers.push(buffer);
- newMap[key] = [invalidationKey, offset, offset + buffer.length];
- offset += buffer.length;
- }
- for (const key of Object.keys(this._memoryBlobs)) {
- const buffer = this._memoryBlobs[key];
- const invalidationKey = this._invalidationKeys[key];
- push2(key, invalidationKey, buffer);
+ #clear(fn2) {
+ if (!this.#running.has(fn2)) {
+ return false;
}
- for (const key of Object.keys(this._storedMap)) {
- if (hasOwnProperty.call(newMap, key)) continue;
- const mapping = this._storedMap[key];
- const buffer = this._storedBlob.slice(mapping[1], mapping[2]);
- push2(key, mapping[0], buffer);
+ const res = this.#reservations.get(fn2);
+ if (!res) {
+ throw new Error("invalid reservation");
}
- return [buffers, newMap];
- }
- };
- var NativeCompileCache = class {
- constructor() {
- this._cacheStore = null;
- this._previousModuleCompile = null;
- }
- setCacheStore(cacheStore) {
- this._cacheStore = cacheStore;
- }
- install() {
- const self2 = this;
- const hasRequireResolvePaths = typeof require.resolve.paths === "function";
- this._previousModuleCompile = Module2.prototype._compile;
- Module2.prototype._compile = function(content, filename) {
- const mod = this;
- function require2(id) {
- return mod.require(id);
- }
- function resolve(request, options) {
- return Module2._resolveFilename(request, mod, false, options);
+ const { paths, dirs } = res;
+ const next = /* @__PURE__ */ new Set();
+ for (const path16 of paths) {
+ const q = this.#queues.get(path16);
+ if (!q || q?.[0] !== fn2) {
+ continue;
}
- require2.resolve = resolve;
- if (hasRequireResolvePaths) {
- resolve.paths = function paths(request) {
- return Module2._resolveLookupPaths(request, mod, true);
- };
+ const q0 = q[1];
+ if (!q0) {
+ this.#queues.delete(path16);
+ continue;
}
- require2.main = process.mainModule;
- require2.extensions = Module2._extensions;
- require2.cache = Module2._cache;
- const dirname2 = path16.dirname(filename);
- const compiledWrapper = self2._moduleCompile(filename, content);
- const args = [mod.exports, require2, mod, filename, dirname2, process, global, Buffer];
- return compiledWrapper.apply(mod.exports, args);
- };
- }
- uninstall() {
- Module2.prototype._compile = this._previousModuleCompile;
- }
- _moduleCompile(filename, content) {
- var contLen = content.length;
- if (contLen >= 2) {
- if (content.charCodeAt(0) === 35 && content.charCodeAt(1) === 33) {
- if (contLen === 2) {
- content = "";
- } else {
- var i = 2;
- for (; i < contLen; ++i) {
- var code2 = content.charCodeAt(i);
- if (code2 === 10 || code2 === 13) break;
- }
- if (i === contLen) {
- content = "";
- } else {
- content = content.slice(i);
- }
+ q.shift();
+ if (typeof q0 === "function") {
+ next.add(q0);
+ } else {
+ for (const f of q0) {
+ next.add(f);
+ }
+ }
+ }
+ for (const dir of dirs) {
+ const q = this.#queues.get(dir);
+ const q0 = q?.[0];
+ if (!q || !(q0 instanceof Set))
+ continue;
+ if (q0.size === 1 && q.length === 1) {
+ this.#queues.delete(dir);
+ continue;
+ } else if (q0.size === 1) {
+ q.shift();
+ const n = q[0];
+ if (typeof n === "function") {
+ next.add(n);
}
+ } else {
+ q0.delete(fn2);
}
}
- var wrapper = Module2.wrap(content);
- var invalidationKey = crypto.createHash("sha1").update(content, "utf8").digest("hex");
- var buffer = this._cacheStore.get(filename, invalidationKey);
- var script = new vm.Script(wrapper, {
- filename,
- lineOffset: 0,
- displayErrors: true,
- cachedData: buffer,
- produceCachedData: true
- });
- if (script.cachedDataProduced) {
- this._cacheStore.set(filename, invalidationKey, script.cachedData);
- } else if (script.cachedDataRejected) {
- this._cacheStore.delete(filename);
+ this.#running.delete(fn2);
+ next.forEach((fn3) => this.#run(fn3));
+ return true;
+ }
+ };
+ }
+});
+
+// node_modules/tar/dist/esm/process-umask.js
+var umask;
+var init_process_umask = __esm({
+ "node_modules/tar/dist/esm/process-umask.js"() {
+ umask = () => process.umask();
+ }
+});
+
+// node_modules/tar/dist/esm/unpack.js
+var import_node_assert, import_node_crypto, import_node_fs4, import_node_path7, ONENTRY, CHECKFS, CHECKFS2, ISREUSABLE, MAKEFS, FILE, DIRECTORY, LINK, SYMLINK, HARDLINK, ENSURE_NO_SYMLINK, UNSUPPORTED, CHECKPATH, STRIPABSOLUTEPATH, MKDIR, ONERROR, PENDING, PEND, UNPEND, ENDED2, MAYBECLOSE, SKIP, DOCHOWN, UID, GID, CHECKED_CWD, platform4, isWindows3, DEFAULT_MAX_DEPTH, unlinkFile, unlinkFileSync, uint32, Unpack, callSync, UnpackSync;
+var init_unpack = __esm({
+ "node_modules/tar/dist/esm/unpack.js"() {
+ init_esm2();
+ import_node_assert = __toESM(require("node:assert"), 1);
+ import_node_crypto = require("node:crypto");
+ import_node_fs4 = __toESM(require("node:fs"), 1);
+ import_node_path7 = __toESM(require("node:path"), 1);
+ init_get_write_flag();
+ init_mkdir();
+ init_normalize_windows_path();
+ init_parse();
+ init_strip_absolute_path();
+ init_winchars();
+ init_path_reservations();
+ init_symlink_error();
+ init_process_umask();
+ ONENTRY = /* @__PURE__ */ Symbol("onEntry");
+ CHECKFS = /* @__PURE__ */ Symbol("checkFs");
+ CHECKFS2 = /* @__PURE__ */ Symbol("checkFs2");
+ ISREUSABLE = /* @__PURE__ */ Symbol("isReusable");
+ MAKEFS = /* @__PURE__ */ Symbol("makeFs");
+ FILE = /* @__PURE__ */ Symbol("file");
+ DIRECTORY = /* @__PURE__ */ Symbol("directory");
+ LINK = /* @__PURE__ */ Symbol("link");
+ SYMLINK = /* @__PURE__ */ Symbol("symlink");
+ HARDLINK = /* @__PURE__ */ Symbol("hardlink");
+ ENSURE_NO_SYMLINK = /* @__PURE__ */ Symbol("ensureNoSymlink");
+ UNSUPPORTED = /* @__PURE__ */ Symbol("unsupported");
+ CHECKPATH = /* @__PURE__ */ Symbol("checkPath");
+ STRIPABSOLUTEPATH = /* @__PURE__ */ Symbol("stripAbsolutePath");
+ MKDIR = /* @__PURE__ */ Symbol("mkdir");
+ ONERROR = /* @__PURE__ */ Symbol("onError");
+ PENDING = /* @__PURE__ */ Symbol("pending");
+ PEND = /* @__PURE__ */ Symbol("pend");
+ UNPEND = /* @__PURE__ */ Symbol("unpend");
+ ENDED2 = /* @__PURE__ */ Symbol("ended");
+ MAYBECLOSE = /* @__PURE__ */ Symbol("maybeClose");
+ SKIP = /* @__PURE__ */ Symbol("skip");
+ DOCHOWN = /* @__PURE__ */ Symbol("doChown");
+ UID = /* @__PURE__ */ Symbol("uid");
+ GID = /* @__PURE__ */ Symbol("gid");
+ CHECKED_CWD = /* @__PURE__ */ Symbol("checkedCwd");
+ platform4 = process.env.TESTING_TAR_FAKE_PLATFORM || process.platform;
+ isWindows3 = platform4 === "win32";
+ DEFAULT_MAX_DEPTH = 1024;
+ unlinkFile = (path16, cb) => {
+ if (!isWindows3) {
+ return import_node_fs4.default.unlink(path16, cb);
+ }
+ const name2 = path16 + ".DELETE." + (0, import_node_crypto.randomBytes)(16).toString("hex");
+ import_node_fs4.default.rename(path16, name2, (er) => {
+ if (er) {
+ return cb(er);
}
- var compiledWrapper = script.runInThisContext({
- filename,
- lineOffset: 0,
- columnOffset: 0,
- displayErrors: true
- });
- return compiledWrapper;
+ import_node_fs4.default.unlink(name2, cb);
+ });
+ };
+ unlinkFileSync = (path16) => {
+ if (!isWindows3) {
+ return import_node_fs4.default.unlinkSync(path16);
}
+ const name2 = path16 + ".DELETE." + (0, import_node_crypto.randomBytes)(16).toString("hex");
+ import_node_fs4.default.renameSync(path16, name2);
+ import_node_fs4.default.unlinkSync(name2);
};
- function mkdirpSync(p_) {
- _mkdirpSync(path16.resolve(p_), 511);
- }
- function _mkdirpSync(p, mode) {
- try {
- fs17.mkdirSync(p, mode);
- } catch (err0) {
- if (err0.code === "ENOENT") {
- _mkdirpSync(path16.dirname(p));
- _mkdirpSync(p);
- } else {
- try {
- const stat = fs17.statSync(p);
- if (!stat.isDirectory()) {
- throw err0;
- }
- } catch (err1) {
- throw err0;
+ uint32 = (a, b, c) => a !== void 0 && a === a >>> 0 ? a : b !== void 0 && b === b >>> 0 ? b : c;
+ Unpack = class extends Parser {
+ [ENDED2] = false;
+ [CHECKED_CWD] = false;
+ [PENDING] = 0;
+ reservations = new PathReservations();
+ transform;
+ writable = true;
+ readable = false;
+ uid;
+ gid;
+ setOwner;
+ preserveOwner;
+ processGid;
+ processUid;
+ maxDepth;
+ forceChown;
+ win32;
+ newer;
+ keep;
+ noMtime;
+ preservePaths;
+ unlink;
+ cwd;
+ strip;
+ processUmask;
+ umask;
+ dmode;
+ fmode;
+ chmod;
+ constructor(opt = {}) {
+ opt.ondone = () => {
+ this[ENDED2] = true;
+ this[MAYBECLOSE]();
+ };
+ super(opt);
+ this.transform = opt.transform;
+ this.chmod = !!opt.chmod;
+ if (typeof opt.uid === "number" || typeof opt.gid === "number") {
+ if (typeof opt.uid !== "number" || typeof opt.gid !== "number") {
+ throw new TypeError("cannot set owner without number uid and gid");
+ }
+ if (opt.preserveOwner) {
+ throw new TypeError("cannot preserve owner in archive and also set owner explicitly");
}
+ this.uid = opt.uid;
+ this.gid = opt.gid;
+ this.setOwner = true;
+ } else {
+ this.uid = void 0;
+ this.gid = void 0;
+ this.setOwner = false;
}
+ this.preserveOwner = opt.preserveOwner === void 0 && typeof opt.uid !== "number" ? !!(process.getuid?.() === 0) : !!opt.preserveOwner;
+ this.processUid = (this.preserveOwner || this.setOwner) && process.getuid ? process.getuid() : void 0;
+ this.processGid = (this.preserveOwner || this.setOwner) && process.getgid ? process.getgid() : void 0;
+ this.maxDepth = typeof opt.maxDepth === "number" ? opt.maxDepth : DEFAULT_MAX_DEPTH;
+ this.forceChown = opt.forceChown === true;
+ this.win32 = !!opt.win32 || isWindows3;
+ this.newer = !!opt.newer;
+ this.keep = !!opt.keep;
+ this.noMtime = !!opt.noMtime;
+ this.preservePaths = !!opt.preservePaths;
+ this.unlink = !!opt.unlink;
+ this.cwd = normalizeWindowsPath(import_node_path7.default.resolve(opt.cwd || process.cwd()));
+ this.strip = Number(opt.strip) || 0;
+ this.processUmask = !this.chmod ? 0 : typeof opt.processUmask === "number" ? opt.processUmask : umask();
+ this.umask = typeof opt.umask === "number" ? opt.umask : this.processUmask;
+ this.dmode = opt.dmode || 511 & ~this.umask;
+ this.fmode = opt.fmode || 438 & ~this.umask;
+ this.on("entry", (entry) => this[ONENTRY](entry));
}
- }
- function slashEscape(str) {
- const ESCAPE_LOOKUP = {
- "\\": "zB",
- ":": "zC",
- "/": "zS",
- "\0": "z0",
- "z": "zZ"
- };
- const ESCAPE_REGEX = /[\\:/\x00z]/g;
- return str.replace(ESCAPE_REGEX, (match) => ESCAPE_LOOKUP[match]);
- }
- function supportsCachedData() {
- const script = new vm.Script('""', { produceCachedData: true });
- return script.cachedDataProduced === true;
- }
- function getCacheDir() {
- const v8_compile_cache_cache_dir = process.env.V8_COMPILE_CACHE_CACHE_DIR;
- if (v8_compile_cache_cache_dir) {
- return v8_compile_cache_cache_dir;
+ // a bad or damaged archive is a warning for Parser, but an error
+ // when extracting. Mark those errors as unrecoverable, because
+ // the Unpack contract cannot be met.
+ warn(code2, msg, data = {}) {
+ if (code2 === "TAR_BAD_ARCHIVE" || code2 === "TAR_ABORT") {
+ data.recoverable = false;
+ }
+ return super.warn(code2, msg, data);
}
- const dirname2 = typeof process.getuid === "function" ? "v8-compile-cache-" + process.getuid() : "v8-compile-cache";
- const arch = process.arch;
- const version2 = typeof process.versions.v8 === "string" ? process.versions.v8 : typeof process.versions.chakracore === "string" ? "chakracore-" + process.versions.chakracore : "node-" + process.version;
- const cacheDir = path16.join(os3.tmpdir(), dirname2, arch, version2);
- return cacheDir;
- }
- function getMainName() {
- const mainName = require.main && typeof require.main.filename === "string" ? require.main.filename : process.cwd();
- return mainName;
- }
- if (!process.env.DISABLE_V8_COMPILE_CACHE && supportsCachedData()) {
- const cacheDir = getCacheDir();
- const prefix = getMainName();
- const blobStore = new FileSystemBlobStore(cacheDir, prefix);
- const nativeCompileCache = new NativeCompileCache();
- nativeCompileCache.setCacheStore(blobStore);
- nativeCompileCache.install();
- process.once("exit", () => {
- if (blobStore.isDirty()) {
- blobStore.save();
+ [MAYBECLOSE]() {
+ if (this[ENDED2] && this[PENDING] === 0) {
+ this.emit("prefinish");
+ this.emit("finish");
+ this.emit("end");
}
- nativeCompileCache.uninstall();
- });
- }
- module2.exports.__TEST__ = {
- FileSystemBlobStore,
- NativeCompileCache,
- mkdirpSync,
- slashEscape,
- supportsCachedData,
- getCacheDir,
- getMainName
- };
- }
-});
-
-// .yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/functions/satisfies.js
-var require_satisfies = __commonJS({
- ".yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/functions/satisfies.js"(exports2, module2) {
- "use strict";
- var Range3 = require_range();
- var satisfies = (version2, range, options) => {
- try {
- range = new Range3(range, options);
- } catch (er) {
- return false;
}
- return range.test(version2);
- };
- module2.exports = satisfies;
- }
-});
-
-// .yarn/cache/isexe-npm-3.1.1-9c0061eead-9ec2576540.zip/node_modules/isexe/dist/cjs/posix.js
-var require_posix = __commonJS({
- ".yarn/cache/isexe-npm-3.1.1-9c0061eead-9ec2576540.zip/node_modules/isexe/dist/cjs/posix.js"(exports2) {
- "use strict";
- Object.defineProperty(exports2, "__esModule", { value: true });
- exports2.sync = exports2.isexe = void 0;
- var fs_1 = require("fs");
- var promises_1 = require("fs/promises");
- var isexe = async (path16, options = {}) => {
- const { ignoreErrors = false } = options;
- try {
- return checkStat(await (0, promises_1.stat)(path16), options);
- } catch (e) {
- const er = e;
- if (ignoreErrors || er.code === "EACCES")
+ // return false if we need to skip this file
+ // return true if the field was successfully sanitized
+ [STRIPABSOLUTEPATH](entry, field) {
+ const p = entry[field];
+ const { type } = entry;
+ if (!p || this.preservePaths)
+ return true;
+ const [root, stripped] = stripAbsolutePath(p);
+ const parts = stripped.replaceAll(/\\/g, "/").split("/");
+ if (parts.includes("..") || /* c8 ignore next */
+ isWindows3 && /^[a-z]:\.\.$/i.test(parts[0] ?? "")) {
+ if (field === "path" || type === "Link") {
+ this.warn("TAR_ENTRY_ERROR", `${field} contains '..'`, {
+ entry,
+ [field]: p
+ });
+ return false;
+ }
+ const entryDir = import_node_path7.default.posix.dirname(entry.path);
+ const resolved = import_node_path7.default.posix.normalize(import_node_path7.default.posix.join(entryDir, parts.join("/")));
+ if (resolved.startsWith("../") || resolved === "..") {
+ this.warn("TAR_ENTRY_ERROR", `${field} escapes extraction directory`, {
+ entry,
+ [field]: p
+ });
+ return false;
+ }
+ }
+ if (root) {
+ entry[field] = String(stripped);
+ this.warn("TAR_ENTRY_INFO", `stripping ${root} from absolute ${field}`, {
+ entry,
+ [field]: p
+ });
+ }
+ return true;
+ }
+ // no IO, just string checking for absolute indicators
+ [CHECKPATH](entry) {
+ const p = normalizeWindowsPath(entry.path);
+ const parts = p.split("/");
+ if (this.strip) {
+ if (parts.length < this.strip) {
+ return false;
+ }
+ if (entry.type === "Link") {
+ const linkparts = normalizeWindowsPath(String(entry.linkpath)).split("/");
+ if (linkparts.length >= this.strip) {
+ entry.linkpath = linkparts.slice(this.strip).join("/");
+ } else {
+ return false;
+ }
+ }
+ parts.splice(0, this.strip);
+ entry.path = parts.join("/");
+ }
+ if (isFinite(this.maxDepth) && parts.length > this.maxDepth) {
+ this.warn("TAR_ENTRY_ERROR", "path excessively deep", {
+ entry,
+ path: p,
+ depth: parts.length,
+ maxDepth: this.maxDepth
+ });
return false;
- throw er;
- }
- };
- exports2.isexe = isexe;
- var sync = (path16, options = {}) => {
- const { ignoreErrors = false } = options;
- try {
- return checkStat((0, fs_1.statSync)(path16), options);
- } catch (e) {
- const er = e;
- if (ignoreErrors || er.code === "EACCES")
+ }
+ if (!this[STRIPABSOLUTEPATH](entry, "path") || !this[STRIPABSOLUTEPATH](entry, "linkpath")) {
return false;
- throw er;
- }
- };
- exports2.sync = sync;
- var checkStat = (stat, options) => stat.isFile() && checkMode(stat, options);
- var checkMode = (stat, options) => {
- const myUid = options.uid ?? process.getuid?.();
- const myGroups = options.groups ?? process.getgroups?.() ?? [];
- const myGid = options.gid ?? process.getgid?.() ?? myGroups[0];
- if (myUid === void 0 || myGid === void 0) {
- throw new Error("cannot get uid or gid");
- }
- const groups = /* @__PURE__ */ new Set([myGid, ...myGroups]);
- const mod = stat.mode;
- const uid = stat.uid;
- const gid = stat.gid;
- const u = parseInt("100", 8);
- const g = parseInt("010", 8);
- const o = parseInt("001", 8);
- const ug = u | g;
- return !!(mod & o || mod & g && groups.has(gid) || mod & u && uid === myUid || mod & ug && myUid === 0);
- };
- }
-});
-
-// .yarn/cache/isexe-npm-3.1.1-9c0061eead-9ec2576540.zip/node_modules/isexe/dist/cjs/win32.js
-var require_win32 = __commonJS({
- ".yarn/cache/isexe-npm-3.1.1-9c0061eead-9ec2576540.zip/node_modules/isexe/dist/cjs/win32.js"(exports2) {
- "use strict";
- Object.defineProperty(exports2, "__esModule", { value: true });
- exports2.sync = exports2.isexe = void 0;
- var fs_1 = require("fs");
- var promises_1 = require("fs/promises");
- var isexe = async (path16, options = {}) => {
- const { ignoreErrors = false } = options;
- try {
- return checkStat(await (0, promises_1.stat)(path16), path16, options);
- } catch (e) {
- const er = e;
- if (ignoreErrors || er.code === "EACCES")
+ }
+ entry.absolute = import_node_path7.default.isAbsolute(entry.path) ? normalizeWindowsPath(import_node_path7.default.resolve(entry.path)) : normalizeWindowsPath(import_node_path7.default.resolve(this.cwd, entry.path));
+ if (!this.preservePaths && typeof entry.absolute === "string" && entry.absolute.indexOf(this.cwd + "/") !== 0 && entry.absolute !== this.cwd) {
+ this.warn("TAR_ENTRY_ERROR", "path escaped extraction target", {
+ entry,
+ path: normalizeWindowsPath(entry.path),
+ resolvedPath: entry.absolute,
+ cwd: this.cwd
+ });
return false;
- throw er;
- }
- };
- exports2.isexe = isexe;
- var sync = (path16, options = {}) => {
- const { ignoreErrors = false } = options;
- try {
- return checkStat((0, fs_1.statSync)(path16), path16, options);
- } catch (e) {
- const er = e;
- if (ignoreErrors || er.code === "EACCES")
+ }
+ if (entry.absolute === this.cwd && entry.type !== "Directory" && entry.type !== "GNUDumpDir") {
return false;
- throw er;
- }
- };
- exports2.sync = sync;
- var checkPathExt = (path16, options) => {
- const { pathExt = process.env.PATHEXT || "" } = options;
- const peSplit = pathExt.split(";");
- if (peSplit.indexOf("") !== -1) {
+ }
+ if (this.win32) {
+ const { root: aRoot } = import_node_path7.default.win32.parse(String(entry.absolute));
+ entry.absolute = aRoot + encode2(String(entry.absolute).slice(aRoot.length));
+ const { root: pRoot } = import_node_path7.default.win32.parse(entry.path);
+ entry.path = pRoot + encode2(entry.path.slice(pRoot.length));
+ }
return true;
}
- for (let i = 0; i < peSplit.length; i++) {
- const p = peSplit[i].toLowerCase();
- const ext = path16.substring(path16.length - p.length).toLowerCase();
- if (p && ext === p) {
- return true;
+ [ONENTRY](entry) {
+ if (!this[CHECKPATH](entry)) {
+ return entry.resume();
+ }
+ import_node_assert.default.equal(typeof entry.absolute, "string");
+ switch (entry.type) {
+ case "Directory":
+ case "GNUDumpDir":
+ if (entry.mode) {
+ entry.mode = entry.mode | 448;
+ }
+ // eslint-disable-next-line no-fallthrough
+ case "File":
+ case "OldFile":
+ case "ContiguousFile":
+ case "Link":
+ case "SymbolicLink":
+ return this[CHECKFS](entry);
+ case "CharacterDevice":
+ case "BlockDevice":
+ case "FIFO":
+ default:
+ return this[UNSUPPORTED](entry);
}
}
- return false;
- };
- var checkStat = (stat, path16, options) => stat.isFile() && checkPathExt(path16, options);
- }
-});
-
-// .yarn/cache/isexe-npm-3.1.1-9c0061eead-9ec2576540.zip/node_modules/isexe/dist/cjs/options.js
-var require_options = __commonJS({
- ".yarn/cache/isexe-npm-3.1.1-9c0061eead-9ec2576540.zip/node_modules/isexe/dist/cjs/options.js"(exports2) {
- "use strict";
- Object.defineProperty(exports2, "__esModule", { value: true });
- }
-});
-
-// .yarn/cache/isexe-npm-3.1.1-9c0061eead-9ec2576540.zip/node_modules/isexe/dist/cjs/index.js
-var require_cjs = __commonJS({
- ".yarn/cache/isexe-npm-3.1.1-9c0061eead-9ec2576540.zip/node_modules/isexe/dist/cjs/index.js"(exports2) {
- "use strict";
- var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) {
- if (k2 === void 0) k2 = k;
- var desc2 = Object.getOwnPropertyDescriptor(m, k);
- if (!desc2 || ("get" in desc2 ? !m.__esModule : desc2.writable || desc2.configurable)) {
- desc2 = { enumerable: true, get: function() {
- return m[k];
- } };
- }
- Object.defineProperty(o, k2, desc2);
- }) : (function(o, m, k, k2) {
- if (k2 === void 0) k2 = k;
- o[k2] = m[k];
- }));
- var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) {
- Object.defineProperty(o, "default", { enumerable: true, value: v });
- }) : function(o, v) {
- o["default"] = v;
- });
- var __importStar = exports2 && exports2.__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 __exportStar = exports2 && exports2.__exportStar || function(m, exports3) {
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding(exports3, m, p);
- };
- Object.defineProperty(exports2, "__esModule", { value: true });
- exports2.sync = exports2.isexe = exports2.posix = exports2.win32 = void 0;
- var posix = __importStar(require_posix());
- exports2.posix = posix;
- var win322 = __importStar(require_win32());
- exports2.win32 = win322;
- __exportStar(require_options(), exports2);
- var platform5 = process.env._ISEXE_TEST_PLATFORM_ || process.platform;
- var impl = platform5 === "win32" ? win322 : posix;
- exports2.isexe = impl.isexe;
- exports2.sync = impl.sync;
- }
-});
-
-// .yarn/cache/which-npm-5.0.0-15aa39eb60-e556e4cd8b.zip/node_modules/which/lib/index.js
-var require_lib = __commonJS({
- ".yarn/cache/which-npm-5.0.0-15aa39eb60-e556e4cd8b.zip/node_modules/which/lib/index.js"(exports2, module2) {
- var { isexe, sync: isexeSync } = require_cjs();
- var { join: join3, delimiter, sep, posix } = require("path");
- var isWindows4 = process.platform === "win32";
- var rSlash = new RegExp(`[${posix.sep}${sep === posix.sep ? "" : sep}]`.replace(/(\\)/g, "\\$1"));
- var rRel = new RegExp(`^\\.${rSlash.source}`);
- var getNotFoundError = (cmd) => Object.assign(new Error(`not found: ${cmd}`), { code: "ENOENT" });
- var getPathInfo = (cmd, {
- path: optPath = process.env.PATH,
- pathExt: optPathExt = process.env.PATHEXT,
- delimiter: optDelimiter = delimiter
- }) => {
- const pathEnv = cmd.match(rSlash) ? [""] : [
- // windows always checks the cwd first
- ...isWindows4 ? [process.cwd()] : [],
- ...(optPath || /* istanbul ignore next: very unusual */
- "").split(optDelimiter)
- ];
- if (isWindows4) {
- const pathExtExe = optPathExt || [".EXE", ".CMD", ".BAT", ".COM"].join(optDelimiter);
- const pathExt = pathExtExe.split(optDelimiter).flatMap((item) => [item, item.toLowerCase()]);
- if (cmd.includes(".") && pathExt[0] !== "") {
- pathExt.unshift("");
+ [ONERROR](er, entry) {
+ if (er.name === "CwdError") {
+ this.emit("error", er);
+ } else {
+ this.warn("TAR_ENTRY_ERROR", er, { entry });
+ this[UNPEND]();
+ entry.resume();
}
- return { pathEnv, pathExt, pathExtExe };
}
- return { pathEnv, pathExt: [""] };
- };
- var getPathPart = (raw2, cmd) => {
- const pathPart = /^".*"$/.test(raw2) ? raw2.slice(1, -1) : raw2;
- const prefix = !pathPart && rRel.test(cmd) ? cmd.slice(0, 2) : "";
- return prefix + join3(pathPart, cmd);
- };
- var which3 = async (cmd, opt = {}) => {
- const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt);
- const found = [];
- for (const envPart of pathEnv) {
- const p = getPathPart(envPart, cmd);
- for (const ext of pathExt) {
- const withExt = p + ext;
- const is = await isexe(withExt, { pathExt: pathExtExe, ignoreErrors: true });
- if (is) {
- if (!opt.all) {
- return withExt;
+ [MKDIR](dir, mode, cb) {
+ void mkdir(normalizeWindowsPath(dir), {
+ uid: this.uid,
+ gid: this.gid,
+ processUid: this.processUid,
+ processGid: this.processGid,
+ umask: this.processUmask,
+ preserve: this.preservePaths,
+ unlink: this.unlink,
+ cwd: this.cwd,
+ mode
+ }, cb);
+ }
+ [DOCHOWN](entry) {
+ return this.forceChown || this.preserveOwner && (typeof entry.uid === "number" && entry.uid !== this.processUid || typeof entry.gid === "number" && entry.gid !== this.processGid) || typeof this.uid === "number" && this.uid !== this.processUid || typeof this.gid === "number" && this.gid !== this.processGid;
+ }
+ [UID](entry) {
+ return uint32(this.uid, entry.uid, this.processUid);
+ }
+ [GID](entry) {
+ return uint32(this.gid, entry.gid, this.processGid);
+ }
+ [FILE](entry, fullyDone) {
+ const mode = typeof entry.mode === "number" ? entry.mode & 4095 : this.fmode;
+ const stream = new WriteStream(String(entry.absolute), {
+ // slight lie, but it can be numeric flags
+ flags: getWriteFlag(entry.size),
+ mode,
+ autoClose: false
+ });
+ stream.on("error", (er) => {
+ if (stream.fd) {
+ import_node_fs4.default.close(stream.fd, () => {
+ });
+ }
+ stream.write = () => true;
+ this[ONERROR](er, entry);
+ fullyDone();
+ });
+ let actions = 1;
+ const done = (er) => {
+ if (er) {
+ if (stream.fd) {
+ import_node_fs4.default.close(stream.fd, () => {
+ });
+ }
+ this[ONERROR](er, entry);
+ fullyDone();
+ return;
+ }
+ if (--actions === 0) {
+ if (stream.fd !== void 0) {
+ import_node_fs4.default.close(stream.fd, (er2) => {
+ if (er2) {
+ this[ONERROR](er2, entry);
+ } else {
+ this[UNPEND]();
+ }
+ fullyDone();
+ });
+ }
+ }
+ };
+ stream.on("finish", () => {
+ const abs = String(entry.absolute);
+ const fd = stream.fd;
+ if (typeof fd === "number" && entry.mtime && !this.noMtime) {
+ actions++;
+ const atime = entry.atime || /* @__PURE__ */ new Date();
+ const mtime = entry.mtime;
+ import_node_fs4.default.futimes(fd, atime, mtime, (er) => er ? import_node_fs4.default.utimes(abs, atime, mtime, (er2) => done(er2 && er)) : done());
+ }
+ if (typeof fd === "number" && this[DOCHOWN](entry)) {
+ actions++;
+ const uid = this[UID](entry);
+ const gid = this[GID](entry);
+ if (typeof uid === "number" && typeof gid === "number") {
+ import_node_fs4.default.fchown(fd, uid, gid, (er) => er ? import_node_fs4.default.chown(abs, uid, gid, (er2) => done(er2 && er)) : done());
}
- found.push(withExt);
}
+ done();
+ });
+ const tx = this.transform ? this.transform(entry) || entry : entry;
+ if (tx !== entry) {
+ tx.on("error", (er) => {
+ this[ONERROR](er, entry);
+ fullyDone();
+ });
+ entry.pipe(tx);
}
+ tx.pipe(stream);
}
- if (opt.all && found.length) {
- return found;
- }
- if (opt.nothrow) {
- return null;
- }
- throw getNotFoundError(cmd);
- };
- var whichSync = (cmd, opt = {}) => {
- const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt);
- const found = [];
- for (const pathEnvPart of pathEnv) {
- const p = getPathPart(pathEnvPart, cmd);
- for (const ext of pathExt) {
- const withExt = p + ext;
- const is = isexeSync(withExt, { pathExt: pathExtExe, ignoreErrors: true });
- if (is) {
- if (!opt.all) {
- return withExt;
+ [DIRECTORY](entry, fullyDone) {
+ const mode = typeof entry.mode === "number" ? entry.mode & 4095 : this.dmode;
+ this[MKDIR](String(entry.absolute), mode, (er) => {
+ if (er) {
+ this[ONERROR](er, entry);
+ fullyDone();
+ return;
+ }
+ let actions = 1;
+ const done = () => {
+ if (--actions === 0) {
+ fullyDone();
+ this[UNPEND]();
+ entry.resume();
}
- found.push(withExt);
+ };
+ if (entry.mtime && !this.noMtime) {
+ actions++;
+ import_node_fs4.default.utimes(String(entry.absolute), entry.atime || /* @__PURE__ */ new Date(), entry.mtime, done);
}
- }
+ if (this[DOCHOWN](entry)) {
+ actions++;
+ import_node_fs4.default.chown(String(entry.absolute), Number(this[UID](entry)), Number(this[GID](entry)), done);
+ }
+ done();
+ });
}
- if (opt.all && found.length) {
- return found;
+ [UNSUPPORTED](entry) {
+ entry.unsupported = true;
+ this.warn("TAR_ENTRY_UNSUPPORTED", `unsupported entry type: ${entry.type}`, { entry });
+ entry.resume();
}
- if (opt.nothrow) {
- return null;
+ [SYMLINK](entry, done) {
+ const parts = normalizeWindowsPath(import_node_path7.default.relative(this.cwd, import_node_path7.default.resolve(import_node_path7.default.dirname(String(entry.absolute)), String(entry.linkpath)))).split("/");
+ this[ENSURE_NO_SYMLINK](entry, this.cwd, parts, () => this[LINK](entry, String(entry.linkpath), "symlink", done), (er) => {
+ this[ONERROR](er, entry);
+ done();
+ });
}
- throw getNotFoundError(cmd);
- };
- module2.exports = which3;
- which3.sync = whichSync;
- }
-});
-
-// .yarn/cache/is-windows-npm-1.0.2-898cd6f3d7-b32f418ab3.zip/node_modules/is-windows/index.js
-var require_is_windows = __commonJS({
- ".yarn/cache/is-windows-npm-1.0.2-898cd6f3d7-b32f418ab3.zip/node_modules/is-windows/index.js"(exports2, module2) {
- (function(factory) {
- if (exports2 && typeof exports2 === "object" && typeof module2 !== "undefined") {
- module2.exports = factory();
- } else if (typeof define === "function" && define.amd) {
- define([], factory);
- } else if (typeof window !== "undefined") {
- window.isWindows = factory();
- } else if (typeof global !== "undefined") {
- global.isWindows = factory();
- } else if (typeof self !== "undefined") {
- self.isWindows = factory();
- } else {
- this.isWindows = factory();
+ [HARDLINK](entry, done) {
+ const linkpath = normalizeWindowsPath(import_node_path7.default.resolve(this.cwd, String(entry.linkpath)));
+ const parts = normalizeWindowsPath(String(entry.linkpath)).split("/");
+ this[ENSURE_NO_SYMLINK](entry, this.cwd, parts, () => this[LINK](entry, linkpath, "link", done), (er) => {
+ this[ONERROR](er, entry);
+ done();
+ });
}
- })(function() {
- "use strict";
- return function isWindows4() {
- return process && (process.platform === "win32" || /^(msys|cygwin)$/.test(process.env.OSTYPE));
- };
- });
- }
-});
-
-// .yarn/cache/cmd-extension-npm-1.0.2-11aa204c4b-acdb425d51.zip/node_modules/cmd-extension/index.js
-var require_cmd_extension = __commonJS({
- ".yarn/cache/cmd-extension-npm-1.0.2-11aa204c4b-acdb425d51.zip/node_modules/cmd-extension/index.js"(exports2, module2) {
- "use strict";
- var path16 = require("path");
- var cmdExtension;
- if (process.env.PATHEXT) {
- cmdExtension = process.env.PATHEXT.split(path16.delimiter).find((ext) => ext.toUpperCase() === ".CMD");
- }
- module2.exports = cmdExtension || ".cmd";
- }
-});
-
-// .yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-386d011a55.zip/node_modules/graceful-fs/polyfills.js
-var require_polyfills = __commonJS({
- ".yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-386d011a55.zip/node_modules/graceful-fs/polyfills.js"(exports2, module2) {
- var constants2 = require("constants");
- var origCwd = process.cwd;
- var cwd = null;
- var platform5 = process.env.GRACEFUL_FS_PLATFORM || process.platform;
- process.cwd = function() {
- if (!cwd)
- cwd = origCwd.call(process);
- return cwd;
- };
- try {
- process.cwd();
- } catch (er) {
- }
- if (typeof process.chdir === "function") {
- chdir = process.chdir;
- process.chdir = function(d) {
- cwd = null;
- chdir.call(process, d);
- };
- if (Object.setPrototypeOf) Object.setPrototypeOf(process.chdir, chdir);
- }
- var chdir;
- module2.exports = patch;
- function patch(fs17) {
- if (constants2.hasOwnProperty("O_SYMLINK") && process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) {
- patchLchmod(fs17);
+ [ENSURE_NO_SYMLINK](entry, cwd, parts, done, onError) {
+ const p = parts.shift();
+ if (this.preservePaths || p === void 0)
+ return done();
+ const t = import_node_path7.default.resolve(cwd, p);
+ import_node_fs4.default.lstat(t, (er, st) => {
+ if (er)
+ return done();
+ if (st?.isSymbolicLink()) {
+ return onError(new SymlinkError(t, import_node_path7.default.resolve(t, parts.join("/"))));
+ }
+ this[ENSURE_NO_SYMLINK](entry, t, parts, done, onError);
+ });
}
- if (!fs17.lutimes) {
- patchLutimes(fs17);
+ [PEND]() {
+ this[PENDING]++;
}
- fs17.chown = chownFix(fs17.chown);
- fs17.fchown = chownFix(fs17.fchown);
- fs17.lchown = chownFix(fs17.lchown);
- fs17.chmod = chmodFix(fs17.chmod);
- fs17.fchmod = chmodFix(fs17.fchmod);
- fs17.lchmod = chmodFix(fs17.lchmod);
- fs17.chownSync = chownFixSync(fs17.chownSync);
- fs17.fchownSync = chownFixSync(fs17.fchownSync);
- fs17.lchownSync = chownFixSync(fs17.lchownSync);
- fs17.chmodSync = chmodFixSync(fs17.chmodSync);
- fs17.fchmodSync = chmodFixSync(fs17.fchmodSync);
- fs17.lchmodSync = chmodFixSync(fs17.lchmodSync);
- fs17.stat = statFix(fs17.stat);
- fs17.fstat = statFix(fs17.fstat);
- fs17.lstat = statFix(fs17.lstat);
- fs17.statSync = statFixSync(fs17.statSync);
- fs17.fstatSync = statFixSync(fs17.fstatSync);
- fs17.lstatSync = statFixSync(fs17.lstatSync);
- if (fs17.chmod && !fs17.lchmod) {
- fs17.lchmod = function(path16, mode, cb) {
- if (cb) process.nextTick(cb);
- };
- fs17.lchmodSync = function() {
- };
+ [UNPEND]() {
+ this[PENDING]--;
+ this[MAYBECLOSE]();
}
- if (fs17.chown && !fs17.lchown) {
- fs17.lchown = function(path16, uid, gid, cb) {
- if (cb) process.nextTick(cb);
- };
- fs17.lchownSync = function() {
- };
+ [SKIP](entry) {
+ this[UNPEND]();
+ entry.resume();
}
- if (platform5 === "win32") {
- fs17.rename = typeof fs17.rename !== "function" ? fs17.rename : (function(fs$rename) {
- function rename(from, to, cb) {
- var start = Date.now();
- var backoff = 0;
- fs$rename(from, to, function CB(er) {
- if (er && (er.code === "EACCES" || er.code === "EPERM" || er.code === "EBUSY") && Date.now() - start < 6e4) {
- setTimeout(function() {
- fs17.stat(to, function(stater, st) {
- if (stater && stater.code === "ENOENT")
- fs$rename(from, to, CB);
- else
- cb(er);
- });
- }, backoff);
- if (backoff < 100)
- backoff += 10;
- return;
- }
- if (cb) cb(er);
- });
- }
- if (Object.setPrototypeOf) Object.setPrototypeOf(rename, fs$rename);
- return rename;
- })(fs17.rename);
+ // Check if we can reuse an existing filesystem entry safely and
+ // overwrite it, rather than unlinking and recreating
+ // Windows doesn't report a useful nlink, so we just never reuse entries
+ [ISREUSABLE](entry, st) {
+ return entry.type === "File" && !this.unlink && st.isFile() && st.nlink <= 1 && !isWindows3;
}
- fs17.read = typeof fs17.read !== "function" ? fs17.read : (function(fs$read) {
- function read(fd, buffer, offset, length, position, callback_) {
- var callback;
- if (callback_ && typeof callback_ === "function") {
- var eagCounter = 0;
- callback = function(er, _, __) {
- if (er && er.code === "EAGAIN" && eagCounter < 10) {
- eagCounter++;
- return fs$read.call(fs17, fd, buffer, offset, length, position, callback);
- }
- callback_.apply(this, arguments);
- };
- }
- return fs$read.call(fs17, fd, buffer, offset, length, position, callback);
+ // check if a thing is there, and if so, try to clobber it
+ [CHECKFS](entry) {
+ this[PEND]();
+ const paths = [entry.path];
+ if (entry.linkpath) {
+ paths.push(entry.linkpath);
}
- if (Object.setPrototypeOf) Object.setPrototypeOf(read, fs$read);
- return read;
- })(fs17.read);
- fs17.readSync = typeof fs17.readSync !== "function" ? fs17.readSync : /* @__PURE__ */ (function(fs$readSync) {
- return function(fd, buffer, offset, length, position) {
- var eagCounter = 0;
- while (true) {
- try {
- return fs$readSync.call(fs17, fd, buffer, offset, length, position);
- } catch (er) {
- if (er.code === "EAGAIN" && eagCounter < 10) {
- eagCounter++;
- continue;
- }
- throw er;
- }
- }
+ this.reservations.reserve(paths, (done) => this[CHECKFS2](entry, done));
+ }
+ [CHECKFS2](entry, fullyDone) {
+ const done = (er) => {
+ fullyDone(er);
};
- })(fs17.readSync);
- function patchLchmod(fs18) {
- fs18.lchmod = function(path16, mode, callback) {
- fs18.open(
- path16,
- constants2.O_WRONLY | constants2.O_SYMLINK,
- mode,
- function(err, fd) {
- if (err) {
- if (callback) callback(err);
- return;
- }
- fs18.fchmod(fd, mode, function(err2) {
- fs18.close(fd, function(err22) {
- if (callback) callback(err2 || err22);
- });
- });
+ const checkCwd2 = () => {
+ this[MKDIR](this.cwd, this.dmode, (er) => {
+ if (er) {
+ this[ONERROR](er, entry);
+ done();
+ return;
}
- );
+ this[CHECKED_CWD] = true;
+ start();
+ });
};
- fs18.lchmodSync = function(path16, mode) {
- var fd = fs18.openSync(path16, constants2.O_WRONLY | constants2.O_SYMLINK, mode);
- var threw = true;
- var ret;
- try {
- ret = fs18.fchmodSync(fd, mode);
- threw = false;
- } finally {
- if (threw) {
- try {
- fs18.closeSync(fd);
- } catch (er) {
- }
- } else {
- fs18.closeSync(fd);
+ const start = () => {
+ if (entry.absolute !== this.cwd) {
+ const parent = normalizeWindowsPath(import_node_path7.default.dirname(String(entry.absolute)));
+ if (parent !== this.cwd) {
+ return this[MKDIR](parent, this.dmode, (er) => {
+ if (er) {
+ this[ONERROR](er, entry);
+ done();
+ return;
+ }
+ afterMakeParent();
+ });
}
}
- return ret;
+ afterMakeParent();
};
- }
- function patchLutimes(fs18) {
- if (constants2.hasOwnProperty("O_SYMLINK") && fs18.futimes) {
- fs18.lutimes = function(path16, at, mt, cb) {
- fs18.open(path16, constants2.O_SYMLINK, function(er, fd) {
- if (er) {
- if (cb) cb(er);
- return;
- }
- fs18.futimes(fd, at, mt, function(er2) {
- fs18.close(fd, function(er22) {
- if (cb) cb(er2 || er22);
- });
- });
- });
- };
- fs18.lutimesSync = function(path16, at, mt) {
- var fd = fs18.openSync(path16, constants2.O_SYMLINK);
- var ret;
- var threw = true;
- try {
- ret = fs18.futimesSync(fd, at, mt);
- threw = false;
- } finally {
- if (threw) {
- try {
- fs18.closeSync(fd);
- } catch (er) {
+ const afterMakeParent = () => {
+ import_node_fs4.default.lstat(String(entry.absolute), (lstatEr, st) => {
+ if (st && (this.keep || /* c8 ignore next */
+ this.newer && st.mtime > (entry.mtime ?? st.mtime))) {
+ this[SKIP](entry);
+ done();
+ return;
+ }
+ if (lstatEr || this[ISREUSABLE](entry, st)) {
+ return this[MAKEFS](null, entry, done);
+ }
+ if (st.isDirectory()) {
+ if (entry.type === "Directory") {
+ const needChmod = this.chmod && entry.mode && (st.mode & 4095) !== entry.mode;
+ const afterChmod = (er) => this[MAKEFS](er ?? null, entry, done);
+ if (!needChmod) {
+ return afterChmod();
}
- } else {
- fs18.closeSync(fd);
+ return import_node_fs4.default.chmod(String(entry.absolute), Number(entry.mode), afterChmod);
+ }
+ if (entry.absolute !== this.cwd) {
+ return import_node_fs4.default.rmdir(String(entry.absolute), (er) => this[MAKEFS](er ?? null, entry, done));
}
}
- return ret;
- };
- } else if (fs18.futimes) {
- fs18.lutimes = function(_a, _b, _c, cb) {
- if (cb) process.nextTick(cb);
- };
- fs18.lutimesSync = function() {
- };
- }
- }
- function chmodFix(orig) {
- if (!orig) return orig;
- return function(target, mode, cb) {
- return orig.call(fs17, target, mode, function(er) {
- if (chownErOk(er)) er = null;
- if (cb) cb.apply(this, arguments);
+ if (entry.absolute === this.cwd) {
+ return this[MAKEFS](null, entry, done);
+ }
+ unlinkFile(String(entry.absolute), (er) => this[MAKEFS](er ?? null, entry, done));
});
};
+ if (this[CHECKED_CWD]) {
+ start();
+ } else {
+ checkCwd2();
+ }
}
- function chmodFixSync(orig) {
- if (!orig) return orig;
- return function(target, mode) {
- try {
- return orig.call(fs17, target, mode);
- } catch (er) {
- if (!chownErOk(er)) throw er;
+ [MAKEFS](er, entry, done) {
+ if (er) {
+ this[ONERROR](er, entry);
+ done();
+ return;
+ }
+ switch (entry.type) {
+ case "File":
+ case "OldFile":
+ case "ContiguousFile":
+ return this[FILE](entry, done);
+ case "Link":
+ return this[HARDLINK](entry, done);
+ case "SymbolicLink":
+ return this[SYMLINK](entry, done);
+ case "Directory":
+ case "GNUDumpDir":
+ return this[DIRECTORY](entry, done);
+ }
+ }
+ [LINK](entry, linkpath, link, done) {
+ import_node_fs4.default[link](linkpath, String(entry.absolute), (er) => {
+ if (er) {
+ this[ONERROR](er, entry);
+ } else {
+ this[UNPEND]();
+ entry.resume();
}
- };
+ done();
+ });
}
- function chownFix(orig) {
- if (!orig) return orig;
- return function(target, uid, gid, cb) {
- return orig.call(fs17, target, uid, gid, function(er) {
- if (chownErOk(er)) er = null;
- if (cb) cb.apply(this, arguments);
- });
- };
+ };
+ callSync = (fn2) => {
+ try {
+ return [null, fn2()];
+ } catch (er) {
+ return [er, null];
}
- function chownFixSync(orig) {
- if (!orig) return orig;
- return function(target, uid, gid) {
+ };
+ UnpackSync = class extends Unpack {
+ sync = true;
+ [MAKEFS](er, entry) {
+ return super[MAKEFS](er, entry, () => {
+ });
+ }
+ [CHECKFS](entry) {
+ if (!this[CHECKED_CWD]) {
+ const er2 = this[MKDIR](this.cwd, this.dmode);
+ if (er2) {
+ return this[ONERROR](er2, entry);
+ }
+ this[CHECKED_CWD] = true;
+ }
+ if (entry.absolute !== this.cwd) {
+ const parent = normalizeWindowsPath(import_node_path7.default.dirname(String(entry.absolute)));
+ if (parent !== this.cwd) {
+ const mkParent = this[MKDIR](parent, this.dmode);
+ if (mkParent) {
+ return this[ONERROR](mkParent, entry);
+ }
+ }
+ }
+ const [lstatEr, st] = callSync(() => import_node_fs4.default.lstatSync(String(entry.absolute)));
+ if (st && (this.keep || /* c8 ignore next */
+ this.newer && st.mtime > (entry.mtime ?? st.mtime))) {
+ return this[SKIP](entry);
+ }
+ if (lstatEr || this[ISREUSABLE](entry, st)) {
+ return this[MAKEFS](null, entry);
+ }
+ if (st.isDirectory()) {
+ if (entry.type === "Directory") {
+ const needChmod = this.chmod && entry.mode && (st.mode & 4095) !== entry.mode;
+ const [er3] = needChmod ? callSync(() => {
+ import_node_fs4.default.chmodSync(String(entry.absolute), Number(entry.mode));
+ }) : [];
+ return this[MAKEFS](er3, entry);
+ }
+ const [er2] = callSync(() => import_node_fs4.default.rmdirSync(String(entry.absolute)));
+ this[MAKEFS](er2, entry);
+ }
+ const [er] = entry.absolute === this.cwd ? [] : callSync(() => unlinkFileSync(String(entry.absolute)));
+ this[MAKEFS](er, entry);
+ }
+ [FILE](entry, done) {
+ const mode = typeof entry.mode === "number" ? entry.mode & 4095 : this.fmode;
+ const oner = (er) => {
+ let closeError;
+ try {
+ import_node_fs4.default.closeSync(fd);
+ } catch (e) {
+ closeError = e;
+ }
+ if (er || closeError) {
+ this[ONERROR](er || closeError, entry);
+ }
+ done();
+ };
+ let fd;
+ try {
+ fd = import_node_fs4.default.openSync(String(entry.absolute), getWriteFlag(entry.size), mode);
+ } catch (er) {
+ return oner(er);
+ }
+ const tx = this.transform ? this.transform(entry) || entry : entry;
+ if (tx !== entry) {
+ tx.on("error", (er) => this[ONERROR](er, entry));
+ entry.pipe(tx);
+ }
+ tx.on("data", (chunk) => {
try {
- return orig.call(fs17, target, uid, gid);
+ import_node_fs4.default.writeSync(fd, chunk, 0, chunk.length);
} catch (er) {
- if (!chownErOk(er)) throw er;
- }
- };
- }
- function statFix(orig) {
- if (!orig) return orig;
- return function(target, options, cb) {
- if (typeof options === "function") {
- cb = options;
- options = null;
+ oner(er);
}
- function callback(er, stats) {
- if (stats) {
- if (stats.uid < 0) stats.uid += 4294967296;
- if (stats.gid < 0) stats.gid += 4294967296;
+ });
+ tx.on("end", () => {
+ let er = null;
+ if (entry.mtime && !this.noMtime) {
+ const atime = entry.atime || /* @__PURE__ */ new Date();
+ const mtime = entry.mtime;
+ try {
+ import_node_fs4.default.futimesSync(fd, atime, mtime);
+ } catch (futimeser) {
+ try {
+ import_node_fs4.default.utimesSync(String(entry.absolute), atime, mtime);
+ } catch {
+ er = futimeser;
+ }
}
- if (cb) cb.apply(this, arguments);
}
- return options ? orig.call(fs17, target, options, callback) : orig.call(fs17, target, callback);
- };
- }
- function statFixSync(orig) {
- if (!orig) return orig;
- return function(target, options) {
- var stats = options ? orig.call(fs17, target, options) : orig.call(fs17, target);
- if (stats) {
- if (stats.uid < 0) stats.uid += 4294967296;
- if (stats.gid < 0) stats.gid += 4294967296;
+ if (this[DOCHOWN](entry)) {
+ const uid = this[UID](entry);
+ const gid = this[GID](entry);
+ try {
+ import_node_fs4.default.fchownSync(fd, Number(uid), Number(gid));
+ } catch (fchowner) {
+ try {
+ import_node_fs4.default.chownSync(String(entry.absolute), Number(uid), Number(gid));
+ } catch {
+ er = er || fchowner;
+ }
+ }
}
- return stats;
- };
- }
- function chownErOk(er) {
- if (!er)
- return true;
- if (er.code === "ENOSYS")
- return true;
- var nonroot = !process.getuid || process.getuid() !== 0;
- if (nonroot) {
- if (er.code === "EINVAL" || er.code === "EPERM")
- return true;
- }
- return false;
+ oner(er);
+ });
}
- }
- }
-});
-
-// .yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-386d011a55.zip/node_modules/graceful-fs/legacy-streams.js
-var require_legacy_streams = __commonJS({
- ".yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-386d011a55.zip/node_modules/graceful-fs/legacy-streams.js"(exports2, module2) {
- var Stream2 = require("stream").Stream;
- module2.exports = legacy;
- function legacy(fs17) {
- return {
- ReadStream: ReadStream2,
- WriteStream: WriteStream2
- };
- function ReadStream2(path16, options) {
- if (!(this instanceof ReadStream2)) return new ReadStream2(path16, options);
- Stream2.call(this);
- var self2 = this;
- this.path = path16;
- this.fd = null;
- this.readable = true;
- this.paused = false;
- this.flags = "r";
- this.mode = 438;
- this.bufferSize = 64 * 1024;
- options = options || {};
- var keys = Object.keys(options);
- for (var index = 0, length = keys.length; index < length; index++) {
- var key = keys[index];
- this[key] = options[key];
+ [DIRECTORY](entry, done) {
+ const mode = typeof entry.mode === "number" ? entry.mode & 4095 : this.dmode;
+ const er = this[MKDIR](String(entry.absolute), mode);
+ if (er) {
+ this[ONERROR](er, entry);
+ done();
+ return;
}
- if (this.encoding) this.setEncoding(this.encoding);
- if (this.start !== void 0) {
- if ("number" !== typeof this.start) {
- throw TypeError("start must be a Number");
- }
- if (this.end === void 0) {
- this.end = Infinity;
- } else if ("number" !== typeof this.end) {
- throw TypeError("end must be a Number");
+ if (entry.mtime && !this.noMtime) {
+ try {
+ import_node_fs4.default.utimesSync(String(entry.absolute), entry.atime || /* @__PURE__ */ new Date(), entry.mtime);
+ } catch {
}
- if (this.start > this.end) {
- throw new Error("start must be <= end");
+ }
+ if (this[DOCHOWN](entry)) {
+ try {
+ import_node_fs4.default.chownSync(String(entry.absolute), Number(this[UID](entry)), Number(this[GID](entry)));
+ } catch {
}
- this.pos = this.start;
}
- if (this.fd !== null) {
- process.nextTick(function() {
- self2._read();
+ done();
+ entry.resume();
+ }
+ [MKDIR](dir, mode) {
+ try {
+ return mkdirSync2(normalizeWindowsPath(dir), {
+ uid: this.uid,
+ gid: this.gid,
+ processUid: this.processUid,
+ processGid: this.processGid,
+ umask: this.processUmask,
+ preserve: this.preservePaths,
+ unlink: this.unlink,
+ cwd: this.cwd,
+ mode
});
- return;
+ } catch (er) {
+ return er;
}
- fs17.open(this.path, this.flags, this.mode, function(err, fd) {
- if (err) {
- self2.emit("error", err);
- self2.readable = false;
- return;
- }
- self2.fd = fd;
- self2.emit("open", fd);
- self2._read();
- });
}
- function WriteStream2(path16, options) {
- if (!(this instanceof WriteStream2)) return new WriteStream2(path16, options);
- Stream2.call(this);
- this.path = path16;
- this.fd = null;
- this.writable = true;
- this.flags = "w";
- this.encoding = "binary";
- this.mode = 438;
- this.bytesWritten = 0;
- options = options || {};
- var keys = Object.keys(options);
- for (var index = 0, length = keys.length; index < length; index++) {
- var key = keys[index];
- this[key] = options[key];
- }
- if (this.start !== void 0) {
- if ("number" !== typeof this.start) {
- throw TypeError("start must be a Number");
- }
- if (this.start < 0) {
- throw new Error("start must be >= zero");
+ [ENSURE_NO_SYMLINK](_entry, cwd, parts, done, onError) {
+ if (this.preservePaths || parts.length === 0)
+ return done();
+ let t = cwd;
+ for (const p of parts) {
+ t = import_node_path7.default.resolve(t, p);
+ const [er, st] = callSync(() => import_node_fs4.default.lstatSync(t));
+ if (er)
+ return done();
+ if (st.isSymbolicLink()) {
+ return onError(new SymlinkError(t, import_node_path7.default.resolve(cwd, parts.join("/"))));
}
- this.pos = this.start;
}
- this.busy = false;
- this._queue = [];
- if (this.fd === null) {
- this._open = fs17.open;
- this._queue.push([this._open, this.path, this.flags, this.mode, void 0]);
- this.flush();
+ done();
+ }
+ [LINK](entry, linkpath, link, done) {
+ const linkSync = `${link}Sync`;
+ try {
+ import_node_fs4.default[linkSync](linkpath, String(entry.absolute));
+ done();
+ entry.resume();
+ } catch (er) {
+ return this[ONERROR](er, entry);
}
}
- }
+ };
}
});
-// .yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-386d011a55.zip/node_modules/graceful-fs/clone.js
-var require_clone = __commonJS({
- ".yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-386d011a55.zip/node_modules/graceful-fs/clone.js"(exports2, module2) {
- "use strict";
- module2.exports = clone;
- var getPrototypeOf = Object.getPrototypeOf || function(obj) {
- return obj.__proto__;
- };
- function clone(obj) {
- if (obj === null || typeof obj !== "object")
- return obj;
- if (obj instanceof Object)
- var copy = { __proto__: getPrototypeOf(obj) };
- else
- var copy = /* @__PURE__ */ Object.create(null);
- Object.getOwnPropertyNames(obj).forEach(function(key) {
- Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key));
+// node_modules/tar/dist/esm/extract.js
+var extract_exports = {};
+__export(extract_exports, {
+ extract: () => extract
+});
+var import_node_fs5, extractFileSync, extractFile, extract;
+var init_extract = __esm({
+ "node_modules/tar/dist/esm/extract.js"() {
+ init_esm2();
+ import_node_fs5 = __toESM(require("node:fs"), 1);
+ init_list();
+ init_make_command();
+ init_unpack();
+ extractFileSync = (opt) => {
+ const u = new UnpackSync(opt);
+ const file = opt.file;
+ const stat = import_node_fs5.default.statSync(file);
+ const readSize = opt.maxReadSize || 16 * 1024 * 1024;
+ const stream = new ReadStreamSync(file, {
+ readSize,
+ size: stat.size
});
- return copy;
- }
+ stream.pipe(u);
+ };
+ extractFile = (opt, _) => {
+ const u = new Unpack(opt);
+ const readSize = opt.maxReadSize || 16 * 1024 * 1024;
+ const file = opt.file;
+ const p = new Promise((resolve, reject) => {
+ u.on("error", reject);
+ u.on("close", resolve);
+ import_node_fs5.default.stat(file, (er, stat) => {
+ if (er) {
+ reject(er);
+ } else {
+ const stream = new ReadStream(file, {
+ readSize,
+ size: stat.size
+ });
+ stream.on("error", reject);
+ stream.pipe(u);
+ }
+ });
+ });
+ return p;
+ };
+ extract = makeCommand(extractFileSync, extractFile, (opt) => new UnpackSync(opt), (opt) => new Unpack(opt), (opt, files) => {
+ if (files?.length)
+ filesFilter(opt, files);
+ });
}
});
-// .yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-386d011a55.zip/node_modules/graceful-fs/graceful-fs.js
-var require_graceful_fs = __commonJS({
- ".yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-386d011a55.zip/node_modules/graceful-fs/graceful-fs.js"(exports2, module2) {
+// node_modules/v8-compile-cache/v8-compile-cache.js
+var require_v8_compile_cache = __commonJS({
+ "node_modules/v8-compile-cache/v8-compile-cache.js"(exports2, module2) {
+ "use strict";
+ var Module2 = require("module");
+ var crypto = require("crypto");
var fs17 = require("fs");
- var polyfills = require_polyfills();
- var legacy = require_legacy_streams();
- var clone = require_clone();
- var util = require("util");
- var gracefulQueue;
- var previousSymbol;
- if (typeof Symbol === "function" && typeof Symbol.for === "function") {
- gracefulQueue = Symbol.for("graceful-fs.queue");
- previousSymbol = Symbol.for("graceful-fs.previous");
- } else {
- gracefulQueue = "___graceful-fs.queue";
- previousSymbol = "___graceful-fs.previous";
- }
- function noop3() {
- }
- function publishQueue(context, queue2) {
- Object.defineProperty(context, gracefulQueue, {
- get: function() {
- return queue2;
+ var path16 = require("path");
+ var vm = require("vm");
+ var os3 = require("os");
+ var hasOwnProperty = Object.prototype.hasOwnProperty;
+ var FileSystemBlobStore = class {
+ constructor(directory, prefix) {
+ const name2 = prefix ? slashEscape(prefix + ".") : "";
+ this._blobFilename = path16.join(directory, name2 + "BLOB");
+ this._mapFilename = path16.join(directory, name2 + "MAP");
+ this._lockFilename = path16.join(directory, name2 + "LOCK");
+ this._directory = directory;
+ this._load();
+ }
+ has(key, invalidationKey) {
+ if (hasOwnProperty.call(this._memoryBlobs, key)) {
+ return this._invalidationKeys[key] === invalidationKey;
+ } else if (hasOwnProperty.call(this._storedMap, key)) {
+ return this._storedMap[key][0] === invalidationKey;
}
- });
- }
- var debug2 = noop3;
- if (util.debuglog)
- debug2 = util.debuglog("gfs4");
- else if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || ""))
- debug2 = function() {
- var m = util.format.apply(util, arguments);
- m = "GFS4: " + m.split(/\n/).join("\nGFS4: ");
- console.error(m);
- };
- if (!fs17[gracefulQueue]) {
- queue = global[gracefulQueue] || [];
- publishQueue(fs17, queue);
- fs17.close = (function(fs$close) {
- function close(fd, cb) {
- return fs$close.call(fs17, fd, function(err) {
- if (!err) {
- resetQueue();
- }
- if (typeof cb === "function")
- cb.apply(this, arguments);
- });
+ return false;
+ }
+ get(key, invalidationKey) {
+ if (hasOwnProperty.call(this._memoryBlobs, key)) {
+ if (this._invalidationKeys[key] === invalidationKey) {
+ return this._memoryBlobs[key];
+ }
+ } else if (hasOwnProperty.call(this._storedMap, key)) {
+ const mapping = this._storedMap[key];
+ if (mapping[0] === invalidationKey) {
+ return this._storedBlob.slice(mapping[1], mapping[2]);
+ }
}
- Object.defineProperty(close, previousSymbol, {
- value: fs$close
- });
- return close;
- })(fs17.close);
- fs17.closeSync = (function(fs$closeSync) {
- function closeSync(fd) {
- fs$closeSync.apply(fs17, arguments);
- resetQueue();
+ }
+ set(key, invalidationKey, buffer) {
+ this._invalidationKeys[key] = invalidationKey;
+ this._memoryBlobs[key] = buffer;
+ this._dirty = true;
+ }
+ delete(key) {
+ if (hasOwnProperty.call(this._memoryBlobs, key)) {
+ this._dirty = true;
+ delete this._memoryBlobs[key];
+ }
+ if (hasOwnProperty.call(this._invalidationKeys, key)) {
+ this._dirty = true;
+ delete this._invalidationKeys[key];
+ }
+ if (hasOwnProperty.call(this._storedMap, key)) {
+ this._dirty = true;
+ delete this._storedMap[key];
}
- Object.defineProperty(closeSync, previousSymbol, {
- value: fs$closeSync
- });
- return closeSync;
- })(fs17.closeSync);
- if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || "")) {
- process.on("exit", function() {
- debug2(fs17[gracefulQueue]);
- require("assert").equal(fs17[gracefulQueue].length, 0);
- });
}
- }
- var queue;
- if (!global[gracefulQueue]) {
- publishQueue(global, fs17[gracefulQueue]);
- }
- module2.exports = patch(clone(fs17));
- if (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs17.__patched) {
- module2.exports = patch(fs17);
- fs17.__patched = true;
- }
- function patch(fs18) {
- polyfills(fs18);
- fs18.gracefulify = patch;
- fs18.createReadStream = createReadStream;
- fs18.createWriteStream = createWriteStream;
- var fs$readFile = fs18.readFile;
- fs18.readFile = readFile;
- function readFile(path16, options, cb) {
- if (typeof options === "function")
- cb = options, options = null;
- return go$readFile(path16, options, cb);
- function go$readFile(path17, options2, cb2, startTime) {
- return fs$readFile(path17, options2, function(err) {
- if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
- enqueue([go$readFile, [path17, options2, cb2], err, startTime || Date.now(), Date.now()]);
- else {
- if (typeof cb2 === "function")
- cb2.apply(this, arguments);
- }
- });
+ isDirty() {
+ return this._dirty;
+ }
+ save() {
+ const dump = this._getDump();
+ const blobToStore = Buffer.concat(dump[0]);
+ const mapToStore = JSON.stringify(dump[1]);
+ try {
+ mkdirpSync(this._directory);
+ fs17.writeFileSync(this._lockFilename, "LOCK", { flag: "wx" });
+ } catch (error) {
+ return false;
+ }
+ try {
+ fs17.writeFileSync(this._blobFilename, blobToStore);
+ fs17.writeFileSync(this._mapFilename, mapToStore);
+ } finally {
+ fs17.unlinkSync(this._lockFilename);
}
+ return true;
}
- var fs$writeFile = fs18.writeFile;
- fs18.writeFile = writeFile;
- function writeFile(path16, data, options, cb) {
- if (typeof options === "function")
- cb = options, options = null;
- return go$writeFile(path16, data, options, cb);
- function go$writeFile(path17, data2, options2, cb2, startTime) {
- return fs$writeFile(path17, data2, options2, function(err) {
- if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
- enqueue([go$writeFile, [path17, data2, options2, cb2], err, startTime || Date.now(), Date.now()]);
- else {
- if (typeof cb2 === "function")
- cb2.apply(this, arguments);
- }
- });
+ _load() {
+ try {
+ this._storedBlob = fs17.readFileSync(this._blobFilename);
+ this._storedMap = JSON.parse(fs17.readFileSync(this._mapFilename));
+ } catch (e) {
+ this._storedBlob = Buffer.alloc(0);
+ this._storedMap = {};
}
+ this._dirty = false;
+ this._memoryBlobs = {};
+ this._invalidationKeys = {};
}
- var fs$appendFile = fs18.appendFile;
- if (fs$appendFile)
- fs18.appendFile = appendFile;
- function appendFile(path16, data, options, cb) {
- if (typeof options === "function")
- cb = options, options = null;
- return go$appendFile(path16, data, options, cb);
- function go$appendFile(path17, data2, options2, cb2, startTime) {
- return fs$appendFile(path17, data2, options2, function(err) {
- if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
- enqueue([go$appendFile, [path17, data2, options2, cb2], err, startTime || Date.now(), Date.now()]);
- else {
- if (typeof cb2 === "function")
- cb2.apply(this, arguments);
- }
- });
+ _getDump() {
+ const buffers = [];
+ const newMap = {};
+ let offset = 0;
+ function push2(key, invalidationKey, buffer) {
+ buffers.push(buffer);
+ newMap[key] = [invalidationKey, offset, offset + buffer.length];
+ offset += buffer.length;
+ }
+ for (const key of Object.keys(this._memoryBlobs)) {
+ const buffer = this._memoryBlobs[key];
+ const invalidationKey = this._invalidationKeys[key];
+ push2(key, invalidationKey, buffer);
+ }
+ for (const key of Object.keys(this._storedMap)) {
+ if (hasOwnProperty.call(newMap, key)) continue;
+ const mapping = this._storedMap[key];
+ const buffer = this._storedBlob.slice(mapping[1], mapping[2]);
+ push2(key, mapping[0], buffer);
}
+ return [buffers, newMap];
+ }
+ };
+ var NativeCompileCache = class {
+ constructor() {
+ this._cacheStore = null;
+ this._previousModuleCompile = null;
+ }
+ setCacheStore(cacheStore) {
+ this._cacheStore = cacheStore;
+ }
+ install() {
+ const self2 = this;
+ const hasRequireResolvePaths = typeof require.resolve.paths === "function";
+ this._previousModuleCompile = Module2.prototype._compile;
+ Module2.prototype._compile = function(content, filename) {
+ const mod = this;
+ function require2(id) {
+ return mod.require(id);
+ }
+ function resolve(request, options) {
+ return Module2._resolveFilename(request, mod, false, options);
+ }
+ require2.resolve = resolve;
+ if (hasRequireResolvePaths) {
+ resolve.paths = function paths(request) {
+ return Module2._resolveLookupPaths(request, mod, true);
+ };
+ }
+ require2.main = process.mainModule;
+ require2.extensions = Module2._extensions;
+ require2.cache = Module2._cache;
+ const dirname2 = path16.dirname(filename);
+ const compiledWrapper = self2._moduleCompile(filename, content);
+ const args = [mod.exports, require2, mod, filename, dirname2, process, global, Buffer];
+ return compiledWrapper.apply(mod.exports, args);
+ };
}
- var fs$copyFile = fs18.copyFile;
- if (fs$copyFile)
- fs18.copyFile = copyFile;
- function copyFile(src, dest, flags, cb) {
- if (typeof flags === "function") {
- cb = flags;
- flags = 0;
- }
- return go$copyFile(src, dest, flags, cb);
- function go$copyFile(src2, dest2, flags2, cb2, startTime) {
- return fs$copyFile(src2, dest2, flags2, function(err) {
- if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
- enqueue([go$copyFile, [src2, dest2, flags2, cb2], err, startTime || Date.now(), Date.now()]);
- else {
- if (typeof cb2 === "function")
- cb2.apply(this, arguments);
+ uninstall() {
+ Module2.prototype._compile = this._previousModuleCompile;
+ }
+ _moduleCompile(filename, content) {
+ var contLen = content.length;
+ if (contLen >= 2) {
+ if (content.charCodeAt(0) === 35 && content.charCodeAt(1) === 33) {
+ if (contLen === 2) {
+ content = "";
+ } else {
+ var i = 2;
+ for (; i < contLen; ++i) {
+ var code2 = content.charCodeAt(i);
+ if (code2 === 10 || code2 === 13) break;
+ }
+ if (i === contLen) {
+ content = "";
+ } else {
+ content = content.slice(i);
+ }
}
- });
+ }
+ }
+ var wrapper = Module2.wrap(content);
+ var invalidationKey = crypto.createHash("sha1").update(content, "utf8").digest("hex");
+ var buffer = this._cacheStore.get(filename, invalidationKey);
+ var script = new vm.Script(wrapper, {
+ filename,
+ lineOffset: 0,
+ displayErrors: true,
+ cachedData: buffer,
+ produceCachedData: true
+ });
+ if (script.cachedDataProduced) {
+ this._cacheStore.set(filename, invalidationKey, script.cachedData);
+ } else if (script.cachedDataRejected) {
+ this._cacheStore.delete(filename);
}
+ var compiledWrapper = script.runInThisContext({
+ filename,
+ lineOffset: 0,
+ columnOffset: 0,
+ displayErrors: true
+ });
+ return compiledWrapper;
}
- var fs$readdir = fs18.readdir;
- fs18.readdir = readdir;
- var noReaddirOptionVersions = /^v[0-5]\./;
- function readdir(path16, options, cb) {
- if (typeof options === "function")
- cb = options, options = null;
- var go$readdir = noReaddirOptionVersions.test(process.version) ? function go$readdir2(path17, options2, cb2, startTime) {
- return fs$readdir(path17, fs$readdirCallback(
- path17,
- options2,
- cb2,
- startTime
- ));
- } : function go$readdir2(path17, options2, cb2, startTime) {
- return fs$readdir(path17, options2, fs$readdirCallback(
- path17,
- options2,
- cb2,
- startTime
- ));
- };
- return go$readdir(path16, options, cb);
- function fs$readdirCallback(path17, options2, cb2, startTime) {
- return function(err, files) {
- if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
- enqueue([
- go$readdir,
- [path17, options2, cb2],
- err,
- startTime || Date.now(),
- Date.now()
- ]);
- else {
- if (files && files.sort)
- files.sort();
- if (typeof cb2 === "function")
- cb2.call(this, err, files);
+ };
+ function mkdirpSync(p_) {
+ _mkdirpSync(path16.resolve(p_), 511);
+ }
+ function _mkdirpSync(p, mode) {
+ try {
+ fs17.mkdirSync(p, mode);
+ } catch (err0) {
+ if (err0.code === "ENOENT") {
+ _mkdirpSync(path16.dirname(p));
+ _mkdirpSync(p);
+ } else {
+ try {
+ const stat = fs17.statSync(p);
+ if (!stat.isDirectory()) {
+ throw err0;
}
- };
+ } catch (err1) {
+ throw err0;
+ }
}
}
- if (process.version.substr(0, 4) === "v0.8") {
- var legStreams = legacy(fs18);
- ReadStream2 = legStreams.ReadStream;
- WriteStream2 = legStreams.WriteStream;
- }
- var fs$ReadStream = fs18.ReadStream;
- if (fs$ReadStream) {
- ReadStream2.prototype = Object.create(fs$ReadStream.prototype);
- ReadStream2.prototype.open = ReadStream$open;
- }
- var fs$WriteStream = fs18.WriteStream;
- if (fs$WriteStream) {
- WriteStream2.prototype = Object.create(fs$WriteStream.prototype);
- WriteStream2.prototype.open = WriteStream$open;
+ }
+ function slashEscape(str) {
+ const ESCAPE_LOOKUP = {
+ "\\": "zB",
+ ":": "zC",
+ "/": "zS",
+ "\0": "z0",
+ "z": "zZ"
+ };
+ const ESCAPE_REGEX = /[\\:/\x00z]/g;
+ return str.replace(ESCAPE_REGEX, (match) => ESCAPE_LOOKUP[match]);
+ }
+ function supportsCachedData() {
+ const script = new vm.Script('""', { produceCachedData: true });
+ return script.cachedDataProduced === true;
+ }
+ function getCacheDir() {
+ const v8_compile_cache_cache_dir = process.env.V8_COMPILE_CACHE_CACHE_DIR;
+ if (v8_compile_cache_cache_dir) {
+ return v8_compile_cache_cache_dir;
}
- Object.defineProperty(fs18, "ReadStream", {
- get: function() {
- return ReadStream2;
- },
- set: function(val) {
- ReadStream2 = val;
- },
- enumerable: true,
- configurable: true
- });
- Object.defineProperty(fs18, "WriteStream", {
- get: function() {
- return WriteStream2;
- },
- set: function(val) {
- WriteStream2 = val;
- },
- enumerable: true,
- configurable: true
- });
- var FileReadStream = ReadStream2;
- Object.defineProperty(fs18, "FileReadStream", {
- get: function() {
- return FileReadStream;
- },
- set: function(val) {
- FileReadStream = val;
- },
- enumerable: true,
- configurable: true
- });
- var FileWriteStream = WriteStream2;
- Object.defineProperty(fs18, "FileWriteStream", {
- get: function() {
- return FileWriteStream;
- },
- set: function(val) {
- FileWriteStream = val;
- },
- enumerable: true,
- configurable: true
+ const dirname2 = typeof process.getuid === "function" ? "v8-compile-cache-" + process.getuid() : "v8-compile-cache";
+ const arch = process.arch;
+ const version = typeof process.versions.v8 === "string" ? process.versions.v8 : typeof process.versions.chakracore === "string" ? "chakracore-" + process.versions.chakracore : "node-" + process.version;
+ const cacheDir = path16.join(os3.tmpdir(), dirname2, arch, version);
+ return cacheDir;
+ }
+ function getMainName() {
+ const mainName = require.main && typeof require.main.filename === "string" ? require.main.filename : process.cwd();
+ return mainName;
+ }
+ if (!process.env.DISABLE_V8_COMPILE_CACHE && supportsCachedData()) {
+ const cacheDir = getCacheDir();
+ const prefix = getMainName();
+ const blobStore = new FileSystemBlobStore(cacheDir, prefix);
+ const nativeCompileCache = new NativeCompileCache();
+ nativeCompileCache.setCacheStore(blobStore);
+ nativeCompileCache.install();
+ process.once("exit", () => {
+ if (blobStore.isDirty()) {
+ blobStore.save();
+ }
+ nativeCompileCache.uninstall();
});
- function ReadStream2(path16, options) {
- if (this instanceof ReadStream2)
- return fs$ReadStream.apply(this, arguments), this;
- else
- return ReadStream2.apply(Object.create(ReadStream2.prototype), arguments);
- }
- function ReadStream$open() {
- var that = this;
- open(that.path, that.flags, that.mode, function(err, fd) {
- if (err) {
- if (that.autoClose)
- that.destroy();
- that.emit("error", err);
- } else {
- that.fd = fd;
- that.emit("open", fd);
- that.read();
- }
- });
+ }
+ module2.exports.__TEST__ = {
+ FileSystemBlobStore,
+ NativeCompileCache,
+ mkdirpSync,
+ slashEscape,
+ supportsCachedData,
+ getCacheDir,
+ getMainName
+ };
+ }
+});
+
+// node_modules/semver/functions/satisfies.js
+var require_satisfies = __commonJS({
+ "node_modules/semver/functions/satisfies.js"(exports2, module2) {
+ "use strict";
+ var Range3 = require_range();
+ var satisfies = (version, range, options) => {
+ try {
+ range = new Range3(range, options);
+ } catch (er) {
+ return false;
}
- function WriteStream2(path16, options) {
- if (this instanceof WriteStream2)
- return fs$WriteStream.apply(this, arguments), this;
- else
- return WriteStream2.apply(Object.create(WriteStream2.prototype), arguments);
+ return range.test(version);
+ };
+ module2.exports = satisfies;
+ }
+});
+
+// node_modules/which/node_modules/isexe/dist/commonjs/index.min.js
+var require_index_min = __commonJS({
+ "node_modules/which/node_modules/isexe/dist/commonjs/index.min.js"(exports2) {
+ "use strict";
+ var a = (t, e) => () => (e || t((e = { exports: {} }).exports, e), e.exports);
+ var _ = a((i) => {
+ "use strict";
+ Object.defineProperty(i, "__esModule", { value: true });
+ i.sync = i.isexe = void 0;
+ var M = require("node:fs"), x = require("node:fs/promises"), q = async (t, e = {}) => {
+ let { ignoreErrors: r = false } = e;
+ try {
+ return d(await (0, x.stat)(t), e);
+ } catch (s) {
+ let n = s;
+ if (r || n.code === "EACCES") return false;
+ throw n;
+ }
+ };
+ i.isexe = q;
+ var m = (t, e = {}) => {
+ let { ignoreErrors: r = false } = e;
+ try {
+ return d((0, M.statSync)(t), e);
+ } catch (s) {
+ let n = s;
+ if (r || n.code === "EACCES") return false;
+ throw n;
+ }
+ };
+ i.sync = m;
+ var d = (t, e) => t.isFile() && A(t, e), A = (t, e) => {
+ let r = e.uid ?? process.getuid?.(), s = e.groups ?? process.getgroups?.() ?? [], n = e.gid ?? process.getgid?.() ?? s[0];
+ if (r === void 0 || n === void 0) throw new Error("cannot get uid or gid");
+ let u = /* @__PURE__ */ new Set([n, ...s]), c = t.mode, S = t.uid, P = t.gid, f = parseInt("100", 8), l = parseInt("010", 8), j = parseInt("001", 8), C = f | l;
+ return !!(c & j || c & l && u.has(P) || c & f && S === r || c & C && r === 0);
+ };
+ });
+ var g = a((o) => {
+ "use strict";
+ Object.defineProperty(o, "__esModule", { value: true });
+ o.sync = o.isexe = void 0;
+ var T = require("node:fs"), I = require("node:fs/promises"), D = require("node:path"), F = async (t, e = {}) => {
+ let { ignoreErrors: r = false } = e;
+ try {
+ return y(await (0, I.stat)(t), t, e);
+ } catch (s) {
+ let n = s;
+ if (r || n.code === "EACCES") return false;
+ throw n;
+ }
+ };
+ o.isexe = F;
+ var L = (t, e = {}) => {
+ let { ignoreErrors: r = false } = e;
+ try {
+ return y((0, T.statSync)(t), t, e);
+ } catch (s) {
+ let n = s;
+ if (r || n.code === "EACCES") return false;
+ throw n;
+ }
+ };
+ o.sync = L;
+ var B = (t, e) => {
+ let { pathExt: r = process.env.PATHEXT || "" } = e, s = r.split(D.delimiter);
+ if (s.indexOf("") !== -1) return true;
+ for (let n of s) {
+ let u = n.toLowerCase(), c = t.substring(t.length - u.length).toLowerCase();
+ if (u && c === u) return true;
+ }
+ return false;
+ }, y = (t, e, r) => t.isFile() && B(e, r);
+ });
+ var p = a((h) => {
+ "use strict";
+ Object.defineProperty(h, "__esModule", { value: true });
+ });
+ var v = exports2 && exports2.__createBinding || (Object.create ? (function(t, e, r, s) {
+ s === void 0 && (s = r);
+ var n = Object.getOwnPropertyDescriptor(e, r);
+ (!n || ("get" in n ? !e.__esModule : n.writable || n.configurable)) && (n = { enumerable: true, get: function() {
+ return e[r];
+ } }), Object.defineProperty(t, s, n);
+ }) : (function(t, e, r, s) {
+ s === void 0 && (s = r), t[s] = e[r];
+ }));
+ var G = exports2 && exports2.__setModuleDefault || (Object.create ? (function(t, e) {
+ Object.defineProperty(t, "default", { enumerable: true, value: e });
+ }) : function(t, e) {
+ t.default = e;
+ });
+ var w = exports2 && exports2.__importStar || /* @__PURE__ */ (function() {
+ var t = function(e) {
+ return t = Object.getOwnPropertyNames || function(r) {
+ var s = [];
+ for (var n in r) Object.prototype.hasOwnProperty.call(r, n) && (s[s.length] = n);
+ return s;
+ }, t(e);
+ };
+ return function(e) {
+ if (e && e.__esModule) return e;
+ var r = {};
+ if (e != null) for (var s = t(e), n = 0; n < s.length; n++) s[n] !== "default" && v(r, e, s[n]);
+ return G(r, e), r;
+ };
+ })();
+ var X = exports2 && exports2.__exportStar || function(t, e) {
+ for (var r in t) r !== "default" && !Object.prototype.hasOwnProperty.call(e, r) && v(e, t, r);
+ };
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.sync = exports2.isexe = exports2.posix = exports2.win32 = void 0;
+ var E = w(_());
+ exports2.posix = E;
+ var O = w(g());
+ exports2.win32 = O;
+ X(p(), exports2);
+ var H = process.env._ISEXE_TEST_PLATFORM_ || process.platform;
+ var b = H === "win32" ? O : E;
+ exports2.isexe = b.isexe;
+ exports2.sync = b.sync;
+ }
+});
+
+// node_modules/which/lib/index.js
+var require_lib = __commonJS({
+ "node_modules/which/lib/index.js"(exports2, module2) {
+ var { isexe, sync: isexeSync } = require_index_min();
+ var { join: join3, delimiter, sep, posix } = require("path");
+ var isWindows4 = process.platform === "win32";
+ var rSlash = new RegExp(`[${posix.sep}${sep === posix.sep ? "" : sep}]`.replace(/(\\)/g, "\\$1"));
+ var rRel = new RegExp(`^\\.${rSlash.source}`);
+ var getNotFoundError = (cmd) => Object.assign(new Error(`not found: ${cmd}`), { code: "ENOENT" });
+ var getPathInfo = (cmd, {
+ path: optPath = process.env.PATH,
+ pathExt: optPathExt = process.env.PATHEXT,
+ delimiter: optDelimiter = delimiter
+ }) => {
+ const pathEnv = cmd.match(rSlash) ? [""] : [
+ // windows always checks the cwd first
+ ...isWindows4 ? [process.cwd()] : [],
+ ...(optPath || /* istanbul ignore next: very unusual */
+ "").split(optDelimiter)
+ ];
+ if (isWindows4) {
+ const pathExtExe = optPathExt || [".EXE", ".CMD", ".BAT", ".COM"].join(optDelimiter);
+ const pathExt = pathExtExe.split(optDelimiter).flatMap((item) => [item, item.toLowerCase()]);
+ if (cmd.includes(".") && pathExt[0] !== "") {
+ pathExt.unshift("");
+ }
+ return { pathEnv, pathExt, pathExtExe };
}
- function WriteStream$open() {
- var that = this;
- open(that.path, that.flags, that.mode, function(err, fd) {
- if (err) {
- that.destroy();
- that.emit("error", err);
- } else {
- that.fd = fd;
- that.emit("open", fd);
+ return { pathEnv, pathExt: [""] };
+ };
+ var getPathPart = (raw2, cmd) => {
+ const pathPart = /^".*"$/.test(raw2) ? raw2.slice(1, -1) : raw2;
+ const prefix = !pathPart && rRel.test(cmd) ? cmd.slice(0, 2) : "";
+ return prefix + join3(pathPart, cmd);
+ };
+ var which3 = async (cmd, opt = {}) => {
+ const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt);
+ const found = [];
+ for (const envPart of pathEnv) {
+ const p = getPathPart(envPart, cmd);
+ for (const ext of pathExt) {
+ const withExt = p + ext;
+ const is = await isexe(withExt, { pathExt: pathExtExe, ignoreErrors: true });
+ if (is) {
+ if (!opt.all) {
+ return withExt;
+ }
+ found.push(withExt);
}
- });
+ }
}
- function createReadStream(path16, options) {
- return new fs18.ReadStream(path16, options);
+ if (opt.all && found.length) {
+ return found;
}
- function createWriteStream(path16, options) {
- return new fs18.WriteStream(path16, options);
+ if (opt.nothrow) {
+ return null;
}
- var fs$open = fs18.open;
- fs18.open = open;
- function open(path16, flags, mode, cb) {
- if (typeof mode === "function")
- cb = mode, mode = null;
- return go$open(path16, flags, mode, cb);
- function go$open(path17, flags2, mode2, cb2, startTime) {
- return fs$open(path17, flags2, mode2, function(err, fd) {
- if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
- enqueue([go$open, [path17, flags2, mode2, cb2], err, startTime || Date.now(), Date.now()]);
- else {
- if (typeof cb2 === "function")
- cb2.apply(this, arguments);
+ throw getNotFoundError(cmd);
+ };
+ var whichSync = (cmd, opt = {}) => {
+ const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt);
+ const found = [];
+ for (const pathEnvPart of pathEnv) {
+ const p = getPathPart(pathEnvPart, cmd);
+ for (const ext of pathExt) {
+ const withExt = p + ext;
+ const is = isexeSync(withExt, { pathExt: pathExtExe, ignoreErrors: true });
+ if (is) {
+ if (!opt.all) {
+ return withExt;
}
- });
- }
- }
- return fs18;
- }
- function enqueue(elem) {
- debug2("ENQUEUE", elem[0].name, elem[1]);
- fs17[gracefulQueue].push(elem);
- retry();
- }
- var retryTimer;
- function resetQueue() {
- var now = Date.now();
- for (var i = 0; i < fs17[gracefulQueue].length; ++i) {
- if (fs17[gracefulQueue][i].length > 2) {
- fs17[gracefulQueue][i][3] = now;
- fs17[gracefulQueue][i][4] = now;
+ found.push(withExt);
+ }
}
}
- retry();
- }
- function retry() {
- clearTimeout(retryTimer);
- retryTimer = void 0;
- if (fs17[gracefulQueue].length === 0)
- return;
- var elem = fs17[gracefulQueue].shift();
- var fn2 = elem[0];
- var args = elem[1];
- var err = elem[2];
- var startTime = elem[3];
- var lastTime = elem[4];
- if (startTime === void 0) {
- debug2("RETRY", fn2.name, args);
- fn2.apply(null, args);
- } else if (Date.now() - startTime >= 6e4) {
- debug2("TIMEOUT", fn2.name, args);
- var cb = args.pop();
- if (typeof cb === "function")
- cb.call(null, err);
- } else {
- var sinceAttempt = Date.now() - lastTime;
- var sinceStart = Math.max(lastTime - startTime, 1);
- var desiredDelay = Math.min(sinceStart * 1.2, 100);
- if (sinceAttempt >= desiredDelay) {
- debug2("RETRY", fn2.name, args);
- fn2.apply(null, args.concat([startTime]));
- } else {
- fs17[gracefulQueue].push(elem);
- }
+ if (opt.all && found.length) {
+ return found;
}
- if (retryTimer === void 0) {
- retryTimer = setTimeout(retry, 0);
+ if (opt.nothrow) {
+ return null;
}
- }
+ throw getNotFoundError(cmd);
+ };
+ module2.exports = which3;
+ which3.sync = whichSync;
}
});
-// .yarn/cache/@zkochan-cmd-shim-npm-6.0.0-97792a7373-ba1442ba1e.zip/node_modules/@zkochan/cmd-shim/index.js
-var require_cmd_shim = __commonJS({
- ".yarn/cache/@zkochan-cmd-shim-npm-6.0.0-97792a7373-ba1442ba1e.zip/node_modules/@zkochan/cmd-shim/index.js"(exports2, module2) {
- "use strict";
- cmdShim2.ifExists = cmdShimIfExists;
- var util_1 = require("util");
- var path16 = require("path");
- var isWindows4 = require_is_windows();
- var CMD_EXTENSION = require_cmd_extension();
- var shebangExpr = /^#!\s*(?:\/usr\/bin\/env(?:\s+-S\s*)?)?\s*([^ \t]+)(.*)$/;
- var DEFAULT_OPTIONS = {
- // Create PowerShell file by default if the option hasn't been specified
- createPwshFile: true,
- createCmdFile: isWindows4(),
- fs: require_graceful_fs()
- };
- var extensionToProgramMap = /* @__PURE__ */ new Map([
- [".js", "node"],
- [".cjs", "node"],
- [".mjs", "node"],
- [".cmd", "cmd"],
- [".bat", "cmd"],
- [".ps1", "pwsh"],
- [".sh", "sh"]
- ]);
- function ingestOptions(opts) {
- const opts_ = { ...DEFAULT_OPTIONS, ...opts };
- const fs17 = opts_.fs;
- opts_.fs_ = {
- chmod: fs17.chmod ? (0, util_1.promisify)(fs17.chmod) : (async () => {
- }),
- mkdir: (0, util_1.promisify)(fs17.mkdir),
- readFile: (0, util_1.promisify)(fs17.readFile),
- stat: (0, util_1.promisify)(fs17.stat),
- unlink: (0, util_1.promisify)(fs17.unlink),
- writeFile: (0, util_1.promisify)(fs17.writeFile)
- };
- return opts_;
- }
- async function cmdShim2(src, to, opts) {
- const opts_ = ingestOptions(opts);
- await cmdShim_(src, to, opts_);
- }
- function cmdShimIfExists(src, to, opts) {
- return cmdShim2(src, to, opts).catch(() => {
- });
- }
- function rm(path17, opts) {
- return opts.fs_.unlink(path17).catch(() => {
- });
+// node_modules/is-windows/index.js
+var require_is_windows = __commonJS({
+ "node_modules/is-windows/index.js"(exports2, module2) {
+ (function(factory) {
+ if (exports2 && typeof exports2 === "object" && typeof module2 !== "undefined") {
+ module2.exports = factory();
+ } else if (typeof define === "function" && define.amd) {
+ define([], factory);
+ } else if (typeof window !== "undefined") {
+ window.isWindows = factory();
+ } else if (typeof global !== "undefined") {
+ global.isWindows = factory();
+ } else if (typeof self !== "undefined") {
+ self.isWindows = factory();
+ } else {
+ this.isWindows = factory();
+ }
+ })(function() {
+ "use strict";
+ return function isWindows4() {
+ return process && (process.platform === "win32" || /^(msys|cygwin)$/.test(process.env.OSTYPE));
+ };
+ });
+ }
+});
+
+// node_modules/cmd-extension/index.js
+var require_cmd_extension = __commonJS({
+ "node_modules/cmd-extension/index.js"(exports2, module2) {
+ "use strict";
+ var path16 = require("path");
+ var cmdExtension;
+ if (process.env.PATHEXT) {
+ cmdExtension = process.env.PATHEXT.split(path16.delimiter).find((ext) => ext.toUpperCase() === ".CMD");
}
- async function cmdShim_(src, to, opts) {
- const srcRuntimeInfo = await searchScriptRuntime(src, opts);
- await writeShimsPreCommon(to, opts);
- return writeAllShims(src, to, srcRuntimeInfo, opts);
+ module2.exports = cmdExtension || ".cmd";
+ }
+});
+
+// node_modules/graceful-fs/polyfills.js
+var require_polyfills = __commonJS({
+ "node_modules/graceful-fs/polyfills.js"(exports2, module2) {
+ var constants2 = require("constants");
+ var origCwd = process.cwd;
+ var cwd = null;
+ var platform5 = process.env.GRACEFUL_FS_PLATFORM || process.platform;
+ process.cwd = function() {
+ if (!cwd)
+ cwd = origCwd.call(process);
+ return cwd;
+ };
+ try {
+ process.cwd();
+ } catch (er) {
}
- function writeShimsPreCommon(target, opts) {
- return opts.fs_.mkdir(path16.dirname(target), { recursive: true });
+ if (typeof process.chdir === "function") {
+ chdir = process.chdir;
+ process.chdir = function(d) {
+ cwd = null;
+ chdir.call(process, d);
+ };
+ if (Object.setPrototypeOf) Object.setPrototypeOf(process.chdir, chdir);
}
- function writeAllShims(src, to, srcRuntimeInfo, opts) {
- const opts_ = ingestOptions(opts);
- const generatorAndExts = [{ generator: generateShShim, extension: "" }];
- if (opts_.createCmdFile) {
- generatorAndExts.push({ generator: generateCmdShim, extension: CMD_EXTENSION });
+ var chdir;
+ module2.exports = patch;
+ function patch(fs17) {
+ if (constants2.hasOwnProperty("O_SYMLINK") && process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) {
+ patchLchmod(fs17);
}
- if (opts_.createPwshFile) {
- generatorAndExts.push({ generator: generatePwshShim, extension: ".ps1" });
+ if (!fs17.lutimes) {
+ patchLutimes(fs17);
}
- return Promise.all(generatorAndExts.map((generatorAndExt) => writeShim(src, to + generatorAndExt.extension, srcRuntimeInfo, generatorAndExt.generator, opts_)));
- }
- function writeShimPre(target, opts) {
- return rm(target, opts);
- }
- function writeShimPost(target, opts) {
- return chmodShim(target, opts);
- }
- async function searchScriptRuntime(target, opts) {
- try {
- const data = await opts.fs_.readFile(target, "utf8");
- const firstLine = data.trim().split(/\r*\n/)[0];
- const shebang = firstLine.match(shebangExpr);
- if (!shebang) {
- const targetExtension = path16.extname(target).toLowerCase();
- return {
- // undefined if extension is unknown but it's converted to null.
- program: extensionToProgramMap.get(targetExtension) || null,
- additionalArgs: ""
+ fs17.chown = chownFix(fs17.chown);
+ fs17.fchown = chownFix(fs17.fchown);
+ fs17.lchown = chownFix(fs17.lchown);
+ fs17.chmod = chmodFix(fs17.chmod);
+ fs17.fchmod = chmodFix(fs17.fchmod);
+ fs17.lchmod = chmodFix(fs17.lchmod);
+ fs17.chownSync = chownFixSync(fs17.chownSync);
+ fs17.fchownSync = chownFixSync(fs17.fchownSync);
+ fs17.lchownSync = chownFixSync(fs17.lchownSync);
+ fs17.chmodSync = chmodFixSync(fs17.chmodSync);
+ fs17.fchmodSync = chmodFixSync(fs17.fchmodSync);
+ fs17.lchmodSync = chmodFixSync(fs17.lchmodSync);
+ fs17.stat = statFix(fs17.stat);
+ fs17.fstat = statFix(fs17.fstat);
+ fs17.lstat = statFix(fs17.lstat);
+ fs17.statSync = statFixSync(fs17.statSync);
+ fs17.fstatSync = statFixSync(fs17.fstatSync);
+ fs17.lstatSync = statFixSync(fs17.lstatSync);
+ if (fs17.chmod && !fs17.lchmod) {
+ fs17.lchmod = function(path16, mode, cb) {
+ if (cb) process.nextTick(cb);
+ };
+ fs17.lchmodSync = function() {
+ };
+ }
+ if (fs17.chown && !fs17.lchown) {
+ fs17.lchown = function(path16, uid, gid, cb) {
+ if (cb) process.nextTick(cb);
+ };
+ fs17.lchownSync = function() {
+ };
+ }
+ if (platform5 === "win32") {
+ fs17.rename = typeof fs17.rename !== "function" ? fs17.rename : (function(fs$rename) {
+ function rename(from, to, cb) {
+ var start = Date.now();
+ var backoff = 0;
+ fs$rename(from, to, function CB(er) {
+ if (er && (er.code === "EACCES" || er.code === "EPERM" || er.code === "EBUSY") && Date.now() - start < 6e4) {
+ setTimeout(function() {
+ fs17.stat(to, function(stater, st) {
+ if (stater && stater.code === "ENOENT")
+ fs$rename(from, to, CB);
+ else
+ cb(er);
+ });
+ }, backoff);
+ if (backoff < 100)
+ backoff += 10;
+ return;
+ }
+ if (cb) cb(er);
+ });
+ }
+ if (Object.setPrototypeOf) Object.setPrototypeOf(rename, fs$rename);
+ return rename;
+ })(fs17.rename);
+ }
+ fs17.read = typeof fs17.read !== "function" ? fs17.read : (function(fs$read) {
+ function read(fd, buffer, offset, length, position, callback_) {
+ var callback;
+ if (callback_ && typeof callback_ === "function") {
+ var eagCounter = 0;
+ callback = function(er, _, __) {
+ if (er && er.code === "EAGAIN" && eagCounter < 10) {
+ eagCounter++;
+ return fs$read.call(fs17, fd, buffer, offset, length, position, callback);
+ }
+ callback_.apply(this, arguments);
+ };
+ }
+ return fs$read.call(fs17, fd, buffer, offset, length, position, callback);
+ }
+ if (Object.setPrototypeOf) Object.setPrototypeOf(read, fs$read);
+ return read;
+ })(fs17.read);
+ fs17.readSync = typeof fs17.readSync !== "function" ? fs17.readSync : /* @__PURE__ */ (function(fs$readSync) {
+ return function(fd, buffer, offset, length, position) {
+ var eagCounter = 0;
+ while (true) {
+ try {
+ return fs$readSync.call(fs17, fd, buffer, offset, length, position);
+ } catch (er) {
+ if (er.code === "EAGAIN" && eagCounter < 10) {
+ eagCounter++;
+ continue;
+ }
+ throw er;
+ }
+ }
+ };
+ })(fs17.readSync);
+ function patchLchmod(fs18) {
+ fs18.lchmod = function(path16, mode, callback) {
+ fs18.open(
+ path16,
+ constants2.O_WRONLY | constants2.O_SYMLINK,
+ mode,
+ function(err, fd) {
+ if (err) {
+ if (callback) callback(err);
+ return;
+ }
+ fs18.fchmod(fd, mode, function(err2) {
+ fs18.close(fd, function(err22) {
+ if (callback) callback(err2 || err22);
+ });
+ });
+ }
+ );
+ };
+ fs18.lchmodSync = function(path16, mode) {
+ var fd = fs18.openSync(path16, constants2.O_WRONLY | constants2.O_SYMLINK, mode);
+ var threw = true;
+ var ret;
+ try {
+ ret = fs18.fchmodSync(fd, mode);
+ threw = false;
+ } finally {
+ if (threw) {
+ try {
+ fs18.closeSync(fd);
+ } catch (er) {
+ }
+ } else {
+ fs18.closeSync(fd);
+ }
+ }
+ return ret;
+ };
+ }
+ function patchLutimes(fs18) {
+ if (constants2.hasOwnProperty("O_SYMLINK") && fs18.futimes) {
+ fs18.lutimes = function(path16, at, mt, cb) {
+ fs18.open(path16, constants2.O_SYMLINK, function(er, fd) {
+ if (er) {
+ if (cb) cb(er);
+ return;
+ }
+ fs18.futimes(fd, at, mt, function(er2) {
+ fs18.close(fd, function(er22) {
+ if (cb) cb(er2 || er22);
+ });
+ });
+ });
+ };
+ fs18.lutimesSync = function(path16, at, mt) {
+ var fd = fs18.openSync(path16, constants2.O_SYMLINK);
+ var ret;
+ var threw = true;
+ try {
+ ret = fs18.futimesSync(fd, at, mt);
+ threw = false;
+ } finally {
+ if (threw) {
+ try {
+ fs18.closeSync(fd);
+ } catch (er) {
+ }
+ } else {
+ fs18.closeSync(fd);
+ }
+ }
+ return ret;
+ };
+ } else if (fs18.futimes) {
+ fs18.lutimes = function(_a, _b, _c, cb) {
+ if (cb) process.nextTick(cb);
+ };
+ fs18.lutimesSync = function() {
};
}
- return {
- program: shebang[1],
- additionalArgs: shebang[2]
+ }
+ function chmodFix(orig) {
+ if (!orig) return orig;
+ return function(target, mode, cb) {
+ return orig.call(fs17, target, mode, function(er) {
+ if (chownErOk(er)) er = null;
+ if (cb) cb.apply(this, arguments);
+ });
+ };
+ }
+ function chmodFixSync(orig) {
+ if (!orig) return orig;
+ return function(target, mode) {
+ try {
+ return orig.call(fs17, target, mode);
+ } catch (er) {
+ if (!chownErOk(er)) throw er;
+ }
};
- } catch (err) {
- if (!isWindows4() || err.code !== "ENOENT")
- throw err;
- if (await opts.fs_.stat(`${target}${getExeExtension()}`)) {
- return {
- program: null,
- additionalArgs: ""
- };
- }
- throw err;
}
- }
- function getExeExtension() {
- let cmdExtension;
- if (process.env.PATHEXT) {
- cmdExtension = process.env.PATHEXT.split(path16.delimiter).find((ext) => ext.toLowerCase() === ".exe");
+ function chownFix(orig) {
+ if (!orig) return orig;
+ return function(target, uid, gid, cb) {
+ return orig.call(fs17, target, uid, gid, function(er) {
+ if (chownErOk(er)) er = null;
+ if (cb) cb.apply(this, arguments);
+ });
+ };
}
- return cmdExtension || ".exe";
- }
- async function writeShim(src, to, srcRuntimeInfo, generateShimScript, opts) {
- const defaultArgs = opts.preserveSymlinks ? "--preserve-symlinks" : "";
- const args = [srcRuntimeInfo.additionalArgs, defaultArgs].filter((arg) => arg).join(" ");
- opts = Object.assign({}, opts, {
- prog: srcRuntimeInfo.program,
- args
- });
- await writeShimPre(to, opts);
- await opts.fs_.writeFile(to, generateShimScript(src, to, opts), "utf8");
- return writeShimPost(to, opts);
- }
- function generateCmdShim(src, to, opts) {
- const shTarget = path16.relative(path16.dirname(to), src);
- let target = shTarget.split("/").join("\\");
- const quotedPathToTarget = path16.isAbsolute(target) ? `"${target}"` : `"%~dp0\\${target}"`;
- let longProg;
- let prog = opts.prog;
- let args = opts.args || "";
- const nodePath = normalizePathEnvVar(opts.nodePath).win32;
- const prependToPath = normalizePathEnvVar(opts.prependToPath).win32;
- if (!prog) {
- prog = quotedPathToTarget;
- args = "";
- target = "";
- } else if (prog === "node" && opts.nodeExecPath) {
- prog = `"${opts.nodeExecPath}"`;
- target = quotedPathToTarget;
- } else {
- longProg = `"%~dp0\\${prog}.exe"`;
- target = quotedPathToTarget;
+ function chownFixSync(orig) {
+ if (!orig) return orig;
+ return function(target, uid, gid) {
+ try {
+ return orig.call(fs17, target, uid, gid);
+ } catch (er) {
+ if (!chownErOk(er)) throw er;
+ }
+ };
}
- let progArgs = opts.progArgs ? `${opts.progArgs.join(` `)} ` : "";
- let cmd = "@SETLOCAL\r\n";
- if (prependToPath) {
- cmd += `@SET "PATH=${prependToPath}:%PATH%"\r
-`;
+ function statFix(orig) {
+ if (!orig) return orig;
+ return function(target, options, cb) {
+ if (typeof options === "function") {
+ cb = options;
+ options = null;
+ }
+ function callback(er, stats) {
+ if (stats) {
+ if (stats.uid < 0) stats.uid += 4294967296;
+ if (stats.gid < 0) stats.gid += 4294967296;
+ }
+ if (cb) cb.apply(this, arguments);
+ }
+ return options ? orig.call(fs17, target, options, callback) : orig.call(fs17, target, callback);
+ };
}
- if (nodePath) {
- cmd += `@IF NOT DEFINED NODE_PATH (\r
- @SET "NODE_PATH=${nodePath}"\r
-) ELSE (\r
- @SET "NODE_PATH=${nodePath};%NODE_PATH%"\r
-)\r
-`;
+ function statFixSync(orig) {
+ if (!orig) return orig;
+ return function(target, options) {
+ var stats = options ? orig.call(fs17, target, options) : orig.call(fs17, target);
+ if (stats) {
+ if (stats.uid < 0) stats.uid += 4294967296;
+ if (stats.gid < 0) stats.gid += 4294967296;
+ }
+ return stats;
+ };
}
- if (longProg) {
- cmd += `@IF EXIST ${longProg} (\r
- ${longProg} ${args} ${target} ${progArgs}%*\r
-) ELSE (\r
- @SET PATHEXT=%PATHEXT:;.JS;=;%\r
- ${prog} ${args} ${target} ${progArgs}%*\r
-)\r
-`;
- } else {
- cmd += `@${prog} ${args} ${target} ${progArgs}%*\r
-`;
+ function chownErOk(er) {
+ if (!er)
+ return true;
+ if (er.code === "ENOSYS")
+ return true;
+ var nonroot = !process.getuid || process.getuid() !== 0;
+ if (nonroot) {
+ if (er.code === "EINVAL" || er.code === "EPERM")
+ return true;
+ }
+ return false;
}
- return cmd;
}
- function generateShShim(src, to, opts) {
- let shTarget = path16.relative(path16.dirname(to), src);
- let shProg = opts.prog && opts.prog.split("\\").join("/");
- let shLongProg;
- shTarget = shTarget.split("\\").join("/");
- const quotedPathToTarget = path16.isAbsolute(shTarget) ? `"${shTarget}"` : `"$basedir/${shTarget}"`;
- let args = opts.args || "";
- const shNodePath = normalizePathEnvVar(opts.nodePath).posix;
- if (!shProg) {
- shProg = quotedPathToTarget;
- args = "";
- shTarget = "";
- } else if (opts.prog === "node" && opts.nodeExecPath) {
- shProg = `"${opts.nodeExecPath}"`;
- shTarget = quotedPathToTarget;
- } else {
- shLongProg = `"$basedir/${opts.prog}"`;
- shTarget = quotedPathToTarget;
- }
- let progArgs = opts.progArgs ? `${opts.progArgs.join(` `)} ` : "";
- let sh = `#!/bin/sh
-basedir=$(dirname "$(echo "$0" | sed -e 's,\\\\,/,g')")
-
-case \`uname\` in
- *CYGWIN*) basedir=\`cygpath -w "$basedir"\`;;
-esac
+ }
+});
-`;
- if (opts.prependToPath) {
- sh += `export PATH="${opts.prependToPath}:$PATH"
-`;
- }
- if (shNodePath) {
- sh += `if [ -z "$NODE_PATH" ]; then
- export NODE_PATH="${shNodePath}"
-else
- export NODE_PATH="${shNodePath}:$NODE_PATH"
-fi
-`;
+// node_modules/graceful-fs/legacy-streams.js
+var require_legacy_streams = __commonJS({
+ "node_modules/graceful-fs/legacy-streams.js"(exports2, module2) {
+ var Stream2 = require("stream").Stream;
+ module2.exports = legacy;
+ function legacy(fs17) {
+ return {
+ ReadStream: ReadStream2,
+ WriteStream: WriteStream2
+ };
+ function ReadStream2(path16, options) {
+ if (!(this instanceof ReadStream2)) return new ReadStream2(path16, options);
+ Stream2.call(this);
+ var self2 = this;
+ this.path = path16;
+ this.fd = null;
+ this.readable = true;
+ this.paused = false;
+ this.flags = "r";
+ this.mode = 438;
+ this.bufferSize = 64 * 1024;
+ options = options || {};
+ var keys = Object.keys(options);
+ for (var index = 0, length = keys.length; index < length; index++) {
+ var key = keys[index];
+ this[key] = options[key];
+ }
+ if (this.encoding) this.setEncoding(this.encoding);
+ if (this.start !== void 0) {
+ if ("number" !== typeof this.start) {
+ throw TypeError("start must be a Number");
+ }
+ if (this.end === void 0) {
+ this.end = Infinity;
+ } else if ("number" !== typeof this.end) {
+ throw TypeError("end must be a Number");
+ }
+ if (this.start > this.end) {
+ throw new Error("start must be <= end");
+ }
+ this.pos = this.start;
+ }
+ if (this.fd !== null) {
+ process.nextTick(function() {
+ self2._read();
+ });
+ return;
+ }
+ fs17.open(this.path, this.flags, this.mode, function(err, fd) {
+ if (err) {
+ self2.emit("error", err);
+ self2.readable = false;
+ return;
+ }
+ self2.fd = fd;
+ self2.emit("open", fd);
+ self2._read();
+ });
}
- if (shLongProg) {
- sh += `if [ -x ${shLongProg} ]; then
- exec ${shLongProg} ${args} ${shTarget} ${progArgs}"$@"
-else
- exec ${shProg} ${args} ${shTarget} ${progArgs}"$@"
-fi
-`;
- } else {
- sh += `${shProg} ${args} ${shTarget} ${progArgs}"$@"
-exit $?
-`;
+ function WriteStream2(path16, options) {
+ if (!(this instanceof WriteStream2)) return new WriteStream2(path16, options);
+ Stream2.call(this);
+ this.path = path16;
+ this.fd = null;
+ this.writable = true;
+ this.flags = "w";
+ this.encoding = "binary";
+ this.mode = 438;
+ this.bytesWritten = 0;
+ options = options || {};
+ var keys = Object.keys(options);
+ for (var index = 0, length = keys.length; index < length; index++) {
+ var key = keys[index];
+ this[key] = options[key];
+ }
+ if (this.start !== void 0) {
+ if ("number" !== typeof this.start) {
+ throw TypeError("start must be a Number");
+ }
+ if (this.start < 0) {
+ throw new Error("start must be >= zero");
+ }
+ this.pos = this.start;
+ }
+ this.busy = false;
+ this._queue = [];
+ if (this.fd === null) {
+ this._open = fs17.open;
+ this._queue.push([this._open, this.path, this.flags, this.mode, void 0]);
+ this.flush();
+ }
}
- return sh;
}
- function generatePwshShim(src, to, opts) {
- let shTarget = path16.relative(path16.dirname(to), src);
- const shProg = opts.prog && opts.prog.split("\\").join("/");
- let pwshProg = shProg && `"${shProg}$exe"`;
- let pwshLongProg;
- shTarget = shTarget.split("\\").join("/");
- const quotedPathToTarget = path16.isAbsolute(shTarget) ? `"${shTarget}"` : `"$basedir/${shTarget}"`;
- let args = opts.args || "";
- let normalizedNodePathEnvVar = normalizePathEnvVar(opts.nodePath);
- const nodePath = normalizedNodePathEnvVar.win32;
- const shNodePath = normalizedNodePathEnvVar.posix;
- let normalizedPrependPathEnvVar = normalizePathEnvVar(opts.prependToPath);
- const prependPath = normalizedPrependPathEnvVar.win32;
- const shPrependPath = normalizedPrependPathEnvVar.posix;
- if (!pwshProg) {
- pwshProg = quotedPathToTarget;
- args = "";
- shTarget = "";
- } else if (opts.prog === "node" && opts.nodeExecPath) {
- pwshProg = `"${opts.nodeExecPath}"`;
- shTarget = quotedPathToTarget;
- } else {
- pwshLongProg = `"$basedir/${opts.prog}$exe"`;
- shTarget = quotedPathToTarget;
- }
- let progArgs = opts.progArgs ? `${opts.progArgs.join(` `)} ` : "";
- let pwsh = `#!/usr/bin/env pwsh
-$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+ }
+});
-$exe=""
-${nodePath || prependPath ? '$pathsep=":"\n' : ""}${nodePath ? `$env_node_path=$env:NODE_PATH
-$new_node_path="${nodePath}"
-` : ""}${prependPath ? `$env_path=$env:PATH
-$prepend_path="${prependPath}"
-` : ""}if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
- # Fix case when both the Windows and Linux builds of Node
- # are installed in the same directory
- $exe=".exe"
-${nodePath || prependPath ? ' $pathsep=";"\n' : ""}}`;
- if (shNodePath || shPrependPath) {
- pwsh += ` else {
-${shNodePath ? ` $new_node_path="${shNodePath}"
-` : ""}${shPrependPath ? ` $prepend_path="${shPrependPath}"
-` : ""}}
-`;
+// node_modules/graceful-fs/clone.js
+var require_clone = __commonJS({
+ "node_modules/graceful-fs/clone.js"(exports2, module2) {
+ "use strict";
+ module2.exports = clone;
+ var getPrototypeOf = Object.getPrototypeOf || function(obj) {
+ return obj.__proto__;
+ };
+ function clone(obj) {
+ if (obj === null || typeof obj !== "object")
+ return obj;
+ if (obj instanceof Object)
+ var copy = { __proto__: getPrototypeOf(obj) };
+ else
+ var copy = /* @__PURE__ */ Object.create(null);
+ Object.getOwnPropertyNames(obj).forEach(function(key) {
+ Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key));
+ });
+ return copy;
+ }
+ }
+});
+
+// node_modules/graceful-fs/graceful-fs.js
+var require_graceful_fs = __commonJS({
+ "node_modules/graceful-fs/graceful-fs.js"(exports2, module2) {
+ var fs17 = require("fs");
+ var polyfills = require_polyfills();
+ var legacy = require_legacy_streams();
+ var clone = require_clone();
+ var util = require("util");
+ var gracefulQueue;
+ var previousSymbol;
+ if (typeof Symbol === "function" && typeof Symbol.for === "function") {
+ gracefulQueue = /* @__PURE__ */ Symbol.for("graceful-fs.queue");
+ previousSymbol = /* @__PURE__ */ Symbol.for("graceful-fs.previous");
+ } else {
+ gracefulQueue = "___graceful-fs.queue";
+ previousSymbol = "___graceful-fs.previous";
+ }
+ function noop3() {
+ }
+ function publishQueue(context, queue2) {
+ Object.defineProperty(context, gracefulQueue, {
+ get: function() {
+ return queue2;
+ }
+ });
+ }
+ var debug = noop3;
+ if (util.debuglog)
+ debug = util.debuglog("gfs4");
+ else if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || ""))
+ debug = function() {
+ var m = util.format.apply(util, arguments);
+ m = "GFS4: " + m.split(/\n/).join("\nGFS4: ");
+ console.error(m);
+ };
+ if (!fs17[gracefulQueue]) {
+ queue = global[gracefulQueue] || [];
+ publishQueue(fs17, queue);
+ fs17.close = (function(fs$close) {
+ function close(fd, cb) {
+ return fs$close.call(fs17, fd, function(err) {
+ if (!err) {
+ resetQueue();
+ }
+ if (typeof cb === "function")
+ cb.apply(this, arguments);
+ });
+ }
+ Object.defineProperty(close, previousSymbol, {
+ value: fs$close
+ });
+ return close;
+ })(fs17.close);
+ fs17.closeSync = (function(fs$closeSync) {
+ function closeSync(fd) {
+ fs$closeSync.apply(fs17, arguments);
+ resetQueue();
+ }
+ Object.defineProperty(closeSync, previousSymbol, {
+ value: fs$closeSync
+ });
+ return closeSync;
+ })(fs17.closeSync);
+ if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || "")) {
+ process.on("exit", function() {
+ debug(fs17[gracefulQueue]);
+ require("assert").equal(fs17[gracefulQueue].length, 0);
+ });
}
- if (shNodePath) {
- pwsh += `if ([string]::IsNullOrEmpty($env_node_path)) {
- $env:NODE_PATH=$new_node_path
-} else {
- $env:NODE_PATH="$new_node_path$pathsep$env_node_path"
-}
-`;
+ }
+ var queue;
+ if (!global[gracefulQueue]) {
+ publishQueue(global, fs17[gracefulQueue]);
+ }
+ module2.exports = patch(clone(fs17));
+ if (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs17.__patched) {
+ module2.exports = patch(fs17);
+ fs17.__patched = true;
+ }
+ function patch(fs18) {
+ polyfills(fs18);
+ fs18.gracefulify = patch;
+ fs18.createReadStream = createReadStream;
+ fs18.createWriteStream = createWriteStream;
+ var fs$readFile = fs18.readFile;
+ fs18.readFile = readFile;
+ function readFile(path16, options, cb) {
+ if (typeof options === "function")
+ cb = options, options = null;
+ return go$readFile(path16, options, cb);
+ function go$readFile(path17, options2, cb2, startTime) {
+ return fs$readFile(path17, options2, function(err) {
+ if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
+ enqueue([go$readFile, [path17, options2, cb2], err, startTime || Date.now(), Date.now()]);
+ else {
+ if (typeof cb2 === "function")
+ cb2.apply(this, arguments);
+ }
+ });
+ }
}
- if (opts.prependToPath) {
- pwsh += `
-$env:PATH="$prepend_path$pathsep$env:PATH"
-`;
+ var fs$writeFile = fs18.writeFile;
+ fs18.writeFile = writeFile;
+ function writeFile(path16, data, options, cb) {
+ if (typeof options === "function")
+ cb = options, options = null;
+ return go$writeFile(path16, data, options, cb);
+ function go$writeFile(path17, data2, options2, cb2, startTime) {
+ return fs$writeFile(path17, data2, options2, function(err) {
+ if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
+ enqueue([go$writeFile, [path17, data2, options2, cb2], err, startTime || Date.now(), Date.now()]);
+ else {
+ if (typeof cb2 === "function")
+ cb2.apply(this, arguments);
+ }
+ });
+ }
}
- if (pwshLongProg) {
- pwsh += `
-$ret=0
-if (Test-Path ${pwshLongProg}) {
- # Support pipeline input
- if ($MyInvocation.ExpectingInput) {
- $input | & ${pwshLongProg} ${args} ${shTarget} ${progArgs}$args
- } else {
- & ${pwshLongProg} ${args} ${shTarget} ${progArgs}$args
- }
- $ret=$LASTEXITCODE
-} else {
- # Support pipeline input
- if ($MyInvocation.ExpectingInput) {
- $input | & ${pwshProg} ${args} ${shTarget} ${progArgs}$args
- } else {
- & ${pwshProg} ${args} ${shTarget} ${progArgs}$args
- }
- $ret=$LASTEXITCODE
-}
-${nodePath ? "$env:NODE_PATH=$env_node_path\n" : ""}${prependPath ? "$env:PATH=$env_path\n" : ""}exit $ret
-`;
- } else {
- pwsh += `
-# Support pipeline input
-if ($MyInvocation.ExpectingInput) {
- $input | & ${pwshProg} ${args} ${shTarget} ${progArgs}$args
-} else {
- & ${pwshProg} ${args} ${shTarget} ${progArgs}$args
-}
-${nodePath ? "$env:NODE_PATH=$env_node_path\n" : ""}${prependPath ? "$env:PATH=$env_path\n" : ""}exit $LASTEXITCODE
-`;
+ var fs$appendFile = fs18.appendFile;
+ if (fs$appendFile)
+ fs18.appendFile = appendFile;
+ function appendFile(path16, data, options, cb) {
+ if (typeof options === "function")
+ cb = options, options = null;
+ return go$appendFile(path16, data, options, cb);
+ function go$appendFile(path17, data2, options2, cb2, startTime) {
+ return fs$appendFile(path17, data2, options2, function(err) {
+ if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
+ enqueue([go$appendFile, [path17, data2, options2, cb2], err, startTime || Date.now(), Date.now()]);
+ else {
+ if (typeof cb2 === "function")
+ cb2.apply(this, arguments);
+ }
+ });
+ }
+ }
+ var fs$copyFile = fs18.copyFile;
+ if (fs$copyFile)
+ fs18.copyFile = copyFile;
+ function copyFile(src, dest, flags, cb) {
+ if (typeof flags === "function") {
+ cb = flags;
+ flags = 0;
+ }
+ return go$copyFile(src, dest, flags, cb);
+ function go$copyFile(src2, dest2, flags2, cb2, startTime) {
+ return fs$copyFile(src2, dest2, flags2, function(err) {
+ if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
+ enqueue([go$copyFile, [src2, dest2, flags2, cb2], err, startTime || Date.now(), Date.now()]);
+ else {
+ if (typeof cb2 === "function")
+ cb2.apply(this, arguments);
+ }
+ });
+ }
}
- return pwsh;
- }
- function chmodShim(to, opts) {
- return opts.fs_.chmod(to, 493);
- }
- function normalizePathEnvVar(nodePath) {
- if (!nodePath || !nodePath.length) {
- return {
- win32: "",
- posix: ""
+ var fs$readdir = fs18.readdir;
+ fs18.readdir = readdir;
+ var noReaddirOptionVersions = /^v[0-5]\./;
+ function readdir(path16, options, cb) {
+ if (typeof options === "function")
+ cb = options, options = null;
+ var go$readdir = noReaddirOptionVersions.test(process.version) ? function go$readdir2(path17, options2, cb2, startTime) {
+ return fs$readdir(path17, fs$readdirCallback(
+ path17,
+ options2,
+ cb2,
+ startTime
+ ));
+ } : function go$readdir2(path17, options2, cb2, startTime) {
+ return fs$readdir(path17, options2, fs$readdirCallback(
+ path17,
+ options2,
+ cb2,
+ startTime
+ ));
};
+ return go$readdir(path16, options, cb);
+ function fs$readdirCallback(path17, options2, cb2, startTime) {
+ return function(err, files) {
+ if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
+ enqueue([
+ go$readdir,
+ [path17, options2, cb2],
+ err,
+ startTime || Date.now(),
+ Date.now()
+ ]);
+ else {
+ if (files && files.sort)
+ files.sort();
+ if (typeof cb2 === "function")
+ cb2.call(this, err, files);
+ }
+ };
+ }
}
- let split = typeof nodePath === "string" ? nodePath.split(path16.delimiter) : Array.from(nodePath);
- let result = {};
- for (let i = 0; i < split.length; i++) {
- const win322 = split[i].split("/").join("\\");
- const posix = isWindows4() ? split[i].split("\\").join("/").replace(/^([^:\\/]*):/, (_, $1) => `/mnt/${$1.toLowerCase()}`) : split[i];
- result.win32 = result.win32 ? `${result.win32};${win322}` : win322;
- result.posix = result.posix ? `${result.posix}:${posix}` : posix;
- result[i] = { win32: win322, posix };
+ if (process.version.substr(0, 4) === "v0.8") {
+ var legStreams = legacy(fs18);
+ ReadStream2 = legStreams.ReadStream;
+ WriteStream2 = legStreams.WriteStream;
}
- return result;
- }
- module2.exports = cmdShim2;
- }
-});
-
-// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/mode-fix.js
-var modeFix;
-var init_mode_fix = __esm({
- ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/mode-fix.js"() {
- modeFix = (mode, isDir, portable) => {
- mode &= 4095;
- if (portable) {
- mode = (mode | 384) & ~18;
+ var fs$ReadStream = fs18.ReadStream;
+ if (fs$ReadStream) {
+ ReadStream2.prototype = Object.create(fs$ReadStream.prototype);
+ ReadStream2.prototype.open = ReadStream$open;
}
- if (isDir) {
- if (mode & 256) {
- mode |= 64;
- }
- if (mode & 32) {
- mode |= 8;
- }
- if (mode & 4) {
- mode |= 1;
- }
+ var fs$WriteStream = fs18.WriteStream;
+ if (fs$WriteStream) {
+ WriteStream2.prototype = Object.create(fs$WriteStream.prototype);
+ WriteStream2.prototype.open = WriteStream$open;
}
- return mode;
- };
- }
-});
-
-// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/write-entry.js
-var import_fs11, import_path9, prefixPath, maxReadSize, PROCESS, FILE2, DIRECTORY2, SYMLINK2, HARDLINK2, HEADER, READ2, LSTAT, ONLSTAT, ONREAD, ONREADLINK, OPENFILE, ONOPENFILE, CLOSE, MODE, AWAITDRAIN, ONDRAIN, PREFIX, WriteEntry, WriteEntrySync, WriteEntryTar, getType;
-var init_write_entry = __esm({
- ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/write-entry.js"() {
- import_fs11 = __toESM(require("fs"), 1);
- init_esm();
- import_path9 = __toESM(require("path"), 1);
- init_header();
- init_mode_fix();
- init_normalize_windows_path();
- init_options();
- init_pax();
- init_strip_absolute_path();
- init_strip_trailing_slashes();
- init_warn_method();
- init_winchars();
- prefixPath = (path16, prefix) => {
- if (!prefix) {
- return normalizeWindowsPath(path16);
+ Object.defineProperty(fs18, "ReadStream", {
+ get: function() {
+ return ReadStream2;
+ },
+ set: function(val) {
+ ReadStream2 = val;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(fs18, "WriteStream", {
+ get: function() {
+ return WriteStream2;
+ },
+ set: function(val) {
+ WriteStream2 = val;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ var FileReadStream = ReadStream2;
+ Object.defineProperty(fs18, "FileReadStream", {
+ get: function() {
+ return FileReadStream;
+ },
+ set: function(val) {
+ FileReadStream = val;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ var FileWriteStream = WriteStream2;
+ Object.defineProperty(fs18, "FileWriteStream", {
+ get: function() {
+ return FileWriteStream;
+ },
+ set: function(val) {
+ FileWriteStream = val;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ function ReadStream2(path16, options) {
+ if (this instanceof ReadStream2)
+ return fs$ReadStream.apply(this, arguments), this;
+ else
+ return ReadStream2.apply(Object.create(ReadStream2.prototype), arguments);
}
- path16 = normalizeWindowsPath(path16).replace(/^\.(\/|$)/, "");
- return stripTrailingSlashes(prefix) + "/" + path16;
- };
- maxReadSize = 16 * 1024 * 1024;
- PROCESS = Symbol("process");
- FILE2 = Symbol("file");
- DIRECTORY2 = Symbol("directory");
- SYMLINK2 = Symbol("symlink");
- HARDLINK2 = Symbol("hardlink");
- HEADER = Symbol("header");
- READ2 = Symbol("read");
- LSTAT = Symbol("lstat");
- ONLSTAT = Symbol("onlstat");
- ONREAD = Symbol("onread");
- ONREADLINK = Symbol("onreadlink");
- OPENFILE = Symbol("openfile");
- ONOPENFILE = Symbol("onopenfile");
- CLOSE = Symbol("close");
- MODE = Symbol("mode");
- AWAITDRAIN = Symbol("awaitDrain");
- ONDRAIN = Symbol("ondrain");
- PREFIX = Symbol("prefix");
- WriteEntry = class extends Minipass {
- path;
- portable;
- myuid = process.getuid && process.getuid() || 0;
- // until node has builtin pwnam functions, this'll have to do
- myuser = process.env.USER || "";
- maxReadSize;
- linkCache;
- statCache;
- preservePaths;
- cwd;
- strict;
- mtime;
- noPax;
- noMtime;
- prefix;
- fd;
- blockLen = 0;
- blockRemain = 0;
- buf;
- pos = 0;
- remain = 0;
- length = 0;
- offset = 0;
- win32;
- absolute;
- header;
- type;
- linkpath;
- stat;
- onWriteEntry;
- #hadError = false;
- constructor(p, opt_ = {}) {
- const opt = dealias(opt_);
- super();
- this.path = normalizeWindowsPath(p);
- this.portable = !!opt.portable;
- this.maxReadSize = opt.maxReadSize || maxReadSize;
- this.linkCache = opt.linkCache || /* @__PURE__ */ new Map();
- this.statCache = opt.statCache || /* @__PURE__ */ new Map();
- this.preservePaths = !!opt.preservePaths;
- this.cwd = normalizeWindowsPath(opt.cwd || process.cwd());
- this.strict = !!opt.strict;
- this.noPax = !!opt.noPax;
- this.noMtime = !!opt.noMtime;
- this.mtime = opt.mtime;
- this.prefix = opt.prefix ? normalizeWindowsPath(opt.prefix) : void 0;
- this.onWriteEntry = opt.onWriteEntry;
- if (typeof opt.onwarn === "function") {
- this.on("warn", opt.onwarn);
- }
- let pathWarn = false;
- if (!this.preservePaths) {
- const [root, stripped] = stripAbsolutePath(this.path);
- if (root && typeof stripped === "string") {
- this.path = stripped;
- pathWarn = root;
+ function ReadStream$open() {
+ var that = this;
+ open(that.path, that.flags, that.mode, function(err, fd) {
+ if (err) {
+ if (that.autoClose)
+ that.destroy();
+ that.emit("error", err);
+ } else {
+ that.fd = fd;
+ that.emit("open", fd);
+ that.read();
+ }
+ });
+ }
+ function WriteStream2(path16, options) {
+ if (this instanceof WriteStream2)
+ return fs$WriteStream.apply(this, arguments), this;
+ else
+ return WriteStream2.apply(Object.create(WriteStream2.prototype), arguments);
+ }
+ function WriteStream$open() {
+ var that = this;
+ open(that.path, that.flags, that.mode, function(err, fd) {
+ if (err) {
+ that.destroy();
+ that.emit("error", err);
+ } else {
+ that.fd = fd;
+ that.emit("open", fd);
}
- }
- this.win32 = !!opt.win32 || process.platform === "win32";
- if (this.win32) {
- this.path = decode(this.path.replace(/\\/g, "/"));
- p = p.replace(/\\/g, "/");
- }
- this.absolute = normalizeWindowsPath(opt.absolute || import_path9.default.resolve(this.cwd, p));
- if (this.path === "") {
- this.path = "./";
- }
- if (pathWarn) {
- this.warn("TAR_ENTRY_INFO", `stripping ${pathWarn} from absolute path`, {
- entry: this,
- path: pathWarn + this.path
+ });
+ }
+ function createReadStream(path16, options) {
+ return new fs18.ReadStream(path16, options);
+ }
+ function createWriteStream(path16, options) {
+ return new fs18.WriteStream(path16, options);
+ }
+ var fs$open = fs18.open;
+ fs18.open = open;
+ function open(path16, flags, mode, cb) {
+ if (typeof mode === "function")
+ cb = mode, mode = null;
+ return go$open(path16, flags, mode, cb);
+ function go$open(path17, flags2, mode2, cb2, startTime) {
+ return fs$open(path17, flags2, mode2, function(err, fd) {
+ if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
+ enqueue([go$open, [path17, flags2, mode2, cb2], err, startTime || Date.now(), Date.now()]);
+ else {
+ if (typeof cb2 === "function")
+ cb2.apply(this, arguments);
+ }
});
}
- const cs = this.statCache.get(this.absolute);
- if (cs) {
- this[ONLSTAT](cs);
+ }
+ return fs18;
+ }
+ function enqueue(elem) {
+ debug("ENQUEUE", elem[0].name, elem[1]);
+ fs17[gracefulQueue].push(elem);
+ retry();
+ }
+ var retryTimer;
+ function resetQueue() {
+ var now = Date.now();
+ for (var i = 0; i < fs17[gracefulQueue].length; ++i) {
+ if (fs17[gracefulQueue][i].length > 2) {
+ fs17[gracefulQueue][i][3] = now;
+ fs17[gracefulQueue][i][4] = now;
+ }
+ }
+ retry();
+ }
+ function retry() {
+ clearTimeout(retryTimer);
+ retryTimer = void 0;
+ if (fs17[gracefulQueue].length === 0)
+ return;
+ var elem = fs17[gracefulQueue].shift();
+ var fn2 = elem[0];
+ var args = elem[1];
+ var err = elem[2];
+ var startTime = elem[3];
+ var lastTime = elem[4];
+ if (startTime === void 0) {
+ debug("RETRY", fn2.name, args);
+ fn2.apply(null, args);
+ } else if (Date.now() - startTime >= 6e4) {
+ debug("TIMEOUT", fn2.name, args);
+ var cb = args.pop();
+ if (typeof cb === "function")
+ cb.call(null, err);
+ } else {
+ var sinceAttempt = Date.now() - lastTime;
+ var sinceStart = Math.max(lastTime - startTime, 1);
+ var desiredDelay = Math.min(sinceStart * 1.2, 100);
+ if (sinceAttempt >= desiredDelay) {
+ debug("RETRY", fn2.name, args);
+ fn2.apply(null, args.concat([startTime]));
} else {
- this[LSTAT]();
+ fs17[gracefulQueue].push(elem);
}
}
- warn(code2, message, data = {}) {
- return warnMethod(this, code2, message, data);
+ if (retryTimer === void 0) {
+ retryTimer = setTimeout(retry, 0);
}
- emit(ev, ...data) {
- if (ev === "error") {
- this.#hadError = true;
- }
- return super.emit(ev, ...data);
+ }
+ }
+});
+
+// node_modules/@zkochan/cmd-shim/index.js
+var require_cmd_shim = __commonJS({
+ "node_modules/@zkochan/cmd-shim/index.js"(exports2, module2) {
+ "use strict";
+ cmdShim2.ifExists = cmdShimIfExists;
+ var util_1 = require("util");
+ var path16 = require("path");
+ var isWindows4 = require_is_windows();
+ var CMD_EXTENSION = require_cmd_extension();
+ var shebangExpr = /^#!\s*(?:\/usr\/bin\/env(?:\s+-S\s*)?)?\s*([^ \t]+)(.*)$/;
+ var DEFAULT_OPTIONS = {
+ // Create PowerShell file by default if the option hasn't been specified
+ createPwshFile: true,
+ createCmdFile: isWindows4(),
+ fs: require_graceful_fs()
+ };
+ var extensionToProgramMap = /* @__PURE__ */ new Map([
+ [".js", "node"],
+ [".cjs", "node"],
+ [".mjs", "node"],
+ [".cmd", "cmd"],
+ [".bat", "cmd"],
+ [".ps1", "pwsh"],
+ [".sh", "sh"]
+ ]);
+ function ingestOptions(opts) {
+ const opts_ = { ...DEFAULT_OPTIONS, ...opts };
+ const fs17 = opts_.fs;
+ opts_.fs_ = {
+ chmod: fs17.chmod ? (0, util_1.promisify)(fs17.chmod) : (async () => {
+ }),
+ mkdir: (0, util_1.promisify)(fs17.mkdir),
+ readFile: (0, util_1.promisify)(fs17.readFile),
+ stat: (0, util_1.promisify)(fs17.stat),
+ unlink: (0, util_1.promisify)(fs17.unlink),
+ writeFile: (0, util_1.promisify)(fs17.writeFile)
+ };
+ return opts_;
+ }
+ async function cmdShim2(src, to, opts) {
+ const opts_ = ingestOptions(opts);
+ await cmdShim_(src, to, opts_);
+ }
+ function cmdShimIfExists(src, to, opts) {
+ return cmdShim2(src, to, opts).catch(() => {
+ });
+ }
+ function rm(path17, opts) {
+ return opts.fs_.unlink(path17).catch(() => {
+ });
+ }
+ async function cmdShim_(src, to, opts) {
+ const srcRuntimeInfo = await searchScriptRuntime(src, opts);
+ await writeShimsPreCommon(to, opts);
+ return writeAllShims(src, to, srcRuntimeInfo, opts);
+ }
+ function writeShimsPreCommon(target, opts) {
+ return opts.fs_.mkdir(path16.dirname(target), { recursive: true });
+ }
+ function writeAllShims(src, to, srcRuntimeInfo, opts) {
+ const opts_ = ingestOptions(opts);
+ const generatorAndExts = [{ generator: generateShShim, extension: "" }];
+ if (opts_.createCmdFile) {
+ generatorAndExts.push({ generator: generateCmdShim, extension: CMD_EXTENSION });
}
- [LSTAT]() {
- import_fs11.default.lstat(this.absolute, (er, stat) => {
- if (er) {
- return this.emit("error", er);
- }
- this[ONLSTAT](stat);
- });
+ if (opts_.createPwshFile) {
+ generatorAndExts.push({ generator: generatePwshShim, extension: ".ps1" });
}
- [ONLSTAT](stat) {
- this.statCache.set(this.absolute, stat);
- this.stat = stat;
- if (!stat.isFile()) {
- stat.size = 0;
+ return Promise.all(generatorAndExts.map((generatorAndExt) => writeShim(src, to + generatorAndExt.extension, srcRuntimeInfo, generatorAndExt.generator, opts_)));
+ }
+ function writeShimPre(target, opts) {
+ return rm(target, opts);
+ }
+ function writeShimPost(target, opts) {
+ return chmodShim(target, opts);
+ }
+ async function searchScriptRuntime(target, opts) {
+ try {
+ const data = await opts.fs_.readFile(target, "utf8");
+ const firstLine = data.trim().split(/\r*\n/)[0];
+ const shebang = firstLine.match(shebangExpr);
+ if (!shebang) {
+ const targetExtension = path16.extname(target).toLowerCase();
+ return {
+ // undefined if extension is unknown but it's converted to null.
+ program: extensionToProgramMap.get(targetExtension) || null,
+ additionalArgs: ""
+ };
}
- this.type = getType(stat);
- this.emit("stat", stat);
- this[PROCESS]();
- }
- [PROCESS]() {
- switch (this.type) {
- case "File":
- return this[FILE2]();
- case "Directory":
- return this[DIRECTORY2]();
- case "SymbolicLink":
- return this[SYMLINK2]();
- // unsupported types are ignored.
- default:
- return this.end();
+ return {
+ program: shebang[1],
+ additionalArgs: shebang[2]
+ };
+ } catch (err) {
+ if (!isWindows4() || err.code !== "ENOENT")
+ throw err;
+ if (await opts.fs_.stat(`${target}${getExeExtension()}`)) {
+ return {
+ program: null,
+ additionalArgs: ""
+ };
}
+ throw err;
+ }
+ }
+ function getExeExtension() {
+ let cmdExtension;
+ if (process.env.PATHEXT) {
+ cmdExtension = process.env.PATHEXT.split(path16.delimiter).find((ext) => ext.toLowerCase() === ".exe");
+ }
+ return cmdExtension || ".exe";
+ }
+ async function writeShim(src, to, srcRuntimeInfo, generateShimScript, opts) {
+ const defaultArgs = opts.preserveSymlinks ? "--preserve-symlinks" : "";
+ const args = [srcRuntimeInfo.additionalArgs, defaultArgs].filter((arg) => arg).join(" ");
+ opts = Object.assign({}, opts, {
+ prog: srcRuntimeInfo.program,
+ args
+ });
+ await writeShimPre(to, opts);
+ await opts.fs_.writeFile(to, generateShimScript(src, to, opts), "utf8");
+ return writeShimPost(to, opts);
+ }
+ function generateCmdShim(src, to, opts) {
+ const shTarget = path16.relative(path16.dirname(to), src);
+ let target = shTarget.split("/").join("\\");
+ const quotedPathToTarget = path16.isAbsolute(target) ? `"${target}"` : `"%~dp0\\${target}"`;
+ let longProg;
+ let prog = opts.prog;
+ let args = opts.args || "";
+ const nodePath = normalizePathEnvVar(opts.nodePath).win32;
+ const prependToPath = normalizePathEnvVar(opts.prependToPath).win32;
+ if (!prog) {
+ prog = quotedPathToTarget;
+ args = "";
+ target = "";
+ } else if (prog === "node" && opts.nodeExecPath) {
+ prog = `"${opts.nodeExecPath}"`;
+ target = quotedPathToTarget;
+ } else {
+ longProg = `"%~dp0\\${prog}.exe"`;
+ target = quotedPathToTarget;
}
- [MODE](mode) {
- return modeFix(mode, this.type === "Directory", this.portable);
+ let progArgs = opts.progArgs ? `${opts.progArgs.join(` `)} ` : "";
+ let cmd = "@SETLOCAL\r\n";
+ if (prependToPath) {
+ cmd += `@SET "PATH=${prependToPath}:%PATH%"\r
+`;
}
- [PREFIX](path16) {
- return prefixPath(path16, this.prefix);
+ if (nodePath) {
+ cmd += `@IF NOT DEFINED NODE_PATH (\r
+ @SET "NODE_PATH=${nodePath}"\r
+) ELSE (\r
+ @SET "NODE_PATH=${nodePath};%NODE_PATH%"\r
+)\r
+`;
}
- [HEADER]() {
- if (!this.stat) {
- throw new Error("cannot write header before stat");
- }
- if (this.type === "Directory" && this.portable) {
- this.noMtime = true;
- }
- this.onWriteEntry?.(this);
- this.header = new Header({
- path: this[PREFIX](this.path),
- // only apply the prefix to hard links.
- linkpath: this.type === "Link" && this.linkpath !== void 0 ? this[PREFIX](this.linkpath) : this.linkpath,
- // only the permissions and setuid/setgid/sticky bitflags
- // not the higher-order bits that specify file type
- mode: this[MODE](this.stat.mode),
- uid: this.portable ? void 0 : this.stat.uid,
- gid: this.portable ? void 0 : this.stat.gid,
- size: this.stat.size,
- mtime: this.noMtime ? void 0 : this.mtime || this.stat.mtime,
- /* c8 ignore next */
- type: this.type === "Unsupported" ? void 0 : this.type,
- uname: this.portable ? void 0 : this.stat.uid === this.myuid ? this.myuser : "",
- atime: this.portable ? void 0 : this.stat.atime,
- ctime: this.portable ? void 0 : this.stat.ctime
- });
- if (this.header.encode() && !this.noPax) {
- super.write(new Pax({
- atime: this.portable ? void 0 : this.header.atime,
- ctime: this.portable ? void 0 : this.header.ctime,
- gid: this.portable ? void 0 : this.header.gid,
- mtime: this.noMtime ? void 0 : this.mtime || this.header.mtime,
- path: this[PREFIX](this.path),
- linkpath: this.type === "Link" && this.linkpath !== void 0 ? this[PREFIX](this.linkpath) : this.linkpath,
- size: this.header.size,
- uid: this.portable ? void 0 : this.header.uid,
- uname: this.portable ? void 0 : this.header.uname,
- dev: this.portable ? void 0 : this.stat.dev,
- ino: this.portable ? void 0 : this.stat.ino,
- nlink: this.portable ? void 0 : this.stat.nlink
- }).encode());
- }
- const block = this.header?.block;
- if (!block) {
- throw new Error("failed to encode header");
- }
- super.write(block);
+ if (longProg) {
+ cmd += `@IF EXIST ${longProg} (\r
+ ${longProg} ${args} ${target} ${progArgs}%*\r
+) ELSE (\r
+ @SET PATHEXT=%PATHEXT:;.JS;=;%\r
+ ${prog} ${args} ${target} ${progArgs}%*\r
+)\r
+`;
+ } else {
+ cmd += `@${prog} ${args} ${target} ${progArgs}%*\r
+`;
}
- [DIRECTORY2]() {
- if (!this.stat) {
- throw new Error("cannot create directory entry without stat");
- }
- if (this.path.slice(-1) !== "/") {
- this.path += "/";
- }
- this.stat.size = 0;
- this[HEADER]();
- this.end();
+ return cmd;
+ }
+ function generateShShim(src, to, opts) {
+ let shTarget = path16.relative(path16.dirname(to), src);
+ let shProg = opts.prog && opts.prog.split("\\").join("/");
+ let shLongProg;
+ shTarget = shTarget.split("\\").join("/");
+ const quotedPathToTarget = path16.isAbsolute(shTarget) ? `"${shTarget}"` : `"$basedir/${shTarget}"`;
+ let args = opts.args || "";
+ const shNodePath = normalizePathEnvVar(opts.nodePath).posix;
+ if (!shProg) {
+ shProg = quotedPathToTarget;
+ args = "";
+ shTarget = "";
+ } else if (opts.prog === "node" && opts.nodeExecPath) {
+ shProg = `"${opts.nodeExecPath}"`;
+ shTarget = quotedPathToTarget;
+ } else {
+ shLongProg = `"$basedir/${opts.prog}"`;
+ shTarget = quotedPathToTarget;
}
- [SYMLINK2]() {
- import_fs11.default.readlink(this.absolute, (er, linkpath) => {
- if (er) {
- return this.emit("error", er);
- }
- this[ONREADLINK](linkpath);
- });
+ let progArgs = opts.progArgs ? `${opts.progArgs.join(` `)} ` : "";
+ let sh = `#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\\\,/,g')")
+
+case \`uname\` in
+ *CYGWIN*) basedir=\`cygpath -w "$basedir"\`;;
+esac
+
+`;
+ if (opts.prependToPath) {
+ sh += `export PATH="${opts.prependToPath}:$PATH"
+`;
}
- [ONREADLINK](linkpath) {
- this.linkpath = normalizeWindowsPath(linkpath);
- this[HEADER]();
- this.end();
+ if (shNodePath) {
+ sh += `if [ -z "$NODE_PATH" ]; then
+ export NODE_PATH="${shNodePath}"
+else
+ export NODE_PATH="${shNodePath}:$NODE_PATH"
+fi
+`;
}
- [HARDLINK2](linkpath) {
- if (!this.stat) {
- throw new Error("cannot create link entry without stat");
- }
- this.type = "Link";
- this.linkpath = normalizeWindowsPath(import_path9.default.relative(this.cwd, linkpath));
- this.stat.size = 0;
- this[HEADER]();
- this.end();
+ if (shLongProg) {
+ sh += `if [ -x ${shLongProg} ]; then
+ exec ${shLongProg} ${args} ${shTarget} ${progArgs}"$@"
+else
+ exec ${shProg} ${args} ${shTarget} ${progArgs}"$@"
+fi
+`;
+ } else {
+ sh += `${shProg} ${args} ${shTarget} ${progArgs}"$@"
+exit $?
+`;
}
- [FILE2]() {
- if (!this.stat) {
- throw new Error("cannot create file entry without stat");
- }
- if (this.stat.nlink > 1) {
- const linkKey = `${this.stat.dev}:${this.stat.ino}`;
- const linkpath = this.linkCache.get(linkKey);
- if (linkpath?.indexOf(this.cwd) === 0) {
- return this[HARDLINK2](linkpath);
- }
- this.linkCache.set(linkKey, this.absolute);
- }
- this[HEADER]();
- if (this.stat.size === 0) {
- return this.end();
- }
- this[OPENFILE]();
+ return sh;
+ }
+ function generatePwshShim(src, to, opts) {
+ let shTarget = path16.relative(path16.dirname(to), src);
+ const shProg = opts.prog && opts.prog.split("\\").join("/");
+ let pwshProg = shProg && `"${shProg}$exe"`;
+ let pwshLongProg;
+ shTarget = shTarget.split("\\").join("/");
+ const quotedPathToTarget = path16.isAbsolute(shTarget) ? `"${shTarget}"` : `"$basedir/${shTarget}"`;
+ let args = opts.args || "";
+ let normalizedNodePathEnvVar = normalizePathEnvVar(opts.nodePath);
+ const nodePath = normalizedNodePathEnvVar.win32;
+ const shNodePath = normalizedNodePathEnvVar.posix;
+ let normalizedPrependPathEnvVar = normalizePathEnvVar(opts.prependToPath);
+ const prependPath = normalizedPrependPathEnvVar.win32;
+ const shPrependPath = normalizedPrependPathEnvVar.posix;
+ if (!pwshProg) {
+ pwshProg = quotedPathToTarget;
+ args = "";
+ shTarget = "";
+ } else if (opts.prog === "node" && opts.nodeExecPath) {
+ pwshProg = `"${opts.nodeExecPath}"`;
+ shTarget = quotedPathToTarget;
+ } else {
+ pwshLongProg = `"$basedir/${opts.prog}$exe"`;
+ shTarget = quotedPathToTarget;
}
- [OPENFILE]() {
- import_fs11.default.open(this.absolute, "r", (er, fd) => {
- if (er) {
- return this.emit("error", er);
- }
- this[ONOPENFILE](fd);
- });
+ let progArgs = opts.progArgs ? `${opts.progArgs.join(` `)} ` : "";
+ let pwsh = `#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+${nodePath || prependPath ? '$pathsep=":"\n' : ""}${nodePath ? `$env_node_path=$env:NODE_PATH
+$new_node_path="${nodePath}"
+` : ""}${prependPath ? `$env_path=$env:PATH
+$prepend_path="${prependPath}"
+` : ""}if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ # Fix case when both the Windows and Linux builds of Node
+ # are installed in the same directory
+ $exe=".exe"
+${nodePath || prependPath ? ' $pathsep=";"\n' : ""}}`;
+ if (shNodePath || shPrependPath) {
+ pwsh += ` else {
+${shNodePath ? ` $new_node_path="${shNodePath}"
+` : ""}${shPrependPath ? ` $prepend_path="${shPrependPath}"
+` : ""}}
+`;
}
- [ONOPENFILE](fd) {
- this.fd = fd;
- if (this.#hadError) {
- return this[CLOSE]();
- }
- if (!this.stat) {
- throw new Error("should stat before calling onopenfile");
- }
- this.blockLen = 512 * Math.ceil(this.stat.size / 512);
- this.blockRemain = this.blockLen;
- const bufLen = Math.min(this.blockLen, this.maxReadSize);
- this.buf = Buffer.allocUnsafe(bufLen);
- this.offset = 0;
- this.pos = 0;
- this.remain = this.stat.size;
- this.length = this.buf.length;
- this[READ2]();
+ if (shNodePath) {
+ pwsh += `if ([string]::IsNullOrEmpty($env_node_path)) {
+ $env:NODE_PATH=$new_node_path
+} else {
+ $env:NODE_PATH="$new_node_path$pathsep$env_node_path"
+}
+`;
}
- [READ2]() {
- const { fd, buf, offset, length, pos: pos2 } = this;
- if (fd === void 0 || buf === void 0) {
- throw new Error("cannot read file without first opening");
- }
- import_fs11.default.read(fd, buf, offset, length, pos2, (er, bytesRead) => {
- if (er) {
- return this[CLOSE](() => this.emit("error", er));
- }
- this[ONREAD](bytesRead);
- });
+ if (opts.prependToPath) {
+ pwsh += `
+$env:PATH="$prepend_path$pathsep$env:PATH"
+`;
}
- /* c8 ignore start */
- [CLOSE](cb = () => {
- }) {
- if (this.fd !== void 0)
- import_fs11.default.close(this.fd, cb);
+ if (pwshLongProg) {
+ pwsh += `
+$ret=0
+if (Test-Path ${pwshLongProg}) {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & ${pwshLongProg} ${args} ${shTarget} ${progArgs}$args
+ } else {
+ & ${pwshLongProg} ${args} ${shTarget} ${progArgs}$args
+ }
+ $ret=$LASTEXITCODE
+} else {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & ${pwshProg} ${args} ${shTarget} ${progArgs}$args
+ } else {
+ & ${pwshProg} ${args} ${shTarget} ${progArgs}$args
+ }
+ $ret=$LASTEXITCODE
+}
+${nodePath ? "$env:NODE_PATH=$env_node_path\n" : ""}${prependPath ? "$env:PATH=$env_path\n" : ""}exit $ret
+`;
+ } else {
+ pwsh += `
+# Support pipeline input
+if ($MyInvocation.ExpectingInput) {
+ $input | & ${pwshProg} ${args} ${shTarget} ${progArgs}$args
+} else {
+ & ${pwshProg} ${args} ${shTarget} ${progArgs}$args
+}
+${nodePath ? "$env:NODE_PATH=$env_node_path\n" : ""}${prependPath ? "$env:PATH=$env_path\n" : ""}exit $LASTEXITCODE
+`;
}
- [ONREAD](bytesRead) {
- if (bytesRead <= 0 && this.remain > 0) {
- const er = Object.assign(new Error("encountered unexpected EOF"), {
- path: this.absolute,
- syscall: "read",
- code: "EOF"
- });
- return this[CLOSE](() => this.emit("error", er));
- }
- if (bytesRead > this.remain) {
- const er = Object.assign(new Error("did not encounter expected EOF"), {
- path: this.absolute,
- syscall: "read",
- code: "EOF"
- });
- return this[CLOSE](() => this.emit("error", er));
- }
- if (!this.buf) {
- throw new Error("should have created buffer prior to reading");
- }
- if (bytesRead === this.remain) {
- for (let i = bytesRead; i < this.length && bytesRead < this.blockRemain; i++) {
- this.buf[i + this.offset] = 0;
- bytesRead++;
- this.remain++;
- }
- }
- const chunk = this.offset === 0 && bytesRead === this.buf.length ? this.buf : this.buf.subarray(this.offset, this.offset + bytesRead);
- const flushed = this.write(chunk);
- if (!flushed) {
- this[AWAITDRAIN](() => this[ONDRAIN]());
- } else {
- this[ONDRAIN]();
- }
+ return pwsh;
+ }
+ function chmodShim(to, opts) {
+ return opts.fs_.chmod(to, 493);
+ }
+ function normalizePathEnvVar(nodePath) {
+ if (!nodePath || !nodePath.length) {
+ return {
+ win32: "",
+ posix: ""
+ };
}
- [AWAITDRAIN](cb) {
- this.once("drain", cb);
+ let split = typeof nodePath === "string" ? nodePath.split(path16.delimiter) : Array.from(nodePath);
+ let result = {};
+ for (let i = 0; i < split.length; i++) {
+ const win322 = split[i].split("/").join("\\");
+ const posix = isWindows4() ? split[i].split("\\").join("/").replace(/^([^:\\/]*):/, (_, $1) => `/mnt/${$1.toLowerCase()}`) : split[i];
+ result.win32 = result.win32 ? `${result.win32};${win322}` : win322;
+ result.posix = result.posix ? `${result.posix}:${posix}` : posix;
+ result[i] = { win32: win322, posix };
}
- write(chunk, encoding, cb) {
- if (typeof encoding === "function") {
- cb = encoding;
- encoding = void 0;
- }
- if (typeof chunk === "string") {
- chunk = Buffer.from(chunk, typeof encoding === "string" ? encoding : "utf8");
- }
- if (this.blockRemain < chunk.length) {
- const er = Object.assign(new Error("writing more data than expected"), {
- path: this.absolute
- });
- return this.emit("error", er);
- }
- this.remain -= chunk.length;
- this.blockRemain -= chunk.length;
- this.pos += chunk.length;
- this.offset += chunk.length;
- return super.write(chunk, null, cb);
+ return result;
+ }
+ module2.exports = cmdShim2;
+ }
+});
+
+// node_modules/tar/dist/esm/mode-fix.js
+var modeFix;
+var init_mode_fix = __esm({
+ "node_modules/tar/dist/esm/mode-fix.js"() {
+ modeFix = (mode, isDir, portable) => {
+ mode &= 4095;
+ if (portable) {
+ mode = (mode | 384) & ~18;
}
- [ONDRAIN]() {
- if (!this.remain) {
- if (this.blockRemain) {
- super.write(Buffer.alloc(this.blockRemain));
- }
- return this[CLOSE]((er) => er ? this.emit("error", er) : this.end());
+ if (isDir) {
+ if (mode & 256) {
+ mode |= 64;
}
- if (!this.buf) {
- throw new Error("buffer lost somehow in ONDRAIN");
+ if (mode & 32) {
+ mode |= 8;
}
- if (this.offset >= this.length) {
- this.buf = Buffer.allocUnsafe(Math.min(this.blockRemain, this.buf.length));
- this.offset = 0;
+ if (mode & 4) {
+ mode |= 1;
}
- this.length = this.buf.length - this.offset;
- this[READ2]();
}
+ return mode;
};
- WriteEntrySync = class extends WriteEntry {
- sync = true;
- [LSTAT]() {
- this[ONLSTAT](import_fs11.default.lstatSync(this.absolute));
- }
- [SYMLINK2]() {
- this[ONREADLINK](import_fs11.default.readlinkSync(this.absolute));
- }
- [OPENFILE]() {
- this[ONOPENFILE](import_fs11.default.openSync(this.absolute, "r"));
- }
- [READ2]() {
- let threw = true;
- try {
- const { fd, buf, offset, length, pos: pos2 } = this;
- if (fd === void 0 || buf === void 0) {
- throw new Error("fd and buf must be set in READ method");
- }
- const bytesRead = import_fs11.default.readSync(fd, buf, offset, length, pos2);
- this[ONREAD](bytesRead);
- threw = false;
- } finally {
- if (threw) {
- try {
- this[CLOSE](() => {
- });
- } catch (er) {
- }
- }
- }
- }
- [AWAITDRAIN](cb) {
- cb();
- }
- /* c8 ignore start */
- [CLOSE](cb = () => {
- }) {
- if (this.fd !== void 0)
- import_fs11.default.closeSync(this.fd);
- cb();
+ }
+});
+
+// node_modules/tar/dist/esm/write-entry.js
+var import_fs11, import_path9, prefixPath, maxReadSize, PROCESS, FILE2, DIRECTORY2, SYMLINK2, HARDLINK2, HEADER, READ2, LSTAT, ONLSTAT, ONREAD, ONREADLINK, OPENFILE, ONOPENFILE, CLOSE, MODE, AWAITDRAIN, ONDRAIN, PREFIX, WriteEntry, WriteEntrySync, WriteEntryTar, getType;
+var init_write_entry = __esm({
+ "node_modules/tar/dist/esm/write-entry.js"() {
+ import_fs11 = __toESM(require("fs"), 1);
+ init_esm();
+ import_path9 = __toESM(require("path"), 1);
+ init_header();
+ init_mode_fix();
+ init_normalize_windows_path();
+ init_options();
+ init_pax();
+ init_strip_absolute_path();
+ init_strip_trailing_slashes();
+ init_warn_method();
+ init_winchars();
+ prefixPath = (path16, prefix) => {
+ if (!prefix) {
+ return normalizeWindowsPath(path16);
}
+ path16 = normalizeWindowsPath(path16).replace(/^\.(\/|$)/, "");
+ return stripTrailingSlashes(prefix) + "/" + path16;
};
- WriteEntryTar = class extends Minipass {
- blockLen = 0;
- blockRemain = 0;
- buf = 0;
- pos = 0;
- remain = 0;
- length = 0;
- preservePaths;
+ maxReadSize = 16 * 1024 * 1024;
+ PROCESS = /* @__PURE__ */ Symbol("process");
+ FILE2 = /* @__PURE__ */ Symbol("file");
+ DIRECTORY2 = /* @__PURE__ */ Symbol("directory");
+ SYMLINK2 = /* @__PURE__ */ Symbol("symlink");
+ HARDLINK2 = /* @__PURE__ */ Symbol("hardlink");
+ HEADER = /* @__PURE__ */ Symbol("header");
+ READ2 = /* @__PURE__ */ Symbol("read");
+ LSTAT = /* @__PURE__ */ Symbol("lstat");
+ ONLSTAT = /* @__PURE__ */ Symbol("onlstat");
+ ONREAD = /* @__PURE__ */ Symbol("onread");
+ ONREADLINK = /* @__PURE__ */ Symbol("onreadlink");
+ OPENFILE = /* @__PURE__ */ Symbol("openfile");
+ ONOPENFILE = /* @__PURE__ */ Symbol("onopenfile");
+ CLOSE = /* @__PURE__ */ Symbol("close");
+ MODE = /* @__PURE__ */ Symbol("mode");
+ AWAITDRAIN = /* @__PURE__ */ Symbol("awaitDrain");
+ ONDRAIN = /* @__PURE__ */ Symbol("ondrain");
+ PREFIX = /* @__PURE__ */ Symbol("prefix");
+ WriteEntry = class extends Minipass {
+ path;
portable;
+ myuid = process.getuid && process.getuid() || 0;
+ // until node has builtin pwnam functions, this'll have to do
+ myuser = process.env.USER || "";
+ maxReadSize;
+ linkCache;
+ statCache;
+ preservePaths;
+ cwd;
strict;
+ mtime;
noPax;
noMtime;
- readEntry;
- type;
prefix;
- path;
- mode;
- uid;
- gid;
- uname;
- gname;
+ fd;
+ blockLen = 0;
+ blockRemain = 0;
+ buf;
+ pos = 0;
+ remain = 0;
+ length = 0;
+ offset = 0;
+ win32;
+ absolute;
header;
- mtime;
- atime;
- ctime;
+ type;
linkpath;
- size;
+ stat;
onWriteEntry;
- warn(code2, message, data = {}) {
- return warnMethod(this, code2, message, data);
- }
- constructor(readEntry, opt_ = {}) {
+ #hadError = false;
+ constructor(p, opt_ = {}) {
const opt = dealias(opt_);
super();
- this.preservePaths = !!opt.preservePaths;
+ this.path = normalizeWindowsPath(p);
this.portable = !!opt.portable;
+ this.maxReadSize = opt.maxReadSize || maxReadSize;
+ this.linkCache = opt.linkCache || /* @__PURE__ */ new Map();
+ this.statCache = opt.statCache || /* @__PURE__ */ new Map();
+ this.preservePaths = !!opt.preservePaths;
+ this.cwd = normalizeWindowsPath(opt.cwd || process.cwd());
this.strict = !!opt.strict;
this.noPax = !!opt.noPax;
this.noMtime = !!opt.noMtime;
+ this.mtime = opt.mtime;
+ this.prefix = opt.prefix ? normalizeWindowsPath(opt.prefix) : void 0;
this.onWriteEntry = opt.onWriteEntry;
- this.readEntry = readEntry;
- const { type } = readEntry;
- if (type === "Unsupported") {
- throw new Error("writing entry that should be ignored");
- }
- this.type = type;
- if (this.type === "Directory" && this.portable) {
- this.noMtime = true;
- }
- this.prefix = opt.prefix;
- this.path = normalizeWindowsPath(readEntry.path);
- this.mode = readEntry.mode !== void 0 ? this[MODE](readEntry.mode) : void 0;
- this.uid = this.portable ? void 0 : readEntry.uid;
- this.gid = this.portable ? void 0 : readEntry.gid;
- this.uname = this.portable ? void 0 : readEntry.uname;
- this.gname = this.portable ? void 0 : readEntry.gname;
- this.size = readEntry.size;
- this.mtime = this.noMtime ? void 0 : opt.mtime || readEntry.mtime;
- this.atime = this.portable ? void 0 : readEntry.atime;
- this.ctime = this.portable ? void 0 : readEntry.ctime;
- this.linkpath = readEntry.linkpath !== void 0 ? normalizeWindowsPath(readEntry.linkpath) : void 0;
if (typeof opt.onwarn === "function") {
this.on("warn", opt.onwarn);
}
@@ -19044,2668 +11247,1541 @@ var init_write_entry = __esm({
pathWarn = root;
}
}
- this.remain = readEntry.size;
- this.blockRemain = readEntry.startBlockSize;
- this.onWriteEntry?.(this);
- this.header = new Header({
- path: this[PREFIX](this.path),
- linkpath: this.type === "Link" && this.linkpath !== void 0 ? this[PREFIX](this.linkpath) : this.linkpath,
- // only the permissions and setuid/setgid/sticky bitflags
- // not the higher-order bits that specify file type
- mode: this.mode,
- uid: this.portable ? void 0 : this.uid,
- gid: this.portable ? void 0 : this.gid,
- size: this.size,
- mtime: this.noMtime ? void 0 : this.mtime,
- type: this.type,
- uname: this.portable ? void 0 : this.uname,
- atime: this.portable ? void 0 : this.atime,
- ctime: this.portable ? void 0 : this.ctime
- });
+ this.win32 = !!opt.win32 || process.platform === "win32";
+ if (this.win32) {
+ this.path = decode(this.path.replaceAll(/\\/g, "/"));
+ p = p.replaceAll(/\\/g, "/");
+ }
+ this.absolute = normalizeWindowsPath(opt.absolute || import_path9.default.resolve(this.cwd, p));
+ if (this.path === "") {
+ this.path = "./";
+ }
if (pathWarn) {
this.warn("TAR_ENTRY_INFO", `stripping ${pathWarn} from absolute path`, {
entry: this,
path: pathWarn + this.path
});
}
- if (this.header.encode() && !this.noPax) {
- super.write(new Pax({
- atime: this.portable ? void 0 : this.atime,
- ctime: this.portable ? void 0 : this.ctime,
- gid: this.portable ? void 0 : this.gid,
- mtime: this.noMtime ? void 0 : this.mtime,
- path: this[PREFIX](this.path),
- linkpath: this.type === "Link" && this.linkpath !== void 0 ? this[PREFIX](this.linkpath) : this.linkpath,
- size: this.size,
- uid: this.portable ? void 0 : this.uid,
- uname: this.portable ? void 0 : this.uname,
- dev: this.portable ? void 0 : this.readEntry.dev,
- ino: this.portable ? void 0 : this.readEntry.ino,
- nlink: this.portable ? void 0 : this.readEntry.nlink
- }).encode());
+ const cs = this.statCache.get(this.absolute);
+ if (cs) {
+ this[ONLSTAT](cs);
+ } else {
+ this[LSTAT]();
}
- const b = this.header?.block;
- if (!b)
- throw new Error("failed to encode header");
- super.write(b);
- readEntry.pipe(this);
}
- [PREFIX](path16) {
- return prefixPath(path16, this.prefix);
- }
- [MODE](mode) {
- return modeFix(mode, this.type === "Directory", this.portable);
- }
- write(chunk, encoding, cb) {
- if (typeof encoding === "function") {
- cb = encoding;
- encoding = void 0;
- }
- if (typeof chunk === "string") {
- chunk = Buffer.from(chunk, typeof encoding === "string" ? encoding : "utf8");
- }
- const writeLen = chunk.length;
- if (writeLen > this.blockRemain) {
- throw new Error("writing more to entry than is appropriate");
- }
- this.blockRemain -= writeLen;
- return super.write(chunk, cb);
+ warn(code2, message, data = {}) {
+ return warnMethod(this, code2, message, data);
}
- end(chunk, encoding, cb) {
- if (this.blockRemain) {
- super.write(Buffer.alloc(this.blockRemain));
- }
- if (typeof chunk === "function") {
- cb = chunk;
- encoding = void 0;
- chunk = void 0;
- }
- if (typeof encoding === "function") {
- cb = encoding;
- encoding = void 0;
- }
- if (typeof chunk === "string") {
- chunk = Buffer.from(chunk, encoding ?? "utf8");
+ emit(ev, ...data) {
+ if (ev === "error") {
+ this.#hadError = true;
}
- if (cb)
- this.once("finish", cb);
- chunk ? super.end(chunk, cb) : super.end(cb);
- return this;
- }
- };
- getType = (stat) => stat.isFile() ? "File" : stat.isDirectory() ? "Directory" : stat.isSymbolicLink() ? "SymbolicLink" : "Unsupported";
- }
-});
-
-// .yarn/cache/yallist-npm-5.0.0-8732dd9f1c-a499c81ce6.zip/node_modules/yallist/dist/esm/index.js
-function insertAfter(self2, node, value) {
- const prev = node;
- const next = node ? node.next : self2.head;
- const inserted = new Node(value, prev, next, self2);
- if (inserted.next === void 0) {
- self2.tail = inserted;
- }
- if (inserted.prev === void 0) {
- self2.head = inserted;
- }
- self2.length++;
- return inserted;
-}
-function push(self2, item) {
- self2.tail = new Node(item, self2.tail, void 0, self2);
- if (!self2.head) {
- self2.head = self2.tail;
- }
- self2.length++;
-}
-function unshift(self2, item) {
- self2.head = new Node(item, void 0, self2.head, self2);
- if (!self2.tail) {
- self2.tail = self2.head;
- }
- self2.length++;
-}
-var Yallist, Node;
-var init_esm5 = __esm({
- ".yarn/cache/yallist-npm-5.0.0-8732dd9f1c-a499c81ce6.zip/node_modules/yallist/dist/esm/index.js"() {
- Yallist = class _Yallist {
- tail;
- head;
- length = 0;
- static create(list2 = []) {
- return new _Yallist(list2);
+ return super.emit(ev, ...data);
}
- constructor(list2 = []) {
- for (const item of list2) {
- this.push(item);
- }
+ [LSTAT]() {
+ import_fs11.default.lstat(this.absolute, (er, stat) => {
+ if (er) {
+ return this.emit("error", er);
+ }
+ this[ONLSTAT](stat);
+ });
}
- *[Symbol.iterator]() {
- for (let walker = this.head; walker; walker = walker.next) {
- yield walker.value;
+ [ONLSTAT](stat) {
+ this.statCache.set(this.absolute, stat);
+ this.stat = stat;
+ if (!stat.isFile()) {
+ stat.size = 0;
}
+ this.type = getType(stat);
+ this.emit("stat", stat);
+ this[PROCESS]();
}
- removeNode(node) {
- if (node.list !== this) {
- throw new Error("removing node which does not belong to this list");
- }
- const next = node.next;
- const prev = node.prev;
- if (next) {
- next.prev = prev;
- }
- if (prev) {
- prev.next = next;
- }
- if (node === this.head) {
- this.head = next;
- }
- if (node === this.tail) {
- this.tail = prev;
+ [PROCESS]() {
+ switch (this.type) {
+ case "File":
+ return this[FILE2]();
+ case "Directory":
+ return this[DIRECTORY2]();
+ case "SymbolicLink":
+ return this[SYMLINK2]();
+ // unsupported types are ignored.
+ default:
+ return this.end();
}
- this.length--;
- node.next = void 0;
- node.prev = void 0;
- node.list = void 0;
- return next;
}
- unshiftNode(node) {
- if (node === this.head) {
- return;
- }
- if (node.list) {
- node.list.removeNode(node);
- }
- const head = this.head;
- node.list = this;
- node.next = head;
- if (head) {
- head.prev = node;
- }
- this.head = node;
- if (!this.tail) {
- this.tail = node;
- }
- this.length++;
+ [MODE](mode) {
+ return modeFix(mode, this.type === "Directory", this.portable);
}
- pushNode(node) {
- if (node === this.tail) {
- return;
+ [PREFIX](path16) {
+ return prefixPath(path16, this.prefix);
+ }
+ [HEADER]() {
+ if (!this.stat) {
+ throw new Error("cannot write header before stat");
}
- if (node.list) {
- node.list.removeNode(node);
+ if (this.type === "Directory" && this.portable) {
+ this.noMtime = true;
}
- const tail = this.tail;
- node.list = this;
- node.prev = tail;
- if (tail) {
- tail.next = node;
+ this.onWriteEntry?.(this);
+ this.header = new Header({
+ path: this[PREFIX](this.path),
+ // only apply the prefix to hard links.
+ linkpath: this.type === "Link" && this.linkpath !== void 0 ? this[PREFIX](this.linkpath) : this.linkpath,
+ // only the permissions and setuid/setgid/sticky bitflags
+ // not the higher-order bits that specify file type
+ mode: this[MODE](this.stat.mode),
+ uid: this.portable ? void 0 : this.stat.uid,
+ gid: this.portable ? void 0 : this.stat.gid,
+ size: this.stat.size,
+ mtime: this.noMtime ? void 0 : this.mtime || this.stat.mtime,
+ /* c8 ignore next */
+ type: this.type === "Unsupported" ? void 0 : this.type,
+ uname: this.portable ? void 0 : this.stat.uid === this.myuid ? this.myuser : "",
+ atime: this.portable ? void 0 : this.stat.atime,
+ ctime: this.portable ? void 0 : this.stat.ctime
+ });
+ if (this.header.encode() && !this.noPax) {
+ super.write(new Pax({
+ atime: this.portable ? void 0 : this.header.atime,
+ ctime: this.portable ? void 0 : this.header.ctime,
+ gid: this.portable ? void 0 : this.header.gid,
+ mtime: this.noMtime ? void 0 : this.mtime || this.header.mtime,
+ path: this[PREFIX](this.path),
+ linkpath: this.type === "Link" && this.linkpath !== void 0 ? this[PREFIX](this.linkpath) : this.linkpath,
+ size: this.header.size,
+ uid: this.portable ? void 0 : this.header.uid,
+ uname: this.portable ? void 0 : this.header.uname,
+ dev: this.portable ? void 0 : this.stat.dev,
+ ino: this.portable ? void 0 : this.stat.ino,
+ nlink: this.portable ? void 0 : this.stat.nlink
+ }).encode());
}
- this.tail = node;
- if (!this.head) {
- this.head = node;
+ const block = this.header?.block;
+ if (!block) {
+ throw new Error("failed to encode header");
}
- this.length++;
+ super.write(block);
}
- push(...args) {
- for (let i = 0, l = args.length; i < l; i++) {
- push(this, args[i]);
+ [DIRECTORY2]() {
+ if (!this.stat) {
+ throw new Error("cannot create directory entry without stat");
}
- return this.length;
- }
- unshift(...args) {
- for (var i = 0, l = args.length; i < l; i++) {
- unshift(this, args[i]);
+ if (this.path.slice(-1) !== "/") {
+ this.path += "/";
}
- return this.length;
+ this.stat.size = 0;
+ this[HEADER]();
+ this.end();
}
- pop() {
- if (!this.tail) {
- return void 0;
- }
- const res = this.tail.value;
- const t = this.tail;
- this.tail = this.tail.prev;
- if (this.tail) {
- this.tail.next = void 0;
- } else {
- this.head = void 0;
- }
- t.list = void 0;
- this.length--;
- return res;
+ [SYMLINK2]() {
+ import_fs11.default.readlink(this.absolute, (er, linkpath) => {
+ if (er) {
+ return this.emit("error", er);
+ }
+ this[ONREADLINK](linkpath);
+ });
}
- shift() {
- if (!this.head) {
- return void 0;
- }
- const res = this.head.value;
- const h = this.head;
- this.head = this.head.next;
- if (this.head) {
- this.head.prev = void 0;
- } else {
- this.tail = void 0;
- }
- h.list = void 0;
- this.length--;
- return res;
+ [ONREADLINK](linkpath) {
+ this.linkpath = normalizeWindowsPath(linkpath);
+ this[HEADER]();
+ this.end();
}
- forEach(fn2, thisp) {
- thisp = thisp || this;
- for (let walker = this.head, i = 0; !!walker; i++) {
- fn2.call(thisp, walker.value, i, this);
- walker = walker.next;
+ [HARDLINK2](linkpath) {
+ if (!this.stat) {
+ throw new Error("cannot create link entry without stat");
}
+ this.type = "Link";
+ this.linkpath = normalizeWindowsPath(import_path9.default.relative(this.cwd, linkpath));
+ this.stat.size = 0;
+ this[HEADER]();
+ this.end();
}
- forEachReverse(fn2, thisp) {
- thisp = thisp || this;
- for (let walker = this.tail, i = this.length - 1; !!walker; i--) {
- fn2.call(thisp, walker.value, i, this);
- walker = walker.prev;
+ [FILE2]() {
+ if (!this.stat) {
+ throw new Error("cannot create file entry without stat");
}
- }
- get(n) {
- let i = 0;
- let walker = this.head;
- for (; !!walker && i < n; i++) {
- walker = walker.next;
+ if (this.stat.nlink > 1) {
+ const linkKey = `${this.stat.dev}:${this.stat.ino}`;
+ const linkpath = this.linkCache.get(linkKey);
+ if (linkpath?.indexOf(this.cwd) === 0) {
+ return this[HARDLINK2](linkpath);
+ }
+ this.linkCache.set(linkKey, this.absolute);
}
- if (i === n && !!walker) {
- return walker.value;
+ this[HEADER]();
+ if (this.stat.size === 0) {
+ return this.end();
}
+ this[OPENFILE]();
}
- getReverse(n) {
- let i = 0;
- let walker = this.tail;
- for (; !!walker && i < n; i++) {
- walker = walker.prev;
+ [OPENFILE]() {
+ import_fs11.default.open(this.absolute, "r", (er, fd) => {
+ if (er) {
+ return this.emit("error", er);
+ }
+ this[ONOPENFILE](fd);
+ });
+ }
+ [ONOPENFILE](fd) {
+ this.fd = fd;
+ if (this.#hadError) {
+ return this[CLOSE]();
}
- if (i === n && !!walker) {
- return walker.value;
+ if (!this.stat) {
+ throw new Error("should stat before calling onopenfile");
}
+ this.blockLen = 512 * Math.ceil(this.stat.size / 512);
+ this.blockRemain = this.blockLen;
+ const bufLen = Math.min(this.blockLen, this.maxReadSize);
+ this.buf = Buffer.allocUnsafe(bufLen);
+ this.offset = 0;
+ this.pos = 0;
+ this.remain = this.stat.size;
+ this.length = this.buf.length;
+ this[READ2]();
}
- map(fn2, thisp) {
- thisp = thisp || this;
- const res = new _Yallist();
- for (let walker = this.head; !!walker; ) {
- res.push(fn2.call(thisp, walker.value, this));
- walker = walker.next;
+ [READ2]() {
+ const { fd, buf, offset, length, pos: pos2 } = this;
+ if (fd === void 0 || buf === void 0) {
+ throw new Error("cannot read file without first opening");
}
- return res;
+ import_fs11.default.read(fd, buf, offset, length, pos2, (er, bytesRead) => {
+ if (er) {
+ return this[CLOSE](() => this.emit("error", er));
+ }
+ this[ONREAD](bytesRead);
+ });
}
- mapReverse(fn2, thisp) {
- thisp = thisp || this;
- var res = new _Yallist();
- for (let walker = this.tail; !!walker; ) {
- res.push(fn2.call(thisp, walker.value, this));
- walker = walker.prev;
- }
- return res;
+ /* c8 ignore start */
+ [CLOSE](cb = () => {
+ }) {
+ if (this.fd !== void 0)
+ import_fs11.default.close(this.fd, cb);
}
- reduce(fn2, initial) {
- let acc;
- let walker = this.head;
- if (arguments.length > 1) {
- acc = initial;
- } else if (this.head) {
- walker = this.head.next;
- acc = this.head.value;
- } else {
- throw new TypeError("Reduce of empty list with no initial value");
- }
- for (var i = 0; !!walker; i++) {
- acc = fn2(acc, walker.value, i);
- walker = walker.next;
+ [ONREAD](bytesRead) {
+ if (bytesRead <= 0 && this.remain > 0) {
+ const er = Object.assign(new Error("encountered unexpected EOF"), {
+ path: this.absolute,
+ syscall: "read",
+ code: "EOF"
+ });
+ return this[CLOSE](() => this.emit("error", er));
}
- return acc;
- }
- reduceReverse(fn2, initial) {
- let acc;
- let walker = this.tail;
- if (arguments.length > 1) {
- acc = initial;
- } else if (this.tail) {
- walker = this.tail.prev;
- acc = this.tail.value;
- } else {
- throw new TypeError("Reduce of empty list with no initial value");
+ if (bytesRead > this.remain) {
+ const er = Object.assign(new Error("did not encounter expected EOF"), {
+ path: this.absolute,
+ syscall: "read",
+ code: "EOF"
+ });
+ return this[CLOSE](() => this.emit("error", er));
}
- for (let i = this.length - 1; !!walker; i--) {
- acc = fn2(acc, walker.value, i);
- walker = walker.prev;
+ if (!this.buf) {
+ throw new Error("should have created buffer prior to reading");
}
- return acc;
- }
- toArray() {
- const arr = new Array(this.length);
- for (let i = 0, walker = this.head; !!walker; i++) {
- arr[i] = walker.value;
- walker = walker.next;
+ if (bytesRead === this.remain) {
+ for (let i = bytesRead; i < this.length && bytesRead < this.blockRemain; i++) {
+ this.buf[i + this.offset] = 0;
+ bytesRead++;
+ this.remain++;
+ }
}
- return arr;
- }
- toArrayReverse() {
- const arr = new Array(this.length);
- for (let i = 0, walker = this.tail; !!walker; i++) {
- arr[i] = walker.value;
- walker = walker.prev;
+ const chunk = this.offset === 0 && bytesRead === this.buf.length ? this.buf : this.buf.subarray(this.offset, this.offset + bytesRead);
+ const flushed = this.write(chunk);
+ if (!flushed) {
+ this[AWAITDRAIN](() => this[ONDRAIN]());
+ } else {
+ this[ONDRAIN]();
}
- return arr;
}
- slice(from = 0, to = this.length) {
- if (to < 0) {
- to += this.length;
- }
- if (from < 0) {
- from += this.length;
+ [AWAITDRAIN](cb) {
+ this.once("drain", cb);
+ }
+ write(chunk, encoding, cb) {
+ if (typeof encoding === "function") {
+ cb = encoding;
+ encoding = void 0;
}
- const ret = new _Yallist();
- if (to < from || to < 0) {
- return ret;
+ if (typeof chunk === "string") {
+ chunk = Buffer.from(chunk, typeof encoding === "string" ? encoding : "utf8");
}
- if (from < 0) {
- from = 0;
+ if (this.blockRemain < chunk.length) {
+ const er = Object.assign(new Error("writing more data than expected"), {
+ path: this.absolute
+ });
+ return this.emit("error", er);
}
- if (to > this.length) {
- to = this.length;
+ this.remain -= chunk.length;
+ this.blockRemain -= chunk.length;
+ this.pos += chunk.length;
+ this.offset += chunk.length;
+ return super.write(chunk, null, cb);
+ }
+ [ONDRAIN]() {
+ if (!this.remain) {
+ if (this.blockRemain) {
+ super.write(Buffer.alloc(this.blockRemain));
+ }
+ return this[CLOSE]((er) => er ? this.emit("error", er) : this.end());
}
- let walker = this.head;
- let i = 0;
- for (i = 0; !!walker && i < from; i++) {
- walker = walker.next;
+ if (!this.buf) {
+ throw new Error("buffer lost somehow in ONDRAIN");
}
- for (; !!walker && i < to; i++, walker = walker.next) {
- ret.push(walker.value);
+ if (this.offset >= this.length) {
+ this.buf = Buffer.allocUnsafe(Math.min(this.blockRemain, this.buf.length));
+ this.offset = 0;
}
- return ret;
+ this.length = this.buf.length - this.offset;
+ this[READ2]();
}
- sliceReverse(from = 0, to = this.length) {
- if (to < 0) {
- to += this.length;
+ };
+ WriteEntrySync = class extends WriteEntry {
+ sync = true;
+ [LSTAT]() {
+ this[ONLSTAT](import_fs11.default.lstatSync(this.absolute));
+ }
+ [SYMLINK2]() {
+ this[ONREADLINK](import_fs11.default.readlinkSync(this.absolute));
+ }
+ [OPENFILE]() {
+ this[ONOPENFILE](import_fs11.default.openSync(this.absolute, "r"));
+ }
+ [READ2]() {
+ let threw = true;
+ try {
+ const { fd, buf, offset, length, pos: pos2 } = this;
+ if (fd === void 0 || buf === void 0) {
+ throw new Error("fd and buf must be set in READ method");
+ }
+ const bytesRead = import_fs11.default.readSync(fd, buf, offset, length, pos2);
+ this[ONREAD](bytesRead);
+ threw = false;
+ } finally {
+ if (threw) {
+ try {
+ this[CLOSE](() => {
+ });
+ } catch {
+ }
+ }
}
- if (from < 0) {
- from += this.length;
+ }
+ [AWAITDRAIN](cb) {
+ cb();
+ }
+ /* c8 ignore start */
+ [CLOSE](cb = () => {
+ }) {
+ if (this.fd !== void 0)
+ import_fs11.default.closeSync(this.fd);
+ cb();
+ }
+ };
+ WriteEntryTar = class extends Minipass {
+ blockLen = 0;
+ blockRemain = 0;
+ buf = 0;
+ pos = 0;
+ remain = 0;
+ length = 0;
+ preservePaths;
+ portable;
+ strict;
+ noPax;
+ noMtime;
+ readEntry;
+ type;
+ prefix;
+ path;
+ mode;
+ uid;
+ gid;
+ uname;
+ gname;
+ header;
+ mtime;
+ atime;
+ ctime;
+ linkpath;
+ size;
+ onWriteEntry;
+ warn(code2, message, data = {}) {
+ return warnMethod(this, code2, message, data);
+ }
+ constructor(readEntry, opt_ = {}) {
+ const opt = dealias(opt_);
+ super();
+ this.preservePaths = !!opt.preservePaths;
+ this.portable = !!opt.portable;
+ this.strict = !!opt.strict;
+ this.noPax = !!opt.noPax;
+ this.noMtime = !!opt.noMtime;
+ this.onWriteEntry = opt.onWriteEntry;
+ this.readEntry = readEntry;
+ const { type } = readEntry;
+ if (type === "Unsupported") {
+ throw new Error("writing entry that should be ignored");
}
- const ret = new _Yallist();
- if (to < from || to < 0) {
- return ret;
+ this.type = type;
+ if (this.type === "Directory" && this.portable) {
+ this.noMtime = true;
}
- if (from < 0) {
- from = 0;
+ this.prefix = opt.prefix;
+ this.path = normalizeWindowsPath(readEntry.path);
+ this.mode = readEntry.mode !== void 0 ? this[MODE](readEntry.mode) : void 0;
+ this.uid = this.portable ? void 0 : readEntry.uid;
+ this.gid = this.portable ? void 0 : readEntry.gid;
+ this.uname = this.portable ? void 0 : readEntry.uname;
+ this.gname = this.portable ? void 0 : readEntry.gname;
+ this.size = readEntry.size;
+ this.mtime = this.noMtime ? void 0 : opt.mtime || readEntry.mtime;
+ this.atime = this.portable ? void 0 : readEntry.atime;
+ this.ctime = this.portable ? void 0 : readEntry.ctime;
+ this.linkpath = readEntry.linkpath !== void 0 ? normalizeWindowsPath(readEntry.linkpath) : void 0;
+ if (typeof opt.onwarn === "function") {
+ this.on("warn", opt.onwarn);
}
- if (to > this.length) {
- to = this.length;
+ let pathWarn = false;
+ if (!this.preservePaths) {
+ const [root, stripped] = stripAbsolutePath(this.path);
+ if (root && typeof stripped === "string") {
+ this.path = stripped;
+ pathWarn = root;
+ }
}
- let i = this.length;
- let walker = this.tail;
- for (; !!walker && i > to; i--) {
- walker = walker.prev;
+ this.remain = readEntry.size;
+ this.blockRemain = readEntry.startBlockSize;
+ this.onWriteEntry?.(this);
+ this.header = new Header({
+ path: this[PREFIX](this.path),
+ linkpath: this.type === "Link" && this.linkpath !== void 0 ? this[PREFIX](this.linkpath) : this.linkpath,
+ // only the permissions and setuid/setgid/sticky bitflags
+ // not the higher-order bits that specify file type
+ mode: this.mode,
+ uid: this.portable ? void 0 : this.uid,
+ gid: this.portable ? void 0 : this.gid,
+ size: this.size,
+ mtime: this.noMtime ? void 0 : this.mtime,
+ type: this.type,
+ uname: this.portable ? void 0 : this.uname,
+ atime: this.portable ? void 0 : this.atime,
+ ctime: this.portable ? void 0 : this.ctime
+ });
+ if (pathWarn) {
+ this.warn("TAR_ENTRY_INFO", `stripping ${pathWarn} from absolute path`, {
+ entry: this,
+ path: pathWarn + this.path
+ });
}
- for (; !!walker && i > from; i--, walker = walker.prev) {
- ret.push(walker.value);
+ if (this.header.encode() && !this.noPax) {
+ super.write(new Pax({
+ atime: this.portable ? void 0 : this.atime,
+ ctime: this.portable ? void 0 : this.ctime,
+ gid: this.portable ? void 0 : this.gid,
+ mtime: this.noMtime ? void 0 : this.mtime,
+ path: this[PREFIX](this.path),
+ linkpath: this.type === "Link" && this.linkpath !== void 0 ? this[PREFIX](this.linkpath) : this.linkpath,
+ size: this.size,
+ uid: this.portable ? void 0 : this.uid,
+ uname: this.portable ? void 0 : this.uname,
+ dev: this.portable ? void 0 : this.readEntry.dev,
+ ino: this.portable ? void 0 : this.readEntry.ino,
+ nlink: this.portable ? void 0 : this.readEntry.nlink
+ }).encode());
}
- return ret;
+ const b = this.header?.block;
+ if (!b)
+ throw new Error("failed to encode header");
+ super.write(b);
+ readEntry.pipe(this);
}
- splice(start, deleteCount = 0, ...nodes) {
- if (start > this.length) {
- start = this.length - 1;
+ [PREFIX](path16) {
+ return prefixPath(path16, this.prefix);
+ }
+ [MODE](mode) {
+ return modeFix(mode, this.type === "Directory", this.portable);
+ }
+ write(chunk, encoding, cb) {
+ if (typeof encoding === "function") {
+ cb = encoding;
+ encoding = void 0;
}
- if (start < 0) {
- start = this.length + start;
+ if (typeof chunk === "string") {
+ chunk = Buffer.from(chunk, typeof encoding === "string" ? encoding : "utf8");
}
- let walker = this.head;
- for (let i = 0; !!walker && i < start; i++) {
- walker = walker.next;
+ const writeLen = chunk.length;
+ if (writeLen > this.blockRemain) {
+ throw new Error("writing more to entry than is appropriate");
}
- const ret = [];
- for (let i = 0; !!walker && i < deleteCount; i++) {
- ret.push(walker.value);
- walker = this.removeNode(walker);
+ this.blockRemain -= writeLen;
+ return super.write(chunk, cb);
+ }
+ end(chunk, encoding, cb) {
+ if (this.blockRemain) {
+ super.write(Buffer.alloc(this.blockRemain));
}
- if (!walker) {
- walker = this.tail;
- } else if (walker !== this.tail) {
- walker = walker.prev;
+ if (typeof chunk === "function") {
+ cb = chunk;
+ encoding = void 0;
+ chunk = void 0;
}
- for (const v of nodes) {
- walker = insertAfter(this, walker, v);
+ if (typeof encoding === "function") {
+ cb = encoding;
+ encoding = void 0;
}
- return ret;
- }
- reverse() {
- const head = this.head;
- const tail = this.tail;
- for (let walker = head; !!walker; walker = walker.prev) {
- const p = walker.prev;
- walker.prev = walker.next;
- walker.next = p;
+ if (typeof chunk === "string") {
+ chunk = Buffer.from(chunk, encoding ?? "utf8");
}
- this.head = tail;
- this.tail = head;
+ if (cb)
+ this.once("finish", cb);
+ if (chunk)
+ super.end(chunk, cb);
+ else
+ super.end(cb);
return this;
}
};
- Node = class {
- list;
- next;
- prev;
- value;
- constructor(value, prev, next, list2) {
- this.list = list2;
- this.value = value;
- if (prev) {
- prev.next = this;
- this.prev = prev;
- } else {
- this.prev = void 0;
- }
- if (next) {
- next.prev = this;
- this.next = next;
- } else {
- this.next = void 0;
- }
- }
- };
+ getType = (stat) => stat.isFile() ? "File" : stat.isDirectory() ? "Directory" : stat.isSymbolicLink() ? "SymbolicLink" : "Unsupported";
}
});
-// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/pack.js
-var import_fs12, import_path10, PackJob, EOF2, ONSTAT, ENDED3, QUEUE2, CURRENT, PROCESS2, PROCESSING, PROCESSJOB, JOBS, JOBDONE, ADDFSENTRY, ADDTARENTRY, STAT, READDIR, ONREADDIR, PIPE, ENTRY, ENTRYOPT, WRITEENTRYCLASS, WRITE, ONDRAIN2, Pack, PackSync;
-var init_pack = __esm({
- ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/pack.js"() {
- import_fs12 = __toESM(require("fs"), 1);
- init_write_entry();
- init_esm();
- init_esm3();
- init_esm5();
- init_read_entry();
- init_warn_method();
- import_path10 = __toESM(require("path"), 1);
- init_normalize_windows_path();
- PackJob = class {
- path;
- absolute;
- entry;
- stat;
- readdir;
- pending = false;
- ignore = false;
- piped = false;
- constructor(path16, absolute) {
- this.path = path16 || "./";
- this.absolute = absolute;
+// node_modules/yallist/dist/esm/index.js
+function insertAfter(self2, node, value) {
+ const prev = node;
+ const next = node ? node.next : self2.head;
+ const inserted = new Node(value, prev, next, self2);
+ if (inserted.next === void 0) {
+ self2.tail = inserted;
+ }
+ if (inserted.prev === void 0) {
+ self2.head = inserted;
+ }
+ self2.length++;
+ return inserted;
+}
+function push(self2, item) {
+ self2.tail = new Node(item, self2.tail, void 0, self2);
+ if (!self2.head) {
+ self2.head = self2.tail;
+ }
+ self2.length++;
+}
+function unshift(self2, item) {
+ self2.head = new Node(item, void 0, self2.head, self2);
+ if (!self2.tail) {
+ self2.tail = self2.head;
+ }
+ self2.length++;
+}
+var Yallist, Node;
+var init_esm5 = __esm({
+ "node_modules/yallist/dist/esm/index.js"() {
+ Yallist = class _Yallist {
+ tail;
+ head;
+ length = 0;
+ static create(list2 = []) {
+ return new _Yallist(list2);
}
- };
- EOF2 = Buffer.alloc(1024);
- ONSTAT = Symbol("onStat");
- ENDED3 = Symbol("ended");
- QUEUE2 = Symbol("queue");
- CURRENT = Symbol("current");
- PROCESS2 = Symbol("process");
- PROCESSING = Symbol("processing");
- PROCESSJOB = Symbol("processJob");
- JOBS = Symbol("jobs");
- JOBDONE = Symbol("jobDone");
- ADDFSENTRY = Symbol("addFSEntry");
- ADDTARENTRY = Symbol("addTarEntry");
- STAT = Symbol("stat");
- READDIR = Symbol("readdir");
- ONREADDIR = Symbol("onreaddir");
- PIPE = Symbol("pipe");
- ENTRY = Symbol("entry");
- ENTRYOPT = Symbol("entryOpt");
- WRITEENTRYCLASS = Symbol("writeEntryClass");
- WRITE = Symbol("write");
- ONDRAIN2 = Symbol("ondrain");
- Pack = class extends Minipass {
- sync = false;
- opt;
- cwd;
- maxReadSize;
- preservePaths;
- strict;
- noPax;
- prefix;
- linkCache;
- statCache;
- file;
- portable;
- zip;
- readdirCache;
- noDirRecurse;
- follow;
- noMtime;
- mtime;
- filter;
- jobs;
- [WRITEENTRYCLASS];
- onWriteEntry;
- // Note: we actually DO need a linked list here, because we
- // shift() to update the head of the list where we start, but still
- // while that happens, need to know what the next item in the queue
- // will be. Since we do multiple jobs in parallel, it's not as simple
- // as just an Array.shift(), since that would lose the information about
- // the next job in the list. We could add a .next field on the PackJob
- // class, but then we'd have to be tracking the tail of the queue the
- // whole time, and Yallist just does that for us anyway.
- [QUEUE2];
- [JOBS] = 0;
- [PROCESSING] = false;
- [ENDED3] = false;
- constructor(opt = {}) {
- super();
- this.opt = opt;
- this.file = opt.file || "";
- this.cwd = opt.cwd || process.cwd();
- this.maxReadSize = opt.maxReadSize;
- this.preservePaths = !!opt.preservePaths;
- this.strict = !!opt.strict;
- this.noPax = !!opt.noPax;
- this.prefix = normalizeWindowsPath(opt.prefix || "");
- this.linkCache = opt.linkCache || /* @__PURE__ */ new Map();
- this.statCache = opt.statCache || /* @__PURE__ */ new Map();
- this.readdirCache = opt.readdirCache || /* @__PURE__ */ new Map();
- this.onWriteEntry = opt.onWriteEntry;
- this[WRITEENTRYCLASS] = WriteEntry;
- if (typeof opt.onwarn === "function") {
- this.on("warn", opt.onwarn);
+ constructor(list2 = []) {
+ for (const item of list2) {
+ this.push(item);
}
- this.portable = !!opt.portable;
- if (opt.gzip || opt.brotli || opt.zstd) {
- if ((opt.gzip ? 1 : 0) + (opt.brotli ? 1 : 0) + (opt.zstd ? 1 : 0) > 1) {
- throw new TypeError("gzip, brotli, zstd are mutually exclusive");
- }
- if (opt.gzip) {
- if (typeof opt.gzip !== "object") {
- opt.gzip = {};
- }
- if (this.portable) {
- opt.gzip.portable = true;
- }
- this.zip = new Gzip(opt.gzip);
- }
- if (opt.brotli) {
- if (typeof opt.brotli !== "object") {
- opt.brotli = {};
- }
- this.zip = new BrotliCompress(opt.brotli);
- }
- if (opt.zstd) {
- if (typeof opt.zstd !== "object") {
- opt.zstd = {};
- }
- this.zip = new ZstdCompress(opt.zstd);
- }
- if (!this.zip)
- throw new Error("impossible");
- const zip = this.zip;
- zip.on("data", (chunk) => super.write(chunk));
- zip.on("end", () => super.end());
- zip.on("drain", () => this[ONDRAIN2]());
- this.on("resume", () => zip.resume());
- } else {
- this.on("drain", this[ONDRAIN2]);
+ }
+ *[Symbol.iterator]() {
+ for (let walker = this.head; walker; walker = walker.next) {
+ yield walker.value;
+ }
+ }
+ removeNode(node) {
+ if (node.list !== this) {
+ throw new Error("removing node which does not belong to this list");
+ }
+ const next = node.next;
+ const prev = node.prev;
+ if (next) {
+ next.prev = prev;
+ }
+ if (prev) {
+ prev.next = next;
+ }
+ if (node === this.head) {
+ this.head = next;
}
- this.noDirRecurse = !!opt.noDirRecurse;
- this.follow = !!opt.follow;
- this.noMtime = !!opt.noMtime;
- if (opt.mtime)
- this.mtime = opt.mtime;
- this.filter = typeof opt.filter === "function" ? opt.filter : () => true;
- this[QUEUE2] = new Yallist();
- this[JOBS] = 0;
- this.jobs = Number(opt.jobs) || 4;
- this[PROCESSING] = false;
- this[ENDED3] = false;
- }
- [WRITE](chunk) {
- return super.write(chunk);
+ if (node === this.tail) {
+ this.tail = prev;
+ }
+ this.length--;
+ node.next = void 0;
+ node.prev = void 0;
+ node.list = void 0;
+ return next;
}
- add(path16) {
- this.write(path16);
- return this;
+ unshiftNode(node) {
+ if (node === this.head) {
+ return;
+ }
+ if (node.list) {
+ node.list.removeNode(node);
+ }
+ const head = this.head;
+ node.list = this;
+ node.next = head;
+ if (head) {
+ head.prev = node;
+ }
+ this.head = node;
+ if (!this.tail) {
+ this.tail = node;
+ }
+ this.length++;
}
- end(path16, encoding, cb) {
- if (typeof path16 === "function") {
- cb = path16;
- path16 = void 0;
+ pushNode(node) {
+ if (node === this.tail) {
+ return;
}
- if (typeof encoding === "function") {
- cb = encoding;
- encoding = void 0;
+ if (node.list) {
+ node.list.removeNode(node);
}
- if (path16) {
- this.add(path16);
+ const tail = this.tail;
+ node.list = this;
+ node.prev = tail;
+ if (tail) {
+ tail.next = node;
}
- this[ENDED3] = true;
- this[PROCESS2]();
- if (cb)
- cb();
- return this;
+ this.tail = node;
+ if (!this.head) {
+ this.head = node;
+ }
+ this.length++;
}
- write(path16) {
- if (this[ENDED3]) {
- throw new Error("write after end");
+ push(...args) {
+ for (let i = 0, l = args.length; i < l; i++) {
+ push(this, args[i]);
}
- if (path16 instanceof ReadEntry) {
- this[ADDTARENTRY](path16);
+ return this.length;
+ }
+ unshift(...args) {
+ for (var i = 0, l = args.length; i < l; i++) {
+ unshift(this, args[i]);
+ }
+ return this.length;
+ }
+ pop() {
+ if (!this.tail) {
+ return void 0;
+ }
+ const res = this.tail.value;
+ const t = this.tail;
+ this.tail = this.tail.prev;
+ if (this.tail) {
+ this.tail.next = void 0;
} else {
- this[ADDFSENTRY](path16);
+ this.head = void 0;
}
- return this.flowing;
+ t.list = void 0;
+ this.length--;
+ return res;
}
- [ADDTARENTRY](p) {
- const absolute = normalizeWindowsPath(import_path10.default.resolve(this.cwd, p.path));
- if (!this.filter(p.path, p)) {
- p.resume();
+ shift() {
+ if (!this.head) {
+ return void 0;
+ }
+ const res = this.head.value;
+ const h = this.head;
+ this.head = this.head.next;
+ if (this.head) {
+ this.head.prev = void 0;
} else {
- const job = new PackJob(p.path, absolute);
- job.entry = new WriteEntryTar(p, this[ENTRYOPT](job));
- job.entry.on("end", () => this[JOBDONE](job));
- this[JOBS] += 1;
- this[QUEUE2].push(job);
+ this.tail = void 0;
}
- this[PROCESS2]();
+ h.list = void 0;
+ this.length--;
+ return res;
}
- [ADDFSENTRY](p) {
- const absolute = normalizeWindowsPath(import_path10.default.resolve(this.cwd, p));
- this[QUEUE2].push(new PackJob(p, absolute));
- this[PROCESS2]();
+ forEach(fn2, thisp) {
+ thisp = thisp || this;
+ for (let walker = this.head, i = 0; !!walker; i++) {
+ fn2.call(thisp, walker.value, i, this);
+ walker = walker.next;
+ }
}
- [STAT](job) {
- job.pending = true;
- this[JOBS] += 1;
- const stat = this.follow ? "stat" : "lstat";
- import_fs12.default[stat](job.absolute, (er, stat2) => {
- job.pending = false;
- this[JOBS] -= 1;
- if (er) {
- this.emit("error", er);
- } else {
- this[ONSTAT](job, stat2);
- }
- });
+ forEachReverse(fn2, thisp) {
+ thisp = thisp || this;
+ for (let walker = this.tail, i = this.length - 1; !!walker; i--) {
+ fn2.call(thisp, walker.value, i, this);
+ walker = walker.prev;
+ }
}
- [ONSTAT](job, stat) {
- this.statCache.set(job.absolute, stat);
- job.stat = stat;
- if (!this.filter(job.path, stat)) {
- job.ignore = true;
- } else if (stat.isFile() && stat.nlink > 1 && job === this[CURRENT] && !this.linkCache.get(`${stat.dev}:${stat.ino}`) && !this.sync) {
- this[PROCESSJOB](job);
+ get(n) {
+ let i = 0;
+ let walker = this.head;
+ for (; !!walker && i < n; i++) {
+ walker = walker.next;
+ }
+ if (i === n && !!walker) {
+ return walker.value;
}
- this[PROCESS2]();
}
- [READDIR](job) {
- job.pending = true;
- this[JOBS] += 1;
- import_fs12.default.readdir(job.absolute, (er, entries) => {
- job.pending = false;
- this[JOBS] -= 1;
- if (er) {
- return this.emit("error", er);
- }
- this[ONREADDIR](job, entries);
- });
+ getReverse(n) {
+ let i = 0;
+ let walker = this.tail;
+ for (; !!walker && i < n; i++) {
+ walker = walker.prev;
+ }
+ if (i === n && !!walker) {
+ return walker.value;
+ }
}
- [ONREADDIR](job, entries) {
- this.readdirCache.set(job.absolute, entries);
- job.readdir = entries;
- this[PROCESS2]();
+ map(fn2, thisp) {
+ thisp = thisp || this;
+ const res = new _Yallist();
+ for (let walker = this.head; !!walker; ) {
+ res.push(fn2.call(thisp, walker.value, this));
+ walker = walker.next;
+ }
+ return res;
}
- [PROCESS2]() {
- if (this[PROCESSING]) {
- return;
+ mapReverse(fn2, thisp) {
+ thisp = thisp || this;
+ var res = new _Yallist();
+ for (let walker = this.tail; !!walker; ) {
+ res.push(fn2.call(thisp, walker.value, this));
+ walker = walker.prev;
}
- this[PROCESSING] = true;
- for (let w = this[QUEUE2].head; !!w && this[JOBS] < this.jobs; w = w.next) {
- this[PROCESSJOB](w.value);
- if (w.value.ignore) {
- const p = w.next;
- this[QUEUE2].removeNode(w);
- w.next = p;
- }
+ return res;
+ }
+ reduce(fn2, initial) {
+ let acc;
+ let walker = this.head;
+ if (arguments.length > 1) {
+ acc = initial;
+ } else if (this.head) {
+ walker = this.head.next;
+ acc = this.head.value;
+ } else {
+ throw new TypeError("Reduce of empty list with no initial value");
}
- this[PROCESSING] = false;
- if (this[ENDED3] && !this[QUEUE2].length && this[JOBS] === 0) {
- if (this.zip) {
- this.zip.end(EOF2);
- } else {
- super.write(EOF2);
- super.end();
- }
+ for (var i = 0; !!walker; i++) {
+ acc = fn2(acc, walker.value, i);
+ walker = walker.next;
}
+ return acc;
}
- get [CURRENT]() {
- return this[QUEUE2] && this[QUEUE2].head && this[QUEUE2].head.value;
+ reduceReverse(fn2, initial) {
+ let acc;
+ let walker = this.tail;
+ if (arguments.length > 1) {
+ acc = initial;
+ } else if (this.tail) {
+ walker = this.tail.prev;
+ acc = this.tail.value;
+ } else {
+ throw new TypeError("Reduce of empty list with no initial value");
+ }
+ for (let i = this.length - 1; !!walker; i--) {
+ acc = fn2(acc, walker.value, i);
+ walker = walker.prev;
+ }
+ return acc;
}
- [JOBDONE](_job) {
- this[QUEUE2].shift();
- this[JOBS] -= 1;
- this[PROCESS2]();
+ toArray() {
+ const arr = new Array(this.length);
+ for (let i = 0, walker = this.head; !!walker; i++) {
+ arr[i] = walker.value;
+ walker = walker.next;
+ }
+ return arr;
}
- [PROCESSJOB](job) {
- if (job.pending) {
- return;
+ toArrayReverse() {
+ const arr = new Array(this.length);
+ for (let i = 0, walker = this.tail; !!walker; i++) {
+ arr[i] = walker.value;
+ walker = walker.prev;
}
- if (job.entry) {
- if (job === this[CURRENT] && !job.piped) {
- this[PIPE](job);
- }
- return;
+ return arr;
+ }
+ slice(from = 0, to = this.length) {
+ if (to < 0) {
+ to += this.length;
}
- if (!job.stat) {
- const sc = this.statCache.get(job.absolute);
- if (sc) {
- this[ONSTAT](job, sc);
- } else {
- this[STAT](job);
- }
+ if (from < 0) {
+ from += this.length;
}
- if (!job.stat) {
- return;
+ const ret = new _Yallist();
+ if (to < from || to < 0) {
+ return ret;
}
- if (job.ignore) {
- return;
+ if (from < 0) {
+ from = 0;
}
- if (!this.noDirRecurse && job.stat.isDirectory() && !job.readdir) {
- const rc = this.readdirCache.get(job.absolute);
- if (rc) {
- this[ONREADDIR](job, rc);
- } else {
- this[READDIR](job);
- }
- if (!job.readdir) {
- return;
- }
+ if (to > this.length) {
+ to = this.length;
}
- job.entry = this[ENTRY](job);
- if (!job.entry) {
- job.ignore = true;
- return;
+ let walker = this.head;
+ let i = 0;
+ for (i = 0; !!walker && i < from; i++) {
+ walker = walker.next;
}
- if (job === this[CURRENT] && !job.piped) {
- this[PIPE](job);
+ for (; !!walker && i < to; i++, walker = walker.next) {
+ ret.push(walker.value);
}
+ return ret;
}
- [ENTRYOPT](job) {
- return {
- onwarn: (code2, msg, data) => this.warn(code2, msg, data),
- noPax: this.noPax,
- cwd: this.cwd,
- absolute: job.absolute,
- preservePaths: this.preservePaths,
- maxReadSize: this.maxReadSize,
- strict: this.strict,
- portable: this.portable,
- linkCache: this.linkCache,
- statCache: this.statCache,
- noMtime: this.noMtime,
- mtime: this.mtime,
- prefix: this.prefix,
- onWriteEntry: this.onWriteEntry
- };
- }
- [ENTRY](job) {
- this[JOBS] += 1;
- try {
- const e = new this[WRITEENTRYCLASS](job.path, this[ENTRYOPT](job));
- return e.on("end", () => this[JOBDONE](job)).on("error", (er) => this.emit("error", er));
- } catch (er) {
- this.emit("error", er);
+ sliceReverse(from = 0, to = this.length) {
+ if (to < 0) {
+ to += this.length;
}
- }
- [ONDRAIN2]() {
- if (this[CURRENT] && this[CURRENT].entry) {
- this[CURRENT].entry.resume();
+ if (from < 0) {
+ from += this.length;
}
- }
- // like .pipe() but using super, because our write() is special
- [PIPE](job) {
- job.piped = true;
- if (job.readdir) {
- job.readdir.forEach((entry) => {
- const p = job.path;
- const base = p === "./" ? "" : p.replace(/\/*$/, "/");
- this[ADDFSENTRY](base + entry);
- });
+ const ret = new _Yallist();
+ if (to < from || to < 0) {
+ return ret;
}
- const source = job.entry;
- const zip = this.zip;
- if (!source)
- throw new Error("cannot pipe without source");
- if (zip) {
- source.on("data", (chunk) => {
- if (!zip.write(chunk)) {
- source.pause();
- }
- });
- } else {
- source.on("data", (chunk) => {
- if (!super.write(chunk)) {
- source.pause();
- }
- });
+ if (from < 0) {
+ from = 0;
}
- }
- pause() {
- if (this.zip) {
- this.zip.pause();
+ if (to > this.length) {
+ to = this.length;
}
- return super.pause();
- }
- warn(code2, message, data = {}) {
- warnMethod(this, code2, message, data);
- }
- };
- PackSync = class extends Pack {
- sync = true;
- constructor(opt) {
- super(opt);
- this[WRITEENTRYCLASS] = WriteEntrySync;
- }
- // pause/resume are no-ops in sync streams.
- pause() {
- }
- resume() {
- }
- [STAT](job) {
- const stat = this.follow ? "statSync" : "lstatSync";
- this[ONSTAT](job, import_fs12.default[stat](job.absolute));
- }
- [READDIR](job) {
- this[ONREADDIR](job, import_fs12.default.readdirSync(job.absolute));
+ let i = this.length;
+ let walker = this.tail;
+ for (; !!walker && i > to; i--) {
+ walker = walker.prev;
+ }
+ for (; !!walker && i > from; i--, walker = walker.prev) {
+ ret.push(walker.value);
+ }
+ return ret;
}
- // gotta get it all in this tick
- [PIPE](job) {
- const source = job.entry;
- const zip = this.zip;
- if (job.readdir) {
- job.readdir.forEach((entry) => {
- const p = job.path;
- const base = p === "./" ? "" : p.replace(/\/*$/, "/");
- this[ADDFSENTRY](base + entry);
- });
+ splice(start, deleteCount = 0, ...nodes) {
+ if (start > this.length) {
+ start = this.length - 1;
}
- if (!source)
- throw new Error("Cannot pipe without source");
- if (zip) {
- source.on("data", (chunk) => {
- zip.write(chunk);
- });
- } else {
- source.on("data", (chunk) => {
- super[WRITE](chunk);
- });
+ if (start < 0) {
+ start = this.length + start;
+ }
+ let walker = this.head;
+ for (let i = 0; !!walker && i < start; i++) {
+ walker = walker.next;
+ }
+ const ret = [];
+ for (let i = 0; !!walker && i < deleteCount; i++) {
+ ret.push(walker.value);
+ walker = this.removeNode(walker);
+ }
+ if (!walker) {
+ walker = this.tail;
+ } else if (walker !== this.tail) {
+ walker = walker.prev;
}
+ for (const v of nodes) {
+ walker = insertAfter(this, walker, v);
+ }
+ return ret;
+ }
+ reverse() {
+ const head = this.head;
+ const tail = this.tail;
+ for (let walker = head; !!walker; walker = walker.prev) {
+ const p = walker.prev;
+ walker.prev = walker.next;
+ walker.next = p;
+ }
+ this.head = tail;
+ this.tail = head;
+ return this;
}
};
- }
-});
-
-// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/create.js
-var create_exports = {};
-__export(create_exports, {
- create: () => create
-});
-var import_node_path8, createFileSync, createFile, addFilesSync, addFilesAsync, createSync, createAsync, create;
-var init_create = __esm({
- ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/create.js"() {
- init_esm2();
- import_node_path8 = __toESM(require("node:path"), 1);
- init_list();
- init_make_command();
- init_pack();
- createFileSync = (opt, files) => {
- const p = new PackSync(opt);
- const stream = new WriteStreamSync(opt.file, {
- mode: opt.mode || 438
- });
- p.pipe(stream);
- addFilesSync(p, files);
- };
- createFile = (opt, files) => {
- const p = new Pack(opt);
- const stream = new WriteStream(opt.file, {
- mode: opt.mode || 438
- });
- p.pipe(stream);
- const promise = new Promise((res, rej) => {
- stream.on("error", rej);
- stream.on("close", res);
- p.on("error", rej);
- });
- addFilesAsync(p, files);
- return promise;
- };
- addFilesSync = (p, files) => {
- files.forEach((file) => {
- if (file.charAt(0) === "@") {
- list({
- file: import_node_path8.default.resolve(p.cwd, file.slice(1)),
- sync: true,
- noResume: true,
- onReadEntry: (entry) => p.add(entry)
- });
+ Node = class {
+ list;
+ next;
+ prev;
+ value;
+ constructor(value, prev, next, list2) {
+ this.list = list2;
+ this.value = value;
+ if (prev) {
+ prev.next = this;
+ this.prev = prev;
} else {
- p.add(file);
+ this.prev = void 0;
}
- });
- p.end();
- };
- addFilesAsync = async (p, files) => {
- for (let i = 0; i < files.length; i++) {
- const file = String(files[i]);
- if (file.charAt(0) === "@") {
- await list({
- file: import_node_path8.default.resolve(String(p.cwd), file.slice(1)),
- noResume: true,
- onReadEntry: (entry) => {
- p.add(entry);
- }
- });
+ if (next) {
+ next.prev = this;
+ this.next = next;
} else {
- p.add(file);
+ this.next = void 0;
}
}
- p.end();
- };
- createSync = (opt, files) => {
- const p = new PackSync(opt);
- addFilesSync(p, files);
- return p;
};
- createAsync = (opt, files) => {
- const p = new Pack(opt);
- addFilesAsync(p, files);
- return p;
- };
- create = makeCommand(createFileSync, createFile, createSync, createAsync, (_opt, files) => {
- if (!files?.length) {
- throw new TypeError("no paths specified to add to archive");
- }
- });
- }
-});
-
-// .yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/functions/major.js
-var require_major = __commonJS({
- ".yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/functions/major.js"(exports2, module2) {
- "use strict";
- var SemVer3 = require_semver();
- var major = (a, loose) => new SemVer3(a, loose).major;
- module2.exports = major;
}
});
-// sources/_lib.ts
-var lib_exports2 = {};
-__export(lib_exports2, {
- runMain: () => runMain
-});
-module.exports = __toCommonJS(lib_exports2);
-
-// .yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/constants.mjs
-var NODE_INITIAL = 0;
-var NODE_SUCCESS = 1;
-var NODE_ERRORED = 2;
-var START_OF_INPUT = ``;
-var END_OF_INPUT = `\0`;
-var HELP_COMMAND_INDEX = -1;
-var HELP_REGEX = /^(-h|--help)(?:=([0-9]+))?$/;
-var OPTION_REGEX = /^(--[a-z]+(?:-[a-z]+)*|-[a-zA-Z]+)$/;
-var BATCH_REGEX = /^-[a-zA-Z]{2,}$/;
-var BINDING_REGEX = /^([^=]+)=([\s\S]*)$/;
-var DEBUG = process.env.DEBUG_CLI === `1`;
-
-// .yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/errors.mjs
-var UsageError = class extends Error {
- constructor(message) {
- super(message);
- this.clipanion = { type: `usage` };
- this.name = `UsageError`;
- }
-};
-var UnknownSyntaxError = class extends Error {
- constructor(input, candidates) {
- super();
- this.input = input;
- this.candidates = candidates;
- this.clipanion = { type: `none` };
- this.name = `UnknownSyntaxError`;
- if (this.candidates.length === 0) {
- this.message = `Command not found, but we're not sure what's the alternative.`;
- } else if (this.candidates.every((candidate) => candidate.reason !== null && candidate.reason === candidates[0].reason)) {
- const [{ reason }] = this.candidates;
- this.message = `${reason}
-
-${this.candidates.map(({ usage }) => `$ ${usage}`).join(`
-`)}`;
- } else if (this.candidates.length === 1) {
- const [{ usage }] = this.candidates;
- this.message = `Command not found; did you mean:
-
-$ ${usage}
-${whileRunning(input)}`;
- } else {
- this.message = `Command not found; did you mean one of:
-
-${this.candidates.map(({ usage }, index) => {
- return `${`${index}.`.padStart(4)} ${usage}`;
- }).join(`
-`)}
-
-${whileRunning(input)}`;
- }
- }
-};
-var AmbiguousSyntaxError = class extends Error {
- constructor(input, usages) {
- super();
- this.input = input;
- this.usages = usages;
- this.clipanion = { type: `none` };
- this.name = `AmbiguousSyntaxError`;
- this.message = `Cannot find which to pick amongst the following alternatives:
-
-${this.usages.map((usage, index) => {
- return `${`${index}.`.padStart(4)} ${usage}`;
- }).join(`
-`)}
-
-${whileRunning(input)}`;
- }
-};
-var whileRunning = (input) => `While running ${input.filter((token) => {
- return token !== END_OF_INPUT;
-}).map((token) => {
- const json = JSON.stringify(token);
- if (token.match(/\s/) || token.length === 0 || json !== `"${token}"`) {
- return json;
- } else {
- return token;
- }
-}).join(` `)}`;
-
-// .yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/format.mjs
-var MAX_LINE_LENGTH = 80;
-var richLine = Array(MAX_LINE_LENGTH).fill(`\u2501`);
-for (let t = 0; t <= 24; ++t)
- richLine[richLine.length - t] = `\x1B[38;5;${232 + t}m\u2501`;
-var richFormat = {
- header: (str) => `\x1B[1m\u2501\u2501\u2501 ${str}${str.length < MAX_LINE_LENGTH - 5 ? ` ${richLine.slice(str.length + 5).join(``)}` : `:`}\x1B[0m`,
- bold: (str) => `\x1B[1m${str}\x1B[22m`,
- error: (str) => `\x1B[31m\x1B[1m${str}\x1B[22m\x1B[39m`,
- code: (str) => `\x1B[36m${str}\x1B[39m`
-};
-var textFormat = {
- header: (str) => str,
- bold: (str) => str,
- error: (str) => str,
- code: (str) => str
-};
-function dedent(text) {
- const lines = text.split(`
-`);
- const nonEmptyLines = lines.filter((line) => line.match(/\S/));
- const indent = nonEmptyLines.length > 0 ? nonEmptyLines.reduce((minLength, line) => Math.min(minLength, line.length - line.trimStart().length), Number.MAX_VALUE) : 0;
- return lines.map((line) => line.slice(indent).trimRight()).join(`
-`);
-}
-function formatMarkdownish(text, { format, paragraphs }) {
- text = text.replace(/\r\n?/g, `
-`);
- text = dedent(text);
- text = text.replace(/^\n+|\n+$/g, ``);
- text = text.replace(/^(\s*)-([^\n]*?)\n+/gm, `$1-$2
-
-`);
- text = text.replace(/\n(\n)?\n*/g, ($0, $1) => $1 ? $1 : ` `);
- if (paragraphs) {
- text = text.split(/\n/).map((paragraph) => {
- const bulletMatch = paragraph.match(/^\s*[*-][\t ]+(.*)/);
- if (!bulletMatch)
- return paragraph.match(/(.{1,80})(?: |$)/g).join(`
-`);
- const indent = paragraph.length - paragraph.trimStart().length;
- return bulletMatch[1].match(new RegExp(`(.{1,${78 - indent}})(?: |$)`, `g`)).map((line, index) => {
- return ` `.repeat(indent) + (index === 0 ? `- ` : ` `) + line;
- }).join(`
-`);
- }).join(`
-
-`);
- }
- text = text.replace(/(`+)((?:.|[\n])*?)\1/g, ($0, $1, $2) => {
- return format.code($1 + $2 + $1);
- });
- text = text.replace(/(\*\*)((?:.|[\n])*?)\1/g, ($0, $1, $2) => {
- return format.bold($1 + $2 + $1);
- });
- return text ? `${text}
-` : ``;
-}
-
-// .yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/advanced/options/utils.mjs
-var isOptionSymbol = Symbol(`clipanion/isOption`);
-function makeCommandOption(spec) {
- return { ...spec, [isOptionSymbol]: true };
-}
-function rerouteArguments(a, b) {
- if (typeof a === `undefined`)
- return [a, b];
- if (typeof a === `object` && a !== null && !Array.isArray(a)) {
- return [void 0, a];
- } else {
- return [a, b];
- }
-}
-function cleanValidationError(message, { mergeName = false } = {}) {
- const match = message.match(/^([^:]+): (.*)$/m);
- if (!match)
- return `validation failed`;
- let [, path16, line] = match;
- if (mergeName)
- line = line[0].toLowerCase() + line.slice(1);
- line = path16 !== `.` || !mergeName ? `${path16.replace(/^\.(\[|$)/, `$1`)}: ${line}` : `: ${line}`;
- return line;
-}
-function formatError(message, errors) {
- if (errors.length === 1) {
- return new UsageError(`${message}${cleanValidationError(errors[0], { mergeName: true })}`);
- } else {
- return new UsageError(`${message}:
-${errors.map((error) => `
-- ${cleanValidationError(error)}`).join(``)}`);
- }
-}
-function applyValidator(name2, value, validator) {
- if (typeof validator === `undefined`)
- return value;
- const errors = [];
- const coercions = [];
- const coercion = (v) => {
- const orig = value;
- value = v;
- return coercion.bind(null, orig);
- };
- const check = validator(value, { errors, coercions, coercion });
- if (!check)
- throw formatError(`Invalid value for ${name2}`, errors);
- for (const [, op] of coercions)
- op();
- return value;
-}
-
-// .yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/advanced/Command.mjs
-var Command = class {
- constructor() {
- this.help = false;
- }
- /**
- * Defines the usage information for the given command.
- */
- static Usage(usage) {
- return usage;
- }
- /**
- * Standard error handler which will simply rethrow the error. Can be used
- * to add custom logic to handle errors from the command or simply return
- * the parent class error handling.
- */
- async catch(error) {
- throw error;
- }
- async validateAndExecute() {
- const commandClass = this.constructor;
- const cascade2 = commandClass.schema;
- if (Array.isArray(cascade2)) {
- const { isDict: isDict2, isUnknown: isUnknown2, applyCascade: applyCascade2 } = await Promise.resolve().then(() => (init_lib(), lib_exports));
- const schema = applyCascade2(isDict2(isUnknown2()), cascade2);
- const errors = [];
- const coercions = [];
- const check = schema(this, { errors, coercions });
- if (!check)
- throw formatError(`Invalid option schema`, errors);
- for (const [, op] of coercions) {
- op();
+// node_modules/tar/dist/esm/pack.js
+var import_fs12, import_path10, PackJob, EOF2, ONSTAT, ENDED3, QUEUE2, PENDINGLINKS, CURRENT, PROCESS2, PROCESSING, PROCESSJOB, JOBS, JOBDONE, ADDFSENTRY, ADDTARENTRY, STAT, READDIR, ONREADDIR, PIPE, ENTRY, ENTRYOPT, WRITEENTRYCLASS, WRITE, ONDRAIN2, Pack, PackSync;
+var init_pack = __esm({
+ "node_modules/tar/dist/esm/pack.js"() {
+ import_fs12 = __toESM(require("fs"), 1);
+ init_write_entry();
+ init_esm();
+ init_esm3();
+ init_esm5();
+ init_warn_method();
+ import_path10 = __toESM(require("path"), 1);
+ init_normalize_windows_path();
+ PackJob = class {
+ path;
+ absolute;
+ entry;
+ stat;
+ readdir;
+ pending = false;
+ pendingLink = false;
+ ignore = false;
+ piped = false;
+ constructor(path16, absolute) {
+ this.path = path16 || "./";
+ this.absolute = absolute;
}
- } else if (cascade2 != null) {
- throw new Error(`Invalid command schema`);
- }
- const exitCode = await this.execute();
- if (typeof exitCode !== `undefined`) {
- return exitCode;
- } else {
- return 0;
- }
- }
-};
-Command.isOption = isOptionSymbol;
-Command.Default = [];
-
-// .yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/core.mjs
-function debug(str) {
- if (DEBUG) {
- console.log(str);
- }
-}
-var basicHelpState = {
- candidateUsage: null,
- requiredOptions: [],
- errorMessage: null,
- ignoreOptions: false,
- path: [],
- positionals: [],
- options: [],
- remainder: null,
- selectedIndex: HELP_COMMAND_INDEX
-};
-function makeStateMachine() {
- return {
- nodes: [makeNode(), makeNode(), makeNode()]
- };
-}
-function makeAnyOfMachine(inputs) {
- const output = makeStateMachine();
- const heads = [];
- let offset = output.nodes.length;
- for (const input of inputs) {
- heads.push(offset);
- for (let t = 0; t < input.nodes.length; ++t)
- if (!isTerminalNode(t))
- output.nodes.push(cloneNode(input.nodes[t], offset));
- offset += input.nodes.length - 2;
- }
- for (const head of heads)
- registerShortcut(output, NODE_INITIAL, head);
- return output;
-}
-function injectNode(machine, node) {
- machine.nodes.push(node);
- return machine.nodes.length - 1;
-}
-function simplifyMachine(input) {
- const visited = /* @__PURE__ */ new Set();
- const process5 = (node) => {
- if (visited.has(node))
- return;
- visited.add(node);
- const nodeDef = input.nodes[node];
- for (const transitions of Object.values(nodeDef.statics))
- for (const { to } of transitions)
- process5(to);
- for (const [, { to }] of nodeDef.dynamics)
- process5(to);
- for (const { to } of nodeDef.shortcuts)
- process5(to);
- const shortcuts = new Set(nodeDef.shortcuts.map(({ to }) => to));
- while (nodeDef.shortcuts.length > 0) {
- const { to } = nodeDef.shortcuts.shift();
- const toDef = input.nodes[to];
- for (const [segment, transitions] of Object.entries(toDef.statics)) {
- const store = !Object.prototype.hasOwnProperty.call(nodeDef.statics, segment) ? nodeDef.statics[segment] = [] : nodeDef.statics[segment];
- for (const transition of transitions) {
- if (!store.some(({ to: to2 }) => transition.to === to2)) {
- store.push(transition);
+ };
+ EOF2 = Buffer.alloc(1024);
+ ONSTAT = /* @__PURE__ */ Symbol("onStat");
+ ENDED3 = /* @__PURE__ */ Symbol("ended");
+ QUEUE2 = /* @__PURE__ */ Symbol("queue");
+ PENDINGLINKS = /* @__PURE__ */ Symbol("pendingLinks");
+ CURRENT = /* @__PURE__ */ Symbol("current");
+ PROCESS2 = /* @__PURE__ */ Symbol("process");
+ PROCESSING = /* @__PURE__ */ Symbol("processing");
+ PROCESSJOB = /* @__PURE__ */ Symbol("processJob");
+ JOBS = /* @__PURE__ */ Symbol("jobs");
+ JOBDONE = /* @__PURE__ */ Symbol("jobDone");
+ ADDFSENTRY = /* @__PURE__ */ Symbol("addFSEntry");
+ ADDTARENTRY = /* @__PURE__ */ Symbol("addTarEntry");
+ STAT = /* @__PURE__ */ Symbol("stat");
+ READDIR = /* @__PURE__ */ Symbol("readdir");
+ ONREADDIR = /* @__PURE__ */ Symbol("onreaddir");
+ PIPE = /* @__PURE__ */ Symbol("pipe");
+ ENTRY = /* @__PURE__ */ Symbol("entry");
+ ENTRYOPT = /* @__PURE__ */ Symbol("entryOpt");
+ WRITEENTRYCLASS = /* @__PURE__ */ Symbol("writeEntryClass");
+ WRITE = /* @__PURE__ */ Symbol("write");
+ ONDRAIN2 = /* @__PURE__ */ Symbol("ondrain");
+ Pack = class extends Minipass {
+ sync = false;
+ opt;
+ cwd;
+ maxReadSize;
+ preservePaths;
+ strict;
+ noPax;
+ prefix;
+ linkCache;
+ statCache;
+ file;
+ portable;
+ zip;
+ readdirCache;
+ noDirRecurse;
+ follow;
+ noMtime;
+ mtime;
+ filter;
+ jobs;
+ [WRITEENTRYCLASS];
+ onWriteEntry;
+ // Note: we actually DO need a linked list here, because we
+ // shift() to update the head of the list where we start, but still
+ // while that happens, need to know what the next item in the queue
+ // will be. Since we do multiple jobs in parallel, it's not as simple
+ // as just an Array.shift(), since that would lose the information about
+ // the next job in the list. We could add a .next field on the PackJob
+ // class, but then we'd have to be tracking the tail of the queue the
+ // whole time, and Yallist just does that for us anyway.
+ [QUEUE2];
+ [PENDINGLINKS] = /* @__PURE__ */ new Map();
+ [JOBS] = 0;
+ [PROCESSING] = false;
+ [ENDED3] = false;
+ constructor(opt = {}) {
+ super();
+ this.opt = opt;
+ this.file = opt.file || "";
+ this.cwd = opt.cwd || process.cwd();
+ this.maxReadSize = opt.maxReadSize;
+ this.preservePaths = !!opt.preservePaths;
+ this.strict = !!opt.strict;
+ this.noPax = !!opt.noPax;
+ this.prefix = normalizeWindowsPath(opt.prefix || "");
+ this.linkCache = opt.linkCache || /* @__PURE__ */ new Map();
+ this.statCache = opt.statCache || /* @__PURE__ */ new Map();
+ this.readdirCache = opt.readdirCache || /* @__PURE__ */ new Map();
+ this.onWriteEntry = opt.onWriteEntry;
+ this[WRITEENTRYCLASS] = WriteEntry;
+ if (typeof opt.onwarn === "function") {
+ this.on("warn", opt.onwarn);
+ }
+ this.portable = !!opt.portable;
+ if (opt.gzip || opt.brotli || opt.zstd) {
+ if ((opt.gzip ? 1 : 0) + (opt.brotli ? 1 : 0) + (opt.zstd ? 1 : 0) > 1) {
+ throw new TypeError("gzip, brotli, zstd are mutually exclusive");
+ }
+ if (opt.gzip) {
+ if (typeof opt.gzip !== "object") {
+ opt.gzip = {};
+ }
+ if (this.portable) {
+ opt.gzip.portable = true;
+ }
+ this.zip = new Gzip(opt.gzip);
+ }
+ if (opt.brotli) {
+ if (typeof opt.brotli !== "object") {
+ opt.brotli = {};
+ }
+ this.zip = new BrotliCompress(opt.brotli);
+ }
+ if (opt.zstd) {
+ if (typeof opt.zstd !== "object") {
+ opt.zstd = {};
+ }
+ this.zip = new ZstdCompress(opt.zstd);
}
+ if (!this.zip)
+ throw new Error("impossible");
+ const zip = this.zip;
+ zip.on("data", (chunk) => super.write(chunk));
+ zip.on("end", () => super.end());
+ zip.on("drain", () => this[ONDRAIN2]());
+ this.on("resume", () => zip.resume());
+ } else {
+ this.on("drain", this[ONDRAIN2]);
}
+ this.noDirRecurse = !!opt.noDirRecurse;
+ this.follow = !!opt.follow;
+ this.noMtime = !!opt.noMtime;
+ if (opt.mtime)
+ this.mtime = opt.mtime;
+ this.filter = typeof opt.filter === "function" ? opt.filter : () => true;
+ this[QUEUE2] = new Yallist();
+ this[JOBS] = 0;
+ this.jobs = Number(opt.jobs) || 4;
+ this[PROCESSING] = false;
+ this[ENDED3] = false;
}
- for (const [test, transition] of toDef.dynamics)
- if (!nodeDef.dynamics.some(([otherTest, { to: to2 }]) => test === otherTest && transition.to === to2))
- nodeDef.dynamics.push([test, transition]);
- for (const transition of toDef.shortcuts) {
- if (!shortcuts.has(transition.to)) {
- nodeDef.shortcuts.push(transition);
- shortcuts.add(transition.to);
- }
+ [WRITE](chunk) {
+ return super.write(chunk);
}
- }
- };
- process5(NODE_INITIAL);
-}
-function debugMachine(machine, { prefix = `` } = {}) {
- if (DEBUG) {
- debug(`${prefix}Nodes are:`);
- for (let t = 0; t < machine.nodes.length; ++t) {
- debug(`${prefix} ${t}: ${JSON.stringify(machine.nodes[t])}`);
- }
- }
-}
-function runMachineInternal(machine, input, partial = false) {
- debug(`Running a vm on ${JSON.stringify(input)}`);
- let branches = [{ node: NODE_INITIAL, state: {
- candidateUsage: null,
- requiredOptions: [],
- errorMessage: null,
- ignoreOptions: false,
- options: [],
- path: [],
- positionals: [],
- remainder: null,
- selectedIndex: null
- } }];
- debugMachine(machine, { prefix: ` ` });
- const tokens = [START_OF_INPUT, ...input];
- for (let t = 0; t < tokens.length; ++t) {
- const segment = tokens[t];
- debug(` Processing ${JSON.stringify(segment)}`);
- const nextBranches = [];
- for (const { node, state } of branches) {
- debug(` Current node is ${node}`);
- const nodeDef = machine.nodes[node];
- if (node === NODE_ERRORED) {
- nextBranches.push({ node, state });
- continue;
+ add(path16) {
+ this.write(path16);
+ return this;
}
- console.assert(nodeDef.shortcuts.length === 0, `Shortcuts should have been eliminated by now`);
- const hasExactMatch = Object.prototype.hasOwnProperty.call(nodeDef.statics, segment);
- if (!partial || t < tokens.length - 1 || hasExactMatch) {
- if (hasExactMatch) {
- const transitions = nodeDef.statics[segment];
- for (const { to, reducer } of transitions) {
- nextBranches.push({ node: to, state: typeof reducer !== `undefined` ? execute(reducers, reducer, state, segment) : state });
- debug(` Static transition to ${to} found`);
- }
- } else {
- debug(` No static transition found`);
+ end(path16, encoding, cb) {
+ if (typeof path16 === "function") {
+ cb = path16;
+ path16 = void 0;
}
- } else {
- let hasMatches = false;
- for (const candidate of Object.keys(nodeDef.statics)) {
- if (!candidate.startsWith(segment))
- continue;
- if (segment === candidate) {
- for (const { to, reducer } of nodeDef.statics[candidate]) {
- nextBranches.push({ node: to, state: typeof reducer !== `undefined` ? execute(reducers, reducer, state, segment) : state });
- debug(` Static transition to ${to} found`);
- }
- } else {
- for (const { to } of nodeDef.statics[candidate]) {
- nextBranches.push({ node: to, state: { ...state, remainder: candidate.slice(segment.length) } });
- debug(` Static transition to ${to} found (partial match)`);
- }
- }
- hasMatches = true;
+ if (typeof encoding === "function") {
+ cb = encoding;
+ encoding = void 0;
}
- if (!hasMatches) {
- debug(` No partial static transition found`);
+ if (path16) {
+ this.add(path16);
}
+ this[ENDED3] = true;
+ this[PROCESS2]();
+ if (cb)
+ cb();
+ return this;
}
- if (segment !== END_OF_INPUT) {
- for (const [test, { to, reducer }] of nodeDef.dynamics) {
- if (execute(tests, test, state, segment)) {
- nextBranches.push({ node: to, state: typeof reducer !== `undefined` ? execute(reducers, reducer, state, segment) : state });
- debug(` Dynamic transition to ${to} found (via ${test})`);
- }
+ write(path16) {
+ if (this[ENDED3]) {
+ throw new Error("write after end");
}
- }
- }
- if (nextBranches.length === 0 && segment === END_OF_INPUT && input.length === 1) {
- return [{
- node: NODE_INITIAL,
- state: basicHelpState
- }];
- }
- if (nextBranches.length === 0) {
- throw new UnknownSyntaxError(input, branches.filter(({ node }) => {
- return node !== NODE_ERRORED;
- }).map(({ state }) => {
- return { usage: state.candidateUsage, reason: null };
- }));
- }
- if (nextBranches.every(({ node }) => node === NODE_ERRORED)) {
- throw new UnknownSyntaxError(input, nextBranches.map(({ state }) => {
- return { usage: state.candidateUsage, reason: state.errorMessage };
- }));
- }
- branches = trimSmallerBranches(nextBranches);
- }
- if (branches.length > 0) {
- debug(` Results:`);
- for (const branch of branches) {
- debug(` - ${branch.node} -> ${JSON.stringify(branch.state)}`);
- }
- } else {
- debug(` No results`);
- }
- return branches;
-}
-function checkIfNodeIsFinished(node, state) {
- if (state.selectedIndex !== null)
- return true;
- if (Object.prototype.hasOwnProperty.call(node.statics, END_OF_INPUT)) {
- for (const { to } of node.statics[END_OF_INPUT])
- if (to === NODE_SUCCESS)
- return true;
- }
- return false;
-}
-function suggestMachine(machine, input, partial) {
- const prefix = partial && input.length > 0 ? [``] : [];
- const branches = runMachineInternal(machine, input, partial);
- const suggestions = [];
- const suggestionsJson = /* @__PURE__ */ new Set();
- const traverseSuggestion = (suggestion, node, skipFirst = true) => {
- let nextNodes = [node];
- while (nextNodes.length > 0) {
- const currentNodes = nextNodes;
- nextNodes = [];
- for (const node2 of currentNodes) {
- const nodeDef = machine.nodes[node2];
- const keys = Object.keys(nodeDef.statics);
- for (const key of Object.keys(nodeDef.statics)) {
- const segment = keys[0];
- for (const { to, reducer } of nodeDef.statics[segment]) {
- if (reducer !== `pushPath`)
- continue;
- if (!skipFirst)
- suggestion.push(segment);
- nextNodes.push(to);
- }
+ if (typeof path16 === "string") {
+ this[ADDFSENTRY](path16);
+ } else {
+ this[ADDTARENTRY](path16);
}
+ return this.flowing;
}
- skipFirst = false;
- }
- const json = JSON.stringify(suggestion);
- if (suggestionsJson.has(json))
- return;
- suggestions.push(suggestion);
- suggestionsJson.add(json);
- };
- for (const { node, state } of branches) {
- if (state.remainder !== null) {
- traverseSuggestion([state.remainder], node);
- continue;
- }
- const nodeDef = machine.nodes[node];
- const isFinished = checkIfNodeIsFinished(nodeDef, state);
- for (const [candidate, transitions] of Object.entries(nodeDef.statics))
- if (isFinished && candidate !== END_OF_INPUT || !candidate.startsWith(`-`) && transitions.some(({ reducer }) => reducer === `pushPath`))
- traverseSuggestion([...prefix, candidate], node);
- if (!isFinished)
- continue;
- for (const [test, { to }] of nodeDef.dynamics) {
- if (to === NODE_ERRORED)
- continue;
- const tokens = suggest(test, state);
- if (tokens === null)
- continue;
- for (const token of tokens) {
- traverseSuggestion([...prefix, token], node);
- }
- }
- }
- return [...suggestions].sort();
-}
-function runMachine(machine, input) {
- const branches = runMachineInternal(machine, [...input, END_OF_INPUT]);
- return selectBestState(input, branches.map(({ state }) => {
- return state;
- }));
-}
-function trimSmallerBranches(branches) {
- let maxPathSize = 0;
- for (const { state } of branches)
- if (state.path.length > maxPathSize)
- maxPathSize = state.path.length;
- return branches.filter(({ state }) => {
- return state.path.length === maxPathSize;
- });
-}
-function selectBestState(input, states) {
- const terminalStates = states.filter((state) => {
- return state.selectedIndex !== null;
- });
- if (terminalStates.length === 0)
- throw new Error();
- const requiredOptionsSetStates = terminalStates.filter((state) => state.selectedIndex === HELP_COMMAND_INDEX || state.requiredOptions.every((names) => names.some((name2) => state.options.find((opt) => opt.name === name2))));
- if (requiredOptionsSetStates.length === 0) {
- throw new UnknownSyntaxError(input, terminalStates.map((state) => ({
- usage: state.candidateUsage,
- reason: null
- })));
- }
- let maxPathSize = 0;
- for (const state of requiredOptionsSetStates)
- if (state.path.length > maxPathSize)
- maxPathSize = state.path.length;
- const bestPathBranches = requiredOptionsSetStates.filter((state) => {
- return state.path.length === maxPathSize;
- });
- const getPositionalCount = (state) => state.positionals.filter(({ extra }) => {
- return !extra;
- }).length + state.options.length;
- const statesWithPositionalCount = bestPathBranches.map((state) => {
- return { state, positionalCount: getPositionalCount(state) };
- });
- let maxPositionalCount = 0;
- for (const { positionalCount } of statesWithPositionalCount)
- if (positionalCount > maxPositionalCount)
- maxPositionalCount = positionalCount;
- const bestPositionalStates = statesWithPositionalCount.filter(({ positionalCount }) => {
- return positionalCount === maxPositionalCount;
- }).map(({ state }) => {
- return state;
- });
- const fixedStates = aggregateHelpStates(bestPositionalStates);
- if (fixedStates.length > 1)
- throw new AmbiguousSyntaxError(input, fixedStates.map((state) => state.candidateUsage));
- return fixedStates[0];
-}
-function aggregateHelpStates(states) {
- const notHelps = [];
- const helps = [];
- for (const state of states) {
- if (state.selectedIndex === HELP_COMMAND_INDEX) {
- helps.push(state);
- } else {
- notHelps.push(state);
- }
- }
- if (helps.length > 0) {
- notHelps.push({
- ...basicHelpState,
- path: findCommonPrefix(...helps.map((state) => state.path)),
- options: helps.reduce((options, state) => options.concat(state.options), [])
- });
- }
- return notHelps;
-}
-function findCommonPrefix(firstPath, secondPath, ...rest) {
- if (secondPath === void 0)
- return Array.from(firstPath);
- return findCommonPrefix(firstPath.filter((segment, i) => segment === secondPath[i]), ...rest);
-}
-function makeNode() {
- return {
- dynamics: [],
- shortcuts: [],
- statics: {}
- };
-}
-function isTerminalNode(node) {
- return node === NODE_SUCCESS || node === NODE_ERRORED;
-}
-function cloneTransition(input, offset = 0) {
- return {
- to: !isTerminalNode(input.to) ? input.to > 2 ? input.to + offset - 2 : input.to + offset : input.to,
- reducer: input.reducer
- };
-}
-function cloneNode(input, offset = 0) {
- const output = makeNode();
- for (const [test, transition] of input.dynamics)
- output.dynamics.push([test, cloneTransition(transition, offset)]);
- for (const transition of input.shortcuts)
- output.shortcuts.push(cloneTransition(transition, offset));
- for (const [segment, transitions] of Object.entries(input.statics))
- output.statics[segment] = transitions.map((transition) => cloneTransition(transition, offset));
- return output;
-}
-function registerDynamic(machine, from, test, to, reducer) {
- machine.nodes[from].dynamics.push([
- test,
- { to, reducer }
- ]);
-}
-function registerShortcut(machine, from, to, reducer) {
- machine.nodes[from].shortcuts.push({ to, reducer });
-}
-function registerStatic(machine, from, test, to, reducer) {
- const store = !Object.prototype.hasOwnProperty.call(machine.nodes[from].statics, test) ? machine.nodes[from].statics[test] = [] : machine.nodes[from].statics[test];
- store.push({ to, reducer });
-}
-function execute(store, callback, state, segment) {
- if (Array.isArray(callback)) {
- const [name2, ...args] = callback;
- return store[name2](state, segment, ...args);
- } else {
- return store[callback](state, segment);
- }
-}
-function suggest(callback, state) {
- const fn2 = Array.isArray(callback) ? tests[callback[0]] : tests[callback];
- if (typeof fn2.suggest === `undefined`)
- return null;
- const args = Array.isArray(callback) ? callback.slice(1) : [];
- return fn2.suggest(state, ...args);
-}
-var tests = {
- always: () => {
- return true;
- },
- isOptionLike: (state, segment) => {
- return !state.ignoreOptions && (segment !== `-` && segment.startsWith(`-`));
- },
- isNotOptionLike: (state, segment) => {
- return state.ignoreOptions || segment === `-` || !segment.startsWith(`-`);
- },
- isOption: (state, segment, name2, hidden) => {
- return !state.ignoreOptions && segment === name2;
- },
- isBatchOption: (state, segment, names) => {
- return !state.ignoreOptions && BATCH_REGEX.test(segment) && [...segment.slice(1)].every((name2) => names.includes(`-${name2}`));
- },
- isBoundOption: (state, segment, names, options) => {
- const optionParsing = segment.match(BINDING_REGEX);
- return !state.ignoreOptions && !!optionParsing && OPTION_REGEX.test(optionParsing[1]) && names.includes(optionParsing[1]) && options.filter((opt) => opt.names.includes(optionParsing[1])).every((opt) => opt.allowBinding);
- },
- isNegatedOption: (state, segment, name2) => {
- return !state.ignoreOptions && segment === `--no-${name2.slice(2)}`;
- },
- isHelp: (state, segment) => {
- return !state.ignoreOptions && HELP_REGEX.test(segment);
- },
- isUnsupportedOption: (state, segment, names) => {
- return !state.ignoreOptions && segment.startsWith(`-`) && OPTION_REGEX.test(segment) && !names.includes(segment);
- },
- isInvalidOption: (state, segment) => {
- return !state.ignoreOptions && segment.startsWith(`-`) && !OPTION_REGEX.test(segment);
- }
-};
-tests.isOption.suggest = (state, name2, hidden = true) => {
- return !hidden ? [name2] : null;
-};
-var reducers = {
- setCandidateState: (state, segment, candidateState) => {
- return { ...state, ...candidateState };
- },
- setSelectedIndex: (state, segment, index) => {
- return { ...state, selectedIndex: index };
- },
- pushBatch: (state, segment) => {
- return { ...state, options: state.options.concat([...segment.slice(1)].map((name2) => ({ name: `-${name2}`, value: true }))) };
- },
- pushBound: (state, segment) => {
- const [, name2, value] = segment.match(BINDING_REGEX);
- return { ...state, options: state.options.concat({ name: name2, value }) };
- },
- pushPath: (state, segment) => {
- return { ...state, path: state.path.concat(segment) };
- },
- pushPositional: (state, segment) => {
- return { ...state, positionals: state.positionals.concat({ value: segment, extra: false }) };
- },
- pushExtra: (state, segment) => {
- return { ...state, positionals: state.positionals.concat({ value: segment, extra: true }) };
- },
- pushExtraNoLimits: (state, segment) => {
- return { ...state, positionals: state.positionals.concat({ value: segment, extra: NoLimits }) };
- },
- pushTrue: (state, segment, name2 = segment) => {
- return { ...state, options: state.options.concat({ name: segment, value: true }) };
- },
- pushFalse: (state, segment, name2 = segment) => {
- return { ...state, options: state.options.concat({ name: name2, value: false }) };
- },
- pushUndefined: (state, segment) => {
- return { ...state, options: state.options.concat({ name: segment, value: void 0 }) };
- },
- pushStringValue: (state, segment) => {
- var _a;
- const copy = { ...state, options: [...state.options] };
- const lastOption = state.options[state.options.length - 1];
- lastOption.value = ((_a = lastOption.value) !== null && _a !== void 0 ? _a : []).concat([segment]);
- return copy;
- },
- setStringValue: (state, segment) => {
- const copy = { ...state, options: [...state.options] };
- const lastOption = state.options[state.options.length - 1];
- lastOption.value = segment;
- return copy;
- },
- inhibateOptions: (state) => {
- return { ...state, ignoreOptions: true };
- },
- useHelp: (state, segment, command) => {
- const [
- ,
- /* name */
- ,
- index
- ] = segment.match(HELP_REGEX);
- if (typeof index !== `undefined`) {
- return { ...state, options: [{ name: `-c`, value: String(command) }, { name: `-i`, value: index }] };
- } else {
- return { ...state, options: [{ name: `-c`, value: String(command) }] };
- }
- },
- setError: (state, segment, errorMessage) => {
- if (segment === END_OF_INPUT) {
- return { ...state, errorMessage: `${errorMessage}.` };
- } else {
- return { ...state, errorMessage: `${errorMessage} ("${segment}").` };
- }
- },
- setOptionArityError: (state, segment) => {
- const lastOption = state.options[state.options.length - 1];
- return { ...state, errorMessage: `Not enough arguments to option ${lastOption.name}.` };
- }
-};
-var NoLimits = Symbol();
-var CommandBuilder = class {
- constructor(cliIndex, cliOpts) {
- this.allOptionNames = [];
- this.arity = { leading: [], trailing: [], extra: [], proxy: false };
- this.options = [];
- this.paths = [];
- this.cliIndex = cliIndex;
- this.cliOpts = cliOpts;
- }
- addPath(path16) {
- this.paths.push(path16);
- }
- setArity({ leading = this.arity.leading, trailing = this.arity.trailing, extra = this.arity.extra, proxy = this.arity.proxy }) {
- Object.assign(this.arity, { leading, trailing, extra, proxy });
- }
- addPositional({ name: name2 = `arg`, required = true } = {}) {
- if (!required && this.arity.extra === NoLimits)
- throw new Error(`Optional parameters cannot be declared when using .rest() or .proxy()`);
- if (!required && this.arity.trailing.length > 0)
- throw new Error(`Optional parameters cannot be declared after the required trailing positional arguments`);
- if (!required && this.arity.extra !== NoLimits) {
- this.arity.extra.push(name2);
- } else if (this.arity.extra !== NoLimits && this.arity.extra.length === 0) {
- this.arity.leading.push(name2);
- } else {
- this.arity.trailing.push(name2);
- }
- }
- addRest({ name: name2 = `arg`, required = 0 } = {}) {
- if (this.arity.extra === NoLimits)
- throw new Error(`Infinite lists cannot be declared multiple times in the same command`);
- if (this.arity.trailing.length > 0)
- throw new Error(`Infinite lists cannot be declared after the required trailing positional arguments`);
- for (let t = 0; t < required; ++t)
- this.addPositional({ name: name2 });
- this.arity.extra = NoLimits;
- }
- addProxy({ required = 0 } = {}) {
- this.addRest({ required });
- this.arity.proxy = true;
- }
- addOption({ names, description, arity = 0, hidden = false, required = false, allowBinding = true }) {
- if (!allowBinding && arity > 1)
- throw new Error(`The arity cannot be higher than 1 when the option only supports the --arg=value syntax`);
- if (!Number.isInteger(arity))
- throw new Error(`The arity must be an integer, got ${arity}`);
- if (arity < 0)
- throw new Error(`The arity must be positive, got ${arity}`);
- this.allOptionNames.push(...names);
- this.options.push({ names, description, arity, hidden, required, allowBinding });
- }
- setContext(context) {
- this.context = context;
- }
- usage({ detailed = true, inlineOptions = true } = {}) {
- const segments = [this.cliOpts.binaryName];
- const detailedOptionList = [];
- if (this.paths.length > 0)
- segments.push(...this.paths[0]);
- if (detailed) {
- for (const { names, arity, hidden, description, required } of this.options) {
- if (hidden)
- continue;
- const args = [];
- for (let t = 0; t < arity; ++t)
- args.push(` #${t}`);
- const definition = `${names.join(`,`)}${args.join(``)}`;
- if (!inlineOptions && description) {
- detailedOptionList.push({ definition, description, required });
+ [ADDTARENTRY](p) {
+ const absolute = normalizeWindowsPath(import_path10.default.resolve(this.cwd, p.path));
+ if (!this.filter(p.path, p)) {
+ p.resume();
} else {
- segments.push(required ? `<${definition}>` : `[${definition}]`);
+ const job = new PackJob(p.path, absolute);
+ job.entry = new WriteEntryTar(p, this[ENTRYOPT](job));
+ job.entry.on("end", () => this[JOBDONE](job));
+ this[JOBS] += 1;
+ this[QUEUE2].push(job);
}
+ this[PROCESS2]();
}
- segments.push(...this.arity.leading.map((name2) => `<${name2}>`));
- if (this.arity.extra === NoLimits)
- segments.push(`...`);
- else
- segments.push(...this.arity.extra.map((name2) => `[${name2}]`));
- segments.push(...this.arity.trailing.map((name2) => `<${name2}>`));
- }
- const usage = segments.join(` `);
- return { usage, options: detailedOptionList };
- }
- compile() {
- if (typeof this.context === `undefined`)
- throw new Error(`Assertion failed: No context attached`);
- const machine = makeStateMachine();
- let firstNode = NODE_INITIAL;
- const candidateUsage = this.usage().usage;
- const requiredOptions = this.options.filter((opt) => opt.required).map((opt) => opt.names);
- firstNode = injectNode(machine, makeNode());
- registerStatic(machine, NODE_INITIAL, START_OF_INPUT, firstNode, [`setCandidateState`, { candidateUsage, requiredOptions }]);
- const positionalArgument = this.arity.proxy ? `always` : `isNotOptionLike`;
- const paths = this.paths.length > 0 ? this.paths : [[]];
- for (const path16 of paths) {
- let lastPathNode = firstNode;
- if (path16.length > 0) {
- const optionPathNode = injectNode(machine, makeNode());
- registerShortcut(machine, lastPathNode, optionPathNode);
- this.registerOptions(machine, optionPathNode);
- lastPathNode = optionPathNode;
- }
- for (let t = 0; t < path16.length; ++t) {
- const nextPathNode = injectNode(machine, makeNode());
- registerStatic(machine, lastPathNode, path16[t], nextPathNode, `pushPath`);
- lastPathNode = nextPathNode;
- }
- if (this.arity.leading.length > 0 || !this.arity.proxy) {
- const helpNode = injectNode(machine, makeNode());
- registerDynamic(machine, lastPathNode, `isHelp`, helpNode, [`useHelp`, this.cliIndex]);
- registerDynamic(machine, helpNode, `always`, helpNode, `pushExtra`);
- registerStatic(machine, helpNode, END_OF_INPUT, NODE_SUCCESS, [`setSelectedIndex`, HELP_COMMAND_INDEX]);
- this.registerOptions(machine, lastPathNode);
- }
- if (this.arity.leading.length > 0)
- registerStatic(machine, lastPathNode, END_OF_INPUT, NODE_ERRORED, [`setError`, `Not enough positional arguments`]);
- let lastLeadingNode = lastPathNode;
- for (let t = 0; t < this.arity.leading.length; ++t) {
- const nextLeadingNode = injectNode(machine, makeNode());
- if (!this.arity.proxy || t + 1 !== this.arity.leading.length)
- this.registerOptions(machine, nextLeadingNode);
- if (this.arity.trailing.length > 0 || t + 1 !== this.arity.leading.length)
- registerStatic(machine, nextLeadingNode, END_OF_INPUT, NODE_ERRORED, [`setError`, `Not enough positional arguments`]);
- registerDynamic(machine, lastLeadingNode, `isNotOptionLike`, nextLeadingNode, `pushPositional`);
- lastLeadingNode = nextLeadingNode;
- }
- let lastExtraNode = lastLeadingNode;
- if (this.arity.extra === NoLimits || this.arity.extra.length > 0) {
- const extraShortcutNode = injectNode(machine, makeNode());
- registerShortcut(machine, lastLeadingNode, extraShortcutNode);
- if (this.arity.extra === NoLimits) {
- const extraNode = injectNode(machine, makeNode());
- if (!this.arity.proxy)
- this.registerOptions(machine, extraNode);
- registerDynamic(machine, lastLeadingNode, positionalArgument, extraNode, `pushExtraNoLimits`);
- registerDynamic(machine, extraNode, positionalArgument, extraNode, `pushExtraNoLimits`);
- registerShortcut(machine, extraNode, extraShortcutNode);
- } else {
- for (let t = 0; t < this.arity.extra.length; ++t) {
- const nextExtraNode = injectNode(machine, makeNode());
- if (!this.arity.proxy || t > 0)
- this.registerOptions(machine, nextExtraNode);
- registerDynamic(machine, lastExtraNode, positionalArgument, nextExtraNode, `pushExtra`);
- registerShortcut(machine, nextExtraNode, extraShortcutNode);
- lastExtraNode = nextExtraNode;
+ [ADDFSENTRY](p) {
+ const absolute = normalizeWindowsPath(import_path10.default.resolve(this.cwd, p));
+ this[QUEUE2].push(new PackJob(p, absolute));
+ this[PROCESS2]();
+ }
+ [STAT](job) {
+ job.pending = true;
+ this[JOBS] += 1;
+ const stat = this.follow ? "stat" : "lstat";
+ import_fs12.default[stat](job.absolute, (er, stat2) => {
+ job.pending = false;
+ this[JOBS] -= 1;
+ if (er) {
+ this.emit("error", er);
+ } else {
+ this[ONSTAT](job, stat2);
}
- }
- lastExtraNode = extraShortcutNode;
- }
- if (this.arity.trailing.length > 0)
- registerStatic(machine, lastExtraNode, END_OF_INPUT, NODE_ERRORED, [`setError`, `Not enough positional arguments`]);
- let lastTrailingNode = lastExtraNode;
- for (let t = 0; t < this.arity.trailing.length; ++t) {
- const nextTrailingNode = injectNode(machine, makeNode());
- if (!this.arity.proxy)
- this.registerOptions(machine, nextTrailingNode);
- if (t + 1 < this.arity.trailing.length)
- registerStatic(machine, nextTrailingNode, END_OF_INPUT, NODE_ERRORED, [`setError`, `Not enough positional arguments`]);
- registerDynamic(machine, lastTrailingNode, `isNotOptionLike`, nextTrailingNode, `pushPositional`);
- lastTrailingNode = nextTrailingNode;
- }
- registerDynamic(machine, lastTrailingNode, positionalArgument, NODE_ERRORED, [`setError`, `Extraneous positional argument`]);
- registerStatic(machine, lastTrailingNode, END_OF_INPUT, NODE_SUCCESS, [`setSelectedIndex`, this.cliIndex]);
- }
- return {
- machine,
- context: this.context
- };
- }
- registerOptions(machine, node) {
- registerDynamic(machine, node, [`isOption`, `--`], node, `inhibateOptions`);
- registerDynamic(machine, node, [`isBatchOption`, this.allOptionNames], node, `pushBatch`);
- registerDynamic(machine, node, [`isBoundOption`, this.allOptionNames, this.options], node, `pushBound`);
- registerDynamic(machine, node, [`isUnsupportedOption`, this.allOptionNames], NODE_ERRORED, [`setError`, `Unsupported option name`]);
- registerDynamic(machine, node, [`isInvalidOption`], NODE_ERRORED, [`setError`, `Invalid option name`]);
- for (const option of this.options) {
- const longestName = option.names.reduce((longestName2, name2) => {
- return name2.length > longestName2.length ? name2 : longestName2;
- }, ``);
- if (option.arity === 0) {
- for (const name2 of option.names) {
- registerDynamic(machine, node, [`isOption`, name2, option.hidden || name2 !== longestName], node, `pushTrue`);
- if (name2.startsWith(`--`) && !name2.startsWith(`--no-`)) {
- registerDynamic(machine, node, [`isNegatedOption`, name2], node, [`pushFalse`, name2]);
+ });
+ }
+ [ONSTAT](job, stat) {
+ this.statCache.set(job.absolute, stat);
+ job.stat = stat;
+ if (!this.filter(job.path, stat)) {
+ job.ignore = true;
+ } else if (stat.isFile() && stat.nlink > 1 && !this.linkCache.get(`${stat.dev}:${stat.ino}`) && !this.sync) {
+ if (job === this[CURRENT]) {
+ this[PROCESSJOB](job);
+ } else {
+ const key = `${stat.dev}:${stat.ino}`;
+ const pending = this[PENDINGLINKS].get(key);
+ if (pending)
+ pending.push(job);
+ else
+ this[PENDINGLINKS].set(key, [job]);
+ job.pendingLink = true;
+ job.pending = true;
}
}
- } else {
- let lastNode = injectNode(machine, makeNode());
- for (const name2 of option.names)
- registerDynamic(machine, node, [`isOption`, name2, option.hidden || name2 !== longestName], lastNode, `pushUndefined`);
- for (let t = 0; t < option.arity; ++t) {
- const nextNode = injectNode(machine, makeNode());
- registerStatic(machine, lastNode, END_OF_INPUT, NODE_ERRORED, `setOptionArityError`);
- registerDynamic(machine, lastNode, `isOptionLike`, NODE_ERRORED, `setOptionArityError`);
- const action = option.arity === 1 ? `setStringValue` : `pushStringValue`;
- registerDynamic(machine, lastNode, `isNotOptionLike`, nextNode, action);
- lastNode = nextNode;
- }
- registerShortcut(machine, lastNode, node);
+ this[PROCESS2]();
}
- }
- }
-};
-var CliBuilder = class _CliBuilder {
- constructor({ binaryName = `...` } = {}) {
- this.builders = [];
- this.opts = { binaryName };
- }
- static build(cbs, opts = {}) {
- return new _CliBuilder(opts).commands(cbs).compile();
- }
- getBuilderByIndex(n) {
- if (!(n >= 0 && n < this.builders.length))
- throw new Error(`Assertion failed: Out-of-bound command index (${n})`);
- return this.builders[n];
- }
- commands(cbs) {
- for (const cb of cbs)
- cb(this.command());
- return this;
- }
- command() {
- const builder = new CommandBuilder(this.builders.length, this.opts);
- this.builders.push(builder);
- return builder;
- }
- compile() {
- const machines = [];
- const contexts = [];
- for (const builder of this.builders) {
- const { machine: machine2, context } = builder.compile();
- machines.push(machine2);
- contexts.push(context);
- }
- const machine = makeAnyOfMachine(machines);
- simplifyMachine(machine);
- return {
- machine,
- contexts,
- process: (input) => {
- return runMachine(machine, input);
- },
- suggest: (input, partial) => {
- return suggestMachine(machine, input, partial);
+ [READDIR](job) {
+ job.pending = true;
+ this[JOBS] += 1;
+ import_fs12.default.readdir(job.absolute, (er, entries) => {
+ job.pending = false;
+ this[JOBS] -= 1;
+ if (er) {
+ return this.emit("error", er);
+ }
+ this[ONREADDIR](job, entries);
+ });
+ }
+ [ONREADDIR](job, entries) {
+ this.readdirCache.set(job.absolute, entries);
+ job.readdir = entries;
+ this[PROCESS2]();
}
- };
- }
-};
-
-// .yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/advanced/Cli.mjs
-var import_platform = __toESM(require_node(), 1);
-
-// .yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/advanced/HelpCommand.mjs
-var HelpCommand = class _HelpCommand extends Command {
- constructor(contexts) {
- super();
- this.contexts = contexts;
- this.commands = [];
- }
- static from(state, contexts) {
- const command = new _HelpCommand(contexts);
- command.path = state.path;
- for (const opt of state.options) {
- switch (opt.name) {
- case `-c`:
- {
- command.commands.push(Number(opt.value));
+ [PROCESS2]() {
+ if (this[PROCESSING]) {
+ return;
+ }
+ this[PROCESSING] = true;
+ for (let w = this[QUEUE2].head; !!w && this[JOBS] < this.jobs; w = w.next) {
+ this[PROCESSJOB](w.value);
+ if (w.value.ignore) {
+ const p = w.next;
+ this[QUEUE2].removeNode(w);
+ w.next = p;
}
- break;
- case `-i`:
- {
- command.index = Number(opt.value);
+ }
+ this[PROCESSING] = false;
+ if (this[ENDED3] && this[QUEUE2].length === 0 && this[JOBS] === 0) {
+ if (this.zip) {
+ this.zip.end(EOF2);
+ } else {
+ super.write(EOF2);
+ super.end();
}
- break;
- }
- }
- return command;
- }
- async execute() {
- let commands = this.commands;
- if (typeof this.index !== `undefined` && this.index >= 0 && this.index < commands.length)
- commands = [commands[this.index]];
- if (commands.length === 0) {
- this.context.stdout.write(this.cli.usage());
- } else if (commands.length === 1) {
- this.context.stdout.write(this.cli.usage(this.contexts[commands[0]].commandClass, { detailed: true }));
- } else if (commands.length > 1) {
- this.context.stdout.write(`Multiple commands match your selection:
-`);
- this.context.stdout.write(`
-`);
- let index = 0;
- for (const command of this.commands)
- this.context.stdout.write(this.cli.usage(this.contexts[command].commandClass, { prefix: `${index++}. `.padStart(5) }));
- this.context.stdout.write(`
-`);
- this.context.stdout.write(`Run again with -h= to see the longer details of any of those commands.
-`);
- }
- }
-};
-
-// .yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/advanced/Cli.mjs
-var errorCommandSymbol = Symbol(`clipanion/errorCommand`);
-var Cli = class _Cli {
- constructor({ binaryLabel, binaryName: binaryNameOpt = `...`, binaryVersion, enableCapture = false, enableColors } = {}) {
- this.registrations = /* @__PURE__ */ new Map();
- this.builder = new CliBuilder({ binaryName: binaryNameOpt });
- this.binaryLabel = binaryLabel;
- this.binaryName = binaryNameOpt;
- this.binaryVersion = binaryVersion;
- this.enableCapture = enableCapture;
- this.enableColors = enableColors;
- }
- /**
- * Creates a new Cli and registers all commands passed as parameters.
- *
- * @param commandClasses The Commands to register
- * @returns The created `Cli` instance
- */
- static from(commandClasses, options = {}) {
- const cli = new _Cli(options);
- const resolvedCommandClasses = Array.isArray(commandClasses) ? commandClasses : [commandClasses];
- for (const commandClass of resolvedCommandClasses)
- cli.register(commandClass);
- return cli;
- }
- /**
- * Registers a command inside the CLI.
- */
- register(commandClass) {
- var _a;
- const specs = /* @__PURE__ */ new Map();
- const command = new commandClass();
- for (const key in command) {
- const value = command[key];
- if (typeof value === `object` && value !== null && value[Command.isOption]) {
- specs.set(key, value);
+ }
}
- }
- const builder = this.builder.command();
- const index = builder.cliIndex;
- const paths = (_a = commandClass.paths) !== null && _a !== void 0 ? _a : command.paths;
- if (typeof paths !== `undefined`)
- for (const path16 of paths)
- builder.addPath(path16);
- this.registrations.set(commandClass, { specs, builder, index });
- for (const [key, { definition }] of specs.entries())
- definition(builder, key);
- builder.setContext({
- commandClass
- });
- }
- process(input, userContext) {
- const { contexts, process: process5 } = this.builder.compile();
- const state = process5(input);
- const context = {
- ..._Cli.defaultContext,
- ...userContext
- };
- switch (state.selectedIndex) {
- case HELP_COMMAND_INDEX: {
- const command = HelpCommand.from(state, contexts);
- command.context = context;
- return command;
+ get [CURRENT]() {
+ return this[QUEUE2] && this[QUEUE2].head && this[QUEUE2].head.value;
}
- default:
- {
- const { commandClass } = contexts[state.selectedIndex];
- const record = this.registrations.get(commandClass);
- if (typeof record === `undefined`)
- throw new Error(`Assertion failed: Expected the command class to have been registered.`);
- const command = new commandClass();
- command.context = context;
- command.path = state.path;
- try {
- for (const [key, { transformer }] of record.specs.entries())
- command[key] = transformer(record.builder, key, state, context);
- return command;
- } catch (error) {
- error[errorCommandSymbol] = command;
- throw error;
+ [JOBDONE](job) {
+ this[QUEUE2].shift();
+ this[JOBS] -= 1;
+ const { stat } = job;
+ if (stat && stat.isFile() && stat.nlink > 1) {
+ const key = `${stat.dev}:${stat.ino}`;
+ const pending = this[PENDINGLINKS].get(key);
+ if (pending) {
+ this[PENDINGLINKS].delete(key);
+ for (const job2 of pending) {
+ job2.pending = false;
+ this[PROCESSJOB](job2);
+ }
}
}
- break;
- }
- }
- async run(input, userContext) {
- var _a, _b;
- let command;
- const context = {
- ..._Cli.defaultContext,
- ...userContext
- };
- const colored = (_a = this.enableColors) !== null && _a !== void 0 ? _a : context.colorDepth > 1;
- if (!Array.isArray(input)) {
- command = input;
- } else {
- try {
- command = this.process(input, context);
- } catch (error) {
- context.stdout.write(this.error(error, { colored }));
- return 1;
+ this[PROCESS2]();
}
- }
- if (command.help) {
- context.stdout.write(this.usage(command, { colored, detailed: true }));
- return 0;
- }
- command.context = context;
- command.cli = {
- binaryLabel: this.binaryLabel,
- binaryName: this.binaryName,
- binaryVersion: this.binaryVersion,
- enableCapture: this.enableCapture,
- enableColors: this.enableColors,
- definitions: () => this.definitions(),
- error: (error, opts) => this.error(error, opts),
- format: (colored2) => this.format(colored2),
- process: (input2, subContext) => this.process(input2, { ...context, ...subContext }),
- run: (input2, subContext) => this.run(input2, { ...context, ...subContext }),
- usage: (command2, opts) => this.usage(command2, opts)
- };
- const activate = this.enableCapture ? (_b = (0, import_platform.getCaptureActivator)(context)) !== null && _b !== void 0 ? _b : noopCaptureActivator : noopCaptureActivator;
- let exitCode;
- try {
- exitCode = await activate(() => command.validateAndExecute().catch((error) => command.catch(error).then(() => 0)));
- } catch (error) {
- context.stdout.write(this.error(error, { colored, command }));
- return 1;
- }
- return exitCode;
- }
- async runExit(input, context) {
- process.exitCode = await this.run(input, context);
- }
- suggest(input, partial) {
- const { suggest: suggest2 } = this.builder.compile();
- return suggest2(input, partial);
- }
- definitions({ colored = false } = {}) {
- const data = [];
- for (const [commandClass, { index }] of this.registrations) {
- if (typeof commandClass.usage === `undefined`)
- continue;
- const { usage: path16 } = this.getUsageByIndex(index, { detailed: false });
- const { usage, options } = this.getUsageByIndex(index, { detailed: true, inlineOptions: false });
- const category = typeof commandClass.usage.category !== `undefined` ? formatMarkdownish(commandClass.usage.category, { format: this.format(colored), paragraphs: false }) : void 0;
- const description = typeof commandClass.usage.description !== `undefined` ? formatMarkdownish(commandClass.usage.description, { format: this.format(colored), paragraphs: false }) : void 0;
- const details = typeof commandClass.usage.details !== `undefined` ? formatMarkdownish(commandClass.usage.details, { format: this.format(colored), paragraphs: true }) : void 0;
- const examples = typeof commandClass.usage.examples !== `undefined` ? commandClass.usage.examples.map(([label, cli]) => [formatMarkdownish(label, { format: this.format(colored), paragraphs: false }), cli.replace(/\$0/g, this.binaryName)]) : void 0;
- data.push({ path: path16, usage, category, description, details, examples, options });
- }
- return data;
- }
- usage(command = null, { colored, detailed = false, prefix = `$ ` } = {}) {
- var _a;
- if (command === null) {
- for (const commandClass2 of this.registrations.keys()) {
- const paths = commandClass2.paths;
- const isDocumented = typeof commandClass2.usage !== `undefined`;
- const isExclusivelyDefault = !paths || paths.length === 0 || paths.length === 1 && paths[0].length === 0;
- const isDefault = isExclusivelyDefault || ((_a = paths === null || paths === void 0 ? void 0 : paths.some((path16) => path16.length === 0)) !== null && _a !== void 0 ? _a : false);
- if (isDefault) {
- if (command) {
- command = null;
- break;
+ [PROCESSJOB](job) {
+ if (job.pending && job.pendingLink && job === this[CURRENT]) {
+ job.pending = false;
+ job.pendingLink = false;
+ }
+ if (job.pending) {
+ return;
+ }
+ if (job.entry) {
+ if (job === this[CURRENT] && !job.piped) {
+ this[PIPE](job);
+ }
+ return;
+ }
+ if (!job.stat) {
+ const sc = this.statCache.get(job.absolute);
+ if (sc) {
+ this[ONSTAT](job, sc);
} else {
- command = commandClass2;
+ this[STAT](job);
}
- } else {
- if (isDocumented) {
- command = null;
- continue;
+ }
+ if (!job.stat) {
+ return;
+ }
+ if (job.ignore) {
+ return;
+ }
+ if (!this.noDirRecurse && job.stat.isDirectory() && !job.readdir) {
+ const rc = this.readdirCache.get(job.absolute);
+ if (rc) {
+ this[ONREADDIR](job, rc);
+ } else {
+ this[READDIR](job);
+ }
+ if (!job.readdir) {
+ return;
}
}
+ job.entry = this[ENTRY](job);
+ if (!job.entry) {
+ job.ignore = true;
+ return;
+ }
+ if (job === this[CURRENT] && !job.piped) {
+ this[PIPE](job);
+ }
}
- if (command) {
- detailed = true;
- }
- }
- const commandClass = command !== null && command instanceof Command ? command.constructor : command;
- let result = ``;
- if (!commandClass) {
- const commandsByCategories = /* @__PURE__ */ new Map();
- for (const [commandClass2, { index }] of this.registrations.entries()) {
- if (typeof commandClass2.usage === `undefined`)
- continue;
- const category = typeof commandClass2.usage.category !== `undefined` ? formatMarkdownish(commandClass2.usage.category, { format: this.format(colored), paragraphs: false }) : null;
- let categoryCommands = commandsByCategories.get(category);
- if (typeof categoryCommands === `undefined`)
- commandsByCategories.set(category, categoryCommands = []);
- const { usage } = this.getUsageByIndex(index);
- categoryCommands.push({ commandClass: commandClass2, usage });
- }
- const categoryNames = Array.from(commandsByCategories.keys()).sort((a, b) => {
- if (a === null)
- return -1;
- if (b === null)
- return 1;
- return a.localeCompare(b, `en`, { usage: `sort`, caseFirst: `upper` });
- });
- const hasLabel = typeof this.binaryLabel !== `undefined`;
- const hasVersion = typeof this.binaryVersion !== `undefined`;
- if (hasLabel || hasVersion) {
- if (hasLabel && hasVersion)
- result += `${this.format(colored).header(`${this.binaryLabel} - ${this.binaryVersion}`)}
-
-`;
- else if (hasLabel)
- result += `${this.format(colored).header(`${this.binaryLabel}`)}
-`;
- else
- result += `${this.format(colored).header(`${this.binaryVersion}`)}
-`;
- result += ` ${this.format(colored).bold(prefix)}${this.binaryName}
-`;
- } else {
- result += `${this.format(colored).bold(prefix)}${this.binaryName}
-`;
+ [ENTRYOPT](job) {
+ return {
+ onwarn: (code2, msg, data) => this.warn(code2, msg, data),
+ noPax: this.noPax,
+ cwd: this.cwd,
+ absolute: job.absolute,
+ preservePaths: this.preservePaths,
+ maxReadSize: this.maxReadSize,
+ strict: this.strict,
+ portable: this.portable,
+ linkCache: this.linkCache,
+ statCache: this.statCache,
+ noMtime: this.noMtime,
+ mtime: this.mtime,
+ prefix: this.prefix,
+ onWriteEntry: this.onWriteEntry
+ };
}
- for (const categoryName of categoryNames) {
- const commands = commandsByCategories.get(categoryName).slice().sort((a, b) => {
- return a.usage.localeCompare(b.usage, `en`, { usage: `sort`, caseFirst: `upper` });
- });
- const header = categoryName !== null ? categoryName.trim() : `General commands`;
- result += `
-`;
- result += `${this.format(colored).header(`${header}`)}
-`;
- for (const { commandClass: commandClass2, usage } of commands) {
- const doc = commandClass2.usage.description || `undocumented`;
- result += `
-`;
- result += ` ${this.format(colored).bold(usage)}
-`;
- result += ` ${formatMarkdownish(doc, { format: this.format(colored), paragraphs: false })}`;
+ [ENTRY](job) {
+ this[JOBS] += 1;
+ try {
+ const e = new this[WRITEENTRYCLASS](job.path, this[ENTRYOPT](job));
+ return e.on("end", () => this[JOBDONE](job)).on("error", (er) => this.emit("error", er));
+ } catch (er) {
+ this.emit("error", er);
}
}
- result += `
-`;
- result += formatMarkdownish(`You can also print more details about any of these commands by calling them with the \`-h,--help\` flag right after the command name.`, { format: this.format(colored), paragraphs: true });
- } else {
- if (!detailed) {
- const { usage } = this.getUsageByRegistration(commandClass);
- result += `${this.format(colored).bold(prefix)}${usage}
-`;
- } else {
- const { description = ``, details = ``, examples = [] } = commandClass.usage || {};
- if (description !== ``) {
- result += formatMarkdownish(description, { format: this.format(colored), paragraphs: false }).replace(/^./, ($0) => $0.toUpperCase());
- result += `
-`;
- }
- if (details !== `` || examples.length > 0) {
- result += `${this.format(colored).header(`Usage`)}
-`;
- result += `
-`;
+ [ONDRAIN2]() {
+ if (this[CURRENT] && this[CURRENT].entry) {
+ this[CURRENT].entry.resume();
}
- const { usage, options } = this.getUsageByRegistration(commandClass, { inlineOptions: false });
- result += `${this.format(colored).bold(prefix)}${usage}
-`;
- if (options.length > 0) {
- result += `
-`;
- result += `${this.format(colored).header(`Options`)}
-`;
- const maxDefinitionLength = options.reduce((length, option) => {
- return Math.max(length, option.definition.length);
- }, 0);
- result += `
-`;
- for (const { definition, description: description2 } of options) {
- result += ` ${this.format(colored).bold(definition.padEnd(maxDefinitionLength))} ${formatMarkdownish(description2, { format: this.format(colored), paragraphs: false })}`;
- }
+ }
+ // like .pipe() but using super, because our write() is special
+ [PIPE](job) {
+ job.piped = true;
+ if (job.readdir) {
+ job.readdir.forEach((entry) => {
+ const p = job.path;
+ const base = p === "./" ? "" : p.replace(/\/*$/, "/");
+ this[ADDFSENTRY](base + entry);
+ });
}
- if (details !== ``) {
- result += `
-`;
- result += `${this.format(colored).header(`Details`)}
-`;
- result += `
-`;
- result += formatMarkdownish(details, { format: this.format(colored), paragraphs: true });
+ const source = job.entry;
+ const zip = this.zip;
+ if (!source)
+ throw new Error("cannot pipe without source");
+ if (zip) {
+ source.on("data", (chunk) => {
+ if (!zip.write(chunk)) {
+ source.pause();
+ }
+ });
+ } else {
+ source.on("data", (chunk) => {
+ if (!super.write(chunk)) {
+ source.pause();
+ }
+ });
}
- if (examples.length > 0) {
- result += `
-`;
- result += `${this.format(colored).header(`Examples`)}
-`;
- for (const [description2, example] of examples) {
- result += `
-`;
- result += formatMarkdownish(description2, { format: this.format(colored), paragraphs: false });
- result += `${example.replace(/^/m, ` ${this.format(colored).bold(prefix)}`).replace(/\$0/g, this.binaryName)}
-`;
- }
+ }
+ pause() {
+ if (this.zip) {
+ this.zip.pause();
}
+ return super.pause();
+ }
+ warn(code2, message, data = {}) {
+ warnMethod(this, code2, message, data);
+ }
+ };
+ PackSync = class extends Pack {
+ sync = true;
+ constructor(opt) {
+ super(opt);
+ this[WRITEENTRYCLASS] = WriteEntrySync;
+ }
+ // pause/resume are no-ops in sync streams.
+ pause() {
+ }
+ resume() {
}
- }
- return result;
- }
- error(error, _a) {
- var _b;
- var { colored, command = (_b = error[errorCommandSymbol]) !== null && _b !== void 0 ? _b : null } = _a === void 0 ? {} : _a;
- if (!error || typeof error !== `object` || !(`stack` in error))
- error = new Error(`Execution failed with a non-error rejection (rejected value: ${JSON.stringify(error)})`);
- let result = ``;
- let name2 = error.name.replace(/([a-z])([A-Z])/g, `$1 $2`);
- if (name2 === `Error`)
- name2 = `Internal Error`;
- result += `${this.format(colored).error(name2)}: ${error.message}
-`;
- const meta = error.clipanion;
- if (typeof meta !== `undefined`) {
- if (meta.type === `usage`) {
- result += `
-`;
- result += this.usage(command);
+ [STAT](job) {
+ const stat = this.follow ? "statSync" : "lstatSync";
+ this[ONSTAT](job, import_fs12.default[stat](job.absolute));
}
- } else {
- if (error.stack) {
- result += `${error.stack.replace(/^.*\n/, ``)}
-`;
+ [READDIR](job) {
+ this[ONREADDIR](job, import_fs12.default.readdirSync(job.absolute));
}
- }
- return result;
- }
- format(colored) {
- var _a;
- return ((_a = colored !== null && colored !== void 0 ? colored : this.enableColors) !== null && _a !== void 0 ? _a : _Cli.defaultContext.colorDepth > 1) ? richFormat : textFormat;
- }
- getUsageByRegistration(klass, opts) {
- const record = this.registrations.get(klass);
- if (typeof record === `undefined`)
- throw new Error(`Assertion failed: Unregistered command`);
- return this.getUsageByIndex(record.index, opts);
- }
- getUsageByIndex(n, opts) {
- return this.builder.getBuilderByIndex(n).usage(opts);
+ // gotta get it all in this tick
+ [PIPE](job) {
+ const source = job.entry;
+ const zip = this.zip;
+ if (job.readdir) {
+ job.readdir.forEach((entry) => {
+ const p = job.path;
+ const base = p === "./" ? "" : p.replace(/\/*$/, "/");
+ this[ADDFSENTRY](base + entry);
+ });
+ }
+ if (!source)
+ throw new Error("Cannot pipe without source");
+ if (zip) {
+ source.on("data", (chunk) => {
+ zip.write(chunk);
+ });
+ } else {
+ source.on("data", (chunk) => {
+ super[WRITE](chunk);
+ });
+ }
+ }
+ };
}
-};
-Cli.defaultContext = {
- env: process.env,
- stdin: process.stdin,
- stdout: process.stdout,
- stderr: process.stderr,
- colorDepth: (0, import_platform.getDefaultColorDepth)()
-};
-function noopCaptureActivator(fn2) {
- return fn2();
-}
-
-// .yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/advanced/builtins/index.mjs
-var builtins_exports = {};
-__export(builtins_exports, {
- DefinitionsCommand: () => DefinitionsCommand,
- HelpCommand: () => HelpCommand2,
- VersionCommand: () => VersionCommand
});
-// .yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/advanced/builtins/definitions.mjs
-var DefinitionsCommand = class extends Command {
- async execute() {
- this.context.stdout.write(`${JSON.stringify(this.cli.definitions(), null, 2)}
-`);
- }
-};
-DefinitionsCommand.paths = [[`--clipanion=definitions`]];
-
-// .yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/advanced/builtins/help.mjs
-var HelpCommand2 = class extends Command {
- async execute() {
- this.context.stdout.write(this.cli.usage());
- }
-};
-HelpCommand2.paths = [[`-h`], [`--help`]];
-
-// .yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/advanced/builtins/version.mjs
-var VersionCommand = class extends Command {
- async execute() {
- var _a;
- this.context.stdout.write(`${(_a = this.cli.binaryVersion) !== null && _a !== void 0 ? _a : ``}
-`);
- }
-};
-VersionCommand.paths = [[`-v`], [`--version`]];
-
-// .yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/advanced/options/index.mjs
-var options_exports = {};
-__export(options_exports, {
- Array: () => Array2,
- Boolean: () => Boolean2,
- Counter: () => Counter,
- Proxy: () => Proxy2,
- Rest: () => Rest,
- String: () => String2,
- applyValidator: () => applyValidator,
- cleanValidationError: () => cleanValidationError,
- formatError: () => formatError,
- isOptionSymbol: () => isOptionSymbol,
- makeCommandOption: () => makeCommandOption,
- rerouteArguments: () => rerouteArguments
+// node_modules/tar/dist/esm/create.js
+var create_exports = {};
+__export(create_exports, {
+ create: () => create
});
-
-// .yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/advanced/options/Array.mjs
-function Array2(descriptor, initialValueBase, optsBase) {
- const [initialValue, opts] = rerouteArguments(initialValueBase, optsBase !== null && optsBase !== void 0 ? optsBase : {});
- const { arity = 1 } = opts;
- const optNames = descriptor.split(`,`);
- const nameSet = new Set(optNames);
- return makeCommandOption({
- definition(builder) {
- builder.addOption({
- names: optNames,
- arity,
- hidden: opts === null || opts === void 0 ? void 0 : opts.hidden,
- description: opts === null || opts === void 0 ? void 0 : opts.description,
- required: opts.required
+var import_node_path8, createFileSync, createFile, addFilesSync, addFilesAsync, createSync, createAsync, create;
+var init_create = __esm({
+ "node_modules/tar/dist/esm/create.js"() {
+ init_esm2();
+ import_node_path8 = __toESM(require("node:path"), 1);
+ init_list();
+ init_make_command();
+ init_pack();
+ createFileSync = (opt, files) => {
+ const p = new PackSync(opt);
+ const stream = new WriteStreamSync(opt.file, {
+ mode: opt.mode || 438
});
- },
- transformer(builder, key, state) {
- let usedName;
- let currentValue = typeof initialValue !== `undefined` ? [...initialValue] : void 0;
- for (const { name: name2, value } of state.options) {
- if (!nameSet.has(name2))
- continue;
- usedName = name2;
- currentValue = currentValue !== null && currentValue !== void 0 ? currentValue : [];
- currentValue.push(value);
- }
- if (typeof currentValue !== `undefined`) {
- return applyValidator(usedName !== null && usedName !== void 0 ? usedName : key, currentValue, opts.validator);
- } else {
- return currentValue;
- }
- }
- });
-}
-
-// .yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/advanced/options/Boolean.mjs
-function Boolean2(descriptor, initialValueBase, optsBase) {
- const [initialValue, opts] = rerouteArguments(initialValueBase, optsBase !== null && optsBase !== void 0 ? optsBase : {});
- const optNames = descriptor.split(`,`);
- const nameSet = new Set(optNames);
- return makeCommandOption({
- definition(builder) {
- builder.addOption({
- names: optNames,
- allowBinding: false,
- arity: 0,
- hidden: opts.hidden,
- description: opts.description,
- required: opts.required
+ p.pipe(stream);
+ addFilesSync(p, files);
+ };
+ createFile = (opt, files) => {
+ const p = new Pack(opt);
+ const stream = new WriteStream(opt.file, {
+ mode: opt.mode || 438
});
- },
- transformer(builer, key, state) {
- let currentValue = initialValue;
- for (const { name: name2, value } of state.options) {
- if (!nameSet.has(name2))
- continue;
- currentValue = value;
- }
- return currentValue;
- }
- });
-}
-
-// .yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/advanced/options/Counter.mjs
-function Counter(descriptor, initialValueBase, optsBase) {
- const [initialValue, opts] = rerouteArguments(initialValueBase, optsBase !== null && optsBase !== void 0 ? optsBase : {});
- const optNames = descriptor.split(`,`);
- const nameSet = new Set(optNames);
- return makeCommandOption({
- definition(builder) {
- builder.addOption({
- names: optNames,
- allowBinding: false,
- arity: 0,
- hidden: opts.hidden,
- description: opts.description,
- required: opts.required
+ p.pipe(stream);
+ const promise = new Promise((res, rej) => {
+ stream.on("error", rej);
+ stream.on("close", res);
+ p.on("error", rej);
});
- },
- transformer(builder, key, state) {
- let currentValue = initialValue;
- for (const { name: name2, value } of state.options) {
- if (!nameSet.has(name2))
- continue;
- currentValue !== null && currentValue !== void 0 ? currentValue : currentValue = 0;
- if (!value) {
- currentValue = 0;
+ addFilesAsync(p, files).catch((er) => p.emit("error", er));
+ return promise;
+ };
+ addFilesSync = (p, files) => {
+ files.forEach((file) => {
+ if (file.charAt(0) === "@") {
+ list({
+ file: import_node_path8.default.resolve(p.cwd, file.slice(1)),
+ sync: true,
+ noResume: true,
+ onReadEntry: (entry) => p.add(entry)
+ });
+ } else {
+ p.add(file);
+ }
+ });
+ p.end();
+ };
+ addFilesAsync = async (p, files) => {
+ for (const file of files) {
+ if (file.charAt(0) === "@") {
+ await list({
+ file: import_node_path8.default.resolve(String(p.cwd), file.slice(1)),
+ noResume: true,
+ onReadEntry: (entry) => {
+ p.add(entry);
+ }
+ });
} else {
- currentValue += 1;
+ p.add(file);
}
}
- return currentValue;
- }
- });
-}
+ p.end();
+ };
+ createSync = (opt, files) => {
+ const p = new PackSync(opt);
+ addFilesSync(p, files);
+ return p;
+ };
+ createAsync = (opt, files) => {
+ const p = new Pack(opt);
+ addFilesAsync(p, files).catch((er) => p.emit("error", er));
+ return p;
+ };
+ create = makeCommand(createFileSync, createFile, createSync, createAsync, (_opt, files) => {
+ if (!files?.length) {
+ throw new TypeError("no paths specified to add to archive");
+ }
+ });
+ }
+});
-// .yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/advanced/options/Proxy.mjs
-function Proxy2(opts = {}) {
- return makeCommandOption({
- definition(builder, key) {
- var _a;
- builder.addProxy({
- name: (_a = opts.name) !== null && _a !== void 0 ? _a : key,
- required: opts.required
- });
- },
- transformer(builder, key, state) {
- return state.positionals.map(({ value }) => value);
- }
- });
-}
+// node_modules/semver/functions/major.js
+var require_major = __commonJS({
+ "node_modules/semver/functions/major.js"(exports2, module2) {
+ "use strict";
+ var SemVer3 = require_semver();
+ var major = (a, loose) => new SemVer3(a, loose).major;
+ module2.exports = major;
+ }
+});
-// .yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/advanced/options/Rest.mjs
-function Rest(opts = {}) {
- return makeCommandOption({
- definition(builder, key) {
- var _a;
- builder.addRest({
- name: (_a = opts.name) !== null && _a !== void 0 ? _a : key,
- required: opts.required
- });
- },
- transformer(builder, key, state) {
- const isRestPositional = (index) => {
- const positional = state.positionals[index];
- if (positional.extra === NoLimits)
- return true;
- if (positional.extra === false && index < builder.arity.leading.length)
- return true;
- return false;
- };
- let count = 0;
- while (count < state.positionals.length && isRestPositional(count))
- count += 1;
- return state.positionals.splice(0, count).map(({ value }) => value);
- }
- });
-}
+// sources/_lib.ts
+var lib_exports2 = {};
+__export(lib_exports2, {
+ runMain: () => runMain
+});
+module.exports = __toCommonJS(lib_exports2);
-// .yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/advanced/options/String.mjs
-function StringOption(descriptor, initialValueBase, optsBase) {
- const [initialValue, opts] = rerouteArguments(initialValueBase, optsBase !== null && optsBase !== void 0 ? optsBase : {});
- const { arity = 1 } = opts;
- const optNames = descriptor.split(`,`);
- const nameSet = new Set(optNames);
- return makeCommandOption({
- definition(builder) {
- builder.addOption({
- names: optNames,
- arity: opts.tolerateBoolean ? 0 : arity,
- hidden: opts.hidden,
- description: opts.description,
- required: opts.required
- });
- },
- transformer(builder, key, state, context) {
- let usedName;
- let currentValue = initialValue;
- if (typeof opts.env !== `undefined` && context.env[opts.env]) {
- usedName = opts.env;
- currentValue = context.env[opts.env];
- }
- for (const { name: name2, value } of state.options) {
- if (!nameSet.has(name2))
- continue;
- usedName = name2;
- currentValue = value;
- }
- if (typeof currentValue === `string`) {
- return applyValidator(usedName !== null && usedName !== void 0 ? usedName : key, currentValue, opts.validator);
- } else {
- return currentValue;
- }
+// sources/main.ts
+var import_clipanion17 = __toESM(require_advanced());
+
+// package.json
+var package_default = {
+ name: "corepack",
+ version: "0.36.0",
+ homepage: "https://github.com/nodejs/corepack#readme",
+ bugs: {
+ url: "https://github.com/nodejs/corepack/issues"
+ },
+ repository: {
+ type: "git",
+ url: "https://github.com/nodejs/corepack.git"
+ },
+ engines: {
+ node: "^22.22.2 || ^24.15.0 || >=26.0.0"
+ },
+ exports: {
+ "./package.json": "./package.json"
+ },
+ license: "MIT",
+ packageManager: "yarn@4.18.0+sha224.5707fce90df5d8720fae4e85a07ab55e90aa20fded8914893e2ba225",
+ devDependencies: {
+ "@types/debug": "^4.1.5",
+ "@types/node": "^22.0.0",
+ "@types/proxy-from-env": "^1",
+ "@types/semver": "^7.1.0",
+ "@types/which": "^3.0.0",
+ "@yarnpkg/eslint-config": "^3.1.1",
+ "@yarnpkg/fslib": "^3.0.0-rc.48",
+ "@zkochan/cmd-shim": "^6.0.0",
+ clipanion: "patch:clipanion@npm%3A3.2.1#~/.yarn/patches/clipanion-npm-3.2.1-fc9187f56c.patch",
+ debug: "^4.1.1",
+ esbuild: "^0.28.0",
+ eslint: "^10.8.1",
+ semver: "^7.6.3",
+ "supports-color": "^11.0.0",
+ tar: "^7.5.11",
+ typescript: "^5.7.3",
+ "v8-compile-cache": "^2.3.0",
+ vitest: "^4.0.5",
+ which: "^7.0.0"
+ },
+ dependenciesMeta: {
+ esbuild: {
+ built: true
}
- });
-}
-function StringPositional(opts = {}) {
- const { required = true } = opts;
- return makeCommandOption({
- definition(builder, key) {
- var _a;
- builder.addPositional({
- name: (_a = opts.name) !== null && _a !== void 0 ? _a : key,
- required: opts.required
- });
+ },
+ scripts: {
+ build: "run clean && run build:bundle && node ./mkshims.ts",
+ "build:bundle": "esbuild ./sources/_lib.ts --bundle --platform=node --target=node22.22.2 --external:corepack --outfile='./dist/lib/corepack.cjs' --resolve-extensions='.ts,.mjs,.js'",
+ clean: "run rimraf dist shims",
+ corepack: "node ./sources/_cli.ts",
+ lint: "eslint",
+ prepack: "yarn build",
+ postpack: "run clean",
+ rimraf: "node -e 'for(let i=2;i __toESM(require_proxy_from_env()));
- const proxy = getProxyForUrl(input);
- if (!proxy) return void 0;
- if (ProxyAgent == null) {
- const [api, Dispatcher, _ProxyAgent] = await Promise.all([
- // @ts-expect-error internal module is untyped
- Promise.resolve().then(() => __toESM(require_api())),
- // @ts-expect-error internal module is untyped
- Promise.resolve().then(() => __toESM(require_dispatcher())),
- // @ts-expect-error internal module is untyped
- Promise.resolve().then(() => __toESM(require_proxy_agent()))
- ]);
- Object.assign(Dispatcher.default.prototype, api.default);
- ProxyAgent = _ProxyAgent.default;
- }
- return new ProxyAgent(proxy);
-}
// sources/nodeUtils.ts
var import_os2 = __toESM(require("os"));
@@ -22336,8 +13398,8 @@ async function download(installTarget, url, algo, binPath = null) {
async function installVersion(installTarget, locator, { spec }) {
const locatorIsASupportedPackageManager = isSupportedPackageManagerLocator(locator);
const locatorReference = locatorIsASupportedPackageManager ? (0, import_parse3.default)(locator.reference) : parseURLReference(locator);
- const { version: version2, build } = locatorReference;
- const installFolder = import_path3.default.join(installTarget, locator.name, version2);
+ const { version, build } = locatorReference;
+ const installFolder = import_path3.default.join(installTarget, locator.name, version);
try {
const corepackFile = import_path3.default.join(installFolder, `.corepack`);
const corepackContent = await import_fs4.default.promises.readFile(corepackFile, `utf8`);
@@ -22353,16 +13415,34 @@ async function installVersion(installTarget, locator, { spec }) {
throw err;
}
}
+ const registry = getRegistryFromPackageManagerSpec(spec);
+ const canVerifySignature = registry.type === `npm` && !registry.bin && !shouldSkipIntegrityCheck();
+ if (!build[1]) {
+ const { COREPACK_ON_UNVERIFIED_DOWNLOAD } = process.env;
+ log(`No hash provided${canVerifySignature ? `` : `, and signature cannot be verified`}; checking COREPACK_ON_UNVERIFIED_DOWNLOAD, set to: ${COREPACK_ON_UNVERIFIED_DOWNLOAD}`);
+ const mode = COREPACK_ON_UNVERIFIED_DOWNLOAD?.toUpperCase();
+ const isStrict = mode === `STRICT-ERROR` || mode === `STRICT-WARN`;
+ if (isStrict || !canVerifySignature) {
+ const reason = canVerifySignature ? `is not pinned by a hash` : `could not be verified`;
+ switch (mode) {
+ case `ERROR`:
+ case `STRICT-ERROR`:
+ throw new Error(`Integrity of ${locator.name}@${version} ${reason}. Downloading unverified versions is disabled by the COREPACK_ON_UNVERIFIED_DOWNLOAD env variable. Please provide a hash.`);
+ case `WARN`:
+ case `STRICT-WARN`:
+ console.warn(`Integrity of ${locator.name}@${version} ${reason}. Consider providing a hash. Set COREPACK_ON_UNVERIFIED_DOWNLOAD to 'ignore' to remove this warning.`);
+ }
+ }
+ }
let url;
let signatures;
let integrity;
let binPath = null;
if (locatorIsASupportedPackageManager) {
- url = spec.url.replace(`{}`, version2);
+ url = spec.url.replace(`{}`, version);
if (process.env.COREPACK_NPM_REGISTRY) {
- const registry = getRegistryFromPackageManagerSpec(spec);
if (registry.type === `npm`) {
- ({ tarball: url, signatures, integrity } = await fetchTarballURLAndSignature(registry.package, version2));
+ ({ tarball: url, signatures, integrity } = await fetchTarballURLAndSignature(registry.package, version));
if (registry.bin) {
binPath = registry.bin;
}
@@ -22373,7 +13453,7 @@ async function installVersion(installTarget, locator, { spec }) {
);
}
} else {
- url = decodeURIComponent(version2);
+ url = decodeURIComponent(version);
if (process.env.COREPACK_NPM_REGISTRY && url.startsWith(DEFAULT_NPM_REGISTRY_URL)) {
url = url.replace(
DEFAULT_NPM_REGISTRY_URL,
@@ -22381,7 +13461,7 @@ async function installVersion(installTarget, locator, { spec }) {
);
}
}
- log(`Installing ${locator.name}@${version2} from ${url}`);
+ log(`Installing ${locator.name}@${version} from ${url}`);
const algo = build[0] ?? `sha512`;
const { tmpFolder, outputFile, hash: actualHash } = await download(installTarget, url, algo, binPath);
let bin;
@@ -22406,17 +13486,16 @@ async function installVersion(installTarget, locator, { spec }) {
}
}
}
- if (!build[1]) {
- const registry = getRegistryFromPackageManagerSpec(spec);
- if (registry.type === `npm` && !registry.bin && !shouldSkipIntegrityCheck()) {
- if (signatures == null || integrity == null)
- ({ signatures, integrity } = await fetchTarballURLAndSignature(registry.package, version2));
- verifySignature({ signatures, integrity, packageName: registry.package, version: version2 });
- build[1] = Buffer.from(integrity.slice(`sha512-`.length), `base64`).toString(`hex`);
- }
+ if (!build[1] && canVerifySignature && registry.type === `npm`) {
+ if (signatures == null || integrity == null)
+ ({ signatures, integrity } = await fetchTarballURLAndSignature(registry.package, version));
+ verifySignature({ signatures, integrity, packageName: registry.package, version });
+ build[1] = Buffer.from(integrity.slice(`sha512-`.length), `base64`).toString(`hex`);
}
- if (build[1] && actualHash !== build[1])
+ if (build[1] && actualHash !== build[1]) {
+ await import_fs4.default.promises.rm(tmpFolder, { recursive: true, force: true });
throw new Error(`Mismatch hashes. Expected ${build[1]}, got ${actualHash}`);
+ }
const serializedHash = `${algo}.${actualHash}`;
await import_fs4.default.promises.writeFile(import_path3.default.join(tmpFolder, `.corepack`), JSON.stringify({
locator,
@@ -22522,18 +13601,18 @@ function shouldSkipIntegrityCheck() {
// sources/semverUtils.ts
var import_range2 = __toESM(require_range());
var import_semver2 = __toESM(require_semver());
-function satisfiesWithPrereleases(version2, range, loose = false) {
+function satisfiesWithPrereleases(version, range, loose = false) {
let semverRange;
try {
semverRange = new import_range2.default(range, loose);
} catch (err) {
return false;
}
- if (!version2)
+ if (!version)
return false;
let semverVersion;
try {
- semverVersion = new import_semver2.default(version2, semverRange.loose);
+ semverVersion = new import_semver2.default(version, semverRange.loose);
if (semverVersion.prerelease) {
semverVersion.prerelease = [];
}
@@ -22551,6 +13630,7 @@ function satisfiesWithPrereleases(version2, range, loose = false) {
}
// sources/specUtils.ts
+var import_clipanion4 = __toESM(require_advanced());
var import_fs5 = __toESM(require("fs"));
var import_path4 = __toESM(require("path"));
var import_satisfies = __toESM(require_satisfies());
@@ -22559,19 +13639,13 @@ var import_valid2 = __toESM(require_valid2());
var import_util = require("util");
// sources/types.ts
-var SupportedPackageManagers = /* @__PURE__ */ ((SupportedPackageManagers3) => {
- SupportedPackageManagers3["Npm"] = `npm`;
- SupportedPackageManagers3["Pnpm"] = `pnpm`;
- SupportedPackageManagers3["Yarn"] = `yarn`;
- return SupportedPackageManagers3;
-})(SupportedPackageManagers || {});
+var supportedPackageManagersList = [`npm`, `pnpm`, `yarn`];
var SupportedPackageManagerSet = new Set(
- Object.values(SupportedPackageManagers)
+ supportedPackageManagersList
);
var SupportedPackageManagerSetWithoutNpm = new Set(
- Object.values(SupportedPackageManagers)
+ supportedPackageManagersList.filter((pm) => pm !== `npm`)
);
-SupportedPackageManagerSetWithoutNpm.delete("npm" /* Npm */);
function isSupportedPackageManager(value) {
return SupportedPackageManagerSet.has(value);
}
@@ -22580,14 +13654,14 @@ function isSupportedPackageManager(value) {
var nodeModulesRegExp = /[\\/]node_modules[\\/](@[^\\/]*[\\/])?([^@\\/][^\\/]*)$/;
function parseSpec(raw2, source, { enforceExactVersion = true } = {}) {
if (typeof raw2 !== `string`)
- throw new UsageError(`Invalid package manager specification in ${source}; expected a string`);
+ throw new import_clipanion4.UsageError(`Invalid package manager specification in ${source}; expected a string`);
const atIndex = raw2.indexOf(`@`);
if (atIndex === -1 || atIndex === raw2.length - 1) {
if (enforceExactVersion)
- throw new UsageError(`No version specified for ${raw2} in "packageManager" of ${source}`);
+ throw new import_clipanion4.UsageError(`No version specified for ${raw2} in "packageManager" of ${source}`);
const name3 = atIndex === -1 ? raw2 : raw2.slice(0, -1);
if (!isSupportedPackageManager(name3))
- throw new UsageError(`Unsupported package manager specification (${name3})`);
+ throw new import_clipanion4.UsageError(`Unsupported package manager specification (${name3})`);
return {
name: name3,
range: `*`
@@ -22598,25 +13672,28 @@ function parseSpec(raw2, source, { enforceExactVersion = true } = {}) {
const isURL = URL.canParse(range);
if (!isURL) {
if (enforceExactVersion && !(0, import_valid.default)(range))
- throw new UsageError(`Invalid package manager specification in ${source} (${raw2}); expected a semver version${enforceExactVersion ? `` : `, range, or tag`}`);
+ throw new import_clipanion4.UsageError(`Invalid package manager specification in ${source} (${raw2}); expected a semver version${enforceExactVersion ? `` : `, range, or tag`}`);
if (!isSupportedPackageManager(name2)) {
- throw new UsageError(`Unsupported package manager specification (${raw2})`);
+ throw new import_clipanion4.UsageError(`Unsupported package manager specification (${raw2})`);
}
} else if (isSupportedPackageManager(name2) && process.env.COREPACK_ENABLE_UNSAFE_CUSTOM_URLS !== `1`) {
- throw new UsageError(`Illegal use of URL for known package manager. Instead, select a specific version, or set COREPACK_ENABLE_UNSAFE_CUSTOM_URLS=1 in your environment (${raw2})`);
+ throw new import_clipanion4.UsageError(`Illegal use of URL for known package manager. Instead, select a specific version, or set COREPACK_ENABLE_UNSAFE_CUSTOM_URLS=1 in your environment (${raw2})`);
}
return {
name: name2,
range
};
}
+function devEnginesToDescriptor({ name: name2, version }) {
+ return { name: name2, range: version ?? `*` };
+}
function warnOrThrow(errorMessage, onFail) {
switch (onFail) {
case `ignore`:
break;
case `error`:
case void 0:
- throw new UsageError(errorMessage);
+ throw new import_clipanion4.UsageError(errorMessage);
default:
console.warn(`! Corepack validation warning: ${errorMessage}`);
}
@@ -22627,44 +13704,45 @@ function parsePackageJSON(packageJSONContent) {
const { packageManager } = packageJSONContent.devEngines;
if (typeof packageManager !== `object`) {
console.warn(`! Corepack only supports objects as valid value for devEngines.packageManager. The current value (${JSON.stringify(packageManager)}) will be ignored.`);
- return pm;
+ return { packageManagerField: pm };
}
if (Array.isArray(packageManager)) {
console.warn(`! Corepack does not currently support array values for devEngines.packageManager`);
- return pm;
+ return { packageManagerField: pm };
}
- const { name: name2, version: version2, onFail } = packageManager;
+ const { name: name2, version, onFail } = packageManager;
if (typeof name2 !== `string` || name2.includes(`@`)) {
warnOrThrow(`The value of devEngines.packageManager.name ${JSON.stringify(name2)} is not a supported string value`, onFail);
- return pm;
+ return { packageManagerField: pm };
}
- if (version2 != null && (typeof version2 !== `string` || !(0, import_valid2.default)(version2))) {
- warnOrThrow(`The value of devEngines.packageManager.version ${JSON.stringify(version2)} is not a valid semver range`, onFail);
- return pm;
+ if (version != null && (typeof version !== `string` || !(0, import_valid2.default)(version))) {
+ warnOrThrow(`The value of devEngines.packageManager.version ${JSON.stringify(version)} is not a valid semver range`, onFail);
+ return { packageManagerField: pm };
}
- log(`devEngines.packageManager defines that ${name2}@${version2} is the local package manager`);
+ log(`devEngines.packageManager defines that ${name2}${version ? `@${version}` : ``} should be the local package manager`);
if (pm) {
- if (!pm.startsWith?.(`${name2}@`))
+ if (!pm.startsWith?.(`${name2}@`)) {
warnOrThrow(`"packageManager" field is set to ${JSON.stringify(pm)} which does not match the "devEngines.packageManager" field set to ${JSON.stringify(name2)}`, onFail);
- else if (version2 != null && !(0, import_satisfies.default)(pm.slice(packageManager.name.length + 1), version2))
- warnOrThrow(`"packageManager" field is set to ${JSON.stringify(pm)} which does not match the value defined in "devEngines.packageManager" for ${JSON.stringify(name2)} of ${JSON.stringify(version2)}`, onFail);
- return pm;
+ } else if (version != null && !(0, import_satisfies.default)(pm.slice(name2.length + 1), version)) {
+ warnOrThrow(`"packageManager" field is set to ${JSON.stringify(pm)} which does not match the value defined in "devEngines.packageManager" for ${JSON.stringify(name2)} of ${JSON.stringify(version)}`, onFail);
+ }
}
- return `${name2}@${version2 ?? `*`}`;
+ return { packageManagerField: pm, devEnginesPackageManager: { name: name2, version, onFail } };
}
- return pm;
+ return { packageManagerField: pm };
}
async function setLocalPackageManager(cwd, info) {
- const lookup = await loadSpec(cwd);
- const range = `range` in lookup && lookup.range;
- if (range) {
- if (info.locator.name !== range.name || !(0, import_satisfies.default)(info.locator.reference, range.range)) {
- warnOrThrow(`The requested version of ${info.locator.name}@${info.locator.reference} does not match the devEngines specification (${range.name}@${range.range})`, range.onFail);
+ const lookup = await loadSpecAndEnv(cwd);
+ const projectFound = lookup.type !== `NoProject`;
+ const devEnginesValue = projectFound ? lookup.devEnginesValue : void 0;
+ if (devEnginesValue) {
+ if (info.locator.name !== devEnginesValue.name || devEnginesValue.version != null && !(0, import_satisfies.default)(info.locator.reference, devEnginesValue.version)) {
+ warnOrThrow(`The requested version of ${info.locator.name}@${info.locator.reference} does not match the devEngines specification (${devEnginesValue.name}@${devEnginesValue.version ?? `*`})`, devEnginesValue.onFail);
}
}
- const content = lookup.type !== `NoProject` ? await import_fs5.default.promises.readFile(lookup.target, `utf8`) : ``;
+ const content = projectFound ? await import_fs5.default.promises.readFile(lookup.target, `utf8`) : ``;
const { data, indent } = readPackageJson(content);
- const previousPackageManager = data.packageManager ?? (range ? `${range.name}@${range.range}` : `unknown`);
+ const previousPackageManager = data.packageManager ?? (devEnginesValue ? `${devEnginesValue.name}@${devEnginesValue.version ?? `*`}` : `unknown`);
data.packageManager = `${info.locator.name}@${info.locator.reference}`;
const newContent = normalizeLineEndings(content, `${JSON.stringify(data, null, indent)}
`);
@@ -22673,15 +13751,43 @@ async function setLocalPackageManager(cwd, info) {
previousPackageManager
};
}
-async function loadSpec(initialCwd) {
+async function loadEnvFileIfExists(cwd) {
+ const envFilePath = import_path4.default.resolve(cwd, process.env.COREPACK_ENV_FILE ?? `.corepack.env`);
+ if (process.env.COREPACK_ENV_FILE == `0`) {
+ log(`Skipping env file as configured with COREPACK_ENV_FILE`);
+ return void 0;
+ }
+ log(`Checking ${envFilePath}`);
+ try {
+ const localEnv = {
+ ...Object.fromEntries(Object.entries((0, import_util.parseEnv)(await import_fs5.default.promises.readFile(envFilePath, `utf8`))).filter((e) => e[0].startsWith(`COREPACK_`))),
+ ...process.env
+ };
+ log(`Successfully loaded env file found at ${envFilePath}`);
+ return { env: localEnv, path: envFilePath };
+ } catch (err) {
+ if (err?.code !== `ENOENT`)
+ throw err;
+ log(`No env file found at ${envFilePath}`);
+ }
+ return void 0;
+}
+async function loadSpecAndEnv(initialCwd, { envOnly } = { envOnly: false }) {
let nextCwd = initialCwd;
let currCwd = ``;
let selection = null;
+ let localEnv = void 0;
while (nextCwd !== currCwd && (!selection || !selection.data.packageManager)) {
currCwd = nextCwd;
nextCwd = import_path4.default.dirname(currCwd);
if (nodeModulesRegExp.test(currCwd))
continue;
+ if (process.env.COREPACK_ENV_FILE !== `0` && !localEnv)
+ localEnv = await loadEnvFileIfExists(currCwd);
+ if (envOnly) {
+ if (localEnv) break;
+ continue;
+ }
const manifestPath = import_path4.default.join(currCwd, `package.json`);
log(`Checking ${manifestPath}`);
let content;
@@ -22697,54 +13803,42 @@ async function loadSpec(initialCwd) {
} catch {
}
if (typeof data !== `object` || data === null)
- throw new UsageError(`Invalid package.json in ${import_path4.default.relative(initialCwd, manifestPath)}`);
- let localEnv;
- const envFilePath2 = import_path4.default.resolve(currCwd, process.env.COREPACK_ENV_FILE ?? `.corepack.env`);
- if (process.env.COREPACK_ENV_FILE == `0`) {
- log(`Skipping env file as configured with COREPACK_ENV_FILE`);
- localEnv = process.env;
- } else if (typeof import_util.parseEnv !== `function`) {
- log(`Skipping env file as it is not supported by the current version of Node.js`);
- localEnv = process.env;
- } else {
- log(`Checking ${envFilePath2}`);
- try {
- localEnv = {
- ...Object.fromEntries(Object.entries((0, import_util.parseEnv)(await import_fs5.default.promises.readFile(envFilePath2, `utf8`))).filter((e) => e[0].startsWith(`COREPACK_`))),
- ...process.env
- };
- log(`Successfully loaded env file found at ${envFilePath2}`);
- } catch (err) {
- if (err?.code !== `ENOENT`)
- throw err;
- log(`No env file found at ${envFilePath2}`);
- localEnv = process.env;
- }
- }
- selection = { data, manifestPath, localEnv, envFilePath: envFilePath2 };
+ throw new import_clipanion4.UsageError(`Invalid package.json in ${import_path4.default.relative(currCwd, manifestPath)}`);
+ selection = { data, manifestPath };
}
+ if (localEnv)
+ process.env = localEnv.env;
if (selection === null)
- return { type: `NoProject`, target: import_path4.default.join(initialCwd, `package.json`) };
- let envFilePath;
- if (selection.localEnv !== process.env) {
- envFilePath = selection.envFilePath;
- process.env = selection.localEnv;
- }
- const rawPmSpec = parsePackageJSON(selection.data);
- if (typeof rawPmSpec === `undefined`)
- return { type: `NoSpec`, target: selection.manifestPath };
- log(`${selection.manifestPath} defines ${rawPmSpec} as local package manager`);
+ return { type: `NoProject`, target: import_path4.default.join(initialCwd, `package.json`), envFilePath: localEnv?.path };
+ const { packageManagerField, devEnginesPackageManager } = parsePackageJSON(selection.data);
+ if (devEnginesPackageManager != null && !packageManagerField) {
+ const { name: name2, version } = devEnginesPackageManager;
+ if (!version || !(0, import_valid.default)(version)) {
+ log(`${selection.manifestPath} defines ${name2} as local package manager using devEngines.packageManager, without an exact version`);
+ return { type: `NoSpec`, target: selection.manifestPath, envFilePath: localEnv?.path, devEnginesValue: devEnginesPackageManager };
+ }
+ log(`${selection.manifestPath} defines ${name2}@${version} as local package manager using devEngines.packageManager`);
+ return {
+ type: `Found`,
+ target: selection.manifestPath,
+ field: `devEngines.packageManager`,
+ envFilePath: localEnv?.path,
+ devEnginesValue: devEnginesPackageManager,
+ // Lazy-loading it so we do not throw errors on commands that do not need valid spec.
+ getSpec: ({ enforceExactVersion = true } = {}) => parseSpec(`${name2}@${version}`, import_path4.default.relative(initialCwd, selection.manifestPath), { enforceExactVersion })
+ };
+ }
+ if (packageManagerField === void 0)
+ return { type: `NoSpec`, target: selection.manifestPath, envFilePath: localEnv?.path };
+ log(`${selection.manifestPath} defines ${packageManagerField} as local package manager using the packageManager field`);
return {
type: `Found`,
target: selection.manifestPath,
- envFilePath,
- range: selection.data.devEngines?.packageManager?.version && {
- name: selection.data.devEngines.packageManager.name,
- range: selection.data.devEngines.packageManager.version,
- onFail: selection.data.devEngines.packageManager.onFail
- },
+ field: `packageManager`,
+ envFilePath: localEnv?.path,
+ devEnginesValue: devEnginesPackageManager,
// Lazy-loading it so we do not throw errors on commands that do not need valid spec.
- getSpec: ({ enforceExactVersion = true } = {}) => parseSpec(rawPmSpec, import_path4.default.relative(initialCwd, selection.manifestPath), { enforceExactVersion })
+ getSpec: ({ enforceExactVersion = true } = {}) => parseSpec(packageManagerField, import_path4.default.relative(initialCwd, selection.manifestPath), { enforceExactVersion })
};
}
@@ -22808,6 +13902,7 @@ async function activatePackageManager(lastKnownGood, locator) {
await createLastKnownGoodFile(lastKnownGood);
}
var Engine = class {
+ config;
constructor(config = config_default) {
this.config = config;
}
@@ -22841,7 +13936,7 @@ var Engine = class {
}
const definition = this.config.definitions[locator.name];
if (typeof definition === `undefined`)
- throw new UsageError(`This package manager (${locator.name}) isn't supported by this corepack build`);
+ throw new import_clipanion5.UsageError(`This package manager (${locator.name}) isn't supported by this corepack build`);
const ranges = Object.keys(definition.ranges).reverse();
const range = ranges.find((range2) => satisfiesWithPrereleases(locator.reference, range2));
if (typeof range === `undefined`)
@@ -22867,7 +13962,7 @@ var Engine = class {
async getDefaultVersion(packageManager) {
const definition = this.config.definitions[packageManager];
if (typeof definition === `undefined`)
- throw new UsageError(`This package manager (${packageManager}) isn't supported by this corepack build`);
+ throw new import_clipanion5.UsageError(`This package manager (${packageManager}) isn't supported by this corepack build`);
const lastKnownGood = await getLastKnownGood();
const lastKnownGoodForThisPackageManager = getLastKnownGoodFromFileContent(lastKnownGood, packageManager);
if (lastKnownGoodForThisPackageManager) {
@@ -22937,7 +14032,7 @@ var Engine = class {
if (import_process3.default.env.COREPACK_ENABLE_STRICT === `0`)
transparent = true;
while (true) {
- const result = await loadSpec(initialCwd);
+ const result = await loadSpecAndEnv(initialCwd);
switch (result.type) {
case `NoProject`: {
if (typeof locator.reference === `function`)
@@ -22946,12 +14041,18 @@ var Engine = class {
return fallbackDescriptor;
}
case `NoSpec`: {
- if (typeof locator.reference === `function`)
+ const { devEnginesValue } = result;
+ const nameMatches = devEnginesValue != null && devEnginesValue.name === fallbackDescriptor.name;
+ if (devEnginesValue != null && !nameMatches && !transparent)
+ warnOrThrow(`This project is configured to use ${devEnginesValue.name} because ${result.target} has a "devEngines.packageManager" field`, devEnginesValue.onFail);
+ if (nameMatches && devEnginesValue.version)
+ fallbackDescriptor.range = devEnginesValue.version;
+ else if (typeof locator.reference === `function`)
fallbackDescriptor.range = await locator.reference();
if (import_process3.default.env.COREPACK_ENABLE_AUTO_PIN === `1`) {
const resolved = await this.resolveDescriptor(fallbackDescriptor, { allowTags: true });
if (resolved === null)
- throw new UsageError(`Failed to successfully resolve '${fallbackDescriptor.range}' to a valid ${fallbackDescriptor.name} release`);
+ throw new import_clipanion5.UsageError(`Failed to successfully resolve '${fallbackDescriptor.range}' to a valid ${fallbackDescriptor.name} release`);
const installSpec = await this.ensurePackageManager(resolved);
console.error(`! The local project doesn't define a 'packageManager' field. Corepack will now add one referencing ${installSpec.locator.name}@${installSpec.locator.reference}.`);
console.error(`! For more details about this field, consult the documentation at https://nodejs.org/api/packages.html#packagemanager`);
@@ -22970,7 +14071,7 @@ var Engine = class {
log(`Falling back to ${fallbackDescriptor.name}@${fallbackDescriptor.range} in a ${spec.name}@${spec.range} project`);
return fallbackDescriptor;
} else {
- throw new UsageError(`This project is configured to use ${spec.name} because ${result.target} has a "packageManager" field`);
+ throw new import_clipanion5.UsageError(`This project is configured to use ${spec.name} because ${result.target} has a "${result.field}" field`);
}
} else {
log(`Using ${spec.name}@${spec.range} as defined in project manifest ${result.target}`);
@@ -23006,14 +14107,14 @@ var Engine = class {
descriptor.range = binaryVersion;
const resolved = await this.resolveDescriptor(descriptor, { allowTags: true });
if (resolved === null)
- throw new UsageError(`Failed to successfully resolve '${descriptor.range}' to a valid ${descriptor.name} release`);
+ throw new import_clipanion5.UsageError(`Failed to successfully resolve '${descriptor.range}' to a valid ${descriptor.name} release`);
const installSpec = await this.ensurePackageManager(resolved);
return await runVersion(resolved, installSpec, binaryName, args);
}
async resolveDescriptor(descriptor, { allowTags = false, useCache = true } = {}) {
if (!isSupportedPackageManagerDescriptor(descriptor)) {
if (import_process3.default.env.COREPACK_ENABLE_UNSAFE_CUSTOM_URLS !== `1` && isSupportedPackageManager(descriptor.name))
- throw new UsageError(`Illegal use of URL for known package manager. Instead, select a specific version, or set COREPACK_ENABLE_UNSAFE_CUSTOM_URLS=1 in your environment (${descriptor.name}@${descriptor.range})`);
+ throw new import_clipanion5.UsageError(`Illegal use of URL for known package manager. Instead, select a specific version, or set COREPACK_ENABLE_UNSAFE_CUSTOM_URLS=1 in your environment (${descriptor.name}@${descriptor.range})`);
return {
name: descriptor.name,
reference: descriptor.range
@@ -23021,18 +14122,18 @@ var Engine = class {
}
const definition = this.config.definitions[descriptor.name];
if (typeof definition === `undefined`)
- throw new UsageError(`This package manager (${descriptor.name}) isn't supported by this corepack build`);
+ throw new import_clipanion5.UsageError(`This package manager (${descriptor.name}) isn't supported by this corepack build`);
let finalDescriptor = descriptor;
if (!(0, import_valid3.default)(descriptor.range) && !(0, import_valid4.default)(descriptor.range)) {
if (!allowTags)
- throw new UsageError(`Packages managers can't be referenced via tags in this context`);
+ throw new import_clipanion5.UsageError(`Packages managers can't be referenced via tags in this context`);
const ranges = Object.keys(definition.ranges);
const tagRange = ranges[ranges.length - 1];
const packageManagerSpec = definition.ranges[tagRange];
const registry = getRegistryFromPackageManagerSpec(packageManagerSpec);
const tags = await fetchAvailableTags2(registry);
if (!Object.hasOwn(tags, descriptor.range))
- throw new UsageError(`Tag not found (${descriptor.range})`);
+ throw new import_clipanion5.UsageError(`Tag not found (${descriptor.range})`);
finalDescriptor = {
name: descriptor.name,
range: tags[descriptor.range]
@@ -23047,7 +14148,7 @@ var Engine = class {
const packageManagerSpec = definition.ranges[range];
const registry = getRegistryFromPackageManagerSpec(packageManagerSpec);
const versions2 = await fetchAvailableVersions2(registry);
- return versions2.filter((version2) => satisfiesWithPrereleases(version2, finalDescriptor.range));
+ return versions2.filter((version) => satisfiesWithPrereleases(version, finalDescriptor.range));
}));
const highestVersion = [...new Set(versions.flat())].sort(import_rcompare.default);
if (highestVersion.length === 0)
@@ -23057,13 +14158,14 @@ var Engine = class {
};
// sources/commands/Cache.ts
+var import_clipanion6 = __toESM(require_advanced());
var import_fs7 = __toESM(require("fs"));
-var CacheCommand = class extends Command {
+var CacheCommand = class extends import_clipanion6.Command {
static paths = [
[`cache`, `clean`],
[`cache`, `clear`]
];
- static usage = Command.Usage({
+ static usage = import_clipanion6.Command.Usage({
description: `Cleans Corepack cache`,
details: `
Removes Corepack cache directory from your local disk.
@@ -23075,14 +14177,15 @@ var CacheCommand = class extends Command {
};
// sources/commands/Disable.ts
+var import_clipanion7 = __toESM(require_advanced());
var import_fs8 = __toESM(require("fs"));
var import_path6 = __toESM(require("path"));
var import_which = __toESM(require_lib());
-var DisableCommand = class extends Command {
+var DisableCommand = class extends import_clipanion7.Command {
static paths = [
[`disable`]
];
- static usage = Command.Usage({
+ static usage = import_clipanion7.Command.Usage({
description: `Remove the Corepack shims from the install directory`,
details: `
When run, this command will remove the shims for the specified package managers from the install directory, or all shims if no parameters are passed.
@@ -23100,10 +14203,10 @@ var DisableCommand = class extends Command {
`$0 disable yarn`
]]
});
- installDirectory = options_exports.String(`--install-directory`, {
+ installDirectory = import_clipanion7.Option.String(`--install-directory`, {
description: `Where the shims are located`
});
- names = options_exports.Rest();
+ names = import_clipanion7.Option.Rest();
async execute() {
let installDirectory = this.installDirectory;
if (typeof installDirectory === `undefined`)
@@ -23112,7 +14215,7 @@ var DisableCommand = class extends Command {
const allBinNames = [];
for (const name2 of new Set(names)) {
if (!isSupportedPackageManager(name2))
- throw new UsageError(`Invalid package manager name '${name2}'`);
+ throw new import_clipanion7.UsageError(`Invalid package manager name '${name2}'`);
const binNames = this.context.engine.getBinariesFor(name2);
allBinNames.push(...binNames);
}
@@ -23149,14 +14252,15 @@ var DisableCommand = class extends Command {
// sources/commands/Enable.ts
var import_cmd_shim = __toESM(require_cmd_shim());
+var import_clipanion8 = __toESM(require_advanced());
var import_fs9 = __toESM(require("fs"));
var import_path7 = __toESM(require("path"));
var import_which2 = __toESM(require_lib());
-var EnableCommand = class extends Command {
+var EnableCommand = class extends import_clipanion8.Command {
static paths = [
[`enable`]
];
- static usage = Command.Usage({
+ static usage = import_clipanion8.Command.Usage({
description: `Add the Corepack shims to the install directory`,
details: `
When run, this command will check whether the shims for the specified package managers can be found with the correct values inside the install directory. If not, or if they don't exist, they will be created.
@@ -23174,10 +14278,10 @@ var EnableCommand = class extends Command {
`$0 enable yarn`
]]
});
- installDirectory = options_exports.String(`--install-directory`, {
+ installDirectory = import_clipanion8.Option.String(`--install-directory`, {
description: `Where the shims are to be installed`
});
- names = options_exports.Rest();
+ names = import_clipanion8.Option.Rest();
async execute() {
let installDirectory = this.installDirectory;
if (typeof installDirectory === `undefined`)
@@ -23191,7 +14295,7 @@ var EnableCommand = class extends Command {
const allBinNames = [];
for (const name2 of new Set(names)) {
if (!isSupportedPackageManager(name2))
- throw new UsageError(`Invalid package manager name '${name2}'`);
+ throw new import_clipanion8.UsageError(`Invalid package manager name '${name2}'`);
const binNames = this.context.engine.getBinariesFor(name2);
allBinNames.push(...binNames);
}
@@ -23226,24 +14330,33 @@ var EnableCommand = class extends Command {
};
// sources/commands/InstallGlobal.ts
+var import_clipanion10 = __toESM(require_advanced());
var import_fs10 = __toESM(require("fs"));
var import_path8 = __toESM(require("path"));
// sources/commands/Base.ts
-var BaseCommand = class extends Command {
+var import_clipanion9 = __toESM(require_advanced());
+var BaseCommand = class extends import_clipanion9.Command {
async resolvePatternsToDescriptors({ patterns }) {
const resolvedSpecs = patterns.map((pattern) => parseSpec(pattern, `CLI arguments`, { enforceExactVersion: false }));
if (resolvedSpecs.length === 0) {
- const lookup = await loadSpec(this.context.cwd);
+ const lookup = await loadSpecAndEnv(this.context.cwd);
switch (lookup.type) {
case `NoProject`:
- throw new UsageError(`Couldn't find a project in the local directory - please specify the package manager to pack, or run this command from a valid project`);
- case `NoSpec`:
- throw new UsageError(`The local project doesn't feature a 'packageManager' field nor a 'devEngines.packageManager' field - please specify the package manager to pack, or update the manifest to reference it`);
+ throw new import_clipanion9.UsageError(`Couldn't find a project in the local directory - please specify the package manager to pack, or run this command from a valid project`);
+ case `NoSpec`: {
+ const { devEnginesValue } = lookup;
+ if (devEnginesValue?.version)
+ return [devEnginesToDescriptor(devEnginesValue)];
+ throw new import_clipanion9.UsageError(`The local project doesn't feature a 'packageManager' field ${devEnginesValue ? `` : `nor a 'devEngines.packageManager' field `}- please specify the package manager to pack, or update the manifest to reference it`);
+ }
default: {
- return [lookup.range ?? lookup.getSpec()];
+ const { devEnginesValue } = lookup;
+ return [devEnginesValue?.version ? devEnginesToDescriptor(devEnginesValue) : lookup.getSpec()];
}
}
+ } else {
+ await loadSpecAndEnv(this.context.cwd, { envOnly: true });
}
return resolvedSpecs;
}
@@ -23267,7 +14380,7 @@ var InstallGlobalCommand = class extends BaseCommand {
static paths = [
[`install`]
];
- static usage = Command.Usage({
+ static usage = import_clipanion10.Command.Usage({
description: `Install package managers on the system`,
details: `
Download the selected package managers and install them on the system.
@@ -23282,16 +14395,16 @@ var InstallGlobalCommand = class extends BaseCommand {
`corepack install -g pnpm`
]]
});
- global = options_exports.Boolean(`-g,--global`, {
+ global = import_clipanion10.Option.Boolean(`-g,--global`, {
required: true
});
- cacheOnly = options_exports.Boolean(`--cache-only`, false, {
+ cacheOnly = import_clipanion10.Option.Boolean(`--cache-only`, false, {
description: `If true, the package managers will only be cached, not set as new defaults`
});
- args = options_exports.Rest();
+ args = import_clipanion10.Option.Rest();
async execute() {
if (this.args.length === 0)
- throw new UsageError(`No package managers specified`);
+ throw new import_clipanion10.UsageError(`No package managers specified`);
await Promise.all(this.args.map((arg) => {
if (arg.endsWith(`.tgz`)) {
return this.installFromTarball(import_path8.default.resolve(this.context.cwd, arg));
@@ -23312,7 +14425,7 @@ var InstallGlobalCommand = class extends BaseCommand {
async installFromDescriptor(descriptor) {
const resolved = await this.context.engine.resolveDescriptor(descriptor, { allowTags: true, useCache: false });
if (resolved === null)
- throw new UsageError(`Failed to successfully resolve '${descriptor.range}' to a valid ${descriptor.name} release`);
+ throw new import_clipanion10.UsageError(`Failed to successfully resolve '${descriptor.range}' to a valid ${descriptor.name} release`);
this.log(resolved);
await this.context.engine.ensurePackageManager(resolved);
if (!this.cacheOnly) {
@@ -23338,12 +14451,12 @@ var InstallGlobalCommand = class extends BaseCommand {
}
} });
if (hasShortEntries || archiveEntries.size < 1)
- throw new UsageError(`Invalid archive format; did it get generated by 'corepack pack'?`);
+ throw new import_clipanion10.UsageError(`Invalid archive format; did it get generated by 'corepack pack'?`);
const { extract: tarX } = await Promise.resolve().then(() => (init_extract(), extract_exports));
for (const [name2, references] of archiveEntries) {
for (const reference of references) {
if (!isSupportedPackageManager(name2))
- throw new UsageError(`Unsupported package manager '${name2}'`);
+ throw new import_clipanion10.UsageError(`Unsupported package manager '${name2}'`);
this.log({ name: name2, reference });
await import_fs10.default.promises.mkdir(installFolder, { recursive: true });
await tarX({ file: p, cwd: installFolder }, [`${name2}/${reference}`]);
@@ -23356,11 +14469,12 @@ var InstallGlobalCommand = class extends BaseCommand {
};
// sources/commands/InstallLocal.ts
+var import_clipanion11 = __toESM(require_advanced());
var InstallLocalCommand = class extends BaseCommand {
static paths = [
[`install`]
];
- static usage = Command.Usage({
+ static usage = import_clipanion11.Command.Usage({
description: `Install the package manager configured in the local project`,
details: `
Download and install the package manager configured in the local project. This command doesn't change the global version used when running the package manager from outside the project (use the \`-g,--global\` flag if you wish to do this).
@@ -23376,7 +14490,7 @@ var InstallLocalCommand = class extends BaseCommand {
});
const resolved = await this.context.engine.resolveDescriptor(descriptor, { allowTags: true });
if (resolved === null)
- throw new UsageError(`Failed to successfully resolve '${descriptor.range}' to a valid ${descriptor.name} release`);
+ throw new import_clipanion11.UsageError(`Failed to successfully resolve '${descriptor.range}' to a valid ${descriptor.name} release`);
this.context.stdout.write(`Adding ${resolved.name}@${resolved.reference} to the cache...
`);
await this.context.engine.ensurePackageManager(resolved);
@@ -23384,13 +14498,14 @@ var InstallLocalCommand = class extends BaseCommand {
};
// sources/commands/Pack.ts
+var import_clipanion12 = __toESM(require_advanced());
var import_promises3 = require("fs/promises");
var import_path11 = __toESM(require("path"));
var PackCommand = class extends BaseCommand {
static paths = [
[`pack`]
];
- static usage = Command.Usage({
+ static usage = import_clipanion12.Command.Usage({
description: `Store package managers in a tarball`,
details: `
Download the selected package managers and store them inside a tarball suitable for use with \`corepack install -g\`.
@@ -23403,13 +14518,13 @@ var PackCommand = class extends BaseCommand {
`corepack pack yarn@^1`
]]
});
- json = options_exports.Boolean(`--json`, false, {
+ json = import_clipanion12.Option.Boolean(`--json`, false, {
description: `If true, the path to the generated tarball will be printed on stdout`
});
- output = options_exports.String(`-o,--output`, {
+ output = import_clipanion12.Option.String(`-o,--output`, {
description: `Where the tarball should be generated; by default "corepack.tgz"`
});
- patterns = options_exports.Rest();
+ patterns = import_clipanion12.Option.Rest();
async execute() {
const descriptors = await this.resolvePatternsToDescriptors({
patterns: this.patterns
@@ -23418,7 +14533,7 @@ var PackCommand = class extends BaseCommand {
for (const descriptor of descriptors) {
const resolved = await this.context.engine.resolveDescriptor(descriptor, { allowTags: true, useCache: false });
if (resolved === null)
- throw new UsageError(`Failed to successfully resolve '${descriptor.range}' to a valid ${descriptor.name} release`);
+ throw new import_clipanion12.UsageError(`Failed to successfully resolve '${descriptor.range}' to a valid ${descriptor.name} release`);
this.context.stdout.write(`Adding ${resolved.name}@${resolved.reference} to the cache...
`);
const packageManagerInfo = await this.context.engine.ensurePackageManager(resolved);
@@ -23449,6 +14564,7 @@ var PackCommand = class extends BaseCommand {
};
// sources/commands/Up.ts
+var import_clipanion13 = __toESM(require_advanced());
var import_major = __toESM(require_major());
var import_valid5 = __toESM(require_valid());
var import_valid6 = __toESM(require_valid2());
@@ -23456,7 +14572,7 @@ var UpCommand = class extends BaseCommand {
static paths = [
[`up`]
];
- static usage = Command.Usage({
+ static usage = import_clipanion13.Command.Usage({
description: `Update the package manager used in the current project`,
details: `
Retrieve the latest available version for the current major release line
@@ -23478,15 +14594,15 @@ var UpCommand = class extends BaseCommand {
patterns: []
});
if (!(0, import_valid5.default)(descriptor.range) && !(0, import_valid6.default)(descriptor.range))
- throw new UsageError(`The 'corepack up' command can only be used when your project's packageManager field is set to a semver version or semver range`);
+ throw new import_clipanion13.UsageError(`The 'corepack up' command can only be used when your project's packageManager field is set to a semver version or semver range`);
const resolved = await this.context.engine.resolveDescriptor(descriptor, { useCache: false });
if (!resolved)
- throw new UsageError(`Failed to successfully resolve '${descriptor.range}' to a valid ${descriptor.name} release`);
+ throw new import_clipanion13.UsageError(`Failed to successfully resolve '${descriptor.range}' to a valid ${descriptor.name} release`);
const majorVersion = (0, import_major.default)(resolved.reference);
const majorDescriptor = { name: descriptor.name, range: `^${majorVersion}.0.0` };
const highestVersion = await this.context.engine.resolveDescriptor(majorDescriptor, { useCache: false });
if (!highestVersion)
- throw new UsageError(`Failed to find the highest release for ${descriptor.name} ${majorVersion}.x`);
+ throw new import_clipanion13.UsageError(`Failed to find the highest release for ${descriptor.name} ${majorVersion}.x`);
this.context.stdout.write(`Installing ${highestVersion.name}@${highestVersion.reference} in the project...
`);
const packageManagerInfo = await this.context.engine.ensurePackageManager(highestVersion);
@@ -23495,11 +14611,12 @@ var UpCommand = class extends BaseCommand {
};
// sources/commands/Use.ts
+var import_clipanion14 = __toESM(require_advanced());
var UseCommand = class extends BaseCommand {
static paths = [
[`use`]
];
- static usage = Command.Usage({
+ static usage = import_clipanion14.Command.Usage({
description: `Define the package manager to use for the current project`,
details: `
When run, this command will retrieve the latest release matching the
@@ -23511,14 +14628,14 @@ var UseCommand = class extends BaseCommand {
`corepack use yarn`
]]
});
- pattern = options_exports.String();
+ pattern = import_clipanion14.Option.String();
async execute() {
const [descriptor] = await this.resolvePatternsToDescriptors({
patterns: [this.pattern]
});
const resolved = await this.context.engine.resolveDescriptor(descriptor, { allowTags: true, useCache: false });
if (resolved === null)
- throw new UsageError(`Failed to successfully resolve '${descriptor.range}' to a valid ${descriptor.name} release`);
+ throw new import_clipanion14.UsageError(`Failed to successfully resolve '${descriptor.range}' to a valid ${descriptor.name} release`);
this.context.stdout.write(`Installing ${resolved.name}@${resolved.reference} in the project...
`);
const packageManagerInfo = await this.context.engine.ensurePackageManager(resolved);
@@ -23527,16 +14644,17 @@ var UseCommand = class extends BaseCommand {
};
// sources/commands/deprecated/Hydrate.ts
+var import_clipanion15 = __toESM(require_advanced());
var import_promises4 = require("fs/promises");
var import_path12 = __toESM(require("path"));
-var HydrateCommand = class extends Command {
+var HydrateCommand = class extends import_clipanion15.Command {
static paths = [
[`hydrate`]
];
- activate = options_exports.Boolean(`--activate`, false, {
+ activate = import_clipanion15.Option.Boolean(`--activate`, false, {
description: `If true, this release will become the default one for this package manager`
});
- fileName = options_exports.String();
+ fileName = import_clipanion15.Option.String();
async execute() {
const installFolder = getInstallFolder();
const fileName = import_path12.default.resolve(this.context.cwd, this.fileName);
@@ -23555,12 +14673,12 @@ var HydrateCommand = class extends Command {
}
} });
if (hasShortEntries || archiveEntries.size < 1)
- throw new UsageError(`Invalid archive format; did it get generated by 'corepack prepare'?`);
+ throw new import_clipanion15.UsageError(`Invalid archive format; did it get generated by 'corepack prepare'?`);
const { extract: tarX } = await Promise.resolve().then(() => (init_extract(), extract_exports));
for (const [name2, references] of archiveEntries) {
for (const reference of references) {
if (!isSupportedPackageManager(name2))
- throw new UsageError(`Unsupported package manager '${name2}'`);
+ throw new import_clipanion15.UsageError(`Unsupported package manager '${name2}'`);
if (this.activate)
this.context.stdout.write(`Hydrating ${name2}@${reference} for immediate activation...
`);
@@ -23580,43 +14698,52 @@ var HydrateCommand = class extends Command {
};
// sources/commands/deprecated/Prepare.ts
+var import_clipanion16 = __toESM(require_advanced());
var import_promises5 = require("fs/promises");
var import_path13 = __toESM(require("path"));
-var PrepareCommand = class extends Command {
+var PrepareCommand = class extends import_clipanion16.Command {
static paths = [
[`prepare`]
];
- activate = options_exports.Boolean(`--activate`, false, {
+ activate = import_clipanion16.Option.Boolean(`--activate`, false, {
description: `If true, this release will become the default one for this package manager`
});
- json = options_exports.Boolean(`--json`, false, {
+ json = import_clipanion16.Option.Boolean(`--json`, false, {
description: `If true, the output will be the path of the generated tarball`
});
- output = options_exports.String(`-o,--output`, {
+ output = import_clipanion16.Option.String(`-o,--output`, {
description: `If true, the installed package managers will also be stored in a tarball`,
tolerateBoolean: true
});
- specs = options_exports.Rest();
+ specs = import_clipanion16.Option.Rest();
async execute() {
const specs = this.specs;
const installLocations = [];
if (specs.length === 0) {
- const lookup = await loadSpec(this.context.cwd);
+ const lookup = await loadSpecAndEnv(this.context.cwd);
switch (lookup.type) {
case `NoProject`:
- throw new UsageError(`Couldn't find a project in the local directory - please specify the package manager to pack, or run this command from a valid project`);
- case `NoSpec`:
- throw new UsageError(`The local project doesn't feature a 'packageManager' field - please specify the package manager to pack, or update the manifest to reference it`);
+ throw new import_clipanion16.UsageError(`Couldn't find a project in the local directory - please specify the package manager to pack, or run this command from a valid project`);
+ case `NoSpec`: {
+ const { devEnginesValue } = lookup;
+ if (devEnginesValue?.version) {
+ specs.push(devEnginesToDescriptor(devEnginesValue));
+ break;
+ }
+ throw new import_clipanion16.UsageError(`The local project doesn't feature a 'packageManager' field ${devEnginesValue ? `` : `nor a 'devEngines.packageManager' field `}- please specify the package manager to pack, or update the manifest to reference it`);
+ }
default: {
specs.push(lookup.getSpec());
}
}
+ } else {
+ await loadSpecAndEnv(this.context.cwd, { envOnly: true });
}
for (const request of specs) {
const spec = typeof request === `string` ? parseSpec(request, `CLI arguments`, { enforceExactVersion: false }) : request;
const resolved = await this.context.engine.resolveDescriptor(spec, { allowTags: true });
if (resolved === null)
- throw new UsageError(`Failed to successfully resolve '${spec.range}' to a valid ${spec.name} release`);
+ throw new import_clipanion16.UsageError(`Failed to successfully resolve '${spec.range}' to a valid ${spec.name} release`);
if (!this.json) {
if (this.activate) {
this.context.stdout.write(`Preparing ${spec.name}@${spec.range} for immediate activation...
@@ -23656,6 +14783,7 @@ var PrepareCommand = class extends Command {
};
// sources/main.ts
+var { version: corepackVersion } = package_default;
function getPackageManagerRequestFromCli(parameter, engine) {
if (!parameter)
return null;
@@ -23679,13 +14807,13 @@ async function runMain(argv) {
const [firstArg, ...restArgs] = argv;
const request = getPackageManagerRequestFromCli(firstArg, engine);
if (!request) {
- const cli = new Cli({
+ const cli = new import_clipanion17.Cli({
binaryLabel: `Corepack`,
binaryName: `corepack`,
- binaryVersion: version
+ binaryVersion: corepackVersion
});
- cli.register(builtins_exports.HelpCommand);
- cli.register(builtins_exports.VersionCommand);
+ cli.register(import_clipanion17.Builtins.HelpCommand);
+ cli.register(import_clipanion17.Builtins.VersionCommand);
cli.register(CacheCommand);
cli.register(DisableCommand);
cli.register(EnableCommand);
@@ -23697,7 +14825,7 @@ async function runMain(argv) {
cli.register(HydrateCommand);
cli.register(PrepareCommand);
const context = {
- ...Cli.defaultContext,
+ ...import_clipanion17.Cli.defaultContext,
cwd: process.cwd(),
engine
};
@@ -23726,9 +14854,6 @@ async function runMain(argv) {
});
/*! Bundled license information:
-undici/lib/web/fetch/body.js:
- (*! formdata-polyfill. MIT License. Jimmy Wärting *)
-
is-windows/index.js:
(*!
* is-windows
diff --git a/deps/corepack/package.json b/deps/corepack/package.json
index ab39b1d2dd8..170b48449fc 100644
--- a/deps/corepack/package.json
+++ b/deps/corepack/package.json
@@ -1,6 +1,6 @@
{
"name": "corepack",
- "version": "0.34.6",
+ "version": "0.36.0",
"homepage": "https://github.com/nodejs/corepack#readme",
"bugs": {
"url": "https://github.com/nodejs/corepack/issues"
@@ -10,47 +10,45 @@
"url": "https://github.com/nodejs/corepack.git"
},
"engines": {
- "node": "^20.10.0 || ^22.11.0 || >=24.0.0"
+ "node": "^22.22.2 || ^24.15.0 || >=26.0.0"
},
"exports": {
"./package.json": "./package.json"
},
"license": "MIT",
- "packageManager": "yarn@4.11.0+sha224.209a3e277c6bbc03df6e4206fbfcb0c1621c27ecf0688f79a0c619f0",
+ "packageManager": "yarn@4.18.0+sha224.5707fce90df5d8720fae4e85a07ab55e90aa20fded8914893e2ba225",
"devDependencies": {
"@types/debug": "^4.1.5",
- "@types/node": "^20.4.6",
+ "@types/node": "^22.0.0",
"@types/proxy-from-env": "^1",
"@types/semver": "^7.1.0",
"@types/which": "^3.0.0",
- "@yarnpkg/eslint-config": "^3.0.0",
+ "@yarnpkg/eslint-config": "^3.1.1",
"@yarnpkg/fslib": "^3.0.0-rc.48",
"@zkochan/cmd-shim": "^6.0.0",
- "better-sqlite3": "^11.7.2",
"clipanion": "patch:clipanion@npm%3A3.2.1#~/.yarn/patches/clipanion-npm-3.2.1-fc9187f56c.patch",
"debug": "^4.1.1",
- "esbuild": "^0.25.0",
- "eslint": "^9.22.0",
- "proxy-from-env": "^1.1.0",
+ "esbuild": "^0.28.0",
+ "eslint": "^10.8.1",
"semver": "^7.6.3",
- "supports-color": "^10.0.0",
- "tar": "^7.5.4",
- "tsx": "^4.16.2",
+ "supports-color": "^11.0.0",
+ "tar": "^7.5.11",
"typescript": "^5.7.3",
- "undici": "^6.21.2",
"v8-compile-cache": "^2.3.0",
- "vitest": "^3.0.5",
- "which": "^5.0.0"
+ "vitest": "^4.0.5",
+ "which": "^7.0.0"
},
- "resolutions": {
- "undici-types": "6.x"
+ "dependenciesMeta": {
+ "esbuild": {
+ "built": true
+ }
},
"scripts": {
- "build": "run clean && run build:bundle && tsx ./mkshims.ts",
- "build:bundle": "esbuild ./sources/_lib.ts --bundle --platform=node --target=node18.17.0 --external:corepack --outfile='./dist/lib/corepack.cjs' --resolve-extensions='.ts,.mjs,.js'",
+ "build": "run clean && run build:bundle && node ./mkshims.ts",
+ "build:bundle": "esbuild ./sources/_lib.ts --bundle --platform=node --target=node22.22.2 --external:corepack --outfile='./dist/lib/corepack.cjs' --resolve-extensions='.ts,.mjs,.js'",
"clean": "run rimraf dist shims",
- "corepack": "tsx ./sources/_cli.ts",
- "lint": "eslint .",
+ "corepack": "node ./sources/_cli.ts",
+ "lint": "eslint",
"prepack": "yarn build",
"postpack": "run clean",
"rimraf": "node -e 'for(let i=2;iradix, rule1->exponent);
// we'll actually only split the rule into two rules if its
// base value is an even multiple of its divisor (or it's one
// of the special rules)
+ if (rule1->baseValue > 0 && rule1->radix != 0 && mod == 0) {
+ status = U_NUMBER_ARG_OUTOFBOUNDS_ERROR;
+ return;
+ }
if ((rule1->baseValue > 0
&& (rule1->radix != 0) // ICU-23109 Ensure next line won't "% 0"
- && (rule1->baseValue % util64_pow(rule1->radix, rule1->exponent)) == 0)
+ && (rule1->baseValue % mod == 0))
|| rule1->getType() == kImproperFractionRule
|| rule1->getType() == kDefaultRule) {
diff --git a/deps/npm/docs/content/commands/npm-ls.md b/deps/npm/docs/content/commands/npm-ls.md
index 9eb36252b7b..ef69d380965 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@10.9.8 /path/to/npm
+npm@10.9.9 /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 9366f77d9e5..8d0920a02be 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
-10.9.8
+10.9.9
### Description
diff --git a/deps/npm/docs/output/commands/npm-access.html b/deps/npm/docs/output/commands/npm-access.html
index 1107e32a57a..f831ed46ac4 100644
--- a/deps/npm/docs/output/commands/npm-access.html
+++ b/deps/npm/docs/output/commands/npm-access.html
@@ -141,9 +141,9 @@
-
+
npm-access
- @10.9.8
+ @10.9.9
Set access level on published packages
diff --git a/deps/npm/docs/output/commands/npm-adduser.html b/deps/npm/docs/output/commands/npm-adduser.html
index 37cafc491cf..2a312710672 100644
--- a/deps/npm/docs/output/commands/npm-adduser.html
+++ b/deps/npm/docs/output/commands/npm-adduser.html
@@ -141,9 +141,9 @@
-
+
npm-adduser
- @10.9.8
+ @10.9.9
Add a registry user account
diff --git a/deps/npm/docs/output/commands/npm-audit.html b/deps/npm/docs/output/commands/npm-audit.html
index 8179c1d3489..5442b3d7dc3 100644
--- a/deps/npm/docs/output/commands/npm-audit.html
+++ b/deps/npm/docs/output/commands/npm-audit.html
@@ -141,9 +141,9 @@
-
+
npm-audit
- @10.9.8
+ @10.9.9
Run a security audit
diff --git a/deps/npm/docs/output/commands/npm-bugs.html b/deps/npm/docs/output/commands/npm-bugs.html
index cf24c3c9693..9d7c996434b 100644
--- a/deps/npm/docs/output/commands/npm-bugs.html
+++ b/deps/npm/docs/output/commands/npm-bugs.html
@@ -141,9 +141,9 @@
-
+
npm-bugs
- @10.9.8
+ @10.9.9
Report bugs for a package in a web browser
diff --git a/deps/npm/docs/output/commands/npm-cache.html b/deps/npm/docs/output/commands/npm-cache.html
index e5f3fe7a40d..e9099ae2734 100644
--- a/deps/npm/docs/output/commands/npm-cache.html
+++ b/deps/npm/docs/output/commands/npm-cache.html
@@ -141,9 +141,9 @@
-
+
npm-cache
- @10.9.8
+ @10.9.9
Manipulates packages cache
diff --git a/deps/npm/docs/output/commands/npm-ci.html b/deps/npm/docs/output/commands/npm-ci.html
index 9cfcc0584b7..48d543cdb48 100644
--- a/deps/npm/docs/output/commands/npm-ci.html
+++ b/deps/npm/docs/output/commands/npm-ci.html
@@ -141,9 +141,9 @@
-
+
npm-ci
- @10.9.8
+ @10.9.9
Clean install a project
diff --git a/deps/npm/docs/output/commands/npm-completion.html b/deps/npm/docs/output/commands/npm-completion.html
index 9c5b64fc51c..bc7fae4ce9e 100644
--- a/deps/npm/docs/output/commands/npm-completion.html
+++ b/deps/npm/docs/output/commands/npm-completion.html
@@ -141,9 +141,9 @@
-
+
npm-completion
- @10.9.8
+ @10.9.9
Tab Completion for npm
diff --git a/deps/npm/docs/output/commands/npm-config.html b/deps/npm/docs/output/commands/npm-config.html
index 92840458337..131ad1328bc 100644
--- a/deps/npm/docs/output/commands/npm-config.html
+++ b/deps/npm/docs/output/commands/npm-config.html
@@ -141,9 +141,9 @@
-
+
npm-config
- @10.9.8
+ @10.9.9
Manage the npm configuration files
diff --git a/deps/npm/docs/output/commands/npm-dedupe.html b/deps/npm/docs/output/commands/npm-dedupe.html
index 72b694dde2b..fe391119851 100644
--- a/deps/npm/docs/output/commands/npm-dedupe.html
+++ b/deps/npm/docs/output/commands/npm-dedupe.html
@@ -141,9 +141,9 @@
-
+
npm-dedupe
- @10.9.8
+ @10.9.9
Reduce duplication in the package tree
diff --git a/deps/npm/docs/output/commands/npm-deprecate.html b/deps/npm/docs/output/commands/npm-deprecate.html
index 8c5e122528e..8dcd9ac2b94 100644
--- a/deps/npm/docs/output/commands/npm-deprecate.html
+++ b/deps/npm/docs/output/commands/npm-deprecate.html
@@ -141,9 +141,9 @@
-
+
npm-deprecate
- @10.9.8
+ @10.9.9
Deprecate a version of a package
diff --git a/deps/npm/docs/output/commands/npm-diff.html b/deps/npm/docs/output/commands/npm-diff.html
index ab2338cfc99..5c192998da9 100644
--- a/deps/npm/docs/output/commands/npm-diff.html
+++ b/deps/npm/docs/output/commands/npm-diff.html
@@ -141,9 +141,9 @@
-
+
npm-diff
- @10.9.8
+ @10.9.9
The registry diff command
diff --git a/deps/npm/docs/output/commands/npm-dist-tag.html b/deps/npm/docs/output/commands/npm-dist-tag.html
index 28babf1b847..58941435106 100644
--- a/deps/npm/docs/output/commands/npm-dist-tag.html
+++ b/deps/npm/docs/output/commands/npm-dist-tag.html
@@ -141,9 +141,9 @@
-
+
npm-dist-tag
- @10.9.8
+ @10.9.9
Modify package distribution tags
diff --git a/deps/npm/docs/output/commands/npm-docs.html b/deps/npm/docs/output/commands/npm-docs.html
index 9fde1df2b91..be7ce1fa40f 100644
--- a/deps/npm/docs/output/commands/npm-docs.html
+++ b/deps/npm/docs/output/commands/npm-docs.html
@@ -141,9 +141,9 @@
-
+
npm-docs
- @10.9.8
+ @10.9.9
Open documentation for a package in a web browser
diff --git a/deps/npm/docs/output/commands/npm-doctor.html b/deps/npm/docs/output/commands/npm-doctor.html
index c2378b4bfcc..ba996457d30 100644
--- a/deps/npm/docs/output/commands/npm-doctor.html
+++ b/deps/npm/docs/output/commands/npm-doctor.html
@@ -141,9 +141,9 @@
-
+
npm-doctor
- @10.9.8
+ @10.9.9
Check the health of your npm environment
diff --git a/deps/npm/docs/output/commands/npm-edit.html b/deps/npm/docs/output/commands/npm-edit.html
index d443f860905..f6947190400 100644
--- a/deps/npm/docs/output/commands/npm-edit.html
+++ b/deps/npm/docs/output/commands/npm-edit.html
@@ -141,9 +141,9 @@
-
+
npm-edit
- @10.9.8
+ @10.9.9
Edit an installed package
diff --git a/deps/npm/docs/output/commands/npm-exec.html b/deps/npm/docs/output/commands/npm-exec.html
index 312164c1ca4..ec938a6a1fe 100644
--- a/deps/npm/docs/output/commands/npm-exec.html
+++ b/deps/npm/docs/output/commands/npm-exec.html
@@ -141,9 +141,9 @@
-
+
npm-exec
- @10.9.8
+ @10.9.9
Run a command from a local or remote npm package
diff --git a/deps/npm/docs/output/commands/npm-explain.html b/deps/npm/docs/output/commands/npm-explain.html
index 2d8734de9ee..7839543fd70 100644
--- a/deps/npm/docs/output/commands/npm-explain.html
+++ b/deps/npm/docs/output/commands/npm-explain.html
@@ -141,9 +141,9 @@
-
+
npm-explain
- @10.9.8
+ @10.9.9
Explain installed packages
diff --git a/deps/npm/docs/output/commands/npm-explore.html b/deps/npm/docs/output/commands/npm-explore.html
index 49f6e19d478..34bd385b6e1 100644
--- a/deps/npm/docs/output/commands/npm-explore.html
+++ b/deps/npm/docs/output/commands/npm-explore.html
@@ -141,9 +141,9 @@
-
+
npm-explore
- @10.9.8
+ @10.9.9
Browse an installed package
diff --git a/deps/npm/docs/output/commands/npm-find-dupes.html b/deps/npm/docs/output/commands/npm-find-dupes.html
index 9dce9aa9b63..f6b4858967d 100644
--- a/deps/npm/docs/output/commands/npm-find-dupes.html
+++ b/deps/npm/docs/output/commands/npm-find-dupes.html
@@ -141,9 +141,9 @@
-
+
npm-find-dupes
- @10.9.8
+ @10.9.9
Find duplication in the package tree
diff --git a/deps/npm/docs/output/commands/npm-fund.html b/deps/npm/docs/output/commands/npm-fund.html
index e171851a076..c3b32187036 100644
--- a/deps/npm/docs/output/commands/npm-fund.html
+++ b/deps/npm/docs/output/commands/npm-fund.html
@@ -141,9 +141,9 @@
-
+
npm-fund
- @10.9.8
+ @10.9.9
Retrieve funding information
diff --git a/deps/npm/docs/output/commands/npm-help-search.html b/deps/npm/docs/output/commands/npm-help-search.html
index 85bd908773f..b10b029118f 100644
--- a/deps/npm/docs/output/commands/npm-help-search.html
+++ b/deps/npm/docs/output/commands/npm-help-search.html
@@ -141,9 +141,9 @@
-
+
npm-help-search
- @10.9.8
+ @10.9.9
Search npm help documentation
diff --git a/deps/npm/docs/output/commands/npm-help.html b/deps/npm/docs/output/commands/npm-help.html
index 7c01c51067f..26791240dd9 100644
--- a/deps/npm/docs/output/commands/npm-help.html
+++ b/deps/npm/docs/output/commands/npm-help.html
@@ -141,9 +141,9 @@
-
+
npm-help
- @10.9.8
+ @10.9.9
Get help on npm
diff --git a/deps/npm/docs/output/commands/npm-hook.html b/deps/npm/docs/output/commands/npm-hook.html
index 700c47d2ee8..f3a39ece52a 100644
--- a/deps/npm/docs/output/commands/npm-hook.html
+++ b/deps/npm/docs/output/commands/npm-hook.html
@@ -141,9 +141,9 @@
-
+
npm-hook
- @10.9.8
+ @10.9.9
Manage registry hooks
diff --git a/deps/npm/docs/output/commands/npm-init.html b/deps/npm/docs/output/commands/npm-init.html
index dd042299cf5..26fe2c4e2f0 100644
--- a/deps/npm/docs/output/commands/npm-init.html
+++ b/deps/npm/docs/output/commands/npm-init.html
@@ -141,9 +141,9 @@
-
+
npm-init
- @10.9.8
+ @10.9.9
Create a package.json file
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 be1ad31244e..39e4f9857d0 100644
--- a/deps/npm/docs/output/commands/npm-install-ci-test.html
+++ b/deps/npm/docs/output/commands/npm-install-ci-test.html
@@ -141,9 +141,9 @@
-
+
npm-install-ci-test
- @10.9.8
+ @10.9.9
Install a project with a clean slate and run tests
diff --git a/deps/npm/docs/output/commands/npm-install-test.html b/deps/npm/docs/output/commands/npm-install-test.html
index 86cc7603cf2..2f49e76d02d 100644
--- a/deps/npm/docs/output/commands/npm-install-test.html
+++ b/deps/npm/docs/output/commands/npm-install-test.html
@@ -141,9 +141,9 @@
-
+
npm-install-test
- @10.9.8
+ @10.9.9
Install package(s) and run tests
diff --git a/deps/npm/docs/output/commands/npm-install.html b/deps/npm/docs/output/commands/npm-install.html
index 1b509385d8e..29588895287 100644
--- a/deps/npm/docs/output/commands/npm-install.html
+++ b/deps/npm/docs/output/commands/npm-install.html
@@ -141,9 +141,9 @@
-
+
npm-install
- @10.9.8
+ @10.9.9
Install a package
diff --git a/deps/npm/docs/output/commands/npm-link.html b/deps/npm/docs/output/commands/npm-link.html
index 91664b81390..f6a00f06a3a 100644
--- a/deps/npm/docs/output/commands/npm-link.html
+++ b/deps/npm/docs/output/commands/npm-link.html
@@ -141,9 +141,9 @@
-
+
npm-link
- @10.9.8
+ @10.9.9
Symlink a package folder
diff --git a/deps/npm/docs/output/commands/npm-login.html b/deps/npm/docs/output/commands/npm-login.html
index 799079c1bff..54183e18fe3 100644
--- a/deps/npm/docs/output/commands/npm-login.html
+++ b/deps/npm/docs/output/commands/npm-login.html
@@ -141,9 +141,9 @@
-
+
npm-login
- @10.9.8
+ @10.9.9
Login to a registry user account
diff --git a/deps/npm/docs/output/commands/npm-logout.html b/deps/npm/docs/output/commands/npm-logout.html
index 03920a79967..b889434e8a7 100644
--- a/deps/npm/docs/output/commands/npm-logout.html
+++ b/deps/npm/docs/output/commands/npm-logout.html
@@ -141,9 +141,9 @@
-
+
npm-logout
- @10.9.8
+ @10.9.9
Log out of the registry
diff --git a/deps/npm/docs/output/commands/npm-ls.html b/deps/npm/docs/output/commands/npm-ls.html
index 5a38b747171..599f8f2c495 100644
--- a/deps/npm/docs/output/commands/npm-ls.html
+++ b/deps/npm/docs/output/commands/npm-ls.html
@@ -141,9 +141,9 @@
-
+
npm-ls
- @10.9.8
+ @10.9.9
List installed packages
@@ -168,7 +168,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@10.9.8 /path/to/npm
+npm@10.9.9 /path/to/npm
└─┬ init-package-json@0.0.4
└── promzard@0.1.5
diff --git a/deps/npm/docs/output/commands/npm-org.html b/deps/npm/docs/output/commands/npm-org.html
index 841f7fe3795..804f95fa7b4 100644
--- a/deps/npm/docs/output/commands/npm-org.html
+++ b/deps/npm/docs/output/commands/npm-org.html
@@ -141,9 +141,9 @@
-
+
npm-org
- @10.9.8
+ @10.9.9
Manage orgs
diff --git a/deps/npm/docs/output/commands/npm-outdated.html b/deps/npm/docs/output/commands/npm-outdated.html
index cea2f8796e2..e00668e6a5e 100644
--- a/deps/npm/docs/output/commands/npm-outdated.html
+++ b/deps/npm/docs/output/commands/npm-outdated.html
@@ -141,9 +141,9 @@
-
+
npm-outdated
- @10.9.8
+ @10.9.9
Check for outdated packages
diff --git a/deps/npm/docs/output/commands/npm-owner.html b/deps/npm/docs/output/commands/npm-owner.html
index 5532d9642c4..4cb43192af1 100644
--- a/deps/npm/docs/output/commands/npm-owner.html
+++ b/deps/npm/docs/output/commands/npm-owner.html
@@ -141,9 +141,9 @@
-
+
npm-owner
- @10.9.8
+ @10.9.9
Manage package owners
diff --git a/deps/npm/docs/output/commands/npm-pack.html b/deps/npm/docs/output/commands/npm-pack.html
index 820d8d530d9..a0c94cd216f 100644
--- a/deps/npm/docs/output/commands/npm-pack.html
+++ b/deps/npm/docs/output/commands/npm-pack.html
@@ -141,9 +141,9 @@
-
+
npm-pack
- @10.9.8
+ @10.9.9
Create a tarball from a package
diff --git a/deps/npm/docs/output/commands/npm-ping.html b/deps/npm/docs/output/commands/npm-ping.html
index 75949cb09fb..7234425b57d 100644
--- a/deps/npm/docs/output/commands/npm-ping.html
+++ b/deps/npm/docs/output/commands/npm-ping.html
@@ -141,9 +141,9 @@
-
+
npm-ping
- @10.9.8
+ @10.9.9
Ping npm registry
diff --git a/deps/npm/docs/output/commands/npm-pkg.html b/deps/npm/docs/output/commands/npm-pkg.html
index e5f3b6dfe33..500fd3772d4 100644
--- a/deps/npm/docs/output/commands/npm-pkg.html
+++ b/deps/npm/docs/output/commands/npm-pkg.html
@@ -141,9 +141,9 @@
-
+
npm-pkg
- @10.9.8
+ @10.9.9
Manages your package.json
diff --git a/deps/npm/docs/output/commands/npm-prefix.html b/deps/npm/docs/output/commands/npm-prefix.html
index 8f10a677e15..b81960ec85e 100644
--- a/deps/npm/docs/output/commands/npm-prefix.html
+++ b/deps/npm/docs/output/commands/npm-prefix.html
@@ -141,9 +141,9 @@
-
+
npm-prefix
- @10.9.8
+ @10.9.9
Display prefix
diff --git a/deps/npm/docs/output/commands/npm-profile.html b/deps/npm/docs/output/commands/npm-profile.html
index 5f904585bb7..ffbaa598332 100644
--- a/deps/npm/docs/output/commands/npm-profile.html
+++ b/deps/npm/docs/output/commands/npm-profile.html
@@ -141,9 +141,9 @@
-
+
npm-profile
- @10.9.8
+ @10.9.9
Change settings on your registry profile
diff --git a/deps/npm/docs/output/commands/npm-prune.html b/deps/npm/docs/output/commands/npm-prune.html
index 84b2d7885f2..4cc55edf5fb 100644
--- a/deps/npm/docs/output/commands/npm-prune.html
+++ b/deps/npm/docs/output/commands/npm-prune.html
@@ -141,9 +141,9 @@
-
+
npm-prune
- @10.9.8
+ @10.9.9
Remove extraneous packages
diff --git a/deps/npm/docs/output/commands/npm-publish.html b/deps/npm/docs/output/commands/npm-publish.html
index 0428cfcba1d..75b98094730 100644
--- a/deps/npm/docs/output/commands/npm-publish.html
+++ b/deps/npm/docs/output/commands/npm-publish.html
@@ -141,9 +141,9 @@
-
+
npm-publish
- @10.9.8
+ @10.9.9
Publish a package
diff --git a/deps/npm/docs/output/commands/npm-query.html b/deps/npm/docs/output/commands/npm-query.html
index 0ce2db5e83a..9c28aa59a2f 100644
--- a/deps/npm/docs/output/commands/npm-query.html
+++ b/deps/npm/docs/output/commands/npm-query.html
@@ -141,9 +141,9 @@
-
+
npm-query
- @10.9.8
+ @10.9.9
Dependency selector query
diff --git a/deps/npm/docs/output/commands/npm-rebuild.html b/deps/npm/docs/output/commands/npm-rebuild.html
index b709fb7860a..aa2e0a4ee5b 100644
--- a/deps/npm/docs/output/commands/npm-rebuild.html
+++ b/deps/npm/docs/output/commands/npm-rebuild.html
@@ -141,9 +141,9 @@
-
+
npm-rebuild
- @10.9.8
+ @10.9.9
Rebuild a package
diff --git a/deps/npm/docs/output/commands/npm-repo.html b/deps/npm/docs/output/commands/npm-repo.html
index 2ee5951ad08..3de61fab14e 100644
--- a/deps/npm/docs/output/commands/npm-repo.html
+++ b/deps/npm/docs/output/commands/npm-repo.html
@@ -141,9 +141,9 @@
-
+
npm-repo
- @10.9.8
+ @10.9.9
Open package repository page in the browser
diff --git a/deps/npm/docs/output/commands/npm-restart.html b/deps/npm/docs/output/commands/npm-restart.html
index 52d486dc745..99471844fa0 100644
--- a/deps/npm/docs/output/commands/npm-restart.html
+++ b/deps/npm/docs/output/commands/npm-restart.html
@@ -141,9 +141,9 @@
-
+
npm-restart
- @10.9.8
+ @10.9.9
Restart a package
diff --git a/deps/npm/docs/output/commands/npm-root.html b/deps/npm/docs/output/commands/npm-root.html
index cf8cc3cdda7..5d02289c00b 100644
--- a/deps/npm/docs/output/commands/npm-root.html
+++ b/deps/npm/docs/output/commands/npm-root.html
@@ -141,9 +141,9 @@
-
+
npm-root
- @10.9.8
+ @10.9.9
Display npm root
diff --git a/deps/npm/docs/output/commands/npm-run-script.html b/deps/npm/docs/output/commands/npm-run-script.html
index c6dddafcc80..1e16c62483d 100644
--- a/deps/npm/docs/output/commands/npm-run-script.html
+++ b/deps/npm/docs/output/commands/npm-run-script.html
@@ -141,9 +141,9 @@
-
+
npm-run-script
- @10.9.8
+ @10.9.9
Run arbitrary package scripts
diff --git a/deps/npm/docs/output/commands/npm-sbom.html b/deps/npm/docs/output/commands/npm-sbom.html
index 147e93ac05c..770d257dcd3 100644
--- a/deps/npm/docs/output/commands/npm-sbom.html
+++ b/deps/npm/docs/output/commands/npm-sbom.html
@@ -141,9 +141,9 @@
-
+
npm-sbom
- @10.9.8
+ @10.9.9
Generate a Software Bill of Materials (SBOM)
diff --git a/deps/npm/docs/output/commands/npm-search.html b/deps/npm/docs/output/commands/npm-search.html
index 11abd380224..87e26e5b08d 100644
--- a/deps/npm/docs/output/commands/npm-search.html
+++ b/deps/npm/docs/output/commands/npm-search.html
@@ -141,9 +141,9 @@
-
+
npm-search
- @10.9.8
+ @10.9.9
Search for packages
diff --git a/deps/npm/docs/output/commands/npm-shrinkwrap.html b/deps/npm/docs/output/commands/npm-shrinkwrap.html
index ac3f16925cb..0eb8090e55f 100644
--- a/deps/npm/docs/output/commands/npm-shrinkwrap.html
+++ b/deps/npm/docs/output/commands/npm-shrinkwrap.html
@@ -141,9 +141,9 @@
-
+
npm-shrinkwrap
- @10.9.8
+ @10.9.9
Lock down dependency versions for publication
diff --git a/deps/npm/docs/output/commands/npm-star.html b/deps/npm/docs/output/commands/npm-star.html
index 54ccc0c388a..242d74d6740 100644
--- a/deps/npm/docs/output/commands/npm-star.html
+++ b/deps/npm/docs/output/commands/npm-star.html
@@ -141,9 +141,9 @@
-
+
npm-star
- @10.9.8
+ @10.9.9
Mark your favorite packages
diff --git a/deps/npm/docs/output/commands/npm-stars.html b/deps/npm/docs/output/commands/npm-stars.html
index beaeace4dac..8b19c552ed4 100644
--- a/deps/npm/docs/output/commands/npm-stars.html
+++ b/deps/npm/docs/output/commands/npm-stars.html
@@ -141,9 +141,9 @@
-
+
npm-stars
- @10.9.8
+ @10.9.9
View packages marked as favorites
diff --git a/deps/npm/docs/output/commands/npm-start.html b/deps/npm/docs/output/commands/npm-start.html
index f4a7299a423..9523d10c137 100644
--- a/deps/npm/docs/output/commands/npm-start.html
+++ b/deps/npm/docs/output/commands/npm-start.html
@@ -141,9 +141,9 @@
-
+
npm-start
- @10.9.8
+ @10.9.9
Start a package
diff --git a/deps/npm/docs/output/commands/npm-stop.html b/deps/npm/docs/output/commands/npm-stop.html
index b50e0d880f6..c2beef40909 100644
--- a/deps/npm/docs/output/commands/npm-stop.html
+++ b/deps/npm/docs/output/commands/npm-stop.html
@@ -141,9 +141,9 @@
-
+
npm-stop
- @10.9.8
+ @10.9.9
Stop a package
diff --git a/deps/npm/docs/output/commands/npm-team.html b/deps/npm/docs/output/commands/npm-team.html
index ac5c8f33c0b..4588ba79ed4 100644
--- a/deps/npm/docs/output/commands/npm-team.html
+++ b/deps/npm/docs/output/commands/npm-team.html
@@ -141,9 +141,9 @@
-
+
npm-team
- @10.9.8
+ @10.9.9
Manage organization teams and team memberships
diff --git a/deps/npm/docs/output/commands/npm-test.html b/deps/npm/docs/output/commands/npm-test.html
index a7c6d230bb1..036f39ebf74 100644
--- a/deps/npm/docs/output/commands/npm-test.html
+++ b/deps/npm/docs/output/commands/npm-test.html
@@ -141,9 +141,9 @@
-
+
npm-test
- @10.9.8
+ @10.9.9
Test a package
diff --git a/deps/npm/docs/output/commands/npm-token.html b/deps/npm/docs/output/commands/npm-token.html
index 9fbaba7fe59..bb80537422b 100644
--- a/deps/npm/docs/output/commands/npm-token.html
+++ b/deps/npm/docs/output/commands/npm-token.html
@@ -141,9 +141,9 @@
-
+
npm-token
- @10.9.8
+ @10.9.9
Manage your authentication tokens
diff --git a/deps/npm/docs/output/commands/npm-uninstall.html b/deps/npm/docs/output/commands/npm-uninstall.html
index dacc6fac23a..d73be6bb7ba 100644
--- a/deps/npm/docs/output/commands/npm-uninstall.html
+++ b/deps/npm/docs/output/commands/npm-uninstall.html
@@ -141,9 +141,9 @@
-
+
npm-uninstall
- @10.9.8
+ @10.9.9
Remove a package
diff --git a/deps/npm/docs/output/commands/npm-unpublish.html b/deps/npm/docs/output/commands/npm-unpublish.html
index 974c3139833..3840099294d 100644
--- a/deps/npm/docs/output/commands/npm-unpublish.html
+++ b/deps/npm/docs/output/commands/npm-unpublish.html
@@ -141,9 +141,9 @@
-
+
npm-unpublish
- @10.9.8
+ @10.9.9
Remove a package from the registry
diff --git a/deps/npm/docs/output/commands/npm-unstar.html b/deps/npm/docs/output/commands/npm-unstar.html
index df04a8e7e0b..45c37c34770 100644
--- a/deps/npm/docs/output/commands/npm-unstar.html
+++ b/deps/npm/docs/output/commands/npm-unstar.html
@@ -141,9 +141,9 @@
-
+
npm-unstar
- @10.9.8
+ @10.9.9
Remove an item from your favorite packages
diff --git a/deps/npm/docs/output/commands/npm-update.html b/deps/npm/docs/output/commands/npm-update.html
index 62a8ee7b731..ad62cb1d951 100644
--- a/deps/npm/docs/output/commands/npm-update.html
+++ b/deps/npm/docs/output/commands/npm-update.html
@@ -141,9 +141,9 @@
-
+
npm-update
- @10.9.8
+ @10.9.9
Update packages
diff --git a/deps/npm/docs/output/commands/npm-version.html b/deps/npm/docs/output/commands/npm-version.html
index bdcb5194575..2ffa0842006 100644
--- a/deps/npm/docs/output/commands/npm-version.html
+++ b/deps/npm/docs/output/commands/npm-version.html
@@ -141,9 +141,9 @@
-
+
npm-version
- @10.9.8
+ @10.9.9
Bump a package version
diff --git a/deps/npm/docs/output/commands/npm-view.html b/deps/npm/docs/output/commands/npm-view.html
index 7662989c4df..518a184e2e0 100644
--- a/deps/npm/docs/output/commands/npm-view.html
+++ b/deps/npm/docs/output/commands/npm-view.html
@@ -141,9 +141,9 @@
-
+
npm-view
- @10.9.8
+ @10.9.9
View registry info
diff --git a/deps/npm/docs/output/commands/npm-whoami.html b/deps/npm/docs/output/commands/npm-whoami.html
index e18739f095b..06b3dc6294c 100644
--- a/deps/npm/docs/output/commands/npm-whoami.html
+++ b/deps/npm/docs/output/commands/npm-whoami.html
@@ -141,9 +141,9 @@
-
+
npm-whoami
- @10.9.8
+ @10.9.9
Display npm username
diff --git a/deps/npm/docs/output/commands/npm.html b/deps/npm/docs/output/commands/npm.html
index d386471a83b..5246d0756a3 100644
--- a/deps/npm/docs/output/commands/npm.html
+++ b/deps/npm/docs/output/commands/npm.html
@@ -141,9 +141,9 @@
-
+
npm
- @10.9.8
+ @10.9.9
javascript package manager
@@ -158,7 +158,7 @@ Table of contents
Note: This command is unaware of workspaces.
Version
-10.9.8
+10.9.9
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/commands/npx.html b/deps/npm/docs/output/commands/npx.html
index a650f4a1cff..1ed54c3e8b2 100644
--- a/deps/npm/docs/output/commands/npx.html
+++ b/deps/npm/docs/output/commands/npx.html
@@ -141,9 +141,9 @@
-
+
npx
- @10.9.8
+ @10.9.9
Run a command from a local or remote npm package
diff --git a/deps/npm/docs/output/configuring-npm/folders.html b/deps/npm/docs/output/configuring-npm/folders.html
index b014f3d1290..9be8aba385a 100644
--- a/deps/npm/docs/output/configuring-npm/folders.html
+++ b/deps/npm/docs/output/configuring-npm/folders.html
@@ -141,9 +141,9 @@
-
+
folders
- @10.9.8
+ @10.9.9
Folder Structures Used by npm
diff --git a/deps/npm/docs/output/configuring-npm/install.html b/deps/npm/docs/output/configuring-npm/install.html
index 40080e4317e..2e62eefe3a8 100644
--- a/deps/npm/docs/output/configuring-npm/install.html
+++ b/deps/npm/docs/output/configuring-npm/install.html
@@ -141,9 +141,9 @@
-
+
install
- @10.9.8
+ @10.9.9
Download and install node and npm
diff --git a/deps/npm/docs/output/configuring-npm/npm-global.html b/deps/npm/docs/output/configuring-npm/npm-global.html
index b014f3d1290..9be8aba385a 100644
--- a/deps/npm/docs/output/configuring-npm/npm-global.html
+++ b/deps/npm/docs/output/configuring-npm/npm-global.html
@@ -141,9 +141,9 @@
-
+
folders
- @10.9.8
+ @10.9.9
Folder Structures Used by npm
diff --git a/deps/npm/docs/output/configuring-npm/npm-json.html b/deps/npm/docs/output/configuring-npm/npm-json.html
index 314d60edea2..0cc8a04577c 100644
--- a/deps/npm/docs/output/configuring-npm/npm-json.html
+++ b/deps/npm/docs/output/configuring-npm/npm-json.html
@@ -141,9 +141,9 @@
-
+
package.json
- @10.9.8
+ @10.9.9
Specifics of npm's package.json handling
diff --git a/deps/npm/docs/output/configuring-npm/npm-shrinkwrap-json.html b/deps/npm/docs/output/configuring-npm/npm-shrinkwrap-json.html
index f492da657ba..b2e6b7c212a 100644
--- a/deps/npm/docs/output/configuring-npm/npm-shrinkwrap-json.html
+++ b/deps/npm/docs/output/configuring-npm/npm-shrinkwrap-json.html
@@ -141,9 +141,9 @@
-
+
npm-shrinkwrap.json
- @10.9.8
+ @10.9.9
A publishable lockfile
diff --git a/deps/npm/docs/output/configuring-npm/npmrc.html b/deps/npm/docs/output/configuring-npm/npmrc.html
index 788acd28e43..35f844b93b0 100644
--- a/deps/npm/docs/output/configuring-npm/npmrc.html
+++ b/deps/npm/docs/output/configuring-npm/npmrc.html
@@ -141,9 +141,9 @@
-
+
npmrc
- @10.9.8
+ @10.9.9
The npm config files
diff --git a/deps/npm/docs/output/configuring-npm/package-json.html b/deps/npm/docs/output/configuring-npm/package-json.html
index 314d60edea2..0cc8a04577c 100644
--- a/deps/npm/docs/output/configuring-npm/package-json.html
+++ b/deps/npm/docs/output/configuring-npm/package-json.html
@@ -141,9 +141,9 @@
-
+
package.json
- @10.9.8
+ @10.9.9
Specifics of npm's package.json handling
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 0e638ac7a68..39363206c30 100644
--- a/deps/npm/docs/output/configuring-npm/package-lock-json.html
+++ b/deps/npm/docs/output/configuring-npm/package-lock-json.html
@@ -141,9 +141,9 @@
-
+
package-lock.json
- @10.9.8
+ @10.9.9
A manifestation of the manifest
diff --git a/deps/npm/docs/output/using-npm/config.html b/deps/npm/docs/output/using-npm/config.html
index acf057f9a40..ffdae9eb048 100644
--- a/deps/npm/docs/output/using-npm/config.html
+++ b/deps/npm/docs/output/using-npm/config.html
@@ -141,9 +141,9 @@
-
+
config
- @10.9.8
+ @10.9.9
More than you probably want to know about npm configuration
diff --git a/deps/npm/docs/output/using-npm/dependency-selectors.html b/deps/npm/docs/output/using-npm/dependency-selectors.html
index 7bd841d86bb..c47d4f64962 100644
--- a/deps/npm/docs/output/using-npm/dependency-selectors.html
+++ b/deps/npm/docs/output/using-npm/dependency-selectors.html
@@ -141,9 +141,9 @@
-
+
Dependency Selector Syntax & Querying
- @10.9.8
+ @10.9.9
Dependency Selector Syntax & Querying
diff --git a/deps/npm/docs/output/using-npm/developers.html b/deps/npm/docs/output/using-npm/developers.html
index 34e2410bf6d..2ab1e746412 100644
--- a/deps/npm/docs/output/using-npm/developers.html
+++ b/deps/npm/docs/output/using-npm/developers.html
@@ -141,9 +141,9 @@
-
+
developers
- @10.9.8
+ @10.9.9
Developer Guide
diff --git a/deps/npm/docs/output/using-npm/logging.html b/deps/npm/docs/output/using-npm/logging.html
index 8f016bb86e3..6d1720bea11 100644
--- a/deps/npm/docs/output/using-npm/logging.html
+++ b/deps/npm/docs/output/using-npm/logging.html
@@ -141,9 +141,9 @@
-
+
Logging
- @10.9.8
+ @10.9.9
Why, What & How We Log
diff --git a/deps/npm/docs/output/using-npm/orgs.html b/deps/npm/docs/output/using-npm/orgs.html
index 445a0b404be..3a512d2af4b 100644
--- a/deps/npm/docs/output/using-npm/orgs.html
+++ b/deps/npm/docs/output/using-npm/orgs.html
@@ -141,9 +141,9 @@
-
+
orgs
- @10.9.8
+ @10.9.9
Working with Teams & Orgs
diff --git a/deps/npm/docs/output/using-npm/package-spec.html b/deps/npm/docs/output/using-npm/package-spec.html
index 8e7a28827ca..69d4a26beef 100644
--- a/deps/npm/docs/output/using-npm/package-spec.html
+++ b/deps/npm/docs/output/using-npm/package-spec.html
@@ -141,9 +141,9 @@
-
+
package-spec
- @10.9.8
+ @10.9.9
Package name specifier
diff --git a/deps/npm/docs/output/using-npm/registry.html b/deps/npm/docs/output/using-npm/registry.html
index def8e16a2d9..a4dfe7656fd 100644
--- a/deps/npm/docs/output/using-npm/registry.html
+++ b/deps/npm/docs/output/using-npm/registry.html
@@ -141,9 +141,9 @@
-
+
registry
- @10.9.8
+ @10.9.9
The JavaScript Package Registry
diff --git a/deps/npm/docs/output/using-npm/removal.html b/deps/npm/docs/output/using-npm/removal.html
index 40fb430c1bb..fe9d7854469 100644
--- a/deps/npm/docs/output/using-npm/removal.html
+++ b/deps/npm/docs/output/using-npm/removal.html
@@ -141,9 +141,9 @@
-
+
removal
- @10.9.8
+ @10.9.9
Cleaning the Slate
diff --git a/deps/npm/docs/output/using-npm/scope.html b/deps/npm/docs/output/using-npm/scope.html
index 757fb6da8c7..26aa60e5b41 100644
--- a/deps/npm/docs/output/using-npm/scope.html
+++ b/deps/npm/docs/output/using-npm/scope.html
@@ -141,9 +141,9 @@
-
+
scope
- @10.9.8
+ @10.9.9
Scoped packages
diff --git a/deps/npm/docs/output/using-npm/scripts.html b/deps/npm/docs/output/using-npm/scripts.html
index d94899d53b4..22bd8c69846 100644
--- a/deps/npm/docs/output/using-npm/scripts.html
+++ b/deps/npm/docs/output/using-npm/scripts.html
@@ -141,9 +141,9 @@
-
+
scripts
- @10.9.8
+ @10.9.9
How npm handles the "scripts" field
diff --git a/deps/npm/docs/output/using-npm/workspaces.html b/deps/npm/docs/output/using-npm/workspaces.html
index 93c24288e05..40f92a8e448 100644
--- a/deps/npm/docs/output/using-npm/workspaces.html
+++ b/deps/npm/docs/output/using-npm/workspaces.html
@@ -141,9 +141,9 @@
-
+
workspaces
- @10.9.8
+ @10.9.9
Working with workspaces
diff --git a/deps/npm/man/man1/npm-access.1 b/deps/npm/man/man1/npm-access.1
index c54cadba8d7..99a09b2c146 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-ACCESS" "1" "July 2026" "NPM@10.9.9" ""
.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 ff24fe58b23..e70c95c4ee6 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-ADDUSER" "1" "July 2026" "NPM@10.9.9" ""
.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 8df09d0b156..0732f1abbc3 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-AUDIT" "1" "July 2026" "NPM@10.9.9" ""
.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 eebef34c63d..2d89527c8e8 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-BUGS" "1" "July 2026" "NPM@10.9.9" ""
.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 fa32d113bbf..590f6792f2a 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-CACHE" "1" "July 2026" "NPM@10.9.9" ""
.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 984cceacf00..f2443b219c8 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-CI" "1" "July 2026" "NPM@10.9.9" ""
.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 6bd4ede614e..ab9b7d2fcfa 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-COMPLETION" "1" "July 2026" "NPM@10.9.9" ""
.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 d49362c0109..40fab1839d4 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-CONFIG" "1" "July 2026" "NPM@10.9.9" ""
.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 4a28ff8e7a2..37d2febdfc9 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-DEDUPE" "1" "July 2026" "NPM@10.9.9" ""
.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 c9bf0740406..d3b869c7843 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-DEPRECATE" "1" "July 2026" "NPM@10.9.9" ""
.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 41020bf4b84..8e69e6b4f30 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-DIFF" "1" "July 2026" "NPM@10.9.9" ""
.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 16380b32680..bbaa615b046 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-DIST-TAG" "1" "July 2026" "NPM@10.9.9" ""
.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 f1bc669716a..6e0d0fe5889 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-DOCS" "1" "July 2026" "NPM@10.9.9" ""
.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 30725bc4f05..479d4f4c81c 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-DOCTOR" "1" "July 2026" "NPM@10.9.9" ""
.SH "NAME"
\fBnpm-doctor\fR - Check the health of your npm environment
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-edit.1 b/deps/npm/man/man1/npm-edit.1
index c190b8bdffb..411ded017eb 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-EDIT" "1" "July 2026" "NPM@10.9.9" ""
.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 1aee6470a0f..70d5ec2c926 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-EXEC" "1" "July 2026" "NPM@10.9.9" ""
.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 869e0606a82..cc495003031 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-EXPLAIN" "1" "July 2026" "NPM@10.9.9" ""
.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 21345d38433..ef25d5ecc29 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-EXPLORE" "1" "July 2026" "NPM@10.9.9" ""
.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 7e54851c9e9..5373714bb09 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-FIND-DUPES" "1" "July 2026" "NPM@10.9.9" ""
.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 dd63a6b232c..4f7e4afc4af 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-FUND" "1" "July 2026" "NPM@10.9.9" ""
.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 84ea5830b9f..0bcb79d3d21 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-HELP-SEARCH" "1" "July 2026" "NPM@10.9.9" ""
.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 25314cd818d..dce680d7c55 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-HELP" "1" "July 2026" "NPM@10.9.9" ""
.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 4412a92ddfc..a0091f84ff4 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-HOOK" "1" "July 2026" "NPM@10.9.9" ""
.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 4416de1714e..3b7d56f389b 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-INIT" "1" "July 2026" "NPM@10.9.9" ""
.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 c91cd140229..98b0ade583f 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-INSTALL-CI-TEST" "1" "July 2026" "NPM@10.9.9" ""
.SH "NAME"
\fBnpm-install-ci-test\fR - Install a project with a clean slate and run tests
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-install-test.1 b/deps/npm/man/man1/npm-install-test.1
index fdefe67ee86..403bf374286 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-INSTALL-TEST" "1" "July 2026" "NPM@10.9.9" ""
.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 69fa939e3c7..b9cf4ba31e6 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-INSTALL" "1" "July 2026" "NPM@10.9.9" ""
.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 659bbc25d93..b0fca44ec57 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-LINK" "1" "July 2026" "NPM@10.9.9" ""
.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 db432bf7792..2deb7b2aa5a 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-LOGIN" "1" "July 2026" "NPM@10.9.9" ""
.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 7007ba46218..aab60928795 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-LOGOUT" "1" "July 2026" "NPM@10.9.9" ""
.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 a041ccda929..ef60dc3ebf8 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-LS" "1" "July 2026" "NPM@10.9.9" ""
.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@10.9.8 /path/to/npm
+npm@10.9.9 /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 a95445fd369..ed954bbd629 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-ORG" "1" "July 2026" "NPM@10.9.9" ""
.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 6df9fbbb101..d20c3d37992 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-OUTDATED" "1" "July 2026" "NPM@10.9.9" ""
.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 04cd71fecca..8b3e0fb29bb 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-OWNER" "1" "July 2026" "NPM@10.9.9" ""
.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 f2ddcb10b0a..cbd0e9d348e 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-PACK" "1" "July 2026" "NPM@10.9.9" ""
.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 8e234b916ee..83e87ef5cca 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-PING" "1" "July 2026" "NPM@10.9.9" ""
.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 8481a0af19e..c2da66b44b0 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-PKG" "1" "July 2026" "NPM@10.9.9" ""
.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 2f4e75858d8..3f897aeadd4 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-PREFIX" "1" "July 2026" "NPM@10.9.9" ""
.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 93cad328ee6..2f57a023949 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-PROFILE" "1" "July 2026" "NPM@10.9.9" ""
.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 e51a08be4fd..32abd5fa1c0 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-PRUNE" "1" "July 2026" "NPM@10.9.9" ""
.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 39dd77c178f..dc9b390f93e 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-PUBLISH" "1" "July 2026" "NPM@10.9.9" ""
.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 d03f2bda1da..dfe595b49aa 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-QUERY" "1" "July 2026" "NPM@10.9.9" ""
.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 bb3663aad19..56f4fb87bfc 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-REBUILD" "1" "July 2026" "NPM@10.9.9" ""
.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 1867ce0fa69..1ccd6b07a34 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-REPO" "1" "July 2026" "NPM@10.9.9" ""
.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 cd3d3e7ca60..38fa56f1865 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-RESTART" "1" "July 2026" "NPM@10.9.9" ""
.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 e603b2e5c8f..52866477a5b 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-ROOT" "1" "July 2026" "NPM@10.9.9" ""
.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 ed9719e6e52..f54fb466866 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-RUN-SCRIPT" "1" "July 2026" "NPM@10.9.9" ""
.SH "NAME"
\fBnpm-run-script\fR - Run arbitrary package scripts
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-sbom.1 b/deps/npm/man/man1/npm-sbom.1
index 96f8af9b27d..404d29378d4 100644
--- a/deps/npm/man/man1/npm-sbom.1
+++ b/deps/npm/man/man1/npm-sbom.1
@@ -1,4 +1,4 @@
-.TH "NPM-SBOM" "1" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-SBOM" "1" "July 2026" "NPM@10.9.9" ""
.SH "NAME"
\fBnpm-sbom\fR - Generate a Software Bill of Materials (SBOM)
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-search.1 b/deps/npm/man/man1/npm-search.1
index 9750dd77ea9..37701c5931d 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-SEARCH" "1" "July 2026" "NPM@10.9.9" ""
.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 4a9325b1697..cf04c147813 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-SHRINKWRAP" "1" "July 2026" "NPM@10.9.9" ""
.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 15b1e3e33d1..48f22d90058 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-STAR" "1" "July 2026" "NPM@10.9.9" ""
.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 a6ffc5be8bc..91e0d89dca5 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-STARS" "1" "July 2026" "NPM@10.9.9" ""
.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 84c2c292b0e..55d15cf25a6 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-START" "1" "July 2026" "NPM@10.9.9" ""
.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 44235cf7d5c..224b62ced4a 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-STOP" "1" "July 2026" "NPM@10.9.9" ""
.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 0e9e9f9dee4..768a2cac6c9 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-TEAM" "1" "July 2026" "NPM@10.9.9" ""
.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 c4749ff4e45..c759a9132be 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-TEST" "1" "July 2026" "NPM@10.9.9" ""
.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 515cab845ff..c58c2d9c84c 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-TOKEN" "1" "July 2026" "NPM@10.9.9" ""
.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 1be82cdcd1c..44e40b0e4e2 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-UNINSTALL" "1" "July 2026" "NPM@10.9.9" ""
.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 2f3371b466c..bb01451a06b 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-UNPUBLISH" "1" "July 2026" "NPM@10.9.9" ""
.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 dadcf046a01..23a64c0f817 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-UNSTAR" "1" "July 2026" "NPM@10.9.9" ""
.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 16a69dc6988..6c117f2fc55 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-UPDATE" "1" "July 2026" "NPM@10.9.9" ""
.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 1a05694b477..3bdf8d526e6 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-VERSION" "1" "July 2026" "NPM@10.9.9" ""
.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 9ce4c969b6a..f1fd900ae1d 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-VIEW" "1" "July 2026" "NPM@10.9.9" ""
.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 f2dd525fc1f..e49ed9b241b 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-WHOAMI" "1" "July 2026" "NPM@10.9.9" ""
.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 b22566dd4eb..31d38481ae4 100644
--- a/deps/npm/man/man1/npm.1
+++ b/deps/npm/man/man1/npm.1
@@ -1,4 +1,4 @@
-.TH "NPM" "1" "March 2026" "NPM@10.9.8" ""
+.TH "NPM" "1" "July 2026" "NPM@10.9.9" ""
.SH "NAME"
\fBnpm\fR - javascript package manager
.SS "Synopsis"
@@ -12,7 +12,7 @@ npm
Note: This command is unaware of workspaces.
.SS "Version"
.P
-10.9.8
+10.9.9
.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 87f38311f56..3b79f0ab9fb 100644
--- a/deps/npm/man/man1/npx.1
+++ b/deps/npm/man/man1/npx.1
@@ -1,4 +1,4 @@
-.TH "NPX" "1" "March 2026" "NPM@10.9.8" ""
+.TH "NPX" "1" "July 2026" "NPM@10.9.9" ""
.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 aa4264e247c..3ed554b1698 100644
--- a/deps/npm/man/man5/folders.5
+++ b/deps/npm/man/man5/folders.5
@@ -1,4 +1,4 @@
-.TH "FOLDERS" "5" "March 2026" "NPM@10.9.8" ""
+.TH "FOLDERS" "5" "July 2026" "NPM@10.9.9" ""
.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 cc8fe77829c..72c3121e148 100644
--- a/deps/npm/man/man5/install.5
+++ b/deps/npm/man/man5/install.5
@@ -1,4 +1,4 @@
-.TH "INSTALL" "5" "March 2026" "NPM@10.9.8" ""
+.TH "INSTALL" "5" "July 2026" "NPM@10.9.9" ""
.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 aa4264e247c..3ed554b1698 100644
--- a/deps/npm/man/man5/npm-global.5
+++ b/deps/npm/man/man5/npm-global.5
@@ -1,4 +1,4 @@
-.TH "FOLDERS" "5" "March 2026" "NPM@10.9.8" ""
+.TH "FOLDERS" "5" "July 2026" "NPM@10.9.9" ""
.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 5f1d3fbb28c..37e2e38547e 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" "March 2026" "NPM@10.9.8" ""
+.TH "PACKAGE.JSON" "5" "July 2026" "NPM@10.9.9" ""
.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 2e0fff27e6a..b18cf2470a8 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" "March 2026" "NPM@10.9.8" ""
+.TH "NPM-SHRINKWRAP.JSON" "5" "July 2026" "NPM@10.9.9" ""
.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 b1be4712bd5..bf6065cefe8 100644
--- a/deps/npm/man/man5/npmrc.5
+++ b/deps/npm/man/man5/npmrc.5
@@ -1,4 +1,4 @@
-.TH "NPMRC" "5" "March 2026" "NPM@10.9.8" ""
+.TH "NPMRC" "5" "July 2026" "NPM@10.9.9" ""
.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 5f1d3fbb28c..37e2e38547e 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" "March 2026" "NPM@10.9.8" ""
+.TH "PACKAGE.JSON" "5" "July 2026" "NPM@10.9.9" ""
.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 efa3ab092f9..f2c9e9cc18a 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" "March 2026" "NPM@10.9.8" ""
+.TH "PACKAGE-LOCK.JSON" "5" "July 2026" "NPM@10.9.9" ""
.SH "NAME"
\fBpackage-lock.json\fR - A manifestation of the manifest
.SS "Description"
diff --git a/deps/npm/man/man7/config.7 b/deps/npm/man/man7/config.7
index 797e5e2c0ac..f2b337d3359 100644
--- a/deps/npm/man/man7/config.7
+++ b/deps/npm/man/man7/config.7
@@ -1,4 +1,4 @@
-.TH "CONFIG" "7" "March 2026" "NPM@10.9.8" ""
+.TH "CONFIG" "7" "July 2026" "NPM@10.9.9" ""
.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 75cf964acf9..04e689e8384 100644
--- a/deps/npm/man/man7/dependency-selectors.7
+++ b/deps/npm/man/man7/dependency-selectors.7
@@ -1,4 +1,4 @@
-.TH "QUERYING" "7" "March 2026" "NPM@10.9.8" ""
+.TH "QUERYING" "7" "July 2026" "NPM@10.9.9" ""
.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 8c8f96c6ed6..c0838abd6b3 100644
--- a/deps/npm/man/man7/developers.7
+++ b/deps/npm/man/man7/developers.7
@@ -1,4 +1,4 @@
-.TH "DEVELOPERS" "7" "March 2026" "NPM@10.9.8" ""
+.TH "DEVELOPERS" "7" "July 2026" "NPM@10.9.9" ""
.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 9cbf5dbdb12..584ef8df22e 100644
--- a/deps/npm/man/man7/logging.7
+++ b/deps/npm/man/man7/logging.7
@@ -1,4 +1,4 @@
-.TH "LOGGING" "7" "March 2026" "NPM@10.9.8" ""
+.TH "LOGGING" "7" "July 2026" "NPM@10.9.9" ""
.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 f2adb2e4f1a..34d519345d2 100644
--- a/deps/npm/man/man7/orgs.7
+++ b/deps/npm/man/man7/orgs.7
@@ -1,4 +1,4 @@
-.TH "ORGS" "7" "March 2026" "NPM@10.9.8" ""
+.TH "ORGS" "7" "July 2026" "NPM@10.9.9" ""
.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 42298c83ba7..27c15ab501e 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" "March 2026" "NPM@10.9.8" ""
+.TH "PACKAGE-SPEC" "7" "July 2026" "NPM@10.9.9" ""
.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 ba648f67c04..62737a68dce 100644
--- a/deps/npm/man/man7/registry.7
+++ b/deps/npm/man/man7/registry.7
@@ -1,4 +1,4 @@
-.TH "REGISTRY" "7" "March 2026" "NPM@10.9.8" ""
+.TH "REGISTRY" "7" "July 2026" "NPM@10.9.9" ""
.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 e2a08b96359..8aa604239bc 100644
--- a/deps/npm/man/man7/removal.7
+++ b/deps/npm/man/man7/removal.7
@@ -1,4 +1,4 @@
-.TH "REMOVAL" "7" "March 2026" "NPM@10.9.8" ""
+.TH "REMOVAL" "7" "July 2026" "NPM@10.9.9" ""
.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 b21548103b4..c7b04760dc0 100644
--- a/deps/npm/man/man7/scope.7
+++ b/deps/npm/man/man7/scope.7
@@ -1,4 +1,4 @@
-.TH "SCOPE" "7" "March 2026" "NPM@10.9.8" ""
+.TH "SCOPE" "7" "July 2026" "NPM@10.9.9" ""
.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 70bf064806d..fac797dfb2b 100644
--- a/deps/npm/man/man7/scripts.7
+++ b/deps/npm/man/man7/scripts.7
@@ -1,4 +1,4 @@
-.TH "SCRIPTS" "7" "March 2026" "NPM@10.9.8" ""
+.TH "SCRIPTS" "7" "July 2026" "NPM@10.9.9" ""
.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 4ba45071dd8..4c901cd4ff7 100644
--- a/deps/npm/man/man7/workspaces.7
+++ b/deps/npm/man/man7/workspaces.7
@@ -1,4 +1,4 @@
-.TH "WORKSPACES" "7" "March 2026" "NPM@10.9.8" ""
+.TH "WORKSPACES" "7" "July 2026" "NPM@10.9.9" ""
.SH "NAME"
\fBworkspaces\fR - Working with workspaces
.SS "Description"
diff --git a/deps/npm/node_modules/tar/dist/commonjs/create.js b/deps/npm/node_modules/tar/dist/commonjs/create.js
index 3190afc4831..5339c93f47c 100644
--- a/deps/npm/node_modules/tar/dist/commonjs/create.js
+++ b/deps/npm/node_modules/tar/dist/commonjs/create.js
@@ -28,7 +28,7 @@ const createFile = (opt, files) => {
stream.on('close', res);
p.on('error', rej);
});
- addFilesAsync(p, files);
+ addFilesAsync(p, files).catch(er => p.emit('error', er));
return promise;
};
const addFilesSync = (p, files) => {
@@ -48,8 +48,7 @@ const addFilesSync = (p, files) => {
p.end();
};
const addFilesAsync = async (p, files) => {
- for (let i = 0; i < files.length; i++) {
- const file = String(files[i]);
+ for (const file of files) {
if (file.charAt(0) === '@') {
await (0, list_js_1.list)({
file: node_path_1.default.resolve(String(p.cwd), file.slice(1)),
@@ -72,7 +71,7 @@ const createSync = (opt, files) => {
};
const createAsync = (opt, files) => {
const p = new pack_js_1.Pack(opt);
- addFilesAsync(p, files);
+ addFilesAsync(p, files).catch(er => p.emit('error', er));
return p;
};
exports.create = (0, make_command_js_1.makeCommand)(createFileSync, createFile, createSync, createAsync, (_opt, files) => {
diff --git a/deps/npm/node_modules/tar/dist/commonjs/get-write-flag.js b/deps/npm/node_modules/tar/dist/commonjs/get-write-flag.js
index 94add8f6b22..82d7d502aeb 100644
--- a/deps/npm/node_modules/tar/dist/commonjs/get-write-flag.js
+++ b/deps/npm/node_modules/tar/dist/commonjs/get-write-flag.js
@@ -15,7 +15,7 @@ const fs_1 = __importDefault(require("fs"));
const platform = process.env.__FAKE_PLATFORM__ || process.platform;
const isWindows = platform === 'win32';
/* c8 ignore start */
-const { O_CREAT, O_TRUNC, O_WRONLY } = fs_1.default.constants;
+const { O_CREAT, O_NOFOLLOW, O_TRUNC, O_WRONLY } = fs_1.default.constants;
const UV_FS_O_FILEMAP = Number(process.env.__FAKE_FS_O_FILENAME__) ||
fs_1.default.constants.UV_FS_O_FILEMAP ||
0;
@@ -23,7 +23,10 @@ const UV_FS_O_FILEMAP = Number(process.env.__FAKE_FS_O_FILENAME__) ||
const fMapEnabled = isWindows && !!UV_FS_O_FILEMAP;
const fMapLimit = 512 * 1024;
const fMapFlag = UV_FS_O_FILEMAP | O_TRUNC | O_CREAT | O_WRONLY;
-exports.getWriteFlag = !fMapEnabled ?
- () => 'w'
- : (size) => (size < fMapLimit ? fMapFlag : 'w');
+const noFollowFlag = !isWindows && typeof O_NOFOLLOW === 'number' ?
+ O_NOFOLLOW | O_TRUNC | O_CREAT | O_WRONLY
+ : null;
+exports.getWriteFlag = noFollowFlag !== null ? () => noFollowFlag
+ : !fMapEnabled ? () => 'w'
+ : (size) => (size < fMapLimit ? fMapFlag : 'w');
//# sourceMappingURL=get-write-flag.js.map
\ No newline at end of file
diff --git a/deps/npm/node_modules/tar/dist/commonjs/header.js b/deps/npm/node_modules/tar/dist/commonjs/header.js
index 12558ed9256..f4a84fb76c3 100644
--- a/deps/npm/node_modules/tar/dist/commonjs/header.js
+++ b/deps/npm/node_modules/tar/dist/commonjs/header.js
@@ -41,6 +41,7 @@ exports.Header = void 0;
const node_path_1 = require("node:path");
const large = __importStar(require("./large-numbers.js"));
const types = __importStar(require("./types.js"));
+const notNegative = (n) => n === undefined || n < 0 ? undefined : n;
class Header {
cksumValid = false;
needPax = false;
@@ -78,23 +79,44 @@ class Header {
if (!buf || !(buf.length >= off + 512)) {
throw new Error('need 512 bytes for header');
}
- this.path = ex?.path ?? decString(buf, off, 100);
- this.mode = ex?.mode ?? gex?.mode ?? decNumber(buf, off + 100, 8);
- this.uid = ex?.uid ?? gex?.uid ?? decNumber(buf, off + 108, 8);
- this.gid = ex?.gid ?? gex?.gid ?? decNumber(buf, off + 116, 8);
- this.size = ex?.size ?? gex?.size ?? decNumber(buf, off + 124, 12);
+ // Decode the typeflag (independent of any pending PAX/GNU extended header)
+ // up front so we can tell whether THIS block is itself an intermediary
+ // extension header (PAX `x`/`g`, GNU long-name `L`, GNU long-link `K`).
+ // Per POSIX pax, a PAX extended header describes the *next file entry*, not
+ // the extension headers that may sit between it and that file. Applying the
+ // pending PAX overrides (notably `size`) to an intervening `L`/`K`/`x`/`g`
+ // header desynchronizes the stream relative to other tar implementations
+ // and enables tar interpretation-conflict / file-smuggling attacks.
+ const t = decString(buf, off + 156, 1);
+ const isNormalFS = types.normalFsTypes.has(t);
+ const exForFields = isNormalFS ? ex : undefined;
+ const gexForFields = isNormalFS ? gex : undefined;
+ this.path = exForFields?.path ?? decString(buf, off, 100);
+ this.mode =
+ exForFields?.mode ??
+ gexForFields?.mode ??
+ decNumber(buf, off + 100, 8);
+ this.uid =
+ exForFields?.uid ?? gexForFields?.uid ?? decNumber(buf, off + 108, 8);
+ this.gid =
+ exForFields?.gid ?? gexForFields?.gid ?? decNumber(buf, off + 116, 8);
+ this.size = notNegative(exForFields?.size ??
+ gexForFields?.size ??
+ decNumber(buf, off + 124, 12));
this.mtime =
- ex?.mtime ?? gex?.mtime ?? decDate(buf, off + 136, 12);
+ exForFields?.mtime ??
+ gexForFields?.mtime ??
+ decDate(buf, off + 136, 12);
this.cksum = decNumber(buf, off + 148, 12);
// if we have extended or global extended headers, apply them now
// See https://github.com/npm/node-tar/pull/187
- // Apply global before local, so it overrides
- if (gex)
- this.#slurp(gex, true);
- if (ex)
- this.#slurp(ex);
+ // Apply global before local, so it overrides. Never slurp the pending
+ // extended-header fields onto an intermediary extension header.
+ if (gexForFields)
+ this.#slurp(gexForFields, true);
+ if (exForFields)
+ this.#slurp(exForFields);
// old tar versions marked dirs as a file with a trailing /
- const t = decString(buf, off + 156, 1);
if (types.isCode(t)) {
this.#type = t || '0';
}
@@ -110,17 +132,26 @@ class Header {
this.size = 0;
}
this.linkpath = decString(buf, off + 157, 100);
- if (buf.subarray(off + 257, off + 265).toString() ===
- 'ustar\u000000') {
+ if (buf.subarray(off + 257, off + 265).toString() === 'ustar\u000000') {
/* c8 ignore start */
this.uname =
- ex?.uname ?? gex?.uname ?? decString(buf, off + 265, 32);
+ exForFields?.uname ??
+ gexForFields?.uname ??
+ decString(buf, off + 265, 32);
this.gname =
- ex?.gname ?? gex?.gname ?? decString(buf, off + 297, 32);
+ exForFields?.gname ??
+ gexForFields?.gname ??
+ decString(buf, off + 297, 32);
this.devmaj =
- ex?.devmaj ?? gex?.devmaj ?? decNumber(buf, off + 329, 8) ?? 0;
+ exForFields?.devmaj ??
+ gexForFields?.devmaj ??
+ decNumber(buf, off + 329, 8) ??
+ 0;
this.devmin =
- ex?.devmin ?? gex?.devmin ?? decNumber(buf, off + 337, 8) ?? 0;
+ exForFields?.devmin ??
+ gexForFields?.devmin ??
+ decNumber(buf, off + 337, 8) ??
+ 0;
/* c8 ignore stop */
if (buf[off + 475] !== 0) {
// definitely a prefix, definitely >130 chars.
@@ -133,10 +164,8 @@ class Header {
this.path = prefix + '/' + this.path;
}
/* c8 ignore start */
- this.atime =
- ex?.atime ?? gex?.atime ?? decDate(buf, off + 476, 12);
- this.ctime =
- ex?.ctime ?? gex?.ctime ?? decDate(buf, off + 488, 12);
+ this.atime = ex?.atime ?? gex?.atime ?? decDate(buf, off + 476, 12);
+ this.ctime = ex?.ctime ?? gex?.ctime ?? decDate(buf, off + 488, 12);
/* c8 ignore stop */
}
}
@@ -159,6 +188,7 @@ class Header {
// null/undefined values are ignored.
return !(v === null ||
v === undefined ||
+ (k === 'size' && Number(v) < 0) ||
(k === 'path' && gex) ||
(k === 'linkpath' && gex) ||
k === 'global');
@@ -180,17 +210,12 @@ class Header {
const prefix = split[1];
this.needPax = !!split[2];
this.needPax = encString(buf, off, 100, path) || this.needPax;
- this.needPax =
- encNumber(buf, off + 100, 8, this.mode) || this.needPax;
- this.needPax =
- encNumber(buf, off + 108, 8, this.uid) || this.needPax;
- this.needPax =
- encNumber(buf, off + 116, 8, this.gid) || this.needPax;
- this.needPax =
- encNumber(buf, off + 124, 12, this.size) || this.needPax;
- this.needPax =
- encDate(buf, off + 136, 12, this.mtime) || this.needPax;
- buf[off + 156] = this.#type.charCodeAt(0);
+ this.needPax = encNumber(buf, off + 100, 8, this.mode) || this.needPax;
+ this.needPax = encNumber(buf, off + 108, 8, this.uid) || this.needPax;
+ this.needPax = encNumber(buf, off + 116, 8, this.gid) || this.needPax;
+ this.needPax = encNumber(buf, off + 124, 12, this.size) || this.needPax;
+ this.needPax = encDate(buf, off + 136, 12, this.mtime) || this.needPax;
+ buf[off + 156] = Number(this.#type.codePointAt(0));
this.needPax =
encString(buf, off + 157, 100, this.linkpath) || this.needPax;
buf.write('ustar\u000000', off + 257, 8);
@@ -205,12 +230,10 @@ class Header {
this.needPax =
encString(buf, off + 345, prefixSize, prefix) || this.needPax;
if (buf[off + 475] !== 0) {
- this.needPax =
- encString(buf, off + 345, 155, prefix) || this.needPax;
+ this.needPax = encString(buf, off + 345, 155, prefix) || this.needPax;
}
else {
- this.needPax =
- encString(buf, off + 345, 130, prefix) || this.needPax;
+ this.needPax = encString(buf, off + 345, 130, prefix) || this.needPax;
this.needPax =
encDate(buf, off + 476, 12, this.atime) || this.needPax;
this.needPax =
diff --git a/deps/npm/node_modules/tar/dist/commonjs/index.min.js b/deps/npm/node_modules/tar/dist/commonjs/index.min.js
index d7e71f819af..c1fe035f48f 100644
--- a/deps/npm/node_modules/tar/dist/commonjs/index.min.js
+++ b/deps/npm/node_modules/tar/dist/commonjs/index.min.js
@@ -1,4 +1,4 @@
-"use strict";var d=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var We=d(C=>{"use strict";var yo=C&&C.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(C,"__esModule",{value:!0});C.Minipass=C.isWritable=C.isReadable=C.isStream=void 0;var Br=typeof process=="object"&&process?process:{stdout:null,stderr:null},es=require("node:events"),xr=yo(require("node:stream")),Eo=require("node:string_decoder"),bo=s=>!!s&&typeof s=="object"&&(s instanceof Wt||s instanceof xr.default||(0,C.isReadable)(s)||(0,C.isWritable)(s));C.isStream=bo;var So=s=>!!s&&typeof s=="object"&&s instanceof es.EventEmitter&&typeof s.pipe=="function"&&s.pipe!==xr.default.Writable.prototype.pipe;C.isReadable=So;var go=s=>!!s&&typeof s=="object"&&s instanceof es.EventEmitter&&typeof s.write=="function"&&typeof s.end=="function";C.isWritable=go;var le=Symbol("EOF"),ue=Symbol("maybeEmitEnd"),_e=Symbol("emittedEnd"),zt=Symbol("emittingEnd"),ft=Symbol("emittedError"),kt=Symbol("closed"),zr=Symbol("read"),jt=Symbol("flush"),kr=Symbol("flushChunk"),K=Symbol("encoding"),Ue=Symbol("decoder"),R=Symbol("flowing"),dt=Symbol("paused"),qe=Symbol("resume"),O=Symbol("buffer"),I=Symbol("pipes"),v=Symbol("bufferLength"),Ki=Symbol("bufferPush"),xt=Symbol("bufferShift"),N=Symbol("objectMode"),y=Symbol("destroyed"),Vi=Symbol("error"),$i=Symbol("emitData"),jr=Symbol("emitEnd"),Xi=Symbol("emitEnd2"),J=Symbol("async"),Qi=Symbol("abort"),Ut=Symbol("aborted"),mt=Symbol("signal"),Pe=Symbol("dataListeners"),k=Symbol("discarded"),pt=s=>Promise.resolve().then(s),Ro=s=>s(),Oo=s=>s==="end"||s==="finish"||s==="prefinish",vo=s=>s instanceof ArrayBuffer||!!s&&typeof s=="object"&&s.constructor&&s.constructor.name==="ArrayBuffer"&&s.byteLength>=0,To=s=>!Buffer.isBuffer(s)&&ArrayBuffer.isView(s),qt=class{src;dest;opts;ondrain;constructor(e,t,i){this.src=e,this.dest=t,this.opts=i,this.ondrain=()=>e[qe](),this.dest.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(e){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},Ji=class extends qt{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(e,t,i){super(e,t,i),this.proxyErrors=r=>this.dest.emit("error",r),e.on("error",this.proxyErrors)}},Do=s=>!!s.objectMode,Po=s=>!s.objectMode&&!!s.encoding&&s.encoding!=="buffer",Wt=class extends es.EventEmitter{[R]=!1;[dt]=!1;[I]=[];[O]=[];[N];[K];[J];[Ue];[le]=!1;[_e]=!1;[zt]=!1;[kt]=!1;[ft]=null;[v]=0;[y]=!1;[mt];[Ut]=!1;[Pe]=0;[k]=!1;writable=!0;readable=!0;constructor(...e){let t=e[0]||{};if(super(),t.objectMode&&typeof t.encoding=="string")throw new TypeError("Encoding and objectMode may not be used together");Do(t)?(this[N]=!0,this[K]=null):Po(t)?(this[K]=t.encoding,this[N]=!1):(this[N]=!1,this[K]=null),this[J]=!!t.async,this[Ue]=this[K]?new Eo.StringDecoder(this[K]):null,t&&t.debugExposeBuffer===!0&&Object.defineProperty(this,"buffer",{get:()=>this[O]}),t&&t.debugExposePipes===!0&&Object.defineProperty(this,"pipes",{get:()=>this[I]});let{signal:i}=t;i&&(this[mt]=i,i.aborted?this[Qi]():i.addEventListener("abort",()=>this[Qi]()))}get bufferLength(){return this[v]}get encoding(){return this[K]}set encoding(e){throw new Error("Encoding must be set at instantiation time")}setEncoding(e){throw new Error("Encoding must be set at instantiation time")}get objectMode(){return this[N]}set objectMode(e){throw new Error("objectMode must be set at instantiation time")}get async(){return this[J]}set async(e){this[J]=this[J]||!!e}[Qi](){this[Ut]=!0,this.emit("abort",this[mt]?.reason),this.destroy(this[mt]?.reason)}get aborted(){return this[Ut]}set aborted(e){}write(e,t,i){if(this[Ut])return!1;if(this[le])throw new Error("write after end");if(this[y])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;typeof t=="function"&&(i=t,t="utf8"),t||(t="utf8");let r=this[J]?pt:Ro;if(!this[N]&&!Buffer.isBuffer(e)){if(To(e))e=Buffer.from(e.buffer,e.byteOffset,e.byteLength);else if(vo(e))e=Buffer.from(e);else if(typeof e!="string")throw new Error("Non-contiguous data written to non-objectMode stream")}return this[N]?(this[R]&&this[v]!==0&&this[jt](!0),this[R]?this.emit("data",e):this[Ki](e),this[v]!==0&&this.emit("readable"),i&&r(i),this[R]):e.length?(typeof e=="string"&&!(t===this[K]&&!this[Ue]?.lastNeed)&&(e=Buffer.from(e,t)),Buffer.isBuffer(e)&&this[K]&&(e=this[Ue].write(e)),this[R]&&this[v]!==0&&this[jt](!0),this[R]?this.emit("data",e):this[Ki](e),this[v]!==0&&this.emit("readable"),i&&r(i),this[R]):(this[v]!==0&&this.emit("readable"),i&&r(i),this[R])}read(e){if(this[y])return null;if(this[k]=!1,this[v]===0||e===0||e&&e>this[v])return this[ue](),null;this[N]&&(e=null),this[O].length>1&&!this[N]&&(this[O]=[this[K]?this[O].join(""):Buffer.concat(this[O],this[v])]);let t=this[zr](e||null,this[O][0]);return this[ue](),t}[zr](e,t){if(this[N])this[xt]();else{let i=t;e===i.length||e===null?this[xt]():typeof i=="string"?(this[O][0]=i.slice(e),t=i.slice(0,e),this[v]-=e):(this[O][0]=i.subarray(e),t=i.subarray(0,e),this[v]-=e)}return this.emit("data",t),!this[O].length&&!this[le]&&this.emit("drain"),t}end(e,t,i){return typeof e=="function"&&(i=e,e=void 0),typeof t=="function"&&(i=t,t="utf8"),e!==void 0&&this.write(e,t),i&&this.once("end",i),this[le]=!0,this.writable=!1,(this[R]||!this[dt])&&this[ue](),this}[qe](){this[y]||(!this[Pe]&&!this[I].length&&(this[k]=!0),this[dt]=!1,this[R]=!0,this.emit("resume"),this[O].length?this[jt]():this[le]?this[ue]():this.emit("drain"))}resume(){return this[qe]()}pause(){this[R]=!1,this[dt]=!0,this[k]=!1}get destroyed(){return this[y]}get flowing(){return this[R]}get paused(){return this[dt]}[Ki](e){this[N]?this[v]+=1:this[v]+=e.length,this[O].push(e)}[xt](){return this[N]?this[v]-=1:this[v]-=this[O][0].length,this[O].shift()}[jt](e=!1){do;while(this[kr](this[xt]())&&this[O].length);!e&&!this[O].length&&!this[le]&&this.emit("drain")}[kr](e){return this.emit("data",e),this[R]}pipe(e,t){if(this[y])return e;this[k]=!1;let i=this[_e];return t=t||{},e===Br.stdout||e===Br.stderr?t.end=!1:t.end=t.end!==!1,t.proxyErrors=!!t.proxyErrors,i?t.end&&e.end():(this[I].push(t.proxyErrors?new Ji(this,e,t):new qt(this,e,t)),this[J]?pt(()=>this[qe]()):this[qe]()),e}unpipe(e){let t=this[I].find(i=>i.dest===e);t&&(this[I].length===1?(this[R]&&this[Pe]===0&&(this[R]=!1),this[I]=[]):this[I].splice(this[I].indexOf(t),1),t.unpipe())}addListener(e,t){return this.on(e,t)}on(e,t){let i=super.on(e,t);if(e==="data")this[k]=!1,this[Pe]++,!this[I].length&&!this[R]&&this[qe]();else if(e==="readable"&&this[v]!==0)super.emit("readable");else if(Oo(e)&&this[_e])super.emit(e),this.removeAllListeners(e);else if(e==="error"&&this[ft]){let r=t;this[J]?pt(()=>r.call(this,this[ft])):r.call(this,this[ft])}return i}removeListener(e,t){return this.off(e,t)}off(e,t){let i=super.off(e,t);return e==="data"&&(this[Pe]=this.listeners("data").length,this[Pe]===0&&!this[k]&&!this[I].length&&(this[R]=!1)),i}removeAllListeners(e){let t=super.removeAllListeners(e);return(e==="data"||e===void 0)&&(this[Pe]=0,!this[k]&&!this[I].length&&(this[R]=!1)),t}get emittedEnd(){return this[_e]}[ue](){!this[zt]&&!this[_e]&&!this[y]&&this[O].length===0&&this[le]&&(this[zt]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[kt]&&this.emit("close"),this[zt]=!1)}emit(e,...t){let i=t[0];if(e!=="error"&&e!=="close"&&e!==y&&this[y])return!1;if(e==="data")return!this[N]&&!i?!1:this[J]?(pt(()=>this[$i](i)),!0):this[$i](i);if(e==="end")return this[jr]();if(e==="close"){if(this[kt]=!0,!this[_e]&&!this[y])return!1;let n=super.emit("close");return this.removeAllListeners("close"),n}else if(e==="error"){this[ft]=i,super.emit(Vi,i);let n=!this[mt]||this.listeners("error").length?super.emit("error",i):!1;return this[ue](),n}else if(e==="resume"){let n=super.emit("resume");return this[ue](),n}else if(e==="finish"||e==="prefinish"){let n=super.emit(e);return this.removeAllListeners(e),n}let r=super.emit(e,...t);return this[ue](),r}[$i](e){for(let i of this[I])i.dest.write(e)===!1&&this.pause();let t=this[k]?!1:super.emit("data",e);return this[ue](),t}[jr](){return this[_e]?!1:(this[_e]=!0,this.readable=!1,this[J]?(pt(()=>this[Xi]()),!0):this[Xi]())}[Xi](){if(this[Ue]){let t=this[Ue].end();if(t){for(let i of this[I])i.dest.write(t);this[k]||super.emit("data",t)}}for(let t of this[I])t.end();let e=super.emit("end");return this.removeAllListeners("end"),e}async collect(){let e=Object.assign([],{dataLength:0});this[N]||(e.dataLength=0);let t=this.promise();return this.on("data",i=>{e.push(i),this[N]||(e.dataLength+=i.length)}),await t,e}async concat(){if(this[N])throw new Error("cannot concat in objectMode");let e=await this.collect();return this[K]?e.join(""):Buffer.concat(e,e.dataLength)}async promise(){return new Promise((e,t)=>{this.on(y,()=>t(new Error("stream destroyed"))),this.on("error",i=>t(i)),this.on("end",()=>e())})}[Symbol.asyncIterator](){this[k]=!1;let e=!1,t=async()=>(this.pause(),e=!0,{value:void 0,done:!0});return{next:()=>{if(e)return t();let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[le])return t();let n,o,a=c=>{this.off("data",h),this.off("end",l),this.off(y,u),t(),o(c)},h=c=>{this.off("error",a),this.off("end",l),this.off(y,u),this.pause(),n({value:c,done:!!this[le]})},l=()=>{this.off("error",a),this.off("data",h),this.off(y,u),t(),n({done:!0,value:void 0})},u=()=>a(new Error("stream destroyed"));return new Promise((c,E)=>{o=E,n=c,this.once(y,u),this.once("error",a),this.once("end",l),this.once("data",h)})},throw:t,return:t,[Symbol.asyncIterator](){return this},[Symbol.asyncDispose]:async()=>{}}}[Symbol.iterator](){this[k]=!1;let e=!1,t=()=>(this.pause(),this.off(Vi,t),this.off(y,t),this.off("end",t),e=!0,{done:!0,value:void 0}),i=()=>{if(e)return t();let r=this.read();return r===null?t():{done:!1,value:r}};return this.once("end",t),this.once(Vi,t),this.once(y,t),{next:i,throw:t,return:t,[Symbol.iterator](){return this},[Symbol.dispose]:()=>{}}}destroy(e){if(this[y])return e?this.emit("error",e):this.emit(y),this;this[y]=!0,this[k]=!0,this[O].length=0,this[v]=0;let t=this;return typeof t.close=="function"&&!this[kt]&&t.close(),e?this.emit("error",e):this.emit(y),this}static get isStream(){return C.isStream}};C.Minipass=Wt});var Ke=d(W=>{"use strict";var Ur=W&&W.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(W,"__esModule",{value:!0});W.WriteStreamSync=W.WriteStream=W.ReadStreamSync=W.ReadStream=void 0;var No=Ur(require("events")),B=Ur(require("fs")),Mo=We(),Lo=B.default.writev,ye=Symbol("_autoClose"),$=Symbol("_close"),_t=Symbol("_ended"),p=Symbol("_fd"),ts=Symbol("_finished"),fe=Symbol("_flags"),is=Symbol("_flush"),os=Symbol("_handleChunk"),as=Symbol("_makeBuf"),yt=Symbol("_mode"),Ht=Symbol("_needDrain"),Ge=Symbol("_onerror"),Ye=Symbol("_onopen"),ss=Symbol("_onread"),He=Symbol("_onwrite"),Ee=Symbol("_open"),V=Symbol("_path"),we=Symbol("_pos"),ee=Symbol("_queue"),Ze=Symbol("_read"),rs=Symbol("_readSize"),ce=Symbol("_reading"),wt=Symbol("_remain"),ns=Symbol("_size"),Zt=Symbol("_write"),Ne=Symbol("_writing"),Gt=Symbol("_defaultFlag"),Me=Symbol("_errored"),Yt=class extends Mo.Minipass{[Me]=!1;[p];[V];[rs];[ce]=!1;[ns];[wt];[ye];constructor(e,t){if(t=t||{},super(t),this.readable=!0,this.writable=!1,typeof e!="string")throw new TypeError("path must be a string");this[Me]=!1,this[p]=typeof t.fd=="number"?t.fd:void 0,this[V]=e,this[rs]=t.readSize||16*1024*1024,this[ce]=!1,this[ns]=typeof t.size=="number"?t.size:1/0,this[wt]=this[ns],this[ye]=typeof t.autoClose=="boolean"?t.autoClose:!0,typeof this[p]=="number"?this[Ze]():this[Ee]()}get fd(){return this[p]}get path(){return this[V]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[Ee](){B.default.open(this[V],"r",(e,t)=>this[Ye](e,t))}[Ye](e,t){e?this[Ge](e):(this[p]=t,this.emit("open",t),this[Ze]())}[as](){return Buffer.allocUnsafe(Math.min(this[rs],this[wt]))}[Ze](){if(!this[ce]){this[ce]=!0;let e=this[as]();if(e.length===0)return process.nextTick(()=>this[ss](null,0,e));B.default.read(this[p],e,0,e.length,null,(t,i,r)=>this[ss](t,i,r))}}[ss](e,t,i){this[ce]=!1,e?this[Ge](e):this[os](t,i)&&this[Ze]()}[$](){if(this[ye]&&typeof this[p]=="number"){let e=this[p];this[p]=void 0,B.default.close(e,t=>t?this.emit("error",t):this.emit("close"))}}[Ge](e){this[ce]=!0,this[$](),this.emit("error",e)}[os](e,t){let i=!1;return this[wt]-=e,e>0&&(i=super.write(ethis[Ye](e,t))}[Ye](e,t){this[Gt]&&this[fe]==="r+"&&e&&e.code==="ENOENT"?(this[fe]="w",this[Ee]()):e?this[Ge](e):(this[p]=t,this.emit("open",t),this[Ne]||this[is]())}end(e,t){return e&&this.write(e,t),this[_t]=!0,!this[Ne]&&!this[ee].length&&typeof this[p]=="number"&&this[He](null,0),this}write(e,t){return typeof e=="string"&&(e=Buffer.from(e,t)),this[_t]?(this.emit("error",new Error("write() after end()")),!1):this[p]===void 0||this[Ne]||this[ee].length?(this[ee].push(e),this[Ht]=!0,!1):(this[Ne]=!0,this[Zt](e),!0)}[Zt](e){B.default.write(this[p],e,0,e.length,this[we],(t,i)=>this[He](t,i))}[He](e,t){e?this[Ge](e):(this[we]!==void 0&&typeof t=="number"&&(this[we]+=t),this[ee].length?this[is]():(this[Ne]=!1,this[_t]&&!this[ts]?(this[ts]=!0,this[$](),this.emit("finish")):this[Ht]&&(this[Ht]=!1,this.emit("drain"))))}[is](){if(this[ee].length===0)this[_t]&&this[He](null,0);else if(this[ee].length===1)this[Zt](this[ee].pop());else{let e=this[ee];this[ee]=[],Lo(this[p],e,this[we],(t,i)=>this[He](t,i))}}[$](){if(this[ye]&&typeof this[p]=="number"){let e=this[p];this[p]=void 0,B.default.close(e,t=>t?this.emit("error",t):this.emit("close"))}}};W.WriteStream=Kt;var ls=class extends Kt{[Ee](){let e;if(this[Gt]&&this[fe]==="r+")try{e=B.default.openSync(this[V],this[fe],this[yt])}catch(t){if(t?.code==="ENOENT")return this[fe]="w",this[Ee]();throw t}else e=B.default.openSync(this[V],this[fe],this[yt]);this[Ye](null,e)}[$](){if(this[ye]&&typeof this[p]=="number"){let e=this[p];this[p]=void 0,B.default.closeSync(e),this.emit("close")}}[Zt](e){let t=!0;try{this[He](null,B.default.writeSync(this[p],e,0,e.length,this[we])),t=!1}finally{if(t)try{this[$]()}catch{}}}};W.WriteStreamSync=ls});var Vt=d(b=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});b.dealias=b.isNoFile=b.isFile=b.isAsync=b.isSync=b.isAsyncNoFile=b.isSyncNoFile=b.isAsyncFile=b.isSyncFile=void 0;var Ao=new Map([["C","cwd"],["f","file"],["z","gzip"],["P","preservePaths"],["U","unlink"],["strip-components","strip"],["stripComponents","strip"],["keep-newer","newer"],["keepNewer","newer"],["keep-newer-files","newer"],["keepNewerFiles","newer"],["k","keep"],["keep-existing","keep"],["keepExisting","keep"],["m","noMtime"],["no-mtime","noMtime"],["p","preserveOwner"],["L","follow"],["h","follow"],["onentry","onReadEntry"]]),Io=s=>!!s.sync&&!!s.file;b.isSyncFile=Io;var Co=s=>!s.sync&&!!s.file;b.isAsyncFile=Co;var Fo=s=>!!s.sync&&!s.file;b.isSyncNoFile=Fo;var Bo=s=>!s.sync&&!s.file;b.isAsyncNoFile=Bo;var zo=s=>!!s.sync;b.isSync=zo;var ko=s=>!s.sync;b.isAsync=ko;var jo=s=>!!s.file;b.isFile=jo;var xo=s=>!s.file;b.isNoFile=xo;var Uo=s=>{let e=Ao.get(s);return e||s},qo=(s={})=>{if(!s)return{};let e={};for(let[t,i]of Object.entries(s)){let r=Uo(t);e[r]=i}return e.chmod===void 0&&e.noChmod===!1&&(e.chmod=!0),delete e.noChmod,e};b.dealias=qo});var Ve=d($t=>{"use strict";Object.defineProperty($t,"__esModule",{value:!0});$t.makeCommand=void 0;var Et=Vt(),Wo=(s,e,t,i,r)=>Object.assign((n=[],o,a)=>{Array.isArray(n)&&(o=n,n={}),typeof o=="function"&&(a=o,o=void 0),o?o=Array.from(o):o=[];let h=(0,Et.dealias)(n);if(r?.(h,o),(0,Et.isSyncFile)(h)){if(typeof a=="function")throw new TypeError("callback not supported for sync tar functions");return s(h,o)}else if((0,Et.isAsyncFile)(h)){let l=e(h,o),u=a||void 0;return u?l.then(()=>u(),u):l}else if((0,Et.isSyncNoFile)(h)){if(typeof a=="function")throw new TypeError("callback not supported for sync tar functions");return t(h,o)}else if((0,Et.isAsyncNoFile)(h)){if(typeof a=="function")throw new TypeError("callback only supported with file option");return i(h,o)}else throw new Error("impossible options??")},{syncFile:s,asyncFile:e,syncNoFile:t,asyncNoFile:i,validate:r});$t.makeCommand=Wo});var us=d($e=>{"use strict";var Ho=$e&&$e.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty($e,"__esModule",{value:!0});$e.constants=void 0;var Zo=Ho(require("zlib")),Go=Zo.default.constants||{ZLIB_VERNUM:4736};$e.constants=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:1/0,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},Go))});var vs=d(f=>{"use strict";var Yo=f&&f.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),Ko=f&&f.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),Vo=f&&f.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;rs,cs=Wr?.writable===!0||Wr?.set!==void 0?s=>{Le.Buffer.concat=s?ea:Jo}:s=>{},Ae=Symbol("_superWrite"),Ie=class extends Error{code;errno;constructor(e,t){super("zlib: "+e.message,{cause:e}),this.code=e.code,this.errno=e.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+e.message,Error.captureStackTrace(this,t??this.constructor)}get name(){return"ZlibError"}};f.ZlibError=Ie;var fs=Symbol("flushFlag"),bt=class extends Xo.Minipass{#e=!1;#i=!1;#s;#n;#r;#t;#o;get sawError(){return this.#e}get handle(){return this.#t}get flushFlag(){return this.#s}constructor(e,t){if(!e||typeof e!="object")throw new TypeError("invalid options for ZlibBase constructor");if(super(e),this.#s=e.flush??0,this.#n=e.finishFlush??0,this.#r=e.fullFlushFlag??0,typeof qr[t]!="function")throw new TypeError("Compression method not supported: "+t);try{this.#t=new qr[t](e)}catch(i){throw new Ie(i,this.constructor)}this.#o=i=>{this.#e||(this.#e=!0,this.close(),this.emit("error",i))},this.#t?.on("error",i=>this.#o(new Ie(i))),this.once("end",()=>this.close)}close(){this.#t&&(this.#t.close(),this.#t=void 0,this.emit("close"))}reset(){if(!this.#e)return(0,ds.default)(this.#t,"zlib binding closed"),this.#t.reset?.()}flush(e){this.ended||(typeof e!="number"&&(e=this.#r),this.write(Object.assign(Le.Buffer.alloc(0),{[fs]:e})))}end(e,t,i){return typeof e=="function"&&(i=e,t=void 0,e=void 0),typeof t=="function"&&(i=t,t=void 0),e&&(t?this.write(e,t):this.write(e)),this.flush(this.#n),this.#i=!0,super.end(i)}get ended(){return this.#i}[Ae](e){return super.write(e)}write(e,t,i){if(typeof t=="function"&&(i=t,t="utf8"),typeof e=="string"&&(e=Le.Buffer.from(e,t)),this.#e)return;(0,ds.default)(this.#t,"zlib binding closed");let r=this.#t._handle,n=r.close;r.close=()=>{};let o=this.#t.close;this.#t.close=()=>{},cs(!0);let a;try{let l=typeof e[fs]=="number"?e[fs]:this.#s;a=this.#t._processChunk(e,l),cs(!1)}catch(l){cs(!1),this.#o(new Ie(l,this.write))}finally{this.#t&&(this.#t._handle=r,r.close=n,this.#t.close=o,this.#t.removeAllListeners("error"))}this.#t&&this.#t.on("error",l=>this.#o(new Ie(l,this.write)));let h;if(a)if(Array.isArray(a)&&a.length>0){let l=a[0];h=this[Ae](Le.Buffer.from(l));for(let u=1;u{typeof r=="function"&&(n=r,r=this.flushFlag),this.flush(r),n?.()};try{this.handle.params(e,t)}finally{this.handle.flush=i}this.handle&&(this.#e=e,this.#i=t)}}}};f.Zlib=ie;var ms=class extends ie{constructor(e){super(e,"Deflate")}};f.Deflate=ms;var ps=class extends ie{constructor(e){super(e,"Inflate")}};f.Inflate=ps;var _s=class extends ie{#e;constructor(e){super(e,"Gzip"),this.#e=e&&!!e.portable}[Ae](e){return this.#e?(this.#e=!1,e[9]=255,super[Ae](e)):super[Ae](e)}};f.Gzip=_s;var ws=class extends ie{constructor(e){super(e,"Gunzip")}};f.Gunzip=ws;var ys=class extends ie{constructor(e){super(e,"DeflateRaw")}};f.DeflateRaw=ys;var Es=class extends ie{constructor(e){super(e,"InflateRaw")}};f.InflateRaw=Es;var bs=class extends ie{constructor(e){super(e,"Unzip")}};f.Unzip=bs;var Xt=class extends bt{constructor(e,t){e=e||{},e.flush=e.flush||te.constants.BROTLI_OPERATION_PROCESS,e.finishFlush=e.finishFlush||te.constants.BROTLI_OPERATION_FINISH,e.fullFlushFlag=te.constants.BROTLI_OPERATION_FLUSH,super(e,t)}},Ss=class extends Xt{constructor(e){super(e,"BrotliCompress")}};f.BrotliCompress=Ss;var gs=class extends Xt{constructor(e){super(e,"BrotliDecompress")}};f.BrotliDecompress=gs;var Qt=class extends bt{constructor(e,t){e=e||{},e.flush=e.flush||te.constants.ZSTD_e_continue,e.finishFlush=e.finishFlush||te.constants.ZSTD_e_end,e.fullFlushFlag=te.constants.ZSTD_e_flush,super(e,t)}},Rs=class extends Qt{constructor(e){super(e,"ZstdCompress")}};f.ZstdCompress=Rs;var Os=class extends Qt{constructor(e){super(e,"ZstdDecompress")}};f.ZstdDecompress=Os});var Gr=d(Xe=>{"use strict";Object.defineProperty(Xe,"__esModule",{value:!0});Xe.parse=Xe.encode=void 0;var ta=(s,e)=>{if(Number.isSafeInteger(s))s<0?sa(s,e):ia(s,e);else throw Error("cannot encode number outside of javascript safe integer range");return e};Xe.encode=ta;var ia=(s,e)=>{e[0]=128;for(var t=e.length;t>1;t--)e[t-1]=s&255,s=Math.floor(s/256)},sa=(s,e)=>{e[0]=255;var t=!1;s=s*-1;for(var i=e.length;i>1;i--){var r=s&255;s=Math.floor(s/256),t?e[i-1]=Hr(r):r===0?e[i-1]=0:(t=!0,e[i-1]=Zr(r))}},ra=s=>{let e=s[0],t=e===128?oa(s.subarray(1,s.length)):e===255?na(s):null;if(t===null)throw Error("invalid base256 encoding");if(!Number.isSafeInteger(t))throw Error("parsed number outside of javascript safe integer range");return t};Xe.parse=ra;var na=s=>{for(var e=s.length,t=0,i=!1,r=e-1;r>-1;r--){var n=Number(s[r]),o;i?o=Hr(n):n===0?o=n:(i=!0,o=Zr(n)),o!==0&&(t-=o*Math.pow(256,e-r-1))}return t},oa=s=>{for(var e=s.length,t=0,i=e-1;i>-1;i--){var r=Number(s[i]);r!==0&&(t+=r*Math.pow(256,e-i-1))}return t},Hr=s=>(255^s)&255,Zr=s=>(255^s)+1&255});var Ts=d(j=>{"use strict";Object.defineProperty(j,"__esModule",{value:!0});j.code=j.name=j.isName=j.isCode=void 0;var aa=s=>j.name.has(s);j.isCode=aa;var ha=s=>j.code.has(s);j.isName=ha;j.name=new Map([["0","File"],["","OldFile"],["1","Link"],["2","SymbolicLink"],["3","CharacterDevice"],["4","BlockDevice"],["5","Directory"],["6","FIFO"],["7","ContiguousFile"],["g","GlobalExtendedHeader"],["x","ExtendedHeader"],["A","SolarisACL"],["D","GNUDumpDir"],["I","Inode"],["K","NextFileHasLongLinkpath"],["L","NextFileHasLongPath"],["M","ContinuationFile"],["N","OldGnuLongPath"],["S","SparseFile"],["V","TapeVolumeHeader"],["X","OldExtendedHeader"]]);j.code=new Map(Array.from(j.name).map(s=>[s[1],s[0]]))});var Je=d(se=>{"use strict";var la=se&&se.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),ua=se&&se.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),Yr=se&&se.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r=t+512))throw new Error("need 512 bytes for header");this.path=i?.path??Ce(e,t,100),this.mode=i?.mode??r?.mode??be(e,t+100,8),this.uid=i?.uid??r?.uid??be(e,t+108,8),this.gid=i?.gid??r?.gid??be(e,t+116,8),this.size=i?.size??r?.size??be(e,t+124,12),this.mtime=i?.mtime??r?.mtime??Ds(e,t+136,12),this.cksum=be(e,t+148,12),r&&this.#i(r,!0),i&&this.#i(i);let n=Ce(e,t+156,1);if(St.isCode(n)&&(this.#e=n||"0"),this.#e==="0"&&this.path.slice(-1)==="/"&&(this.#e="5"),this.#e==="5"&&(this.size=0),this.linkpath=Ce(e,t+157,100),e.subarray(t+257,t+265).toString()==="ustar\x0000")if(this.uname=i?.uname??r?.uname??Ce(e,t+265,32),this.gname=i?.gname??r?.gname??Ce(e,t+297,32),this.devmaj=i?.devmaj??r?.devmaj??be(e,t+329,8)??0,this.devmin=i?.devmin??r?.devmin??be(e,t+337,8)??0,e[t+475]!==0){let a=Ce(e,t+345,155);this.path=a+"/"+this.path}else{let a=Ce(e,t+345,130);a&&(this.path=a+"/"+this.path),this.atime=i?.atime??r?.atime??Ds(e,t+476,12),this.ctime=i?.ctime??r?.ctime??Ds(e,t+488,12)}let o=256;for(let a=t;a!(r==null||i==="path"&&t||i==="linkpath"&&t||i==="global"))))}encode(e,t=0){if(e||(e=this.block=Buffer.alloc(512)),this.#e==="Unsupported"&&(this.#e="0"),!(e.length>=t+512))throw new Error("need 512 bytes for header");let i=this.ctime||this.atime?130:155,r=ca(this.path||"",i),n=r[0],o=r[1];this.needPax=!!r[2],this.needPax=Fe(e,t,100,n)||this.needPax,this.needPax=Se(e,t+100,8,this.mode)||this.needPax,this.needPax=Se(e,t+108,8,this.uid)||this.needPax,this.needPax=Se(e,t+116,8,this.gid)||this.needPax,this.needPax=Se(e,t+124,12,this.size)||this.needPax,this.needPax=Ps(e,t+136,12,this.mtime)||this.needPax,e[t+156]=this.#e.charCodeAt(0),this.needPax=Fe(e,t+157,100,this.linkpath)||this.needPax,e.write("ustar\x0000",t+257,8),this.needPax=Fe(e,t+265,32,this.uname)||this.needPax,this.needPax=Fe(e,t+297,32,this.gname)||this.needPax,this.needPax=Se(e,t+329,8,this.devmaj)||this.needPax,this.needPax=Se(e,t+337,8,this.devmin)||this.needPax,this.needPax=Fe(e,t+345,i,o)||this.needPax,e[t+475]!==0?this.needPax=Fe(e,t+345,155,o)||this.needPax:(this.needPax=Fe(e,t+345,130,o)||this.needPax,this.needPax=Ps(e,t+476,12,this.atime)||this.needPax,this.needPax=Ps(e,t+488,12,this.ctime)||this.needPax);let a=256;for(let h=t;h{let i=s,r="",n,o=Qe.posix.parse(s).root||".";if(Buffer.byteLength(i)<100)n=[i,r,!1];else{r=Qe.posix.dirname(i),i=Qe.posix.basename(i);do Buffer.byteLength(i)<=100&&Buffer.byteLength(r)<=e?n=[i,r,!1]:Buffer.byteLength(i)>100&&Buffer.byteLength(r)<=e?n=[i.slice(0,99),r,!0]:(i=Qe.posix.join(Qe.posix.basename(r),i),r=Qe.posix.dirname(r));while(r!==o&&n===void 0);n||(n=[s.slice(0,99),"",!0])}return n},Ce=(s,e,t)=>s.subarray(e,e+t).toString("utf8").replace(/\0.*/,""),Ds=(s,e,t)=>fa(be(s,e,t)),fa=s=>s===void 0?void 0:new Date(s*1e3),be=(s,e,t)=>Number(s[e])&128?Kr.parse(s.subarray(e,e+t)):ma(s,e,t),da=s=>isNaN(s)?void 0:s,ma=(s,e,t)=>da(parseInt(s.subarray(e,e+t).toString("utf8").replace(/\0.*$/,"").trim(),8)),pa={12:8589934591,8:2097151},Se=(s,e,t,i)=>i===void 0?!1:i>pa[t]||i<0?(Kr.encode(i,s.subarray(e,e+t)),!0):(_a(s,e,t,i),!1),_a=(s,e,t,i)=>s.write(wa(i,t),e,t,"ascii"),wa=(s,e)=>ya(Math.floor(s).toString(8),e),ya=(s,e)=>(s.length===e-1?s:new Array(e-s.length-1).join("0")+s+" ")+"\0",Ps=(s,e,t,i)=>i===void 0?!1:Se(s,e,t,i.getTime()/1e3),Ea=new Array(156).join("\0"),Fe=(s,e,t,i)=>i===void 0?!1:(s.write(i+Ea,e,t,"utf8"),i.length!==Buffer.byteLength(i)||i.length>t)});var ei=d(Jt=>{"use strict";Object.defineProperty(Jt,"__esModule",{value:!0});Jt.Pax=void 0;var ba=require("node:path"),Sa=Je(),Ms=class s{atime;mtime;ctime;charset;comment;gid;uid;gname;uname;linkpath;dev;ino;nlink;path;size;mode;global;constructor(e,t=!1){this.atime=e.atime,this.charset=e.charset,this.comment=e.comment,this.ctime=e.ctime,this.dev=e.dev,this.gid=e.gid,this.global=t,this.gname=e.gname,this.ino=e.ino,this.linkpath=e.linkpath,this.mtime=e.mtime,this.nlink=e.nlink,this.path=e.path,this.size=e.size,this.uid=e.uid,this.uname=e.uname}encode(){let e=this.encodeBody();if(e==="")return Buffer.allocUnsafe(0);let t=Buffer.byteLength(e),i=512*Math.ceil(1+t/512),r=Buffer.allocUnsafe(i);for(let n=0;n<512;n++)r[n]=0;new Sa.Header({path:("PaxHeader/"+(0,ba.basename)(this.path??"")).slice(0,99),mode:this.mode||420,uid:this.uid,gid:this.gid,size:t,mtime:this.mtime,type:this.global?"GlobalExtendedHeader":"ExtendedHeader",linkpath:"",uname:this.uname||"",gname:this.gname||"",devmaj:0,devmin:0,atime:this.atime,ctime:this.ctime}).encode(r),r.write(e,512,t,"utf8");for(let n=t+512;n=Math.pow(10,o)&&(o+=1),o+n+r}static parse(e,t,i=!1){return new s(ga(Ra(e),t),i)}};Jt.Pax=Ms;var ga=(s,e)=>e?Object.assign({},e,s):s,Ra=s=>s.replace(/\n$/,"").split(`
-`).reduce(Oa,Object.create(null)),Oa=(s,e)=>{let t=parseInt(e,10);if(t!==Buffer.byteLength(e)+1)return s;e=e.slice((t+" ").length);let i=e.split("="),r=i.shift();if(!r)return s;let n=r.replace(/^SCHILY\.(dev|ino|nlink)/,"$1"),o=i.join("=");return s[n]=/^([A-Z]+\.)?([mac]|birth|creation)time$/.test(n)?new Date(Number(o)*1e3):/^[0-9]+$/.test(o)?+o:o,s}});var et=d(ti=>{"use strict";Object.defineProperty(ti,"__esModule",{value:!0});ti.normalizeWindowsPath=void 0;var va=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform;ti.normalizeWindowsPath=va!=="win32"?s=>s:s=>s&&s.replace(/\\/g,"/")});var ri=d(si=>{"use strict";Object.defineProperty(si,"__esModule",{value:!0});si.ReadEntry=void 0;var Ta=We(),ii=et(),Ls=class extends Ta.Minipass{extended;globalExtended;header;startBlockSize;blockRemain;remain;type;meta=!1;ignore=!1;path;mode;uid;gid;uname;gname;size=0;mtime;atime;ctime;linkpath;dev;ino;nlink;invalid=!1;absolute;unsupported=!1;constructor(e,t,i){switch(super({}),this.pause(),this.extended=t,this.globalExtended=i,this.header=e,this.remain=e.size??0,this.startBlockSize=512*Math.ceil(this.remain/512),this.blockRemain=this.startBlockSize,this.type=e.type,this.type){case"File":case"OldFile":case"Link":case"SymbolicLink":case"CharacterDevice":case"BlockDevice":case"Directory":case"FIFO":case"ContiguousFile":case"GNUDumpDir":break;case"NextFileHasLongLinkpath":case"NextFileHasLongPath":case"OldGnuLongPath":case"GlobalExtendedHeader":case"ExtendedHeader":case"OldExtendedHeader":this.meta=!0;break;default:this.ignore=!0}if(!e.path)throw new Error("no path provided for tar.ReadEntry");this.path=(0,ii.normalizeWindowsPath)(e.path),this.mode=e.mode,this.mode&&(this.mode=this.mode&4095),this.uid=e.uid,this.gid=e.gid,this.uname=e.uname,this.gname=e.gname,this.size=this.remain,this.mtime=e.mtime,this.atime=e.atime,this.ctime=e.ctime,this.linkpath=e.linkpath?(0,ii.normalizeWindowsPath)(e.linkpath):void 0,this.uname=e.uname,this.gname=e.gname,t&&this.#e(t),i&&this.#e(i,!0)}write(e){let t=e.length;if(t>this.blockRemain)throw new Error("writing more to entry than is appropriate");let i=this.remain,r=this.blockRemain;return this.remain=Math.max(0,i-t),this.blockRemain=Math.max(0,r-t),this.ignore?!0:i>=t?super.write(e):super.write(e.subarray(0,i))}#e(e,t=!1){e.path&&(e.path=(0,ii.normalizeWindowsPath)(e.path)),e.linkpath&&(e.linkpath=(0,ii.normalizeWindowsPath)(e.linkpath)),Object.assign(this,Object.fromEntries(Object.entries(e).filter(([i,r])=>!(r==null||i==="path"&&t))))}};si.ReadEntry=Ls});var oi=d(ni=>{"use strict";Object.defineProperty(ni,"__esModule",{value:!0});ni.warnMethod=void 0;var Da=(s,e,t,i={})=>{s.file&&(i.file=s.file),s.cwd&&(i.cwd=s.cwd),i.code=t instanceof Error&&t.code||e,i.tarCode=e,!s.strict&&i.recoverable!==!1?(t instanceof Error&&(i=Object.assign(t,i),t=t.message),s.emit("warn",e,t,i)):t instanceof Error?s.emit("error",Object.assign(t,i)):s.emit("error",Object.assign(new Error(`${e}: ${t}`),i))};ni.warnMethod=Da});var mi=d(di=>{"use strict";Object.defineProperty(di,"__esModule",{value:!0});di.Parser=void 0;var Pa=require("events"),As=vs(),Vr=Je(),$r=ei(),Na=ri(),Ma=oi(),La=1024*1024,zs=Buffer.from([31,139]),ks=Buffer.from([40,181,47,253]),Aa=Math.max(zs.length,ks.length),H=Symbol("state"),Be=Symbol("writeEntry"),de=Symbol("readEntry"),Is=Symbol("nextEntry"),Xr=Symbol("processEntry"),re=Symbol("extendedHeader"),gt=Symbol("globalExtendedHeader"),ge=Symbol("meta"),Qr=Symbol("emitMeta"),_=Symbol("buffer"),me=Symbol("queue"),Re=Symbol("ended"),Cs=Symbol("emittedEnd"),ze=Symbol("emit"),S=Symbol("unzip"),ai=Symbol("consumeChunk"),hi=Symbol("consumeChunkSub"),Fs=Symbol("consumeBody"),Jr=Symbol("consumeMeta"),en=Symbol("consumeHeader"),Rt=Symbol("consuming"),Bs=Symbol("bufferConcat"),li=Symbol("maybeEnd"),tt=Symbol("writing"),Oe=Symbol("aborted"),ui=Symbol("onDone"),ke=Symbol("sawValidEntry"),ci=Symbol("sawNullBlock"),fi=Symbol("sawEOF"),tn=Symbol("closeStream"),Ia=()=>!0,js=class extends Pa.EventEmitter{file;strict;maxMetaEntrySize;filter;brotli;zstd;writable=!0;readable=!1;[me]=[];[_];[de];[Be];[H]="begin";[ge]="";[re];[gt];[Re]=!1;[S];[Oe]=!1;[ke];[ci]=!1;[fi]=!1;[tt]=!1;[Rt]=!1;[Cs]=!1;constructor(e={}){super(),this.file=e.file||"",this.on(ui,()=>{(this[H]==="begin"||this[ke]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),e.ondone?this.on(ui,e.ondone):this.on(ui,()=>{this.emit("prefinish"),this.emit("finish"),this.emit("end")}),this.strict=!!e.strict,this.maxMetaEntrySize=e.maxMetaEntrySize||La,this.filter=typeof e.filter=="function"?e.filter:Ia;let t=e.file&&(e.file.endsWith(".tar.br")||e.file.endsWith(".tbr"));this.brotli=!(e.gzip||e.zstd)&&e.brotli!==void 0?e.brotli:t?void 0:!1;let i=e.file&&(e.file.endsWith(".tar.zst")||e.file.endsWith(".tzst"));this.zstd=!(e.gzip||e.brotli)&&e.zstd!==void 0?e.zstd:i?!0:void 0,this.on("end",()=>this[tn]()),typeof e.onwarn=="function"&&this.on("warn",e.onwarn),typeof e.onReadEntry=="function"&&this.on("entry",e.onReadEntry)}warn(e,t,i={}){(0,Ma.warnMethod)(this,e,t,i)}[en](e,t){this[ke]===void 0&&(this[ke]=!1);let i;try{i=new Vr.Header(e,t,this[re],this[gt])}catch(r){return this.warn("TAR_ENTRY_INVALID",r)}if(i.nullBlock)this[ci]?(this[fi]=!0,this[H]==="begin"&&(this[H]="header"),this[ze]("eof")):(this[ci]=!0,this[ze]("nullBlock"));else if(this[ci]=!1,!i.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:i});else if(!i.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:i});else{let r=i.type;if(/^(Symbolic)?Link$/.test(r)&&!i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:i});else if(!/^(Symbolic)?Link$/.test(r)&&!/^(Global)?ExtendedHeader$/.test(r)&&i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:i});else{let n=this[Be]=new Na.ReadEntry(i,this[re],this[gt]);if(!this[ke])if(n.remain){let o=()=>{n.invalid||(this[ke]=!0)};n.on("end",o)}else this[ke]=!0;n.meta?n.size>this.maxMetaEntrySize?(n.ignore=!0,this[ze]("ignoredEntry",n),this[H]="ignore",n.resume()):n.size>0&&(this[ge]="",n.on("data",o=>this[ge]+=o),this[H]="meta"):(this[re]=void 0,n.ignore=n.ignore||!this.filter(n.path,n),n.ignore?(this[ze]("ignoredEntry",n),this[H]=n.remain?"ignore":"header",n.resume()):(n.remain?this[H]="body":(this[H]="header",n.end()),this[de]?this[me].push(n):(this[me].push(n),this[Is]())))}}}[tn](){queueMicrotask(()=>this.emit("close"))}[Xr](e){let t=!0;if(!e)this[de]=void 0,t=!1;else if(Array.isArray(e)){let[i,...r]=e;this.emit(i,...r)}else this[de]=e,this.emit("entry",e),e.emittedEnd||(e.on("end",()=>this[Is]()),t=!1);return t}[Is](){do;while(this[Xr](this[me].shift()));if(!this[me].length){let e=this[de];!e||e.flowing||e.size===e.remain?this[tt]||this.emit("drain"):e.once("drain",()=>this.emit("drain"))}}[Fs](e,t){let i=this[Be];if(!i)throw new Error("attempt to consume body without entry??");let r=i.blockRemain??0,n=r>=e.length&&t===0?e:e.subarray(t,t+r);return i.write(n),i.blockRemain||(this[H]="header",this[Be]=void 0,i.end()),n.length}[Jr](e,t){let i=this[Be],r=this[Fs](e,t);return!this[Be]&&i&&this[Qr](i),r}[ze](e,t,i){!this[me].length&&!this[de]?this.emit(e,t,i):this[me].push([e,t,i])}[Qr](e){switch(this[ze]("meta",this[ge]),e.type){case"ExtendedHeader":case"OldExtendedHeader":this[re]=$r.Pax.parse(this[ge],this[re],!1);break;case"GlobalExtendedHeader":this[gt]=$r.Pax.parse(this[ge],this[gt],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":{let t=this[re]??Object.create(null);this[re]=t,t.path=this[ge].replace(/\0.*/,"");break}case"NextFileHasLongLinkpath":{let t=this[re]||Object.create(null);this[re]=t,t.linkpath=this[ge].replace(/\0.*/,"");break}default:throw new Error("unknown meta: "+e.type)}}abort(e){this[Oe]=!0,this.emit("abort",e),this.warn("TAR_ABORT",e,{recoverable:!1})}write(e,t,i){if(typeof t=="function"&&(i=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,typeof t=="string"?t:"utf8")),this[Oe])return i?.(),!1;if((this[S]===void 0||this.brotli===void 0&&this[S]===!1)&&e){if(this[_]&&(e=Buffer.concat([this[_],e]),this[_]=void 0),e.lengththis[ai](u)),this[S].on("error",u=>this.abort(u)),this[S].on("end",()=>{this[Re]=!0,this[ai]()}),this[tt]=!0;let l=!!this[S][h?"end":"write"](e);return this[tt]=!1,i?.(),l}}this[tt]=!0,this[S]?this[S].write(e):this[ai](e),this[tt]=!1;let n=this[me].length?!1:this[de]?this[de].flowing:!0;return!n&&!this[me].length&&this[de]?.once("drain",()=>this.emit("drain")),i?.(),n}[Bs](e){e&&!this[Oe]&&(this[_]=this[_]?Buffer.concat([this[_],e]):e)}[li](){if(this[Re]&&!this[Cs]&&!this[Oe]&&!this[Rt]){this[Cs]=!0;let e=this[Be];if(e&&e.blockRemain){let t=this[_]?this[_].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${e.blockRemain} more bytes, only ${t} available)`,{entry:e}),this[_]&&e.write(this[_]),e.end()}this[ze](ui)}}[ai](e){if(this[Rt]&&e)this[Bs](e);else if(!e&&!this[_])this[li]();else if(e){if(this[Rt]=!0,this[_]){this[Bs](e);let t=this[_];this[_]=void 0,this[hi](t)}else this[hi](e);for(;this[_]&&this[_]?.length>=512&&!this[Oe]&&!this[fi];){let t=this[_];this[_]=void 0,this[hi](t)}this[Rt]=!1}(!this[_]||this[Re])&&this[li]()}[hi](e){let t=0,i=e.length;for(;t+512<=i&&!this[Oe]&&!this[fi];)switch(this[H]){case"begin":case"header":this[en](e,t),t+=512;break;case"ignore":case"body":t+=this[Fs](e,t);break;case"meta":t+=this[Jr](e,t);break;default:throw new Error("invalid state: "+this[H])}t{"use strict";Object.defineProperty(pi,"__esModule",{value:!0});pi.stripTrailingSlashes=void 0;var Ca=s=>{let e=s.length-1,t=-1;for(;e>-1&&s.charAt(e)==="/";)t=e,e--;return t===-1?s:s.slice(0,t)};pi.stripTrailingSlashes=Ca});var st=d(F=>{"use strict";var Fa=F&&F.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),Ba=F&&F.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),za=F&&F.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r{let e=s.onReadEntry;s.onReadEntry=e?t=>{e(t),t.resume()}:t=>t.resume()},qa=(s,e)=>{let t=new Map(e.map(n=>[(0,xs.stripTrailingSlashes)(n),!0])),i=s.filter,r=(n,o="")=>{let a=o||(0,sn.parse)(n).root||".",h;if(n===a)h=!1;else{let l=t.get(n);l!==void 0?h=l:h=r((0,sn.dirname)(n),a)}return t.set(n,h),h};s.filter=i?(n,o)=>i(n,o)&&r((0,xs.stripTrailingSlashes)(n)):n=>r((0,xs.stripTrailingSlashes)(n))};F.filesFilter=qa;var Wa=s=>{let e=new wi.Parser(s),t=s.file,i;try{i=it.default.openSync(t,"r");let r=it.default.fstatSync(i),n=s.maxReadSize||16*1024*1024;if(r.size{let t=new wi.Parser(s),i=s.maxReadSize||16*1024*1024,r=s.file;return new Promise((o,a)=>{t.on("error",a),t.on("end",o),it.default.stat(r,(h,l)=>{if(h)a(h);else{let u=new ja.ReadStream(r,{readSize:i,size:l.size});u.on("error",a),u.pipe(t)}})})};F.list=(0,xa.makeCommand)(Wa,Ha,s=>new wi.Parser(s),s=>new wi.Parser(s),(s,e)=>{e?.length&&(0,F.filesFilter)(s,e),s.noResume||Ua(s)})});var rn=d(yi=>{"use strict";Object.defineProperty(yi,"__esModule",{value:!0});yi.modeFix=void 0;var Za=(s,e,t)=>(s&=4095,t&&(s=(s|384)&-19),e&&(s&256&&(s|=64),s&32&&(s|=8),s&4&&(s|=1)),s);yi.modeFix=Za});var Us=d(Ei=>{"use strict";Object.defineProperty(Ei,"__esModule",{value:!0});Ei.stripAbsolutePath=void 0;var Ga=require("node:path"),{isAbsolute:Ya,parse:nn}=Ga.win32,Ka=s=>{let e="",t=nn(s);for(;Ya(s)||t.root;){let i=s.charAt(0)==="/"&&s.slice(0,4)!=="//?/"?"/":t.root;s=s.slice(i.length),e+=i,t=nn(s)}return[e,s]};Ei.stripAbsolutePath=Ka});var Ws=d(rt=>{"use strict";Object.defineProperty(rt,"__esModule",{value:!0});rt.decode=rt.encode=void 0;var bi=["|","<",">","?",":"],qs=bi.map(s=>String.fromCharCode(61440+s.charCodeAt(0))),Va=new Map(bi.map((s,e)=>[s,qs[e]])),$a=new Map(qs.map((s,e)=>[s,bi[e]])),Xa=s=>bi.reduce((e,t)=>e.split(t).join(Va.get(t)),s);rt.encode=Xa;var Qa=s=>qs.reduce((e,t)=>e.split(t).join($a.get(t)),s);rt.decode=Qa});var er=d(M=>{"use strict";var Ja=M&&M.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),eh=M&&M.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),th=M&&M.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;re?(s=(0,ne.normalizeWindowsPath)(s).replace(/^\.(\/|$)/,""),(0,ih.stripTrailingSlashes)(e)+"/"+s):(0,ne.normalizeWindowsPath)(s),rh=16*1024*1024,an=Symbol("process"),hn=Symbol("file"),ln=Symbol("directory"),Zs=Symbol("symlink"),un=Symbol("hardlink"),Ot=Symbol("header"),Si=Symbol("read"),Gs=Symbol("lstat"),gi=Symbol("onlstat"),Ys=Symbol("onread"),Ks=Symbol("onreadlink"),Vs=Symbol("openfile"),$s=Symbol("onopenfile"),ve=Symbol("close"),Ri=Symbol("mode"),Xs=Symbol("awaitDrain"),Hs=Symbol("ondrain"),ae=Symbol("prefix"),Oi=class extends fn.Minipass{path;portable;myuid=process.getuid&&process.getuid()||0;myuser=process.env.USER||"";maxReadSize;linkCache;statCache;preservePaths;cwd;strict;mtime;noPax;noMtime;prefix;fd;blockLen=0;blockRemain=0;buf;pos=0;remain=0;length=0;offset=0;win32;absolute;header;type;linkpath;stat;onWriteEntry;#e=!1;constructor(e,t={}){let i=(0,pn.dealias)(t);super(),this.path=(0,ne.normalizeWindowsPath)(e),this.portable=!!i.portable,this.maxReadSize=i.maxReadSize||rh,this.linkCache=i.linkCache||new Map,this.statCache=i.statCache||new Map,this.preservePaths=!!i.preservePaths,this.cwd=(0,ne.normalizeWindowsPath)(i.cwd||process.cwd()),this.strict=!!i.strict,this.noPax=!!i.noPax,this.noMtime=!!i.noMtime,this.mtime=i.mtime,this.prefix=i.prefix?(0,ne.normalizeWindowsPath)(i.prefix):void 0,this.onWriteEntry=i.onWriteEntry,typeof i.onwarn=="function"&&this.on("warn",i.onwarn);let r=!1;if(!this.preservePaths){let[o,a]=(0,wn.stripAbsolutePath)(this.path);o&&typeof a=="string"&&(this.path=a,r=o)}this.win32=!!i.win32||process.platform==="win32",this.win32&&(this.path=sh.decode(this.path.replace(/\\/g,"/")),e=e.replace(/\\/g,"/")),this.absolute=(0,ne.normalizeWindowsPath)(i.absolute||on.default.resolve(this.cwd,e)),this.path===""&&(this.path="./"),r&&this.warn("TAR_ENTRY_INFO",`stripping ${r} from absolute path`,{entry:this,path:r+this.path});let n=this.statCache.get(this.absolute);n?this[gi](n):this[Gs]()}warn(e,t,i={}){return(0,yn.warnMethod)(this,e,t,i)}emit(e,...t){return e==="error"&&(this.#e=!0),super.emit(e,...t)}[Gs](){oe.default.lstat(this.absolute,(e,t)=>{if(e)return this.emit("error",e);this[gi](t)})}[gi](e){this.statCache.set(this.absolute,e),this.stat=e,e.isFile()||(e.size=0),this.type=nh(e),this.emit("stat",e),this[an]()}[an](){switch(this.type){case"File":return this[hn]();case"Directory":return this[ln]();case"SymbolicLink":return this[Zs]();default:return this.end()}}[Ri](e){return(0,mn.modeFix)(e,this.type==="Directory",this.portable)}[ae](e){return En(e,this.prefix)}[Ot](){if(!this.stat)throw new Error("cannot write header before stat");this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.onWriteEntry?.(this),this.header=new dn.Header({path:this[ae](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[ae](this.linkpath):this.linkpath,mode:this[Ri](this.stat.mode),uid:this.portable?void 0:this.stat.uid,gid:this.portable?void 0:this.stat.gid,size:this.stat.size,mtime:this.noMtime?void 0:this.mtime||this.stat.mtime,type:this.type==="Unsupported"?void 0:this.type,uname:this.portable?void 0:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?void 0:this.stat.atime,ctime:this.portable?void 0:this.stat.ctime}),this.header.encode()&&!this.noPax&&super.write(new _n.Pax({atime:this.portable?void 0:this.header.atime,ctime:this.portable?void 0:this.header.ctime,gid:this.portable?void 0:this.header.gid,mtime:this.noMtime?void 0:this.mtime||this.header.mtime,path:this[ae](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[ae](this.linkpath):this.linkpath,size:this.header.size,uid:this.portable?void 0:this.header.uid,uname:this.portable?void 0:this.header.uname,dev:this.portable?void 0:this.stat.dev,ino:this.portable?void 0:this.stat.ino,nlink:this.portable?void 0:this.stat.nlink}).encode());let e=this.header?.block;if(!e)throw new Error("failed to encode header");super.write(e)}[ln](){if(!this.stat)throw new Error("cannot create directory entry without stat");this.path.slice(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[Ot](),this.end()}[Zs](){oe.default.readlink(this.absolute,(e,t)=>{if(e)return this.emit("error",e);this[Ks](t)})}[Ks](e){this.linkpath=(0,ne.normalizeWindowsPath)(e),this[Ot](),this.end()}[un](e){if(!this.stat)throw new Error("cannot create link entry without stat");this.type="Link",this.linkpath=(0,ne.normalizeWindowsPath)(on.default.relative(this.cwd,e)),this.stat.size=0,this[Ot](),this.end()}[hn](){if(!this.stat)throw new Error("cannot create file entry without stat");if(this.stat.nlink>1){let e=`${this.stat.dev}:${this.stat.ino}`,t=this.linkCache.get(e);if(t?.indexOf(this.cwd)===0)return this[un](t);this.linkCache.set(e,this.absolute)}if(this[Ot](),this.stat.size===0)return this.end();this[Vs]()}[Vs](){oe.default.open(this.absolute,"r",(e,t)=>{if(e)return this.emit("error",e);this[$s](t)})}[$s](e){if(this.fd=e,this.#e)return this[ve]();if(!this.stat)throw new Error("should stat before calling onopenfile");this.blockLen=512*Math.ceil(this.stat.size/512),this.blockRemain=this.blockLen;let t=Math.min(this.blockLen,this.maxReadSize);this.buf=Buffer.allocUnsafe(t),this.offset=0,this.pos=0,this.remain=this.stat.size,this.length=this.buf.length,this[Si]()}[Si](){let{fd:e,buf:t,offset:i,length:r,pos:n}=this;if(e===void 0||t===void 0)throw new Error("cannot read file without first opening");oe.default.read(e,t,i,r,n,(o,a)=>{if(o)return this[ve](()=>this.emit("error",o));this[Ys](a)})}[ve](e=()=>{}){this.fd!==void 0&&oe.default.close(this.fd,e)}[Ys](e){if(e<=0&&this.remain>0){let r=Object.assign(new Error("encountered unexpected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[ve](()=>this.emit("error",r))}if(e>this.remain){let r=Object.assign(new Error("did not encounter expected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[ve](()=>this.emit("error",r))}if(!this.buf)throw new Error("should have created buffer prior to reading");if(e===this.remain)for(let r=e;rthis[Hs]())}[Xs](e){this.once("drain",e)}write(e,t,i){if(typeof t=="function"&&(i=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,typeof t=="string"?t:"utf8")),this.blockRemaine?this.emit("error",e):this.end());if(!this.buf)throw new Error("buffer lost somehow in ONDRAIN");this.offset>=this.length&&(this.buf=Buffer.allocUnsafe(Math.min(this.blockRemain,this.buf.length)),this.offset=0),this.length=this.buf.length-this.offset,this[Si]()}};M.WriteEntry=Oi;var Qs=class extends Oi{sync=!0;[Gs](){this[gi](oe.default.lstatSync(this.absolute))}[Zs](){this[Ks](oe.default.readlinkSync(this.absolute))}[Vs](){this[$s](oe.default.openSync(this.absolute,"r"))}[Si](){let e=!0;try{let{fd:t,buf:i,offset:r,length:n,pos:o}=this;if(t===void 0||i===void 0)throw new Error("fd and buf must be set in READ method");let a=oe.default.readSync(t,i,r,n,o);this[Ys](a),e=!1}finally{if(e)try{this[ve](()=>{})}catch{}}}[Xs](e){e()}[ve](e=()=>{}){this.fd!==void 0&&oe.default.closeSync(this.fd),e()}};M.WriteEntrySync=Qs;var Js=class extends fn.Minipass{blockLen=0;blockRemain=0;buf=0;pos=0;remain=0;length=0;preservePaths;portable;strict;noPax;noMtime;readEntry;type;prefix;path;mode;uid;gid;uname;gname;header;mtime;atime;ctime;linkpath;size;onWriteEntry;warn(e,t,i={}){return(0,yn.warnMethod)(this,e,t,i)}constructor(e,t={}){let i=(0,pn.dealias)(t);super(),this.preservePaths=!!i.preservePaths,this.portable=!!i.portable,this.strict=!!i.strict,this.noPax=!!i.noPax,this.noMtime=!!i.noMtime,this.onWriteEntry=i.onWriteEntry,this.readEntry=e;let{type:r}=e;if(r==="Unsupported")throw new Error("writing entry that should be ignored");this.type=r,this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.prefix=i.prefix,this.path=(0,ne.normalizeWindowsPath)(e.path),this.mode=e.mode!==void 0?this[Ri](e.mode):void 0,this.uid=this.portable?void 0:e.uid,this.gid=this.portable?void 0:e.gid,this.uname=this.portable?void 0:e.uname,this.gname=this.portable?void 0:e.gname,this.size=e.size,this.mtime=this.noMtime?void 0:i.mtime||e.mtime,this.atime=this.portable?void 0:e.atime,this.ctime=this.portable?void 0:e.ctime,this.linkpath=e.linkpath!==void 0?(0,ne.normalizeWindowsPath)(e.linkpath):void 0,typeof i.onwarn=="function"&&this.on("warn",i.onwarn);let n=!1;if(!this.preservePaths){let[a,h]=(0,wn.stripAbsolutePath)(this.path);a&&typeof h=="string"&&(this.path=h,n=a)}this.remain=e.size,this.blockRemain=e.startBlockSize,this.onWriteEntry?.(this),this.header=new dn.Header({path:this[ae](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[ae](this.linkpath):this.linkpath,mode:this.mode,uid:this.portable?void 0:this.uid,gid:this.portable?void 0:this.gid,size:this.size,mtime:this.noMtime?void 0:this.mtime,type:this.type,uname:this.portable?void 0:this.uname,atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime}),n&&this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute path`,{entry:this,path:n+this.path}),this.header.encode()&&!this.noPax&&super.write(new _n.Pax({atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime,gid:this.portable?void 0:this.gid,mtime:this.noMtime?void 0:this.mtime,path:this[ae](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[ae](this.linkpath):this.linkpath,size:this.size,uid:this.portable?void 0:this.uid,uname:this.portable?void 0:this.uname,dev:this.portable?void 0:this.readEntry.dev,ino:this.portable?void 0:this.readEntry.ino,nlink:this.portable?void 0:this.readEntry.nlink}).encode());let o=this.header?.block;if(!o)throw new Error("failed to encode header");super.write(o),e.pipe(this)}[ae](e){return En(e,this.prefix)}[Ri](e){return(0,mn.modeFix)(e,this.type==="Directory",this.portable)}write(e,t,i){typeof t=="function"&&(i=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,typeof t=="string"?t:"utf8"));let r=e.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=r,super.write(e,i)}end(e,t,i){return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),typeof e=="function"&&(i=e,t=void 0,e=void 0),typeof t=="function"&&(i=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,t??"utf8")),i&&this.once("finish",i),e?super.end(e,i):super.end(i),this}};M.WriteEntryTar=Js;var nh=s=>s.isFile()?"File":s.isDirectory()?"Directory":s.isSymbolicLink()?"SymbolicLink":"Unsupported"});var bn=d(ot=>{"use strict";Object.defineProperty(ot,"__esModule",{value:!0});ot.Node=ot.Yallist=void 0;var tr=class s{tail;head;length=0;static create(e=[]){return new s(e)}constructor(e=[]){for(let t of e)this.push(t)}*[Symbol.iterator](){for(let e=this.head;e;e=e.next)yield e.value}removeNode(e){if(e.list!==this)throw new Error("removing node which does not belong to this list");let t=e.next,i=e.prev;return t&&(t.prev=i),i&&(i.next=t),e===this.head&&(this.head=t),e===this.tail&&(this.tail=i),this.length--,e.next=void 0,e.prev=void 0,e.list=void 0,t}unshiftNode(e){if(e===this.head)return;e.list&&e.list.removeNode(e);let t=this.head;e.list=this,e.next=t,t&&(t.prev=e),this.head=e,this.tail||(this.tail=e),this.length++}pushNode(e){if(e===this.tail)return;e.list&&e.list.removeNode(e);let t=this.tail;e.list=this,e.prev=t,t&&(t.next=e),this.tail=e,this.head||(this.head=e),this.length++}push(...e){for(let t=0,i=e.length;t1)i=t;else if(this.head)r=this.head.next,i=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;r;n++)i=e(i,r.value,n),r=r.next;return i}reduceReverse(e,t){let i,r=this.tail;if(arguments.length>1)i=t;else if(this.tail)r=this.tail.prev,i=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(let n=this.length-1;r;n--)i=e(i,r.value,n),r=r.prev;return i}toArray(){let e=new Array(this.length);for(let t=0,i=this.head;i;t++)e[t]=i.value,i=i.next;return e}toArrayReverse(){let e=new Array(this.length);for(let t=0,i=this.tail;i;t++)e[t]=i.value,i=i.prev;return e}slice(e=0,t=this.length){t<0&&(t+=this.length),e<0&&(e+=this.length);let i=new s;if(tthis.length&&(t=this.length);let r=this.head,n=0;for(n=0;r&&nthis.length&&(t=this.length);let r=this.length,n=this.tail;for(;n&&r>t;r--)n=n.prev;for(;n&&r>e;r--,n=n.prev)i.push(n.value);return i}splice(e,t=0,...i){e>this.length&&(e=this.length-1),e<0&&(e=this.length+e);let r=this.head;for(let o=0;r&&o{"use strict";var lh=L&&L.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),uh=L&&L.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),ch=L&&L.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r1)throw new TypeError("gzip, brotli, zstd are mutually exclusive");if(e.gzip&&(typeof e.gzip!="object"&&(e.gzip={}),this.portable&&(e.gzip.portable=!0),this.zip=new ir.Gzip(e.gzip)),e.brotli&&(typeof e.brotli!="object"&&(e.brotli={}),this.zip=new ir.BrotliCompress(e.brotli)),e.zstd&&(typeof e.zstd!="object"&&(e.zstd={}),this.zip=new ir.ZstdCompress(e.zstd)),!this.zip)throw new Error("impossible");let t=this.zip;t.on("data",i=>super.write(i)),t.on("end",()=>super.end()),t.on("drain",()=>this[or]()),this.on("resume",()=>t.resume())}else this.on("drain",this[or]);this.noDirRecurse=!!e.noDirRecurse,this.follow=!!e.follow,this.noMtime=!!e.noMtime,e.mtime&&(this.mtime=e.mtime),this.filter=typeof e.filter=="function"?e.filter:()=>!0,this[X]=new dh.Yallist,this[Q]=0,this.jobs=Number(e.jobs)||4,this[Tt]=!1,this[vt]=!1}[Tn](e){return super.write(e)}add(e){return this.write(e),this}end(e,t,i){return typeof e=="function"&&(i=e,e=void 0),typeof t=="function"&&(i=t,t=void 0),e&&this.add(e),this[vt]=!0,this[xe](),i&&i(),this}write(e){if(this[vt])throw new Error("write after end");return e instanceof mh.ReadEntry?this[gn](e):this[Ti](e),this.flowing}[gn](e){let t=(0,ar.normalizeWindowsPath)(On.default.resolve(this.cwd,e.path));if(!this.filter(e.path,e))e.resume();else{let i=new Dt(e.path,t);i.entry=new hr.WriteEntryTar(e,this[nr](i)),i.entry.on("end",()=>this[rr](i)),this[Q]+=1,this[X].push(i)}this[xe]()}[Ti](e){let t=(0,ar.normalizeWindowsPath)(On.default.resolve(this.cwd,e));this[X].push(new Dt(e,t)),this[xe]()}[lr](e){e.pending=!0,this[Q]+=1;let t=this.follow?"stat":"lstat";Mi.default[t](e.absolute,(i,r)=>{e.pending=!1,this[Q]-=1,i?this.emit("error",i):this[vi](e,r)})}[vi](e,t){this.statCache.set(e.absolute,t),e.stat=t,this.filter(e.path,t)?t.isFile()&&t.nlink>1&&e===this[je]&&!this.linkCache.get(`${t.dev}:${t.ino}`)&&!this.sync&&this[sr](e):e.ignore=!0,this[xe]()}[ur](e){e.pending=!0,this[Q]+=1,Mi.default.readdir(e.absolute,(t,i)=>{if(e.pending=!1,this[Q]-=1,t)return this.emit("error",t);this[Di](e,i)})}[Di](e,t){this.readdirCache.set(e.absolute,t),e.readdir=t,this[xe]()}[xe](){if(!this[Tt]){this[Tt]=!0;for(let e=this[X].head;e&&this[Q]this.warn(t,i,r),noPax:this.noPax,cwd:this.cwd,absolute:e.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime,prefix:this.prefix,onWriteEntry:this.onWriteEntry}}[Rn](e){this[Q]+=1;try{return new this[Ni](e.path,this[nr](e)).on("end",()=>this[rr](e)).on("error",i=>this.emit("error",i))}catch(t){this.emit("error",t)}}[or](){this[je]&&this[je].entry&&this[je].entry.resume()}[Pi](e){e.piped=!0,e.readdir&&e.readdir.forEach(r=>{let n=e.path,o=n==="./"?"":n.replace(/\/*$/,"/");this[Ti](o+r)});let t=e.entry,i=this.zip;if(!t)throw new Error("cannot pipe without source");i?t.on("data",r=>{i.write(r)||t.pause()}):t.on("data",r=>{super.write(r)||t.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}warn(e,t,i={}){(0,ph.warnMethod)(this,e,t,i)}};L.Pack=Li;var cr=class extends Li{sync=!0;constructor(e){super(e),this[Ni]=hr.WriteEntrySync}pause(){}resume(){}[lr](e){let t=this.follow?"statSync":"lstatSync";this[vi](e,Mi.default[t](e.absolute))}[ur](e){this[Di](e,Mi.default.readdirSync(e.absolute))}[Pi](e){let t=e.entry,i=this.zip;if(e.readdir&&e.readdir.forEach(r=>{let n=e.path,o=n==="./"?"":n.replace(/\/*$/,"/");this[Ti](o+r)}),!t)throw new Error("Cannot pipe without source");i?t.on("data",r=>{i.write(r)}):t.on("data",r=>{super[Tn](r)})}};L.PackSync=cr});var fr=d(at=>{"use strict";var _h=at&&at.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(at,"__esModule",{value:!0});at.create=void 0;var Dn=Ke(),Pn=_h(require("node:path")),Nn=st(),wh=Ve(),Ii=Ai(),yh=(s,e)=>{let t=new Ii.PackSync(s),i=new Dn.WriteStreamSync(s.file,{mode:s.mode||438});t.pipe(i),Mn(t,e)},Eh=(s,e)=>{let t=new Ii.Pack(s),i=new Dn.WriteStream(s.file,{mode:s.mode||438});t.pipe(i);let r=new Promise((n,o)=>{i.on("error",o),i.on("close",n),t.on("error",o)});return Ln(t,e),r},Mn=(s,e)=>{e.forEach(t=>{t.charAt(0)==="@"?(0,Nn.list)({file:Pn.default.resolve(s.cwd,t.slice(1)),sync:!0,noResume:!0,onReadEntry:i=>s.add(i)}):s.add(t)}),s.end()},Ln=async(s,e)=>{for(let t=0;t{s.add(r)}}):s.add(i)}s.end()},bh=(s,e)=>{let t=new Ii.PackSync(s);return Mn(t,e),t},Sh=(s,e)=>{let t=new Ii.Pack(s);return Ln(t,e),t};at.create=(0,wh.makeCommand)(yh,Eh,bh,Sh,(s,e)=>{if(!e?.length)throw new TypeError("no paths specified to add to archive")})});var Cn=d(ht=>{"use strict";var gh=ht&&ht.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(ht,"__esModule",{value:!0});ht.getWriteFlag=void 0;var An=gh(require("fs")),Rh=process.env.__FAKE_PLATFORM__||process.platform,Oh=Rh==="win32",{O_CREAT:vh,O_TRUNC:Th,O_WRONLY:Dh}=An.default.constants,In=Number(process.env.__FAKE_FS_O_FILENAME__)||An.default.constants.UV_FS_O_FILEMAP||0,Ph=Oh&&!!In,Nh=512*1024,Mh=In|Th|vh|Dh;ht.getWriteFlag=Ph?s=>s"w"});var Bn=d(he=>{"use strict";var Fn=he&&he.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(he,"__esModule",{value:!0});he.chownrSync=he.chownr=void 0;var Fi=Fn(require("node:fs")),Pt=Fn(require("node:path")),dr=(s,e,t)=>{try{return Fi.default.lchownSync(s,e,t)}catch(i){if(i?.code!=="ENOENT")throw i}},Ci=(s,e,t,i)=>{Fi.default.lchown(s,e,t,r=>{i(r&&r?.code!=="ENOENT"?r:null)})},Lh=(s,e,t,i,r)=>{if(e.isDirectory())(0,he.chownr)(Pt.default.resolve(s,e.name),t,i,n=>{if(n)return r(n);let o=Pt.default.resolve(s,e.name);Ci(o,t,i,r)});else{let n=Pt.default.resolve(s,e.name);Ci(n,t,i,r)}},Ah=(s,e,t,i)=>{Fi.default.readdir(s,{withFileTypes:!0},(r,n)=>{if(r){if(r.code==="ENOENT")return i();if(r.code!=="ENOTDIR"&&r.code!=="ENOTSUP")return i(r)}if(r||!n.length)return Ci(s,e,t,i);let o=n.length,a=null,h=l=>{if(!a){if(l)return i(a=l);if(--o===0)return Ci(s,e,t,i)}};for(let l of n)Lh(s,l,e,t,h)})};he.chownr=Ah;var Ih=(s,e,t,i)=>{e.isDirectory()&&(0,he.chownrSync)(Pt.default.resolve(s,e.name),t,i),dr(Pt.default.resolve(s,e.name),t,i)},Ch=(s,e,t)=>{let i;try{i=Fi.default.readdirSync(s,{withFileTypes:!0})}catch(r){let n=r;if(n?.code==="ENOENT")return;if(n?.code==="ENOTDIR"||n?.code==="ENOTSUP")return dr(s,e,t);throw n}for(let r of i)Ih(s,r,e,t);return dr(s,e,t)};he.chownrSync=Ch});var zn=d(Bi=>{"use strict";Object.defineProperty(Bi,"__esModule",{value:!0});Bi.CwdError=void 0;var mr=class extends Error{path;code;syscall="chdir";constructor(e,t){super(`${t}: Cannot cd into '${e}'`),this.path=e,this.code=t}get name(){return"CwdError"}};Bi.CwdError=mr});var _r=d(zi=>{"use strict";Object.defineProperty(zi,"__esModule",{value:!0});zi.SymlinkError=void 0;var pr=class extends Error{path;symlink;syscall="symlink";code="TAR_SYMLINK_ERROR";constructor(e,t){super("TAR_SYMLINK_ERROR: Cannot extract through symbolic link"),this.symlink=e,this.path=t}get name(){return"SymlinkError"}};zi.SymlinkError=pr});var qn=d(Te=>{"use strict";var yr=Te&&Te.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(Te,"__esModule",{value:!0});Te.mkdirSync=Te.mkdir=void 0;var kn=Bn(),x=yr(require("node:fs")),Fh=yr(require("node:fs/promises")),ki=yr(require("node:path")),jn=zn(),pe=et(),xn=_r(),Bh=(s,e)=>{x.default.stat(s,(t,i)=>{(t||!i.isDirectory())&&(t=new jn.CwdError(s,t?.code||"ENOTDIR")),e(t)})},zh=(s,e,t)=>{s=(0,pe.normalizeWindowsPath)(s);let i=e.umask??18,r=e.mode|448,n=(r&i)!==0,o=e.uid,a=e.gid,h=typeof o=="number"&&typeof a=="number"&&(o!==e.processUid||a!==e.processGid),l=e.preserve,u=e.unlink,c=(0,pe.normalizeWindowsPath)(e.cwd),E=(w,P)=>{w?t(w):P&&h?(0,kn.chownr)(P,o,a,Cr=>E(Cr)):n?x.default.chmod(s,r,t):t()};if(s===c)return Bh(s,E);if(l)return Fh.default.mkdir(s,{mode:r,recursive:!0}).then(w=>E(null,w??void 0),E);let A=(0,pe.normalizeWindowsPath)(ki.default.relative(c,s)).split("/");wr(c,A,r,u,c,void 0,E)};Te.mkdir=zh;var wr=(s,e,t,i,r,n,o)=>{if(!e.length)return o(null,n);let a=e.shift(),h=(0,pe.normalizeWindowsPath)(ki.default.resolve(s+"/"+a));x.default.mkdir(h,t,Un(h,e,t,i,r,n,o))},Un=(s,e,t,i,r,n,o)=>a=>{a?x.default.lstat(s,(h,l)=>{if(h)h.path=h.path&&(0,pe.normalizeWindowsPath)(h.path),o(h);else if(l.isDirectory())wr(s,e,t,i,r,n,o);else if(i)x.default.unlink(s,u=>{if(u)return o(u);x.default.mkdir(s,t,Un(s,e,t,i,r,n,o))});else{if(l.isSymbolicLink())return o(new xn.SymlinkError(s,s+"/"+e.join("/")));o(a)}}):(n=n||s,wr(s,e,t,i,r,n,o))},kh=s=>{let e=!1,t;try{e=x.default.statSync(s).isDirectory()}catch(i){t=i?.code}finally{if(!e)throw new jn.CwdError(s,t??"ENOTDIR")}},jh=(s,e)=>{s=(0,pe.normalizeWindowsPath)(s);let t=e.umask??18,i=e.mode|448,r=(i&t)!==0,n=e.uid,o=e.gid,a=typeof n=="number"&&typeof o=="number"&&(n!==e.processUid||o!==e.processGid),h=e.preserve,l=e.unlink,u=(0,pe.normalizeWindowsPath)(e.cwd),c=w=>{w&&a&&(0,kn.chownrSync)(w,n,o),r&&x.default.chmodSync(s,i)};if(s===u)return kh(u),c();if(h)return c(x.default.mkdirSync(s,{mode:i,recursive:!0})??void 0);let D=(0,pe.normalizeWindowsPath)(ki.default.relative(u,s)).split("/"),A;for(let w=D.shift(),P=u;w&&(P+="/"+w);w=D.shift()){P=(0,pe.normalizeWindowsPath)(ki.default.resolve(P));try{x.default.mkdirSync(P,i),A=A||P}catch{let Fr=x.default.lstatSync(P);if(Fr.isDirectory())continue;if(l){x.default.unlinkSync(P),x.default.mkdirSync(P,i),A=A||P;continue}else if(Fr.isSymbolicLink())return new xn.SymlinkError(P,P+"/"+D.join("/"))}}return c(A)};Te.mkdirSync=jh});var Hn=d(ji=>{"use strict";Object.defineProperty(ji,"__esModule",{value:!0});ji.normalizeUnicode=void 0;var Er=Object.create(null),Wn=1e4,lt=new Set,xh=s=>{lt.has(s)?lt.delete(s):Er[s]=s.normalize("NFD").toLocaleLowerCase("en").toLocaleUpperCase("en"),lt.add(s);let e=Er[s],t=lt.size-Wn;if(t>Wn/10){for(let i of lt)if(lt.delete(i),delete Er[i],--t<=0)break}return e};ji.normalizeUnicode=xh});var Gn=d(xi=>{"use strict";Object.defineProperty(xi,"__esModule",{value:!0});xi.PathReservations=void 0;var Zn=require("node:path"),Uh=Hn(),qh=_i(),Wh=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,Hh=Wh==="win32",Zh=s=>s.split("/").slice(0,-1).reduce((t,i)=>{let r=t[t.length-1];return r!==void 0&&(i=(0,Zn.join)(r,i)),t.push(i||"/"),t},[]),br=class{#e=new Map;#i=new Map;#s=new Set;reserve(e,t){e=Hh?["win32 parallelization disabled"]:e.map(r=>(0,qh.stripTrailingSlashes)((0,Zn.join)((0,Uh.normalizeUnicode)(r))));let i=new Set(e.map(r=>Zh(r)).reduce((r,n)=>r.concat(n)));this.#i.set(t,{dirs:i,paths:e});for(let r of e){let n=this.#e.get(r);n?n.push(t):this.#e.set(r,[t])}for(let r of i){let n=this.#e.get(r);if(!n)this.#e.set(r,[new Set([t])]);else{let o=n[n.length-1];o instanceof Set?o.add(t):n.push(new Set([t]))}}return this.#r(t)}#n(e){let t=this.#i.get(e);if(!t)throw new Error("function does not have any path reservations");return{paths:t.paths.map(i=>this.#e.get(i)),dirs:[...t.dirs].map(i=>this.#e.get(i))}}check(e){let{paths:t,dirs:i}=this.#n(e);return t.every(r=>r&&r[0]===e)&&i.every(r=>r&&r[0]instanceof Set&&r[0].has(e))}#r(e){return this.#s.has(e)||!this.check(e)?!1:(this.#s.add(e),e(()=>this.#t(e)),!0)}#t(e){if(!this.#s.has(e))return!1;let t=this.#i.get(e);if(!t)throw new Error("invalid reservation");let{paths:i,dirs:r}=t,n=new Set;for(let o of i){let a=this.#e.get(o);if(!a||a?.[0]!==e)continue;let h=a[1];if(!h){this.#e.delete(o);continue}if(a.shift(),typeof h=="function")n.add(h);else for(let l of h)n.add(l)}for(let o of r){let a=this.#e.get(o),h=a?.[0];if(!(!a||!(h instanceof Set)))if(h.size===1&&a.length===1){this.#e.delete(o);continue}else if(h.size===1){a.shift();let l=a[0];typeof l=="function"&&n.add(l)}else h.delete(e)}return this.#s.delete(e),n.forEach(o=>this.#r(o)),!0}};xi.PathReservations=br});var Yn=d(Ui=>{"use strict";Object.defineProperty(Ui,"__esModule",{value:!0});Ui.umask=void 0;var Gh=()=>process.umask();Ui.umask=Gh});var Lr=d(z=>{"use strict";var Yh=z&&z.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),Kh=z&&z.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),so=z&&z.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r{if(!Ft)return m.default.unlink(s,e);let t=s+".DELETE."+(0,ro.randomBytes)(16).toString("hex");m.default.rename(s,t,i=>{if(i)return e(i);m.default.unlink(t,e)})},rl=s=>{if(!Ft)return m.default.unlinkSync(s);let e=s+".DELETE."+(0,ro.randomBytes)(16).toString("hex");m.default.renameSync(s,e),m.default.unlinkSync(e)},io=(s,e,t)=>s!==void 0&&s===s>>>0?s:e!==void 0&&e===e>>>0?e:t,Hi=class extends Xh.Parser{[gr]=!1;[Ct]=!1;[qi]=0;reservations=new Jh.PathReservations;transform;writable=!0;readable=!1;uid;gid;setOwner;preserveOwner;processGid;processUid;maxDepth;forceChown;win32;newer;keep;noMtime;preservePaths;unlink;cwd;strip;processUmask;umask;dmode;fmode;chmod;constructor(e={}){if(e.ondone=()=>{this[gr]=!0,this[Rr]()},super(e),this.transform=e.transform,this.chmod=!!e.chmod,typeof e.uid=="number"||typeof e.gid=="number"){if(typeof e.uid!="number"||typeof e.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(e.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=e.uid,this.gid=e.gid,this.setOwner=!0}else this.uid=void 0,this.gid=void 0,this.setOwner=!1;e.preserveOwner===void 0&&typeof e.uid!="number"?this.preserveOwner=!!(process.getuid&&process.getuid()===0):this.preserveOwner=!!e.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():void 0,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():void 0,this.maxDepth=typeof e.maxDepth=="number"?e.maxDepth:il,this.forceChown=e.forceChown===!0,this.win32=!!e.win32||Ft,this.newer=!!e.newer,this.keep=!!e.keep,this.noMtime=!!e.noMtime,this.preservePaths=!!e.preservePaths,this.unlink=!!e.unlink,this.cwd=(0,U.normalizeWindowsPath)(g.default.resolve(e.cwd||process.cwd())),this.strip=Number(e.strip)||0,this.processUmask=this.chmod?typeof e.processUmask=="number"?e.processUmask:(0,el.umask)():0,this.umask=typeof e.umask=="number"?e.umask:this.processUmask,this.dmode=e.dmode||511&~this.umask,this.fmode=e.fmode||438&~this.umask,this.on("entry",t=>this[Vn](t))}warn(e,t,i={}){return(e==="TAR_BAD_ARCHIVE"||e==="TAR_ABORT")&&(i.recoverable=!1),super.warn(e,t,i)}[Rr](){this[gr]&&this[qi]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"))}[Sr](e,t){let i=e[t],{type:r}=e;if(!i||this.preservePaths)return!0;let[n,o]=(0,Qh.stripAbsolutePath)(i),a=o.replace(/\\/g,"/").split("/");if(a.includes("..")||Ft&&/^[a-z]:\.\.$/i.test(a[0]??"")){if(t==="path"||r==="Link")return this.warn("TAR_ENTRY_ERROR",`${t} contains '..'`,{entry:e,[t]:i}),!1;{let h=g.default.posix.dirname(e.path),l=g.default.posix.normalize(g.default.posix.join(h,a.join("/")));if(l.startsWith("../")||l==="..")return this.warn("TAR_ENTRY_ERROR",`${t} escapes extraction directory`,{entry:e,[t]:i}),!1}}return n&&(e[t]=String(o),this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute ${t}`,{entry:e,[t]:i})),!0}[eo](e){let t=(0,U.normalizeWindowsPath)(e.path),i=t.split("/");if(this.strip){if(i.length=this.strip)e.linkpath=r.slice(this.strip).join("/");else return!1}i.splice(0,this.strip),e.path=i.join("/")}if(isFinite(this.maxDepth)&&i.length>this.maxDepth)return this.warn("TAR_ENTRY_ERROR","path excessively deep",{entry:e,path:t,depth:i.length,maxDepth:this.maxDepth}),!1;if(!this[Sr](e,"path")||!this[Sr](e,"linkpath"))return!1;if(g.default.isAbsolute(e.path)?e.absolute=(0,U.normalizeWindowsPath)(g.default.resolve(e.path)):e.absolute=(0,U.normalizeWindowsPath)(g.default.resolve(this.cwd,e.path)),!this.preservePaths&&typeof e.absolute=="string"&&e.absolute.indexOf(this.cwd+"/")!==0&&e.absolute!==this.cwd)return this.warn("TAR_ENTRY_ERROR","path escaped extraction target",{entry:e,path:(0,U.normalizeWindowsPath)(e.path),resolvedPath:e.absolute,cwd:this.cwd}),!1;if(e.absolute===this.cwd&&e.type!=="Directory"&&e.type!=="GNUDumpDir")return!1;if(this.win32){let{root:r}=g.default.win32.parse(String(e.absolute));e.absolute=r+Kn.encode(String(e.absolute).slice(r.length));let{root:n}=g.default.win32.parse(e.path);e.path=n+Kn.encode(e.path.slice(n.length))}return!0}[Vn](e){if(!this[eo](e))return e.resume();switch($h.default.equal(typeof e.absolute,"string"),e.type){case"Directory":case"GNUDumpDir":e.mode&&(e.mode=e.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[Or](e);default:return this[Jn](e)}}[T](e,t){e.name==="CwdError"?this.emit("error",e):(this.warn("TAR_ENTRY_ERROR",e,{entry:t}),this[ut](),t.resume())}[De](e,t,i){(0,oo.mkdir)((0,U.normalizeWindowsPath)(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:t},i)}[Lt](e){return this.forceChown||this.preserveOwner&&(typeof e.uid=="number"&&e.uid!==this.processUid||typeof e.gid=="number"&&e.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[At](e){return io(this.uid,e.uid,this.processUid)}[It](e){return io(this.gid,e.gid,this.processGid)}[Tr](e,t){let i=typeof e.mode=="number"?e.mode&4095:this.fmode,r=new Vh.WriteStream(String(e.absolute),{flags:(0,no.getWriteFlag)(e.size),mode:i,autoClose:!1});r.on("error",h=>{r.fd&&m.default.close(r.fd,()=>{}),r.write=()=>!0,this[T](h,e),t()});let n=1,o=h=>{if(h){r.fd&&m.default.close(r.fd,()=>{}),this[T](h,e),t();return}--n===0&&r.fd!==void 0&&m.default.close(r.fd,l=>{l?this[T](l,e):this[ut](),t()})};r.on("finish",()=>{let h=String(e.absolute),l=r.fd;if(typeof l=="number"&&e.mtime&&!this.noMtime){n++;let u=e.atime||new Date,c=e.mtime;m.default.futimes(l,u,c,E=>E?m.default.utimes(h,u,c,D=>o(D&&E)):o())}if(typeof l=="number"&&this[Lt](e)){n++;let u=this[At](e),c=this[It](e);typeof u=="number"&&typeof c=="number"&&m.default.fchown(l,u,c,E=>E?m.default.chown(h,u,c,D=>o(D&&E)):o())}o()});let a=this.transform&&this.transform(e)||e;a!==e&&(a.on("error",h=>{this[T](h,e),t()}),e.pipe(a)),a.pipe(r)}[Dr](e,t){let i=typeof e.mode=="number"?e.mode&4095:this.dmode;this[De](String(e.absolute),i,r=>{if(r){this[T](r,e),t();return}let n=1,o=()=>{--n===0&&(t(),this[ut](),e.resume())};e.mtime&&!this.noMtime&&(n++,m.default.utimes(String(e.absolute),e.atime||new Date,e.mtime,o)),this[Lt](e)&&(n++,m.default.chown(String(e.absolute),Number(this[At](e)),Number(this[It](e)),o)),o()})}[Jn](e){e.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${e.type}`,{entry:e}),e.resume()}[Xn](e,t){let i=(0,U.normalizeWindowsPath)(g.default.relative(this.cwd,g.default.resolve(g.default.dirname(String(e.absolute)),String(e.linkpath)))).split("/");this[Mt](e,this.cwd,i,()=>this[Wi](e,String(e.linkpath),"symlink",t),r=>{this[T](r,e),t()})}[Qn](e,t){let i=(0,U.normalizeWindowsPath)(g.default.resolve(this.cwd,String(e.linkpath))),r=(0,U.normalizeWindowsPath)(String(e.linkpath)).split("/");this[Mt](e,this.cwd,r,()=>this[Wi](e,i,"link",t),n=>{this[T](n,e),t()})}[Mt](e,t,i,r,n){let o=i.shift();if(this.preservePaths||o===void 0)return r();let a=g.default.resolve(t,o);m.default.lstat(a,(h,l)=>{if(h)return r();if(l?.isSymbolicLink())return n(new ao.SymlinkError(a,g.default.resolve(a,i.join("/"))));this[Mt](e,a,i,r,n)})}[to](){this[qi]++}[ut](){this[qi]--,this[Rr]()}[Pr](e){this[ut](),e.resume()}[vr](e,t){return e.type==="File"&&!this.unlink&&t.isFile()&&t.nlink<=1&&!Ft}[Or](e){this[to]();let t=[e.path];e.linkpath&&t.push(e.linkpath),this.reservations.reserve(t,i=>this[$n](e,i))}[$n](e,t){let i=a=>{t(a)},r=()=>{this[De](this.cwd,this.dmode,a=>{if(a){this[T](a,e),i();return}this[Ct]=!0,n()})},n=()=>{if(e.absolute!==this.cwd){let a=(0,U.normalizeWindowsPath)(g.default.dirname(String(e.absolute)));if(a!==this.cwd)return this[De](a,this.dmode,h=>{if(h){this[T](h,e),i();return}o()})}o()},o=()=>{m.default.lstat(String(e.absolute),(a,h)=>{if(h&&(this.keep||this.newer&&h.mtime>(e.mtime??h.mtime))){this[Pr](e),i();return}if(a||this[vr](e,h))return this[Z](null,e,i);if(h.isDirectory()){if(e.type==="Directory"){let l=this.chmod&&e.mode&&(h.mode&4095)!==e.mode,u=c=>this[Z](c??null,e,i);return l?m.default.chmod(String(e.absolute),Number(e.mode),u):u()}if(e.absolute!==this.cwd)return m.default.rmdir(String(e.absolute),l=>this[Z](l??null,e,i))}if(e.absolute===this.cwd)return this[Z](null,e,i);sl(String(e.absolute),l=>this[Z](l??null,e,i))})};this[Ct]?n():r()}[Z](e,t,i){if(e){this[T](e,t),i();return}switch(t.type){case"File":case"OldFile":case"ContiguousFile":return this[Tr](t,i);case"Link":return this[Qn](t,i);case"SymbolicLink":return this[Xn](t,i);case"Directory":case"GNUDumpDir":return this[Dr](t,i)}}[Wi](e,t,i,r){m.default[i](t,String(e.absolute),n=>{n?this[T](n,e):(this[ut](),e.resume()),r()})}};z.Unpack=Hi;var Nt=s=>{try{return[null,s()]}catch(e){return[e,null]}},Nr=class extends Hi{sync=!0;[Z](e,t){return super[Z](e,t,()=>{})}[Or](e){if(!this[Ct]){let n=this[De](this.cwd,this.dmode);if(n)return this[T](n,e);this[Ct]=!0}if(e.absolute!==this.cwd){let n=(0,U.normalizeWindowsPath)(g.default.dirname(String(e.absolute)));if(n!==this.cwd){let o=this[De](n,this.dmode);if(o)return this[T](o,e)}}let[t,i]=Nt(()=>m.default.lstatSync(String(e.absolute)));if(i&&(this.keep||this.newer&&i.mtime>(e.mtime??i.mtime)))return this[Pr](e);if(t||this[vr](e,i))return this[Z](null,e);if(i.isDirectory()){if(e.type==="Directory"){let o=this.chmod&&e.mode&&(i.mode&4095)!==e.mode,[a]=o?Nt(()=>{m.default.chmodSync(String(e.absolute),Number(e.mode))}):[];return this[Z](a,e)}let[n]=Nt(()=>m.default.rmdirSync(String(e.absolute)));this[Z](n,e)}let[r]=e.absolute===this.cwd?[]:Nt(()=>rl(String(e.absolute)));this[Z](r,e)}[Tr](e,t){let i=typeof e.mode=="number"?e.mode&4095:this.fmode,r=a=>{let h;try{m.default.closeSync(n)}catch(l){h=l}(a||h)&&this[T](a||h,e),t()},n;try{n=m.default.openSync(String(e.absolute),(0,no.getWriteFlag)(e.size),i)}catch(a){return r(a)}let o=this.transform&&this.transform(e)||e;o!==e&&(o.on("error",a=>this[T](a,e)),e.pipe(o)),o.on("data",a=>{try{m.default.writeSync(n,a,0,a.length)}catch(h){r(h)}}),o.on("end",()=>{let a=null;if(e.mtime&&!this.noMtime){let h=e.atime||new Date,l=e.mtime;try{m.default.futimesSync(n,h,l)}catch(u){try{m.default.utimesSync(String(e.absolute),h,l)}catch{a=u}}}if(this[Lt](e)){let h=this[At](e),l=this[It](e);try{m.default.fchownSync(n,Number(h),Number(l))}catch(u){try{m.default.chownSync(String(e.absolute),Number(h),Number(l))}catch{a=a||u}}}r(a)})}[Dr](e,t){let i=typeof e.mode=="number"?e.mode&4095:this.dmode,r=this[De](String(e.absolute),i);if(r){this[T](r,e),t();return}if(e.mtime&&!this.noMtime)try{m.default.utimesSync(String(e.absolute),e.atime||new Date,e.mtime)}catch{}if(this[Lt](e))try{m.default.chownSync(String(e.absolute),Number(this[At](e)),Number(this[It](e)))}catch{}t(),e.resume()}[De](e,t){try{return(0,oo.mkdirSync)((0,U.normalizeWindowsPath)(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:t})}catch(i){return i}}[Mt](e,t,i,r,n){if(this.preservePaths||!i.length)return r();let o=t;for(let a of i){o=g.default.resolve(o,a);let[h,l]=Nt(()=>m.default.lstatSync(o));if(h)return r();if(l.isSymbolicLink())return n(new ao.SymlinkError(o,g.default.resolve(t,i.join("/"))))}r()}[Wi](e,t,i,r){let n=`${i}Sync`;try{m.default[n](t,String(e.absolute)),r(),e.resume()}catch(o){return this[T](o,e)}}};z.UnpackSync=Nr});var Ar=d(G=>{"use strict";var nl=G&&G.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),ol=G&&G.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),al=G&&G.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r{let e=new Zi.UnpackSync(s),t=s.file,i=lo.default.statSync(t),r=s.maxReadSize||16*1024*1024;new ho.ReadStreamSync(t,{readSize:r,size:i.size}).pipe(e)},fl=(s,e)=>{let t=new Zi.Unpack(s),i=s.maxReadSize||16*1024*1024,r=s.file;return new Promise((o,a)=>{t.on("error",a),t.on("close",o),lo.default.stat(r,(h,l)=>{if(h)a(h);else{let u=new ho.ReadStream(r,{readSize:i,size:l.size});u.on("error",a),u.pipe(t)}})})};G.extract=(0,ul.makeCommand)(cl,fl,s=>new Zi.UnpackSync(s),s=>new Zi.Unpack(s),(s,e)=>{e?.length&&(0,ll.filesFilter)(s,e)})});var Gi=d(ct=>{"use strict";var uo=ct&&ct.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(ct,"__esModule",{value:!0});ct.replace=void 0;var co=Ke(),q=uo(require("node:fs")),fo=uo(require("node:path")),mo=Je(),po=st(),dl=Ve(),ml=Vt(),_o=Ai(),pl=(s,e)=>{let t=new _o.PackSync(s),i=!0,r,n;try{try{r=q.default.openSync(s.file,"r+")}catch(h){if(h?.code==="ENOENT")r=q.default.openSync(s.file,"w+");else throw h}let o=q.default.fstatSync(r),a=Buffer.alloc(512);e:for(n=0;no.size)break;n+=l,s.mtimeCache&&h.mtime&&s.mtimeCache.set(String(h.path),h.mtime)}i=!1,_l(s,t,n,r,e)}finally{if(i)try{q.default.closeSync(r)}catch{}}},_l=(s,e,t,i,r)=>{let n=new co.WriteStreamSync(s.file,{fd:i,start:t});e.pipe(n),yl(e,r)},wl=(s,e)=>{e=Array.from(e);let t=new _o.Pack(s),i=(n,o,a)=>{let h=(D,A)=>{D?q.default.close(n,w=>a(D)):a(null,A)},l=0;if(o===0)return h(null,0);let u=0,c=Buffer.alloc(512),E=(D,A)=>{if(D||typeof A>"u")return h(D);if(u+=A,u<512&&A)return q.default.read(n,c,u,c.length-u,l+u,E);if(l===0&&c[0]===31&&c[1]===139)return h(new Error("cannot append to compressed archives"));if(u<512)return h(null,l);let w=new mo.Header(c);if(!w.cksumValid)return h(null,l);let P=512*Math.ceil((w.size??0)/512);if(l+P+512>o||(l+=P+512,l>=o))return h(null,l);s.mtimeCache&&w.mtime&&s.mtimeCache.set(String(w.path),w.mtime),u=0,q.default.read(n,c,0,512,l,E)};q.default.read(n,c,0,512,l,E)};return new Promise((n,o)=>{t.on("error",o);let a="r+",h=(l,u)=>{if(l&&l.code==="ENOENT"&&a==="r+")return a="w+",q.default.open(s.file,a,h);if(l||!u)return o(l);q.default.fstat(u,(c,E)=>{if(c)return q.default.close(u,()=>o(c));i(u,E.size,(D,A)=>{if(D)return o(D);let w=new co.WriteStream(s.file,{fd:u,start:A});t.pipe(w),w.on("error",o),w.on("close",n),El(t,e)})})};q.default.open(s.file,a,h)})},yl=(s,e)=>{e.forEach(t=>{t.charAt(0)==="@"?(0,po.list)({file:fo.default.resolve(s.cwd,t.slice(1)),sync:!0,noResume:!0,onReadEntry:i=>s.add(i)}):s.add(t)}),s.end()},El=async(s,e)=>{for(let t=0;ts.add(r)}):s.add(i)}s.end()};ct.replace=(0,dl.makeCommand)(pl,wl,()=>{throw new TypeError("file is required")},()=>{throw new TypeError("file is required")},(s,e)=>{if(!(0,ml.isFile)(s))throw new TypeError("file is required");if(s.gzip||s.brotli||s.zstd||s.file.endsWith(".br")||s.file.endsWith(".tbr"))throw new TypeError("cannot append to compressed archives");if(!e?.length)throw new TypeError("no paths specified to add/replace")})});var Ir=d(Yi=>{"use strict";Object.defineProperty(Yi,"__esModule",{value:!0});Yi.update=void 0;var bl=Ve(),Bt=Gi();Yi.update=(0,bl.makeCommand)(Bt.replace.syncFile,Bt.replace.asyncFile,Bt.replace.syncNoFile,Bt.replace.asyncNoFile,(s,e=[])=>{Bt.replace.validate?.(s,e),Sl(s)});var Sl=s=>{let e=s.filter;s.mtimeCache||(s.mtimeCache=new Map),s.filter=e?(t,i)=>e(t,i)&&!((s.mtimeCache?.get(t)??i.mtime??0)>(i.mtime??0)):(t,i)=>!((s.mtimeCache?.get(t)??i.mtime??0)>(i.mtime??0))}});var wo=exports&&exports.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),gl=exports&&exports.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),Y=exports&&exports.__exportStar||function(s,e){for(var t in s)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&wo(e,s,t)},Rl=exports&&exports.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r()=>(e||s((e={exports:{}}).exports,e),e.exports);var We=d(F=>{"use strict";var Do=F&&F.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(F,"__esModule",{value:!0});F.Minipass=F.isWritable=F.isReadable=F.isStream=void 0;var kr=typeof process=="object"&&process?process:{stdout:null,stderr:null},ss=require("node:events"),qr=Do(require("node:stream")),Po=require("node:string_decoder"),No=s=>!!s&&typeof s=="object"&&(s instanceof Zt||s instanceof qr.default||(0,F.isReadable)(s)||(0,F.isWritable)(s));F.isStream=No;var Mo=s=>!!s&&typeof s=="object"&&s instanceof ss.EventEmitter&&typeof s.pipe=="function"&&s.pipe!==qr.default.Writable.prototype.pipe;F.isReadable=Mo;var Lo=s=>!!s&&typeof s=="object"&&s instanceof ss.EventEmitter&&typeof s.write=="function"&&typeof s.end=="function";F.isWritable=Lo;var ce=Symbol("EOF"),ue=Symbol("maybeEmitEnd"),we=Symbol("emittedEnd"),jt=Symbol("emittingEnd"),dt=Symbol("emittedError"),Ut=Symbol("closed"),xr=Symbol("read"),qt=Symbol("flush"),jr=Symbol("flushChunk"),K=Symbol("encoding"),Ue=Symbol("decoder"),R=Symbol("flowing"),mt=Symbol("paused"),qe=Symbol("resume"),O=Symbol("buffer"),I=Symbol("pipes"),v=Symbol("bufferLength"),Xi=Symbol("bufferPush"),Wt=Symbol("bufferShift"),N=Symbol("objectMode"),E=Symbol("destroyed"),Qi=Symbol("error"),Ji=Symbol("emitData"),Ur=Symbol("emitEnd"),es=Symbol("emitEnd2"),J=Symbol("async"),ts=Symbol("abort"),Ht=Symbol("aborted"),pt=Symbol("signal"),Ne=Symbol("dataListeners"),x=Symbol("discarded"),_t=s=>Promise.resolve().then(s),Ao=s=>s(),Io=s=>s==="end"||s==="finish"||s==="prefinish",Fo=s=>s instanceof ArrayBuffer||!!s&&typeof s=="object"&&s.constructor&&s.constructor.name==="ArrayBuffer"&&s.byteLength>=0,Co=s=>!Buffer.isBuffer(s)&&ArrayBuffer.isView(s),Gt=class{src;dest;opts;ondrain;constructor(e,t,i){this.src=e,this.dest=t,this.opts=i,this.ondrain=()=>e[qe](),this.dest.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(e){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},is=class extends Gt{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(e,t,i){super(e,t,i),this.proxyErrors=r=>this.dest.emit("error",r),e.on("error",this.proxyErrors)}},Bo=s=>!!s.objectMode,zo=s=>!s.objectMode&&!!s.encoding&&s.encoding!=="buffer",Zt=class extends ss.EventEmitter{[R]=!1;[mt]=!1;[I]=[];[O]=[];[N];[K];[J];[Ue];[ce]=!1;[we]=!1;[jt]=!1;[Ut]=!1;[dt]=null;[v]=0;[E]=!1;[pt];[Ht]=!1;[Ne]=0;[x]=!1;writable=!0;readable=!0;constructor(...e){let t=e[0]||{};if(super(),t.objectMode&&typeof t.encoding=="string")throw new TypeError("Encoding and objectMode may not be used together");Bo(t)?(this[N]=!0,this[K]=null):zo(t)?(this[K]=t.encoding,this[N]=!1):(this[N]=!1,this[K]=null),this[J]=!!t.async,this[Ue]=this[K]?new Po.StringDecoder(this[K]):null,t&&t.debugExposeBuffer===!0&&Object.defineProperty(this,"buffer",{get:()=>this[O]}),t&&t.debugExposePipes===!0&&Object.defineProperty(this,"pipes",{get:()=>this[I]});let{signal:i}=t;i&&(this[pt]=i,i.aborted?this[ts]():i.addEventListener("abort",()=>this[ts]()))}get bufferLength(){return this[v]}get encoding(){return this[K]}set encoding(e){throw new Error("Encoding must be set at instantiation time")}setEncoding(e){throw new Error("Encoding must be set at instantiation time")}get objectMode(){return this[N]}set objectMode(e){throw new Error("objectMode must be set at instantiation time")}get async(){return this[J]}set async(e){this[J]=this[J]||!!e}[ts](){this[Ht]=!0,this.emit("abort",this[pt]?.reason),this.destroy(this[pt]?.reason)}get aborted(){return this[Ht]}set aborted(e){}write(e,t,i){if(this[Ht])return!1;if(this[ce])throw new Error("write after end");if(this[E])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;typeof t=="function"&&(i=t,t="utf8"),t||(t="utf8");let r=this[J]?_t:Ao;if(!this[N]&&!Buffer.isBuffer(e)){if(Co(e))e=Buffer.from(e.buffer,e.byteOffset,e.byteLength);else if(Fo(e))e=Buffer.from(e);else if(typeof e!="string")throw new Error("Non-contiguous data written to non-objectMode stream")}return this[N]?(this[R]&&this[v]!==0&&this[qt](!0),this[R]?this.emit("data",e):this[Xi](e),this[v]!==0&&this.emit("readable"),i&&r(i),this[R]):e.length?(typeof e=="string"&&!(t===this[K]&&!this[Ue]?.lastNeed)&&(e=Buffer.from(e,t)),Buffer.isBuffer(e)&&this[K]&&(e=this[Ue].write(e)),this[R]&&this[v]!==0&&this[qt](!0),this[R]?this.emit("data",e):this[Xi](e),this[v]!==0&&this.emit("readable"),i&&r(i),this[R]):(this[v]!==0&&this.emit("readable"),i&&r(i),this[R])}read(e){if(this[E])return null;if(this[x]=!1,this[v]===0||e===0||e&&e>this[v])return this[ue](),null;this[N]&&(e=null),this[O].length>1&&!this[N]&&(this[O]=[this[K]?this[O].join(""):Buffer.concat(this[O],this[v])]);let t=this[xr](e||null,this[O][0]);return this[ue](),t}[xr](e,t){if(this[N])this[Wt]();else{let i=t;e===i.length||e===null?this[Wt]():typeof i=="string"?(this[O][0]=i.slice(e),t=i.slice(0,e),this[v]-=e):(this[O][0]=i.subarray(e),t=i.subarray(0,e),this[v]-=e)}return this.emit("data",t),!this[O].length&&!this[ce]&&this.emit("drain"),t}end(e,t,i){return typeof e=="function"&&(i=e,e=void 0),typeof t=="function"&&(i=t,t="utf8"),e!==void 0&&this.write(e,t),i&&this.once("end",i),this[ce]=!0,this.writable=!1,(this[R]||!this[mt])&&this[ue](),this}[qe](){this[E]||(!this[Ne]&&!this[I].length&&(this[x]=!0),this[mt]=!1,this[R]=!0,this.emit("resume"),this[O].length?this[qt]():this[ce]?this[ue]():this.emit("drain"))}resume(){return this[qe]()}pause(){this[R]=!1,this[mt]=!0,this[x]=!1}get destroyed(){return this[E]}get flowing(){return this[R]}get paused(){return this[mt]}[Xi](e){this[N]?this[v]+=1:this[v]+=e.length,this[O].push(e)}[Wt](){return this[N]?this[v]-=1:this[v]-=this[O][0].length,this[O].shift()}[qt](e=!1){do;while(this[jr](this[Wt]())&&this[O].length);!e&&!this[O].length&&!this[ce]&&this.emit("drain")}[jr](e){return this.emit("data",e),this[R]}pipe(e,t){if(this[E])return e;this[x]=!1;let i=this[we];return t=t||{},e===kr.stdout||e===kr.stderr?t.end=!1:t.end=t.end!==!1,t.proxyErrors=!!t.proxyErrors,i?t.end&&e.end():(this[I].push(t.proxyErrors?new is(this,e,t):new Gt(this,e,t)),this[J]?_t(()=>this[qe]()):this[qe]()),e}unpipe(e){let t=this[I].find(i=>i.dest===e);t&&(this[I].length===1?(this[R]&&this[Ne]===0&&(this[R]=!1),this[I]=[]):this[I].splice(this[I].indexOf(t),1),t.unpipe())}addListener(e,t){return this.on(e,t)}on(e,t){let i=super.on(e,t);if(e==="data")this[x]=!1,this[Ne]++,!this[I].length&&!this[R]&&this[qe]();else if(e==="readable"&&this[v]!==0)super.emit("readable");else if(Io(e)&&this[we])super.emit(e),this.removeAllListeners(e);else if(e==="error"&&this[dt]){let r=t;this[J]?_t(()=>r.call(this,this[dt])):r.call(this,this[dt])}return i}removeListener(e,t){return this.off(e,t)}off(e,t){let i=super.off(e,t);return e==="data"&&(this[Ne]=this.listeners("data").length,this[Ne]===0&&!this[x]&&!this[I].length&&(this[R]=!1)),i}removeAllListeners(e){let t=super.removeAllListeners(e);return(e==="data"||e===void 0)&&(this[Ne]=0,!this[x]&&!this[I].length&&(this[R]=!1)),t}get emittedEnd(){return this[we]}[ue](){!this[jt]&&!this[we]&&!this[E]&&this[O].length===0&&this[ce]&&(this[jt]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[Ut]&&this.emit("close"),this[jt]=!1)}emit(e,...t){let i=t[0];if(e!=="error"&&e!=="close"&&e!==E&&this[E])return!1;if(e==="data")return!this[N]&&!i?!1:this[J]?(_t(()=>this[Ji](i)),!0):this[Ji](i);if(e==="end")return this[Ur]();if(e==="close"){if(this[Ut]=!0,!this[we]&&!this[E])return!1;let n=super.emit("close");return this.removeAllListeners("close"),n}else if(e==="error"){this[dt]=i,super.emit(Qi,i);let n=!this[pt]||this.listeners("error").length?super.emit("error",i):!1;return this[ue](),n}else if(e==="resume"){let n=super.emit("resume");return this[ue](),n}else if(e==="finish"||e==="prefinish"){let n=super.emit(e);return this.removeAllListeners(e),n}let r=super.emit(e,...t);return this[ue](),r}[Ji](e){for(let i of this[I])i.dest.write(e)===!1&&this.pause();let t=this[x]?!1:super.emit("data",e);return this[ue](),t}[Ur](){return this[we]?!1:(this[we]=!0,this.readable=!1,this[J]?(_t(()=>this[es]()),!0):this[es]())}[es](){if(this[Ue]){let t=this[Ue].end();if(t){for(let i of this[I])i.dest.write(t);this[x]||super.emit("data",t)}}for(let t of this[I])t.end();let e=super.emit("end");return this.removeAllListeners("end"),e}async collect(){let e=Object.assign([],{dataLength:0});this[N]||(e.dataLength=0);let t=this.promise();return this.on("data",i=>{e.push(i),this[N]||(e.dataLength+=i.length)}),await t,e}async concat(){if(this[N])throw new Error("cannot concat in objectMode");let e=await this.collect();return this[K]?e.join(""):Buffer.concat(e,e.dataLength)}async promise(){return new Promise((e,t)=>{this.on(E,()=>t(new Error("stream destroyed"))),this.on("error",i=>t(i)),this.on("end",()=>e())})}[Symbol.asyncIterator](){this[x]=!1;let e=!1,t=async()=>(this.pause(),e=!0,{value:void 0,done:!0});return{next:()=>{if(e)return t();let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[ce])return t();let n,o,a=u=>{this.off("data",h),this.off("end",l),this.off(E,c),t(),o(u)},h=u=>{this.off("error",a),this.off("end",l),this.off(E,c),this.pause(),n({value:u,done:!!this[ce]})},l=()=>{this.off("error",a),this.off("data",h),this.off(E,c),t(),n({done:!0,value:void 0})},c=()=>a(new Error("stream destroyed"));return new Promise((u,b)=>{o=b,n=u,this.once(E,c),this.once("error",a),this.once("end",l),this.once("data",h)})},throw:t,return:t,[Symbol.asyncIterator](){return this},[Symbol.asyncDispose]:async()=>{}}}[Symbol.iterator](){this[x]=!1;let e=!1,t=()=>(this.pause(),this.off(Qi,t),this.off(E,t),this.off("end",t),e=!0,{done:!0,value:void 0}),i=()=>{if(e)return t();let r=this.read();return r===null?t():{done:!1,value:r}};return this.once("end",t),this.once(Qi,t),this.once(E,t),{next:i,throw:t,return:t,[Symbol.iterator](){return this},[Symbol.dispose]:()=>{}}}destroy(e){if(this[E])return e?this.emit("error",e):this.emit(E),this;this[E]=!0,this[x]=!0,this[O].length=0,this[v]=0;let t=this;return typeof t.close=="function"&&!this[Ut]&&t.close(),e?this.emit("error",e):this.emit(E),this}static get isStream(){return F.isStream}};F.Minipass=Zt});var Ke=d(W=>{"use strict";var Wr=W&&W.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(W,"__esModule",{value:!0});W.WriteStreamSync=W.WriteStream=W.ReadStreamSync=W.ReadStream=void 0;var ko=Wr(require("events")),z=Wr(require("fs")),xo=We(),jo=z.default.writev,Ee=Symbol("_autoClose"),$=Symbol("_close"),wt=Symbol("_ended"),p=Symbol("_fd"),rs=Symbol("_finished"),de=Symbol("_flags"),ns=Symbol("_flush"),ls=Symbol("_handleChunk"),cs=Symbol("_makeBuf"),Et=Symbol("_mode"),Yt=Symbol("_needDrain"),Ze=Symbol("_onerror"),Ye=Symbol("_onopen"),os=Symbol("_onread"),He=Symbol("_onwrite"),be=Symbol("_open"),V=Symbol("_path"),ye=Symbol("_pos"),ee=Symbol("_queue"),Ge=Symbol("_read"),as=Symbol("_readSize"),fe=Symbol("_reading"),yt=Symbol("_remain"),hs=Symbol("_size"),Kt=Symbol("_write"),Me=Symbol("_writing"),Vt=Symbol("_defaultFlag"),Le=Symbol("_errored"),$t=class extends xo.Minipass{[Le]=!1;[p];[V];[as];[fe]=!1;[hs];[yt];[Ee];constructor(e,t){if(t=t||{},super(t),this.readable=!0,this.writable=!1,typeof e!="string")throw new TypeError("path must be a string");this[Le]=!1,this[p]=typeof t.fd=="number"?t.fd:void 0,this[V]=e,this[as]=t.readSize||16*1024*1024,this[fe]=!1,this[hs]=typeof t.size=="number"?t.size:1/0,this[yt]=this[hs],this[Ee]=typeof t.autoClose=="boolean"?t.autoClose:!0,typeof this[p]=="number"?this[Ge]():this[be]()}get fd(){return this[p]}get path(){return this[V]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[be](){z.default.open(this[V],"r",(e,t)=>this[Ye](e,t))}[Ye](e,t){e?this[Ze](e):(this[p]=t,this.emit("open",t),this[Ge]())}[cs](){return Buffer.allocUnsafe(Math.min(this[as],this[yt]))}[Ge](){if(!this[fe]){this[fe]=!0;let e=this[cs]();if(e.length===0)return process.nextTick(()=>this[os](null,0,e));z.default.read(this[p],e,0,e.length,null,(t,i,r)=>this[os](t,i,r))}}[os](e,t,i){this[fe]=!1,e?this[Ze](e):this[ls](t,i)&&this[Ge]()}[$](){if(this[Ee]&&typeof this[p]=="number"){let e=this[p];this[p]=void 0,z.default.close(e,t=>t?this.emit("error",t):this.emit("close"))}}[Ze](e){this[fe]=!0,this[$](),this.emit("error",e)}[ls](e,t){let i=!1;return this[yt]-=e,e>0&&(i=super.write(ethis[Ye](e,t))}[Ye](e,t){this[Vt]&&this[de]==="r+"&&e&&e.code==="ENOENT"?(this[de]="w",this[be]()):e?this[Ze](e):(this[p]=t,this.emit("open",t),this[Me]||this[ns]())}end(e,t){return e&&this.write(e,t),this[wt]=!0,!this[Me]&&!this[ee].length&&typeof this[p]=="number"&&this[He](null,0),this}write(e,t){return typeof e=="string"&&(e=Buffer.from(e,t)),this[wt]?(this.emit("error",new Error("write() after end()")),!1):this[p]===void 0||this[Me]||this[ee].length?(this[ee].push(e),this[Yt]=!0,!1):(this[Me]=!0,this[Kt](e),!0)}[Kt](e){z.default.write(this[p],e,0,e.length,this[ye],(t,i)=>this[He](t,i))}[He](e,t){e?this[Ze](e):(this[ye]!==void 0&&typeof t=="number"&&(this[ye]+=t),this[ee].length?this[ns]():(this[Me]=!1,this[wt]&&!this[rs]?(this[rs]=!0,this[$](),this.emit("finish")):this[Yt]&&(this[Yt]=!1,this.emit("drain"))))}[ns](){if(this[ee].length===0)this[wt]&&this[He](null,0);else if(this[ee].length===1)this[Kt](this[ee].pop());else{let e=this[ee];this[ee]=[],jo(this[p],e,this[ye],(t,i)=>this[He](t,i))}}[$](){if(this[Ee]&&typeof this[p]=="number"){let e=this[p];this[p]=void 0,z.default.close(e,t=>t?this.emit("error",t):this.emit("close"))}}};W.WriteStream=Xt;var fs=class extends Xt{[be](){let e;if(this[Vt]&&this[de]==="r+")try{e=z.default.openSync(this[V],this[de],this[Et])}catch(t){if(t?.code==="ENOENT")return this[de]="w",this[be]();throw t}else e=z.default.openSync(this[V],this[de],this[Et]);this[Ye](null,e)}[$](){if(this[Ee]&&typeof this[p]=="number"){let e=this[p];this[p]=void 0,z.default.closeSync(e),this.emit("close")}}[Kt](e){let t=!0;try{this[He](null,z.default.writeSync(this[p],e,0,e.length,this[ye])),t=!1}finally{if(t)try{this[$]()}catch{}}}};W.WriteStreamSync=fs});var Qt=d(S=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0});S.dealias=S.isNoFile=S.isFile=S.isAsync=S.isSync=S.isAsyncNoFile=S.isSyncNoFile=S.isAsyncFile=S.isSyncFile=void 0;var Uo=new Map([["C","cwd"],["f","file"],["z","gzip"],["P","preservePaths"],["U","unlink"],["strip-components","strip"],["stripComponents","strip"],["keep-newer","newer"],["keepNewer","newer"],["keep-newer-files","newer"],["keepNewerFiles","newer"],["k","keep"],["keep-existing","keep"],["keepExisting","keep"],["m","noMtime"],["no-mtime","noMtime"],["p","preserveOwner"],["L","follow"],["h","follow"],["onentry","onReadEntry"]]),qo=s=>!!s.sync&&!!s.file;S.isSyncFile=qo;var Wo=s=>!s.sync&&!!s.file;S.isAsyncFile=Wo;var Ho=s=>!!s.sync&&!s.file;S.isSyncNoFile=Ho;var Go=s=>!s.sync&&!s.file;S.isAsyncNoFile=Go;var Zo=s=>!!s.sync;S.isSync=Zo;var Yo=s=>!s.sync;S.isAsync=Yo;var Ko=s=>!!s.file;S.isFile=Ko;var Vo=s=>!s.file;S.isNoFile=Vo;var $o=s=>{let e=Uo.get(s);return e||s},Xo=(s={})=>{if(!s)return{};let e={};for(let[t,i]of Object.entries(s)){let r=$o(t);e[r]=i}return e.chmod===void 0&&e.noChmod===!1&&(e.chmod=!0),delete e.noChmod,e};S.dealias=Xo});var Ve=d(Jt=>{"use strict";Object.defineProperty(Jt,"__esModule",{value:!0});Jt.makeCommand=void 0;var bt=Qt(),Qo=(s,e,t,i,r)=>Object.assign((n=[],o,a)=>{Array.isArray(n)&&(o=n,n={}),typeof o=="function"&&(a=o,o=void 0),o=o?Array.from(o):[];let h=(0,bt.dealias)(n);if(r?.(h,o),(0,bt.isSyncFile)(h)){if(typeof a=="function")throw new TypeError("callback not supported for sync tar functions");return s(h,o)}else if((0,bt.isAsyncFile)(h)){let l=e(h,o);return a?l.then(()=>a(),a):l}else if((0,bt.isSyncNoFile)(h)){if(typeof a=="function")throw new TypeError("callback not supported for sync tar functions");return t(h,o)}else if((0,bt.isAsyncNoFile)(h)){if(typeof a=="function")throw new TypeError("callback only supported with file option");return i(h,o)}throw new Error("impossible options??")},{syncFile:s,asyncFile:e,syncNoFile:t,asyncNoFile:i,validate:r});Jt.makeCommand=Qo});var ds=d($e=>{"use strict";var Jo=$e&&$e.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty($e,"__esModule",{value:!0});$e.constants=void 0;var ea=Jo(require("zlib")),ta=ea.default.constants||{ZLIB_VERNUM:4736};$e.constants=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:1/0,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},ta))});var Ps=d(f=>{"use strict";var ia=f&&f.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),sa=f&&f.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),ra=f&&f.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;rs,ms=Gr?.writable===!0||Gr?.set!==void 0?s=>{Ae.Buffer.concat=s?la:ha}:s=>{},Ie=Symbol("_superWrite"),Fe=class extends Error{code;errno;constructor(e,t){super("zlib: "+e.message,{cause:e}),this.code=e.code,this.errno=e.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+e.message,Error.captureStackTrace(this,t??this.constructor)}get name(){return"ZlibError"}};f.ZlibError=Fe;var ps=Symbol("flushFlag"),St=class extends oa.Minipass{#e=!1;#i=!1;#s;#n;#r;#t;#o;get sawError(){return this.#e}get handle(){return this.#t}get flushFlag(){return this.#s}constructor(e,t){if(!e||typeof e!="object")throw new TypeError("invalid options for ZlibBase constructor");if(super(e),this.#s=e.flush??0,this.#n=e.finishFlush??0,this.#r=e.fullFlushFlag??0,typeof Hr[t]!="function")throw new TypeError("Compression method not supported: "+t);try{this.#t=new Hr[t](e)}catch(i){throw new Fe(i,this.constructor)}this.#o=i=>{this.#e||(this.#e=!0,this.close(),this.emit("error",i))},this.#t?.on("error",i=>this.#o(new Fe(i))),this.once("end",()=>this.close)}close(){this.#t&&(this.#t.close(),this.#t=void 0,this.emit("close"))}reset(){if(!this.#e)return(0,_s.default)(this.#t,"zlib binding closed"),this.#t.reset?.()}flush(e){this.ended||(typeof e!="number"&&(e=this.#r),this.write(Object.assign(Ae.Buffer.alloc(0),{[ps]:e})))}end(e,t,i){return typeof e=="function"&&(i=e,t=void 0,e=void 0),typeof t=="function"&&(i=t,t=void 0),e&&(t?this.write(e,t):this.write(e)),this.flush(this.#n),this.#i=!0,super.end(i)}get ended(){return this.#i}[Ie](e){return super.write(e)}write(e,t,i){if(typeof t=="function"&&(i=t,t="utf8"),typeof e=="string"&&(e=Ae.Buffer.from(e,t)),this.#e)return;(0,_s.default)(this.#t,"zlib binding closed");let r=this.#t._handle,n=r.close;r.close=()=>{};let o=this.#t.close;this.#t.close=()=>{},ms(!0);let a;try{let l=typeof e[ps]=="number"?e[ps]:this.#s;a=this.#t._processChunk(e,l),ms(!1)}catch(l){ms(!1),this.#o(new Fe(l,this.write))}finally{this.#t&&(this.#t._handle=r,r.close=n,this.#t.close=o,this.#t.removeAllListeners("error"))}this.#t&&this.#t.on("error",l=>this.#o(new Fe(l,this.write)));let h;if(a)if(Array.isArray(a)&&a.length>0){let l=a[0];h=this[Ie](Ae.Buffer.from(l));for(let c=1;c{typeof r=="function"&&(n=r,r=this.flushFlag),this.flush(r),n?.()};try{this.handle.params(e,t)}finally{this.handle.flush=i}this.handle&&(this.#e=e,this.#i=t)}}}};f.Zlib=ie;var ws=class extends ie{constructor(e){super(e,"Deflate")}};f.Deflate=ws;var ys=class extends ie{constructor(e){super(e,"Inflate")}};f.Inflate=ys;var Es=class extends ie{#e;constructor(e){super(e,"Gzip"),this.#e=e&&!!e.portable}[Ie](e){return this.#e?(this.#e=!1,e[9]=255,super[Ie](e)):super[Ie](e)}};f.Gzip=Es;var bs=class extends ie{constructor(e){super(e,"Gunzip")}};f.Gunzip=bs;var Ss=class extends ie{constructor(e){super(e,"DeflateRaw")}};f.DeflateRaw=Ss;var gs=class extends ie{constructor(e){super(e,"InflateRaw")}};f.InflateRaw=gs;var Rs=class extends ie{constructor(e){super(e,"Unzip")}};f.Unzip=Rs;var ei=class extends St{constructor(e,t){e=e||{},e.flush=e.flush||te.constants.BROTLI_OPERATION_PROCESS,e.finishFlush=e.finishFlush||te.constants.BROTLI_OPERATION_FINISH,e.fullFlushFlag=te.constants.BROTLI_OPERATION_FLUSH,super(e,t)}},Os=class extends ei{constructor(e){super(e,"BrotliCompress")}};f.BrotliCompress=Os;var vs=class extends ei{constructor(e){super(e,"BrotliDecompress")}};f.BrotliDecompress=vs;var ti=class extends St{constructor(e,t){e=e||{},e.flush=e.flush||te.constants.ZSTD_e_continue,e.finishFlush=e.finishFlush||te.constants.ZSTD_e_end,e.fullFlushFlag=te.constants.ZSTD_e_flush,super(e,t)}},Ts=class extends ti{constructor(e){super(e,"ZstdCompress")}};f.ZstdCompress=Ts;var Ds=class extends ti{constructor(e){super(e,"ZstdDecompress")}};f.ZstdDecompress=Ds});var Kr=d(Xe=>{"use strict";Object.defineProperty(Xe,"__esModule",{value:!0});Xe.parse=Xe.encode=void 0;var ca=(s,e)=>{if(Number.isSafeInteger(s))s<0?fa(s,e):ua(s,e);else throw Error("cannot encode number outside of javascript safe integer range");return e};Xe.encode=ca;var ua=(s,e)=>{e[0]=128;for(var t=e.length;t>1;t--)e[t-1]=s&255,s=Math.floor(s/256)},fa=(s,e)=>{e[0]=255;var t=!1;s=s*-1;for(var i=e.length;i>1;i--){var r=s&255;s=Math.floor(s/256),t?e[i-1]=Zr(r):r===0?e[i-1]=0:(t=!0,e[i-1]=Yr(r))}},da=s=>{let e=s[0],t=e===128?pa(s.subarray(1,s.length)):e===255?ma(s):null;if(t===null)throw Error("invalid base256 encoding");if(!Number.isSafeInteger(t))throw Error("parsed number outside of javascript safe integer range");return t};Xe.parse=da;var ma=s=>{for(var e=s.length,t=0,i=!1,r=e-1;r>-1;r--){var n=Number(s[r]),o;i?o=Zr(n):n===0?o=n:(i=!0,o=Yr(n)),o!==0&&(t-=o*Math.pow(256,e-r-1))}return t},pa=s=>{for(var e=s.length,t=0,i=e-1;i>-1;i--){var r=Number(s[i]);r!==0&&(t+=r*Math.pow(256,e-i-1))}return t},Zr=s=>(255^s)&255,Yr=s=>(255^s)+1&255});var Ns=d(C=>{"use strict";Object.defineProperty(C,"__esModule",{value:!0});C.code=C.name=C.normalFsTypes=C.isName=C.isCode=void 0;var _a=s=>C.name.has(s);C.isCode=_a;var wa=s=>C.code.has(s);C.isName=wa;C.normalFsTypes=new Set(["0","","1","2","3","4","5","6","7","D"]);C.name=new Map([["0","File"],["","OldFile"],["1","Link"],["2","SymbolicLink"],["3","CharacterDevice"],["4","BlockDevice"],["5","Directory"],["6","FIFO"],["7","ContiguousFile"],["g","GlobalExtendedHeader"],["x","ExtendedHeader"],["A","SolarisACL"],["D","GNUDumpDir"],["I","Inode"],["K","NextFileHasLongLinkpath"],["L","NextFileHasLongPath"],["M","ContinuationFile"],["N","OldGnuLongPath"],["S","SparseFile"],["V","TapeVolumeHeader"],["X","OldExtendedHeader"]]);C.code=new Map(Array.from(C.name).map(s=>[s[1],s[0]]))});var et=d(se=>{"use strict";var ya=se&&se.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),Ea=se&&se.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),Vr=se&&se.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;rs===void 0||s<0?void 0:s,As=class{cksumValid=!1;needPax=!1;nullBlock=!1;block;path;mode;uid;gid;size;cksum;#e="Unsupported";linkpath;uname;gname;devmaj=0;devmin=0;atime;ctime;mtime;charset;comment;constructor(e,t=0,i,r){Buffer.isBuffer(e)?this.decode(e,t||0,i,r):e&&this.#i(e)}decode(e,t,i,r){if(t||(t=0),!e||!(e.length>=t+512))throw new Error("need 512 bytes for header");let n=Ce(e,t+156,1),o=Je.normalFsTypes.has(n),a=o?i:void 0,h=o?r:void 0;if(this.path=a?.path??Ce(e,t,100),this.mode=a?.mode??h?.mode??Se(e,t+100,8),this.uid=a?.uid??h?.uid??Se(e,t+108,8),this.gid=a?.gid??h?.gid??Se(e,t+116,8),this.size=ba(a?.size??h?.size??Se(e,t+124,12)),this.mtime=a?.mtime??h?.mtime??Ms(e,t+136,12),this.cksum=Se(e,t+148,12),h&&this.#i(h,!0),a&&this.#i(a),Je.isCode(n)&&(this.#e=n||"0"),this.#e==="0"&&this.path.slice(-1)==="/"&&(this.#e="5"),this.#e==="5"&&(this.size=0),this.linkpath=Ce(e,t+157,100),e.subarray(t+257,t+265).toString()==="ustar\x0000")if(this.uname=a?.uname??h?.uname??Ce(e,t+265,32),this.gname=a?.gname??h?.gname??Ce(e,t+297,32),this.devmaj=a?.devmaj??h?.devmaj??Se(e,t+329,8)??0,this.devmin=a?.devmin??h?.devmin??Se(e,t+337,8)??0,e[t+475]!==0){let c=Ce(e,t+345,155);this.path=c+"/"+this.path}else{let c=Ce(e,t+345,130);c&&(this.path=c+"/"+this.path),this.atime=i?.atime??r?.atime??Ms(e,t+476,12),this.ctime=i?.ctime??r?.ctime??Ms(e,t+488,12)}let l=256;for(let c=t;c!(r==null||i==="size"&&Number(r)<0||i==="path"&&t||i==="linkpath"&&t||i==="global"))))}encode(e,t=0){if(e||(e=this.block=Buffer.alloc(512)),this.#e==="Unsupported"&&(this.#e="0"),!(e.length>=t+512))throw new Error("need 512 bytes for header");let i=this.ctime||this.atime?130:155,r=Sa(this.path||"",i),n=r[0],o=r[1];this.needPax=!!r[2],this.needPax=Be(e,t,100,n)||this.needPax,this.needPax=ge(e,t+100,8,this.mode)||this.needPax,this.needPax=ge(e,t+108,8,this.uid)||this.needPax,this.needPax=ge(e,t+116,8,this.gid)||this.needPax,this.needPax=ge(e,t+124,12,this.size)||this.needPax,this.needPax=Ls(e,t+136,12,this.mtime)||this.needPax,e[t+156]=Number(this.#e.codePointAt(0)),this.needPax=Be(e,t+157,100,this.linkpath)||this.needPax,e.write("ustar\x0000",t+257,8),this.needPax=Be(e,t+265,32,this.uname)||this.needPax,this.needPax=Be(e,t+297,32,this.gname)||this.needPax,this.needPax=ge(e,t+329,8,this.devmaj)||this.needPax,this.needPax=ge(e,t+337,8,this.devmin)||this.needPax,this.needPax=Be(e,t+345,i,o)||this.needPax,e[t+475]!==0?this.needPax=Be(e,t+345,155,o)||this.needPax:(this.needPax=Be(e,t+345,130,o)||this.needPax,this.needPax=Ls(e,t+476,12,this.atime)||this.needPax,this.needPax=Ls(e,t+488,12,this.ctime)||this.needPax);let a=256;for(let h=t;h{let i=s,r="",n,o=Qe.posix.parse(s).root||".";if(Buffer.byteLength(i)<100)n=[i,r,!1];else{r=Qe.posix.dirname(i),i=Qe.posix.basename(i);do Buffer.byteLength(i)<=100&&Buffer.byteLength(r)<=e?n=[i,r,!1]:Buffer.byteLength(i)>100&&Buffer.byteLength(r)<=e?n=[i.slice(0,99),r,!0]:(i=Qe.posix.join(Qe.posix.basename(r),i),r=Qe.posix.dirname(r));while(r!==o&&n===void 0);n||(n=[s.slice(0,99),"",!0])}return n},Ce=(s,e,t)=>s.subarray(e,e+t).toString("utf8").replace(/\0.*/,""),Ms=(s,e,t)=>ga(Se(s,e,t)),ga=s=>s===void 0?void 0:new Date(s*1e3),Se=(s,e,t)=>Number(s[e])&128?$r.parse(s.subarray(e,e+t)):Oa(s,e,t),Ra=s=>isNaN(s)?void 0:s,Oa=(s,e,t)=>Ra(parseInt(s.subarray(e,e+t).toString("utf8").replace(/\0.*$/,"").trim(),8)),va={12:8589934591,8:2097151},ge=(s,e,t,i)=>i===void 0?!1:i>va[t]||i<0?($r.encode(i,s.subarray(e,e+t)),!0):(Ta(s,e,t,i),!1),Ta=(s,e,t,i)=>s.write(Da(i,t),e,t,"ascii"),Da=(s,e)=>Pa(Math.floor(s).toString(8),e),Pa=(s,e)=>(s.length===e-1?s:new Array(e-s.length-1).join("0")+s+" ")+"\0",Ls=(s,e,t,i)=>i===void 0?!1:ge(s,e,t,i.getTime()/1e3),Na=new Array(156).join("\0"),Be=(s,e,t,i)=>i===void 0?!1:(s.write(i+Na,e,t,"utf8"),i.length!==Buffer.byteLength(i)||i.length>t)});var si=d(ii=>{"use strict";Object.defineProperty(ii,"__esModule",{value:!0});ii.Pax=void 0;var Ma=require("node:path"),La=et(),Is=class s{atime;mtime;ctime;charset;comment;gid;uid;gname;uname;linkpath;dev;ino;nlink;path;size;mode;global;constructor(e,t=!1){this.atime=e.atime,this.charset=e.charset,this.comment=e.comment,this.ctime=e.ctime,this.dev=e.dev,this.gid=e.gid,this.global=t,this.gname=e.gname,this.ino=e.ino,this.linkpath=e.linkpath,this.mtime=e.mtime,this.nlink=e.nlink,this.path=e.path,this.size=e.size,this.uid=e.uid,this.uname=e.uname}encode(){let e=this.encodeBody();if(e==="")return Buffer.allocUnsafe(0);let t=Buffer.byteLength(e),i=512*Math.ceil(1+t/512),r=Buffer.allocUnsafe(i);for(let n=0;n<512;n++)r[n]=0;new La.Header({path:("PaxHeader/"+(0,Ma.basename)(this.path??"")).slice(0,99),mode:this.mode||420,uid:this.uid,gid:this.gid,size:t,mtime:this.mtime,type:this.global?"GlobalExtendedHeader":"ExtendedHeader",linkpath:"",uname:this.uname||"",gname:this.gname||"",devmaj:0,devmin:0,atime:this.atime,ctime:this.ctime}).encode(r),r.write(e,512,t,"utf8");for(let n=t+512;n=Math.pow(10,o)&&(o+=1),o+n+r}static parse(e,t,i=!1){return new s(Aa(Ia(e),t),i)}};ii.Pax=Is;var Aa=(s,e)=>e?Object.assign({},e,s):s,Ia=s=>s.replace(/\n$/,"").split(`
+`).reduce(Fa,Object.create(null)),Fa=(s,e)=>{let t=parseInt(e,10);if(t!==Buffer.byteLength(e)+1)return s;e=e.slice((t+" ").length);let i=e.split("="),r=i.shift();if(!r)return s;let n=r.replace(/^SCHILY\.(dev|ino|nlink)/,"$1"),o=i.join("=").replace(/\0.*/,"");switch(n){case"path":case"linkpath":case"type":case"charset":case"comment":case"gname":case"uname":s[n]=o;break;case"ctime":case"atime":case"mtime":s[n]=new Date(Number(o)*1e3);break;case"size":let a=+o;a>=0&&(s[n]=a);break;case"gid":case"uid":case"dev":case"ino":case"nlink":case"mode":s[n]=+o;break}return s}});var tt=d(ri=>{"use strict";Object.defineProperty(ri,"__esModule",{value:!0});ri.normalizeWindowsPath=void 0;var Ca=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform;ri.normalizeWindowsPath=Ca!=="win32"?s=>String(s):s=>String(s).replaceAll(/\\/g,"/")});var Cs=d(oi=>{"use strict";Object.defineProperty(oi,"__esModule",{value:!0});oi.ReadEntry=void 0;var Ba=We(),ni=tt(),Fs=class extends Ba.Minipass{extended;globalExtended;header;startBlockSize;blockRemain;remain;type;meta=!1;ignore=!1;path;mode;uid;gid;uname;gname;size=0;mtime;atime;ctime;linkpath;dev;ino;nlink;invalid=!1;absolute;unsupported=!1;constructor(e,t,i){switch(super({}),this.pause(),this.extended=t,this.globalExtended=i,this.header=e,this.remain=e.size??0,this.startBlockSize=512*Math.ceil(this.remain/512),this.blockRemain=this.startBlockSize,this.type=e.type,this.type){case"File":case"OldFile":case"Link":case"SymbolicLink":case"CharacterDevice":case"BlockDevice":case"Directory":case"FIFO":case"ContiguousFile":case"GNUDumpDir":break;case"NextFileHasLongLinkpath":case"NextFileHasLongPath":case"OldGnuLongPath":case"GlobalExtendedHeader":case"ExtendedHeader":case"OldExtendedHeader":this.meta=!0;break;default:this.ignore=!0}if(!e.path)throw new Error("no path provided for tar.ReadEntry");this.path=(0,ni.normalizeWindowsPath)(e.path),this.mode=e.mode,this.mode&&(this.mode=this.mode&4095),this.uid=e.uid,this.gid=e.gid,this.uname=e.uname,this.gname=e.gname,this.size=this.remain,this.mtime=e.mtime,this.atime=e.atime,this.ctime=e.ctime,this.linkpath=e.linkpath?(0,ni.normalizeWindowsPath)(e.linkpath):void 0,this.uname=e.uname,this.gname=e.gname,t&&this.#e(t),i&&this.#e(i,!0)}write(e){let t=e.length;if(t>this.blockRemain)throw new Error("writing more to entry than is appropriate");let i=this.remain,r=this.blockRemain;return this.remain=Math.max(0,i-t),this.blockRemain=Math.max(0,r-t),this.ignore?!0:i>=t?super.write(e):super.write(e.subarray(0,i))}#e(e,t=!1){e.path&&(e.path=(0,ni.normalizeWindowsPath)(e.path)),e.linkpath&&(e.linkpath=(0,ni.normalizeWindowsPath)(e.linkpath)),Object.assign(this,Object.fromEntries(Object.entries(e).filter(([i,r])=>!(r==null||i==="path"&&t))))}};oi.ReadEntry=Fs});var hi=d(ai=>{"use strict";Object.defineProperty(ai,"__esModule",{value:!0});ai.warnMethod=void 0;var za=(s,e,t,i={})=>{s.file&&(i.file=s.file),s.cwd&&(i.cwd=s.cwd),i.code=t instanceof Error&&t.code||e,i.tarCode=e,!s.strict&&i.recoverable!==!1?(t instanceof Error&&(i=Object.assign(t,i),t=t.message),s.emit("warn",e,t,i)):t instanceof Error?s.emit("error",Object.assign(t,i)):s.emit("error",Object.assign(new Error(`${e}: ${t}`),i))};ai.warnMethod=za});var _i=d(pi=>{"use strict";Object.defineProperty(pi,"__esModule",{value:!0});pi.Parser=void 0;var ka=require("events"),Bs=Ps(),Xr=et(),Qr=si(),xa=Cs(),ja=hi(),Ua=1024*1024,qs=Buffer.from([31,139]),Ws=Buffer.from([40,181,47,253]),qa=Math.max(qs.length,Ws.length),H=Symbol("state"),ze=Symbol("writeEntry"),me=Symbol("readEntry"),zs=Symbol("nextEntry"),Jr=Symbol("processEntry"),re=Symbol("extendedHeader"),gt=Symbol("globalExtendedHeader"),Re=Symbol("meta"),en=Symbol("emitMeta"),_=Symbol("buffer"),pe=Symbol("queue"),Oe=Symbol("ended"),ks=Symbol("emittedEnd"),ke=Symbol("emit"),y=Symbol("unzip"),li=Symbol("consumeChunk"),ci=Symbol("consumeChunkSub"),xs=Symbol("consumeBody"),tn=Symbol("consumeMeta"),sn=Symbol("consumeHeader"),Rt=Symbol("consuming"),js=Symbol("bufferConcat"),ui=Symbol("maybeEnd"),it=Symbol("writing"),ne=Symbol("aborted"),fi=Symbol("onDone"),xe=Symbol("sawValidEntry"),di=Symbol("sawNullBlock"),mi=Symbol("sawEOF"),rn=Symbol("closeStream"),Wa=1e3,Ot=Symbol("compressedBytesRead"),Us=Symbol("decompressedBytesRead"),nn=Symbol("checkDecompressionRatio"),Ha=()=>!0,Hs=class extends ka.EventEmitter{file;strict;maxMetaEntrySize;filter;brotli;zstd;maxDecompressionRatio;writable=!0;readable=!1;[pe]=[];[_];[me];[ze];[H]="begin";[Re]="";[re];[gt];[Oe]=!1;[y];[ne]=!1;[xe];[di]=!1;[mi]=!1;[it]=!1;[Rt]=!1;[ks]=!1;[Ot]=0;[Us]=0;constructor(e={}){super(),this.file=e.file||"",this.on(fi,()=>{(this[H]==="begin"||this[xe]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),e.ondone?this.on(fi,e.ondone):this.on(fi,()=>{this.emit("prefinish"),this.emit("finish"),this.emit("end")}),this.strict=!!e.strict,this.maxDecompressionRatio=typeof e.maxDecompressionRatio=="number"?e.maxDecompressionRatio:Wa,this.maxMetaEntrySize=e.maxMetaEntrySize||Ua,this.filter=typeof e.filter=="function"?e.filter:Ha;let t=e.file&&(e.file.endsWith(".tar.br")||e.file.endsWith(".tbr"));this.brotli=!(e.gzip||e.zstd)&&e.brotli!==void 0?e.brotli:t?void 0:!1;let i=e.file&&(e.file.endsWith(".tar.zst")||e.file.endsWith(".tzst"));this.zstd=!(e.gzip||e.brotli)&&e.zstd!==void 0?e.zstd:i?!0:void 0,this.on("end",()=>this[rn]()),typeof e.onwarn=="function"&&this.on("warn",e.onwarn),typeof e.onReadEntry=="function"&&this.on("entry",e.onReadEntry)}warn(e,t,i={}){(0,ja.warnMethod)(this,e,t,i)}[sn](e,t){this[xe]===void 0&&(this[xe]=!1);let i;try{i=new Xr.Header(e,t,this[re],this[gt])}catch(r){return this.warn("TAR_ENTRY_INVALID",r)}if(i.nullBlock)this[di]?(this[mi]=!0,this[H]==="begin"&&(this[H]="header"),this[ke]("eof")):(this[di]=!0,this[ke]("nullBlock"));else if(this[di]=!1,!i.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:i});else if(!i.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:i});else{let r=i.type;if(/^(Symbolic)?Link$/.test(r)&&!i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:i});else if(!/^(Symbolic)?Link$/.test(r)&&!/^(Global)?ExtendedHeader$/.test(r)&&i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:i});else{let n=this[ze]=new xa.ReadEntry(i,this[re],this[gt]);if(!this[xe])if(n.remain){let o=()=>{n.invalid||(this[xe]=!0)};n.on("end",o)}else this[xe]=!0;n.meta?n.size>this.maxMetaEntrySize?(n.ignore=!0,this[ke]("ignoredEntry",n),this[H]="ignore",n.resume()):n.size>0&&(this[Re]="",n.on("data",o=>this[Re]+=o),this[H]="meta"):(this[re]=void 0,n.ignore=n.ignore||!this.filter(n.path,n),n.ignore?(this[ke]("ignoredEntry",n),this[H]=n.remain?"ignore":"header",n.resume()):(n.remain?this[H]="body":(this[H]="header",n.end()),this[me]?this[pe].push(n):(this[pe].push(n),this[zs]())))}}}[rn](){queueMicrotask(()=>this.emit("close"))}[Jr](e){let t=!0;if(!e)this[me]=void 0,t=!1;else if(Array.isArray(e)){let[i,...r]=e;this.emit(i,...r)}else this[me]=e,this.emit("entry",e),e.emittedEnd||(e.on("end",()=>this[zs]()),t=!1);return t}[zs](){do;while(this[Jr](this[pe].shift()));if(this[pe].length===0){let e=this[me];!e||e.flowing||e.size===e.remain?this[it]||this.emit("drain"):e.once("drain",()=>this.emit("drain"))}}[xs](e,t){let i=this[ze];if(!i)throw new Error("attempt to consume body without entry??");let r=i.blockRemain??0,n=r>=e.length&&t===0?e:e.subarray(t,t+r);return i.write(n),i.blockRemain||(this[H]="header",this[ze]=void 0,i.end()),n.length}[tn](e,t){let i=this[ze],r=this[xs](e,t);return!this[ze]&&i&&this[en](i),r}[ke](e,t,i){this[pe].length===0&&!this[me]?this.emit(e,t,i):this[pe].push([e,t,i])}[en](e){switch(this[ke]("meta",this[Re]),e.type){case"ExtendedHeader":case"OldExtendedHeader":this[re]=Qr.Pax.parse(this[Re],this[re],!1);break;case"GlobalExtendedHeader":this[gt]=Qr.Pax.parse(this[Re],this[gt],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":{let t=this[re]??Object.create(null);this[re]=t,t.path=this[Re].replace(/\0.*/,"");break}case"NextFileHasLongLinkpath":{let t=this[re]||Object.create(null);this[re]=t,t.linkpath=this[Re].replace(/\0.*/,"");break}default:throw new Error("unknown meta: "+e.type)}}abort(e){if(!this[ne]){if(this[y]){let t=this[y];t.write=()=>!0,t.end=()=>t,t.emit=()=>!1,t.destroy?.()}this[ne]=!0,this.emit("abort",e),this.warn("TAR_ABORT",e,{recoverable:!1})}}[nn](e){this[Us]+=e.length;let t=this[Us]/this[Ot];return t>this.maxDecompressionRatio?(this.abort(new Error(`max decompression ratio exceeded: ${t.toFixed(2)} > ${this.maxDecompressionRatio}`)),!1):!0}write(e,t,i){if(typeof t=="function"&&(i=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,typeof t=="string"?t:"utf8")),this[ne])return i?.(),!1;if((this[y]===void 0||this.brotli===void 0&&this[y]===!1)&&e){if(this[_]&&(e=Buffer.concat([this[_],e]),this[_]=void 0),e.length{this[nn](c)&&this[li](c)}),this[y].on("error",c=>{this[ne]||this.abort(c)}),this[y].on("end",()=>{this[Oe]=!0,this[li]()}),this[it]=!0,this[Ot]+=e.length;let l=!!this[y][h?"end":"write"](e);return this[it]=!1,i?.(),l}}this[it]=!0,this[y]?(this[Ot]+=e.length,this[y].write(e)):this[li](e),this[it]=!1;let n=this[pe].length>0?!1:this[me]?this[me].flowing:!0;return!n&&this[pe].length===0&&this[me]?.once("drain",()=>this.emit("drain")),i?.(),n}[js](e){e&&!this[ne]&&(this[_]=this[_]?Buffer.concat([this[_],e]):e)}[ui](){if(this[Oe]&&!this[ks]&&!this[ne]&&!this[Rt]){this[ks]=!0;let e=this[ze];if(e?.blockRemain){let t=this[_]?this[_].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${e.blockRemain} more bytes, only ${t} available)`,{entry:e}),this[_]&&e.write(this[_]),e.end()}this[ke](fi)}}[li](e){if(this[Rt]&&e)this[js](e);else if(!e&&!this[_])this[ui]();else if(e){if(this[Rt]=!0,this[_]){this[js](e);let t=this[_];this[_]=void 0,this[ci](t)}else this[ci](e);for(;this[_]&&this[_]?.length>=512&&!this[ne]&&!this[mi];){let t=this[_];this[_]=void 0,this[ci](t)}this[Rt]=!1}(!this[_]||this[Oe])&&this[ui]()}[ci](e){let t=0,i=e.length;for(;t+512<=i&&!this[ne]&&!this[mi];)switch(this[H]){case"begin":case"header":this[sn](e,t),t+=512;break;case"ignore":case"body":t+=this[xs](e,t);break;case"meta":t+=this[tn](e,t);break;default:throw new Error("invalid state: "+this[H])}t{"use strict";Object.defineProperty(wi,"__esModule",{value:!0});wi.stripTrailingSlashes=void 0;var Ga=s=>{let e=s.length-1,t=-1;for(;e>-1&&s.charAt(e)==="/";)t=e,e--;return t===-1?s:s.slice(0,t)};wi.stripTrailingSlashes=Ga});var rt=d(B=>{"use strict";var Za=B&&B.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),Ya=B&&B.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),Ka=B&&B.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r{let e=s.onReadEntry;s.onReadEntry=e?t=>{e(t),t.resume()}:t=>t.resume()},Ja=(s,e)=>{let t=new Map(e.map(o=>[(0,Gs.stripTrailingSlashes)(o),!0])),i=s.filter,r=100,n=(o,a="",h=0)=>{if(h>=r)return t.set(o,!1),!1;let l=a||(0,on.parse)(o).root||".",c;if(o===l)c=!1;else{let u=t.get(o);c=u!==void 0?u:n((0,on.dirname)(o),l,h+1)}return t.set(o,c),c};s.filter=i?(o,a)=>i(o,a)&&n((0,Gs.stripTrailingSlashes)(o)):o=>n((0,Gs.stripTrailingSlashes)(o))};B.filesFilter=Ja;var eh=s=>{let e=new Ei.Parser(s),t=s.file,i;try{i=st.default.openSync(t,"r");let r=st.default.fstatSync(i),n=s.maxReadSize||16*1024*1024;if(r.size{let t=new Ei.Parser(s),i=s.maxReadSize||16*1024*1024,r=s.file;return new Promise((o,a)=>{t.on("error",a),t.on("end",o),st.default.stat(r,(h,l)=>{if(h)a(h);else{let c=new $a.ReadStream(r,{readSize:i,size:l.size});c.on("error",a),c.pipe(t)}})})};B.list=(0,Xa.makeCommand)(eh,th,s=>new Ei.Parser(s),s=>new Ei.Parser(s),(s,e)=>{e?.length&&(0,B.filesFilter)(s,e),s.noResume||Qa(s)})});var an=d(bi=>{"use strict";Object.defineProperty(bi,"__esModule",{value:!0});bi.modeFix=void 0;var ih=(s,e,t)=>(s&=4095,t&&(s=(s|384)&-19),e&&(s&256&&(s|=64),s&32&&(s|=8),s&4&&(s|=1)),s);bi.modeFix=ih});var Zs=d(Si=>{"use strict";Object.defineProperty(Si,"__esModule",{value:!0});Si.stripAbsolutePath=void 0;var sh=require("node:path"),{isAbsolute:rh,parse:hn}=sh.win32,nh=s=>{let e="",t=hn(s);for(;rh(s)||t.root;){let i=s.charAt(0)==="/"&&s.slice(0,4)!=="//?/"?"/":t.root;s=s.slice(i.length),e+=i,t=hn(s)}return[e,s]};Si.stripAbsolutePath=nh});var Ks=d(nt=>{"use strict";Object.defineProperty(nt,"__esModule",{value:!0});nt.decode=nt.encode=void 0;var gi=["|","<",">","?",":"],Ys=gi.map(s=>String.fromCodePoint(61440+Number(s.codePointAt(0)))),oh=new Map(gi.map((s,e)=>[s,Ys[e]])),ah=new Map(Ys.map((s,e)=>[s,gi[e]])),hh=s=>gi.reduce((e,t)=>e.split(t).join(oh.get(t)),s);nt.encode=hh;var lh=s=>Ys.reduce((e,t)=>e.split(t).join(ah.get(t)),s);nt.decode=lh});var nr=d(M=>{"use strict";var ch=M&&M.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),uh=M&&M.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),fh=M&&M.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;re?(s=(0,oe.normalizeWindowsPath)(s).replace(/^\.(\/|$)/,""),(0,dh.stripTrailingSlashes)(e)+"/"+s):(0,oe.normalizeWindowsPath)(s),ph=16*1024*1024,cn=Symbol("process"),un=Symbol("file"),fn=Symbol("directory"),$s=Symbol("symlink"),dn=Symbol("hardlink"),vt=Symbol("header"),Ri=Symbol("read"),Xs=Symbol("lstat"),Oi=Symbol("onlstat"),Qs=Symbol("onread"),Js=Symbol("onreadlink"),er=Symbol("openfile"),tr=Symbol("onopenfile"),ve=Symbol("close"),vi=Symbol("mode"),ir=Symbol("awaitDrain"),Vs=Symbol("ondrain"),he=Symbol("prefix"),Ti=class extends pn.Minipass{path;portable;myuid=process.getuid&&process.getuid()||0;myuser=process.env.USER||"";maxReadSize;linkCache;statCache;preservePaths;cwd;strict;mtime;noPax;noMtime;prefix;fd;blockLen=0;blockRemain=0;buf;pos=0;remain=0;length=0;offset=0;win32;absolute;header;type;linkpath;stat;onWriteEntry;#e=!1;constructor(e,t={}){let i=(0,yn.dealias)(t);super(),this.path=(0,oe.normalizeWindowsPath)(e),this.portable=!!i.portable,this.maxReadSize=i.maxReadSize||ph,this.linkCache=i.linkCache||new Map,this.statCache=i.statCache||new Map,this.preservePaths=!!i.preservePaths,this.cwd=(0,oe.normalizeWindowsPath)(i.cwd||process.cwd()),this.strict=!!i.strict,this.noPax=!!i.noPax,this.noMtime=!!i.noMtime,this.mtime=i.mtime,this.prefix=i.prefix?(0,oe.normalizeWindowsPath)(i.prefix):void 0,this.onWriteEntry=i.onWriteEntry,typeof i.onwarn=="function"&&this.on("warn",i.onwarn);let r=!1;if(!this.preservePaths){let[o,a]=(0,bn.stripAbsolutePath)(this.path);o&&typeof a=="string"&&(this.path=a,r=o)}this.win32=!!i.win32||process.platform==="win32",this.win32&&(this.path=mh.decode(this.path.replaceAll(/\\/g,"/")),e=e.replaceAll(/\\/g,"/")),this.absolute=(0,oe.normalizeWindowsPath)(i.absolute||ln.default.resolve(this.cwd,e)),this.path===""&&(this.path="./"),r&&this.warn("TAR_ENTRY_INFO",`stripping ${r} from absolute path`,{entry:this,path:r+this.path});let n=this.statCache.get(this.absolute);n?this[Oi](n):this[Xs]()}warn(e,t,i={}){return(0,Sn.warnMethod)(this,e,t,i)}emit(e,...t){return e==="error"&&(this.#e=!0),super.emit(e,...t)}[Xs](){ae.default.lstat(this.absolute,(e,t)=>{if(e)return this.emit("error",e);this[Oi](t)})}[Oi](e){this.statCache.set(this.absolute,e),this.stat=e,e.isFile()||(e.size=0),this.type=_h(e),this.emit("stat",e),this[cn]()}[cn](){switch(this.type){case"File":return this[un]();case"Directory":return this[fn]();case"SymbolicLink":return this[$s]();default:return this.end()}}[vi](e){return(0,wn.modeFix)(e,this.type==="Directory",this.portable)}[he](e){return gn(e,this.prefix)}[vt](){if(!this.stat)throw new Error("cannot write header before stat");this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.onWriteEntry?.(this),this.header=new _n.Header({path:this[he](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[he](this.linkpath):this.linkpath,mode:this[vi](this.stat.mode),uid:this.portable?void 0:this.stat.uid,gid:this.portable?void 0:this.stat.gid,size:this.stat.size,mtime:this.noMtime?void 0:this.mtime||this.stat.mtime,type:this.type==="Unsupported"?void 0:this.type,uname:this.portable?void 0:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?void 0:this.stat.atime,ctime:this.portable?void 0:this.stat.ctime}),this.header.encode()&&!this.noPax&&super.write(new En.Pax({atime:this.portable?void 0:this.header.atime,ctime:this.portable?void 0:this.header.ctime,gid:this.portable?void 0:this.header.gid,mtime:this.noMtime?void 0:this.mtime||this.header.mtime,path:this[he](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[he](this.linkpath):this.linkpath,size:this.header.size,uid:this.portable?void 0:this.header.uid,uname:this.portable?void 0:this.header.uname,dev:this.portable?void 0:this.stat.dev,ino:this.portable?void 0:this.stat.ino,nlink:this.portable?void 0:this.stat.nlink}).encode());let e=this.header?.block;if(!e)throw new Error("failed to encode header");super.write(e)}[fn](){if(!this.stat)throw new Error("cannot create directory entry without stat");this.path.slice(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[vt](),this.end()}[$s](){ae.default.readlink(this.absolute,(e,t)=>{if(e)return this.emit("error",e);this[Js](t)})}[Js](e){this.linkpath=(0,oe.normalizeWindowsPath)(e),this[vt](),this.end()}[dn](e){if(!this.stat)throw new Error("cannot create link entry without stat");this.type="Link",this.linkpath=(0,oe.normalizeWindowsPath)(ln.default.relative(this.cwd,e)),this.stat.size=0,this[vt](),this.end()}[un](){if(!this.stat)throw new Error("cannot create file entry without stat");if(this.stat.nlink>1){let e=`${this.stat.dev}:${this.stat.ino}`,t=this.linkCache.get(e);if(t?.indexOf(this.cwd)===0)return this[dn](t);this.linkCache.set(e,this.absolute)}if(this[vt](),this.stat.size===0)return this.end();this[er]()}[er](){ae.default.open(this.absolute,"r",(e,t)=>{if(e)return this.emit("error",e);this[tr](t)})}[tr](e){if(this.fd=e,this.#e)return this[ve]();if(!this.stat)throw new Error("should stat before calling onopenfile");this.blockLen=512*Math.ceil(this.stat.size/512),this.blockRemain=this.blockLen;let t=Math.min(this.blockLen,this.maxReadSize);this.buf=Buffer.allocUnsafe(t),this.offset=0,this.pos=0,this.remain=this.stat.size,this.length=this.buf.length,this[Ri]()}[Ri](){let{fd:e,buf:t,offset:i,length:r,pos:n}=this;if(e===void 0||t===void 0)throw new Error("cannot read file without first opening");ae.default.read(e,t,i,r,n,(o,a)=>{if(o)return this[ve](()=>this.emit("error",o));this[Qs](a)})}[ve](e=()=>{}){this.fd!==void 0&&ae.default.close(this.fd,e)}[Qs](e){if(e<=0&&this.remain>0){let r=Object.assign(new Error("encountered unexpected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[ve](()=>this.emit("error",r))}if(e>this.remain){let r=Object.assign(new Error("did not encounter expected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[ve](()=>this.emit("error",r))}if(!this.buf)throw new Error("should have created buffer prior to reading");if(e===this.remain)for(let r=e;rthis[Vs]())}[ir](e){this.once("drain",e)}write(e,t,i){if(typeof t=="function"&&(i=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,typeof t=="string"?t:"utf8")),this.blockRemaine?this.emit("error",e):this.end());if(!this.buf)throw new Error("buffer lost somehow in ONDRAIN");this.offset>=this.length&&(this.buf=Buffer.allocUnsafe(Math.min(this.blockRemain,this.buf.length)),this.offset=0),this.length=this.buf.length-this.offset,this[Ri]()}};M.WriteEntry=Ti;var sr=class extends Ti{sync=!0;[Xs](){this[Oi](ae.default.lstatSync(this.absolute))}[$s](){this[Js](ae.default.readlinkSync(this.absolute))}[er](){this[tr](ae.default.openSync(this.absolute,"r"))}[Ri](){let e=!0;try{let{fd:t,buf:i,offset:r,length:n,pos:o}=this;if(t===void 0||i===void 0)throw new Error("fd and buf must be set in READ method");let a=ae.default.readSync(t,i,r,n,o);this[Qs](a),e=!1}finally{if(e)try{this[ve](()=>{})}catch{}}}[ir](e){e()}[ve](e=()=>{}){this.fd!==void 0&&ae.default.closeSync(this.fd),e()}};M.WriteEntrySync=sr;var rr=class extends pn.Minipass{blockLen=0;blockRemain=0;buf=0;pos=0;remain=0;length=0;preservePaths;portable;strict;noPax;noMtime;readEntry;type;prefix;path;mode;uid;gid;uname;gname;header;mtime;atime;ctime;linkpath;size;onWriteEntry;warn(e,t,i={}){return(0,Sn.warnMethod)(this,e,t,i)}constructor(e,t={}){let i=(0,yn.dealias)(t);super(),this.preservePaths=!!i.preservePaths,this.portable=!!i.portable,this.strict=!!i.strict,this.noPax=!!i.noPax,this.noMtime=!!i.noMtime,this.onWriteEntry=i.onWriteEntry,this.readEntry=e;let{type:r}=e;if(r==="Unsupported")throw new Error("writing entry that should be ignored");this.type=r,this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.prefix=i.prefix,this.path=(0,oe.normalizeWindowsPath)(e.path),this.mode=e.mode!==void 0?this[vi](e.mode):void 0,this.uid=this.portable?void 0:e.uid,this.gid=this.portable?void 0:e.gid,this.uname=this.portable?void 0:e.uname,this.gname=this.portable?void 0:e.gname,this.size=e.size,this.mtime=this.noMtime?void 0:i.mtime||e.mtime,this.atime=this.portable?void 0:e.atime,this.ctime=this.portable?void 0:e.ctime,this.linkpath=e.linkpath!==void 0?(0,oe.normalizeWindowsPath)(e.linkpath):void 0,typeof i.onwarn=="function"&&this.on("warn",i.onwarn);let n=!1;if(!this.preservePaths){let[a,h]=(0,bn.stripAbsolutePath)(this.path);a&&typeof h=="string"&&(this.path=h,n=a)}this.remain=e.size,this.blockRemain=e.startBlockSize,this.onWriteEntry?.(this),this.header=new _n.Header({path:this[he](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[he](this.linkpath):this.linkpath,mode:this.mode,uid:this.portable?void 0:this.uid,gid:this.portable?void 0:this.gid,size:this.size,mtime:this.noMtime?void 0:this.mtime,type:this.type,uname:this.portable?void 0:this.uname,atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime}),n&&this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute path`,{entry:this,path:n+this.path}),this.header.encode()&&!this.noPax&&super.write(new En.Pax({atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime,gid:this.portable?void 0:this.gid,mtime:this.noMtime?void 0:this.mtime,path:this[he](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[he](this.linkpath):this.linkpath,size:this.size,uid:this.portable?void 0:this.uid,uname:this.portable?void 0:this.uname,dev:this.portable?void 0:this.readEntry.dev,ino:this.portable?void 0:this.readEntry.ino,nlink:this.portable?void 0:this.readEntry.nlink}).encode());let o=this.header?.block;if(!o)throw new Error("failed to encode header");super.write(o),e.pipe(this)}[he](e){return gn(e,this.prefix)}[vi](e){return(0,wn.modeFix)(e,this.type==="Directory",this.portable)}write(e,t,i){typeof t=="function"&&(i=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,typeof t=="string"?t:"utf8"));let r=e.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=r,super.write(e,i)}end(e,t,i){return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),typeof e=="function"&&(i=e,t=void 0,e=void 0),typeof t=="function"&&(i=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,t??"utf8")),i&&this.once("finish",i),e?super.end(e,i):super.end(i),this}};M.WriteEntryTar=rr;var _h=s=>s.isFile()?"File":s.isDirectory()?"Directory":s.isSymbolicLink()?"SymbolicLink":"Unsupported"});var Rn=d(at=>{"use strict";Object.defineProperty(at,"__esModule",{value:!0});at.Node=at.Yallist=void 0;var or=class s{tail;head;length=0;static create(e=[]){return new s(e)}constructor(e=[]){for(let t of e)this.push(t)}*[Symbol.iterator](){for(let e=this.head;e;e=e.next)yield e.value}removeNode(e){if(e.list!==this)throw new Error("removing node which does not belong to this list");let t=e.next,i=e.prev;return t&&(t.prev=i),i&&(i.next=t),e===this.head&&(this.head=t),e===this.tail&&(this.tail=i),this.length--,e.next=void 0,e.prev=void 0,e.list=void 0,t}unshiftNode(e){if(e===this.head)return;e.list&&e.list.removeNode(e);let t=this.head;e.list=this,e.next=t,t&&(t.prev=e),this.head=e,this.tail||(this.tail=e),this.length++}pushNode(e){if(e===this.tail)return;e.list&&e.list.removeNode(e);let t=this.tail;e.list=this,e.prev=t,t&&(t.next=e),this.tail=e,this.head||(this.head=e),this.length++}push(...e){for(let t=0,i=e.length;t1)i=t;else if(this.head)r=this.head.next,i=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;r;n++)i=e(i,r.value,n),r=r.next;return i}reduceReverse(e,t){let i,r=this.tail;if(arguments.length>1)i=t;else if(this.tail)r=this.tail.prev,i=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(let n=this.length-1;r;n--)i=e(i,r.value,n),r=r.prev;return i}toArray(){let e=new Array(this.length);for(let t=0,i=this.head;i;t++)e[t]=i.value,i=i.next;return e}toArrayReverse(){let e=new Array(this.length);for(let t=0,i=this.tail;i;t++)e[t]=i.value,i=i.prev;return e}slice(e=0,t=this.length){t<0&&(t+=this.length),e<0&&(e+=this.length);let i=new s;if(tthis.length&&(t=this.length);let r=this.head,n=0;for(n=0;r&&nthis.length&&(t=this.length);let r=this.length,n=this.tail;for(;n&&r>t;r--)n=n.prev;for(;n&&r>e;r--,n=n.prev)i.push(n.value);return i}splice(e,t=0,...i){e>this.length&&(e=this.length-1),e<0&&(e=this.length+e);let r=this.head;for(let o=0;r&&o{"use strict";var bh=L&&L.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),Sh=L&&L.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),gh=L&&L.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r1)throw new TypeError("gzip, brotli, zstd are mutually exclusive");if(e.gzip&&(typeof e.gzip!="object"&&(e.gzip={}),this.portable&&(e.gzip.portable=!0),this.zip=new ar.Gzip(e.gzip)),e.brotli&&(typeof e.brotli!="object"&&(e.brotli={}),this.zip=new ar.BrotliCompress(e.brotli)),e.zstd&&(typeof e.zstd!="object"&&(e.zstd={}),this.zip=new ar.ZstdCompress(e.zstd)),!this.zip)throw new Error("impossible");let t=this.zip;t.on("data",i=>super.write(i)),t.on("end",()=>super.end()),t.on("drain",()=>this[cr]()),this.on("resume",()=>t.resume())}else this.on("drain",this[cr]);this.noDirRecurse=!!e.noDirRecurse,this.follow=!!e.follow,this.noMtime=!!e.noMtime,e.mtime&&(this.mtime=e.mtime),this.filter=typeof e.filter=="function"?e.filter:()=>!0,this[X]=new Oh.Yallist,this[Q]=0,this.jobs=Number(e.jobs)||4,this[Pt]=!1,this[Tt]=!1}[Nn](e){return super.write(e)}add(e){return this.write(e),this}end(e,t,i){return typeof e=="function"&&(i=e,e=void 0),typeof t=="function"&&(i=t,t=void 0),e&&this.add(e),this[Tt]=!0,this[je](),i&&i(),this}write(e){if(this[Tt])throw new Error("write after end");return typeof e=="string"?this[Ni](e):this[vn](e),this.flowing}[vn](e){let t=(0,ur.normalizeWindowsPath)(Dn.default.resolve(this.cwd,e.path));if(!this.filter(e.path,e))e.resume();else{let i=new Nt(e.path,t);i.entry=new fr.WriteEntryTar(e,this[lr](i)),i.entry.on("end",()=>this[hr](i)),this[Q]+=1,this[X].push(i)}this[je]()}[Ni](e){let t=(0,ur.normalizeWindowsPath)(Dn.default.resolve(this.cwd,e));this[X].push(new Nt(e,t)),this[je]()}[dr](e){e.pending=!0,this[Q]+=1;let t=this.follow?"stat":"lstat";Ii.default[t](e.absolute,(i,r)=>{e.pending=!1,this[Q]-=1,i?this.emit("error",i):this[Pi](e,r)})}[Pi](e,t){if(this.statCache.set(e.absolute,t),e.stat=t,!this.filter(e.path,t))e.ignore=!0;else if(t.isFile()&&t.nlink>1&&!this.linkCache.get(`${t.dev}:${t.ino}`)&&!this.sync)if(e===this[Te])this[Di](e);else{let i=`${t.dev}:${t.ino}`,r=this[Dt].get(i);r?r.push(e):this[Dt].set(i,[e]),e.pendingLink=!0,e.pending=!0}this[je]()}[mr](e){e.pending=!0,this[Q]+=1,Ii.default.readdir(e.absolute,(t,i)=>{if(e.pending=!1,this[Q]-=1,t)return this.emit("error",t);this[Mi](e,i)})}[Mi](e,t){this.readdirCache.set(e.absolute,t),e.readdir=t,this[je]()}[je](){if(!this[Pt]){this[Pt]=!0;for(let e=this[X].head;e&&this[Q]1){let i=`${t.dev}:${t.ino}`,r=this[Dt].get(i);if(r){this[Dt].delete(i);for(let n of r)n.pending=!1,this[Di](n)}}this[je]()}[Di](e){if(e.pending&&e.pendingLink&&e===this[Te]&&(e.pending=!1,e.pendingLink=!1),!e.pending){if(e.entry){e===this[Te]&&!e.piped&&this[Li](e);return}if(!e.stat){let t=this.statCache.get(e.absolute);t?this[Pi](e,t):this[dr](e)}if(e.stat&&!e.ignore){if(!this.noDirRecurse&&e.stat.isDirectory()&&!e.readdir){let t=this.readdirCache.get(e.absolute);if(t?this[Mi](e,t):this[mr](e),!e.readdir)return}if(e.entry=this[Tn](e),!e.entry){e.ignore=!0;return}e===this[Te]&&!e.piped&&this[Li](e)}}}[lr](e){return{onwarn:(t,i,r)=>this.warn(t,i,r),noPax:this.noPax,cwd:this.cwd,absolute:e.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime,prefix:this.prefix,onWriteEntry:this.onWriteEntry}}[Tn](e){this[Q]+=1;try{return new this[Ai](e.path,this[lr](e)).on("end",()=>this[hr](e)).on("error",i=>this.emit("error",i))}catch(t){this.emit("error",t)}}[cr](){this[Te]&&this[Te].entry&&this[Te].entry.resume()}[Li](e){e.piped=!0,e.readdir&&e.readdir.forEach(r=>{let n=e.path,o=n==="./"?"":n.replace(/\/*$/,"/");this[Ni](o+r)});let t=e.entry,i=this.zip;if(!t)throw new Error("cannot pipe without source");i?t.on("data",r=>{i.write(r)||t.pause()}):t.on("data",r=>{super.write(r)||t.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}warn(e,t,i={}){(0,vh.warnMethod)(this,e,t,i)}};L.Pack=Fi;var pr=class extends Fi{sync=!0;constructor(e){super(e),this[Ai]=fr.WriteEntrySync}pause(){}resume(){}[dr](e){let t=this.follow?"statSync":"lstatSync";this[Pi](e,Ii.default[t](e.absolute))}[mr](e){this[Mi](e,Ii.default.readdirSync(e.absolute))}[Li](e){let t=e.entry,i=this.zip;if(e.readdir&&e.readdir.forEach(r=>{let n=e.path,o=n==="./"?"":n.replace(/\/*$/,"/");this[Ni](o+r)}),!t)throw new Error("Cannot pipe without source");i?t.on("data",r=>{i.write(r)}):t.on("data",r=>{super[Nn](r)})}};L.PackSync=pr});var _r=d(ht=>{"use strict";var Th=ht&&ht.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(ht,"__esModule",{value:!0});ht.create=void 0;var Mn=Ke(),Ln=Th(require("node:path")),An=rt(),Dh=Ve(),Bi=Ci(),Ph=(s,e)=>{let t=new Bi.PackSync(s),i=new Mn.WriteStreamSync(s.file,{mode:s.mode||438});t.pipe(i),In(t,e)},Nh=(s,e)=>{let t=new Bi.Pack(s),i=new Mn.WriteStream(s.file,{mode:s.mode||438});t.pipe(i);let r=new Promise((n,o)=>{i.on("error",o),i.on("close",n),t.on("error",o)});return Fn(t,e).catch(n=>t.emit("error",n)),r},In=(s,e)=>{e.forEach(t=>{t.charAt(0)==="@"?(0,An.list)({file:Ln.default.resolve(s.cwd,t.slice(1)),sync:!0,noResume:!0,onReadEntry:i=>s.add(i)}):s.add(t)}),s.end()},Fn=async(s,e)=>{for(let t of e)t.charAt(0)==="@"?await(0,An.list)({file:Ln.default.resolve(String(s.cwd),t.slice(1)),noResume:!0,onReadEntry:i=>{s.add(i)}}):s.add(t);s.end()},Mh=(s,e)=>{let t=new Bi.PackSync(s);return In(t,e),t},Lh=(s,e)=>{let t=new Bi.Pack(s);return Fn(t,e).catch(i=>t.emit("error",i)),t};ht.create=(0,Dh.makeCommand)(Ph,Nh,Mh,Lh,(s,e)=>{if(!e?.length)throw new TypeError("no paths specified to add to archive")})});var Wn=d(lt=>{"use strict";var Ah=lt&<.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(lt,"__esModule",{value:!0});lt.getWriteFlag=void 0;var zn=Ah(require("fs")),Ih=process.env.__FAKE_PLATFORM__||process.platform,kn=Ih==="win32",{O_CREAT:xn,O_NOFOLLOW:Cn,O_TRUNC:jn,O_WRONLY:Un}=zn.default.constants,qn=Number(process.env.__FAKE_FS_O_FILENAME__)||zn.default.constants.UV_FS_O_FILEMAP||0,Fh=kn&&!!qn,Ch=512*1024,Bh=qn|jn|xn|Un,Bn=!kn&&typeof Cn=="number"?Cn|jn|xn|Un:null;lt.getWriteFlag=Bn!==null?()=>Bn:Fh?s=>s"w"});var Gn=d(le=>{"use strict";var Hn=le&&le.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(le,"__esModule",{value:!0});le.chownrSync=le.chownr=void 0;var ki=Hn(require("node:fs")),Mt=Hn(require("node:path")),wr=(s,e,t)=>{try{return ki.default.lchownSync(s,e,t)}catch(i){if(i?.code!=="ENOENT")throw i}},zi=(s,e,t,i)=>{ki.default.lchown(s,e,t,r=>{i(r&&r?.code!=="ENOENT"?r:null)})},zh=(s,e,t,i,r)=>{if(e.isDirectory())(0,le.chownr)(Mt.default.resolve(s,e.name),t,i,n=>{if(n)return r(n);let o=Mt.default.resolve(s,e.name);zi(o,t,i,r)});else{let n=Mt.default.resolve(s,e.name);zi(n,t,i,r)}},kh=(s,e,t,i)=>{ki.default.readdir(s,{withFileTypes:!0},(r,n)=>{if(r){if(r.code==="ENOENT")return i();if(r.code!=="ENOTDIR"&&r.code!=="ENOTSUP")return i(r)}if(r||!n.length)return zi(s,e,t,i);let o=n.length,a=null,h=l=>{if(!a){if(l)return i(a=l);if(--o===0)return zi(s,e,t,i)}};for(let l of n)zh(s,l,e,t,h)})};le.chownr=kh;var xh=(s,e,t,i)=>{e.isDirectory()&&(0,le.chownrSync)(Mt.default.resolve(s,e.name),t,i),wr(Mt.default.resolve(s,e.name),t,i)},jh=(s,e,t)=>{let i;try{i=ki.default.readdirSync(s,{withFileTypes:!0})}catch(r){let n=r;if(n?.code==="ENOENT")return;if(n?.code==="ENOTDIR"||n?.code==="ENOTSUP")return wr(s,e,t);throw n}for(let r of i)xh(s,r,e,t);return wr(s,e,t)};le.chownrSync=jh});var Zn=d(xi=>{"use strict";Object.defineProperty(xi,"__esModule",{value:!0});xi.CwdError=void 0;var yr=class extends Error{path;code;syscall="chdir";constructor(e,t){super(`${t}: Cannot cd into '${e}'`),this.path=e,this.code=t}get name(){return"CwdError"}};xi.CwdError=yr});var br=d(ji=>{"use strict";Object.defineProperty(ji,"__esModule",{value:!0});ji.SymlinkError=void 0;var Er=class extends Error{path;symlink;syscall="symlink";code="TAR_SYMLINK_ERROR";constructor(e,t){super("TAR_SYMLINK_ERROR: Cannot extract through symbolic link"),this.symlink=e,this.path=t}get name(){return"SymlinkError"}};ji.SymlinkError=Er});var Xn=d(De=>{"use strict";var gr=De&&De.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(De,"__esModule",{value:!0});De.mkdirSync=De.mkdir=void 0;var Yn=Gn(),j=gr(require("node:fs")),Uh=gr(require("node:fs/promises")),Ui=gr(require("node:path")),Kn=Zn(),_e=tt(),Vn=br(),qh=(s,e)=>{j.default.stat(s,(t,i)=>{(t||!i.isDirectory())&&(t=new Kn.CwdError(s,t?.code||"ENOTDIR")),e(t)})},Wh=(s,e,t)=>{s=(0,_e.normalizeWindowsPath)(s);let i=e.umask??18,r=e.mode|448,n=(r&i)!==0,o=e.uid,a=e.gid,h=typeof o=="number"&&typeof a=="number"&&(o!==e.processUid||a!==e.processGid),l=e.preserve,c=e.unlink,u=(0,_e.normalizeWindowsPath)(e.cwd),b=(w,P)=>{w?t(w):P&&h?(0,Yn.chownr)(P,o,a,xt=>b(xt)):n?j.default.chmod(s,r,t):t()};if(s===u)return qh(s,b);if(l)return Uh.default.mkdir(s,{mode:r,recursive:!0}).then(w=>b(null,w??void 0),b);let A=(0,_e.normalizeWindowsPath)(Ui.default.relative(u,s)).split("/");Sr(u,A,r,c,u,void 0,b)};De.mkdir=Wh;var Sr=(s,e,t,i,r,n,o)=>{if(e.length===0)return o(null,n);let a=e.shift(),h=(0,_e.normalizeWindowsPath)(Ui.default.resolve(s+"/"+a));j.default.mkdir(h,t,$n(h,e,t,i,r,n,o))},$n=(s,e,t,i,r,n,o)=>a=>{a?j.default.lstat(s,(h,l)=>{if(h)h.path=h.path&&(0,_e.normalizeWindowsPath)(h.path),o(h);else if(l.isDirectory())Sr(s,e,t,i,r,n,o);else if(i)j.default.unlink(s,c=>{if(c)return o(c);j.default.mkdir(s,t,$n(s,e,t,i,r,n,o))});else{if(l.isSymbolicLink())return o(new Vn.SymlinkError(s,s+"/"+e.join("/")));o(a)}}):(n=n||s,Sr(s,e,t,i,r,n,o))},Hh=s=>{let e=!1,t;try{e=j.default.statSync(s).isDirectory()}catch(i){t=i?.code}finally{if(!e)throw new Kn.CwdError(s,t??"ENOTDIR")}},Gh=(s,e)=>{s=(0,_e.normalizeWindowsPath)(s);let t=e.umask??18,i=e.mode|448,r=(i&t)!==0,n=e.uid,o=e.gid,a=typeof n=="number"&&typeof o=="number"&&(n!==e.processUid||o!==e.processGid),h=e.preserve,l=e.unlink,c=(0,_e.normalizeWindowsPath)(e.cwd),u=w=>{w&&a&&(0,Yn.chownrSync)(w,n,o),r&&j.default.chmodSync(s,i)};if(s===c)return Hh(c),u();if(h)return u(j.default.mkdirSync(s,{mode:i,recursive:!0})??void 0);let D=(0,_e.normalizeWindowsPath)(Ui.default.relative(c,s)).split("/"),A;for(let w=D.shift(),P=c;w&&(P+="/"+w);w=D.shift()){P=(0,_e.normalizeWindowsPath)(Ui.default.resolve(P));try{j.default.mkdirSync(P,i),A=A||P}catch{let xt=j.default.lstatSync(P);if(xt.isDirectory())continue;if(l){j.default.unlinkSync(P),j.default.mkdirSync(P,i),A=A||P;continue}else if(xt.isSymbolicLink())return new Vn.SymlinkError(P,P+"/"+D.join("/"))}}return u(A)};De.mkdirSync=Gh});var Jn=d(qi=>{"use strict";Object.defineProperty(qi,"__esModule",{value:!0});qi.normalizeUnicode=void 0;var Rr=Object.create(null),Qn=1e4,ct=new Set,Zh=s=>{ct.has(s)?ct.delete(s):Rr[s]=s.normalize("NFD").toLocaleLowerCase("en").toLocaleUpperCase("en"),ct.add(s);let e=Rr[s],t=ct.size-Qn;if(t>Qn/10){for(let i of ct)if(ct.delete(i),delete Rr[i],--t<=0)break}return e};qi.normalizeUnicode=Zh});var to=d(Wi=>{"use strict";Object.defineProperty(Wi,"__esModule",{value:!0});Wi.PathReservations=void 0;var eo=require("node:path"),Yh=Jn(),Kh=yi(),Vh=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,$h=Vh==="win32",Xh=s=>s.split("/").slice(0,-1).reduce((t,i)=>{let r=t.at(-1);return r!==void 0&&(i=(0,eo.join)(r,i)),t.push(i||"/"),t},[]),Or=class{#e=new Map;#i=new Map;#s=new Set;reserve(e,t){e=$h?["win32 parallelization disabled"]:e.map(r=>(0,Kh.stripTrailingSlashes)((0,eo.join)((0,Yh.normalizeUnicode)(r))));let i=new Set(e.map(r=>Xh(r)).reduce((r,n)=>r.concat(n)));this.#i.set(t,{dirs:i,paths:e});for(let r of e){let n=this.#e.get(r);n?n.push(t):this.#e.set(r,[t])}for(let r of i){let n=this.#e.get(r);if(!n)this.#e.set(r,[new Set([t])]);else{let o=n.at(-1);o instanceof Set?o.add(t):n.push(new Set([t]))}}return this.#r(t)}#n(e){let t=this.#i.get(e);if(!t)throw new Error("function does not have any path reservations");return{paths:t.paths.map(i=>this.#e.get(i)),dirs:[...t.dirs].map(i=>this.#e.get(i))}}check(e){let{paths:t,dirs:i}=this.#n(e);return t.every(r=>r&&r[0]===e)&&i.every(r=>r&&r[0]instanceof Set&&r[0].has(e))}#r(e){return this.#s.has(e)||!this.check(e)?!1:(this.#s.add(e),e(()=>this.#t(e)),!0)}#t(e){if(!this.#s.has(e))return!1;let t=this.#i.get(e);if(!t)throw new Error("invalid reservation");let{paths:i,dirs:r}=t,n=new Set;for(let o of i){let a=this.#e.get(o);if(!a||a?.[0]!==e)continue;let h=a[1];if(!h){this.#e.delete(o);continue}if(a.shift(),typeof h=="function")n.add(h);else for(let l of h)n.add(l)}for(let o of r){let a=this.#e.get(o),h=a?.[0];if(!(!a||!(h instanceof Set)))if(h.size===1&&a.length===1){this.#e.delete(o);continue}else if(h.size===1){a.shift();let l=a[0];typeof l=="function"&&n.add(l)}else h.delete(e)}return this.#s.delete(e),n.forEach(o=>this.#r(o)),!0}};Wi.PathReservations=Or});var io=d(Hi=>{"use strict";Object.defineProperty(Hi,"__esModule",{value:!0});Hi.umask=void 0;var Qh=()=>process.umask();Hi.umask=Qh});var Cr=d(k=>{"use strict";var Jh=k&&k.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),el=k&&k.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),fo=k&&k.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r{if(!zt)return m.default.unlink(s,e);let t=s+".DELETE."+(0,mo.randomBytes)(16).toString("hex");m.default.rename(s,t,i=>{if(i)return e(i);m.default.unlink(t,e)})},cl=s=>{if(!zt)return m.default.unlinkSync(s);let e=s+".DELETE."+(0,mo.randomBytes)(16).toString("hex");m.default.renameSync(s,e),m.default.unlinkSync(e)},uo=(s,e,t)=>s!==void 0&&s===s>>>0?s:e!==void 0&&e===e>>>0?e:t,Yi=class extends sl.Parser{[Tr]=!1;[Bt]=!1;[Gi]=0;reservations=new nl.PathReservations;transform;writable=!0;readable=!1;uid;gid;setOwner;preserveOwner;processGid;processUid;maxDepth;forceChown;win32;newer;keep;noMtime;preservePaths;unlink;cwd;strip;processUmask;umask;dmode;fmode;chmod;constructor(e={}){if(e.ondone=()=>{this[Tr]=!0,this[Dr]()},super(e),this.transform=e.transform,this.chmod=!!e.chmod,typeof e.uid=="number"||typeof e.gid=="number"){if(typeof e.uid!="number"||typeof e.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(e.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=e.uid,this.gid=e.gid,this.setOwner=!0}else this.uid=void 0,this.gid=void 0,this.setOwner=!1;this.preserveOwner=e.preserveOwner===void 0&&typeof e.uid!="number"?process.getuid?.()===0:!!e.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():void 0,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():void 0,this.maxDepth=typeof e.maxDepth=="number"?e.maxDepth:hl,this.forceChown=e.forceChown===!0,this.win32=!!e.win32||zt,this.newer=!!e.newer,this.keep=!!e.keep,this.noMtime=!!e.noMtime,this.preservePaths=!!e.preservePaths,this.unlink=!!e.unlink,this.cwd=(0,U.normalizeWindowsPath)(g.default.resolve(e.cwd||process.cwd())),this.strip=Number(e.strip)||0,this.processUmask=this.chmod?typeof e.processUmask=="number"?e.processUmask:(0,ol.umask)():0,this.umask=typeof e.umask=="number"?e.umask:this.processUmask,this.dmode=e.dmode||511&~this.umask,this.fmode=e.fmode||438&~this.umask,this.on("entry",t=>this[ro](t))}warn(e,t,i={}){return(e==="TAR_BAD_ARCHIVE"||e==="TAR_ABORT")&&(i.recoverable=!1),super.warn(e,t,i)}[Dr](){this[Tr]&&this[Gi]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"))}[vr](e,t){let i=e[t],{type:r}=e;if(!i||this.preservePaths)return!0;let[n,o]=(0,rl.stripAbsolutePath)(i),a=o.replaceAll(/\\/g,"/").split("/");if(a.includes("..")||zt&&/^[a-z]:\.\.$/i.test(a[0]??"")){if(t==="path"||r==="Link")return this.warn("TAR_ENTRY_ERROR",`${t} contains '..'`,{entry:e,[t]:i}),!1;let h=g.default.posix.dirname(e.path),l=g.default.posix.normalize(g.default.posix.join(h,a.join("/")));if(l.startsWith("../")||l==="..")return this.warn("TAR_ENTRY_ERROR",`${t} escapes extraction directory`,{entry:e,[t]:i}),!1}return n&&(e[t]=String(o),this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute ${t}`,{entry:e,[t]:i})),!0}[lo](e){let t=(0,U.normalizeWindowsPath)(e.path),i=t.split("/");if(this.strip){if(i.length=this.strip)e.linkpath=r.slice(this.strip).join("/");else return!1}i.splice(0,this.strip),e.path=i.join("/")}if(isFinite(this.maxDepth)&&i.length>this.maxDepth)return this.warn("TAR_ENTRY_ERROR","path excessively deep",{entry:e,path:t,depth:i.length,maxDepth:this.maxDepth}),!1;if(!this[vr](e,"path")||!this[vr](e,"linkpath"))return!1;if(e.absolute=g.default.isAbsolute(e.path)?(0,U.normalizeWindowsPath)(g.default.resolve(e.path)):(0,U.normalizeWindowsPath)(g.default.resolve(this.cwd,e.path)),!this.preservePaths&&typeof e.absolute=="string"&&e.absolute.indexOf(this.cwd+"/")!==0&&e.absolute!==this.cwd)return this.warn("TAR_ENTRY_ERROR","path escaped extraction target",{entry:e,path:(0,U.normalizeWindowsPath)(e.path),resolvedPath:e.absolute,cwd:this.cwd}),!1;if(e.absolute===this.cwd&&e.type!=="Directory"&&e.type!=="GNUDumpDir")return!1;if(this.win32){let{root:r}=g.default.win32.parse(String(e.absolute));e.absolute=r+so.encode(String(e.absolute).slice(r.length));let{root:n}=g.default.win32.parse(e.path);e.path=n+so.encode(e.path.slice(n.length))}return!0}[ro](e){if(!this[lo](e))return e.resume();switch(il.default.equal(typeof e.absolute,"string"),e.type){case"Directory":case"GNUDumpDir":e.mode&&(e.mode=e.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[Pr](e);default:return this[ho](e)}}[T](e,t){e.name==="CwdError"?this.emit("error",e):(this.warn("TAR_ENTRY_ERROR",e,{entry:t}),this[ut](),t.resume())}[Pe](e,t,i){(0,_o.mkdir)((0,U.normalizeWindowsPath)(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:t},i)}[It](e){return this.forceChown||this.preserveOwner&&(typeof e.uid=="number"&&e.uid!==this.processUid||typeof e.gid=="number"&&e.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[Ft](e){return uo(this.uid,e.uid,this.processUid)}[Ct](e){return uo(this.gid,e.gid,this.processGid)}[Mr](e,t){let i=typeof e.mode=="number"?e.mode&4095:this.fmode,r=new tl.WriteStream(String(e.absolute),{flags:(0,po.getWriteFlag)(e.size),mode:i,autoClose:!1});r.on("error",h=>{r.fd&&m.default.close(r.fd,()=>{}),r.write=()=>!0,this[T](h,e),t()});let n=1,o=h=>{if(h){r.fd&&m.default.close(r.fd,()=>{}),this[T](h,e),t();return}--n===0&&r.fd!==void 0&&m.default.close(r.fd,l=>{l?this[T](l,e):this[ut](),t()})};r.on("finish",()=>{let h=String(e.absolute),l=r.fd;if(typeof l=="number"&&e.mtime&&!this.noMtime){n++;let c=e.atime||new Date,u=e.mtime;m.default.futimes(l,c,u,b=>b?m.default.utimes(h,c,u,D=>o(D&&b)):o())}if(typeof l=="number"&&this[It](e)){n++;let c=this[Ft](e),u=this[Ct](e);typeof c=="number"&&typeof u=="number"&&m.default.fchown(l,c,u,b=>b?m.default.chown(h,c,u,D=>o(D&&b)):o())}o()});let a=this.transform&&this.transform(e)||e;a!==e&&(a.on("error",h=>{this[T](h,e),t()}),e.pipe(a)),a.pipe(r)}[Lr](e,t){let i=typeof e.mode=="number"?e.mode&4095:this.dmode;this[Pe](String(e.absolute),i,r=>{if(r){this[T](r,e),t();return}let n=1,o=()=>{--n===0&&(t(),this[ut](),e.resume())};e.mtime&&!this.noMtime&&(n++,m.default.utimes(String(e.absolute),e.atime||new Date,e.mtime,o)),this[It](e)&&(n++,m.default.chown(String(e.absolute),Number(this[Ft](e)),Number(this[Ct](e)),o)),o()})}[ho](e){e.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${e.type}`,{entry:e}),e.resume()}[oo](e,t){let i=(0,U.normalizeWindowsPath)(g.default.relative(this.cwd,g.default.resolve(g.default.dirname(String(e.absolute)),String(e.linkpath)))).split("/");this[At](e,this.cwd,i,()=>this[Zi](e,String(e.linkpath),"symlink",t),r=>{this[T](r,e),t()})}[ao](e,t){let i=(0,U.normalizeWindowsPath)(g.default.resolve(this.cwd,String(e.linkpath))),r=(0,U.normalizeWindowsPath)(String(e.linkpath)).split("/");this[At](e,this.cwd,r,()=>this[Zi](e,i,"link",t),n=>{this[T](n,e),t()})}[At](e,t,i,r,n){let o=i.shift();if(this.preservePaths||o===void 0)return r();let a=g.default.resolve(t,o);m.default.lstat(a,(h,l)=>{if(h)return r();if(l?.isSymbolicLink())return n(new wo.SymlinkError(a,g.default.resolve(a,i.join("/"))));this[At](e,a,i,r,n)})}[co](){this[Gi]++}[ut](){this[Gi]--,this[Dr]()}[Ar](e){this[ut](),e.resume()}[Nr](e,t){return e.type==="File"&&!this.unlink&&t.isFile()&&t.nlink<=1&&!zt}[Pr](e){this[co]();let t=[e.path];e.linkpath&&t.push(e.linkpath),this.reservations.reserve(t,i=>this[no](e,i))}[no](e,t){let i=a=>{t(a)},r=()=>{this[Pe](this.cwd,this.dmode,a=>{if(a){this[T](a,e),i();return}this[Bt]=!0,n()})},n=()=>{if(e.absolute!==this.cwd){let a=(0,U.normalizeWindowsPath)(g.default.dirname(String(e.absolute)));if(a!==this.cwd)return this[Pe](a,this.dmode,h=>{if(h){this[T](h,e),i();return}o()})}o()},o=()=>{m.default.lstat(String(e.absolute),(a,h)=>{if(h&&(this.keep||this.newer&&h.mtime>(e.mtime??h.mtime))){this[Ar](e),i();return}if(a||this[Nr](e,h))return this[G](null,e,i);if(h.isDirectory()){if(e.type==="Directory"){let l=this.chmod&&e.mode&&(h.mode&4095)!==e.mode,c=u=>this[G](u??null,e,i);return l?m.default.chmod(String(e.absolute),Number(e.mode),c):c()}if(e.absolute!==this.cwd)return m.default.rmdir(String(e.absolute),l=>this[G](l??null,e,i))}if(e.absolute===this.cwd)return this[G](null,e,i);ll(String(e.absolute),l=>this[G](l??null,e,i))})};this[Bt]?n():r()}[G](e,t,i){if(e){this[T](e,t),i();return}switch(t.type){case"File":case"OldFile":case"ContiguousFile":return this[Mr](t,i);case"Link":return this[ao](t,i);case"SymbolicLink":return this[oo](t,i);case"Directory":case"GNUDumpDir":return this[Lr](t,i)}}[Zi](e,t,i,r){m.default[i](t,String(e.absolute),n=>{n?this[T](n,e):(this[ut](),e.resume()),r()})}};k.Unpack=Yi;var Lt=s=>{try{return[null,s()]}catch(e){return[e,null]}},Ir=class extends Yi{sync=!0;[G](e,t){return super[G](e,t,()=>{})}[Pr](e){if(!this[Bt]){let n=this[Pe](this.cwd,this.dmode);if(n)return this[T](n,e);this[Bt]=!0}if(e.absolute!==this.cwd){let n=(0,U.normalizeWindowsPath)(g.default.dirname(String(e.absolute)));if(n!==this.cwd){let o=this[Pe](n,this.dmode);if(o)return this[T](o,e)}}let[t,i]=Lt(()=>m.default.lstatSync(String(e.absolute)));if(i&&(this.keep||this.newer&&i.mtime>(e.mtime??i.mtime)))return this[Ar](e);if(t||this[Nr](e,i))return this[G](null,e);if(i.isDirectory()){if(e.type==="Directory"){let o=this.chmod&&e.mode&&(i.mode&4095)!==e.mode,[a]=o?Lt(()=>{m.default.chmodSync(String(e.absolute),Number(e.mode))}):[];return this[G](a,e)}let[n]=Lt(()=>m.default.rmdirSync(String(e.absolute)));this[G](n,e)}let[r]=e.absolute===this.cwd?[]:Lt(()=>cl(String(e.absolute)));this[G](r,e)}[Mr](e,t){let i=typeof e.mode=="number"?e.mode&4095:this.fmode,r=a=>{let h;try{m.default.closeSync(n)}catch(l){h=l}(a||h)&&this[T](a||h,e),t()},n;try{n=m.default.openSync(String(e.absolute),(0,po.getWriteFlag)(e.size),i)}catch(a){return r(a)}let o=this.transform&&this.transform(e)||e;o!==e&&(o.on("error",a=>this[T](a,e)),e.pipe(o)),o.on("data",a=>{try{m.default.writeSync(n,a,0,a.length)}catch(h){r(h)}}),o.on("end",()=>{let a=null;if(e.mtime&&!this.noMtime){let h=e.atime||new Date,l=e.mtime;try{m.default.futimesSync(n,h,l)}catch(c){try{m.default.utimesSync(String(e.absolute),h,l)}catch{a=c}}}if(this[It](e)){let h=this[Ft](e),l=this[Ct](e);try{m.default.fchownSync(n,Number(h),Number(l))}catch(c){try{m.default.chownSync(String(e.absolute),Number(h),Number(l))}catch{a=a||c}}}r(a)})}[Lr](e,t){let i=typeof e.mode=="number"?e.mode&4095:this.dmode,r=this[Pe](String(e.absolute),i);if(r){this[T](r,e),t();return}if(e.mtime&&!this.noMtime)try{m.default.utimesSync(String(e.absolute),e.atime||new Date,e.mtime)}catch{}if(this[It](e))try{m.default.chownSync(String(e.absolute),Number(this[Ft](e)),Number(this[Ct](e)))}catch{}t(),e.resume()}[Pe](e,t){try{return(0,_o.mkdirSync)((0,U.normalizeWindowsPath)(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:t})}catch(i){return i}}[At](e,t,i,r,n){if(this.preservePaths||i.length===0)return r();let o=t;for(let a of i){o=g.default.resolve(o,a);let[h,l]=Lt(()=>m.default.lstatSync(o));if(h)return r();if(l.isSymbolicLink())return n(new wo.SymlinkError(o,g.default.resolve(t,i.join("/"))))}r()}[Zi](e,t,i,r){let n=`${i}Sync`;try{m.default[n](t,String(e.absolute)),r(),e.resume()}catch(o){return this[T](o,e)}}};k.UnpackSync=Ir});var Br=d(Z=>{"use strict";var ul=Z&&Z.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),fl=Z&&Z.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),dl=Z&&Z.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r{let e=new Ki.UnpackSync(s),t=s.file,i=Eo.default.statSync(t),r=s.maxReadSize||16*1024*1024;new yo.ReadStreamSync(t,{readSize:r,size:i.size}).pipe(e)},yl=(s,e)=>{let t=new Ki.Unpack(s),i=s.maxReadSize||16*1024*1024,r=s.file;return new Promise((o,a)=>{t.on("error",a),t.on("close",o),Eo.default.stat(r,(h,l)=>{if(h)a(h);else{let c=new yo.ReadStream(r,{readSize:i,size:l.size});c.on("error",a),c.pipe(t)}})})};Z.extract=(0,_l.makeCommand)(wl,yl,s=>new Ki.UnpackSync(s),s=>new Ki.Unpack(s),(s,e)=>{e?.length&&(0,pl.filesFilter)(s,e)})});var Vi=d(ft=>{"use strict";var bo=ft&&ft.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(ft,"__esModule",{value:!0});ft.replace=void 0;var So=Ke(),q=bo(require("node:fs")),go=bo(require("node:path")),Ro=et(),Oo=rt(),El=Ve(),bl=Qt(),vo=Ci(),Sl=(s,e)=>{let t=new vo.PackSync(s),i=!0,r,n;try{try{r=q.default.openSync(s.file,"r+")}catch(h){if(h?.code==="ENOENT")r=q.default.openSync(s.file,"w+");else throw h}let o=q.default.fstatSync(r),a=Buffer.alloc(512);e:for(n=0;no.size)break;n+=l,s.mtimeCache&&h.mtime&&s.mtimeCache.set(String(h.path),h.mtime)}i=!1,gl(s,t,n,r,e)}finally{if(i)try{q.default.closeSync(r)}catch{}}},gl=(s,e,t,i,r)=>{let n=new So.WriteStreamSync(s.file,{fd:i,start:t});e.pipe(n),Ol(e,r)},Rl=(s,e)=>{e=Array.from(e);let t=new vo.Pack(s),i=(n,o,a)=>{let h=(D,A)=>{D?q.default.close(n,w=>a(D)):a(null,A)},l=0;if(o===0)return h(null,0);let c=0,u=Buffer.alloc(512),b=(D,A)=>{if(D||A===void 0)return h(D);if(c+=A,c<512&&A)return q.default.read(n,u,c,u.length-c,l+c,b);if(l===0&&u[0]===31&&u[1]===139)return h(new Error("cannot append to compressed archives"));if(c<512)return h(null,l);let w=new Ro.Header(u);if(!w.cksumValid)return h(null,l);let P=512*Math.ceil((w.size??0)/512);if(l+P+512>o||(l+=P+512,l>=o))return h(null,l);s.mtimeCache&&w.mtime&&s.mtimeCache.set(String(w.path),w.mtime),c=0,q.default.read(n,u,0,512,l,b)};q.default.read(n,u,0,512,l,b)};return new Promise((n,o)=>{t.on("error",o);let a="r+",h=(l,c)=>{if(l&&l.code==="ENOENT"&&a==="r+")return a="w+",q.default.open(s.file,a,h);if(l||!c)return o(l);q.default.fstat(c,(u,b)=>{if(u)return q.default.close(c,()=>o(u));i(c,b.size,(D,A)=>{if(D)return o(D);let w=new So.WriteStream(s.file,{fd:c,start:A});t.pipe(w),w.on("error",o),w.on("close",n),vl(t,e)})})};q.default.open(s.file,a,h)})},Ol=(s,e)=>{e.forEach(t=>{t.charAt(0)==="@"?(0,Oo.list)({file:go.default.resolve(s.cwd,t.slice(1)),sync:!0,noResume:!0,onReadEntry:i=>s.add(i)}):s.add(t)}),s.end()},vl=async(s,e)=>{for(let t of e)t.charAt(0)==="@"?await(0,Oo.list)({file:go.default.resolve(String(s.cwd),t.slice(1)),noResume:!0,onReadEntry:i=>s.add(i)}):s.add(t);s.end()};ft.replace=(0,El.makeCommand)(Sl,Rl,()=>{throw new TypeError("file is required")},()=>{throw new TypeError("file is required")},(s,e)=>{if(!(0,bl.isFile)(s))throw new TypeError("file is required");if(s.gzip||s.brotli||s.zstd||s.file.endsWith(".br")||s.file.endsWith(".tbr"))throw new TypeError("cannot append to compressed archives");if(!e?.length)throw new TypeError("no paths specified to add/replace")})});var zr=d($i=>{"use strict";Object.defineProperty($i,"__esModule",{value:!0});$i.update=void 0;var Tl=Ve(),kt=Vi();$i.update=(0,Tl.makeCommand)(kt.replace.syncFile,kt.replace.asyncFile,kt.replace.syncNoFile,kt.replace.asyncNoFile,(s,e=[])=>{kt.replace.validate?.(s,e),Dl(s)});var Dl=s=>{let e=s.filter;s.mtimeCache||(s.mtimeCache=new Map),s.filter=e?(t,i)=>e(t,i)&&!((s.mtimeCache?.get(t)??i.mtime??0)>(i.mtime??0)):(t,i)=>!((s.mtimeCache?.get(t)??i.mtime??0)>(i.mtime??0))}});var To=exports&&exports.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),Pl=exports&&exports.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),Y=exports&&exports.__exportStar||function(s,e){for(var t in s)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&To(e,s,t)},Nl=exports&&exports.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r {
const filesFilter = (opt, files) => {
const map = new Map(files.map(f => [(0, strip_trailing_slashes_js_1.stripTrailingSlashes)(f), true]));
const filter = opt.filter;
- const mapHas = (file, r = '') => {
+ // limit recursion to 100 levels
+ const MAX = 100;
+ const mapHas = (file, r = '', depth = 0) => {
+ /* c8 ignore start - excessive caution */
+ if (depth >= MAX) {
+ map.set(file, false);
+ return false;
+ }
+ /* c8 ignore stop */
const root = r || (0, path_1.parse)(file).root || '.';
let ret;
if (file === root)
ret = false;
else {
const m = map.get(file);
- if (m !== undefined) {
- ret = m;
- }
- else {
- ret = mapHas((0, path_1.dirname)(file), root);
- }
+ ret = m !== undefined ? m : mapHas((0, path_1.dirname)(file), root, depth + 1);
}
map.set(file, ret);
return ret;
@@ -114,7 +117,7 @@ const listFileSync = (opt) => {
node_fs_1.default.closeSync(fd);
/* c8 ignore next */
}
- catch (er) { }
+ catch { }
}
}
};
diff --git a/deps/npm/node_modules/tar/dist/commonjs/make-command.js b/deps/npm/node_modules/tar/dist/commonjs/make-command.js
index 1814319e78b..d6fc6c7e38e 100644
--- a/deps/npm/node_modules/tar/dist/commonjs/make-command.js
+++ b/deps/npm/node_modules/tar/dist/commonjs/make-command.js
@@ -12,12 +12,7 @@ const makeCommand = (syncFile, asyncFile, syncNoFile, asyncNoFile, validate) =>
cb = entries;
entries = undefined;
}
- if (!entries) {
- entries = [];
- }
- else {
- entries = Array.from(entries);
- }
+ entries = !entries ? [] : Array.from(entries);
const opt = (0, options_js_1.dealias)(opt_);
validate?.(opt, entries);
if ((0, options_js_1.isSyncFile)(opt)) {
@@ -28,9 +23,7 @@ const makeCommand = (syncFile, asyncFile, syncNoFile, asyncNoFile, validate) =>
}
else if ((0, options_js_1.isAsyncFile)(opt)) {
const p = asyncFile(opt, entries);
- // weirdness to make TS happy
- const c = cb ? cb : undefined;
- return c ? p.then(() => c(), c) : p;
+ return cb ? p.then(() => cb(), cb) : p;
}
else if ((0, options_js_1.isSyncNoFile)(opt)) {
if (typeof cb === 'function') {
@@ -45,9 +38,7 @@ const makeCommand = (syncFile, asyncFile, syncNoFile, asyncNoFile, validate) =>
return asyncNoFile(opt, entries);
/* c8 ignore start */
}
- else {
- throw new Error('impossible options??');
- }
+ throw new Error('impossible options??');
/* c8 ignore stop */
}, {
syncFile,
diff --git a/deps/npm/node_modules/tar/dist/commonjs/mkdir.js b/deps/npm/node_modules/tar/dist/commonjs/mkdir.js
index 606619efbcd..050e6bb2ab6 100644
--- a/deps/npm/node_modules/tar/dist/commonjs/mkdir.js
+++ b/deps/npm/node_modules/tar/dist/commonjs/mkdir.js
@@ -72,7 +72,7 @@ const mkdir = (dir, opt, cb) => {
};
exports.mkdir = mkdir;
const mkdir_ = (base, parts, mode, unlink, cwd, created, cb) => {
- if (!parts.length) {
+ if (parts.length === 0) {
return cb(null, created);
}
const p = parts.shift();
@@ -83,8 +83,7 @@ const onmkdir = (part, parts, mode, unlink, cwd, created, cb) => (er) => {
if (er) {
node_fs_1.default.lstat(part, (statEr, st) => {
if (statEr) {
- statEr.path =
- statEr.path && (0, normalize_windows_path_js_1.normalizeWindowsPath)(statEr.path);
+ statEr.path = statEr.path && (0, normalize_windows_path_js_1.normalizeWindowsPath)(statEr.path);
cb(statEr);
}
else if (st.isDirectory()) {
@@ -113,7 +112,7 @@ const onmkdir = (part, parts, mode, unlink, cwd, created, cb) => (er) => {
};
const checkCwdSync = (dir) => {
let ok = false;
- let code = undefined;
+ let code;
try {
ok = node_fs_1.default.statSync(dir).isDirectory();
}
@@ -159,14 +158,14 @@ const mkdirSync = (dir, opt) => {
}
const sub = (0, normalize_windows_path_js_1.normalizeWindowsPath)(node_path_1.default.relative(cwd, dir));
const parts = sub.split('/');
- let created = undefined;
+ let created;
for (let p = parts.shift(), part = cwd; p && (part += '/' + p); p = parts.shift()) {
part = (0, normalize_windows_path_js_1.normalizeWindowsPath)(node_path_1.default.resolve(part));
try {
node_fs_1.default.mkdirSync(part, mode);
created = created || part;
}
- catch (er) {
+ catch {
const st = node_fs_1.default.lstatSync(part);
if (st.isDirectory()) {
continue;
diff --git a/deps/npm/node_modules/tar/dist/commonjs/normalize-windows-path.js b/deps/npm/node_modules/tar/dist/commonjs/normalize-windows-path.js
index b0c7aaa9f2d..0e0c08a1d2c 100644
--- a/deps/npm/node_modules/tar/dist/commonjs/normalize-windows-path.js
+++ b/deps/npm/node_modules/tar/dist/commonjs/normalize-windows-path.js
@@ -7,6 +7,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
exports.normalizeWindowsPath = void 0;
const platform = process.env.TESTING_TAR_FAKE_PLATFORM || process.platform;
exports.normalizeWindowsPath = platform !== 'win32' ?
- (p) => p
- : (p) => p && p.replace(/\\/g, '/');
+ (p) => String(p)
+ : (p) => String(p).replaceAll(/\\/g, '/');
//# sourceMappingURL=normalize-windows-path.js.map
\ No newline at end of file
diff --git a/deps/npm/node_modules/tar/dist/commonjs/pack.js b/deps/npm/node_modules/tar/dist/commonjs/pack.js
index 67de8272c71..5a4c37a7663 100644
--- a/deps/npm/node_modules/tar/dist/commonjs/pack.js
+++ b/deps/npm/node_modules/tar/dist/commonjs/pack.js
@@ -54,6 +54,7 @@ class PackJob {
stat;
readdir;
pending = false;
+ pendingLink = false;
ignore = false;
piped = false;
constructor(path, absolute) {
@@ -65,12 +66,12 @@ exports.PackJob = PackJob;
const minipass_1 = require("minipass");
const zlib = __importStar(require("minizlib"));
const yallist_1 = require("yallist");
-const read_entry_js_1 = require("./read-entry.js");
const warn_method_js_1 = require("./warn-method.js");
const EOF = Buffer.alloc(1024);
const ONSTAT = Symbol('onStat');
const ENDED = Symbol('ended');
const QUEUE = Symbol('queue');
+const PENDINGLINKS = Symbol('pendingLinks');
const CURRENT = Symbol('current');
const PROCESS = Symbol('process');
const PROCESSING = Symbol('processing');
@@ -122,11 +123,11 @@ class Pack extends minipass_1.Minipass {
// class, but then we'd have to be tracking the tail of the queue the
// whole time, and Yallist just does that for us anyway.
[QUEUE];
+ [PENDINGLINKS] = new Map();
[JOBS] = 0;
[PROCESSING] = false;
[ENDED] = false;
constructor(opt = {}) {
- //@ts-ignore
super();
this.opt = opt;
this.file = opt.file || '';
@@ -146,9 +147,7 @@ class Pack extends minipass_1.Minipass {
}
this.portable = !!opt.portable;
if (opt.gzip || opt.brotli || opt.zstd) {
- if ((opt.gzip ? 1 : 0) +
- (opt.brotli ? 1 : 0) +
- (opt.zstd ? 1 : 0) >
+ if ((opt.gzip ? 1 : 0) + (opt.brotli ? 1 : 0) + (opt.zstd ? 1 : 0) >
1) {
throw new TypeError('gzip, brotli, zstd are mutually exclusive');
}
@@ -230,11 +229,11 @@ class Pack extends minipass_1.Minipass {
if (this[ENDED]) {
throw new Error('write after end');
}
- if (path instanceof read_entry_js_1.ReadEntry) {
- this[ADDTARENTRY](path);
+ if (typeof path === 'string') {
+ this[ADDFSENTRY](path);
}
else {
- this[ADDFSENTRY](path);
+ this[ADDTARENTRY](path);
}
return this.flowing;
}
@@ -282,14 +281,26 @@ class Pack extends minipass_1.Minipass {
}
else if (stat.isFile() &&
stat.nlink > 1 &&
- job === this[CURRENT] &&
!this.linkCache.get(`${stat.dev}:${stat.ino}`) &&
!this.sync) {
- // if it's not filtered, and it's a new File entry,
- // jump the queue in case any pending Link entries are about
- // to try to link to it. This prevents a hardlink from coming ahead
- // of its target in the archive.
- this[PROCESSJOB](job);
+ // if it's not filtered, and it's a new File entry, and next anyway
+ // process right away in case any pending Link entries are about
+ // to try to link to it.
+ if (job === this[CURRENT]) {
+ this[PROCESSJOB](job);
+ }
+ else {
+ // if it's NOT the current entry, it needs to be deferred,
+ // so that the link target can be built first.
+ const key = `${stat.dev}:${stat.ino}`;
+ const pending = this[PENDINGLINKS].get(key);
+ if (pending)
+ pending.push(job);
+ else
+ this[PENDINGLINKS].set(key, [job]);
+ job.pendingLink = true;
+ job.pending = true;
+ }
}
this[PROCESS]();
}
@@ -324,7 +335,7 @@ class Pack extends minipass_1.Minipass {
}
}
this[PROCESSING] = false;
- if (this[ENDED] && !this[QUEUE].length && this[JOBS] === 0) {
+ if (this[ENDED] && this[QUEUE].length === 0 && this[JOBS] === 0) {
if (this.zip) {
this.zip.end(EOF);
}
@@ -337,12 +348,31 @@ class Pack extends minipass_1.Minipass {
get [CURRENT]() {
return this[QUEUE] && this[QUEUE].head && this[QUEUE].head.value;
}
- [JOBDONE](_job) {
+ [JOBDONE](job) {
this[QUEUE].shift();
this[JOBS] -= 1;
+ const { stat } = job;
+ if (stat && stat.isFile() && stat.nlink > 1) {
+ // might be a file with pending links
+ const key = `${stat.dev}:${stat.ino}`;
+ const pending = this[PENDINGLINKS].get(key);
+ if (pending) {
+ this[PENDINGLINKS].delete(key);
+ for (const job of pending) {
+ job.pending = false;
+ this[PROCESSJOB](job);
+ }
+ }
+ }
this[PROCESS]();
}
[PROCESSJOB](job) {
+ if (job.pending && job.pendingLink && job === this[CURRENT]) {
+ // At least one of the links to this file are not being included
+ // in the tarball, so we need to just proceed.
+ job.pending = false;
+ job.pendingLink = false;
+ }
if (job.pending) {
return;
}
@@ -368,9 +398,7 @@ class Pack extends minipass_1.Minipass {
if (job.ignore) {
return;
}
- if (!this.noDirRecurse &&
- job.stat.isDirectory() &&
- !job.readdir) {
+ if (!this.noDirRecurse && job.stat.isDirectory() && !job.readdir) {
const rc = this.readdirCache.get(job.absolute);
if (rc) {
this[ONREADDIR](job, rc);
diff --git a/deps/npm/node_modules/tar/dist/commonjs/parse.js b/deps/npm/node_modules/tar/dist/commonjs/parse.js
index ef88ab35095..6ab1e333458 100644
--- a/deps/npm/node_modules/tar/dist/commonjs/parse.js
+++ b/deps/npm/node_modules/tar/dist/commonjs/parse.js
@@ -60,6 +60,10 @@ const SAW_VALID_ENTRY = Symbol('sawValidEntry');
const SAW_NULL_BLOCK = Symbol('sawNullBlock');
const SAW_EOF = Symbol('sawEOF');
const CLOSESTREAM = Symbol('closeStream');
+const MAX_DECOMPRESSION_RATIO = 1000;
+const COMPRESSEDBYTESREAD = Symbol('compressedBytesRead');
+const DECOMPRESSEDBYTESREAD = Symbol('decompressedBytesRead');
+const CHECKDECOMPRESSIONRATIO = Symbol('checkDecompressionRatio');
const noop = () => true;
class Parser extends events_1.EventEmitter {
file;
@@ -68,6 +72,7 @@ class Parser extends events_1.EventEmitter {
filter;
brotli;
zstd;
+ maxDecompressionRatio;
writable = true;
readable = false;
[QUEUE] = [];
@@ -87,13 +92,14 @@ class Parser extends events_1.EventEmitter {
[WRITING] = false;
[CONSUMING] = false;
[EMITTEDEND] = false;
+ [COMPRESSEDBYTESREAD] = 0;
+ [DECOMPRESSEDBYTESREAD] = 0;
constructor(opt = {}) {
super();
this.file = opt.file || '';
// these BADARCHIVE errors can't be detected early. listen on DONE.
this.on(DONE, () => {
- if (this[STATE] === 'begin' ||
- this[SAW_VALID_ENTRY] === false) {
+ if (this[STATE] === 'begin' || this[SAW_VALID_ENTRY] === false) {
// either less than 1 block of data, or all entries were invalid.
// Either way, probably not even a tarball.
this.warn('TAR_BAD_ARCHIVE', 'Unrecognized archive format');
@@ -110,6 +116,10 @@ class Parser extends events_1.EventEmitter {
});
}
this.strict = !!opt.strict;
+ this.maxDecompressionRatio =
+ typeof opt.maxDecompressionRatio === 'number' ?
+ opt.maxDecompressionRatio
+ : MAX_DECOMPRESSION_RATIO;
this.maxMetaEntrySize = opt.maxMetaEntrySize || maxMetaEntrySize;
this.filter = typeof opt.filter === 'function' ? opt.filter : noop;
// Unlike gzip, brotli doesn't have any magic bytes to identify it
@@ -223,8 +233,7 @@ class Parser extends events_1.EventEmitter {
}
else {
this[EX] = undefined;
- entry.ignore =
- entry.ignore || !this.filter(entry.path, entry);
+ entry.ignore = entry.ignore || !this.filter(entry.path, entry);
if (entry.ignore) {
// probably valid, just not something we care about
this[EMIT]('ignoredEntry', entry);
@@ -277,7 +286,7 @@ class Parser extends events_1.EventEmitter {
}
[NEXTENTRY]() {
do { } while (this[PROCESSENTRY](this[QUEUE].shift()));
- if (!this[QUEUE].length) {
+ if (this[QUEUE].length === 0) {
// At this point, there's nothing in the queue, but we may have an
// entry which is being consumed (readEntry).
// If we don't, then we definitely can handle more data.
@@ -327,7 +336,7 @@ class Parser extends events_1.EventEmitter {
return ret;
}
[EMIT](ev, data, extra) {
- if (!this[QUEUE].length && !this[READENTRY]) {
+ if (this[QUEUE].length === 0 && !this[READENTRY]) {
this.emit(ev, data, extra);
}
else {
@@ -364,11 +373,33 @@ class Parser extends events_1.EventEmitter {
}
}
abort(error) {
+ if (this[ABORTED]) {
+ return;
+ }
+ if (this[UNZIP]) {
+ // fully nerf the decompressor and close its underlying binding
+ const u = this[UNZIP];
+ /* c8 ignore start */
+ u.write = () => true;
+ u.end = () => u;
+ u.emit = () => false;
+ /* c8 ignore stop */
+ u.destroy?.();
+ }
this[ABORTED] = true;
this.emit('abort', error);
// always throws, even in non-strict mode
this.warn('TAR_ABORT', error, { recoverable: false });
}
+ [CHECKDECOMPRESSIONRATIO](chunk) {
+ this[DECOMPRESSEDBYTESREAD] += chunk.length;
+ const ratio = this[DECOMPRESSEDBYTESREAD] / this[COMPRESSEDBYTESREAD];
+ if (ratio > this.maxDecompressionRatio) {
+ this.abort(new Error(`max decompression ratio exceeded: ${ratio.toFixed(2)} > ${this.maxDecompressionRatio}`));
+ return false;
+ }
+ return true;
+ }
write(chunk, encoding, cb) {
if (typeof encoding === 'function') {
cb = encoding;
@@ -452,13 +483,22 @@ class Parser extends events_1.EventEmitter {
this[UNZIP] === undefined ? new minizlib_1.Unzip({})
: isZstd ? new minizlib_1.ZstdDecompress({})
: new minizlib_1.BrotliDecompress({});
- this[UNZIP].on('data', chunk => this[CONSUMECHUNK](chunk));
- this[UNZIP].on('error', er => this.abort(er));
+ this[UNZIP].on('data', chunk => {
+ if (this[CHECKDECOMPRESSIONRATIO](chunk)) {
+ this[CONSUMECHUNK](chunk);
+ }
+ });
+ this[UNZIP].on('error', er => {
+ if (!this[ABORTED]) {
+ this.abort(er);
+ }
+ });
this[UNZIP].on('end', () => {
this[ENDED] = true;
this[CONSUMECHUNK]();
});
this[WRITING] = true;
+ this[COMPRESSEDBYTESREAD] += chunk.length;
const ret = !!this[UNZIP][ended ? 'end' : 'write'](chunk);
this[WRITING] = false;
cb?.();
@@ -467,6 +507,7 @@ class Parser extends events_1.EventEmitter {
}
this[WRITING] = true;
if (this[UNZIP]) {
+ this[COMPRESSEDBYTESREAD] += chunk.length;
this[UNZIP].write(chunk);
}
else {
@@ -474,11 +515,11 @@ class Parser extends events_1.EventEmitter {
}
this[WRITING] = false;
// return false if there's a queue, or if the current entry isn't flowing
- const ret = this[QUEUE].length ? false
+ const ret = this[QUEUE].length > 0 ? false
: this[READENTRY] ? this[READENTRY].flowing
: true;
// if we have no queue, then that means a clogged READENTRY
- if (!ret && !this[QUEUE].length) {
+ if (!ret && this[QUEUE].length === 0) {
this[READENTRY]?.once('drain', () => this.emit('drain'));
}
/* c8 ignore next */
@@ -487,8 +528,7 @@ class Parser extends events_1.EventEmitter {
}
[BUFFERCONCAT](c) {
if (c && !this[ABORTED]) {
- this[BUFFER] =
- this[BUFFER] ? Buffer.concat([this[BUFFER], c]) : c;
+ this[BUFFER] = this[BUFFER] ? Buffer.concat([this[BUFFER], c]) : c;
}
}
[MAYBEEND]() {
@@ -498,7 +538,7 @@ class Parser extends events_1.EventEmitter {
!this[CONSUMING]) {
this[EMITTEDEND] = true;
const entry = this[WRITEENTRY];
- if (entry && entry.blockRemain) {
+ if (entry?.blockRemain) {
// truncated, likely a damaged file
const have = this[BUFFER] ? this[BUFFER].length : 0;
this.warn('TAR_BAD_ARCHIVE', `Truncated input (needed ${entry.blockRemain} more bytes, only ${have} available)`, { entry });
@@ -547,9 +587,7 @@ class Parser extends events_1.EventEmitter {
// the buffer. Advance the position and put any remainder in the buffer.
let position = 0;
const length = chunk.length;
- while (position + 512 <= length &&
- !this[ABORTED] &&
- !this[SAW_EOF]) {
+ while (position + 512 <= length && !this[ABORTED] && !this[SAW_EOF]) {
switch (this[STATE]) {
case 'begin':
case 'header':
@@ -570,15 +608,10 @@ class Parser extends events_1.EventEmitter {
}
}
if (position < length) {
- if (this[BUFFER]) {
- this[BUFFER] = Buffer.concat([
- chunk.subarray(position),
- this[BUFFER],
- ]);
- }
- else {
- this[BUFFER] = chunk.subarray(position);
- }
+ this[BUFFER] =
+ this[BUFFER] ?
+ Buffer.concat([chunk.subarray(position), this[BUFFER]])
+ : chunk.subarray(position);
}
}
end(chunk, encoding, cb) {
@@ -599,8 +632,10 @@ class Parser extends events_1.EventEmitter {
if (!this[ABORTED]) {
if (this[UNZIP]) {
/* c8 ignore start */
- if (chunk)
+ if (chunk) {
+ this[COMPRESSEDBYTESREAD] += chunk.length;
this[UNZIP].write(chunk);
+ }
/* c8 ignore stop */
this[UNZIP].end();
}
diff --git a/deps/npm/node_modules/tar/dist/commonjs/path-reservations.js b/deps/npm/node_modules/tar/dist/commonjs/path-reservations.js
index 525d233b2a4..68eeefbce65 100644
--- a/deps/npm/node_modules/tar/dist/commonjs/path-reservations.js
+++ b/deps/npm/node_modules/tar/dist/commonjs/path-reservations.js
@@ -20,7 +20,7 @@ const getDirs = (path) => {
.split('/')
.slice(0, -1)
.reduce((set, path) => {
- const s = set[set.length - 1];
+ const s = set.at(-1);
if (s !== undefined) {
path = (0, node_path_1.join)(s, path);
}
@@ -63,7 +63,7 @@ class PathReservations {
this.#queues.set(dir, [new Set([fn])]);
}
else {
- const l = q[q.length - 1];
+ const l = q.at(-1);
if (l instanceof Set) {
l.add(fn);
}
diff --git a/deps/npm/node_modules/tar/dist/commonjs/pax.js b/deps/npm/node_modules/tar/dist/commonjs/pax.js
index d30c0f3efbe..fce37f63058 100644
--- a/deps/npm/node_modules/tar/dist/commonjs/pax.js
+++ b/deps/npm/node_modules/tar/dist/commonjs/pax.js
@@ -147,12 +147,36 @@ const parseKVLine = (set, line) => {
return set;
}
const k = r.replace(/^SCHILY\.(dev|ino|nlink)/, '$1');
- const v = kv.join('=');
- set[k] =
- /^([A-Z]+\.)?([mac]|birth|creation)time$/.test(k) ?
- new Date(Number(v) * 1000)
- : /^[0-9]+$/.test(v) ? +v
- : v;
+ const v = kv.join('=').replace(/\0.*/, '');
+ switch (k) {
+ case 'path':
+ case 'linkpath':
+ case 'type':
+ case 'charset':
+ case 'comment':
+ case 'gname':
+ case 'uname':
+ set[k] = v;
+ break;
+ case 'ctime':
+ case 'atime':
+ case 'mtime':
+ set[k] = new Date(Number(v) * 1000);
+ break;
+ case 'size':
+ const s = +v;
+ if (s >= 0)
+ set[k] = s;
+ break;
+ case 'gid':
+ case 'uid':
+ case 'dev':
+ case 'ino':
+ case 'nlink':
+ case 'mode':
+ set[k] = +v;
+ break;
+ }
return set;
};
//# sourceMappingURL=pax.js.map
\ No newline at end of file
diff --git a/deps/npm/node_modules/tar/dist/commonjs/read-entry.js b/deps/npm/node_modules/tar/dist/commonjs/read-entry.js
index 15e2d55c938..655d7dbc0d3 100644
--- a/deps/npm/node_modules/tar/dist/commonjs/read-entry.js
+++ b/deps/npm/node_modules/tar/dist/commonjs/read-entry.js
@@ -90,9 +90,7 @@ class ReadEntry extends minipass_1.Minipass {
this.ctime = header.ctime;
/* c8 ignore start */
this.linkpath =
- header.linkpath ?
- (0, normalize_windows_path_js_1.normalizeWindowsPath)(header.linkpath)
- : undefined;
+ header.linkpath ? (0, normalize_windows_path_js_1.normalizeWindowsPath)(header.linkpath) : undefined;
/* c8 ignore stop */
this.uname = header.uname;
this.gname = header.gname;
@@ -130,9 +128,7 @@ class ReadEntry extends minipass_1.Minipass {
// we slurp in everything except for the path attribute in
// a global extended header, because that's weird. Also, any
// null/undefined values are ignored.
- return !(v === null ||
- v === undefined ||
- (k === 'path' && gex));
+ return !(v === null || v === undefined || (k === 'path' && gex));
})));
}
}
diff --git a/deps/npm/node_modules/tar/dist/commonjs/replace.js b/deps/npm/node_modules/tar/dist/commonjs/replace.js
index 1c6609cb57e..8305a3531ab 100644
--- a/deps/npm/node_modules/tar/dist/commonjs/replace.js
+++ b/deps/npm/node_modules/tar/dist/commonjs/replace.js
@@ -40,9 +40,7 @@ const replaceSync = (opt, files) => {
POSITION: for (position = 0; position < st.size; position += 512) {
for (let bufPos = 0, bytes = 0; bufPos < 512; bufPos += bytes) {
bytes = node_fs_1.default.readSync(fd, headBuf, bufPos, headBuf.length - bufPos, position + bufPos);
- if (position === 0 &&
- headBuf[0] === 0x1f &&
- headBuf[1] === 0x8b) {
+ if (position === 0 && headBuf[0] === 0x1f && headBuf[1] === 0x8b) {
throw new Error('cannot append to compressed archives');
}
if (!bytes) {
@@ -72,7 +70,7 @@ const replaceSync = (opt, files) => {
try {
node_fs_1.default.closeSync(fd);
}
- catch (er) { }
+ catch { }
}
}
};
@@ -103,16 +101,14 @@ const replaceAsync = (opt, files) => {
let bufPos = 0;
const headBuf = Buffer.alloc(512);
const onread = (er, bytes) => {
- if (er || typeof bytes === 'undefined') {
+ if (er || bytes === undefined) {
return cb(er);
}
bufPos += bytes;
if (bufPos < 512 && bytes) {
return node_fs_1.default.read(fd, headBuf, bufPos, headBuf.length - bufPos, position + bufPos, onread);
}
- if (position === 0 &&
- headBuf[0] === 0x1f &&
- headBuf[1] === 0x8b) {
+ if (position === 0 && headBuf[0] === 0x1f && headBuf[1] === 0x8b) {
return cb(new Error('cannot append to compressed archives'));
}
// truncated header
@@ -191,8 +187,7 @@ const addFilesSync = (p, files) => {
p.end();
};
const addFilesAsync = async (p, files) => {
- for (let i = 0; i < files.length; i++) {
- const file = String(files[i]);
+ for (const file of files) {
if (file.charAt(0) === '@') {
await (0, list_js_1.list)({
file: node_path_1.default.resolve(String(p.cwd), file.slice(1)),
diff --git a/deps/npm/node_modules/tar/dist/commonjs/types.js b/deps/npm/node_modules/tar/dist/commonjs/types.js
index cb9b684e843..7cbcc17ef19 100644
--- a/deps/npm/node_modules/tar/dist/commonjs/types.js
+++ b/deps/npm/node_modules/tar/dist/commonjs/types.js
@@ -1,10 +1,30 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
-exports.code = exports.name = exports.isName = exports.isCode = void 0;
+exports.code = exports.name = exports.normalFsTypes = exports.isName = exports.isCode = void 0;
const isCode = (c) => exports.name.has(c);
exports.isCode = isCode;
const isName = (c) => exports.code.has(c);
exports.isName = isName;
+/**
+ * types that are a normal file system entry, not metadata.
+ *
+ * These can be the subject of extended/globalExtended headers, long path
+ * names, long linkpath names, etc.
+ *
+ * Any other types are meta, and cannot be targetted by extended PAX headers.
+ */
+exports.normalFsTypes = new Set([
+ '0',
+ '',
+ '1',
+ '2',
+ '3',
+ '4',
+ '5',
+ '6',
+ '7',
+ 'D',
+]);
// map types from key to human-friendly name
exports.name = new Map([
['0', 'File'],
diff --git a/deps/npm/node_modules/tar/dist/commonjs/unpack.js b/deps/npm/node_modules/tar/dist/commonjs/unpack.js
index 7248fbacfc9..0e9f861abb8 100644
--- a/deps/npm/node_modules/tar/dist/commonjs/unpack.js
+++ b/deps/npm/node_modules/tar/dist/commonjs/unpack.js
@@ -167,8 +167,7 @@ class Unpack extends parse_js_1.Parser {
this.chmod = !!opt.chmod;
if (typeof opt.uid === 'number' || typeof opt.gid === 'number') {
// need both or neither
- if (typeof opt.uid !== 'number' ||
- typeof opt.gid !== 'number') {
+ if (typeof opt.uid !== 'number' || typeof opt.gid !== 'number') {
throw new TypeError('cannot set owner without number uid and gid');
}
if (opt.preserveOwner) {
@@ -184,13 +183,10 @@ class Unpack extends parse_js_1.Parser {
this.setOwner = false;
}
// default true for root
- if (opt.preserveOwner === undefined &&
- typeof opt.uid !== 'number') {
- this.preserveOwner = !!(process.getuid && process.getuid() === 0);
- }
- else {
- this.preserveOwner = !!opt.preserveOwner;
- }
+ this.preserveOwner =
+ opt.preserveOwner === undefined && typeof opt.uid !== 'number' ?
+ !!(process.getuid?.() === 0)
+ : !!opt.preserveOwner;
this.processUid =
(this.preserveOwner || this.setOwner) && process.getuid ?
process.getuid()
@@ -202,9 +198,7 @@ class Unpack extends parse_js_1.Parser {
// prevent excessively deep nesting of subfolders
// set to `Infinity` to remove this restriction
this.maxDepth =
- typeof opt.maxDepth === 'number' ?
- opt.maxDepth
- : DEFAULT_MAX_DEPTH;
+ typeof opt.maxDepth === 'number' ? opt.maxDepth : DEFAULT_MAX_DEPTH;
// mostly just for testing, but useful in some cases.
// Forcibly trigger a chown on every entry, no matter what
this.forceChown = opt.forceChown === true;
@@ -262,7 +256,7 @@ class Unpack extends parse_js_1.Parser {
return true;
// strip off the root
const [root, stripped] = (0, strip_absolute_path_js_1.stripAbsolutePath)(p);
- const parts = stripped.replace(/\\/g, '/').split('/');
+ const parts = stripped.replaceAll(/\\/g, '/').split('/');
if (parts.includes('..') ||
/* c8 ignore next */
(isWindows && /^[a-z]:\.\.$/i.test(parts[0] ?? ''))) {
@@ -278,20 +272,18 @@ class Unpack extends parse_js_1.Parser {
// not ok!
return false;
}
- else {
- // Resolve linkpath relative to the entry's directory.
- // `path.posix` is safe to use because we're operating on
- // tar paths, not a filesystem.
- const entryDir = node_path_1.default.posix.dirname(entry.path);
- const resolved = node_path_1.default.posix.normalize(node_path_1.default.posix.join(entryDir, parts.join('/')));
- // If the resolved path escapes (starts with ..), reject it
- if (resolved.startsWith('../') || resolved === '..') {
- this.warn('TAR_ENTRY_ERROR', `${field} escapes extraction directory`, {
- entry,
- [field]: p,
- });
- return false;
- }
+ // Resolve linkpath relative to the entry's directory.
+ // `path.posix` is safe to use because we're operating on
+ // tar paths, not a filesystem.
+ const entryDir = node_path_1.default.posix.dirname(entry.path);
+ const resolved = node_path_1.default.posix.normalize(node_path_1.default.posix.join(entryDir, parts.join('/')));
+ // If the resolved path escapes (starts with ..), reject it
+ if (resolved.startsWith('../') || resolved === '..') {
+ this.warn('TAR_ENTRY_ERROR', `${field} escapes extraction directory`, {
+ entry,
+ [field]: p,
+ });
+ return false;
}
}
if (root) {
@@ -337,12 +329,10 @@ class Unpack extends parse_js_1.Parser {
!this[STRIPABSOLUTEPATH](entry, 'linkpath')) {
return false;
}
- if (node_path_1.default.isAbsolute(entry.path)) {
- entry.absolute = (0, normalize_windows_path_js_1.normalizeWindowsPath)(node_path_1.default.resolve(entry.path));
- }
- else {
- entry.absolute = (0, normalize_windows_path_js_1.normalizeWindowsPath)(node_path_1.default.resolve(this.cwd, entry.path));
- }
+ entry.absolute =
+ node_path_1.default.isAbsolute(entry.path) ?
+ (0, normalize_windows_path_js_1.normalizeWindowsPath)(node_path_1.default.resolve(entry.path))
+ : (0, normalize_windows_path_js_1.normalizeWindowsPath)(node_path_1.default.resolve(this.cwd, entry.path));
// if we somehow ended up with a path that escapes the cwd, and we are
// not in preservePaths mode, then something is fishy! This should have
// been prevented above, so ignore this for coverage.
@@ -416,7 +406,7 @@ class Unpack extends parse_js_1.Parser {
}
}
[MKDIR](dir, mode, cb) {
- (0, mkdir_js_1.mkdir)((0, normalize_windows_path_js_1.normalizeWindowsPath)(dir), {
+ void (0, mkdir_js_1.mkdir)((0, normalize_windows_path_js_1.normalizeWindowsPath)(dir), {
uid: this.uid,
gid: this.gid,
processUid: this.processUid,
@@ -437,8 +427,7 @@ class Unpack extends parse_js_1.Parser {
entry.uid !== this.processUid) ||
(typeof entry.gid === 'number' &&
entry.gid !== this.processGid))) ||
- (typeof this.uid === 'number' &&
- this.uid !== this.processUid) ||
+ (typeof this.uid === 'number' && this.uid !== this.processUid) ||
(typeof this.gid === 'number' && this.gid !== this.processGid));
}
[UID](entry) {
@@ -448,9 +437,7 @@ class Unpack extends parse_js_1.Parser {
return uint32(this.gid, entry.gid, this.processGid);
}
[FILE](entry, fullyDone) {
- const mode = typeof entry.mode === 'number' ?
- entry.mode & 0o7777
- : this.fmode;
+ const mode = typeof entry.mode === 'number' ? entry.mode & 0o7777 : this.fmode;
const stream = new fsm.WriteStream(String(entry.absolute), {
// slight lie, but it can be numeric flags
flags: (0, get_write_flag_js_1.getWriteFlag)(entry.size),
@@ -513,16 +500,14 @@ class Unpack extends parse_js_1.Parser {
const uid = this[UID](entry);
const gid = this[GID](entry);
if (typeof uid === 'number' && typeof gid === 'number') {
- node_fs_1.default.fchown(fd, uid, gid, er => er ?
- node_fs_1.default.chown(abs, uid, gid, er2 => done(er2 && er))
- : done());
+ node_fs_1.default.fchown(fd, uid, gid, er => er ? node_fs_1.default.chown(abs, uid, gid, er2 => done(er2 && er)) : done());
}
}
done();
});
const tx = this.transform ? this.transform(entry) || entry : entry;
if (tx !== entry) {
- tx.on('error', (er) => {
+ tx.on('error', er => {
this[ONERROR](er, entry);
fullyDone();
});
@@ -531,9 +516,7 @@ class Unpack extends parse_js_1.Parser {
tx.pipe(stream);
}
[DIRECTORY](entry, fullyDone) {
- const mode = typeof entry.mode === 'number' ?
- entry.mode & 0o7777
- : this.dmode;
+ const mode = typeof entry.mode === 'number' ? entry.mode & 0o7777 : this.dmode;
this[MKDIR](String(entry.absolute), mode, er => {
if (er) {
this[ONERROR](er, entry);
@@ -669,9 +652,7 @@ class Unpack extends parse_js_1.Parser {
}
if (st.isDirectory()) {
if (entry.type === 'Directory') {
- const needChmod = this.chmod &&
- entry.mode &&
- (st.mode & 0o7777) !== entry.mode;
+ const needChmod = this.chmod && entry.mode && (st.mode & 0o7777) !== entry.mode;
const afterChmod = (er) => this[MAKEFS](er ?? null, entry, done);
if (!needChmod) {
return afterChmod();
@@ -782,9 +763,7 @@ class UnpackSync extends Unpack {
}
if (st.isDirectory()) {
if (entry.type === 'Directory') {
- const needChmod = this.chmod &&
- entry.mode &&
- (st.mode & 0o7777) !== entry.mode;
+ const needChmod = this.chmod && entry.mode && (st.mode & 0o7777) !== entry.mode;
const [er] = needChmod ?
callSync(() => {
node_fs_1.default.chmodSync(String(entry.absolute), Number(entry.mode));
@@ -804,9 +783,7 @@ class UnpackSync extends Unpack {
this[MAKEFS](er, entry);
}
[FILE](entry, done) {
- const mode = typeof entry.mode === 'number' ?
- entry.mode & 0o7777
- : this.fmode;
+ const mode = typeof entry.mode === 'number' ? entry.mode & 0o7777 : this.fmode;
const oner = (er) => {
let closeError;
try {
@@ -834,7 +811,7 @@ class UnpackSync extends Unpack {
/* c8 ignore stop */
const tx = this.transform ? this.transform(entry) || entry : entry;
if (tx !== entry) {
- tx.on('error', (er) => this[ONERROR](er, entry));
+ tx.on('error', er => this[ONERROR](er, entry));
entry.pipe(tx);
}
tx.on('data', (chunk) => {
@@ -859,7 +836,7 @@ class UnpackSync extends Unpack {
try {
node_fs_1.default.utimesSync(String(entry.absolute), atime, mtime);
}
- catch (utimeser) {
+ catch {
er = futimeser;
}
}
@@ -874,7 +851,7 @@ class UnpackSync extends Unpack {
try {
node_fs_1.default.chownSync(String(entry.absolute), Number(uid), Number(gid));
}
- catch (chowner) {
+ catch {
er = er || fchowner;
}
}
@@ -883,9 +860,7 @@ class UnpackSync extends Unpack {
});
}
[DIRECTORY](entry, done) {
- const mode = typeof entry.mode === 'number' ?
- entry.mode & 0o7777
- : this.dmode;
+ const mode = typeof entry.mode === 'number' ? entry.mode & 0o7777 : this.dmode;
const er = this[MKDIR](String(entry.absolute), mode);
if (er) {
this[ONERROR](er, entry);
@@ -897,13 +872,13 @@ class UnpackSync extends Unpack {
node_fs_1.default.utimesSync(String(entry.absolute), entry.atime || new Date(), entry.mtime);
/* c8 ignore next */
}
- catch (er) { }
+ catch { }
}
if (this[DOCHOWN](entry)) {
try {
node_fs_1.default.chownSync(String(entry.absolute), Number(this[UID](entry)), Number(this[GID](entry)));
}
- catch (er) { }
+ catch { }
}
done();
entry.resume();
@@ -927,7 +902,7 @@ class UnpackSync extends Unpack {
}
}
[ENSURE_NO_SYMLINK](_entry, cwd, parts, done, onError) {
- if (this.preservePaths || !parts.length)
+ if (this.preservePaths || parts.length === 0)
return done();
let t = cwd;
for (const p of parts) {
diff --git a/deps/npm/node_modules/tar/dist/commonjs/winchars.js b/deps/npm/node_modules/tar/dist/commonjs/winchars.js
index c0a44058129..1ce09630d3d 100644
--- a/deps/npm/node_modules/tar/dist/commonjs/winchars.js
+++ b/deps/npm/node_modules/tar/dist/commonjs/winchars.js
@@ -4,7 +4,7 @@
Object.defineProperty(exports, "__esModule", { value: true });
exports.decode = exports.encode = void 0;
const raw = ['|', '<', '>', '?', ':'];
-const win = raw.map(char => String.fromCharCode(0xf000 + char.charCodeAt(0)));
+const win = raw.map(char => String.fromCodePoint(0xf000 + Number(char.codePointAt(0))));
const toWin = new Map(raw.map((char, i) => [char, win[i]]));
const toRaw = new Map(win.map((char, i) => [char, raw[i]]));
const encode = (s) => raw.reduce((s, c) => s.split(c).join(toWin.get(c)), s);
diff --git a/deps/npm/node_modules/tar/dist/commonjs/write-entry.js b/deps/npm/node_modules/tar/dist/commonjs/write-entry.js
index 20e14a0d6c0..db4fa77afe2 100644
--- a/deps/npm/node_modules/tar/dist/commonjs/write-entry.js
+++ b/deps/npm/node_modules/tar/dist/commonjs/write-entry.js
@@ -122,8 +122,7 @@ class WriteEntry extends minipass_1.Minipass {
this.noPax = !!opt.noPax;
this.noMtime = !!opt.noMtime;
this.mtime = opt.mtime;
- this.prefix =
- opt.prefix ? (0, normalize_windows_path_js_1.normalizeWindowsPath)(opt.prefix) : undefined;
+ this.prefix = opt.prefix ? (0, normalize_windows_path_js_1.normalizeWindowsPath)(opt.prefix) : undefined;
this.onWriteEntry = opt.onWriteEntry;
if (typeof opt.onwarn === 'function') {
this.on('warn', opt.onwarn);
@@ -140,8 +139,8 @@ class WriteEntry extends minipass_1.Minipass {
if (this.win32) {
// force the \ to / normalization, since we might not *actually*
// be on windows, but want \ to be considered a path separator.
- this.path = winchars.decode(this.path.replace(/\\/g, '/'));
- p = p.replace(/\\/g, '/');
+ this.path = winchars.decode(this.path.replaceAll(/\\/g, '/'));
+ p = p.replaceAll(/\\/g, '/');
}
this.absolute = (0, normalize_windows_path_js_1.normalizeWindowsPath)(opt.absolute || path_1.default.resolve(this.cwd, p));
if (this.path === '') {
@@ -243,7 +242,7 @@ class WriteEntry extends minipass_1.Minipass {
atime: this.portable ? undefined : this.header.atime,
ctime: this.portable ? undefined : this.header.ctime,
gid: this.portable ? undefined : this.header.gid,
- mtime: this.noMtime ? undefined : (this.mtime || this.header.mtime),
+ mtime: this.noMtime ? undefined : this.mtime || this.header.mtime,
path: this[PREFIX](this.path),
linkpath: this.type === 'Link' && this.linkpath !== undefined ?
this[PREFIX](this.linkpath)
@@ -446,7 +445,7 @@ class WriteEntry extends minipass_1.Minipass {
if (this.blockRemain) {
super.write(Buffer.alloc(this.blockRemain));
}
- return this[CLOSE](er => er ? this.emit('error', er) : this.end());
+ return this[CLOSE](er => (er ? this.emit('error', er) : this.end()));
}
/* c8 ignore start */
if (!this.buf) {
@@ -495,7 +494,7 @@ class WriteEntrySync extends WriteEntry {
try {
this[CLOSE](() => { });
}
- catch (er) { }
+ catch { }
}
}
}
@@ -565,16 +564,13 @@ class WriteEntryTar extends minipass_1.Minipass {
this.prefix = opt.prefix;
this.path = (0, normalize_windows_path_js_1.normalizeWindowsPath)(readEntry.path);
this.mode =
- readEntry.mode !== undefined ?
- this[MODE](readEntry.mode)
- : undefined;
+ readEntry.mode !== undefined ? this[MODE](readEntry.mode) : undefined;
this.uid = this.portable ? undefined : readEntry.uid;
this.gid = this.portable ? undefined : readEntry.gid;
this.uname = this.portable ? undefined : readEntry.uname;
this.gname = this.portable ? undefined : readEntry.gname;
this.size = readEntry.size;
- this.mtime =
- this.noMtime ? undefined : opt.mtime || readEntry.mtime;
+ this.mtime = this.noMtime ? undefined : opt.mtime || readEntry.mtime;
this.atime = this.portable ? undefined : readEntry.atime;
this.ctime = this.portable ? undefined : readEntry.ctime;
this.linkpath =
@@ -686,7 +682,10 @@ class WriteEntryTar extends minipass_1.Minipass {
}
if (cb)
this.once('finish', cb);
- chunk ? super.end(chunk, cb) : super.end(cb);
+ if (chunk)
+ super.end(chunk, cb);
+ else
+ super.end(cb);
/* c8 ignore stop */
return this;
}
diff --git a/deps/npm/node_modules/tar/dist/esm/create.js b/deps/npm/node_modules/tar/dist/esm/create.js
index 512a9911d70..4e88751690d 100644
--- a/deps/npm/node_modules/tar/dist/esm/create.js
+++ b/deps/npm/node_modules/tar/dist/esm/create.js
@@ -22,7 +22,7 @@ const createFile = (opt, files) => {
stream.on('close', res);
p.on('error', rej);
});
- addFilesAsync(p, files);
+ addFilesAsync(p, files).catch(er => p.emit('error', er));
return promise;
};
const addFilesSync = (p, files) => {
@@ -42,8 +42,7 @@ const addFilesSync = (p, files) => {
p.end();
};
const addFilesAsync = async (p, files) => {
- for (let i = 0; i < files.length; i++) {
- const file = String(files[i]);
+ for (const file of files) {
if (file.charAt(0) === '@') {
await list({
file: path.resolve(String(p.cwd), file.slice(1)),
@@ -66,7 +65,7 @@ const createSync = (opt, files) => {
};
const createAsync = (opt, files) => {
const p = new Pack(opt);
- addFilesAsync(p, files);
+ addFilesAsync(p, files).catch(er => p.emit('error', er));
return p;
};
export const create = makeCommand(createFileSync, createFile, createSync, createAsync, (_opt, files) => {
diff --git a/deps/npm/node_modules/tar/dist/esm/get-write-flag.js b/deps/npm/node_modules/tar/dist/esm/get-write-flag.js
index 2c7f3e8b28f..73d574522d8 100644
--- a/deps/npm/node_modules/tar/dist/esm/get-write-flag.js
+++ b/deps/npm/node_modules/tar/dist/esm/get-write-flag.js
@@ -9,7 +9,7 @@ import fs from 'fs';
const platform = process.env.__FAKE_PLATFORM__ || process.platform;
const isWindows = platform === 'win32';
/* c8 ignore start */
-const { O_CREAT, O_TRUNC, O_WRONLY } = fs.constants;
+const { O_CREAT, O_NOFOLLOW, O_TRUNC, O_WRONLY } = fs.constants;
const UV_FS_O_FILEMAP = Number(process.env.__FAKE_FS_O_FILENAME__) ||
fs.constants.UV_FS_O_FILEMAP ||
0;
@@ -17,7 +17,10 @@ const UV_FS_O_FILEMAP = Number(process.env.__FAKE_FS_O_FILENAME__) ||
const fMapEnabled = isWindows && !!UV_FS_O_FILEMAP;
const fMapLimit = 512 * 1024;
const fMapFlag = UV_FS_O_FILEMAP | O_TRUNC | O_CREAT | O_WRONLY;
-export const getWriteFlag = !fMapEnabled ?
- () => 'w'
- : (size) => (size < fMapLimit ? fMapFlag : 'w');
+const noFollowFlag = !isWindows && typeof O_NOFOLLOW === 'number' ?
+ O_NOFOLLOW | O_TRUNC | O_CREAT | O_WRONLY
+ : null;
+export const getWriteFlag = noFollowFlag !== null ? () => noFollowFlag
+ : !fMapEnabled ? () => 'w'
+ : (size) => (size < fMapLimit ? fMapFlag : 'w');
//# sourceMappingURL=get-write-flag.js.map
\ No newline at end of file
diff --git a/deps/npm/node_modules/tar/dist/esm/header.js b/deps/npm/node_modules/tar/dist/esm/header.js
index 66db54527d8..068c4ea0398 100644
--- a/deps/npm/node_modules/tar/dist/esm/header.js
+++ b/deps/npm/node_modules/tar/dist/esm/header.js
@@ -5,6 +5,7 @@
import { posix as pathModule } from 'node:path';
import * as large from './large-numbers.js';
import * as types from './types.js';
+const notNegative = (n) => n === undefined || n < 0 ? undefined : n;
export class Header {
cksumValid = false;
needPax = false;
@@ -42,23 +43,44 @@ export class Header {
if (!buf || !(buf.length >= off + 512)) {
throw new Error('need 512 bytes for header');
}
- this.path = ex?.path ?? decString(buf, off, 100);
- this.mode = ex?.mode ?? gex?.mode ?? decNumber(buf, off + 100, 8);
- this.uid = ex?.uid ?? gex?.uid ?? decNumber(buf, off + 108, 8);
- this.gid = ex?.gid ?? gex?.gid ?? decNumber(buf, off + 116, 8);
- this.size = ex?.size ?? gex?.size ?? decNumber(buf, off + 124, 12);
+ // Decode the typeflag (independent of any pending PAX/GNU extended header)
+ // up front so we can tell whether THIS block is itself an intermediary
+ // extension header (PAX `x`/`g`, GNU long-name `L`, GNU long-link `K`).
+ // Per POSIX pax, a PAX extended header describes the *next file entry*, not
+ // the extension headers that may sit between it and that file. Applying the
+ // pending PAX overrides (notably `size`) to an intervening `L`/`K`/`x`/`g`
+ // header desynchronizes the stream relative to other tar implementations
+ // and enables tar interpretation-conflict / file-smuggling attacks.
+ const t = decString(buf, off + 156, 1);
+ const isNormalFS = types.normalFsTypes.has(t);
+ const exForFields = isNormalFS ? ex : undefined;
+ const gexForFields = isNormalFS ? gex : undefined;
+ this.path = exForFields?.path ?? decString(buf, off, 100);
+ this.mode =
+ exForFields?.mode ??
+ gexForFields?.mode ??
+ decNumber(buf, off + 100, 8);
+ this.uid =
+ exForFields?.uid ?? gexForFields?.uid ?? decNumber(buf, off + 108, 8);
+ this.gid =
+ exForFields?.gid ?? gexForFields?.gid ?? decNumber(buf, off + 116, 8);
+ this.size = notNegative(exForFields?.size ??
+ gexForFields?.size ??
+ decNumber(buf, off + 124, 12));
this.mtime =
- ex?.mtime ?? gex?.mtime ?? decDate(buf, off + 136, 12);
+ exForFields?.mtime ??
+ gexForFields?.mtime ??
+ decDate(buf, off + 136, 12);
this.cksum = decNumber(buf, off + 148, 12);
// if we have extended or global extended headers, apply them now
// See https://github.com/npm/node-tar/pull/187
- // Apply global before local, so it overrides
- if (gex)
- this.#slurp(gex, true);
- if (ex)
- this.#slurp(ex);
+ // Apply global before local, so it overrides. Never slurp the pending
+ // extended-header fields onto an intermediary extension header.
+ if (gexForFields)
+ this.#slurp(gexForFields, true);
+ if (exForFields)
+ this.#slurp(exForFields);
// old tar versions marked dirs as a file with a trailing /
- const t = decString(buf, off + 156, 1);
if (types.isCode(t)) {
this.#type = t || '0';
}
@@ -74,17 +96,26 @@ export class Header {
this.size = 0;
}
this.linkpath = decString(buf, off + 157, 100);
- if (buf.subarray(off + 257, off + 265).toString() ===
- 'ustar\u000000') {
+ if (buf.subarray(off + 257, off + 265).toString() === 'ustar\u000000') {
/* c8 ignore start */
this.uname =
- ex?.uname ?? gex?.uname ?? decString(buf, off + 265, 32);
+ exForFields?.uname ??
+ gexForFields?.uname ??
+ decString(buf, off + 265, 32);
this.gname =
- ex?.gname ?? gex?.gname ?? decString(buf, off + 297, 32);
+ exForFields?.gname ??
+ gexForFields?.gname ??
+ decString(buf, off + 297, 32);
this.devmaj =
- ex?.devmaj ?? gex?.devmaj ?? decNumber(buf, off + 329, 8) ?? 0;
+ exForFields?.devmaj ??
+ gexForFields?.devmaj ??
+ decNumber(buf, off + 329, 8) ??
+ 0;
this.devmin =
- ex?.devmin ?? gex?.devmin ?? decNumber(buf, off + 337, 8) ?? 0;
+ exForFields?.devmin ??
+ gexForFields?.devmin ??
+ decNumber(buf, off + 337, 8) ??
+ 0;
/* c8 ignore stop */
if (buf[off + 475] !== 0) {
// definitely a prefix, definitely >130 chars.
@@ -97,10 +128,8 @@ export class Header {
this.path = prefix + '/' + this.path;
}
/* c8 ignore start */
- this.atime =
- ex?.atime ?? gex?.atime ?? decDate(buf, off + 476, 12);
- this.ctime =
- ex?.ctime ?? gex?.ctime ?? decDate(buf, off + 488, 12);
+ this.atime = ex?.atime ?? gex?.atime ?? decDate(buf, off + 476, 12);
+ this.ctime = ex?.ctime ?? gex?.ctime ?? decDate(buf, off + 488, 12);
/* c8 ignore stop */
}
}
@@ -123,6 +152,7 @@ export class Header {
// null/undefined values are ignored.
return !(v === null ||
v === undefined ||
+ (k === 'size' && Number(v) < 0) ||
(k === 'path' && gex) ||
(k === 'linkpath' && gex) ||
k === 'global');
@@ -144,17 +174,12 @@ export class Header {
const prefix = split[1];
this.needPax = !!split[2];
this.needPax = encString(buf, off, 100, path) || this.needPax;
- this.needPax =
- encNumber(buf, off + 100, 8, this.mode) || this.needPax;
- this.needPax =
- encNumber(buf, off + 108, 8, this.uid) || this.needPax;
- this.needPax =
- encNumber(buf, off + 116, 8, this.gid) || this.needPax;
- this.needPax =
- encNumber(buf, off + 124, 12, this.size) || this.needPax;
- this.needPax =
- encDate(buf, off + 136, 12, this.mtime) || this.needPax;
- buf[off + 156] = this.#type.charCodeAt(0);
+ this.needPax = encNumber(buf, off + 100, 8, this.mode) || this.needPax;
+ this.needPax = encNumber(buf, off + 108, 8, this.uid) || this.needPax;
+ this.needPax = encNumber(buf, off + 116, 8, this.gid) || this.needPax;
+ this.needPax = encNumber(buf, off + 124, 12, this.size) || this.needPax;
+ this.needPax = encDate(buf, off + 136, 12, this.mtime) || this.needPax;
+ buf[off + 156] = Number(this.#type.codePointAt(0));
this.needPax =
encString(buf, off + 157, 100, this.linkpath) || this.needPax;
buf.write('ustar\u000000', off + 257, 8);
@@ -169,12 +194,10 @@ export class Header {
this.needPax =
encString(buf, off + 345, prefixSize, prefix) || this.needPax;
if (buf[off + 475] !== 0) {
- this.needPax =
- encString(buf, off + 345, 155, prefix) || this.needPax;
+ this.needPax = encString(buf, off + 345, 155, prefix) || this.needPax;
}
else {
- this.needPax =
- encString(buf, off + 345, 130, prefix) || this.needPax;
+ this.needPax = encString(buf, off + 345, 130, prefix) || this.needPax;
this.needPax =
encDate(buf, off + 476, 12, this.atime) || this.needPax;
this.needPax =
diff --git a/deps/npm/node_modules/tar/dist/esm/index.min.js b/deps/npm/node_modules/tar/dist/esm/index.min.js
index 40a573e4cce..9d9044ce85e 100644
--- a/deps/npm/node_modules/tar/dist/esm/index.min.js
+++ b/deps/npm/node_modules/tar/dist/esm/index.min.js
@@ -1,4 +1,4 @@
-var Dr=Object.defineProperty;var Ar=(s,t)=>{for(var e in t)Dr(s,e,{get:t[e],enumerable:!0})};import Hr from"events";import I from"fs";import{EventEmitter as Oi}from"node:events";import Ds from"node:stream";import{StringDecoder as Ir}from"node:string_decoder";var Ts=typeof process=="object"&&process?process:{stdout:null,stderr:null},Cr=s=>!!s&&typeof s=="object"&&(s instanceof A||s instanceof Ds||Fr(s)||kr(s)),Fr=s=>!!s&&typeof s=="object"&&s instanceof Oi&&typeof s.pipe=="function"&&s.pipe!==Ds.Writable.prototype.pipe,kr=s=>!!s&&typeof s=="object"&&s instanceof Oi&&typeof s.write=="function"&&typeof s.end=="function",q=Symbol("EOF"),j=Symbol("maybeEmitEnd"),rt=Symbol("emittedEnd"),xe=Symbol("emittingEnd"),jt=Symbol("emittedError"),Le=Symbol("closed"),xs=Symbol("read"),Ne=Symbol("flush"),Ls=Symbol("flushChunk"),z=Symbol("encoding"),Mt=Symbol("decoder"),b=Symbol("flowing"),Qt=Symbol("paused"),Bt=Symbol("resume"),g=Symbol("buffer"),D=Symbol("pipes"),_=Symbol("bufferLength"),Si=Symbol("bufferPush"),De=Symbol("bufferShift"),L=Symbol("objectMode"),w=Symbol("destroyed"),yi=Symbol("error"),Ri=Symbol("emitData"),Ns=Symbol("emitEnd"),bi=Symbol("emitEnd2"),Z=Symbol("async"),gi=Symbol("abort"),Ae=Symbol("aborted"),Jt=Symbol("signal"),yt=Symbol("dataListeners"),C=Symbol("discarded"),te=s=>Promise.resolve().then(s),vr=s=>s(),Mr=s=>s==="end"||s==="finish"||s==="prefinish",Br=s=>s instanceof ArrayBuffer||!!s&&typeof s=="object"&&s.constructor&&s.constructor.name==="ArrayBuffer"&&s.byteLength>=0,Pr=s=>!Buffer.isBuffer(s)&&ArrayBuffer.isView(s),Ie=class{src;dest;opts;ondrain;constructor(t,e,i){this.src=t,this.dest=e,this.opts=i,this.ondrain=()=>t[Bt](),this.dest.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(t){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},_i=class extends Ie{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(t,e,i){super(t,e,i),this.proxyErrors=r=>this.dest.emit("error",r),t.on("error",this.proxyErrors)}},zr=s=>!!s.objectMode,Ur=s=>!s.objectMode&&!!s.encoding&&s.encoding!=="buffer",A=class extends Oi{[b]=!1;[Qt]=!1;[D]=[];[g]=[];[L];[z];[Z];[Mt];[q]=!1;[rt]=!1;[xe]=!1;[Le]=!1;[jt]=null;[_]=0;[w]=!1;[Jt];[Ae]=!1;[yt]=0;[C]=!1;writable=!0;readable=!0;constructor(...t){let e=t[0]||{};if(super(),e.objectMode&&typeof e.encoding=="string")throw new TypeError("Encoding and objectMode may not be used together");zr(e)?(this[L]=!0,this[z]=null):Ur(e)?(this[z]=e.encoding,this[L]=!1):(this[L]=!1,this[z]=null),this[Z]=!!e.async,this[Mt]=this[z]?new Ir(this[z]):null,e&&e.debugExposeBuffer===!0&&Object.defineProperty(this,"buffer",{get:()=>this[g]}),e&&e.debugExposePipes===!0&&Object.defineProperty(this,"pipes",{get:()=>this[D]});let{signal:i}=e;i&&(this[Jt]=i,i.aborted?this[gi]():i.addEventListener("abort",()=>this[gi]()))}get bufferLength(){return this[_]}get encoding(){return this[z]}set encoding(t){throw new Error("Encoding must be set at instantiation time")}setEncoding(t){throw new Error("Encoding must be set at instantiation time")}get objectMode(){return this[L]}set objectMode(t){throw new Error("objectMode must be set at instantiation time")}get async(){return this[Z]}set async(t){this[Z]=this[Z]||!!t}[gi](){this[Ae]=!0,this.emit("abort",this[Jt]?.reason),this.destroy(this[Jt]?.reason)}get aborted(){return this[Ae]}set aborted(t){}write(t,e,i){if(this[Ae])return!1;if(this[q])throw new Error("write after end");if(this[w])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;typeof e=="function"&&(i=e,e="utf8"),e||(e="utf8");let r=this[Z]?te:vr;if(!this[L]&&!Buffer.isBuffer(t)){if(Pr(t))t=Buffer.from(t.buffer,t.byteOffset,t.byteLength);else if(Br(t))t=Buffer.from(t);else if(typeof t!="string")throw new Error("Non-contiguous data written to non-objectMode stream")}return this[L]?(this[b]&&this[_]!==0&&this[Ne](!0),this[b]?this.emit("data",t):this[Si](t),this[_]!==0&&this.emit("readable"),i&&r(i),this[b]):t.length?(typeof t=="string"&&!(e===this[z]&&!this[Mt]?.lastNeed)&&(t=Buffer.from(t,e)),Buffer.isBuffer(t)&&this[z]&&(t=this[Mt].write(t)),this[b]&&this[_]!==0&&this[Ne](!0),this[b]?this.emit("data",t):this[Si](t),this[_]!==0&&this.emit("readable"),i&&r(i),this[b]):(this[_]!==0&&this.emit("readable"),i&&r(i),this[b])}read(t){if(this[w])return null;if(this[C]=!1,this[_]===0||t===0||t&&t>this[_])return this[j](),null;this[L]&&(t=null),this[g].length>1&&!this[L]&&(this[g]=[this[z]?this[g].join(""):Buffer.concat(this[g],this[_])]);let e=this[xs](t||null,this[g][0]);return this[j](),e}[xs](t,e){if(this[L])this[De]();else{let i=e;t===i.length||t===null?this[De]():typeof i=="string"?(this[g][0]=i.slice(t),e=i.slice(0,t),this[_]-=t):(this[g][0]=i.subarray(t),e=i.subarray(0,t),this[_]-=t)}return this.emit("data",e),!this[g].length&&!this[q]&&this.emit("drain"),e}end(t,e,i){return typeof t=="function"&&(i=t,t=void 0),typeof e=="function"&&(i=e,e="utf8"),t!==void 0&&this.write(t,e),i&&this.once("end",i),this[q]=!0,this.writable=!1,(this[b]||!this[Qt])&&this[j](),this}[Bt](){this[w]||(!this[yt]&&!this[D].length&&(this[C]=!0),this[Qt]=!1,this[b]=!0,this.emit("resume"),this[g].length?this[Ne]():this[q]?this[j]():this.emit("drain"))}resume(){return this[Bt]()}pause(){this[b]=!1,this[Qt]=!0,this[C]=!1}get destroyed(){return this[w]}get flowing(){return this[b]}get paused(){return this[Qt]}[Si](t){this[L]?this[_]+=1:this[_]+=t.length,this[g].push(t)}[De](){return this[L]?this[_]-=1:this[_]-=this[g][0].length,this[g].shift()}[Ne](t=!1){do;while(this[Ls](this[De]())&&this[g].length);!t&&!this[g].length&&!this[q]&&this.emit("drain")}[Ls](t){return this.emit("data",t),this[b]}pipe(t,e){if(this[w])return t;this[C]=!1;let i=this[rt];return e=e||{},t===Ts.stdout||t===Ts.stderr?e.end=!1:e.end=e.end!==!1,e.proxyErrors=!!e.proxyErrors,i?e.end&&t.end():(this[D].push(e.proxyErrors?new _i(this,t,e):new Ie(this,t,e)),this[Z]?te(()=>this[Bt]()):this[Bt]()),t}unpipe(t){let e=this[D].find(i=>i.dest===t);e&&(this[D].length===1?(this[b]&&this[yt]===0&&(this[b]=!1),this[D]=[]):this[D].splice(this[D].indexOf(e),1),e.unpipe())}addListener(t,e){return this.on(t,e)}on(t,e){let i=super.on(t,e);if(t==="data")this[C]=!1,this[yt]++,!this[D].length&&!this[b]&&this[Bt]();else if(t==="readable"&&this[_]!==0)super.emit("readable");else if(Mr(t)&&this[rt])super.emit(t),this.removeAllListeners(t);else if(t==="error"&&this[jt]){let r=e;this[Z]?te(()=>r.call(this,this[jt])):r.call(this,this[jt])}return i}removeListener(t,e){return this.off(t,e)}off(t,e){let i=super.off(t,e);return t==="data"&&(this[yt]=this.listeners("data").length,this[yt]===0&&!this[C]&&!this[D].length&&(this[b]=!1)),i}removeAllListeners(t){let e=super.removeAllListeners(t);return(t==="data"||t===void 0)&&(this[yt]=0,!this[C]&&!this[D].length&&(this[b]=!1)),e}get emittedEnd(){return this[rt]}[j](){!this[xe]&&!this[rt]&&!this[w]&&this[g].length===0&&this[q]&&(this[xe]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[Le]&&this.emit("close"),this[xe]=!1)}emit(t,...e){let i=e[0];if(t!=="error"&&t!=="close"&&t!==w&&this[w])return!1;if(t==="data")return!this[L]&&!i?!1:this[Z]?(te(()=>this[Ri](i)),!0):this[Ri](i);if(t==="end")return this[Ns]();if(t==="close"){if(this[Le]=!0,!this[rt]&&!this[w])return!1;let n=super.emit("close");return this.removeAllListeners("close"),n}else if(t==="error"){this[jt]=i,super.emit(yi,i);let n=!this[Jt]||this.listeners("error").length?super.emit("error",i):!1;return this[j](),n}else if(t==="resume"){let n=super.emit("resume");return this[j](),n}else if(t==="finish"||t==="prefinish"){let n=super.emit(t);return this.removeAllListeners(t),n}let r=super.emit(t,...e);return this[j](),r}[Ri](t){for(let i of this[D])i.dest.write(t)===!1&&this.pause();let e=this[C]?!1:super.emit("data",t);return this[j](),e}[Ns](){return this[rt]?!1:(this[rt]=!0,this.readable=!1,this[Z]?(te(()=>this[bi]()),!0):this[bi]())}[bi](){if(this[Mt]){let e=this[Mt].end();if(e){for(let i of this[D])i.dest.write(e);this[C]||super.emit("data",e)}}for(let e of this[D])e.end();let t=super.emit("end");return this.removeAllListeners("end"),t}async collect(){let t=Object.assign([],{dataLength:0});this[L]||(t.dataLength=0);let e=this.promise();return this.on("data",i=>{t.push(i),this[L]||(t.dataLength+=i.length)}),await e,t}async concat(){if(this[L])throw new Error("cannot concat in objectMode");let t=await this.collect();return this[z]?t.join(""):Buffer.concat(t,t.dataLength)}async promise(){return new Promise((t,e)=>{this.on(w,()=>e(new Error("stream destroyed"))),this.on("error",i=>e(i)),this.on("end",()=>t())})}[Symbol.asyncIterator](){this[C]=!1;let t=!1,e=async()=>(this.pause(),t=!0,{value:void 0,done:!0});return{next:()=>{if(t)return e();let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[q])return e();let n,o,h=d=>{this.off("data",a),this.off("end",l),this.off(w,c),e(),o(d)},a=d=>{this.off("error",h),this.off("end",l),this.off(w,c),this.pause(),n({value:d,done:!!this[q]})},l=()=>{this.off("error",h),this.off("data",a),this.off(w,c),e(),n({done:!0,value:void 0})},c=()=>h(new Error("stream destroyed"));return new Promise((d,S)=>{o=S,n=d,this.once(w,c),this.once("error",h),this.once("end",l),this.once("data",a)})},throw:e,return:e,[Symbol.asyncIterator](){return this},[Symbol.asyncDispose]:async()=>{}}}[Symbol.iterator](){this[C]=!1;let t=!1,e=()=>(this.pause(),this.off(yi,e),this.off(w,e),this.off("end",e),t=!0,{done:!0,value:void 0}),i=()=>{if(t)return e();let r=this.read();return r===null?e():{done:!1,value:r}};return this.once("end",e),this.once(yi,e),this.once(w,e),{next:i,throw:e,return:e,[Symbol.iterator](){return this},[Symbol.dispose]:()=>{}}}destroy(t){if(this[w])return t?this.emit("error",t):this.emit(w),this;this[w]=!0,this[C]=!0,this[g].length=0,this[_]=0;let e=this;return typeof e.close=="function"&&!this[Le]&&e.close(),t?this.emit("error",t):this.emit(w),this}static get isStream(){return Cr}};var Wr=I.writev,ot=Symbol("_autoClose"),H=Symbol("_close"),ee=Symbol("_ended"),m=Symbol("_fd"),Ti=Symbol("_finished"),J=Symbol("_flags"),xi=Symbol("_flush"),Ai=Symbol("_handleChunk"),Ii=Symbol("_makeBuf"),se=Symbol("_mode"),Ce=Symbol("_needDrain"),Ut=Symbol("_onerror"),Ht=Symbol("_onopen"),Li=Symbol("_onread"),Pt=Symbol("_onwrite"),ht=Symbol("_open"),U=Symbol("_path"),nt=Symbol("_pos"),Y=Symbol("_queue"),zt=Symbol("_read"),Ni=Symbol("_readSize"),Q=Symbol("_reading"),ie=Symbol("_remain"),Di=Symbol("_size"),Fe=Symbol("_write"),Rt=Symbol("_writing"),ke=Symbol("_defaultFlag"),bt=Symbol("_errored"),gt=class extends A{[bt]=!1;[m];[U];[Ni];[Q]=!1;[Di];[ie];[ot];constructor(t,e){if(e=e||{},super(e),this.readable=!0,this.writable=!1,typeof t!="string")throw new TypeError("path must be a string");this[bt]=!1,this[m]=typeof e.fd=="number"?e.fd:void 0,this[U]=t,this[Ni]=e.readSize||16*1024*1024,this[Q]=!1,this[Di]=typeof e.size=="number"?e.size:1/0,this[ie]=this[Di],this[ot]=typeof e.autoClose=="boolean"?e.autoClose:!0,typeof this[m]=="number"?this[zt]():this[ht]()}get fd(){return this[m]}get path(){return this[U]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[ht](){I.open(this[U],"r",(t,e)=>this[Ht](t,e))}[Ht](t,e){t?this[Ut](t):(this[m]=e,this.emit("open",e),this[zt]())}[Ii](){return Buffer.allocUnsafe(Math.min(this[Ni],this[ie]))}[zt](){if(!this[Q]){this[Q]=!0;let t=this[Ii]();if(t.length===0)return process.nextTick(()=>this[Li](null,0,t));I.read(this[m],t,0,t.length,null,(e,i,r)=>this[Li](e,i,r))}}[Li](t,e,i){this[Q]=!1,t?this[Ut](t):this[Ai](e,i)&&this[zt]()}[H](){if(this[ot]&&typeof this[m]=="number"){let t=this[m];this[m]=void 0,I.close(t,e=>e?this.emit("error",e):this.emit("close"))}}[Ut](t){this[Q]=!0,this[H](),this.emit("error",t)}[Ai](t,e){let i=!1;return this[ie]-=t,t>0&&(i=super.write(tthis[Ht](t,e))}[Ht](t,e){this[ke]&&this[J]==="r+"&&t&&t.code==="ENOENT"?(this[J]="w",this[ht]()):t?this[Ut](t):(this[m]=e,this.emit("open",e),this[Rt]||this[xi]())}end(t,e){return t&&this.write(t,e),this[ee]=!0,!this[Rt]&&!this[Y].length&&typeof this[m]=="number"&&this[Pt](null,0),this}write(t,e){return typeof t=="string"&&(t=Buffer.from(t,e)),this[ee]?(this.emit("error",new Error("write() after end()")),!1):this[m]===void 0||this[Rt]||this[Y].length?(this[Y].push(t),this[Ce]=!0,!1):(this[Rt]=!0,this[Fe](t),!0)}[Fe](t){I.write(this[m],t,0,t.length,this[nt],(e,i)=>this[Pt](e,i))}[Pt](t,e){t?this[Ut](t):(this[nt]!==void 0&&typeof e=="number"&&(this[nt]+=e),this[Y].length?this[xi]():(this[Rt]=!1,this[ee]&&!this[Ti]?(this[Ti]=!0,this[H](),this.emit("finish")):this[Ce]&&(this[Ce]=!1,this.emit("drain"))))}[xi](){if(this[Y].length===0)this[ee]&&this[Pt](null,0);else if(this[Y].length===1)this[Fe](this[Y].pop());else{let t=this[Y];this[Y]=[],Wr(this[m],t,this[nt],(e,i)=>this[Pt](e,i))}}[H](){if(this[ot]&&typeof this[m]=="number"){let t=this[m];this[m]=void 0,I.close(t,e=>e?this.emit("error",e):this.emit("close"))}}},Wt=class extends tt{[ht](){let t;if(this[ke]&&this[J]==="r+")try{t=I.openSync(this[U],this[J],this[se])}catch(e){if(e?.code==="ENOENT")return this[J]="w",this[ht]();throw e}else t=I.openSync(this[U],this[J],this[se]);this[Ht](null,t)}[H](){if(this[ot]&&typeof this[m]=="number"){let t=this[m];this[m]=void 0,I.closeSync(t),this.emit("close")}}[Fe](t){let e=!0;try{this[Pt](null,I.writeSync(this[m],t,0,t.length,this[nt])),e=!1}finally{if(e)try{this[H]()}catch{}}}};import or from"node:path";import Vt from"node:fs";import{dirname as bn,parse as gn}from"path";var Gr=new Map([["C","cwd"],["f","file"],["z","gzip"],["P","preservePaths"],["U","unlink"],["strip-components","strip"],["stripComponents","strip"],["keep-newer","newer"],["keepNewer","newer"],["keep-newer-files","newer"],["keepNewerFiles","newer"],["k","keep"],["keep-existing","keep"],["keepExisting","keep"],["m","noMtime"],["no-mtime","noMtime"],["p","preserveOwner"],["L","follow"],["h","follow"],["onentry","onReadEntry"]]),As=s=>!!s.sync&&!!s.file,Is=s=>!s.sync&&!!s.file,Cs=s=>!!s.sync&&!s.file,Fs=s=>!s.sync&&!s.file;var ks=s=>!!s.file;var Zr=s=>{let t=Gr.get(s);return t||s},re=(s={})=>{if(!s)return{};let t={};for(let[e,i]of Object.entries(s)){let r=Zr(e);t[r]=i}return t.chmod===void 0&&t.noChmod===!1&&(t.chmod=!0),delete t.noChmod,t};var K=(s,t,e,i,r)=>Object.assign((n=[],o,h)=>{Array.isArray(n)&&(o=n,n={}),typeof o=="function"&&(h=o,o=void 0),o?o=Array.from(o):o=[];let a=re(n);if(r?.(a,o),As(a)){if(typeof h=="function")throw new TypeError("callback not supported for sync tar functions");return s(a,o)}else if(Is(a)){let l=t(a,o),c=h||void 0;return c?l.then(()=>c(),c):l}else if(Cs(a)){if(typeof h=="function")throw new TypeError("callback not supported for sync tar functions");return e(a,o)}else if(Fs(a)){if(typeof h=="function")throw new TypeError("callback only supported with file option");return i(a,o)}else throw new Error("impossible options??")},{syncFile:s,asyncFile:t,syncNoFile:e,asyncNoFile:i,validate:r});import{EventEmitter as wn}from"events";import vi from"assert";import{Buffer as _t}from"buffer";import*as vs from"zlib";import Yr from"zlib";var Kr=Yr.constants||{ZLIB_VERNUM:4736},M=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:1/0,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},Kr));var Vr=_t.concat,Ms=Object.getOwnPropertyDescriptor(_t,"concat"),$r=s=>s,Fi=Ms?.writable===!0||Ms?.set!==void 0?s=>{_t.concat=s?$r:Vr}:s=>{},Ot=Symbol("_superWrite"),Gt=class extends Error{code;errno;constructor(t,e){super("zlib: "+t.message,{cause:t}),this.code=t.code,this.errno=t.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+t.message,Error.captureStackTrace(this,e??this.constructor)}get name(){return"ZlibError"}},ki=Symbol("flushFlag"),ne=class extends A{#t=!1;#i=!1;#s;#n;#r;#e;#o;get sawError(){return this.#t}get handle(){return this.#e}get flushFlag(){return this.#s}constructor(t,e){if(!t||typeof t!="object")throw new TypeError("invalid options for ZlibBase constructor");if(super(t),this.#s=t.flush??0,this.#n=t.finishFlush??0,this.#r=t.fullFlushFlag??0,typeof vs[e]!="function")throw new TypeError("Compression method not supported: "+e);try{this.#e=new vs[e](t)}catch(i){throw new Gt(i,this.constructor)}this.#o=i=>{this.#t||(this.#t=!0,this.close(),this.emit("error",i))},this.#e?.on("error",i=>this.#o(new Gt(i))),this.once("end",()=>this.close)}close(){this.#e&&(this.#e.close(),this.#e=void 0,this.emit("close"))}reset(){if(!this.#t)return vi(this.#e,"zlib binding closed"),this.#e.reset?.()}flush(t){this.ended||(typeof t!="number"&&(t=this.#r),this.write(Object.assign(_t.alloc(0),{[ki]:t})))}end(t,e,i){return typeof t=="function"&&(i=t,e=void 0,t=void 0),typeof e=="function"&&(i=e,e=void 0),t&&(e?this.write(t,e):this.write(t)),this.flush(this.#n),this.#i=!0,super.end(i)}get ended(){return this.#i}[Ot](t){return super.write(t)}write(t,e,i){if(typeof e=="function"&&(i=e,e="utf8"),typeof t=="string"&&(t=_t.from(t,e)),this.#t)return;vi(this.#e,"zlib binding closed");let r=this.#e._handle,n=r.close;r.close=()=>{};let o=this.#e.close;this.#e.close=()=>{},Fi(!0);let h;try{let l=typeof t[ki]=="number"?t[ki]:this.#s;h=this.#e._processChunk(t,l),Fi(!1)}catch(l){Fi(!1),this.#o(new Gt(l,this.write))}finally{this.#e&&(this.#e._handle=r,r.close=n,this.#e.close=o,this.#e.removeAllListeners("error"))}this.#e&&this.#e.on("error",l=>this.#o(new Gt(l,this.write)));let a;if(h)if(Array.isArray(h)&&h.length>0){let l=h[0];a=this[Ot](_t.from(l));for(let c=1;c{typeof r=="function"&&(n=r,r=this.flushFlag),this.flush(r),n?.()};try{this.handle.params(t,e)}finally{this.handle.flush=i}this.handle&&(this.#t=t,this.#i=e)}}}};var Be=class extends Me{#t;constructor(t){super(t,"Gzip"),this.#t=t&&!!t.portable}[Ot](t){return this.#t?(this.#t=!1,t[9]=255,super[Ot](t)):super[Ot](t)}};var Pe=class extends Me{constructor(t){super(t,"Unzip")}},ze=class extends ne{constructor(t,e){t=t||{},t.flush=t.flush||M.BROTLI_OPERATION_PROCESS,t.finishFlush=t.finishFlush||M.BROTLI_OPERATION_FINISH,t.fullFlushFlag=M.BROTLI_OPERATION_FLUSH,super(t,e)}},Ue=class extends ze{constructor(t){super(t,"BrotliCompress")}},He=class extends ze{constructor(t){super(t,"BrotliDecompress")}},We=class extends ne{constructor(t,e){t=t||{},t.flush=t.flush||M.ZSTD_e_continue,t.finishFlush=t.finishFlush||M.ZSTD_e_end,t.fullFlushFlag=M.ZSTD_e_flush,super(t,e)}},Ge=class extends We{constructor(t){super(t,"ZstdCompress")}},Ze=class extends We{constructor(t){super(t,"ZstdDecompress")}};import{posix as Zt}from"node:path";var Bs=(s,t)=>{if(Number.isSafeInteger(s))s<0?jr(s,t):qr(s,t);else throw Error("cannot encode number outside of javascript safe integer range");return t},qr=(s,t)=>{t[0]=128;for(var e=t.length;e>1;e--)t[e-1]=s&255,s=Math.floor(s/256)},jr=(s,t)=>{t[0]=255;var e=!1;s=s*-1;for(var i=t.length;i>1;i--){var r=s&255;s=Math.floor(s/256),e?t[i-1]=zs(r):r===0?t[i-1]=0:(e=!0,t[i-1]=Us(r))}},Ps=s=>{let t=s[0],e=t===128?Jr(s.subarray(1,s.length)):t===255?Qr(s):null;if(e===null)throw Error("invalid base256 encoding");if(!Number.isSafeInteger(e))throw Error("parsed number outside of javascript safe integer range");return e},Qr=s=>{for(var t=s.length,e=0,i=!1,r=t-1;r>-1;r--){var n=Number(s[r]),o;i?o=zs(n):n===0?o=n:(i=!0,o=Us(n)),o!==0&&(e-=o*Math.pow(256,t-r-1))}return e},Jr=s=>{for(var t=s.length,e=0,i=t-1;i>-1;i--){var r=Number(s[i]);r!==0&&(e+=r*Math.pow(256,t-i-1))}return e},zs=s=>(255^s)&255,Us=s=>(255^s)+1&255;var Mi={};Ar(Mi,{code:()=>Ye,isCode:()=>oe,isName:()=>en,name:()=>he});var oe=s=>he.has(s),en=s=>Ye.has(s),he=new Map([["0","File"],["","OldFile"],["1","Link"],["2","SymbolicLink"],["3","CharacterDevice"],["4","BlockDevice"],["5","Directory"],["6","FIFO"],["7","ContiguousFile"],["g","GlobalExtendedHeader"],["x","ExtendedHeader"],["A","SolarisACL"],["D","GNUDumpDir"],["I","Inode"],["K","NextFileHasLongLinkpath"],["L","NextFileHasLongPath"],["M","ContinuationFile"],["N","OldGnuLongPath"],["S","SparseFile"],["V","TapeVolumeHeader"],["X","OldExtendedHeader"]]),Ye=new Map(Array.from(he).map(s=>[s[1],s[0]]));var F=class{cksumValid=!1;needPax=!1;nullBlock=!1;block;path;mode;uid;gid;size;cksum;#t="Unsupported";linkpath;uname;gname;devmaj=0;devmin=0;atime;ctime;mtime;charset;comment;constructor(t,e=0,i,r){Buffer.isBuffer(t)?this.decode(t,e||0,i,r):t&&this.#i(t)}decode(t,e,i,r){if(e||(e=0),!t||!(t.length>=e+512))throw new Error("need 512 bytes for header");this.path=i?.path??Tt(t,e,100),this.mode=i?.mode??r?.mode??at(t,e+100,8),this.uid=i?.uid??r?.uid??at(t,e+108,8),this.gid=i?.gid??r?.gid??at(t,e+116,8),this.size=i?.size??r?.size??at(t,e+124,12),this.mtime=i?.mtime??r?.mtime??Bi(t,e+136,12),this.cksum=at(t,e+148,12),r&&this.#i(r,!0),i&&this.#i(i);let n=Tt(t,e+156,1);if(oe(n)&&(this.#t=n||"0"),this.#t==="0"&&this.path.slice(-1)==="/"&&(this.#t="5"),this.#t==="5"&&(this.size=0),this.linkpath=Tt(t,e+157,100),t.subarray(e+257,e+265).toString()==="ustar\x0000")if(this.uname=i?.uname??r?.uname??Tt(t,e+265,32),this.gname=i?.gname??r?.gname??Tt(t,e+297,32),this.devmaj=i?.devmaj??r?.devmaj??at(t,e+329,8)??0,this.devmin=i?.devmin??r?.devmin??at(t,e+337,8)??0,t[e+475]!==0){let h=Tt(t,e+345,155);this.path=h+"/"+this.path}else{let h=Tt(t,e+345,130);h&&(this.path=h+"/"+this.path),this.atime=i?.atime??r?.atime??Bi(t,e+476,12),this.ctime=i?.ctime??r?.ctime??Bi(t,e+488,12)}let o=256;for(let h=e;h!(r==null||i==="path"&&e||i==="linkpath"&&e||i==="global"))))}encode(t,e=0){if(t||(t=this.block=Buffer.alloc(512)),this.#t==="Unsupported"&&(this.#t="0"),!(t.length>=e+512))throw new Error("need 512 bytes for header");let i=this.ctime||this.atime?130:155,r=sn(this.path||"",i),n=r[0],o=r[1];this.needPax=!!r[2],this.needPax=xt(t,e,100,n)||this.needPax,this.needPax=lt(t,e+100,8,this.mode)||this.needPax,this.needPax=lt(t,e+108,8,this.uid)||this.needPax,this.needPax=lt(t,e+116,8,this.gid)||this.needPax,this.needPax=lt(t,e+124,12,this.size)||this.needPax,this.needPax=Pi(t,e+136,12,this.mtime)||this.needPax,t[e+156]=this.#t.charCodeAt(0),this.needPax=xt(t,e+157,100,this.linkpath)||this.needPax,t.write("ustar\x0000",e+257,8),this.needPax=xt(t,e+265,32,this.uname)||this.needPax,this.needPax=xt(t,e+297,32,this.gname)||this.needPax,this.needPax=lt(t,e+329,8,this.devmaj)||this.needPax,this.needPax=lt(t,e+337,8,this.devmin)||this.needPax,this.needPax=xt(t,e+345,i,o)||this.needPax,t[e+475]!==0?this.needPax=xt(t,e+345,155,o)||this.needPax:(this.needPax=xt(t,e+345,130,o)||this.needPax,this.needPax=Pi(t,e+476,12,this.atime)||this.needPax,this.needPax=Pi(t,e+488,12,this.ctime)||this.needPax);let h=256;for(let a=e;a{let i=s,r="",n,o=Zt.parse(s).root||".";if(Buffer.byteLength(i)<100)n=[i,r,!1];else{r=Zt.dirname(i),i=Zt.basename(i);do Buffer.byteLength(i)<=100&&Buffer.byteLength(r)<=t?n=[i,r,!1]:Buffer.byteLength(i)>100&&Buffer.byteLength(r)<=t?n=[i.slice(0,99),r,!0]:(i=Zt.join(Zt.basename(r),i),r=Zt.dirname(r));while(r!==o&&n===void 0);n||(n=[s.slice(0,99),"",!0])}return n},Tt=(s,t,e)=>s.subarray(t,t+e).toString("utf8").replace(/\0.*/,""),Bi=(s,t,e)=>rn(at(s,t,e)),rn=s=>s===void 0?void 0:new Date(s*1e3),at=(s,t,e)=>Number(s[t])&128?Ps(s.subarray(t,t+e)):on(s,t,e),nn=s=>isNaN(s)?void 0:s,on=(s,t,e)=>nn(parseInt(s.subarray(t,t+e).toString("utf8").replace(/\0.*$/,"").trim(),8)),hn={12:8589934591,8:2097151},lt=(s,t,e,i)=>i===void 0?!1:i>hn[e]||i<0?(Bs(i,s.subarray(t,t+e)),!0):(an(s,t,e,i),!1),an=(s,t,e,i)=>s.write(ln(i,e),t,e,"ascii"),ln=(s,t)=>cn(Math.floor(s).toString(8),t),cn=(s,t)=>(s.length===t-1?s:new Array(t-s.length-1).join("0")+s+" ")+"\0",Pi=(s,t,e,i)=>i===void 0?!1:lt(s,t,e,i.getTime()/1e3),fn=new Array(156).join("\0"),xt=(s,t,e,i)=>i===void 0?!1:(s.write(i+fn,t,e,"utf8"),i.length!==Buffer.byteLength(i)||i.length>e);import{basename as dn}from"node:path";var ct=class s{atime;mtime;ctime;charset;comment;gid;uid;gname;uname;linkpath;dev;ino;nlink;path;size;mode;global;constructor(t,e=!1){this.atime=t.atime,this.charset=t.charset,this.comment=t.comment,this.ctime=t.ctime,this.dev=t.dev,this.gid=t.gid,this.global=e,this.gname=t.gname,this.ino=t.ino,this.linkpath=t.linkpath,this.mtime=t.mtime,this.nlink=t.nlink,this.path=t.path,this.size=t.size,this.uid=t.uid,this.uname=t.uname}encode(){let t=this.encodeBody();if(t==="")return Buffer.allocUnsafe(0);let e=Buffer.byteLength(t),i=512*Math.ceil(1+e/512),r=Buffer.allocUnsafe(i);for(let n=0;n<512;n++)r[n]=0;new F({path:("PaxHeader/"+dn(this.path??"")).slice(0,99),mode:this.mode||420,uid:this.uid,gid:this.gid,size:e,mtime:this.mtime,type:this.global?"GlobalExtendedHeader":"ExtendedHeader",linkpath:"",uname:this.uname||"",gname:this.gname||"",devmaj:0,devmin:0,atime:this.atime,ctime:this.ctime}).encode(r),r.write(t,512,e,"utf8");for(let n=e+512;n=Math.pow(10,o)&&(o+=1),o+n+r}static parse(t,e,i=!1){return new s(un(mn(t),e),i)}},un=(s,t)=>t?Object.assign({},t,s):s,mn=s=>s.replace(/\n$/,"").split(`
-`).reduce(pn,Object.create(null)),pn=(s,t)=>{let e=parseInt(t,10);if(e!==Buffer.byteLength(t)+1)return s;t=t.slice((e+" ").length);let i=t.split("="),r=i.shift();if(!r)return s;let n=r.replace(/^SCHILY\.(dev|ino|nlink)/,"$1"),o=i.join("=");return s[n]=/^([A-Z]+\.)?([mac]|birth|creation)time$/.test(n)?new Date(Number(o)*1e3):/^[0-9]+$/.test(o)?+o:o,s};var En=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,f=En!=="win32"?s=>s:s=>s&&s.replace(/\\/g,"/");var Yt=class extends A{extended;globalExtended;header;startBlockSize;blockRemain;remain;type;meta=!1;ignore=!1;path;mode;uid;gid;uname;gname;size=0;mtime;atime;ctime;linkpath;dev;ino;nlink;invalid=!1;absolute;unsupported=!1;constructor(t,e,i){switch(super({}),this.pause(),this.extended=e,this.globalExtended=i,this.header=t,this.remain=t.size??0,this.startBlockSize=512*Math.ceil(this.remain/512),this.blockRemain=this.startBlockSize,this.type=t.type,this.type){case"File":case"OldFile":case"Link":case"SymbolicLink":case"CharacterDevice":case"BlockDevice":case"Directory":case"FIFO":case"ContiguousFile":case"GNUDumpDir":break;case"NextFileHasLongLinkpath":case"NextFileHasLongPath":case"OldGnuLongPath":case"GlobalExtendedHeader":case"ExtendedHeader":case"OldExtendedHeader":this.meta=!0;break;default:this.ignore=!0}if(!t.path)throw new Error("no path provided for tar.ReadEntry");this.path=f(t.path),this.mode=t.mode,this.mode&&(this.mode=this.mode&4095),this.uid=t.uid,this.gid=t.gid,this.uname=t.uname,this.gname=t.gname,this.size=this.remain,this.mtime=t.mtime,this.atime=t.atime,this.ctime=t.ctime,this.linkpath=t.linkpath?f(t.linkpath):void 0,this.uname=t.uname,this.gname=t.gname,e&&this.#t(e),i&&this.#t(i,!0)}write(t){let e=t.length;if(e>this.blockRemain)throw new Error("writing more to entry than is appropriate");let i=this.remain,r=this.blockRemain;return this.remain=Math.max(0,i-e),this.blockRemain=Math.max(0,r-e),this.ignore?!0:i>=e?super.write(t):super.write(t.subarray(0,i))}#t(t,e=!1){t.path&&(t.path=f(t.path)),t.linkpath&&(t.linkpath=f(t.linkpath)),Object.assign(this,Object.fromEntries(Object.entries(t).filter(([i,r])=>!(r==null||i==="path"&&e))))}};var Lt=(s,t,e,i={})=>{s.file&&(i.file=s.file),s.cwd&&(i.cwd=s.cwd),i.code=e instanceof Error&&e.code||t,i.tarCode=t,!s.strict&&i.recoverable!==!1?(e instanceof Error&&(i=Object.assign(e,i),e=e.message),s.emit("warn",t,e,i)):e instanceof Error?s.emit("error",Object.assign(e,i)):s.emit("error",Object.assign(new Error(`${t}: ${e}`),i))};var Sn=1024*1024,Gi=Buffer.from([31,139]),Zi=Buffer.from([40,181,47,253]),yn=Math.max(Gi.length,Zi.length),B=Symbol("state"),Nt=Symbol("writeEntry"),et=Symbol("readEntry"),zi=Symbol("nextEntry"),Hs=Symbol("processEntry"),V=Symbol("extendedHeader"),ae=Symbol("globalExtendedHeader"),ft=Symbol("meta"),Ws=Symbol("emitMeta"),p=Symbol("buffer"),it=Symbol("queue"),dt=Symbol("ended"),Ui=Symbol("emittedEnd"),Dt=Symbol("emit"),y=Symbol("unzip"),Ke=Symbol("consumeChunk"),Ve=Symbol("consumeChunkSub"),Hi=Symbol("consumeBody"),Gs=Symbol("consumeMeta"),Zs=Symbol("consumeHeader"),le=Symbol("consuming"),Wi=Symbol("bufferConcat"),$e=Symbol("maybeEnd"),Kt=Symbol("writing"),ut=Symbol("aborted"),Xe=Symbol("onDone"),At=Symbol("sawValidEntry"),qe=Symbol("sawNullBlock"),je=Symbol("sawEOF"),Ys=Symbol("closeStream"),Rn=()=>!0,st=class extends wn{file;strict;maxMetaEntrySize;filter;brotli;zstd;writable=!0;readable=!1;[it]=[];[p];[et];[Nt];[B]="begin";[ft]="";[V];[ae];[dt]=!1;[y];[ut]=!1;[At];[qe]=!1;[je]=!1;[Kt]=!1;[le]=!1;[Ui]=!1;constructor(t={}){super(),this.file=t.file||"",this.on(Xe,()=>{(this[B]==="begin"||this[At]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),t.ondone?this.on(Xe,t.ondone):this.on(Xe,()=>{this.emit("prefinish"),this.emit("finish"),this.emit("end")}),this.strict=!!t.strict,this.maxMetaEntrySize=t.maxMetaEntrySize||Sn,this.filter=typeof t.filter=="function"?t.filter:Rn;let e=t.file&&(t.file.endsWith(".tar.br")||t.file.endsWith(".tbr"));this.brotli=!(t.gzip||t.zstd)&&t.brotli!==void 0?t.brotli:e?void 0:!1;let i=t.file&&(t.file.endsWith(".tar.zst")||t.file.endsWith(".tzst"));this.zstd=!(t.gzip||t.brotli)&&t.zstd!==void 0?t.zstd:i?!0:void 0,this.on("end",()=>this[Ys]()),typeof t.onwarn=="function"&&this.on("warn",t.onwarn),typeof t.onReadEntry=="function"&&this.on("entry",t.onReadEntry)}warn(t,e,i={}){Lt(this,t,e,i)}[Zs](t,e){this[At]===void 0&&(this[At]=!1);let i;try{i=new F(t,e,this[V],this[ae])}catch(r){return this.warn("TAR_ENTRY_INVALID",r)}if(i.nullBlock)this[qe]?(this[je]=!0,this[B]==="begin"&&(this[B]="header"),this[Dt]("eof")):(this[qe]=!0,this[Dt]("nullBlock"));else if(this[qe]=!1,!i.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:i});else if(!i.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:i});else{let r=i.type;if(/^(Symbolic)?Link$/.test(r)&&!i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:i});else if(!/^(Symbolic)?Link$/.test(r)&&!/^(Global)?ExtendedHeader$/.test(r)&&i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:i});else{let n=this[Nt]=new Yt(i,this[V],this[ae]);if(!this[At])if(n.remain){let o=()=>{n.invalid||(this[At]=!0)};n.on("end",o)}else this[At]=!0;n.meta?n.size>this.maxMetaEntrySize?(n.ignore=!0,this[Dt]("ignoredEntry",n),this[B]="ignore",n.resume()):n.size>0&&(this[ft]="",n.on("data",o=>this[ft]+=o),this[B]="meta"):(this[V]=void 0,n.ignore=n.ignore||!this.filter(n.path,n),n.ignore?(this[Dt]("ignoredEntry",n),this[B]=n.remain?"ignore":"header",n.resume()):(n.remain?this[B]="body":(this[B]="header",n.end()),this[et]?this[it].push(n):(this[it].push(n),this[zi]())))}}}[Ys](){queueMicrotask(()=>this.emit("close"))}[Hs](t){let e=!0;if(!t)this[et]=void 0,e=!1;else if(Array.isArray(t)){let[i,...r]=t;this.emit(i,...r)}else this[et]=t,this.emit("entry",t),t.emittedEnd||(t.on("end",()=>this[zi]()),e=!1);return e}[zi](){do;while(this[Hs](this[it].shift()));if(!this[it].length){let t=this[et];!t||t.flowing||t.size===t.remain?this[Kt]||this.emit("drain"):t.once("drain",()=>this.emit("drain"))}}[Hi](t,e){let i=this[Nt];if(!i)throw new Error("attempt to consume body without entry??");let r=i.blockRemain??0,n=r>=t.length&&e===0?t:t.subarray(e,e+r);return i.write(n),i.blockRemain||(this[B]="header",this[Nt]=void 0,i.end()),n.length}[Gs](t,e){let i=this[Nt],r=this[Hi](t,e);return!this[Nt]&&i&&this[Ws](i),r}[Dt](t,e,i){!this[it].length&&!this[et]?this.emit(t,e,i):this[it].push([t,e,i])}[Ws](t){switch(this[Dt]("meta",this[ft]),t.type){case"ExtendedHeader":case"OldExtendedHeader":this[V]=ct.parse(this[ft],this[V],!1);break;case"GlobalExtendedHeader":this[ae]=ct.parse(this[ft],this[ae],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":{let e=this[V]??Object.create(null);this[V]=e,e.path=this[ft].replace(/\0.*/,"");break}case"NextFileHasLongLinkpath":{let e=this[V]||Object.create(null);this[V]=e,e.linkpath=this[ft].replace(/\0.*/,"");break}default:throw new Error("unknown meta: "+t.type)}}abort(t){this[ut]=!0,this.emit("abort",t),this.warn("TAR_ABORT",t,{recoverable:!1})}write(t,e,i){if(typeof e=="function"&&(i=e,e=void 0),typeof t=="string"&&(t=Buffer.from(t,typeof e=="string"?e:"utf8")),this[ut])return i?.(),!1;if((this[y]===void 0||this.brotli===void 0&&this[y]===!1)&&t){if(this[p]&&(t=Buffer.concat([this[p],t]),this[p]=void 0),t.lengththis[Ke](c)),this[y].on("error",c=>this.abort(c)),this[y].on("end",()=>{this[dt]=!0,this[Ke]()}),this[Kt]=!0;let l=!!this[y][a?"end":"write"](t);return this[Kt]=!1,i?.(),l}}this[Kt]=!0,this[y]?this[y].write(t):this[Ke](t),this[Kt]=!1;let n=this[it].length?!1:this[et]?this[et].flowing:!0;return!n&&!this[it].length&&this[et]?.once("drain",()=>this.emit("drain")),i?.(),n}[Wi](t){t&&!this[ut]&&(this[p]=this[p]?Buffer.concat([this[p],t]):t)}[$e](){if(this[dt]&&!this[Ui]&&!this[ut]&&!this[le]){this[Ui]=!0;let t=this[Nt];if(t&&t.blockRemain){let e=this[p]?this[p].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${t.blockRemain} more bytes, only ${e} available)`,{entry:t}),this[p]&&t.write(this[p]),t.end()}this[Dt](Xe)}}[Ke](t){if(this[le]&&t)this[Wi](t);else if(!t&&!this[p])this[$e]();else if(t){if(this[le]=!0,this[p]){this[Wi](t);let e=this[p];this[p]=void 0,this[Ve](e)}else this[Ve](t);for(;this[p]&&this[p]?.length>=512&&!this[ut]&&!this[je];){let e=this[p];this[p]=void 0,this[Ve](e)}this[le]=!1}(!this[p]||this[dt])&&this[$e]()}[Ve](t){let e=0,i=t.length;for(;e+512<=i&&!this[ut]&&!this[je];)switch(this[B]){case"begin":case"header":this[Zs](t,e),e+=512;break;case"ignore":case"body":e+=this[Hi](t,e);break;case"meta":e+=this[Gs](t,e);break;default:throw new Error("invalid state: "+this[B])}e{let t=s.length-1,e=-1;for(;t>-1&&s.charAt(t)==="/";)e=t,t--;return e===-1?s:s.slice(0,e)};var _n=s=>{let t=s.onReadEntry;s.onReadEntry=t?e=>{t(e),e.resume()}:e=>e.resume()},Yi=(s,t)=>{let e=new Map(t.map(n=>[mt(n),!0])),i=s.filter,r=(n,o="")=>{let h=o||gn(n).root||".",a;if(n===h)a=!1;else{let l=e.get(n);l!==void 0?a=l:a=r(bn(n),h)}return e.set(n,a),a};s.filter=i?(n,o)=>i(n,o)&&r(mt(n)):n=>r(mt(n))},On=s=>{let t=new st(s),e=s.file,i;try{i=Vt.openSync(e,"r");let r=Vt.fstatSync(i),n=s.maxReadSize||16*1024*1024;if(r.size{let e=new st(s),i=s.maxReadSize||16*1024*1024,r=s.file;return new Promise((o,h)=>{e.on("error",h),e.on("end",o),Vt.stat(r,(a,l)=>{if(a)h(a);else{let c=new gt(r,{readSize:i,size:l.size});c.on("error",h),c.pipe(e)}})})},It=K(On,Tn,s=>new st(s),s=>new st(s),(s,t)=>{t?.length&&Yi(s,t),s.noResume||_n(s)});import ci from"fs";import $ from"fs";import Xs from"path";var Ki=(s,t,e)=>(s&=4095,e&&(s=(s|384)&-19),t&&(s&256&&(s|=64),s&32&&(s|=8),s&4&&(s|=1)),s);import{win32 as xn}from"node:path";var{isAbsolute:Ln,parse:Ks}=xn,ce=s=>{let t="",e=Ks(s);for(;Ln(s)||e.root;){let i=s.charAt(0)==="/"&&s.slice(0,4)!=="//?/"?"/":e.root;s=s.slice(i.length),t+=i,e=Ks(s)}return[t,s]};var Qe=["|","<",">","?",":"],Vi=Qe.map(s=>String.fromCharCode(61440+s.charCodeAt(0))),Nn=new Map(Qe.map((s,t)=>[s,Vi[t]])),Dn=new Map(Vi.map((s,t)=>[s,Qe[t]])),$i=s=>Qe.reduce((t,e)=>t.split(e).join(Nn.get(e)),s),Vs=s=>Vi.reduce((t,e)=>t.split(e).join(Dn.get(e)),s);var tr=(s,t)=>t?(s=f(s).replace(/^\.(\/|$)/,""),mt(t)+"/"+s):f(s),An=16*1024*1024,qs=Symbol("process"),js=Symbol("file"),Qs=Symbol("directory"),qi=Symbol("symlink"),Js=Symbol("hardlink"),fe=Symbol("header"),Je=Symbol("read"),ji=Symbol("lstat"),ti=Symbol("onlstat"),Qi=Symbol("onread"),Ji=Symbol("onreadlink"),ts=Symbol("openfile"),es=Symbol("onopenfile"),pt=Symbol("close"),ei=Symbol("mode"),is=Symbol("awaitDrain"),Xi=Symbol("ondrain"),X=Symbol("prefix"),de=class extends A{path;portable;myuid=process.getuid&&process.getuid()||0;myuser=process.env.USER||"";maxReadSize;linkCache;statCache;preservePaths;cwd;strict;mtime;noPax;noMtime;prefix;fd;blockLen=0;blockRemain=0;buf;pos=0;remain=0;length=0;offset=0;win32;absolute;header;type;linkpath;stat;onWriteEntry;#t=!1;constructor(t,e={}){let i=re(e);super(),this.path=f(t),this.portable=!!i.portable,this.maxReadSize=i.maxReadSize||An,this.linkCache=i.linkCache||new Map,this.statCache=i.statCache||new Map,this.preservePaths=!!i.preservePaths,this.cwd=f(i.cwd||process.cwd()),this.strict=!!i.strict,this.noPax=!!i.noPax,this.noMtime=!!i.noMtime,this.mtime=i.mtime,this.prefix=i.prefix?f(i.prefix):void 0,this.onWriteEntry=i.onWriteEntry,typeof i.onwarn=="function"&&this.on("warn",i.onwarn);let r=!1;if(!this.preservePaths){let[o,h]=ce(this.path);o&&typeof h=="string"&&(this.path=h,r=o)}this.win32=!!i.win32||process.platform==="win32",this.win32&&(this.path=Vs(this.path.replace(/\\/g,"/")),t=t.replace(/\\/g,"/")),this.absolute=f(i.absolute||Xs.resolve(this.cwd,t)),this.path===""&&(this.path="./"),r&&this.warn("TAR_ENTRY_INFO",`stripping ${r} from absolute path`,{entry:this,path:r+this.path});let n=this.statCache.get(this.absolute);n?this[ti](n):this[ji]()}warn(t,e,i={}){return Lt(this,t,e,i)}emit(t,...e){return t==="error"&&(this.#t=!0),super.emit(t,...e)}[ji](){$.lstat(this.absolute,(t,e)=>{if(t)return this.emit("error",t);this[ti](e)})}[ti](t){this.statCache.set(this.absolute,t),this.stat=t,t.isFile()||(t.size=0),this.type=In(t),this.emit("stat",t),this[qs]()}[qs](){switch(this.type){case"File":return this[js]();case"Directory":return this[Qs]();case"SymbolicLink":return this[qi]();default:return this.end()}}[ei](t){return Ki(t,this.type==="Directory",this.portable)}[X](t){return tr(t,this.prefix)}[fe](){if(!this.stat)throw new Error("cannot write header before stat");this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.onWriteEntry?.(this),this.header=new F({path:this[X](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[X](this.linkpath):this.linkpath,mode:this[ei](this.stat.mode),uid:this.portable?void 0:this.stat.uid,gid:this.portable?void 0:this.stat.gid,size:this.stat.size,mtime:this.noMtime?void 0:this.mtime||this.stat.mtime,type:this.type==="Unsupported"?void 0:this.type,uname:this.portable?void 0:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?void 0:this.stat.atime,ctime:this.portable?void 0:this.stat.ctime}),this.header.encode()&&!this.noPax&&super.write(new ct({atime:this.portable?void 0:this.header.atime,ctime:this.portable?void 0:this.header.ctime,gid:this.portable?void 0:this.header.gid,mtime:this.noMtime?void 0:this.mtime||this.header.mtime,path:this[X](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[X](this.linkpath):this.linkpath,size:this.header.size,uid:this.portable?void 0:this.header.uid,uname:this.portable?void 0:this.header.uname,dev:this.portable?void 0:this.stat.dev,ino:this.portable?void 0:this.stat.ino,nlink:this.portable?void 0:this.stat.nlink}).encode());let t=this.header?.block;if(!t)throw new Error("failed to encode header");super.write(t)}[Qs](){if(!this.stat)throw new Error("cannot create directory entry without stat");this.path.slice(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[fe](),this.end()}[qi](){$.readlink(this.absolute,(t,e)=>{if(t)return this.emit("error",t);this[Ji](e)})}[Ji](t){this.linkpath=f(t),this[fe](),this.end()}[Js](t){if(!this.stat)throw new Error("cannot create link entry without stat");this.type="Link",this.linkpath=f(Xs.relative(this.cwd,t)),this.stat.size=0,this[fe](),this.end()}[js](){if(!this.stat)throw new Error("cannot create file entry without stat");if(this.stat.nlink>1){let t=`${this.stat.dev}:${this.stat.ino}`,e=this.linkCache.get(t);if(e?.indexOf(this.cwd)===0)return this[Js](e);this.linkCache.set(t,this.absolute)}if(this[fe](),this.stat.size===0)return this.end();this[ts]()}[ts](){$.open(this.absolute,"r",(t,e)=>{if(t)return this.emit("error",t);this[es](e)})}[es](t){if(this.fd=t,this.#t)return this[pt]();if(!this.stat)throw new Error("should stat before calling onopenfile");this.blockLen=512*Math.ceil(this.stat.size/512),this.blockRemain=this.blockLen;let e=Math.min(this.blockLen,this.maxReadSize);this.buf=Buffer.allocUnsafe(e),this.offset=0,this.pos=0,this.remain=this.stat.size,this.length=this.buf.length,this[Je]()}[Je](){let{fd:t,buf:e,offset:i,length:r,pos:n}=this;if(t===void 0||e===void 0)throw new Error("cannot read file without first opening");$.read(t,e,i,r,n,(o,h)=>{if(o)return this[pt](()=>this.emit("error",o));this[Qi](h)})}[pt](t=()=>{}){this.fd!==void 0&&$.close(this.fd,t)}[Qi](t){if(t<=0&&this.remain>0){let r=Object.assign(new Error("encountered unexpected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[pt](()=>this.emit("error",r))}if(t>this.remain){let r=Object.assign(new Error("did not encounter expected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[pt](()=>this.emit("error",r))}if(!this.buf)throw new Error("should have created buffer prior to reading");if(t===this.remain)for(let r=t;rthis[Xi]())}[is](t){this.once("drain",t)}write(t,e,i){if(typeof e=="function"&&(i=e,e=void 0),typeof t=="string"&&(t=Buffer.from(t,typeof e=="string"?e:"utf8")),this.blockRemaint?this.emit("error",t):this.end());if(!this.buf)throw new Error("buffer lost somehow in ONDRAIN");this.offset>=this.length&&(this.buf=Buffer.allocUnsafe(Math.min(this.blockRemain,this.buf.length)),this.offset=0),this.length=this.buf.length-this.offset,this[Je]()}},ii=class extends de{sync=!0;[ji](){this[ti]($.lstatSync(this.absolute))}[qi](){this[Ji]($.readlinkSync(this.absolute))}[ts](){this[es]($.openSync(this.absolute,"r"))}[Je](){let t=!0;try{let{fd:e,buf:i,offset:r,length:n,pos:o}=this;if(e===void 0||i===void 0)throw new Error("fd and buf must be set in READ method");let h=$.readSync(e,i,r,n,o);this[Qi](h),t=!1}finally{if(t)try{this[pt](()=>{})}catch{}}}[is](t){t()}[pt](t=()=>{}){this.fd!==void 0&&$.closeSync(this.fd),t()}},si=class extends A{blockLen=0;blockRemain=0;buf=0;pos=0;remain=0;length=0;preservePaths;portable;strict;noPax;noMtime;readEntry;type;prefix;path;mode;uid;gid;uname;gname;header;mtime;atime;ctime;linkpath;size;onWriteEntry;warn(t,e,i={}){return Lt(this,t,e,i)}constructor(t,e={}){let i=re(e);super(),this.preservePaths=!!i.preservePaths,this.portable=!!i.portable,this.strict=!!i.strict,this.noPax=!!i.noPax,this.noMtime=!!i.noMtime,this.onWriteEntry=i.onWriteEntry,this.readEntry=t;let{type:r}=t;if(r==="Unsupported")throw new Error("writing entry that should be ignored");this.type=r,this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.prefix=i.prefix,this.path=f(t.path),this.mode=t.mode!==void 0?this[ei](t.mode):void 0,this.uid=this.portable?void 0:t.uid,this.gid=this.portable?void 0:t.gid,this.uname=this.portable?void 0:t.uname,this.gname=this.portable?void 0:t.gname,this.size=t.size,this.mtime=this.noMtime?void 0:i.mtime||t.mtime,this.atime=this.portable?void 0:t.atime,this.ctime=this.portable?void 0:t.ctime,this.linkpath=t.linkpath!==void 0?f(t.linkpath):void 0,typeof i.onwarn=="function"&&this.on("warn",i.onwarn);let n=!1;if(!this.preservePaths){let[h,a]=ce(this.path);h&&typeof a=="string"&&(this.path=a,n=h)}this.remain=t.size,this.blockRemain=t.startBlockSize,this.onWriteEntry?.(this),this.header=new F({path:this[X](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[X](this.linkpath):this.linkpath,mode:this.mode,uid:this.portable?void 0:this.uid,gid:this.portable?void 0:this.gid,size:this.size,mtime:this.noMtime?void 0:this.mtime,type:this.type,uname:this.portable?void 0:this.uname,atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime}),n&&this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute path`,{entry:this,path:n+this.path}),this.header.encode()&&!this.noPax&&super.write(new ct({atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime,gid:this.portable?void 0:this.gid,mtime:this.noMtime?void 0:this.mtime,path:this[X](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[X](this.linkpath):this.linkpath,size:this.size,uid:this.portable?void 0:this.uid,uname:this.portable?void 0:this.uname,dev:this.portable?void 0:this.readEntry.dev,ino:this.portable?void 0:this.readEntry.ino,nlink:this.portable?void 0:this.readEntry.nlink}).encode());let o=this.header?.block;if(!o)throw new Error("failed to encode header");super.write(o),t.pipe(this)}[X](t){return tr(t,this.prefix)}[ei](t){return Ki(t,this.type==="Directory",this.portable)}write(t,e,i){typeof e=="function"&&(i=e,e=void 0),typeof t=="string"&&(t=Buffer.from(t,typeof e=="string"?e:"utf8"));let r=t.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=r,super.write(t,i)}end(t,e,i){return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),typeof t=="function"&&(i=t,e=void 0,t=void 0),typeof e=="function"&&(i=e,e=void 0),typeof t=="string"&&(t=Buffer.from(t,e??"utf8")),i&&this.once("finish",i),t?super.end(t,i):super.end(i),this}},In=s=>s.isFile()?"File":s.isDirectory()?"Directory":s.isSymbolicLink()?"SymbolicLink":"Unsupported";var ri=class s{tail;head;length=0;static create(t=[]){return new s(t)}constructor(t=[]){for(let e of t)this.push(e)}*[Symbol.iterator](){for(let t=this.head;t;t=t.next)yield t.value}removeNode(t){if(t.list!==this)throw new Error("removing node which does not belong to this list");let e=t.next,i=t.prev;return e&&(e.prev=i),i&&(i.next=e),t===this.head&&(this.head=e),t===this.tail&&(this.tail=i),this.length--,t.next=void 0,t.prev=void 0,t.list=void 0,e}unshiftNode(t){if(t===this.head)return;t.list&&t.list.removeNode(t);let e=this.head;t.list=this,t.next=e,e&&(e.prev=t),this.head=t,this.tail||(this.tail=t),this.length++}pushNode(t){if(t===this.tail)return;t.list&&t.list.removeNode(t);let e=this.tail;t.list=this,t.prev=e,e&&(e.next=t),this.tail=t,this.head||(this.head=t),this.length++}push(...t){for(let e=0,i=t.length;e1)i=e;else if(this.head)r=this.head.next,i=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;r;n++)i=t(i,r.value,n),r=r.next;return i}reduceReverse(t,e){let i,r=this.tail;if(arguments.length>1)i=e;else if(this.tail)r=this.tail.prev,i=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(let n=this.length-1;r;n--)i=t(i,r.value,n),r=r.prev;return i}toArray(){let t=new Array(this.length);for(let e=0,i=this.head;i;e++)t[e]=i.value,i=i.next;return t}toArrayReverse(){let t=new Array(this.length);for(let e=0,i=this.tail;i;e++)t[e]=i.value,i=i.prev;return t}slice(t=0,e=this.length){e<0&&(e+=this.length),t<0&&(t+=this.length);let i=new s;if(ethis.length&&(e=this.length);let r=this.head,n=0;for(n=0;r&&nthis.length&&(e=this.length);let r=this.length,n=this.tail;for(;n&&r>e;r--)n=n.prev;for(;n&&r>t;r--,n=n.prev)i.push(n.value);return i}splice(t,e=0,...i){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);let r=this.head;for(let o=0;r&&o1)throw new TypeError("gzip, brotli, zstd are mutually exclusive");if(t.gzip&&(typeof t.gzip!="object"&&(t.gzip={}),this.portable&&(t.gzip.portable=!0),this.zip=new Be(t.gzip)),t.brotli&&(typeof t.brotli!="object"&&(t.brotli={}),this.zip=new Ue(t.brotli)),t.zstd&&(typeof t.zstd!="object"&&(t.zstd={}),this.zip=new Ge(t.zstd)),!this.zip)throw new Error("impossible");let e=this.zip;e.on("data",i=>super.write(i)),e.on("end",()=>super.end()),e.on("drain",()=>this[os]()),this.on("resume",()=>e.resume())}else this.on("drain",this[os]);this.noDirRecurse=!!t.noDirRecurse,this.follow=!!t.follow,this.noMtime=!!t.noMtime,t.mtime&&(this.mtime=t.mtime),this.filter=typeof t.filter=="function"?t.filter:()=>!0,this[W]=new ri,this[G]=0,this.jobs=Number(t.jobs)||4,this[pe]=!1,this[me]=!1}[nr](t){return super.write(t)}add(t){return this.write(t),this}end(t,e,i){return typeof t=="function"&&(i=t,t=void 0),typeof e=="function"&&(i=e,e=void 0),t&&this.add(t),this[me]=!0,this[Ft](),i&&i(),this}write(t){if(this[me])throw new Error("write after end");return t instanceof Yt?this[ir](t):this[oi](t),this.flowing}[ir](t){let e=f(rr.resolve(this.cwd,t.path));if(!this.filter(t.path,t))t.resume();else{let i=new fi(t.path,e);i.entry=new si(t,this[ns](i)),i.entry.on("end",()=>this[rs](i)),this[G]+=1,this[W].push(i)}this[Ft]()}[oi](t){let e=f(rr.resolve(this.cwd,t));this[W].push(new fi(t,e)),this[Ft]()}[hs](t){t.pending=!0,this[G]+=1;let e=this.follow?"stat":"lstat";ci[e](t.absolute,(i,r)=>{t.pending=!1,this[G]-=1,i?this.emit("error",i):this[ni](t,r)})}[ni](t,e){this.statCache.set(t.absolute,e),t.stat=e,this.filter(t.path,e)?e.isFile()&&e.nlink>1&&t===this[Ct]&&!this.linkCache.get(`${e.dev}:${e.ino}`)&&!this.sync&&this[ss](t):t.ignore=!0,this[Ft]()}[as](t){t.pending=!0,this[G]+=1,ci.readdir(t.absolute,(e,i)=>{if(t.pending=!1,this[G]-=1,e)return this.emit("error",e);this[hi](t,i)})}[hi](t,e){this.readdirCache.set(t.absolute,e),t.readdir=e,this[Ft]()}[Ft](){if(!this[pe]){this[pe]=!0;for(let t=this[W].head;t&&this[G]this.warn(e,i,r),noPax:this.noPax,cwd:this.cwd,absolute:t.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime,prefix:this.prefix,onWriteEntry:this.onWriteEntry}}[sr](t){this[G]+=1;try{return new this[li](t.path,this[ns](t)).on("end",()=>this[rs](t)).on("error",i=>this.emit("error",i))}catch(e){this.emit("error",e)}}[os](){this[Ct]&&this[Ct].entry&&this[Ct].entry.resume()}[ai](t){t.piped=!0,t.readdir&&t.readdir.forEach(r=>{let n=t.path,o=n==="./"?"":n.replace(/\/*$/,"/");this[oi](o+r)});let e=t.entry,i=this.zip;if(!e)throw new Error("cannot pipe without source");i?e.on("data",r=>{i.write(r)||e.pause()}):e.on("data",r=>{super.write(r)||e.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}warn(t,e,i={}){Lt(this,t,e,i)}},kt=class extends Et{sync=!0;constructor(t){super(t),this[li]=ii}pause(){}resume(){}[hs](t){let e=this.follow?"statSync":"lstatSync";this[ni](t,ci[e](t.absolute))}[as](t){this[hi](t,ci.readdirSync(t.absolute))}[ai](t){let e=t.entry,i=this.zip;if(t.readdir&&t.readdir.forEach(r=>{let n=t.path,o=n==="./"?"":n.replace(/\/*$/,"/");this[oi](o+r)}),!e)throw new Error("Cannot pipe without source");i?e.on("data",r=>{i.write(r)}):e.on("data",r=>{super[nr](r)})}};var vn=(s,t)=>{let e=new kt(s),i=new Wt(s.file,{mode:s.mode||438});e.pipe(i),hr(e,t)},Mn=(s,t)=>{let e=new Et(s),i=new tt(s.file,{mode:s.mode||438});e.pipe(i);let r=new Promise((n,o)=>{i.on("error",o),i.on("close",n),e.on("error",o)});return ar(e,t),r},hr=(s,t)=>{t.forEach(e=>{e.charAt(0)==="@"?It({file:or.resolve(s.cwd,e.slice(1)),sync:!0,noResume:!0,onReadEntry:i=>s.add(i)}):s.add(e)}),s.end()},ar=async(s,t)=>{for(let e=0;e{s.add(r)}}):s.add(i)}s.end()},Bn=(s,t)=>{let e=new kt(s);return hr(e,t),e},Pn=(s,t)=>{let e=new Et(s);return ar(e,t),e},zn=K(vn,Mn,Bn,Pn,(s,t)=>{if(!t?.length)throw new TypeError("no paths specified to add to archive")});import Lr from"node:fs";import io from"node:assert";import{randomBytes as xr}from"node:crypto";import u from"node:fs";import R from"node:path";import lr from"fs";var Un=process.env.__FAKE_PLATFORM__||process.platform,Hn=Un==="win32",{O_CREAT:Wn,O_TRUNC:Gn,O_WRONLY:Zn}=lr.constants,cr=Number(process.env.__FAKE_FS_O_FILENAME__)||lr.constants.UV_FS_O_FILEMAP||0,Yn=Hn&&!!cr,Kn=512*1024,Vn=cr|Gn|Wn|Zn,ls=Yn?s=>s"w";import ui from"node:fs";import Ee from"node:path";var cs=(s,t,e)=>{try{return ui.lchownSync(s,t,e)}catch(i){if(i?.code!=="ENOENT")throw i}},di=(s,t,e,i)=>{ui.lchown(s,t,e,r=>{i(r&&r?.code!=="ENOENT"?r:null)})},$n=(s,t,e,i,r)=>{if(t.isDirectory())fs(Ee.resolve(s,t.name),e,i,n=>{if(n)return r(n);let o=Ee.resolve(s,t.name);di(o,e,i,r)});else{let n=Ee.resolve(s,t.name);di(n,e,i,r)}},fs=(s,t,e,i)=>{ui.readdir(s,{withFileTypes:!0},(r,n)=>{if(r){if(r.code==="ENOENT")return i();if(r.code!=="ENOTDIR"&&r.code!=="ENOTSUP")return i(r)}if(r||!n.length)return di(s,t,e,i);let o=n.length,h=null,a=l=>{if(!h){if(l)return i(h=l);if(--o===0)return di(s,t,e,i)}};for(let l of n)$n(s,l,t,e,a)})},Xn=(s,t,e,i)=>{t.isDirectory()&&ds(Ee.resolve(s,t.name),e,i),cs(Ee.resolve(s,t.name),e,i)},ds=(s,t,e)=>{let i;try{i=ui.readdirSync(s,{withFileTypes:!0})}catch(r){let n=r;if(n?.code==="ENOENT")return;if(n?.code==="ENOTDIR"||n?.code==="ENOTSUP")return cs(s,t,e);throw n}for(let r of i)Xn(s,r,t,e);return cs(s,t,e)};import k from"node:fs";import qn from"node:fs/promises";import mi from"node:path";var we=class extends Error{path;code;syscall="chdir";constructor(t,e){super(`${e}: Cannot cd into '${t}'`),this.path=t,this.code=e}get name(){return"CwdError"}};var wt=class extends Error{path;symlink;syscall="symlink";code="TAR_SYMLINK_ERROR";constructor(t,e){super("TAR_SYMLINK_ERROR: Cannot extract through symbolic link"),this.symlink=t,this.path=e}get name(){return"SymlinkError"}};var jn=(s,t)=>{k.stat(s,(e,i)=>{(e||!i.isDirectory())&&(e=new we(s,e?.code||"ENOTDIR")),t(e)})},fr=(s,t,e)=>{s=f(s);let i=t.umask??18,r=t.mode|448,n=(r&i)!==0,o=t.uid,h=t.gid,a=typeof o=="number"&&typeof h=="number"&&(o!==t.processUid||h!==t.processGid),l=t.preserve,c=t.unlink,d=f(t.cwd),S=(E,x)=>{E?e(E):x&&a?fs(x,o,h,_s=>S(_s)):n?k.chmod(s,r,e):e()};if(s===d)return jn(s,S);if(l)return qn.mkdir(s,{mode:r,recursive:!0}).then(E=>S(null,E??void 0),S);let N=f(mi.relative(d,s)).split("/");us(d,N,r,c,d,void 0,S)},us=(s,t,e,i,r,n,o)=>{if(!t.length)return o(null,n);let h=t.shift(),a=f(mi.resolve(s+"/"+h));k.mkdir(a,e,dr(a,t,e,i,r,n,o))},dr=(s,t,e,i,r,n,o)=>h=>{h?k.lstat(s,(a,l)=>{if(a)a.path=a.path&&f(a.path),o(a);else if(l.isDirectory())us(s,t,e,i,r,n,o);else if(i)k.unlink(s,c=>{if(c)return o(c);k.mkdir(s,e,dr(s,t,e,i,r,n,o))});else{if(l.isSymbolicLink())return o(new wt(s,s+"/"+t.join("/")));o(h)}}):(n=n||s,us(s,t,e,i,r,n,o))},Qn=s=>{let t=!1,e;try{t=k.statSync(s).isDirectory()}catch(i){e=i?.code}finally{if(!t)throw new we(s,e??"ENOTDIR")}},ur=(s,t)=>{s=f(s);let e=t.umask??18,i=t.mode|448,r=(i&e)!==0,n=t.uid,o=t.gid,h=typeof n=="number"&&typeof o=="number"&&(n!==t.processUid||o!==t.processGid),a=t.preserve,l=t.unlink,c=f(t.cwd),d=E=>{E&&h&&ds(E,n,o),r&&k.chmodSync(s,i)};if(s===c)return Qn(c),d();if(a)return d(k.mkdirSync(s,{mode:i,recursive:!0})??void 0);let T=f(mi.relative(c,s)).split("/"),N;for(let E=T.shift(),x=c;E&&(x+="/"+E);E=T.shift()){x=f(mi.resolve(x));try{k.mkdirSync(x,i),N=N||x}catch{let Os=k.lstatSync(x);if(Os.isDirectory())continue;if(l){k.unlinkSync(x),k.mkdirSync(x,i),N=N||x;continue}else if(Os.isSymbolicLink())return new wt(x,x+"/"+T.join("/"))}}return d(N)};import{join as Er}from"node:path";var ms=Object.create(null),mr=1e4,$t=new Set,pr=s=>{$t.has(s)?$t.delete(s):ms[s]=s.normalize("NFD").toLocaleLowerCase("en").toLocaleUpperCase("en"),$t.add(s);let t=ms[s],e=$t.size-mr;if(e>mr/10){for(let i of $t)if($t.delete(i),delete ms[i],--e<=0)break}return t};var Jn=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,to=Jn==="win32",eo=s=>s.split("/").slice(0,-1).reduce((e,i)=>{let r=e[e.length-1];return r!==void 0&&(i=Er(r,i)),e.push(i||"/"),e},[]),pi=class{#t=new Map;#i=new Map;#s=new Set;reserve(t,e){t=to?["win32 parallelization disabled"]:t.map(r=>mt(Er(pr(r))));let i=new Set(t.map(r=>eo(r)).reduce((r,n)=>r.concat(n)));this.#i.set(e,{dirs:i,paths:t});for(let r of t){let n=this.#t.get(r);n?n.push(e):this.#t.set(r,[e])}for(let r of i){let n=this.#t.get(r);if(!n)this.#t.set(r,[new Set([e])]);else{let o=n[n.length-1];o instanceof Set?o.add(e):n.push(new Set([e]))}}return this.#r(e)}#n(t){let e=this.#i.get(t);if(!e)throw new Error("function does not have any path reservations");return{paths:e.paths.map(i=>this.#t.get(i)),dirs:[...e.dirs].map(i=>this.#t.get(i))}}check(t){let{paths:e,dirs:i}=this.#n(t);return e.every(r=>r&&r[0]===t)&&i.every(r=>r&&r[0]instanceof Set&&r[0].has(t))}#r(t){return this.#s.has(t)||!this.check(t)?!1:(this.#s.add(t),t(()=>this.#e(t)),!0)}#e(t){if(!this.#s.has(t))return!1;let e=this.#i.get(t);if(!e)throw new Error("invalid reservation");let{paths:i,dirs:r}=e,n=new Set;for(let o of i){let h=this.#t.get(o);if(!h||h?.[0]!==t)continue;let a=h[1];if(!a){this.#t.delete(o);continue}if(h.shift(),typeof a=="function")n.add(a);else for(let l of a)n.add(l)}for(let o of r){let h=this.#t.get(o),a=h?.[0];if(!(!h||!(a instanceof Set)))if(a.size===1&&h.length===1){this.#t.delete(o);continue}else if(a.size===1){h.shift();let l=h[0];typeof l=="function"&&n.add(l)}else a.delete(t)}return this.#s.delete(t),n.forEach(o=>this.#r(o)),!0}};var wr=()=>process.umask();var Sr=Symbol("onEntry"),Ss=Symbol("checkFs"),yr=Symbol("checkFs2"),ys=Symbol("isReusable"),P=Symbol("makeFs"),Rs=Symbol("file"),bs=Symbol("directory"),wi=Symbol("link"),Rr=Symbol("symlink"),br=Symbol("hardlink"),ye=Symbol("ensureNoSymlink"),gr=Symbol("unsupported"),_r=Symbol("checkPath"),ps=Symbol("stripAbsolutePath"),St=Symbol("mkdir"),O=Symbol("onError"),Ei=Symbol("pending"),Or=Symbol("pend"),Xt=Symbol("unpend"),Es=Symbol("ended"),ws=Symbol("maybeClose"),gs=Symbol("skip"),Re=Symbol("doChown"),be=Symbol("uid"),ge=Symbol("gid"),_e=Symbol("checkedCwd"),so=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,Oe=so==="win32",ro=1024,no=(s,t)=>{if(!Oe)return u.unlink(s,t);let e=s+".DELETE."+xr(16).toString("hex");u.rename(s,e,i=>{if(i)return t(i);u.unlink(e,t)})},oo=s=>{if(!Oe)return u.unlinkSync(s);let t=s+".DELETE."+xr(16).toString("hex");u.renameSync(s,t),u.unlinkSync(t)},Tr=(s,t,e)=>s!==void 0&&s===s>>>0?s:t!==void 0&&t===t>>>0?t:e,qt=class extends st{[Es]=!1;[_e]=!1;[Ei]=0;reservations=new pi;transform;writable=!0;readable=!1;uid;gid;setOwner;preserveOwner;processGid;processUid;maxDepth;forceChown;win32;newer;keep;noMtime;preservePaths;unlink;cwd;strip;processUmask;umask;dmode;fmode;chmod;constructor(t={}){if(t.ondone=()=>{this[Es]=!0,this[ws]()},super(t),this.transform=t.transform,this.chmod=!!t.chmod,typeof t.uid=="number"||typeof t.gid=="number"){if(typeof t.uid!="number"||typeof t.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(t.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=t.uid,this.gid=t.gid,this.setOwner=!0}else this.uid=void 0,this.gid=void 0,this.setOwner=!1;t.preserveOwner===void 0&&typeof t.uid!="number"?this.preserveOwner=!!(process.getuid&&process.getuid()===0):this.preserveOwner=!!t.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():void 0,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():void 0,this.maxDepth=typeof t.maxDepth=="number"?t.maxDepth:ro,this.forceChown=t.forceChown===!0,this.win32=!!t.win32||Oe,this.newer=!!t.newer,this.keep=!!t.keep,this.noMtime=!!t.noMtime,this.preservePaths=!!t.preservePaths,this.unlink=!!t.unlink,this.cwd=f(R.resolve(t.cwd||process.cwd())),this.strip=Number(t.strip)||0,this.processUmask=this.chmod?typeof t.processUmask=="number"?t.processUmask:wr():0,this.umask=typeof t.umask=="number"?t.umask:this.processUmask,this.dmode=t.dmode||511&~this.umask,this.fmode=t.fmode||438&~this.umask,this.on("entry",e=>this[Sr](e))}warn(t,e,i={}){return(t==="TAR_BAD_ARCHIVE"||t==="TAR_ABORT")&&(i.recoverable=!1),super.warn(t,e,i)}[ws](){this[Es]&&this[Ei]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"))}[ps](t,e){let i=t[e],{type:r}=t;if(!i||this.preservePaths)return!0;let[n,o]=ce(i),h=o.replace(/\\/g,"/").split("/");if(h.includes("..")||Oe&&/^[a-z]:\.\.$/i.test(h[0]??"")){if(e==="path"||r==="Link")return this.warn("TAR_ENTRY_ERROR",`${e} contains '..'`,{entry:t,[e]:i}),!1;{let a=R.posix.dirname(t.path),l=R.posix.normalize(R.posix.join(a,h.join("/")));if(l.startsWith("../")||l==="..")return this.warn("TAR_ENTRY_ERROR",`${e} escapes extraction directory`,{entry:t,[e]:i}),!1}}return n&&(t[e]=String(o),this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute ${e}`,{entry:t,[e]:i})),!0}[_r](t){let e=f(t.path),i=e.split("/");if(this.strip){if(i.length=this.strip)t.linkpath=r.slice(this.strip).join("/");else return!1}i.splice(0,this.strip),t.path=i.join("/")}if(isFinite(this.maxDepth)&&i.length>this.maxDepth)return this.warn("TAR_ENTRY_ERROR","path excessively deep",{entry:t,path:e,depth:i.length,maxDepth:this.maxDepth}),!1;if(!this[ps](t,"path")||!this[ps](t,"linkpath"))return!1;if(R.isAbsolute(t.path)?t.absolute=f(R.resolve(t.path)):t.absolute=f(R.resolve(this.cwd,t.path)),!this.preservePaths&&typeof t.absolute=="string"&&t.absolute.indexOf(this.cwd+"/")!==0&&t.absolute!==this.cwd)return this.warn("TAR_ENTRY_ERROR","path escaped extraction target",{entry:t,path:f(t.path),resolvedPath:t.absolute,cwd:this.cwd}),!1;if(t.absolute===this.cwd&&t.type!=="Directory"&&t.type!=="GNUDumpDir")return!1;if(this.win32){let{root:r}=R.win32.parse(String(t.absolute));t.absolute=r+$i(String(t.absolute).slice(r.length));let{root:n}=R.win32.parse(t.path);t.path=n+$i(t.path.slice(n.length))}return!0}[Sr](t){if(!this[_r](t))return t.resume();switch(io.equal(typeof t.absolute,"string"),t.type){case"Directory":case"GNUDumpDir":t.mode&&(t.mode=t.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[Ss](t);default:return this[gr](t)}}[O](t,e){t.name==="CwdError"?this.emit("error",t):(this.warn("TAR_ENTRY_ERROR",t,{entry:e}),this[Xt](),e.resume())}[St](t,e,i){fr(f(t),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:e},i)}[Re](t){return this.forceChown||this.preserveOwner&&(typeof t.uid=="number"&&t.uid!==this.processUid||typeof t.gid=="number"&&t.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[be](t){return Tr(this.uid,t.uid,this.processUid)}[ge](t){return Tr(this.gid,t.gid,this.processGid)}[Rs](t,e){let i=typeof t.mode=="number"?t.mode&4095:this.fmode,r=new tt(String(t.absolute),{flags:ls(t.size),mode:i,autoClose:!1});r.on("error",a=>{r.fd&&u.close(r.fd,()=>{}),r.write=()=>!0,this[O](a,t),e()});let n=1,o=a=>{if(a){r.fd&&u.close(r.fd,()=>{}),this[O](a,t),e();return}--n===0&&r.fd!==void 0&&u.close(r.fd,l=>{l?this[O](l,t):this[Xt](),e()})};r.on("finish",()=>{let a=String(t.absolute),l=r.fd;if(typeof l=="number"&&t.mtime&&!this.noMtime){n++;let c=t.atime||new Date,d=t.mtime;u.futimes(l,c,d,S=>S?u.utimes(a,c,d,T=>o(T&&S)):o())}if(typeof l=="number"&&this[Re](t)){n++;let c=this[be](t),d=this[ge](t);typeof c=="number"&&typeof d=="number"&&u.fchown(l,c,d,S=>S?u.chown(a,c,d,T=>o(T&&S)):o())}o()});let h=this.transform&&this.transform(t)||t;h!==t&&(h.on("error",a=>{this[O](a,t),e()}),t.pipe(h)),h.pipe(r)}[bs](t,e){let i=typeof t.mode=="number"?t.mode&4095:this.dmode;this[St](String(t.absolute),i,r=>{if(r){this[O](r,t),e();return}let n=1,o=()=>{--n===0&&(e(),this[Xt](),t.resume())};t.mtime&&!this.noMtime&&(n++,u.utimes(String(t.absolute),t.atime||new Date,t.mtime,o)),this[Re](t)&&(n++,u.chown(String(t.absolute),Number(this[be](t)),Number(this[ge](t)),o)),o()})}[gr](t){t.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${t.type}`,{entry:t}),t.resume()}[Rr](t,e){let i=f(R.relative(this.cwd,R.resolve(R.dirname(String(t.absolute)),String(t.linkpath)))).split("/");this[ye](t,this.cwd,i,()=>this[wi](t,String(t.linkpath),"symlink",e),r=>{this[O](r,t),e()})}[br](t,e){let i=f(R.resolve(this.cwd,String(t.linkpath))),r=f(String(t.linkpath)).split("/");this[ye](t,this.cwd,r,()=>this[wi](t,i,"link",e),n=>{this[O](n,t),e()})}[ye](t,e,i,r,n){let o=i.shift();if(this.preservePaths||o===void 0)return r();let h=R.resolve(e,o);u.lstat(h,(a,l)=>{if(a)return r();if(l?.isSymbolicLink())return n(new wt(h,R.resolve(h,i.join("/"))));this[ye](t,h,i,r,n)})}[Or](){this[Ei]++}[Xt](){this[Ei]--,this[ws]()}[gs](t){this[Xt](),t.resume()}[ys](t,e){return t.type==="File"&&!this.unlink&&e.isFile()&&e.nlink<=1&&!Oe}[Ss](t){this[Or]();let e=[t.path];t.linkpath&&e.push(t.linkpath),this.reservations.reserve(e,i=>this[yr](t,i))}[yr](t,e){let i=h=>{e(h)},r=()=>{this[St](this.cwd,this.dmode,h=>{if(h){this[O](h,t),i();return}this[_e]=!0,n()})},n=()=>{if(t.absolute!==this.cwd){let h=f(R.dirname(String(t.absolute)));if(h!==this.cwd)return this[St](h,this.dmode,a=>{if(a){this[O](a,t),i();return}o()})}o()},o=()=>{u.lstat(String(t.absolute),(h,a)=>{if(a&&(this.keep||this.newer&&a.mtime>(t.mtime??a.mtime))){this[gs](t),i();return}if(h||this[ys](t,a))return this[P](null,t,i);if(a.isDirectory()){if(t.type==="Directory"){let l=this.chmod&&t.mode&&(a.mode&4095)!==t.mode,c=d=>this[P](d??null,t,i);return l?u.chmod(String(t.absolute),Number(t.mode),c):c()}if(t.absolute!==this.cwd)return u.rmdir(String(t.absolute),l=>this[P](l??null,t,i))}if(t.absolute===this.cwd)return this[P](null,t,i);no(String(t.absolute),l=>this[P](l??null,t,i))})};this[_e]?n():r()}[P](t,e,i){if(t){this[O](t,e),i();return}switch(e.type){case"File":case"OldFile":case"ContiguousFile":return this[Rs](e,i);case"Link":return this[br](e,i);case"SymbolicLink":return this[Rr](e,i);case"Directory":case"GNUDumpDir":return this[bs](e,i)}}[wi](t,e,i,r){u[i](e,String(t.absolute),n=>{n?this[O](n,t):(this[Xt](),t.resume()),r()})}},Se=s=>{try{return[null,s()]}catch(t){return[t,null]}},Te=class extends qt{sync=!0;[P](t,e){return super[P](t,e,()=>{})}[Ss](t){if(!this[_e]){let n=this[St](this.cwd,this.dmode);if(n)return this[O](n,t);this[_e]=!0}if(t.absolute!==this.cwd){let n=f(R.dirname(String(t.absolute)));if(n!==this.cwd){let o=this[St](n,this.dmode);if(o)return this[O](o,t)}}let[e,i]=Se(()=>u.lstatSync(String(t.absolute)));if(i&&(this.keep||this.newer&&i.mtime>(t.mtime??i.mtime)))return this[gs](t);if(e||this[ys](t,i))return this[P](null,t);if(i.isDirectory()){if(t.type==="Directory"){let o=this.chmod&&t.mode&&(i.mode&4095)!==t.mode,[h]=o?Se(()=>{u.chmodSync(String(t.absolute),Number(t.mode))}):[];return this[P](h,t)}let[n]=Se(()=>u.rmdirSync(String(t.absolute)));this[P](n,t)}let[r]=t.absolute===this.cwd?[]:Se(()=>oo(String(t.absolute)));this[P](r,t)}[Rs](t,e){let i=typeof t.mode=="number"?t.mode&4095:this.fmode,r=h=>{let a;try{u.closeSync(n)}catch(l){a=l}(h||a)&&this[O](h||a,t),e()},n;try{n=u.openSync(String(t.absolute),ls(t.size),i)}catch(h){return r(h)}let o=this.transform&&this.transform(t)||t;o!==t&&(o.on("error",h=>this[O](h,t)),t.pipe(o)),o.on("data",h=>{try{u.writeSync(n,h,0,h.length)}catch(a){r(a)}}),o.on("end",()=>{let h=null;if(t.mtime&&!this.noMtime){let a=t.atime||new Date,l=t.mtime;try{u.futimesSync(n,a,l)}catch(c){try{u.utimesSync(String(t.absolute),a,l)}catch{h=c}}}if(this[Re](t)){let a=this[be](t),l=this[ge](t);try{u.fchownSync(n,Number(a),Number(l))}catch(c){try{u.chownSync(String(t.absolute),Number(a),Number(l))}catch{h=h||c}}}r(h)})}[bs](t,e){let i=typeof t.mode=="number"?t.mode&4095:this.dmode,r=this[St](String(t.absolute),i);if(r){this[O](r,t),e();return}if(t.mtime&&!this.noMtime)try{u.utimesSync(String(t.absolute),t.atime||new Date,t.mtime)}catch{}if(this[Re](t))try{u.chownSync(String(t.absolute),Number(this[be](t)),Number(this[ge](t)))}catch{}e(),t.resume()}[St](t,e){try{return ur(f(t),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:e})}catch(i){return i}}[ye](t,e,i,r,n){if(this.preservePaths||!i.length)return r();let o=e;for(let h of i){o=R.resolve(o,h);let[a,l]=Se(()=>u.lstatSync(o));if(a)return r();if(l.isSymbolicLink())return n(new wt(o,R.resolve(e,i.join("/"))))}r()}[wi](t,e,i,r){let n=`${i}Sync`;try{u[n](e,String(t.absolute)),r(),t.resume()}catch(o){return this[O](o,t)}}};var ho=s=>{let t=new Te(s),e=s.file,i=Lr.statSync(e),r=s.maxReadSize||16*1024*1024;new ve(e,{readSize:r,size:i.size}).pipe(t)},ao=(s,t)=>{let e=new qt(s),i=s.maxReadSize||16*1024*1024,r=s.file;return new Promise((o,h)=>{e.on("error",h),e.on("close",o),Lr.stat(r,(a,l)=>{if(a)h(a);else{let c=new gt(r,{readSize:i,size:l.size});c.on("error",h),c.pipe(e)}})})},lo=K(ho,ao,s=>new Te(s),s=>new qt(s),(s,t)=>{t?.length&&Yi(s,t)});import v from"node:fs";import Nr from"node:path";var co=(s,t)=>{let e=new kt(s),i=!0,r,n;try{try{r=v.openSync(s.file,"r+")}catch(a){if(a?.code==="ENOENT")r=v.openSync(s.file,"w+");else throw a}let o=v.fstatSync(r),h=Buffer.alloc(512);t:for(n=0;no.size)break;n+=l,s.mtimeCache&&a.mtime&&s.mtimeCache.set(String(a.path),a.mtime)}i=!1,fo(s,e,n,r,t)}finally{if(i)try{v.closeSync(r)}catch{}}},fo=(s,t,e,i,r)=>{let n=new Wt(s.file,{fd:i,start:e});t.pipe(n),mo(t,r)},uo=(s,t)=>{t=Array.from(t);let e=new Et(s),i=(n,o,h)=>{let a=(T,N)=>{T?v.close(n,E=>h(T)):h(null,N)},l=0;if(o===0)return a(null,0);let c=0,d=Buffer.alloc(512),S=(T,N)=>{if(T||typeof N>"u")return a(T);if(c+=N,c<512&&N)return v.read(n,d,c,d.length-c,l+c,S);if(l===0&&d[0]===31&&d[1]===139)return a(new Error("cannot append to compressed archives"));if(c<512)return a(null,l);let E=new F(d);if(!E.cksumValid)return a(null,l);let x=512*Math.ceil((E.size??0)/512);if(l+x+512>o||(l+=x+512,l>=o))return a(null,l);s.mtimeCache&&E.mtime&&s.mtimeCache.set(String(E.path),E.mtime),c=0,v.read(n,d,0,512,l,S)};v.read(n,d,0,512,l,S)};return new Promise((n,o)=>{e.on("error",o);let h="r+",a=(l,c)=>{if(l&&l.code==="ENOENT"&&h==="r+")return h="w+",v.open(s.file,h,a);if(l||!c)return o(l);v.fstat(c,(d,S)=>{if(d)return v.close(c,()=>o(d));i(c,S.size,(T,N)=>{if(T)return o(T);let E=new tt(s.file,{fd:c,start:N});e.pipe(E),E.on("error",o),E.on("close",n),po(e,t)})})};v.open(s.file,h,a)})},mo=(s,t)=>{t.forEach(e=>{e.charAt(0)==="@"?It({file:Nr.resolve(s.cwd,e.slice(1)),sync:!0,noResume:!0,onReadEntry:i=>s.add(i)}):s.add(e)}),s.end()},po=async(s,t)=>{for(let e=0;es.add(r)}):s.add(i)}s.end()},vt=K(co,uo,()=>{throw new TypeError("file is required")},()=>{throw new TypeError("file is required")},(s,t)=>{if(!ks(s))throw new TypeError("file is required");if(s.gzip||s.brotli||s.zstd||s.file.endsWith(".br")||s.file.endsWith(".tbr"))throw new TypeError("cannot append to compressed archives");if(!t?.length)throw new TypeError("no paths specified to add/replace")});var Eo=K(vt.syncFile,vt.asyncFile,vt.syncNoFile,vt.asyncNoFile,(s,t=[])=>{vt.validate?.(s,t),wo(s)}),wo=s=>{let t=s.filter;s.mtimeCache||(s.mtimeCache=new Map),s.filter=t?(e,i)=>t(e,i)&&!((s.mtimeCache?.get(e)??i.mtime??0)>(i.mtime??0)):(e,i)=>!((s.mtimeCache?.get(e)??i.mtime??0)>(i.mtime??0))};export{F as Header,Et as Pack,fi as PackJob,kt as PackSync,st as Parser,ct as Pax,Yt as ReadEntry,qt as Unpack,Te as UnpackSync,de as WriteEntry,ii as WriteEntrySync,si as WriteEntryTar,zn as c,zn as create,lo as extract,Yi as filesFilter,It as list,vt as r,vt as replace,It as t,Mi as types,Eo as u,Eo as update,lo as x};
+var zr=Object.defineProperty;var Ur=(s,t)=>{for(var e in t)zr(s,e,{get:t[e],enumerable:!0})};import Qr from"events";import I from"fs";import{EventEmitter as Di}from"node:events";import Cs from"node:stream";import{StringDecoder as Hr}from"node:string_decoder";var Ds=typeof process=="object"&&process?process:{stdout:null,stderr:null},Wr=s=>!!s&&typeof s=="object"&&(s instanceof A||s instanceof Cs||Gr(s)||Zr(s)),Gr=s=>!!s&&typeof s=="object"&&s instanceof Di&&typeof s.pipe=="function"&&s.pipe!==Cs.Writable.prototype.pipe,Zr=s=>!!s&&typeof s=="object"&&s instanceof Di&&typeof s.write=="function"&&typeof s.end=="function",Q=Symbol("EOF"),J=Symbol("maybeEmitEnd"),nt=Symbol("emittedEnd"),De=Symbol("emittingEnd"),qt=Symbol("emittedError"),Ne=Symbol("closed"),Ns=Symbol("read"),Ae=Symbol("flush"),As=Symbol("flushChunk"),z=Symbol("encoding"),Mt=Symbol("decoder"),g=Symbol("flowing"),Qt=Symbol("paused"),Bt=Symbol("resume"),b=Symbol("buffer"),N=Symbol("pipes"),_=Symbol("bufferLength"),bi=Symbol("bufferPush"),Ie=Symbol("bufferShift"),L=Symbol("objectMode"),S=Symbol("destroyed"),_i=Symbol("error"),Oi=Symbol("emitData"),Is=Symbol("emitEnd"),Ti=Symbol("emitEnd2"),Z=Symbol("async"),xi=Symbol("abort"),Ce=Symbol("aborted"),Jt=Symbol("signal"),Rt=Symbol("dataListeners"),C=Symbol("discarded"),jt=s=>Promise.resolve().then(s),Yr=s=>s(),Kr=s=>s==="end"||s==="finish"||s==="prefinish",Vr=s=>s instanceof ArrayBuffer||!!s&&typeof s=="object"&&s.constructor&&s.constructor.name==="ArrayBuffer"&&s.byteLength>=0,$r=s=>!Buffer.isBuffer(s)&&ArrayBuffer.isView(s),Fe=class{src;dest;opts;ondrain;constructor(t,e,i){this.src=t,this.dest=e,this.opts=i,this.ondrain=()=>t[Bt](),this.dest.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(t){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},Li=class extends Fe{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(t,e,i){super(t,e,i),this.proxyErrors=r=>this.dest.emit("error",r),t.on("error",this.proxyErrors)}},Xr=s=>!!s.objectMode,qr=s=>!s.objectMode&&!!s.encoding&&s.encoding!=="buffer",A=class extends Di{[g]=!1;[Qt]=!1;[N]=[];[b]=[];[L];[z];[Z];[Mt];[Q]=!1;[nt]=!1;[De]=!1;[Ne]=!1;[qt]=null;[_]=0;[S]=!1;[Jt];[Ce]=!1;[Rt]=0;[C]=!1;writable=!0;readable=!0;constructor(...t){let e=t[0]||{};if(super(),e.objectMode&&typeof e.encoding=="string")throw new TypeError("Encoding and objectMode may not be used together");Xr(e)?(this[L]=!0,this[z]=null):qr(e)?(this[z]=e.encoding,this[L]=!1):(this[L]=!1,this[z]=null),this[Z]=!!e.async,this[Mt]=this[z]?new Hr(this[z]):null,e&&e.debugExposeBuffer===!0&&Object.defineProperty(this,"buffer",{get:()=>this[b]}),e&&e.debugExposePipes===!0&&Object.defineProperty(this,"pipes",{get:()=>this[N]});let{signal:i}=e;i&&(this[Jt]=i,i.aborted?this[xi]():i.addEventListener("abort",()=>this[xi]()))}get bufferLength(){return this[_]}get encoding(){return this[z]}set encoding(t){throw new Error("Encoding must be set at instantiation time")}setEncoding(t){throw new Error("Encoding must be set at instantiation time")}get objectMode(){return this[L]}set objectMode(t){throw new Error("objectMode must be set at instantiation time")}get async(){return this[Z]}set async(t){this[Z]=this[Z]||!!t}[xi](){this[Ce]=!0,this.emit("abort",this[Jt]?.reason),this.destroy(this[Jt]?.reason)}get aborted(){return this[Ce]}set aborted(t){}write(t,e,i){if(this[Ce])return!1;if(this[Q])throw new Error("write after end");if(this[S])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;typeof e=="function"&&(i=e,e="utf8"),e||(e="utf8");let r=this[Z]?jt:Yr;if(!this[L]&&!Buffer.isBuffer(t)){if($r(t))t=Buffer.from(t.buffer,t.byteOffset,t.byteLength);else if(Vr(t))t=Buffer.from(t);else if(typeof t!="string")throw new Error("Non-contiguous data written to non-objectMode stream")}return this[L]?(this[g]&&this[_]!==0&&this[Ae](!0),this[g]?this.emit("data",t):this[bi](t),this[_]!==0&&this.emit("readable"),i&&r(i),this[g]):t.length?(typeof t=="string"&&!(e===this[z]&&!this[Mt]?.lastNeed)&&(t=Buffer.from(t,e)),Buffer.isBuffer(t)&&this[z]&&(t=this[Mt].write(t)),this[g]&&this[_]!==0&&this[Ae](!0),this[g]?this.emit("data",t):this[bi](t),this[_]!==0&&this.emit("readable"),i&&r(i),this[g]):(this[_]!==0&&this.emit("readable"),i&&r(i),this[g])}read(t){if(this[S])return null;if(this[C]=!1,this[_]===0||t===0||t&&t>this[_])return this[J](),null;this[L]&&(t=null),this[b].length>1&&!this[L]&&(this[b]=[this[z]?this[b].join(""):Buffer.concat(this[b],this[_])]);let e=this[Ns](t||null,this[b][0]);return this[J](),e}[Ns](t,e){if(this[L])this[Ie]();else{let i=e;t===i.length||t===null?this[Ie]():typeof i=="string"?(this[b][0]=i.slice(t),e=i.slice(0,t),this[_]-=t):(this[b][0]=i.subarray(t),e=i.subarray(0,t),this[_]-=t)}return this.emit("data",e),!this[b].length&&!this[Q]&&this.emit("drain"),e}end(t,e,i){return typeof t=="function"&&(i=t,t=void 0),typeof e=="function"&&(i=e,e="utf8"),t!==void 0&&this.write(t,e),i&&this.once("end",i),this[Q]=!0,this.writable=!1,(this[g]||!this[Qt])&&this[J](),this}[Bt](){this[S]||(!this[Rt]&&!this[N].length&&(this[C]=!0),this[Qt]=!1,this[g]=!0,this.emit("resume"),this[b].length?this[Ae]():this[Q]?this[J]():this.emit("drain"))}resume(){return this[Bt]()}pause(){this[g]=!1,this[Qt]=!0,this[C]=!1}get destroyed(){return this[S]}get flowing(){return this[g]}get paused(){return this[Qt]}[bi](t){this[L]?this[_]+=1:this[_]+=t.length,this[b].push(t)}[Ie](){return this[L]?this[_]-=1:this[_]-=this[b][0].length,this[b].shift()}[Ae](t=!1){do;while(this[As](this[Ie]())&&this[b].length);!t&&!this[b].length&&!this[Q]&&this.emit("drain")}[As](t){return this.emit("data",t),this[g]}pipe(t,e){if(this[S])return t;this[C]=!1;let i=this[nt];return e=e||{},t===Ds.stdout||t===Ds.stderr?e.end=!1:e.end=e.end!==!1,e.proxyErrors=!!e.proxyErrors,i?e.end&&t.end():(this[N].push(e.proxyErrors?new Li(this,t,e):new Fe(this,t,e)),this[Z]?jt(()=>this[Bt]()):this[Bt]()),t}unpipe(t){let e=this[N].find(i=>i.dest===t);e&&(this[N].length===1?(this[g]&&this[Rt]===0&&(this[g]=!1),this[N]=[]):this[N].splice(this[N].indexOf(e),1),e.unpipe())}addListener(t,e){return this.on(t,e)}on(t,e){let i=super.on(t,e);if(t==="data")this[C]=!1,this[Rt]++,!this[N].length&&!this[g]&&this[Bt]();else if(t==="readable"&&this[_]!==0)super.emit("readable");else if(Kr(t)&&this[nt])super.emit(t),this.removeAllListeners(t);else if(t==="error"&&this[qt]){let r=e;this[Z]?jt(()=>r.call(this,this[qt])):r.call(this,this[qt])}return i}removeListener(t,e){return this.off(t,e)}off(t,e){let i=super.off(t,e);return t==="data"&&(this[Rt]=this.listeners("data").length,this[Rt]===0&&!this[C]&&!this[N].length&&(this[g]=!1)),i}removeAllListeners(t){let e=super.removeAllListeners(t);return(t==="data"||t===void 0)&&(this[Rt]=0,!this[C]&&!this[N].length&&(this[g]=!1)),e}get emittedEnd(){return this[nt]}[J](){!this[De]&&!this[nt]&&!this[S]&&this[b].length===0&&this[Q]&&(this[De]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[Ne]&&this.emit("close"),this[De]=!1)}emit(t,...e){let i=e[0];if(t!=="error"&&t!=="close"&&t!==S&&this[S])return!1;if(t==="data")return!this[L]&&!i?!1:this[Z]?(jt(()=>this[Oi](i)),!0):this[Oi](i);if(t==="end")return this[Is]();if(t==="close"){if(this[Ne]=!0,!this[nt]&&!this[S])return!1;let n=super.emit("close");return this.removeAllListeners("close"),n}else if(t==="error"){this[qt]=i,super.emit(_i,i);let n=!this[Jt]||this.listeners("error").length?super.emit("error",i):!1;return this[J](),n}else if(t==="resume"){let n=super.emit("resume");return this[J](),n}else if(t==="finish"||t==="prefinish"){let n=super.emit(t);return this.removeAllListeners(t),n}let r=super.emit(t,...e);return this[J](),r}[Oi](t){for(let i of this[N])i.dest.write(t)===!1&&this.pause();let e=this[C]?!1:super.emit("data",t);return this[J](),e}[Is](){return this[nt]?!1:(this[nt]=!0,this.readable=!1,this[Z]?(jt(()=>this[Ti]()),!0):this[Ti]())}[Ti](){if(this[Mt]){let e=this[Mt].end();if(e){for(let i of this[N])i.dest.write(e);this[C]||super.emit("data",e)}}for(let e of this[N])e.end();let t=super.emit("end");return this.removeAllListeners("end"),t}async collect(){let t=Object.assign([],{dataLength:0});this[L]||(t.dataLength=0);let e=this.promise();return this.on("data",i=>{t.push(i),this[L]||(t.dataLength+=i.length)}),await e,t}async concat(){if(this[L])throw new Error("cannot concat in objectMode");let t=await this.collect();return this[z]?t.join(""):Buffer.concat(t,t.dataLength)}async promise(){return new Promise((t,e)=>{this.on(S,()=>e(new Error("stream destroyed"))),this.on("error",i=>e(i)),this.on("end",()=>t())})}[Symbol.asyncIterator](){this[C]=!1;let t=!1,e=async()=>(this.pause(),t=!0,{value:void 0,done:!0});return{next:()=>{if(t)return e();let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[Q])return e();let n,o,h=d=>{this.off("data",a),this.off("end",l),this.off(S,c),e(),o(d)},a=d=>{this.off("error",h),this.off("end",l),this.off(S,c),this.pause(),n({value:d,done:!!this[Q]})},l=()=>{this.off("error",h),this.off("data",a),this.off(S,c),e(),n({done:!0,value:void 0})},c=()=>h(new Error("stream destroyed"));return new Promise((d,y)=>{o=y,n=d,this.once(S,c),this.once("error",h),this.once("end",l),this.once("data",a)})},throw:e,return:e,[Symbol.asyncIterator](){return this},[Symbol.asyncDispose]:async()=>{}}}[Symbol.iterator](){this[C]=!1;let t=!1,e=()=>(this.pause(),this.off(_i,e),this.off(S,e),this.off("end",e),t=!0,{done:!0,value:void 0}),i=()=>{if(t)return e();let r=this.read();return r===null?e():{done:!1,value:r}};return this.once("end",e),this.once(_i,e),this.once(S,e),{next:i,throw:e,return:e,[Symbol.iterator](){return this},[Symbol.dispose]:()=>{}}}destroy(t){if(this[S])return t?this.emit("error",t):this.emit(S),this;this[S]=!0,this[C]=!0,this[b].length=0,this[_]=0;let e=this;return typeof e.close=="function"&&!this[Ne]&&e.close(),t?this.emit("error",t):this.emit(S),this}static get isStream(){return Wr}};var Jr=I.writev,ht=Symbol("_autoClose"),H=Symbol("_close"),te=Symbol("_ended"),m=Symbol("_fd"),Ni=Symbol("_finished"),tt=Symbol("_flags"),Ai=Symbol("_flush"),ki=Symbol("_handleChunk"),vi=Symbol("_makeBuf"),ie=Symbol("_mode"),ke=Symbol("_needDrain"),Ut=Symbol("_onerror"),Ht=Symbol("_onopen"),Ii=Symbol("_onread"),Pt=Symbol("_onwrite"),at=Symbol("_open"),U=Symbol("_path"),ot=Symbol("_pos"),Y=Symbol("_queue"),zt=Symbol("_read"),Ci=Symbol("_readSize"),j=Symbol("_reading"),ee=Symbol("_remain"),Fi=Symbol("_size"),ve=Symbol("_write"),gt=Symbol("_writing"),Me=Symbol("_defaultFlag"),bt=Symbol("_errored"),_t=class extends A{[bt]=!1;[m];[U];[Ci];[j]=!1;[Fi];[ee];[ht];constructor(t,e){if(e=e||{},super(e),this.readable=!0,this.writable=!1,typeof t!="string")throw new TypeError("path must be a string");this[bt]=!1,this[m]=typeof e.fd=="number"?e.fd:void 0,this[U]=t,this[Ci]=e.readSize||16*1024*1024,this[j]=!1,this[Fi]=typeof e.size=="number"?e.size:1/0,this[ee]=this[Fi],this[ht]=typeof e.autoClose=="boolean"?e.autoClose:!0,typeof this[m]=="number"?this[zt]():this[at]()}get fd(){return this[m]}get path(){return this[U]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[at](){I.open(this[U],"r",(t,e)=>this[Ht](t,e))}[Ht](t,e){t?this[Ut](t):(this[m]=e,this.emit("open",e),this[zt]())}[vi](){return Buffer.allocUnsafe(Math.min(this[Ci],this[ee]))}[zt](){if(!this[j]){this[j]=!0;let t=this[vi]();if(t.length===0)return process.nextTick(()=>this[Ii](null,0,t));I.read(this[m],t,0,t.length,null,(e,i,r)=>this[Ii](e,i,r))}}[Ii](t,e,i){this[j]=!1,t?this[Ut](t):this[ki](e,i)&&this[zt]()}[H](){if(this[ht]&&typeof this[m]=="number"){let t=this[m];this[m]=void 0,I.close(t,e=>e?this.emit("error",e):this.emit("close"))}}[Ut](t){this[j]=!0,this[H](),this.emit("error",t)}[ki](t,e){let i=!1;return this[ee]-=t,t>0&&(i=super.write(tthis[Ht](t,e))}[Ht](t,e){this[Me]&&this[tt]==="r+"&&t&&t.code==="ENOENT"?(this[tt]="w",this[at]()):t?this[Ut](t):(this[m]=e,this.emit("open",e),this[gt]||this[Ai]())}end(t,e){return t&&this.write(t,e),this[te]=!0,!this[gt]&&!this[Y].length&&typeof this[m]=="number"&&this[Pt](null,0),this}write(t,e){return typeof t=="string"&&(t=Buffer.from(t,e)),this[te]?(this.emit("error",new Error("write() after end()")),!1):this[m]===void 0||this[gt]||this[Y].length?(this[Y].push(t),this[ke]=!0,!1):(this[gt]=!0,this[ve](t),!0)}[ve](t){I.write(this[m],t,0,t.length,this[ot],(e,i)=>this[Pt](e,i))}[Pt](t,e){t?this[Ut](t):(this[ot]!==void 0&&typeof e=="number"&&(this[ot]+=e),this[Y].length?this[Ai]():(this[gt]=!1,this[te]&&!this[Ni]?(this[Ni]=!0,this[H](),this.emit("finish")):this[ke]&&(this[ke]=!1,this.emit("drain"))))}[Ai](){if(this[Y].length===0)this[te]&&this[Pt](null,0);else if(this[Y].length===1)this[ve](this[Y].pop());else{let t=this[Y];this[Y]=[],Jr(this[m],t,this[ot],(e,i)=>this[Pt](e,i))}}[H](){if(this[ht]&&typeof this[m]=="number"){let t=this[m];this[m]=void 0,I.close(t,e=>e?this.emit("error",e):this.emit("close"))}}},Wt=class extends et{[at](){let t;if(this[Me]&&this[tt]==="r+")try{t=I.openSync(this[U],this[tt],this[ie])}catch(e){if(e?.code==="ENOENT")return this[tt]="w",this[at]();throw e}else t=I.openSync(this[U],this[tt],this[ie]);this[Ht](null,t)}[H](){if(this[ht]&&typeof this[m]=="number"){let t=this[m];this[m]=void 0,I.closeSync(t),this.emit("close")}}[ve](t){let e=!0;try{this[Pt](null,I.writeSync(this[m],t,0,t.length,this[ot])),e=!1}finally{if(e)try{this[H]()}catch{}}}};import cr from"node:path";import Kt from"node:fs";import{dirname as Fn,parse as kn}from"path";var jr=new Map([["C","cwd"],["f","file"],["z","gzip"],["P","preservePaths"],["U","unlink"],["strip-components","strip"],["stripComponents","strip"],["keep-newer","newer"],["keepNewer","newer"],["keep-newer-files","newer"],["keepNewerFiles","newer"],["k","keep"],["keep-existing","keep"],["keepExisting","keep"],["m","noMtime"],["no-mtime","noMtime"],["p","preserveOwner"],["L","follow"],["h","follow"],["onentry","onReadEntry"]]),Fs=s=>!!s.sync&&!!s.file,ks=s=>!s.sync&&!!s.file,vs=s=>!!s.sync&&!s.file,Ms=s=>!s.sync&&!s.file;var Bs=s=>!!s.file;var tn=s=>{let t=jr.get(s);return t||s},se=(s={})=>{if(!s)return{};let t={};for(let[e,i]of Object.entries(s)){let r=tn(e);t[r]=i}return t.chmod===void 0&&t.noChmod===!1&&(t.chmod=!0),delete t.noChmod,t};var K=(s,t,e,i,r)=>Object.assign((n=[],o,h)=>{Array.isArray(n)&&(o=n,n={}),typeof o=="function"&&(h=o,o=void 0),o=o?Array.from(o):[];let a=se(n);if(r?.(a,o),Fs(a)){if(typeof h=="function")throw new TypeError("callback not supported for sync tar functions");return s(a,o)}else if(ks(a)){let l=t(a,o);return h?l.then(()=>h(),h):l}else if(vs(a)){if(typeof h=="function")throw new TypeError("callback not supported for sync tar functions");return e(a,o)}else if(Ms(a)){if(typeof h=="function")throw new TypeError("callback only supported with file option");return i(a,o)}throw new Error("impossible options??")},{syncFile:s,asyncFile:t,syncNoFile:e,asyncNoFile:i,validate:r});import{EventEmitter as Dn}from"events";import zi from"assert";import{Buffer as Ot}from"buffer";import*as Ps from"zlib";import en from"zlib";var sn=en.constants||{ZLIB_VERNUM:4736},M=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:1/0,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},sn));var rn=Ot.concat,zs=Object.getOwnPropertyDescriptor(Ot,"concat"),nn=s=>s,Bi=zs?.writable===!0||zs?.set!==void 0?s=>{Ot.concat=s?nn:rn}:s=>{},Tt=Symbol("_superWrite"),Gt=class extends Error{code;errno;constructor(t,e){super("zlib: "+t.message,{cause:t}),this.code=t.code,this.errno=t.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+t.message,Error.captureStackTrace(this,e??this.constructor)}get name(){return"ZlibError"}},Pi=Symbol("flushFlag"),re=class extends A{#t=!1;#i=!1;#s;#n;#r;#e;#o;get sawError(){return this.#t}get handle(){return this.#e}get flushFlag(){return this.#s}constructor(t,e){if(!t||typeof t!="object")throw new TypeError("invalid options for ZlibBase constructor");if(super(t),this.#s=t.flush??0,this.#n=t.finishFlush??0,this.#r=t.fullFlushFlag??0,typeof Ps[e]!="function")throw new TypeError("Compression method not supported: "+e);try{this.#e=new Ps[e](t)}catch(i){throw new Gt(i,this.constructor)}this.#o=i=>{this.#t||(this.#t=!0,this.close(),this.emit("error",i))},this.#e?.on("error",i=>this.#o(new Gt(i))),this.once("end",()=>this.close)}close(){this.#e&&(this.#e.close(),this.#e=void 0,this.emit("close"))}reset(){if(!this.#t)return zi(this.#e,"zlib binding closed"),this.#e.reset?.()}flush(t){this.ended||(typeof t!="number"&&(t=this.#r),this.write(Object.assign(Ot.alloc(0),{[Pi]:t})))}end(t,e,i){return typeof t=="function"&&(i=t,e=void 0,t=void 0),typeof e=="function"&&(i=e,e=void 0),t&&(e?this.write(t,e):this.write(t)),this.flush(this.#n),this.#i=!0,super.end(i)}get ended(){return this.#i}[Tt](t){return super.write(t)}write(t,e,i){if(typeof e=="function"&&(i=e,e="utf8"),typeof t=="string"&&(t=Ot.from(t,e)),this.#t)return;zi(this.#e,"zlib binding closed");let r=this.#e._handle,n=r.close;r.close=()=>{};let o=this.#e.close;this.#e.close=()=>{},Bi(!0);let h;try{let l=typeof t[Pi]=="number"?t[Pi]:this.#s;h=this.#e._processChunk(t,l),Bi(!1)}catch(l){Bi(!1),this.#o(new Gt(l,this.write))}finally{this.#e&&(this.#e._handle=r,r.close=n,this.#e.close=o,this.#e.removeAllListeners("error"))}this.#e&&this.#e.on("error",l=>this.#o(new Gt(l,this.write)));let a;if(h)if(Array.isArray(h)&&h.length>0){let l=h[0];a=this[Tt](Ot.from(l));for(let c=1;c{typeof r=="function"&&(n=r,r=this.flushFlag),this.flush(r),n?.()};try{this.handle.params(t,e)}finally{this.handle.flush=i}this.handle&&(this.#t=t,this.#i=e)}}}};var ze=class extends Pe{#t;constructor(t){super(t,"Gzip"),this.#t=t&&!!t.portable}[Tt](t){return this.#t?(this.#t=!1,t[9]=255,super[Tt](t)):super[Tt](t)}};var Ue=class extends Pe{constructor(t){super(t,"Unzip")}},He=class extends re{constructor(t,e){t=t||{},t.flush=t.flush||M.BROTLI_OPERATION_PROCESS,t.finishFlush=t.finishFlush||M.BROTLI_OPERATION_FINISH,t.fullFlushFlag=M.BROTLI_OPERATION_FLUSH,super(t,e)}},We=class extends He{constructor(t){super(t,"BrotliCompress")}},Ge=class extends He{constructor(t){super(t,"BrotliDecompress")}},Ze=class extends re{constructor(t,e){t=t||{},t.flush=t.flush||M.ZSTD_e_continue,t.finishFlush=t.finishFlush||M.ZSTD_e_end,t.fullFlushFlag=M.ZSTD_e_flush,super(t,e)}},Ye=class extends Ze{constructor(t){super(t,"ZstdCompress")}},Ke=class extends Ze{constructor(t){super(t,"ZstdDecompress")}};import{posix as Zt}from"node:path";var Us=(s,t)=>{if(Number.isSafeInteger(s))s<0?an(s,t):hn(s,t);else throw Error("cannot encode number outside of javascript safe integer range");return t},hn=(s,t)=>{t[0]=128;for(var e=t.length;e>1;e--)t[e-1]=s&255,s=Math.floor(s/256)},an=(s,t)=>{t[0]=255;var e=!1;s=s*-1;for(var i=t.length;i>1;i--){var r=s&255;s=Math.floor(s/256),e?t[i-1]=Ws(r):r===0?t[i-1]=0:(e=!0,t[i-1]=Gs(r))}},Hs=s=>{let t=s[0],e=t===128?cn(s.subarray(1,s.length)):t===255?ln(s):null;if(e===null)throw Error("invalid base256 encoding");if(!Number.isSafeInteger(e))throw Error("parsed number outside of javascript safe integer range");return e},ln=s=>{for(var t=s.length,e=0,i=!1,r=t-1;r>-1;r--){var n=Number(s[r]),o;i?o=Ws(n):n===0?o=n:(i=!0,o=Gs(n)),o!==0&&(e-=o*Math.pow(256,t-r-1))}return e},cn=s=>{for(var t=s.length,e=0,i=t-1;i>-1;i--){var r=Number(s[i]);r!==0&&(e+=r*Math.pow(256,t-i-1))}return e},Ws=s=>(255^s)&255,Gs=s=>(255^s)+1&255;var Hi={};Ur(Hi,{code:()=>Ve,isCode:()=>ne,isName:()=>dn,name:()=>oe,normalFsTypes:()=>Ui});var ne=s=>oe.has(s),dn=s=>Ve.has(s),Ui=new Set(["0","","1","2","3","4","5","6","7","D"]),oe=new Map([["0","File"],["","OldFile"],["1","Link"],["2","SymbolicLink"],["3","CharacterDevice"],["4","BlockDevice"],["5","Directory"],["6","FIFO"],["7","ContiguousFile"],["g","GlobalExtendedHeader"],["x","ExtendedHeader"],["A","SolarisACL"],["D","GNUDumpDir"],["I","Inode"],["K","NextFileHasLongLinkpath"],["L","NextFileHasLongPath"],["M","ContinuationFile"],["N","OldGnuLongPath"],["S","SparseFile"],["V","TapeVolumeHeader"],["X","OldExtendedHeader"]]),Ve=new Map(Array.from(oe).map(s=>[s[1],s[0]]));var un=s=>s===void 0||s<0?void 0:s,F=class{cksumValid=!1;needPax=!1;nullBlock=!1;block;path;mode;uid;gid;size;cksum;#t="Unsupported";linkpath;uname;gname;devmaj=0;devmin=0;atime;ctime;mtime;charset;comment;constructor(t,e=0,i,r){Buffer.isBuffer(t)?this.decode(t,e||0,i,r):t&&this.#i(t)}decode(t,e,i,r){if(e||(e=0),!t||!(t.length>=e+512))throw new Error("need 512 bytes for header");let n=xt(t,e+156,1),o=Ui.has(n),h=o?i:void 0,a=o?r:void 0;if(this.path=h?.path??xt(t,e,100),this.mode=h?.mode??a?.mode??lt(t,e+100,8),this.uid=h?.uid??a?.uid??lt(t,e+108,8),this.gid=h?.gid??a?.gid??lt(t,e+116,8),this.size=un(h?.size??a?.size??lt(t,e+124,12)),this.mtime=h?.mtime??a?.mtime??Wi(t,e+136,12),this.cksum=lt(t,e+148,12),a&&this.#i(a,!0),h&&this.#i(h),ne(n)&&(this.#t=n||"0"),this.#t==="0"&&this.path.slice(-1)==="/"&&(this.#t="5"),this.#t==="5"&&(this.size=0),this.linkpath=xt(t,e+157,100),t.subarray(e+257,e+265).toString()==="ustar\x0000")if(this.uname=h?.uname??a?.uname??xt(t,e+265,32),this.gname=h?.gname??a?.gname??xt(t,e+297,32),this.devmaj=h?.devmaj??a?.devmaj??lt(t,e+329,8)??0,this.devmin=h?.devmin??a?.devmin??lt(t,e+337,8)??0,t[e+475]!==0){let c=xt(t,e+345,155);this.path=c+"/"+this.path}else{let c=xt(t,e+345,130);c&&(this.path=c+"/"+this.path),this.atime=i?.atime??r?.atime??Wi(t,e+476,12),this.ctime=i?.ctime??r?.ctime??Wi(t,e+488,12)}let l=256;for(let c=e;c!(r==null||i==="size"&&Number(r)<0||i==="path"&&e||i==="linkpath"&&e||i==="global"))))}encode(t,e=0){if(t||(t=this.block=Buffer.alloc(512)),this.#t==="Unsupported"&&(this.#t="0"),!(t.length>=e+512))throw new Error("need 512 bytes for header");let i=this.ctime||this.atime?130:155,r=mn(this.path||"",i),n=r[0],o=r[1];this.needPax=!!r[2],this.needPax=Lt(t,e,100,n)||this.needPax,this.needPax=ct(t,e+100,8,this.mode)||this.needPax,this.needPax=ct(t,e+108,8,this.uid)||this.needPax,this.needPax=ct(t,e+116,8,this.gid)||this.needPax,this.needPax=ct(t,e+124,12,this.size)||this.needPax,this.needPax=Gi(t,e+136,12,this.mtime)||this.needPax,t[e+156]=Number(this.#t.codePointAt(0)),this.needPax=Lt(t,e+157,100,this.linkpath)||this.needPax,t.write("ustar\x0000",e+257,8),this.needPax=Lt(t,e+265,32,this.uname)||this.needPax,this.needPax=Lt(t,e+297,32,this.gname)||this.needPax,this.needPax=ct(t,e+329,8,this.devmaj)||this.needPax,this.needPax=ct(t,e+337,8,this.devmin)||this.needPax,this.needPax=Lt(t,e+345,i,o)||this.needPax,t[e+475]!==0?this.needPax=Lt(t,e+345,155,o)||this.needPax:(this.needPax=Lt(t,e+345,130,o)||this.needPax,this.needPax=Gi(t,e+476,12,this.atime)||this.needPax,this.needPax=Gi(t,e+488,12,this.ctime)||this.needPax);let h=256;for(let a=e;a{let i=s,r="",n,o=Zt.parse(s).root||".";if(Buffer.byteLength(i)<100)n=[i,r,!1];else{r=Zt.dirname(i),i=Zt.basename(i);do Buffer.byteLength(i)<=100&&Buffer.byteLength(r)<=t?n=[i,r,!1]:Buffer.byteLength(i)>100&&Buffer.byteLength(r)<=t?n=[i.slice(0,99),r,!0]:(i=Zt.join(Zt.basename(r),i),r=Zt.dirname(r));while(r!==o&&n===void 0);n||(n=[s.slice(0,99),"",!0])}return n},xt=(s,t,e)=>s.subarray(t,t+e).toString("utf8").replace(/\0.*/,""),Wi=(s,t,e)=>pn(lt(s,t,e)),pn=s=>s===void 0?void 0:new Date(s*1e3),lt=(s,t,e)=>Number(s[t])&128?Hs(s.subarray(t,t+e)):wn(s,t,e),En=s=>isNaN(s)?void 0:s,wn=(s,t,e)=>En(parseInt(s.subarray(t,t+e).toString("utf8").replace(/\0.*$/,"").trim(),8)),Sn={12:8589934591,8:2097151},ct=(s,t,e,i)=>i===void 0?!1:i>Sn[e]||i<0?(Us(i,s.subarray(t,t+e)),!0):(yn(s,t,e,i),!1),yn=(s,t,e,i)=>s.write(Rn(i,e),t,e,"ascii"),Rn=(s,t)=>gn(Math.floor(s).toString(8),t),gn=(s,t)=>(s.length===t-1?s:new Array(t-s.length-1).join("0")+s+" ")+"\0",Gi=(s,t,e,i)=>i===void 0?!1:ct(s,t,e,i.getTime()/1e3),bn=new Array(156).join("\0"),Lt=(s,t,e,i)=>i===void 0?!1:(s.write(i+bn,t,e,"utf8"),i.length!==Buffer.byteLength(i)||i.length>e);import{basename as _n}from"node:path";var ft=class s{atime;mtime;ctime;charset;comment;gid;uid;gname;uname;linkpath;dev;ino;nlink;path;size;mode;global;constructor(t,e=!1){this.atime=t.atime,this.charset=t.charset,this.comment=t.comment,this.ctime=t.ctime,this.dev=t.dev,this.gid=t.gid,this.global=e,this.gname=t.gname,this.ino=t.ino,this.linkpath=t.linkpath,this.mtime=t.mtime,this.nlink=t.nlink,this.path=t.path,this.size=t.size,this.uid=t.uid,this.uname=t.uname}encode(){let t=this.encodeBody();if(t==="")return Buffer.allocUnsafe(0);let e=Buffer.byteLength(t),i=512*Math.ceil(1+e/512),r=Buffer.allocUnsafe(i);for(let n=0;n<512;n++)r[n]=0;new F({path:("PaxHeader/"+_n(this.path??"")).slice(0,99),mode:this.mode||420,uid:this.uid,gid:this.gid,size:e,mtime:this.mtime,type:this.global?"GlobalExtendedHeader":"ExtendedHeader",linkpath:"",uname:this.uname||"",gname:this.gname||"",devmaj:0,devmin:0,atime:this.atime,ctime:this.ctime}).encode(r),r.write(t,512,e,"utf8");for(let n=e+512;n=Math.pow(10,o)&&(o+=1),o+n+r}static parse(t,e,i=!1){return new s(On(Tn(t),e),i)}},On=(s,t)=>t?Object.assign({},t,s):s,Tn=s=>s.replace(/\n$/,"").split(`
+`).reduce(xn,Object.create(null)),xn=(s,t)=>{let e=parseInt(t,10);if(e!==Buffer.byteLength(t)+1)return s;t=t.slice((e+" ").length);let i=t.split("="),r=i.shift();if(!r)return s;let n=r.replace(/^SCHILY\.(dev|ino|nlink)/,"$1"),o=i.join("=").replace(/\0.*/,"");switch(n){case"path":case"linkpath":case"type":case"charset":case"comment":case"gname":case"uname":s[n]=o;break;case"ctime":case"atime":case"mtime":s[n]=new Date(Number(o)*1e3);break;case"size":let h=+o;h>=0&&(s[n]=h);break;case"gid":case"uid":case"dev":case"ino":case"nlink":case"mode":s[n]=+o;break}return s};var Ln=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,f=Ln!=="win32"?s=>String(s):s=>String(s).replaceAll(/\\/g,"/");var $e=class extends A{extended;globalExtended;header;startBlockSize;blockRemain;remain;type;meta=!1;ignore=!1;path;mode;uid;gid;uname;gname;size=0;mtime;atime;ctime;linkpath;dev;ino;nlink;invalid=!1;absolute;unsupported=!1;constructor(t,e,i){switch(super({}),this.pause(),this.extended=e,this.globalExtended=i,this.header=t,this.remain=t.size??0,this.startBlockSize=512*Math.ceil(this.remain/512),this.blockRemain=this.startBlockSize,this.type=t.type,this.type){case"File":case"OldFile":case"Link":case"SymbolicLink":case"CharacterDevice":case"BlockDevice":case"Directory":case"FIFO":case"ContiguousFile":case"GNUDumpDir":break;case"NextFileHasLongLinkpath":case"NextFileHasLongPath":case"OldGnuLongPath":case"GlobalExtendedHeader":case"ExtendedHeader":case"OldExtendedHeader":this.meta=!0;break;default:this.ignore=!0}if(!t.path)throw new Error("no path provided for tar.ReadEntry");this.path=f(t.path),this.mode=t.mode,this.mode&&(this.mode=this.mode&4095),this.uid=t.uid,this.gid=t.gid,this.uname=t.uname,this.gname=t.gname,this.size=this.remain,this.mtime=t.mtime,this.atime=t.atime,this.ctime=t.ctime,this.linkpath=t.linkpath?f(t.linkpath):void 0,this.uname=t.uname,this.gname=t.gname,e&&this.#t(e),i&&this.#t(i,!0)}write(t){let e=t.length;if(e>this.blockRemain)throw new Error("writing more to entry than is appropriate");let i=this.remain,r=this.blockRemain;return this.remain=Math.max(0,i-e),this.blockRemain=Math.max(0,r-e),this.ignore?!0:i>=e?super.write(t):super.write(t.subarray(0,i))}#t(t,e=!1){t.path&&(t.path=f(t.path)),t.linkpath&&(t.linkpath=f(t.linkpath)),Object.assign(this,Object.fromEntries(Object.entries(t).filter(([i,r])=>!(r==null||i==="path"&&e))))}};var Dt=(s,t,e,i={})=>{s.file&&(i.file=s.file),s.cwd&&(i.cwd=s.cwd),i.code=e instanceof Error&&e.code||t,i.tarCode=t,!s.strict&&i.recoverable!==!1?(e instanceof Error&&(i=Object.assign(e,i),e=e.message),s.emit("warn",t,e,i)):e instanceof Error?s.emit("error",Object.assign(e,i)):s.emit("error",Object.assign(new Error(`${t}: ${e}`),i))};var Nn=1024*1024,Xi=Buffer.from([31,139]),qi=Buffer.from([40,181,47,253]),An=Math.max(Xi.length,qi.length),B=Symbol("state"),Nt=Symbol("writeEntry"),it=Symbol("readEntry"),Zi=Symbol("nextEntry"),Zs=Symbol("processEntry"),V=Symbol("extendedHeader"),he=Symbol("globalExtendedHeader"),dt=Symbol("meta"),Ys=Symbol("emitMeta"),p=Symbol("buffer"),st=Symbol("queue"),ut=Symbol("ended"),Yi=Symbol("emittedEnd"),At=Symbol("emit"),w=Symbol("unzip"),Xe=Symbol("consumeChunk"),qe=Symbol("consumeChunkSub"),Ki=Symbol("consumeBody"),Ks=Symbol("consumeMeta"),Vs=Symbol("consumeHeader"),ae=Symbol("consuming"),Vi=Symbol("bufferConcat"),Qe=Symbol("maybeEnd"),Yt=Symbol("writing"),$=Symbol("aborted"),Je=Symbol("onDone"),It=Symbol("sawValidEntry"),je=Symbol("sawNullBlock"),ti=Symbol("sawEOF"),$s=Symbol("closeStream"),In=1e3,le=Symbol("compressedBytesRead"),$i=Symbol("decompressedBytesRead"),Xs=Symbol("checkDecompressionRatio"),Cn=()=>!0,rt=class extends Dn{file;strict;maxMetaEntrySize;filter;brotli;zstd;maxDecompressionRatio;writable=!0;readable=!1;[st]=[];[p];[it];[Nt];[B]="begin";[dt]="";[V];[he];[ut]=!1;[w];[$]=!1;[It];[je]=!1;[ti]=!1;[Yt]=!1;[ae]=!1;[Yi]=!1;[le]=0;[$i]=0;constructor(t={}){super(),this.file=t.file||"",this.on(Je,()=>{(this[B]==="begin"||this[It]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),t.ondone?this.on(Je,t.ondone):this.on(Je,()=>{this.emit("prefinish"),this.emit("finish"),this.emit("end")}),this.strict=!!t.strict,this.maxDecompressionRatio=typeof t.maxDecompressionRatio=="number"?t.maxDecompressionRatio:In,this.maxMetaEntrySize=t.maxMetaEntrySize||Nn,this.filter=typeof t.filter=="function"?t.filter:Cn;let e=t.file&&(t.file.endsWith(".tar.br")||t.file.endsWith(".tbr"));this.brotli=!(t.gzip||t.zstd)&&t.brotli!==void 0?t.brotli:e?void 0:!1;let i=t.file&&(t.file.endsWith(".tar.zst")||t.file.endsWith(".tzst"));this.zstd=!(t.gzip||t.brotli)&&t.zstd!==void 0?t.zstd:i?!0:void 0,this.on("end",()=>this[$s]()),typeof t.onwarn=="function"&&this.on("warn",t.onwarn),typeof t.onReadEntry=="function"&&this.on("entry",t.onReadEntry)}warn(t,e,i={}){Dt(this,t,e,i)}[Vs](t,e){this[It]===void 0&&(this[It]=!1);let i;try{i=new F(t,e,this[V],this[he])}catch(r){return this.warn("TAR_ENTRY_INVALID",r)}if(i.nullBlock)this[je]?(this[ti]=!0,this[B]==="begin"&&(this[B]="header"),this[At]("eof")):(this[je]=!0,this[At]("nullBlock"));else if(this[je]=!1,!i.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:i});else if(!i.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:i});else{let r=i.type;if(/^(Symbolic)?Link$/.test(r)&&!i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:i});else if(!/^(Symbolic)?Link$/.test(r)&&!/^(Global)?ExtendedHeader$/.test(r)&&i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:i});else{let n=this[Nt]=new $e(i,this[V],this[he]);if(!this[It])if(n.remain){let o=()=>{n.invalid||(this[It]=!0)};n.on("end",o)}else this[It]=!0;n.meta?n.size>this.maxMetaEntrySize?(n.ignore=!0,this[At]("ignoredEntry",n),this[B]="ignore",n.resume()):n.size>0&&(this[dt]="",n.on("data",o=>this[dt]+=o),this[B]="meta"):(this[V]=void 0,n.ignore=n.ignore||!this.filter(n.path,n),n.ignore?(this[At]("ignoredEntry",n),this[B]=n.remain?"ignore":"header",n.resume()):(n.remain?this[B]="body":(this[B]="header",n.end()),this[it]?this[st].push(n):(this[st].push(n),this[Zi]())))}}}[$s](){queueMicrotask(()=>this.emit("close"))}[Zs](t){let e=!0;if(!t)this[it]=void 0,e=!1;else if(Array.isArray(t)){let[i,...r]=t;this.emit(i,...r)}else this[it]=t,this.emit("entry",t),t.emittedEnd||(t.on("end",()=>this[Zi]()),e=!1);return e}[Zi](){do;while(this[Zs](this[st].shift()));if(this[st].length===0){let t=this[it];!t||t.flowing||t.size===t.remain?this[Yt]||this.emit("drain"):t.once("drain",()=>this.emit("drain"))}}[Ki](t,e){let i=this[Nt];if(!i)throw new Error("attempt to consume body without entry??");let r=i.blockRemain??0,n=r>=t.length&&e===0?t:t.subarray(e,e+r);return i.write(n),i.blockRemain||(this[B]="header",this[Nt]=void 0,i.end()),n.length}[Ks](t,e){let i=this[Nt],r=this[Ki](t,e);return!this[Nt]&&i&&this[Ys](i),r}[At](t,e,i){this[st].length===0&&!this[it]?this.emit(t,e,i):this[st].push([t,e,i])}[Ys](t){switch(this[At]("meta",this[dt]),t.type){case"ExtendedHeader":case"OldExtendedHeader":this[V]=ft.parse(this[dt],this[V],!1);break;case"GlobalExtendedHeader":this[he]=ft.parse(this[dt],this[he],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":{let e=this[V]??Object.create(null);this[V]=e,e.path=this[dt].replace(/\0.*/,"");break}case"NextFileHasLongLinkpath":{let e=this[V]||Object.create(null);this[V]=e,e.linkpath=this[dt].replace(/\0.*/,"");break}default:throw new Error("unknown meta: "+t.type)}}abort(t){if(!this[$]){if(this[w]){let e=this[w];e.write=()=>!0,e.end=()=>e,e.emit=()=>!1,e.destroy?.()}this[$]=!0,this.emit("abort",t),this.warn("TAR_ABORT",t,{recoverable:!1})}}[Xs](t){this[$i]+=t.length;let e=this[$i]/this[le];return e>this.maxDecompressionRatio?(this.abort(new Error(`max decompression ratio exceeded: ${e.toFixed(2)} > ${this.maxDecompressionRatio}`)),!1):!0}write(t,e,i){if(typeof e=="function"&&(i=e,e=void 0),typeof t=="string"&&(t=Buffer.from(t,typeof e=="string"?e:"utf8")),this[$])return i?.(),!1;if((this[w]===void 0||this.brotli===void 0&&this[w]===!1)&&t){if(this[p]&&(t=Buffer.concat([this[p],t]),this[p]=void 0),t.length{this[Xs](c)&&this[Xe](c)}),this[w].on("error",c=>{this[$]||this.abort(c)}),this[w].on("end",()=>{this[ut]=!0,this[Xe]()}),this[Yt]=!0,this[le]+=t.length;let l=!!this[w][a?"end":"write"](t);return this[Yt]=!1,i?.(),l}}this[Yt]=!0,this[w]?(this[le]+=t.length,this[w].write(t)):this[Xe](t),this[Yt]=!1;let n=this[st].length>0?!1:this[it]?this[it].flowing:!0;return!n&&this[st].length===0&&this[it]?.once("drain",()=>this.emit("drain")),i?.(),n}[Vi](t){t&&!this[$]&&(this[p]=this[p]?Buffer.concat([this[p],t]):t)}[Qe](){if(this[ut]&&!this[Yi]&&!this[$]&&!this[ae]){this[Yi]=!0;let t=this[Nt];if(t?.blockRemain){let e=this[p]?this[p].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${t.blockRemain} more bytes, only ${e} available)`,{entry:t}),this[p]&&t.write(this[p]),t.end()}this[At](Je)}}[Xe](t){if(this[ae]&&t)this[Vi](t);else if(!t&&!this[p])this[Qe]();else if(t){if(this[ae]=!0,this[p]){this[Vi](t);let e=this[p];this[p]=void 0,this[qe](e)}else this[qe](t);for(;this[p]&&this[p]?.length>=512&&!this[$]&&!this[ti];){let e=this[p];this[p]=void 0,this[qe](e)}this[ae]=!1}(!this[p]||this[ut])&&this[Qe]()}[qe](t){let e=0,i=t.length;for(;e+512<=i&&!this[$]&&!this[ti];)switch(this[B]){case"begin":case"header":this[Vs](t,e),e+=512;break;case"ignore":case"body":e+=this[Ki](t,e);break;case"meta":e+=this[Ks](t,e);break;default:throw new Error("invalid state: "+this[B])}e{let t=s.length-1,e=-1;for(;t>-1&&s.charAt(t)==="/";)e=t,t--;return e===-1?s:s.slice(0,e)};var vn=s=>{let t=s.onReadEntry;s.onReadEntry=t?e=>{t(e),e.resume()}:e=>e.resume()},Qi=(s,t)=>{let e=new Map(t.map(o=>[mt(o),!0])),i=s.filter,r=100,n=(o,h="",a=0)=>{if(a>=r)return e.set(o,!1),!1;let l=h||kn(o).root||".",c;if(o===l)c=!1;else{let d=e.get(o);c=d!==void 0?d:n(Fn(o),l,a+1)}return e.set(o,c),c};s.filter=i?(o,h)=>i(o,h)&&n(mt(o)):o=>n(mt(o))},Mn=s=>{let t=new rt(s),e=s.file,i;try{i=Kt.openSync(e,"r");let r=Kt.fstatSync(i),n=s.maxReadSize||16*1024*1024;if(r.size{let e=new rt(s),i=s.maxReadSize||16*1024*1024,r=s.file;return new Promise((o,h)=>{e.on("error",h),e.on("end",o),Kt.stat(r,(a,l)=>{if(a)h(a);else{let c=new _t(r,{readSize:i,size:l.size});c.on("error",h),c.pipe(e)}})})},Ct=K(Mn,Bn,s=>new rt(s),s=>new rt(s),(s,t)=>{t?.length&&Qi(s,t),s.noResume||vn(s)});import mi from"fs";import X from"fs";import js from"path";var Ji=(s,t,e)=>(s&=4095,e&&(s=(s|384)&-19),t&&(s&256&&(s|=64),s&32&&(s|=8),s&4&&(s|=1)),s);import{win32 as Pn}from"node:path";var{isAbsolute:zn,parse:qs}=Pn,ce=s=>{let t="",e=qs(s);for(;zn(s)||e.root;){let i=s.charAt(0)==="/"&&s.slice(0,4)!=="//?/"?"/":e.root;s=s.slice(i.length),t+=i,e=qs(s)}return[t,s]};var ei=["|","<",">","?",":"],ji=ei.map(s=>String.fromCodePoint(61440+Number(s.codePointAt(0)))),Un=new Map(ei.map((s,t)=>[s,ji[t]])),Hn=new Map(ji.map((s,t)=>[s,ei[t]])),ts=s=>ei.reduce((t,e)=>t.split(e).join(Un.get(e)),s),Qs=s=>ji.reduce((t,e)=>t.split(e).join(Hn.get(e)),s);var rr=(s,t)=>t?(s=f(s).replace(/^\.(\/|$)/,""),mt(t)+"/"+s):f(s),Wn=16*1024*1024,tr=Symbol("process"),er=Symbol("file"),ir=Symbol("directory"),is=Symbol("symlink"),sr=Symbol("hardlink"),fe=Symbol("header"),ii=Symbol("read"),ss=Symbol("lstat"),si=Symbol("onlstat"),rs=Symbol("onread"),ns=Symbol("onreadlink"),os=Symbol("openfile"),hs=Symbol("onopenfile"),pt=Symbol("close"),ri=Symbol("mode"),as=Symbol("awaitDrain"),es=Symbol("ondrain"),q=Symbol("prefix"),de=class extends A{path;portable;myuid=process.getuid&&process.getuid()||0;myuser=process.env.USER||"";maxReadSize;linkCache;statCache;preservePaths;cwd;strict;mtime;noPax;noMtime;prefix;fd;blockLen=0;blockRemain=0;buf;pos=0;remain=0;length=0;offset=0;win32;absolute;header;type;linkpath;stat;onWriteEntry;#t=!1;constructor(t,e={}){let i=se(e);super(),this.path=f(t),this.portable=!!i.portable,this.maxReadSize=i.maxReadSize||Wn,this.linkCache=i.linkCache||new Map,this.statCache=i.statCache||new Map,this.preservePaths=!!i.preservePaths,this.cwd=f(i.cwd||process.cwd()),this.strict=!!i.strict,this.noPax=!!i.noPax,this.noMtime=!!i.noMtime,this.mtime=i.mtime,this.prefix=i.prefix?f(i.prefix):void 0,this.onWriteEntry=i.onWriteEntry,typeof i.onwarn=="function"&&this.on("warn",i.onwarn);let r=!1;if(!this.preservePaths){let[o,h]=ce(this.path);o&&typeof h=="string"&&(this.path=h,r=o)}this.win32=!!i.win32||process.platform==="win32",this.win32&&(this.path=Qs(this.path.replaceAll(/\\/g,"/")),t=t.replaceAll(/\\/g,"/")),this.absolute=f(i.absolute||js.resolve(this.cwd,t)),this.path===""&&(this.path="./"),r&&this.warn("TAR_ENTRY_INFO",`stripping ${r} from absolute path`,{entry:this,path:r+this.path});let n=this.statCache.get(this.absolute);n?this[si](n):this[ss]()}warn(t,e,i={}){return Dt(this,t,e,i)}emit(t,...e){return t==="error"&&(this.#t=!0),super.emit(t,...e)}[ss](){X.lstat(this.absolute,(t,e)=>{if(t)return this.emit("error",t);this[si](e)})}[si](t){this.statCache.set(this.absolute,t),this.stat=t,t.isFile()||(t.size=0),this.type=Gn(t),this.emit("stat",t),this[tr]()}[tr](){switch(this.type){case"File":return this[er]();case"Directory":return this[ir]();case"SymbolicLink":return this[is]();default:return this.end()}}[ri](t){return Ji(t,this.type==="Directory",this.portable)}[q](t){return rr(t,this.prefix)}[fe](){if(!this.stat)throw new Error("cannot write header before stat");this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.onWriteEntry?.(this),this.header=new F({path:this[q](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[q](this.linkpath):this.linkpath,mode:this[ri](this.stat.mode),uid:this.portable?void 0:this.stat.uid,gid:this.portable?void 0:this.stat.gid,size:this.stat.size,mtime:this.noMtime?void 0:this.mtime||this.stat.mtime,type:this.type==="Unsupported"?void 0:this.type,uname:this.portable?void 0:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?void 0:this.stat.atime,ctime:this.portable?void 0:this.stat.ctime}),this.header.encode()&&!this.noPax&&super.write(new ft({atime:this.portable?void 0:this.header.atime,ctime:this.portable?void 0:this.header.ctime,gid:this.portable?void 0:this.header.gid,mtime:this.noMtime?void 0:this.mtime||this.header.mtime,path:this[q](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[q](this.linkpath):this.linkpath,size:this.header.size,uid:this.portable?void 0:this.header.uid,uname:this.portable?void 0:this.header.uname,dev:this.portable?void 0:this.stat.dev,ino:this.portable?void 0:this.stat.ino,nlink:this.portable?void 0:this.stat.nlink}).encode());let t=this.header?.block;if(!t)throw new Error("failed to encode header");super.write(t)}[ir](){if(!this.stat)throw new Error("cannot create directory entry without stat");this.path.slice(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[fe](),this.end()}[is](){X.readlink(this.absolute,(t,e)=>{if(t)return this.emit("error",t);this[ns](e)})}[ns](t){this.linkpath=f(t),this[fe](),this.end()}[sr](t){if(!this.stat)throw new Error("cannot create link entry without stat");this.type="Link",this.linkpath=f(js.relative(this.cwd,t)),this.stat.size=0,this[fe](),this.end()}[er](){if(!this.stat)throw new Error("cannot create file entry without stat");if(this.stat.nlink>1){let t=`${this.stat.dev}:${this.stat.ino}`,e=this.linkCache.get(t);if(e?.indexOf(this.cwd)===0)return this[sr](e);this.linkCache.set(t,this.absolute)}if(this[fe](),this.stat.size===0)return this.end();this[os]()}[os](){X.open(this.absolute,"r",(t,e)=>{if(t)return this.emit("error",t);this[hs](e)})}[hs](t){if(this.fd=t,this.#t)return this[pt]();if(!this.stat)throw new Error("should stat before calling onopenfile");this.blockLen=512*Math.ceil(this.stat.size/512),this.blockRemain=this.blockLen;let e=Math.min(this.blockLen,this.maxReadSize);this.buf=Buffer.allocUnsafe(e),this.offset=0,this.pos=0,this.remain=this.stat.size,this.length=this.buf.length,this[ii]()}[ii](){let{fd:t,buf:e,offset:i,length:r,pos:n}=this;if(t===void 0||e===void 0)throw new Error("cannot read file without first opening");X.read(t,e,i,r,n,(o,h)=>{if(o)return this[pt](()=>this.emit("error",o));this[rs](h)})}[pt](t=()=>{}){this.fd!==void 0&&X.close(this.fd,t)}[rs](t){if(t<=0&&this.remain>0){let r=Object.assign(new Error("encountered unexpected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[pt](()=>this.emit("error",r))}if(t>this.remain){let r=Object.assign(new Error("did not encounter expected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[pt](()=>this.emit("error",r))}if(!this.buf)throw new Error("should have created buffer prior to reading");if(t===this.remain)for(let r=t;rthis[es]())}[as](t){this.once("drain",t)}write(t,e,i){if(typeof e=="function"&&(i=e,e=void 0),typeof t=="string"&&(t=Buffer.from(t,typeof e=="string"?e:"utf8")),this.blockRemaint?this.emit("error",t):this.end());if(!this.buf)throw new Error("buffer lost somehow in ONDRAIN");this.offset>=this.length&&(this.buf=Buffer.allocUnsafe(Math.min(this.blockRemain,this.buf.length)),this.offset=0),this.length=this.buf.length-this.offset,this[ii]()}},ni=class extends de{sync=!0;[ss](){this[si](X.lstatSync(this.absolute))}[is](){this[ns](X.readlinkSync(this.absolute))}[os](){this[hs](X.openSync(this.absolute,"r"))}[ii](){let t=!0;try{let{fd:e,buf:i,offset:r,length:n,pos:o}=this;if(e===void 0||i===void 0)throw new Error("fd and buf must be set in READ method");let h=X.readSync(e,i,r,n,o);this[rs](h),t=!1}finally{if(t)try{this[pt](()=>{})}catch{}}}[as](t){t()}[pt](t=()=>{}){this.fd!==void 0&&X.closeSync(this.fd),t()}},oi=class extends A{blockLen=0;blockRemain=0;buf=0;pos=0;remain=0;length=0;preservePaths;portable;strict;noPax;noMtime;readEntry;type;prefix;path;mode;uid;gid;uname;gname;header;mtime;atime;ctime;linkpath;size;onWriteEntry;warn(t,e,i={}){return Dt(this,t,e,i)}constructor(t,e={}){let i=se(e);super(),this.preservePaths=!!i.preservePaths,this.portable=!!i.portable,this.strict=!!i.strict,this.noPax=!!i.noPax,this.noMtime=!!i.noMtime,this.onWriteEntry=i.onWriteEntry,this.readEntry=t;let{type:r}=t;if(r==="Unsupported")throw new Error("writing entry that should be ignored");this.type=r,this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.prefix=i.prefix,this.path=f(t.path),this.mode=t.mode!==void 0?this[ri](t.mode):void 0,this.uid=this.portable?void 0:t.uid,this.gid=this.portable?void 0:t.gid,this.uname=this.portable?void 0:t.uname,this.gname=this.portable?void 0:t.gname,this.size=t.size,this.mtime=this.noMtime?void 0:i.mtime||t.mtime,this.atime=this.portable?void 0:t.atime,this.ctime=this.portable?void 0:t.ctime,this.linkpath=t.linkpath!==void 0?f(t.linkpath):void 0,typeof i.onwarn=="function"&&this.on("warn",i.onwarn);let n=!1;if(!this.preservePaths){let[h,a]=ce(this.path);h&&typeof a=="string"&&(this.path=a,n=h)}this.remain=t.size,this.blockRemain=t.startBlockSize,this.onWriteEntry?.(this),this.header=new F({path:this[q](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[q](this.linkpath):this.linkpath,mode:this.mode,uid:this.portable?void 0:this.uid,gid:this.portable?void 0:this.gid,size:this.size,mtime:this.noMtime?void 0:this.mtime,type:this.type,uname:this.portable?void 0:this.uname,atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime}),n&&this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute path`,{entry:this,path:n+this.path}),this.header.encode()&&!this.noPax&&super.write(new ft({atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime,gid:this.portable?void 0:this.gid,mtime:this.noMtime?void 0:this.mtime,path:this[q](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[q](this.linkpath):this.linkpath,size:this.size,uid:this.portable?void 0:this.uid,uname:this.portable?void 0:this.uname,dev:this.portable?void 0:this.readEntry.dev,ino:this.portable?void 0:this.readEntry.ino,nlink:this.portable?void 0:this.readEntry.nlink}).encode());let o=this.header?.block;if(!o)throw new Error("failed to encode header");super.write(o),t.pipe(this)}[q](t){return rr(t,this.prefix)}[ri](t){return Ji(t,this.type==="Directory",this.portable)}write(t,e,i){typeof e=="function"&&(i=e,e=void 0),typeof t=="string"&&(t=Buffer.from(t,typeof e=="string"?e:"utf8"));let r=t.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=r,super.write(t,i)}end(t,e,i){return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),typeof t=="function"&&(i=t,e=void 0,t=void 0),typeof e=="function"&&(i=e,e=void 0),typeof t=="string"&&(t=Buffer.from(t,e??"utf8")),i&&this.once("finish",i),t?super.end(t,i):super.end(i),this}},Gn=s=>s.isFile()?"File":s.isDirectory()?"Directory":s.isSymbolicLink()?"SymbolicLink":"Unsupported";var hi=class s{tail;head;length=0;static create(t=[]){return new s(t)}constructor(t=[]){for(let e of t)this.push(e)}*[Symbol.iterator](){for(let t=this.head;t;t=t.next)yield t.value}removeNode(t){if(t.list!==this)throw new Error("removing node which does not belong to this list");let e=t.next,i=t.prev;return e&&(e.prev=i),i&&(i.next=e),t===this.head&&(this.head=e),t===this.tail&&(this.tail=i),this.length--,t.next=void 0,t.prev=void 0,t.list=void 0,e}unshiftNode(t){if(t===this.head)return;t.list&&t.list.removeNode(t);let e=this.head;t.list=this,t.next=e,e&&(e.prev=t),this.head=t,this.tail||(this.tail=t),this.length++}pushNode(t){if(t===this.tail)return;t.list&&t.list.removeNode(t);let e=this.tail;t.list=this,t.prev=e,e&&(e.next=t),this.tail=t,this.head||(this.head=t),this.length++}push(...t){for(let e=0,i=t.length;e1)i=e;else if(this.head)r=this.head.next,i=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;r;n++)i=t(i,r.value,n),r=r.next;return i}reduceReverse(t,e){let i,r=this.tail;if(arguments.length>1)i=e;else if(this.tail)r=this.tail.prev,i=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(let n=this.length-1;r;n--)i=t(i,r.value,n),r=r.prev;return i}toArray(){let t=new Array(this.length);for(let e=0,i=this.head;i;e++)t[e]=i.value,i=i.next;return t}toArrayReverse(){let t=new Array(this.length);for(let e=0,i=this.tail;i;e++)t[e]=i.value,i=i.prev;return t}slice(t=0,e=this.length){e<0&&(e+=this.length),t<0&&(t+=this.length);let i=new s;if(ethis.length&&(e=this.length);let r=this.head,n=0;for(n=0;r&&nthis.length&&(e=this.length);let r=this.length,n=this.tail;for(;n&&r>e;r--)n=n.prev;for(;n&&r>t;r--,n=n.prev)i.push(n.value);return i}splice(t,e=0,...i){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);let r=this.head;for(let o=0;r&&o1)throw new TypeError("gzip, brotli, zstd are mutually exclusive");if(t.gzip&&(typeof t.gzip!="object"&&(t.gzip={}),this.portable&&(t.gzip.portable=!0),this.zip=new ze(t.gzip)),t.brotli&&(typeof t.brotli!="object"&&(t.brotli={}),this.zip=new We(t.brotli)),t.zstd&&(typeof t.zstd!="object"&&(t.zstd={}),this.zip=new Ye(t.zstd)),!this.zip)throw new Error("impossible");let e=this.zip;e.on("data",i=>super.write(i)),e.on("end",()=>super.end()),e.on("drain",()=>this[fs]()),this.on("resume",()=>e.resume())}else this.on("drain",this[fs]);this.noDirRecurse=!!t.noDirRecurse,this.follow=!!t.follow,this.noMtime=!!t.noMtime,t.mtime&&(this.mtime=t.mtime),this.filter=typeof t.filter=="function"?t.filter:()=>!0,this[W]=new hi,this[G]=0,this.jobs=Number(t.jobs)||4,this[Ee]=!1,this[me]=!1}[lr](t){return super.write(t)}add(t){return this.write(t),this}end(t,e,i){return typeof t=="function"&&(i=t,t=void 0),typeof e=="function"&&(i=e,e=void 0),t&&this.add(t),this[me]=!0,this[Ft](),i&&i(),this}write(t){if(this[me])throw new Error("write after end");return typeof t=="string"?this[ci](t):this[or](t),this.flowing}[or](t){let e=f(ar.resolve(this.cwd,t.path));if(!this.filter(t.path,t))t.resume();else{let i=new pi(t.path,e);i.entry=new oi(t,this[cs](i)),i.entry.on("end",()=>this[ls](i)),this[G]+=1,this[W].push(i)}this[Ft]()}[ci](t){let e=f(ar.resolve(this.cwd,t));this[W].push(new pi(t,e)),this[Ft]()}[ds](t){t.pending=!0,this[G]+=1;let e=this.follow?"stat":"lstat";mi[e](t.absolute,(i,r)=>{t.pending=!1,this[G]-=1,i?this.emit("error",i):this[li](t,r)})}[li](t,e){if(this.statCache.set(t.absolute,e),t.stat=e,!this.filter(t.path,e))t.ignore=!0;else if(e.isFile()&&e.nlink>1&&!this.linkCache.get(`${e.dev}:${e.ino}`)&&!this.sync)if(t===this[Et])this[ai](t);else{let i=`${e.dev}:${e.ino}`,r=this[pe].get(i);r?r.push(t):this[pe].set(i,[t]),t.pendingLink=!0,t.pending=!0}this[Ft]()}[us](t){t.pending=!0,this[G]+=1,mi.readdir(t.absolute,(e,i)=>{if(t.pending=!1,this[G]-=1,e)return this.emit("error",e);this[fi](t,i)})}[fi](t,e){this.readdirCache.set(t.absolute,e),t.readdir=e,this[Ft]()}[Ft](){if(!this[Ee]){this[Ee]=!0;for(let t=this[W].head;t&&this[G]1){let i=`${e.dev}:${e.ino}`,r=this[pe].get(i);if(r){this[pe].delete(i);for(let n of r)n.pending=!1,this[ai](n)}}this[Ft]()}[ai](t){if(t.pending&&t.pendingLink&&t===this[Et]&&(t.pending=!1,t.pendingLink=!1),!t.pending){if(t.entry){t===this[Et]&&!t.piped&&this[di](t);return}if(!t.stat){let e=this.statCache.get(t.absolute);e?this[li](t,e):this[ds](t)}if(t.stat&&!t.ignore){if(!this.noDirRecurse&&t.stat.isDirectory()&&!t.readdir){let e=this.readdirCache.get(t.absolute);if(e?this[fi](t,e):this[us](t),!t.readdir)return}if(t.entry=this[hr](t),!t.entry){t.ignore=!0;return}t===this[Et]&&!t.piped&&this[di](t)}}}[cs](t){return{onwarn:(e,i,r)=>this.warn(e,i,r),noPax:this.noPax,cwd:this.cwd,absolute:t.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime,prefix:this.prefix,onWriteEntry:this.onWriteEntry}}[hr](t){this[G]+=1;try{return new this[ui](t.path,this[cs](t)).on("end",()=>this[ls](t)).on("error",i=>this.emit("error",i))}catch(e){this.emit("error",e)}}[fs](){this[Et]&&this[Et].entry&&this[Et].entry.resume()}[di](t){t.piped=!0,t.readdir&&t.readdir.forEach(r=>{let n=t.path,o=n==="./"?"":n.replace(/\/*$/,"/");this[ci](o+r)});let e=t.entry,i=this.zip;if(!e)throw new Error("cannot pipe without source");i?e.on("data",r=>{i.write(r)||e.pause()}):e.on("data",r=>{super.write(r)||e.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}warn(t,e,i={}){Dt(this,t,e,i)}},kt=class extends wt{sync=!0;constructor(t){super(t),this[ui]=ni}pause(){}resume(){}[ds](t){let e=this.follow?"statSync":"lstatSync";this[li](t,mi[e](t.absolute))}[us](t){this[fi](t,mi.readdirSync(t.absolute))}[di](t){let e=t.entry,i=this.zip;if(t.readdir&&t.readdir.forEach(r=>{let n=t.path,o=n==="./"?"":n.replace(/\/*$/,"/");this[ci](o+r)}),!e)throw new Error("Cannot pipe without source");i?e.on("data",r=>{i.write(r)}):e.on("data",r=>{super[lr](r)})}};var Vn=(s,t)=>{let e=new kt(s),i=new Wt(s.file,{mode:s.mode||438});e.pipe(i),fr(e,t)},$n=(s,t)=>{let e=new wt(s),i=new et(s.file,{mode:s.mode||438});e.pipe(i);let r=new Promise((n,o)=>{i.on("error",o),i.on("close",n),e.on("error",o)});return dr(e,t).catch(n=>e.emit("error",n)),r},fr=(s,t)=>{t.forEach(e=>{e.charAt(0)==="@"?Ct({file:cr.resolve(s.cwd,e.slice(1)),sync:!0,noResume:!0,onReadEntry:i=>s.add(i)}):s.add(e)}),s.end()},dr=async(s,t)=>{for(let e of t)e.charAt(0)==="@"?await Ct({file:cr.resolve(String(s.cwd),e.slice(1)),noResume:!0,onReadEntry:i=>{s.add(i)}}):s.add(e);s.end()},Xn=(s,t)=>{let e=new kt(s);return fr(e,t),e},qn=(s,t)=>{let e=new wt(s);return dr(e,t).catch(i=>e.emit("error",i)),e},Qn=K(Vn,$n,Xn,qn,(s,t)=>{if(!t?.length)throw new TypeError("no paths specified to add to archive")});import Br from"node:fs";import co from"node:assert";import{randomBytes as Mr}from"node:crypto";import u from"node:fs";import R from"node:path";import pr from"fs";var Jn=process.env.__FAKE_PLATFORM__||process.platform,Er=Jn==="win32",{O_CREAT:wr,O_NOFOLLOW:ur,O_TRUNC:Sr,O_WRONLY:yr}=pr.constants,Rr=Number(process.env.__FAKE_FS_O_FILENAME__)||pr.constants.UV_FS_O_FILEMAP||0,jn=Er&&!!Rr,to=512*1024,eo=Rr|Sr|wr|yr,mr=!Er&&typeof ur=="number"?ur|Sr|wr|yr:null,ms=mr!==null?()=>mr:jn?s=>s"w";import wi from"node:fs";import we from"node:path";var ps=(s,t,e)=>{try{return wi.lchownSync(s,t,e)}catch(i){if(i?.code!=="ENOENT")throw i}},Ei=(s,t,e,i)=>{wi.lchown(s,t,e,r=>{i(r&&r?.code!=="ENOENT"?r:null)})},io=(s,t,e,i,r)=>{if(t.isDirectory())Es(we.resolve(s,t.name),e,i,n=>{if(n)return r(n);let o=we.resolve(s,t.name);Ei(o,e,i,r)});else{let n=we.resolve(s,t.name);Ei(n,e,i,r)}},Es=(s,t,e,i)=>{wi.readdir(s,{withFileTypes:!0},(r,n)=>{if(r){if(r.code==="ENOENT")return i();if(r.code!=="ENOTDIR"&&r.code!=="ENOTSUP")return i(r)}if(r||!n.length)return Ei(s,t,e,i);let o=n.length,h=null,a=l=>{if(!h){if(l)return i(h=l);if(--o===0)return Ei(s,t,e,i)}};for(let l of n)io(s,l,t,e,a)})},so=(s,t,e,i)=>{t.isDirectory()&&ws(we.resolve(s,t.name),e,i),ps(we.resolve(s,t.name),e,i)},ws=(s,t,e)=>{let i;try{i=wi.readdirSync(s,{withFileTypes:!0})}catch(r){let n=r;if(n?.code==="ENOENT")return;if(n?.code==="ENOTDIR"||n?.code==="ENOTSUP")return ps(s,t,e);throw n}for(let r of i)so(s,r,t,e);return ps(s,t,e)};import k from"node:fs";import ro from"node:fs/promises";import Si from"node:path";var Se=class extends Error{path;code;syscall="chdir";constructor(t,e){super(`${e}: Cannot cd into '${t}'`),this.path=t,this.code=e}get name(){return"CwdError"}};var St=class extends Error{path;symlink;syscall="symlink";code="TAR_SYMLINK_ERROR";constructor(t,e){super("TAR_SYMLINK_ERROR: Cannot extract through symbolic link"),this.symlink=t,this.path=e}get name(){return"SymlinkError"}};var no=(s,t)=>{k.stat(s,(e,i)=>{(e||!i.isDirectory())&&(e=new Se(s,e?.code||"ENOTDIR")),t(e)})},gr=(s,t,e)=>{s=f(s);let i=t.umask??18,r=t.mode|448,n=(r&i)!==0,o=t.uid,h=t.gid,a=typeof o=="number"&&typeof h=="number"&&(o!==t.processUid||h!==t.processGid),l=t.preserve,c=t.unlink,d=f(t.cwd),y=(E,x)=>{E?e(E):x&&a?Es(x,o,h,Le=>y(Le)):n?k.chmod(s,r,e):e()};if(s===d)return no(s,y);if(l)return ro.mkdir(s,{mode:r,recursive:!0}).then(E=>y(null,E??void 0),y);let D=f(Si.relative(d,s)).split("/");Ss(d,D,r,c,d,void 0,y)},Ss=(s,t,e,i,r,n,o)=>{if(t.length===0)return o(null,n);let h=t.shift(),a=f(Si.resolve(s+"/"+h));k.mkdir(a,e,br(a,t,e,i,r,n,o))},br=(s,t,e,i,r,n,o)=>h=>{h?k.lstat(s,(a,l)=>{if(a)a.path=a.path&&f(a.path),o(a);else if(l.isDirectory())Ss(s,t,e,i,r,n,o);else if(i)k.unlink(s,c=>{if(c)return o(c);k.mkdir(s,e,br(s,t,e,i,r,n,o))});else{if(l.isSymbolicLink())return o(new St(s,s+"/"+t.join("/")));o(h)}}):(n=n||s,Ss(s,t,e,i,r,n,o))},oo=s=>{let t=!1,e;try{t=k.statSync(s).isDirectory()}catch(i){e=i?.code}finally{if(!t)throw new Se(s,e??"ENOTDIR")}},_r=(s,t)=>{s=f(s);let e=t.umask??18,i=t.mode|448,r=(i&e)!==0,n=t.uid,o=t.gid,h=typeof n=="number"&&typeof o=="number"&&(n!==t.processUid||o!==t.processGid),a=t.preserve,l=t.unlink,c=f(t.cwd),d=E=>{E&&h&&ws(E,n,o),r&&k.chmodSync(s,i)};if(s===c)return oo(c),d();if(a)return d(k.mkdirSync(s,{mode:i,recursive:!0})??void 0);let T=f(Si.relative(c,s)).split("/"),D;for(let E=T.shift(),x=c;E&&(x+="/"+E);E=T.shift()){x=f(Si.resolve(x));try{k.mkdirSync(x,i),D=D||x}catch{let Le=k.lstatSync(x);if(Le.isDirectory())continue;if(l){k.unlinkSync(x),k.mkdirSync(x,i),D=D||x;continue}else if(Le.isSymbolicLink())return new St(x,x+"/"+T.join("/"))}}return d(D)};import{join as xr}from"node:path";var ys=Object.create(null),Or=1e4,Vt=new Set,Tr=s=>{Vt.has(s)?Vt.delete(s):ys[s]=s.normalize("NFD").toLocaleLowerCase("en").toLocaleUpperCase("en"),Vt.add(s);let t=ys[s],e=Vt.size-Or;if(e>Or/10){for(let i of Vt)if(Vt.delete(i),delete ys[i],--e<=0)break}return t};var ho=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,ao=ho==="win32",lo=s=>s.split("/").slice(0,-1).reduce((e,i)=>{let r=e.at(-1);return r!==void 0&&(i=xr(r,i)),e.push(i||"/"),e},[]),yi=class{#t=new Map;#i=new Map;#s=new Set;reserve(t,e){t=ao?["win32 parallelization disabled"]:t.map(r=>mt(xr(Tr(r))));let i=new Set(t.map(r=>lo(r)).reduce((r,n)=>r.concat(n)));this.#i.set(e,{dirs:i,paths:t});for(let r of t){let n=this.#t.get(r);n?n.push(e):this.#t.set(r,[e])}for(let r of i){let n=this.#t.get(r);if(!n)this.#t.set(r,[new Set([e])]);else{let o=n.at(-1);o instanceof Set?o.add(e):n.push(new Set([e]))}}return this.#r(e)}#n(t){let e=this.#i.get(t);if(!e)throw new Error("function does not have any path reservations");return{paths:e.paths.map(i=>this.#t.get(i)),dirs:[...e.dirs].map(i=>this.#t.get(i))}}check(t){let{paths:e,dirs:i}=this.#n(t);return e.every(r=>r&&r[0]===t)&&i.every(r=>r&&r[0]instanceof Set&&r[0].has(t))}#r(t){return this.#s.has(t)||!this.check(t)?!1:(this.#s.add(t),t(()=>this.#e(t)),!0)}#e(t){if(!this.#s.has(t))return!1;let e=this.#i.get(t);if(!e)throw new Error("invalid reservation");let{paths:i,dirs:r}=e,n=new Set;for(let o of i){let h=this.#t.get(o);if(!h||h?.[0]!==t)continue;let a=h[1];if(!a){this.#t.delete(o);continue}if(h.shift(),typeof a=="function")n.add(a);else for(let l of a)n.add(l)}for(let o of r){let h=this.#t.get(o),a=h?.[0];if(!(!h||!(a instanceof Set)))if(a.size===1&&h.length===1){this.#t.delete(o);continue}else if(a.size===1){h.shift();let l=h[0];typeof l=="function"&&n.add(l)}else a.delete(t)}return this.#s.delete(t),n.forEach(o=>this.#r(o)),!0}};var Lr=()=>process.umask();var Dr=Symbol("onEntry"),_s=Symbol("checkFs"),Nr=Symbol("checkFs2"),Os=Symbol("isReusable"),P=Symbol("makeFs"),Ts=Symbol("file"),xs=Symbol("directory"),gi=Symbol("link"),Ar=Symbol("symlink"),Ir=Symbol("hardlink"),Re=Symbol("ensureNoSymlink"),Cr=Symbol("unsupported"),Fr=Symbol("checkPath"),Rs=Symbol("stripAbsolutePath"),yt=Symbol("mkdir"),O=Symbol("onError"),Ri=Symbol("pending"),kr=Symbol("pend"),$t=Symbol("unpend"),gs=Symbol("ended"),bs=Symbol("maybeClose"),Ls=Symbol("skip"),ge=Symbol("doChown"),be=Symbol("uid"),_e=Symbol("gid"),Oe=Symbol("checkedCwd"),fo=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,Te=fo==="win32",uo=1024,mo=(s,t)=>{if(!Te)return u.unlink(s,t);let e=s+".DELETE."+Mr(16).toString("hex");u.rename(s,e,i=>{if(i)return t(i);u.unlink(e,t)})},po=s=>{if(!Te)return u.unlinkSync(s);let t=s+".DELETE."+Mr(16).toString("hex");u.renameSync(s,t),u.unlinkSync(t)},vr=(s,t,e)=>s!==void 0&&s===s>>>0?s:t!==void 0&&t===t>>>0?t:e,Xt=class extends rt{[gs]=!1;[Oe]=!1;[Ri]=0;reservations=new yi;transform;writable=!0;readable=!1;uid;gid;setOwner;preserveOwner;processGid;processUid;maxDepth;forceChown;win32;newer;keep;noMtime;preservePaths;unlink;cwd;strip;processUmask;umask;dmode;fmode;chmod;constructor(t={}){if(t.ondone=()=>{this[gs]=!0,this[bs]()},super(t),this.transform=t.transform,this.chmod=!!t.chmod,typeof t.uid=="number"||typeof t.gid=="number"){if(typeof t.uid!="number"||typeof t.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(t.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=t.uid,this.gid=t.gid,this.setOwner=!0}else this.uid=void 0,this.gid=void 0,this.setOwner=!1;this.preserveOwner=t.preserveOwner===void 0&&typeof t.uid!="number"?process.getuid?.()===0:!!t.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():void 0,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():void 0,this.maxDepth=typeof t.maxDepth=="number"?t.maxDepth:uo,this.forceChown=t.forceChown===!0,this.win32=!!t.win32||Te,this.newer=!!t.newer,this.keep=!!t.keep,this.noMtime=!!t.noMtime,this.preservePaths=!!t.preservePaths,this.unlink=!!t.unlink,this.cwd=f(R.resolve(t.cwd||process.cwd())),this.strip=Number(t.strip)||0,this.processUmask=this.chmod?typeof t.processUmask=="number"?t.processUmask:Lr():0,this.umask=typeof t.umask=="number"?t.umask:this.processUmask,this.dmode=t.dmode||511&~this.umask,this.fmode=t.fmode||438&~this.umask,this.on("entry",e=>this[Dr](e))}warn(t,e,i={}){return(t==="TAR_BAD_ARCHIVE"||t==="TAR_ABORT")&&(i.recoverable=!1),super.warn(t,e,i)}[bs](){this[gs]&&this[Ri]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"))}[Rs](t,e){let i=t[e],{type:r}=t;if(!i||this.preservePaths)return!0;let[n,o]=ce(i),h=o.replaceAll(/\\/g,"/").split("/");if(h.includes("..")||Te&&/^[a-z]:\.\.$/i.test(h[0]??"")){if(e==="path"||r==="Link")return this.warn("TAR_ENTRY_ERROR",`${e} contains '..'`,{entry:t,[e]:i}),!1;let a=R.posix.dirname(t.path),l=R.posix.normalize(R.posix.join(a,h.join("/")));if(l.startsWith("../")||l==="..")return this.warn("TAR_ENTRY_ERROR",`${e} escapes extraction directory`,{entry:t,[e]:i}),!1}return n&&(t[e]=String(o),this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute ${e}`,{entry:t,[e]:i})),!0}[Fr](t){let e=f(t.path),i=e.split("/");if(this.strip){if(i.length=this.strip)t.linkpath=r.slice(this.strip).join("/");else return!1}i.splice(0,this.strip),t.path=i.join("/")}if(isFinite(this.maxDepth)&&i.length>this.maxDepth)return this.warn("TAR_ENTRY_ERROR","path excessively deep",{entry:t,path:e,depth:i.length,maxDepth:this.maxDepth}),!1;if(!this[Rs](t,"path")||!this[Rs](t,"linkpath"))return!1;if(t.absolute=R.isAbsolute(t.path)?f(R.resolve(t.path)):f(R.resolve(this.cwd,t.path)),!this.preservePaths&&typeof t.absolute=="string"&&t.absolute.indexOf(this.cwd+"/")!==0&&t.absolute!==this.cwd)return this.warn("TAR_ENTRY_ERROR","path escaped extraction target",{entry:t,path:f(t.path),resolvedPath:t.absolute,cwd:this.cwd}),!1;if(t.absolute===this.cwd&&t.type!=="Directory"&&t.type!=="GNUDumpDir")return!1;if(this.win32){let{root:r}=R.win32.parse(String(t.absolute));t.absolute=r+ts(String(t.absolute).slice(r.length));let{root:n}=R.win32.parse(t.path);t.path=n+ts(t.path.slice(n.length))}return!0}[Dr](t){if(!this[Fr](t))return t.resume();switch(co.equal(typeof t.absolute,"string"),t.type){case"Directory":case"GNUDumpDir":t.mode&&(t.mode=t.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[_s](t);default:return this[Cr](t)}}[O](t,e){t.name==="CwdError"?this.emit("error",t):(this.warn("TAR_ENTRY_ERROR",t,{entry:e}),this[$t](),e.resume())}[yt](t,e,i){gr(f(t),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:e},i)}[ge](t){return this.forceChown||this.preserveOwner&&(typeof t.uid=="number"&&t.uid!==this.processUid||typeof t.gid=="number"&&t.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[be](t){return vr(this.uid,t.uid,this.processUid)}[_e](t){return vr(this.gid,t.gid,this.processGid)}[Ts](t,e){let i=typeof t.mode=="number"?t.mode&4095:this.fmode,r=new et(String(t.absolute),{flags:ms(t.size),mode:i,autoClose:!1});r.on("error",a=>{r.fd&&u.close(r.fd,()=>{}),r.write=()=>!0,this[O](a,t),e()});let n=1,o=a=>{if(a){r.fd&&u.close(r.fd,()=>{}),this[O](a,t),e();return}--n===0&&r.fd!==void 0&&u.close(r.fd,l=>{l?this[O](l,t):this[$t](),e()})};r.on("finish",()=>{let a=String(t.absolute),l=r.fd;if(typeof l=="number"&&t.mtime&&!this.noMtime){n++;let c=t.atime||new Date,d=t.mtime;u.futimes(l,c,d,y=>y?u.utimes(a,c,d,T=>o(T&&y)):o())}if(typeof l=="number"&&this[ge](t)){n++;let c=this[be](t),d=this[_e](t);typeof c=="number"&&typeof d=="number"&&u.fchown(l,c,d,y=>y?u.chown(a,c,d,T=>o(T&&y)):o())}o()});let h=this.transform&&this.transform(t)||t;h!==t&&(h.on("error",a=>{this[O](a,t),e()}),t.pipe(h)),h.pipe(r)}[xs](t,e){let i=typeof t.mode=="number"?t.mode&4095:this.dmode;this[yt](String(t.absolute),i,r=>{if(r){this[O](r,t),e();return}let n=1,o=()=>{--n===0&&(e(),this[$t](),t.resume())};t.mtime&&!this.noMtime&&(n++,u.utimes(String(t.absolute),t.atime||new Date,t.mtime,o)),this[ge](t)&&(n++,u.chown(String(t.absolute),Number(this[be](t)),Number(this[_e](t)),o)),o()})}[Cr](t){t.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${t.type}`,{entry:t}),t.resume()}[Ar](t,e){let i=f(R.relative(this.cwd,R.resolve(R.dirname(String(t.absolute)),String(t.linkpath)))).split("/");this[Re](t,this.cwd,i,()=>this[gi](t,String(t.linkpath),"symlink",e),r=>{this[O](r,t),e()})}[Ir](t,e){let i=f(R.resolve(this.cwd,String(t.linkpath))),r=f(String(t.linkpath)).split("/");this[Re](t,this.cwd,r,()=>this[gi](t,i,"link",e),n=>{this[O](n,t),e()})}[Re](t,e,i,r,n){let o=i.shift();if(this.preservePaths||o===void 0)return r();let h=R.resolve(e,o);u.lstat(h,(a,l)=>{if(a)return r();if(l?.isSymbolicLink())return n(new St(h,R.resolve(h,i.join("/"))));this[Re](t,h,i,r,n)})}[kr](){this[Ri]++}[$t](){this[Ri]--,this[bs]()}[Ls](t){this[$t](),t.resume()}[Os](t,e){return t.type==="File"&&!this.unlink&&e.isFile()&&e.nlink<=1&&!Te}[_s](t){this[kr]();let e=[t.path];t.linkpath&&e.push(t.linkpath),this.reservations.reserve(e,i=>this[Nr](t,i))}[Nr](t,e){let i=h=>{e(h)},r=()=>{this[yt](this.cwd,this.dmode,h=>{if(h){this[O](h,t),i();return}this[Oe]=!0,n()})},n=()=>{if(t.absolute!==this.cwd){let h=f(R.dirname(String(t.absolute)));if(h!==this.cwd)return this[yt](h,this.dmode,a=>{if(a){this[O](a,t),i();return}o()})}o()},o=()=>{u.lstat(String(t.absolute),(h,a)=>{if(a&&(this.keep||this.newer&&a.mtime>(t.mtime??a.mtime))){this[Ls](t),i();return}if(h||this[Os](t,a))return this[P](null,t,i);if(a.isDirectory()){if(t.type==="Directory"){let l=this.chmod&&t.mode&&(a.mode&4095)!==t.mode,c=d=>this[P](d??null,t,i);return l?u.chmod(String(t.absolute),Number(t.mode),c):c()}if(t.absolute!==this.cwd)return u.rmdir(String(t.absolute),l=>this[P](l??null,t,i))}if(t.absolute===this.cwd)return this[P](null,t,i);mo(String(t.absolute),l=>this[P](l??null,t,i))})};this[Oe]?n():r()}[P](t,e,i){if(t){this[O](t,e),i();return}switch(e.type){case"File":case"OldFile":case"ContiguousFile":return this[Ts](e,i);case"Link":return this[Ir](e,i);case"SymbolicLink":return this[Ar](e,i);case"Directory":case"GNUDumpDir":return this[xs](e,i)}}[gi](t,e,i,r){u[i](e,String(t.absolute),n=>{n?this[O](n,t):(this[$t](),t.resume()),r()})}},ye=s=>{try{return[null,s()]}catch(t){return[t,null]}},xe=class extends Xt{sync=!0;[P](t,e){return super[P](t,e,()=>{})}[_s](t){if(!this[Oe]){let n=this[yt](this.cwd,this.dmode);if(n)return this[O](n,t);this[Oe]=!0}if(t.absolute!==this.cwd){let n=f(R.dirname(String(t.absolute)));if(n!==this.cwd){let o=this[yt](n,this.dmode);if(o)return this[O](o,t)}}let[e,i]=ye(()=>u.lstatSync(String(t.absolute)));if(i&&(this.keep||this.newer&&i.mtime>(t.mtime??i.mtime)))return this[Ls](t);if(e||this[Os](t,i))return this[P](null,t);if(i.isDirectory()){if(t.type==="Directory"){let o=this.chmod&&t.mode&&(i.mode&4095)!==t.mode,[h]=o?ye(()=>{u.chmodSync(String(t.absolute),Number(t.mode))}):[];return this[P](h,t)}let[n]=ye(()=>u.rmdirSync(String(t.absolute)));this[P](n,t)}let[r]=t.absolute===this.cwd?[]:ye(()=>po(String(t.absolute)));this[P](r,t)}[Ts](t,e){let i=typeof t.mode=="number"?t.mode&4095:this.fmode,r=h=>{let a;try{u.closeSync(n)}catch(l){a=l}(h||a)&&this[O](h||a,t),e()},n;try{n=u.openSync(String(t.absolute),ms(t.size),i)}catch(h){return r(h)}let o=this.transform&&this.transform(t)||t;o!==t&&(o.on("error",h=>this[O](h,t)),t.pipe(o)),o.on("data",h=>{try{u.writeSync(n,h,0,h.length)}catch(a){r(a)}}),o.on("end",()=>{let h=null;if(t.mtime&&!this.noMtime){let a=t.atime||new Date,l=t.mtime;try{u.futimesSync(n,a,l)}catch(c){try{u.utimesSync(String(t.absolute),a,l)}catch{h=c}}}if(this[ge](t)){let a=this[be](t),l=this[_e](t);try{u.fchownSync(n,Number(a),Number(l))}catch(c){try{u.chownSync(String(t.absolute),Number(a),Number(l))}catch{h=h||c}}}r(h)})}[xs](t,e){let i=typeof t.mode=="number"?t.mode&4095:this.dmode,r=this[yt](String(t.absolute),i);if(r){this[O](r,t),e();return}if(t.mtime&&!this.noMtime)try{u.utimesSync(String(t.absolute),t.atime||new Date,t.mtime)}catch{}if(this[ge](t))try{u.chownSync(String(t.absolute),Number(this[be](t)),Number(this[_e](t)))}catch{}e(),t.resume()}[yt](t,e){try{return _r(f(t),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:e})}catch(i){return i}}[Re](t,e,i,r,n){if(this.preservePaths||i.length===0)return r();let o=e;for(let h of i){o=R.resolve(o,h);let[a,l]=ye(()=>u.lstatSync(o));if(a)return r();if(l.isSymbolicLink())return n(new St(o,R.resolve(e,i.join("/"))))}r()}[gi](t,e,i,r){let n=`${i}Sync`;try{u[n](e,String(t.absolute)),r(),t.resume()}catch(o){return this[O](o,t)}}};var Eo=s=>{let t=new xe(s),e=s.file,i=Br.statSync(e),r=s.maxReadSize||16*1024*1024;new Be(e,{readSize:r,size:i.size}).pipe(t)},wo=(s,t)=>{let e=new Xt(s),i=s.maxReadSize||16*1024*1024,r=s.file;return new Promise((o,h)=>{e.on("error",h),e.on("close",o),Br.stat(r,(a,l)=>{if(a)h(a);else{let c=new _t(r,{readSize:i,size:l.size});c.on("error",h),c.pipe(e)}})})},So=K(Eo,wo,s=>new xe(s),s=>new Xt(s),(s,t)=>{t?.length&&Qi(s,t)});import v from"node:fs";import Pr from"node:path";var yo=(s,t)=>{let e=new kt(s),i=!0,r,n;try{try{r=v.openSync(s.file,"r+")}catch(a){if(a?.code==="ENOENT")r=v.openSync(s.file,"w+");else throw a}let o=v.fstatSync(r),h=Buffer.alloc(512);t:for(n=0;no.size)break;n+=l,s.mtimeCache&&a.mtime&&s.mtimeCache.set(String(a.path),a.mtime)}i=!1,Ro(s,e,n,r,t)}finally{if(i)try{v.closeSync(r)}catch{}}},Ro=(s,t,e,i,r)=>{let n=new Wt(s.file,{fd:i,start:e});t.pipe(n),bo(t,r)},go=(s,t)=>{t=Array.from(t);let e=new wt(s),i=(n,o,h)=>{let a=(T,D)=>{T?v.close(n,E=>h(T)):h(null,D)},l=0;if(o===0)return a(null,0);let c=0,d=Buffer.alloc(512),y=(T,D)=>{if(T||D===void 0)return a(T);if(c+=D,c<512&&D)return v.read(n,d,c,d.length-c,l+c,y);if(l===0&&d[0]===31&&d[1]===139)return a(new Error("cannot append to compressed archives"));if(c<512)return a(null,l);let E=new F(d);if(!E.cksumValid)return a(null,l);let x=512*Math.ceil((E.size??0)/512);if(l+x+512>o||(l+=x+512,l>=o))return a(null,l);s.mtimeCache&&E.mtime&&s.mtimeCache.set(String(E.path),E.mtime),c=0,v.read(n,d,0,512,l,y)};v.read(n,d,0,512,l,y)};return new Promise((n,o)=>{e.on("error",o);let h="r+",a=(l,c)=>{if(l&&l.code==="ENOENT"&&h==="r+")return h="w+",v.open(s.file,h,a);if(l||!c)return o(l);v.fstat(c,(d,y)=>{if(d)return v.close(c,()=>o(d));i(c,y.size,(T,D)=>{if(T)return o(T);let E=new et(s.file,{fd:c,start:D});e.pipe(E),E.on("error",o),E.on("close",n),_o(e,t)})})};v.open(s.file,h,a)})},bo=(s,t)=>{t.forEach(e=>{e.charAt(0)==="@"?Ct({file:Pr.resolve(s.cwd,e.slice(1)),sync:!0,noResume:!0,onReadEntry:i=>s.add(i)}):s.add(e)}),s.end()},_o=async(s,t)=>{for(let e of t)e.charAt(0)==="@"?await Ct({file:Pr.resolve(String(s.cwd),e.slice(1)),noResume:!0,onReadEntry:i=>s.add(i)}):s.add(e);s.end()},vt=K(yo,go,()=>{throw new TypeError("file is required")},()=>{throw new TypeError("file is required")},(s,t)=>{if(!Bs(s))throw new TypeError("file is required");if(s.gzip||s.brotli||s.zstd||s.file.endsWith(".br")||s.file.endsWith(".tbr"))throw new TypeError("cannot append to compressed archives");if(!t?.length)throw new TypeError("no paths specified to add/replace")});var Oo=K(vt.syncFile,vt.asyncFile,vt.syncNoFile,vt.asyncNoFile,(s,t=[])=>{vt.validate?.(s,t),To(s)}),To=s=>{let t=s.filter;s.mtimeCache||(s.mtimeCache=new Map),s.filter=t?(e,i)=>t(e,i)&&!((s.mtimeCache?.get(e)??i.mtime??0)>(i.mtime??0)):(e,i)=>!((s.mtimeCache?.get(e)??i.mtime??0)>(i.mtime??0))};export{F as Header,wt as Pack,pi as PackJob,kt as PackSync,rt as Parser,ft as Pax,$e as ReadEntry,Xt as Unpack,xe as UnpackSync,de as WriteEntry,ni as WriteEntrySync,oi as WriteEntryTar,Qn as c,Qn as create,So as extract,Qi as filesFilter,Ct as list,vt as r,vt as replace,Ct as t,Hi as types,Oo as u,Oo as update,So as x};
//# sourceMappingURL=index.min.js.map
diff --git a/deps/npm/node_modules/tar/dist/esm/list.js b/deps/npm/node_modules/tar/dist/esm/list.js
index a63a8841769..08bdbe4ad85 100644
--- a/deps/npm/node_modules/tar/dist/esm/list.js
+++ b/deps/npm/node_modules/tar/dist/esm/list.js
@@ -20,19 +20,22 @@ const onReadEntryFunction = (opt) => {
export const filesFilter = (opt, files) => {
const map = new Map(files.map(f => [stripTrailingSlashes(f), true]));
const filter = opt.filter;
- const mapHas = (file, r = '') => {
+ // limit recursion to 100 levels
+ const MAX = 100;
+ const mapHas = (file, r = '', depth = 0) => {
+ /* c8 ignore start - excessive caution */
+ if (depth >= MAX) {
+ map.set(file, false);
+ return false;
+ }
+ /* c8 ignore stop */
const root = r || parse(file).root || '.';
let ret;
if (file === root)
ret = false;
else {
const m = map.get(file);
- if (m !== undefined) {
- ret = m;
- }
- else {
- ret = mapHas(dirname(file), root);
- }
+ ret = m !== undefined ? m : mapHas(dirname(file), root, depth + 1);
}
map.set(file, ret);
return ret;
@@ -74,7 +77,7 @@ const listFileSync = (opt) => {
fs.closeSync(fd);
/* c8 ignore next */
}
- catch (er) { }
+ catch { }
}
}
};
diff --git a/deps/npm/node_modules/tar/dist/esm/make-command.js b/deps/npm/node_modules/tar/dist/esm/make-command.js
index f2f737bca78..b915bc04b74 100644
--- a/deps/npm/node_modules/tar/dist/esm/make-command.js
+++ b/deps/npm/node_modules/tar/dist/esm/make-command.js
@@ -9,12 +9,7 @@ export const makeCommand = (syncFile, asyncFile, syncNoFile, asyncNoFile, valida
cb = entries;
entries = undefined;
}
- if (!entries) {
- entries = [];
- }
- else {
- entries = Array.from(entries);
- }
+ entries = !entries ? [] : Array.from(entries);
const opt = dealias(opt_);
validate?.(opt, entries);
if (isSyncFile(opt)) {
@@ -25,9 +20,7 @@ export const makeCommand = (syncFile, asyncFile, syncNoFile, asyncNoFile, valida
}
else if (isAsyncFile(opt)) {
const p = asyncFile(opt, entries);
- // weirdness to make TS happy
- const c = cb ? cb : undefined;
- return c ? p.then(() => c(), c) : p;
+ return cb ? p.then(() => cb(), cb) : p;
}
else if (isSyncNoFile(opt)) {
if (typeof cb === 'function') {
@@ -42,9 +35,7 @@ export const makeCommand = (syncFile, asyncFile, syncNoFile, asyncNoFile, valida
return asyncNoFile(opt, entries);
/* c8 ignore start */
}
- else {
- throw new Error('impossible options??');
- }
+ throw new Error('impossible options??');
/* c8 ignore stop */
}, {
syncFile,
diff --git a/deps/npm/node_modules/tar/dist/esm/mkdir.js b/deps/npm/node_modules/tar/dist/esm/mkdir.js
index 9dba701f297..7679907aba1 100644
--- a/deps/npm/node_modules/tar/dist/esm/mkdir.js
+++ b/deps/npm/node_modules/tar/dist/esm/mkdir.js
@@ -65,7 +65,7 @@ export const mkdir = (dir, opt, cb) => {
mkdir_(cwd, parts, mode, unlink, cwd, undefined, done);
};
const mkdir_ = (base, parts, mode, unlink, cwd, created, cb) => {
- if (!parts.length) {
+ if (parts.length === 0) {
return cb(null, created);
}
const p = parts.shift();
@@ -76,8 +76,7 @@ const onmkdir = (part, parts, mode, unlink, cwd, created, cb) => (er) => {
if (er) {
fs.lstat(part, (statEr, st) => {
if (statEr) {
- statEr.path =
- statEr.path && normalizeWindowsPath(statEr.path);
+ statEr.path = statEr.path && normalizeWindowsPath(statEr.path);
cb(statEr);
}
else if (st.isDirectory()) {
@@ -106,7 +105,7 @@ const onmkdir = (part, parts, mode, unlink, cwd, created, cb) => (er) => {
};
const checkCwdSync = (dir) => {
let ok = false;
- let code = undefined;
+ let code;
try {
ok = fs.statSync(dir).isDirectory();
}
@@ -152,14 +151,14 @@ export const mkdirSync = (dir, opt) => {
}
const sub = normalizeWindowsPath(path.relative(cwd, dir));
const parts = sub.split('/');
- let created = undefined;
+ let created;
for (let p = parts.shift(), part = cwd; p && (part += '/' + p); p = parts.shift()) {
part = normalizeWindowsPath(path.resolve(part));
try {
fs.mkdirSync(part, mode);
created = created || part;
}
- catch (er) {
+ catch {
const st = fs.lstatSync(part);
if (st.isDirectory()) {
continue;
diff --git a/deps/npm/node_modules/tar/dist/esm/normalize-windows-path.js b/deps/npm/node_modules/tar/dist/esm/normalize-windows-path.js
index 2d97d2b884e..cc75178aa9c 100644
--- a/deps/npm/node_modules/tar/dist/esm/normalize-windows-path.js
+++ b/deps/npm/node_modules/tar/dist/esm/normalize-windows-path.js
@@ -4,6 +4,6 @@
// so that we can use / as our one and only directory separator char.
const platform = process.env.TESTING_TAR_FAKE_PLATFORM || process.platform;
export const normalizeWindowsPath = platform !== 'win32' ?
- (p) => p
- : (p) => p && p.replace(/\\/g, '/');
+ (p) => String(p)
+ : (p) => String(p).replaceAll(/\\/g, '/');
//# sourceMappingURL=normalize-windows-path.js.map
\ No newline at end of file
diff --git a/deps/npm/node_modules/tar/dist/esm/pack.js b/deps/npm/node_modules/tar/dist/esm/pack.js
index 95d9342ac34..ec441138051 100644
--- a/deps/npm/node_modules/tar/dist/esm/pack.js
+++ b/deps/npm/node_modules/tar/dist/esm/pack.js
@@ -15,6 +15,7 @@ export class PackJob {
stat;
readdir;
pending = false;
+ pendingLink = false;
ignore = false;
piped = false;
constructor(path, absolute) {
@@ -25,12 +26,12 @@ export class PackJob {
import { Minipass } from 'minipass';
import * as zlib from 'minizlib';
import { Yallist } from 'yallist';
-import { ReadEntry } from './read-entry.js';
-import { warnMethod, } from './warn-method.js';
+import { warnMethod } from './warn-method.js';
const EOF = Buffer.alloc(1024);
const ONSTAT = Symbol('onStat');
const ENDED = Symbol('ended');
const QUEUE = Symbol('queue');
+const PENDINGLINKS = Symbol('pendingLinks');
const CURRENT = Symbol('current');
const PROCESS = Symbol('process');
const PROCESSING = Symbol('processing');
@@ -82,11 +83,11 @@ export class Pack extends Minipass {
// class, but then we'd have to be tracking the tail of the queue the
// whole time, and Yallist just does that for us anyway.
[QUEUE];
+ [PENDINGLINKS] = new Map();
[JOBS] = 0;
[PROCESSING] = false;
[ENDED] = false;
constructor(opt = {}) {
- //@ts-ignore
super();
this.opt = opt;
this.file = opt.file || '';
@@ -106,9 +107,7 @@ export class Pack extends Minipass {
}
this.portable = !!opt.portable;
if (opt.gzip || opt.brotli || opt.zstd) {
- if ((opt.gzip ? 1 : 0) +
- (opt.brotli ? 1 : 0) +
- (opt.zstd ? 1 : 0) >
+ if ((opt.gzip ? 1 : 0) + (opt.brotli ? 1 : 0) + (opt.zstd ? 1 : 0) >
1) {
throw new TypeError('gzip, brotli, zstd are mutually exclusive');
}
@@ -190,11 +189,11 @@ export class Pack extends Minipass {
if (this[ENDED]) {
throw new Error('write after end');
}
- if (path instanceof ReadEntry) {
- this[ADDTARENTRY](path);
+ if (typeof path === 'string') {
+ this[ADDFSENTRY](path);
}
else {
- this[ADDFSENTRY](path);
+ this[ADDTARENTRY](path);
}
return this.flowing;
}
@@ -242,14 +241,26 @@ export class Pack extends Minipass {
}
else if (stat.isFile() &&
stat.nlink > 1 &&
- job === this[CURRENT] &&
!this.linkCache.get(`${stat.dev}:${stat.ino}`) &&
!this.sync) {
- // if it's not filtered, and it's a new File entry,
- // jump the queue in case any pending Link entries are about
- // to try to link to it. This prevents a hardlink from coming ahead
- // of its target in the archive.
- this[PROCESSJOB](job);
+ // if it's not filtered, and it's a new File entry, and next anyway
+ // process right away in case any pending Link entries are about
+ // to try to link to it.
+ if (job === this[CURRENT]) {
+ this[PROCESSJOB](job);
+ }
+ else {
+ // if it's NOT the current entry, it needs to be deferred,
+ // so that the link target can be built first.
+ const key = `${stat.dev}:${stat.ino}`;
+ const pending = this[PENDINGLINKS].get(key);
+ if (pending)
+ pending.push(job);
+ else
+ this[PENDINGLINKS].set(key, [job]);
+ job.pendingLink = true;
+ job.pending = true;
+ }
}
this[PROCESS]();
}
@@ -284,7 +295,7 @@ export class Pack extends Minipass {
}
}
this[PROCESSING] = false;
- if (this[ENDED] && !this[QUEUE].length && this[JOBS] === 0) {
+ if (this[ENDED] && this[QUEUE].length === 0 && this[JOBS] === 0) {
if (this.zip) {
this.zip.end(EOF);
}
@@ -297,12 +308,31 @@ export class Pack extends Minipass {
get [CURRENT]() {
return this[QUEUE] && this[QUEUE].head && this[QUEUE].head.value;
}
- [JOBDONE](_job) {
+ [JOBDONE](job) {
this[QUEUE].shift();
this[JOBS] -= 1;
+ const { stat } = job;
+ if (stat && stat.isFile() && stat.nlink > 1) {
+ // might be a file with pending links
+ const key = `${stat.dev}:${stat.ino}`;
+ const pending = this[PENDINGLINKS].get(key);
+ if (pending) {
+ this[PENDINGLINKS].delete(key);
+ for (const job of pending) {
+ job.pending = false;
+ this[PROCESSJOB](job);
+ }
+ }
+ }
this[PROCESS]();
}
[PROCESSJOB](job) {
+ if (job.pending && job.pendingLink && job === this[CURRENT]) {
+ // At least one of the links to this file are not being included
+ // in the tarball, so we need to just proceed.
+ job.pending = false;
+ job.pendingLink = false;
+ }
if (job.pending) {
return;
}
@@ -328,9 +358,7 @@ export class Pack extends Minipass {
if (job.ignore) {
return;
}
- if (!this.noDirRecurse &&
- job.stat.isDirectory() &&
- !job.readdir) {
+ if (!this.noDirRecurse && job.stat.isDirectory() && !job.readdir) {
const rc = this.readdirCache.get(job.absolute);
if (rc) {
this[ONREADDIR](job, rc);
diff --git a/deps/npm/node_modules/tar/dist/esm/parse.js b/deps/npm/node_modules/tar/dist/esm/parse.js
index da52cd85273..92add3a903f 100644
--- a/deps/npm/node_modules/tar/dist/esm/parse.js
+++ b/deps/npm/node_modules/tar/dist/esm/parse.js
@@ -22,7 +22,7 @@ import { BrotliDecompress, Unzip, ZstdDecompress } from 'minizlib';
import { Header } from './header.js';
import { Pax } from './pax.js';
import { ReadEntry } from './read-entry.js';
-import { warnMethod, } from './warn-method.js';
+import { warnMethod } from './warn-method.js';
const maxMetaEntrySize = 1024 * 1024;
const gzipHeader = Buffer.from([0x1f, 0x8b]);
const zstdHeader = Buffer.from([0x28, 0xb5, 0x2f, 0xfd]);
@@ -57,6 +57,10 @@ const SAW_VALID_ENTRY = Symbol('sawValidEntry');
const SAW_NULL_BLOCK = Symbol('sawNullBlock');
const SAW_EOF = Symbol('sawEOF');
const CLOSESTREAM = Symbol('closeStream');
+const MAX_DECOMPRESSION_RATIO = 1000;
+const COMPRESSEDBYTESREAD = Symbol('compressedBytesRead');
+const DECOMPRESSEDBYTESREAD = Symbol('decompressedBytesRead');
+const CHECKDECOMPRESSIONRATIO = Symbol('checkDecompressionRatio');
const noop = () => true;
export class Parser extends EE {
file;
@@ -65,6 +69,7 @@ export class Parser extends EE {
filter;
brotli;
zstd;
+ maxDecompressionRatio;
writable = true;
readable = false;
[QUEUE] = [];
@@ -84,13 +89,14 @@ export class Parser extends EE {
[WRITING] = false;
[CONSUMING] = false;
[EMITTEDEND] = false;
+ [COMPRESSEDBYTESREAD] = 0;
+ [DECOMPRESSEDBYTESREAD] = 0;
constructor(opt = {}) {
super();
this.file = opt.file || '';
// these BADARCHIVE errors can't be detected early. listen on DONE.
this.on(DONE, () => {
- if (this[STATE] === 'begin' ||
- this[SAW_VALID_ENTRY] === false) {
+ if (this[STATE] === 'begin' || this[SAW_VALID_ENTRY] === false) {
// either less than 1 block of data, or all entries were invalid.
// Either way, probably not even a tarball.
this.warn('TAR_BAD_ARCHIVE', 'Unrecognized archive format');
@@ -107,6 +113,10 @@ export class Parser extends EE {
});
}
this.strict = !!opt.strict;
+ this.maxDecompressionRatio =
+ typeof opt.maxDecompressionRatio === 'number' ?
+ opt.maxDecompressionRatio
+ : MAX_DECOMPRESSION_RATIO;
this.maxMetaEntrySize = opt.maxMetaEntrySize || maxMetaEntrySize;
this.filter = typeof opt.filter === 'function' ? opt.filter : noop;
// Unlike gzip, brotli doesn't have any magic bytes to identify it
@@ -220,8 +230,7 @@ export class Parser extends EE {
}
else {
this[EX] = undefined;
- entry.ignore =
- entry.ignore || !this.filter(entry.path, entry);
+ entry.ignore = entry.ignore || !this.filter(entry.path, entry);
if (entry.ignore) {
// probably valid, just not something we care about
this[EMIT]('ignoredEntry', entry);
@@ -274,7 +283,7 @@ export class Parser extends EE {
}
[NEXTENTRY]() {
do { } while (this[PROCESSENTRY](this[QUEUE].shift()));
- if (!this[QUEUE].length) {
+ if (this[QUEUE].length === 0) {
// At this point, there's nothing in the queue, but we may have an
// entry which is being consumed (readEntry).
// If we don't, then we definitely can handle more data.
@@ -324,7 +333,7 @@ export class Parser extends EE {
return ret;
}
[EMIT](ev, data, extra) {
- if (!this[QUEUE].length && !this[READENTRY]) {
+ if (this[QUEUE].length === 0 && !this[READENTRY]) {
this.emit(ev, data, extra);
}
else {
@@ -361,11 +370,33 @@ export class Parser extends EE {
}
}
abort(error) {
+ if (this[ABORTED]) {
+ return;
+ }
+ if (this[UNZIP]) {
+ // fully nerf the decompressor and close its underlying binding
+ const u = this[UNZIP];
+ /* c8 ignore start */
+ u.write = () => true;
+ u.end = () => u;
+ u.emit = () => false;
+ /* c8 ignore stop */
+ u.destroy?.();
+ }
this[ABORTED] = true;
this.emit('abort', error);
// always throws, even in non-strict mode
this.warn('TAR_ABORT', error, { recoverable: false });
}
+ [CHECKDECOMPRESSIONRATIO](chunk) {
+ this[DECOMPRESSEDBYTESREAD] += chunk.length;
+ const ratio = this[DECOMPRESSEDBYTESREAD] / this[COMPRESSEDBYTESREAD];
+ if (ratio > this.maxDecompressionRatio) {
+ this.abort(new Error(`max decompression ratio exceeded: ${ratio.toFixed(2)} > ${this.maxDecompressionRatio}`));
+ return false;
+ }
+ return true;
+ }
write(chunk, encoding, cb) {
if (typeof encoding === 'function') {
cb = encoding;
@@ -449,13 +480,22 @@ export class Parser extends EE {
this[UNZIP] === undefined ? new Unzip({})
: isZstd ? new ZstdDecompress({})
: new BrotliDecompress({});
- this[UNZIP].on('data', chunk => this[CONSUMECHUNK](chunk));
- this[UNZIP].on('error', er => this.abort(er));
+ this[UNZIP].on('data', chunk => {
+ if (this[CHECKDECOMPRESSIONRATIO](chunk)) {
+ this[CONSUMECHUNK](chunk);
+ }
+ });
+ this[UNZIP].on('error', er => {
+ if (!this[ABORTED]) {
+ this.abort(er);
+ }
+ });
this[UNZIP].on('end', () => {
this[ENDED] = true;
this[CONSUMECHUNK]();
});
this[WRITING] = true;
+ this[COMPRESSEDBYTESREAD] += chunk.length;
const ret = !!this[UNZIP][ended ? 'end' : 'write'](chunk);
this[WRITING] = false;
cb?.();
@@ -464,6 +504,7 @@ export class Parser extends EE {
}
this[WRITING] = true;
if (this[UNZIP]) {
+ this[COMPRESSEDBYTESREAD] += chunk.length;
this[UNZIP].write(chunk);
}
else {
@@ -471,11 +512,11 @@ export class Parser extends EE {
}
this[WRITING] = false;
// return false if there's a queue, or if the current entry isn't flowing
- const ret = this[QUEUE].length ? false
+ const ret = this[QUEUE].length > 0 ? false
: this[READENTRY] ? this[READENTRY].flowing
: true;
// if we have no queue, then that means a clogged READENTRY
- if (!ret && !this[QUEUE].length) {
+ if (!ret && this[QUEUE].length === 0) {
this[READENTRY]?.once('drain', () => this.emit('drain'));
}
/* c8 ignore next */
@@ -484,8 +525,7 @@ export class Parser extends EE {
}
[BUFFERCONCAT](c) {
if (c && !this[ABORTED]) {
- this[BUFFER] =
- this[BUFFER] ? Buffer.concat([this[BUFFER], c]) : c;
+ this[BUFFER] = this[BUFFER] ? Buffer.concat([this[BUFFER], c]) : c;
}
}
[MAYBEEND]() {
@@ -495,7 +535,7 @@ export class Parser extends EE {
!this[CONSUMING]) {
this[EMITTEDEND] = true;
const entry = this[WRITEENTRY];
- if (entry && entry.blockRemain) {
+ if (entry?.blockRemain) {
// truncated, likely a damaged file
const have = this[BUFFER] ? this[BUFFER].length : 0;
this.warn('TAR_BAD_ARCHIVE', `Truncated input (needed ${entry.blockRemain} more bytes, only ${have} available)`, { entry });
@@ -544,9 +584,7 @@ export class Parser extends EE {
// the buffer. Advance the position and put any remainder in the buffer.
let position = 0;
const length = chunk.length;
- while (position + 512 <= length &&
- !this[ABORTED] &&
- !this[SAW_EOF]) {
+ while (position + 512 <= length && !this[ABORTED] && !this[SAW_EOF]) {
switch (this[STATE]) {
case 'begin':
case 'header':
@@ -567,15 +605,10 @@ export class Parser extends EE {
}
}
if (position < length) {
- if (this[BUFFER]) {
- this[BUFFER] = Buffer.concat([
- chunk.subarray(position),
- this[BUFFER],
- ]);
- }
- else {
- this[BUFFER] = chunk.subarray(position);
- }
+ this[BUFFER] =
+ this[BUFFER] ?
+ Buffer.concat([chunk.subarray(position), this[BUFFER]])
+ : chunk.subarray(position);
}
}
end(chunk, encoding, cb) {
@@ -596,8 +629,10 @@ export class Parser extends EE {
if (!this[ABORTED]) {
if (this[UNZIP]) {
/* c8 ignore start */
- if (chunk)
+ if (chunk) {
+ this[COMPRESSEDBYTESREAD] += chunk.length;
this[UNZIP].write(chunk);
+ }
/* c8 ignore stop */
this[UNZIP].end();
}
diff --git a/deps/npm/node_modules/tar/dist/esm/path-reservations.js b/deps/npm/node_modules/tar/dist/esm/path-reservations.js
index f7535c15ea5..117f6bead94 100644
--- a/deps/npm/node_modules/tar/dist/esm/path-reservations.js
+++ b/deps/npm/node_modules/tar/dist/esm/path-reservations.js
@@ -17,7 +17,7 @@ const getDirs = (path) => {
.split('/')
.slice(0, -1)
.reduce((set, path) => {
- const s = set[set.length - 1];
+ const s = set.at(-1);
if (s !== undefined) {
path = join(s, path);
}
@@ -60,7 +60,7 @@ export class PathReservations {
this.#queues.set(dir, [new Set([fn])]);
}
else {
- const l = q[q.length - 1];
+ const l = q.at(-1);
if (l instanceof Set) {
l.add(fn);
}
diff --git a/deps/npm/node_modules/tar/dist/esm/pax.js b/deps/npm/node_modules/tar/dist/esm/pax.js
index 832808f344d..907193a4b93 100644
--- a/deps/npm/node_modules/tar/dist/esm/pax.js
+++ b/deps/npm/node_modules/tar/dist/esm/pax.js
@@ -143,12 +143,36 @@ const parseKVLine = (set, line) => {
return set;
}
const k = r.replace(/^SCHILY\.(dev|ino|nlink)/, '$1');
- const v = kv.join('=');
- set[k] =
- /^([A-Z]+\.)?([mac]|birth|creation)time$/.test(k) ?
- new Date(Number(v) * 1000)
- : /^[0-9]+$/.test(v) ? +v
- : v;
+ const v = kv.join('=').replace(/\0.*/, '');
+ switch (k) {
+ case 'path':
+ case 'linkpath':
+ case 'type':
+ case 'charset':
+ case 'comment':
+ case 'gname':
+ case 'uname':
+ set[k] = v;
+ break;
+ case 'ctime':
+ case 'atime':
+ case 'mtime':
+ set[k] = new Date(Number(v) * 1000);
+ break;
+ case 'size':
+ const s = +v;
+ if (s >= 0)
+ set[k] = s;
+ break;
+ case 'gid':
+ case 'uid':
+ case 'dev':
+ case 'ino':
+ case 'nlink':
+ case 'mode':
+ set[k] = +v;
+ break;
+ }
return set;
};
//# sourceMappingURL=pax.js.map
\ No newline at end of file
diff --git a/deps/npm/node_modules/tar/dist/esm/read-entry.js b/deps/npm/node_modules/tar/dist/esm/read-entry.js
index 23cc673e610..ef11b01368f 100644
--- a/deps/npm/node_modules/tar/dist/esm/read-entry.js
+++ b/deps/npm/node_modules/tar/dist/esm/read-entry.js
@@ -87,9 +87,7 @@ export class ReadEntry extends Minipass {
this.ctime = header.ctime;
/* c8 ignore start */
this.linkpath =
- header.linkpath ?
- normalizeWindowsPath(header.linkpath)
- : undefined;
+ header.linkpath ? normalizeWindowsPath(header.linkpath) : undefined;
/* c8 ignore stop */
this.uname = header.uname;
this.gname = header.gname;
@@ -127,9 +125,7 @@ export class ReadEntry extends Minipass {
// we slurp in everything except for the path attribute in
// a global extended header, because that's weird. Also, any
// null/undefined values are ignored.
- return !(v === null ||
- v === undefined ||
- (k === 'path' && gex));
+ return !(v === null || v === undefined || (k === 'path' && gex));
})));
}
}
diff --git a/deps/npm/node_modules/tar/dist/esm/replace.js b/deps/npm/node_modules/tar/dist/esm/replace.js
index be417fcbc23..077a65c0b04 100644
--- a/deps/npm/node_modules/tar/dist/esm/replace.js
+++ b/deps/npm/node_modules/tar/dist/esm/replace.js
@@ -5,7 +5,7 @@ import path from 'node:path';
import { Header } from './header.js';
import { list } from './list.js';
import { makeCommand } from './make-command.js';
-import { isFile, } from './options.js';
+import { isFile } from './options.js';
import { Pack, PackSync } from './pack.js';
// starting at the head of the file, read a Header
// If the checksum is invalid, that's our position to start writing
@@ -34,9 +34,7 @@ const replaceSync = (opt, files) => {
POSITION: for (position = 0; position < st.size; position += 512) {
for (let bufPos = 0, bytes = 0; bufPos < 512; bufPos += bytes) {
bytes = fs.readSync(fd, headBuf, bufPos, headBuf.length - bufPos, position + bufPos);
- if (position === 0 &&
- headBuf[0] === 0x1f &&
- headBuf[1] === 0x8b) {
+ if (position === 0 && headBuf[0] === 0x1f && headBuf[1] === 0x8b) {
throw new Error('cannot append to compressed archives');
}
if (!bytes) {
@@ -66,7 +64,7 @@ const replaceSync = (opt, files) => {
try {
fs.closeSync(fd);
}
- catch (er) { }
+ catch { }
}
}
};
@@ -97,16 +95,14 @@ const replaceAsync = (opt, files) => {
let bufPos = 0;
const headBuf = Buffer.alloc(512);
const onread = (er, bytes) => {
- if (er || typeof bytes === 'undefined') {
+ if (er || bytes === undefined) {
return cb(er);
}
bufPos += bytes;
if (bufPos < 512 && bytes) {
return fs.read(fd, headBuf, bufPos, headBuf.length - bufPos, position + bufPos, onread);
}
- if (position === 0 &&
- headBuf[0] === 0x1f &&
- headBuf[1] === 0x8b) {
+ if (position === 0 && headBuf[0] === 0x1f && headBuf[1] === 0x8b) {
return cb(new Error('cannot append to compressed archives'));
}
// truncated header
@@ -185,8 +181,7 @@ const addFilesSync = (p, files) => {
p.end();
};
const addFilesAsync = async (p, files) => {
- for (let i = 0; i < files.length; i++) {
- const file = String(files[i]);
+ for (const file of files) {
if (file.charAt(0) === '@') {
await list({
file: path.resolve(String(p.cwd), file.slice(1)),
diff --git a/deps/npm/node_modules/tar/dist/esm/types.js b/deps/npm/node_modules/tar/dist/esm/types.js
index 27b982ae1e0..c33a6a4c5e1 100644
--- a/deps/npm/node_modules/tar/dist/esm/types.js
+++ b/deps/npm/node_modules/tar/dist/esm/types.js
@@ -1,5 +1,25 @@
export const isCode = (c) => name.has(c);
export const isName = (c) => code.has(c);
+/**
+ * types that are a normal file system entry, not metadata.
+ *
+ * These can be the subject of extended/globalExtended headers, long path
+ * names, long linkpath names, etc.
+ *
+ * Any other types are meta, and cannot be targetted by extended PAX headers.
+ */
+export const normalFsTypes = new Set([
+ '0',
+ '',
+ '1',
+ '2',
+ '3',
+ '4',
+ '5',
+ '6',
+ '7',
+ 'D',
+]);
// map types from key to human-friendly name
export const name = new Map([
['0', 'File'],
diff --git a/deps/npm/node_modules/tar/dist/esm/unpack.js b/deps/npm/node_modules/tar/dist/esm/unpack.js
index bc277018e4f..3bbdad99bcd 100644
--- a/deps/npm/node_modules/tar/dist/esm/unpack.js
+++ b/deps/npm/node_modules/tar/dist/esm/unpack.js
@@ -128,8 +128,7 @@ export class Unpack extends Parser {
this.chmod = !!opt.chmod;
if (typeof opt.uid === 'number' || typeof opt.gid === 'number') {
// need both or neither
- if (typeof opt.uid !== 'number' ||
- typeof opt.gid !== 'number') {
+ if (typeof opt.uid !== 'number' || typeof opt.gid !== 'number') {
throw new TypeError('cannot set owner without number uid and gid');
}
if (opt.preserveOwner) {
@@ -145,13 +144,10 @@ export class Unpack extends Parser {
this.setOwner = false;
}
// default true for root
- if (opt.preserveOwner === undefined &&
- typeof opt.uid !== 'number') {
- this.preserveOwner = !!(process.getuid && process.getuid() === 0);
- }
- else {
- this.preserveOwner = !!opt.preserveOwner;
- }
+ this.preserveOwner =
+ opt.preserveOwner === undefined && typeof opt.uid !== 'number' ?
+ !!(process.getuid?.() === 0)
+ : !!opt.preserveOwner;
this.processUid =
(this.preserveOwner || this.setOwner) && process.getuid ?
process.getuid()
@@ -163,9 +159,7 @@ export class Unpack extends Parser {
// prevent excessively deep nesting of subfolders
// set to `Infinity` to remove this restriction
this.maxDepth =
- typeof opt.maxDepth === 'number' ?
- opt.maxDepth
- : DEFAULT_MAX_DEPTH;
+ typeof opt.maxDepth === 'number' ? opt.maxDepth : DEFAULT_MAX_DEPTH;
// mostly just for testing, but useful in some cases.
// Forcibly trigger a chown on every entry, no matter what
this.forceChown = opt.forceChown === true;
@@ -223,7 +217,7 @@ export class Unpack extends Parser {
return true;
// strip off the root
const [root, stripped] = stripAbsolutePath(p);
- const parts = stripped.replace(/\\/g, '/').split('/');
+ const parts = stripped.replaceAll(/\\/g, '/').split('/');
if (parts.includes('..') ||
/* c8 ignore next */
(isWindows && /^[a-z]:\.\.$/i.test(parts[0] ?? ''))) {
@@ -239,20 +233,18 @@ export class Unpack extends Parser {
// not ok!
return false;
}
- else {
- // Resolve linkpath relative to the entry's directory.
- // `path.posix` is safe to use because we're operating on
- // tar paths, not a filesystem.
- const entryDir = path.posix.dirname(entry.path);
- const resolved = path.posix.normalize(path.posix.join(entryDir, parts.join('/')));
- // If the resolved path escapes (starts with ..), reject it
- if (resolved.startsWith('../') || resolved === '..') {
- this.warn('TAR_ENTRY_ERROR', `${field} escapes extraction directory`, {
- entry,
- [field]: p,
- });
- return false;
- }
+ // Resolve linkpath relative to the entry's directory.
+ // `path.posix` is safe to use because we're operating on
+ // tar paths, not a filesystem.
+ const entryDir = path.posix.dirname(entry.path);
+ const resolved = path.posix.normalize(path.posix.join(entryDir, parts.join('/')));
+ // If the resolved path escapes (starts with ..), reject it
+ if (resolved.startsWith('../') || resolved === '..') {
+ this.warn('TAR_ENTRY_ERROR', `${field} escapes extraction directory`, {
+ entry,
+ [field]: p,
+ });
+ return false;
}
}
if (root) {
@@ -298,12 +290,10 @@ export class Unpack extends Parser {
!this[STRIPABSOLUTEPATH](entry, 'linkpath')) {
return false;
}
- if (path.isAbsolute(entry.path)) {
- entry.absolute = normalizeWindowsPath(path.resolve(entry.path));
- }
- else {
- entry.absolute = normalizeWindowsPath(path.resolve(this.cwd, entry.path));
- }
+ entry.absolute =
+ path.isAbsolute(entry.path) ?
+ normalizeWindowsPath(path.resolve(entry.path))
+ : normalizeWindowsPath(path.resolve(this.cwd, entry.path));
// if we somehow ended up with a path that escapes the cwd, and we are
// not in preservePaths mode, then something is fishy! This should have
// been prevented above, so ignore this for coverage.
@@ -377,7 +367,7 @@ export class Unpack extends Parser {
}
}
[MKDIR](dir, mode, cb) {
- mkdir(normalizeWindowsPath(dir), {
+ void mkdir(normalizeWindowsPath(dir), {
uid: this.uid,
gid: this.gid,
processUid: this.processUid,
@@ -398,8 +388,7 @@ export class Unpack extends Parser {
entry.uid !== this.processUid) ||
(typeof entry.gid === 'number' &&
entry.gid !== this.processGid))) ||
- (typeof this.uid === 'number' &&
- this.uid !== this.processUid) ||
+ (typeof this.uid === 'number' && this.uid !== this.processUid) ||
(typeof this.gid === 'number' && this.gid !== this.processGid));
}
[UID](entry) {
@@ -409,9 +398,7 @@ export class Unpack extends Parser {
return uint32(this.gid, entry.gid, this.processGid);
}
[FILE](entry, fullyDone) {
- const mode = typeof entry.mode === 'number' ?
- entry.mode & 0o7777
- : this.fmode;
+ const mode = typeof entry.mode === 'number' ? entry.mode & 0o7777 : this.fmode;
const stream = new fsm.WriteStream(String(entry.absolute), {
// slight lie, but it can be numeric flags
flags: getWriteFlag(entry.size),
@@ -474,16 +461,14 @@ export class Unpack extends Parser {
const uid = this[UID](entry);
const gid = this[GID](entry);
if (typeof uid === 'number' && typeof gid === 'number') {
- fs.fchown(fd, uid, gid, er => er ?
- fs.chown(abs, uid, gid, er2 => done(er2 && er))
- : done());
+ fs.fchown(fd, uid, gid, er => er ? fs.chown(abs, uid, gid, er2 => done(er2 && er)) : done());
}
}
done();
});
const tx = this.transform ? this.transform(entry) || entry : entry;
if (tx !== entry) {
- tx.on('error', (er) => {
+ tx.on('error', er => {
this[ONERROR](er, entry);
fullyDone();
});
@@ -492,9 +477,7 @@ export class Unpack extends Parser {
tx.pipe(stream);
}
[DIRECTORY](entry, fullyDone) {
- const mode = typeof entry.mode === 'number' ?
- entry.mode & 0o7777
- : this.dmode;
+ const mode = typeof entry.mode === 'number' ? entry.mode & 0o7777 : this.dmode;
this[MKDIR](String(entry.absolute), mode, er => {
if (er) {
this[ONERROR](er, entry);
@@ -630,9 +613,7 @@ export class Unpack extends Parser {
}
if (st.isDirectory()) {
if (entry.type === 'Directory') {
- const needChmod = this.chmod &&
- entry.mode &&
- (st.mode & 0o7777) !== entry.mode;
+ const needChmod = this.chmod && entry.mode && (st.mode & 0o7777) !== entry.mode;
const afterChmod = (er) => this[MAKEFS](er ?? null, entry, done);
if (!needChmod) {
return afterChmod();
@@ -742,9 +723,7 @@ export class UnpackSync extends Unpack {
}
if (st.isDirectory()) {
if (entry.type === 'Directory') {
- const needChmod = this.chmod &&
- entry.mode &&
- (st.mode & 0o7777) !== entry.mode;
+ const needChmod = this.chmod && entry.mode && (st.mode & 0o7777) !== entry.mode;
const [er] = needChmod ?
callSync(() => {
fs.chmodSync(String(entry.absolute), Number(entry.mode));
@@ -764,9 +743,7 @@ export class UnpackSync extends Unpack {
this[MAKEFS](er, entry);
}
[FILE](entry, done) {
- const mode = typeof entry.mode === 'number' ?
- entry.mode & 0o7777
- : this.fmode;
+ const mode = typeof entry.mode === 'number' ? entry.mode & 0o7777 : this.fmode;
const oner = (er) => {
let closeError;
try {
@@ -794,7 +771,7 @@ export class UnpackSync extends Unpack {
/* c8 ignore stop */
const tx = this.transform ? this.transform(entry) || entry : entry;
if (tx !== entry) {
- tx.on('error', (er) => this[ONERROR](er, entry));
+ tx.on('error', er => this[ONERROR](er, entry));
entry.pipe(tx);
}
tx.on('data', (chunk) => {
@@ -819,7 +796,7 @@ export class UnpackSync extends Unpack {
try {
fs.utimesSync(String(entry.absolute), atime, mtime);
}
- catch (utimeser) {
+ catch {
er = futimeser;
}
}
@@ -834,7 +811,7 @@ export class UnpackSync extends Unpack {
try {
fs.chownSync(String(entry.absolute), Number(uid), Number(gid));
}
- catch (chowner) {
+ catch {
er = er || fchowner;
}
}
@@ -843,9 +820,7 @@ export class UnpackSync extends Unpack {
});
}
[DIRECTORY](entry, done) {
- const mode = typeof entry.mode === 'number' ?
- entry.mode & 0o7777
- : this.dmode;
+ const mode = typeof entry.mode === 'number' ? entry.mode & 0o7777 : this.dmode;
const er = this[MKDIR](String(entry.absolute), mode);
if (er) {
this[ONERROR](er, entry);
@@ -857,13 +832,13 @@ export class UnpackSync extends Unpack {
fs.utimesSync(String(entry.absolute), entry.atime || new Date(), entry.mtime);
/* c8 ignore next */
}
- catch (er) { }
+ catch { }
}
if (this[DOCHOWN](entry)) {
try {
fs.chownSync(String(entry.absolute), Number(this[UID](entry)), Number(this[GID](entry)));
}
- catch (er) { }
+ catch { }
}
done();
entry.resume();
@@ -887,7 +862,7 @@ export class UnpackSync extends Unpack {
}
}
[ENSURE_NO_SYMLINK](_entry, cwd, parts, done, onError) {
- if (this.preservePaths || !parts.length)
+ if (this.preservePaths || parts.length === 0)
return done();
let t = cwd;
for (const p of parts) {
diff --git a/deps/npm/node_modules/tar/dist/esm/winchars.js b/deps/npm/node_modules/tar/dist/esm/winchars.js
index c41eb86d69a..4046778e14e 100644
--- a/deps/npm/node_modules/tar/dist/esm/winchars.js
+++ b/deps/npm/node_modules/tar/dist/esm/winchars.js
@@ -1,7 +1,7 @@
// When writing files on Windows, translate the characters to their
// 0xf000 higher-encoded versions.
const raw = ['|', '<', '>', '?', ':'];
-const win = raw.map(char => String.fromCharCode(0xf000 + char.charCodeAt(0)));
+const win = raw.map(char => String.fromCodePoint(0xf000 + Number(char.codePointAt(0))));
const toWin = new Map(raw.map((char, i) => [char, win[i]]));
const toRaw = new Map(win.map((char, i) => [char, raw[i]]));
export const encode = (s) => raw.reduce((s, c) => s.split(c).join(toWin.get(c)), s);
diff --git a/deps/npm/node_modules/tar/dist/esm/write-entry.js b/deps/npm/node_modules/tar/dist/esm/write-entry.js
index 9028cd676b4..158260236b2 100644
--- a/deps/npm/node_modules/tar/dist/esm/write-entry.js
+++ b/deps/npm/node_modules/tar/dist/esm/write-entry.js
@@ -4,11 +4,11 @@ import path from 'path';
import { Header } from './header.js';
import { modeFix } from './mode-fix.js';
import { normalizeWindowsPath } from './normalize-windows-path.js';
-import { dealias, } from './options.js';
+import { dealias } from './options.js';
import { Pax } from './pax.js';
import { stripAbsolutePath } from './strip-absolute-path.js';
import { stripTrailingSlashes } from './strip-trailing-slashes.js';
-import { warnMethod, } from './warn-method.js';
+import { warnMethod } from './warn-method.js';
import * as winchars from './winchars.js';
const prefixPath = (path, prefix) => {
if (!prefix) {
@@ -83,8 +83,7 @@ export class WriteEntry extends Minipass {
this.noPax = !!opt.noPax;
this.noMtime = !!opt.noMtime;
this.mtime = opt.mtime;
- this.prefix =
- opt.prefix ? normalizeWindowsPath(opt.prefix) : undefined;
+ this.prefix = opt.prefix ? normalizeWindowsPath(opt.prefix) : undefined;
this.onWriteEntry = opt.onWriteEntry;
if (typeof opt.onwarn === 'function') {
this.on('warn', opt.onwarn);
@@ -101,8 +100,8 @@ export class WriteEntry extends Minipass {
if (this.win32) {
// force the \ to / normalization, since we might not *actually*
// be on windows, but want \ to be considered a path separator.
- this.path = winchars.decode(this.path.replace(/\\/g, '/'));
- p = p.replace(/\\/g, '/');
+ this.path = winchars.decode(this.path.replaceAll(/\\/g, '/'));
+ p = p.replaceAll(/\\/g, '/');
}
this.absolute = normalizeWindowsPath(opt.absolute || path.resolve(this.cwd, p));
if (this.path === '') {
@@ -204,7 +203,7 @@ export class WriteEntry extends Minipass {
atime: this.portable ? undefined : this.header.atime,
ctime: this.portable ? undefined : this.header.ctime,
gid: this.portable ? undefined : this.header.gid,
- mtime: this.noMtime ? undefined : (this.mtime || this.header.mtime),
+ mtime: this.noMtime ? undefined : this.mtime || this.header.mtime,
path: this[PREFIX](this.path),
linkpath: this.type === 'Link' && this.linkpath !== undefined ?
this[PREFIX](this.linkpath)
@@ -407,7 +406,7 @@ export class WriteEntry extends Minipass {
if (this.blockRemain) {
super.write(Buffer.alloc(this.blockRemain));
}
- return this[CLOSE](er => er ? this.emit('error', er) : this.end());
+ return this[CLOSE](er => (er ? this.emit('error', er) : this.end()));
}
/* c8 ignore start */
if (!this.buf) {
@@ -455,7 +454,7 @@ export class WriteEntrySync extends WriteEntry {
try {
this[CLOSE](() => { });
}
- catch (er) { }
+ catch { }
}
}
}
@@ -524,16 +523,13 @@ export class WriteEntryTar extends Minipass {
this.prefix = opt.prefix;
this.path = normalizeWindowsPath(readEntry.path);
this.mode =
- readEntry.mode !== undefined ?
- this[MODE](readEntry.mode)
- : undefined;
+ readEntry.mode !== undefined ? this[MODE](readEntry.mode) : undefined;
this.uid = this.portable ? undefined : readEntry.uid;
this.gid = this.portable ? undefined : readEntry.gid;
this.uname = this.portable ? undefined : readEntry.uname;
this.gname = this.portable ? undefined : readEntry.gname;
this.size = readEntry.size;
- this.mtime =
- this.noMtime ? undefined : opt.mtime || readEntry.mtime;
+ this.mtime = this.noMtime ? undefined : opt.mtime || readEntry.mtime;
this.atime = this.portable ? undefined : readEntry.atime;
this.ctime = this.portable ? undefined : readEntry.ctime;
this.linkpath =
@@ -645,7 +641,10 @@ export class WriteEntryTar extends Minipass {
}
if (cb)
this.once('finish', cb);
- chunk ? super.end(chunk, cb) : super.end(cb);
+ if (chunk)
+ super.end(chunk, cb);
+ else
+ super.end(cb);
/* c8 ignore stop */
return this;
}
diff --git a/deps/npm/node_modules/tar/package.json b/deps/npm/node_modules/tar/package.json
index 27cdae83012..f19ece377d9 100644
--- a/deps/npm/node_modules/tar/package.json
+++ b/deps/npm/node_modules/tar/package.json
@@ -2,7 +2,7 @@
"author": "Isaac Z. Schlueter",
"name": "tar",
"description": "tar for node",
- "version": "7.5.11",
+ "version": "7.5.22",
"repository": {
"type": "git",
"url": "https://github.com/isaacs/node-tar.git"
@@ -18,7 +18,10 @@
"postversion": "npm publish",
"prepublishOnly": "git push origin --follow-tags",
"format": "prettier --write . --log-level warn",
- "typedoc": "typedoc --tsconfig .tshy/esm.json ./src/*.ts"
+ "typedoc": "typedoc --tsconfig .tshy/esm.json ./src/*.ts",
+ "lint": "oxlint --fix src test",
+ "postsnap": "npm run lint",
+ "postlint": "npm run format"
},
"dependencies": {
"@isaacs/fs-minipass": "^4.0.0",
@@ -28,18 +31,20 @@
"yallist": "^5.0.0"
},
"devDependencies": {
- "@types/node": "^25.3.3",
+ "@types/node": "^25.9.1",
"chmodr": "^2.0.2",
"end-of-stream": "^1.4.3",
- "esbuild": "^0.27.3",
+ "esbuild": "^0.28.0",
"events-to-array": "^2.0.3",
"mutate-fs": "^2.1.1",
"nock": "^13.5.4",
- "prettier": "^3.8.1",
+ "oxlint": "^1.67.0",
+ "oxlint-tsgolint": "^0.23.0",
+ "prettier": "^3.8.3",
"rimraf": "^6.1.2",
- "tap": "^21.6.2",
- "tshy": "^3.3.2",
- "typedoc": "^0.28.17"
+ "tap": "^21.7.4",
+ "tshy": "^4.1.2",
+ "typedoc": "^0.28.19"
},
"license": "BlueOak-1.0.0",
"engines": {
@@ -80,7 +85,8 @@
"./header": "./src/header.ts",
"./pax": "./src/pax.ts",
"./types": "./src/types.ts"
- }
+ },
+ "selfLink": false
},
"exports": {
"./package.json": "./package.json",
diff --git a/deps/npm/package.json b/deps/npm/package.json
index 476e999d42c..67734361b67 100644
--- a/deps/npm/package.json
+++ b/deps/npm/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.9.8",
+ "version": "10.9.9",
"name": "npm",
"description": "a package manager for JavaScript",
"workspaces": [
@@ -112,7 +112,7 @@
"spdx-expression-parse": "^4.0.0",
"ssri": "^12.0.0",
"supports-color": "^9.4.0",
- "tar": "^7.5.11",
+ "tar": "^7.5.22",
"text-table": "~0.2.0",
"tiny-relative-date": "^1.3.0",
"treeverse": "^3.0.0",
diff --git a/deps/openssl/config/archs/BSD-x86/asm/configdata.pm b/deps/openssl/config/archs/BSD-x86/asm/configdata.pm
index bd750960f6b..ac4ac883c1b 100644
--- a/deps/openssl/config/archs/BSD-x86/asm/configdata.pm
+++ b/deps/openssl/config/archs/BSD-x86/asm/configdata.pm
@@ -171,7 +171,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -233,7 +233,7 @@ our %config = (
"openssl_sys_defines" => [],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -286,11 +286,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned int",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "BSD-x86",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3295,6 +3295,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3331,6 +3334,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5989,6 +5995,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -6025,6 +6034,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13949,6 +13961,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -13985,6 +14000,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16643,6 +16661,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16679,6 +16700,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19377,6 +19401,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19389,6 +19414,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -23017,6 +23043,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -23029,6 +23056,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/BSD-x86/asm/crypto/buildinf.h b/deps/openssl/config/archs/BSD-x86/asm/crypto/buildinf.h
index 83e78c4590c..0eb178d417d 100644
--- a/deps/openssl/config/archs/BSD-x86/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/BSD-x86/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: BSD-x86"
-#define DATE "built on: Tue Jun 9 13:41:00 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:44:29 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/ssl.h b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/configdata.pm b/deps/openssl/config/archs/BSD-x86/asm_avx2/configdata.pm
index e9b7549abed..0cbf33348de 100644
--- a/deps/openssl/config/archs/BSD-x86/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/configdata.pm
@@ -171,7 +171,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -233,7 +233,7 @@ our %config = (
"openssl_sys_defines" => [],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -286,11 +286,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned int",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "BSD-x86",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3295,6 +3295,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3331,6 +3334,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5989,6 +5995,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -6025,6 +6034,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13949,6 +13961,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -13985,6 +14000,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16643,6 +16661,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16679,6 +16700,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19377,6 +19401,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19389,6 +19414,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -23017,6 +23043,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -23029,6 +23056,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/buildinf.h
index bbeffb99eae..b5f74ebd2c4 100644
--- a/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: BSD-x86"
-#define DATE "built on: Tue Jun 9 13:41:17 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:44:44 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/ssl.h b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/configdata.pm b/deps/openssl/config/archs/BSD-x86/no-asm/configdata.pm
index b4fe5a2d124..345db05f0f0 100644
--- a/deps/openssl/config/archs/BSD-x86/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/BSD-x86/no-asm/configdata.pm
@@ -169,7 +169,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -232,7 +232,7 @@ our %config = (
"openssl_sys_defines" => [],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -286,11 +286,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned int",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "BSD-x86",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3237,6 +3237,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3273,6 +3276,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5931,6 +5937,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -5967,6 +5976,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13869,6 +13881,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -13905,6 +13920,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16563,6 +16581,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16599,6 +16620,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19297,6 +19321,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19309,6 +19334,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -22934,6 +22960,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -22946,6 +22973,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/BSD-x86/no-asm/crypto/buildinf.h
index f412cff99b1..3ad36be082c 100644
--- a/deps/openssl/config/archs/BSD-x86/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/BSD-x86/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: BSD-x86"
-#define DATE "built on: Tue Jun 9 13:41:33 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:44:58 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/ssl.h b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/configdata.pm b/deps/openssl/config/archs/BSD-x86_64/asm/configdata.pm
index 38e54764b02..31afaaadb57 100644
--- a/deps/openssl/config/archs/BSD-x86_64/asm/configdata.pm
+++ b/deps/openssl/config/archs/BSD-x86_64/asm/configdata.pm
@@ -171,7 +171,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -233,7 +233,7 @@ our %config = (
"openssl_sys_defines" => [],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -286,11 +286,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned int",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "BSD-x86_64",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3302,6 +3302,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3338,6 +3341,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5996,6 +6002,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -6032,6 +6041,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -14006,6 +14018,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -14042,6 +14057,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16700,6 +16718,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16736,6 +16757,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19434,6 +19458,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19446,6 +19471,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -23074,6 +23100,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -23086,6 +23113,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/buildinf.h b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/buildinf.h
index 174efa38058..6559d6393fb 100644
--- a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: BSD-x86_64"
-#define DATE "built on: Tue Jun 9 13:41:48 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:45:12 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/ssl.h b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/configdata.pm b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/configdata.pm
index 950bafce9b0..7e3f3969648 100644
--- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/configdata.pm
@@ -171,7 +171,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -233,7 +233,7 @@ our %config = (
"openssl_sys_defines" => [],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -286,11 +286,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned int",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "BSD-x86_64",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3302,6 +3302,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3338,6 +3341,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5996,6 +6002,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -6032,6 +6041,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -14006,6 +14018,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -14042,6 +14057,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16700,6 +16718,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16736,6 +16757,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19434,6 +19458,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19446,6 +19471,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -23074,6 +23100,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -23086,6 +23113,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/buildinf.h
index c0f9d0f4525..d254d69de09 100644
--- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: BSD-x86_64"
-#define DATE "built on: Tue Jun 9 13:42:10 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:45:34 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/ssl.h b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/configdata.pm b/deps/openssl/config/archs/BSD-x86_64/no-asm/configdata.pm
index b02716db57a..f8a717ddee5 100644
--- a/deps/openssl/config/archs/BSD-x86_64/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/configdata.pm
@@ -169,7 +169,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -232,7 +232,7 @@ our %config = (
"openssl_sys_defines" => [],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -286,11 +286,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned int",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "BSD-x86_64",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3238,6 +3238,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3274,6 +3277,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5932,6 +5938,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -5968,6 +5977,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13870,6 +13882,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -13906,6 +13921,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16564,6 +16582,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16600,6 +16621,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19298,6 +19322,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19310,6 +19335,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -22935,6 +22961,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -22947,6 +22974,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/BSD-x86_64/no-asm/crypto/buildinf.h
index 9d468e2e572..e6ed5590534 100644
--- a/deps/openssl/config/archs/BSD-x86_64/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: BSD-x86_64"
-#define DATE "built on: Tue Jun 9 13:42:29 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:45:51 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/ssl.h b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/VC-WIN32/asm/configdata.pm b/deps/openssl/config/archs/VC-WIN32/asm/configdata.pm
index 62293993359..8c0198e5b9c 100644
--- a/deps/openssl/config/archs/VC-WIN32/asm/configdata.pm
+++ b/deps/openssl/config/archs/VC-WIN32/asm/configdata.pm
@@ -179,7 +179,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -244,7 +244,7 @@ our %config = (
],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -297,11 +297,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned int",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "VC-WIN32",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "lib",
@@ -316,7 +316,7 @@ our %target = (
"LDFLAGS" => "/nologo /debug",
"MT" => "mt",
"MTFLAGS" => "-nologo",
- "RANLIB" => "CODE(0x55e7c2c5f858)",
+ "RANLIB" => "CODE(0x557949e58080)",
"RC" => "rc",
"_conf_fname_int" => [
"Configurations/00-base-templates.conf",
@@ -3337,6 +3337,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3373,6 +3376,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -6031,6 +6037,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -6067,6 +6076,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -14002,6 +14014,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -14038,6 +14053,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16696,6 +16714,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16732,6 +16753,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19446,6 +19470,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19458,6 +19483,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -23092,6 +23118,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -23104,6 +23131,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/VC-WIN32/asm/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN32/asm/crypto/buildinf.h
index 229f1833432..7d155abc0f1 100644
--- a/deps/openssl/config/archs/VC-WIN32/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/VC-WIN32/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: "
-#define DATE "built on: Tue Jun 9 13:54:16 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:57:17 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/opensslv.h
index 2ffd28f17e8..5baff3e0aff 100644
--- a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/ssl.h b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/ssl.h
index 0e7eb9dfb94..0614d70ba58 100644
--- a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/configdata.pm b/deps/openssl/config/archs/VC-WIN32/asm_avx2/configdata.pm
index 888f7e00b7d..7d562a54a77 100644
--- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/configdata.pm
@@ -179,7 +179,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -244,7 +244,7 @@ our %config = (
],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -297,11 +297,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned int",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "VC-WIN32",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "lib",
@@ -316,7 +316,7 @@ our %target = (
"LDFLAGS" => "/nologo /debug",
"MT" => "mt",
"MTFLAGS" => "-nologo",
- "RANLIB" => "CODE(0x558ec8331428)",
+ "RANLIB" => "CODE(0x5638823c9d80)",
"RC" => "rc",
"_conf_fname_int" => [
"Configurations/00-base-templates.conf",
@@ -3337,6 +3337,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3373,6 +3376,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -6031,6 +6037,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -6067,6 +6076,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -14002,6 +14014,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -14038,6 +14053,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16696,6 +16714,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16732,6 +16753,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19446,6 +19470,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19458,6 +19483,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -23092,6 +23118,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -23104,6 +23131,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/buildinf.h
index 8f4480ca6a5..12162fc406e 100644
--- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: "
-#define DATE "built on: Tue Jun 9 13:54:31 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:57:30 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/opensslv.h
index 2ffd28f17e8..5baff3e0aff 100644
--- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/ssl.h b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/ssl.h
index 0e7eb9dfb94..0614d70ba58 100644
--- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/configdata.pm b/deps/openssl/config/archs/VC-WIN32/no-asm/configdata.pm
index 0787c094044..70e0bc2da3d 100644
--- a/deps/openssl/config/archs/VC-WIN32/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/VC-WIN32/no-asm/configdata.pm
@@ -177,7 +177,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -243,7 +243,7 @@ our %config = (
],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -297,11 +297,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned int",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "VC-WIN32",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "lib",
@@ -316,7 +316,7 @@ our %target = (
"LDFLAGS" => "/nologo /debug",
"MT" => "mt",
"MTFLAGS" => "-nologo",
- "RANLIB" => "CODE(0x563fa480ed90)",
+ "RANLIB" => "CODE(0x5602eb82b768)",
"RC" => "rc",
"_conf_fname_int" => [
"Configurations/00-base-templates.conf",
@@ -3279,6 +3279,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3315,6 +3318,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5973,6 +5979,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -6009,6 +6018,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13922,6 +13934,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -13958,6 +13973,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16616,6 +16634,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16652,6 +16673,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19366,6 +19390,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19378,6 +19403,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -23009,6 +23035,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -23021,6 +23048,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN32/no-asm/crypto/buildinf.h
index 0770ff21813..1076ee612fc 100644
--- a/deps/openssl/config/archs/VC-WIN32/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/VC-WIN32/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: "
-#define DATE "built on: Tue Jun 9 13:54:45 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:57:43 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/opensslv.h
index 2ffd28f17e8..5baff3e0aff 100644
--- a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/ssl.h b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/ssl.h
index 0e7eb9dfb94..0614d70ba58 100644
--- a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/configdata.pm b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/configdata.pm
index 03796efd754..f4aafbe1cab 100644
--- a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/configdata.pm
@@ -177,7 +177,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -241,7 +241,7 @@ our %config = (
"openssl_sys_defines" => [],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -295,11 +295,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned char",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "VC-WIN64-ARM",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "lib",
@@ -312,7 +312,7 @@ our %target = (
"LDFLAGS" => "/nologo /debug",
"MT" => "mt",
"MTFLAGS" => "-nologo",
- "RANLIB" => "CODE(0x557702d9b300)",
+ "RANLIB" => "CODE(0x56183358b738)",
"RC" => "rc",
"_conf_fname_int" => [
"Configurations/00-base-templates.conf",
@@ -3271,6 +3271,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3307,6 +3310,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5965,6 +5971,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -6001,6 +6010,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13914,6 +13926,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -13950,6 +13965,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16608,6 +16626,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16644,6 +16665,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19358,6 +19382,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19370,6 +19395,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -23001,6 +23027,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -23013,6 +23040,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/crypto/buildinf.h
index c45a9348f28..bfad73d1231 100644
--- a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: VC-WIN64-ARM"
-#define DATE "built on: Tue Jun 9 13:54:58 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:57:55 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/opensslv.h
index 2ffd28f17e8..5baff3e0aff 100644
--- a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/ssl.h b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/ssl.h
index 0e7eb9dfb94..0614d70ba58 100644
--- a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/configdata.pm b/deps/openssl/config/archs/VC-WIN64A/asm/configdata.pm
index 65fc2d00ace..7dfcd6d239b 100644
--- a/deps/openssl/config/archs/VC-WIN64A/asm/configdata.pm
+++ b/deps/openssl/config/archs/VC-WIN64A/asm/configdata.pm
@@ -181,7 +181,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -246,7 +246,7 @@ our %config = (
],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -299,11 +299,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned int",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "VC-WIN64A",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "lib",
@@ -318,7 +318,7 @@ our %target = (
"LDFLAGS" => "/nologo /debug",
"MT" => "mt",
"MTFLAGS" => "-nologo",
- "RANLIB" => "CODE(0x558980ea4db8)",
+ "RANLIB" => "CODE(0x5592d548ade0)",
"RC" => "rc",
"_conf_fname_int" => [
"Configurations/00-base-templates.conf",
@@ -3346,6 +3346,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3382,6 +3385,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -6040,6 +6046,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -6076,6 +6085,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -14051,6 +14063,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -14087,6 +14102,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16745,6 +16763,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16781,6 +16802,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19495,6 +19519,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19507,6 +19532,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -23141,6 +23167,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -23153,6 +23180,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/buildinf.h
index bb080028866..705ec9d68ae 100644
--- a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: "
-#define DATE "built on: Tue Jun 9 13:53:23 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:56:25 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/opensslv.h
index 2ffd28f17e8..5baff3e0aff 100644
--- a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/ssl.h b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/ssl.h
index 0e7eb9dfb94..0614d70ba58 100644
--- a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/configdata.pm b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/configdata.pm
index 6dcb1cb5e3a..4564cededfc 100644
--- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/configdata.pm
@@ -181,7 +181,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -246,7 +246,7 @@ our %config = (
],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -299,11 +299,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned int",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "VC-WIN64A",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "lib",
@@ -318,7 +318,7 @@ our %target = (
"LDFLAGS" => "/nologo /debug",
"MT" => "mt",
"MTFLAGS" => "-nologo",
- "RANLIB" => "CODE(0x559fdcf2f078)",
+ "RANLIB" => "CODE(0x55f18d21c250)",
"RC" => "rc",
"_conf_fname_int" => [
"Configurations/00-base-templates.conf",
@@ -3346,6 +3346,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3382,6 +3385,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -6040,6 +6046,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -6076,6 +6085,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -14051,6 +14063,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -14087,6 +14102,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16745,6 +16763,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16781,6 +16802,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19495,6 +19519,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19507,6 +19532,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -23141,6 +23167,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -23153,6 +23180,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/buildinf.h
index 367b947b852..4de5fe8cb9d 100644
--- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: "
-#define DATE "built on: Tue Jun 9 13:53:43 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:56:45 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/opensslv.h
index 2ffd28f17e8..5baff3e0aff 100644
--- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/ssl.h b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/ssl.h
index 0e7eb9dfb94..0614d70ba58 100644
--- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/configdata.pm b/deps/openssl/config/archs/VC-WIN64A/no-asm/configdata.pm
index 3efb5f52231..5ff821f37b7 100644
--- a/deps/openssl/config/archs/VC-WIN64A/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/configdata.pm
@@ -179,7 +179,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -245,7 +245,7 @@ our %config = (
],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -299,11 +299,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned int",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "VC-WIN64A",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "lib",
@@ -318,7 +318,7 @@ our %target = (
"LDFLAGS" => "/nologo /debug",
"MT" => "mt",
"MTFLAGS" => "-nologo",
- "RANLIB" => "CODE(0x5641b5beb5e0)",
+ "RANLIB" => "CODE(0x562b96496f28)",
"RC" => "rc",
"_conf_fname_int" => [
"Configurations/00-base-templates.conf",
@@ -3282,6 +3282,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3318,6 +3321,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5976,6 +5982,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -6012,6 +6021,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13925,6 +13937,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -13961,6 +13976,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16619,6 +16637,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16655,6 +16676,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19369,6 +19393,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19381,6 +19406,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -23012,6 +23038,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -23024,6 +23051,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN64A/no-asm/crypto/buildinf.h
index fb6a1a832f5..501ff4ff3ce 100644
--- a/deps/openssl/config/archs/VC-WIN64A/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: "
-#define DATE "built on: Tue Jun 9 13:54:03 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:57:05 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/opensslv.h
index 2ffd28f17e8..5baff3e0aff 100644
--- a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/ssl.h b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/ssl.h
index 0e7eb9dfb94..0614d70ba58 100644
--- a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/configdata.pm b/deps/openssl/config/archs/aix64-gcc-as/asm/configdata.pm
index b3f469236b8..ce7965a89a3 100644
--- a/deps/openssl/config/archs/aix64-gcc-as/asm/configdata.pm
+++ b/deps/openssl/config/archs/aix64-gcc-as/asm/configdata.pm
@@ -171,7 +171,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -236,7 +236,7 @@ our %config = (
],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -289,11 +289,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned char",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "aix64-gcc-as",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar -X64",
@@ -3278,6 +3278,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3314,6 +3317,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5972,6 +5978,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -6008,6 +6017,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13949,6 +13961,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -13985,6 +14000,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16643,6 +16661,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16679,6 +16700,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19377,6 +19401,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19389,6 +19414,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -23017,6 +23043,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -23029,6 +23056,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/crypto/buildinf.h b/deps/openssl/config/archs/aix64-gcc-as/asm/crypto/buildinf.h
index e32a5a2c259..b0fe2f047cf 100644
--- a/deps/openssl/config/archs/aix64-gcc-as/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/aix64-gcc-as/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: aix64-gcc-as"
-#define DATE "built on: Tue Jun 9 13:40:13 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:43:47 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/ssl.h b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/configdata.pm b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/configdata.pm
index 6fd054c09cb..754092fc104 100644
--- a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/configdata.pm
@@ -171,7 +171,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -236,7 +236,7 @@ our %config = (
],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -289,11 +289,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned char",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "aix64-gcc-as",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar -X64",
@@ -3278,6 +3278,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3314,6 +3317,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5972,6 +5978,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -6008,6 +6017,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13949,6 +13961,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -13985,6 +14000,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16643,6 +16661,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16679,6 +16700,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19377,6 +19401,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19389,6 +19414,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -23017,6 +23043,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -23029,6 +23056,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/crypto/buildinf.h
index 9b2c62e56da..51b519b6c8f 100644
--- a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: aix64-gcc-as"
-#define DATE "built on: Tue Jun 9 13:40:29 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:44:02 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/ssl.h b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/configdata.pm b/deps/openssl/config/archs/aix64-gcc-as/no-asm/configdata.pm
index 22706faea1c..2f15ecac2ff 100644
--- a/deps/openssl/config/archs/aix64-gcc-as/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/configdata.pm
@@ -169,7 +169,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -235,7 +235,7 @@ our %config = (
],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -289,11 +289,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned char",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "aix64-gcc-as",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar -X64",
@@ -3241,6 +3241,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3277,6 +3280,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5935,6 +5941,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -5971,6 +5980,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13872,6 +13884,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -13908,6 +13923,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16566,6 +16584,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16602,6 +16623,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19300,6 +19324,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19312,6 +19337,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -22937,6 +22963,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -22949,6 +22976,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/aix64-gcc-as/no-asm/crypto/buildinf.h
index 52d44b7e70e..8783d9e4f97 100644
--- a/deps/openssl/config/archs/aix64-gcc-as/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: aix64-gcc-as"
-#define DATE "built on: Tue Jun 9 13:40:45 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:44:16 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/ssl.h b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/configdata.pm b/deps/openssl/config/archs/darwin-i386-cc/asm/configdata.pm
index 214eb33b95a..677e3a2d388 100644
--- a/deps/openssl/config/archs/darwin-i386-cc/asm/configdata.pm
+++ b/deps/openssl/config/archs/darwin-i386-cc/asm/configdata.pm
@@ -171,7 +171,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -236,7 +236,7 @@ our %config = (
],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -289,11 +289,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned int",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "darwin-i386-cc",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3298,6 +3298,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3334,6 +3337,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5992,6 +5998,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -6028,6 +6037,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13942,6 +13954,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -13978,6 +13993,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16636,6 +16654,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16672,6 +16693,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19350,6 +19374,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19362,6 +19387,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -22982,6 +23008,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -22994,6 +23021,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/buildinf.h b/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/buildinf.h
index 90746087762..f3ecfa54d35 100644
--- a/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: darwin-i386-cc"
-#define DATE "built on: Tue Jun 9 13:43:40 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:46:57 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/ssl.h b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/configdata.pm b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/configdata.pm
index aac61cd40c7..423b0ca3fba 100644
--- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/configdata.pm
@@ -171,7 +171,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -236,7 +236,7 @@ our %config = (
],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -289,11 +289,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned int",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "darwin-i386-cc",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3298,6 +3298,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3334,6 +3337,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5992,6 +5998,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -6028,6 +6037,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13942,6 +13954,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -13978,6 +13993,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16636,6 +16654,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16672,6 +16693,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19350,6 +19374,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19362,6 +19387,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -22982,6 +23008,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -22994,6 +23021,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/buildinf.h
index 6221eef9364..2013b01ea09 100644
--- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: darwin-i386-cc"
-#define DATE "built on: Tue Jun 9 13:43:56 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:47:11 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/ssl.h b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/darwin-i386-cc/no-asm/configdata.pm b/deps/openssl/config/archs/darwin-i386-cc/no-asm/configdata.pm
index 9e60a3ebb9e..659b73e2b1c 100644
--- a/deps/openssl/config/archs/darwin-i386-cc/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/darwin-i386-cc/no-asm/configdata.pm
@@ -169,7 +169,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -235,7 +235,7 @@ our %config = (
],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -289,11 +289,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned int",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "darwin-i386-cc",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3240,6 +3240,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3276,6 +3279,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5934,6 +5940,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -5970,6 +5979,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13862,6 +13874,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -13898,6 +13913,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16556,6 +16574,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16592,6 +16613,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19270,6 +19294,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19282,6 +19307,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -22899,6 +22925,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -22911,6 +22938,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/darwin-i386-cc/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/darwin-i386-cc/no-asm/crypto/buildinf.h
index 45bbc7e9c33..239e553bbab 100644
--- a/deps/openssl/config/archs/darwin-i386-cc/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/darwin-i386-cc/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: darwin-i386-cc"
-#define DATE "built on: Tue Jun 9 13:44:12 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:47:25 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/darwin-i386-cc/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/darwin-i386-cc/no-asm/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/darwin-i386-cc/no-asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/darwin-i386-cc/no-asm/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/darwin-i386-cc/no-asm/include/openssl/ssl.h b/deps/openssl/config/archs/darwin-i386-cc/no-asm/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/darwin-i386-cc/no-asm/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/darwin-i386-cc/no-asm/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/asm/configdata.pm b/deps/openssl/config/archs/darwin64-arm64-cc/asm/configdata.pm
index 9130bfc22ae..1a3c1d649e0 100644
--- a/deps/openssl/config/archs/darwin64-arm64-cc/asm/configdata.pm
+++ b/deps/openssl/config/archs/darwin64-arm64-cc/asm/configdata.pm
@@ -171,7 +171,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -236,7 +236,7 @@ our %config = (
],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -289,11 +289,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned int",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "darwin64-arm64-cc",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3288,6 +3288,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3324,6 +3327,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5982,6 +5988,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -6018,6 +6027,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13949,6 +13961,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -13985,6 +14000,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16643,6 +16661,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16679,6 +16700,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19357,6 +19381,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19369,6 +19394,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -23091,6 +23117,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -23103,6 +23130,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/asm/crypto/buildinf.h b/deps/openssl/config/archs/darwin64-arm64-cc/asm/crypto/buildinf.h
index 377b7634216..ebd91ed4215 100644
--- a/deps/openssl/config/archs/darwin64-arm64-cc/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/darwin64-arm64-cc/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: darwin64-arm64-cc"
-#define DATE "built on: Tue Jun 9 13:44:27 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:47:38 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/darwin64-arm64-cc/asm/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/darwin64-arm64-cc/asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/darwin64-arm64-cc/asm/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/asm/include/openssl/ssl.h b/deps/openssl/config/archs/darwin64-arm64-cc/asm/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/darwin64-arm64-cc/asm/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/darwin64-arm64-cc/asm/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/configdata.pm b/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/configdata.pm
index cec7756b473..2de138f6006 100644
--- a/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/configdata.pm
@@ -171,7 +171,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -236,7 +236,7 @@ our %config = (
],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -289,11 +289,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned int",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "darwin64-arm64-cc",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3288,6 +3288,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3324,6 +3327,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5982,6 +5988,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -6018,6 +6027,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13949,6 +13961,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -13985,6 +14000,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16643,6 +16661,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16679,6 +16700,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19357,6 +19381,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19369,6 +19394,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -23091,6 +23117,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -23103,6 +23130,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/crypto/buildinf.h
index cb74149bc29..8ea0fd7e44d 100644
--- a/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: darwin64-arm64-cc"
-#define DATE "built on: Tue Jun 9 13:44:43 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:47:53 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/include/openssl/ssl.h b/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/configdata.pm b/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/configdata.pm
index a5e982f73ed..959e1557c92 100644
--- a/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/configdata.pm
@@ -169,7 +169,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -235,7 +235,7 @@ our %config = (
],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -289,11 +289,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned int",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "darwin64-arm64-cc",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3240,6 +3240,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3276,6 +3279,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5934,6 +5940,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -5970,6 +5979,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13862,6 +13874,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -13898,6 +13913,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16556,6 +16574,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16592,6 +16613,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19270,6 +19294,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19282,6 +19307,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -22899,6 +22925,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -22911,6 +22938,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/crypto/buildinf.h
index 81e5ca4c500..1c45cc79ec2 100644
--- a/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: darwin64-arm64-cc"
-#define DATE "built on: Tue Jun 9 13:44:59 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:48:08 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/include/openssl/ssl.h b/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/asm/configdata.pm b/deps/openssl/config/archs/darwin64-x86_64-cc/asm/configdata.pm
index db5a2e5d8b1..2bd155fb6a8 100644
--- a/deps/openssl/config/archs/darwin64-x86_64-cc/asm/configdata.pm
+++ b/deps/openssl/config/archs/darwin64-x86_64-cc/asm/configdata.pm
@@ -171,7 +171,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -236,7 +236,7 @@ our %config = (
],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -289,11 +289,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned int",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "darwin64-x86_64-cc",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3304,6 +3304,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3340,6 +3343,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5998,6 +6004,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -6034,6 +6043,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13998,6 +14010,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -14034,6 +14049,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16692,6 +16710,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16728,6 +16749,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19406,6 +19430,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19418,6 +19443,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -23038,6 +23064,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -23050,6 +23077,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/asm/crypto/buildinf.h b/deps/openssl/config/archs/darwin64-x86_64-cc/asm/crypto/buildinf.h
index b7930fb848a..4ad9e9a96d9 100644
--- a/deps/openssl/config/archs/darwin64-x86_64-cc/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/darwin64-x86_64-cc/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: darwin64-x86_64-cc"
-#define DATE "built on: Tue Jun 9 13:42:44 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:46:05 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/darwin64-x86_64-cc/asm/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/darwin64-x86_64-cc/asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/darwin64-x86_64-cc/asm/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/asm/include/openssl/ssl.h b/deps/openssl/config/archs/darwin64-x86_64-cc/asm/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/darwin64-x86_64-cc/asm/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/darwin64-x86_64-cc/asm/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/configdata.pm b/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/configdata.pm
index f26518b9e99..7a2e93ded84 100644
--- a/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/configdata.pm
@@ -171,7 +171,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -236,7 +236,7 @@ our %config = (
],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -289,11 +289,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned int",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "darwin64-x86_64-cc",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3304,6 +3304,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3340,6 +3343,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5998,6 +6004,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -6034,6 +6043,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13998,6 +14010,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -14034,6 +14049,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16692,6 +16710,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16728,6 +16749,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19406,6 +19430,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19418,6 +19443,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -23038,6 +23064,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -23050,6 +23077,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/crypto/buildinf.h
index 0b51db6c1eb..16c8b116acf 100644
--- a/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: darwin64-x86_64-cc"
-#define DATE "built on: Tue Jun 9 13:43:06 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:46:26 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/include/openssl/ssl.h b/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/configdata.pm b/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/configdata.pm
index 3a7dc557451..0c87f09ff28 100644
--- a/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/configdata.pm
@@ -169,7 +169,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -235,7 +235,7 @@ our %config = (
],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -289,11 +289,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned int",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "darwin64-x86_64-cc",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3240,6 +3240,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3276,6 +3279,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5934,6 +5940,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -5970,6 +5979,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13862,6 +13874,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -13898,6 +13913,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16556,6 +16574,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16592,6 +16613,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19270,6 +19294,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19282,6 +19307,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -22899,6 +22925,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -22911,6 +22938,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/crypto/buildinf.h
index 2d28b30c925..5746af4e297 100644
--- a/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: darwin64-x86_64-cc"
-#define DATE "built on: Tue Jun 9 13:43:25 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:46:44 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/include/openssl/ssl.h b/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/linux-aarch64/asm/configdata.pm b/deps/openssl/config/archs/linux-aarch64/asm/configdata.pm
index 6653c6799b7..918e2e46d9f 100644
--- a/deps/openssl/config/archs/linux-aarch64/asm/configdata.pm
+++ b/deps/openssl/config/archs/linux-aarch64/asm/configdata.pm
@@ -174,7 +174,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -237,7 +237,7 @@ our %config = (
"openssl_sys_defines" => [],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -290,11 +290,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned char",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "linux-aarch64",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3294,6 +3294,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3330,6 +3333,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5988,6 +5994,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -6024,6 +6033,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13964,6 +13976,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -14000,6 +14015,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16658,6 +16676,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16694,6 +16715,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19392,6 +19416,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19404,6 +19429,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -23134,6 +23160,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -23146,6 +23173,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/linux-aarch64/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-aarch64/asm/crypto/buildinf.h
index 82957105dee..de53666cf4f 100644
--- a/deps/openssl/config/archs/linux-aarch64/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-aarch64/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux-aarch64"
-#define DATE "built on: Tue Jun 9 13:45:14 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:48:21 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-aarch64/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-aarch64/asm/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/linux-aarch64/asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux-aarch64/asm/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/linux-aarch64/asm/include/openssl/ssl.h b/deps/openssl/config/archs/linux-aarch64/asm/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/linux-aarch64/asm/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/linux-aarch64/asm/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/linux-aarch64/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux-aarch64/asm_avx2/configdata.pm
index 65fb4bf41ff..6681d03fee7 100644
--- a/deps/openssl/config/archs/linux-aarch64/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/linux-aarch64/asm_avx2/configdata.pm
@@ -174,7 +174,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -237,7 +237,7 @@ our %config = (
"openssl_sys_defines" => [],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -290,11 +290,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned char",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "linux-aarch64",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3294,6 +3294,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3330,6 +3333,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5988,6 +5994,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -6024,6 +6033,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13964,6 +13976,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -14000,6 +14015,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16658,6 +16676,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16694,6 +16715,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19392,6 +19416,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19404,6 +19429,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -23134,6 +23160,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -23146,6 +23173,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/linux-aarch64/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux-aarch64/asm_avx2/crypto/buildinf.h
index be7fe9fba06..a07a11289cc 100644
--- a/deps/openssl/config/archs/linux-aarch64/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-aarch64/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux-aarch64"
-#define DATE "built on: Tue Jun 9 13:45:31 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:48:36 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-aarch64/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-aarch64/asm_avx2/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/linux-aarch64/asm_avx2/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux-aarch64/asm_avx2/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/linux-aarch64/asm_avx2/include/openssl/ssl.h b/deps/openssl/config/archs/linux-aarch64/asm_avx2/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/linux-aarch64/asm_avx2/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/linux-aarch64/asm_avx2/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/linux-aarch64/no-asm/configdata.pm b/deps/openssl/config/archs/linux-aarch64/no-asm/configdata.pm
index 507a376831c..3b8044783ff 100644
--- a/deps/openssl/config/archs/linux-aarch64/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/linux-aarch64/no-asm/configdata.pm
@@ -172,7 +172,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -236,7 +236,7 @@ our %config = (
"openssl_sys_defines" => [],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -290,11 +290,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned char",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "linux-aarch64",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3246,6 +3246,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3282,6 +3285,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5940,6 +5946,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -5976,6 +5985,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13877,6 +13889,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -13913,6 +13928,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16571,6 +16589,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16607,6 +16628,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19305,6 +19329,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19317,6 +19342,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -22942,6 +22968,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -22954,6 +22981,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/linux-aarch64/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-aarch64/no-asm/crypto/buildinf.h
index f1a12815e9d..89fbc45ee22 100644
--- a/deps/openssl/config/archs/linux-aarch64/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-aarch64/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux-aarch64"
-#define DATE "built on: Tue Jun 9 13:45:47 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:48:50 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-aarch64/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-aarch64/no-asm/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/linux-aarch64/no-asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux-aarch64/no-asm/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/linux-aarch64/no-asm/include/openssl/ssl.h b/deps/openssl/config/archs/linux-aarch64/no-asm/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/linux-aarch64/no-asm/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/linux-aarch64/no-asm/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/linux-armv4/asm/configdata.pm b/deps/openssl/config/archs/linux-armv4/asm/configdata.pm
index 1a660d04d0c..11a4f8ee787 100644
--- a/deps/openssl/config/archs/linux-armv4/asm/configdata.pm
+++ b/deps/openssl/config/archs/linux-armv4/asm/configdata.pm
@@ -174,7 +174,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -237,7 +237,7 @@ our %config = (
"openssl_sys_defines" => [],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -290,11 +290,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned char",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "linux-armv4",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3286,6 +3286,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3322,6 +3325,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5980,6 +5986,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -6016,6 +6025,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13942,6 +13954,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -13978,6 +13993,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16636,6 +16654,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16672,6 +16693,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19370,6 +19394,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19382,6 +19407,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -23094,6 +23120,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -23106,6 +23133,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/linux-armv4/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-armv4/asm/crypto/buildinf.h
index 514f4af8ca7..8f32ae94668 100644
--- a/deps/openssl/config/archs/linux-armv4/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-armv4/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux-armv4"
-#define DATE "built on: Tue Jun 9 13:46:02 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:49:04 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-armv4/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-armv4/asm/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/linux-armv4/asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux-armv4/asm/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/linux-armv4/asm/include/openssl/ssl.h b/deps/openssl/config/archs/linux-armv4/asm/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/linux-armv4/asm/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/linux-armv4/asm/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/linux-armv4/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux-armv4/asm_avx2/configdata.pm
index a84b683c697..69ca0f50dd8 100644
--- a/deps/openssl/config/archs/linux-armv4/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/linux-armv4/asm_avx2/configdata.pm
@@ -174,7 +174,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -237,7 +237,7 @@ our %config = (
"openssl_sys_defines" => [],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -290,11 +290,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned char",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "linux-armv4",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3286,6 +3286,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3322,6 +3325,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5980,6 +5986,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -6016,6 +6025,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13942,6 +13954,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -13978,6 +13993,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16636,6 +16654,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16672,6 +16693,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19370,6 +19394,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19382,6 +19407,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -23094,6 +23120,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -23106,6 +23133,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/linux-armv4/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux-armv4/asm_avx2/crypto/buildinf.h
index cb47442519c..99de540bf8d 100644
--- a/deps/openssl/config/archs/linux-armv4/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-armv4/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux-armv4"
-#define DATE "built on: Tue Jun 9 13:46:18 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:49:18 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-armv4/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-armv4/asm_avx2/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/linux-armv4/asm_avx2/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux-armv4/asm_avx2/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/linux-armv4/asm_avx2/include/openssl/ssl.h b/deps/openssl/config/archs/linux-armv4/asm_avx2/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/linux-armv4/asm_avx2/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/linux-armv4/asm_avx2/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/linux-armv4/no-asm/configdata.pm b/deps/openssl/config/archs/linux-armv4/no-asm/configdata.pm
index 27fcd3ae06c..57603cdcb47 100644
--- a/deps/openssl/config/archs/linux-armv4/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/linux-armv4/no-asm/configdata.pm
@@ -172,7 +172,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -236,7 +236,7 @@ our %config = (
"openssl_sys_defines" => [],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -290,11 +290,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned char",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "linux-armv4",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3246,6 +3246,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3282,6 +3285,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5940,6 +5946,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -5976,6 +5985,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13877,6 +13889,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -13913,6 +13928,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16571,6 +16589,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16607,6 +16628,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19305,6 +19329,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19317,6 +19342,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -22942,6 +22968,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -22954,6 +22981,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/linux-armv4/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-armv4/no-asm/crypto/buildinf.h
index 3a9b3ad1526..5070d5067d9 100644
--- a/deps/openssl/config/archs/linux-armv4/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-armv4/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux-armv4"
-#define DATE "built on: Tue Jun 9 13:46:34 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:49:32 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-armv4/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-armv4/no-asm/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/linux-armv4/no-asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux-armv4/no-asm/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/linux-armv4/no-asm/include/openssl/ssl.h b/deps/openssl/config/archs/linux-armv4/no-asm/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/linux-armv4/no-asm/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/linux-armv4/no-asm/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/linux-elf/asm/configdata.pm b/deps/openssl/config/archs/linux-elf/asm/configdata.pm
index f7a66df824a..03e1819da92 100644
--- a/deps/openssl/config/archs/linux-elf/asm/configdata.pm
+++ b/deps/openssl/config/archs/linux-elf/asm/configdata.pm
@@ -174,7 +174,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -237,7 +237,7 @@ our %config = (
"openssl_sys_defines" => [],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -290,11 +290,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned int",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "linux-elf",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3303,6 +3303,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3339,6 +3342,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5997,6 +6003,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -6033,6 +6042,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13956,6 +13968,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -13992,6 +14007,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16650,6 +16668,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16686,6 +16707,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19384,6 +19408,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19396,6 +19421,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -23024,6 +23050,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -23036,6 +23063,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/linux-elf/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-elf/asm/crypto/buildinf.h
index 0b3c2aecb66..c3710245277 100644
--- a/deps/openssl/config/archs/linux-elf/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-elf/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux-elf"
-#define DATE "built on: Tue Jun 9 13:46:49 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:49:45 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-elf/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-elf/asm/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/linux-elf/asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux-elf/asm/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/linux-elf/asm/include/openssl/ssl.h b/deps/openssl/config/archs/linux-elf/asm/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/linux-elf/asm/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/linux-elf/asm/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/linux-elf/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux-elf/asm_avx2/configdata.pm
index d810a73e9c4..12d4c98f948 100644
--- a/deps/openssl/config/archs/linux-elf/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/linux-elf/asm_avx2/configdata.pm
@@ -174,7 +174,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -237,7 +237,7 @@ our %config = (
"openssl_sys_defines" => [],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -290,11 +290,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned int",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "linux-elf",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3303,6 +3303,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3339,6 +3342,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5997,6 +6003,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -6033,6 +6042,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13956,6 +13968,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -13992,6 +14007,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16650,6 +16668,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16686,6 +16707,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19384,6 +19408,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19396,6 +19421,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -23024,6 +23050,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -23036,6 +23063,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/linux-elf/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux-elf/asm_avx2/crypto/buildinf.h
index b63df9201c7..13e039be4c2 100644
--- a/deps/openssl/config/archs/linux-elf/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-elf/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux-elf"
-#define DATE "built on: Tue Jun 9 13:47:05 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:50:00 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-elf/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-elf/asm_avx2/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/linux-elf/asm_avx2/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux-elf/asm_avx2/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/linux-elf/asm_avx2/include/openssl/ssl.h b/deps/openssl/config/archs/linux-elf/asm_avx2/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/linux-elf/asm_avx2/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/linux-elf/asm_avx2/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/linux-elf/no-asm/configdata.pm b/deps/openssl/config/archs/linux-elf/no-asm/configdata.pm
index 41d35cf4b81..0d6fdd53090 100644
--- a/deps/openssl/config/archs/linux-elf/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/linux-elf/no-asm/configdata.pm
@@ -172,7 +172,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -236,7 +236,7 @@ our %config = (
"openssl_sys_defines" => [],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -290,11 +290,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned int",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "linux-elf",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3245,6 +3245,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3281,6 +3284,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5939,6 +5945,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -5975,6 +5984,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13876,6 +13888,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -13912,6 +13927,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16570,6 +16588,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16606,6 +16627,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19304,6 +19328,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19316,6 +19341,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -22941,6 +22967,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -22953,6 +22980,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/linux-elf/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-elf/no-asm/crypto/buildinf.h
index c76b3dd509a..d0225f48b51 100644
--- a/deps/openssl/config/archs/linux-elf/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-elf/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux-elf"
-#define DATE "built on: Tue Jun 9 13:47:21 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:50:14 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-elf/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-elf/no-asm/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/linux-elf/no-asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux-elf/no-asm/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/linux-elf/no-asm/include/openssl/ssl.h b/deps/openssl/config/archs/linux-elf/no-asm/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/linux-elf/no-asm/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/linux-elf/no-asm/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/linux-ppc64le/asm/configdata.pm b/deps/openssl/config/archs/linux-ppc64le/asm/configdata.pm
index 616f916f3d4..066b98de7fd 100644
--- a/deps/openssl/config/archs/linux-ppc64le/asm/configdata.pm
+++ b/deps/openssl/config/archs/linux-ppc64le/asm/configdata.pm
@@ -174,7 +174,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -237,7 +237,7 @@ our %config = (
"openssl_sys_defines" => [],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -290,11 +290,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned char",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "linux-ppc64le",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3283,6 +3283,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3319,6 +3322,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5977,6 +5983,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -6013,6 +6022,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13957,6 +13969,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -13993,6 +14008,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16651,6 +16669,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16687,6 +16708,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19385,6 +19409,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19397,6 +19422,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -23025,6 +23051,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -23037,6 +23064,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/linux-ppc64le/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-ppc64le/asm/crypto/buildinf.h
index 26a6ddd0e8d..5dab7070c3a 100644
--- a/deps/openssl/config/archs/linux-ppc64le/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-ppc64le/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux-ppc64le"
-#define DATE "built on: Tue Jun 9 13:48:33 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:51:20 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-ppc64le/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-ppc64le/asm/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/linux-ppc64le/asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux-ppc64le/asm/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/linux-ppc64le/asm/include/openssl/ssl.h b/deps/openssl/config/archs/linux-ppc64le/asm/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/linux-ppc64le/asm/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/linux-ppc64le/asm/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/linux-ppc64le/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux-ppc64le/asm_avx2/configdata.pm
index 012728153b2..1cdfed6236d 100644
--- a/deps/openssl/config/archs/linux-ppc64le/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/linux-ppc64le/asm_avx2/configdata.pm
@@ -174,7 +174,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -237,7 +237,7 @@ our %config = (
"openssl_sys_defines" => [],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -290,11 +290,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned char",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "linux-ppc64le",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3283,6 +3283,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3319,6 +3322,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5977,6 +5983,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -6013,6 +6022,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13957,6 +13969,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -13993,6 +14008,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16651,6 +16669,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16687,6 +16708,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19385,6 +19409,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19397,6 +19422,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -23025,6 +23051,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -23037,6 +23064,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/linux-ppc64le/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux-ppc64le/asm_avx2/crypto/buildinf.h
index 6c7d6236bac..5ca3773ff9a 100644
--- a/deps/openssl/config/archs/linux-ppc64le/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-ppc64le/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux-ppc64le"
-#define DATE "built on: Tue Jun 9 13:48:49 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:51:35 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-ppc64le/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-ppc64le/asm_avx2/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/linux-ppc64le/asm_avx2/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux-ppc64le/asm_avx2/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/linux-ppc64le/asm_avx2/include/openssl/ssl.h b/deps/openssl/config/archs/linux-ppc64le/asm_avx2/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/linux-ppc64le/asm_avx2/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/linux-ppc64le/asm_avx2/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/linux-ppc64le/no-asm/configdata.pm b/deps/openssl/config/archs/linux-ppc64le/no-asm/configdata.pm
index 2d400c2ed11..8d893212cb9 100644
--- a/deps/openssl/config/archs/linux-ppc64le/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/linux-ppc64le/no-asm/configdata.pm
@@ -172,7 +172,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -236,7 +236,7 @@ our %config = (
"openssl_sys_defines" => [],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -290,11 +290,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned char",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "linux-ppc64le",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3246,6 +3246,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3282,6 +3285,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5940,6 +5946,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -5976,6 +5985,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13877,6 +13889,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -13913,6 +13928,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16571,6 +16589,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16607,6 +16628,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19305,6 +19329,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19317,6 +19342,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -22942,6 +22968,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -22954,6 +22981,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/linux-ppc64le/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-ppc64le/no-asm/crypto/buildinf.h
index 5210fe4f0fa..7bb15f0815f 100644
--- a/deps/openssl/config/archs/linux-ppc64le/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-ppc64le/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux-ppc64le"
-#define DATE "built on: Tue Jun 9 13:49:05 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:51:49 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-ppc64le/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-ppc64le/no-asm/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/linux-ppc64le/no-asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux-ppc64le/no-asm/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/linux-ppc64le/no-asm/include/openssl/ssl.h b/deps/openssl/config/archs/linux-ppc64le/no-asm/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/linux-ppc64le/no-asm/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/linux-ppc64le/no-asm/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/linux-x86_64/asm/configdata.pm b/deps/openssl/config/archs/linux-x86_64/asm/configdata.pm
index 62f57d3ea3b..69a21719a74 100644
--- a/deps/openssl/config/archs/linux-x86_64/asm/configdata.pm
+++ b/deps/openssl/config/archs/linux-x86_64/asm/configdata.pm
@@ -174,7 +174,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -237,7 +237,7 @@ our %config = (
"openssl_sys_defines" => [],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -290,11 +290,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned int",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "linux-x86_64",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3311,6 +3311,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3347,6 +3350,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -6005,6 +6011,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -6041,6 +6050,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -14014,6 +14026,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -14050,6 +14065,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16708,6 +16726,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16744,6 +16765,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19442,6 +19466,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19454,6 +19479,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -23082,6 +23108,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -23094,6 +23121,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/linux-x86_64/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-x86_64/asm/crypto/buildinf.h
index 2e7e96d6ccb..dca96cddd3b 100644
--- a/deps/openssl/config/archs/linux-x86_64/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-x86_64/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux-x86_64"
-#define DATE "built on: Tue Jun 9 13:47:37 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:50:28 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-x86_64/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-x86_64/asm/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/linux-x86_64/asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux-x86_64/asm/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/linux-x86_64/asm/include/openssl/ssl.h b/deps/openssl/config/archs/linux-x86_64/asm/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/linux-x86_64/asm/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/linux-x86_64/asm/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/linux-x86_64/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux-x86_64/asm_avx2/configdata.pm
index 5f65dd44d9e..da58ac66e53 100644
--- a/deps/openssl/config/archs/linux-x86_64/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/linux-x86_64/asm_avx2/configdata.pm
@@ -174,7 +174,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -237,7 +237,7 @@ our %config = (
"openssl_sys_defines" => [],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -290,11 +290,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned int",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "linux-x86_64",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3311,6 +3311,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3347,6 +3350,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -6005,6 +6011,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -6041,6 +6050,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -14014,6 +14026,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -14050,6 +14065,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16708,6 +16726,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16744,6 +16765,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19442,6 +19466,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19454,6 +19479,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -23082,6 +23108,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -23094,6 +23121,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/linux-x86_64/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux-x86_64/asm_avx2/crypto/buildinf.h
index cec70baefc3..ebff9f267c7 100644
--- a/deps/openssl/config/archs/linux-x86_64/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-x86_64/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux-x86_64"
-#define DATE "built on: Tue Jun 9 13:47:59 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:50:50 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-x86_64/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-x86_64/asm_avx2/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/linux-x86_64/asm_avx2/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux-x86_64/asm_avx2/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/linux-x86_64/asm_avx2/include/openssl/ssl.h b/deps/openssl/config/archs/linux-x86_64/asm_avx2/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/linux-x86_64/asm_avx2/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/linux-x86_64/asm_avx2/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/linux-x86_64/no-asm/configdata.pm b/deps/openssl/config/archs/linux-x86_64/no-asm/configdata.pm
index 2b65efaba32..59f168a09ce 100644
--- a/deps/openssl/config/archs/linux-x86_64/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/linux-x86_64/no-asm/configdata.pm
@@ -172,7 +172,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -236,7 +236,7 @@ our %config = (
"openssl_sys_defines" => [],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -290,11 +290,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned int",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "linux-x86_64",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3247,6 +3247,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3283,6 +3286,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5941,6 +5947,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -5977,6 +5986,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13878,6 +13890,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -13914,6 +13929,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16572,6 +16590,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16608,6 +16629,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19306,6 +19330,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19318,6 +19343,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -22943,6 +22969,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -22955,6 +22982,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/linux-x86_64/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-x86_64/no-asm/crypto/buildinf.h
index 88913471e22..033229c0480 100644
--- a/deps/openssl/config/archs/linux-x86_64/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-x86_64/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux-x86_64"
-#define DATE "built on: Tue Jun 9 13:48:18 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:51:07 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-x86_64/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-x86_64/no-asm/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/linux-x86_64/no-asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux-x86_64/no-asm/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/linux-x86_64/no-asm/include/openssl/ssl.h b/deps/openssl/config/archs/linux-x86_64/no-asm/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/linux-x86_64/no-asm/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/linux-x86_64/no-asm/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/linux32-s390x/asm/configdata.pm b/deps/openssl/config/archs/linux32-s390x/asm/configdata.pm
index caf0472b685..61ef149360a 100644
--- a/deps/openssl/config/archs/linux32-s390x/asm/configdata.pm
+++ b/deps/openssl/config/archs/linux32-s390x/asm/configdata.pm
@@ -174,7 +174,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -237,7 +237,7 @@ our %config = (
"openssl_sys_defines" => [],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -290,11 +290,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned char",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "linux32-s390x",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3293,6 +3293,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3329,6 +3332,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5987,6 +5993,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -6023,6 +6032,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13940,6 +13952,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -13976,6 +13991,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16634,6 +16652,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16670,6 +16691,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19368,6 +19392,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19380,6 +19405,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -23062,6 +23088,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -23074,6 +23101,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/linux32-s390x/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux32-s390x/asm/crypto/buildinf.h
index 4f2e83eca8e..3fa3f3ce363 100644
--- a/deps/openssl/config/archs/linux32-s390x/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux32-s390x/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux32-s390x"
-#define DATE "built on: Tue Jun 9 13:49:20 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:52:02 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux32-s390x/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux32-s390x/asm/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/linux32-s390x/asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux32-s390x/asm/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/linux32-s390x/asm/include/openssl/ssl.h b/deps/openssl/config/archs/linux32-s390x/asm/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/linux32-s390x/asm/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/linux32-s390x/asm/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/linux32-s390x/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux32-s390x/asm_avx2/configdata.pm
index 2db43c5a779..9096c84f4a0 100644
--- a/deps/openssl/config/archs/linux32-s390x/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/linux32-s390x/asm_avx2/configdata.pm
@@ -174,7 +174,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -237,7 +237,7 @@ our %config = (
"openssl_sys_defines" => [],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -290,11 +290,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned char",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "linux32-s390x",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3293,6 +3293,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3329,6 +3332,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5987,6 +5993,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -6023,6 +6032,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13940,6 +13952,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -13976,6 +13991,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16634,6 +16652,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16670,6 +16691,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19368,6 +19392,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19380,6 +19405,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -23062,6 +23088,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -23074,6 +23101,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/linux32-s390x/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux32-s390x/asm_avx2/crypto/buildinf.h
index 7cbc7ca061f..6f4b5a5247a 100644
--- a/deps/openssl/config/archs/linux32-s390x/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux32-s390x/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux32-s390x"
-#define DATE "built on: Tue Jun 9 13:49:36 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:52:17 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux32-s390x/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/linux32-s390x/asm_avx2/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/linux32-s390x/asm_avx2/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux32-s390x/asm_avx2/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/linux32-s390x/asm_avx2/include/openssl/ssl.h b/deps/openssl/config/archs/linux32-s390x/asm_avx2/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/linux32-s390x/asm_avx2/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/linux32-s390x/asm_avx2/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/linux32-s390x/no-asm/configdata.pm b/deps/openssl/config/archs/linux32-s390x/no-asm/configdata.pm
index 40f4ee322e9..cd96e517948 100644
--- a/deps/openssl/config/archs/linux32-s390x/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/linux32-s390x/no-asm/configdata.pm
@@ -172,7 +172,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -236,7 +236,7 @@ our %config = (
"openssl_sys_defines" => [],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -290,11 +290,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned char",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "linux32-s390x",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3246,6 +3246,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3282,6 +3285,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5940,6 +5946,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -5976,6 +5985,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13877,6 +13889,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -13913,6 +13928,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16571,6 +16589,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16607,6 +16628,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19305,6 +19329,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19317,6 +19342,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -22942,6 +22968,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -22954,6 +22981,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/linux32-s390x/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux32-s390x/no-asm/crypto/buildinf.h
index 3f33a5ecb19..752efe893a7 100644
--- a/deps/openssl/config/archs/linux32-s390x/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux32-s390x/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux32-s390x"
-#define DATE "built on: Tue Jun 9 13:49:52 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:52:31 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux32-s390x/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux32-s390x/no-asm/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/linux32-s390x/no-asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux32-s390x/no-asm/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/linux32-s390x/no-asm/include/openssl/ssl.h b/deps/openssl/config/archs/linux32-s390x/no-asm/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/linux32-s390x/no-asm/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/linux32-s390x/no-asm/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/linux64-loongarch64/no-asm/configdata.pm b/deps/openssl/config/archs/linux64-loongarch64/no-asm/configdata.pm
index d3d53c25c9d..b88c1f3cb4a 100644
--- a/deps/openssl/config/archs/linux64-loongarch64/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/linux64-loongarch64/no-asm/configdata.pm
@@ -172,7 +172,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -236,7 +236,7 @@ our %config = (
"openssl_sys_defines" => [],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -290,11 +290,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned char",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "linux64-loongarch64",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3246,6 +3246,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3282,6 +3285,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5940,6 +5946,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -5976,6 +5985,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13877,6 +13889,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -13913,6 +13928,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16571,6 +16589,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16607,6 +16628,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19305,6 +19329,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19317,6 +19342,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -22942,6 +22968,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -22954,6 +22981,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/linux64-loongarch64/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux64-loongarch64/no-asm/crypto/buildinf.h
index d928a8c172a..8c61cb2e1fd 100644
--- a/deps/openssl/config/archs/linux64-loongarch64/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux64-loongarch64/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux64-loongarch64"
-#define DATE "built on: Tue Jun 9 13:55:26 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:58:07 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux64-loongarch64/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux64-loongarch64/no-asm/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/linux64-loongarch64/no-asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux64-loongarch64/no-asm/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/linux64-loongarch64/no-asm/include/openssl/ssl.h b/deps/openssl/config/archs/linux64-loongarch64/no-asm/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/linux64-loongarch64/no-asm/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/linux64-loongarch64/no-asm/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/linux64-mips64/asm/configdata.pm b/deps/openssl/config/archs/linux64-mips64/asm/configdata.pm
index 98c469dbe5c..be4d86b3e22 100644
--- a/deps/openssl/config/archs/linux64-mips64/asm/configdata.pm
+++ b/deps/openssl/config/archs/linux64-mips64/asm/configdata.pm
@@ -177,7 +177,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -240,7 +240,7 @@ our %config = (
"openssl_sys_defines" => [],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -293,11 +293,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned char",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "linux64-mips64",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3271,6 +3271,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3307,6 +3310,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5965,6 +5971,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -6001,6 +6010,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13911,6 +13923,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -13947,6 +13962,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16605,6 +16623,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16641,6 +16662,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19339,6 +19363,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19351,6 +19376,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -23018,6 +23044,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -23030,6 +23057,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/linux64-mips64/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux64-mips64/asm/crypto/buildinf.h
index c9d5e8f7fb5..18dff80e0b7 100644
--- a/deps/openssl/config/archs/linux64-mips64/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux64-mips64/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux64-mips64"
-#define DATE "built on: Tue Jun 9 13:50:54 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:53:26 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux64-mips64/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux64-mips64/asm/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/linux64-mips64/asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux64-mips64/asm/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/linux64-mips64/asm/include/openssl/ssl.h b/deps/openssl/config/archs/linux64-mips64/asm/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/linux64-mips64/asm/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/linux64-mips64/asm/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/linux64-mips64/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux64-mips64/asm_avx2/configdata.pm
index 3ff8c16edc5..23b768d2c18 100644
--- a/deps/openssl/config/archs/linux64-mips64/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/linux64-mips64/asm_avx2/configdata.pm
@@ -177,7 +177,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -240,7 +240,7 @@ our %config = (
"openssl_sys_defines" => [],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -293,11 +293,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned char",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "linux64-mips64",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3271,6 +3271,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3307,6 +3310,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5965,6 +5971,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -6001,6 +6010,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13911,6 +13923,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -13947,6 +13962,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16605,6 +16623,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16641,6 +16662,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19339,6 +19363,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19351,6 +19376,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -23018,6 +23044,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -23030,6 +23057,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/linux64-mips64/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux64-mips64/asm_avx2/crypto/buildinf.h
index 0d9116ce047..034f8433438 100644
--- a/deps/openssl/config/archs/linux64-mips64/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux64-mips64/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux64-mips64"
-#define DATE "built on: Tue Jun 9 13:51:09 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:53:40 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux64-mips64/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/linux64-mips64/asm_avx2/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/linux64-mips64/asm_avx2/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux64-mips64/asm_avx2/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/linux64-mips64/asm_avx2/include/openssl/ssl.h b/deps/openssl/config/archs/linux64-mips64/asm_avx2/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/linux64-mips64/asm_avx2/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/linux64-mips64/asm_avx2/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/linux64-mips64/no-asm/configdata.pm b/deps/openssl/config/archs/linux64-mips64/no-asm/configdata.pm
index 5fbd45d9968..7d929479f26 100644
--- a/deps/openssl/config/archs/linux64-mips64/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/linux64-mips64/no-asm/configdata.pm
@@ -172,7 +172,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -236,7 +236,7 @@ our %config = (
"openssl_sys_defines" => [],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -290,11 +290,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned char",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "linux64-mips64",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3247,6 +3247,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3283,6 +3286,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5941,6 +5947,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -5977,6 +5986,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13878,6 +13890,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -13914,6 +13929,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16572,6 +16590,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16608,6 +16629,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19306,6 +19330,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19318,6 +19343,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -22943,6 +22969,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -22955,6 +22982,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/linux64-mips64/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux64-mips64/no-asm/crypto/buildinf.h
index ee2af5fc9d1..62a90ec2793 100644
--- a/deps/openssl/config/archs/linux64-mips64/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux64-mips64/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux64-mips64"
-#define DATE "built on: Tue Jun 9 13:51:24 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:53:53 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux64-mips64/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux64-mips64/no-asm/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/linux64-mips64/no-asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux64-mips64/no-asm/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/linux64-mips64/no-asm/include/openssl/ssl.h b/deps/openssl/config/archs/linux64-mips64/no-asm/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/linux64-mips64/no-asm/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/linux64-mips64/no-asm/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/linux64-riscv64/no-asm/configdata.pm b/deps/openssl/config/archs/linux64-riscv64/no-asm/configdata.pm
index 63f5f2116a3..970794c89f9 100644
--- a/deps/openssl/config/archs/linux64-riscv64/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/linux64-riscv64/no-asm/configdata.pm
@@ -172,7 +172,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -236,7 +236,7 @@ our %config = (
"openssl_sys_defines" => [],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -290,11 +290,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned char",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "linux64-riscv64",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3246,6 +3246,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3282,6 +3285,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5940,6 +5946,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -5976,6 +5985,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13877,6 +13889,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -13913,6 +13928,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16571,6 +16589,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16607,6 +16628,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19305,6 +19329,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19317,6 +19342,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -22942,6 +22968,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -22954,6 +22981,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/linux64-riscv64/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux64-riscv64/no-asm/crypto/buildinf.h
index 3a66aa3545f..b18c9bbeaec 100644
--- a/deps/openssl/config/archs/linux64-riscv64/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux64-riscv64/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux64-riscv64"
-#define DATE "built on: Tue Jun 9 13:55:11 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:54:36 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux64-riscv64/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux64-riscv64/no-asm/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/linux64-riscv64/no-asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux64-riscv64/no-asm/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/linux64-riscv64/no-asm/include/openssl/ssl.h b/deps/openssl/config/archs/linux64-riscv64/no-asm/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/linux64-riscv64/no-asm/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/linux64-riscv64/no-asm/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/linux64-s390x/asm/configdata.pm b/deps/openssl/config/archs/linux64-s390x/asm/configdata.pm
index 03439cf7df2..0eaf48d81d2 100644
--- a/deps/openssl/config/archs/linux64-s390x/asm/configdata.pm
+++ b/deps/openssl/config/archs/linux64-s390x/asm/configdata.pm
@@ -174,7 +174,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -237,7 +237,7 @@ our %config = (
"openssl_sys_defines" => [],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -290,11 +290,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned char",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "linux64-s390x",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3298,6 +3298,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3334,6 +3337,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5992,6 +5998,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -6028,6 +6037,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13959,6 +13971,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -13995,6 +14010,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16653,6 +16671,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16689,6 +16710,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19387,6 +19411,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19399,6 +19424,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -23081,6 +23107,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -23093,6 +23120,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/linux64-s390x/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux64-s390x/asm/crypto/buildinf.h
index d7a932bfc17..9c0692b58fb 100644
--- a/deps/openssl/config/archs/linux64-s390x/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux64-s390x/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux64-s390x"
-#define DATE "built on: Tue Jun 9 13:50:07 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:52:44 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux64-s390x/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux64-s390x/asm/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/linux64-s390x/asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux64-s390x/asm/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/linux64-s390x/asm/include/openssl/ssl.h b/deps/openssl/config/archs/linux64-s390x/asm/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/linux64-s390x/asm/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/linux64-s390x/asm/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/linux64-s390x/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux64-s390x/asm_avx2/configdata.pm
index 2635c498490..d6ad88ef690 100644
--- a/deps/openssl/config/archs/linux64-s390x/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/linux64-s390x/asm_avx2/configdata.pm
@@ -174,7 +174,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -237,7 +237,7 @@ our %config = (
"openssl_sys_defines" => [],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -290,11 +290,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned char",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "linux64-s390x",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3298,6 +3298,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3334,6 +3337,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5992,6 +5998,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -6028,6 +6037,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13959,6 +13971,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -13995,6 +14010,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16653,6 +16671,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16689,6 +16710,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19387,6 +19411,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19399,6 +19424,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -23081,6 +23107,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -23093,6 +23120,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/linux64-s390x/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux64-s390x/asm_avx2/crypto/buildinf.h
index 29cf512556f..84df52b4853 100644
--- a/deps/openssl/config/archs/linux64-s390x/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux64-s390x/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux64-s390x"
-#define DATE "built on: Tue Jun 9 13:50:23 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:52:59 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux64-s390x/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/linux64-s390x/asm_avx2/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/linux64-s390x/asm_avx2/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux64-s390x/asm_avx2/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/linux64-s390x/asm_avx2/include/openssl/ssl.h b/deps/openssl/config/archs/linux64-s390x/asm_avx2/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/linux64-s390x/asm_avx2/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/linux64-s390x/asm_avx2/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/linux64-s390x/no-asm/configdata.pm b/deps/openssl/config/archs/linux64-s390x/no-asm/configdata.pm
index 8a386c88014..521e1cbc172 100644
--- a/deps/openssl/config/archs/linux64-s390x/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/linux64-s390x/no-asm/configdata.pm
@@ -172,7 +172,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -236,7 +236,7 @@ our %config = (
"openssl_sys_defines" => [],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -290,11 +290,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned char",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "linux64-s390x",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3247,6 +3247,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3283,6 +3286,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5941,6 +5947,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -5977,6 +5986,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13878,6 +13890,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -13914,6 +13929,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16572,6 +16590,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16608,6 +16629,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19306,6 +19330,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19318,6 +19343,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -22943,6 +22969,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -22955,6 +22982,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/linux64-s390x/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux64-s390x/no-asm/crypto/buildinf.h
index a6ecbf25011..6e1982cbeab 100644
--- a/deps/openssl/config/archs/linux64-s390x/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux64-s390x/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux64-s390x"
-#define DATE "built on: Tue Jun 9 13:50:39 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:53:13 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux64-s390x/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux64-s390x/no-asm/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/linux64-s390x/no-asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux64-s390x/no-asm/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/linux64-s390x/no-asm/include/openssl/ssl.h b/deps/openssl/config/archs/linux64-s390x/no-asm/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/linux64-s390x/no-asm/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/linux64-s390x/no-asm/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/solaris-x86-gcc/asm/configdata.pm b/deps/openssl/config/archs/solaris-x86-gcc/asm/configdata.pm
index ba3f77327b0..bfebc924971 100644
--- a/deps/openssl/config/archs/solaris-x86-gcc/asm/configdata.pm
+++ b/deps/openssl/config/archs/solaris-x86-gcc/asm/configdata.pm
@@ -171,7 +171,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -234,7 +234,7 @@ our %config = (
"openssl_sys_defines" => [],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -287,11 +287,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned int",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "solaris-x86-gcc",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3296,6 +3296,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3332,6 +3335,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5990,6 +5996,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -6026,6 +6035,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13949,6 +13961,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -13985,6 +14000,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16643,6 +16661,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16679,6 +16700,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19377,6 +19401,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19389,6 +19414,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -23017,6 +23043,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -23029,6 +23056,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/solaris-x86-gcc/asm/crypto/buildinf.h b/deps/openssl/config/archs/solaris-x86-gcc/asm/crypto/buildinf.h
index 70224fd8ed7..3524ca556fe 100644
--- a/deps/openssl/config/archs/solaris-x86-gcc/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/solaris-x86-gcc/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: solaris-x86-gcc"
-#define DATE "built on: Tue Jun 9 13:51:39 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:54:49 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/solaris-x86-gcc/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/solaris-x86-gcc/asm/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/solaris-x86-gcc/asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/solaris-x86-gcc/asm/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/solaris-x86-gcc/asm/include/openssl/ssl.h b/deps/openssl/config/archs/solaris-x86-gcc/asm/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/solaris-x86-gcc/asm/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/solaris-x86-gcc/asm/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/configdata.pm b/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/configdata.pm
index f2b42006bda..04aef2c0500 100644
--- a/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/configdata.pm
@@ -171,7 +171,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -234,7 +234,7 @@ our %config = (
"openssl_sys_defines" => [],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -287,11 +287,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned int",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "solaris-x86-gcc",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3296,6 +3296,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3332,6 +3335,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5990,6 +5996,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -6026,6 +6035,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13949,6 +13961,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -13985,6 +14000,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16643,6 +16661,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16679,6 +16700,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19377,6 +19401,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19389,6 +19414,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -23017,6 +23043,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -23029,6 +23056,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/crypto/buildinf.h
index 320636347b5..a3eb9df78ec 100644
--- a/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: solaris-x86-gcc"
-#define DATE "built on: Tue Jun 9 13:51:55 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:55:04 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/include/openssl/ssl.h b/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/solaris-x86-gcc/no-asm/configdata.pm b/deps/openssl/config/archs/solaris-x86-gcc/no-asm/configdata.pm
index 0715fda811f..ba9f09f0adb 100644
--- a/deps/openssl/config/archs/solaris-x86-gcc/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/solaris-x86-gcc/no-asm/configdata.pm
@@ -169,7 +169,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -233,7 +233,7 @@ our %config = (
"openssl_sys_defines" => [],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -287,11 +287,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned int",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "solaris-x86-gcc",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3238,6 +3238,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3274,6 +3277,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5932,6 +5938,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -5968,6 +5977,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13869,6 +13881,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -13905,6 +13920,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16563,6 +16581,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16599,6 +16620,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19297,6 +19321,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19309,6 +19334,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -22934,6 +22960,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -22946,6 +22973,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/solaris-x86-gcc/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/solaris-x86-gcc/no-asm/crypto/buildinf.h
index 585880aeee0..b1d9ca17b07 100644
--- a/deps/openssl/config/archs/solaris-x86-gcc/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/solaris-x86-gcc/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: solaris-x86-gcc"
-#define DATE "built on: Tue Jun 9 13:52:11 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:55:18 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/solaris-x86-gcc/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/solaris-x86-gcc/no-asm/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/solaris-x86-gcc/no-asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/solaris-x86-gcc/no-asm/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/solaris-x86-gcc/no-asm/include/openssl/ssl.h b/deps/openssl/config/archs/solaris-x86-gcc/no-asm/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/solaris-x86-gcc/no-asm/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/solaris-x86-gcc/no-asm/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/configdata.pm b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/configdata.pm
index 36eb2453ca8..3480822ef07 100644
--- a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/configdata.pm
+++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/configdata.pm
@@ -171,7 +171,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -234,7 +234,7 @@ our %config = (
"openssl_sys_defines" => [],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -287,11 +287,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned int",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "solaris64-x86_64-gcc",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3303,6 +3303,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3339,6 +3342,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5997,6 +6003,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -6033,6 +6042,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -14006,6 +14018,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -14042,6 +14057,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16700,6 +16718,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16736,6 +16757,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19434,6 +19458,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19446,6 +19471,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -23074,6 +23100,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -23086,6 +23113,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/crypto/buildinf.h b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/crypto/buildinf.h
index 6817188757d..f5945bdd213 100644
--- a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: solaris64-x86_64-gcc"
-#define DATE "built on: Tue Jun 9 13:52:27 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:55:32 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/include/openssl/ssl.h b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/configdata.pm b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/configdata.pm
index 587a86ba174..7ef0e6283e6 100644
--- a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/configdata.pm
@@ -171,7 +171,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -234,7 +234,7 @@ our %config = (
"openssl_sys_defines" => [],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -287,11 +287,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned int",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "solaris64-x86_64-gcc",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3303,6 +3303,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3339,6 +3342,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5997,6 +6003,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -6033,6 +6042,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -14006,6 +14018,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -14042,6 +14057,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16700,6 +16718,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16736,6 +16757,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19434,6 +19458,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19446,6 +19471,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -23074,6 +23100,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -23086,6 +23113,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/crypto/buildinf.h
index e3204a870bd..cd2608e896d 100644
--- a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: solaris64-x86_64-gcc"
-#define DATE "built on: Tue Jun 9 13:52:49 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:55:54 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/include/openssl/ssl.h b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/configdata.pm b/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/configdata.pm
index a7675cb85b0..692245cb510 100644
--- a/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/configdata.pm
@@ -169,7 +169,7 @@ our %config = (
],
"dynamic_engines" => "0",
"ex_libs" => [],
- "full_version" => "3.5.7",
+ "full_version" => "3.5.8",
"includes" => [],
"lflags" => [],
"lib_defines" => [
@@ -233,7 +233,7 @@ our %config = (
"openssl_sys_defines" => [],
"openssldir" => "",
"options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic",
- "patch" => "7",
+ "patch" => "8",
"perl_archname" => "x86_64-linux-gnu-thread-multi",
"perl_cmd" => "/usr/bin/perl",
"perl_version" => "5.34.0",
@@ -287,11 +287,11 @@ our %config = (
"prerelease" => "",
"processor" => "",
"rc4_int" => "unsigned int",
- "release_date" => "9 Jun 2026",
+ "release_date" => "25 Aug 2026",
"shlib_version" => "3",
"sourcedir" => ".",
"target" => "solaris64-x86_64-gcc",
- "version" => "3.5.7"
+ "version" => "3.5.8"
);
our %target = (
"AR" => "ar",
@@ -3239,6 +3239,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -3275,6 +3278,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -5933,6 +5939,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -5969,6 +5978,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -13870,6 +13882,9 @@ our %unified_info = (
"doc/html/man3/MDC2_Init.html" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/html/man3/NAME_CONSTRAINTS_check.html" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/html/man3/NCONF_new_ex.html" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -13906,6 +13921,9 @@ our %unified_info = (
"doc/html/man3/OPENSSL_LH_stats.html" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/html/man3/OPENSSL_armcap.html" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/html/man3/OPENSSL_config.html" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -16564,6 +16582,9 @@ our %unified_info = (
"doc/man/man3/MDC2_Init.3" => [
"doc/man3/MDC2_Init.pod"
],
+ "doc/man/man3/NAME_CONSTRAINTS_check.3" => [
+ "doc/man3/NAME_CONSTRAINTS_check.pod"
+ ],
"doc/man/man3/NCONF_new_ex.3" => [
"doc/man3/NCONF_new_ex.pod"
],
@@ -16600,6 +16621,9 @@ our %unified_info = (
"doc/man/man3/OPENSSL_LH_stats.3" => [
"doc/man3/OPENSSL_LH_stats.pod"
],
+ "doc/man/man3/OPENSSL_armcap.3" => [
+ "doc/man3/OPENSSL_armcap.pod"
+ ],
"doc/man/man3/OPENSSL_config.3" => [
"doc/man3/OPENSSL_config.pod"
],
@@ -19298,6 +19322,7 @@ our %unified_info = (
"doc/html/man3/HMAC.html",
"doc/html/man3/MD5.html",
"doc/html/man3/MDC2_Init.html",
+ "doc/html/man3/NAME_CONSTRAINTS_check.html",
"doc/html/man3/NCONF_new_ex.html",
"doc/html/man3/OBJ_nid2obj.html",
"doc/html/man3/OCSP_REQUEST_new.html",
@@ -19310,6 +19335,7 @@ our %unified_info = (
"doc/html/man3/OPENSSL_FILE.html",
"doc/html/man3/OPENSSL_LH_COMPFUNC.html",
"doc/html/man3/OPENSSL_LH_stats.html",
+ "doc/html/man3/OPENSSL_armcap.html",
"doc/html/man3/OPENSSL_config.html",
"doc/html/man3/OPENSSL_fork_prepare.html",
"doc/html/man3/OPENSSL_gmtime.html",
@@ -22935,6 +22961,7 @@ our %unified_info = (
"doc/man/man3/HMAC.3",
"doc/man/man3/MD5.3",
"doc/man/man3/MDC2_Init.3",
+ "doc/man/man3/NAME_CONSTRAINTS_check.3",
"doc/man/man3/NCONF_new_ex.3",
"doc/man/man3/OBJ_nid2obj.3",
"doc/man/man3/OCSP_REQUEST_new.3",
@@ -22947,6 +22974,7 @@ our %unified_info = (
"doc/man/man3/OPENSSL_FILE.3",
"doc/man/man3/OPENSSL_LH_COMPFUNC.3",
"doc/man/man3/OPENSSL_LH_stats.3",
+ "doc/man/man3/OPENSSL_armcap.3",
"doc/man/man3/OPENSSL_config.3",
"doc/man/man3/OPENSSL_fork_prepare.3",
"doc/man/man3/OPENSSL_gmtime.3",
diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/crypto/buildinf.h
index f1f11cc3e37..412fda4e443 100644
--- a/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: solaris64-x86_64-gcc"
-#define DATE "built on: Tue Jun 9 13:53:08 2026 UTC"
+#define DATE "built on: Tue Aug 25 12:56:11 2026 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/include/openssl/opensslv.h
index 8e9329bcc0d..1555e59c04c 100644
--- a/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/include/openssl/opensslv.h
@@ -34,7 +34,7 @@ extern "C" {
# define OPENSSL_VERSION_MINOR 5
/* clang-format on */
/* clang-format off */
-# define OPENSSL_VERSION_PATCH 7
+# define OPENSSL_VERSION_PATCH 8
/* clang-format on */
/*
@@ -87,10 +87,10 @@ extern "C" {
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
*/
/* clang-format off */
-# define OPENSSL_VERSION_STR "3.5.7"
+# define OPENSSL_VERSION_STR "3.5.8"
/* clang-format on */
/* clang-format off */
-# define OPENSSL_FULL_VERSION_STR "3.5.7"
+# define OPENSSL_FULL_VERSION_STR "3.5.8"
/* clang-format on */
/*
@@ -99,7 +99,7 @@ extern "C" {
* These strings are defined separately to allow them to be parsable.
*/
/* clang-format off */
-# define OPENSSL_RELEASE_DATE "9 Jun 2026"
+# define OPENSSL_RELEASE_DATE "25 Aug 2026"
/* clang-format on */
/*
@@ -107,7 +107,7 @@ extern "C" {
*/
/* clang-format off */
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.8 25 Aug 2026"
/* clang-format on */
/* clang-format off */
diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/include/openssl/ssl.h b/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/include/openssl/ssl.h
index eaeeea7d10b..4460f0493d6 100644
--- a/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/include/openssl/ssl.h
+++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/include/openssl/ssl.h
@@ -2488,6 +2488,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2735,8 +2736,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2775,12 +2786,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/openssl/CHANGES.md b/deps/openssl/openssl/CHANGES.md
index c1c29eb55f0..b440f013313 100644
--- a/deps/openssl/openssl/CHANGES.md
+++ b/deps/openssl/openssl/CHANGES.md
@@ -28,6 +28,237 @@ OpenSSL Releases
OpenSSL 3.5
-----------
+### Changes between 3.5.7 and 3.5.8 [25 Aug 2026]
+
+ * Fixed QUIC server being able to trigger double free when processing `INITIAL`
+ packet.
+
+ Severity: Moderate
+
+ Issue summary: QUIC server may double free QRX (QUIC record layer RX) object
+ when channel creation fails for initial packet.
+
+ Impact summary: Double free leads to heap corruption, which typically results
+ in termination of QUIC server process, leading to a Denial of Service.
+ There is so far no evidence that this double free is exploitable for remote
+ code execution, thus it is considered highly improbable.
+
+ Reported by: Fuzz0x (ZKSC Institute of Security Research), Emilio Galle,
+ and Feng Xue (ThreatBoon).
+
+ ([CVE-2026-18798])
+
+ *Alexandr Nedvědický*
+
+ * Fixed heap buffer overflow in CMS key unwrapping.
+
+ Severity: Moderate
+
+ Issue summary: OpenSSL CMS decryption sizes the key-unwrap output buffer
+ based on querying the unwrapped key size, but the AES-WRAP-PAD unwrap
+ primitive can write and cleanse more bytes than that query reports, causing
+ an 8-byte out-of-bounds heap write.
+
+ Impact summary: An attacker who supplies a crafted CMS message can trigger
+ a deterministic 8-byte out-of-bounds heap write when the victim decrypts it
+ with `CMS_decrypt()`, corrupting the heap and typically resulting in a Denial
+ of Service.
+
+ Reported by: Bhabani Sankar Das and Filipe Casal (Trail of Bits).
+
+ ([CVE-2026-63072])
+
+ *Daniel Kubec*
+
+ * Fixed invalid pointer dereference in CMP server via crafted `protectionAlg`.
+
+ Severity: Moderate
+
+ Issue Summary: The OpenSSL Certificate Management Protocol (CMP)
+ password-based protection verification only checks whether
+ the `protectionAlg` parameter was not NULL and not its ASN.1 type,
+ before treating it as a `PBMParameter`. A crafted message can contain
+ a parameter of a different type, which is then dereferenced as an invalid
+ pointer.
+
+ Impact summary: A remote, unauthenticated attacker can crash an application
+ acting as a CMP server that accepts PBM-protected messages, or a CMP client
+ talking to a malicious or intercepted CMP server, resulting in a Denial
+ of Service.
+
+ Reported by: Ying Dong and Bhabani Sankar Das.
+
+ ([CVE-2026-63076])
+
+ *Daniel Kubec*
+
+ * Fixed unbounded memory growth in QUIC server incoming channel queue.
+
+ Severity: Low
+
+ Issue summary: When an OpenSSL QUIC server (Listener SSL object) processes
+ valid QUIC Initial packets for unknown destination connection IDs, it can
+ allocate and queue new incoming channels without enforcing any limit.
+
+ Impact summary: A remote peer that can make many `INITIAL` packets reach
+ the server listener faster than the application accepts connections can
+ cause the memory allocated to store the per-channel state to grow
+ without any limits, potentially making the QUIC listener unavailable
+ and causing a Denial of Service.
+
+ Reported by: Filipe Casal (Trail of Bits) in collaboration with OpenAI.
+
+ ([CVE-2026-14456])
+
+
+ *Filipe Casal*
+
+ * Fixed RPK server signature algorithm selection being able to dereference
+ a missing certificate.
+
+ Severity: Low
+
+ Issue summary: In a server or client configuration with [RFC 7250] Raw Public
+ Keys (RPKs) enabled, and only the private key (with no associated
+ certificate) configured locally, a NULL pointer dereference may occur
+ when the remote peer solicits raw public keys and also sends the typically
+ omitted `signature_algorithms_cert` TLS extension.
+
+ Impact summary: The impact is limited to a possible Denial of Service
+ as a result of an application abort, no data disclosure or remote command
+ execution are possible.
+
+ Reported by: Filipe Casal (Trail of Bits) in collaboration with OpenAI.
+
+ ([CVE-2026-14457])
+
+ *Viktor Dukhovni*
+
+ * Fixed excessive memory use buffering DTLS records for a future epoch.
+
+ Severity: Low
+
+ Issue summary: Receiving a DTLS record for a future epoch while a handshake
+ is in progress causes OpenSSL to buffer far more memory than the record
+ itself requires.
+
+ Impact summary: A peer can use a small amount of network traffic to make
+ an OpenSSL DTLS endpoint retain a disproportionately large amount of memory,
+ which may lead to a Denial of Service.
+
+ Reported by: Amazon Web Services.
+
+ ([CVE-2026-54874])
+
+ *Matt Caswell*
+
+ * Fixed untrusted Sender DN being used as a format string in CMP response
+ validation.
+
+ Severity: Low
+
+ Issue Summary: The OpenSSL Certificate Management Protocol (CMP) response
+ validation passed an unexpected response sender distinguished name directly
+ as the format string to `ERR_raise_data()`.
+
+ Impact summary: A malicious or intercepted CMP endpoint can crash a CMP
+ client that enforces an expected sender or uses a pinned server certificate
+ whose subject becomes the default expected sender.
+
+ Reported by: Filipe Casal (Trail of Bits) in collaboration with OpenAI,
+ Brandon Luo, and TrendAI Zero Day Initiative.
+
+ ([CVE-2026-63073])
+
+ *Filipe Casal*
+
+ * Fixed CMP indefinite cache growth of `extraCerts`.
+
+ Severity: Low
+
+ Issue Summary: The OpenSSL Certificate Management Protocol (CMP) caches
+ additional certificates (`extraCerts`) sent in a CMP message, but never
+ expunges them (for instance, if they are invalid). If a server reuses
+ an `OSSL_CMP_CTX` object frequently, this cache of `extraCerts` may grow
+ unboundedly, and a malicious client may flood a CMP server with requests
+ driving this growth.
+
+ Impact Summary: Users utilizing a CMP server that reuses a single
+ `OSSL_CMP_CTX` object for the lifetime of a server process may observe
+ unbounded memory growth in the event a malicious client repeatedly sends
+ requests containing unique extra certificates, which may lead to OOM
+ conditions.
+
+ Reported by: Pavol Zacik (Red Hat).
+
+ ([CVE-2026-63074])
+
+ *Neil Horman*
+
+ * Fixed QUIC ACK-only packet retention being able to cause memory exhaustion.
+
+ Severity: Low
+
+ Issue Summary: When OpenSSL processes QUIC traffic from a peer
+ that repeatedly sends ACK-eliciting packets while not acknowledging ACK-only
+ responses, the QUIC stack can retain ACK-only packet metadata
+ for the lifetime of the connection.
+
+ Impact Summary: A remote peer that can complete a QUIC handshake can cause
+ connection-scoped memory growth, which may lead to a Denial of Service
+ through memory exhaustion, especially with sustained traffic or many
+ concurrent QUIC connections.
+
+ Reported by: Opal Wright (Trail of Bits).
+
+ ([CVE-2026-63075])
+
+ *Neil Horman*
+
+ * Fixed possibility of AEAD forgeries with empty ciphertext when using
+ `EVP_Cipher()`.
+
+ Severity: Low
+
+ Issue summary: ChaCha20-Poly1305 and AES-OCB decryption with an empty
+ ciphertext can report success without verifying the supplied authentication
+ tag when the operation is finalized by calling the `EVP_Cipher()` function.
+
+ Impact summary: Applications calling `EVP_Cipher()` on an empty ciphertext
+ and expecting the call to check the AEAD tag may accept forged messages.
+
+ Reported by: Billy Brumley (Rochester Institute of Technology).
+
+ ([CVE-2026-75803])
+
+
+ *Billy Bob Brumley*
+
+ * Added `OPENSSL_armcap(3)` documentation page.
+
+
+ *Paul Elliott*
+
+ * Added support for selecting assembly code paths for LLVM-based Intel's `icx`
+ compiler.
+
+
+ *Wolfgang Beck*
+
+ * Updated compliance with TLS 1.3 session ticket lifetime requirements.
+ TLS 1.3 clients now cap `ticket_lifetime_hint` to 7 days (604800 seconds)
+ when processing new session ticket messages, in accordance
+ with [RFC 8446 Section 4.6.1].
+
+
+ *Abel Thomas*
+
+ * Fixed checking of authentication tags for empty ciphertexts for AEAD ciphers
+ in CCM cipher mode.
+
+
+ *Mounir IDRASSI*
+
### Changes between 3.5.6 and 3.5.7 [9 Jun 2026]
* Fixed heap use-after-free in `PKCS7_verify()`.
@@ -306,6 +537,21 @@ OpenSSL 3.5
*Dmitry Belyavskiy (Red Hat)*
+ * Fixed excessive allocation of the handshake message buffer (aka HollowByte).
+
+ Previously, we would allocate a buffer large enough to hold the full size of
+ an incoming handshake message as advertised by the peer. This could be quite
+ large (although it is bounded, e.g. for ClientHello this is approximately
+ 128 KiB). If the peer then fails to send the full handshake message, then the
+ endpoint is left waiting for the remainder of the message to arrive and the
+ memory is still allocated (i.e. a Slowloris attack). To prevent this, we
+ incrementally grow the buffer as we receive the data.
+
+ This issue was reported by Okta Red Team.
+
+
+ *Matt Caswell*
+
* Fixed TLS 1.3 server not sending `NewSessionTicket` message
after ciphersuite mismatch.
@@ -22260,6 +22506,9 @@ ndif
[CVE-2026-2673]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-2673
[CVE-2026-7383]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-7383
[CVE-2026-9076]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-9076
+[CVE-2026-14456]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-14456
+[CVE-2026-14457]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-14457
+[CVE-2026-18798]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-18798
[CVE-2026-22795]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-22795
[CVE-2026-22796]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-22796
[CVE-2026-28387]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-28387
@@ -22281,9 +22530,18 @@ ndif
[CVE-2026-45445]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-45445
[CVE-2026-45446]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-45446
[CVE-2026-45447]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-45447
+[CVE-2026-54874]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-54874
+[CVE-2026-63072]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-63072
+[CVE-2026-63073]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-63073
+[CVE-2026-63074]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-63074
+[CVE-2026-63075]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-63075
+[CVE-2026-63076]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-63076
+[CVE-2026-75803]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-75803
[ESV]: https://csrc.nist.gov/Projects/cryptographic-module-validation-program/entropy-validations
[RFC 2578 (STD 58), section 3.5]: https://datatracker.ietf.org/doc/html/rfc2578#section-3.5
[RFC 3211]: https://datatracker.ietf.org/doc/html/rfc3211
[RFC 5297]: https://datatracker.ietf.org/doc/html/rfc5297
+[RFC 7250]: https://datatracker.ietf.org/doc/html/rfc7250
[RFC 8446]: https://datatracker.ietf.org/doc/html/rfc8446
+[RFC 8446 Section 4.6.1]: https://datatracker.ietf.org/doc/html/rfc8446#section-4.6.1
[RFC 8452]: https://datatracker.ietf.org/doc/html/rfc8452
diff --git a/deps/openssl/openssl/CONTRIBUTING.md b/deps/openssl/openssl/CONTRIBUTING.md
index 06dfbaeff1f..8a0d40524dd 100644
--- a/deps/openssl/openssl/CONTRIBUTING.md
+++ b/deps/openssl/openssl/CONTRIBUTING.md
@@ -70,7 +70,37 @@ guidelines:
git push -f [ []]
```
- 2. All source files should start with the following text (with
+ 2. Similarly, if a non-trivial portion of a contribution was created
+ using an AI tool, you must declare which agent and model were used.
+ This is done by adding `Assisted-by: {agent}:{model}` below the commit
+ message:
+
+ ```
+ One-line summary of change with AI-generated portions
+
+ Assisted-by: Claude:claude-sonnet-4-6
+ ```
+
+ Multiple Assisted-by trailers can be included if multiple tools were used:
+
+ ```
+ Assisted-by: Claude:claude-sonnet-4-6
+ Assisted-by: ChatGPT:gpt-4o
+ Assisted-by: GitHub Copilot:gpt-4.1
+ ```
+
+ You will need to have signed a v1.1 or later CLA in order to
+ include AI-generated content in your contribution. CLAs signed
+ after June 2026 will have the requisite clauses.
+
+ Consult the [OpenSSL AI Code and Documentation Contribution
+ Policy] if an AI model assisted with the creation of your
+ contribution.
+
+ [OpenSSL AI Code and Documentation Contribution
+ Policy]:
+
+ 3. All source files should start with the following text (with
appropriate comment characters at the start of each line and the
year(s) updated):
@@ -83,11 +113,11 @@ guidelines:
https://www.openssl.org/source/license.html
```
- 3. Patches should be as current as possible; expect to have to rebase
+ 4. Patches should be as current as possible; expect to have to rebase
often. We do not accept merge commits, you will have to remove them
(usually by rebasing) before it will be acceptable.
- 4. Code provided should follow our [coding style] and [documentation policy]
+ 5. Code provided should follow our [coding style] and [documentation policy]
and compile without warnings.
There is a [Perl tool](util/check-format.pl) that helps
finding code formatting mistakes and other coding style nits.
@@ -100,16 +130,16 @@ guidelines:
[coding style]: https://openssl-library.org/policies/technical/coding-style/
[documentation policy]: https://openssl-library.org/policies/technical/documentation-policy/
- 5. When at all possible, code contributions should include tests. These can
+ 6. When at all possible, code contributions should include tests. These can
either be added to an existing test, or completely new. Please see
[test/README.md](test/README.md) for information on the test framework.
- 6. New features or changed functionality must include
+ 7. New features or changed functionality must include
documentation. Please look at the `.pod` files in `doc/man[1357]` for
examples of our style. Run `make doc-nits` to make sure that your
documentation changes are clean.
- 7. For user visible changes (API changes, behaviour changes, ...),
+ 8. For user visible changes (API changes, behaviour changes, ...),
consider adding a note in [CHANGES.md](CHANGES.md).
This could be a summarising description of the change, and could
explain the grander details.
@@ -120,5 +150,5 @@ guidelines:
with a specific release without having to sift through the higher
noise ratio in git-log.
- 8. Guidelines on how to integrate error output of new crypto library modules
+ 9. Guidelines on how to integrate error output of new crypto library modules
can be found in [crypto/err/README.md](crypto/err/README.md).
diff --git a/deps/openssl/openssl/NEWS.md b/deps/openssl/openssl/NEWS.md
index 04d0bd72c7f..329b1772c34 100644
--- a/deps/openssl/openssl/NEWS.md
+++ b/deps/openssl/openssl/NEWS.md
@@ -23,6 +23,50 @@ OpenSSL Releases
OpenSSL 3.5
-----------
+### Major changes between OpenSSL 3.5.7 and OpenSSL 3.5.8 [25 Aug 2026]
+
+OpenSSL 3.5.8 is a security patch release. The most severe CVE fixed
+in this release is Moderate.
+
+This release incorporates the following bug fixes and mitigations:
+
+ * Fixed QUIC server being able to trigger double free when processing
+ `INITIAL` packet.
+ ([CVE-2026-18798])
+
+ * Fixed heap buffer overflow in CMS key unwrapping.
+ ([CVE-2026-63072])
+
+ * Fixed invalid pointer dereference in CMP server via crafted `protectionAlg`.
+ ([CVE-2026-63076])
+
+ * Fixed unbounded memory growth in QUIC server incoming channel queue.
+ ([CVE-2026-14456])
+
+ * Fixed RPK server signature algorithm selection being able to dereference
+ a missing certificate.
+ ([CVE-2026-14457])
+
+ * Fixed excessive memory use buffering DTLS records for a future epoch.
+ ([CVE-2026-54874])
+
+ * Fixed untrusted Sender DN being used as a format string in CMP response
+ validation.
+ ([CVE-2026-63073])
+
+ * Fixed CMP indefinite cache growth of `extraCerts`.
+ ([CVE-2026-63074])
+
+ * Fixed QUIC ACK-only packet retention being able to cause memory exhaustion.
+ ([CVE-2026-63075])
+
+ * Fixed possibility of AEAD forgeries with empty ciphertext when using
+ `EVP_Cipher()`.
+ ([CVE-2026-75803])
+
+ * Fixed checking of authentication tags for empty ciphertexts for AEAD ciphers
+ in CCM cipher mode.
+
### Major changes between OpenSSL 3.5.6 and OpenSSL 3.5.7 [9 Jun 2026]
OpenSSL 3.5.7 is a security patch release. The most severe CVE fixed
@@ -78,6 +122,8 @@ This release incorporates the following bug fixes and mitigations:
and AES-SIV modes.
([CVE-2026-45446])
+ * Fixed excessive allocation of the handshake message buffer (aka HollowByte).
+
### Major changes between OpenSSL 3.5.5 and OpenSSL 3.5.6 [7 Apr 2026]
OpenSSL 3.5.6 is a security patch release. The most severe CVE fixed in this
@@ -2267,6 +2313,9 @@ OpenSSL 0.9.x
[CVE-2026-2673]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-2673
[CVE-2026-7383]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-7383
[CVE-2026-9076]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-9076
+[CVE-2026-14456]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-14456
+[CVE-2026-14457]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-14457
+[CVE-2026-18798]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-18798
[CVE-2026-22795]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-22795
[CVE-2026-22796]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-22796
[CVE-2026-28387]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-28387
@@ -2288,6 +2337,13 @@ OpenSSL 0.9.x
[CVE-2026-45445]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-45445
[CVE-2026-45446]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-45446
[CVE-2026-45447]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-45447
+[CVE-2026-54874]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-54874
+[CVE-2026-63072]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-63072
+[CVE-2026-63073]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-63073
+[CVE-2026-63074]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-63074
+[CVE-2026-63075]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-63075
+[CVE-2026-63076]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-63076
+[CVE-2026-75803]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-75803
[ESV]: https://csrc.nist.gov/Projects/cryptographic-module-validation-program/entropy-validations
[OpenSSL Guide]: https://www.openssl.org/docs/manmaster/man7/ossl-guide-introduction.html
[README-QUIC.md]: ./README-QUIC.md
diff --git a/deps/openssl/openssl/README-FIPS.md b/deps/openssl/openssl/README-FIPS.md
index b31f8c65304..feb6892a2c4 100644
--- a/deps/openssl/openssl/README-FIPS.md
+++ b/deps/openssl/openssl/README-FIPS.md
@@ -32,11 +32,15 @@ Installing the FIPS provider
============================
In order to be FIPS compliant you must only use FIPS validated source code.
-Refer to for information related to
+Refer to for information related to
which versions are FIPS validated. The instructions given below build OpenSSL
-just using the FIPS validated source code. Any FIPS validated version may be
-used with any other openssl library. Please see
-To determine which FIPS validated library version may be appropriate for you.
+just using the FIPS validated source code. A FIPS provider built from any
+validated version may be used together with an OpenSSL library built from any
+supported release from OpenSSL 3.0 onwards; provider compatibility is
+maintained backward and forward across these releases, including future major
+release series, for as long as the module remains supported. Please see
+
+to determine which FIPS validated library version may be appropriate for you.
If you want to use a validated FIPS provider, but also want to use the latest
OpenSSL release to build everything else, then refer to the next section.
diff --git a/deps/openssl/openssl/VERSION.dat b/deps/openssl/openssl/VERSION.dat
index a297eee91e1..bf654c1a771 100644
--- a/deps/openssl/openssl/VERSION.dat
+++ b/deps/openssl/openssl/VERSION.dat
@@ -1,7 +1,7 @@
MAJOR=3
MINOR=5
-PATCH=7
+PATCH=8
PRE_RELEASE_TAG=
BUILD_METADATA=
-RELEASE_DATE="9 Jun 2026"
+RELEASE_DATE="25 Aug 2026"
SHLIB_VERSION=3
diff --git a/deps/openssl/openssl/apps/lib/apps.c b/deps/openssl/openssl/apps/lib/apps.c
index e5a2b162b4e..29dd6514f6d 100644
--- a/deps/openssl/openssl/apps/lib/apps.c
+++ b/deps/openssl/openssl/apps/lib/apps.c
@@ -1688,11 +1688,18 @@ CA_DB *load_index(const char *dbfile, DB_ATTR *db_attr)
goto err;
#ifndef OPENSSL_NO_POSIX_IO
- BIO_get_fp(in, &dbfp);
- if (fstat(fileno(dbfp), &dbst) == -1) {
- ERR_raise_data(ERR_LIB_SYS, errno,
- "calling fstat(%s)", dbfile);
- goto err;
+ if (BIO_get_fp(in, &dbfp) > 0 && dbfp != NULL) {
+ if (fstat(fileno(dbfp), &dbst) == -1) {
+ ERR_raise_data(ERR_LIB_SYS, errno,
+ "calling fstat(%s)", dbfile);
+ goto err;
+ }
+ } else {
+ if (stat(dbfile, &dbst) == -1) {
+ ERR_raise_data(ERR_LIB_SYS, errno,
+ "calling stat(%s)", dbfile);
+ goto err;
+ }
}
#endif
@@ -1722,8 +1729,14 @@ CA_DB *load_index(const char *dbfile, DB_ATTR *db_attr)
}
retdb->dbfname = OPENSSL_strdup(dbfile);
- if (retdb->dbfname == NULL)
+ if (retdb->dbfname == NULL) {
+ TXT_DB_free(retdb->db);
+ retdb->db = NULL;
+ OPENSSL_free(retdb);
+ retdb = NULL;
+ ERR_raise_data(ERR_LIB_SYS, errno, "Out of memory while copying filename: %s", dbfile);
goto err;
+ }
#ifndef OPENSSL_NO_POSIX_IO
retdb->dbst = dbst;
diff --git a/deps/openssl/openssl/apps/lib/s_cb.c b/deps/openssl/openssl/apps/lib/s_cb.c
index 80b5c655542..760ad010988 100644
--- a/deps/openssl/openssl/apps/lib/s_cb.c
+++ b/deps/openssl/openssl/apps/lib/s_cb.c
@@ -1,5 +1,5 @@
/*
- * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -1461,10 +1461,7 @@ static STRINT_PAIR callback_types[] = {
{ "Signature Algorithm mask", SSL_SECOP_SIGALG_MASK },
{ "Certificate chain EE key", SSL_SECOP_EE_KEY },
{ "Certificate chain CA key", SSL_SECOP_CA_KEY },
- { "Peer Chain EE key", SSL_SECOP_PEER_EE_KEY },
- { "Peer Chain CA key", SSL_SECOP_PEER_CA_KEY },
{ "Certificate chain CA digest", SSL_SECOP_CA_MD },
- { "Peer chain CA digest", SSL_SECOP_PEER_CA_MD },
{ "SSL compression", SSL_SECOP_COMPRESSION },
{ "Session ticket", SSL_SECOP_TICKET },
{ NULL }
@@ -1498,7 +1495,6 @@ static int security_callback_debug(const SSL *s, const SSL_CTX *ctx,
show_nm = 0;
break;
case SSL_SECOP_CA_MD:
- case SSL_SECOP_PEER_CA_MD:
cert_md = 1;
break;
case SSL_SECOP_SIGALG_SUPPORTED:
diff --git a/deps/openssl/openssl/apps/lib/vms_term_sock.c b/deps/openssl/openssl/apps/lib/vms_term_sock.c
index faceb05d014..15bc6665694 100644
--- a/deps/openssl/openssl/apps/lib/vms_term_sock.c
+++ b/deps/openssl/openssl/apps/lib/vms_term_sock.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2016-2022 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2016-2026 The OpenSSL Project Authors. All Rights Reserved.
* Copyright 2016 VMS Software, Inc. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
@@ -230,6 +230,7 @@ int TerminalSocket(int FunctionCode, int *ReturnSocket)
LogMessage("TerminalSocket: SYS$QIO () - %08X", status);
close(TerminalSocketPair[0]);
close(TerminalSocketPair[1]);
+ sys$dassgn(TerminalDeviceChan);
return TERM_SOCK_FAILURE;
}
@@ -248,6 +249,7 @@ int TerminalSocket(int FunctionCode, int *ReturnSocket)
LogMessage("TerminalSocket: SYS$CANCEL () - %08X", status);
close(TerminalSocketPair[0]);
close(TerminalSocketPair[1]);
+ sys$dassgn(TerminalDeviceChan);
return TERM_SOCK_FAILURE;
}
diff --git a/deps/openssl/openssl/apps/s_client.c b/deps/openssl/openssl/apps/s_client.c
index 9b88d6dfbc8..b3f333a6993 100644
--- a/deps/openssl/openssl/apps/s_client.c
+++ b/deps/openssl/openssl/apps/s_client.c
@@ -2846,11 +2846,9 @@ int s_client_main(int argc, char **argv)
}
/*
* According to RFC 5804 § 2.2, response codes are case-
- * insensitive, make it uppercase but preserve the response.
+ * insensitive.
*/
- strncpy(sbuf, mbuf, 2);
- make_uppercase(sbuf);
- if (!HAS_PREFIX(sbuf, "OK")) {
+ if (OPENSSL_strncasecmp(mbuf, "OK", 2) != 0) {
BIO_printf(bio_err, "STARTTLS not supported: %s", mbuf);
goto shut;
}
@@ -3349,29 +3347,32 @@ int s_client_main(int argc, char **argv)
print_stuff(bio_c_out, con, full_log);
do_ssl_shutdown(con);
- /*
- * If we ended with an alert being sent, but still with data in the
- * network buffer to be read, then calling BIO_closesocket() will
- * result in a TCP-RST being sent. On some platforms (notably
- * Windows) then this will result in the peer immediately abandoning
- * the connection including any buffered alert data before it has
- * had a chance to be read. Shutting down the sending side first,
- * and then closing the socket sends TCP-FIN first followed by
- * TCP-RST. This seems to allow the peer to read the alert data.
- */
- shutdown(SSL_get_fd(con), 1); /* SHUT_WR */
- /*
- * We just said we have nothing else to say, but it doesn't mean that
- * the other side has nothing. It's even recommended to consume incoming
- * data. [In testing context this ensures that alerts are passed on...]
- */
- timeout.tv_sec = 0;
- timeout.tv_usec = 500000; /* some extreme round-trip */
- do {
- FD_ZERO(&readfds);
- openssl_fdset(sock, &readfds);
- } while (select(sock + 1, &readfds, NULL, NULL, &timeout) > 0
- && BIO_read(sbio, sbuf, BUFSIZZ) > 0);
+ /* The following half-close/drain workaround is TCP-specific. */
+ if (!isdtls && !isquic) {
+ /*
+ * If we ended with an alert being sent, but still with data in the
+ * network buffer to be read, then calling BIO_closesocket() will
+ * result in a TCP-RST being sent. On some platforms (notably
+ * Windows) then this will result in the peer immediately abandoning
+ * the connection including any buffered alert data before it has
+ * had a chance to be read. Shutting down the sending side first,
+ * and then closing the socket sends TCP-FIN first followed by
+ * TCP-RST. This seems to allow the peer to read the alert data.
+ */
+ shutdown(SSL_get_fd(con), 1); /* SHUT_WR */
+ /*
+ * We just said we have nothing else to say, but it doesn't mean that
+ * the other side has nothing. It's even recommended to consume incoming
+ * data. [In testing context this ensures that alerts are passed on...]
+ */
+ timeout.tv_sec = 0;
+ timeout.tv_usec = 500000; /* some extreme round-trip */
+ do {
+ FD_ZERO(&readfds);
+ openssl_fdset(sock, &readfds);
+ } while (select(sock + 1, &readfds, NULL, NULL, &timeout) > 0
+ && BIO_read(sbio, sbuf, BUFSIZZ) > 0);
+ }
BIO_closesocket(SSL_get_fd(con));
end:
diff --git a/deps/openssl/openssl/crypto/aes/aes_x86core.c b/deps/openssl/openssl/crypto/aes/aes_x86core.c
deleted file mode 100644
index 0fa994871b2..00000000000
--- a/deps/openssl/openssl/crypto/aes/aes_x86core.c
+++ /dev/null
@@ -1,867 +0,0 @@
-/*
- * Copyright 2006-2016 The OpenSSL Project Authors. All Rights Reserved.
- *
- * Licensed under the Apache License 2.0 (the "License"). You may not use
- * this file except in compliance with the License. You can obtain a copy
- * in the file LICENSE in the source distribution or at
- * https://www.openssl.org/source/license.html
- */
-
-/*
- * This is experimental x86[_64] derivative. It assumes little-endian
- * byte order and expects CPU to sustain unaligned memory references.
- * It is used as playground for cache-time attack mitigations and
- * serves as reference C implementation for x86[_64] as well as some
- * other assembly modules.
- */
-
-/**
- * rijndael-alg-fst.c
- *
- * @version 3.0 (December 2000)
- *
- * Optimised ANSI C code for the Rijndael cipher (now AES)
- *
- * @author Vincent Rijmen
- * @author Antoon Bosselaers
- * @author Paulo Barreto
- *
- * This code is hereby placed in the public domain.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''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 AUTHORS 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.
- */
-
-#include
-
-#include
-#include
-#include "aes_local.h"
-
-/*
- * These two parameters control which table, 256-byte or 2KB, is
- * referenced in outer and respectively inner rounds.
- */
-#define AES_COMPACT_IN_OUTER_ROUNDS
-#ifdef AES_COMPACT_IN_OUTER_ROUNDS
-/* AES_COMPACT_IN_OUTER_ROUNDS costs ~30% in performance, while
- * adding AES_COMPACT_IN_INNER_ROUNDS reduces benchmark *further*
- * by factor of ~2. */
-#undef AES_COMPACT_IN_INNER_ROUNDS
-#endif
-
-#if 1
-static void prefetch256(const void *table)
-{
- volatile unsigned long *t = (void *)table, ret;
- unsigned long sum;
- int i;
-
- /* 32 is common least cache-line size */
- for (sum = 0, i = 0; i < 256 / sizeof(t[0]); i += 32 / sizeof(t[0]))
- sum ^= t[i];
-
- ret = sum;
-}
-#else
-#define prefetch256(t)
-#endif
-
-#undef GETU32
-#define GETU32(p) (*((u32 *)(p)))
-
-#if (defined(_WIN32) || defined(_WIN64)) && !defined(__MINGW32__)
-#define U64(C) C##UI64
-#elif defined(__arch64__)
-#define U64(C) C##UL
-#else
-#define U64(C) C##ULL
-#endif
-
-#undef ROTATE
-#if defined(_MSC_VER)
-#define ROTATE(a, n) _lrotl(a, n)
-#elif defined(__ICC)
-#define ROTATE(a, n) _rotl(a, n)
-#elif defined(__GNUC__) && __GNUC__ >= 2
-#if defined(__i386) || defined(__i386__) || defined(__x86_64) || defined(__x86_64__)
-#define ROTATE(a, n) ({ \
- register unsigned int ret; \
- asm( \
- "roll %1,%0" \
- : "=r"(ret) \
- : "I"(n), "0"(a) \
- : "cc"); \
- ret; \
-})
-#endif
-#endif
-/*-
-Te [x] = S [x].[02, 01, 01, 03, 02, 01, 01, 03];
-Te0[x] = S [x].[02, 01, 01, 03];
-Te1[x] = S [x].[03, 02, 01, 01];
-Te2[x] = S [x].[01, 03, 02, 01];
-Te3[x] = S [x].[01, 01, 03, 02];
-*/
-#define Te0 (u32)((u64 *)((u8 *)Te + 0))
-#define Te1 (u32)((u64 *)((u8 *)Te + 3))
-#define Te2 (u32)((u64 *)((u8 *)Te + 2))
-#define Te3 (u32)((u64 *)((u8 *)Te + 1))
-/*-
-Td [x] = Si[x].[0e, 09, 0d, 0b, 0e, 09, 0d, 0b];
-Td0[x] = Si[x].[0e, 09, 0d, 0b];
-Td1[x] = Si[x].[0b, 0e, 09, 0d];
-Td2[x] = Si[x].[0d, 0b, 0e, 09];
-Td3[x] = Si[x].[09, 0d, 0b, 0e];
-Td4[x] = Si[x].[01];
-*/
-#define Td0 (u32)((u64 *)((u8 *)Td + 0))
-#define Td1 (u32)((u64 *)((u8 *)Td + 3))
-#define Td2 (u32)((u64 *)((u8 *)Td + 2))
-#define Td3 (u32)((u64 *)((u8 *)Td + 1))
-
-static const u64 Te[256] = {
- U64(0xa56363c6a56363c6), U64(0x847c7cf8847c7cf8),
- U64(0x997777ee997777ee), U64(0x8d7b7bf68d7b7bf6),
- U64(0x0df2f2ff0df2f2ff), U64(0xbd6b6bd6bd6b6bd6),
- U64(0xb16f6fdeb16f6fde), U64(0x54c5c59154c5c591),
- U64(0x5030306050303060), U64(0x0301010203010102),
- U64(0xa96767cea96767ce), U64(0x7d2b2b567d2b2b56),
- U64(0x19fefee719fefee7), U64(0x62d7d7b562d7d7b5),
- U64(0xe6abab4de6abab4d), U64(0x9a7676ec9a7676ec),
- U64(0x45caca8f45caca8f), U64(0x9d82821f9d82821f),
- U64(0x40c9c98940c9c989), U64(0x877d7dfa877d7dfa),
- U64(0x15fafaef15fafaef), U64(0xeb5959b2eb5959b2),
- U64(0xc947478ec947478e), U64(0x0bf0f0fb0bf0f0fb),
- U64(0xecadad41ecadad41), U64(0x67d4d4b367d4d4b3),
- U64(0xfda2a25ffda2a25f), U64(0xeaafaf45eaafaf45),
- U64(0xbf9c9c23bf9c9c23), U64(0xf7a4a453f7a4a453),
- U64(0x967272e4967272e4), U64(0x5bc0c09b5bc0c09b),
- U64(0xc2b7b775c2b7b775), U64(0x1cfdfde11cfdfde1),
- U64(0xae93933dae93933d), U64(0x6a26264c6a26264c),
- U64(0x5a36366c5a36366c), U64(0x413f3f7e413f3f7e),
- U64(0x02f7f7f502f7f7f5), U64(0x4fcccc834fcccc83),
- U64(0x5c3434685c343468), U64(0xf4a5a551f4a5a551),
- U64(0x34e5e5d134e5e5d1), U64(0x08f1f1f908f1f1f9),
- U64(0x937171e2937171e2), U64(0x73d8d8ab73d8d8ab),
- U64(0x5331316253313162), U64(0x3f15152a3f15152a),
- U64(0x0c0404080c040408), U64(0x52c7c79552c7c795),
- U64(0x6523234665232346), U64(0x5ec3c39d5ec3c39d),
- U64(0x2818183028181830), U64(0xa1969637a1969637),
- U64(0x0f05050a0f05050a), U64(0xb59a9a2fb59a9a2f),
- U64(0x0907070e0907070e), U64(0x3612122436121224),
- U64(0x9b80801b9b80801b), U64(0x3de2e2df3de2e2df),
- U64(0x26ebebcd26ebebcd), U64(0x6927274e6927274e),
- U64(0xcdb2b27fcdb2b27f), U64(0x9f7575ea9f7575ea),
- U64(0x1b0909121b090912), U64(0x9e83831d9e83831d),
- U64(0x742c2c58742c2c58), U64(0x2e1a1a342e1a1a34),
- U64(0x2d1b1b362d1b1b36), U64(0xb26e6edcb26e6edc),
- U64(0xee5a5ab4ee5a5ab4), U64(0xfba0a05bfba0a05b),
- U64(0xf65252a4f65252a4), U64(0x4d3b3b764d3b3b76),
- U64(0x61d6d6b761d6d6b7), U64(0xceb3b37dceb3b37d),
- U64(0x7b2929527b292952), U64(0x3ee3e3dd3ee3e3dd),
- U64(0x712f2f5e712f2f5e), U64(0x9784841397848413),
- U64(0xf55353a6f55353a6), U64(0x68d1d1b968d1d1b9),
- U64(0x0000000000000000), U64(0x2cededc12cededc1),
- U64(0x6020204060202040), U64(0x1ffcfce31ffcfce3),
- U64(0xc8b1b179c8b1b179), U64(0xed5b5bb6ed5b5bb6),
- U64(0xbe6a6ad4be6a6ad4), U64(0x46cbcb8d46cbcb8d),
- U64(0xd9bebe67d9bebe67), U64(0x4b3939724b393972),
- U64(0xde4a4a94de4a4a94), U64(0xd44c4c98d44c4c98),
- U64(0xe85858b0e85858b0), U64(0x4acfcf854acfcf85),
- U64(0x6bd0d0bb6bd0d0bb), U64(0x2aefefc52aefefc5),
- U64(0xe5aaaa4fe5aaaa4f), U64(0x16fbfbed16fbfbed),
- U64(0xc5434386c5434386), U64(0xd74d4d9ad74d4d9a),
- U64(0x5533336655333366), U64(0x9485851194858511),
- U64(0xcf45458acf45458a), U64(0x10f9f9e910f9f9e9),
- U64(0x0602020406020204), U64(0x817f7ffe817f7ffe),
- U64(0xf05050a0f05050a0), U64(0x443c3c78443c3c78),
- U64(0xba9f9f25ba9f9f25), U64(0xe3a8a84be3a8a84b),
- U64(0xf35151a2f35151a2), U64(0xfea3a35dfea3a35d),
- U64(0xc0404080c0404080), U64(0x8a8f8f058a8f8f05),
- U64(0xad92923fad92923f), U64(0xbc9d9d21bc9d9d21),
- U64(0x4838387048383870), U64(0x04f5f5f104f5f5f1),
- U64(0xdfbcbc63dfbcbc63), U64(0xc1b6b677c1b6b677),
- U64(0x75dadaaf75dadaaf), U64(0x6321214263212142),
- U64(0x3010102030101020), U64(0x1affffe51affffe5),
- U64(0x0ef3f3fd0ef3f3fd), U64(0x6dd2d2bf6dd2d2bf),
- U64(0x4ccdcd814ccdcd81), U64(0x140c0c18140c0c18),
- U64(0x3513132635131326), U64(0x2fececc32fececc3),
- U64(0xe15f5fbee15f5fbe), U64(0xa2979735a2979735),
- U64(0xcc444488cc444488), U64(0x3917172e3917172e),
- U64(0x57c4c49357c4c493), U64(0xf2a7a755f2a7a755),
- U64(0x827e7efc827e7efc), U64(0x473d3d7a473d3d7a),
- U64(0xac6464c8ac6464c8), U64(0xe75d5dbae75d5dba),
- U64(0x2b1919322b191932), U64(0x957373e6957373e6),
- U64(0xa06060c0a06060c0), U64(0x9881811998818119),
- U64(0xd14f4f9ed14f4f9e), U64(0x7fdcdca37fdcdca3),
- U64(0x6622224466222244), U64(0x7e2a2a547e2a2a54),
- U64(0xab90903bab90903b), U64(0x8388880b8388880b),
- U64(0xca46468cca46468c), U64(0x29eeeec729eeeec7),
- U64(0xd3b8b86bd3b8b86b), U64(0x3c1414283c141428),
- U64(0x79dedea779dedea7), U64(0xe25e5ebce25e5ebc),
- U64(0x1d0b0b161d0b0b16), U64(0x76dbdbad76dbdbad),
- U64(0x3be0e0db3be0e0db), U64(0x5632326456323264),
- U64(0x4e3a3a744e3a3a74), U64(0x1e0a0a141e0a0a14),
- U64(0xdb494992db494992), U64(0x0a06060c0a06060c),
- U64(0x6c2424486c242448), U64(0xe45c5cb8e45c5cb8),
- U64(0x5dc2c29f5dc2c29f), U64(0x6ed3d3bd6ed3d3bd),
- U64(0xefacac43efacac43), U64(0xa66262c4a66262c4),
- U64(0xa8919139a8919139), U64(0xa4959531a4959531),
- U64(0x37e4e4d337e4e4d3), U64(0x8b7979f28b7979f2),
- U64(0x32e7e7d532e7e7d5), U64(0x43c8c88b43c8c88b),
- U64(0x5937376e5937376e), U64(0xb76d6ddab76d6dda),
- U64(0x8c8d8d018c8d8d01), U64(0x64d5d5b164d5d5b1),
- U64(0xd24e4e9cd24e4e9c), U64(0xe0a9a949e0a9a949),
- U64(0xb46c6cd8b46c6cd8), U64(0xfa5656acfa5656ac),
- U64(0x07f4f4f307f4f4f3), U64(0x25eaeacf25eaeacf),
- U64(0xaf6565caaf6565ca), U64(0x8e7a7af48e7a7af4),
- U64(0xe9aeae47e9aeae47), U64(0x1808081018080810),
- U64(0xd5baba6fd5baba6f), U64(0x887878f0887878f0),
- U64(0x6f25254a6f25254a), U64(0x722e2e5c722e2e5c),
- U64(0x241c1c38241c1c38), U64(0xf1a6a657f1a6a657),
- U64(0xc7b4b473c7b4b473), U64(0x51c6c69751c6c697),
- U64(0x23e8e8cb23e8e8cb), U64(0x7cdddda17cdddda1),
- U64(0x9c7474e89c7474e8), U64(0x211f1f3e211f1f3e),
- U64(0xdd4b4b96dd4b4b96), U64(0xdcbdbd61dcbdbd61),
- U64(0x868b8b0d868b8b0d), U64(0x858a8a0f858a8a0f),
- U64(0x907070e0907070e0), U64(0x423e3e7c423e3e7c),
- U64(0xc4b5b571c4b5b571), U64(0xaa6666ccaa6666cc),
- U64(0xd8484890d8484890), U64(0x0503030605030306),
- U64(0x01f6f6f701f6f6f7), U64(0x120e0e1c120e0e1c),
- U64(0xa36161c2a36161c2), U64(0x5f35356a5f35356a),
- U64(0xf95757aef95757ae), U64(0xd0b9b969d0b9b969),
- U64(0x9186861791868617), U64(0x58c1c19958c1c199),
- U64(0x271d1d3a271d1d3a), U64(0xb99e9e27b99e9e27),
- U64(0x38e1e1d938e1e1d9), U64(0x13f8f8eb13f8f8eb),
- U64(0xb398982bb398982b), U64(0x3311112233111122),
- U64(0xbb6969d2bb6969d2), U64(0x70d9d9a970d9d9a9),
- U64(0x898e8e07898e8e07), U64(0xa7949433a7949433),
- U64(0xb69b9b2db69b9b2d), U64(0x221e1e3c221e1e3c),
- U64(0x9287871592878715), U64(0x20e9e9c920e9e9c9),
- U64(0x49cece8749cece87), U64(0xff5555aaff5555aa),
- U64(0x7828285078282850), U64(0x7adfdfa57adfdfa5),
- U64(0x8f8c8c038f8c8c03), U64(0xf8a1a159f8a1a159),
- U64(0x8089890980898909), U64(0x170d0d1a170d0d1a),
- U64(0xdabfbf65dabfbf65), U64(0x31e6e6d731e6e6d7),
- U64(0xc6424284c6424284), U64(0xb86868d0b86868d0),
- U64(0xc3414182c3414182), U64(0xb0999929b0999929),
- U64(0x772d2d5a772d2d5a), U64(0x110f0f1e110f0f1e),
- U64(0xcbb0b07bcbb0b07b), U64(0xfc5454a8fc5454a8),
- U64(0xd6bbbb6dd6bbbb6d), U64(0x3a16162c3a16162c)
-};
-
-static const u8 Te4[256] = {
- 0x63U, 0x7cU, 0x77U, 0x7bU, 0xf2U, 0x6bU, 0x6fU, 0xc5U,
- 0x30U, 0x01U, 0x67U, 0x2bU, 0xfeU, 0xd7U, 0xabU, 0x76U,
- 0xcaU, 0x82U, 0xc9U, 0x7dU, 0xfaU, 0x59U, 0x47U, 0xf0U,
- 0xadU, 0xd4U, 0xa2U, 0xafU, 0x9cU, 0xa4U, 0x72U, 0xc0U,
- 0xb7U, 0xfdU, 0x93U, 0x26U, 0x36U, 0x3fU, 0xf7U, 0xccU,
- 0x34U, 0xa5U, 0xe5U, 0xf1U, 0x71U, 0xd8U, 0x31U, 0x15U,
- 0x04U, 0xc7U, 0x23U, 0xc3U, 0x18U, 0x96U, 0x05U, 0x9aU,
- 0x07U, 0x12U, 0x80U, 0xe2U, 0xebU, 0x27U, 0xb2U, 0x75U,
- 0x09U, 0x83U, 0x2cU, 0x1aU, 0x1bU, 0x6eU, 0x5aU, 0xa0U,
- 0x52U, 0x3bU, 0xd6U, 0xb3U, 0x29U, 0xe3U, 0x2fU, 0x84U,
- 0x53U, 0xd1U, 0x00U, 0xedU, 0x20U, 0xfcU, 0xb1U, 0x5bU,
- 0x6aU, 0xcbU, 0xbeU, 0x39U, 0x4aU, 0x4cU, 0x58U, 0xcfU,
- 0xd0U, 0xefU, 0xaaU, 0xfbU, 0x43U, 0x4dU, 0x33U, 0x85U,
- 0x45U, 0xf9U, 0x02U, 0x7fU, 0x50U, 0x3cU, 0x9fU, 0xa8U,
- 0x51U, 0xa3U, 0x40U, 0x8fU, 0x92U, 0x9dU, 0x38U, 0xf5U,
- 0xbcU, 0xb6U, 0xdaU, 0x21U, 0x10U, 0xffU, 0xf3U, 0xd2U,
- 0xcdU, 0x0cU, 0x13U, 0xecU, 0x5fU, 0x97U, 0x44U, 0x17U,
- 0xc4U, 0xa7U, 0x7eU, 0x3dU, 0x64U, 0x5dU, 0x19U, 0x73U,
- 0x60U, 0x81U, 0x4fU, 0xdcU, 0x22U, 0x2aU, 0x90U, 0x88U,
- 0x46U, 0xeeU, 0xb8U, 0x14U, 0xdeU, 0x5eU, 0x0bU, 0xdbU,
- 0xe0U, 0x32U, 0x3aU, 0x0aU, 0x49U, 0x06U, 0x24U, 0x5cU,
- 0xc2U, 0xd3U, 0xacU, 0x62U, 0x91U, 0x95U, 0xe4U, 0x79U,
- 0xe7U, 0xc8U, 0x37U, 0x6dU, 0x8dU, 0xd5U, 0x4eU, 0xa9U,
- 0x6cU, 0x56U, 0xf4U, 0xeaU, 0x65U, 0x7aU, 0xaeU, 0x08U,
- 0xbaU, 0x78U, 0x25U, 0x2eU, 0x1cU, 0xa6U, 0xb4U, 0xc6U,
- 0xe8U, 0xddU, 0x74U, 0x1fU, 0x4bU, 0xbdU, 0x8bU, 0x8aU,
- 0x70U, 0x3eU, 0xb5U, 0x66U, 0x48U, 0x03U, 0xf6U, 0x0eU,
- 0x61U, 0x35U, 0x57U, 0xb9U, 0x86U, 0xc1U, 0x1dU, 0x9eU,
- 0xe1U, 0xf8U, 0x98U, 0x11U, 0x69U, 0xd9U, 0x8eU, 0x94U,
- 0x9bU, 0x1eU, 0x87U, 0xe9U, 0xceU, 0x55U, 0x28U, 0xdfU,
- 0x8cU, 0xa1U, 0x89U, 0x0dU, 0xbfU, 0xe6U, 0x42U, 0x68U,
- 0x41U, 0x99U, 0x2dU, 0x0fU, 0xb0U, 0x54U, 0xbbU, 0x16U
-};
-
-static const u64 Td[256] = {
- U64(0x50a7f45150a7f451), U64(0x5365417e5365417e),
- U64(0xc3a4171ac3a4171a), U64(0x965e273a965e273a),
- U64(0xcb6bab3bcb6bab3b), U64(0xf1459d1ff1459d1f),
- U64(0xab58faacab58faac), U64(0x9303e34b9303e34b),
- U64(0x55fa302055fa3020), U64(0xf66d76adf66d76ad),
- U64(0x9176cc889176cc88), U64(0x254c02f5254c02f5),
- U64(0xfcd7e54ffcd7e54f), U64(0xd7cb2ac5d7cb2ac5),
- U64(0x8044352680443526), U64(0x8fa362b58fa362b5),
- U64(0x495ab1de495ab1de), U64(0x671bba25671bba25),
- U64(0x980eea45980eea45), U64(0xe1c0fe5de1c0fe5d),
- U64(0x02752fc302752fc3), U64(0x12f04c8112f04c81),
- U64(0xa397468da397468d), U64(0xc6f9d36bc6f9d36b),
- U64(0xe75f8f03e75f8f03), U64(0x959c9215959c9215),
- U64(0xeb7a6dbfeb7a6dbf), U64(0xda595295da595295),
- U64(0x2d83bed42d83bed4), U64(0xd3217458d3217458),
- U64(0x2969e0492969e049), U64(0x44c8c98e44c8c98e),
- U64(0x6a89c2756a89c275), U64(0x78798ef478798ef4),
- U64(0x6b3e58996b3e5899), U64(0xdd71b927dd71b927),
- U64(0xb64fe1beb64fe1be), U64(0x17ad88f017ad88f0),
- U64(0x66ac20c966ac20c9), U64(0xb43ace7db43ace7d),
- U64(0x184adf63184adf63), U64(0x82311ae582311ae5),
- U64(0x6033519760335197), U64(0x457f5362457f5362),
- U64(0xe07764b1e07764b1), U64(0x84ae6bbb84ae6bbb),
- U64(0x1ca081fe1ca081fe), U64(0x942b08f9942b08f9),
- U64(0x5868487058684870), U64(0x19fd458f19fd458f),
- U64(0x876cde94876cde94), U64(0xb7f87b52b7f87b52),
- U64(0x23d373ab23d373ab), U64(0xe2024b72e2024b72),
- U64(0x578f1fe3578f1fe3), U64(0x2aab55662aab5566),
- U64(0x0728ebb20728ebb2), U64(0x03c2b52f03c2b52f),
- U64(0x9a7bc5869a7bc586), U64(0xa50837d3a50837d3),
- U64(0xf2872830f2872830), U64(0xb2a5bf23b2a5bf23),
- U64(0xba6a0302ba6a0302), U64(0x5c8216ed5c8216ed),
- U64(0x2b1ccf8a2b1ccf8a), U64(0x92b479a792b479a7),
- U64(0xf0f207f3f0f207f3), U64(0xa1e2694ea1e2694e),
- U64(0xcdf4da65cdf4da65), U64(0xd5be0506d5be0506),
- U64(0x1f6234d11f6234d1), U64(0x8afea6c48afea6c4),
- U64(0x9d532e349d532e34), U64(0xa055f3a2a055f3a2),
- U64(0x32e18a0532e18a05), U64(0x75ebf6a475ebf6a4),
- U64(0x39ec830b39ec830b), U64(0xaaef6040aaef6040),
- U64(0x069f715e069f715e), U64(0x51106ebd51106ebd),
- U64(0xf98a213ef98a213e), U64(0x3d06dd963d06dd96),
- U64(0xae053eddae053edd), U64(0x46bde64d46bde64d),
- U64(0xb58d5491b58d5491), U64(0x055dc471055dc471),
- U64(0x6fd406046fd40604), U64(0xff155060ff155060),
- U64(0x24fb981924fb9819), U64(0x97e9bdd697e9bdd6),
- U64(0xcc434089cc434089), U64(0x779ed967779ed967),
- U64(0xbd42e8b0bd42e8b0), U64(0x888b8907888b8907),
- U64(0x385b19e7385b19e7), U64(0xdbeec879dbeec879),
- U64(0x470a7ca1470a7ca1), U64(0xe90f427ce90f427c),
- U64(0xc91e84f8c91e84f8), U64(0x0000000000000000),
- U64(0x8386800983868009), U64(0x48ed2b3248ed2b32),
- U64(0xac70111eac70111e), U64(0x4e725a6c4e725a6c),
- U64(0xfbff0efdfbff0efd), U64(0x5638850f5638850f),
- U64(0x1ed5ae3d1ed5ae3d), U64(0x27392d3627392d36),
- U64(0x64d90f0a64d90f0a), U64(0x21a65c6821a65c68),
- U64(0xd1545b9bd1545b9b), U64(0x3a2e36243a2e3624),
- U64(0xb1670a0cb1670a0c), U64(0x0fe757930fe75793),
- U64(0xd296eeb4d296eeb4), U64(0x9e919b1b9e919b1b),
- U64(0x4fc5c0804fc5c080), U64(0xa220dc61a220dc61),
- U64(0x694b775a694b775a), U64(0x161a121c161a121c),
- U64(0x0aba93e20aba93e2), U64(0xe52aa0c0e52aa0c0),
- U64(0x43e0223c43e0223c), U64(0x1d171b121d171b12),
- U64(0x0b0d090e0b0d090e), U64(0xadc78bf2adc78bf2),
- U64(0xb9a8b62db9a8b62d), U64(0xc8a91e14c8a91e14),
- U64(0x8519f1578519f157), U64(0x4c0775af4c0775af),
- U64(0xbbdd99eebbdd99ee), U64(0xfd607fa3fd607fa3),
- U64(0x9f2601f79f2601f7), U64(0xbcf5725cbcf5725c),
- U64(0xc53b6644c53b6644), U64(0x347efb5b347efb5b),
- U64(0x7629438b7629438b), U64(0xdcc623cbdcc623cb),
- U64(0x68fcedb668fcedb6), U64(0x63f1e4b863f1e4b8),
- U64(0xcadc31d7cadc31d7), U64(0x1085634210856342),
- U64(0x4022971340229713), U64(0x2011c6842011c684),
- U64(0x7d244a857d244a85), U64(0xf83dbbd2f83dbbd2),
- U64(0x1132f9ae1132f9ae), U64(0x6da129c76da129c7),
- U64(0x4b2f9e1d4b2f9e1d), U64(0xf330b2dcf330b2dc),
- U64(0xec52860dec52860d), U64(0xd0e3c177d0e3c177),
- U64(0x6c16b32b6c16b32b), U64(0x99b970a999b970a9),
- U64(0xfa489411fa489411), U64(0x2264e9472264e947),
- U64(0xc48cfca8c48cfca8), U64(0x1a3ff0a01a3ff0a0),
- U64(0xd82c7d56d82c7d56), U64(0xef903322ef903322),
- U64(0xc74e4987c74e4987), U64(0xc1d138d9c1d138d9),
- U64(0xfea2ca8cfea2ca8c), U64(0x360bd498360bd498),
- U64(0xcf81f5a6cf81f5a6), U64(0x28de7aa528de7aa5),
- U64(0x268eb7da268eb7da), U64(0xa4bfad3fa4bfad3f),
- U64(0xe49d3a2ce49d3a2c), U64(0x0d9278500d927850),
- U64(0x9bcc5f6a9bcc5f6a), U64(0x62467e5462467e54),
- U64(0xc2138df6c2138df6), U64(0xe8b8d890e8b8d890),
- U64(0x5ef7392e5ef7392e), U64(0xf5afc382f5afc382),
- U64(0xbe805d9fbe805d9f), U64(0x7c93d0697c93d069),
- U64(0xa92dd56fa92dd56f), U64(0xb31225cfb31225cf),
- U64(0x3b99acc83b99acc8), U64(0xa77d1810a77d1810),
- U64(0x6e639ce86e639ce8), U64(0x7bbb3bdb7bbb3bdb),
- U64(0x097826cd097826cd), U64(0xf418596ef418596e),
- U64(0x01b79aec01b79aec), U64(0xa89a4f83a89a4f83),
- U64(0x656e95e6656e95e6), U64(0x7ee6ffaa7ee6ffaa),
- U64(0x08cfbc2108cfbc21), U64(0xe6e815efe6e815ef),
- U64(0xd99be7bad99be7ba), U64(0xce366f4ace366f4a),
- U64(0xd4099fead4099fea), U64(0xd67cb029d67cb029),
- U64(0xafb2a431afb2a431), U64(0x31233f2a31233f2a),
- U64(0x3094a5c63094a5c6), U64(0xc066a235c066a235),
- U64(0x37bc4e7437bc4e74), U64(0xa6ca82fca6ca82fc),
- U64(0xb0d090e0b0d090e0), U64(0x15d8a73315d8a733),
- U64(0x4a9804f14a9804f1), U64(0xf7daec41f7daec41),
- U64(0x0e50cd7f0e50cd7f), U64(0x2ff691172ff69117),
- U64(0x8dd64d768dd64d76), U64(0x4db0ef434db0ef43),
- U64(0x544daacc544daacc), U64(0xdf0496e4df0496e4),
- U64(0xe3b5d19ee3b5d19e), U64(0x1b886a4c1b886a4c),
- U64(0xb81f2cc1b81f2cc1), U64(0x7f5165467f516546),
- U64(0x04ea5e9d04ea5e9d), U64(0x5d358c015d358c01),
- U64(0x737487fa737487fa), U64(0x2e410bfb2e410bfb),
- U64(0x5a1d67b35a1d67b3), U64(0x52d2db9252d2db92),
- U64(0x335610e9335610e9), U64(0x1347d66d1347d66d),
- U64(0x8c61d79a8c61d79a), U64(0x7a0ca1377a0ca137),
- U64(0x8e14f8598e14f859), U64(0x893c13eb893c13eb),
- U64(0xee27a9ceee27a9ce), U64(0x35c961b735c961b7),
- U64(0xede51ce1ede51ce1), U64(0x3cb1477a3cb1477a),
- U64(0x59dfd29c59dfd29c), U64(0x3f73f2553f73f255),
- U64(0x79ce141879ce1418), U64(0xbf37c773bf37c773),
- U64(0xeacdf753eacdf753), U64(0x5baafd5f5baafd5f),
- U64(0x146f3ddf146f3ddf), U64(0x86db447886db4478),
- U64(0x81f3afca81f3afca), U64(0x3ec468b93ec468b9),
- U64(0x2c3424382c342438), U64(0x5f40a3c25f40a3c2),
- U64(0x72c31d1672c31d16), U64(0x0c25e2bc0c25e2bc),
- U64(0x8b493c288b493c28), U64(0x41950dff41950dff),
- U64(0x7101a8397101a839), U64(0xdeb30c08deb30c08),
- U64(0x9ce4b4d89ce4b4d8), U64(0x90c1566490c15664),
- U64(0x6184cb7b6184cb7b), U64(0x70b632d570b632d5),
- U64(0x745c6c48745c6c48), U64(0x4257b8d04257b8d0)
-};
-static const u8 Td4[256] = {
- 0x52U, 0x09U, 0x6aU, 0xd5U, 0x30U, 0x36U, 0xa5U, 0x38U,
- 0xbfU, 0x40U, 0xa3U, 0x9eU, 0x81U, 0xf3U, 0xd7U, 0xfbU,
- 0x7cU, 0xe3U, 0x39U, 0x82U, 0x9bU, 0x2fU, 0xffU, 0x87U,
- 0x34U, 0x8eU, 0x43U, 0x44U, 0xc4U, 0xdeU, 0xe9U, 0xcbU,
- 0x54U, 0x7bU, 0x94U, 0x32U, 0xa6U, 0xc2U, 0x23U, 0x3dU,
- 0xeeU, 0x4cU, 0x95U, 0x0bU, 0x42U, 0xfaU, 0xc3U, 0x4eU,
- 0x08U, 0x2eU, 0xa1U, 0x66U, 0x28U, 0xd9U, 0x24U, 0xb2U,
- 0x76U, 0x5bU, 0xa2U, 0x49U, 0x6dU, 0x8bU, 0xd1U, 0x25U,
- 0x72U, 0xf8U, 0xf6U, 0x64U, 0x86U, 0x68U, 0x98U, 0x16U,
- 0xd4U, 0xa4U, 0x5cU, 0xccU, 0x5dU, 0x65U, 0xb6U, 0x92U,
- 0x6cU, 0x70U, 0x48U, 0x50U, 0xfdU, 0xedU, 0xb9U, 0xdaU,
- 0x5eU, 0x15U, 0x46U, 0x57U, 0xa7U, 0x8dU, 0x9dU, 0x84U,
- 0x90U, 0xd8U, 0xabU, 0x00U, 0x8cU, 0xbcU, 0xd3U, 0x0aU,
- 0xf7U, 0xe4U, 0x58U, 0x05U, 0xb8U, 0xb3U, 0x45U, 0x06U,
- 0xd0U, 0x2cU, 0x1eU, 0x8fU, 0xcaU, 0x3fU, 0x0fU, 0x02U,
- 0xc1U, 0xafU, 0xbdU, 0x03U, 0x01U, 0x13U, 0x8aU, 0x6bU,
- 0x3aU, 0x91U, 0x11U, 0x41U, 0x4fU, 0x67U, 0xdcU, 0xeaU,
- 0x97U, 0xf2U, 0xcfU, 0xceU, 0xf0U, 0xb4U, 0xe6U, 0x73U,
- 0x96U, 0xacU, 0x74U, 0x22U, 0xe7U, 0xadU, 0x35U, 0x85U,
- 0xe2U, 0xf9U, 0x37U, 0xe8U, 0x1cU, 0x75U, 0xdfU, 0x6eU,
- 0x47U, 0xf1U, 0x1aU, 0x71U, 0x1dU, 0x29U, 0xc5U, 0x89U,
- 0x6fU, 0xb7U, 0x62U, 0x0eU, 0xaaU, 0x18U, 0xbeU, 0x1bU,
- 0xfcU, 0x56U, 0x3eU, 0x4bU, 0xc6U, 0xd2U, 0x79U, 0x20U,
- 0x9aU, 0xdbU, 0xc0U, 0xfeU, 0x78U, 0xcdU, 0x5aU, 0xf4U,
- 0x1fU, 0xddU, 0xa8U, 0x33U, 0x88U, 0x07U, 0xc7U, 0x31U,
- 0xb1U, 0x12U, 0x10U, 0x59U, 0x27U, 0x80U, 0xecU, 0x5fU,
- 0x60U, 0x51U, 0x7fU, 0xa9U, 0x19U, 0xb5U, 0x4aU, 0x0dU,
- 0x2dU, 0xe5U, 0x7aU, 0x9fU, 0x93U, 0xc9U, 0x9cU, 0xefU,
- 0xa0U, 0xe0U, 0x3bU, 0x4dU, 0xaeU, 0x2aU, 0xf5U, 0xb0U,
- 0xc8U, 0xebU, 0xbbU, 0x3cU, 0x83U, 0x53U, 0x99U, 0x61U,
- 0x17U, 0x2bU, 0x04U, 0x7eU, 0xbaU, 0x77U, 0xd6U, 0x26U,
- 0xe1U, 0x69U, 0x14U, 0x63U, 0x55U, 0x21U, 0x0cU, 0x7dU
-};
-
-static const u32 rcon[] = {
- 0x00000001U,
- 0x00000002U,
- 0x00000004U,
- 0x00000008U,
- 0x00000010U,
- 0x00000020U,
- 0x00000040U,
- 0x00000080U,
- 0x0000001bU,
- 0x00000036U, /* for 128-bit blocks, Rijndael never uses more than 10 rcon values */
-};
-
-/**
- * Expand the cipher key into the encryption key schedule.
- */
-int AES_set_encrypt_key(const unsigned char *userKey, const int bits,
- AES_KEY *key)
-{
-
- u32 *rk;
- int i = 0;
- u32 temp;
-
- if (!userKey || !key)
- return -1;
- if (bits != 128 && bits != 192 && bits != 256)
- return -2;
-
- rk = key->rd_key;
-
- if (bits == 128)
- key->rounds = 10;
- else if (bits == 192)
- key->rounds = 12;
- else
- key->rounds = 14;
-
- rk[0] = GETU32(userKey);
- rk[1] = GETU32(userKey + 4);
- rk[2] = GETU32(userKey + 8);
- rk[3] = GETU32(userKey + 12);
- if (bits == 128) {
- while (1) {
- temp = rk[3];
- rk[4] = rk[0] ^ ((u32)Te4[(temp >> 8) & 0xff]) ^ ((u32)Te4[(temp >> 16) & 0xff] << 8) ^ ((u32)Te4[(temp >> 24)] << 16) ^ ((u32)Te4[(temp) & 0xff] << 24) ^ rcon[i];
- rk[5] = rk[1] ^ rk[4];
- rk[6] = rk[2] ^ rk[5];
- rk[7] = rk[3] ^ rk[6];
- if (++i == 10) {
- return 0;
- }
- rk += 4;
- }
- }
- rk[4] = GETU32(userKey + 16);
- rk[5] = GETU32(userKey + 20);
- if (bits == 192) {
- while (1) {
- temp = rk[5];
- rk[6] = rk[0] ^ ((u32)Te4[(temp >> 8) & 0xff]) ^ ((u32)Te4[(temp >> 16) & 0xff] << 8) ^ ((u32)Te4[(temp >> 24)] << 16) ^ ((u32)Te4[(temp) & 0xff] << 24) ^ rcon[i];
- rk[7] = rk[1] ^ rk[6];
- rk[8] = rk[2] ^ rk[7];
- rk[9] = rk[3] ^ rk[8];
- if (++i == 8) {
- return 0;
- }
- rk[10] = rk[4] ^ rk[9];
- rk[11] = rk[5] ^ rk[10];
- rk += 6;
- }
- }
- rk[6] = GETU32(userKey + 24);
- rk[7] = GETU32(userKey + 28);
- if (bits == 256) {
- while (1) {
- temp = rk[7];
- rk[8] = rk[0] ^ ((u32)Te4[(temp >> 8) & 0xff]) ^ ((u32)Te4[(temp >> 16) & 0xff] << 8) ^ ((u32)Te4[(temp >> 24)] << 16) ^ ((u32)Te4[(temp) & 0xff] << 24) ^ rcon[i];
- rk[9] = rk[1] ^ rk[8];
- rk[10] = rk[2] ^ rk[9];
- rk[11] = rk[3] ^ rk[10];
- if (++i == 7) {
- return 0;
- }
- temp = rk[11];
- rk[12] = rk[4] ^ ((u32)Te4[(temp) & 0xff]) ^ ((u32)Te4[(temp >> 8) & 0xff] << 8) ^ ((u32)Te4[(temp >> 16) & 0xff] << 16) ^ ((u32)Te4[(temp >> 24)] << 24);
- rk[13] = rk[5] ^ rk[12];
- rk[14] = rk[6] ^ rk[13];
- rk[15] = rk[7] ^ rk[14];
-
- rk += 8;
- }
- }
- return 0;
-}
-
-/**
- * Expand the cipher key into the decryption key schedule.
- */
-int AES_set_decrypt_key(const unsigned char *userKey, const int bits,
- AES_KEY *key)
-{
-
- u32 *rk;
- int i, j, status;
- u32 temp;
-
- /* first, start with an encryption schedule */
- status = AES_set_encrypt_key(userKey, bits, key);
- if (status < 0)
- return status;
-
- rk = key->rd_key;
-
- /* invert the order of the round keys: */
- for (i = 0, j = 4 * (key->rounds); i < j; i += 4, j -= 4) {
- temp = rk[i];
- rk[i] = rk[j];
- rk[j] = temp;
- temp = rk[i + 1];
- rk[i + 1] = rk[j + 1];
- rk[j + 1] = temp;
- temp = rk[i + 2];
- rk[i + 2] = rk[j + 2];
- rk[j + 2] = temp;
- temp = rk[i + 3];
- rk[i + 3] = rk[j + 3];
- rk[j + 3] = temp;
- }
- /* apply the inverse MixColumn transform to all round keys but the first and the last: */
- for (i = 1; i < (key->rounds); i++) {
- rk += 4;
-#if 1
- for (j = 0; j < 4; j++) {
- u32 tp1, tp2, tp4, tp8, tp9, tpb, tpd, tpe, m;
-
- tp1 = rk[j];
- m = tp1 & 0x80808080;
- tp2 = ((tp1 & 0x7f7f7f7f) << 1) ^ ((m - (m >> 7)) & 0x1b1b1b1b);
- m = tp2 & 0x80808080;
- tp4 = ((tp2 & 0x7f7f7f7f) << 1) ^ ((m - (m >> 7)) & 0x1b1b1b1b);
- m = tp4 & 0x80808080;
- tp8 = ((tp4 & 0x7f7f7f7f) << 1) ^ ((m - (m >> 7)) & 0x1b1b1b1b);
- tp9 = tp8 ^ tp1;
- tpb = tp9 ^ tp2;
- tpd = tp9 ^ tp4;
- tpe = tp8 ^ tp4 ^ tp2;
-#if defined(ROTATE)
- rk[j] = tpe ^ ROTATE(tpd, 16) ^ ROTATE(tp9, 8) ^ ROTATE(tpb, 24);
-#else
- rk[j] = tpe ^ (tpd >> 16) ^ (tpd << 16) ^ (tp9 >> 24) ^ (tp9 << 8) ^ (tpb >> 8) ^ (tpb << 24);
-#endif
- }
-#else
- rk[0] = Td0[Te2[(rk[0]) & 0xff] & 0xff] ^ Td1[Te2[(rk[0] >> 8) & 0xff] & 0xff] ^ Td2[Te2[(rk[0] >> 16) & 0xff] & 0xff] ^ Td3[Te2[(rk[0] >> 24)] & 0xff];
- rk[1] = Td0[Te2[(rk[1]) & 0xff] & 0xff] ^ Td1[Te2[(rk[1] >> 8) & 0xff] & 0xff] ^ Td2[Te2[(rk[1] >> 16) & 0xff] & 0xff] ^ Td3[Te2[(rk[1] >> 24)] & 0xff];
- rk[2] = Td0[Te2[(rk[2]) & 0xff] & 0xff] ^ Td1[Te2[(rk[2] >> 8) & 0xff] & 0xff] ^ Td2[Te2[(rk[2] >> 16) & 0xff] & 0xff] ^ Td3[Te2[(rk[2] >> 24)] & 0xff];
- rk[3] = Td0[Te2[(rk[3]) & 0xff] & 0xff] ^ Td1[Te2[(rk[3] >> 8) & 0xff] & 0xff] ^ Td2[Te2[(rk[3] >> 16) & 0xff] & 0xff] ^ Td3[Te2[(rk[3] >> 24)] & 0xff];
-#endif
- }
- return 0;
-}
-
-/*
- * Encrypt a single block
- * in and out can overlap
- */
-void AES_encrypt(const unsigned char *in, unsigned char *out,
- const AES_KEY *key)
-{
-
- const u32 *rk;
- u32 s0, s1, s2, s3, t[4];
- int r;
-
- assert(in && out && key);
- rk = key->rd_key;
-
- /*
- * map byte array block to cipher state
- * and add initial round key:
- */
- s0 = GETU32(in) ^ rk[0];
- s1 = GETU32(in + 4) ^ rk[1];
- s2 = GETU32(in + 8) ^ rk[2];
- s3 = GETU32(in + 12) ^ rk[3];
-
-#if defined(AES_COMPACT_IN_OUTER_ROUNDS)
- prefetch256(Te4);
-
- t[0] = (u32)Te4[(s0) & 0xff] ^ (u32)Te4[(s1 >> 8) & 0xff] << 8 ^ (u32)Te4[(s2 >> 16) & 0xff] << 16 ^ (u32)Te4[(s3 >> 24)] << 24;
- t[1] = (u32)Te4[(s1) & 0xff] ^ (u32)Te4[(s2 >> 8) & 0xff] << 8 ^ (u32)Te4[(s3 >> 16) & 0xff] << 16 ^ (u32)Te4[(s0 >> 24)] << 24;
- t[2] = (u32)Te4[(s2) & 0xff] ^ (u32)Te4[(s3 >> 8) & 0xff] << 8 ^ (u32)Te4[(s0 >> 16) & 0xff] << 16 ^ (u32)Te4[(s1 >> 24)] << 24;
- t[3] = (u32)Te4[(s3) & 0xff] ^ (u32)Te4[(s0 >> 8) & 0xff] << 8 ^ (u32)Te4[(s1 >> 16) & 0xff] << 16 ^ (u32)Te4[(s2 >> 24)] << 24;
-
- /* now do the linear transform using words */
- {
- int i;
- u32 r0, r1, r2;
-
- for (i = 0; i < 4; i++) {
- r0 = t[i];
- r1 = r0 & 0x80808080;
- r2 = ((r0 & 0x7f7f7f7f) << 1) ^ ((r1 - (r1 >> 7)) & 0x1b1b1b1b);
-#if defined(ROTATE)
- t[i] = r2 ^ ROTATE(r2, 24) ^ ROTATE(r0, 24) ^ ROTATE(r0, 16) ^ ROTATE(r0, 8);
-#else
- t[i] = r2 ^ ((r2 ^ r0) << 24) ^ ((r2 ^ r0) >> 8) ^ (r0 << 16) ^ (r0 >> 16) ^ (r0 << 8) ^ (r0 >> 24);
-#endif
- t[i] ^= rk[4 + i];
- }
- }
-#else
- t[0] = Te0[(s0) & 0xff] ^ Te1[(s1 >> 8) & 0xff] ^ Te2[(s2 >> 16) & 0xff] ^ Te3[(s3 >> 24)] ^ rk[4];
- t[1] = Te0[(s1) & 0xff] ^ Te1[(s2 >> 8) & 0xff] ^ Te2[(s3 >> 16) & 0xff] ^ Te3[(s0 >> 24)] ^ rk[5];
- t[2] = Te0[(s2) & 0xff] ^ Te1[(s3 >> 8) & 0xff] ^ Te2[(s0 >> 16) & 0xff] ^ Te3[(s1 >> 24)] ^ rk[6];
- t[3] = Te0[(s3) & 0xff] ^ Te1[(s0 >> 8) & 0xff] ^ Te2[(s1 >> 16) & 0xff] ^ Te3[(s2 >> 24)] ^ rk[7];
-#endif
- s0 = t[0];
- s1 = t[1];
- s2 = t[2];
- s3 = t[3];
-
- /*
- * Nr - 2 full rounds:
- */
- for (rk += 8, r = key->rounds - 2; r > 0; rk += 4, r--) {
-#if defined(AES_COMPACT_IN_INNER_ROUNDS)
- t[0] = (u32)Te4[(s0) & 0xff] ^ (u32)Te4[(s1 >> 8) & 0xff] << 8 ^ (u32)Te4[(s2 >> 16) & 0xff] << 16 ^ (u32)Te4[(s3 >> 24)] << 24;
- t[1] = (u32)Te4[(s1) & 0xff] ^ (u32)Te4[(s2 >> 8) & 0xff] << 8 ^ (u32)Te4[(s3 >> 16) & 0xff] << 16 ^ (u32)Te4[(s0 >> 24)] << 24;
- t[2] = (u32)Te4[(s2) & 0xff] ^ (u32)Te4[(s3 >> 8) & 0xff] << 8 ^ (u32)Te4[(s0 >> 16) & 0xff] << 16 ^ (u32)Te4[(s1 >> 24)] << 24;
- t[3] = (u32)Te4[(s3) & 0xff] ^ (u32)Te4[(s0 >> 8) & 0xff] << 8 ^ (u32)Te4[(s1 >> 16) & 0xff] << 16 ^ (u32)Te4[(s2 >> 24)] << 24;
-
- /* now do the linear transform using words */
- {
- int i;
- u32 r0, r1, r2;
-
- for (i = 0; i < 4; i++) {
- r0 = t[i];
- r1 = r0 & 0x80808080;
- r2 = ((r0 & 0x7f7f7f7f) << 1) ^ ((r1 - (r1 >> 7)) & 0x1b1b1b1b);
-#if defined(ROTATE)
- t[i] = r2 ^ ROTATE(r2, 24) ^ ROTATE(r0, 24) ^ ROTATE(r0, 16) ^ ROTATE(r0, 8);
-#else
- t[i] = r2 ^ ((r2 ^ r0) << 24) ^ ((r2 ^ r0) >> 8) ^ (r0 << 16) ^ (r0 >> 16) ^ (r0 << 8) ^ (r0 >> 24);
-#endif
- t[i] ^= rk[i];
- }
- }
-#else
- t[0] = Te0[(s0) & 0xff] ^ Te1[(s1 >> 8) & 0xff] ^ Te2[(s2 >> 16) & 0xff] ^ Te3[(s3 >> 24)] ^ rk[0];
- t[1] = Te0[(s1) & 0xff] ^ Te1[(s2 >> 8) & 0xff] ^ Te2[(s3 >> 16) & 0xff] ^ Te3[(s0 >> 24)] ^ rk[1];
- t[2] = Te0[(s2) & 0xff] ^ Te1[(s3 >> 8) & 0xff] ^ Te2[(s0 >> 16) & 0xff] ^ Te3[(s1 >> 24)] ^ rk[2];
- t[3] = Te0[(s3) & 0xff] ^ Te1[(s0 >> 8) & 0xff] ^ Te2[(s1 >> 16) & 0xff] ^ Te3[(s2 >> 24)] ^ rk[3];
-#endif
- s0 = t[0];
- s1 = t[1];
- s2 = t[2];
- s3 = t[3];
- }
- /*
- * apply last round and
- * map cipher state to byte array block:
- */
-#if defined(AES_COMPACT_IN_OUTER_ROUNDS)
- prefetch256(Te4);
-
- *(u32 *)(out + 0) = (u32)Te4[(s0) & 0xff] ^ (u32)Te4[(s1 >> 8) & 0xff] << 8 ^ (u32)Te4[(s2 >> 16) & 0xff] << 16 ^ (u32)Te4[(s3 >> 24)] << 24 ^ rk[0];
- *(u32 *)(out + 4) = (u32)Te4[(s1) & 0xff] ^ (u32)Te4[(s2 >> 8) & 0xff] << 8 ^ (u32)Te4[(s3 >> 16) & 0xff] << 16 ^ (u32)Te4[(s0 >> 24)] << 24 ^ rk[1];
- *(u32 *)(out + 8) = (u32)Te4[(s2) & 0xff] ^ (u32)Te4[(s3 >> 8) & 0xff] << 8 ^ (u32)Te4[(s0 >> 16) & 0xff] << 16 ^ (u32)Te4[(s1 >> 24)] << 24 ^ rk[2];
- *(u32 *)(out + 12) = (u32)Te4[(s3) & 0xff] ^ (u32)Te4[(s0 >> 8) & 0xff] << 8 ^ (u32)Te4[(s1 >> 16) & 0xff] << 16 ^ (u32)Te4[(s2 >> 24)] << 24 ^ rk[3];
-#else
- *(u32 *)(out + 0) = (Te2[(s0) & 0xff] & 0x000000ffU) ^ (Te3[(s1 >> 8) & 0xff] & 0x0000ff00U) ^ (Te0[(s2 >> 16) & 0xff] & 0x00ff0000U) ^ (Te1[(s3 >> 24)] & 0xff000000U) ^ rk[0];
- *(u32 *)(out + 4) = (Te2[(s1) & 0xff] & 0x000000ffU) ^ (Te3[(s2 >> 8) & 0xff] & 0x0000ff00U) ^ (Te0[(s3 >> 16) & 0xff] & 0x00ff0000U) ^ (Te1[(s0 >> 24)] & 0xff000000U) ^ rk[1];
- *(u32 *)(out + 8) = (Te2[(s2) & 0xff] & 0x000000ffU) ^ (Te3[(s3 >> 8) & 0xff] & 0x0000ff00U) ^ (Te0[(s0 >> 16) & 0xff] & 0x00ff0000U) ^ (Te1[(s1 >> 24)] & 0xff000000U) ^ rk[2];
- *(u32 *)(out + 12) = (Te2[(s3) & 0xff] & 0x000000ffU) ^ (Te3[(s0 >> 8) & 0xff] & 0x0000ff00U) ^ (Te0[(s1 >> 16) & 0xff] & 0x00ff0000U) ^ (Te1[(s2 >> 24)] & 0xff000000U) ^ rk[3];
-#endif
-}
-
-/*
- * Decrypt a single block
- * in and out can overlap
- */
-void AES_decrypt(const unsigned char *in, unsigned char *out,
- const AES_KEY *key)
-{
-
- const u32 *rk;
- u32 s0, s1, s2, s3, t[4];
- int r;
-
- assert(in && out && key);
- rk = key->rd_key;
-
- /*
- * map byte array block to cipher state
- * and add initial round key:
- */
- s0 = GETU32(in) ^ rk[0];
- s1 = GETU32(in + 4) ^ rk[1];
- s2 = GETU32(in + 8) ^ rk[2];
- s3 = GETU32(in + 12) ^ rk[3];
-
-#if defined(AES_COMPACT_IN_OUTER_ROUNDS)
- prefetch256(Td4);
-
- t[0] = (u32)Td4[(s0) & 0xff] ^ (u32)Td4[(s3 >> 8) & 0xff] << 8 ^ (u32)Td4[(s2 >> 16) & 0xff] << 16 ^ (u32)Td4[(s1 >> 24)] << 24;
- t[1] = (u32)Td4[(s1) & 0xff] ^ (u32)Td4[(s0 >> 8) & 0xff] << 8 ^ (u32)Td4[(s3 >> 16) & 0xff] << 16 ^ (u32)Td4[(s2 >> 24)] << 24;
- t[2] = (u32)Td4[(s2) & 0xff] ^ (u32)Td4[(s1 >> 8) & 0xff] << 8 ^ (u32)Td4[(s0 >> 16) & 0xff] << 16 ^ (u32)Td4[(s3 >> 24)] << 24;
- t[3] = (u32)Td4[(s3) & 0xff] ^ (u32)Td4[(s2 >> 8) & 0xff] << 8 ^ (u32)Td4[(s1 >> 16) & 0xff] << 16 ^ (u32)Td4[(s0 >> 24)] << 24;
-
- /* now do the linear transform using words */
- {
- int i;
- u32 tp1, tp2, tp4, tp8, tp9, tpb, tpd, tpe, m;
-
- for (i = 0; i < 4; i++) {
- tp1 = t[i];
- m = tp1 & 0x80808080;
- tp2 = ((tp1 & 0x7f7f7f7f) << 1) ^ ((m - (m >> 7)) & 0x1b1b1b1b);
- m = tp2 & 0x80808080;
- tp4 = ((tp2 & 0x7f7f7f7f) << 1) ^ ((m - (m >> 7)) & 0x1b1b1b1b);
- m = tp4 & 0x80808080;
- tp8 = ((tp4 & 0x7f7f7f7f) << 1) ^ ((m - (m >> 7)) & 0x1b1b1b1b);
- tp9 = tp8 ^ tp1;
- tpb = tp9 ^ tp2;
- tpd = tp9 ^ tp4;
- tpe = tp8 ^ tp4 ^ tp2;
-#if defined(ROTATE)
- t[i] = tpe ^ ROTATE(tpd, 16) ^ ROTATE(tp9, 8) ^ ROTATE(tpb, 24);
-#else
- t[i] = tpe ^ (tpd >> 16) ^ (tpd << 16) ^ (tp9 >> 24) ^ (tp9 << 8) ^ (tpb >> 8) ^ (tpb << 24);
-#endif
- t[i] ^= rk[4 + i];
- }
- }
-#else
- t[0] = Td0[(s0) & 0xff] ^ Td1[(s3 >> 8) & 0xff] ^ Td2[(s2 >> 16) & 0xff] ^ Td3[(s1 >> 24)] ^ rk[4];
- t[1] = Td0[(s1) & 0xff] ^ Td1[(s0 >> 8) & 0xff] ^ Td2[(s3 >> 16) & 0xff] ^ Td3[(s2 >> 24)] ^ rk[5];
- t[2] = Td0[(s2) & 0xff] ^ Td1[(s1 >> 8) & 0xff] ^ Td2[(s0 >> 16) & 0xff] ^ Td3[(s3 >> 24)] ^ rk[6];
- t[3] = Td0[(s3) & 0xff] ^ Td1[(s2 >> 8) & 0xff] ^ Td2[(s1 >> 16) & 0xff] ^ Td3[(s0 >> 24)] ^ rk[7];
-#endif
- s0 = t[0];
- s1 = t[1];
- s2 = t[2];
- s3 = t[3];
-
- /*
- * Nr - 2 full rounds:
- */
- for (rk += 8, r = key->rounds - 2; r > 0; rk += 4, r--) {
-#if defined(AES_COMPACT_IN_INNER_ROUNDS)
- t[0] = (u32)Td4[(s0) & 0xff] ^ (u32)Td4[(s3 >> 8) & 0xff] << 8 ^ (u32)Td4[(s2 >> 16) & 0xff] << 16 ^ (u32)Td4[(s1 >> 24)] << 24;
- t[1] = (u32)Td4[(s1) & 0xff] ^ (u32)Td4[(s0 >> 8) & 0xff] << 8 ^ (u32)Td4[(s3 >> 16) & 0xff] << 16 ^ (u32)Td4[(s2 >> 24)] << 24;
- t[2] = (u32)Td4[(s2) & 0xff] ^ (u32)Td4[(s1 >> 8) & 0xff] << 8 ^ (u32)Td4[(s0 >> 16) & 0xff] << 16 ^ (u32)Td4[(s3 >> 24)] << 24;
- t[3] = (u32)Td4[(s3) & 0xff] ^ (u32)Td4[(s2 >> 8) & 0xff] << 8 ^ (u32)Td4[(s1 >> 16) & 0xff] << 16 ^ (u32)Td4[(s0 >> 24)] << 24;
-
- /* now do the linear transform using words */
- {
- int i;
- u32 tp1, tp2, tp4, tp8, tp9, tpb, tpd, tpe, m;
-
- for (i = 0; i < 4; i++) {
- tp1 = t[i];
- m = tp1 & 0x80808080;
- tp2 = ((tp1 & 0x7f7f7f7f) << 1) ^ ((m - (m >> 7)) & 0x1b1b1b1b);
- m = tp2 & 0x80808080;
- tp4 = ((tp2 & 0x7f7f7f7f) << 1) ^ ((m - (m >> 7)) & 0x1b1b1b1b);
- m = tp4 & 0x80808080;
- tp8 = ((tp4 & 0x7f7f7f7f) << 1) ^ ((m - (m >> 7)) & 0x1b1b1b1b);
- tp9 = tp8 ^ tp1;
- tpb = tp9 ^ tp2;
- tpd = tp9 ^ tp4;
- tpe = tp8 ^ tp4 ^ tp2;
-#if defined(ROTATE)
- t[i] = tpe ^ ROTATE(tpd, 16) ^ ROTATE(tp9, 8) ^ ROTATE(tpb, 24);
-#else
- t[i] = tpe ^ (tpd >> 16) ^ (tpd << 16) ^ (tp9 >> 24) ^ (tp9 << 8) ^ (tpb >> 8) ^ (tpb << 24);
-#endif
- t[i] ^= rk[i];
- }
- }
-#else
- t[0] = Td0[(s0) & 0xff] ^ Td1[(s3 >> 8) & 0xff] ^ Td2[(s2 >> 16) & 0xff] ^ Td3[(s1 >> 24)] ^ rk[0];
- t[1] = Td0[(s1) & 0xff] ^ Td1[(s0 >> 8) & 0xff] ^ Td2[(s3 >> 16) & 0xff] ^ Td3[(s2 >> 24)] ^ rk[1];
- t[2] = Td0[(s2) & 0xff] ^ Td1[(s1 >> 8) & 0xff] ^ Td2[(s0 >> 16) & 0xff] ^ Td3[(s3 >> 24)] ^ rk[2];
- t[3] = Td0[(s3) & 0xff] ^ Td1[(s2 >> 8) & 0xff] ^ Td2[(s1 >> 16) & 0xff] ^ Td3[(s0 >> 24)] ^ rk[3];
-#endif
- s0 = t[0];
- s1 = t[1];
- s2 = t[2];
- s3 = t[3];
- }
- /*
- * apply last round and
- * map cipher state to byte array block:
- */
- prefetch256(Td4);
-
- *(u32 *)(out + 0) = ((u32)Td4[(s0) & 0xff]) ^ ((u32)Td4[(s3 >> 8) & 0xff] << 8) ^ ((u32)Td4[(s2 >> 16) & 0xff] << 16) ^ ((u32)Td4[(s1 >> 24)] << 24) ^ rk[0];
- *(u32 *)(out + 4) = ((u32)Td4[(s1) & 0xff]) ^ ((u32)Td4[(s0 >> 8) & 0xff] << 8) ^ ((u32)Td4[(s3 >> 16) & 0xff] << 16) ^ ((u32)Td4[(s2 >> 24)] << 24) ^ rk[1];
- *(u32 *)(out + 8) = ((u32)Td4[(s2) & 0xff]) ^ ((u32)Td4[(s1 >> 8) & 0xff] << 8) ^ ((u32)Td4[(s0 >> 16) & 0xff] << 16) ^ ((u32)Td4[(s3 >> 24)] << 24) ^ rk[2];
- *(u32 *)(out + 12) = ((u32)Td4[(s3) & 0xff]) ^ ((u32)Td4[(s2 >> 8) & 0xff] << 8) ^ ((u32)Td4[(s1 >> 16) & 0xff] << 16) ^ ((u32)Td4[(s0 >> 24)] << 24) ^ rk[3];
-}
diff --git a/deps/openssl/openssl/crypto/aes/asm/aesni-mb-x86_64.pl b/deps/openssl/openssl/crypto/aes/asm/aesni-mb-x86_64.pl
index dde15b1ef7e..87ed95cdf33 100644
--- a/deps/openssl/openssl/crypto/aes/asm/aesni-mb-x86_64.pl
+++ b/deps/openssl/openssl/crypto/aes/asm/aesni-mb-x86_64.pl
@@ -1,5 +1,5 @@
#! /usr/bin/env perl
-# Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved.
+# Copyright 2013-2026 The OpenSSL Project Authors. All Rights Reserved.
#
# Licensed under the Apache License 2.0 (the "License"). You may not use
# this file except in compliance with the License. You can obtain a copy
@@ -80,6 +80,13 @@
$avx = ($2>=3.0) + ($2>3.0);
}
+if (!$avx && `$ENV{CC} -x c /dev/null -dM -E|grep __clang_major__`
+ =~ /#define __clang_major__.([0-9]+)/) {
+ if ($1) {
+ $avx = ($1>=11); #icx started with clang 11
+ }
+}
+
open OUT,"| \"$^X\" \"$xlate\" $flavour \"$output\""
or die "can't call $xlate: $!";
*STDOUT=*OUT;
diff --git a/deps/openssl/openssl/crypto/aes/asm/aesni-sha1-x86_64.pl b/deps/openssl/openssl/crypto/aes/asm/aesni-sha1-x86_64.pl
index 4e8fa1d753d..bc08da94606 100644
--- a/deps/openssl/openssl/crypto/aes/asm/aesni-sha1-x86_64.pl
+++ b/deps/openssl/openssl/crypto/aes/asm/aesni-sha1-x86_64.pl
@@ -1,5 +1,5 @@
#! /usr/bin/env perl
-# Copyright 2011-2024 The OpenSSL Project Authors. All Rights Reserved.
+# Copyright 2011-2026 The OpenSSL Project Authors. All Rights Reserved.
#
# Licensed under the Apache License 2.0 (the "License"). You may not use
# this file except in compliance with the License. You can obtain a copy
@@ -111,6 +111,9 @@
$1>=10);
$avx=1 if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:clang|LLVM) version|.*based on LLVM) ([0-9]+\.[0-9]+)/ && $2>=3.0);
+$avx=1 if (!$avx && `$ENV{CC} -x c /dev/null -dM -E|grep __clang_major__` =~ /#define __clang_major__.([0-9]+)/ &&
+ $1>=11); #icx started with clang 11
+
$shaext=1; ### set to zero if compiling for 1.0.1
$stitched_decrypt=0;
diff --git a/deps/openssl/openssl/crypto/aes/asm/aesni-sha256-x86_64.pl b/deps/openssl/openssl/crypto/aes/asm/aesni-sha256-x86_64.pl
index 39d29ddbb02..6715ba2e11a 100644
--- a/deps/openssl/openssl/crypto/aes/asm/aesni-sha256-x86_64.pl
+++ b/deps/openssl/openssl/crypto/aes/asm/aesni-sha256-x86_64.pl
@@ -1,5 +1,5 @@
#! /usr/bin/env perl
-# Copyright 2013-2024 The OpenSSL Project Authors. All Rights Reserved.
+# Copyright 2013-2026 The OpenSSL Project Authors. All Rights Reserved.
#
# Licensed under the Apache License 2.0 (the "License"). You may not use
# this file except in compliance with the License. You can obtain a copy
@@ -75,6 +75,13 @@
$avx = ($2>=3.0) + ($2>3.0);
}
+if (!$avx && `$ENV{CC} -x c /dev/null -dM -E|grep __clang_major__`
+ =~ /#define __clang_major__.([0-9]+)/) {
+ if ($1) {
+ $avx = ($1>=11); #icx started with clang 11
+ }
+}
+
$shaext=$avx; ### set to zero if compiling for 1.0.1
$avx=1 if (!$shaext && $avx);
diff --git a/deps/openssl/openssl/crypto/aes/asm/aesni-xts-avx512.pl b/deps/openssl/openssl/crypto/aes/asm/aesni-xts-avx512.pl
index d89564112e3..16f2bbe7896 100644
--- a/deps/openssl/openssl/crypto/aes/asm/aesni-xts-avx512.pl
+++ b/deps/openssl/openssl/crypto/aes/asm/aesni-xts-avx512.pl
@@ -59,6 +59,13 @@
}
}
+if (!$avx512vaes && `$ENV{CC} -x c /dev/null -dM -E|grep __clang_major__`
+ =~ /#define __clang_major__.([0-9]+)/) {
+ if ($1) {
+ $avx512vaes = ($1>=11); #icx started with clang 11
+ }
+}
+
open OUT,"| \"$^X\" \"$xlate\" $flavour \"$output\""
or die "can't call $xlate: $!";
*STDOUT=*OUT;
diff --git a/deps/openssl/openssl/crypto/armcap.c b/deps/openssl/openssl/crypto/armcap.c
index 03e47dc5bbf..3005d295cfd 100644
--- a/deps/openssl/openssl/crypto/armcap.c
+++ b/deps/openssl/openssl/crypto/armcap.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2011-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2011-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -408,14 +408,38 @@ void OPENSSL_cpuid_setup(void)
if (OPENSSL_armcap_P & ARMV8_CPUID)
OPENSSL_arm_midr = _armv8_cpuid_probe();
- if ((MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A72) || MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_ARM, ARM_CPU_PART_N1)) && (OPENSSL_armcap_P & ARMV7_NEON)) {
+ if ((OPENSSL_armcap_P & ARMV7_NEON)
+ && (MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A72)
+ || MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_ARM, ARM_CPU_PART_N1)))
OPENSSL_armv8_rsa_neonized = 1;
- }
- if ((MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_ARM, ARM_CPU_PART_V1) || MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_ARM, ARM_CPU_PART_N2) || MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_MICROSOFT, MICROSOFT_CPU_PART_COBALT_100) || MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_ARM, ARM_CPU_PART_V2) || MIDR_IMPLEMENTER(OPENSSL_arm_midr) == ARM_CPU_IMP_AMPERE) && (OPENSSL_armcap_P & ARMV8_SHA3))
+
+ if ((OPENSSL_armcap_P & ARMV8_SHA3)
+ && (MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_ARM, ARM_CPU_PART_V1)
+ || MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_ARM, ARM_CPU_PART_N2)
+ || MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_MICROSOFT, MICROSOFT_CPU_PART_COBALT_100)
+ || MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_ARM, ARM_CPU_PART_V2)
+ || MIDR_IMPLEMENTER(OPENSSL_arm_midr) == ARM_CPU_IMP_AMPERE))
OPENSSL_armcap_P |= ARMV8_UNROLL8_EOR3;
- if ((MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_ARM, ARM_CPU_PART_V1) || MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_ARM, ARM_CPU_PART_V2) || MIDR_IMPLEMENTER(OPENSSL_arm_midr) == ARM_CPU_IMP_AMPERE) && (OPENSSL_armcap_P & ARMV8_SHA3))
+
+ if ((OPENSSL_armcap_P & ARMV8_SHA3)
+ && (MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_ARM, ARM_CPU_PART_V1)
+ || MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_ARM, ARM_CPU_PART_V2)
+ || MIDR_IMPLEMENTER(OPENSSL_arm_midr) == ARM_CPU_IMP_AMPERE))
OPENSSL_armcap_P |= ARMV8_UNROLL12_EOR3;
- if ((MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M1_FIRESTORM) || MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M1_ICESTORM) || MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M1_FIRESTORM_PRO) || MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M1_ICESTORM_PRO) || MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M1_FIRESTORM_MAX) || MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M1_ICESTORM_MAX) || MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M2_AVALANCHE) || MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M2_BLIZZARD) || MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M2_AVALANCHE_PRO) || MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M2_BLIZZARD_PRO) || MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M2_AVALANCHE_MAX) || MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M2_BLIZZARD_MAX)) && (OPENSSL_armcap_P & ARMV8_SHA3))
+
+ if ((OPENSSL_armcap_P & ARMV8_SHA3)
+ && (MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M1_FIRESTORM)
+ || MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M1_ICESTORM)
+ || MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M1_FIRESTORM_PRO)
+ || MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M1_ICESTORM_PRO)
+ || MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M1_FIRESTORM_MAX)
+ || MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M1_ICESTORM_MAX)
+ || MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M2_AVALANCHE)
+ || MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M2_BLIZZARD)
+ || MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M2_AVALANCHE_PRO)
+ || MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M2_BLIZZARD_PRO)
+ || MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M2_AVALANCHE_MAX)
+ || MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M2_BLIZZARD_MAX)))
OPENSSL_armcap_P |= ARMV8_HAVE_SHA3_AND_WORTH_USING;
#endif
}
diff --git a/deps/openssl/openssl/crypto/asn1/a_d2i_fp.c b/deps/openssl/openssl/crypto/asn1/a_d2i_fp.c
index a23dea8ebda..19595683ef9 100644
--- a/deps/openssl/openssl/crypto/asn1/a_d2i_fp.c
+++ b/deps/openssl/openssl/crypto/asn1/a_d2i_fp.c
@@ -139,7 +139,20 @@ int asn1_d2i_read_bio(BIO *in, BUF_MEM **pb)
}
i = BIO_read(in, &(b->data[len]), want);
if (i <= 0) {
- ERR_raise(ERR_LIB_ASN1, ASN1_R_NOT_ENOUGH_DATA);
+ /*
+ * A read error (i < 0), an EOF in the middle of an object
+ * (diff != 0, some bytes already buffered), or an EOF while
+ * still inside an indefinite-length constructed value awaiting
+ * its end-of-contents octets (eos != 0) all mean the input is
+ * truncated. Only a clean EOF at a top-level object boundary
+ * (i == 0, diff == 0, eos == 0) is the normal end of input:
+ * fail without queuing an error so that callers looping over
+ * concatenated DER values (e.g. the libcrypto d2i_*_bio()
+ * consumers in CPython's ssl module) terminate cleanly instead
+ * of seeing a spurious ASN1_R_NOT_ENOUGH_DATA.
+ */
+ if (i < 0 || diff != 0 || eos != 0)
+ ERR_raise(ERR_LIB_ASN1, ASN1_R_NOT_ENOUGH_DATA);
goto err;
}
if (i > 0) {
diff --git a/deps/openssl/openssl/crypto/asn1/a_mbstr.c b/deps/openssl/openssl/crypto/asn1/a_mbstr.c
index ce5618dfd48..9a61f7f1e05 100644
--- a/deps/openssl/openssl/crypto/asn1/a_mbstr.c
+++ b/deps/openssl/openssl/crypto/asn1/a_mbstr.c
@@ -51,12 +51,24 @@ int ASN1_mbstring_ncopy(ASN1_STRING **out, const unsigned char *in, int len,
unsigned char *p;
int nchar;
int (*cpyfunc)(unsigned long, void *) = NULL;
- if (len == -1)
- len = strlen((const char *)in);
+ if (len == -1) {
+ size_t len_s = strlen((const char *)in);
+
+ if (len_s >= INT_MAX) {
+ ERR_raise(ERR_LIB_ASN1, ASN1_R_STRING_TOO_LONG);
+ return -1;
+ }
+ len = (int)len_s;
+ }
if (!mask)
mask = DIRSTRING_TYPE;
- if (len < 0)
+ if (len < 0) {
+ ERR_raise(ERR_LIB_ASN1, ERR_R_PASSED_INVALID_ARGUMENT);
+ return -1;
+ } else if (len >= INT_MAX) {
+ ERR_raise(ERR_LIB_ASN1, ASN1_R_STRING_TOO_LONG);
return -1;
+ }
/* First do a string check and work out the number of characters */
switch (inform) {
@@ -294,7 +306,7 @@ static int out_utf8(unsigned long value, void *arg)
return len;
}
outlen = arg;
- if (*outlen > INT_MAX - len) {
+ if (*outlen >= INT_MAX - len) {
ERR_raise(ERR_LIB_ASN1, ASN1_R_STRING_TOO_LONG);
return -1;
}
diff --git a/deps/openssl/openssl/crypto/asn1/asn1_gen.c b/deps/openssl/openssl/crypto/asn1/asn1_gen.c
index 1c8d3d58594..69fbd6f89e5 100644
--- a/deps/openssl/openssl/crypto/asn1/asn1_gen.c
+++ b/deps/openssl/openssl/crypto/asn1/asn1_gen.c
@@ -426,8 +426,11 @@ static ASN1_TYPE *asn1_multi(int utype, const char *section, X509V3_CTX *cnf,
depth + 1, perr);
if (!typ)
goto bad;
- if (!sk_ASN1_TYPE_push(sk, typ))
+
+ if (!sk_ASN1_TYPE_push(sk, typ)) {
+ ASN1_TYPE_free(typ);
goto bad;
+ }
}
}
diff --git a/deps/openssl/openssl/crypto/bio/bss_file.c b/deps/openssl/openssl/crypto/bio/bss_file.c
index 6b8daeb95f9..023bb458ce5 100644
--- a/deps/openssl/openssl/crypto/bio/bss_file.c
+++ b/deps/openssl/openssl/crypto/bio/bss_file.c
@@ -312,7 +312,13 @@ static long file_ctrl(BIO *b, int cmd, long num, void *ptr)
/* the ptr parameter is actually a FILE ** in this case. */
if (ptr != NULL) {
fpp = (FILE **)ptr;
- *fpp = (FILE *)b->ptr;
+ if (BIO_FLAGS_UPLINK_INTERNAL == 0
+ || b->flags & BIO_FLAGS_UPLINK_INTERNAL) {
+ *fpp = (FILE *)b->ptr;
+ } else { /* avoid returning internal FILE * to the app */
+ *fpp = NULL;
+ ret = 0;
+ }
}
break;
case BIO_CTRL_GET_CLOSE:
diff --git a/deps/openssl/openssl/crypto/bn/asm/rsaz-2k-avx512.pl b/deps/openssl/openssl/crypto/bn/asm/rsaz-2k-avx512.pl
index 27f2e9b4b93..6c0cb566f9d 100644
--- a/deps/openssl/openssl/crypto/bn/asm/rsaz-2k-avx512.pl
+++ b/deps/openssl/openssl/crypto/bn/asm/rsaz-2k-avx512.pl
@@ -1,4 +1,4 @@
-# Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved.
+# Copyright 2020-2026 The OpenSSL Project Authors. All Rights Reserved.
# Copyright (c) 2020, Intel Corporation. All Rights Reserved.
#
# Licensed under the Apache License 2.0 (the "License"). You may not use
@@ -64,6 +64,13 @@
}
}
+if (!$avx512ifma && `$ENV{CC} -x c /dev/null -dM -E|grep __clang_major__`
+ =~ /#define __clang_major__.([0-9]+)/) {
+ if ($1) {
+ $avx512ifma = ($1>=11); #icx started with clang 11
+ }
+}
+
open OUT,"| \"$^X\" \"$xlate\" $flavour \"$output\""
or die "can't call $xlate: $!";
*STDOUT=*OUT;
diff --git a/deps/openssl/openssl/crypto/bn/asm/rsaz-2k-avxifma.pl b/deps/openssl/openssl/crypto/bn/asm/rsaz-2k-avxifma.pl
index b84a3e4f195..52d9781834d 100644
--- a/deps/openssl/openssl/crypto/bn/asm/rsaz-2k-avxifma.pl
+++ b/deps/openssl/openssl/crypto/bn/asm/rsaz-2k-avxifma.pl
@@ -39,6 +39,13 @@
$avxifma = ($ver>=16.0);
}
+if (!$avxifma && `$ENV{CC} -x c /dev/null -dM -E|grep __clang_major__`
+ =~ /#define __clang_major__.([0-9]+)/) {
+ if ($1) {
+ $avxifma = ($1>=16);
+ }
+}
+
if ($win64 && ($flavour =~ /nasm/ || $ENV{ASM} =~ /nasm/) &&
`nasm -v 2>&1` =~ /NASM version ([0-9]+)\.([0-9]+)(?:\.([0-9]+))?(rc[0-9]+)?/) {
my $ver = $1 + $2/100.0 + $3/10000.0; # 3.1.0->3.01, 3.10.1->3.1001
diff --git a/deps/openssl/openssl/crypto/bn/asm/rsaz-3k-avx512.pl b/deps/openssl/openssl/crypto/bn/asm/rsaz-3k-avx512.pl
index b2ed3e8ca7c..fe5b1ebefab 100644
--- a/deps/openssl/openssl/crypto/bn/asm/rsaz-3k-avx512.pl
+++ b/deps/openssl/openssl/crypto/bn/asm/rsaz-3k-avx512.pl
@@ -1,4 +1,4 @@
-# Copyright 2021-2024 The OpenSSL Project Authors. All Rights Reserved.
+# Copyright 2021-2026 The OpenSSL Project Authors. All Rights Reserved.
# Copyright (c) 2021, Intel Corporation. All Rights Reserved.
#
# Licensed under the Apache License 2.0 (the "License"). You may not use
@@ -63,6 +63,13 @@
}
}
+if (!$avx512ifma && `$ENV{CC} -x c /dev/null -dM -E|grep __clang_major__`
+ =~ /#define __clang_major__.([0-9]+)/) {
+ if ($1) {
+ $avx512ifma = ($1>=11); #icx started with clang 11
+ }
+}
+
open OUT,"| \"$^X\" \"$xlate\" $flavour \"$output\""
or die "can't call $xlate: $!";
*STDOUT=*OUT;
diff --git a/deps/openssl/openssl/crypto/bn/asm/rsaz-3k-avxifma.pl b/deps/openssl/openssl/crypto/bn/asm/rsaz-3k-avxifma.pl
index 1948d726b38..aa11c546af6 100644
--- a/deps/openssl/openssl/crypto/bn/asm/rsaz-3k-avxifma.pl
+++ b/deps/openssl/openssl/crypto/bn/asm/rsaz-3k-avxifma.pl
@@ -38,6 +38,13 @@
$avxifma = ($ver>=16.0);
}
+if (!$avxifma && `$ENV{CC} -x c /dev/null -dM -E|grep __clang_major__`
+ =~ /#define __clang_major__.([0-9]+)/) {
+ if ($1) {
+ $avxifma = ($1>=16);
+ }
+}
+
if ($win64 && ($flavour =~ /nasm/ || $ENV{ASM} =~ /nasm/) &&
`nasm -v 2>&1` =~ /NASM version ([2-9]\.[0-9]+)(?:\.([0-9]+))?(rc[0-9]+)?/) {
$avxifma = ($1>2.16) + ($1==2.16 && ((!defined($2) && !defined($3)) || (defined($2))));
diff --git a/deps/openssl/openssl/crypto/bn/asm/rsaz-4k-avx512.pl b/deps/openssl/openssl/crypto/bn/asm/rsaz-4k-avx512.pl
index b76ab5904c8..b07180f6fec 100644
--- a/deps/openssl/openssl/crypto/bn/asm/rsaz-4k-avx512.pl
+++ b/deps/openssl/openssl/crypto/bn/asm/rsaz-4k-avx512.pl
@@ -1,4 +1,4 @@
-# Copyright 2021-2024 The OpenSSL Project Authors. All Rights Reserved.
+# Copyright 2021-2026 The OpenSSL Project Authors. All Rights Reserved.
# Copyright (c) 2021, Intel Corporation. All Rights Reserved.
#
# Licensed under the Apache License 2.0 (the "License"). You may not use
@@ -63,6 +63,13 @@
}
}
+if (!$avx512ifma && `$ENV{CC} -x c /dev/null -dM -E|grep __clang_major__`
+ =~ /#define __clang_major__.([0-9]+)/) {
+ if ($1) {
+ $avx512ifma = ($1>=11); #icx started with clang 11
+ }
+}
+
open OUT,"| \"$^X\" \"$xlate\" $flavour \"$output\""
or die "can't call $xlate: $!";
*STDOUT=*OUT;
diff --git a/deps/openssl/openssl/crypto/bn/asm/rsaz-4k-avxifma.pl b/deps/openssl/openssl/crypto/bn/asm/rsaz-4k-avxifma.pl
index 9f299430cef..28a447800d0 100644
--- a/deps/openssl/openssl/crypto/bn/asm/rsaz-4k-avxifma.pl
+++ b/deps/openssl/openssl/crypto/bn/asm/rsaz-4k-avxifma.pl
@@ -38,6 +38,13 @@
$avxifma = ($ver>=16.0);
}
+if (!$avxifma && `$ENV{CC} -x c /dev/null -dM -E|grep __clang_major__`
+ =~ /#define __clang_major__.([0-9]+)/) {
+ if ($1) {
+ $avxifma = ($1>=16);
+ }
+}
+
if ($win64 && ($flavour =~ /nasm/ || $ENV{ASM} =~ /nasm/) &&
`nasm -v 2>&1` =~ /NASM version ([2-9]\.[0-9]+)(?:\.([0-9]+))?(rc[0-9]+)?/) {
$avxifma = ($1>2.16) + ($1==2.16 && ((!defined($2) && !defined($3)) || (defined($2))));
diff --git a/deps/openssl/openssl/crypto/bn/asm/rsaz-avx2.pl b/deps/openssl/openssl/crypto/bn/asm/rsaz-avx2.pl
index 59b9c89b5be..29243a7c0b7 100755
--- a/deps/openssl/openssl/crypto/bn/asm/rsaz-avx2.pl
+++ b/deps/openssl/openssl/crypto/bn/asm/rsaz-avx2.pl
@@ -1,5 +1,5 @@
#! /usr/bin/env perl
-# Copyright 2013-2024 The OpenSSL Project Authors. All Rights Reserved.
+# Copyright 2013-2026 The OpenSSL Project Authors. All Rights Reserved.
# Copyright (c) 2012, Intel Corporation. All Rights Reserved.
#
# Licensed under the Apache License 2.0 (the "License"). You may not use
@@ -73,6 +73,14 @@
$addx = ($ver>=3.03);
}
+if (!$avx && `$ENV{CC} -x c /dev/null -dM -E|grep __clang_major__`
+ =~ /#define __clang_major__.([0-9]+)/) {
+ if ($1) {
+ $addx = ($1>=11); #icx started with clang 11
+ $avx = ($1>=11);
+ }
+}
+
open OUT,"| \"$^X\" \"$xlate\" $flavour \"$output\""
or die "can't call $xlate: $!";
*STDOUT = *OUT;
diff --git a/deps/openssl/openssl/crypto/bn/asm/rsaz-x86_64.pl b/deps/openssl/openssl/crypto/bn/asm/rsaz-x86_64.pl
index 64acf8f0d84..3ceacea1d33 100755
--- a/deps/openssl/openssl/crypto/bn/asm/rsaz-x86_64.pl
+++ b/deps/openssl/openssl/crypto/bn/asm/rsaz-x86_64.pl
@@ -1,5 +1,5 @@
#! /usr/bin/env perl
-# Copyright 2013-2024 The OpenSSL Project Authors. All Rights Reserved.
+# Copyright 2013-2026 The OpenSSL Project Authors. All Rights Reserved.
# Copyright (c) 2012, Intel Corporation. All Rights Reserved.
#
# Licensed under the Apache License 2.0 (the "License"). You may not use
@@ -90,6 +90,13 @@
$addx = ($ver>=3.03);
}
+if (!$addx && `$ENV{CC} -x c /dev/null -dM -E|grep __clang_major__`
+ =~ /#define __clang_major__.([0-9]+)/) {
+ if ($1) {
+ $addx = ($1>=11); #icx started with clang 11
+ }
+}
+
($out, $inp, $mod) = ("%rdi", "%rsi", "%rbp"); # common internal API
{
my ($out,$inp,$mod,$n0,$times) = ("%rdi","%rsi","%rdx","%rcx","%r8d");
diff --git a/deps/openssl/openssl/crypto/bn/asm/x86_64-mont.pl b/deps/openssl/openssl/crypto/bn/asm/x86_64-mont.pl
index 140072b899d..9c7b3091f43 100755
--- a/deps/openssl/openssl/crypto/bn/asm/x86_64-mont.pl
+++ b/deps/openssl/openssl/crypto/bn/asm/x86_64-mont.pl
@@ -1,5 +1,5 @@
#! /usr/bin/env perl
-# Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved.
+# Copyright 2005-2026 The OpenSSL Project Authors. All Rights Reserved.
#
# Licensed under the Apache License 2.0 (the "License"). You may not use
# this file except in compliance with the License. You can obtain a copy
@@ -82,6 +82,13 @@
$addx = ($ver>=3.03);
}
+if (!$addx && `$ENV{CC} -x c /dev/null -dM -E|grep __clang_major__`
+ =~ /#define __clang_major__.([0-9]+)/) {
+ if ($1) {
+ $addx = ($1>=11); #icx started with clang 11
+ }
+}
+
# int bn_mul_mont(
$rp="%rdi"; # BN_ULONG *rp,
$ap="%rsi"; # const BN_ULONG *ap,
diff --git a/deps/openssl/openssl/crypto/bn/asm/x86_64-mont5.pl b/deps/openssl/openssl/crypto/bn/asm/x86_64-mont5.pl
index e06d13d74ae..52f95a48531 100755
--- a/deps/openssl/openssl/crypto/bn/asm/x86_64-mont5.pl
+++ b/deps/openssl/openssl/crypto/bn/asm/x86_64-mont5.pl
@@ -1,5 +1,5 @@
#! /usr/bin/env perl
-# Copyright 2011-2024 The OpenSSL Project Authors. All Rights Reserved.
+# Copyright 2011-2026 The OpenSSL Project Authors. All Rights Reserved.
#
# Licensed under the Apache License 2.0 (the "License"). You may not use
# this file except in compliance with the License. You can obtain a copy
@@ -69,6 +69,13 @@
$addx = ($ver>=3.03);
}
+if (!$addx && `$ENV{CC} -x c /dev/null -dM -E|grep __clang_major__`
+ =~ /#define __clang_major__.([0-9]+)/) {
+ if ($1) {
+ $addx = ($1>=11); #icx started with clang 11
+ }
+}
+
# int bn_mul_mont_gather5(
$rp="%rdi"; # BN_ULONG *rp,
$ap="%rsi"; # const BN_ULONG *ap,
diff --git a/deps/openssl/openssl/crypto/bn/bn_add.c b/deps/openssl/openssl/crypto/bn/bn_add.c
index 38de39d1b8a..9c028269840 100644
--- a/deps/openssl/openssl/crypto/bn/bn_add.c
+++ b/deps/openssl/openssl/crypto/bn/bn_add.c
@@ -1,5 +1,5 @@
/*
- * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -97,6 +97,8 @@ int BN_uadd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b)
return 0;
r->top = max;
+ if (max == 0)
+ goto end;
ap = a->d;
bp = b->d;
@@ -116,6 +118,7 @@ int BN_uadd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b)
*rp = carry;
r->top += carry;
+end:
r->neg = 0;
bn_check_top(r);
return 1;
@@ -143,6 +146,9 @@ int BN_usub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b)
if (bn_wexpand(r, max) == NULL)
return 0;
+ if (max == 0)
+ goto end;
+
ap = a->d;
bp = b->d;
rp = r->d;
@@ -162,6 +168,7 @@ int BN_usub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b)
while (max && *--rp == 0)
max--;
+end:
r->top = max;
r->neg = 0;
bn_pollute(r);
diff --git a/deps/openssl/openssl/crypto/bn/bn_exp.c b/deps/openssl/openssl/crypto/bn/bn_exp.c
index 44931f80380..ddcd89e2d4b 100644
--- a/deps/openssl/openssl/crypto/bn/bn_exp.c
+++ b/deps/openssl/openssl/crypto/bn/bn_exp.c
@@ -552,7 +552,7 @@ static int MOD_EXP_CTIME_COPY_FROM_PREBUF(BIGNUM *b, int top,
BN_ULONG acc = 0;
for (j = 0; j < width; j++) {
- acc |= table[j] & ((BN_ULONG)0 - (constant_time_eq_int(j, idx) & 1));
+ acc |= table[j] & value_barrier_bn((BN_ULONG)0 - (constant_time_eq_int(j, idx) & 1));
}
b->d[i] = acc;
@@ -573,8 +573,9 @@ static int MOD_EXP_CTIME_COPY_FROM_PREBUF(BIGNUM *b, int top,
BN_ULONG acc = 0;
for (j = 0; j < xstride; j++) {
- acc |= ((table[j + 0 * xstride] & y0) | (table[j + 1 * xstride] & y1) | (table[j + 2 * xstride] & y2) | (table[j + 3 * xstride] & y3))
- & ((BN_ULONG)0 - (constant_time_eq_int(j, idx) & 1));
+ acc |= ((table[j + 0 * xstride] & value_barrier_bn(y0)) | (table[j + 1 * xstride] & value_barrier_bn(y1))
+ | (table[j + 2 * xstride] & value_barrier_bn(y2)) | (table[j + 3 * xstride] & value_barrier_bn(y3)))
+ & value_barrier_bn((BN_ULONG)0 - (constant_time_eq_int(j, idx) & 1));
}
b->d[i] = acc;
diff --git a/deps/openssl/openssl/crypto/bn/bn_lib.c b/deps/openssl/openssl/crypto/bn/bn_lib.c
index 93d54fd0a6e..7961906f9ae 100644
--- a/deps/openssl/openssl/crypto/bn/bn_lib.c
+++ b/deps/openssl/openssl/crypto/bn/bn_lib.c
@@ -1,5 +1,5 @@
/*
- * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -707,19 +707,37 @@ int BN_ucmp(const BIGNUM *a, const BIGNUM *b)
int i;
BN_ULONG t1, t2, *ap, *bp;
+ /*
+ * As it is a public API function, we should handle NULL parameters in
+ * some way. The function can’t return an error, so let’s define that NULL
+ * is less than any BIGNUM.
+ */
+ if (!ossl_assert(a != NULL && b != NULL))
+ return (b == NULL) - (a == NULL);
+
ap = a->d;
bp = b->d;
if (BN_get_flags(a, BN_FLG_CONSTTIME)
- && a->top == b->top) {
+ || BN_get_flags(b, BN_FLG_CONSTTIME)) {
int res = 0;
+ int min_top = a->top < b->top ? a->top : b->top;
- for (i = 0; i < b->top; i++) {
+ for (i = 0; i < min_top; i++) {
res = constant_time_select_int(constant_time_lt_bn(ap[i], bp[i]),
-1, res);
res = constant_time_select_int(constant_time_lt_bn(bp[i], ap[i]),
1, res);
}
+
+ for (i = min_top; i < a->top; ++i)
+ res = constant_time_select_int((int)constant_time_is_zero_bn(ap[i]),
+ res, 1);
+
+ for (i = min_top; i < b->top; ++i)
+ res = constant_time_select_int((int)constant_time_is_zero_bn(bp[i]),
+ res, -1);
+
return res;
}
@@ -948,11 +966,11 @@ void BN_consttime_swap(BN_ULONG condition, BIGNUM *a, BIGNUM *b, int nwords)
condition = ((~condition & ((condition - 1))) >> (BN_BITS2 - 1)) - 1;
- t = (a->top ^ b->top) & condition;
+ t = (a->top ^ b->top) & value_barrier_bn(condition);
a->top ^= t;
b->top ^= t;
- t = (a->neg ^ b->neg) & condition;
+ t = (a->neg ^ b->neg) & value_barrier_bn(condition);
a->neg ^= t;
b->neg ^= t;
@@ -980,13 +998,13 @@ void BN_consttime_swap(BN_ULONG condition, BIGNUM *a, BIGNUM *b, int nwords)
#define BN_CONSTTIME_SWAP_FLAGS (BN_FLG_CONSTTIME | BN_FLG_FIXED_TOP)
- t = ((a->flags ^ b->flags) & BN_CONSTTIME_SWAP_FLAGS) & condition;
+ t = ((a->flags ^ b->flags) & BN_CONSTTIME_SWAP_FLAGS) & value_barrier_bn(condition);
a->flags ^= t;
b->flags ^= t;
/* conditionally swap the data */
for (i = 0; i < nwords; i++) {
- t = (a->d[i] ^ b->d[i]) & condition;
+ t = (a->d[i] ^ b->d[i]) & value_barrier_bn(condition);
a->d[i] ^= t;
b->d[i] ^= t;
}
diff --git a/deps/openssl/openssl/crypto/chacha/asm/chacha-x86.pl b/deps/openssl/openssl/crypto/chacha/asm/chacha-x86.pl
index a1ea4ea461b..b95d4df3797 100755
--- a/deps/openssl/openssl/crypto/chacha/asm/chacha-x86.pl
+++ b/deps/openssl/openssl/crypto/chacha/asm/chacha-x86.pl
@@ -1,5 +1,5 @@
#! /usr/bin/env perl
-# Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved.
+# Copyright 2016-2026 The OpenSSL Project Authors. All Rights Reserved.
#
# Licensed under the Apache License 2.0 (the "License"). You may not use
# this file except in compliance with the License. You can obtain a copy
@@ -64,6 +64,10 @@
`$ENV{CC} -v 2>&1` =~ /((?:clang|LLVM) version|based on LLVM) ([0-9]+\.[0-9]+)/ &&
$2>=3.0); # first version supporting AVX
+$ymm=1 if ($xmm && !$ymm &&
+ `$ENV{CC} -x c /dev/null -dM -E|grep __clang_major__` =~ /#define __clang_major__.([0-9]+)/ &&
+ $1>=11); #icx started with clang 11
+
$a="eax";
($b,$b_)=("ebx","ebp");
($c,$c_)=("ecx","esi");
diff --git a/deps/openssl/openssl/crypto/chacha/asm/chacha-x86_64.pl b/deps/openssl/openssl/crypto/chacha/asm/chacha-x86_64.pl
index d46bc03b3ee..69e5319ad43 100755
--- a/deps/openssl/openssl/crypto/chacha/asm/chacha-x86_64.pl
+++ b/deps/openssl/openssl/crypto/chacha/asm/chacha-x86_64.pl
@@ -1,5 +1,5 @@
#! /usr/bin/env perl
-# Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved.
+# Copyright 2016-2026 The OpenSSL Project Authors. All Rights Reserved.
#
# Licensed under the Apache License 2.0 (the "License"). You may not use
# this file except in compliance with the License. You can obtain a copy
@@ -91,6 +91,13 @@
$avx = ($2>=3.0) + ($2>3.0);
}
+if (!$avx && `$ENV{CC} -x c /dev/null -dM -E|grep __clang_major__`
+ =~ /#define __clang_major__.([0-9]+)/) {
+ if ($1) {
+ $avx = ($1>=11); #icx started with clang 11
+ }
+}
+
open OUT,"| \"$^X\" \"$xlate\" $flavour \"$output\""
or die "can't call $xlate: $!";
*STDOUT=*OUT;
diff --git a/deps/openssl/openssl/crypto/cmp/cmp_protect.c b/deps/openssl/openssl/crypto/cmp/cmp_protect.c
index 1c8d2135fda..110693b8403 100644
--- a/deps/openssl/openssl/crypto/cmp/cmp_protect.c
+++ b/deps/openssl/openssl/crypto/cmp/cmp_protect.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2007-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved.
* Copyright Nokia 2007-2019
* Copyright Siemens AG 2015-2019
*
@@ -66,7 +66,7 @@ ASN1_BIT_STRING *ossl_cmp_calc_protection(const OSSL_CMP_CTX *ctx,
ERR_raise(ERR_LIB_CMP, CMP_R_MISSING_PBM_SECRET);
return NULL;
}
- if (ppval == NULL) {
+ if (pptype != V_ASN1_SEQUENCE || ppval == NULL) {
ERR_raise(ERR_LIB_CMP, CMP_R_ERROR_CALCULATING_PROTECTION);
return NULL;
}
diff --git a/deps/openssl/openssl/crypto/cmp/cmp_vfy.c b/deps/openssl/openssl/crypto/cmp/cmp_vfy.c
index eaa700d139d..e79adb09d38 100644
--- a/deps/openssl/openssl/crypto/cmp/cmp_vfy.c
+++ b/deps/openssl/openssl/crypto/cmp/cmp_vfy.c
@@ -64,8 +64,10 @@ static int verify_signature(const OSSL_CMP_CTX *cmp_ctx,
sig_err:
res = ossl_x509_print_ex_brief(bio, cert, X509_FLAG_NO_EXTENSIONS);
ERR_raise(ERR_LIB_CMP, CMP_R_ERROR_VALIDATING_SIGNATURE);
- if (res)
- ERR_add_error_mem_bio("\n", bio);
+ if (res) {
+ ERR_add_error_txt(NULL, "\n");
+ ERR_add_error_mem_bio(NULL, bio);
+ }
res = 0;
end:
@@ -387,7 +389,7 @@ static int check_msg_with_certs(OSSL_CMP_CTX *ctx, const STACK_OF(X509) *certs,
int i;
if (sk_X509_num(certs) <= 0) {
- ossl_cmp_log1(WARN, ctx, "no %s", desc);
+ ossl_cmp_log1(INFO, ctx, "no %s", desc);
return 0;
}
@@ -407,7 +409,7 @@ static int check_msg_with_certs(OSSL_CMP_CTX *ctx, const STACK_OF(X509) *certs,
}
}
if (in_extraCerts && n_acceptable_certs == 0)
- ossl_cmp_warn(ctx, "no acceptable cert in extraCerts");
+ ossl_cmp_log1(WARN, ctx, "no acceptable %s", desc);
return 0;
}
@@ -502,14 +504,14 @@ static int check_msg_find_cert(OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *msg)
res = check_msg_all_certs(ctx, msg, 0 /* using ctx->trusted */)
|| check_msg_all_certs(ctx, msg, 1 /* 3gpp */);
- ctx->log_cb = backup_log_cb;
- if (res) {
- /* discard any diagnostic information on trying to use certs */
- (void)ERR_pop_to_mark();
+
+ ctx->log_cb = backup_log_cb; /* re-enable logging */
+ /* discard any previous diagnostic information on trying to use certs */
+ (void)ERR_pop_to_mark();
+
+ if (res)
goto end;
- }
/* failed finding a sender cert that verifies the message signature */
- (void)ERR_clear_last_mark();
sname = X509_NAME_oneline(sender->d.directoryName, NULL, 0);
skid_str = skid == NULL ? NULL : i2s_ASN1_OCTET_STRING(NULL, skid);
@@ -732,7 +734,7 @@ int ossl_cmp_msg_check_update(OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *msg,
"expected sender", expected_sender)) {
str = X509_NAME_oneline(actual_sender, NULL, 0);
ERR_raise_data(ERR_LIB_CMP, CMP_R_UNEXPECTED_SENDER,
- str != NULL ? str : "");
+ "%s", str != NULL ? str : "");
OPENSSL_free(str);
return 0;
}
@@ -776,8 +778,13 @@ int ossl_cmp_msg_check_update(OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *msg,
res = 1; /* support more aggressive fuzzing by letting invalid msg pass */
#endif
- /* remove extraCerts again if not caching */
- if (ctx->noCacheExtraCerts)
+ /*
+ * remove extraCerts again if not caching
+ * or if we failed validation above, lest a remote user
+ * starts sending us lots of certificates in invalid messages
+ * leading to a DOS from unbounded certificate stack growth
+ */
+ if (ctx->noCacheExtraCerts || res != 1)
while (num_added-- > 0)
X509_free(sk_X509_shift(ctx->untrusted));
diff --git a/deps/openssl/openssl/crypto/cms/cms_asn1.c b/deps/openssl/openssl/crypto/cms/cms_asn1.c
index fb87f6c6ad2..b3c10369903 100644
--- a/deps/openssl/openssl/crypto/cms/cms_asn1.c
+++ b/deps/openssl/openssl/crypto/cms/cms_asn1.c
@@ -245,9 +245,9 @@ ASN1_NDEF_SEQUENCE(CMS_AuthEnvelopedData) = {
ASN1_IMP_OPT(CMS_AuthEnvelopedData, originatorInfo, CMS_OriginatorInfo, 0),
ASN1_SET_OF(CMS_AuthEnvelopedData, recipientInfos, CMS_RecipientInfo),
ASN1_SIMPLE(CMS_AuthEnvelopedData, authEncryptedContentInfo, CMS_EncryptedContentInfo),
- ASN1_IMP_SET_OF_OPT(CMS_AuthEnvelopedData, authAttrs, X509_ALGOR, 2),
+ ASN1_IMP_SET_OF_OPT(CMS_AuthEnvelopedData, authAttrs, X509_ATTRIBUTE, 1),
ASN1_SIMPLE(CMS_AuthEnvelopedData, mac, ASN1_OCTET_STRING),
- ASN1_IMP_SET_OF_OPT(CMS_AuthEnvelopedData, unauthAttrs, X509_ALGOR, 3)
+ ASN1_IMP_SET_OF_OPT(CMS_AuthEnvelopedData, unauthAttrs, X509_ATTRIBUTE, 2)
} ASN1_NDEF_SEQUENCE_END(CMS_AuthEnvelopedData)
ASN1_NDEF_SEQUENCE(CMS_AuthenticatedData) = {
@@ -257,9 +257,9 @@ ASN1_NDEF_SEQUENCE(CMS_AuthenticatedData) = {
ASN1_SIMPLE(CMS_AuthenticatedData, macAlgorithm, X509_ALGOR),
ASN1_IMP(CMS_AuthenticatedData, digestAlgorithm, X509_ALGOR, 1),
ASN1_SIMPLE(CMS_AuthenticatedData, encapContentInfo, CMS_EncapsulatedContentInfo),
- ASN1_IMP_SET_OF_OPT(CMS_AuthenticatedData, authAttrs, X509_ALGOR, 2),
+ ASN1_IMP_SET_OF_OPT(CMS_AuthenticatedData, authAttrs, X509_ATTRIBUTE, 2),
ASN1_SIMPLE(CMS_AuthenticatedData, mac, ASN1_OCTET_STRING),
- ASN1_IMP_SET_OF_OPT(CMS_AuthenticatedData, unauthAttrs, X509_ALGOR, 3)
+ ASN1_IMP_SET_OF_OPT(CMS_AuthenticatedData, unauthAttrs, X509_ATTRIBUTE, 3)
} static_ASN1_NDEF_SEQUENCE_END(CMS_AuthenticatedData)
ASN1_NDEF_SEQUENCE(CMS_CompressedData)
diff --git a/deps/openssl/openssl/crypto/cms/cms_env.c b/deps/openssl/openssl/crypto/cms/cms_env.c
index a8ecabb64ed..ee86ae71d3e 100644
--- a/deps/openssl/openssl/crypto/cms/cms_env.c
+++ b/deps/openssl/openssl/crypto/cms/cms_env.c
@@ -928,6 +928,7 @@ static int cms_RecipientInfo_kekri_decrypt(CMS_ContentInfo *cms,
CMS_EncryptedContentInfo *ec;
CMS_KEKRecipientInfo *kekri;
unsigned char *ukey = NULL;
+ size_t ukey_alloc_len = 0;
int ukeylen;
int r = 0, wrap_nid;
EVP_CIPHER *cipher = NULL;
@@ -965,7 +966,8 @@ static int cms_RecipientInfo_kekri_decrypt(CMS_ContentInfo *cms,
goto err;
}
- ukey = OPENSSL_malloc(kekri->encryptedKey->length - 8);
+ ukey_alloc_len = (size_t)kekri->encryptedKey->length - 8;
+ ukey = OPENSSL_malloc(ukey_alloc_len);
if (ukey == NULL)
goto err;
@@ -994,7 +996,7 @@ static int cms_RecipientInfo_kekri_decrypt(CMS_ContentInfo *cms,
err:
EVP_CIPHER_free(cipher);
if (!r)
- OPENSSL_free(ukey);
+ OPENSSL_clear_free(ukey, ukey_alloc_len);
EVP_CIPHER_CTX_free(ctx);
return r;
@@ -1204,6 +1206,35 @@ BIO *ossl_cms_EnvelopedData_init_bio(CMS_ContentInfo *cms)
return cms_EnvelopedData_Decryption_init_bio(cms);
}
+/* The DER encoding of authAttrs, with the universal SET OF tag, is the AAD */
+static int cms_AuthEnvelopedData_set_aad(BIO *b,
+ STACK_OF(X509_ATTRIBUTE) *authAttrs)
+{
+ EVP_CIPHER_CTX *ctx;
+ unsigned char *aad = NULL;
+ int aadlen, outl, ok = 0;
+ const ASN1_ITEM *item;
+
+ if (!BIO_get_cipher_ctx(b, &ctx))
+ return 0;
+ item = EVP_CIPHER_CTX_is_encrypting(ctx)
+ ? ASN1_ITEM_rptr(CMS_Attributes_AadEncrypt)
+ : ASN1_ITEM_rptr(CMS_Attributes_AadDecrypt);
+ aadlen = ASN1_item_i2d((ASN1_VALUE *)authAttrs, &aad, item);
+ if (aadlen <= 0 || aad == NULL) {
+ ERR_raise(ERR_LIB_CMS, ERR_R_ASN1_LIB);
+ goto err;
+ }
+ if (EVP_CipherUpdate(ctx, NULL, &outl, aad, aadlen) <= 0) {
+ ERR_raise(ERR_LIB_CMS, CMS_R_CTRL_FAILURE);
+ goto err;
+ }
+ ok = 1;
+err:
+ OPENSSL_free(aad);
+ return ok;
+}
+
BIO *ossl_cms_AuthEnvelopedData_init_bio(CMS_ContentInfo *cms)
{
CMS_EncryptedContentInfo *ec;
@@ -1220,9 +1251,16 @@ BIO *ossl_cms_AuthEnvelopedData_init_bio(CMS_ContentInfo *cms)
ec->taglen = aenv->mac->length;
}
ret = ossl_cms_EncryptedContent_init_bio(ec, ossl_cms_get0_cmsctx(cms), 1);
+ if (ret == NULL)
+ return NULL;
+
+ /* authAttrs, if present, are the AEAD associated data */
+ if (aenv->authAttrs != NULL
+ && !cms_AuthEnvelopedData_set_aad(ret, aenv->authAttrs))
+ goto err;
- /* If error or no cipher end of processing */
- if (ret == NULL || ec->cipher == NULL)
+ /* If no cipher end of processing */
+ if (ec->cipher == NULL)
return ret;
/* Now encrypt content key according to each RecipientInfo type */
diff --git a/deps/openssl/openssl/crypto/cms/cms_kari.c b/deps/openssl/openssl/crypto/cms/cms_kari.c
index eb5b5d78628..459991525f0 100644
--- a/deps/openssl/openssl/crypto/cms/cms_kari.c
+++ b/deps/openssl/openssl/crypto/cms/cms_kari.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2013-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2013-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -216,7 +216,9 @@ static int cms_kek_cipher(unsigned char **pout, size_t *poutlen,
size_t keklen;
int rv = 0;
unsigned char *out = NULL;
+ size_t out_alloc_len = 0;
int outlen;
+ size_t outsize;
keklen = EVP_CIPHER_CTX_get_key_length(kari->ctx);
if (keklen > EVP_MAX_KEY_LENGTH)
@@ -230,10 +232,17 @@ static int cms_kek_cipher(unsigned char **pout, size_t *poutlen,
/* obtain output length of ciphered key */
if (!EVP_CipherUpdate(kari->ctx, NULL, &outlen, in, inlen))
goto err;
- out = OPENSSL_malloc(outlen);
+ /*
+ * On its integrity-failure paths that primitive writes and cleanses up to
+ * inlen bytes of the output buffer. Size the buffer for that worst case so
+ * a failed unwrap cannot write past the allocation.
+ */
+ outsize = (size_t)outlen < inlen ? inlen : (size_t)outlen;
+ out = OPENSSL_malloc(outsize);
if (out == NULL)
goto err;
- if (!EVP_CipherUpdate(kari->ctx, out, &outlen, in, inlen))
+ out_alloc_len = (size_t)outlen;
+ if (!EVP_CipherUpdate(kari->ctx, out, &outlen, in, (int)inlen))
goto err;
*pout = out;
*poutlen = (size_t)outlen;
@@ -242,7 +251,7 @@ static int cms_kek_cipher(unsigned char **pout, size_t *poutlen,
err:
OPENSSL_cleanse(kek, keklen);
if (!rv)
- OPENSSL_free(out);
+ OPENSSL_clear_free(out, out_alloc_len);
EVP_CIPHER_CTX_reset(kari->ctx);
/* FIXME: WHY IS kari->pctx freed here? /RL */
EVP_PKEY_CTX_free(kari->pctx);
diff --git a/deps/openssl/openssl/crypto/cms/cms_local.h b/deps/openssl/openssl/crypto/cms/cms_local.h
index 94496b3823e..55f41af054b 100644
--- a/deps/openssl/openssl/crypto/cms/cms_local.h
+++ b/deps/openssl/openssl/crypto/cms/cms_local.h
@@ -371,6 +371,9 @@ DECLARE_ASN1_ITEM(CMS_EncryptedContentInfo)
DECLARE_ASN1_ITEM(CMS_IssuerAndSerialNumber)
DECLARE_ASN1_ITEM(CMS_Attributes_Sign)
DECLARE_ASN1_ITEM(CMS_Attributes_Verify)
+/* The authAttrs AAD encoding matches the signed-attributes one */
+#define CMS_Attributes_AadEncrypt_it CMS_Attributes_Sign_it
+#define CMS_Attributes_AadDecrypt_it CMS_Attributes_Verify_it
DECLARE_ASN1_ITEM(CMS_RecipientInfo)
DECLARE_ASN1_ITEM(CMS_PasswordRecipientInfo)
DECLARE_ASN1_ALLOC_FUNCTIONS(CMS_IssuerAndSerialNumber)
diff --git a/deps/openssl/openssl/crypto/cms/cms_pwri.c b/deps/openssl/openssl/crypto/cms/cms_pwri.c
index 54f0eda2a2d..de59c74fdd6 100644
--- a/deps/openssl/openssl/crypto/cms/cms_pwri.c
+++ b/deps/openssl/openssl/crypto/cms/cms_pwri.c
@@ -315,6 +315,7 @@ int ossl_cms_RecipientInfo_pwri_crypt(const CMS_ContentInfo *cms,
EVP_CIPHER *kekcipher;
unsigned char *key = NULL;
size_t keylen;
+ size_t key_alloc_len = 0;
const CMS_CTX *cms_ctx = ossl_cms_get0_cmsctx(cms);
ec = ossl_cms_get0_env_enc_content(cms);
@@ -391,6 +392,7 @@ int ossl_cms_RecipientInfo_pwri_crypt(const CMS_ContentInfo *cms,
if (key == NULL)
goto err;
+ key_alloc_len = keylen;
if (!kek_wrap_key(key, &keylen, ec->key, ec->keylen, kekctx, cms_ctx))
goto err;
@@ -400,6 +402,7 @@ int ossl_cms_RecipientInfo_pwri_crypt(const CMS_ContentInfo *cms,
key = OPENSSL_malloc(pwri->encryptedKey->length);
if (key == NULL)
goto err;
+ key_alloc_len = (size_t)pwri->encryptedKey->length;
if (!kek_unwrap_key(key, &keylen,
pwri->encryptedKey->data,
pwri->encryptedKey->length, kekctx)) {
@@ -419,7 +422,7 @@ int ossl_cms_RecipientInfo_pwri_crypt(const CMS_ContentInfo *cms,
EVP_CIPHER_CTX_free(kekctx);
if (!r)
- OPENSSL_free(key);
+ OPENSSL_clear_free(key, key_alloc_len);
X509_ALGOR_free(kekalg);
return r;
diff --git a/deps/openssl/openssl/crypto/cms/cms_smime.c b/deps/openssl/openssl/crypto/cms/cms_smime.c
index 4b5009b9d5b..dea1df08476 100644
--- a/deps/openssl/openssl/crypto/cms/cms_smime.c
+++ b/deps/openssl/openssl/crypto/cms/cms_smime.c
@@ -36,6 +36,7 @@ static int cms_copy_content(BIO *out, BIO *in, unsigned int flags)
unsigned char buf[4096];
int r = 0, i;
BIO *tmpout;
+ BIO *aeadbuf = NULL;
tmpout = cms_get_text_bio(out, flags);
@@ -44,6 +45,33 @@ static int cms_copy_content(BIO *out, BIO *in, unsigned int flags)
goto err;
}
+ /*
+ * For AEAD content (AuthEnvelopedData) the integrity tag is only verified
+ * once all the ciphertext has been processed, by the
+ * BIO_get_cipher_status() call below. RFC 5083 requires that the plaintext
+ * is not released to the caller until that verification succeeds, so
+ * buffer it in memory and only forward it to the output BIO once the tag
+ * has been checked. When CMS_TEXT is set tmpout is already a memory BIO
+ * that is flushed only on success, so the extra buffering is not needed.
+ */
+ if (tmpout == out && BIO_method_type(in) == BIO_TYPE_CIPHER) {
+ EVP_CIPHER_CTX *ctx = NULL;
+
+ if (BIO_get_cipher_ctx(in, &ctx) > 0 && ctx != NULL
+ && (EVP_CIPHER_get_flags(EVP_CIPHER_CTX_get0_cipher(ctx))
+ & EVP_CIPH_FLAG_AEAD_CIPHER)
+ != 0) {
+ aeadbuf = BIO_new(BIO_s_mem());
+ if (aeadbuf == NULL) {
+ ERR_raise(ERR_LIB_CMS, ERR_R_BIO_LIB);
+ goto err;
+ }
+ /* Return 0 (EOF) rather than a retryable -1 once drained. */
+ BIO_set_mem_eof_return(aeadbuf, 0);
+ tmpout = aeadbuf;
+ }
+ }
+
/* Read all content through chain to process digest, decrypt etc */
for (;;) {
i = BIO_read(in, buf, sizeof(buf));
@@ -66,6 +94,17 @@ static int cms_copy_content(BIO *out, BIO *in, unsigned int flags)
ERR_raise(ERR_LIB_CMS, CMS_R_SMIME_TEXT_ERROR);
goto err;
}
+ } else if (aeadbuf != NULL) {
+ /* Forward the AEAD BIO to out BIO as the tag has been verified. */
+ for (;;) {
+ i = BIO_read(aeadbuf, buf, sizeof(buf));
+ if (i < 0)
+ goto err;
+ if (i == 0)
+ break;
+ if (BIO_write(out, buf, i) != i)
+ goto err;
+ }
}
r = 1;
diff --git a/deps/openssl/openssl/crypto/ct/ct_b64.c b/deps/openssl/openssl/crypto/ct/ct_b64.c
index e7eb9740ee0..01bd8fc508d 100644
--- a/deps/openssl/openssl/crypto/ct/ct_b64.c
+++ b/deps/openssl/openssl/crypto/ct/ct_b64.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2016-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -84,7 +84,7 @@ SCT *SCT_new_from_base64(unsigned char version, const char *logid_base64,
declen = ct_base64_decode(logid_base64, &dec);
if (declen < 0) {
- ERR_raise(ERR_LIB_CT, X509_R_BASE64_DECODE_ERROR);
+ ERR_raise(ERR_LIB_CT, CT_R_BASE64_DECODE_ERROR);
goto err;
}
if (!SCT_set0_log_id(sct, dec, declen))
@@ -93,7 +93,7 @@ SCT *SCT_new_from_base64(unsigned char version, const char *logid_base64,
declen = ct_base64_decode(extensions_base64, &dec);
if (declen < 0) {
- ERR_raise(ERR_LIB_CT, X509_R_BASE64_DECODE_ERROR);
+ ERR_raise(ERR_LIB_CT, CT_R_BASE64_DECODE_ERROR);
goto err;
}
SCT_set0_extensions(sct, dec, declen);
@@ -101,7 +101,7 @@ SCT *SCT_new_from_base64(unsigned char version, const char *logid_base64,
declen = ct_base64_decode(signature_base64, &dec);
if (declen < 0) {
- ERR_raise(ERR_LIB_CT, X509_R_BASE64_DECODE_ERROR);
+ ERR_raise(ERR_LIB_CT, CT_R_BASE64_DECODE_ERROR);
goto err;
}
diff --git a/deps/openssl/openssl/crypto/ctype.c b/deps/openssl/openssl/crypto/ctype.c
index 686fe64165f..4f19d6002c5 100644
--- a/deps/openssl/openssl/crypto/ctype.c
+++ b/deps/openssl/openssl/crypto/ctype.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2017-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2017-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -226,7 +226,7 @@ static const unsigned short ctype_char_map[128] = {
#ifdef CHARSET_EBCDIC
int ossl_toascii(int c)
{
- if (c < -128 || c > 256 || c == EOF)
+ if (c < -128 || c >= 256 || c == EOF)
return c;
/*
* Adjust negatively signed characters.
@@ -241,7 +241,7 @@ int ossl_toascii(int c)
int ossl_fromascii(int c)
{
- if (c < -128 || c > 256 || c == EOF)
+ if (c < -128 || c >= 256 || c == EOF)
return c;
if (c < 0)
c += 256;
diff --git a/deps/openssl/openssl/crypto/dh/dh_backend.c b/deps/openssl/openssl/crypto/dh/dh_backend.c
index f68429862cd..77b0b3257fb 100644
--- a/deps/openssl/openssl/crypto/dh/dh_backend.c
+++ b/deps/openssl/openssl/crypto/dh/dh_backend.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2020-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2020-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -232,7 +232,7 @@ DH *ossl_dh_key_from_pkcs8(const PKCS8_PRIV_KEY_INFO *p8inf,
goto done;
decerr:
- ERR_raise(ERR_LIB_DH, EVP_R_DECODE_ERROR);
+ ERR_raise(ERR_LIB_DH, DH_R_DECODE_ERROR);
dherr:
DH_free(dh);
dh = NULL;
diff --git a/deps/openssl/openssl/crypto/dh/dh_check.c b/deps/openssl/openssl/crypto/dh/dh_check.c
index 3002609b68f..8787945f8a1 100644
--- a/deps/openssl/openssl/crypto/dh/dh_check.c
+++ b/deps/openssl/openssl/crypto/dh/dh_check.c
@@ -1,5 +1,5 @@
/*
- * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -74,6 +74,14 @@ int DH_check_params(const DH *dh, int *ret)
BN_CTX *ctx = NULL;
*ret = 0;
+ /*
+ * A DH with no modulus or generator cannot be checked. Report
+ * the failure via |*ret| rather than dereferencing NULL below.
+ */
+ if (dh->params.p == NULL || dh->params.g == NULL) {
+ *ret = DH_NOT_SUITABLE_GENERATOR | DH_CHECK_P_NOT_PRIME;
+ return 1;
+ }
ctx = BN_CTX_new_ex(dh->libctx);
if (ctx == NULL)
goto err;
@@ -150,6 +158,11 @@ int DH_check(const DH *dh, int *ret)
int nid = DH_get_nid((DH *)dh);
*ret = 0;
+ /* A DH with no modulus or generator cannot be checked. */
+ if (dh->params.p == NULL || dh->params.g == NULL) {
+ *ret = DH_NOT_SUITABLE_GENERATOR | DH_CHECK_P_NOT_PRIME;
+ return 1;
+ }
if (nid != NID_undef)
return 1;
@@ -250,6 +263,15 @@ int DH_check_pub_key_ex(const DH *dh, const BIGNUM *pub_key)
*/
int DH_check_pub_key(const DH *dh, const BIGNUM *pub_key, int *ret)
{
+ *ret = 0;
+ /*
+ * Without a modulus we cannot check anything; signal failure via
+ * |*ret| rather than crashing in BN_num_bits below.
+ */
+ if (dh->params.p == NULL) {
+ *ret = DH_CHECK_PUBKEY_INVALID;
+ return 1;
+ }
/* Don't do any checks at all with an excessively large modulus */
if (BN_num_bits(dh->params.p) > OPENSSL_DH_CHECK_MAX_MODULUS_BITS) {
ERR_raise(ERR_LIB_DH, DH_R_MODULUS_TOO_LARGE);
diff --git a/deps/openssl/openssl/crypto/dsa/dsa_key.c b/deps/openssl/openssl/crypto/dsa/dsa_key.c
index aa69c3eea8f..738915cc4f3 100644
--- a/deps/openssl/openssl/crypto/dsa/dsa_key.c
+++ b/deps/openssl/openssl/crypto/dsa/dsa_key.c
@@ -1,5 +1,5 @@
/*
- * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -198,7 +198,6 @@ static int dsa_keygen(DSA *dsa)
ok = dsa_keygen_pairwise_test(dsa, cb, cbarg)
&& dsa_keygen_knownanswer_test(dsa, ctx, cb, cbarg);
if (!ok) {
- ossl_set_error_state(OSSL_SELF_TEST_TYPE_PCT);
BN_free(dsa->pub_key);
BN_clear_free(dsa->priv_key);
dsa->pub_key = NULL;
diff --git a/deps/openssl/openssl/crypto/ec/asm/ecp_nistz256-x86_64.pl b/deps/openssl/openssl/crypto/ec/asm/ecp_nistz256-x86_64.pl
index 4da9a149a99..12a104b5ec0 100755
--- a/deps/openssl/openssl/crypto/ec/asm/ecp_nistz256-x86_64.pl
+++ b/deps/openssl/openssl/crypto/ec/asm/ecp_nistz256-x86_64.pl
@@ -1,5 +1,5 @@
#! /usr/bin/env perl
-# Copyright 2014-2024 The OpenSSL Project Authors. All Rights Reserved.
+# Copyright 2014-2026 The OpenSSL Project Authors. All Rights Reserved.
# Copyright (c) 2014, Intel Corporation. All Rights Reserved.
# Copyright (c) 2015 CloudFlare, Inc.
#
@@ -80,6 +80,14 @@
$addx = ($ver>=3.03);
}
+if (!$addx && `$ENV{CC} -x c /dev/null -dM -E|grep __clang_major__`
+ =~ /#define __clang_major__.([0-9]+)/) {
+ if ($1) {
+ $avx = ($1>=11); #icx started with clang 11
+ $addx = ($1>=11);
+ }
+}
+
$code.=<<___;
.text
.extern OPENSSL_ia32cap_P
diff --git a/deps/openssl/openssl/crypto/ec/asm/x25519-x86_64.pl b/deps/openssl/openssl/crypto/ec/asm/x25519-x86_64.pl
index d2285269a30..204c5185481 100755
--- a/deps/openssl/openssl/crypto/ec/asm/x25519-x86_64.pl
+++ b/deps/openssl/openssl/crypto/ec/asm/x25519-x86_64.pl
@@ -1,5 +1,5 @@
#!/usr/bin/env perl
-# Copyright 2018-2020 The OpenSSL Project Authors. All Rights Reserved.
+# Copyright 2018-2026 The OpenSSL Project Authors. All Rights Reserved.
#
# Licensed under the Apache License 2.0 (the "License"). You may not use
# this file except in compliance with the License. You can obtain a copy
@@ -97,6 +97,13 @@
$addx = ($ver>=3.03);
}
+if (!$addx && `$ENV{CC} -x c /dev/null -dM -E|grep __clang_major__`
+ =~ /#define __clang_major__.([0-9]+)/) {
+ if ($1) {
+ $addx = ($1>=11); #icx started with clang 11
+ }
+}
+
$code.=<<___;
.text
diff --git a/deps/openssl/openssl/crypto/ec/ec_key.c b/deps/openssl/openssl/crypto/ec/ec_key.c
index 8723ead41e0..71f1c63e2ab 100644
--- a/deps/openssl/openssl/crypto/ec/ec_key.c
+++ b/deps/openssl/openssl/crypto/ec/ec_key.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2002-2026 The OpenSSL Project Authors. All Rights Reserved.
* Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
@@ -236,56 +236,6 @@ int ossl_ec_key_gen(EC_KEY *eckey)
return ret;
}
-/*
- * Refer: FIPS 140-3 IG 10.3.A Additional Comment 1
- * Perform a KAT by duplicating the public key generation.
- *
- * NOTE: This issue requires a background understanding, provided in a separate
- * document; the current IG 10.3.A AC1 is insufficient regarding the PCT for
- * the key agreement scenario.
- *
- * Currently IG 10.3.A requires PCT in the mode of use prior to use of the
- * key pair, citing the PCT defined in the associated standard. For key
- * agreement, the only PCT defined in SP 800-56A is that of Section 5.6.2.4:
- * the comparison of the original public key to a newly calculated public key.
- */
-static int ecdsa_keygen_knownanswer_test(EC_KEY *eckey, BN_CTX *ctx,
- OSSL_CALLBACK *cb, void *cbarg)
-{
- int len, ret = 0;
- OSSL_SELF_TEST *st = NULL;
- unsigned char bytes[512] = { 0 };
- EC_POINT *pub_key2 = NULL;
-
- st = OSSL_SELF_TEST_new(cb, cbarg);
- if (st == NULL)
- return 0;
-
- OSSL_SELF_TEST_onbegin(st, OSSL_SELF_TEST_TYPE_PCT_KAT,
- OSSL_SELF_TEST_DESC_PCT_ECDSA);
-
- if ((pub_key2 = EC_POINT_new(eckey->group)) == NULL)
- goto err;
-
- /* pub_key = priv_key * G (where G is a point on the curve) */
- if (!EC_POINT_mul(eckey->group, pub_key2, eckey->priv_key, NULL, NULL, ctx))
- goto err;
-
- if (BN_num_bytes(pub_key2->X) > (int)sizeof(bytes))
- goto err;
- len = BN_bn2bin(pub_key2->X, bytes);
- if (OSSL_SELF_TEST_oncorrupt_byte(st, bytes)
- && BN_bin2bn(bytes, len, pub_key2->X) == NULL)
- goto err;
- ret = !EC_POINT_cmp(eckey->group, eckey->pub_key, pub_key2, ctx);
-
-err:
- OSSL_SELF_TEST_onend(st, ret);
- OSSL_SELF_TEST_free(st);
- EC_POINT_free(pub_key2);
- return ret;
-}
-
/*
* ECC Key generation.
* See SP800-56AR3 5.6.1.2.2 "Key Pair Generation by Testing Candidates"
@@ -382,13 +332,11 @@ static int ec_generate_key(EC_KEY *eckey, int pairwise_test)
void *cbarg = NULL;
OSSL_SELF_TEST_get_callback(eckey->libctx, &cb, &cbarg);
- ok = ecdsa_keygen_pairwise_test(eckey, cb, cbarg)
- && ecdsa_keygen_knownanswer_test(eckey, ctx, cb, cbarg);
+ ok = ecdsa_keygen_pairwise_test(eckey, cb, cbarg);
}
err:
/* Step (9): If there is an error return an invalid keypair. */
if (!ok) {
- ossl_set_error_state(OSSL_SELF_TEST_TYPE_PCT);
BN_clear(eckey->priv_key);
if (eckey->pub_key != NULL)
EC_POINT_set_to_infinity(group, eckey->pub_key);
diff --git a/deps/openssl/openssl/crypto/err/openssl.txt b/deps/openssl/openssl/crypto/err/openssl.txt
index 5b2ea1c4a4e..be65c1767ec 100644
--- a/deps/openssl/openssl/crypto/err/openssl.txt
+++ b/deps/openssl/openssl/crypto/err/openssl.txt
@@ -1861,6 +1861,7 @@ X509_R_CANT_CHECK_DH_KEY:114:can't check dh key
X509_R_CERTIFICATE_VERIFICATION_FAILED:139:certificate verification failed
X509_R_CERT_ALREADY_IN_HASH_TABLE:101:cert already in hash table
X509_R_CRL_ALREADY_DELTA:127:crl already delta
+X509_R_CRL_SIGNATURE_ALGORITHM_MISMATCH:147:crl signature algorithm mismatch
X509_R_CRL_VERIFY_FAILURE:131:crl verify failure
X509_R_DUPLICATE_ATTRIBUTE:140:duplicate attribute
X509_R_ERROR_GETTING_MD_BY_NID:141:error getting md by nid
diff --git a/deps/openssl/openssl/crypto/evp/exchange.c b/deps/openssl/openssl/crypto/evp/exchange.c
index 088d2fdc6e7..30299d67def 100644
--- a/deps/openssl/openssl/crypto/evp/exchange.c
+++ b/deps/openssl/openssl/crypto/evp/exchange.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2019-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -287,7 +287,9 @@ int EVP_PKEY_derive_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[])
* iteration we're on.
*/
EVP_KEYEXCH_free(exchange);
+ exchange = NULL;
EVP_KEYMGMT_free(tmp_keymgmt);
+ tmp_keymgmt = NULL;
switch (iter) {
case 1:
diff --git a/deps/openssl/openssl/crypto/ffc/ffc_params_generate.c b/deps/openssl/openssl/crypto/ffc/ffc_params_generate.c
index 969cca76f99..94b1602dd28 100644
--- a/deps/openssl/openssl/crypto/ffc/ffc_params_generate.c
+++ b/deps/openssl/openssl/crypto/ffc/ffc_params_generate.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2019-2024 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2019-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -77,6 +77,13 @@ static int ffc_validate_LN(size_t L, size_t N, int type, int verify)
ERR_raise(ERR_LIB_DH, DH_R_BAD_FFC_PARAMETERS);
#endif
} else if (type == FFC_PARAM_TYPE_DSA) {
+ if (N > 512) {
+#ifndef OPENSSL_NO_DSA
+ ERR_raise_data(ERR_LIB_DSA, DSA_R_BAD_FFC_PARAMETERS,
+ "N is %zu, but the maximum supported N is 512", N);
+#endif
+ return 0;
+ }
if (L >= 3072 && N >= 256)
return 128;
if (L >= 2048 && N >= 224)
diff --git a/deps/openssl/openssl/crypto/hmac/hmac.c b/deps/openssl/openssl/crypto/hmac/hmac.c
index c5d42db8202..77b97b6bef6 100644
--- a/deps/openssl/openssl/crypto/hmac/hmac.c
+++ b/deps/openssl/openssl/crypto/hmac/hmac.c
@@ -1,5 +1,5 @@
/*
- * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -50,9 +50,11 @@ int HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len,
return 0;
#ifdef OPENSSL_HMAC_S390X
- rv = s390x_HMAC_init(ctx, key, len, impl);
- if (rv >= 1)
- return rv;
+ {
+ int ret = s390x_HMAC_init(ctx, key, len, impl);
+ if (ret != -1) /* -1 means SW fallback */
+ return ret;
+ }
#endif
if (key != NULL) {
diff --git a/deps/openssl/openssl/crypto/http/http_lib.c b/deps/openssl/openssl/crypto/http/http_lib.c
index 05bf4be7885..d7227f5df24 100644
--- a/deps/openssl/openssl/crypto/http/http_lib.c
+++ b/deps/openssl/openssl/crypto/http/http_lib.c
@@ -21,6 +21,7 @@
#define NI_MAXHOST 255
#endif
#include "crypto/ctype.h" /* for ossl_isspace() */
+#define OSSL_URL_SCHEME_SUFFIX "://"
static void init_pstring(char **pstr)
{
@@ -79,16 +80,20 @@ int OSSL_parse_url(const char *url, char **pscheme, char **puser, char **phost,
return 0;
}
- /* check for optional prefix "://" */
- scheme = scheme_end = url;
- p = strstr(url, "://");
- if (p == NULL) {
- p = url;
- } else {
- scheme_end = p;
- if (scheme_end == scheme)
- goto parse_err;
- p += strlen("://");
+ /* check for optional prefix "://" as per RFC 3986: */
+ scheme = scheme_end = p = url;
+ if (ossl_isalpha(*p)) {
+ while (*p != '\0'
+ && (ossl_isalpha(*p)
+ || ossl_isdigit(*p)
+ || strchr("+-.", *p) != NULL))
+ p++;
+ if (HAS_PREFIX(p, OSSL_URL_SCHEME_SUFFIX)) {
+ scheme_end = p;
+ p += sizeof(OSSL_URL_SCHEME_SUFFIX) - 1;
+ } else {
+ p = url;
+ }
}
/* parse optional "userinfo@" */
@@ -105,7 +110,7 @@ int OSSL_parse_url(const char *url, char **pscheme, char **puser, char **phost,
/* parse hostname/address as far as needed here */
if (host[0] == '[') {
/* IPv6 literal, which may include ':' */
- host_end = strchr(host + 1, ']');
+ host_end = memchr(host + 1, ']', authority_end - host - 1);
if (host_end == NULL)
goto parse_err;
p = ++host_end;
diff --git a/deps/openssl/openssl/crypto/ml_dsa/ml_dsa_encoders.c b/deps/openssl/openssl/crypto/ml_dsa/ml_dsa_encoders.c
index 00e2b1772cf..9ebe5ae02d9 100644
--- a/deps/openssl/openssl/crypto/ml_dsa/ml_dsa_encoders.c
+++ b/deps/openssl/openssl/crypto/ml_dsa/ml_dsa_encoders.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2024-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2024-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -932,6 +932,9 @@ int ossl_ml_dsa_sig_encode(const ML_DSA_SIG *sig, const ML_DSA_PARAMS *params,
ret = 1;
err:
WPACKET_finish(&pkt);
+ /* Erase any partial signature output on failure */
+ if (ret == 0)
+ OPENSSL_cleanse(out, params->sig_len);
return ret;
}
diff --git a/deps/openssl/openssl/crypto/ml_dsa/ml_dsa_key.c b/deps/openssl/openssl/crypto/ml_dsa/ml_dsa_key.c
index e999b6c08d0..66e2ff2b61a 100644
--- a/deps/openssl/openssl/crypto/ml_dsa/ml_dsa_key.c
+++ b/deps/openssl/openssl/crypto/ml_dsa/ml_dsa_key.c
@@ -346,10 +346,15 @@ static int public_from_private(const ML_DSA_KEY *key, EVP_MD_CTX *md_ctx,
/* Compress t */
vector_power2_round(&t, t1, t0);
- /* Zeroize secret */
- vector_zero(&s1_ntt);
ret = 1;
err:
+ /*
+ * The low bits of |t| are private and |s1_ntt| is secret, wipe both.
+ * The trailing |a_ntt| matrix is not wiped: per FIPS 204 section 3.6.3
+ * the matrix A is easily computed from the public key and does not
+ * require any special protections.
+ */
+ OPENSSL_cleanse(polys, (k + l) * sizeof(*polys));
OPENSSL_free(polys);
return ret;
}
@@ -370,6 +375,7 @@ int ossl_ml_dsa_key_public_from_private(ML_DSA_KEY *key)
&& shake_xof(md_ctx, key->shake256_md,
key->pub_encoding, key->params->pk_len,
key->tr, sizeof(key->tr));
+ vector_zero(&t0);
vector_free(&t0);
EVP_MD_CTX_free(md_ctx);
return ret;
@@ -401,7 +407,7 @@ int ossl_ml_dsa_key_pairwise_check(const ML_DSA_KEY *key)
ret = vector_equal(&t1, &key->t1) && vector_equal(&t0, &key->t0);
err:
EVP_MD_CTX_free(md_ctx);
- OPENSSL_free(polys);
+ OPENSSL_clear_free(polys, 2 * k * sizeof(*polys));
return ret;
}
@@ -489,7 +495,7 @@ int ossl_ml_dsa_generate_key(ML_DSA_KEY *out)
"explicit %s private key does not match seed",
out->params->alg);
}
- OPENSSL_free(sk);
+ OPENSSL_clear_free(sk, out->params->sk_len);
}
return ret;
}
diff --git a/deps/openssl/openssl/crypto/ml_dsa/ml_dsa_matrix.c b/deps/openssl/openssl/crypto/ml_dsa/ml_dsa_matrix.c
index c7ff5984521..94fd16936c8 100644
--- a/deps/openssl/openssl/crypto/ml_dsa/ml_dsa_matrix.c
+++ b/deps/openssl/openssl/crypto/ml_dsa/ml_dsa_matrix.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2024-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2024-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -7,6 +7,7 @@
* https://www.openssl.org/source/license.html
*/
+#include
#include "ml_dsa_local.h"
#include "ml_dsa_vector.h"
#include "ml_dsa_matrix.h"
@@ -25,15 +26,16 @@ void ossl_ml_dsa_matrix_mult_vector(const MATRIX *a, const VECTOR *s,
{
size_t i, j;
POLY *poly = a->m_poly;
+ POLY product;
vector_zero(t);
for (i = 0; i < a->k; i++) {
for (j = 0; j < a->l; j++) {
- POLY product;
-
ossl_ml_dsa_poly_ntt_mult(poly++, &s->poly[j], &product);
poly_add(&product, &t->poly[i], &t->poly[i]);
}
}
+
+ OPENSSL_cleanse(&product, sizeof(product));
}
diff --git a/deps/openssl/openssl/crypto/ml_dsa/ml_dsa_sample.c b/deps/openssl/openssl/crypto/ml_dsa/ml_dsa_sample.c
index 6fae4c4a0de..f8ce638dc22 100644
--- a/deps/openssl/openssl/crypto/ml_dsa/ml_dsa_sample.c
+++ b/deps/openssl/openssl/crypto/ml_dsa/ml_dsa_sample.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2024-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2024-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -8,6 +8,7 @@
*/
#include
+#include
#include "ml_dsa_local.h"
#include "ml_dsa_vector.h"
#include "ml_dsa_matrix.h"
@@ -159,13 +160,14 @@ static int rej_bounded_poly(EVP_MD_CTX *h_ctx, const EVP_MD *md,
COEFF_FROM_NIBBLE_FUNC *coef_from_nibble,
const uint8_t *seed, size_t seed_len, POLY *out)
{
+ int ret = 0;
int j = 0;
uint32_t z0, z1;
uint8_t blocks[SHAKE256_BLOCKSIZE], *b, *end = blocks + sizeof(blocks);
/* Instead of just squeezing 1 byte at a time, we grab a whole block */
if (!shake_xof(h_ctx, md, seed, seed_len, blocks, sizeof(blocks)))
- return 0;
+ goto err;
while (1) {
for (b = blocks; b < end; b++) {
@@ -173,15 +175,22 @@ static int rej_bounded_poly(EVP_MD_CTX *h_ctx, const EVP_MD *md,
z1 = *b >> 4; /* high nibble of byte */
if (coef_from_nibble(z0, &out->coeff[j])
- && ++j >= ML_DSA_NUM_POLY_COEFFICIENTS)
- return 1;
+ && ++j >= ML_DSA_NUM_POLY_COEFFICIENTS) {
+ ret = 1;
+ goto err;
+ }
if (coef_from_nibble(z1, &out->coeff[j])
- && ++j >= ML_DSA_NUM_POLY_COEFFICIENTS)
- return 1;
+ && ++j >= ML_DSA_NUM_POLY_COEFFICIENTS) {
+ ret = 1;
+ goto err;
+ }
}
if (!EVP_DigestSqueeze(h_ctx, blocks, sizeof(blocks)))
- return 0;
+ goto err;
}
+err:
+ OPENSSL_cleanse(blocks, sizeof(blocks));
+ return ret;
}
/**
@@ -205,6 +214,13 @@ int ossl_ml_dsa_matrix_expand_A(EVP_MD_CTX *g_ctx, const EVP_MD *md,
uint8_t derived_seed[ML_DSA_RHO_BYTES + 2];
POLY *poly = out->m_poly;
+ /*
+ * The seeds derived below and the sampling buffers in rej_ntt_poly() are
+ * not cleansed: per FIPS 204 section 3.6.3 the matrix A is easily
+ * computed from the public key and does not require any special
+ * protections.
+ */
+
/* The seed used for each matrix element is rho + column_index + row_index */
memcpy(derived_seed, rho, ML_DSA_RHO_BYTES);
@@ -274,6 +290,7 @@ int ossl_ml_dsa_vector_expand_S(EVP_MD_CTX *h_ctx, const EVP_MD *md, int eta,
}
ret = 1;
err:
+ OPENSSL_cleanse(derived_seed, sizeof(derived_seed));
return ret;
}
@@ -284,9 +301,11 @@ int ossl_ml_dsa_poly_expand_mask(POLY *out, const uint8_t *seed, size_t seed_len
{
uint8_t buf[32 * 20];
size_t buf_len = 32 * (gamma1 == ML_DSA_GAMMA1_TWO_POWER_19 ? 20 : 18);
-
- return shake_xof(h_ctx, md, seed, seed_len, buf, buf_len)
+ int ret = shake_xof(h_ctx, md, seed, seed_len, buf, buf_len)
&& ossl_ml_dsa_poly_decode_expand_mask(out, buf, buf_len, gamma1);
+
+ OPENSSL_cleanse(buf, sizeof(buf));
+ return ret;
}
/*
@@ -311,13 +330,14 @@ int ossl_ml_dsa_poly_sample_in_ball(POLY *out_c, const uint8_t *seed, int seed_l
uint64_t signs;
int offset = 8;
size_t end;
+ int ret = 0;
/*
* Rather than squeeze 8 bytes followed by lots of 1 byte squeezes
* the SHAKE blocksize is squeezed each time and buffered into 'block'.
*/
if (!shake_xof(h_ctx, md, seed, seed_len, block, sizeof(block)))
- return 0;
+ goto err;
/*
* grab the first 64 bits - since tau < 64
@@ -336,7 +356,7 @@ int ossl_ml_dsa_poly_sample_in_ball(POLY *out_c, const uint8_t *seed, int seed_l
if (offset == sizeof(block)) {
/* squeeze another block if the bytes from block have been used */
if (!EVP_DigestSqueeze(h_ctx, block, sizeof(block)))
- return 0;
+ goto err;
offset = 0;
}
@@ -354,5 +374,8 @@ int ossl_ml_dsa_poly_sample_in_ball(POLY *out_c, const uint8_t *seed, int seed_l
out_c->coeff[index] = mod_sub(1, 2 * (signs & 1));
signs >>= 1; /* grab the next random bit */
}
- return 1;
+ ret = 1;
+err:
+ OPENSSL_cleanse(block, sizeof(block));
+ return ret;
}
diff --git a/deps/openssl/openssl/crypto/ml_dsa/ml_dsa_sign.c b/deps/openssl/openssl/crypto/ml_dsa/ml_dsa_sign.c
index 71eccf87596..166a604bcd5 100644
--- a/deps/openssl/openssl/crypto/ml_dsa/ml_dsa_sign.c
+++ b/deps/openssl/openssl/crypto/ml_dsa/ml_dsa_sign.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2024-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2024-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -197,6 +197,7 @@ static int ml_dsa_sign_internal(const ML_DSA_KEY *priv, int msg_is_mu,
EVP_MD_CTX_free(md_ctx);
OPENSSL_clear_free(alloc, alloc_len);
OPENSSL_cleanse(rho_prime, sizeof(rho_prime));
+ OPENSSL_cleanse(c_tilde, sizeof(c_tilde));
return ret;
}
@@ -387,7 +388,13 @@ int ossl_ml_dsa_sign(const ML_DSA_KEY *priv, int msg_is_mu,
alloced_m = m;
}
ret = ml_dsa_sign_internal(priv, msg_is_mu, m, m_len, rand, rand_len, sig);
- OPENSSL_free(alloced_m);
+ /* The encoded message may contain confidential message content */
+ if (m != msg) {
+ if (m != m_tmp)
+ OPENSSL_clear_free(alloced_m, m_len);
+ else
+ OPENSSL_cleanse(m_tmp, sizeof(m_tmp));
+ }
}
if (sig_len != NULL)
*sig_len = priv->params->sig_len;
@@ -424,6 +431,12 @@ int ossl_ml_dsa_verify(const ML_DSA_KEY *pub, int msg_is_mu,
}
ret = ml_dsa_verify_internal(pub, msg_is_mu, m, m_len, sig, sig_len);
- OPENSSL_free(alloced_m);
+ /* The encoded message may contain confidential message content */
+ if (m != msg) {
+ if (m != m_tmp)
+ OPENSSL_clear_free(alloced_m, m_len);
+ else
+ OPENSSL_cleanse(m_tmp, sizeof(m_tmp));
+ }
return ret;
}
diff --git a/deps/openssl/openssl/crypto/ml_dsa/ml_dsa_vector.h b/deps/openssl/openssl/crypto/ml_dsa/ml_dsa_vector.h
index d24bf031a29..1f3e6a03299 100644
--- a/deps/openssl/openssl/crypto/ml_dsa/ml_dsa_vector.h
+++ b/deps/openssl/openssl/crypto/ml_dsa/ml_dsa_vector.h
@@ -1,5 +1,5 @@
/*
- * Copyright 2024-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2024-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -8,6 +8,7 @@
*/
#include
+#include
#include "ml_dsa_poly.h"
struct vector_st {
@@ -153,6 +154,7 @@ vector_expand_mask(VECTOR *out, const uint8_t *rho_prime, size_t rho_prime_len,
poly_expand_mask(out->poly + i, derived_seed, sizeof(derived_seed),
gamma1, h_ctx, md);
}
+ OPENSSL_cleanse(derived_seed, sizeof(derived_seed));
}
/* Scale back previously rounded value */
diff --git a/deps/openssl/openssl/crypto/ml_kem/ml_kem.c b/deps/openssl/openssl/crypto/ml_kem/ml_kem.c
index dd8a39197ac..6c3141ca2d3 100644
--- a/deps/openssl/openssl/crypto/ml_kem/ml_kem.c
+++ b/deps/openssl/openssl/crypto/ml_kem/ml_kem.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2024-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2024-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -1310,6 +1310,12 @@ static __owur int matrix_expand(EVP_MD_CTX *mdctx, ML_KEM_KEY *key)
int rank = key->vinfo->rank;
int i, j;
+ /*
+ * The seeds derived below and the sampling buffers in sample_scalar()
+ * are not cleansed: per FIPS 203 section 3.3 the matrix A is easily
+ * computed from the public encapsulation key and does not require any
+ * special protections.
+ */
memcpy(input, key->rho, ML_KEM_RANDOM_BYTES);
for (i = 0; i < rank; i++) {
for (j = 0; j < rank; j++) {
@@ -1340,8 +1346,10 @@ static __owur int cbd_2(scalar *out, uint8_t in[ML_KEM_RANDOM_BYTES + 1],
uint16_t value, mask;
uint8_t b;
- if (!prf(randbuf, sizeof(randbuf), in, mdctx, key))
+ if (!prf(randbuf, sizeof(randbuf), in, mdctx, key)) {
+ OPENSSL_cleanse((void *)randbuf, sizeof(randbuf));
return 0;
+ }
do {
b = *r++;
@@ -1363,6 +1371,8 @@ static __owur int cbd_2(scalar *out, uint8_t in[ML_KEM_RANDOM_BYTES + 1],
mask = constish_time_non_zero(value >> 15);
*curr++ = value + (kPrime & mask);
} while (curr < end);
+
+ OPENSSL_cleanse((void *)randbuf, sizeof(randbuf));
return 1;
}
@@ -1380,8 +1390,10 @@ static __owur int cbd_3(scalar *out, uint8_t in[ML_KEM_RANDOM_BYTES + 1],
uint8_t b1, b2, b3;
uint16_t value, mask;
- if (!prf(randbuf, sizeof(randbuf), in, mdctx, key))
+ if (!prf(randbuf, sizeof(randbuf), in, mdctx, key)) {
+ OPENSSL_cleanse((void *)randbuf, sizeof(randbuf));
return 0;
+ }
do {
b1 = *r++;
@@ -1415,6 +1427,8 @@ static __owur int cbd_3(scalar *out, uint8_t in[ML_KEM_RANDOM_BYTES + 1],
mask = constish_time_non_zero(value >> 15);
*curr++ = value + (kPrime & mask);
} while (curr < end);
+
+ OPENSSL_cleanse((void *)randbuf, sizeof(randbuf));
return 1;
}
@@ -1427,14 +1441,19 @@ static __owur int gencbd_vector(scalar *out, CBD_FUNC cbd, uint8_t *counter,
EVP_MD_CTX *mdctx, const ML_KEM_KEY *key)
{
uint8_t input[ML_KEM_RANDOM_BYTES + 1];
+ int ret = 0;
memcpy(input, seed, ML_KEM_RANDOM_BYTES);
do {
input[ML_KEM_RANDOM_BYTES] = (*counter)++;
if (!cbd(out++, input, mdctx, key))
- return 0;
+ goto end;
} while (--rank > 0);
- return 1;
+ ret = 1;
+
+end:
+ OPENSSL_cleanse((void *)input, sizeof(input));
+ return ret;
}
/*
@@ -1445,15 +1464,20 @@ static __owur int gencbd_vector_ntt(scalar *out, CBD_FUNC cbd, uint8_t *counter,
EVP_MD_CTX *mdctx, const ML_KEM_KEY *key)
{
uint8_t input[ML_KEM_RANDOM_BYTES + 1];
+ int ret = 0;
memcpy(input, seed, ML_KEM_RANDOM_BYTES);
do {
input[ML_KEM_RANDOM_BYTES] = (*counter)++;
if (!cbd(out, input, mdctx, key))
- return 0;
+ goto end;
scalar_ntt(out++);
} while (--rank > 0);
- return 1;
+ ret = 1;
+
+end:
+ OPENSSL_cleanse((void *)input, sizeof(input));
+ return ret;
}
/* The |ETA1| value for ML-KEM-512 is 3, the rest and all ETA2 values are 2. */
@@ -1492,10 +1516,11 @@ static __owur int encrypt_cpa(uint8_t out[ML_KEM_SHARED_SECRET_BYTES],
uint8_t counter = 0;
int du = vinfo->du;
int dv = vinfo->dv;
+ int ret = 0;
/* FIPS 203 "y" vector */
if (!gencbd_vector_ntt(y, cbd_1, &counter, r, rank, mdctx, key))
- return 0;
+ goto end;
/* FIPS 203 "v" scalar */
inner_product(&v, key->t, y, rank);
scalar_inverse_ntt(&v);
@@ -1504,7 +1529,7 @@ static __owur int encrypt_cpa(uint8_t out[ML_KEM_SHARED_SECRET_BYTES],
/* All done with |y|, now free to reuse tmp[0] for FIPS 203 |e1| */
if (!gencbd_vector(e1, cbd_2, &counter, r, rank, mdctx, key))
- return 0;
+ goto end;
vector_add(u, e1, rank);
vector_compress(u, du, rank);
vector_encode(out, u, du, rank);
@@ -1513,14 +1538,19 @@ static __owur int encrypt_cpa(uint8_t out[ML_KEM_SHARED_SECRET_BYTES],
memcpy(input, r, ML_KEM_RANDOM_BYTES);
input[ML_KEM_RANDOM_BYTES] = counter;
if (!cbd_2(e2, input, mdctx, key))
- return 0;
+ goto end;
scalar_add(&v, e2);
/* Combine message with |v| */
scalar_decode_decompress_add(&v, message);
scalar_compress(&v, dv);
scalar_encode(out + vinfo->u_vector_bytes, &v, dv);
- return 1;
+ ret = 1;
+
+end:
+ OPENSSL_cleanse((void *)input, sizeof(input));
+ OPENSSL_cleanse((void *)&v, sizeof(v));
+ return ret;
}
/*
@@ -1544,6 +1574,9 @@ decrypt_cpa(uint8_t out[ML_KEM_SHARED_SECRET_BYTES],
scalar_sub(&v, &mask);
scalar_compress(&v, 1);
scalar_encode_1(out, &v);
+
+ OPENSSL_cleanse((void *)&v, sizeof(v));
+ OPENSSL_cleanse((void *)&mask, sizeof(mask));
}
/*-
@@ -1737,8 +1770,8 @@ static __owur int genkey(const uint8_t seed[ML_KEM_SEED_BYTES],
ret = 1;
end:
- OPENSSL_cleanse((void *)augmented_seed, ML_KEM_RANDOM_BYTES);
- OPENSSL_cleanse((void *)sigma, ML_KEM_RANDOM_BYTES);
+ OPENSSL_cleanse((void *)augmented_seed, sizeof(augmented_seed));
+ OPENSSL_cleanse((void *)hashed, sizeof(hashed));
if (ret == 0) {
ERR_raise_data(ERR_LIB_CRYPTO, ERR_R_INTERNAL_ERROR,
"internal error while generating %s private key",
@@ -1776,6 +1809,7 @@ static int encap(uint8_t *ctext, uint8_t secret[ML_KEM_SHARED_SECRET_BYTES],
ERR_raise_data(ERR_LIB_CRYPTO, ERR_R_INTERNAL_ERROR,
"internal error while performing %s encapsulation",
key->vinfo->algorithm_name);
+ OPENSSL_cleanse((void *)Kr, sizeof(Kr));
return ret;
}
@@ -1822,6 +1856,7 @@ static int decap(uint8_t secret[ML_KEM_SHARED_SECRET_BYTES],
ERR_raise_data(ERR_LIB_CRYPTO, ERR_R_INTERNAL_ERROR,
"internal error while performing %s decapsulation",
vinfo->algorithm_name);
+ OPENSSL_cleanse(failure_key, sizeof(failure_key));
return 0;
}
decrypt_cpa(decrypted, ctext, tmp, key);
@@ -1830,6 +1865,8 @@ static int decap(uint8_t secret[ML_KEM_SHARED_SECRET_BYTES],
|| !encrypt_cpa(tmp_ctext, decrypted, r, tmp, mdctx, key)) {
memcpy(secret, failure_key, ML_KEM_SHARED_SECRET_BYTES);
OPENSSL_cleanse(decrypted, ML_KEM_SHARED_SECRET_BYTES);
+ OPENSSL_cleanse(Kr, sizeof(Kr));
+ OPENSSL_cleanse(failure_key, sizeof(failure_key));
return 1;
}
mask = constant_time_eq_int_8(0,
@@ -1838,6 +1875,7 @@ static int decap(uint8_t secret[ML_KEM_SHARED_SECRET_BYTES],
secret[i] = constant_time_select_8(mask, Kr[i], failure_key[i]);
OPENSSL_cleanse(decrypted, ML_KEM_SHARED_SECRET_BYTES);
OPENSSL_cleanse(Kr, sizeof(Kr));
+ OPENSSL_cleanse(failure_key, sizeof(failure_key));
return 1;
}
@@ -1845,7 +1883,7 @@ static int decap(uint8_t secret[ML_KEM_SHARED_SECRET_BYTES],
* After allocating storage for public or private key data, update the key
* component pointers to reference that storage.
*/
-static __owur int add_storage(scalar *p, int private, ML_KEM_KEY *key)
+static __owur int add_storage(scalar *p, int private, int dup, ML_KEM_KEY *key)
{
int rank = key->vinfo->rank;
@@ -1854,9 +1892,12 @@ static __owur int add_storage(scalar *p, int private, ML_KEM_KEY *key)
/*
* We're adding key material, the seed buffer will now hold |rho| and
- * |pkhash|.
+ * |pkhash|. Zero the key hash when creating fresh keys; when
+ * duplicating, |key| was memdup'd from the source so |seedbuf|
+ * already carries the correct |rho|/|pkhash| bytes — preserve them.
*/
- memset(key->seedbuf, 0, sizeof(key->seedbuf));
+ if (dup == 0)
+ memset(key->seedbuf, 0, sizeof(key->seedbuf));
key->rho = key->seedbuf;
key->pkhash = key->seedbuf + ML_KEM_RANDOM_BYTES;
key->d = key->z = NULL;
@@ -1980,18 +2021,18 @@ ML_KEM_KEY *ossl_ml_kem_key_dup(const ML_KEM_KEY *key, int selection)
selection = 0;
else if (!ossl_ml_kem_have_prvkey(key))
selection &= ~OSSL_KEYMGMT_SELECT_PRIVATE_KEY;
+ else if ((selection & OSSL_KEYMGMT_SELECT_PRIVATE_KEY) != 0)
+ selection &= ~OSSL_KEYMGMT_SELECT_PUBLIC_KEY;
switch (selection & OSSL_KEYMGMT_SELECT_KEYPAIR) {
case 0:
ok = 1;
break;
case OSSL_KEYMGMT_SELECT_PUBLIC_KEY:
- ok = add_storage(OPENSSL_memdup(key->t, key->vinfo->puballoc), 0, ret);
- ret->rho = ret->seedbuf;
- ret->pkhash = ret->rho + ML_KEM_RANDOM_BYTES;
+ ok = add_storage(OPENSSL_memdup(key->t, key->vinfo->puballoc), 0, 1, ret);
break;
case OSSL_KEYMGMT_SELECT_PRIVATE_KEY:
- ok = add_storage(OPENSSL_memdup(key->t, key->vinfo->prvalloc), 1, ret);
+ ok = add_storage(OPENSSL_memdup(key->t, key->vinfo->prvalloc), 1, 1, ret);
/* Duplicated keys retain |d|, if available */
if (key->d != NULL)
ret->d = ret->z + ML_KEM_RANDOM_BYTES;
@@ -2111,7 +2152,7 @@ int ossl_ml_kem_parse_public_key(const uint8_t *in, size_t len, ML_KEM_KEY *key)
|| (mdctx = EVP_MD_CTX_new()) == NULL)
return 0;
- if (add_storage(OPENSSL_malloc(vinfo->puballoc), 0, key))
+ if (add_storage(OPENSSL_malloc(vinfo->puballoc), 0, 0, key))
ret = parse_pubkey(in, mdctx, key);
if (!ret)
@@ -2139,7 +2180,7 @@ int ossl_ml_kem_parse_private_key(const uint8_t *in, size_t len,
|| (mdctx = EVP_MD_CTX_new()) == NULL)
return 0;
- if (add_storage(OPENSSL_malloc(vinfo->prvalloc), 1, key))
+ if (add_storage(OPENSSL_malloc(vinfo->prvalloc), 1, 0, key))
ret = parse_prvkey(in, mdctx, key);
if (!ret)
@@ -2187,7 +2228,7 @@ int ossl_ml_kem_genkey(uint8_t *pubenc, size_t publen, ML_KEM_KEY *key)
*/
CONSTTIME_SECRET(seed, ML_KEM_SEED_BYTES);
- if (add_storage(OPENSSL_malloc(vinfo->prvalloc), 1, key))
+ if (add_storage(OPENSSL_malloc(vinfo->prvalloc), 1, 0, key))
ret = genkey(seed, mdctx, pubenc, key);
OPENSSL_cleanse(seed, sizeof(seed));
@@ -2196,6 +2237,9 @@ int ossl_ml_kem_genkey(uint8_t *pubenc, size_t publen, ML_KEM_KEY *key)
EVP_MD_CTX_free(mdctx);
if (!ret) {
+ /* Erase any partial public key output */
+ if (pubenc != NULL)
+ OPENSSL_cleanse(pubenc, vinfo->pubkey_bytes);
ossl_ml_kem_key_reset(key);
return 0;
}
@@ -2254,6 +2298,10 @@ int ossl_ml_kem_encap_seed(uint8_t *ctext, size_t clen,
}
#undef case_encap_seed
+ /* Erase any partial ciphertext output on failure */
+ if (!ret)
+ OPENSSL_cleanse(ctext, clen);
+
/* Declassify secret inputs and derived outputs before returning control */
CONSTTIME_DECLASSIFY(entropy, elen);
CONSTTIME_DECLASSIFY(ctext, clen);
@@ -2268,6 +2316,7 @@ int ossl_ml_kem_encap_rand(uint8_t *ctext, size_t clen,
const ML_KEM_KEY *key)
{
uint8_t r[ML_KEM_RANDOM_BYTES];
+ int ret;
if (key == NULL)
return 0;
@@ -2277,8 +2326,11 @@ int ossl_ml_kem_encap_rand(uint8_t *ctext, size_t clen,
< 1)
return 0;
- return ossl_ml_kem_encap_seed(ctext, clen, shared_secret, slen,
+ ret = ossl_ml_kem_encap_seed(ctext, clen, shared_secret, slen,
r, sizeof(r), key);
+
+ OPENSSL_cleanse((void *)r, sizeof(r));
+ return ret;
}
int ossl_ml_kem_decap(uint8_t *shared_secret, size_t slen,
@@ -2293,11 +2345,13 @@ int ossl_ml_kem_decap(uint8_t *shared_secret, size_t slen,
#endif
/* Need a private key here */
- if (!ossl_ml_kem_have_prvkey(key))
+ if (!ossl_ml_kem_have_prvkey(key)
+ || shared_secret == NULL
+ || slen < ML_KEM_SHARED_SECRET_BYTES)
return 0;
vinfo = key->vinfo;
- if (shared_secret == NULL || slen != ML_KEM_SHARED_SECRET_BYTES
+ if (slen != ML_KEM_SHARED_SECRET_BYTES
|| ctext == NULL || clen != vinfo->ctext_bytes
|| (mdctx = EVP_MD_CTX_new()) == NULL) {
(void)RAND_bytes_ex(key->libctx, shared_secret,
@@ -2326,6 +2380,7 @@ int ossl_ml_kem_decap(uint8_t *shared_secret, size_t slen,
\
ret = decap(shared_secret, ctext, cbuf, tmp, mdctx, key); \
OPENSSL_cleanse((void *)tmp, sizeof(tmp)); \
+ OPENSSL_cleanse((void *)cbuf, sizeof(cbuf)); \
break; \
}
switch (vinfo->evp_type) {
diff --git a/deps/openssl/openssl/crypto/modes/asm/aes-gcm-avx512.pl b/deps/openssl/openssl/crypto/modes/asm/aes-gcm-avx512.pl
index 054672bb6b9..3da7c69cb98 100644
--- a/deps/openssl/openssl/crypto/modes/asm/aes-gcm-avx512.pl
+++ b/deps/openssl/openssl/crypto/modes/asm/aes-gcm-avx512.pl
@@ -1,4 +1,4 @@
-# Copyright 2021-2024 The OpenSSL Project Authors. All Rights Reserved.
+# Copyright 2021-2026 The OpenSSL Project Authors. All Rights Reserved.
# Copyright (c) 2021, Intel Corporation. All Rights Reserved.
#
# Licensed under the Apache License 2.0 (the "License"). You may not use
@@ -72,6 +72,13 @@
}
}
+if (!$avx512vaes && `$ENV{CC} -x c /dev/null -dM -E|grep __clang_major__`
+ =~ /#define __clang_major__.([0-9]+)/) {
+ if ($1) {
+ $avx512vaes = ($1>=11); #icx started with clang 11
+ }
+}
+
open OUT, "| \"$^X\" \"$xlate\" $flavour \"$output\""
or die "can't call $xlate: $!";
*STDOUT = *OUT;
diff --git a/deps/openssl/openssl/crypto/modes/asm/aesni-gcm-x86_64.pl b/deps/openssl/openssl/crypto/modes/asm/aesni-gcm-x86_64.pl
index c63570bae42..202883dac35 100644
--- a/deps/openssl/openssl/crypto/modes/asm/aesni-gcm-x86_64.pl
+++ b/deps/openssl/openssl/crypto/modes/asm/aesni-gcm-x86_64.pl
@@ -1,5 +1,5 @@
#! /usr/bin/env perl
-# Copyright 2013-2024 The OpenSSL Project Authors. All Rights Reserved.
+# Copyright 2013-2026 The OpenSSL Project Authors. All Rights Reserved.
#
# Licensed under the Apache License 2.0 (the "License"). You may not use
# this file except in compliance with the License. You can obtain a copy
@@ -73,6 +73,13 @@
$avx = ($2>=3.0) + ($2>3.0);
}
+if (!$avx && `$ENV{CC} -x c /dev/null -dM -E|grep __clang_major__`
+ =~ /#define __clang_major__.([0-9]+)/) {
+ if ($1) {
+ $avx = ($1>=11); #icx started with clang 11
+ }
+}
+
open OUT,"| \"$^X\" \"$xlate\" $flavour \"$output\""
or die "can't call $xlate: $!";
*STDOUT=*OUT;
diff --git a/deps/openssl/openssl/crypto/modes/asm/ghash-x86_64.pl b/deps/openssl/openssl/crypto/modes/asm/ghash-x86_64.pl
index 6ef8e555d0a..181793c5523 100644
--- a/deps/openssl/openssl/crypto/modes/asm/ghash-x86_64.pl
+++ b/deps/openssl/openssl/crypto/modes/asm/ghash-x86_64.pl
@@ -1,5 +1,5 @@
#! /usr/bin/env perl
-# Copyright 2010-2024 The OpenSSL Project Authors. All Rights Reserved.
+# Copyright 2010-2026 The OpenSSL Project Authors. All Rights Reserved.
#
# Licensed under the Apache License 2.0 (the "License"). You may not use
# this file except in compliance with the License. You can obtain a copy
@@ -121,6 +121,13 @@
$avx = ($2>=3.0) + ($2>3.0);
}
+if (!$avx && `$ENV{CC} -x c /dev/null -dM -E|grep __clang_major__`
+ =~ /#define __clang_major__.([0-9]+)/) {
+ if ($1) {
+ $avx = ($1>=11); #icx started with clang 11
+ }
+}
+
open OUT,"| \"$^X\" \"$xlate\" $flavour \"$output\""
or die "can't call $xlate: $!";
*STDOUT=*OUT;
diff --git a/deps/openssl/openssl/crypto/pem/pvkfmt.c b/deps/openssl/openssl/crypto/pem/pvkfmt.c
index 9bfbb01e430..8b81f66e0e3 100644
--- a/deps/openssl/openssl/crypto/pem/pvkfmt.c
+++ b/deps/openssl/openssl/crypto/pem/pvkfmt.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2005-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2005-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -893,13 +893,13 @@ static void *do_PVK_body_key(const unsigned char **in,
(unsigned char *)psbuf, inlen, libctx, propq))
goto err;
p += saltlen;
- /* Copy BLOBHEADER across, decrypt rest */
- memcpy(enctmp, p, 8);
- p += 8;
if (keylen < 8) {
ERR_raise(ERR_LIB_PEM, PEM_R_PVK_TOO_SHORT);
goto err;
}
+ /* Copy BLOBHEADER across, decrypt rest */
+ memcpy(enctmp, p, 8);
+ p += 8;
inlen = keylen - 8;
q = enctmp + 8;
if ((rc4 = EVP_CIPHER_fetch(libctx, "RC4", propq)) == NULL)
diff --git a/deps/openssl/openssl/crypto/pkcs12/p12_add.c b/deps/openssl/openssl/crypto/pkcs12/p12_add.c
index 4750974d604..977aa8b6583 100644
--- a/deps/openssl/openssl/crypto/pkcs12/p12_add.c
+++ b/deps/openssl/openssl/crypto/pkcs12/p12_add.c
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2024 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1999-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -222,6 +222,6 @@ STACK_OF(PKCS7) *PKCS12_unpack_authsafes(const PKCS12 *p12)
}
return p7s;
err:
- sk_PKCS7_free(p7s);
+ sk_PKCS7_pop_free(p7s, PKCS7_free);
return NULL;
}
diff --git a/deps/openssl/openssl/crypto/pkcs12/p12_decr.c b/deps/openssl/openssl/crypto/pkcs12/p12_decr.c
index 0d415e755a1..31766989fc4 100644
--- a/deps/openssl/openssl/crypto/pkcs12/p12_decr.c
+++ b/deps/openssl/openssl/crypto/pkcs12/p12_decr.c
@@ -55,7 +55,8 @@ unsigned char *PKCS12_pbe_crypt_ex(const X509_ALGOR *algor,
if ((EVP_CIPHER_get_flags(EVP_CIPHER_CTX_get0_cipher(ctx))
& EVP_CIPH_FLAG_CIPHER_WITH_MAC)
!= 0) {
- if (EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_TLS1_AAD, 0, &mac_len) < 0) {
+ if (EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_TLS1_AAD, 0, &mac_len)
+ <= 0) {
ERR_raise(ERR_LIB_PKCS12, ERR_R_INTERNAL_ERROR);
goto err;
}
@@ -70,7 +71,7 @@ unsigned char *PKCS12_pbe_crypt_ex(const X509_ALGOR *algor,
inlen -= mac_len;
if (EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_SET_TAG,
(int)mac_len, (unsigned char *)in + inlen)
- < 0) {
+ <= 0) {
ERR_raise(ERR_LIB_PKCS12, ERR_R_INTERNAL_ERROR);
goto err;
}
diff --git a/deps/openssl/openssl/crypto/pkcs12/p12_utl.c b/deps/openssl/openssl/crypto/pkcs12/p12_utl.c
index a6f3248c554..f252fd1a006 100644
--- a/deps/openssl/openssl/crypto/pkcs12/p12_utl.c
+++ b/deps/openssl/openssl/crypto/pkcs12/p12_utl.c
@@ -186,6 +186,8 @@ char *OPENSSL_uni2utf8(const unsigned char *uni, int unilen)
/* string must contain an even number of bytes */
if (unilen & 1)
return NULL;
+ if (unilen < 0)
+ return NULL;
for (asclen = 0, i = 0; i < unilen;) {
j = bmp_to_utf8(NULL, uni + i, unilen - i);
diff --git a/deps/openssl/openssl/crypto/pkcs7/pk7_doit.c b/deps/openssl/openssl/crypto/pkcs7/pk7_doit.c
index 1ec7895fc19..aaf3c19aaea 100644
--- a/deps/openssl/openssl/crypto/pkcs7/pk7_doit.c
+++ b/deps/openssl/openssl/crypto/pkcs7/pk7_doit.c
@@ -1200,7 +1200,7 @@ PKCS7_ISSUER_AND_SERIAL *PKCS7_get_issuer_and_serial(PKCS7 *p7, int idx)
rsk = p7->d.signed_and_enveloped->recipientinfo;
if (rsk == NULL)
return NULL;
- if (sk_PKCS7_RECIP_INFO_num(rsk) <= idx)
+ if (idx < 0 || sk_PKCS7_RECIP_INFO_num(rsk) <= idx)
return NULL;
ri = sk_PKCS7_RECIP_INFO_value(rsk, idx);
return ri->issuer_and_serial;
diff --git a/deps/openssl/openssl/crypto/pkcs7/pk7_lib.c b/deps/openssl/openssl/crypto/pkcs7/pk7_lib.c
index 6cd0c3f025c..2fd753e873d 100644
--- a/deps/openssl/openssl/crypto/pkcs7/pk7_lib.c
+++ b/deps/openssl/openssl/crypto/pkcs7/pk7_lib.c
@@ -537,7 +537,7 @@ int PKCS7_set_digest(PKCS7 *p7, const EVP_MD *md)
}
ERR_raise(ERR_LIB_PKCS7, PKCS7_R_WRONG_CONTENT_TYPE);
- return 1;
+ return 0;
}
STACK_OF(PKCS7_SIGNER_INFO) *PKCS7_get_signer_info(PKCS7 *p7)
@@ -727,6 +727,10 @@ int PKCS7_stream(unsigned char ***boundary, PKCS7 *p7)
break;
case NID_pkcs7_signedAndEnveloped:
+ if (p7->d.signed_and_enveloped == NULL || p7->d.signed_and_enveloped->enc_data == NULL) {
+ ERR_raise(ERR_LIB_PKCS7, PKCS7_R_NO_CONTENT);
+ break;
+ }
os = p7->d.signed_and_enveloped->enc_data->enc_data;
if (os == NULL) {
os = ASN1_OCTET_STRING_new();
@@ -735,6 +739,10 @@ int PKCS7_stream(unsigned char ***boundary, PKCS7 *p7)
break;
case NID_pkcs7_enveloped:
+ if (p7->d.enveloped == NULL || p7->d.enveloped->enc_data == NULL) {
+ ERR_raise(ERR_LIB_PKCS7, PKCS7_R_NO_CONTENT);
+ break;
+ }
os = p7->d.enveloped->enc_data->enc_data;
if (os == NULL) {
os = ASN1_OCTET_STRING_new();
@@ -747,7 +755,13 @@ int PKCS7_stream(unsigned char ***boundary, PKCS7 *p7)
ERR_raise(ERR_LIB_PKCS7, PKCS7_R_NO_CONTENT);
break;
}
- os = p7->d.sign->contents->d.data;
+
+ if (!PKCS7_type_is_data(p7->d.sign->contents)) {
+ ERR_raise(ERR_LIB_PKCS7, PKCS7_R_UNSUPPORTED_CONTENT_TYPE);
+ break;
+ }
+
+ os = PKCS7_get_octet_string(p7->d.sign->contents);
break;
default:
diff --git a/deps/openssl/openssl/crypto/poly1305/asm/poly1305-x86.pl b/deps/openssl/openssl/crypto/poly1305/asm/poly1305-x86.pl
index c91d01fb3ba..6d367d858da 100755
--- a/deps/openssl/openssl/crypto/poly1305/asm/poly1305-x86.pl
+++ b/deps/openssl/openssl/crypto/poly1305/asm/poly1305-x86.pl
@@ -1,5 +1,5 @@
#! /usr/bin/env perl
-# Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved.
+# Copyright 2016-2026 The OpenSSL Project Authors. All Rights Reserved.
#
# Licensed under the Apache License 2.0 (the "License"). You may not use
# this file except in compliance with the License. You can obtain a copy
@@ -73,6 +73,13 @@
if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:clang|LLVM) version|based on LLVM) ([0-9]+\.[0-9]+)/) {
$avx = ($2>=3.0) + ($2>3.0);
}
+
+ if (!$avx && `$ENV{CC} -x c /dev/null -dM -E|grep __clang_major__`
+ =~ /#define __clang_major__.([0-9]+)/) {
+ if ($1) {
+ $avx = ($1>=11); #icx started with clang 11
+ }
+ }
}
########################################################################
diff --git a/deps/openssl/openssl/crypto/poly1305/asm/poly1305-x86_64.pl b/deps/openssl/openssl/crypto/poly1305/asm/poly1305-x86_64.pl
index 305099ca030..081fe4117ad 100755
--- a/deps/openssl/openssl/crypto/poly1305/asm/poly1305-x86_64.pl
+++ b/deps/openssl/openssl/crypto/poly1305/asm/poly1305-x86_64.pl
@@ -1,5 +1,5 @@
#! /usr/bin/env perl
-# Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved.
+# Copyright 2016-2026 The OpenSSL Project Authors. All Rights Reserved.
#
# Licensed under the Apache License 2.0 (the "License"). You may not use
# this file except in compliance with the License. You can obtain a copy
@@ -95,6 +95,13 @@
$avx = ($2>=3.0) + ($2>3.0);
}
+if (!$avx && `$ENV{CC} -x c /dev/null -dM -E|grep __clang_major__`
+ =~ /#define __clang_major__.([0-9]+)/) {
+ if ($1) {
+ $avx = ($1>=11); #icx started with clang 11
+ }
+}
+
open OUT,"| \"$^X\" \"$xlate\" $flavour \"$output\""
or die "can't call $xlate: $!";
*STDOUT=*OUT;
diff --git a/deps/openssl/openssl/crypto/rand/rand_lib.c b/deps/openssl/openssl/crypto/rand/rand_lib.c
index f03bb2967c4..df70d1c2b1d 100644
--- a/deps/openssl/openssl/crypto/rand/rand_lib.c
+++ b/deps/openssl/openssl/crypto/rand/rand_lib.c
@@ -1,5 +1,5 @@
/*
- * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -674,7 +674,6 @@ static EVP_RAND_CTX *rand_new_drbg(OSSL_LIB_CTX *libctx, EVP_RAND_CTX *parent,
EVP_RAND_CTX *ctx;
OSSL_PARAM params[9], *p = params;
const OSSL_PARAM *settables;
- const char *prov_name;
char *name, *cipher;
int use_df = 1;
@@ -686,7 +685,6 @@ static EVP_RAND_CTX *rand_new_drbg(OSSL_LIB_CTX *libctx, EVP_RAND_CTX *parent,
ERR_raise(ERR_LIB_RAND, RAND_R_UNABLE_TO_FETCH_DRBG);
return NULL;
}
- prov_name = ossl_provider_name(EVP_RAND_get0_provider(rand));
ctx = EVP_RAND_CTX_new(rand, parent);
EVP_RAND_free(rand);
if (ctx == NULL) {
@@ -704,9 +702,6 @@ static EVP_RAND_CTX *rand_new_drbg(OSSL_LIB_CTX *libctx, EVP_RAND_CTX *parent,
&& OSSL_PARAM_locate_const(settables, OSSL_DRBG_PARAM_DIGEST))
*p++ = OSSL_PARAM_construct_utf8_string(OSSL_DRBG_PARAM_DIGEST,
dgbl->rng_digest, 0);
- if (prov_name != NULL)
- *p++ = OSSL_PARAM_construct_utf8_string(OSSL_PROV_PARAM_CORE_PROV_NAME,
- (char *)prov_name, 0);
if (dgbl->rng_propq != NULL)
*p++ = OSSL_PARAM_construct_utf8_string(OSSL_DRBG_PARAM_PROPERTIES,
dgbl->rng_propq, 0);
@@ -864,7 +859,10 @@ static EVP_RAND_CTX *rand_get0_public(OSSL_LIB_CTX *ctx, RAND_GLOBAL *dgbl)
return NULL;
rand = rand_new_drbg(ctx, primary, SECONDARY_RESEED_INTERVAL,
SECONDARY_RESEED_TIME_INTERVAL);
- CRYPTO_THREAD_set_local(&dgbl->public, rand);
+ if (!CRYPTO_THREAD_set_local(&dgbl->public, rand)) {
+ EVP_RAND_CTX_free(rand);
+ rand = NULL;
+ }
}
return rand;
}
@@ -903,7 +901,10 @@ static EVP_RAND_CTX *rand_get0_private(OSSL_LIB_CTX *ctx, RAND_GLOBAL *dgbl)
return NULL;
rand = rand_new_drbg(ctx, primary, SECONDARY_RESEED_INTERVAL,
SECONDARY_RESEED_TIME_INTERVAL);
- CRYPTO_THREAD_set_local(&dgbl->private, rand);
+ if (!CRYPTO_THREAD_set_local(&dgbl->private, rand)) {
+ EVP_RAND_CTX_free(rand);
+ rand = NULL;
+ }
}
return rand;
}
diff --git a/deps/openssl/openssl/crypto/rsa/rsa_gen.c b/deps/openssl/openssl/crypto/rsa/rsa_gen.c
index 554f9d349b8..777a485422d 100644
--- a/deps/openssl/openssl/crypto/rsa/rsa_gen.c
+++ b/deps/openssl/openssl/crypto/rsa/rsa_gen.c
@@ -1,5 +1,5 @@
/*
- * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -636,7 +636,6 @@ static int rsa_keygen(OSSL_LIB_CTX *libctx, RSA *rsa, int bits, int primes,
OSSL_SELF_TEST_get_callback(libctx, &stcb, &stcbarg);
ok = rsa_keygen_pairwise_test(rsa, stcb, stcbarg);
if (!ok) {
- ossl_set_error_state(OSSL_SELF_TEST_TYPE_PCT);
/* Clear intermediate results */
BN_clear_free(rsa->d);
BN_clear_free(rsa->p);
diff --git a/deps/openssl/openssl/crypto/rsa/rsa_ossl.c b/deps/openssl/openssl/crypto/rsa/rsa_ossl.c
index 2fcf02a9ab0..73a4b7c20a4 100644
--- a/deps/openssl/openssl/crypto/rsa/rsa_ossl.c
+++ b/deps/openssl/openssl/crypto/rsa/rsa_ossl.c
@@ -1,5 +1,5 @@
/*
- * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -160,6 +160,14 @@ static int rsa_ossl_public_encrypt(int flen, const unsigned char *from,
* See SP800-56Br2, section 7.1.1.1
* RSAEP: 1 < f < (n – 1).
* (where f is the plaintext).
+ *
+ * This bound is somewhat overkill here. RSASVE.GENERATE (7.2.1.2)
+ * regenerates z until 1 < z < n-1, so on that path the plaintext is in
+ * range unconditionally. On the OAEP path the leading 0x00 octet of the
+ * encoding forces m < n-1 unconditionally, while m = 0 or 1 is only
+ * cryptographically negligible, not impossible. The check is kept to
+ * mirror the RSADP bound in rsa_ossl_private_decrypt() and to keep RSAEP
+ * faithful to 7.1.1 of the SP; nothing in the SP relies on it here.
*/
if (padding == RSA_NO_PADDING) {
BIGNUM *nminus1 = BN_CTX_get(ctx);
@@ -572,6 +580,12 @@ static int rsa_ossl_private_decrypt(int flen, const unsigned char *from,
* See SP800-56Br2, section 7.1.2.1
* RSADP: 1 < f < (n – 1)
* (where f is the ciphertext).
+ *
+ * Kept under FIPS_MODULE because SP 800-56B KTS-OAEP (section 9.2) also
+ * decrypts through RSADP and needs this bound in a FIPS build, and there
+ * is no KTS-OAEP-specific path to attach it to. The non-FIPS RSASVE path
+ * applies the same 1 < c < n-1 in rsasve_recover()
+ * (providers/implementations/kem/rsa_kem.c); keep the two in step.
*/
if (padding == RSA_NO_PADDING) {
BIGNUM *nminus1 = BN_CTX_get(ctx);
diff --git a/deps/openssl/openssl/crypto/sha/asm/sha1-586.pl b/deps/openssl/openssl/crypto/sha/asm/sha1-586.pl
index 00350324a11..81c3658b0ad 100644
--- a/deps/openssl/openssl/crypto/sha/asm/sha1-586.pl
+++ b/deps/openssl/openssl/crypto/sha/asm/sha1-586.pl
@@ -1,5 +1,5 @@
#! /usr/bin/env perl
-# Copyright 1998-2020 The OpenSSL Project Authors. All Rights Reserved.
+# Copyright 1998-2026 The OpenSSL Project Authors. All Rights Reserved.
#
# Licensed under the Apache License 2.0 (the "License"). You may not use
# this file except in compliance with the License. You can obtain a copy
@@ -146,6 +146,9 @@
$ymm=1 if ($xmm && !$ymm && `$ENV{CC} -v 2>&1` =~ /((?:clang|LLVM) version|based on LLVM) ([0-9]+\.[0-9]+)/ &&
$2>=3.0); # first version supporting AVX
+$ymm=1 if ($xmm && !$ymm && `$ENV{CC} -x c /dev/null -dM -E|grep __clang_major__` =~ /#define __clang_major__.([0-9]+)/ &&
+ $1>=11); #icx started with clang 11
+
$shaext=$xmm; ### set to zero if compiling for 1.0.1
&external_label("OPENSSL_ia32cap_P") if ($xmm);
diff --git a/deps/openssl/openssl/crypto/sha/asm/sha1-mb-x86_64.pl b/deps/openssl/openssl/crypto/sha/asm/sha1-mb-x86_64.pl
index d9d1630d16d..59042c90b2f 100644
--- a/deps/openssl/openssl/crypto/sha/asm/sha1-mb-x86_64.pl
+++ b/deps/openssl/openssl/crypto/sha/asm/sha1-mb-x86_64.pl
@@ -1,5 +1,5 @@
#! /usr/bin/env perl
-# Copyright 2013-2024 The OpenSSL Project Authors. All Rights Reserved.
+# Copyright 2013-2026 The OpenSSL Project Authors. All Rights Reserved.
#
# Licensed under the Apache License 2.0 (the "License"). You may not use
# this file except in compliance with the License. You can obtain a copy
@@ -76,6 +76,13 @@
$avx = ($2>=3.0) + ($2>3.0);
}
+if (!$avx && `$ENV{CC} -x c /dev/null -dM -E|grep __clang_major__`
+ =~ /#define __clang_major__.([0-9]+)/) {
+ if ($1) {
+ $avx = ($1>=11); #icx started with clang 11
+ }
+}
+
open OUT,"| \"$^X\" \"$xlate\" $flavour \"$output\""
or die "can't call $xlate: $!";
*STDOUT=*OUT;
diff --git a/deps/openssl/openssl/crypto/sha/asm/sha1-x86_64.pl b/deps/openssl/openssl/crypto/sha/asm/sha1-x86_64.pl
index 30c545cf419..829fe16a827 100755
--- a/deps/openssl/openssl/crypto/sha/asm/sha1-x86_64.pl
+++ b/deps/openssl/openssl/crypto/sha/asm/sha1-x86_64.pl
@@ -1,5 +1,5 @@
#! /usr/bin/env perl
-# Copyright 2006-2024 The OpenSSL Project Authors. All Rights Reserved.
+# Copyright 2006-2026 The OpenSSL Project Authors. All Rights Reserved.
#
# Licensed under the Apache License 2.0 (the "License"). You may not use
# this file except in compliance with the License. You can obtain a copy
@@ -124,6 +124,13 @@
$avx = ($2>=3.0) + ($2>3.0);
}
+if (!$avx && `$ENV{CC} -x c /dev/null -dM -E|grep __clang_major__`
+ =~ /#define __clang_major__.([0-9]+)/) {
+ if ($1) {
+ $avx = ($1>=11); #icx started with clang 11
+ }
+}
+
$shaext=1; ### set to zero if compiling for 1.0.1
$avx=1 if (!$shaext && $avx);
diff --git a/deps/openssl/openssl/crypto/sha/asm/sha256-586.pl b/deps/openssl/openssl/crypto/sha/asm/sha256-586.pl
index 8e19cd875e3..3983e55ff9e 100644
--- a/deps/openssl/openssl/crypto/sha/asm/sha256-586.pl
+++ b/deps/openssl/openssl/crypto/sha/asm/sha256-586.pl
@@ -1,5 +1,5 @@
#! /usr/bin/env perl
-# Copyright 2007-2020 The OpenSSL Project Authors. All Rights Reserved.
+# Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved.
#
# Licensed under the Apache License 2.0 (the "License"). You may not use
# this file except in compliance with the License. You can obtain a copy
@@ -99,6 +99,13 @@
$avx = ($2>=3.0) + ($2>3.0);
}
+if ($xmm && !$avx && `$ENV{CC} -x c /dev/null -dM -E|grep __clang_major__`
+ =~ /#define __clang_major__.([0-9]+)/) {
+ if ($1) {
+ $avx = ($1>=11); #icx started with clang 11
+ }
+}
+
$shaext=$xmm; ### set to zero if compiling for 1.0.1
$unroll_after = 64*4; # If pre-evicted from L1P cache first spin of
diff --git a/deps/openssl/openssl/crypto/sha/asm/sha256-mb-x86_64.pl b/deps/openssl/openssl/crypto/sha/asm/sha256-mb-x86_64.pl
index 9398b7954a7..e53517d787f 100644
--- a/deps/openssl/openssl/crypto/sha/asm/sha256-mb-x86_64.pl
+++ b/deps/openssl/openssl/crypto/sha/asm/sha256-mb-x86_64.pl
@@ -1,5 +1,5 @@
#! /usr/bin/env perl
-# Copyright 2013-2024 The OpenSSL Project Authors. All Rights Reserved.
+# Copyright 2013-2026 The OpenSSL Project Authors. All Rights Reserved.
#
# Licensed under the Apache License 2.0 (the "License"). You may not use
# this file except in compliance with the License. You can obtain a copy
@@ -77,6 +77,13 @@
$avx = ($2>=3.0) + ($2>3.0);
}
+if (!$avx && `$ENV{CC} -x c /dev/null -dM -E|grep __clang_major__`
+ =~ /#define __clang_major__.([0-9]+)/) {
+ if ($1) {
+ $avx = ($1>=11); #icx started with clang 11
+ }
+}
+
open OUT,"| \"$^X\" \"$xlate\" $flavour \"$output\""
or die "can't call $xlate: $!";
*STDOUT=*OUT;
diff --git a/deps/openssl/openssl/crypto/sha/asm/sha512-x86_64.pl b/deps/openssl/openssl/crypto/sha/asm/sha512-x86_64.pl
index b37058ae03f..cbdd7df6756 100755
--- a/deps/openssl/openssl/crypto/sha/asm/sha512-x86_64.pl
+++ b/deps/openssl/openssl/crypto/sha/asm/sha512-x86_64.pl
@@ -1,5 +1,5 @@
#! /usr/bin/env perl
-# Copyright 2005-2024 The OpenSSL Project Authors. All Rights Reserved.
+# Copyright 2005-2026 The OpenSSL Project Authors. All Rights Reserved.
#
# Licensed under the Apache License 2.0 (the "License"). You may not use
# this file except in compliance with the License. You can obtain a copy
@@ -140,6 +140,13 @@
$avx = ($2>=3.0) + ($2>3.0);
}
+if (!$avx && `$ENV{CC} -x c /dev/null -dM -E|grep __clang_major__`
+ =~ /#define __clang_major__.([0-9]+)/) {
+ if ($1) {
+ $avx = ($1>=11); #icx started with clang 11
+ }
+}
+
$shaext=1; ### set to zero if compiling for 1.0.1
$avx=1 if (!$shaext && $avx);
diff --git a/deps/openssl/openssl/crypto/sha/sha_riscv.c b/deps/openssl/openssl/crypto/sha/sha_riscv.c
index 61ceaa22a4b..dad1b118767 100644
--- a/deps/openssl/openssl/crypto/sha/sha_riscv.c
+++ b/deps/openssl/openssl/crypto/sha/sha_riscv.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2023-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -17,9 +17,9 @@
void sha256_block_data_order_zvkb_zvknha_or_zvknhb(void *ctx, const void *in,
size_t num);
void sha256_block_data_order_c(void *ctx, const void *in, size_t num);
-void sha256_block_data_order(SHA256_CTX *ctx, const void *in, size_t num);
+void sha256_block_data_order(void *ctx, const void *in, size_t num);
-void sha256_block_data_order(SHA256_CTX *ctx, const void *in, size_t num)
+void sha256_block_data_order(void *ctx, const void *in, size_t num)
{
if (RISCV_HAS_ZVKB() && (RISCV_HAS_ZVKNHA() || RISCV_HAS_ZVKNHB()) && riscv_vlen() >= 128) {
sha256_block_data_order_zvkb_zvknha_or_zvknhb(ctx, in, num);
@@ -30,9 +30,9 @@ void sha256_block_data_order(SHA256_CTX *ctx, const void *in, size_t num)
void sha512_block_data_order_zvkb_zvknhb(void *ctx, const void *in, size_t num);
void sha512_block_data_order_c(void *ctx, const void *in, size_t num);
-void sha512_block_data_order(SHA512_CTX *ctx, const void *in, size_t num);
+void sha512_block_data_order(void *ctx, const void *in, size_t num);
-void sha512_block_data_order(SHA512_CTX *ctx, const void *in, size_t num)
+void sha512_block_data_order(void *ctx, const void *in, size_t num)
{
if (RISCV_HAS_ZVKB_AND_ZVKNHB() && riscv_vlen() >= 128) {
sha512_block_data_order_zvkb_zvknhb(ctx, in, num);
diff --git a/deps/openssl/openssl/crypto/slh_dsa/slh_dsa.c b/deps/openssl/openssl/crypto/slh_dsa/slh_dsa.c
index 41fc494048b..4cf75089920 100644
--- a/deps/openssl/openssl/crypto/slh_dsa/slh_dsa.c
+++ b/deps/openssl/openssl/crypto/slh_dsa/slh_dsa.c
@@ -8,6 +8,7 @@
*/
#include
#include
+#include
#include
#include
#include "slh_dsa_local.h"
@@ -122,8 +123,13 @@ static int slh_sign_internal(SLH_DSA_HASH_CTX *hctx,
err:
if (!WPACKET_finish(wpkt))
ret = 0;
+ OPENSSL_cleanse(m_digest, sizeof(m_digest));
+ OPENSSL_cleanse(pk_fors, sizeof(pk_fors));
if (ret)
*sig_len = sig_len_expected;
+ else
+ /* Erase any partial signature output */
+ OPENSSL_cleanse(sig, sig_len_expected);
return ret;
}
@@ -148,6 +154,7 @@ static int slh_verify_internal(SLH_DSA_HASH_CTX *hctx,
const uint8_t *msg, size_t msg_len,
const uint8_t *sig, size_t sig_len)
{
+ int ret = 0;
const SLH_DSA_KEY *pub = hctx->key;
SLH_HASH_FUNC_DECLARE(pub, hashf);
SLH_ADRS_FUNC_DECLARE(pub, adrsf);
@@ -185,7 +192,7 @@ static int slh_verify_internal(SLH_DSA_HASH_CTX *hctx,
if (!hashf->H_MSG(hctx, r, pk_seed, pk_root, msg, msg_len,
m_digest, sizeof(m_digest)))
- return 0;
+ goto err;
/*
* Get md (the first md_len bytes of m_digest to use in
@@ -195,16 +202,20 @@ static int slh_verify_internal(SLH_DSA_HASH_CTX *hctx,
if (!PACKET_buf_init(m_digest_rpkt, m_digest, sizeof(m_digest))
|| !PACKET_get_bytes(m_digest_rpkt, &md, md_len)
|| !get_tree_ids(m_digest_rpkt, params, &tree_id, &leaf_id))
- return 0;
+ goto err;
adrsf->set_tree_address(adrs, tree_id);
adrsf->set_type_and_clear(adrs, SLH_ADRS_TYPE_FORS_TREE);
adrsf->set_keypair_address(adrs, leaf_id);
- return ossl_slh_fors_pk_from_sig(hctx, sig_rpkt, md, pk_seed, adrs,
- pk_fors, sizeof(pk_fors))
+ ret = ossl_slh_fors_pk_from_sig(hctx, sig_rpkt, md, pk_seed, adrs,
+ pk_fors, sizeof(pk_fors))
&& ossl_slh_ht_verify(hctx, pk_fors, sig_rpkt, pk_seed,
tree_id, leaf_id, pk_root)
&& PACKET_remaining(sig_rpkt) == 0;
+err:
+ OPENSSL_cleanse(m_digest, sizeof(m_digest));
+ OPENSSL_cleanse(pk_fors, sizeof(pk_fors));
+ return ret;
}
/**
@@ -292,8 +303,13 @@ int ossl_slh_dsa_sign(SLH_DSA_HASH_CTX *slh_ctx,
return 0;
}
ret = slh_sign_internal(slh_ctx, m, m_len, sig, siglen, sigsize, add_rand);
- if (m != msg && m != m_tmp)
- OPENSSL_free(m);
+ /* The encoded message may contain confidential message content */
+ if (m != msg) {
+ if (m != m_tmp)
+ OPENSSL_clear_free(m, m_len);
+ else
+ OPENSSL_cleanse(m_tmp, sizeof(m_tmp));
+ }
return ret;
}
@@ -317,8 +333,13 @@ int ossl_slh_dsa_verify(SLH_DSA_HASH_CTX *slh_ctx,
return 0;
ret = slh_verify_internal(slh_ctx, m, m_len, sig, sig_len);
- if (m != msg && m != m_tmp)
- OPENSSL_free(m);
+ /* The encoded message may contain confidential message content */
+ if (m != msg) {
+ if (m != m_tmp)
+ OPENSSL_clear_free(m, m_len);
+ else
+ OPENSSL_cleanse(m_tmp, sizeof(m_tmp));
+ }
return ret;
}
diff --git a/deps/openssl/openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c b/deps/openssl/openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c
index 9dca01acf5f..513f7f7dafc 100644
--- a/deps/openssl/openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c
+++ b/deps/openssl/openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2024-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2024-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -109,5 +109,6 @@ void ossl_slh_dsa_hash_ctx_free(SLH_DSA_HASH_CTX *ctx)
if (ctx->md_big_ctx != ctx->md_ctx)
EVP_MD_CTX_free(ctx->md_big_ctx);
EVP_MAC_CTX_free(ctx->hmac_ctx);
- OPENSSL_free(ctx);
+ /* Erases the |scratch| hash intermediates */
+ OPENSSL_clear_free(ctx, sizeof(*ctx));
}
diff --git a/deps/openssl/openssl/crypto/slh_dsa/slh_dsa_key.c b/deps/openssl/openssl/crypto/slh_dsa/slh_dsa_key.c
index 6d778a39f46..9e980bf1bfb 100644
--- a/deps/openssl/openssl/crypto/slh_dsa/slh_dsa_key.c
+++ b/deps/openssl/openssl/crypto/slh_dsa/slh_dsa_key.c
@@ -313,6 +313,12 @@ int ossl_slh_dsa_key_fromdata(SLH_DSA_KEY *key, const OSSL_PARAM params[],
key->pub = p;
return 1;
err:
+ /*
+ * A private key of unexpected length may have been copied into |priv|
+ * before |has_priv| was set, in which case the reset below would not
+ * erase it, so cleanse unconditionally.
+ */
+ OPENSSL_cleanse(key->priv, sizeof(key->priv));
ossl_slh_dsa_key_reset(key);
return 0;
}
diff --git a/deps/openssl/openssl/crypto/slh_dsa/slh_dsa_local.h b/deps/openssl/openssl/crypto/slh_dsa/slh_dsa_local.h
index 57dfc1eb130..d2eccdd08a9 100644
--- a/deps/openssl/openssl/crypto/slh_dsa/slh_dsa_local.h
+++ b/deps/openssl/openssl/crypto/slh_dsa/slh_dsa_local.h
@@ -1,5 +1,5 @@
/*
- * Copyright 2024-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2024-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -45,12 +45,24 @@
* NOTE: Any changes to this structure will need updating in
* ossl_slh_dsa_hash_ctx_dup().
*/
+/* A SHA-512 digest plus two |n| byte node values */
+#define SLH_DSA_HASH_SCRATCH_LEN (64 + 2 * SLH_MAX_N)
+
struct slh_dsa_hash_ctx_st {
const SLH_DSA_KEY *key; /* This key is not owned by this object */
EVP_MD_CTX *md_ctx; /* Either SHAKE OR SHA-256 */
EVP_MD_CTX *md_big_ctx; /* Either SHA-512 or points to |md_ctx| for SHA-256*/
EVP_MAC_CTX *hmac_ctx; /* required by SHA algorithms for PRFmsg() */
int hmac_digest_used; /* Used for lazy init of hmac_ctx digest */
+ /*
+ * Working storage for the SHA2 hash function intermediates, used in
+ * place of local stack copies, so that potentially sensitive
+ * intermediate data lives in one place and is erased when this object
+ * is freed (FIPS 205 section 3.1). The SHAKE hash functions write
+ * their output directly to the caller's buffer and need no scratch.
+ * Not used concurrently.
+ */
+ uint8_t scratch[SLH_DSA_HASH_SCRATCH_LEN];
};
__owur int ossl_slh_wots_pk_gen(SLH_DSA_HASH_CTX *ctx, const uint8_t *sk_seed,
diff --git a/deps/openssl/openssl/crypto/slh_dsa/slh_fors.c b/deps/openssl/openssl/crypto/slh_dsa/slh_fors.c
index 78587589db4..7c8854cc9b3 100644
--- a/deps/openssl/openssl/crypto/slh_dsa/slh_fors.c
+++ b/deps/openssl/openssl/crypto/slh_dsa/slh_fors.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2024-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2024-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -17,8 +17,8 @@
/* a = 6, 8, 9, 12 or 14 - There are (2^a) merkle trees */
#define SLH_MAX_A 9
-#define SLH_MAX_K_TIMES_A (SLH_MAX_A * SLH_MAX_K)
-#define SLH_MAX_ROOTS (SLH_MAX_K_TIMES_A * SLH_MAX_N)
+/* The FORS public key is computed from the roots of k Merkle trees */
+#define SLH_MAX_ROOTS (SLH_MAX_K * SLH_MAX_N)
static void slh_base_2b(const uint8_t *in, uint32_t b, uint32_t *out, size_t out_len);
@@ -87,25 +87,25 @@ static int slh_fors_node(SLH_DSA_HASH_CTX *ctx, const uint8_t *sk_seed,
if (height == 0) {
/* Gets here for leaf nodes */
- if (!slh_fors_sk_gen(ctx, sk_seed, pk_seed, adrs, node_id, sk, sizeof(sk)))
- return 0;
- adrsf->set_tree_height(adrs, 0);
- adrsf->set_tree_index(adrs, node_id);
- ret = key->hash_func->F(ctx, pk_seed, adrs, sk, n, node, node_len);
+ if (slh_fors_sk_gen(ctx, sk_seed, pk_seed, adrs, node_id, sk, sizeof(sk))) {
+ adrsf->set_tree_height(adrs, 0);
+ adrsf->set_tree_index(adrs, node_id);
+ ret = key->hash_func->F(ctx, pk_seed, adrs, sk, n, node, node_len);
+ }
OPENSSL_cleanse(sk, n);
- return ret;
} else {
- if (!slh_fors_node(ctx, sk_seed, pk_seed, adrs, 2 * node_id, height - 1,
- lnode, sizeof(rnode))
- || !slh_fors_node(ctx, sk_seed, pk_seed, adrs, 2 * node_id + 1,
- height - 1, rnode, sizeof(rnode)))
- return 0;
- adrsf->set_tree_height(adrs, height);
- adrsf->set_tree_index(adrs, node_id);
- if (!key->hash_func->H(ctx, pk_seed, adrs, lnode, rnode, node, node_len))
- return 0;
+ if (slh_fors_node(ctx, sk_seed, pk_seed, adrs, 2 * node_id, height - 1,
+ lnode, sizeof(lnode))
+ && slh_fors_node(ctx, sk_seed, pk_seed, adrs, 2 * node_id + 1,
+ height - 1, rnode, sizeof(rnode))) {
+ adrsf->set_tree_height(adrs, height);
+ adrsf->set_tree_index(adrs, node_id);
+ ret = key->hash_func->H(ctx, pk_seed, adrs, lnode, rnode, node, node_len);
+ }
+ OPENSSL_cleanse(lnode, sizeof(lnode));
+ OPENSSL_cleanse(rnode, sizeof(rnode));
}
- return 1;
+ return ret;
}
/**
@@ -132,6 +132,7 @@ int ossl_slh_fors_sign(SLH_DSA_HASH_CTX *ctx, const uint8_t *md,
const uint8_t *sk_seed, const uint8_t *pk_seed,
uint8_t *adrs, WPACKET *sig_wpkt)
{
+ int ret = 0;
const SLH_DSA_KEY *key = ctx->key;
uint32_t tree_id, layer, s, tree_offset;
uint32_t ids[SLH_MAX_K];
@@ -165,7 +166,7 @@ int ossl_slh_fors_sign(SLH_DSA_HASH_CTX *ctx, const uint8_t *md,
if (!slh_fors_sk_gen(ctx, sk_seed, pk_seed, adrs,
node_id + tree_id_times_two_power_a, out, sizeof(out))
|| !WPACKET_memcpy(sig_wpkt, out, n))
- return 0;
+ goto err;
/*
* Traverse from the bottom of the tree (layer = 0)
@@ -178,15 +179,18 @@ int ossl_slh_fors_sign(SLH_DSA_HASH_CTX *ctx, const uint8_t *md,
s = node_id ^ 1; /* XOR gets the index of the other child in a binary tree */
if (!slh_fors_node(ctx, sk_seed, pk_seed, adrs,
s + tree_offset, layer, out, sizeof(out)))
- return 0;
+ goto err;
node_id >>= 1; /* Get the parent node id */
tree_offset >>= 1; /* Each layer up has half as many nodes */
if (!WPACKET_memcpy(sig_wpkt, out, n))
- return 0;
+ goto err;
}
tree_id_times_two_power_a += two_power_a;
}
- return 1;
+ ret = 1;
+err:
+ OPENSSL_cleanse(out, sizeof(out));
+ return ret;
}
/**
@@ -288,6 +292,8 @@ int ossl_slh_fors_pk_from_sig(SLH_DSA_HASH_CTX *ctx, PACKET *fors_sig_rpkt,
err:
if (!WPACKET_finish(wroot_pkt))
ret = 0;
+ /* At most one |n| byte root per tree was written */
+ OPENSSL_cleanse(roots, k * n);
return ret;
}
diff --git a/deps/openssl/openssl/crypto/slh_dsa/slh_hash.c b/deps/openssl/openssl/crypto/slh_dsa/slh_hash.c
index bd112f1cb0d..b0023c955c3 100644
--- a/deps/openssl/openssl/crypto/slh_dsa/slh_hash.c
+++ b/deps/openssl/openssl/crypto/slh_dsa/slh_hash.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2024-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2024-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -92,12 +92,15 @@ slh_prf_msg_shake(SLH_DSA_HASH_CTX *ctx, const uint8_t *sk_prf,
const uint8_t *opt_rand, const uint8_t *msg, size_t msg_len,
WPACKET *pkt)
{
+ int ret;
unsigned char out[SLH_MAX_N];
const SLH_DSA_PARAMS *params = ctx->key->params;
size_t n = params->n;
- return xof_digest_3(ctx->md_ctx, sk_prf, n, opt_rand, n, msg, msg_len, out, n)
+ ret = xof_digest_3(ctx->md_ctx, sk_prf, n, opt_rand, n, msg, msg_len, out, n)
&& WPACKET_memcpy(pkt, out, n);
+ OPENSSL_cleanse(out, sizeof(out));
+ return ret;
}
static int
@@ -151,6 +154,7 @@ slh_hmsg_sha2(SLH_DSA_HASH_CTX *hctx, const uint8_t *r, const uint8_t *pk_seed,
const uint8_t *pk_root, const uint8_t *msg, size_t msg_len,
uint8_t *out, size_t out_len)
{
+ int ret;
const SLH_DSA_PARAMS *params = hctx->key->params;
size_t m = params->m;
size_t n = params->n;
@@ -163,9 +167,11 @@ slh_hmsg_sha2(SLH_DSA_HASH_CTX *hctx, const uint8_t *r, const uint8_t *pk_seed,
memcpy(seed, r, n);
memcpy(seed + n, pk_seed, n);
- return digest_4(hctx->md_big_ctx, r, n, pk_seed, n, pk_root, n, msg, msg_len,
- seed + 2 * n)
+ ret = digest_4(hctx->md_big_ctx, r, n, pk_seed, n, pk_root, n, msg, msg_len,
+ seed + 2 * n)
&& (PKCS1_MGF1(out, m, seed, seed_len, hctx->key->md_big) == 0);
+ OPENSSL_cleanse(seed, sizeof(seed));
+ return ret;
}
static int
@@ -205,16 +211,23 @@ slh_prf_msg_sha2(SLH_DSA_HASH_CTX *hctx,
&& EVP_MAC_update(mctx, msg, msg_len) == 1
&& EVP_MAC_final(mctx, mac, NULL, sizeof(mac)) == 1
&& WPACKET_memcpy(pkt, mac, n); /* Truncate output to n bytes */
+ OPENSSL_cleanse(mac, sizeof(mac));
return ret;
}
+/*
+ * The |digest| scratch storage in the hash context is used in place of a
+ * local stack buffer, and is erased when the hash context is freed
+ * (FIPS 205 section 3.1). On the PRF path it holds a derived chain secret.
+ */
static ossl_inline int
-do_hash(EVP_MD_CTX *ctx, size_t n, const uint8_t *pk_seed, const uint8_t *adrs,
+do_hash(SLH_DSA_HASH_CTX *hctx, EVP_MD_CTX *ctx, size_t n,
+ const uint8_t *pk_seed, const uint8_t *adrs,
const uint8_t *m, size_t m_len, size_t b, uint8_t *out, size_t out_len)
{
int ret;
uint8_t zeros[128] = { 0 };
- uint8_t digest[MAX_DIGEST_SIZE];
+ uint8_t *digest = hctx->scratch;
ret = digest_4(ctx, pk_seed, n, zeros, b - n, adrs, SLH_ADRSC_SIZE,
m, m_len, digest);
@@ -230,7 +243,7 @@ slh_prf_sha2(SLH_DSA_HASH_CTX *hctx, const uint8_t *pk_seed,
{
size_t n = hctx->key->params->n;
- return do_hash(hctx->md_ctx, n, pk_seed, adrs, sk_seed, n,
+ return do_hash(hctx, hctx->md_ctx, n, pk_seed, adrs, sk_seed, n,
OSSL_SLH_DSA_SHA2_NUM_ZEROS_H_AND_T_BOUND1, out, out_len);
}
@@ -238,21 +251,22 @@ static int
slh_f_sha2(SLH_DSA_HASH_CTX *hctx, const uint8_t *pk_seed, const uint8_t *adrs,
const uint8_t *m1, size_t m1_len, uint8_t *out, size_t out_len)
{
- return do_hash(hctx->md_ctx, hctx->key->params->n, pk_seed, adrs, m1, m1_len,
- OSSL_SLH_DSA_SHA2_NUM_ZEROS_H_AND_T_BOUND1, out, out_len);
+ return do_hash(hctx, hctx->md_ctx, hctx->key->params->n, pk_seed, adrs,
+ m1, m1_len, OSSL_SLH_DSA_SHA2_NUM_ZEROS_H_AND_T_BOUND1, out, out_len);
}
static int
slh_h_sha2(SLH_DSA_HASH_CTX *hctx, const uint8_t *pk_seed, const uint8_t *adrs,
const uint8_t *m1, const uint8_t *m2, uint8_t *out, size_t out_len)
{
- uint8_t m[SLH_MAX_N * 2];
+ /* The concatenated children go in the scratch after the digest */
+ uint8_t *m = hctx->scratch + MAX_DIGEST_SIZE;
const SLH_DSA_PARAMS *prms = hctx->key->params;
size_t n = prms->n;
memcpy(m, m1, n);
memcpy(m + n, m2, n);
- return do_hash(hctx->md_big_ctx, n, pk_seed, adrs, m, 2 * n,
+ return do_hash(hctx, hctx->md_big_ctx, n, pk_seed, adrs, m, 2 * n,
prms->sha2_h_and_t_bound, out, out_len);
}
@@ -262,7 +276,7 @@ slh_t_sha2(SLH_DSA_HASH_CTX *hctx, const uint8_t *pk_seed, const uint8_t *adrs,
{
const SLH_DSA_PARAMS *prms = hctx->key->params;
- return do_hash(hctx->md_big_ctx, prms->n, pk_seed, adrs, ml, ml_len,
+ return do_hash(hctx, hctx->md_big_ctx, prms->n, pk_seed, adrs, ml, ml_len,
prms->sha2_h_and_t_bound, out, out_len);
}
diff --git a/deps/openssl/openssl/crypto/slh_dsa/slh_hypertree.c b/deps/openssl/openssl/crypto/slh_dsa/slh_hypertree.c
index bc352bf5bc3..e1e2901ce5f 100644
--- a/deps/openssl/openssl/crypto/slh_dsa/slh_hypertree.c
+++ b/deps/openssl/openssl/crypto/slh_dsa/slh_hypertree.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2024-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2024-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -8,6 +8,7 @@
*/
#include
+#include
#include "slh_dsa_local.h"
#include "slh_dsa_key.h"
@@ -33,6 +34,7 @@ int ossl_slh_ht_sign(SLH_DSA_HASH_CTX *ctx,
const uint8_t *pk_seed,
uint64_t tree_id, uint32_t leaf_id, WPACKET *sig_wpkt)
{
+ int ret = 0;
const SLH_DSA_KEY *key = ctx->key;
SLH_ADRS_FUNC_DECLARE(key, adrsf);
SLH_ADRS_DECLARE(adrs);
@@ -70,7 +72,7 @@ int ossl_slh_ht_sign(SLH_DSA_HASH_CTX *ctx,
psig = WPACKET_get_curr(sig_wpkt);
if (!ossl_slh_xmss_sign(ctx, root, sk_seed, leaf_id, pk_seed, adrs,
sig_wpkt))
- return 0;
+ goto err;
/*
* On the last loop it skips getting the public key since it is not needed
* to calculate another signature. If this was called it should equal
@@ -79,15 +81,18 @@ int ossl_slh_ht_sign(SLH_DSA_HASH_CTX *ctx,
if (layer < d - 1) {
if (!PACKET_buf_init(xmss_sig_rpkt, psig,
WPACKET_get_curr(sig_wpkt) - psig))
- return 0;
+ goto err;
if (!ossl_slh_xmss_pk_from_sig(ctx, leaf_id, xmss_sig_rpkt, root,
pk_seed, adrs, root, sizeof(root)))
- return 0;
+ goto err;
leaf_id = tree_id & mask;
tree_id >>= hm;
}
}
- return 1;
+ ret = 1;
+err:
+ OPENSSL_cleanse(root, sizeof(root));
+ return ret;
}
/**
@@ -108,6 +113,7 @@ int ossl_slh_ht_verify(SLH_DSA_HASH_CTX *ctx, const uint8_t *msg, PACKET *sig_pk
const uint8_t *pk_seed, uint64_t tree_id, uint32_t leaf_id,
const uint8_t *pk_root)
{
+ int ret = 0;
const SLH_DSA_KEY *key = ctx->key;
SLH_ADRS_FUNC_DECLARE(key, adrsf);
SLH_ADRS_DECLARE(adrs);
@@ -127,9 +133,12 @@ int ossl_slh_ht_verify(SLH_DSA_HASH_CTX *ctx, const uint8_t *msg, PACKET *sig_pk
adrsf->set_tree_address(adrs, tree_id);
if (!ossl_slh_xmss_pk_from_sig(ctx, leaf_id, sig_pkt, node,
pk_seed, adrs, node, sizeof(node)))
- return 0;
+ goto err;
leaf_id = tree_id & mask;
tree_id >>= tree_height;
}
- return (memcmp(node, pk_root, n) == 0);
+ ret = (memcmp(node, pk_root, n) == 0);
+err:
+ OPENSSL_cleanse(node, sizeof(node));
+ return ret;
}
diff --git a/deps/openssl/openssl/crypto/slh_dsa/slh_wots.c b/deps/openssl/openssl/crypto/slh_dsa/slh_wots.c
index ea278fcd841..79f3bca8747 100644
--- a/deps/openssl/openssl/crypto/slh_dsa/slh_wots.c
+++ b/deps/openssl/openssl/crypto/slh_dsa/slh_wots.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2024-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2024-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -244,6 +244,8 @@ int ossl_slh_wots_sign(SLH_DSA_HASH_CTX *ctx, const uint8_t *msg,
}
ret = 1;
err:
+ OPENSSL_cleanse(sk, sizeof(sk));
+ OPENSSL_cleanse(msg_and_csum_nibbles, sizeof(msg_and_csum_nibbles));
return ret;
}
@@ -311,5 +313,7 @@ int ossl_slh_wots_pk_from_sig(SLH_DSA_HASH_CTX *ctx,
err:
if (!WPACKET_finish(tmp_pkt))
ret = 0;
+ OPENSSL_cleanse(tmp, sizeof(tmp));
+ OPENSSL_cleanse(msg_and_csum_nibbles, sizeof(msg_and_csum_nibbles));
return ret;
}
diff --git a/deps/openssl/openssl/crypto/slh_dsa/slh_xmss.c b/deps/openssl/openssl/crypto/slh_dsa/slh_xmss.c
index dae036c6a21..a53a6c1e991 100644
--- a/deps/openssl/openssl/crypto/slh_dsa/slh_xmss.c
+++ b/deps/openssl/openssl/crypto/slh_dsa/slh_xmss.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2024-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2024-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -8,6 +8,7 @@
*/
#include
+#include
#include "slh_dsa_local.h"
#include "slh_dsa_key.h"
@@ -39,29 +40,31 @@ int ossl_slh_xmss_node(SLH_DSA_HASH_CTX *ctx, const uint8_t *sk_seed,
{
const SLH_DSA_KEY *key = ctx->key;
SLH_ADRS_FUNC_DECLARE(key, adrsf);
+ int ret = 0;
if (h == 0) {
/* For leaf nodes generate the public key */
adrsf->set_type_and_clear(adrs, SLH_ADRS_TYPE_WOTS_HASH);
adrsf->set_keypair_address(adrs, node_id);
- if (!ossl_slh_wots_pk_gen(ctx, sk_seed, pk_seed, adrs,
+ if (ossl_slh_wots_pk_gen(ctx, sk_seed, pk_seed, adrs,
pk_out, pk_out_len))
- return 0;
+ ret = 1;
} else {
uint8_t lnode[SLH_MAX_N], rnode[SLH_MAX_N];
- if (!ossl_slh_xmss_node(ctx, sk_seed, 2 * node_id, h - 1, pk_seed, adrs,
+ if (ossl_slh_xmss_node(ctx, sk_seed, 2 * node_id, h - 1, pk_seed, adrs,
lnode, sizeof(lnode))
- || !ossl_slh_xmss_node(ctx, sk_seed, 2 * node_id + 1, h - 1,
- pk_seed, adrs, rnode, sizeof(rnode)))
- return 0;
- adrsf->set_type_and_clear(adrs, SLH_ADRS_TYPE_TREE);
- adrsf->set_tree_height(adrs, h);
- adrsf->set_tree_index(adrs, node_id);
- if (!key->hash_func->H(ctx, pk_seed, adrs, lnode, rnode, pk_out, pk_out_len))
- return 0;
+ && ossl_slh_xmss_node(ctx, sk_seed, 2 * node_id + 1, h - 1,
+ pk_seed, adrs, rnode, sizeof(rnode))) {
+ adrsf->set_type_and_clear(adrs, SLH_ADRS_TYPE_TREE);
+ adrsf->set_tree_height(adrs, h);
+ adrsf->set_tree_index(adrs, node_id);
+ ret = key->hash_func->H(ctx, pk_seed, adrs, lnode, rnode, pk_out, pk_out_len);
+ }
+ OPENSSL_cleanse(lnode, sizeof(lnode));
+ OPENSSL_cleanse(rnode, sizeof(rnode));
}
- return 1;
+ return ret;
}
/**
diff --git a/deps/openssl/openssl/crypto/threads_win.c b/deps/openssl/openssl/crypto/threads_win.c
index 2c0e27ce06e..158aa2ea91c 100644
--- a/deps/openssl/openssl/crypto/threads_win.c
+++ b/deps/openssl/openssl/crypto/threads_win.c
@@ -535,6 +535,20 @@ int CRYPTO_THREAD_run_once(CRYPTO_ONCE *once, void (*init)(void))
result = InterlockedCompareExchange(lock, ONCE_ININIT, ONCE_UNINITED);
if (result == ONCE_UNINITED) {
init();
+ /*
+ * On weakly ordered systems, it may happen that the write to *lock
+ * below completes prior to some writes in whatever the init()
+ * callback routine above may do. In this case, other threads
+ * entering here may see unsynchronized data in whatever the init
+ * routine initializes, leading to erroneous behavior.
+ *
+ * We should use InitOnceExecuteOnce here to implement this, but
+ * doing so requires that we modify the definition of the
+ * CRYPTO_ONCE type, which is an ABI breakage. So instead
+ * just insert a memory barrier here to ensure that any pending
+ * writes are flushed to memory prior to setting ONCE_DONE below
+ */
+ MemoryBarrier();
*lock = ONCE_DONE;
return 1;
}
diff --git a/deps/openssl/openssl/crypto/x509/by_dir.c b/deps/openssl/openssl/crypto/x509/by_dir.c
index e8b7ca152b2..df92e1d1d58 100644
--- a/deps/openssl/openssl/crypto/x509/by_dir.c
+++ b/deps/openssl/openssl/crypto/x509/by_dir.c
@@ -1,5 +1,5 @@
/*
- * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -228,7 +228,7 @@ static int get_cert_by_subject_ex(X509_LOOKUP *xl, X509_LOOKUP_TYPE type,
X509 st_x509;
X509_CRL crl;
} data;
- int ok = 0;
+ int res, ok = 0;
int i, j, k;
unsigned long h;
BUF_MEM *b = NULL;
@@ -320,25 +320,35 @@ static int get_cert_by_subject_ex(X509_LOOKUP *xl, X509_LOOKUP_TYPE type,
}
#ifndef OPENSSL_NO_POSIX_IO
#ifdef _WIN32
+#define lstat _stat
#define stat _stat
#endif
{
struct stat st;
- if (stat(b->data, &st) < 0)
- break;
- }
+ if (lstat(b->data, &st) < 0)
+ break; /* file does not exist, not even a symlink */
+#ifndef _WIN32
+ if (stat(b->data, &st) < 0) {
+ k++;
+ continue; /* symlink is broken: following it went wrong */
+ }
#endif
- /* found one. */
- if (type == X509_LU_X509) {
- if ((X509_load_cert_file_ex(xl, b->data, ent->dir_type, libctx,
- propq))
- == 0)
- break;
- } else if (type == X509_LU_CRL) {
- if ((X509_load_crl_file(xl, b->data, ent->dir_type)) == 0)
- break;
}
+#endif
+ res = 0;
+ ERR_set_mark();
+ if (type == X509_LU_X509)
+ res = X509_load_cert_file_ex(xl, b->data, ent->dir_type, libctx, propq);
+ else if (type == X509_LU_CRL)
+ res = X509_load_crl_file(xl, b->data, ent->dir_type);
/* else case will caught higher up */
+ ERR_pop_to_mark();
+ /* unless OPENSSL_NO_POSIX_IO, gracefully skip found file if cert/CRL fails to load. */
+#ifndef OPENSSL_NO_POSIX_IO
+ res = 1;
+#endif
+ if (res == 0)
+ break;
k++;
}
diff --git a/deps/openssl/openssl/crypto/x509/pcy_cache.c b/deps/openssl/openssl/crypto/x509/pcy_cache.c
index d1ee35377bd..b3b6a3da1a9 100644
--- a/deps/openssl/openssl/crypto/x509/pcy_cache.c
+++ b/deps/openssl/openssl/crypto/x509/pcy_cache.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2004-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -134,6 +134,7 @@ static int policy_cache_new(X509 *x)
/* If not absent some problem with extension */
if (i != -1)
goto bad_cache;
+ POLICY_CONSTRAINTS_free(ext_pcons);
return 1;
}
@@ -141,8 +142,10 @@ static int policy_cache_new(X509 *x)
/* NB: ext_cpols freed by policy_cache_set_policies */
- if (i <= 0)
+ if (i <= 0) {
+ POLICY_CONSTRAINTS_free(ext_pcons);
return i;
+ }
ext_pmaps = X509_get_ext_d2i(x, NID_policy_mappings, &i, NULL);
diff --git a/deps/openssl/openssl/crypto/x509/v3_akid.c b/deps/openssl/openssl/crypto/x509/v3_akid.c
index 08c751b77cf..9721518ecc0 100644
--- a/deps/openssl/openssl/crypto/x509/v3_akid.c
+++ b/deps/openssl/openssl/crypto/x509/v3_akid.c
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2022 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1999-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -173,7 +173,9 @@ static AUTHORITY_KEYID *v2i_AUTHORITY_KEYID(X509V3_EXT_METHOD *method,
i = X509_get_ext_by_NID(issuer_cert, NID_subject_key_identifier, -1);
if (i >= 0 && (ext = X509_get_ext(issuer_cert, i)) != NULL
&& !(same_issuer && !ss)) {
- ikeyid = X509V3_EXT_d2i(ext);
+ if ((ikeyid = X509V3_EXT_d2i(ext)) == NULL)
+ goto err;
+
if (ASN1_STRING_length(ikeyid) == 0) /* indicating "none" */ {
ASN1_OCTET_STRING_free(ikeyid);
ikeyid = NULL;
diff --git a/deps/openssl/openssl/crypto/x509/v3_ncons.c b/deps/openssl/openssl/crypto/x509/v3_ncons.c
index 2d4b23685b0..a0b97bb7081 100644
--- a/deps/openssl/openssl/crypto/x509/v3_ncons.c
+++ b/deps/openssl/openssl/crypto/x509/v3_ncons.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2003-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2003-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -613,6 +613,12 @@ static int nc_dn(const X509_NAME *nm, const X509_NAME *base)
return X509_V_ERR_OUT_OF_MEM;
if (base->canon_enclen > nm->canon_enclen)
return X509_V_ERR_PERMITTED_VIOLATION;
+ /*
+ * An empty base Name has no canonical encoding (canon_enc == NULL) and is
+ * a prefix of every Name, so it matches unconditionally.
+ */
+ if (base->canon_enclen == 0)
+ return X509_V_OK;
if (memcmp(base->canon_enc, nm->canon_enc, base->canon_enclen))
return X509_V_ERR_PERMITTED_VIOLATION;
return X509_V_OK;
@@ -789,6 +795,7 @@ static int nc_uri(ASN1_IA5STRING *uri, ASN1_IA5STRING *base)
if (scheme == NULL || *scheme == '\0') {
ERR_raise_data(ERR_LIB_X509V3, X509_V_ERR_UNSUPPORTED_NAME_SYNTAX,
"x509: missing scheme in URI: %s\n", uri_copy);
+ OPENSSL_free(scheme);
OPENSSL_free(uri_copy);
ret = X509_V_ERR_UNSUPPORTED_NAME_SYNTAX;
goto end;
diff --git a/deps/openssl/openssl/crypto/x509/x509_err.c b/deps/openssl/openssl/crypto/x509/x509_err.c
index 3d6e8768f8b..7ed046fef49 100644
--- a/deps/openssl/openssl/crypto/x509/x509_err.c
+++ b/deps/openssl/openssl/crypto/x509/x509_err.c
@@ -1,6 +1,6 @@
/*
* Generated by util/mkerr.pl DO NOT EDIT
- * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -26,6 +26,8 @@ static const ERR_STRING_DATA X509_str_reasons[] = {
{ ERR_PACK(ERR_LIB_X509, 0, X509_R_CERT_ALREADY_IN_HASH_TABLE),
"cert already in hash table" },
{ ERR_PACK(ERR_LIB_X509, 0, X509_R_CRL_ALREADY_DELTA), "crl already delta" },
+ { ERR_PACK(ERR_LIB_X509, 0, X509_R_CRL_SIGNATURE_ALGORITHM_MISMATCH),
+ "crl signature algorithm mismatch" },
{ ERR_PACK(ERR_LIB_X509, 0, X509_R_CRL_VERIFY_FAILURE),
"crl verify failure" },
{ ERR_PACK(ERR_LIB_X509, 0, X509_R_DUPLICATE_ATTRIBUTE),
diff --git a/deps/openssl/openssl/crypto/x509/x509_lu.c b/deps/openssl/openssl/crypto/x509/x509_lu.c
index af8035bce84..00fe2bbe041 100644
--- a/deps/openssl/openssl/crypto/x509/x509_lu.c
+++ b/deps/openssl/openssl/crypto/x509/x509_lu.c
@@ -1,5 +1,5 @@
/*
- * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -590,7 +590,12 @@ static X509_OBJECT *x509_object_dup(const X509_OBJECT *obj)
ret->type = obj->type;
ret->data = obj->data;
- X509_OBJECT_up_ref_count(ret);
+
+ if (!X509_OBJECT_up_ref_count(ret)) {
+ OPENSSL_free(ret);
+ return NULL;
+ }
+
return ret;
}
diff --git a/deps/openssl/openssl/crypto/x509/x509_vfy.c b/deps/openssl/openssl/crypto/x509/x509_vfy.c
index 0994c32ca53..b3df8c9b71e 100644
--- a/deps/openssl/openssl/crypto/x509/x509_vfy.c
+++ b/deps/openssl/openssl/crypto/x509/x509_vfy.c
@@ -1364,6 +1364,12 @@ static int get_crl_score(X509_STORE_CTX *ctx, X509 **pissuer,
/* Invalid IDP cannot be processed */
if ((crl->idp_flags & IDP_INVALID) != 0)
return 0;
+ /*
+ * Reject delta CRLs unconditionally here. They are considered by
+ * get_delta_sk() after a base CRL is selected.
+ */
+ if (crl->base_crl_number != NULL)
+ return 0;
/* Reason codes or indirect CRLs need extended CRL support */
if ((ctx->param->flags & X509_V_FLAG_EXTENDED_CRL_SUPPORT) == 0) {
if (crl->idp_flags & (IDP_INDIRECT | IDP_REASONS))
@@ -1373,9 +1379,6 @@ static int get_crl_score(X509_STORE_CTX *ctx, X509 **pissuer,
if ((crl->idp_reasons & ~tmp_reasons) == 0)
return 0;
}
- /* Don't process deltas at this stage */
- else if (crl->base_crl_number != NULL)
- return 0;
/* If issuer name doesn't match certificate need indirect CRL */
if (X509_NAME_cmp(X509_get_issuer_name(x), X509_CRL_get_issuer(crl)) != 0) {
if ((crl->idp_flags & IDP_INDIRECT) == 0)
diff --git a/deps/openssl/openssl/crypto/x509/x_crl.c b/deps/openssl/openssl/crypto/x509/x_crl.c
index 4a93abb8ca3..1b498ee6b57 100644
--- a/deps/openssl/openssl/crypto/x509/x_crl.c
+++ b/deps/openssl/openssl/crypto/x509/x_crl.c
@@ -1,5 +1,5 @@
/*
- * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -404,6 +404,10 @@ int X509_CRL_get0_by_cert(X509_CRL *crl, X509_REVOKED **ret, X509 *x)
static int def_crl_verify(X509_CRL *crl, EVP_PKEY *r)
{
+ if (X509_ALGOR_cmp(&crl->sig_alg, &crl->crl.sig_alg) != 0) {
+ ERR_raise(ERR_LIB_X509, X509_R_CRL_SIGNATURE_ALGORITHM_MISMATCH);
+ return 0;
+ }
return ASN1_item_verify_ex(ASN1_ITEM_rptr(X509_CRL_INFO),
&crl->sig_alg, &crl->signature, &crl->crl, NULL,
r, crl->libctx, crl->propq);
diff --git a/deps/openssl/openssl/crypto/x509/x_pubkey.c b/deps/openssl/openssl/crypto/x509/x_pubkey.c
index 03f532ab9cb..8e0ee3a2197 100644
--- a/deps/openssl/openssl/crypto/x509/x_pubkey.c
+++ b/deps/openssl/openssl/crypto/x509/x_pubkey.c
@@ -224,7 +224,7 @@ static int x509_pubkey_ex_d2i_ex(ASN1_VALUE **pval,
* bytes.
*/
ERR_clear_last_mark();
- ERR_raise(ERR_LIB_ASN1, EVP_R_DECODE_ERROR);
+ ERR_raise(ERR_LIB_ASN1, ASN1_R_DECODE_ERROR);
goto end;
}
}
diff --git a/deps/openssl/openssl/doc/build.info b/deps/openssl/openssl/doc/build.info
index eb4492ba9c7..ce2125a4d3f 100644
--- a/deps/openssl/openssl/doc/build.info
+++ b/deps/openssl/openssl/doc/build.info
@@ -1523,6 +1523,10 @@ DEPEND[html/man3/MDC2_Init.html]=man3/MDC2_Init.pod
GENERATE[html/man3/MDC2_Init.html]=man3/MDC2_Init.pod
DEPEND[man/man3/MDC2_Init.3]=man3/MDC2_Init.pod
GENERATE[man/man3/MDC2_Init.3]=man3/MDC2_Init.pod
+DEPEND[html/man3/NAME_CONSTRAINTS_check.html]=man3/NAME_CONSTRAINTS_check.pod
+GENERATE[html/man3/NAME_CONSTRAINTS_check.html]=man3/NAME_CONSTRAINTS_check.pod
+DEPEND[man/man3/NAME_CONSTRAINTS_check.3]=man3/NAME_CONSTRAINTS_check.pod
+GENERATE[man/man3/NAME_CONSTRAINTS_check.3]=man3/NAME_CONSTRAINTS_check.pod
DEPEND[html/man3/NCONF_new_ex.html]=man3/NCONF_new_ex.pod
GENERATE[html/man3/NCONF_new_ex.html]=man3/NCONF_new_ex.pod
DEPEND[man/man3/NCONF_new_ex.3]=man3/NCONF_new_ex.pod
@@ -1571,6 +1575,10 @@ DEPEND[html/man3/OPENSSL_LH_stats.html]=man3/OPENSSL_LH_stats.pod
GENERATE[html/man3/OPENSSL_LH_stats.html]=man3/OPENSSL_LH_stats.pod
DEPEND[man/man3/OPENSSL_LH_stats.3]=man3/OPENSSL_LH_stats.pod
GENERATE[man/man3/OPENSSL_LH_stats.3]=man3/OPENSSL_LH_stats.pod
+DEPEND[html/man3/OPENSSL_armcap.html]=man3/OPENSSL_armcap.pod
+GENERATE[html/man3/OPENSSL_armcap.html]=man3/OPENSSL_armcap.pod
+DEPEND[man/man3/OPENSSL_armcap.3]=man3/OPENSSL_armcap.pod
+GENERATE[man/man3/OPENSSL_armcap.3]=man3/OPENSSL_armcap.pod
DEPEND[html/man3/OPENSSL_config.html]=man3/OPENSSL_config.pod
GENERATE[html/man3/OPENSSL_config.html]=man3/OPENSSL_config.pod
DEPEND[man/man3/OPENSSL_config.3]=man3/OPENSSL_config.pod
@@ -3446,6 +3454,7 @@ html/man3/GENERAL_NAME.html \
html/man3/HMAC.html \
html/man3/MD5.html \
html/man3/MDC2_Init.html \
+html/man3/NAME_CONSTRAINTS_check.html \
html/man3/NCONF_new_ex.html \
html/man3/OBJ_nid2obj.html \
html/man3/OCSP_REQUEST_new.html \
@@ -3458,6 +3467,7 @@ html/man3/OPENSSL_Applink.html \
html/man3/OPENSSL_FILE.html \
html/man3/OPENSSL_LH_COMPFUNC.html \
html/man3/OPENSSL_LH_stats.html \
+html/man3/OPENSSL_armcap.html \
html/man3/OPENSSL_config.html \
html/man3/OPENSSL_fork_prepare.html \
html/man3/OPENSSL_gmtime.html \
@@ -4123,6 +4133,7 @@ man/man3/GENERAL_NAME.3 \
man/man3/HMAC.3 \
man/man3/MD5.3 \
man/man3/MDC2_Init.3 \
+man/man3/NAME_CONSTRAINTS_check.3 \
man/man3/NCONF_new_ex.3 \
man/man3/OBJ_nid2obj.3 \
man/man3/OCSP_REQUEST_new.3 \
@@ -4135,6 +4146,7 @@ man/man3/OPENSSL_Applink.3 \
man/man3/OPENSSL_FILE.3 \
man/man3/OPENSSL_LH_COMPFUNC.3 \
man/man3/OPENSSL_LH_stats.3 \
+man/man3/OPENSSL_armcap.3 \
man/man3/OPENSSL_config.3 \
man/man3/OPENSSL_fork_prepare.3 \
man/man3/OPENSSL_gmtime.3 \
diff --git a/deps/openssl/openssl/fuzz/provider.c b/deps/openssl/openssl/fuzz/provider.c
index 8234a7e8dca..69905223fbb 100644
--- a/deps/openssl/openssl/fuzz/provider.c
+++ b/deps/openssl/openssl/fuzz/provider.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2023-2024 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2023-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -32,8 +32,11 @@
{ \
STACK_OF(evp) *obj_stack = stack; \
\
- if (sk_##evp##_push(obj_stack, obj) > 0) \
- evp##_up_ref(obj); \
+ if (!evp##_up_ref(obj)) \
+ return; \
+ \
+ if (sk_##evp##_push(obj_stack, obj) <= 0) \
+ evp##_free(obj); \
} \
static void init_##name(OSSL_LIB_CTX *libctx) \
{ \
diff --git a/deps/openssl/openssl/include/internal/hashtable.h b/deps/openssl/openssl/include/internal/hashtable.h
index bc44e43678a..8bfa5392361 100644
--- a/deps/openssl/openssl/include/internal/hashtable.h
+++ b/deps/openssl/openssl/include/internal/hashtable.h
@@ -1,5 +1,5 @@
/*
- * Copyright 2024-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2024-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -272,7 +272,7 @@ static void ossl_unused ossl_ht_strcase(char *tgt, const char *src, int len)
if (src == NULL)
return;
- for (i = 0; src[i] != '\0' && i < len; i++)
+ for (i = 0; i < len && src[i] != '\0'; i++)
tgt[i] = case_adjust & src[i];
}
diff --git a/deps/openssl/openssl/include/internal/list.h b/deps/openssl/openssl/include/internal/list.h
index 8bb0b741bed..270e3f1dbb9 100644
--- a/deps/openssl/openssl/include/internal/list.h
+++ b/deps/openssl/openssl/include/internal/list.h
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2022-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -194,6 +194,35 @@
list->omega = elem; \
list->num_elems++; \
} \
+ static ossl_unused ossl_inline void \
+ ossl_list_##name##_join(OSSL_LIST(name) * lh, OSSL_LIST(name) * lt) \
+ { \
+ OSSL_LIST_DBG(type * _p); /* local variable '_p' when debug */ \
+ if (lt == NULL || lh == NULL || lt->num_elems == 0 || lh == lt) \
+ return; \
+ /* \
+ * let's be optimistic about size_t overflow here: it can not happen. \
+ */ \
+ lh->num_elems += lt->num_elems; \
+ if (lh->omega == NULL) { \
+ assert(lh->alpha == NULL); \
+ lh->omega = lt->omega; \
+ lh->alpha = lt->alpha; \
+ } else { \
+ if (lt->alpha != NULL) \
+ ((type *)lt->alpha)->ossl_list_##name.prev = lh->omega; \
+ ((type *)lh->omega)->ossl_list_##name.next = lt->alpha; \
+ } \
+ OSSL_LIST_DBG(for (_p = (type *)lt->alpha; \
+ assert(_p == NULL || _p->ossl_list_##name.list == lt), _p != NULL; \
+ _p = _p->ossl_list_##name.next) \
+ _p->ossl_list_##name.list \
+ = lh); \
+ lh->omega = lt->omega; \
+ lt->alpha = NULL; \
+ lt->omega = NULL; \
+ lt->num_elems = 0; \
+ } \
struct ossl_list_st_##name
#define DEFINE_LIST_OF(name, type) \
diff --git a/deps/openssl/openssl/include/internal/quic_ackm.h b/deps/openssl/openssl/include/internal/quic_ackm.h
index c0617da4855..5b325e166bd 100644
--- a/deps/openssl/openssl/include/internal/quic_ackm.h
+++ b/deps/openssl/openssl/include/internal/quic_ackm.h
@@ -1,5 +1,5 @@
/*
- * Copyright 2022-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2022-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -129,6 +129,11 @@ struct ossl_ackm_tx_pkt_st {
};
int ossl_ackm_on_tx_packet(OSSL_ACKM *ackm, OSSL_ACKM_TX_PKT *pkt);
+
+/*
+ * Records transmission of a packet containing only ACK frames.
+ */
+int ossl_ackm_on_tx_ack_only_packet(OSSL_ACKM *ackm, OSSL_ACKM_TX_PKT *pkt);
int ossl_ackm_on_rx_datagram(OSSL_ACKM *ackm, size_t num_bytes);
#define OSSL_ACKM_ECN_NONE 0
diff --git a/deps/openssl/openssl/include/internal/quic_port.h b/deps/openssl/openssl/include/internal/quic_port.h
index 5a2c9352378..88fb126e994 100644
--- a/deps/openssl/openssl/include/internal/quic_port.h
+++ b/deps/openssl/openssl/include/internal/quic_port.h
@@ -1,5 +1,5 @@
/*
- * Copyright 2023-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2023-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -187,6 +187,10 @@ uint64_t ossl_quic_port_get_net_bio_epoch(const QUIC_PORT *port);
void ossl_quic_port_raise_net_error(QUIC_PORT *port,
QUIC_CHANNEL *triggering_ch);
+uint64_t ossl_quic_port_get_max_pending_channels(const QUIC_PORT *port);
+
+void ossl_quic_port_set_max_pending_channels(QUIC_PORT *port, uint64_t max_pending_channels);
+
#endif
#endif
diff --git a/deps/openssl/openssl/include/internal/quic_record_rx.h b/deps/openssl/openssl/include/internal/quic_record_rx.h
index 287837b2a56..a4e9e7cacd2 100644
--- a/deps/openssl/openssl/include/internal/quic_record_rx.h
+++ b/deps/openssl/openssl/include/internal/quic_record_rx.h
@@ -1,5 +1,5 @@
/*
- * Copyright 2022-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2022-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -51,8 +51,9 @@ typedef struct ossl_qrx_args_st {
OSSL_QRX *ossl_qrx_new(const OSSL_QRX_ARGS *args);
/*
- * Frees the QRX. All packets obtained using ossl_qrx_read_pkt must already
- * have been released by calling ossl_qrx_release_pkt.
+ * Frees the QRX/reference to QRX. Frees the QRX object, if all references are
+ * gone. All packets obtained using ossl_qrx_read_pkt must already have been
+ * released by calling ossl_qrx_release_pkt.
*
* You do not need to call ossl_qrx_remove_dst_conn_id first; this function will
* unregister the QRX from the demuxer for all registered destination connection
@@ -60,6 +61,12 @@ OSSL_QRX *ossl_qrx_new(const OSSL_QRX_ARGS *args);
*/
void ossl_qrx_free(OSSL_QRX *qrx);
+/*
+ * Obtains a new reference to QRX object. Returns NULL if reference can not
+ * be obtained.
+ */
+OSSL_QRX *ossl_qrx_newref(OSSL_QRX *qrx);
+
/* Setters for the msg_callback and msg_callback_arg */
void ossl_qrx_set_msg_callback(OSSL_QRX *qrx, ossl_msg_cb msg_callback,
SSL *msg_callback_ssl);
diff --git a/deps/openssl/openssl/include/internal/quic_ssl.h b/deps/openssl/openssl/include/internal/quic_ssl.h
index f714d104771..a9c17e1087a 100644
--- a/deps/openssl/openssl/include/internal/quic_ssl.h
+++ b/deps/openssl/openssl/include/internal/quic_ssl.h
@@ -1,5 +1,5 @@
/*
- * Copyright 2022-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2022-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -179,6 +179,7 @@ int ossl_quic_conn_poll_events(SSL *ssl, uint64_t events, int do_tick,
int ossl_quic_get_notifier_fd(SSL *ssl);
void ossl_quic_enter_blocking_section(SSL *ssl, QUIC_REACTOR_WAIT_CTX *wctx);
void ossl_quic_leave_blocking_section(SSL *ssl, QUIC_REACTOR_WAIT_CTX *wctx);
+QUIC_PORT *ossl_quic_listener_get_port(SSL *s);
#endif
diff --git a/deps/openssl/openssl/include/openssl/ssl.h.in b/deps/openssl/openssl/include/openssl/ssl.h.in
index e684f7c4297..90be33cb4f1 100644
--- a/deps/openssl/openssl/include/openssl/ssl.h.in
+++ b/deps/openssl/openssl/include/openssl/ssl.h.in
@@ -2441,6 +2441,7 @@ __owur int SSL_get_conn_close_info(SSL *ssl,
#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7
#define SSL_VALUE_STREAM_WRITE_BUF_USED 8
#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9
+#define SSL_VALUE_QUIC_MAX_PENDING_CONNS 16
#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0
#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1
@@ -2688,8 +2689,18 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_OTHER_SIGALG (5 << 16)
#define SSL_SECOP_OTHER_CERT (6 << 16)
-/* Indicated operation refers to peer key or certificate */
+/*
+ * Unused values - these do nothing and are never set.
+ * They are retained because of API. They should
+ * be removed next major
+ */
#define SSL_SECOP_PEER 0x1000
+/* Peer EE key in certificate */
+#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
+/* Peer CA key in certificate */
+#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
+/* Peer CA digest algorithm in certificate */
+#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
/* Values for "op" parameter in security callback */
@@ -2728,12 +2739,6 @@ const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);
#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT)
-/* Peer EE key in certificate */
-#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
-/* Peer CA key in certificate */
-#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
-/* Peer CA digest algorithm in certificate */
-#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER)
void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
diff --git a/deps/openssl/openssl/include/openssl/x509err.h b/deps/openssl/openssl/include/openssl/x509err.h
index 7123a725e82..4bbff54a380 100644
--- a/deps/openssl/openssl/include/openssl/x509err.h
+++ b/deps/openssl/openssl/include/openssl/x509err.h
@@ -1,6 +1,6 @@
/*
* Generated by util/mkerr.pl DO NOT EDIT
- * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -27,6 +27,7 @@
#define X509_R_CERTIFICATE_VERIFICATION_FAILED 139
#define X509_R_CERT_ALREADY_IN_HASH_TABLE 101
#define X509_R_CRL_ALREADY_DELTA 127
+#define X509_R_CRL_SIGNATURE_ALGORITHM_MISMATCH 147
#define X509_R_CRL_VERIFY_FAILURE 131
#define X509_R_DUPLICATE_ATTRIBUTE 140
#define X509_R_ERROR_GETTING_MD_BY_NID 141
diff --git a/deps/openssl/openssl/providers/baseprov.c b/deps/openssl/openssl/providers/baseprov.c
index 16d2f91bb1a..ad08765f006 100644
--- a/deps/openssl/openssl/providers/baseprov.c
+++ b/deps/openssl/openssl/providers/baseprov.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2020-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2020-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -29,10 +29,6 @@ static OSSL_FUNC_provider_gettable_params_fn base_gettable_params;
static OSSL_FUNC_provider_get_params_fn base_get_params;
static OSSL_FUNC_provider_query_operation_fn base_query;
-/* Functions provided by the core */
-static OSSL_FUNC_core_gettable_params_fn *c_gettable_params = NULL;
-static OSSL_FUNC_core_get_params_fn *c_get_params = NULL;
-
/* Parameters we provide to the core */
static const OSSL_PARAM base_param_types[] = {
OSSL_PARAM_DEFN(OSSL_PROV_PARAM_NAME, OSSL_PARAM_UTF8_PTR, NULL, 0),
@@ -139,15 +135,13 @@ int ossl_base_provider_init(const OSSL_CORE_HANDLE *handle,
void **provctx)
{
OSSL_FUNC_core_get_libctx_fn *c_get_libctx = NULL;
+ OSSL_FUNC_core_get_params_fn *c_get_params = NULL;
BIO_METHOD *corebiometh;
if (!ossl_prov_bio_from_dispatch(in))
return 0;
for (; in->function_id != 0; in++) {
switch (in->function_id) {
- case OSSL_FUNC_CORE_GETTABLE_PARAMS:
- c_gettable_params = OSSL_FUNC_core_gettable_params(in);
- break;
case OSSL_FUNC_CORE_GET_PARAMS:
c_get_params = OSSL_FUNC_core_get_params(in);
break;
diff --git a/deps/openssl/openssl/providers/defltprov.c b/deps/openssl/openssl/providers/defltprov.c
index a74a048d6f7..de2a46515e1 100644
--- a/deps/openssl/openssl/providers/defltprov.c
+++ b/deps/openssl/openssl/providers/defltprov.c
@@ -34,10 +34,6 @@ static OSSL_FUNC_provider_query_operation_fn deflt_query;
#define ALGC(NAMES, FUNC, CHECK) { { NAMES, "provider=default", FUNC }, CHECK }
#define ALG(NAMES, FUNC) ALGC(NAMES, FUNC, NULL)
-/* Functions provided by the core */
-static OSSL_FUNC_core_gettable_params_fn *c_gettable_params = NULL;
-static OSSL_FUNC_core_get_params_fn *c_get_params = NULL;
-
/* Parameters we provide to the core */
static const OSSL_PARAM deflt_param_types[] = {
OSSL_PARAM_DEFN(OSSL_PROV_PARAM_NAME, OSSL_PARAM_UTF8_PTR, NULL, 0),
@@ -733,6 +729,7 @@ int ossl_default_provider_init(const OSSL_CORE_HANDLE *handle,
void **provctx)
{
OSSL_FUNC_core_get_libctx_fn *c_get_libctx = NULL;
+ OSSL_FUNC_core_get_params_fn *c_get_params = NULL;
BIO_METHOD *corebiometh;
if (!ossl_prov_bio_from_dispatch(in)
@@ -740,9 +737,6 @@ int ossl_default_provider_init(const OSSL_CORE_HANDLE *handle,
return 0;
for (; in->function_id != 0; in++) {
switch (in->function_id) {
- case OSSL_FUNC_CORE_GETTABLE_PARAMS:
- c_gettable_params = OSSL_FUNC_core_gettable_params(in);
- break;
case OSSL_FUNC_CORE_GET_PARAMS:
c_get_params = OSSL_FUNC_core_get_params(in);
break;
diff --git a/deps/openssl/openssl/providers/fips-sources.checksums b/deps/openssl/openssl/providers/fips-sources.checksums
index a2f5817e26d..85af251d79e 100644
--- a/deps/openssl/openssl/providers/fips-sources.checksums
+++ b/deps/openssl/openssl/providers/fips-sources.checksums
@@ -20,12 +20,12 @@ f1d8b7a3da1ec053d38be4fc776fef1e4fba328bfa2bfd928c2a2cd3b14f08ff crypto/aes/asm
ee4e8cacef972942d2a89c1a83c984df9cad87c61a54383403c5c4864c403ba1 crypto/aes/asm/aes-sparcv9.pl
391497550eaca253f64b2aba7ba2e53c6bae7dff01583bc6bfc12e930bb7e217 crypto/aes/asm/aes-x86_64.pl
3b5ee174fa52d732d882ab4b2ffe59235d3bff66651714f32e743fcadaf1d970 crypto/aes/asm/aesfx-sparcv9.pl
-14359dc32b7f4e5c08227fb9ac8f9232c1287399463b233fec4a2ab0c19f68d1 crypto/aes/asm/aesni-mb-x86_64.pl
-f525e1bca51d39adcd411cbf8f874fe1441b23a6f614644da78dfd8544d13b23 crypto/aes/asm/aesni-sha1-x86_64.pl
-895f94d7befb90e82f9d300ed8f870e790101f30ba72b249a2c503f07aec7dd2 crypto/aes/asm/aesni-sha256-x86_64.pl
+e220d630965eb2672dca757aefcb9654928288772fd495da3a495b405b5f21ff crypto/aes/asm/aesni-mb-x86_64.pl
+83a08babb80e15606bb52c6b4fcd1a6416d3b165b9cbfa42678ebe2e27c3b8d4 crypto/aes/asm/aesni-sha1-x86_64.pl
+6808938757a489c3827e6da78f9ce227d88efcc29c3467fa0329b50b761523eb crypto/aes/asm/aesni-sha256-x86_64.pl
4ff74d4e629a88ef5a9e3d3f5b340fc0a4793d16d7cc7f1b70da62512a856248 crypto/aes/asm/aesni-x86.pl
25881237d026cebd96877a2ea2729db1ce512875cb2a10ca0cd1d6ddf4b51a3b crypto/aes/asm/aesni-x86_64.pl
-6047359ad3967168812fbc8a95cb851b72c09f7846be2f03ec2ab93531a9c2bd crypto/aes/asm/aesni-xts-avx512.pl
+00dd3a64df71ebd61fd35d2a6179d07cc86fc156cce1541ef176ecafb815f4bb crypto/aes/asm/aesni-xts-avx512.pl
0489a10fbb1a8ca3652848d5c1e14e519501e189bad3e5827a573c26df359691 crypto/aes/asm/aesp8-ppc.pl
e397a5781893e97dd90a5a52049633be12a43f379ec5751bca2a6350c39444c8 crypto/aes/asm/aest4-sparcv9.pl
578142d03bc47353952fca2027eb63ec97ce9a1379c0f3c7ac0fdf110eb3378b crypto/aes/asm/aesv8-armx.pl
@@ -39,7 +39,7 @@ c3541865cd02d81101cdbab4877ed82772e6980d2c677b9008b38fa1b26d36d4 crypto/aes/asm
c6935d2ab7925022cb3d76446536ff01b1a1b8eb7eac619d034a29aad17ed45f crypto/aes/asm/vpaes-x86_64.pl
2bc67270155e2d6c7da87d9070e005ee79cea18311004907edfd6a078003532a crypto/alphacpuid.pl
269e52f8867c13ca75d2f88ec1f89b692cb8c6c3ee89abe2fd3c1821925191d8 crypto/arm64cpuid.pl
-7a7c1d063be476f35442b0b056cfad0cf62190b603304abd283906ab40590167 crypto/armcap.c
+b0242943b097f7640f1b3c33313934a98caf45d47d4403e9e53d826f6d2dc0c4 crypto/armcap.c
d9f923daabe7537d1063b182f9f220655abd182ef4c55a0194a7ee8d6030b5bd crypto/armv4cpuid.pl
e886d814c34492504cc9a2451c67fd8c0b4e83e8618f931632400cfe522b6e4d crypto/asn1_dsa.c
819c9fd2b0cae9aab81c3cbd1815c2e22949d75f132f649b5883812d0bbaa39a crypto/bn/asm/alpha-mont.pl
@@ -58,14 +58,14 @@ b27ec5181e387e812925bb26823b830f49d7a6e4971b6d11ea583f5632a1504b crypto/bn/asm/
59cd27e1e10c4984b7fb684b27f491e7634473b1bcff197a07e0ca653124aa9a crypto/bn/asm/ppc.pl
0b3350f56d423a4df918a08e90c7c66227c4449a9f9c44096eacc254ebc65f9f crypto/bn/asm/ppc64-mont-fixed.pl
a25be64867ab837d93855af232e2bfa71b85b2c6f00e35e620fdc5618187fb6f crypto/bn/asm/ppc64-mont.pl
-b3aad31ab658eceaa9c5e734e19f39c33991f4839ab55b0cec8018020b1a305e crypto/bn/asm/rsaz-2k-avx512.pl
-03f6cc678f377c5cd953e8da135c5d76dc1cd011565118c99e25bff91e7271df crypto/bn/asm/rsaz-2k-avxifma.pl
-e914311420ae4486ab6000cc6ab424f04d8a042bda40ab8f288348dc9f0eb595 crypto/bn/asm/rsaz-3k-avx512.pl
-95b11e0b04c38bde06d152dfde5ab970dab27cccdfeac998e1bc293e01520474 crypto/bn/asm/rsaz-3k-avxifma.pl
-e13bd2df8c591052ddf16a839072f43353841f9f35e0ac95f836511838dbc771 crypto/bn/asm/rsaz-4k-avx512.pl
-cf92b66c4032703b7ce03ff6aa36887d14e31a8861e7aa21c46a466ea4802851 crypto/bn/asm/rsaz-4k-avxifma.pl
-6e47bf041e51d8086c4933c2a5da3ce6d1b136592984754461d59aa81e4995a6 crypto/bn/asm/rsaz-avx2.pl
-b42f6cf0fbf9eae58343df9629e7a9e5b8814195ea0c9882d7b143a0841cc018 crypto/bn/asm/rsaz-x86_64.pl
+d48aded8547aa44a4af0d76d4675320628c66ba54e6fda865804953eefa8e853 crypto/bn/asm/rsaz-2k-avx512.pl
+ae2e714dc003867c31136f939f8d47eb35eac3de36dbeea8f028a48d03b964ec crypto/bn/asm/rsaz-2k-avxifma.pl
+6b5f35bf328f19b3add87a9715736ca92a8165920264311e20d3477a41a90a82 crypto/bn/asm/rsaz-3k-avx512.pl
+b0ef4c3bb3a835066e9f7cafab22efc9d668b6debf5b9b9ec312cabae9412631 crypto/bn/asm/rsaz-3k-avxifma.pl
+ca2d4486ee67f2015a8580664f3bbc28c23201205a2422d3a972cdf6ba59147a crypto/bn/asm/rsaz-4k-avx512.pl
+80b0e7aca0ebee78fb3c651723e7f0eaac43a5b6a2bcf87b98a454a248abb945 crypto/bn/asm/rsaz-4k-avxifma.pl
+7d686b484ea2bb65091c6ed3e74d5f4063ed4a8ecc09b7bef8d3a3aa57c4121e crypto/bn/asm/rsaz-avx2.pl
+bec7e89c5a33652bbff20c95a6fe82bd96f7f2f61a3544c122f3af6f4f162110 crypto/bn/asm/rsaz-x86_64.pl
30fedf48dfc5fec1c2044b6c226dd9fc42a92522cc589797a23a79d452bdd2cf crypto/bn/asm/s390x-gf2m.pl
590388d69d7ac3a0e9af4014792f4f0fdb9552719e8fb48ebc7e5dfca2a491d4 crypto/bn/asm/s390x-mont.pl
aa02597f3dc09cfbc190aedb75711859ba0f3efff87067ebfba1ec78ebee40d7 crypto/bn/asm/s390x.S
@@ -81,9 +81,9 @@ d24f3e97239c8eed5efc721521b025b7256c15e67a54ea6b5c4cf8f7cd0f89ea crypto/bn/asm/
90d4ae234c08267adce9ed38d56e0edc223f7480cb9605f5d7399d0b3914c6be crypto/bn/asm/x86-mont.pl
0e3e572cd864bcb9222cdad7ca4e8dae4250f6f76c2b66e1f0e46df1cc0cf371 crypto/bn/asm/x86_64-gcc.c
709ddee92e9222ee0ed27bfb90db556e85e2d302e4a9131afa25fdc14c4d858f crypto/bn/asm/x86_64-gf2m.pl
-da7f7780d27eed164797e5334cd45b35d9c113e86afaca051463aef9a8fd787c crypto/bn/asm/x86_64-mont.pl
-efe70ef06b5d92539f8a239c98c0261d93a15b3e418ca87d97ec569da9e6e9d3 crypto/bn/asm/x86_64-mont5.pl
-0ea8185a037a2951bb3d1e590bbbdeac305176d5e618f3e43a04c09733a9de34 crypto/bn/bn_add.c
+4ad5e97a7ed376d2cc079a3eabfbdc0cce3fe6e61751324ef18b72d24f7851d6 crypto/bn/asm/x86_64-mont.pl
+11eebbeb8ae59158e780d74300b333de9705aefdde73cff280286c053c8743da crypto/bn/asm/x86_64-mont5.pl
+7c81cd72fbf6f2dd85cbcbf40027301c98c1701928d3199edb2b8fdf04a5ca5e crypto/bn/bn_add.c
529933a6592cf82abde515dae10db17833a16ec29cb89ec577c0a184838fe27b crypto/bn/bn_asm.c
feef3a84a40034291286882d483ac23ab55631c3c93f40ba0ea98944916ff3ec crypto/bn/bn_blind.c
1b8f89064c287669a834fe032ef823796f7355ed7e6da08d6c56c0a4cd0bba01 crypto/bn/bn_const.c
@@ -91,13 +91,13 @@ eee3d2710144b0e860c57e84f5adc6b2bf64fc27cbd202a8ca2630aefed3b84c crypto/bn/bn_c
282f06fbdeb991d90337787c6407020e940b6d5e187a06866f1a7787c10a0c1b crypto/bn/bn_ctx.c
b1b1c5fb8a45fde5755dfd5da62b68100b94f8c492c950719c108c384ea7f3c4 crypto/bn/bn_dh.c
4824f271f0ddc487b5991fbd92f7f7695aeeac234e076078f37da027999cdd88 crypto/bn/bn_div.c
-d36b2be05469f144f52173616e413a7bdd836607fccf94cf543cc7f5a343b962 crypto/bn/bn_exp.c
+f1e98f178356791a3d54f586c19d1639d8e89b2cf6e6a4de783327ceada296a2 crypto/bn/bn_exp.c
ce5219203bf869561297978d6d416357a441864cd801865503dfd455c481960c crypto/bn/bn_exp2.c
18ac3f6fe64225f72243689199839ea2ce2aa61d80b084bc4cd9efe1c7cc9d89 crypto/bn/bn_gcd.c
b643fdcd91ad7dfcfa97a0bb235221b024b8a77faa7890f0bcb9681ea2c64c49 crypto/bn/bn_gf2m.c
73ee247467879d4ec984c9900dfe7761233c5b889b8762be37c7e8fdd6d1d210 crypto/bn/bn_intern.c
ff147e5e032cc7c772b73a91fc6e24d8d9516e642d29354445d1f82d64b1d924 crypto/bn/bn_kron.c
-df9aebbdcca87fc5715dde430687fb516d8de0dac70c8910409fb73d6dd2305b crypto/bn/bn_lib.c
+c4bae573e4e7132106b1151e8983cb63200dd9e49dc464e805f0fc50d55374d0 crypto/bn/bn_lib.c
cd7bade0f2e223fe34f6e2f8cc87098ac8f0af96ec62ada5e67f6a2344d48ef0 crypto/bn/bn_local.h
b494fd85387afa7816422922e52987e0faefc3c890c972e7d4fe04f620dfc59a crypto/bn/bn_mod.c
39a8fe0bb625b4c11b74998ce6fd99b7655228aaa7d7ad3076f61741937ae14d crypto/bn/bn_mont.c
@@ -126,7 +126,7 @@ ab29529cca1308302d852999f2790c404a4dc0ef8cd6653260739f70b2f22758 crypto/core_fe
0e3519aec0d93b0700d1175616b8bfca9c045989fad515d2202dd7dff9caa5ac crypto/core_namemap.c
a62f653b8a6ee765be704980425617e04e1d242f9735efaf35fc6e00815ff2a7 crypto/cpuid.c
a73118d14eeb232ff250ae908204ddd7cf33deba5f3ca68a2dbb51b020946b0e crypto/cryptlib.c
-66dbfc58916709d5a6913777346083247942a8d9458ee9b2bf443f0ea4988d64 crypto/ctype.c
+0145299d43dbb60e85ef6b97cf7496dec55cc37b75433e1403c11adfa3e90c5f crypto/ctype.c
b9fabcf8480b8c9c7847a0c9af0fcc13b6c4b4a4558d5e445e6409221e6f8113 crypto/der_writer.c
135ef65f7602432f8c87ad18fdd90b867f1c46b1c631522d56181fbed2106b05 crypto/des/des_enc.c
7c2cea4c850398158b4aff172b242de0cc436b66f62fc701ccca3fe5489925a5 crypto/des/des_local.h
@@ -136,7 +136,7 @@ c1e015556147b40c854bf0ab275c54235f99001d04c6d49f158fba6865eb5439 crypto/des/fcr
dc2e7899593032fdf0fcab18f5549c52f12bad2225aac9a08c4622ffee34b193 crypto/des/set_key.c
41b7fc5e67814311b878684e3f29cff60e228f1516f670d81bf43130f2668ae8 crypto/des/spr.h
b842e39f34996d74cdc9b9be5fc93c27fc91ef6141fae83163e09f6b0eff1e09 crypto/dh/dh_backend.c
-091ec05b6316cce34305ae8f8014043c7c9b72098aa1abe9c35dcbcdb4b77cd0 crypto/dh/dh_check.c
+380d55ea09a50ba3ece173e64db90782efae08ca56ac51cb4d31b9a303b429ea crypto/dh/dh_check.c
c117ac4fd24369c7813ac9dc9685640700a82bb32b0f7e038e85afd6c8db75c7 crypto/dh/dh_gen.c
1149e214ed664540434912e284730a3c87385172e4c6d1c944ea56659e2dd762 crypto/dh/dh_group_params.c
a539a8930035fee3b723d74a1d13e931ff69a2b523c83d4a2d0d9db6c78ba902 crypto/dh/dh_kdf.c
@@ -146,7 +146,7 @@ a9166c3cc60f4281e9d471c64145e0a78fc9dc43b8bc9e5de96d91eb7d277da3 crypto/dh/dh_l
40065939139ac28aa52838aa54d257da82fce73504557f7a9ad34d13824e0cb9 crypto/dsa/dsa_backend.c
786d6c65ced7ee4e25f5dd7c3150259ec95b6aa321a7590d905757b8139f8230 crypto/dsa/dsa_check.c
ae727bf6319eb57e682de35d75ea357921987953b3688365c710e7fba51c7c58 crypto/dsa/dsa_gen.c
-dee83cb278b3f712a62bd3477bdecf7b83e6df38ada2f3e1ca043d37327e2da4 crypto/dsa/dsa_key.c
+43f8fba4f50fbc94b1532a7667c9cfdc91b357e8658fd5fe0dcd302ea93ae9a0 crypto/dsa/dsa_key.c
7d44106570c0ff9a44de874ea2daeaa87ea4c814fef6af0a26f655120a54f529 crypto/dsa/dsa_lib.c
98ce52d325d2409d7851f1e1226755136f115c884d227d2ae3e4f9b61fc323b8 crypto/dsa/dsa_local.h
3428bc7602f344f8b8d4a5807b0a7e982cbead1ec28be73ad77b5f849b034993 crypto/dsa/dsa_ossl.c
@@ -159,9 +159,9 @@ d9722ad8c6b6e209865a921f3cda831d09bf54a55cacd1edd9802edb6559190a crypto/ec/asm/
3715ddd921425f3018741037f01455ed26a840ace08691a800708170a66cf4d2 crypto/ec/asm/ecp_nistz256-ppc64.pl
cfe7e75a2fddc87a7251684469a8808b9da82b2f5725eafad5806920f89932bd crypto/ec/asm/ecp_nistz256-sparcv9.pl
922725c4761cfa567af6ed9ecab04f2c7729ae2595f2fc0fa46dc67879dc87b0 crypto/ec/asm/ecp_nistz256-x86.pl
-afa4497cfbf9ef7805e42ae6a61c7d983e8a789b270d498a07785570ab85a9fa crypto/ec/asm/ecp_nistz256-x86_64.pl
+f5c4f8c74a44c8723293e3bb64c0c2cf75dc354466ac9f93ebfdab1df34b64c4 crypto/ec/asm/ecp_nistz256-x86_64.pl
cc727533130f5f1a29229929b3d4e8454585d647be25d6344f3c6a0240998368 crypto/ec/asm/x25519-ppc64.pl
-ee897e230964511baa0d1bf95fb938312407a40a88ebe01476879c2763e5f732 crypto/ec/asm/x25519-x86_64.pl
+ee576a748991bb2cf0a37437e46a23dd55dfd35d989e087d122c7cf0f332eb2a crypto/ec/asm/x25519-x86_64.pl
2e7b5d2a3eff0b8a90c1de3f28a7bf59b1057e7694c0e36909e774343cef609f crypto/ec/curve25519.c
784c03c3f81fd0c363cd0500fbd95f3e49c65f47a249f7ba25fad42a41d3eea2 crypto/ec/curve448/arch_32/f_impl32.c
8e75602d4d492316d318bac147eaa09d87b0eeda0d450e18683d935673ab61b0 crypto/ec/curve448/arch_64/arch_intrinsics.h
@@ -185,7 +185,7 @@ dfbccf591879eecbd9ed75da1fbe6c7b1672d07648fd43b37755dfe248253bb2 crypto/ec/ec_b
3a3c4f4767513b4fbbabdea2918d7c7d105eb573334a7fd893b866989463c4d2 crypto/ec/ec_check.c
f3991bfc65a7371b84afd0cc328e3cbd4736edf7267e4b731dd82677bfab047a crypto/ec/ec_curve.c
8cfd0dcfb5acbf6105691a2d5e2826dba1ff3906707bc9dd6ff9bffcc306468f crypto/ec/ec_cvt.c
-add58bcaf43a28e66b3a6ec1f70ed9b0b4a4a0d40230e903a26a1ff1129649e0 crypto/ec/ec_key.c
+b94eb087740dde2bf697cfbc5e8a17efd80e84c5072c9c72f8ed2f9155976d37 crypto/ec/ec_key.c
35515133fb3c33c5736a9f744e835b9fc0775193357ab2492f11d0f63503c65e crypto/ec/ec_kmeth.c
652a1544120bf0fecde46a8e18cc28fffcb7cd864be2e2b84c99d571ba320e64 crypto/ec/ec_lib.c
0d113ac5dbdb420ba3d1c060f4fa3300fc0a81b571a919c2b176022fdca89878 crypto/ec/ec_local.h
@@ -214,7 +214,7 @@ ed0217e7c2049b44a454b40e7e18385eadb34bce1bcf54337f420cbf988775da crypto/evp/asy
e997e921669076c51e230ccb2e36b1c6755fe408c61b1177d2aa67529cab15f3 crypto/evp/evp_local.h
8963ef06e4d228f7067917434f60f0502dc4bbdf3b271649498b734f4074bfb0 crypto/evp/evp_rand.c
0bdae4714221662282dccd5b1f2485370d24e463c11bdbb71a310f34616954fe crypto/evp/evp_utils.c
-8f4194bcc2e0de69236925aa7515bc31f36ed113dcd3cee5d71167ac770cdfdd crypto/evp/exchange.c
+1d78745866dde8224eec50c8553a15b51aa14bc3313969479806b3c3024c7282 crypto/evp/exchange.c
294284ad040fe4b74845f91b1903c961c757e1ef3fcc2ffa35f43f37f1655e64 crypto/evp/kdf_lib.c
532f0ff4ab32068f160016f39cd520fadfbd09b81b3b3b562bf543acafb38889 crypto/evp/kdf_meth.c
d911878128b90b98f3a4a1fb844ef3a20d35eafda3f80773dac8ce93c55bc352 crypto/evp/kem.c
@@ -239,7 +239,7 @@ bb208ef3a2c7ebdc518bd38f2f07a17cff356040f1c5d68eea13bd9275897a52 crypto/ffc/ffc
e9a500ddbe96cb5b302fd2db74fac0924a6ac45732df5ee1c09e82b19d06ccfd crypto/ffc/ffc_params_validate.c
f172c8c2112ee82716a7bc3a3e05d5cc26188c66b9d768ac1ff906845063d2cc crypto/hashtable/hashfunc.c
ed523d9793ff9db947857bca354067d17b8de5a4b28604dbf902320e62d93e33 crypto/hashtable/hashtable.c
-7a9af0b14f1463b36de0689bc434a318adcb7990bb23862bf1d2a0adf510583a crypto/hmac/hmac.c
+9a63ec43c8b9a55e0b135394a659026c1d1236978ebbb5df0e3c4c5c58b62ef4 crypto/hmac/hmac.c
907dd44e0bf873eebefcb4d82975b72ecec9e0f3c348c79314450fdaa78d4073 crypto/hmac/hmac_local.h
0e2d6129504d15ffaf5baa63158ccec0e4b6193a8275333956d8f868ef35127e crypto/ia64cpuid.S
29c020cf599c24ef9969a42e00e690a7b463c20dd90356b0a4117ca31b13db6f crypto/initthread.c
@@ -248,28 +248,28 @@ ed523d9793ff9db947857bca354067d17b8de5a4b28604dbf902320e62d93e33 crypto/hashtab
899ba6a9049a61d5b175637907f747f58863cd8950409cefac8fbc8f574f970c crypto/loongarch64cpuid.pl
460a7af09cde89a820b091522ada1310cfcec99c60aee505f94c48c35e9a29e8 crypto/loongarchcap.c
f866aafae928db1b439ac950dc90744a2397dfe222672fe68b3798396190c8b0 crypto/mem_clr.c
-23ff635daa1a3149e14de6c2a41b82a7587801581bdf39b8a82e9c624da95471 crypto/ml_dsa/ml_dsa_encoders.c
+1812ee360303b9fdcebe6dd0690944646bd9605ee67e3554c691cf5993293c46 crypto/ml_dsa/ml_dsa_encoders.c
825105b0a2c4844b2b4229001650ff7e61e1348e52f1072210f70b97cd4adb71 crypto/ml_dsa/ml_dsa_hash.h
-2fbef0188a8606c56f2ffffecfbbbd13ccd454c2af949d6e37fb7c929974f1d4 crypto/ml_dsa/ml_dsa_key.c
+2bebd01093de6f77dabb8b6e5ac3deaad9104904956691e22d80f105a3e526c2 crypto/ml_dsa/ml_dsa_key.c
579c1a12a5c5f014476a6bf695dc271f63074fb187e23ffc3f9ccb5b7ea044f1 crypto/ml_dsa/ml_dsa_key.h
3f98eb0467033d0a40867ef1c1036dcfea5d231eeac2321196f7d7c7243edace crypto/ml_dsa/ml_dsa_key_compress.c
170292bfc8761e39b688ccfb21b3660af6e1a875aa38ff7448cc22f71f5874c5 crypto/ml_dsa/ml_dsa_local.h
-0490a89372b79d98c2fdc294f836fddd7a54a148202ffbd50c2d4371816a94d8 crypto/ml_dsa/ml_dsa_matrix.c
+6ac18f9ef27efc7fddc38ad5edec94fcf76a972ca9fcb6bdc5472673d885d238 crypto/ml_dsa/ml_dsa_matrix.c
ff65c82c56e341f47df03d0c74de7fb537de0e68a4fa23fa07a9fdb51c511f1c crypto/ml_dsa/ml_dsa_matrix.h
c2652262227348b8bb053a239e8491b26f08d6fadc47ba3471302f5797ae1c62 crypto/ml_dsa/ml_dsa_ntt.c
3e0980e67842c4d8637fa449ac41e9d650c614c1074c29f1021605d229a4f73d crypto/ml_dsa/ml_dsa_params.c
10e37ab3ee09a45d99007665e073efb2b062c819f30af8694c6b0f411eb33822 crypto/ml_dsa/ml_dsa_poly.h
-26be5266a9f1a33999a5a68c96cffc7932ba64521d9554dabe7397591611c852 crypto/ml_dsa/ml_dsa_sample.c
-26ce39dd4cdac0a1c00cee24d53e156c16a1577c71a8a96bce3e2b4130afa6f5 crypto/ml_dsa/ml_dsa_sign.c
+abb4f2263fb9b6d08911e1b8e2df2c2de636d6255f7cf3eee594f50dedcefc0c crypto/ml_dsa/ml_dsa_sample.c
+f1cbf5ebe46fe456e338a496193bf028d48a28bb3d4804591094babe84d83b25 crypto/ml_dsa/ml_dsa_sign.c
5217ef237e21872205703b95577290c34898423466a465c7bd609b2eb4627964 crypto/ml_dsa/ml_dsa_sign.h
-8311e08d9d0e2e073092d0cfaf64851fb8d0f0708dfc2707422f525f87f269d0 crypto/ml_dsa/ml_dsa_vector.h
-0fbbb11e30b7e3f4e5366334e273dcc3f6440ed04a0758f0c99279c25b8c0baf crypto/ml_kem/ml_kem.c
+afc44b2cdf6a03555cebcc0398179b44f5810098d0b17dcb2b0c0c62023d6964 crypto/ml_dsa/ml_dsa_vector.h
+dd95a5261fd1624e1e93270b0dc9404c887506a402d55521a5074975db833fd6 crypto/ml_kem/ml_kem.c
36e24eae5d38cc9666ae40e4e8a2dc12328e1159fea68447cb19dab174d25adf crypto/modes/asm/aes-gcm-armv8-unroll8_64.pl
33357356cd739d4ae89d52f0804b6900e4b94d8829323819c6f64c8908e978df crypto/modes/asm/aes-gcm-armv8_64.pl
-a91995f81b384b175ecf252690030bb068d6af64bfcdab2fe753484b2d07a184 crypto/modes/asm/aes-gcm-avx512.pl
+573c286991352233cb068d0e218c5cb1e6fe5d07a924496dbccca95fa82e1d4d crypto/modes/asm/aes-gcm-avx512.pl
8fab6574aa99ee635d564dbe68b014562b61af37fa4f151210690837cdae6707 crypto/modes/asm/aes-gcm-ppc.pl
dd0de5ca8913a941cfff781a42fba43227e133976a24d0fddebf63909f7e010a crypto/modes/asm/aes-gcm-riscv64-zvkb-zvkg-zvkned.pl
-9dcd3be86cda832ebe0394f5a859a761f4b711f2010fb606457f754722c5fb84 crypto/modes/asm/aesni-gcm-x86_64.pl
+a4fad5a5cb112929323632e4f3f5fce7d6f0ceb6ea2e3ed1a4a2165f05fbf0b5 crypto/modes/asm/aesni-gcm-x86_64.pl
c2e874a8deb418b5d8c935b2e256370566a5150e040c9fa008cdb5b463c26904 crypto/modes/asm/ghash-alpha.pl
6bc7d63569c73d7020ede481f2de05221ac92403c7cc11e7263ada7644f6aa9b crypto/modes/asm/ghash-armv4.pl
097975df63370de7ebea012d17de14fc1f361fb83acf03b432a99ae7d5bceb24 crypto/modes/asm/ghash-c64xplus.pl
@@ -281,7 +281,7 @@ e6d6ce559210aee1e97f098683e290c221cc90f6f4f8047b331e8071a8387559 crypto/modes/a
92071f9c046f312c4eb7df483f385bc71ade863392e1acf3e821912bcc5cfaa7 crypto/modes/asm/ghash-s390x.pl
6af1a05981e1d41e4dea51e58938360e3abc4a4f58e179908242466d032b1a8a crypto/modes/asm/ghash-sparcv9.pl
26f55a57e77f774d17dfba93d757f78edfa3a03f68a71ffa37ccf3bfc468b1e2 crypto/modes/asm/ghash-x86.pl
-487e23973c9c782d375a956da6231e91f450182d8822d3f86fd4924e143fed70 crypto/modes/asm/ghash-x86_64.pl
+3d746cc0cf6cca866e34cdbbd79f5660244033fa440ed82aaaa9dd16cebf821f crypto/modes/asm/ghash-x86_64.pl
a4e9f2e496bd9362b17a1b5989aa4682647cefcff6117f0607122a9e11a9dfd9 crypto/modes/asm/ghashp8-ppc.pl
92f17ee53bd40123358ce5b37bcd6063bfa7d6860dd734d4ac585249c03a6b32 crypto/modes/asm/ghashv8-armx.pl
ca4be187fc1805d498f2adb823509f0519e214644029c18d331b5b01a0891a9d crypto/modes/cbc128.c
@@ -312,7 +312,7 @@ ed6956c34da5127fbf8f1a067654b617c261039743a12fd1d296a1dd01b05c26 crypto/params_
fcafd9ac56254e921f43dda47aa6d19ff42b3461ff3a72e0bff1840793f96701 crypto/provider_core.c
aa58d7800d3ccf2989b0de3c2e2710dfac36c88dc51659129897b0dfd2162527 crypto/provider_local.h
5ba2e1c74ddcd0453d02e32612299d1eef18eff8493a7606c15d0dc3738ad1d9 crypto/provider_predefined.c
-5f077b3d3c0127c9051907f91b7184d18ad045452e0cd891937932c8fb1f129f crypto/rand/rand_lib.c
+1e919f7f3c860eb21bf2f6f868dae076c64c53f1ad794c6764f69329724c3fc2 crypto/rand/rand_lib.c
9e162caba63741e3df4d0f1c49a7555263ebc120cfb643546ea7e34d3f5eb862 crypto/rand/rand_local.h
dce7413b4c4e588c9a099c6fd7c6c9a397e034f259a2027d4ea8bdfe149164fa crypto/rcu_internal.h
0c1d3e0e857e9e4f84752a8ef0b619d8af0d81427b52facbd0174e685dac9a47 crypto/riscv32cpuid.pl
@@ -322,7 +322,7 @@ f0c8792a99132e0b9c027cfa7370f45594a115934cdc9e8f23bdd64abecaf7fd crypto/rsa/rsa
b1584c4a1a5f83a1fd43d854ce72bb11735aa34945f2b2f983228f36f27fdad2 crypto/rsa/rsa_backend.c
38a102cd1da1f6ca5a46e6a22f018237964336274385f5c70cbedcaa6997647e crypto/rsa/rsa_chk.c
e762c599b17d5c89f4b1c9eb7d0ca1f04a95d815c86a3e72c30b231ce57fb199 crypto/rsa/rsa_crpt.c
-e666568eadfd01ff3e435364dee2575fca7ff3e6855b2c258fa1e4d04239d933 crypto/rsa/rsa_gen.c
+157eec6c45b95ed974324055f594885c50e33616af3af06efb558d651a786c69 crypto/rsa/rsa_gen.c
f22bc4e2c3acab83e67820c906c1caf048ec1f0d4fcb7472c1bec753c75f8e93 crypto/rsa/rsa_lib.c
969a13b951b8a77337fef84437b1aeec49ab1c73ecbceeb4b0df2174ae16a9a2 crypto/rsa/rsa_local.h
cf0b75cd54b61b9b9a290ef18d0ddce9fb26a029a54eb3f720d9b25188440f00 crypto/rsa/rsa_mp_names.c
@@ -350,13 +350,13 @@ be1e7dd9998e3f31cfa6e1b17bc198aeec584a8b76820e38f71d51b05f8a9f2a crypto/sha/asm
79dec13ccbee4a6758a22d92bfd5694565416219e48b6894dfb63c6b0029ae28 crypto/sha/asm/keccak1600-s390x.pl
3fb93b9440f5c3008b5c876a8106acc5f8d38f1afedd79381f0befec7dd7d72b crypto/sha/asm/keccak1600-x86_64.pl
831b8b02ab25d78ba6300ce960d96c13439bfba5844e13061e19c4e25cbacc3d crypto/sha/asm/keccak1600p8-ppc.pl
-75d832db9bf0e98e7a5c522169060a6dd276c5118cfb297fc3f1111f55cd4007 crypto/sha/asm/sha1-586.pl
+131d338bc716d9b5d4c1d3e8de213aa621f7581f91ec0ee7e2e56a9a94f1822b crypto/sha/asm/sha1-586.pl
c96e87d4f5311cd73bbdf499acc03418588be12426d878e157dd67e0099e0219 crypto/sha/asm/sha1-alpha.pl
695ef6f8041f37f4b39cb7099e9c7c3a29d6f823823df7333530d375f5f5e01b crypto/sha/asm/sha1-armv4-large.pl
cb32284af92d99d7046b99dd5bbd894d53531f7b99d351235a939c542680193b crypto/sha/asm/sha1-armv8.pl
11d332b4e058e9fa418d6633316d2e9f9bf520a08b2d933e877bdf38b2edefcf crypto/sha/asm/sha1-c64xplus.pl
32ff0e701a7b8f25bcfe8477b20795de54f536527bd87d3ce694fd9aaae356d4 crypto/sha/asm/sha1-ia64.pl
-de6c7e8c1e27779a8cf1ce2a04f487a3d4dc510d5ba240cd06128ecc8574e424 crypto/sha/asm/sha1-mb-x86_64.pl
+9fdde42e62c5a5c0457316ac35e6f6f940061634ab1e44a1ef5cdbacb656d738 crypto/sha/asm/sha1-mb-x86_64.pl
0f5c63cf09e950d1b488935ab3b5562e3e9d5cd1a563fb88a41e3dae90a35e6d crypto/sha/asm/sha1-mips.pl
b5ffd7b6dbb04c05de7efa2945adb67ea845e7e61a3bf163a532f7b6acdf4267 crypto/sha/asm/sha1-parisc.pl
482cd23ca6ec38d6f62b90c68f9f20643579c50f2c0fbb0dab1c10a0e35efe77 crypto/sha/asm/sha1-ppc.pl
@@ -364,11 +364,11 @@ b5ffd7b6dbb04c05de7efa2945adb67ea845e7e61a3bf163a532f7b6acdf4267 crypto/sha/asm
7fd355b412ddfa1c510e0ba3284f75b1c0d621b6db2ecb1d2a935d5cdb706628 crypto/sha/asm/sha1-sparcv9.pl
24554e68b0e7b7db7b635ff149549015f623ca0bcd9ae90439586a2076f6ae80 crypto/sha/asm/sha1-sparcv9a.pl
74d197cdd72400cabbff7e173f72c8976723081508b095dc995e8cd1abf3daa6 crypto/sha/asm/sha1-thumb.pl
-dc363497de4fa3bc88b16e834ddf4967aecabdba5ea3ddd6113cf00da7e278bd crypto/sha/asm/sha1-x86_64.pl
-c099059ef107f548ea2c2bab64a4eb8c277070ce6d74c4d32bb9808dc19c5fa3 crypto/sha/asm/sha256-586.pl
+a579c0ab82151f8879bac23ef1ffb198dfbf9b02d2015c500a232baafc6a3722 crypto/sha/asm/sha1-x86_64.pl
+494390ee974a00a0bfdb0ee46116efa45379b5e63988c0a3be9ff6183be2359d crypto/sha/asm/sha256-586.pl
0f01f7b5b0699f1e8ca260439d009febfa5b85b9e7b0933d236467e383aaaa2e crypto/sha/asm/sha256-armv4.pl
93ddc97651ee3e779144a3c6b3e46a1bc4aa81e75cd7b9df068a2aef8743d25f crypto/sha/asm/sha256-c64xplus.pl
-9a68b6642b20e3cdccd636c4a934a6e0114160506784583f684ad65aefac2872 crypto/sha/asm/sha256-mb-x86_64.pl
+478035fb599566f468f68ae9a3c5311b1e9c6257de6c47a7a32082c8aee41c8d crypto/sha/asm/sha256-mb-x86_64.pl
b14670492f24cd0d2fedf8780e981b7da123203395c085334d4571b619b0a610 crypto/sha/asm/sha256-riscv64-zvkb-zvknha_or_zvknhb.pl
dd82e1311703abb019975fc7b61fb87d67e1ed916dddd065aced051e851114b9 crypto/sha/asm/sha512-586.pl
16e68ac669860c5bf8e4db81cd3d64fc2c22168e129c2597e94b0f56fafcdfa8 crypto/sha/asm/sha512-armv4.pl
@@ -381,7 +381,7 @@ fb06844e7c3b014a58dccc8ec6020c71843cfdc5be08288bc7d204f0a840c474 crypto/sha/asm
07804b96dda856cffaef291641c4ae7f59288ed1e65e38823cfdcb74f8ac5295 crypto/sha/asm/sha512-riscv64-zvkb-zvknhb.pl
38e0455fd6a2b93a7a5385379ca92bc6526585ca1eb4af365fac4c78f7285c72 crypto/sha/asm/sha512-s390x.pl
0611845c52091b0208dd41f22ddef9dd1e68d3d92fa4c4360738b840a6314de6 crypto/sha/asm/sha512-sparcv9.pl
-473874a27b031e3d6c3dd0388c7231aa299e07c5832fa7499a081488e6f5680a crypto/sha/asm/sha512-x86_64.pl
+14b563ed790d9bd76b0f45e27b75b5fa46d393d7bea8704d2894004adc3f4ac6 crypto/sha/asm/sha512-x86_64.pl
8725cabb8d695c576619f19283b034074a3fa0f1c0be952a9dbe9793be15b907 crypto/sha/asm/sha512p8-ppc.pl
93858e3b530333a129127b8df8cd3326cf55b770238b4fff2474c4e6e3def1dd crypto/sha/keccak1600.c
306cacd3f86e5cacaca74c58ef862516515e5c0cafaff48636d537fd84f1c2fb crypto/sha/sha1dgst.c
@@ -391,19 +391,19 @@ a7e074a2f2cea0c33e7875eacc8adb465b5802e4c1d100cda79ac3dd52cdb453 crypto/sha/sha
61ab6d7d7da9e65120ec59cfa9f5ede785502ae371696c3e4e04e039743ca111 crypto/sha/sha_local.h
dfd99e02830973ab349409ac6ba0ee901ba7736216030965bd7e5a54356abd7c crypto/slh_dsa/slh_adrs.c
c9b270de1259d9fa71a4d352786357bcf1dd3d22075edab84501e2f8e550b271 crypto/slh_dsa/slh_adrs.h
-95d42ca839ff34a050a7006734a06c157ad259512c1a10b978e9f899efe69f12 crypto/slh_dsa/slh_dsa.c
-ab7b580b1cba302c5675918b457794a3b3d00aac42297312d9447bc6f6a40b09 crypto/slh_dsa/slh_dsa_hash_ctx.c
-892a5ed5213c0898882bfc42f72be2864b363cd62d08a3b337c20b4fa557bef0 crypto/slh_dsa/slh_dsa_key.c
+26566d0e641456101bd17338dbbb16f59dfacd34f76cff5882133a0ab7323130 crypto/slh_dsa/slh_dsa.c
+6b88a8ca514dd2ead7808bf08ea7c7e89125cdcfae8f0db4f3518069382fdfa0 crypto/slh_dsa/slh_dsa_hash_ctx.c
+924e686178fdc5984d1a09b02d91e04d4b9c4eb818ee384107ca64357c237e39 crypto/slh_dsa/slh_dsa_key.c
4c7981f7db69025f52495c549fb3b3a76be62b9e13072c3f3b7f1dedeaf8cc91 crypto/slh_dsa/slh_dsa_key.h
-5dcb631891eb6afcd27a6b19d2de4d493c71dab159e53620d86d9b96642e97e8 crypto/slh_dsa/slh_dsa_local.h
-adb3f4dea52396935b8442df7b36ed99324d3f3e8ce3fdf714d6dfd683e1f9f0 crypto/slh_dsa/slh_fors.c
-5d3855cb2927efa4b28fec4357694bf863ac8dc6556009bdfa800ba16cb80b4d crypto/slh_dsa/slh_hash.c
+f8007c0f93908810f138f872809cd49013e22192907f4c38d290b6c4566230f5 crypto/slh_dsa/slh_dsa_local.h
+6d3f3c0be706c1dd871db863f2344f709a2b7fbb60a0d91298aeb2222f767a87 crypto/slh_dsa/slh_fors.c
+f6f5286c6ce9f37cbb527144ec09fd86ae796ac3e71f0bdbb45b5a08a0692122 crypto/slh_dsa/slh_hash.c
3af167addbfd97f831f2a1981133bf4e2b62b95dc9477767797f7e4a653556db crypto/slh_dsa/slh_hash.h
-6402664fbb259808a6f7b5a5d6be2b4a3cc8a905399d97b160cdb3e4a97c02c4 crypto/slh_dsa/slh_hypertree.c
+1eebf59ebd0859be5a8deddd2f664f99158060904234532af608a44dd6d92d19 crypto/slh_dsa/slh_hypertree.c
1ce9b4f4f90a6f82005c9cdc0ea1f6b6876556c76f8bfd95f4c003a1c195a266 crypto/slh_dsa/slh_params.c
86b16a2c36d708cb880ba49648bb3051c2997188c8ea6aec9292534b97232c7f crypto/slh_dsa/slh_params.h
-1aa9dc1c6fe59d024485df9a6b782ac4d0656a31b12faee749fe098911799eaf crypto/slh_dsa/slh_wots.c
-59db81a3342c0c89b030756168b9a7f09c938b2cd3498335108e0a32c041b6e7 crypto/slh_dsa/slh_xmss.c
+668a2431034f8c604970ed531e32b7b20b6b710e258d1db0a8eb06a13d900f0e crypto/slh_dsa/slh_wots.c
+37fff5f88dd8bcd0ad8cdbab130c5a9a018422fe59b141bdb11bcee8fd1b046f crypto/slh_dsa/slh_xmss.c
9ef5a01caccc2eb15f72e367d0424737040ac8018479bbbbce3d216c655765c2 crypto/sparccpuid.S
b462d1efe0acd798e1ec5f37fd1c824a587e1773e6a6f984d5a332581573ecbc crypto/sparcv9cap.c
9e16e8641ac5ec2cb2fcc8e4796af5b698d6fa4ce85e374bd8f5b4edb51e6428 crypto/sparse_array.c
@@ -417,7 +417,7 @@ f06b08138d73b834471abc4a3ba43b2be838f7196c937c3e933694d6cd69f74d crypto/thread/
2e5955d706b96c487e4875ffbe208fac15bdca06b33cee916d5343978c14efa1 crypto/threads_lib.c
b3743dfd1c13fe70dc57a5a0b2ec540ab3afa748699eb6ef36f56f4d36d06ef3 crypto/threads_none.c
7b97b0f57f6b7cac89c1b8bd03bee34fb39d33cfae1632e75571ba106a5b9442 crypto/threads_pthread.c
-9dac146cda57fb53d9b9eb30ff1fc81090f5e62dbe05d4cd97ed11cf501fc78c crypto/threads_win.c
+a4692ad34bd148e06344672e08a3ba928719ca5af4d11ba54d97926759dcda0b crypto/threads_win.c
93f8fe09f96492a6be6772ddbf0cc37912fc2a90acb7faea378da1735fe20f6f crypto/time.c
88c5f9f4d2611223d283ebd2ae10ae5ecbb9972d00f747d93fcb74b62641e3f9 crypto/x86_64cpuid.pl
085d9fe93adf232f1ff838be9235046c2c2abe2daeb0e6342921d8f2e955dc18 crypto/x86cpuid.pl
@@ -468,7 +468,7 @@ b41a5d9a7bdf60df169e327b41f16489830b82393dd663d1f89f81da4483eaa7 include/intern
9bafa62442fdeda25b97fdbe8e8bf8ea62a5b5167adb2ac7ebbb13db271673f9 include/internal/ffc.h
0a82ff0abab6ab815f9cb523b9643854346b47ff276f8868d1cbe48efc1b20ee include/internal/fips.h
923d4fb14a08f9b251b9bf9727bc50930d0279e8b63243faf85374bdcbbfc4e0 include/internal/hashfunc.h
-a37a58d887ae4331a19179900b8d077afa1174c5152d53dc1533c37a65f319d6 include/internal/hashtable.h
+d76c942d91e97f8954852ec7ae5a790a591b44762bba31930af585ed5f861fe0 include/internal/hashtable.h
f6f30785e3eced1ccdd4b149286ff2b8bbb860eb7e070cbe54c997aa022854da include/internal/namemap.h
c367e6120d26a2b629f4db7e179973e33fb095e1102d5c7a69c744b88ebe4469 include/internal/nelem.h
eef3ec603b9877bd24a8fa1dbcd7752618fa74943b045515720bb0ca61394ae5 include/internal/numbers.h
@@ -568,7 +568,7 @@ a481e8762c694b3dac0e74aac8626fe60fa94962a14914f1f6969ea1214c40b1 include/openss
9e04a3e9ca5352adffbdd75a5ea5237e8ff96a8c0a842368cc3a29de006b2ee7 include/openssl/types.h
62e0cddeedfc217ac02bf37f3669ccea8d0822a88a74a8ec82b844a85b2700aa include/openssl/x509.h.in
869959c3d557d2ace84f38b7a8d0f23b3b0854de7f952f46310e828af04554dd include/openssl/x509_vfy.h.in
-5dbee881fe4e1f08a773e8bd34eeda7639be7c474a3d4d6e7c8d779e19c7eb2a include/openssl/x509err.h
+53a45ca5d00026ef0a256f7ff27f5708d5af0a44177a0fc4b209ec054d44e18c include/openssl/x509err.h
c0a9551efccf43f3dd748d4fd8ec897ddaabbc629c00ec1ad76ce983e1195a13 providers/common/bio_prov.c
6d25e1b61731cc558c2f801350d0cd874d3c19a3b0a03f52394c11fcaf2d51a5 providers/common/capabilities.c
f94b7435d4ec888ec30df1c611afa8b9eedbb59e905a2c7cb17cfc8c4b9b85b8 providers/common/der/der_digests_gen.c.in
@@ -611,7 +611,7 @@ b10730f4d302344579c09f43d5f9c5538bb6b4acd60de7430c24269fc522d5a5 providers/comm
e2f8f00519d81aa16f1c30e8cbf9a0d8e898a1cb5c8b38bb01dd9ab513e34c9e providers/common/securitycheck_fips.c
abd5997bc33b681a4ab275978b92aebca0806a4a3f0c2f41dacf11b3b6f4e101 providers/fips/fips_entry.c
d8cb05784ae8533a7d9569d4fbaaea4175b63a7c9f4fb0f254215224069dea6b providers/fips/fipsindicator.c
-0c473190a4b6809caed57997e44ee9ec949bcf01c542633e2881d07c809d3a51 providers/fips/fipsprov.c
+f0f1486219ddb5817b5105c36f384cb9ef095ddceec50966fe178f4b4177028c providers/fips/fipsprov.c
8f52eead96febbce9e7f2bf5aaea557efe8f94ce078044959e80e5ae78432539 providers/fips/include/fips/fipsindicator.h
ef204adc49776214dbb299265bc4f2c40b48848cbea4c25b8029f2b46a5c9797 providers/fips/include/fips_indicator_params.inc
f2581d7b4e105f2bb6d30908f3c2d9959313be08cec6dbeb49030c125a7676d3 providers/fips/include/fips_selftest_params.inc
@@ -639,7 +639,7 @@ be18c20e0197f25fe7b9e0268657a2271a69d216b89cb100f082fa5fcaad1e07 providers/impl
60c4f604cf9b5457be48f31cc24ca21729660381081b2dbf99f362a013a09684 providers/implementations/ciphers/cipher_aes_gcm_hw_vaes_avx512.inc
e2886780637db72b12c9bc488d81647ed55a7f5c850efd4bdbf88ef7127e1913 providers/implementations/ciphers/cipher_aes_hw.c
89de794c090192459d99d95bc4a422e7782e62192cd0fdb3bdef4128cfedee68 providers/implementations/ciphers/cipher_aes_hw_aesni.inc
-eac58fff6aa9918d657228c2707f1b3f0ef8f1210c97575f3c264db78bfd996f providers/implementations/ciphers/cipher_aes_ocb.c
+b88e88831695dfc165ce83e64802ffb8240f1f696d9c67f350b9ff1b2e913212 providers/implementations/ciphers/cipher_aes_ocb.c
88138a1aff9705e608c0557653be92eb4de65b152555a2b79ec8b2a8fae73e8f providers/implementations/ciphers/cipher_aes_ocb.h
6c3a89771719b36d6917d23464be5441836378393731af96ba165fd788df1a41 providers/implementations/ciphers/cipher_aes_ocb_hw.c
c7aac28a9dca1ad46e5bce4de93e07dffec1f89fab82394c3ff7cf1bda8b483f providers/implementations/ciphers/cipher_aes_wrp.c
@@ -655,7 +655,7 @@ dc4626becaabc3990549483d9ef5f05c7dd9a9c2cf9be96ade3ba6a6e203f7f5 providers/impl
cca34f1c7baf3a98964f7ce19a59e06d1eaf2ada121a0d4a438f4078a072b325 providers/implementations/ciphers/cipher_tdes_hw.c
d2f418806c7ed45f118683bc13329573804592684e522efced0fd0921f4548fd providers/implementations/ciphers/ciphercommon.c
ab9a2edb23aa61cf31da6addd8674a6028f93399eceeeee35a56ee770338fd6c providers/implementations/ciphers/ciphercommon_block.c
-6b6090c233ddf29d819f2559361aeeae03505de7626a127628d5f0f6d3bce295 providers/implementations/ciphers/ciphercommon_ccm.c
+fafb07c3fd77a89cff1d2efbb6edc0767132fc30c57f9e282080da04e6762499 providers/implementations/ciphers/ciphercommon_ccm.c
6632a555d5bcd5af67d0355ce46c2906bb3a0dcdf1651595b29189c40a5ca675 providers/implementations/ciphers/ciphercommon_ccm_hw.c
ab51261da6aea5a3cca74a7561e4b89e6ce83f2ac497a5c766ecd3c3bff95152 providers/implementations/ciphers/ciphercommon_gcm.c
bb67eaa7a98494ca938726f9218213870fc97dd87b56bda950626cc794baf20b providers/implementations/ciphers/ciphercommon_gcm_hw.c
@@ -692,39 +692,39 @@ abe2b0f3711eaa34846e155cffc9242e4051c45de896f747afd5ac9d87f637dc providers/impl
a9a5a3ba575b1a372f5a09135667ac1b0e303f8b19b0707804390aba9e266eca providers/implementations/kdfs/sskdf.c
f01cbd7c5351d4aa9ae667627503b2cfef6fc0695e7a42296b7bf015c9a418b3 providers/implementations/kdfs/tls1_prf.c
39207243a84beb670cb0e64b6d0fe7bfc6a3dd84000617b647a3ecf52a1da3c2 providers/implementations/kdfs/x942kdf.c
-748af266d06006da10524f3a621c65b8c3eeddf8b1ccd06ecdc6b689564d220c providers/implementations/kem/ml_kem_kem.c
-35549cec7031452bb5b46aa8a86028abc7a3a2b39f9f6564fa4bd402451bc647 providers/implementations/kem/mlx_kem.c
-e89b894af920504160abfc11860b89b505d116d978162a02213f72500180903b providers/implementations/kem/rsa_kem.c
-aa13d72bc69a374db72b6d44e2f2c2ddd5f7bddbe16b950e3c4666d876c63735 providers/implementations/keymgmt/dh_kmgmt.c
+b1431361b8a3448b73f4a46c48b3a4f9fd378c2abba67563f4407b1c7f007fca providers/implementations/kem/ml_kem_kem.c
+926e08e60171cc867220e0f106533ed155132a034690bddea1e7793a879ebf73 providers/implementations/kem/mlx_kem.c
+ff22e920552b82db3dab51b09f9dd2fd038ef0d57fb76cea5578e703653d28c9 providers/implementations/kem/rsa_kem.c
+6599ad60eef3554741e049c3ff1bd9cc6064d4f3d1835e1ea5dec3a0c14c80bb providers/implementations/keymgmt/dh_kmgmt.c
c0446d1b2101ddd977063516b87d23f424cdca33473f293db4c3974b674169b0 providers/implementations/keymgmt/dsa_kmgmt.c
-2b98ba2124a86eae2adc7b88bfa26e47b548e9628b99180cc2cd841eed5ed8da providers/implementations/keymgmt/ec_kmgmt.c
+45480796e6ea50cbe9529c17f9fa04228a9126dc7e7e32971519eeb6d6ac267c providers/implementations/keymgmt/ec_kmgmt.c
258ae17bb2dd87ed1511a8eb3fe99eed9b77f5c2f757215ff6b3d0e8791fc251 providers/implementations/keymgmt/ec_kmgmt_imexport.inc
-167cd7df056bf46f3481cf6101fb6cfca55dea592f896c2b29649df1939885c4 providers/implementations/keymgmt/ecx_kmgmt.c
+c559f1f265388e7b1c8195188fcc71ac8af09b3398530ec8ed7a9afd7b41281e providers/implementations/keymgmt/ecx_kmgmt.c
daf35a7ab961ef70aefca981d80407935904c5da39dca6692432d6e6bc98759d providers/implementations/keymgmt/kdf_legacy_kmgmt.c
69b509e9c7fe9692622d1059917c3adb991c0047e11bc116f0a393a3a0539445 providers/implementations/keymgmt/mac_legacy_kmgmt.c
-3c63e65bd1a6a2e853828205c015a50c38a82f2fee9bf6787dce6dab7331bb91 providers/implementations/keymgmt/ml_dsa_kmgmt.c
-5c95eb8192483b2d81435e52aef6b2c96180bb22a67f717c29661a13b5861b02 providers/implementations/keymgmt/ml_kem_kmgmt.c
-f37c8b7bb59d4b199889044992cb1b18ad39f2eafc87029f5348c55a95195e8c providers/implementations/keymgmt/mlx_kmgmt.c
+7d197679dc4ae59f0e697749c56cb76399fc5eed88e94585dfd5ebdb23466e53 providers/implementations/keymgmt/ml_dsa_kmgmt.c
+2df9ca1a68a9b6e1d1b108148b54ccf5454da3afa34e510beb2f4516e473e4c6 providers/implementations/keymgmt/ml_kem_kmgmt.c
+4cec24edda3df01c08bef98a0a177ccdd1f8ba84e37c399dc568e010d7c0b29f providers/implementations/keymgmt/mlx_kmgmt.c
cd4b8129eaccbd77f9b6c725d3cb57b71109c4649115ec786b6495100afaddf2 providers/implementations/keymgmt/rsa_kmgmt.c
-d640cff1c46911b69866eb83f48beba42a1741bb1d3f1db6e7201077a57761fc providers/implementations/keymgmt/slh_dsa_kmgmt.c
-9d02d481b9c7c0c9e0932267d1a3e1fef00830aaa03093f000b88aa042972b9f providers/implementations/macs/cmac_prov.c
+92621573e975489b821884151d2de751e462fcf91efa83cb3bf8f4fd40cd241b providers/implementations/keymgmt/slh_dsa_kmgmt.c
+2a66bc54579cb1fcd72674a1e60a7a1f798c13ab964a45e5603bed699268354f providers/implementations/macs/cmac_prov.c
a3bb4d7914f45cf82f86cd92135e20a712274ca153d9ed5ad24db7f33710726c providers/implementations/macs/gmac_prov.c
2d6b8c42c67e3e43d8d0035463cbff590dabb7da815f9e437a3a72d4b6596319 providers/implementations/macs/hmac_prov.c
40686337be4261685f176bb10042d903d46ab10c90e10ac42d3842e9b5ddd960 providers/implementations/macs/kmac_prov.c
0ebc5a48655a697231918644397308e64914c32421e9b8ee7afd7779b6a2fdb8 providers/implementations/rands/drbg.c
-d9e41abc1780bb253bdca6c58cc32af7d0a774e52c91fc5d64577f71defc52c2 providers/implementations/rands/drbg_ctr.c
-cf98646defb0b385d6ce4bedcd51559c9a03424491f4576ea7eb41e3db8a18b3 providers/implementations/rands/drbg_hash.c
-57561d4bd3a79e6a250310a989958409437dfa68b2818d5f0dbb8a5e7ef04bb7 providers/implementations/rands/drbg_hmac.c
+d2805527aa28c27dc0d10f3e35b64e18626691b3c864806dd644b7dd1640ec49 providers/implementations/rands/drbg_ctr.c
+e624059b1c9f878655d6a21a4c295c43d147ea913f638a2d007a1a68379180f8 providers/implementations/rands/drbg_hash.c
+3aa1dd31f0db1ab0a7a5a3037f722e284587c244126810268622fae65bef77d7 providers/implementations/rands/drbg_hmac.c
841617c81d6d5eae5ea59064e8b45947d436d3e53b49283329d17016866d8f34 providers/implementations/rands/drbg_local.h
355bd437dde9ecd1da89f42691147f2b5cf9a012ff5f55062bf83b6bead1e181 providers/implementations/rands/fips_crng_test.c
-4913fec58a2648fcec0e5a94dba9decab0505a6d725bed6eb861ce854db81df8 providers/implementations/rands/test_rng.c
+90ea602ec88f7c0a78f3e7c801cdd3574a221f04497121a9ea7dcb05b7ee6765 providers/implementations/rands/test_rng.c
c6c709dfd8b1be036e2a5232d3b21dc25f0150f2aae24cc7db6b09cd790a04ee providers/implementations/signature/dsa_sig.c
d10d611713a6d9aa5cdbe636f1ba90404043431fd1df01fc1a1ce8499bf96ad0 providers/implementations/signature/ecdsa_sig.c
a837f69cb1aa5d0327372e26a63a8492b6ffb1156325f66e880c202011d07cbe providers/implementations/signature/eddsa_sig.c
e0e67e402ff19b0d2eb5228d7ebd70b9477c12595ac34d6f201373d7c8a516f4 providers/implementations/signature/mac_legacy_sig.c
51251a1ca4c0b6faea059de5d5268167fe47565163317177d09db39978134f78 providers/implementations/signature/ml_dsa_sig.c
-94725f9e466c60c710900ca9878196f359e8421f46d5fb62fda91f5f845caff3 providers/implementations/signature/rsa_sig.c
-539d3f55b8fd28826c786cb4e5c0e735173dc0faf268527ea007052be623cd37 providers/implementations/signature/slh_dsa_sig.c
+6b293ca81102cd2f234d60f52f839e5bd7a746a42df3fe8a4489e6c214108f50 providers/implementations/signature/rsa_sig.c
+ec630d49078bdd901132e7651eaf3478ff3b04e5558c435ffd7c77dcb62e46b3 providers/implementations/signature/slh_dsa_sig.c
21f537f9083f0341d9d1b0ace090a8d8f0b2b9e9cf76771c359b6ea00667a469 providers/implementations/skeymgmt/aes_skmgmt.c
2dbf9b8e738fad556c3248fb554ff4cc269ade3c86fa3d2786ba9b6d6016bf22 providers/implementations/skeymgmt/generic.c
9ba8db9b0e18847ef79ecb77fbc383d8762694be29dfb7d269df6f02dc977222 providers/implementations/skeymgmt/skeymgmt_lcl.h
diff --git a/deps/openssl/openssl/providers/fips.checksum b/deps/openssl/openssl/providers/fips.checksum
index 7d8252550bd..f236b8ff81a 100644
--- a/deps/openssl/openssl/providers/fips.checksum
+++ b/deps/openssl/openssl/providers/fips.checksum
@@ -1 +1 @@
-f24213807982cf5d2859d5d1b78caa54c249ec28725645d1af28f092d543962d providers/fips-sources.checksums
+ee77588030ee4df89ad9ff70a12118a9b89ebc4fde306fd25e9c01ef719d0b26 providers/fips-sources.checksums
diff --git a/deps/openssl/openssl/providers/fips/fipsprov.c b/deps/openssl/openssl/providers/fips/fipsprov.c
index 419878719e9..3c749018bcf 100644
--- a/deps/openssl/openssl/providers/fips/fipsprov.c
+++ b/deps/openssl/openssl/providers/fips/fipsprov.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2019-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -56,7 +56,6 @@ extern OSSL_FUNC_core_thread_start_fn *c_thread_start;
*/
/* Functions provided by the core */
-static OSSL_FUNC_core_gettable_params_fn *c_gettable_params;
static OSSL_FUNC_core_get_params_fn *c_get_params;
OSSL_FUNC_core_thread_start_fn *c_thread_start;
static OSSL_FUNC_core_new_error_fn *c_new_error;
@@ -541,7 +540,7 @@ static const OSSL_ALGORITHM fips_asym_kem[] = {
{ PROV_NAMES_ML_KEM_1024, FIPS_DEFAULT_PROPERTIES, ossl_ml_kem_asym_kem_functions },
#if !defined(OPENSSL_NO_ECX)
{ "X25519MLKEM768", FIPS_DEFAULT_PROPERTIES, ossl_mlx_kem_asym_kem_functions },
- { "X448MLKEM1024", FIPS_DEFAULT_PROPERTIES, ossl_mlx_kem_asym_kem_functions },
+ { "X448MLKEM1024", FIPS_UNAPPROVED_PROPERTIES, ossl_mlx_kem_asym_kem_functions },
#endif
#if !defined(OPENSSL_NO_EC)
{ "SecP256r1MLKEM768", FIPS_DEFAULT_PROPERTIES, ossl_mlx_kem_asym_kem_functions },
@@ -608,7 +607,7 @@ static const OSSL_ALGORITHM fips_keymgmt[] = {
#if !defined(OPENSSL_NO_ECX)
{ PROV_NAMES_X25519MLKEM768, FIPS_DEFAULT_PROPERTIES, ossl_mlx_x25519_kem_kmgmt_functions,
PROV_DESCS_X25519MLKEM768 },
- { PROV_NAMES_X448MLKEM1024, FIPS_DEFAULT_PROPERTIES, ossl_mlx_x448_kem_kmgmt_functions,
+ { PROV_NAMES_X448MLKEM1024, FIPS_UNAPPROVED_PROPERTIES, ossl_mlx_x448_kem_kmgmt_functions,
PROV_DESCS_X448MLKEM1024 },
#endif
#if !defined(OPENSSL_NO_EC)
@@ -771,9 +770,6 @@ int OSSL_provider_init_int(const OSSL_CORE_HANDLE *handle,
case OSSL_FUNC_CORE_GET_LIBCTX:
set_func(c_get_libctx, OSSL_FUNC_core_get_libctx(in));
break;
- case OSSL_FUNC_CORE_GETTABLE_PARAMS:
- set_func(c_gettable_params, OSSL_FUNC_core_gettable_params(in));
- break;
case OSSL_FUNC_CORE_GET_PARAMS:
set_func(c_get_params, OSSL_FUNC_core_get_params(in));
break;
diff --git a/deps/openssl/openssl/providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c b/deps/openssl/openssl/providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c
index bf3275f97b3..c1079e0e787 100644
--- a/deps/openssl/openssl/providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c
+++ b/deps/openssl/openssl/providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c
@@ -267,11 +267,17 @@ static int aes_gcm_siv_finish(PROV_AES_GCM_SIV_CTX *ctx)
{
int ret = 0;
- if (ctx->enc)
+ if (ctx->enc) {
+ /* Generate the tag when Final is the first empty-message operation. */
+ if (ctx->generated_tag == 0
+ && aes_gcm_siv_encrypt(ctx, NULL, NULL, 0) == 0)
+ return 0;
return ctx->generated_tag;
- if (!ctx->generated_tag)
- aes_gcm_siv_decrypt(ctx, NULL, NULL, 0);
- ret = !CRYPTO_memcmp(ctx->tag, ctx->user_tag, sizeof(ctx->tag));
+ }
+ if (ctx->generated_tag == 0
+ && aes_gcm_siv_decrypt(ctx, NULL, NULL, 0) == 0)
+ return 0;
+ ret = CRYPTO_memcmp(ctx->tag, ctx->user_tag, sizeof(ctx->tag)) == 0;
ret &= ctx->have_user_tag;
return ret;
}
diff --git a/deps/openssl/openssl/providers/implementations/ciphers/cipher_aes_ocb.c b/deps/openssl/openssl/providers/implementations/ciphers/cipher_aes_ocb.c
index 99254cb49a8..62e5a0c1a76 100644
--- a/deps/openssl/openssl/providers/implementations/ciphers/cipher_aes_ocb.c
+++ b/deps/openssl/openssl/providers/implementations/ciphers/cipher_aes_ocb.c
@@ -509,6 +509,10 @@ static int aes_ocb_cipher(void *vctx, unsigned char *out, size_t *outl,
if (!ossl_prov_is_running())
return 0;
+ /* NULL input indicates Final, which must generate or check the tag. */
+ if (in == NULL)
+ return aes_ocb_block_final(vctx, out, outl, outsize);
+
if (outsize < inl) {
ERR_raise(ERR_LIB_PROV, PROV_R_OUTPUT_BUFFER_TOO_SMALL);
return 0;
diff --git a/deps/openssl/openssl/providers/implementations/ciphers/cipher_chacha20_poly1305.c b/deps/openssl/openssl/providers/implementations/ciphers/cipher_chacha20_poly1305.c
index 977f7000c28..673e18702cf 100644
--- a/deps/openssl/openssl/providers/implementations/ciphers/cipher_chacha20_poly1305.c
+++ b/deps/openssl/openssl/providers/implementations/ciphers/cipher_chacha20_poly1305.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2019-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -30,11 +30,11 @@ static OSSL_FUNC_cipher_get_params_fn chacha20_poly1305_get_params;
static OSSL_FUNC_cipher_get_ctx_params_fn chacha20_poly1305_get_ctx_params;
static OSSL_FUNC_cipher_set_ctx_params_fn chacha20_poly1305_set_ctx_params;
static OSSL_FUNC_cipher_cipher_fn chacha20_poly1305_cipher;
+static OSSL_FUNC_cipher_update_fn chacha20_poly1305_update;
static OSSL_FUNC_cipher_final_fn chacha20_poly1305_final;
static OSSL_FUNC_cipher_gettable_ctx_params_fn chacha20_poly1305_gettable_ctx_params;
static OSSL_FUNC_cipher_settable_ctx_params_fn chacha20_poly1305_settable_ctx_params;
#define chacha20_poly1305_gettable_params ossl_cipher_generic_gettable_params
-#define chacha20_poly1305_update chacha20_poly1305_cipher
static void *chacha20_poly1305_newctx(void *provctx)
{
@@ -301,11 +301,6 @@ static int chacha20_poly1305_cipher(void *vctx, unsigned char *out,
if (!ossl_prov_is_running())
return 0;
- if (inl == 0) {
- *outl = 0;
- return 1;
- }
-
if (outsize < inl) {
ERR_raise(ERR_LIB_PROV, PROV_R_OUTPUT_BUFFER_TOO_SMALL);
return 0;
@@ -317,6 +312,24 @@ static int chacha20_poly1305_cipher(void *vctx, unsigned char *out,
return 1;
}
+static int chacha20_poly1305_update(void *vctx, unsigned char *out,
+ size_t *outl, size_t outsize,
+ const unsigned char *in, size_t inl)
+{
+ /*
+ * A zero-length update is a no-op. Only EVP_Cipher() and Final produce or
+ * check the authentication tag.
+ */
+ if (inl == 0) {
+ if (!ossl_prov_is_running())
+ return 0;
+ *outl = 0;
+ return 1;
+ }
+
+ return chacha20_poly1305_cipher(vctx, out, outl, outsize, in, inl);
+}
+
static int chacha20_poly1305_final(void *vctx, unsigned char *out, size_t *outl,
size_t outsize)
{
diff --git a/deps/openssl/openssl/providers/implementations/ciphers/cipher_chacha20_poly1305_hw.c b/deps/openssl/openssl/providers/implementations/ciphers/cipher_chacha20_poly1305_hw.c
index 733547a7e73..1bd0d6a5fc8 100644
--- a/deps/openssl/openssl/providers/implementations/ciphers/cipher_chacha20_poly1305_hw.c
+++ b/deps/openssl/openssl/providers/implementations/ciphers/cipher_chacha20_poly1305_hw.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2019-2024 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2019-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -301,6 +301,8 @@ static int chacha20_poly1305_aead_cipher(PROV_CIPHER_CTX *bctx,
if (in != NULL) { /* aad or text */
if (out == NULL) { /* aad */
+ if (ctx->len.text != 0)
+ goto err;
Poly1305_Update(poly, in, inl);
ctx->len.aad += inl;
ctx->aad = 1;
diff --git a/deps/openssl/openssl/providers/implementations/ciphers/ciphercommon_ccm.c b/deps/openssl/openssl/providers/implementations/ciphers/ciphercommon_ccm.c
index 2b5bddddeb7..7a70b1b0999 100644
--- a/deps/openssl/openssl/providers/implementations/ciphers/ciphercommon_ccm.c
+++ b/deps/openssl/openssl/providers/implementations/ciphers/ciphercommon_ccm.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2019-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -288,13 +288,19 @@ int ossl_ccm_stream_final(void *vctx, unsigned char *out, size_t *outl,
size_t outsize)
{
PROV_CCM_CTX *ctx = (PROV_CCM_CTX *)vctx;
- int i;
+ unsigned char dummy_in = 0, dummy_out = 0;
if (!ossl_prov_is_running())
return 0;
- i = ccm_cipher_internal(ctx, out, outl, NULL, 0);
- if (i <= 0)
+ /*
+ * Encryption sets tag_set after processing the payload, while successful
+ * decryption clears iv_set. Use those transitions to avoid processing an
+ * operation twice.
+ */
+ if (!ctx->key_set
+ || (ctx->iv_set && (!ctx->enc || !ctx->tag_set)
+ && ccm_cipher_internal(ctx, &dummy_out, outl, &dummy_in, 0) <= 0))
return 0;
*outl = 0;
@@ -309,6 +315,9 @@ int ossl_ccm_cipher(void *vctx, unsigned char *out, size_t *outl, size_t outsize
if (!ossl_prov_is_running())
return 0;
+ if (in == NULL)
+ return ossl_ccm_stream_final(vctx, out, outl, outsize);
+
if (outsize < inl) {
ERR_raise(ERR_LIB_PROV, PROV_R_OUTPUT_BUFFER_TOO_SMALL);
return 0;
diff --git a/deps/openssl/openssl/providers/implementations/encode_decode/encode_key2ms.c b/deps/openssl/openssl/providers/implementations/encode_decode/encode_key2ms.c
index 362a806589e..2c9bff42bbb 100644
--- a/deps/openssl/openssl/providers/implementations/encode_decode/encode_key2ms.c
+++ b/deps/openssl/openssl/providers/implementations/encode_decode/encode_key2ms.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2020-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2020-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -65,10 +65,11 @@ static int write_pvk(struct key2ms_ctx_st *ctx, OSSL_CORE_BIO *cout,
return ret;
}
+static OSSL_FUNC_encoder_newctx_fn key2ms_newctx;
static OSSL_FUNC_encoder_freectx_fn key2ms_freectx;
static OSSL_FUNC_encoder_does_selection_fn key2ms_does_selection;
-static struct key2ms_ctx_st *key2ms_newctx(void *provctx)
+static void *key2ms_newctx(void *provctx)
{
struct key2ms_ctx_st *ctx = OPENSSL_zalloc(sizeof(*ctx));
diff --git a/deps/openssl/openssl/providers/implementations/kem/ml_kem_kem.c b/deps/openssl/openssl/providers/implementations/kem/ml_kem_kem.c
index 722eadf2289..14c670784c5 100644
--- a/deps/openssl/openssl/providers/implementations/kem/ml_kem_kem.c
+++ b/deps/openssl/openssl/providers/implementations/kem/ml_kem_kem.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2024-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2024-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -125,6 +125,7 @@ static int ml_kem_set_ctx_params(void *vctx, const OSSL_PARAM params[])
/* Possibly, but much less likely wrong type */
ERR_raise(ERR_LIB_PROV, PROV_R_INVALID_SEED_LENGTH);
+ OPENSSL_cleanse((void *)ctx->entropy_buf, sizeof(ctx->entropy_buf));
ctx->entropy = NULL;
return 0;
}
diff --git a/deps/openssl/openssl/providers/implementations/kem/mlx_kem.c b/deps/openssl/openssl/providers/implementations/kem/mlx_kem.c
index 376b3342ddf..a917fa93d5c 100644
--- a/deps/openssl/openssl/providers/implementations/kem/mlx_kem.c
+++ b/deps/openssl/openssl/providers/implementations/kem/mlx_kem.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2024-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2024-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -118,7 +118,7 @@ static int mlx_kem_encapsulate(void *vctx, unsigned char *ctext, size_t *clen,
if (!mlx_kem_have_pubkey(key)) {
ERR_raise(ERR_LIB_PROV, PROV_R_MISSING_KEY);
- goto end;
+ return 0;
}
encap_clen = key->minfo->ctext_bytes + key->xinfo->pubkey_bytes;
encap_slen = ML_KEM_SHARED_SECRET_BYTES + key->xinfo->shsec_bytes;
@@ -236,6 +236,10 @@ static int mlx_kem_encapsulate(void *vctx, unsigned char *ctext, size_t *clen,
ret = 1;
end:
+ /* Erase any partial shared secret on failure */
+ if (ret == 0)
+ OPENSSL_cleanse(shsec,
+ ML_KEM_SHARED_SECRET_BYTES + key->xinfo->shsec_bytes);
EVP_PKEY_free(xkey);
EVP_PKEY_CTX_free(ctx);
return ret;
@@ -324,6 +328,10 @@ static int mlx_kem_decapsulate(void *vctx, uint8_t *shsec, size_t *slen,
ret = 1;
end:
+ /* Erase any partial shared secret on failure */
+ if (ret == 0)
+ OPENSSL_cleanse(shsec,
+ ML_KEM_SHARED_SECRET_BYTES + key->xinfo->shsec_bytes);
EVP_PKEY_CTX_free(ctx);
EVP_PKEY_free(xkey);
return ret;
diff --git a/deps/openssl/openssl/providers/implementations/kem/rsa_kem.c b/deps/openssl/openssl/providers/implementations/kem/rsa_kem.c
index 78925809d98..47f0c80c944 100644
--- a/deps/openssl/openssl/providers/implementations/kem/rsa_kem.c
+++ b/deps/openssl/openssl/providers/implementations/kem/rsa_kem.c
@@ -131,6 +131,7 @@ static int rsakem_init(void *vprsactx, void *vrsa,
const char *desc)
{
PROV_RSA_CTX *prsactx = (PROV_RSA_CTX *)vprsactx;
+ const BIGNUM *e = NULL;
int protect = 0;
if (!ossl_prov_is_running())
@@ -146,6 +147,18 @@ static int rsakem_init(void *vprsactx, void *vrsa,
RSA_free(prsactx->rsa);
prsactx->rsa = vrsa;
+ /*
+ * Reject the trivial public exponent e <= 1. The FIPS module enforces the
+ * full SP 800-56B §6.4.1.1 constraints via ossl_fips_ind_rsa_key_check()
+ * below; non-FIPS callers wanting the complete §6.4.2 vetting can use
+ * EVP_PKEY_public_check().
+ */
+ RSA_get0_key(prsactx->rsa, NULL, &e, NULL);
+ if (e == NULL || BN_cmp(e, BN_value_one()) <= 0) {
+ ERR_raise(ERR_LIB_PROV, PROV_R_INVALID_KEY);
+ return 0;
+ }
+
OSSL_FIPS_IND_SET_APPROVED(prsactx)
if (!rsakem_set_ctx_params(prsactx, params))
return 0;
@@ -389,6 +402,44 @@ static int rsasve_recover(PROV_RSA_CTX *prsactx,
return 0;
}
+#ifndef FIPS_MODULE
+ /*
+ * Reject clearly degenerate ciphertexts, c in {0, 1, n-1}.
+ *
+ * SP 800-56B Rev 2, 7.1.2.1 requires RSADP to enforce 1 < c < n-1. In a
+ * FIPS build that bound is applied by the RSADP primitive itself (see
+ * crypto/rsa/rsa_ossl.c, guarded by FIPS_MODULE), where it is also needed
+ * for KTS-OAEP; the primitive does not apply it in a non-FIPS build, so
+ * enforce it here for RSASVE. Raise the same errors as the primitive so
+ * the behaviour matches in both builds; keep the two sites in step.
+ */
+ {
+ const BIGNUM *n = RSA_get0_n(prsactx->rsa);
+ BIGNUM *c = BN_new();
+ BIGNUM *nminus1 = BN_new();
+ int reason = 0;
+
+ if (n == NULL || c == NULL || nminus1 == NULL
+ || BN_bin2bn(in, (int)inlen, c) == NULL
+ || BN_copy(nminus1, n) == NULL
+ || !BN_sub_word(nminus1, 1)) {
+ BN_free(c);
+ BN_free(nminus1);
+ return 0;
+ }
+ if (BN_ucmp(c, BN_value_one()) <= 0)
+ reason = RSA_R_DATA_TOO_SMALL;
+ else if (BN_ucmp(c, nminus1) >= 0)
+ reason = RSA_R_DATA_TOO_LARGE_FOR_MODULUS;
+ BN_free(c);
+ BN_free(nminus1);
+ if (reason != 0) {
+ ERR_raise(ERR_LIB_RSA, reason);
+ return 0;
+ }
+ }
+#endif
+
/* Step (3): out = RSADP((n,d), in) */
ret = RSA_private_decrypt(inlen, in, out, prsactx->rsa, RSA_NO_PADDING);
if (ret > 0 && outlen != NULL)
diff --git a/deps/openssl/openssl/providers/implementations/keymgmt/dh_kmgmt.c b/deps/openssl/openssl/providers/implementations/keymgmt/dh_kmgmt.c
index 8a1afe7907b..eac99a4fed0 100644
--- a/deps/openssl/openssl/providers/implementations/keymgmt/dh_kmgmt.c
+++ b/deps/openssl/openssl/providers/implementations/keymgmt/dh_kmgmt.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2019-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -793,10 +793,8 @@ static void *dh_gen(void *genctx, OSSL_CALLBACK *osslcb, void *cbarg)
#ifdef FIPS_MODULE
if (!ossl_fips_self_testing()) {
ret = ossl_dh_check_pairwise(dh, 0);
- if (ret <= 0) {
- ossl_set_error_state(OSSL_SELF_TEST_TYPE_PCT);
+ if (ret <= 0)
goto end;
- }
}
#endif /* FIPS_MODULE */
}
diff --git a/deps/openssl/openssl/providers/implementations/keymgmt/ec_kmgmt.c b/deps/openssl/openssl/providers/implementations/keymgmt/ec_kmgmt.c
index 305dc3a6b83..1d740307f6a 100644
--- a/deps/openssl/openssl/providers/implementations/keymgmt/ec_kmgmt.c
+++ b/deps/openssl/openssl/providers/implementations/keymgmt/ec_kmgmt.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2020-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2020-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -847,8 +847,8 @@ static const OSSL_PARAM sm2_known_gettable_params[] = {
OSSL_PARAM_int(OSSL_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS, NULL),
EC_IMEXPORTABLE_DOM_PARAMETERS,
EC_IMEXPORTABLE_PUBLIC_KEY,
- OSSL_PARAM_octet_string(OSSL_PKEY_PARAM_EC_PUB_X, NULL, 0),
- OSSL_PARAM_octet_string(OSSL_PKEY_PARAM_EC_PUB_Y, NULL, 0),
+ OSSL_PARAM_BN(OSSL_PKEY_PARAM_EC_PUB_X, NULL, 0),
+ OSSL_PARAM_BN(OSSL_PKEY_PARAM_EC_PUB_Y, NULL, 0),
EC_IMEXPORTABLE_PRIVATE_KEY,
OSSL_PARAM_END
};
@@ -1298,20 +1298,6 @@ static void *ec_gen(void *genctx, OSSL_CALLBACK *osslcb, void *cbarg)
if (gctx->group_check != NULL)
ret = ret && ossl_ec_set_check_group_type_from_name(ec, gctx->group_check);
-#ifdef FIPS_MODULE
- if (ret > 0
- && !ossl_fips_self_testing()
- && EC_KEY_get0_public_key(ec) != NULL
- && EC_KEY_get0_private_key(ec) != NULL
- && EC_KEY_get0_group(ec) != NULL) {
- BN_CTX *bnctx = BN_CTX_new_ex(ossl_ec_key_get_libctx(ec));
-
- ret = bnctx != NULL && ossl_ec_key_pairwise_check(ec, bnctx);
- BN_CTX_free(bnctx);
- if (ret <= 0)
- ossl_set_error_state(OSSL_SELF_TEST_TYPE_PCT);
- }
-#endif /* FIPS_MODULE */
if (ret)
return ec;
diff --git a/deps/openssl/openssl/providers/implementations/keymgmt/ecx_kmgmt.c b/deps/openssl/openssl/providers/implementations/keymgmt/ecx_kmgmt.c
index 54af7a6a395..42a0b9d7aa6 100644
--- a/deps/openssl/openssl/providers/implementations/keymgmt/ecx_kmgmt.c
+++ b/deps/openssl/openssl/providers/implementations/keymgmt/ecx_kmgmt.c
@@ -811,7 +811,6 @@ static void *ed25519_gen(void *genctx, OSSL_CALLBACK *osslcb, void *cbarg)
if (!key || ((gctx->selection & OSSL_KEYMGMT_SELECT_KEYPAIR) == 0))
return key;
if (ecd_fips140_pairwise_test(key, ECX_KEY_TYPE_ED25519, 1) != 1) {
- ossl_set_error_state(OSSL_SELF_TEST_TYPE_PCT);
ossl_ecx_key_free(key);
return NULL;
}
@@ -844,7 +843,6 @@ static void *ed448_gen(void *genctx, OSSL_CALLBACK *osslcb, void *cbarg)
if (!key || ((gctx->selection & OSSL_KEYMGMT_SELECT_KEYPAIR) == 0))
return key;
if (ecd_fips140_pairwise_test(key, ECX_KEY_TYPE_ED448, 1) != 1) {
- ossl_set_error_state(OSSL_SELF_TEST_TYPE_PCT);
ossl_ecx_key_free(key);
return NULL;
}
diff --git a/deps/openssl/openssl/providers/implementations/keymgmt/ml_dsa_kmgmt.c b/deps/openssl/openssl/providers/implementations/keymgmt/ml_dsa_kmgmt.c
index 5ebeaae662b..70e943ff5a0 100644
--- a/deps/openssl/openssl/providers/implementations/keymgmt/ml_dsa_kmgmt.c
+++ b/deps/openssl/openssl/providers/implementations/keymgmt/ml_dsa_kmgmt.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2024-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2024-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -96,6 +96,7 @@ static int ml_dsa_pairwise_test(const ML_DSA_KEY *key)
err:
OSSL_SELF_TEST_onend(st, ret);
OSSL_SELF_TEST_free(st);
+ OPENSSL_cleanse(sig, sizeof(sig));
return ret;
}
#endif
@@ -283,10 +284,8 @@ static int ml_dsa_import(void *keydata, int selection, const OSSL_PARAM params[]
#ifdef FIPS_MODULE
if (res > 0) {
res = ml_dsa_pairwise_test(key);
- if (!res) {
+ if (!res)
ossl_ml_dsa_key_reset(key);
- ossl_set_error_state(OSSL_SELF_TEST_TYPE_PCT_IMPORT);
- }
}
#endif /* FIPS_MODULE */
return res;
@@ -483,10 +482,8 @@ static void *ml_dsa_gen(void *genctx, int evp_type)
goto err;
}
#ifdef FIPS_MODULE
- if (!ml_dsa_pairwise_test(key)) {
- ossl_set_error_state(OSSL_SELF_TEST_TYPE_PCT);
+ if (!ml_dsa_pairwise_test(key))
goto err;
- }
#endif
return key;
err:
@@ -541,7 +538,7 @@ static void ml_dsa_gen_cleanup(void *genctx)
if (gctx == NULL)
return;
- OPENSSL_cleanse(gctx->entropy, gctx->entropy_len);
+ OPENSSL_cleanse(gctx->entropy, sizeof(gctx->entropy));
OPENSSL_free(gctx->propq);
OPENSSL_free(gctx);
}
diff --git a/deps/openssl/openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c b/deps/openssl/openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c
index d95f021eef7..1422a3775c7 100644
--- a/deps/openssl/openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c
+++ b/deps/openssl/openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c
@@ -109,10 +109,6 @@ static int ml_kem_pairwise_test(const ML_KEM_KEY *key, int key_flags)
memset(out, 0, sizeof(out));
- /*
- * The pairwise test is skipped unless either RANDOM or FIXED entropy PCTs
- * are enabled.
- */
if (key_flags & ML_KEM_KEY_RANDOM_PCT) {
operation_result = ossl_ml_kem_encap_rand(ctext, v->ctext_bytes,
secret, sizeof(secret), key);
@@ -147,7 +143,10 @@ static int ml_kem_pairwise_test(const ML_KEM_KEY *key, int key_flags)
v->algorithm_name);
}
#endif
- OPENSSL_free(ctext);
+ OPENSSL_cleanse((void *)entropy, sizeof(entropy));
+ OPENSSL_cleanse((void *)secret, sizeof(secret));
+ OPENSSL_cleanse((void *)out, sizeof(out));
+ OPENSSL_clear_free(ctext, v->ctext_bytes);
return ret;
}
@@ -237,7 +236,7 @@ static int ml_kem_export(void *vkey, int selection, OSSL_CALLBACK *param_cb,
{
ML_KEM_KEY *key = vkey;
OSSL_PARAM_BLD *tmpl = NULL;
- OSSL_PARAM *params = NULL;
+ OSSL_PARAM *params = NULL, *p;
const ML_KEM_VINFO *v;
uint8_t *pubenc = NULL, *prvenc = NULL, *seedenc = NULL;
size_t prvlen = 0, seedlen = 0;
@@ -316,13 +315,19 @@ static int ml_kem_export(void *vkey, int selection, OSSL_CALLBACK *param_cb,
goto err;
ret = param_cb(params, cbarg);
+ /*
+ * OSSL_PARAM_free() only wipes the secure-heap data block,
+ * so wipe the key material copies held in the params first.
+ */
+ for (p = params; p->key != NULL; p++)
+ OPENSSL_cleanse(p->data, p->data_size);
OSSL_PARAM_free(params);
err:
OSSL_PARAM_BLD_free(tmpl);
OPENSSL_secure_clear_free(seedenc, seedlen);
OPENSSL_secure_clear_free(prvenc, prvlen);
- OPENSSL_free(pubenc);
+ OPENSSL_clear_free(pubenc, v->pubkey_bytes);
return ret;
}
@@ -477,9 +482,6 @@ static int ml_kem_import(void *vkey, int selection, const OSSL_PARAM params[])
res = ml_kem_key_fromdata(key, params, include_private);
if (res > 0 && include_private
&& !ml_kem_pairwise_test(key, key->prov_flags)) {
-#ifdef FIPS_MODULE
- ossl_set_error_state(OSSL_SELF_TEST_TYPE_PCT_IMPORT);
-#endif
ossl_ml_kem_key_reset(key);
res = 0;
}
@@ -542,12 +544,15 @@ static void *ml_kem_load(const void *reference, size_t reference_sz)
if (!ml_kem_pairwise_test(key, key->prov_flags))
goto err;
}
- OPENSSL_free(encoded_dk);
+ OPENSSL_clear_free(encoded_dk, key->vinfo->prvkey_bytes);
+ OPENSSL_cleanse((void *)seed, sizeof(seed));
return key;
}
err:
- OPENSSL_free(encoded_dk);
+ if (key != NULL && key->vinfo != NULL)
+ OPENSSL_clear_free(encoded_dk, key->vinfo->prvkey_bytes);
+ OPENSSL_cleanse((void *)seed, sizeof(seed));
ossl_ml_kem_key_free(key);
return NULL;
}
@@ -708,6 +713,7 @@ static int ml_kem_gen_set_params(void *vgctx, const OSSL_PARAM params[])
/* Possibly, but less likely wrong data type */
ERR_raise(ERR_LIB_PROV, PROV_R_INVALID_SEED_LENGTH);
+ OPENSSL_cleanse((void *)gctx->seedbuf, sizeof(gctx->seedbuf));
gctx->seed = NULL;
return 0;
}
@@ -768,8 +774,10 @@ static void *ml_kem_gen(void *vgctx, OSSL_CALLBACK *osslcb, void *cbarg)
if ((gctx->selection & OSSL_KEYMGMT_SELECT_KEYPAIR) == 0)
return key;
- if (seed != NULL && !ossl_ml_kem_set_seed(seed, ML_KEM_SEED_BYTES, key))
+ if (seed != NULL && !ossl_ml_kem_set_seed(seed, ML_KEM_SEED_BYTES, key)) {
+ ossl_ml_kem_key_free(key);
return NULL;
+ }
genok = ossl_ml_kem_genkey(nopub, 0, key);
/* Erase the single-use seed */
@@ -780,7 +788,6 @@ static void *ml_kem_gen(void *vgctx, OSSL_CALLBACK *osslcb, void *cbarg)
if (genok) {
#ifdef FIPS_MODULE
if (!ml_kem_pairwise_test(key, ML_KEM_KEY_FIXED_PCT)) {
- ossl_set_error_state(OSSL_SELF_TEST_TYPE_PCT);
ossl_ml_kem_key_free(key);
return NULL;
}
diff --git a/deps/openssl/openssl/providers/implementations/keymgmt/mlx_kmgmt.c b/deps/openssl/openssl/providers/implementations/keymgmt/mlx_kmgmt.c
index 5d1902ce637..75267f88e76 100644
--- a/deps/openssl/openssl/providers/implementations/keymgmt/mlx_kmgmt.c
+++ b/deps/openssl/openssl/providers/implementations/keymgmt/mlx_kmgmt.c
@@ -245,7 +245,7 @@ static int mlx_kem_export(void *vkey, int selection, OSSL_CALLBACK *param_cb,
{
MLX_KEY *key = vkey;
OSSL_PARAM_BLD *tmpl = NULL;
- OSSL_PARAM *params = NULL;
+ OSSL_PARAM *params = NULL, *p;
size_t publen;
size_t prvlen;
int ret = 0;
@@ -307,12 +307,18 @@ static int mlx_kem_export(void *vkey, int selection, OSSL_CALLBACK *param_cb,
goto err;
ret = param_cb(params, cbarg);
+ /*
+ * OSSL_PARAM_free() only wipes the secure-heap data block,
+ * so wipe the key material copies held in the params first.
+ */
+ for (p = params; p->key != NULL; p++)
+ OPENSSL_cleanse(p->data, p->data_size);
OSSL_PARAM_free(params);
err:
OSSL_PARAM_BLD_free(tmpl);
OPENSSL_secure_clear_free(sub_arg.prvenc, prvlen);
- OPENSSL_free(sub_arg.pubenc);
+ OPENSSL_clear_free(sub_arg.pubenc, publen);
return ret;
}
@@ -562,12 +568,18 @@ static int mlx_kem_get_params(void *vkey, OSSL_PARAM params[])
selection |= OSSL_KEYMGMT_SELECT_DOMAIN_PARAMETERS;
/* Extract sub-component key material */
- if (!export_sub(&sub_arg, selection, key))
- return 0;
-
- if ((pub != NULL && sub_arg.pubcount != 2)
- || (prv != NULL && sub_arg.prvcount != 2))
+ if (!export_sub(&sub_arg, selection, key)
+ || (pub != NULL && sub_arg.pubcount != 2)
+ || (prv != NULL && sub_arg.prvcount != 2)) {
+ /* Erase any partial key material on failure */
+ if (sub_arg.pubenc != NULL)
+ OPENSSL_cleanse(sub_arg.pubenc,
+ key->minfo->pubkey_bytes + key->xinfo->pubkey_bytes);
+ if (sub_arg.prvenc != NULL)
+ OPENSSL_cleanse(sub_arg.prvenc,
+ key->minfo->prvkey_bytes + key->xinfo->prvkey_bytes);
return 0;
+ }
return 1;
}
diff --git a/deps/openssl/openssl/providers/implementations/keymgmt/slh_dsa_kmgmt.c b/deps/openssl/openssl/providers/implementations/keymgmt/slh_dsa_kmgmt.c
index 8a676213903..8799df6be6d 100644
--- a/deps/openssl/openssl/providers/implementations/keymgmt/slh_dsa_kmgmt.c
+++ b/deps/openssl/openssl/providers/implementations/keymgmt/slh_dsa_kmgmt.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2024-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2024-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -223,7 +223,7 @@ static int slh_dsa_export(void *keydata, int selection, OSSL_CALLBACK *param_cb,
{
SLH_DSA_KEY *key = keydata;
OSSL_PARAM_BLD *tmpl;
- OSSL_PARAM *params = NULL;
+ OSSL_PARAM *params = NULL, *p;
int ret = 0;
if (!ossl_prov_is_running() || key == NULL)
@@ -244,6 +244,12 @@ static int slh_dsa_export(void *keydata, int selection, OSSL_CALLBACK *param_cb,
goto err;
ret = param_cb(params, cbarg);
+ /*
+ * OSSL_PARAM_free() only wipes the secure-heap data block,
+ * so wipe the key material copies held in the params first.
+ */
+ for (p = params; p->key != NULL; p++)
+ OPENSSL_cleanse(p->data, p->data_size);
OSSL_PARAM_free(params);
err:
OSSL_PARAM_BLD_free(tmpl);
@@ -298,7 +304,7 @@ static int slh_dsa_fips140_pairwise_test(const SLH_DSA_KEY *key,
uint8_t msg[16] = { 0 };
size_t msg_len = sizeof(msg);
uint8_t *sig = NULL;
- size_t sig_len;
+ size_t sig_len = 0;
OSSL_LIB_CTX *lib_ctx;
int alloc_ctx = 0;
@@ -341,7 +347,7 @@ static int slh_dsa_fips140_pairwise_test(const SLH_DSA_KEY *key,
err:
if (alloc_ctx)
ossl_slh_dsa_hash_ctx_free(ctx);
- OPENSSL_free(sig);
+ OPENSSL_clear_free(sig, sig_len);
OSSL_SELF_TEST_onend(st, ret);
OSSL_SELF_TEST_free(st);
return ret;
@@ -366,10 +372,8 @@ static void *slh_dsa_gen(void *genctx, const char *alg)
gctx->entropy, gctx->entropy_len))
goto err;
#ifdef FIPS_MODULE
- if (!slh_dsa_fips140_pairwise_test(key, ctx)) {
- ossl_set_error_state(OSSL_SELF_TEST_TYPE_PCT);
+ if (!slh_dsa_fips140_pairwise_test(key, ctx))
goto err;
- }
#endif /* FIPS_MODULE */
ossl_slh_dsa_hash_ctx_free(ctx);
return key;
@@ -428,7 +432,7 @@ static void slh_dsa_gen_cleanup(void *genctx)
if (gctx == NULL)
return;
- OPENSSL_cleanse(gctx->entropy, gctx->entropy_len);
+ OPENSSL_cleanse(gctx->entropy, sizeof(gctx->entropy));
OPENSSL_free(gctx->propq);
OPENSSL_free(gctx);
}
diff --git a/deps/openssl/openssl/providers/implementations/macs/cmac_prov.c b/deps/openssl/openssl/providers/implementations/macs/cmac_prov.c
index 58a84277623..14542c6716f 100644
--- a/deps/openssl/openssl/providers/implementations/macs/cmac_prov.c
+++ b/deps/openssl/openssl/providers/implementations/macs/cmac_prov.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2018-2024 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2018-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -275,7 +275,7 @@ static int cmac_set_ctx_params(void *vmacctx, const OSSL_PARAM params[])
&& !EVP_CIPHER_is_a(cipher, "AES-192-CBC")
&& !EVP_CIPHER_is_a(cipher, "AES-128-CBC")
&& !EVP_CIPHER_is_a(cipher, "DES-EDE3-CBC")) {
- ERR_raise(ERR_LIB_PROV, EVP_R_UNSUPPORTED_CIPHER);
+ ERR_raise(ERR_LIB_PROV, PROV_R_NOT_SUPPORTED);
return 0;
}
}
diff --git a/deps/openssl/openssl/providers/implementations/macs/poly1305_prov.c b/deps/openssl/openssl/providers/implementations/macs/poly1305_prov.c
index 22ff0a28373..69d4444a58d 100644
--- a/deps/openssl/openssl/providers/implementations/macs/poly1305_prov.c
+++ b/deps/openssl/openssl/providers/implementations/macs/poly1305_prov.c
@@ -82,7 +82,7 @@ static size_t poly1305_size(void)
static int poly1305_setkey(struct poly1305_data_st *ctx,
const unsigned char *key, size_t keylen)
{
- if (keylen != POLY1305_KEY_SIZE) {
+ if (key == NULL || keylen != POLY1305_KEY_SIZE) {
ERR_raise(ERR_LIB_PROV, PROV_R_INVALID_KEY_LENGTH);
return 0;
}
@@ -111,6 +111,10 @@ static int poly1305_update(void *vmacctx, const unsigned char *data,
{
struct poly1305_data_st *ctx = vmacctx;
+ if (!ctx->key_set) {
+ ERR_raise(ERR_LIB_PROV, PROV_R_NO_KEY_SET);
+ return 0;
+ }
ctx->updated = 1;
if (datalen == 0)
return 1;
diff --git a/deps/openssl/openssl/providers/implementations/rands/drbg_ctr.c b/deps/openssl/openssl/providers/implementations/rands/drbg_ctr.c
index d42f0858571..57da1cfdf33 100644
--- a/deps/openssl/openssl/providers/implementations/rands/drbg_ctr.c
+++ b/deps/openssl/openssl/providers/implementations/rands/drbg_ctr.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2011-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2011-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -588,6 +588,18 @@ static int drbg_ctr_init(PROV_DRBG *drbg)
drbg->strength = keylen * 8;
drbg->seedlen = keylen + 16;
+#ifdef FIPS_MODULE
+ /*
+ * FIPS requires that we use a derivation function since our
+ * entropy source is outside the fips boundary
+ */
+ if (ctr->use_df == 0) {
+ ERR_raise_data(ERR_LIB_PROV, PROV_R_DERIVATION_FUNCTION_INIT_FAILED,
+ "FIPS requires the use of a derivation function");
+ goto err;
+ }
+#endif
+
if (ctr->use_df) {
/* df initialisation */
static const unsigned char df_key[32] = {
@@ -713,7 +725,6 @@ static int drbg_ctr_set_ctx_params_locked(void *vctx, const OSSL_PARAM params[])
PROV_DRBG *ctx = (PROV_DRBG *)vctx;
PROV_DRBG_CTR *ctr = (PROV_DRBG_CTR *)ctx->data;
OSSL_LIB_CTX *libctx = PROV_LIBCTX_OF(ctx->provctx);
- OSSL_PROVIDER *prov = NULL;
const OSSL_PARAM *p;
char *ecb;
const char *propquery = NULL;
@@ -731,19 +742,14 @@ static int drbg_ctr_set_ctx_params_locked(void *vctx, const OSSL_PARAM params[])
!= NULL) {
if (p->data_type != OSSL_PARAM_UTF8_STRING)
return 0;
- propquery = (const char *)p->data;
}
- if ((p = OSSL_PARAM_locate_const(params,
- OSSL_PROV_PARAM_CORE_PROV_NAME))
- != NULL) {
- if (p->data_type != OSSL_PARAM_UTF8_STRING)
- return 0;
- if ((prov = ossl_provider_find(libctx,
- (const char *)p->data, 1))
- == NULL)
- return 0;
- }
+#ifndef FIPS_MODULE
+ propquery = "provider=default";
+ if (p != NULL
+ && p->data_type == OSSL_PARAM_UTF8_STRING)
+ propquery = (const char *)p->data;
+#endif
if ((p = OSSL_PARAM_locate_const(params, OSSL_DRBG_PARAM_CIPHER)) != NULL) {
const char *base = (const char *)p->data;
@@ -752,50 +758,33 @@ static int drbg_ctr_set_ctx_params_locked(void *vctx, const OSSL_PARAM params[])
if (p->data_type != OSSL_PARAM_UTF8_STRING
|| p->data_size < ctr_str_len) {
- ossl_provider_free(prov);
return 0;
}
if (OPENSSL_strcasecmp("CTR", base + p->data_size - ctr_str_len) != 0) {
ERR_raise(ERR_LIB_PROV, PROV_R_REQUIRE_CTR_MODE_CIPHER);
- ossl_provider_free(prov);
return 0;
}
if ((ecb = OPENSSL_strndup(base, p->data_size)) == NULL) {
- ossl_provider_free(prov);
return 0;
}
strcpy(ecb + p->data_size - ecb_str_len, "ECB");
EVP_CIPHER_free(ctr->cipher_ecb);
EVP_CIPHER_free(ctr->cipher_ctr);
+ ctr->cipher_ctr = NULL;
+ ctr->cipher_ecb = NULL;
/*
* Try to fetch algorithms from our own provider code, fallback
* to generic fetch only if that fails
*/
- (void)ERR_set_mark();
- ctr->cipher_ctr = evp_cipher_fetch_from_prov(prov, base, NULL);
- if (ctr->cipher_ctr == NULL) {
- (void)ERR_pop_to_mark();
- ctr->cipher_ctr = EVP_CIPHER_fetch(libctx, base, propquery);
- } else {
- (void)ERR_clear_last_mark();
- }
- (void)ERR_set_mark();
- ctr->cipher_ecb = evp_cipher_fetch_from_prov(prov, ecb, NULL);
- if (ctr->cipher_ecb == NULL) {
- (void)ERR_pop_to_mark();
- ctr->cipher_ecb = EVP_CIPHER_fetch(libctx, ecb, propquery);
- } else {
- (void)ERR_clear_last_mark();
- }
+ ctr->cipher_ctr = EVP_CIPHER_fetch(libctx, base, propquery);
+ ctr->cipher_ecb = EVP_CIPHER_fetch(libctx, ecb, propquery);
OPENSSL_free(ecb);
if (ctr->cipher_ctr == NULL || ctr->cipher_ecb == NULL) {
ERR_raise(ERR_LIB_PROV, PROV_R_UNABLE_TO_FIND_CIPHERS);
- ossl_provider_free(prov);
return 0;
}
cipher_init = 1;
}
- ossl_provider_free(prov);
if (cipher_init && !drbg_ctr_init(ctx))
return 0;
diff --git a/deps/openssl/openssl/providers/implementations/rands/drbg_hash.c b/deps/openssl/openssl/providers/implementations/rands/drbg_hash.c
index 92eb443c6e8..504af87d5e1 100644
--- a/deps/openssl/openssl/providers/implementations/rands/drbg_hash.c
+++ b/deps/openssl/openssl/providers/implementations/rands/drbg_hash.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2011-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2011-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -508,23 +508,22 @@ static const OSSL_PARAM *drbg_hash_gettable_ctx_params(ossl_unused void *vctx,
static int drbg_fetch_digest_from_prov(const OSSL_PARAM params[],
OSSL_LIB_CTX *libctx,
- EVP_MD **digest)
+ EVP_MD **digest,
+ const char *propq)
{
- OSSL_PROVIDER *prov = NULL;
const OSSL_PARAM *p;
EVP_MD *md = NULL;
int ret = 0;
+ const char *propquery = NULL;
- if (digest == NULL)
- return 0;
+#ifndef FIPS_MODULE
+ if (propq == NULL)
+ propquery = "provider=default";
+ else
+ propquery = propq;
+#endif
- if ((p = OSSL_PARAM_locate_const(params,
- OSSL_PROV_PARAM_CORE_PROV_NAME))
- == NULL)
- return 0;
- if (p->data_type != OSSL_PARAM_UTF8_STRING)
- return 0;
- if ((prov = ossl_provider_find(libctx, (const char *)p->data, 1)) == NULL)
+ if (digest == NULL)
return 0;
p = OSSL_PARAM_locate_const(params, OSSL_ALG_PARAM_DIGEST);
@@ -536,15 +535,13 @@ static int drbg_fetch_digest_from_prov(const OSSL_PARAM params[],
if (p->data_type != OSSL_PARAM_UTF8_STRING)
goto done;
- md = evp_digest_fetch_from_prov(prov, (const char *)p->data, NULL);
+ md = EVP_MD_fetch(libctx, p->data, propquery);
if (md) {
EVP_MD_free(*digest);
*digest = md;
ret = 1;
}
-
done:
- ossl_provider_free(prov);
return ret;
}
@@ -556,15 +553,24 @@ static int drbg_hash_set_ctx_params_locked(void *vctx, const OSSL_PARAM params[]
EVP_MD *prov_md = NULL;
const EVP_MD *md;
int md_size;
+ const OSSL_PARAM *p;
if (!OSSL_FIPS_IND_SET_CTX_PARAM(ctx, OSSL_FIPS_IND_SETTABLE0, params,
OSSL_DRBG_PARAM_FIPS_DIGEST_CHECK))
return 0;
/* try to fetch digest from provider */
+ p = OSSL_PARAM_locate_const(params, OSSL_DRBG_PARAM_PROPERTIES);
(void)ERR_set_mark();
- if (!drbg_fetch_digest_from_prov(params, libctx, &prov_md)) {
+ if (!drbg_fetch_digest_from_prov(params, libctx, &prov_md,
+ (p != NULL && p->data_type == OSSL_PARAM_UTF8_STRING) ? p->data : NULL)) {
(void)ERR_pop_to_mark();
+ /*
+ * Its possible for drbg_fetch_digest_from_prov to return 0 after having set prov_md
+ * so we need to ensure we free it here
+ */
+ EVP_MD_free(prov_md);
+
/* fall back to full implementation search */
if (!ossl_prov_digest_load_from_params(&hash->digest, params, libctx))
return 0;
diff --git a/deps/openssl/openssl/providers/implementations/rands/drbg_hmac.c b/deps/openssl/openssl/providers/implementations/rands/drbg_hmac.c
index d3191e55a92..87050764fe4 100644
--- a/deps/openssl/openssl/providers/implementations/rands/drbg_hmac.c
+++ b/deps/openssl/openssl/providers/implementations/rands/drbg_hmac.c
@@ -412,27 +412,25 @@ static const OSSL_PARAM *drbg_hmac_gettable_ctx_params(ossl_unused void *vctx,
static int drbg_fetch_algs_from_prov(const OSSL_PARAM params[],
OSSL_LIB_CTX *libctx,
EVP_MAC_CTX **macctx,
- EVP_MD **digest)
+ EVP_MD **digest, const char *propq)
{
- OSSL_PROVIDER *prov = NULL;
const OSSL_PARAM *p;
const char *digest_name = NULL;
const char *hmac_name = NULL;
EVP_MD *md = NULL;
EVP_MAC *mac = NULL;
- OSSL_PARAM mac_params[2], *mp = mac_params;
+ OSSL_PARAM mac_params[3], *mp = mac_params;
int ret = 0;
+ const char *propquery = NULL;
- if (macctx == NULL || digest == NULL)
- return 0;
+#ifndef FIPS_MODULE
+ if (propq == NULL)
+ propquery = "provider=default";
+ else
+ propquery = propq;
+#endif
- if ((p = OSSL_PARAM_locate_const(params,
- OSSL_PROV_PARAM_CORE_PROV_NAME))
- == NULL)
- return 0;
- if (p->data_type != OSSL_PARAM_UTF8_STRING)
- return 0;
- if ((prov = ossl_provider_find(libctx, (const char *)p->data, 1)) == NULL)
+ if (macctx == NULL || digest == NULL)
return 0;
p = OSSL_PARAM_locate_const(params, OSSL_ALG_PARAM_DIGEST);
@@ -441,7 +439,7 @@ static int drbg_fetch_algs_from_prov(const OSSL_PARAM params[],
ERR_raise(ERR_LIB_PROV, PROV_R_VALUE_ERROR);
goto done;
}
- md = evp_digest_fetch_from_prov(prov, digest_name, NULL);
+ md = EVP_MD_fetch(libctx, p->data, propquery);
if (md) {
EVP_MD_free(*digest);
*digest = md;
@@ -467,12 +465,14 @@ static int drbg_fetch_algs_from_prov(const OSSL_PARAM params[],
EVP_MAC_CTX_free(*macctx);
*macctx = NULL;
- mac = evp_mac_fetch_from_prov(prov, hmac_name, NULL);
+ mac = EVP_MAC_fetch(libctx, hmac_name, propquery);
if (mac) {
*macctx = EVP_MAC_CTX_new(mac);
/* The context holds on to the MAC */
EVP_MAC_free(mac);
*mp++ = OSSL_PARAM_construct_utf8_string(OSSL_MAC_PARAM_DIGEST, (char *)digest_name, 0);
+ if (propquery)
+ *mp++ = OSSL_PARAM_construct_utf8_string(OSSL_MAC_PARAM_PROPERTIES, (char *)propquery, 0);
*mp = OSSL_PARAM_construct_end();
if (!EVP_MAC_CTX_set_params(*macctx, mac_params)) {
ERR_raise(ERR_LIB_PROV, PROV_R_INVALID_MAC);
@@ -484,7 +484,6 @@ static int drbg_fetch_algs_from_prov(const OSSL_PARAM params[],
}
done:
- ossl_provider_free(prov);
return ret;
}
@@ -496,15 +495,23 @@ static int drbg_hmac_set_ctx_params_locked(void *vctx, const OSSL_PARAM params[]
EVP_MD *prov_md = NULL;
const EVP_MD *md;
int md_size;
+ const OSSL_PARAM *p;
if (!OSSL_FIPS_IND_SET_CTX_PARAM(ctx, OSSL_FIPS_IND_SETTABLE0, params,
OSSL_DRBG_PARAM_FIPS_DIGEST_CHECK))
return 0;
/* try to fetch mac and digest from provider */
+ p = OSSL_PARAM_locate_const(params, OSSL_DRBG_PARAM_PROPERTIES);
(void)ERR_set_mark();
- if (!drbg_fetch_algs_from_prov(params, libctx, &hmac->ctx, &prov_md)) {
+ if (!drbg_fetch_algs_from_prov(params, libctx, &hmac->ctx, &prov_md,
+ (p != NULL && p->data_type == OSSL_PARAM_UTF8_STRING) ? p->data : NULL)) {
(void)ERR_pop_to_mark();
+ /*
+ * Its possible for drbg_fetch_algs_from_prov to return 0 and set prov_md here
+ * so we need to free prov_md to be leak free
+ */
+ EVP_MD_free(prov_md);
/* fall back to full implementation search */
if (!ossl_prov_digest_load_from_params(&hmac->digest, params, libctx))
return 0;
diff --git a/deps/openssl/openssl/providers/implementations/rands/seeding/rand_unix.c b/deps/openssl/openssl/providers/implementations/rands/seeding/rand_unix.c
index 80ae8173131..0b8a9ec341d 100644
--- a/deps/openssl/openssl/providers/implementations/rands/seeding/rand_unix.c
+++ b/deps/openssl/openssl/providers/implementations/rands/seeding/rand_unix.c
@@ -1,5 +1,5 @@
/*
- * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -394,7 +394,7 @@ static ssize_t syscall_random(void *buf, size_t buflen)
return getrandom(buf, buflen, 0);
#elif (defined(__FreeBSD__) || defined(__NetBSD__)) && defined(KERN_ARND)
return sysctl_random(buf, buflen);
-#elif defined(__wasi__)
+#elif defined(__wasi__) || defined(__EMSCRIPTEN__)
if (getentropy(buf, buflen) == 0)
return (ssize_t)buflen;
return -1;
diff --git a/deps/openssl/openssl/providers/implementations/rands/test_rng.c b/deps/openssl/openssl/providers/implementations/rands/test_rng.c
index 7942537879f..88e5fb982ae 100644
--- a/deps/openssl/openssl/providers/implementations/rands/test_rng.c
+++ b/deps/openssl/openssl/providers/implementations/rands/test_rng.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2020-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2020-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -15,7 +15,7 @@
#include
#include
#include
-#include
+#include
#include "prov/securitycheck.h"
#include "prov/providercommon.h"
#include "prov/provider_ctx.h"
@@ -305,7 +305,7 @@ static int test_rng_enable_locking(void *vtest)
if (t != NULL && t->lock == NULL) {
t->lock = CRYPTO_THREAD_lock_new();
if (t->lock == NULL) {
- ERR_raise(ERR_LIB_PROV, RAND_R_FAILED_TO_CREATE_LOCK);
+ ERR_raise(ERR_LIB_PROV, PROV_R_FAILED_TO_CREATE_LOCK);
return 0;
}
}
diff --git a/deps/openssl/openssl/providers/implementations/signature/rsa_sig.c b/deps/openssl/openssl/providers/implementations/signature/rsa_sig.c
index 28f3e15b598..4980474ac03 100644
--- a/deps/openssl/openssl/providers/implementations/signature/rsa_sig.c
+++ b/deps/openssl/openssl/providers/implementations/signature/rsa_sig.c
@@ -591,7 +591,7 @@ rsa_signverify_init(PROV_RSA_CTX *prsactx, void *vrsa,
break;
default:
- ERR_raise(ERR_LIB_RSA, PROV_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
+ ERR_raise(ERR_LIB_PROV, PROV_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
return 0;
}
@@ -1015,7 +1015,13 @@ static int rsa_verify_recover(void *vprsactx,
}
ret = RSA_public_decrypt((int)siglen, sig, rout, prsactx->rsa,
prsactx->pad_mode);
- if (ret <= 0) {
+ /*
+ * RSA_public_decrypt() returns -1 on error and otherwise the number
+ * of recovered bytes, which may legitimately be zero for a raw
+ * PKCS#1 v1.5 signature that encodes an empty payload. Treat only
+ * a negative result as an error.
+ */
+ if (ret < 0) {
ERR_raise(ERR_LIB_PROV, ERR_R_RSA_LIB);
return 0;
}
@@ -1947,7 +1953,7 @@ static int rsa_sigalg_signverify_init(void *vprsactx, void *vrsa,
/* PSS is currently not supported as a sigalg */
if (prsactx->pad_mode == RSA_PKCS1_PSS_PADDING) {
- ERR_raise(ERR_LIB_RSA, PROV_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
+ ERR_raise(ERR_LIB_PROV, PROV_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
return 0;
}
diff --git a/deps/openssl/openssl/providers/implementations/signature/slh_dsa_sig.c b/deps/openssl/openssl/providers/implementations/signature/slh_dsa_sig.c
index c6d4e04c1b8..6d43be32f4d 100644
--- a/deps/openssl/openssl/providers/implementations/signature/slh_dsa_sig.c
+++ b/deps/openssl/openssl/providers/implementations/signature/slh_dsa_sig.c
@@ -61,7 +61,7 @@ static void slh_dsa_freectx(void *vctx)
ossl_slh_dsa_hash_ctx_free(ctx->hash_ctx);
OPENSSL_free(ctx->propq);
- OPENSSL_cleanse(ctx->add_random, ctx->add_random_len);
+ OPENSSL_cleanse(ctx->add_random, sizeof(ctx->add_random));
OPENSSL_free(ctx);
}
diff --git a/deps/openssl/openssl/providers/implementations/storemgmt/file_store_any2obj.c b/deps/openssl/openssl/providers/implementations/storemgmt/file_store_any2obj.c
index f5553b97da3..03560ab4902 100644
--- a/deps/openssl/openssl/providers/implementations/storemgmt/file_store_any2obj.c
+++ b/deps/openssl/openssl/providers/implementations/storemgmt/file_store_any2obj.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2020-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2020-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -191,6 +191,10 @@ static int msblob2obj_decode(void *vctx, OSSL_CORE_BIO *cin, int selection,
ok = 0;
mem_want = ossl_blob_length(bitlen, isdss, ispub);
+
+ if (mem_want > BLOB_MAX_LENGTH) {
+ goto next;
+ }
if (!BUF_MEM_grow(mem, mem_len + mem_want)) {
ERR_raise(ERR_LIB_PEM, ERR_R_BUF_LIB);
goto err;
diff --git a/deps/openssl/openssl/ssl/quic/quic_ackm.c b/deps/openssl/openssl/ssl/quic/quic_ackm.c
index 58318a123a8..5da8af882ad 100644
--- a/deps/openssl/openssl/ssl/quic/quic_ackm.c
+++ b/deps/openssl/openssl/ssl/quic/quic_ackm.c
@@ -1003,6 +1003,7 @@ static void ackm_on_pkts_acked(OSSL_ACKM *ackm, const OSSL_ACKM_TX_PKT *apkt)
const OSSL_ACKM_TX_PKT *anext;
QUIC_PN last_pn_acked = 0;
OSSL_CC_ACK_INFO ainfo = { 0 };
+ unsigned int is_inflight;
for (; apkt != NULL; apkt = anext) {
if (apkt->is_inflight) {
@@ -1027,10 +1028,11 @@ static void ackm_on_pkts_acked(OSSL_ACKM *ackm, const OSSL_ACKM_TX_PKT *apkt)
ainfo.tx_time = apkt->time;
ainfo.tx_size = apkt->num_bytes;
+ is_inflight = apkt->is_inflight;
anext = apkt->anext;
apkt->on_acked(apkt->cb_arg); /* may free apkt */
- if (apkt->is_inflight)
+ if (is_inflight)
ackm->cc_method->on_data_acked(ackm->cc_data, &ainfo);
}
}
@@ -1133,6 +1135,38 @@ int ossl_ackm_on_tx_packet(OSSL_ACKM *ackm, OSSL_ACKM_TX_PKT *pkt)
return 1;
}
+int ossl_ackm_on_tx_ack_only_packet(OSSL_ACKM *ackm, OSSL_ACKM_TX_PKT *pkt)
+{
+ struct tx_pkt_history_st *h;
+ unsigned int pkt_space;
+
+ if (pkt == NULL || pkt->pkt_space >= QUIC_PN_SPACE_NUM)
+ return 0;
+
+ /*
+ * A packet containing only an ACK frame must not be treated as
+ * in-flight or ack-eliciting; if it were, ossl_ackm_on_tx_packet()
+ * below would (correctly) perform bytes-in-flight/timer/CC bookkeeping
+ * for a packet we are about to discard from history, which would be
+ * incorrect.
+ */
+ if (pkt->is_inflight || pkt->is_ack_eliciting)
+ return 0;
+
+ pkt_space = pkt->pkt_space;
+
+ /*
+ * No one can expect ACK for packet which carries ACK frames only
+ * (ack_only packet). The ACKM does not need to keep record for ack_only
+ * packet. For ack_only packet the ACKM manager must be updated by the
+ * highest packet number which got sent.
+ */
+ h = get_tx_history(ackm, pkt_space);
+ h->highest_sent = pkt->pkt_num;
+
+ return 1;
+}
+
int ossl_ackm_on_rx_datagram(OSSL_ACKM *ackm, size_t num_bytes)
{
/* No-op on the client. */
@@ -1167,8 +1201,21 @@ int ossl_ackm_on_rx_ack_frame(OSSL_ACKM *ackm, const OSSL_QUIC_FRAME_ACK *ack,
int pkt_space, OSSL_TIME rx_time)
{
OSSL_ACKM_TX_PKT *na_pkts, *lost_pkts;
+ struct tx_pkt_history_st *h = get_tx_history(ackm, pkt_space);
int must_set_timer = 0;
+ /*
+ * RFC 9000 s. 13.1 recommends treating an acknowledgment for a packet we
+ * did not send as a PROTOCOL_VIOLATION, where detectable. The largest
+ * acknowledged PN is ack_ranges[0].end; if it exceeds the highest PN we have
+ * sent in this space, reject the ACK. Otherwise the peer-controlled value is
+ * stored into largest_acked_pkt below, which only ever increases and drives
+ * loss detection, so a single such ACK would permanently force every
+ * in-flight and subsequently-sent packet to be declared lost.
+ */
+ if (ack->ack_ranges[0].end > h->highest_sent)
+ return 0;
+
if (ackm->largest_acked_pkt[pkt_space] == QUIC_PN_INVALID)
ackm->largest_acked_pkt[pkt_space] = ack->ack_ranges[0].end;
else
diff --git a/deps/openssl/openssl/ssl/quic/quic_impl.c b/deps/openssl/openssl/ssl/quic/quic_impl.c
index 97efa4908a4..13bb007fa49 100644
--- a/deps/openssl/openssl/ssl/quic/quic_impl.c
+++ b/deps/openssl/openssl/ssl/quic/quic_impl.c
@@ -410,6 +410,11 @@ static int expect_quic_cs(const SSL *s, QCTX *ctx)
return expect_quic_as(s, ctx, QCTX_C | QCTX_S);
}
+static int expect_quic_cl(const SSL *s, QCTX *ctx)
+{
+ return expect_quic_as(s, ctx, QCTX_C | QCTX_L);
+}
+
static int expect_quic_csl(const SSL *s, QCTX *ctx)
{
return expect_quic_as(s, ctx, QCTX_C | QCTX_S | QCTX_L);
@@ -3643,6 +3648,33 @@ static int qc_getset_idle_timeout(QCTX *ctx, uint32_t class_,
return ret;
}
+QUIC_TAKES_LOCK
+static int qc_getset_max_pending_channels(QCTX *ctx, uint32_t class_,
+ uint64_t *p_value_out, uint64_t *p_value_in)
+{
+ int ret = 0;
+ uint64_t value_out = 0;
+
+ qctx_lock(ctx);
+
+ if (class_ == SSL_VALUE_CLASS_GENERIC && ctx->is_listener) {
+ value_out = ossl_quic_port_get_max_pending_channels(ctx->ql->port);
+ if (p_value_in != NULL)
+ ossl_quic_port_set_max_pending_channels(ctx->ql->port, *p_value_in);
+ ret = 1;
+ } else {
+ QUIC_RAISE_NON_NORMAL_ERROR(ctx, SSL_R_UNSUPPORTED_CONFIG_VALUE_CLASS, NULL);
+ ret = 0;
+ }
+
+ qctx_unlock(ctx);
+
+ if (ret && p_value_out != NULL)
+ *p_value_out = value_out;
+
+ return ret;
+}
+
QUIC_TAKES_LOCK
static int qc_get_stream_avail(QCTX *ctx, uint32_t class_,
int is_uni, int is_remote,
@@ -3778,6 +3810,8 @@ static int expect_quic_for_value(SSL *s, QCTX *ctx, uint32_t id)
case SSL_VALUE_STREAM_WRITE_BUF_USED:
case SSL_VALUE_STREAM_WRITE_BUF_AVAIL:
return expect_quic_cs(s, ctx);
+ case SSL_VALUE_QUIC_MAX_PENDING_CONNS:
+ return expect_quic_cl(s, ctx);
default:
return expect_quic_conn_only(s, ctx);
}
@@ -3799,6 +3833,8 @@ int ossl_quic_get_value_uint(SSL *s, uint32_t class_, uint32_t id,
switch (id) {
case SSL_VALUE_QUIC_IDLE_TIMEOUT:
return qc_getset_idle_timeout(&ctx, class_, value, NULL);
+ case SSL_VALUE_QUIC_MAX_PENDING_CONNS:
+ return qc_getset_max_pending_channels(&ctx, class_, value, NULL);
case SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL:
return qc_get_stream_avail(&ctx, class_, /*uni=*/0, /*remote=*/0, value);
@@ -3845,6 +3881,8 @@ int ossl_quic_set_value_uint(SSL *s, uint32_t class_, uint32_t id,
case SSL_VALUE_EVENT_HANDLING_MODE:
return qc_getset_event_handling(&ctx, class_, NULL, &value);
+ case SSL_VALUE_QUIC_MAX_PENDING_CONNS:
+ return qc_getset_max_pending_channels(&ctx, class_, NULL, &value);
default:
return QUIC_RAISE_NON_NORMAL_ERROR(&ctx,
@@ -4915,6 +4953,11 @@ int ossl_quic_set_peer_token(SSL_CTX *ctx, BIO_ADDR *peer,
ossl_quic_free_peer_token(old);
}
lh_QUIC_TOKEN_insert(c->cache, tok);
+ if (lh_QUIC_TOKEN_error(c->cache)) {
+ ossl_quic_free_peer_token(tok);
+ ossl_crypto_mutex_unlock(c->mutex);
+ return 0;
+ }
ossl_crypto_mutex_unlock(c->mutex);
return 1;
@@ -5406,6 +5449,19 @@ QUIC_CHANNEL *ossl_quic_conn_get_channel(SSL *s)
return ctx.qc->ch;
}
+QUIC_PORT *ossl_quic_listener_get_port(SSL *s)
+{
+ QCTX ctx;
+
+ /*
+ * expect listerner only
+ */
+ if (!expect_quic_listener(s, &ctx))
+ return NULL;
+
+ return ctx.ql->port;
+}
+
int ossl_quic_set_diag_title(SSL_CTX *ctx, const char *title)
{
#ifndef OPENSSL_NO_QLOG
diff --git a/deps/openssl/openssl/ssl/quic/quic_port.c b/deps/openssl/openssl/ssl/quic/quic_port.c
index 200022ac2c5..aad9c3a5b3d 100644
--- a/deps/openssl/openssl/ssl/quic/quic_port.c
+++ b/deps/openssl/openssl/ssl/quic/quic_port.c
@@ -93,6 +93,8 @@ typedef struct validation_token {
*/
#define ENCRYPTED_TOKEN_MAX_LEN (MARSHALLED_TOKEN_MAX_LEN + 16 + 12)
+#define DEFAULT_MAX_PENDING_CONNS 256
+
DEFINE_LIST_OF_IMPL(ch, QUIC_CHANNEL);
DEFINE_LIST_OF_IMPL(incoming_ch, QUIC_CHANNEL);
DEFINE_LIST_OF_IMPL(port, QUIC_PORT);
@@ -110,6 +112,7 @@ QUIC_PORT *ossl_quic_port_new(const QUIC_PORT_ARGS *args)
port->validate_addr = args->do_addr_validation;
port->get_conn_user_ssl = args->get_conn_user_ssl;
port->user_ssl_arg = args->user_ssl_arg;
+ port->max_pending_channels = DEFAULT_MAX_PENDING_CONNS;
if (!port_init(port)) {
OPENSSL_free(port);
@@ -531,8 +534,10 @@ static QUIC_CHANNEL *port_make_channel(QUIC_PORT *port, SSL *tls, OSSL_QRX *qrx,
* start by allocation and provisioning as much of the channel as we can
*/
ch = ossl_quic_channel_alloc(&args);
- if (ch == NULL)
+ if (ch == NULL) {
+ ossl_qrx_free(qrx);
return NULL;
+ }
/*
* Fixup the channel tls connection here before we init the channel
@@ -1488,7 +1493,7 @@ static void port_default_packet_handler(QUIC_URXE *e, void *arg,
QUIC_CHANNEL *ch = NULL, *new_ch = NULL;
QUIC_CONN_ID odcid;
uint8_t gen_new_token = 0;
- OSSL_QRX *qrx = NULL;
+ OSSL_QRX *qrx = NULL, *qrx_ref;
OSSL_QRX *qrx_src = NULL;
OSSL_QRX_ARGS qrx_args = { 0 };
uint64_t cause_flags = 0;
@@ -1581,6 +1586,9 @@ static void port_default_packet_handler(QUIC_URXE *e, void *arg,
if (hdr.type != QUIC_PKT_TYPE_INITIAL)
goto undesirable;
+ if (port->max_pending_channels > 0 && ossl_list_incoming_ch_num(&port->incoming_channel_list) >= port->max_pending_channels)
+ goto undesirable;
+
odcid.id_len = 0;
/*
@@ -1678,8 +1686,22 @@ static void port_default_packet_handler(QUIC_URXE *e, void *arg,
}
}
+ qrx_ref = NULL;
+ if (qrx != NULL) {
+ /*
+ * if we are here, then client is validated via retry packet
+ * (client sent a valid token). In this case the qrx has valid
+ * secrets set for QUIC initial level encryption. We can pass
+ * reference to qrx to newly created channel.
+ *
+ * Note: port_bind_channel()/channel becomes owner of qrx_ref.
+ */
+ qrx_ref = ossl_qrx_newref(qrx);
+ if (qrx_ref == NULL)
+ goto undesirable;
+ }
port_bind_channel(port, &e->peer, &hdr.dst_conn_id,
- &odcid, qrx, &new_ch);
+ &odcid, qrx_ref, &new_ch);
/*
* if packet validates it gets moved to channel, we've just bound
@@ -1694,19 +1716,19 @@ static void port_default_packet_handler(QUIC_URXE *e, void *arg,
if (gen_new_token == 1)
generate_new_token(new_ch, &e->peer);
- if (qrx != NULL) {
+ if (qrx_src != NULL) {
/*
- * The qrx belongs to channel now, so don't free it.
- */
- qrx = NULL;
- } else {
- /*
- * We still need to salvage packets from almost forgotten qrx
- * and pass them to channel.
+ * Time to reinject packets from qrx to channel before
+ * qrx will be destroyed here.
*/
while (ossl_qrx_read_pkt(qrx_src, &qrx_pkt) == 1)
ossl_quic_channel_inject_pkt(new_ch, qrx_pkt);
ossl_qrx_update_pn_space(qrx_src, new_ch->qrx);
+ /*
+ * transfer ownership back to qrx;
+ */
+ qrx = qrx_src;
+ qrx_src = NULL;
}
/*
@@ -1723,7 +1745,7 @@ static void port_default_packet_handler(QUIC_URXE *e, void *arg,
*/
undesirable:
- ossl_qrx_free(qrx);
+ ossl_qrx_free(qrx); /* releases reference */
ossl_qrx_free(qrx_src);
ossl_quic_demux_release_urxe(port->demux, e);
}
@@ -1760,3 +1782,13 @@ void ossl_quic_port_restore_err_state(const QUIC_PORT *port)
ERR_clear_error();
OSSL_ERR_STATE_restore(port->err_state);
}
+
+uint64_t ossl_quic_port_get_max_pending_channels(const QUIC_PORT *port)
+{
+ return port->max_pending_channels;
+}
+
+void ossl_quic_port_set_max_pending_channels(QUIC_PORT *port, uint64_t max_pending_channels)
+{
+ port->max_pending_channels = max_pending_channels;
+}
diff --git a/deps/openssl/openssl/ssl/quic/quic_port_local.h b/deps/openssl/openssl/ssl/quic/quic_port_local.h
index 3bad3fc3a3a..0cfc75da0ba 100644
--- a/deps/openssl/openssl/ssl/quic/quic_port_local.h
+++ b/deps/openssl/openssl/ssl/quic/quic_port_local.h
@@ -1,5 +1,5 @@
/*
- * Copyright 2023-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2023-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -118,6 +118,7 @@ struct quic_port_st {
/* AES-256 GCM context for token encryption */
EVP_CIPHER_CTX *token_ctx;
+ uint64_t max_pending_channels;
};
#endif
diff --git a/deps/openssl/openssl/ssl/quic/quic_record_rx.c b/deps/openssl/openssl/ssl/quic/quic_record_rx.c
index 8897cc6c2df..0065f1c1e57 100644
--- a/deps/openssl/openssl/ssl/quic/quic_record_rx.c
+++ b/deps/openssl/openssl/ssl/quic/quic_record_rx.c
@@ -171,6 +171,8 @@ struct ossl_qrx_st {
ossl_msg_cb msg_callback;
void *msg_callback_arg;
SSL *msg_callback_ssl;
+
+ uint32_t refcount;
};
static RXE *qrx_ensure_free_rxe(OSSL_QRX *qrx, size_t alloc_len);
@@ -212,6 +214,7 @@ OSSL_QRX *ossl_qrx_new(const OSSL_QRX_ARGS *args)
qrx->short_conn_id_len = args->short_conn_id_len;
qrx->init_key_phase_bit = args->init_key_phase_bit;
qrx->max_deferred = args->max_deferred;
+ qrx->refcount = 1;
return qrx;
}
@@ -247,13 +250,10 @@ void ossl_qrx_update_pn_space(OSSL_QRX *src, OSSL_QRX *dst)
return;
}
-void ossl_qrx_free(OSSL_QRX *qrx)
+static void qrx_destroy(OSSL_QRX *qrx)
{
uint32_t i;
- if (qrx == NULL)
- return;
-
/* Free RXE queue data. */
qrx_cleanup_rxl(&qrx->rx_free);
qrx_cleanup_rxl(&qrx->rx_pending);
@@ -267,6 +267,30 @@ void ossl_qrx_free(OSSL_QRX *qrx)
OPENSSL_free(qrx);
}
+void ossl_qrx_free(OSSL_QRX *qrx)
+{
+ if (qrx == NULL)
+ return;
+
+ qrx->refcount--;
+ if (qrx->refcount == 0)
+ qrx_destroy(qrx);
+}
+
+OSSL_QRX *ossl_qrx_newref(OSSL_QRX *qrx)
+{
+ OSSL_QRX *rv_qrx;
+
+ if (qrx != NULL && qrx->refcount != (uint32_t)~0) {
+ qrx->refcount++;
+ rv_qrx = qrx;
+ } else {
+ rv_qrx = NULL;
+ }
+
+ return rv_qrx;
+}
+
void ossl_qrx_inject_urxe(OSSL_QRX *qrx, QUIC_URXE *urxe)
{
/* Initialize our own fields inside the URXE and add to the pending list. */
diff --git a/deps/openssl/openssl/ssl/quic/quic_rx_depack.c b/deps/openssl/openssl/ssl/quic/quic_rx_depack.c
index 7ab59f01a1c..59d16b2f362 100644
--- a/deps/openssl/openssl/ssl/quic/quic_rx_depack.c
+++ b/deps/openssl/openssl/ssl/quic/quic_rx_depack.c
@@ -125,8 +125,19 @@ static int depack_do_frame_ack(PACKET *pkt, QUIC_CHANNEL *ch,
}
if (!ossl_ackm_on_rx_ack_frame(ch->ackm, &ack,
- packet_space, received))
- goto malformed;
+ packet_space, received)) {
+ /*
+ * The ACK manager rejects the frame if it acknowledges a packet number
+ * we have not sent. RFC 9000 s. 13.1 recommends treating this as a
+ * PROTOCOL_VIOLATION connection error (distinct from a frame decoding
+ * error, which is handled at the malformed label below).
+ */
+ ossl_quic_channel_raise_protocol_error(ch,
+ OSSL_QUIC_ERR_PROTOCOL_VIOLATION,
+ frame_type,
+ "ACK for unsent packet number");
+ return 0;
+ }
++ch->diag_num_rx_ack;
return 1;
diff --git a/deps/openssl/openssl/ssl/quic/quic_stream_map.c b/deps/openssl/openssl/ssl/quic/quic_stream_map.c
index 84ac6b714e3..da53d4b8054 100644
--- a/deps/openssl/openssl/ssl/quic/quic_stream_map.c
+++ b/deps/openssl/openssl/ssl/quic/quic_stream_map.c
@@ -168,6 +168,10 @@ QUIC_STREAM *ossl_quic_stream_map_alloc(QUIC_STREAM_MAP *qsm,
s->send_final_size = UINT64_MAX;
lh_QUIC_STREAM_insert(qsm->map, s);
+ if (lh_QUIC_STREAM_error(qsm->map)) {
+ OPENSSL_free(s);
+ return NULL;
+ }
return s;
}
diff --git a/deps/openssl/openssl/ssl/quic/quic_txp.c b/deps/openssl/openssl/ssl/quic/quic_txp.c
index 5ce8e77f61e..24314f6b34b 100644
--- a/deps/openssl/openssl/ssl/quic/quic_txp.c
+++ b/deps/openssl/openssl/ssl/quic/quic_txp.c
@@ -2935,6 +2935,20 @@ static int txp_generate_for_el(OSSL_QUIC_TX_PACKETISER *txp,
return TXP_ERR_INTERNAL;
}
+static int txp_pkt_is_ack_only(const QUIC_TXPIM_PKT *tpkt)
+{
+ return tpkt->had_ack_frame
+ && !tpkt->ackm_pkt.is_inflight
+ && !tpkt->ackm_pkt.is_ack_eliciting
+ && !tpkt->had_handshake_done_frame
+ && !tpkt->had_max_data_frame
+ && !tpkt->had_max_streams_bidi_frame
+ && !tpkt->had_max_streams_uni_frame
+ && !tpkt->had_conn_close
+ && tpkt->retx_head == NULL
+ && ossl_quic_txpim_pkt_get_num_chunks(tpkt) == 0;
+}
+
/*
* Commits and queues a packet for transmission. There is no backing out after
* this.
@@ -2943,8 +2957,9 @@ static int txp_generate_for_el(OSSL_QUIC_TX_PACKETISER *txp,
*
* - Sends the packet to the QTX for encryption and transmission;
*
- * - Records the packet as having been transmitted in FIFM. ACKM is informed,
- * etc. and the TXPIM record is filed.
+ * - Records non-ACK-only packets as having been transmitted in FIFM. ACKM is
+ * informed, etc. and the TXPIM record is filed only when later callbacks
+ * need it.
*
* - Informs various subsystems of frames that were sent and clears frame
* wanted flags so that we do not generate the same frames again.
@@ -2971,7 +2986,7 @@ static int txp_pkt_commit(OSSL_QUIC_TX_PACKETISER *txp,
uint32_t archetype,
int *txpim_pkt_reffed)
{
- int rc = 1;
+ int ack_only, rc = 1;
uint32_t enc_level = pkt->h.enc_level;
uint32_t pn_space = ossl_quic_enc_level_to_pn_space(enc_level);
QUIC_TXPIM_PKT *tpkt = pkt->tpkt;
@@ -3015,28 +3030,35 @@ static int txp_pkt_commit(OSSL_QUIC_TX_PACKETISER *txp,
return 0; /* alloc error */
}
- /* Dispatch to FIFD. */
- if (!ossl_quic_fifd_pkt_commit(&txp->fifd, tpkt))
+ ack_only = txp_pkt_is_ack_only(tpkt);
+
+ /* Dispatch packets that need loss/retransmit callbacks to FIFD. */
+ if (!ack_only && !ossl_quic_fifd_pkt_commit(&txp->fifd, tpkt))
return 0;
/*
* Transmission and Post-Packet Generation Bookkeeping
* ===================================================
*
- * No backing out anymore - at this point the ACKM has recorded the packet
- * as having been sent, so we need to increment our next PN counter, or
- * the ACKM will complain when we try to record a duplicate packet with
- * the same PN later. At this point actually sending the packet may still
- * fail. In this unlikely event it will simply be handled as though it
- * were a lost packet.
+ * No backing out anymore - at this point we need to increment our next PN
+ * counter, or the ACKM will complain when we try to record a duplicate
+ * packet with the same PN later. Non-ACK-only packets have also been
+ * recorded in ACKM, so if QTX write fails they are handled as though they
+ * were lost. ACK-only packets are not recorded and will be cleaned up by
+ * the caller.
*/
++txp->next_pn[pn_space];
- *txpim_pkt_reffed = 1;
+ if (!ack_only)
+ *txpim_pkt_reffed = 1;
/* Send the packet. */
if (!ossl_qtx_write_pkt(txp->args.qtx, &txpkt))
return 0;
+ if (ack_only
+ && !ossl_ackm_on_tx_ack_only_packet(txp->args.ackm, &tpkt->ackm_pkt))
+ rc = 0;
+
/*
* Record FC and stream abort frames as sent; deactivate streams which no
* longer have anything to do.
diff --git a/deps/openssl/openssl/ssl/record/methods/dtls_meth.c b/deps/openssl/openssl/ssl/record/methods/dtls_meth.c
index 8cbd7678e19..c282efc5ca0 100644
--- a/deps/openssl/openssl/ssl/record/methods/dtls_meth.c
+++ b/deps/openssl/openssl/ssl/record/methods/dtls_meth.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2018-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2018-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -287,7 +287,7 @@ static int dtls_rlayer_buffer_record(OSSL_RECORD_LAYER *rl, struct pqueue_st *qu
pitem *item;
/* Limit the size of the queue to prevent DOS attacks */
- if (pqueue_size(queue) >= 100)
+ if (pqueue_size(queue) >= 16)
return 0;
rdata = OPENSSL_malloc(sizeof(*rdata));
@@ -299,29 +299,26 @@ static int dtls_rlayer_buffer_record(OSSL_RECORD_LAYER *rl, struct pqueue_st *qu
return -1;
}
- rdata->packet = rl->packet;
+ /*
+ * Take a copy of just this record's on-wire bytes (header + ciphertext)
+ * rather than the whole (much larger) read buffer. The live rl->rbuf is
+ * left untouched and continues to be used for subsequent reads.
+ */
rdata->packet_length = rl->packet_length;
- memcpy(&(rdata->rbuf), &rl->rbuf, sizeof(TLS_BUFFER));
- memcpy(&(rdata->rrec), &rl->rrec[0], sizeof(TLS_RL_RECORD));
-
- item->data = rdata;
-
- rl->packet = NULL;
- rl->packet_length = 0;
- memset(&rl->rbuf, 0, sizeof(TLS_BUFFER));
- memset(&rl->rrec[0], 0, sizeof(rl->rrec[0]));
-
- if (!tls_setup_read_buffer(rl)) {
- /* RLAYERfatal() already called */
- OPENSSL_free(rdata->rbuf.buf);
+ rdata->packet = OPENSSL_memdup(rl->packet, rl->packet_length);
+ if (rdata->packet == NULL) {
OPENSSL_free(rdata);
pitem_free(item);
+ RLAYERfatal(rl, SSL_AD_INTERNAL_ERROR, ERR_R_CRYPTO_LIB);
return -1;
}
+ memcpy(&(rdata->rrec), &rl->rrec[0], sizeof(TLS_RL_RECORD));
+
+ item->data = rdata;
if (pqueue_insert(queue, item) == NULL) {
/* Must be a duplicate so ignore it */
- OPENSSL_free(rdata->rbuf.buf);
+ OPENSSL_free(rdata->packet);
OPENSSL_free(rdata);
pitem_free(item);
}
@@ -329,44 +326,6 @@ static int dtls_rlayer_buffer_record(OSSL_RECORD_LAYER *rl, struct pqueue_st *qu
return 1;
}
-/* copy buffered record into OSSL_RECORD_LAYER structure */
-static int dtls_copy_rlayer_record(OSSL_RECORD_LAYER *rl, pitem *item)
-{
- DTLS_RLAYER_RECORD_DATA *rdata;
-
- rdata = (DTLS_RLAYER_RECORD_DATA *)item->data;
-
- ossl_tls_buffer_release(&rl->rbuf);
-
- rl->packet = rdata->packet;
- rl->packet_length = rdata->packet_length;
- memcpy(&rl->rbuf, &(rdata->rbuf), sizeof(TLS_BUFFER));
- memcpy(&rl->rrec[0], &(rdata->rrec), sizeof(TLS_RL_RECORD));
-
- /* Set proper sequence number for mac calculation */
- memcpy(&(rl->sequence[2]), &(rdata->packet[5]), 6);
-
- return 1;
-}
-
-static int dtls_retrieve_rlayer_buffered_record(OSSL_RECORD_LAYER *rl,
- struct pqueue_st *queue)
-{
- pitem *item;
-
- item = pqueue_pop(queue);
- if (item) {
- dtls_copy_rlayer_record(rl, item);
-
- OPENSSL_free(item->data);
- pitem_free(item);
-
- return 1;
- }
-
- return 0;
-}
-
/*-
* Call this to get a new input record.
* It will return <= 0 if more data is needed, normally due to an error
@@ -400,12 +359,6 @@ int dtls_get_more_records(OSSL_RECORD_LAYER *rl)
}
again:
- /* if we're renegotiating, then there may be buffered records */
- if (dtls_retrieve_rlayer_buffered_record(rl, rl->processed_rcds)) {
- rl->num_recs = 1;
- return OSSL_RECORD_RETURN_SUCCESS;
- }
-
/* get something from the wire */
/* check if we have the header */
@@ -607,23 +560,13 @@ static int dtls_free(OSSL_RECORD_LAYER *rl)
/* Push to the next record layer */
ret &= BIO_write_ex(rl->next, rdata->packet, rdata->packet_length,
&written);
- OPENSSL_free(rdata->rbuf.buf);
+ OPENSSL_free(rdata->packet);
OPENSSL_free(item->data);
pitem_free(item);
}
pqueue_free(rl->unprocessed_rcds);
}
- if (rl->processed_rcds != NULL) {
- while ((item = pqueue_pop(rl->processed_rcds)) != NULL) {
- rdata = (DTLS_RLAYER_RECORD_DATA *)item->data;
- OPENSSL_free(rdata->rbuf.buf);
- OPENSSL_free(item->data);
- pitem_free(item);
- }
- pqueue_free(rl->processed_rcds);
- }
-
return tls_free(rl) && ret;
}
@@ -653,10 +596,8 @@ dtls_new_record_layer(OSSL_LIB_CTX *libctx, const char *propq, int vers,
return ret;
(*retrl)->unprocessed_rcds = pqueue_new();
- (*retrl)->processed_rcds = pqueue_new();
- if ((*retrl)->unprocessed_rcds == NULL
- || (*retrl)->processed_rcds == NULL) {
+ if ((*retrl)->unprocessed_rcds == NULL) {
dtls_free(*retrl);
*retrl = NULL;
ERR_raise(ERR_LIB_SSL, ERR_R_SSL_LIB);
diff --git a/deps/openssl/openssl/ssl/record/methods/recmethod_local.h b/deps/openssl/openssl/ssl/record/methods/recmethod_local.h
index 4ffce8d6638..5e3fdd1d058 100644
--- a/deps/openssl/openssl/ssl/record/methods/recmethod_local.h
+++ b/deps/openssl/openssl/ssl/record/methods/recmethod_local.h
@@ -1,5 +1,5 @@
/*
- * Copyright 2022-2024 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2022-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -344,9 +344,8 @@ struct ossl_record_layer_st {
size_t taglen;
- /* DTLS received handshake records (processed and unprocessed) */
+ /* DTLS received handshake records awaiting the next epoch */
struct pqueue_st *unprocessed_rcds;
- struct pqueue_st *processed_rcds;
/* records being received in the current epoch */
DTLS_BITMAP bitmap;
@@ -374,7 +373,6 @@ struct ossl_record_layer_st {
typedef struct dtls_rlayer_record_data_st {
unsigned char *packet;
size_t packet_length;
- TLS_BUFFER rbuf;
TLS_RL_RECORD rrec;
} DTLS_RLAYER_RECORD_DATA;
diff --git a/deps/openssl/openssl/ssl/record/methods/tls_common.c b/deps/openssl/openssl/ssl/record/methods/tls_common.c
index 9f957b7cc65..e00ad084cbd 100644
--- a/deps/openssl/openssl/ssl/record/methods/tls_common.c
+++ b/deps/openssl/openssl/ssl/record/methods/tls_common.c
@@ -497,7 +497,7 @@ static int tls_record_app_data_waiting(OSSL_RECORD_LAYER *rl)
static int rlayer_early_data_count_ok(OSSL_RECORD_LAYER *rl, size_t length,
size_t overhead, int send)
{
- uint32_t max_early_data = rl->max_early_data;
+ uint64_t max_early_data = rl->max_early_data;
if (max_early_data == 0) {
RLAYERfatal(rl, send ? SSL_AD_INTERNAL_ERROR : SSL_AD_UNEXPECTED_MESSAGE,
@@ -1919,13 +1919,14 @@ int tls_retry_write_records(OSSL_RECORD_LAYER *rl)
{
int i, ret;
TLS_BUFFER *thiswb;
- size_t tmpwrit = 0;
+ size_t tmpwrit = 0, left;
if (rl->nextwbuf >= rl->numwpipes)
return OSSL_RECORD_RETURN_SUCCESS;
for (;;) {
thiswb = &rl->wbuf[rl->nextwbuf];
+ left = TLS_BUFFER_get_left(thiswb);
clear_sys_error();
if (rl->bio != NULL) {
@@ -1935,13 +1936,24 @@ int tls_retry_write_records(OSSL_RECORD_LAYER *rl)
return ret;
}
i = BIO_write(rl->bio, (char *)&(TLS_BUFFER_get_buf(thiswb)[TLS_BUFFER_get_offset(thiswb)]),
- (unsigned int)TLS_BUFFER_get_left(thiswb));
+ (unsigned int)left);
if (i >= 0) {
tmpwrit = i;
- if (i == 0 && BIO_should_retry(rl->bio))
- ret = OSSL_RECORD_RETURN_RETRY;
- else
+ if (i == 0 && left != 0) {
+ if (BIO_should_retry(rl->bio)) {
+ ret = OSSL_RECORD_RETURN_RETRY;
+ } else {
+ /*
+ * Treat this as a fatal I/O condition. Do not queue an
+ * SSL reason: a zero return with no retry flag may come
+ * from a custom BIO and does not imply an SSL library
+ * or protocol error.
+ */
+ ret = OSSL_RECORD_RETURN_FATAL;
+ }
+ } else {
ret = OSSL_RECORD_RETURN_SUCCESS;
+ }
} else {
if (BIO_should_retry(rl->bio)) {
ret = OSSL_RECORD_RETURN_RETRY;
@@ -1964,7 +1976,7 @@ int tls_retry_write_records(OSSL_RECORD_LAYER *rl)
* Treat i == 0 as success rather than an error for zero byte
* writes to permit this case.
*/
- if (i >= 0 && tmpwrit == TLS_BUFFER_get_left(thiswb)) {
+ if (i >= 0 && tmpwrit == left) {
TLS_BUFFER_set_left(thiswb, 0);
TLS_BUFFER_add_offset(thiswb, tmpwrit);
if (++(rl->nextwbuf) < rl->numwpipes)
@@ -1982,9 +1994,9 @@ int tls_retry_write_records(OSSL_RECORD_LAYER *rl)
*/
if (TLS_BUFFER_is_app_buffer(thiswb)
&& (rl->mode & SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER) != 0) {
- size_t left = TLS_BUFFER_get_left(thiswb);
unsigned char *buf;
+ left = TLS_BUFFER_get_left(thiswb);
buf = OPENSSL_malloc(left);
if (buf == NULL) {
RLAYERfatal(rl, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR);
diff --git a/deps/openssl/openssl/ssl/record/rec_layer_s3.c b/deps/openssl/openssl/ssl/record/rec_layer_s3.c
index ba407478b41..3ab50facc93 100644
--- a/deps/openssl/openssl/ssl/record/rec_layer_s3.c
+++ b/deps/openssl/openssl/ssl/record/rec_layer_s3.c
@@ -1,5 +1,5 @@
/*
- * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -150,7 +150,7 @@ static uint32_t ossl_get_max_early_data(SSL_CONNECTION *s)
static int ossl_early_data_count_ok(SSL_CONNECTION *s, size_t length,
size_t overhead, int send)
{
- uint32_t max_early_data;
+ uint64_t max_early_data;
max_early_data = ossl_get_max_early_data(s);
diff --git a/deps/openssl/openssl/ssl/rio/poll_builder.c b/deps/openssl/openssl/ssl/rio/poll_builder.c
index 28d93ee1947..f808e9b01e7 100644
--- a/deps/openssl/openssl/ssl/rio/poll_builder.c
+++ b/deps/openssl/openssl/ssl/rio/poll_builder.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2024-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2024-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -120,8 +120,10 @@ int ossl_rio_poll_builder_add_fd(RIO_POLL_BUILDER *rpb, int fd,
assert((rpb->pfd_heap != NULL && rpb->pfd_heap == pfds) || (rpb->pfd_heap == NULL && rpb->pfds == pfds));
assert(i <= rpb->pfd_num && rpb->pfd_num <= rpb->pfd_alloc);
+ /* Check the index first because an appended entry is uninitialised. */
+ if (i == rpb->pfd_num || pfds[i].fd == -1)
+ pfds[i].events = 0;
pfds[i].fd = fd;
- pfds[i].events = 0;
if (want_read)
pfds[i].events |= POLLIN;
diff --git a/deps/openssl/openssl/ssl/rio/poll_builder.h b/deps/openssl/openssl/ssl/rio/poll_builder.h
index 1fe13eacbab..48605d71822 100644
--- a/deps/openssl/openssl/ssl/rio/poll_builder.h
+++ b/deps/openssl/openssl/ssl/rio/poll_builder.h
@@ -1,5 +1,5 @@
/*
- * Copyright 2024-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2024-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -76,4 +76,17 @@ int ossl_rio_poll_builder_poll(RIO_POLL_BUILDER *rpb, OSSL_TIME deadline);
* it is currently not needed.
*/
+#ifndef OPENSSL_NO_QUIC
+/*
+ * Test instrumentation only. If set, poll_translate() (see poll_immediate.c)
+ * calls this with the index of each item immediately before translating it,
+ * once all earlier items (if any) have finished translation. This lets
+ * tests inject a readiness change into the gap between translation of
+ * consecutive items, in order to deterministically exercise the
+ * abort-blocking path. Always NULL in production use.
+ */
+extern void (*ossl_quic_poll_translate_test_step_cb)(size_t idx, void *arg);
+extern void *ossl_quic_poll_translate_test_step_cb_arg;
+#endif
+
#endif
diff --git a/deps/openssl/openssl/ssl/rio/poll_immediate.c b/deps/openssl/openssl/ssl/rio/poll_immediate.c
index 24b82f3a6a4..95410df0d8f 100644
--- a/deps/openssl/openssl/ssl/rio/poll_immediate.c
+++ b/deps/openssl/openssl/ssl/rio/poll_immediate.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2024-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2024-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -49,6 +49,13 @@
} while (0)
#ifndef OPENSSL_NO_QUIC
+/*
+ * Test instrumentation only; see poll_builder.h. Always NULL in production
+ * use.
+ */
+void (*ossl_quic_poll_translate_test_step_cb)(size_t idx, void *arg) = NULL;
+void *ossl_quic_poll_translate_test_step_cb_arg = NULL;
+
static int poll_translate_ssl_quic(SSL *ssl,
QUIC_REACTOR_WAIT_CTX *wctx,
RIO_POLL_BUILDER *rpb,
@@ -216,6 +223,10 @@ static int poll_translate(SSL_POLL_ITEM *items,
for (i = 0; i < num_items; ++i) {
item = &ITEM_N(items, stride, i);
+ if (ossl_quic_poll_translate_test_step_cb != NULL)
+ ossl_quic_poll_translate_test_step_cb(i,
+ ossl_quic_poll_translate_test_step_cb_arg);
+
switch (item->desc.type) {
case BIO_POLL_DESCRIPTOR_TYPE_SSL:
ssl = item->desc.value.ssl;
@@ -233,7 +244,7 @@ static int poll_translate(SSL_POLL_ITEM *items,
FAIL_ITEM(i);
if (*abort_blocking)
- return 1;
+ goto out;
if (!SSL_get_event_timeout(ssl, &timeout, &is_infinite))
FAIL_ITEM(i++); /* need to clean up this item too */
@@ -271,7 +282,12 @@ static int poll_translate(SSL_POLL_ITEM *items,
}
out:
- if (!ok)
+ /*
+ * On abort_blocking, the item which triggered the abort has already
+ * balanced its own enter/leave of the blocking section (see
+ * poll_translate_ssl_quic()); only items 0..i-1 still need cleanup here.
+ */
+ if (!ok || *abort_blocking)
postpoll_translation_cleanup(items, i, stride, wctx);
*p_earliest_wakeup_deadline = earliest_wakeup_deadline;
@@ -320,8 +336,15 @@ static int poll_block(SSL_POLL_ITEM *items,
p_result_count))
goto out;
- if (abort_blocking)
+ if (abort_blocking) {
+ /*
+ * Nothing actually failed; we just shouldn't block because an item
+ * may have become ready while we were setting up. The caller's
+ * retry loop will call poll_readout() again to pick this up.
+ */
+ ok = 1;
goto out;
+ }
earliest_wakeup_deadline = ossl_time_min(earliest_wakeup_deadline,
user_deadline);
diff --git a/deps/openssl/openssl/ssl/rio/rio_notifier.c b/deps/openssl/openssl/ssl/rio/rio_notifier.c
index ea40790d627..abc1755dae0 100644
--- a/deps/openssl/openssl/ssl/rio/rio_notifier.c
+++ b/deps/openssl/openssl/ssl/rio/rio_notifier.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2024-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2024-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -10,7 +10,6 @@
#include "internal/sockets.h"
#include
#include
-#include "internal/thread_once.h"
#include "internal/rio_notifier.h"
/*
@@ -28,32 +27,29 @@ static int set_cloexec(int fd)
#if defined(OPENSSL_SYS_WINDOWS)
-static CRYPTO_ONCE ensure_wsa_startup_once = CRYPTO_ONCE_STATIC_INIT;
-static int wsa_started;
-
static void ossl_wsa_cleanup(void)
{
- if (wsa_started) {
- wsa_started = 0;
- WSACleanup();
- }
+ WSACleanup();
}
-DEFINE_RUN_ONCE_STATIC(do_wsa_startup)
+static int do_wsa_startup(void)
{
WORD versionreq = 0x0202; /* Version 2.2 */
WSADATA wsadata;
if (WSAStartup(versionreq, &wsadata) != 0)
return 0;
- wsa_started = 1;
- OPENSSL_atexit(ossl_wsa_cleanup);
return 1;
}
static ossl_inline int ensure_wsa_startup(void)
{
- return RUN_ONCE(&ensure_wsa_startup_once, do_wsa_startup);
+ return do_wsa_startup();
+}
+
+static void wsa_done(void)
+{
+ ossl_wsa_cleanup();
}
#endif
diff --git a/deps/openssl/openssl/ssl/s3_lib.c b/deps/openssl/openssl/ssl/s3_lib.c
index 213ec84b171..079a308f6ff 100644
--- a/deps/openssl/openssl/ssl/s3_lib.c
+++ b/deps/openssl/openssl/ssl/s3_lib.c
@@ -5223,8 +5223,10 @@ int ssl_generate_master_secret(SSL_CONNECTION *s, unsigned char *pms,
pskpmslen = 4 + pmslen + psklen;
pskpms = OPENSSL_malloc(pskpmslen);
- if (pskpms == NULL)
+ if (pskpms == NULL) {
+ SSLfatal(s, SSL_AD_INTERNAL_ERROR, ERR_R_CRYPTO_LIB);
goto err;
+ }
t = pskpms;
s2n(pmslen, t);
if (alg_k & SSL_kPSK)
@@ -5248,6 +5250,7 @@ int ssl_generate_master_secret(SSL_CONNECTION *s, unsigned char *pms,
OPENSSL_clear_free(pskpms, pskpmslen);
#else
/* Should never happen */
+ SSLfatal(s, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR);
goto err;
#endif
} else {
diff --git a/deps/openssl/openssl/ssl/ssl_cert.c b/deps/openssl/openssl/ssl/ssl_cert.c
index adc5bb3d35c..43d1191c6e2 100644
--- a/deps/openssl/openssl/ssl/ssl_cert.c
+++ b/deps/openssl/openssl/ssl/ssl_cert.c
@@ -1,5 +1,5 @@
/*
- * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved.
* Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
@@ -306,7 +306,7 @@ int ssl_cert_set0_chain(SSL_CONNECTION *s, SSL_CTX *ctx, STACK_OF(X509) *chain)
for (i = 0; i < sk_X509_num(chain); i++) {
X509 *x = sk_X509_value(chain, i);
- r = ssl_security_cert(s, ctx, x, 0, 0);
+ r = ssl_security_cert(s, ctx, x, 0);
if (r != 1) {
ERR_raise(ERR_LIB_SSL, r);
return 0;
@@ -340,7 +340,7 @@ int ssl_cert_add0_chain_cert(SSL_CONNECTION *s, SSL_CTX *ctx, X509 *x)
if (!cpk)
return 0;
- r = ssl_security_cert(s, ctx, x, 0, 0);
+ r = ssl_security_cert(s, ctx, x, 0);
if (r != 1) {
ERR_raise(ERR_LIB_SSL, r);
return 0;
@@ -1149,7 +1149,7 @@ int ssl_build_cert_chain(SSL_CONNECTION *s, SSL_CTX *ctx, int flags)
*/
for (i = 0; i < sk_X509_num(chain); i++) {
x = sk_X509_value(chain, i);
- rv = ssl_security_cert(s, ctx, x, 0, 0);
+ rv = ssl_security_cert(s, ctx, x, 0);
if (rv != 1) {
ERR_raise(ERR_LIB_SSL, rv);
OSSL_STACK_OF_X509_free(chain);
diff --git a/deps/openssl/openssl/ssl/ssl_lib.c b/deps/openssl/openssl/ssl/ssl_lib.c
index 05b0209a76b..ba494f5fc0d 100644
--- a/deps/openssl/openssl/ssl/ssl_lib.c
+++ b/deps/openssl/openssl/ssl/ssl_lib.c
@@ -5226,6 +5226,31 @@ SSL *SSL_dup(SSL *s)
|| !dup_ca_names(&retsc->client_ca_names, sc->client_ca_names))
goto err;
+ if (sc->server_cert_type != NULL) {
+ OPENSSL_free(retsc->server_cert_type);
+ retsc->server_cert_type = OPENSSL_memdup(sc->server_cert_type,
+ sc->server_cert_type_len);
+ if (retsc->server_cert_type == NULL)
+ goto err;
+ retsc->server_cert_type_len = sc->server_cert_type_len;
+ }
+
+ if (sc->client_cert_type != NULL) {
+ OPENSSL_free(retsc->client_cert_type);
+ retsc->client_cert_type = OPENSSL_memdup(sc->client_cert_type,
+ sc->client_cert_type_len);
+ if (retsc->client_cert_type == NULL)
+ goto err;
+ retsc->client_cert_type_len = sc->client_cert_type_len;
+ }
+
+#ifndef OPENSSL_NO_CT
+ retsc->ct_validation_callback = sc->ct_validation_callback;
+ retsc->ct_validation_callback_arg = sc->ct_validation_callback_arg;
+#endif
+
+ retsc->ext.status_type = sc->ext.status_type;
+
return ret;
err:
diff --git a/deps/openssl/openssl/ssl/ssl_local.h b/deps/openssl/openssl/ssl/ssl_local.h
index 8fc8b644061..d974ac6ecfe 100644
--- a/deps/openssl/openssl/ssl/ssl_local.h
+++ b/deps/openssl/openssl/ssl/ssl_local.h
@@ -1,5 +1,5 @@
/*
- * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved.
* Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved
* Copyright 2005 Nokia. All rights reserved.
*
@@ -2901,10 +2901,9 @@ __owur int ssl_validate_ct(SSL_CONNECTION *s);
__owur EVP_PKEY *ssl_get_auto_dh(SSL_CONNECTION *s);
-__owur int ssl_security_cert(SSL_CONNECTION *s, SSL_CTX *ctx, X509 *x, int vfy,
- int is_ee);
+__owur int ssl_security_cert(SSL_CONNECTION *s, SSL_CTX *ctx, X509 *x, int is_ee);
__owur int ssl_security_cert_chain(SSL_CONNECTION *s, STACK_OF(X509) *sk,
- X509 *ex, int vfy);
+ X509 *ex);
int tls_choose_sigalg(SSL_CONNECTION *s, int fatalerrs);
diff --git a/deps/openssl/openssl/ssl/ssl_rsa.c b/deps/openssl/openssl/ssl/ssl_rsa.c
index 740460f5c2e..42958d9d0c2 100644
--- a/deps/openssl/openssl/ssl/ssl_rsa.c
+++ b/deps/openssl/openssl/ssl/ssl_rsa.c
@@ -42,7 +42,7 @@ int SSL_use_certificate(SSL *ssl, X509 *x)
return 0;
}
- rv = ssl_security_cert(sc, NULL, x, 0, 1);
+ rv = ssl_security_cert(sc, NULL, x, 1);
if (rv != 1) {
ERR_raise(ERR_LIB_SSL, rv);
return 0;
@@ -247,7 +247,7 @@ int SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x)
return 0;
}
- rv = ssl_security_cert(NULL, ctx, x, 0, 1);
+ rv = ssl_security_cert(NULL, ctx, x, 1);
if (rv != 1) {
ERR_raise(ERR_LIB_SSL, rv);
return 0;
@@ -993,13 +993,13 @@ static int ssl_set_cert_and_key(SSL *ssl, SSL_CTX *ctx, X509 *x509, EVP_PKEY *pr
c = sc != NULL ? sc->cert : ctx->cert;
/* Do all security checks before anything else */
- rv = ssl_security_cert(sc, ctx, x509, 0, 1);
+ rv = ssl_security_cert(sc, ctx, x509, 1);
if (rv != 1) {
ERR_raise(ERR_LIB_SSL, rv);
goto out;
}
for (j = 0; j < sk_X509_num(chain); j++) {
- rv = ssl_security_cert(sc, ctx, sk_X509_value(chain, j), 0, 0);
+ rv = ssl_security_cert(sc, ctx, sk_X509_value(chain, j), 0);
if (rv != 1) {
ERR_raise(ERR_LIB_SSL, rv);
goto out;
diff --git a/deps/openssl/openssl/ssl/statem/extensions.c b/deps/openssl/openssl/ssl/statem/extensions.c
index 2de540f828f..13846bc1159 100644
--- a/deps/openssl/openssl/ssl/statem/extensions.c
+++ b/deps/openssl/openssl/ssl/statem/extensions.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2016-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2016-2026 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -605,6 +605,11 @@ int tls_collect_extensions(SSL_CONNECTION *s, PACKET *packet,
SSLfatal(s, SSL_AD_ILLEGAL_PARAMETER, SSL_R_BAD_EXTENSION);
goto err;
}
+
+ /* The server must tolerate the unknown extension and complete. */
+ if (thisex == NULL)
+ continue;
+
idx = thisex - raw_extensions;
/*-
* Check that we requested this extension (if appropriate). Requests can
@@ -635,17 +640,15 @@ int tls_collect_extensions(SSL_CONNECTION *s, PACKET *packet,
SSL_R_UNSOLICITED_EXTENSION);
goto err;
}
- if (thisex != NULL) {
- thisex->data = extension;
- thisex->present = 1;
- thisex->type = type;
- thisex->received_order = i++;
- if (s->ext.debug_cb)
- s->ext.debug_cb(SSL_CONNECTION_GET_USER_SSL(s), !s->server,
- thisex->type, PACKET_data(&thisex->data),
- PACKET_remaining(&thisex->data),
- s->ext.debug_arg);
- }
+ thisex->data = extension;
+ thisex->present = 1;
+ thisex->type = type;
+ thisex->received_order = i++;
+ if (s->ext.debug_cb)
+ s->ext.debug_cb(SSL_CONNECTION_GET_USER_SSL(s), !s->server,
+ thisex->type, PACKET_data(&thisex->data),
+ (int)PACKET_remaining(&thisex->data),
+ s->ext.debug_arg);
}
if (init) {
diff --git a/deps/openssl/openssl/ssl/statem/statem_clnt.c b/deps/openssl/openssl/ssl/statem/statem_clnt.c
index b317b939243..0279a62abd2 100644
--- a/deps/openssl/openssl/ssl/statem/statem_clnt.c
+++ b/deps/openssl/openssl/ssl/statem/statem_clnt.c
@@ -2814,6 +2814,14 @@ MSG_PROCESS_RETURN tls_process_new_session_ticket(SSL_CONNECTION *s,
if (SSL_CONNECTION_IS_TLS13(s)) {
PACKET extpkt;
+ /*
+ * Fulfilling RFC8446:4.6.1 requirement: Clients MUST NOT cache
+ * tickets for longer than 7 days.
+ */
+ if (ticket_lifetime_hint > 604800) {
+ ticket_lifetime_hint = 604800;
+ }
+
if (!PACKET_as_length_prefixed_2(pkt, &extpkt)
|| PACKET_remaining(pkt) != 0) {
SSLfatal(s, SSL_AD_DECODE_ERROR, SSL_R_LENGTH_MISMATCH);
diff --git a/deps/openssl/openssl/ssl/statem/statem_lib.c b/deps/openssl/openssl/ssl/statem/statem_lib.c
index 7e3be12f7a7..c6900870814 100644
--- a/deps/openssl/openssl/ssl/statem/statem_lib.c
+++ b/deps/openssl/openssl/ssl/statem/statem_lib.c
@@ -1071,7 +1071,7 @@ static int ssl_add_cert_chain(SSL_CONNECTION *s, WPACKET *pkt, CERT_PKEY *cpk, i
/* Don't leave errors in the queue */
ERR_clear_error();
chain = X509_STORE_CTX_get0_chain(xs_ctx);
- i = ssl_security_cert_chain(s, chain, NULL, 0);
+ i = ssl_security_cert_chain(s, chain, NULL);
if (i != 1) {
#if 0
/* Dummy error calls so mkerr generates them */
@@ -1096,7 +1096,7 @@ static int ssl_add_cert_chain(SSL_CONNECTION *s, WPACKET *pkt, CERT_PKEY *cpk, i
}
X509_STORE_CTX_free(xs_ctx);
} else {
- i = ssl_security_cert_chain(s, extra_certs, x, 0);
+ i = ssl_security_cert_chain(s, extra_certs, x);
if (i != 1) {
if (!for_comp)
SSLfatal(s, SSL_AD_INTERNAL_ERROR, i);
diff --git a/deps/openssl/openssl/ssl/statem/statem_srvr.c b/deps/openssl/openssl/ssl/statem/statem_srvr.c
index b2f8a0ebc43..03fcc6eeac7 100644
--- a/deps/openssl/openssl/ssl/statem/statem_srvr.c
+++ b/deps/openssl/openssl/ssl/statem/statem_srvr.c
@@ -3921,8 +3921,10 @@ CON_FUNC_RETURN tls_construct_server_compressed_certificate(SSL_CONNECTION *sc,
|| !WPACKET_put_bytes_u24(pkt, cc->orig_len)
|| !WPACKET_start_sub_packet_u24(pkt)
|| !WPACKET_memcpy(pkt, cc->data, cc->len)
- || !WPACKET_close(pkt))
+ || !WPACKET_close(pkt)) {
+ SSLfatal(sc, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR);
return 0;
+ }
sc->s3.tmp.cert->cert_comp_used++;
return 1;
@@ -4251,7 +4253,7 @@ CON_FUNC_RETURN tls_construct_new_session_ticket(SSL_CONNECTION *s, WPACKET *pkt
SSL_SESSION *new_sess = ssl_session_dup(s->session, 0);
if (new_sess == NULL) {
- /* SSLfatal already called */
+ SSLfatal(s, SSL_AD_INTERNAL_ERROR, ERR_R_SSL_LIB);
goto err;
}
diff --git a/deps/openssl/openssl/ssl/t1_lib.c b/deps/openssl/openssl/ssl/t1_lib.c
index e11fa8bc638..ef1114172a2 100644
--- a/deps/openssl/openssl/ssl/t1_lib.c
+++ b/deps/openssl/openssl/ssl/t1_lib.c
@@ -1817,53 +1817,6 @@ void tls1_get_formatlist(SSL_CONNECTION *s, const unsigned char **pformats,
}
}
-/* Check a key is compatible with compression extension */
-static int tls1_check_pkey_comp(SSL_CONNECTION *s, EVP_PKEY *pkey)
-{
- unsigned char comp_id;
- size_t i;
- int point_conv;
-
- /* If not an EC key nothing to check */
- if (!EVP_PKEY_is_a(pkey, "EC"))
- return 1;
-
- /* Get required compression id */
- point_conv = EVP_PKEY_get_ec_point_conv_form(pkey);
- if (point_conv == 0)
- return 0;
- if (point_conv == POINT_CONVERSION_UNCOMPRESSED) {
- comp_id = TLSEXT_ECPOINTFORMAT_uncompressed;
- } else if (SSL_CONNECTION_IS_TLS13(s)) {
- /*
- * ec_point_formats extension is not used in TLSv1.3 so we ignore
- * this check.
- */
- return 1;
- } else {
- int field_type = EVP_PKEY_get_field_type(pkey);
-
- if (field_type == NID_X9_62_prime_field)
- comp_id = TLSEXT_ECPOINTFORMAT_ansiX962_compressed_prime;
- else if (field_type == NID_X9_62_characteristic_two_field)
- comp_id = TLSEXT_ECPOINTFORMAT_ansiX962_compressed_char2;
- else
- return 0;
- }
- /*
- * If point formats extension present check it, otherwise everything is
- * supported (see RFC4492).
- */
- if (s->ext.peer_ecpointformats == NULL)
- return 1;
-
- for (i = 0; i < s->ext.peer_ecpointformats_len; i++) {
- if (s->ext.peer_ecpointformats[i] == comp_id)
- return 1;
- }
- return 0;
-}
-
/* Return group id of a key */
static uint16_t tls1_get_group_id(EVP_PKEY *pkey)
{
@@ -1888,9 +1841,6 @@ static int tls1_check_cert_param(SSL_CONNECTION *s, X509 *x, int check_ee_md)
/* If not EC nothing to do */
if (!EVP_PKEY_is_a(pkey, "EC"))
return 1;
- /* Check compression */
- if (!tls1_check_pkey_comp(s, pkey))
- return 0;
group_id = tls1_get_group_id(pkey);
/*
* For a server we allow the certificate to not be in our list of supported
@@ -2788,13 +2738,6 @@ int tls12_check_peer_sigalg(SSL_CONNECTION *s, uint16_t sig, EVP_PKEY *pkey)
if (pkeyid == EVP_PKEY_EC) {
- /* Check point compression is permitted */
- if (!tls1_check_pkey_comp(s, pkey)) {
- SSLfatal(s, SSL_AD_ILLEGAL_PARAMETER,
- SSL_R_ILLEGAL_POINT_COMPRESSION);
- return 0;
- }
-
/* For TLS 1.3 or Suite B check curve matches signature algorithm */
if (SSL_CONNECTION_IS_TLS13(s) || tls1_suiteb(s)) {
int curve = ssl_get_EC_curve_nid(pkey);
@@ -4057,8 +4000,6 @@ int tls1_check_chain(SSL_CONNECTION *s, X509 *x, EVP_PKEY *pk,
chain = cpk->chain;
strict_mode = c->cert_flags & SSL_CERT_FLAGS_CHECK_TLS_STRICT;
if (tls12_rpk_and_privkey(s, idx)) {
- if (EVP_PKEY_is_a(pk, "EC") && !tls1_check_pkey_comp(s, pk))
- return 0;
*pvalid = rv = CERT_PKEY_RPK;
return rv;
}
@@ -4401,51 +4342,29 @@ static int ssl_security_cert_key(SSL_CONNECTION *s, SSL_CTX *ctx, X509 *x,
return ssl_ctx_security(ctx, op, secbits, 0, x);
}
-static int ssl_security_cert_sig(SSL_CONNECTION *s, SSL_CTX *ctx, X509 *x,
- int op)
+int ssl_security_cert(SSL_CONNECTION *s, SSL_CTX *ctx, X509 *x, int is_ee)
{
- /* Lookup signature algorithm digest */
- int secbits, nid, pknid;
-
- /* Don't check signature if self signed */
- if ((X509_get_extension_flags(x) & EXFLAG_SS) != 0)
- return 1;
- if (!X509_get_signature_info(x, &nid, &pknid, &secbits, NULL))
- secbits = -1;
- /* If digest NID not defined use signature NID */
- if (nid == NID_undef)
- nid = pknid;
- if (s != NULL)
- return ssl_security(s, op, secbits, nid, x);
- else
- return ssl_ctx_security(ctx, op, secbits, nid, x);
-}
-
-int ssl_security_cert(SSL_CONNECTION *s, SSL_CTX *ctx, X509 *x, int vfy,
- int is_ee)
-{
- if (vfy)
- vfy = SSL_SECOP_PEER;
if (is_ee) {
- if (!ssl_security_cert_key(s, ctx, x, SSL_SECOP_EE_KEY | vfy))
+ if (!ssl_security_cert_key(s, ctx, x, SSL_SECOP_EE_KEY))
return SSL_R_EE_KEY_TOO_SMALL;
} else {
- if (!ssl_security_cert_key(s, ctx, x, SSL_SECOP_CA_KEY | vfy))
+ if (!ssl_security_cert_key(s, ctx, x, SSL_SECOP_CA_KEY))
return SSL_R_CA_KEY_TOO_SMALL;
}
- if (!ssl_security_cert_sig(s, ctx, x, SSL_SECOP_CA_MD | vfy))
- return SSL_R_CA_MD_TOO_WEAK;
return 1;
}
/*
- * Check security of a chain, if |sk| includes the end entity certificate then
- * |x| is NULL. If |vfy| is 1 then we are verifying a peer chain and not sending
- * one to the peer. Return values: 1 if ok otherwise error code to use
+ * Call ssl_security_check() on all certificates in a stack.
+ * If |x| is non NULL it is checked first, before checking the
+ * certificates in the stack.
+ *
+ * Return values: 1 if ok otherwise the error code from the first
+ * failing ssl_security_check().;
*/
int ssl_security_cert_chain(SSL_CONNECTION *s, STACK_OF(X509) *sk,
- X509 *x, int vfy)
+ X509 *x)
{
int rv, start_idx, i;
@@ -4457,13 +4376,13 @@ int ssl_security_cert_chain(SSL_CONNECTION *s, STACK_OF(X509) *sk,
} else
start_idx = 0;
- rv = ssl_security_cert(s, NULL, x, vfy, 1);
+ rv = ssl_security_cert(s, NULL, x, 1);
if (rv != 1)
return rv;
for (i = start_idx; i < sk_X509_num(sk); i++) {
x = sk_X509_value(sk, i);
- rv = ssl_security_cert(s, NULL, x, vfy, 0);
+ rv = ssl_security_cert(s, NULL, x, 0);
if (rv != 1)
return rv;
}
@@ -4523,6 +4442,20 @@ static int check_cert_usable(SSL_CONNECTION *s, const SIGALG_LOOKUP *sig,
if (supported <= 0)
return 0;
+ /*
+ * When RPK is negotiated there are no certificate signatures to
+ * constrain, and there may not even be a certificate configured.
+ */
+ if (TLSEXT_cert_type_rpk == (s->server ? s->ext.server_cert_type : s->ext.client_cert_type))
+ return 1;
+
+ /*
+ * RPK was enabled, adding candidate private-key-only slots, but was not
+ * negotiated, so the key-only slot is not usable.
+ */
+ if (x == NULL)
+ return 0;
+
/*
* The TLS 1.3 signature_algorithms_cert extension places restrictions
* on the sigalg with which the certificate was signed (by its issuer).
diff --git a/deps/openssl/openssl/util/missingcrypto.txt b/deps/openssl/openssl/util/missingcrypto.txt
index 16ca0e49dfa..ad0f165fa6b 100644
--- a/deps/openssl/openssl/util/missingcrypto.txt
+++ b/deps/openssl/openssl/util/missingcrypto.txt
@@ -590,8 +590,6 @@ LONG_it(3)
MD2_options(3)
MD4_Transform(3)
MD5_Transform(3)
-NAME_CONSTRAINTS_check(3)
-NAME_CONSTRAINTS_check_CN(3)
NAME_CONSTRAINTS_it(3)
NAMING_AUTHORITY_it(3)
NCONF_WIN32(3)
diff --git a/deps/openssl/openssl/util/other.syms b/deps/openssl/openssl/util/other.syms
index ba188d46c79..0bb7b92bd69 100644
--- a/deps/openssl/openssl/util/other.syms
+++ b/deps/openssl/openssl/util/other.syms
@@ -2,10 +2,12 @@
# that don't appear in lib*.num -- because they are define's, in
# assembly language, etc.
#
+OPENSSL_armcap environment
OPENSSL_ia32cap environment
OPENSSL_ppccap environment
-OPENSSL_s390xcap environment
OPENSSL_riscvcap environment
+OPENSSL_s390xcap environment
+OPENSSL_sparcv9cap environment
OPENSSL_MALLOC_FD environment
OPENSSL_MALLOC_FAILURES environment
OPENSSL_instrument_bus assembler
@@ -783,6 +785,7 @@ SSL_VALUE_CLASS_FEATURE_REQUEST define
SSL_VALUE_CLASS_FEATURE_PEER_REQUEST define
SSL_VALUE_CLASS_FEATURE_NEGOTIATED define
SSL_VALUE_QUIC_IDLE_TIMEOUT define
+SSL_VALUE_QUIC_MAX_PENDING_CONNS define
SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL define
SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL define
SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL define
diff --git a/deps/openssl/openssl/util/perl/TLSProxy/Proxy.pm b/deps/openssl/openssl/util/perl/TLSProxy/Proxy.pm
index c3db4e28db0..729b351b3f0 100644
--- a/deps/openssl/openssl/util/perl/TLSProxy/Proxy.pm
+++ b/deps/openssl/openssl/util/perl/TLSProxy/Proxy.pm
@@ -1,4 +1,4 @@
-# Copyright 2016-2025 The OpenSSL Project Authors. All Rights Reserved.
+# Copyright 2016-2026 The OpenSSL Project Authors. All Rights Reserved.
#
# Licensed under the Apache License 2.0 (the "License"). You may not use
# this file except in compliance with the License. You can obtain a copy
@@ -177,6 +177,7 @@ sub init
server_port => 0,
serverpid => 0,
clientpid => 0,
+ clientexit => 0,
execute => $execute,
cert => $cert,
debug => $debug,
@@ -215,6 +216,7 @@ sub clearClient
$self->{clientflags} = "";
$self->{sessionfile} = undef;
$self->{clientpid} = 0;
+ $self->{clientexit} = 0;
$is_tls13 = 0;
$ciphersuite = undef;
@@ -585,6 +587,7 @@ sub clientstart
$pid = $self->{clientpid};
print "Waiting for s_client process to close: $pid...\n";
waitpid($pid, 0);
+ $self->{clientexit} = $?;
return $success;
}
@@ -722,6 +725,11 @@ sub clientpid
my $self = shift;
return $self->{clientpid};
}
+sub clientexit
+{
+ my $self = shift;
+ return $self->{clientexit};
+}
#Read/write accessors
sub filter
diff --git a/deps/undici/src/lib/dispatcher/client-h1.js b/deps/undici/src/lib/dispatcher/client-h1.js
index a801ecb3604..6b28f60c06d 100644
--- a/deps/undici/src/lib/dispatcher/client-h1.js
+++ b/deps/undici/src/lib/dispatcher/client-h1.js
@@ -876,7 +876,7 @@ async function connectH1 (client, socket) {
function clearIdleSocketValidation (socket) {
if (socket[kIdleSocketValidationTimeout]) {
- clearTimeout(socket[kIdleSocketValidationTimeout])
+ clearImmediate(socket[kIdleSocketValidationTimeout])
socket[kIdleSocketValidationTimeout] = null
}
@@ -885,15 +885,23 @@ function clearIdleSocketValidation (socket) {
function scheduleIdleSocketValidation (client, socket) {
socket[kIdleSocketValidation] = 1
- socket[kIdleSocketValidationTimeout] = setTimeout(() => {
+ // Yield to the check phase (after poll) so unsolicited bytes / FIN / RST
+ // already pending on this idle keep-alive socket are processed before the
+ // next request is written (GHSA-35p6-xmwp-9g52).
+ //
+ // setTimeout(0) pays Node's ~1ms timer floor on every sequential reuse
+ // (#5493). setImmediate avoids that, but an *unref'd* Immediate lets poll
+ // block for ~500ms when the event loop is otherwise idle (#5600 / #5606).
+ // A ref'd Immediate both keeps the pending request alive and makes poll
+ // return immediately — the hybrid those issues asked for.
+ socket[kIdleSocketValidationTimeout] = setImmediate(() => {
socket[kIdleSocketValidationTimeout] = null
socket[kIdleSocketValidation] = 2
if (client[kSocket] === socket && !socket.destroyed) {
client[kResume]()
}
- }, 0)
- socket[kIdleSocketValidationTimeout].unref?.()
+ })
}
/**
diff --git a/deps/undici/src/lib/handler/retry-handler.js b/deps/undici/src/lib/handler/retry-handler.js
index c62a2409f3a..2e36ab31daf 100644
--- a/deps/undici/src/lib/handler/retry-handler.js
+++ b/deps/undici/src/lib/handler/retry-handler.js
@@ -90,6 +90,7 @@ class RetryHandler {
this.end = null
this.etag = null
this.resume = null
+ this.headersSent = false
// Handle possible onConnect duplication
this.handler.onConnect(reason => {
@@ -102,6 +103,20 @@ class RetryHandler {
})
}
+ checkpointResponseEnd (headers, resume) {
+ if (this.end == null && this.opts.method !== 'HEAD') {
+ const contentLength = headers['content-length']
+ this.end = contentLength != null ? Number(contentLength) - 1 : null
+
+ assert(
+ this.end == null || Number.isFinite(this.end),
+ 'invalid content-length'
+ )
+ }
+
+ this.resume = this.end != null ? resume : null
+ }
+
onRequestSent () {
if (this.handler.onRequestSent) {
this.handler.onRequestSent()
@@ -191,6 +206,8 @@ class RetryHandler {
if (statusCode >= 300) {
if (this.retryOpts.statusCodes.includes(statusCode) === false) {
+ this.headersSent = true
+ this.checkpointResponseEnd(headers, resume)
return this.handler.onHeaders(
statusCode,
rawHeaders,
@@ -259,8 +276,15 @@ class RetryHandler {
const { start, size, end = size - 1 } = contentRange
- assert(this.start === start, 'content-range mismatch')
- assert(this.end == null || this.end === end, 'content-range mismatch')
+ if (this.start !== start || (this.end != null && this.end !== end)) {
+ this.abort(
+ new RequestRetryError('Content-Range mismatch', statusCode, {
+ headers,
+ data: { count: this.retryCount }
+ })
+ )
+ return false
+ }
this.resume = resume
return true
@@ -272,6 +296,7 @@ class RetryHandler {
const range = parseRangeHeader(headers['content-range'])
if (range == null) {
+ this.headersSent = true
return this.handler.onHeaders(
statusCode,
rawHeaders,
@@ -310,6 +335,7 @@ class RetryHandler {
)
this.resume = resume
+ this.headersSent = true
this.etag = headers.etag != null ? headers.etag : null
// Weak etags are not useful for comparison nor cache
@@ -349,7 +375,7 @@ class RetryHandler {
}
onError (err) {
- if (this.aborted || isDisturbed(this.opts.body)) {
+ if (this.aborted || isDisturbed(this.opts.body) || (this.headersSent && this.resume == null)) {
return this.handler.onError(err)
}
diff --git a/deps/undici/src/lib/llhttp/wasm_build_env.txt b/deps/undici/src/lib/llhttp/wasm_build_env.txt
index eb2202707a5..c18b346b579 100644
--- a/deps/undici/src/lib/llhttp/wasm_build_env.txt
+++ b/deps/undici/src/lib/llhttp/wasm_build_env.txt
@@ -1,12 +1,12 @@
-> undici@6.28.0 prebuild:wasm
+> undici@6.28.1 prebuild:wasm
> node build/wasm.js --prebuild
> docker build --platform=linux/x86_64 -t llhttp_wasm_builder -f /home/runner/work/node/node/deps/undici/src/build/Dockerfile /home/runner/work/node/node/deps/undici/src
-> undici@6.28.0 build:wasm
+> undici@6.28.1 build:wasm
> node build/wasm.js --docker
> docker run --rm -t --platform=linux/x86_64 --user 1001:1001 --mount type=bind,source=/home/runner/work/node/node/deps/undici/src/lib/llhttp,target=/home/node/undici/lib/llhttp llhttp_wasm_builder node build/wasm.js
diff --git a/deps/undici/src/lib/web/eventsource/eventsource-stream.js b/deps/undici/src/lib/web/eventsource/eventsource-stream.js
index 754934568d0..af04e16322c 100644
--- a/deps/undici/src/lib/web/eventsource/eventsource-stream.js
+++ b/deps/undici/src/lib/web/eventsource/eventsource-stream.js
@@ -23,6 +23,49 @@ const COLON = 0x3A
*/
const SPACE = 0x20
+const DATA = Buffer.from('data')
+const EVENT = Buffer.from('event')
+const ID = Buffer.from('id')
+const RETRY = Buffer.from('retry')
+
+function isASCIINumberBytes (buffer, start) {
+ if (start >= buffer.length) {
+ return false
+ }
+
+ for (let i = start; i < buffer.length; i++) {
+ if (buffer[i] < 0x30 || buffer[i] > 0x39) {
+ return false
+ }
+ }
+
+ return true
+}
+
+function isValidLastEventIdBytes (buffer, start) {
+ for (let i = start; i < buffer.length; i++) {
+ if (buffer[i] === 0x00) {
+ return false
+ }
+ }
+
+ return true
+}
+
+function isFieldName (line, length, field) {
+ if (length !== field.length) {
+ return false
+ }
+
+ for (let i = 0; i < length; i++) {
+ if (line[i] !== field[i]) {
+ return false
+ }
+ }
+
+ return true
+}
+
/**
* @typedef {object} EventSourceStreamEvent
* @type {object}
@@ -63,11 +106,14 @@ class EventSourceStream extends Transform {
eventEndCheck = false
/**
- * @type {Buffer}
+ * @type {Buffer[]}
*/
- buffer = null
+ chunks = []
+ chunkIndex = 0
pos = 0
+ lineChunkIndex = 0
+ linePos = 0
event = {
data: undefined,
@@ -106,92 +152,20 @@ class EventSourceStream extends Transform {
return
}
- // Cache the chunk in the buffer, as the data might not be complete while
- // processing it
- // TODO: Investigate if there is a more performant way to handle
- // incoming chunks
- // see: https://github.com/nodejs/undici/issues/2630
- if (this.buffer) {
- this.buffer = Buffer.concat([this.buffer, chunk])
- } else {
- this.buffer = chunk
- }
+ this.chunks.push(chunk)
// Strip leading byte-order-mark if we opened the stream and started
// the processing of the incoming data
if (this.checkBOM) {
- switch (this.buffer.length) {
- case 1:
- // Check if the first byte is the same as the first byte of the BOM
- if (this.buffer[0] === BOM[0]) {
- // If it is, we need to wait for more data
- callback()
- return
- }
- // Set the checkBOM flag to false as we don't need to check for the
- // BOM anymore
- this.checkBOM = false
-
- // The buffer only contains one byte so we need to wait for more data
- callback()
- return
- case 2:
- // Check if the first two bytes are the same as the first two bytes
- // of the BOM
- if (
- this.buffer[0] === BOM[0] &&
- this.buffer[1] === BOM[1]
- ) {
- // If it is, we need to wait for more data, because the third byte
- // is needed to determine if it is the BOM or not
- callback()
- return
- }
-
- // Set the checkBOM flag to false as we don't need to check for the
- // BOM anymore
- this.checkBOM = false
- break
- case 3:
- // Check if the first three bytes are the same as the first three
- // bytes of the BOM
- if (
- this.buffer[0] === BOM[0] &&
- this.buffer[1] === BOM[1] &&
- this.buffer[2] === BOM[2]
- ) {
- // If it is, we can drop the buffered data, as it is only the BOM
- this.buffer = Buffer.alloc(0)
- // Set the checkBOM flag to false as we don't need to check for the
- // BOM anymore
- this.checkBOM = false
-
- // Await more data
- callback()
- return
- }
- // If it is not the BOM, we can start processing the data
- this.checkBOM = false
- break
- default:
- // The buffer is longer than 3 bytes, so we can drop the BOM if it is
- // present
- if (
- this.buffer[0] === BOM[0] &&
- this.buffer[1] === BOM[1] &&
- this.buffer[2] === BOM[2]
- ) {
- // Remove the BOM from the buffer
- this.buffer = this.buffer.subarray(3)
- }
-
- // Set the checkBOM flag to false as we don't need to check for the
- this.checkBOM = false
- break
+ if (this.handleBOM()) {
+ callback()
+ return
}
}
- while (this.pos < this.buffer.length) {
+ while (this.hasCurrentByte()) {
+ const byte = this.currentByte()
+
// If the previous line ended with an end-of-line, we need to check
// if the next character is also an end-of-line.
if (this.eventEndCheck) {
@@ -204,10 +178,9 @@ class EventSourceStream extends Transform {
if (this.crlfCheck) {
// If the current character is a line feed, we can remove it
// from the buffer and reset the crlfCheck flag
- if (this.buffer[this.pos] === LF) {
- this.buffer = this.buffer.subarray(this.pos + 1)
- this.pos = 0
+ if (byte === LF) {
this.crlfCheck = false
+ this.consumeCurrentByte()
// It is possible that the line feed is not the end of the
// event. We need to check if the next character is an
@@ -223,19 +196,17 @@ class EventSourceStream extends Transform {
this.crlfCheck = false
}
- if (this.buffer[this.pos] === LF || this.buffer[this.pos] === CR) {
+ if (byte === LF || byte === CR) {
// If the current character is a carriage return, we need to
// set the crlfCheck flag to true, as we need to check if the
// next character is a line feed so we can remove it from the
// buffer
- if (this.buffer[this.pos] === CR) {
+ if (byte === CR) {
this.crlfCheck = true
}
- this.buffer = this.buffer.subarray(this.pos + 1)
- this.pos = 0
- if (
- this.event.data !== undefined || this.event.event || this.event.id || this.event.retry) {
+ this.consumeCurrentByte()
+ if (this.hasPendingEvent()) {
this.processEvent(this.event)
}
this.clearEvent()
@@ -249,22 +220,18 @@ class EventSourceStream extends Transform {
// If the current character is an end-of-line, we can process the
// line
- if (this.buffer[this.pos] === LF || this.buffer[this.pos] === CR) {
+ if (byte === LF || byte === CR) {
// If the current character is a carriage return, we need to
// set the crlfCheck flag to true, as we need to check if the
// next character is a line feed
- if (this.buffer[this.pos] === CR) {
+ if (byte === CR) {
this.crlfCheck = true
}
// In any case, we can process the line as we reached an
// end-of-line character
- this.parseLine(this.buffer.subarray(0, this.pos), this.event)
-
- // Remove the processed line from the buffer
- this.buffer = this.buffer.subarray(this.pos + 1)
- // Reset the position as we removed the processed line from the buffer
- this.pos = 0
+ this.parseLine(this.readLine(), this.event)
+ this.consumeCurrentByte()
// A line was processed and this could be the end of the event. We need
// to check if the next line is empty to determine if the event is
// finished.
@@ -272,7 +239,7 @@ class EventSourceStream extends Transform {
continue
}
- this.pos++
+ this.advanceCursor()
}
callback()
@@ -297,64 +264,53 @@ class EventSourceStream extends Transform {
return
}
- let field = ''
- let value = ''
+ let fieldLength = line.length
+ let valueStart = line.length
// If the line contains a U+003A COLON character (:)
if (colonPosition !== -1) {
- // Collect the characters on the line before the first U+003A COLON
- // character (:), and let field be that string.
- // TODO: Investigate if there is a more performant way to extract the
- // field
- // see: https://github.com/nodejs/undici/issues/2630
- field = line.subarray(0, colonPosition).toString('utf8')
+ fieldLength = colonPosition
// Collect the characters on the line after the first U+003A COLON
// character (:), and let value be that string.
// If value starts with a U+0020 SPACE character, remove it from value.
- let valueStart = colonPosition + 1
+ valueStart = colonPosition + 1
if (line[valueStart] === SPACE) {
++valueStart
}
- // TODO: Investigate if there is a more performant way to extract the
- // value
- // see: https://github.com/nodejs/undici/issues/2630
- value = line.subarray(valueStart).toString('utf8')
-
- // Otherwise, the string is not empty but does not contain a U+003A COLON
- // character (:)
- } else {
- // Process the field using the steps described below, using the whole
- // line as the field name, and the empty string as the field value.
- field = line.toString('utf8')
- value = ''
}
- // Modify the event with the field name and value. The value is also
- // decoded as UTF-8
- switch (field) {
- case 'data':
- if (event[field] === undefined) {
- event[field] = value
- } else {
- event[field] += `\n${value}`
- }
- break
- case 'retry':
- if (isASCIINumber(value)) {
- event[field] = value
- }
- break
- case 'id':
- if (isValidLastEventId(value)) {
- event[field] = value
- }
- break
- case 'event':
- if (value.length > 0) {
- event[field] = value
- }
- break
+ if (isFieldName(line, fieldLength, DATA)) {
+ const value = line.toString('utf8', valueStart)
+
+ if (event.data === undefined) {
+ event.data = value
+ } else {
+ event.data += `\n${value}`
+ }
+ return
+ }
+
+ if (isFieldName(line, fieldLength, RETRY)) {
+ if (isASCIINumberBytes(line, valueStart)) {
+ event.retry = line.toString('utf8', valueStart)
+ }
+ return
+ }
+
+ if (isFieldName(line, fieldLength, ID)) {
+ if (isValidLastEventIdBytes(line, valueStart)) {
+ event.id = line.toString('utf8', valueStart)
+ }
+ return
+ }
+
+ if (isFieldName(line, fieldLength, EVENT)) {
+ const value = line.toString('utf8', valueStart)
+
+ if (value.length > 0) {
+ event.event = value
+ }
}
}
@@ -384,12 +340,151 @@ class EventSourceStream extends Transform {
}
clearEvent () {
- this.event = {
- data: undefined,
- event: undefined,
- id: undefined,
- retry: undefined
+ this.event.data = undefined
+ this.event.event = undefined
+ this.event.id = undefined
+ this.event.retry = undefined
+ }
+
+ hasPendingEvent () {
+ return this.event.data !== undefined ||
+ this.event.event !== undefined ||
+ this.event.id !== undefined ||
+ this.event.retry !== undefined
+ }
+
+ hasCurrentByte () {
+ return this.chunkIndex < this.chunks.length &&
+ this.pos < this.chunks[this.chunkIndex].length
+ }
+
+ currentByte () {
+ return this.chunks[this.chunkIndex][this.pos]
+ }
+
+ consumeCurrentByte () {
+ this.advanceCursor()
+ this.syncLineStartToCursor()
+ }
+
+ advanceCursor () {
+ this.pos++
+
+ while (this.chunkIndex < this.chunks.length && this.pos >= this.chunks[this.chunkIndex].length) {
+ this.chunkIndex++
+ this.pos = 0
+ }
+ }
+
+ syncLineStartToCursor () {
+ this.lineChunkIndex = this.chunkIndex
+ this.linePos = this.pos
+ this.dropConsumedChunks()
+ }
+
+ dropConsumedChunks () {
+ while (this.lineChunkIndex > 0) {
+ this.chunks.shift()
+ this.lineChunkIndex--
+ this.chunkIndex--
+ }
+
+ if (this.chunkIndex === this.chunks.length) {
+ this.chunks.length = 0
+ this.chunkIndex = 0
+ this.pos = 0
+ this.lineChunkIndex = 0
+ this.linePos = 0
+ }
+ }
+
+ readLine () {
+ if (this.lineChunkIndex === this.chunkIndex) {
+ return this.chunks[this.chunkIndex].subarray(this.linePos, this.pos)
+ }
+
+ const chunks = []
+ let length = 0
+
+ for (let i = this.lineChunkIndex; i <= this.chunkIndex; i++) {
+ const chunk = this.chunks[i]
+ const start = i === this.lineChunkIndex ? this.linePos : 0
+ const end = i === this.chunkIndex ? this.pos : chunk.length
+ const slice = chunk.subarray(start, end)
+ length += slice.length
+ chunks.push(slice)
+ }
+
+ return Buffer.concat(chunks, length)
+ }
+
+ peekBufferedByte (offset) {
+ let chunkIndex = this.lineChunkIndex
+ let pos = this.linePos
+
+ while (chunkIndex < this.chunks.length) {
+ const chunk = this.chunks[chunkIndex]
+ const remaining = chunk.length - pos
+
+ if (offset < remaining) {
+ return chunk[pos + offset]
+ }
+
+ offset -= remaining
+ chunkIndex++
+ pos = 0
+ }
+ }
+
+ discardLeadingBytes (count) {
+ while (count > 0 && this.lineChunkIndex < this.chunks.length) {
+ const chunk = this.chunks[this.lineChunkIndex]
+ const remaining = chunk.length - this.linePos
+
+ if (count < remaining) {
+ this.linePos += count
+ count = 0
+ } else {
+ count -= remaining
+ this.lineChunkIndex++
+ this.linePos = 0
+ }
+ }
+
+ this.chunkIndex = this.lineChunkIndex
+ this.pos = this.linePos
+ this.dropConsumedChunks()
+ }
+
+ handleBOM () {
+ const first = this.peekBufferedByte(0)
+ const second = this.peekBufferedByte(1)
+ const third = this.peekBufferedByte(2)
+
+ if (second === undefined) {
+ if (first === BOM[0]) {
+ return true
+ }
+
+ this.checkBOM = false
+ return true
+ }
+
+ if (third === undefined) {
+ if (first === BOM[0] && second === BOM[1]) {
+ return true
+ }
+
+ this.checkBOM = false
+ return false
}
+
+ if (first === BOM[0] && second === BOM[1] && third === BOM[2]) {
+ this.discardLeadingBytes(3)
+ }
+
+ this.checkBOM = false
+ return !this.hasCurrentByte()
}
}
diff --git a/deps/undici/src/lib/web/websocket/connection.js b/deps/undici/src/lib/web/websocket/connection.js
index bb87d361e4b..1197b9b650c 100644
--- a/deps/undici/src/lib/web/websocket/connection.js
+++ b/deps/undici/src/lib/web/websocket/connection.js
@@ -192,7 +192,7 @@ function establishWebSocketConnection (url, protocols, client, ws, onEstablish,
// is specified, the server needs to include the same field and one of
// the selected subprotocol values in its response for the connection to
// be established.
- if (!requestProtocols.includes(secProtocol)) {
+ if (requestProtocols === null || !requestProtocols.includes(secProtocol)) {
failWebsocketConnection(ws, 'Protocol was not set in the opening handshake.')
return
}
diff --git a/deps/undici/src/lib/web/websocket/permessage-deflate.js b/deps/undici/src/lib/web/websocket/permessage-deflate.js
index 6a6e43899c5..0b3d493db82 100644
--- a/deps/undici/src/lib/web/websocket/permessage-deflate.js
+++ b/deps/undici/src/lib/web/websocket/permessage-deflate.js
@@ -63,7 +63,12 @@ class PerMessageDeflate {
if (this.#maxPayloadSize > 0 && this.#inflate[kLength] > this.#maxPayloadSize) {
callback(new MessageSizeExceededError())
+ // The inflater may still hold buffered input that can emit a late
+ // zlib error. Remove the data listener, then deterministically stop
+ // the stream so a subsequent 'error' cannot fire without a listener
+ // (which would terminate the process as an unhandled error event).
this.#inflate.removeAllListeners()
+ this.#inflate.destroy()
this.#inflate = null
return
}
diff --git a/deps/undici/src/package.json b/deps/undici/src/package.json
index cd46deca244..ce7be625a4d 100644
--- a/deps/undici/src/package.json
+++ b/deps/undici/src/package.json
@@ -1,6 +1,6 @@
{
"name": "undici",
- "version": "6.28.0",
+ "version": "6.28.1",
"description": "An HTTP/1.1 client, written from scratch for Node.js",
"homepage": "https://undici.nodejs.org",
"bugs": {
diff --git a/deps/undici/undici.js b/deps/undici/undici.js
index b34137a0458..942c7ee1166 100644
--- a/deps/undici/undici.js
+++ b/deps/undici/undici.js
@@ -6580,7 +6580,7 @@ var require_client_h1 = __commonJS({
__name(connectH1, "connectH1");
function clearIdleSocketValidation(socket) {
if (socket[kIdleSocketValidationTimeout]) {
- clearTimeout(socket[kIdleSocketValidationTimeout]);
+ clearImmediate(socket[kIdleSocketValidationTimeout]);
socket[kIdleSocketValidationTimeout] = null;
}
socket[kIdleSocketValidation] = 0;
@@ -6588,14 +6588,13 @@ var require_client_h1 = __commonJS({
__name(clearIdleSocketValidation, "clearIdleSocketValidation");
function scheduleIdleSocketValidation(client, socket) {
socket[kIdleSocketValidation] = 1;
- socket[kIdleSocketValidationTimeout] = setTimeout(() => {
+ socket[kIdleSocketValidationTimeout] = setImmediate(() => {
socket[kIdleSocketValidationTimeout] = null;
socket[kIdleSocketValidation] = 2;
if (client[kSocket] === socket && !socket.destroyed) {
client[kResume]();
}
- }, 0);
- socket[kIdleSocketValidationTimeout].unref?.();
+ });
}
__name(scheduleIdleSocketValidation, "scheduleIdleSocketValidation");
function resumeH1(client) {
@@ -12335,7 +12334,7 @@ var require_connection = __commonJS({
const secProtocol = response.headersList.get("Sec-WebSocket-Protocol");
if (secProtocol !== null) {
const requestProtocols = getDecodeSplit("sec-websocket-protocol", request.headersList);
- if (!requestProtocols.includes(secProtocol)) {
+ if (requestProtocols === null || !requestProtocols.includes(secProtocol)) {
failWebsocketConnection(ws, "Protocol was not set in the opening handshake.");
return;
}
@@ -12491,6 +12490,7 @@ var require_permessage_deflate = __commonJS({
if (this.#maxPayloadSize > 0 && this.#inflate[kLength] > this.#maxPayloadSize) {
callback(new MessageSizeExceededError());
this.#inflate.removeAllListeners();
+ this.#inflate.destroy();
this.#inflate = null;
return;
}
@@ -13421,6 +13421,43 @@ var require_eventsource_stream = __commonJS({
var CR = 13;
var COLON = 58;
var SPACE = 32;
+ var DATA = Buffer.from("data");
+ var EVENT = Buffer.from("event");
+ var ID = Buffer.from("id");
+ var RETRY = Buffer.from("retry");
+ function isASCIINumberBytes(buffer, start) {
+ if (start >= buffer.length) {
+ return false;
+ }
+ for (let i = start; i < buffer.length; i++) {
+ if (buffer[i] < 48 || buffer[i] > 57) {
+ return false;
+ }
+ }
+ return true;
+ }
+ __name(isASCIINumberBytes, "isASCIINumberBytes");
+ function isValidLastEventIdBytes(buffer, start) {
+ for (let i = start; i < buffer.length; i++) {
+ if (buffer[i] === 0) {
+ return false;
+ }
+ }
+ return true;
+ }
+ __name(isValidLastEventIdBytes, "isValidLastEventIdBytes");
+ function isFieldName(line, length, field) {
+ if (length !== field.length) {
+ return false;
+ }
+ for (let i = 0; i < length; i++) {
+ if (line[i] !== field[i]) {
+ return false;
+ }
+ }
+ return true;
+ }
+ __name(isFieldName, "isFieldName");
var EventSourceStream = class extends Transform {
static {
__name(this, "EventSourceStream");
@@ -13443,10 +13480,13 @@ var require_eventsource_stream = __commonJS({
*/
eventEndCheck = false;
/**
- * @type {Buffer}
+ * @type {Buffer[]}
*/
- buffer = null;
+ chunks = [];
+ chunkIndex = 0;
pos = 0;
+ lineChunkIndex = 0;
+ linePos = 0;
event = {
data: void 0,
event: void 0,
@@ -13477,63 +13517,30 @@ var require_eventsource_stream = __commonJS({
callback();
return;
}
- if (this.buffer) {
- this.buffer = Buffer.concat([this.buffer, chunk]);
- } else {
- this.buffer = chunk;
- }
+ this.chunks.push(chunk);
if (this.checkBOM) {
- switch (this.buffer.length) {
- case 1:
- if (this.buffer[0] === BOM[0]) {
- callback();
- return;
- }
- this.checkBOM = false;
- callback();
- return;
- case 2:
- if (this.buffer[0] === BOM[0] && this.buffer[1] === BOM[1]) {
- callback();
- return;
- }
- this.checkBOM = false;
- break;
- case 3:
- if (this.buffer[0] === BOM[0] && this.buffer[1] === BOM[1] && this.buffer[2] === BOM[2]) {
- this.buffer = Buffer.alloc(0);
- this.checkBOM = false;
- callback();
- return;
- }
- this.checkBOM = false;
- break;
- default:
- if (this.buffer[0] === BOM[0] && this.buffer[1] === BOM[1] && this.buffer[2] === BOM[2]) {
- this.buffer = this.buffer.subarray(3);
- }
- this.checkBOM = false;
- break;
+ if (this.handleBOM()) {
+ callback();
+ return;
}
}
- while (this.pos < this.buffer.length) {
+ while (this.hasCurrentByte()) {
+ const byte = this.currentByte();
if (this.eventEndCheck) {
if (this.crlfCheck) {
- if (this.buffer[this.pos] === LF) {
- this.buffer = this.buffer.subarray(this.pos + 1);
- this.pos = 0;
+ if (byte === LF) {
this.crlfCheck = false;
+ this.consumeCurrentByte();
continue;
}
this.crlfCheck = false;
}
- if (this.buffer[this.pos] === LF || this.buffer[this.pos] === CR) {
- if (this.buffer[this.pos] === CR) {
+ if (byte === LF || byte === CR) {
+ if (byte === CR) {
this.crlfCheck = true;
}
- this.buffer = this.buffer.subarray(this.pos + 1);
- this.pos = 0;
- if (this.event.data !== void 0 || this.event.event || this.event.id || this.event.retry) {
+ this.consumeCurrentByte();
+ if (this.hasPendingEvent()) {
this.processEvent(this.event);
}
this.clearEvent();
@@ -13542,17 +13549,16 @@ var require_eventsource_stream = __commonJS({
this.eventEndCheck = false;
continue;
}
- if (this.buffer[this.pos] === LF || this.buffer[this.pos] === CR) {
- if (this.buffer[this.pos] === CR) {
+ if (byte === LF || byte === CR) {
+ if (byte === CR) {
this.crlfCheck = true;
}
- this.parseLine(this.buffer.subarray(0, this.pos), this.event);
- this.buffer = this.buffer.subarray(this.pos + 1);
- this.pos = 0;
+ this.parseLine(this.readLine(), this.event);
+ this.consumeCurrentByte();
this.eventEndCheck = true;
continue;
}
- this.pos++;
+ this.advanceCursor();
}
callback();
}
@@ -13568,43 +13574,42 @@ var require_eventsource_stream = __commonJS({
if (colonPosition === 0) {
return;
}
- let field = "";
- let value = "";
+ let fieldLength = line.length;
+ let valueStart = line.length;
if (colonPosition !== -1) {
- field = line.subarray(0, colonPosition).toString("utf8");
- let valueStart = colonPosition + 1;
+ fieldLength = colonPosition;
+ valueStart = colonPosition + 1;
if (line[valueStart] === SPACE) {
++valueStart;
}
- value = line.subarray(valueStart).toString("utf8");
- } else {
- field = line.toString("utf8");
- value = "";
}
- switch (field) {
- case "data":
- if (event[field] === void 0) {
- event[field] = value;
- } else {
- event[field] += `
+ if (isFieldName(line, fieldLength, DATA)) {
+ const value = line.toString("utf8", valueStart);
+ if (event.data === void 0) {
+ event.data = value;
+ } else {
+ event.data += `
${value}`;
- }
- break;
- case "retry":
- if (isASCIINumber(value)) {
- event[field] = value;
- }
- break;
- case "id":
- if (isValidLastEventId(value)) {
- event[field] = value;
- }
- break;
- case "event":
- if (value.length > 0) {
- event[field] = value;
- }
- break;
+ }
+ return;
+ }
+ if (isFieldName(line, fieldLength, RETRY)) {
+ if (isASCIINumberBytes(line, valueStart)) {
+ event.retry = line.toString("utf8", valueStart);
+ }
+ return;
+ }
+ if (isFieldName(line, fieldLength, ID)) {
+ if (isValidLastEventIdBytes(line, valueStart)) {
+ event.id = line.toString("utf8", valueStart);
+ }
+ return;
+ }
+ if (isFieldName(line, fieldLength, EVENT)) {
+ const value = line.toString("utf8", valueStart);
+ if (value.length > 0) {
+ event.event = value;
+ }
}
}
/**
@@ -13629,12 +13634,120 @@ ${value}`;
}
}
clearEvent() {
- this.event = {
- data: void 0,
- event: void 0,
- id: void 0,
- retry: void 0
- };
+ this.event.data = void 0;
+ this.event.event = void 0;
+ this.event.id = void 0;
+ this.event.retry = void 0;
+ }
+ hasPendingEvent() {
+ return this.event.data !== void 0 || this.event.event !== void 0 || this.event.id !== void 0 || this.event.retry !== void 0;
+ }
+ hasCurrentByte() {
+ return this.chunkIndex < this.chunks.length && this.pos < this.chunks[this.chunkIndex].length;
+ }
+ currentByte() {
+ return this.chunks[this.chunkIndex][this.pos];
+ }
+ consumeCurrentByte() {
+ this.advanceCursor();
+ this.syncLineStartToCursor();
+ }
+ advanceCursor() {
+ this.pos++;
+ while (this.chunkIndex < this.chunks.length && this.pos >= this.chunks[this.chunkIndex].length) {
+ this.chunkIndex++;
+ this.pos = 0;
+ }
+ }
+ syncLineStartToCursor() {
+ this.lineChunkIndex = this.chunkIndex;
+ this.linePos = this.pos;
+ this.dropConsumedChunks();
+ }
+ dropConsumedChunks() {
+ while (this.lineChunkIndex > 0) {
+ this.chunks.shift();
+ this.lineChunkIndex--;
+ this.chunkIndex--;
+ }
+ if (this.chunkIndex === this.chunks.length) {
+ this.chunks.length = 0;
+ this.chunkIndex = 0;
+ this.pos = 0;
+ this.lineChunkIndex = 0;
+ this.linePos = 0;
+ }
+ }
+ readLine() {
+ if (this.lineChunkIndex === this.chunkIndex) {
+ return this.chunks[this.chunkIndex].subarray(this.linePos, this.pos);
+ }
+ const chunks = [];
+ let length = 0;
+ for (let i = this.lineChunkIndex; i <= this.chunkIndex; i++) {
+ const chunk = this.chunks[i];
+ const start = i === this.lineChunkIndex ? this.linePos : 0;
+ const end = i === this.chunkIndex ? this.pos : chunk.length;
+ const slice = chunk.subarray(start, end);
+ length += slice.length;
+ chunks.push(slice);
+ }
+ return Buffer.concat(chunks, length);
+ }
+ peekBufferedByte(offset) {
+ let chunkIndex = this.lineChunkIndex;
+ let pos = this.linePos;
+ while (chunkIndex < this.chunks.length) {
+ const chunk = this.chunks[chunkIndex];
+ const remaining = chunk.length - pos;
+ if (offset < remaining) {
+ return chunk[pos + offset];
+ }
+ offset -= remaining;
+ chunkIndex++;
+ pos = 0;
+ }
+ }
+ discardLeadingBytes(count) {
+ while (count > 0 && this.lineChunkIndex < this.chunks.length) {
+ const chunk = this.chunks[this.lineChunkIndex];
+ const remaining = chunk.length - this.linePos;
+ if (count < remaining) {
+ this.linePos += count;
+ count = 0;
+ } else {
+ count -= remaining;
+ this.lineChunkIndex++;
+ this.linePos = 0;
+ }
+ }
+ this.chunkIndex = this.lineChunkIndex;
+ this.pos = this.linePos;
+ this.dropConsumedChunks();
+ }
+ handleBOM() {
+ const first = this.peekBufferedByte(0);
+ const second = this.peekBufferedByte(1);
+ const third = this.peekBufferedByte(2);
+ if (second === void 0) {
+ if (first === BOM[0]) {
+ return true;
+ }
+ this.checkBOM = false;
+ return true;
+ }
+ if (third === void 0) {
+ if (first === BOM[0] && second === BOM[1]) {
+ return true;
+ }
+ this.checkBOM = false;
+ return false;
+ }
+ if (first === BOM[0] && second === BOM[1] && third === BOM[2]) {
+ this.discardLeadingBytes(3);
+ }
+ this.checkBOM = false;
+ return !this.hasCurrentByte();
}
};
module2.exports = {
diff --git a/deps/v8/src/logging/code-events.h b/deps/v8/src/logging/code-events.h
index 8aceb3d7d32..f702e393cf7 100644
--- a/deps/v8/src/logging/code-events.h
+++ b/deps/v8/src/logging/code-events.h
@@ -125,7 +125,7 @@ class Logger {
Logger& operator=(const Logger&) = delete;
bool AddListener(LogEventListener* listener) {
- base::MutexGuard guard(&mutex_);
+ base::RecursiveMutexGuard guard(&mutex_);
auto position = std::find(listeners_.begin(), listeners_.end(), listener);
if (position != listeners_.end()) return false;
// Add the listener to the end and update the element
@@ -134,7 +134,7 @@ class Logger {
}
bool RemoveListener(LogEventListener* listener) {
- base::MutexGuard guard(&mutex_);
+ base::RecursiveMutexGuard guard(&mutex_);
auto position = std::find(listeners_.begin(), listeners_.end(), listener);
if (position == listeners_.end()) return false;
listeners_.erase(position);
@@ -142,7 +142,7 @@ class Logger {
}
bool is_listening_to_code_events() {
- base::MutexGuard guard(&mutex_);
+ base::RecursiveMutexGuard guard(&mutex_);
for (auto listener : listeners_) {
if (listener->is_listening_to_code_events()) return true;
}
@@ -150,7 +150,7 @@ class Logger {
}
bool allows_code_compaction() {
- base::MutexGuard guard(&mutex_);
+ base::RecursiveMutexGuard guard(&mutex_);
for (auto listener : listeners_) {
if (!listener->allows_code_compaction()) return false;
}
@@ -159,7 +159,7 @@ class Logger {
void CodeCreateEvent(CodeTag tag, Handle code,
const char* comment) {
- base::MutexGuard guard(&mutex_);
+ base::RecursiveMutexGuard guard(&mutex_);
for (auto listener : listeners_) {
listener->CodeCreateEvent(tag, code, comment);
}
@@ -167,7 +167,7 @@ class Logger {
void CodeCreateEvent(CodeTag tag, Handle code,
Handle name) {
- base::MutexGuard guard(&mutex_);
+ base::RecursiveMutexGuard guard(&mutex_);
for (auto listener : listeners_) {
listener->CodeCreateEvent(tag, code, name);
}
@@ -175,7 +175,7 @@ class Logger {
void CodeCreateEvent(CodeTag tag, Handle code,
Handle shared, Handle name) {
- base::MutexGuard guard(&mutex_);
+ base::RecursiveMutexGuard guard(&mutex_);
for (auto listener : listeners_) {
listener->CodeCreateEvent(tag, code, shared, name);
}
@@ -184,7 +184,7 @@ class Logger {
void CodeCreateEvent(CodeTag tag, Handle code,
Handle shared, Handle source,
int line, int column) {
- base::MutexGuard guard(&mutex_);
+ base::RecursiveMutexGuard guard(&mutex_);
for (auto listener : listeners_) {
listener->CodeCreateEvent(tag, code, shared, source, line, column);
}
@@ -194,7 +194,7 @@ class Logger {
void CodeCreateEvent(CodeTag tag, const wasm::WasmCode* code,
wasm::WasmName name, const char* source_url,
int code_offset, int script_id) {
- base::MutexGuard guard(&mutex_);
+ base::RecursiveMutexGuard guard(&mutex_);
for (auto listener : listeners_) {
listener->CodeCreateEvent(tag, code, name, source_url, code_offset,
script_id);
@@ -203,28 +203,28 @@ class Logger {
#endif // V8_ENABLE_WEBASSEMBLY
void CallbackEvent(Handle name, Address entry_point) {
- base::MutexGuard guard(&mutex_);
+ base::RecursiveMutexGuard guard(&mutex_);
for (auto listener : listeners_) {
listener->CallbackEvent(name, entry_point);
}
}
void GetterCallbackEvent(Handle name, Address entry_point) {
- base::MutexGuard guard(&mutex_);
+ base::RecursiveMutexGuard guard(&mutex_);
for (auto listener : listeners_) {
listener->GetterCallbackEvent(name, entry_point);
}
}
void SetterCallbackEvent(Handle name, Address entry_point) {
- base::MutexGuard guard(&mutex_);
+ base::RecursiveMutexGuard guard(&mutex_);
for (auto listener : listeners_) {
listener->SetterCallbackEvent(name, entry_point);
}
}
void RegExpCodeCreateEvent(Handle code, Handle source) {
- base::MutexGuard guard(&mutex_);
+ base::RecursiveMutexGuard guard(&mutex_);
for (auto listener : listeners_) {
listener->RegExpCodeCreateEvent(code, source);
}
@@ -232,35 +232,35 @@ class Logger {
void CodeMoveEvent(Tagged from,
Tagged to) {
- base::MutexGuard guard(&mutex_);
+ base::RecursiveMutexGuard guard(&mutex_);
for (auto listener : listeners_) {
listener->CodeMoveEvent(from, to);
}
}
void BytecodeMoveEvent(Tagged from, Tagged to) {
- base::MutexGuard guard(&mutex_);
+ base::RecursiveMutexGuard guard(&mutex_);
for (auto listener : listeners_) {
listener->BytecodeMoveEvent(from, to);
}
}
void SharedFunctionInfoMoveEvent(Address from, Address to) {
- base::MutexGuard guard(&mutex_);
+ base::RecursiveMutexGuard guard(&mutex_);
for (auto listener : listeners_) {
listener->SharedFunctionInfoMoveEvent(from, to);
}
}
void NativeContextMoveEvent(Address from, Address to) {
- base::MutexGuard guard(&mutex_);
+ base::RecursiveMutexGuard guard(&mutex_);
for (auto listener : listeners_) {
listener->NativeContextMoveEvent(from, to);
}
}
void CodeMovingGCEvent() {
- base::MutexGuard guard(&mutex_);
+ base::RecursiveMutexGuard guard(&mutex_);
for (auto listener : listeners_) {
listener->CodeMovingGCEvent();
}
@@ -268,7 +268,7 @@ class Logger {
void CodeDisableOptEvent(Handle code,
Handle shared) {
- base::MutexGuard guard(&mutex_);
+ base::RecursiveMutexGuard guard(&mutex_);
for (auto listener : listeners_) {
listener->CodeDisableOptEvent(code, shared);
}
@@ -276,7 +276,7 @@ class Logger {
void CodeDeoptEvent(Handle code, DeoptimizeKind kind, Address pc,
int fp_to_sp_delta) {
- base::MutexGuard guard(&mutex_);
+ base::RecursiveMutexGuard guard(&mutex_);
for (auto listener : listeners_) {
listener->CodeDeoptEvent(code, kind, pc, fp_to_sp_delta);
}
@@ -285,14 +285,14 @@ class Logger {
void CodeDependencyChangeEvent(Handle code,
Handle sfi,
const char* reason) {
- base::MutexGuard guard(&mutex_);
+ base::RecursiveMutexGuard guard(&mutex_);
for (auto listener : listeners_) {
listener->CodeDependencyChangeEvent(code, sfi, reason);
}
}
void WeakCodeClearEvent() {
- base::MutexGuard guard(&mutex_);
+ base::RecursiveMutexGuard guard(&mutex_);
for (auto listener : listeners_) {
listener->WeakCodeClearEvent();
}
@@ -300,7 +300,7 @@ class Logger {
private:
std::vector listeners_;
- base::Mutex mutex_;
+ base::RecursiveMutex mutex_;
};
} // namespace internal
diff --git a/doc/api/n-api.md b/doc/api/n-api.md
index b18048338f8..aada99036ff 100644
--- a/doc/api/n-api.md
+++ b/doc/api/n-api.md
@@ -2565,6 +2565,41 @@ object just created has been garbage collected.
JavaScript `ArrayBuffer`s are described in
[Section ArrayBuffer objects][] of the ECMAScript Language Specification.
+#### `node_api_create_external_sharedarraybuffer`
+
+
+
+```c
+napi_status
+node_api_create_external_sharedarraybuffer(napi_env env,
+ void* external_data,
+ size_t byte_length,
+ node_api_noenv_finalize finalize_cb,
+ void* finalize_hint,
+ napi_value* result)
+```
+
+* `[in] env`: The environment that the API is invoked under.
+* `[in] external_data`: Pointer to the underlying byte buffer of the
+ `SharedArrayBuffer`.
+* `[in] byte_length`: The length in bytes of the underlying buffer.
+* `[in] finalize_cb`: Optional callback to call when the `SharedArrayBuffer` is
+ being collected. Called on an arbitrary thread. Because a `SharedArrayBuffer`
+ can outlive the environment it's created in, the callback does not receive a
+ reference to `env`.
+* `[in] finalize_hint`: Optional hint to pass to the finalize callback during
+ collection.
+* `[out] result`: A `napi_value` representing a JavaScript `SharedArrayBuffer`.
+
+Returns `napi_ok` if the API succeeded.
+
+Create a `SharedArrayBuffer` with externally managed memory.
+
+See the entry on [`napi_create_external_arraybuffer`][] for runtime
+compatibility.
+
#### `napi_create_external_buffer`
```c
@@ -2713,21 +2752,25 @@ napi_status napi_create_typedarray(napi_env env,
* `[in] env`: The environment that the API is invoked under.
* `[in] type`: Scalar datatype of the elements within the `TypedArray`.
* `[in] length`: Number of elements in the `TypedArray`.
-* `[in] arraybuffer`: `ArrayBuffer` underlying the typed array.
-* `[in] byte_offset`: The byte offset within the `ArrayBuffer` from which to
- start projecting the `TypedArray`.
+* `[in] arraybuffer`: `ArrayBuffer` or `SharedArrayBuffer` underlying the
+ typed array.
+* `[in] byte_offset`: The byte offset within the `ArrayBuffer` or
+ `SharedArrayBuffer` from which to start projecting the `TypedArray`.
* `[out] result`: A `napi_value` representing a JavaScript `TypedArray`.
Returns `napi_ok` if the API succeeded.
This API creates a JavaScript `TypedArray` object over an existing
-`ArrayBuffer`. `TypedArray` objects provide an array-like view over an
-underlying data buffer where each element has the same underlying binary scalar
-datatype.
+`ArrayBuffer` or `SharedArrayBuffer`. `TypedArray` objects provide an
+array-like view over an underlying data buffer where each element has the same
+underlying binary scalar datatype.
+
+It is required that `(length * size_of_element) + byte_offset` is less than or
+equal to the size in bytes of the `ArrayBuffer` or `SharedArrayBuffer` passed
+in. If not, a `RangeError` exception is raised.
-It's required that `(length * size_of_element) + byte_offset` should
-be <= the size in bytes of the array passed in. If not, a `RangeError` exception
-is raised.
+For element sizes greater than 1, `byte_offset` is required to be a multiple
+of the element size. If not, a `RangeError` exception is raised.
JavaScript `TypedArray` objects are described in
[Section TypedArray objects][] of the ECMAScript Language Specification.
@@ -3404,7 +3447,8 @@ napi_status napi_get_typedarray_info(napi_env env,
the `byte_offset` value so that it points to the first element in the
`TypedArray`. If the length of the array is `0`, this may be `NULL` or
any other pointer value.
-* `[out] arraybuffer`: The `ArrayBuffer` underlying the `TypedArray`.
+* `[out] arraybuffer`: The `ArrayBuffer` or `SharedArrayBuffer` underlying the
+ `TypedArray`.
* `[out] byte_offset`: The byte offset within the underlying native array
at which the first element of the arrays is located. The value for the data
parameter has already been adjusted so that data points to the first element
diff --git a/doc/api/sqlite.md b/doc/api/sqlite.md
index cb41b456d26..739be4ccd44 100644
--- a/doc/api/sqlite.md
+++ b/doc/api/sqlite.md
@@ -366,8 +366,12 @@ added: v22.12.0
* `changeset` {Uint8Array} A binary changeset or patchset.
* `options` {Object} The configuration options for how the changes will be applied.
- * `filter` {Function} Skip changes that, when targeted table name is supplied to this function, return a truthy value.
- By default, all changes are attempted.
+ * `filter` {Function} for each table affected by at least
+ one change in the changeset, the `filter` callback is invoked with the
+ table name as the first argument. If the return value is falsy, then no
+ attempt is made to apply any changes to the table.
+ Otherwise, if the return value is truthy or no `filter` callback is provided,
+ all changes related to the table are attempted.
* `onConflict` {Function} A function that determines how to handle conflicts. The function receives one argument,
which can be one of the following values:
diff --git a/doc/changelogs/CHANGELOG_V22.md b/doc/changelogs/CHANGELOG_V22.md
index 0e9f80e98d8..f2ad6a96baa 100644
--- a/doc/changelogs/CHANGELOG_V22.md
+++ b/doc/changelogs/CHANGELOG_V22.md
@@ -9,6 +9,7 @@
|