diff --git a/packages/0/000update-repos/.files b/packages/0/000update-repos/.files
index 03fdbe5ed16..aa45f67fb51 100644
Binary files a/packages/0/000update-repos/.files and b/packages/0/000update-repos/.files differ
diff --git a/packages/0/000update-repos/.rev b/packages/0/000update-repos/.rev
index b83bad1f6a0..42a5f5f423c 100644
--- a/packages/0/000update-repos/.rev
+++ b/packages/0/000update-repos/.rev
@@ -16280,4 +16280,11 @@ Switch to repomd for 42.1, its susetags are bugged
staging-bot
Automatic update
+
+ 47482eedeea31dde60eb43072b05af60
+ unknown
+
+ staging-bot
+ Automatic update
+
diff --git a/packages/0/000update-repos/factory:non-oss_4114.2.packages.zst b/packages/0/000update-repos/factory:non-oss_4114.2.packages.zst
new file mode 120000
index 00000000000..d08bd76d485
--- /dev/null
+++ b/packages/0/000update-repos/factory:non-oss_4114.2.packages.zst
@@ -0,0 +1 @@
+/ipfs/bafkreihaci5d4b45stk4fmtggijapmid7gxkf4idb5k7prq6lslyor6eku
\ No newline at end of file
diff --git a/packages/0/000update-repos/factory_20240820.packages.zst b/packages/0/000update-repos/factory_20240820.packages.zst
new file mode 120000
index 00000000000..67ec968a580
--- /dev/null
+++ b/packages/0/000update-repos/factory_20240820.packages.zst
@@ -0,0 +1 @@
+/ipfs/bafybeiak5rha7g4xvoy65lsa2xfwff5dbcaba7w6x4oxpe5dcpbc2umt7m
\ No newline at end of file
diff --git a/packages/_/_project/_attribute b/packages/_/_project/_attribute
index e5c4fa84e3e..8d53f749d2a 100644
--- a/packages/_/_project/_attribute
+++ b/packages/_/_project/_attribute
@@ -233,7 +233,7 @@ rebuildpacs-leafs = branding-openSUSE PackageKit-branding-openSUSE xfce4-brandin
s/openSUSE-/openSUSE-Staging:$LETTER-/
- 20240820
+ 20240821
arch: x86_64
diff --git a/packages/_/_project/_staging_workflow b/packages/_/_project/_staging_workflow
index 7f945a5aebc..c3266a8ac50 100644
--- a/packages/_/_project/_staging_workflow
+++ b/packages/_/_project/_staging_workflow
@@ -15,84 +15,39 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/a/aaa_base/.files b/packages/a/aaa_base/.files
index 315bd1fe728..a5be442fd7b 100644
Binary files a/packages/a/aaa_base/.files and b/packages/a/aaa_base/.files differ
diff --git a/packages/a/aaa_base/.rev b/packages/a/aaa_base/.rev
index e319fbf1668..16a9b177da0 100644
--- a/packages/a/aaa_base/.rev
+++ b/packages/a/aaa_base/.rev
@@ -4201,4 +4201,13 @@
* cleanup aaa_base.post and fold back into specfile (forwarded request 1192950 from kukuk)
1192951
+
+ 88812fd9e071b7c75b5a2ec5791501ee
+ 84.87+git20240821.fbabe1d
+
+ anag+factory
+ - Update to version 84.87+git20240821.fbabe1d:
+ * Add helper service for soft-reboot (forwarded request 1195034 from kukuk)
+ 1195035
+
diff --git a/packages/a/aaa_base/_servicedata b/packages/a/aaa_base/_servicedata
index d090c9f9092..e6c38827612 100644
--- a/packages/a/aaa_base/_servicedata
+++ b/packages/a/aaa_base/_servicedata
@@ -1,5 +1,5 @@
https://github.com/openSUSE/aaa_base.git
- 5d13eb4bf0438b5c6c9624b64d1eda2fb2459112
+ fbabe1d9dfff899e79fccf92703bbbbc20890e36
\ No newline at end of file
diff --git a/packages/a/aaa_base/aaa_base-84.87+git20240809.5d13eb4.tar b/packages/a/aaa_base/aaa_base-84.87+git20240809.5d13eb4.tar
deleted file mode 120000
index a855942a355..00000000000
--- a/packages/a/aaa_base/aaa_base-84.87+git20240809.5d13eb4.tar
+++ /dev/null
@@ -1 +0,0 @@
-/ipfs/bafybeiheego7pokv4fhwzo47ufktxytbgifpudy5ex2a6cpt5u22uh5xfq
\ No newline at end of file
diff --git a/packages/a/aaa_base/aaa_base-84.87+git20240821.fbabe1d.tar b/packages/a/aaa_base/aaa_base-84.87+git20240821.fbabe1d.tar
new file mode 120000
index 00000000000..fcc3940a343
--- /dev/null
+++ b/packages/a/aaa_base/aaa_base-84.87+git20240821.fbabe1d.tar
@@ -0,0 +1 @@
+/ipfs/bafybeicljvi75omflloc7qftofzr5h4dv3anitzpt36yi554y6ecz2bphu
\ No newline at end of file
diff --git a/packages/a/aaa_base/aaa_base.changes b/packages/a/aaa_base/aaa_base.changes
index af3fb5c9bdf..478f59f2ca1 100644
--- a/packages/a/aaa_base/aaa_base.changes
+++ b/packages/a/aaa_base/aaa_base.changes
@@ -1,3 +1,9 @@
+-------------------------------------------------------------------
+Wed Aug 21 08:51:24 UTC 2024 - kukuk@suse.com
+
+- Update to version 84.87+git20240821.fbabe1d:
+ * Add helper service for soft-reboot
+
-------------------------------------------------------------------
Fri Aug 09 13:44:32 UTC 2024 - kukuk@suse.com
diff --git a/packages/a/aaa_base/aaa_base.spec b/packages/a/aaa_base/aaa_base.spec
index 5a6c3d9a0f0..9fdcd03505b 100644
--- a/packages/a/aaa_base/aaa_base.spec
+++ b/packages/a/aaa_base/aaa_base.spec
@@ -33,7 +33,7 @@ BuildRequires: git-core
%endif
Name: aaa_base
-Version: 84.87+git20240809.5d13eb4%{git_version}
+Version: 84.87+git20240821.fbabe1d%{git_version}
Release: 0
Summary: openSUSE Base Package
License: GPL-2.0-or-later
@@ -154,6 +154,12 @@ mkdir -p %{buildroot}%{_fillupdir}
rm -vrf %{buildroot}/usr/share/fillup-templates
%endif
+%pre
+%service_add_pre soft-reboot-cleanup.service
+
+%preun
+%service_del_preun soft-reboot-cleanup.service
+
%post
export LC_ALL=C
@@ -169,6 +175,10 @@ fi
%{fillup_only -n language}
%{fillup_only -n proxy}
+%service_add_post soft-reboot-cleanup.service
+
+%postun
+%service_del_postun_without_restart soft-reboot-cleanup.service
%pre extras
%service_add_pre backup-rpmdb.service backup-rpmdb.timer backup-sysconfig.service backup-sysconfig.timer check-battery.service check-battery.timer
@@ -217,6 +227,8 @@ fi
/usr/etc/profile.d/terminal.csh
%dir /usr/lib/environment.d
/usr/lib/environment.d/50-xdg.conf
+/usr/lib/systemd/system/soft-reboot-cleanup.service
+/usr/libexec/soft-reboot-cleanup
%{_tmpfilesdir}/soft-reboot-cleanup.conf
%config /etc/shells
%ghost %dir /etc/init.d
@@ -247,7 +259,7 @@ fi
/usr/lib/base-scripts/backup-rpmdb
/usr/lib/base-scripts/backup-sysconfig
/usr/lib/base-scripts/check-battery
-/usr/lib/systemd/system/*
+/usr/lib/systemd/system/[bc]*
/var/adm/backup/rpmdb
/var/adm/backup/sysconfig
%{_fillupdir}/sysconfig.backup
diff --git a/packages/a/agama-auto/.files b/packages/a/agama-auto/.files
index b373872756d..a6175813bb3 100644
Binary files a/packages/a/agama-auto/.files and b/packages/a/agama-auto/.files differ
diff --git a/packages/a/agama-auto/.rev b/packages/a/agama-auto/.rev
index c73e15d640f..9e5bdfd072f 100644
--- a/packages/a/agama-auto/.rev
+++ b/packages/a/agama-auto/.rev
@@ -10,4 +10,15 @@
- https://code.opensuse.org/leap/features/issue/158
1185423
+
+ 905a8119b5c32387397e12c04c5c72d8
+ 0
+
+ anag+factory
+ - change agama-auto systemd service depedencies to reflect changes
+ in agama CLI communication and ensure that it runs when
+ agama-auto runs
+ (gh#openSUSE/agama#1539)
+ 1194878
+
diff --git a/packages/a/agama-auto/agama-auto.changes b/packages/a/agama-auto/agama-auto.changes
index de41a1f1b02..1d2abbe8c41 100644
--- a/packages/a/agama-auto/agama-auto.changes
+++ b/packages/a/agama-auto/agama-auto.changes
@@ -1,3 +1,11 @@
+-------------------------------------------------------------------
+Thu Aug 15 08:35:31 UTC 2024 - Josef Reidinger
+
+- change agama-auto systemd service depedencies to reflect changes
+ in agama CLI communication and ensure that it runs when
+ agama-auto runs
+ (gh#openSUSE/agama#1539)
+
-------------------------------------------------------------------
Wed Jul 3 15:24:48 UTC 2024 - Imobach Gonzalez Sosa
diff --git a/packages/a/agama-auto/agama-auto.spec b/packages/a/agama-auto/agama-auto.spec
index b669489d1bc..b7a1ee2bb5f 100644
--- a/packages/a/agama-auto/agama-auto.spec
+++ b/packages/a/agama-auto/agama-auto.spec
@@ -12,16 +12,17 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
+
Name: agama-auto
# This will be set by osc services, that will run after this.
Version: 0
Release: 0
Summary: Agama auto-installation service
License: GPL-2.0-only
-Url: https://github.com/opensuse/agama
+URL: https://github.com/opensuse/agama
Source0: agama.tar
BuildArch: noarch
Requires: agama-cli
diff --git a/packages/a/agama-auto/agama.obscpio b/packages/a/agama-auto/agama.obscpio
index 501554adc05..5d6ee17b4b8 120000
--- a/packages/a/agama-auto/agama.obscpio
+++ b/packages/a/agama-auto/agama.obscpio
@@ -1 +1 @@
-/ipfs/bafkreigv5tqnconpevis5sfhxhz2lgkxje6gjld7twxqhrpiyq4gx2jkqu
\ No newline at end of file
+/ipfs/bafkreif45legjp6bnqb2o3x6h6ph6hbseabaoxxhrikz3njgspdxbv5mq4
\ No newline at end of file
diff --git a/packages/a/agama-auto/agama.obsinfo b/packages/a/agama-auto/agama.obsinfo
index 0f4c3c6ea5e..a39bdda4575 100644
--- a/packages/a/agama-auto/agama.obsinfo
+++ b/packages/a/agama-auto/agama.obsinfo
@@ -1,4 +1,4 @@
name: agama
-version: 9+82
-mtime: 1720107504
-commit: d40a89af918249ff4a8224944d2f75d18639913a
+version: 9+567
+mtime: 1724051003
+commit: fc0f3a27c4e1d3e11421658f2178db4a841b3961
diff --git a/packages/a/agama-web-ui/.files b/packages/a/agama-web-ui/.files
index 53401b287f9..980304d0442 100644
Binary files a/packages/a/agama-web-ui/.files and b/packages/a/agama-web-ui/.files differ
diff --git a/packages/a/agama-web-ui/.rev b/packages/a/agama-web-ui/.rev
index e14f09725da..deb52903f65 100644
--- a/packages/a/agama-web-ui/.rev
+++ b/packages/a/agama-web-ui/.rev
@@ -7,4 +7,34 @@
Fix the files list
1185066
+
+ 9c7ce9d66e1c26847bb44c7bd5e7fb44
+ 0
+
+ anag+factory
+ - Allow links look like buttons again (gh#openSUSE/agama#1536).
+
+- Allow reloading the page during installation
+ (gh#openSUSE/agama#1503).
+
+- Add support for generic questions with password
+ (gh#openSUSE/agama#1476)
+
+- Handle the case where there are not user selectable patterns
+ (gh#openSUSE/agama#1472).
+
+- Allow using TypeScript (gh#openSUSE/agama#1456).
+
+- Do not try to connect to the WebSocket until the user is
+ logged in (gh#openSUSE/agama#1449).
+
+- Improve storage UI for configuring the space policy actions
+ (gh#openSUSE/agama#1428).
+
+- Introduce TanStack Query for data fetching and state management
+ (gh#openSUSE/agama#1439).
+- Replace the l10n context with a solution based on TanStack
+ Query.
+ 1194879
+
diff --git a/packages/a/agama-web-ui/agama-web-ui.changes b/packages/a/agama-web-ui/agama-web-ui.changes
index ee198175910..3f0b2a424dc 100644
--- a/packages/a/agama-web-ui/agama-web-ui.changes
+++ b/packages/a/agama-web-ui/agama-web-ui.changes
@@ -1,3 +1,51 @@
+-------------------------------------------------------------------
+Tue Aug 13 14:57:21 UTC 2024 - David Diaz
+
+- Allow links look like buttons again (gh#openSUSE/agama#1536).
+
+-------------------------------------------------------------------
+Fri Jul 26 11:42:05 UTC 2024 - Imobach Gonzalez Sosa
+
+- Allow reloading the page during installation
+ (gh#openSUSE/agama#1503).
+
+-------------------------------------------------------------------
+Mon Jul 22 15:28:42 UTC 2024 - Josef Reidinger
+
+- Add support for generic questions with password
+ (gh#openSUSE/agama#1476)
+
+-------------------------------------------------------------------
+Wed Jul 17 09:52:36 UTC 2024 - Imobach Gonzalez Sosa
+
+- Handle the case where there are not user selectable patterns
+ (gh#openSUSE/agama#1472).
+
+-------------------------------------------------------------------
+Fri Jul 12 10:41:28 UTC 2024 - David Diaz
+
+- Allow using TypeScript (gh#openSUSE/agama#1456).
+
+-------------------------------------------------------------------
+Tue Jul 9 08:51:34 UTC 2024 - Imobach Gonzalez Sosa
+
+- Do not try to connect to the WebSocket until the user is
+ logged in (gh#openSUSE/agama#1449).
+
+-------------------------------------------------------------------
+Mon Jul 8 11:12:13 UTC 2024 - José Iván López González
+
+- Improve storage UI for configuring the space policy actions
+ (gh#openSUSE/agama#1428).
+
+-------------------------------------------------------------------
+Mon Jul 8 10:56:14 UTC 2024 - Imobach Gonzalez Sosa
+
+- Introduce TanStack Query for data fetching and state management
+ (gh#openSUSE/agama#1439).
+- Replace the l10n context with a solution based on TanStack
+ Query.
+
-------------------------------------------------------------------
Wed Jul 3 07:17:55 UTC 2024 - Imobach Gonzalez Sosa
diff --git a/packages/a/agama-web-ui/agama-web-ui.spec b/packages/a/agama-web-ui/agama-web-ui.spec
index fb91e0ff268..66f57d8c525 100644
--- a/packages/a/agama-web-ui/agama-web-ui.spec
+++ b/packages/a/agama-web-ui/agama-web-ui.spec
@@ -1,7 +1,7 @@
#
-# spec file for package cockpit-machines
+# spec file for package agama-web-ui
#
-# Copyright (c) 2022 SUSE LLC
+# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -30,8 +30,8 @@ Source11: node_modules.spec.inc
Source12: node_modules.sums
%include %_sourcedir/node_modules.spec.inc
BuildArch: noarch
-BuildRequires: local-npm-registry
BuildRequires: appstream-glib
+BuildRequires: local-npm-registry
%description
Agama web UI for the experimental Agama installer.
@@ -50,6 +50,7 @@ install -D -m 0644 --target-directory=%{buildroot}%{_datadir}/agama/web_ui/fonts
%files
%doc README.md
+%license LICENSE
%dir %{_datadir}/agama
%{_datadir}/agama/web_ui
diff --git a/packages/a/agama-web-ui/agama.obscpio b/packages/a/agama-web-ui/agama.obscpio
index 27af6a2cf74..9350be4dd61 120000
--- a/packages/a/agama-web-ui/agama.obscpio
+++ b/packages/a/agama-web-ui/agama.obscpio
@@ -1 +1 @@
-/ipfs/bafybeigrrawvqjclph2b52iotkrledvok6olmfyxf7tzovfx5pogeldmgq
\ No newline at end of file
+/ipfs/bafybeifc56wdoawdiqnocuc7eqn7pr4rpyen2l6u3qwfgjrmxucdekmmki
\ No newline at end of file
diff --git a/packages/a/agama-web-ui/agama.obsinfo b/packages/a/agama-web-ui/agama.obsinfo
index 97d9602eab8..e64c1102676 100644
--- a/packages/a/agama-web-ui/agama.obsinfo
+++ b/packages/a/agama-web-ui/agama.obsinfo
@@ -1,4 +1,4 @@
name: agama
-version: 9+52
-mtime: 1719992337
-commit: efc0ca50f6fd2fc601eeab4a904880829191102b
+version: 9+577
+mtime: 1724135574
+commit: f1187ebc8e32a57d255d632e6b5a2dfe13bbf3ed
diff --git a/packages/a/agama-web-ui/node_modules.obscpio b/packages/a/agama-web-ui/node_modules.obscpio
index 464e5e8c6b4..bf897cbf7bf 120000
--- a/packages/a/agama-web-ui/node_modules.obscpio
+++ b/packages/a/agama-web-ui/node_modules.obscpio
@@ -1 +1 @@
-/ipfs/bafybeicgd5nszddoiyatxfyzhldrwt2zgdx2zwudls7bbgqauvtmlv6ay4
\ No newline at end of file
+/ipfs/bafybeibnnynsacjrnbmnqv6e7z347667wxybwbcphxjkhoydvudsni4qiu
\ No newline at end of file
diff --git a/packages/a/agama-web-ui/node_modules.spec.inc b/packages/a/agama-web-ui/node_modules.spec.inc
index 388a63b469f..6b1ec2e499a 100644
--- a/packages/a/agama-web-ui/node_modules.spec.inc
+++ b/packages/a/agama-web-ui/node_modules.spec.inc
@@ -182,1051 +182,1082 @@ Source1180: https://registry.npmjs.org/@cspell/dict-typescript/-/dict-ty
Source1181: https://registry.npmjs.org/@cspell/dict-vue/-/dict-vue-3.0.0.tgz#/@cspell-dict-vue-3.0.0.tgz
Source1182: https://registry.npmjs.org/@cspell/dynamic-import/-/dynamic-import-8.8.0.tgz#/@cspell-dynamic-import-8.8.0.tgz
Source1183: https://registry.npmjs.org/@cspell/strong-weak-map/-/strong-weak-map-8.8.0.tgz#/@cspell-strong-weak-map-8.8.0.tgz
-Source1184: https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.6.3.tgz#/@csstools-css-parser-algorithms-2.6.3.tgz
-Source1185: https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.3.1.tgz#/@csstools-css-tokenizer-2.3.1.tgz
-Source1186: https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.11.tgz#/@csstools-media-query-list-parser-2.1.11.tgz
-Source1187: https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.0.3.tgz#/@csstools-selector-specificity-3.0.3.tgz
-Source1188: https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#/@discoveryjs-json-ext-0.5.7.tgz
-Source1189: https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.0.0.tgz#/@dual-bundle-import-meta-resolve-4.0.0.tgz
-Source1190: https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#/@eslint-community-eslint-utils-4.4.0.tgz
-Source1191: https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#/@eslint-community-regexpp-4.10.0.tgz
-Source1192: https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#/@eslint-eslintrc-2.1.4.tgz
-Source1193: https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz#/@eslint-js-8.57.0.tgz
-Source1194: https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#/@humanwhocodes-config-array-0.11.14.tgz
-Source1195: https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#/@humanwhocodes-module-importer-1.0.1.tgz
-Source1196: https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#/@humanwhocodes-object-schema-2.0.3.tgz
-Source1197: https://registry.npmjs.org/@icons-pack/react-simple-icons/-/react-simple-icons-9.4.1.tgz#/@icons-pack-react-simple-icons-9.4.1.tgz
-Source1198: https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz#/@isaacs-cliui-8.0.2.tgz
-Source1199: https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#/@istanbuljs-load-nyc-config-1.1.0.tgz
-Source1200: https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz#/@istanbuljs-schema-0.1.3.tgz
-Source1201: https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz#/@jest-console-29.7.0.tgz
-Source1202: https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz#/@jest-core-29.7.0.tgz
-Source1203: https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz#/@jest-environment-29.7.0.tgz
-Source1204: https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz#/@jest-expect-29.7.0.tgz
-Source1205: https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz#/@jest-expect-utils-29.7.0.tgz
-Source1206: https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz#/@jest-fake-timers-29.7.0.tgz
-Source1207: https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz#/@jest-globals-29.7.0.tgz
-Source1208: https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz#/@jest-reporters-29.7.0.tgz
-Source1209: https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz#/@jest-schemas-29.6.3.tgz
-Source1210: https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz#/@jest-source-map-29.6.3.tgz
-Source1211: https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz#/@jest-test-result-29.7.0.tgz
-Source1212: https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#/@jest-test-sequencer-29.7.0.tgz
-Source1213: https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz#/@jest-transform-29.7.0.tgz
-Source1214: https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz#/@jest-types-29.6.3.tgz
-Source1215: https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#/@jridgewell-gen-mapping-0.3.5.tgz
-Source1216: https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#/@jridgewell-resolve-uri-3.1.2.tgz
-Source1217: https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz#/@jridgewell-set-array-1.2.1.tgz
-Source1218: https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz#/@jridgewell-source-map-0.3.6.tgz
-Source1219: https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#/@jridgewell-sourcemap-codec-1.4.15.tgz
-Source1220: https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#/@jridgewell-trace-mapping-0.3.25.tgz
-Source1221: https://registry.npmjs.org/@jsdoc/salty/-/salty-0.2.8.tgz#/@jsdoc-salty-0.2.8.tgz
-Source1222: https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.1.tgz#/@jsonjoy.com-base64-1.1.1.tgz
-Source1223: https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.0.3.tgz#/@jsonjoy.com-json-pack-1.0.3.tgz
-Source1224: https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.1.2.tgz#/@jsonjoy.com-util-1.1.2.tgz
-Source1225: https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz#/@leichtgewicht-ip-codec-2.0.5.tgz
-Source1226: https://registry.npmjs.org/@material-symbols/svg-400/-/svg-400-0.17.4.tgz#/@material-symbols-svg-400-0.17.4.tgz
-Source1227: https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#/@nicolo-ribaudo-eslint-scope-5-internals-5.1.1-v1.tgz
-Source1228: https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#/@nodelib-fs.scandir-2.1.5.tgz
-Source1229: https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#/@nodelib-fs.stat-2.0.5.tgz
-Source1230: https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#/@nodelib-fs.walk-1.2.8.tgz
-Source1231: https://registry.npmjs.org/@patternfly/patternfly/-/patternfly-5.3.1.tgz#/@patternfly-patternfly-5.3.1.tgz
-Source1232: https://registry.npmjs.org/@patternfly/react-core/-/react-core-5.3.3.tgz#/@patternfly-react-core-5.3.3.tgz
-Source1233: https://registry.npmjs.org/@patternfly/react-icons/-/react-icons-5.3.2.tgz#/@patternfly-react-icons-5.3.2.tgz
-Source1234: https://registry.npmjs.org/@patternfly/react-styles/-/react-styles-5.3.1.tgz#/@patternfly-react-styles-5.3.1.tgz
-Source1235: https://registry.npmjs.org/@patternfly/react-table/-/react-table-5.3.3.tgz#/@patternfly-react-table-5.3.3.tgz
-Source1236: https://registry.npmjs.org/@patternfly/react-tokens/-/react-tokens-5.3.1.tgz#/@patternfly-react-tokens-5.3.1.tgz
-Source1237: https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#/@pkgjs-parseargs-0.11.0.tgz
-Source1238: https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.13.tgz#/@pmmmwh-react-refresh-webpack-plugin-0.5.13.tgz
-Source1239: https://registry.npmjs.org/@remix-run/router/-/router-1.16.0.tgz#/@remix-run-router-1.16.0.tgz
-Source1240: https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz#/@sinclair-typebox-0.27.8.tgz
-Source1241: https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz#/@sindresorhus-merge-streams-2.3.0.tgz
-Source1242: https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz#/@sinonjs-commons-3.0.1.tgz
-Source1243: https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#/@sinonjs-fake-timers-10.3.0.tgz
-Source1244: https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz#/@svgr-babel-plugin-add-jsx-attribute-8.0.0.tgz
-Source1245: https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz#/@svgr-babel-plugin-remove-jsx-attribute-8.0.0.tgz
-Source1246: https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz#/@svgr-babel-plugin-remove-jsx-empty-expression-8.0.0.tgz
-Source1247: https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz#/@svgr-babel-plugin-replace-jsx-attribute-value-8.0.0.tgz
-Source1248: https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz#/@svgr-babel-plugin-svg-dynamic-title-8.0.0.tgz
-Source1249: https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz#/@svgr-babel-plugin-svg-em-dimensions-8.0.0.tgz
-Source1250: https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz#/@svgr-babel-plugin-transform-react-native-svg-8.1.0.tgz
-Source1251: https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz#/@svgr-babel-plugin-transform-svg-component-8.0.0.tgz
-Source1252: https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.1.0.tgz#/@svgr-babel-preset-8.1.0.tgz
-Source1253: https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz#/@svgr-core-8.1.0.tgz
-Source1254: https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz#/@svgr-hast-util-to-babel-ast-8.0.0.tgz
-Source1255: https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz#/@svgr-plugin-jsx-8.1.0.tgz
-Source1256: https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz#/@svgr-plugin-svgo-8.1.0.tgz
-Source1257: https://registry.npmjs.org/@svgr/webpack/-/webpack-8.1.0.tgz#/@svgr-webpack-8.1.0.tgz
-Source1258: https://registry.npmjs.org/@testing-library/dom/-/dom-10.1.0.tgz#/@testing-library-dom-10.1.0.tgz
-Source1259: https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.4.5.tgz#/@testing-library-jest-dom-6.4.5.tgz
-Source1260: https://registry.npmjs.org/@testing-library/react/-/react-15.0.7.tgz#/@testing-library-react-15.0.7.tgz
-Source1261: https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.2.tgz#/@testing-library-user-event-14.5.2.tgz
-Source1262: https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz#/@tootallnate-once-2.0.0.tgz
-Source1263: https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz#/@trysound-sax-0.2.0.tgz
-Source1264: https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz#/@types-aria-query-5.0.4.tgz
-Source1265: https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz#/@types-babel__core-7.20.5.tgz
-Source1266: https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz#/@types-babel__generator-7.6.8.tgz
-Source1267: https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz#/@types-babel__template-7.4.4.tgz
-Source1268: https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz#/@types-babel__traverse-7.20.5.tgz
-Source1269: https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz#/@types-body-parser-1.19.5.tgz
-Source1270: https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz#/@types-bonjour-3.5.13.tgz
-Source1271: https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz#/@types-connect-3.4.38.tgz
-Source1272: https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz#/@types-connect-history-api-fallback-1.5.4.tgz
-Source1273: https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz#/@types-eslint-8.56.10.tgz
-Source1274: https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#/@types-eslint-scope-3.7.7.tgz
-Source1275: https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz#/@types-estree-1.0.5.tgz
-Source1276: https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz#/@types-express-4.17.21.tgz
-Source1277: https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.0.tgz#/@types-express-serve-static-core-4.19.0.tgz
-Source1278: https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#/@types-graceful-fs-4.1.9.tgz
-Source1279: https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-7.0.2.tgz#/@types-html-minifier-terser-7.0.2.tgz
-Source1280: https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz#/@types-http-errors-2.0.4.tgz
-Source1281: https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz#/@types-http-proxy-1.17.14.tgz
-Source1282: https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#/@types-istanbul-lib-coverage-2.0.6.tgz
-Source1283: https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#/@types-istanbul-lib-report-3.0.3.tgz
-Source1284: https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#/@types-istanbul-reports-3.0.4.tgz
-Source1285: https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz#/@types-jest-29.5.12.tgz
-Source1286: https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz#/@types-jsdom-20.0.1.tgz
-Source1287: https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz#/@types-json-schema-7.0.15.tgz
-Source1288: https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz#/@types-json5-0.0.29.tgz
-Source1289: https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz#/@types-linkify-it-5.0.0.tgz
-Source1290: https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.1.tgz#/@types-markdown-it-14.1.1.tgz
-Source1291: https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz#/@types-mdurl-2.0.0.tgz
-Source1292: https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz#/@types-mime-1.3.5.tgz
-Source1293: https://registry.npmjs.org/@types/node/-/node-20.12.10.tgz#/@types-node-20.12.10.tgz
-Source1294: https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz#/@types-node-forge-1.3.11.tgz
-Source1295: https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz#/@types-prop-types-15.7.12.tgz
-Source1296: https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz#/@types-qs-6.9.15.tgz
-Source1297: https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz#/@types-range-parser-1.2.7.tgz
-Source1298: https://registry.npmjs.org/@types/react/-/react-18.3.1.tgz#/@types-react-18.3.1.tgz
-Source1299: https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz#/@types-react-dom-18.3.0.tgz
-Source1300: https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz#/@types-retry-0.12.2.tgz
-Source1301: https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz#/@types-semver-7.5.8.tgz
-Source1302: https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz#/@types-send-0.17.4.tgz
-Source1303: https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz#/@types-serve-index-1.9.4.tgz
-Source1304: https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz#/@types-serve-static-1.15.7.tgz
-Source1305: https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz#/@types-sockjs-0.3.36.tgz
-Source1306: https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz#/@types-stack-utils-2.0.3.tgz
-Source1307: https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz#/@types-tough-cookie-4.0.5.tgz
-Source1308: https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz#/@types-ws-8.5.10.tgz
-Source1309: https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz#/@types-yargs-17.0.32.tgz
-Source1310: https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#/@types-yargs-parser-21.0.3.tgz
-Source1311: https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.8.0.tgz#/@typescript-eslint-eslint-plugin-7.8.0.tgz
-Source1312: https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.8.0.tgz#/@typescript-eslint-parser-7.8.0.tgz
-Source1313: https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.8.0.tgz#/@typescript-eslint-scope-manager-7.8.0.tgz
-Source1314: https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.8.0.tgz#/@typescript-eslint-type-utils-7.8.0.tgz
-Source1315: https://registry.npmjs.org/@typescript-eslint/types/-/types-7.8.0.tgz#/@typescript-eslint-types-7.8.0.tgz
-Source1316: https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.8.0.tgz#/@typescript-eslint-typescript-estree-7.8.0.tgz
-Source1317: https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.8.0.tgz#/@typescript-eslint-utils-7.8.0.tgz
-Source1318: https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.8.0.tgz#/@typescript-eslint-visitor-keys-7.8.0.tgz
-Source1319: https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#/@ungap-structured-clone-1.2.0.tgz
-Source1320: https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz#/@webassemblyjs-ast-1.12.1.tgz
-Source1321: https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#/@webassemblyjs-floating-point-hex-parser-1.11.6.tgz
-Source1322: https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#/@webassemblyjs-helper-api-error-1.11.6.tgz
-Source1323: https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz#/@webassemblyjs-helper-buffer-1.12.1.tgz
-Source1324: https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#/@webassemblyjs-helper-numbers-1.11.6.tgz
-Source1325: https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#/@webassemblyjs-helper-wasm-bytecode-1.11.6.tgz
-Source1326: https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz#/@webassemblyjs-helper-wasm-section-1.12.1.tgz
-Source1327: https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#/@webassemblyjs-ieee754-1.11.6.tgz
-Source1328: https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#/@webassemblyjs-leb128-1.11.6.tgz
-Source1329: https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#/@webassemblyjs-utf8-1.11.6.tgz
-Source1330: https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz#/@webassemblyjs-wasm-edit-1.12.1.tgz
-Source1331: https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz#/@webassemblyjs-wasm-gen-1.12.1.tgz
-Source1332: https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz#/@webassemblyjs-wasm-opt-1.12.1.tgz
-Source1333: https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz#/@webassemblyjs-wasm-parser-1.12.1.tgz
-Source1334: https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz#/@webassemblyjs-wast-printer-1.12.1.tgz
-Source1335: https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz#/@webpack-cli-configtest-2.1.1.tgz
-Source1336: https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz#/@webpack-cli-info-2.0.2.tgz
-Source1337: https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz#/@webpack-cli-serve-2.0.5.tgz
-Source1338: https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz#/@xtuc-ieee754-1.2.0.tgz
-Source1339: https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz#/@xtuc-long-4.2.2.tgz
-Source1340: https://registry.npmjs.org/abab/-/abab-2.0.6.tgz#/abab-2.0.6.tgz
-Source1341: https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz#/accepts-1.3.8.tgz
-Source1342: https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz#/acorn-8.11.3.tgz
-Source1343: https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#/acorn-import-assertions-1.9.0.tgz
-Source1344: https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz#/acorn-jsx-5.3.2.tgz
-Source1345: https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz#/agent-base-6.0.2.tgz
-Source1346: https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz#/ajv-6.12.6.tgz
-Source1347: https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz#/ajv-8.13.0.tgz
-Source1348: https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz#/ajv-formats-2.1.1.tgz
-Source1349: https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz#/ajv-keywords-3.5.2.tgz
-Source1350: https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz#/ajv-keywords-5.1.0.tgz
-Source1351: https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz#/ansi-escapes-4.3.2.tgz
-Source1352: https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz#/ansi-html-community-0.0.8.tgz
-Source1353: https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz#/ansi-regex-5.0.1.tgz
-Source1354: https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz#/ansi-regex-6.0.1.tgz
-Source1355: https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.1.tgz#/ansi-sequence-parser-1.1.1.tgz
-Source1356: https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz#/ansi-styles-3.2.1.tgz
-Source1357: https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz#/ansi-styles-4.3.0.tgz
-Source1358: https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz#/ansi-styles-5.2.0.tgz
-Source1359: https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz#/ansi-styles-6.2.1.tgz
-Source1360: https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz#/anymatch-3.1.3.tgz
-Source1361: https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz#/argparse-1.0.10.tgz
-Source1362: https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz#/argparse-2.0.1.tgz
-Source1363: https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz#/aria-query-5.3.0.tgz
-Source1364: https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#/array-buffer-byte-length-1.0.1.tgz
-Source1365: https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz#/array-flatten-1.1.1.tgz
-Source1366: https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz#/array-includes-3.1.8.tgz
-Source1367: https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz#/array-timsort-1.0.3.tgz
-Source1368: https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz#/array-union-2.1.0.tgz
-Source1369: https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz#/array.prototype.findlast-1.2.5.tgz
-Source1370: https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz#/array.prototype.findlastindex-1.2.5.tgz
-Source1371: https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#/array.prototype.flat-1.3.2.tgz
-Source1372: https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#/array.prototype.flatmap-1.3.2.tgz
-Source1373: https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz#/array.prototype.toreversed-1.1.2.tgz
-Source1374: https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz#/array.prototype.tosorted-1.1.3.tgz
-Source1375: https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#/arraybuffer.prototype.slice-1.0.3.tgz
-Source1376: https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz#/astral-regex-2.0.0.tgz
-Source1377: https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz#/asynckit-0.4.0.tgz
-Source1378: https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz#/attr-accept-2.2.2.tgz
-Source1379: https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#/available-typed-arrays-1.0.7.tgz
-Source1380: https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz#/babel-jest-29.7.0.tgz
-Source1381: https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz#/babel-loader-9.1.3.tgz
-Source1382: https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#/babel-plugin-istanbul-6.1.1.tgz
-Source1383: https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#/babel-plugin-jest-hoist-29.6.3.tgz
-Source1384: https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz#/babel-plugin-polyfill-corejs2-0.4.11.tgz
-Source1385: https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz#/babel-plugin-polyfill-corejs3-0.10.4.tgz
-Source1386: https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz#/babel-plugin-polyfill-regenerator-0.6.2.tgz
-Source1387: https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#/babel-preset-current-node-syntax-1.0.1.tgz
-Source1388: https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#/babel-preset-jest-29.6.3.tgz
-Source1389: https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz#/balanced-match-1.0.2.tgz
-Source1390: https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz#/balanced-match-2.0.0.tgz
-Source1391: https://registry.npmjs.org/batch/-/batch-0.6.1.tgz#/batch-0.6.1.tgz
-Source1392: https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz#/big.js-5.2.2.tgz
-Source1393: https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz#/binary-extensions-2.3.0.tgz
-Source1394: https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz#/bluebird-3.7.2.tgz
-Source1395: https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz#/body-parser-1.20.2.tgz
-Source1396: https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz#/bonjour-service-1.2.1.tgz
-Source1397: https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz#/boolbase-1.0.0.tgz
-Source1398: https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz#/brace-expansion-1.1.11.tgz
-Source1399: https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz#/brace-expansion-2.0.1.tgz
-Source1400: https://registry.npmjs.org/braces/-/braces-3.0.2.tgz#/braces-3.0.2.tgz
-Source1401: https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz#/browserslist-4.23.0.tgz
-Source1402: https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz#/bs-logger-0.2.6.tgz
-Source1403: https://registry.npmjs.org/bser/-/bser-2.1.1.tgz#/bser-2.1.1.tgz
-Source1404: https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz#/buffer-from-1.1.2.tgz
-Source1405: https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz#/builtin-modules-3.3.0.tgz
-Source1406: https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz#/builtins-5.1.0.tgz
-Source1407: https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz#/bundle-name-4.1.0.tgz
-Source1408: https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz#/bytes-3.0.0.tgz
-Source1409: https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz#/bytes-3.1.2.tgz
-Source1410: https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz#/call-bind-1.0.7.tgz
-Source1411: https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz#/callsites-3.1.0.tgz
-Source1412: https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz#/camel-case-4.1.2.tgz
-Source1413: https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz#/camelcase-5.3.1.tgz
-Source1414: https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz#/camelcase-6.3.0.tgz
-Source1415: https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz#/caniuse-api-3.0.0.tgz
-Source1416: https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001616.tgz#/caniuse-lite-1.0.30001616.tgz
-Source1417: https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz#/catharsis-0.9.0.tgz
-Source1418: https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz#/chalk-2.4.2.tgz
-Source1419: https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz#/chalk-3.0.0.tgz
-Source1420: https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz#/chalk-4.1.2.tgz
-Source1421: https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz#/chalk-5.3.0.tgz
-Source1422: https://registry.npmjs.org/chalk-template/-/chalk-template-1.1.0.tgz#/chalk-template-1.1.0.tgz
-Source1423: https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz#/char-regex-1.0.2.tgz
-Source1424: https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz#/chokidar-3.6.0.tgz
-Source1425: https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#/chrome-trace-event-1.0.3.tgz
-Source1426: https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz#/ci-info-3.9.0.tgz
-Source1427: https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz#/cjs-module-lexer-1.3.1.tgz
-Source1428: https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz#/clean-css-5.3.3.tgz
-Source1429: https://registry.npmjs.org/clear-module/-/clear-module-4.1.2.tgz#/clear-module-4.1.2.tgz
-Source1430: https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz#/cliui-8.0.1.tgz
-Source1431: https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz#/clone-deep-4.0.1.tgz
-Source1432: https://registry.npmjs.org/co/-/co-4.6.0.tgz#/co-4.6.0.tgz
-Source1433: https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#/collect-v8-coverage-1.0.2.tgz
-Source1434: https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz#/color-convert-1.9.3.tgz
-Source1435: https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz#/color-convert-2.0.1.tgz
-Source1436: https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz#/color-name-1.1.3.tgz
-Source1437: https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz#/color-name-1.1.4.tgz
-Source1438: https://registry.npmjs.org/colord/-/colord-2.9.3.tgz#/colord-2.9.3.tgz
-Source1439: https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz#/colorette-2.0.20.tgz
-Source1440: https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz#/combined-stream-1.0.8.tgz
-Source1441: https://registry.npmjs.org/commander/-/commander-10.0.1.tgz#/commander-10.0.1.tgz
-Source1442: https://registry.npmjs.org/commander/-/commander-12.0.0.tgz#/commander-12.0.0.tgz
-Source1443: https://registry.npmjs.org/commander/-/commander-2.20.3.tgz#/commander-2.20.3.tgz
-Source1444: https://registry.npmjs.org/commander/-/commander-6.2.1.tgz#/commander-6.2.1.tgz
-Source1445: https://registry.npmjs.org/commander/-/commander-7.2.0.tgz#/commander-7.2.0.tgz
-Source1446: https://registry.npmjs.org/comment-json/-/comment-json-4.2.3.tgz#/comment-json-4.2.3.tgz
-Source1447: https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz#/common-path-prefix-3.0.0.tgz
-Source1448: https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz#/compressible-2.0.18.tgz
-Source1449: https://registry.npmjs.org/compression/-/compression-1.7.4.tgz#/compression-1.7.4.tgz
-Source1450: https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-11.1.0.tgz#/compression-webpack-plugin-11.1.0.tgz
-Source1451: https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#/concat-map-0.0.1.tgz
-Source1452: https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz#/configstore-6.0.0.tgz
-Source1453: https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#/connect-history-api-fallback-2.0.0.tgz
-Source1454: https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz#/content-disposition-0.5.4.tgz
-Source1455: https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz#/content-type-1.0.5.tgz
-Source1456: https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz#/convert-source-map-2.0.0.tgz
-Source1457: https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz#/cookie-0.6.0.tgz
-Source1458: https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz#/cookie-signature-1.0.6.tgz
-Source1459: https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-12.0.2.tgz#/copy-webpack-plugin-12.0.2.tgz
-Source1460: https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.0.tgz#/core-js-compat-3.37.0.tgz
-Source1461: https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.37.0.tgz#/core-js-pure-3.37.0.tgz
-Source1462: https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz#/core-util-is-1.0.3.tgz
-Source1463: https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz#/cosmiconfig-8.3.6.tgz
-Source1464: https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz#/cosmiconfig-9.0.0.tgz
-Source1465: https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz#/create-jest-29.7.0.tgz
-Source1466: https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz#/cross-spawn-7.0.3.tgz
-Source1467: https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz#/crypto-random-string-4.0.0.tgz
-Source1468: https://registry.npmjs.org/cspell/-/cspell-8.8.0.tgz#/cspell-8.8.0.tgz
-Source1469: https://registry.npmjs.org/cspell-config-lib/-/cspell-config-lib-8.8.0.tgz#/cspell-config-lib-8.8.0.tgz
-Source1470: https://registry.npmjs.org/cspell-dictionary/-/cspell-dictionary-8.8.0.tgz#/cspell-dictionary-8.8.0.tgz
-Source1471: https://registry.npmjs.org/cspell-gitignore/-/cspell-gitignore-8.8.0.tgz#/cspell-gitignore-8.8.0.tgz
-Source1472: https://registry.npmjs.org/cspell-glob/-/cspell-glob-8.8.0.tgz#/cspell-glob-8.8.0.tgz
-Source1473: https://registry.npmjs.org/cspell-grammar/-/cspell-grammar-8.8.0.tgz#/cspell-grammar-8.8.0.tgz
-Source1474: https://registry.npmjs.org/cspell-io/-/cspell-io-8.8.0.tgz#/cspell-io-8.8.0.tgz
-Source1475: https://registry.npmjs.org/cspell-lib/-/cspell-lib-8.8.0.tgz#/cspell-lib-8.8.0.tgz
-Source1476: https://registry.npmjs.org/cspell-trie-lib/-/cspell-trie-lib-8.8.0.tgz#/cspell-trie-lib-8.8.0.tgz
-Source1477: https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz#/css-declaration-sorter-7.2.0.tgz
-Source1478: https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.2.tgz#/css-functions-list-3.2.2.tgz
-Source1479: https://registry.npmjs.org/css-loader/-/css-loader-7.1.1.tgz#/css-loader-7.1.1.tgz
-Source1480: https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-6.0.0.tgz#/css-minimizer-webpack-plugin-6.0.0.tgz
-Source1481: https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz#/css-select-5.1.0.tgz
-Source1482: https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz#/css-tree-2.2.1.tgz
-Source1483: https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz#/css-tree-2.3.1.tgz
-Source1484: https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz#/css-what-6.1.0.tgz
-Source1485: https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz#/css.escape-1.5.1.tgz
-Source1486: https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz#/cssesc-3.0.0.tgz
-Source1487: https://registry.npmjs.org/cssnano/-/cssnano-6.1.2.tgz#/cssnano-6.1.2.tgz
-Source1488: https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.1.2.tgz#/cssnano-preset-default-6.1.2.tgz
-Source1489: https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.2.tgz#/cssnano-utils-4.0.2.tgz
-Source1490: https://registry.npmjs.org/csso/-/csso-5.0.5.tgz#/csso-5.0.5.tgz
-Source1491: https://registry.npmjs.org/cssstyle/-/cssstyle-3.0.0.tgz#/cssstyle-3.0.0.tgz
-Source1492: https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz#/csstype-3.1.3.tgz
-Source1493: https://registry.npmjs.org/data-urls/-/data-urls-4.0.0.tgz#/data-urls-4.0.0.tgz
-Source1494: https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz#/data-view-buffer-1.0.1.tgz
-Source1495: https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz#/data-view-byte-length-1.0.1.tgz
-Source1496: https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz#/data-view-byte-offset-1.0.0.tgz
-Source1497: https://registry.npmjs.org/debug/-/debug-2.6.9.tgz#/debug-2.6.9.tgz
-Source1498: https://registry.npmjs.org/debug/-/debug-3.2.7.tgz#/debug-3.2.7.tgz
-Source1499: https://registry.npmjs.org/debug/-/debug-4.3.4.tgz#/debug-4.3.4.tgz
-Source1500: https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz#/decimal.js-10.4.3.tgz
-Source1501: https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz#/dedent-1.5.3.tgz
-Source1502: https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz#/deep-is-0.1.4.tgz
-Source1503: https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz#/deepmerge-4.3.1.tgz
-Source1504: https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz#/default-browser-5.2.1.tgz
-Source1505: https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz#/default-browser-id-5.0.0.tgz
-Source1506: https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz#/default-gateway-6.0.3.tgz
-Source1507: https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz#/define-data-property-1.1.4.tgz
-Source1508: https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz#/define-lazy-prop-3.0.0.tgz
-Source1509: https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz#/define-properties-1.2.1.tgz
-Source1510: https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz#/delayed-stream-1.0.0.tgz
-Source1511: https://registry.npmjs.org/depd/-/depd-1.1.2.tgz#/depd-1.1.2.tgz
-Source1512: https://registry.npmjs.org/depd/-/depd-2.0.0.tgz#/depd-2.0.0.tgz
-Source1513: https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz#/dequal-2.0.3.tgz
-Source1514: https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz#/destroy-1.2.0.tgz
-Source1515: https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz#/detect-newline-3.1.0.tgz
-Source1516: https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz#/detect-node-2.1.0.tgz
-Source1517: https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz#/diff-sequences-29.6.3.tgz
-Source1518: https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz#/dir-glob-3.0.1.tgz
-Source1519: https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz#/dns-packet-5.6.1.tgz
-Source1520: https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz#/doctrine-2.1.0.tgz
-Source1521: https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz#/doctrine-3.0.0.tgz
-Source1522: https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz#/dom-accessibility-api-0.5.16.tgz
-Source1523: https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz#/dom-accessibility-api-0.6.3.tgz
-Source1524: https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz#/dom-serializer-2.0.0.tgz
-Source1525: https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz#/domelementtype-2.3.0.tgz
-Source1526: https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz#/domexception-4.0.0.tgz
-Source1527: https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz#/domhandler-5.0.3.tgz
-Source1528: https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz#/domutils-3.1.0.tgz
-Source1529: https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz#/dot-case-3.0.4.tgz
-Source1530: https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz#/dot-prop-6.0.1.tgz
-Source1531: https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz#/eastasianwidth-0.2.0.tgz
-Source1532: https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz#/ee-first-1.1.1.tgz
-Source1533: https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.757.tgz#/electron-to-chromium-1.4.757.tgz
-Source1534: https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz#/emittery-0.13.1.tgz
-Source1535: https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz#/emoji-regex-8.0.0.tgz
-Source1536: https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz#/emoji-regex-9.2.2.tgz
-Source1537: https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz#/emojis-list-3.0.0.tgz
-Source1538: https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz#/encodeurl-1.0.2.tgz
-Source1539: https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz#/encoding-0.1.13.tgz
-Source1540: https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz#/enhanced-resolve-5.16.0.tgz
-Source1541: https://registry.npmjs.org/entities/-/entities-4.5.0.tgz#/entities-4.5.0.tgz
-Source1542: https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz#/env-paths-2.2.1.tgz
-Source1543: https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz#/envinfo-7.13.0.tgz
-Source1544: https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz#/error-ex-1.3.2.tgz
-Source1545: https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz#/error-stack-parser-2.1.4.tgz
-Source1546: https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz#/es-abstract-1.23.3.tgz
-Source1547: https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz#/es-define-property-1.0.0.tgz
-Source1548: https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz#/es-errors-1.3.0.tgz
-Source1549: https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz#/es-iterator-helpers-1.0.19.tgz
-Source1550: https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.2.tgz#/es-module-lexer-1.5.2.tgz
-Source1551: https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz#/es-object-atoms-1.0.0.tgz
-Source1552: https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#/es-set-tostringtag-2.0.3.tgz
-Source1553: https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#/es-shim-unscopables-1.0.2.tgz
-Source1554: https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz#/es-to-primitive-1.2.1.tgz
-Source1555: https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz#/escalade-3.1.2.tgz
-Source1556: https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz#/escape-html-1.0.3.tgz
-Source1557: https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#/escape-string-regexp-1.0.5.tgz
-Source1558: https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#/escape-string-regexp-2.0.0.tgz
-Source1559: https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#/escape-string-regexp-4.0.0.tgz
-Source1560: https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz#/eslint-8.57.0.tgz
-Source1561: https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.0.tgz#/eslint-compat-utils-0.5.0.tgz
-Source1562: https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz#/eslint-config-standard-17.1.0.tgz
-Source1563: https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-11.0.0.tgz#/eslint-config-standard-jsx-11.0.0.tgz
-Source1564: https://registry.npmjs.org/eslint-config-standard-react/-/eslint-config-standard-react-13.0.0.tgz#/eslint-config-standard-react-13.0.0.tgz
-Source1565: https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#/eslint-import-resolver-node-0.3.9.tgz
-Source1566: https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz#/eslint-module-utils-2.8.1.tgz
-Source1567: https://registry.npmjs.org/eslint-plugin-agama-i18n/-/eslint-plugin-agama-i18n-0.1.0.tgz#/eslint-plugin-agama-i18n-0.1.0.tgz
-Source1568: https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz#/eslint-plugin-es-3.0.1.tgz
-Source1569: https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.6.0.tgz#/eslint-plugin-es-x-7.6.0.tgz
-Source1570: https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz#/eslint-plugin-flowtype-8.0.3.tgz
-Source1571: https://registry.npmjs.org/eslint-plugin-i18next/-/eslint-plugin-i18next-6.0.3.tgz#/eslint-plugin-i18next-6.0.3.tgz
-Source1572: https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#/eslint-plugin-import-2.29.1.tgz
-Source1573: https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.6.2.tgz#/eslint-plugin-n-16.6.2.tgz
-Source1574: https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz#/eslint-plugin-node-11.1.0.tgz
-Source1575: https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz#/eslint-plugin-promise-6.1.1.tgz
-Source1576: https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.1.tgz#/eslint-plugin-react-7.34.1.tgz
-Source1577: https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz#/eslint-plugin-react-hooks-4.6.2.tgz
-Source1578: https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz#/eslint-scope-5.1.1.tgz
-Source1579: https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz#/eslint-scope-7.2.2.tgz
-Source1580: https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz#/eslint-utils-2.1.0.tgz
-Source1581: https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#/eslint-visitor-keys-1.3.0.tgz
-Source1582: https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#/eslint-visitor-keys-2.1.0.tgz
-Source1583: https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#/eslint-visitor-keys-3.4.3.tgz
-Source1584: https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-4.1.0.tgz#/eslint-webpack-plugin-4.1.0.tgz
-Source1585: https://registry.npmjs.org/espree/-/espree-9.6.1.tgz#/espree-9.6.1.tgz
-Source1586: https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz#/esprima-4.0.1.tgz
-Source1587: https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz#/esquery-1.5.0.tgz
-Source1588: https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz#/esrecurse-4.3.0.tgz
-Source1589: https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz#/estraverse-4.3.0.tgz
-Source1590: https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz#/estraverse-5.3.0.tgz
-Source1591: https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz#/esutils-2.0.3.tgz
-Source1592: https://registry.npmjs.org/etag/-/etag-1.8.1.tgz#/etag-1.8.1.tgz
-Source1593: https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz#/eventemitter3-4.0.7.tgz
-Source1594: https://registry.npmjs.org/events/-/events-3.3.0.tgz#/events-3.3.0.tgz
-Source1595: https://registry.npmjs.org/execa/-/execa-5.1.1.tgz#/execa-5.1.1.tgz
-Source1596: https://registry.npmjs.org/exit/-/exit-0.1.2.tgz#/exit-0.1.2.tgz
-Source1597: https://registry.npmjs.org/expect/-/expect-29.7.0.tgz#/expect-29.7.0.tgz
-Source1598: https://registry.npmjs.org/express/-/express-4.19.2.tgz#/express-4.19.2.tgz
-Source1599: https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#/fast-deep-equal-3.1.3.tgz
-Source1600: https://registry.npmjs.org/fast-equals/-/fast-equals-5.0.1.tgz#/fast-equals-5.0.1.tgz
-Source1601: https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz#/fast-glob-3.3.2.tgz
-Source1602: https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#/fast-json-stable-stringify-2.1.0.tgz
-Source1603: https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#/fast-levenshtein-2.0.6.tgz
-Source1604: https://registry.npmjs.org/fast-sort/-/fast-sort-3.4.0.tgz#/fast-sort-3.4.0.tgz
-Source1605: https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#/fastest-levenshtein-1.0.16.tgz
-Source1606: https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz#/fastq-1.17.1.tgz
-Source1607: https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz#/faye-websocket-0.11.4.tgz
-Source1608: https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz#/fb-watchman-2.0.2.tgz
-Source1609: https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz#/file-entry-cache-6.0.1.tgz
-Source1610: https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz#/file-entry-cache-8.0.0.tgz
-Source1611: https://registry.npmjs.org/file-selector/-/file-selector-0.6.0.tgz#/file-selector-0.6.0.tgz
-Source1612: https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz#/fill-range-7.0.1.tgz
-Source1613: https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz#/finalhandler-1.2.0.tgz
-Source1614: https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz#/find-cache-dir-4.0.0.tgz
-Source1615: https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz#/find-up-4.1.0.tgz
-Source1616: https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz#/find-up-5.0.0.tgz
-Source1617: https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz#/find-up-6.3.0.tgz
-Source1618: https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.0.tgz#/find-up-simple-1.0.0.tgz
-Source1619: https://registry.npmjs.org/flat/-/flat-5.0.2.tgz#/flat-5.0.2.tgz
-Source1620: https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz#/flat-cache-3.2.0.tgz
-Source1621: https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz#/flat-cache-4.0.1.tgz
-Source1622: https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz#/flatted-3.3.1.tgz
-Source1623: https://registry.npmjs.org/focus-trap/-/focus-trap-7.5.2.tgz#/focus-trap-7.5.2.tgz
-Source1624: https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz#/follow-redirects-1.15.6.tgz
-Source1625: https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz#/for-each-0.3.3.tgz
-Source1626: https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz#/foreground-child-3.1.1.tgz
-Source1627: https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz#/form-data-4.0.0.tgz
-Source1628: https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz#/forwarded-0.2.0.tgz
-Source1629: https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz#/fresh-0.5.2.tgz
-Source1630: https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#/fs.realpath-1.0.0.tgz
-Source1631: https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz#/fsevents-2.3.3.tgz
-Source1632: https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz#/function-bind-1.1.2.tgz
-Source1633: https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz#/function.prototype.name-1.1.6.tgz
-Source1634: https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz#/functions-have-names-1.2.3.tgz
-Source1635: https://registry.npmjs.org/gensequence/-/gensequence-7.0.0.tgz#/gensequence-7.0.0.tgz
-Source1636: https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz#/gensync-1.0.0-beta.2.tgz
-Source1637: https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz#/get-caller-file-2.0.5.tgz
-Source1638: https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz#/get-intrinsic-1.2.4.tgz
-Source1639: https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz#/get-package-type-0.1.0.tgz
-Source1640: https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz#/get-stdin-9.0.0.tgz
-Source1641: https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz#/get-stream-6.0.1.tgz
-Source1642: https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz#/get-symbol-description-1.0.2.tgz
-Source1643: https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.4.tgz#/get-tsconfig-4.7.4.tgz
-Source1644: https://registry.npmjs.org/gettext-parser/-/gettext-parser-1.4.0.tgz#/gettext-parser-1.4.0.tgz
-Source1645: https://registry.npmjs.org/gettext-parser/-/gettext-parser-2.0.0.tgz#/gettext-parser-2.0.0.tgz
-Source1646: https://registry.npmjs.org/gettext-to-messageformat/-/gettext-to-messageformat-0.3.1.tgz#/gettext-to-messageformat-0.3.1.tgz
-Source1647: https://registry.npmjs.org/glob/-/glob-10.3.12.tgz#/glob-10.3.12.tgz
-Source1648: https://registry.npmjs.org/glob/-/glob-7.2.3.tgz#/glob-7.2.3.tgz
-Source1649: https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz#/glob-parent-5.1.2.tgz
-Source1650: https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz#/glob-parent-6.0.2.tgz
-Source1651: https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#/glob-to-regexp-0.4.1.tgz
-Source1652: https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz#/global-directory-4.0.1.tgz
-Source1653: https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz#/global-modules-2.0.0.tgz
-Source1654: https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz#/global-prefix-3.0.0.tgz
-Source1655: https://registry.npmjs.org/globals/-/globals-11.12.0.tgz#/globals-11.12.0.tgz
-Source1656: https://registry.npmjs.org/globals/-/globals-13.24.0.tgz#/globals-13.24.0.tgz
-Source1657: https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz#/globalthis-1.0.4.tgz
-Source1658: https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz#/globalyzer-0.1.0.tgz
-Source1659: https://registry.npmjs.org/globby/-/globby-11.1.0.tgz#/globby-11.1.0.tgz
-Source1660: https://registry.npmjs.org/globby/-/globby-14.0.1.tgz#/globby-14.0.1.tgz
-Source1661: https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz#/globjoin-0.1.4.tgz
-Source1662: https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz#/globrex-0.1.2.tgz
-Source1663: https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz#/gopd-1.0.1.tgz
-Source1664: https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz#/graceful-fs-4.2.11.tgz
-Source1665: https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz#/graphemer-1.4.0.tgz
-Source1666: https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz#/handle-thing-2.0.1.tgz
-Source1667: https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz#/harmony-reflect-1.6.2.tgz
-Source1668: https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz#/has-bigints-1.0.2.tgz
-Source1669: https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz#/has-flag-3.0.0.tgz
-Source1670: https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz#/has-flag-4.0.0.tgz
-Source1671: https://registry.npmjs.org/has-own-prop/-/has-own-prop-2.0.0.tgz#/has-own-prop-2.0.0.tgz
-Source1672: https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#/has-property-descriptors-1.0.2.tgz
-Source1673: https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz#/has-proto-1.0.3.tgz
-Source1674: https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz#/has-symbols-1.0.3.tgz
-Source1675: https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz#/has-tostringtag-1.0.2.tgz
-Source1676: https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz#/hasown-2.0.2.tgz
-Source1677: https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz#/hpack.js-2.1.6.tgz
-Source1678: https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#/html-encoding-sniffer-3.0.0.tgz
-Source1679: https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz#/html-entities-2.5.2.tgz
-Source1680: https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz#/html-escaper-2.0.2.tgz
-Source1681: https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-7.2.0.tgz#/html-minifier-terser-7.2.0.tgz
-Source1682: https://registry.npmjs.org/html-minimizer-webpack-plugin/-/html-minimizer-webpack-plugin-5.0.0.tgz#/html-minimizer-webpack-plugin-5.0.0.tgz
-Source1683: https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz#/html-tags-3.3.1.tgz
-Source1684: https://registry.npmjs.org/htmlparser/-/htmlparser-1.7.7.tgz#/htmlparser-1.7.7.tgz
-Source1685: https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz#/http-deceiver-1.2.7.tgz
-Source1686: https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz#/http-errors-1.6.3.tgz
-Source1687: https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz#/http-errors-2.0.0.tgz
-Source1688: https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz#/http-parser-js-0.5.8.tgz
-Source1689: https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz#/http-proxy-1.18.1.tgz
-Source1690: https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#/http-proxy-agent-5.0.0.tgz
-Source1691: https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#/http-proxy-middleware-2.0.6.tgz
-Source1692: https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#/https-proxy-agent-5.0.1.tgz
-Source1693: https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz#/human-signals-2.1.0.tgz
-Source1694: https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz#/hyperdyperid-1.2.0.tgz
-Source1695: https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz#/iconv-lite-0.4.24.tgz
-Source1696: https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz#/iconv-lite-0.6.3.tgz
-Source1697: https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz#/icss-utils-5.1.0.tgz
-Source1698: https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#/identity-obj-proxy-3.0.0.tgz
-Source1699: https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz#/ignore-5.3.1.tgz
-Source1700: https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz#/immutable-4.3.5.tgz
-Source1701: https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz#/import-fresh-3.3.0.tgz
-Source1702: https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz#/import-local-3.1.0.tgz
-Source1703: https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz#/import-meta-resolve-4.1.0.tgz
-Source1704: https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz#/imurmurhash-0.1.4.tgz
-Source1705: https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz#/indent-string-4.0.0.tgz
-Source1706: https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz#/inflight-1.0.6.tgz
-Source1707: https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz#/inherits-2.0.3.tgz
-Source1708: https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz#/inherits-2.0.4.tgz
-Source1709: https://registry.npmjs.org/ini/-/ini-1.3.8.tgz#/ini-1.3.8.tgz
-Source1710: https://registry.npmjs.org/ini/-/ini-4.1.1.tgz#/ini-4.1.1.tgz
-Source1711: https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz#/internal-slot-1.0.7.tgz
-Source1712: https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz#/interpret-3.1.1.tgz
-Source1713: https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz#/ipaddr.js-1.9.1.tgz
-Source1714: https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz#/ipaddr.js-2.2.0.tgz
-Source1715: https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz#/is-array-buffer-3.0.4.tgz
-Source1716: https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz#/is-arrayish-0.2.1.tgz
-Source1717: https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz#/is-async-function-2.0.0.tgz
-Source1718: https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz#/is-bigint-1.0.4.tgz
-Source1719: https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz#/is-binary-path-2.1.0.tgz
-Source1720: https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz#/is-boolean-object-1.1.2.tgz
-Source1721: https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz#/is-builtin-module-3.2.1.tgz
-Source1722: https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz#/is-callable-1.2.7.tgz
-Source1723: https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz#/is-core-module-2.13.1.tgz
-Source1724: https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz#/is-data-view-1.0.1.tgz
-Source1725: https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz#/is-date-object-1.0.5.tgz
-Source1726: https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz#/is-docker-3.0.0.tgz
-Source1727: https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz#/is-extglob-2.1.1.tgz
-Source1728: https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz#/is-finalizationregistry-1.0.2.tgz
-Source1729: https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#/is-fullwidth-code-point-3.0.0.tgz
-Source1730: https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz#/is-generator-fn-2.1.0.tgz
-Source1731: https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz#/is-generator-function-1.0.10.tgz
-Source1732: https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz#/is-glob-4.0.3.tgz
-Source1733: https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz#/is-inside-container-1.0.0.tgz
-Source1734: https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz#/is-map-2.0.3.tgz
-Source1735: https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz#/is-negative-zero-2.0.3.tgz
-Source1736: https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz#/is-network-error-1.1.0.tgz
-Source1737: https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz#/is-number-7.0.0.tgz
-Source1738: https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz#/is-number-object-1.0.7.tgz
-Source1739: https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz#/is-obj-2.0.0.tgz
-Source1740: https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz#/is-path-inside-3.0.3.tgz
-Source1741: https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz#/is-plain-obj-3.0.0.tgz
-Source1742: https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz#/is-plain-object-2.0.4.tgz
-Source1743: https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz#/is-plain-object-5.0.0.tgz
-Source1744: https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#/is-potential-custom-element-name-1.0.1.tgz
-Source1745: https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz#/is-regex-1.1.4.tgz
-Source1746: https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz#/is-set-2.0.3.tgz
-Source1747: https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#/is-shared-array-buffer-1.0.3.tgz
-Source1748: https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz#/is-stream-2.0.1.tgz
-Source1749: https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz#/is-string-1.0.7.tgz
-Source1750: https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz#/is-symbol-1.0.4.tgz
-Source1751: https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz#/is-typed-array-1.1.13.tgz
-Source1752: https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz#/is-typedarray-1.0.0.tgz
-Source1753: https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz#/is-weakmap-2.0.2.tgz
-Source1754: https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz#/is-weakref-1.0.2.tgz
-Source1755: https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz#/is-weakset-2.0.3.tgz
-Source1756: https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz#/is-wsl-3.1.0.tgz
-Source1757: https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz#/isarray-1.0.0.tgz
-Source1758: https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz#/isarray-2.0.5.tgz
-Source1759: https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz#/isexe-2.0.0.tgz
-Source1760: https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz#/isobject-3.0.1.tgz
-Source1761: https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#/istanbul-lib-coverage-3.2.2.tgz
-Source1762: https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#/istanbul-lib-instrument-5.2.1.tgz
-Source1763: https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz#/istanbul-lib-instrument-6.0.2.tgz
-Source1764: https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#/istanbul-lib-report-3.0.1.tgz
-Source1765: https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#/istanbul-lib-source-maps-4.0.1.tgz
-Source1766: https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz#/istanbul-reports-3.1.7.tgz
-Source1767: https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz#/iterator.prototype-1.1.2.tgz
-Source1768: https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz#/jackspeak-2.3.6.tgz
-Source1769: https://registry.npmjs.org/jed/-/jed-1.1.1.tgz#/jed-1.1.1.tgz
-Source1770: https://registry.npmjs.org/jest/-/jest-29.7.0.tgz#/jest-29.7.0.tgz
-Source1771: https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz#/jest-changed-files-29.7.0.tgz
-Source1772: https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz#/jest-circus-29.7.0.tgz
-Source1773: https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz#/jest-cli-29.7.0.tgz
-Source1774: https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz#/jest-config-29.7.0.tgz
-Source1775: https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz#/jest-diff-29.7.0.tgz
-Source1776: https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz#/jest-docblock-29.7.0.tgz
-Source1777: https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz#/jest-each-29.7.0.tgz
-Source1778: https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz#/jest-environment-jsdom-29.7.0.tgz
-Source1779: https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz#/jest-environment-node-29.7.0.tgz
-Source1780: https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz#/jest-get-type-29.6.3.tgz
-Source1781: https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz#/jest-haste-map-29.7.0.tgz
-Source1782: https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#/jest-leak-detector-29.7.0.tgz
-Source1783: https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#/jest-matcher-utils-29.7.0.tgz
-Source1784: https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz#/jest-message-util-29.7.0.tgz
-Source1785: https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz#/jest-mock-29.7.0.tgz
-Source1786: https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#/jest-pnp-resolver-1.2.3.tgz
-Source1787: https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz#/jest-regex-util-29.6.3.tgz
-Source1788: https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz#/jest-resolve-29.7.0.tgz
-Source1789: https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#/jest-resolve-dependencies-29.7.0.tgz
-Source1790: https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz#/jest-runner-29.7.0.tgz
-Source1791: https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz#/jest-runtime-29.7.0.tgz
-Source1792: https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz#/jest-snapshot-29.7.0.tgz
-Source1793: https://registry.npmjs.org/jest-transform-stub/-/jest-transform-stub-2.0.0.tgz#/jest-transform-stub-2.0.0.tgz
-Source1794: https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz#/jest-util-29.7.0.tgz
-Source1795: https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz#/jest-validate-29.7.0.tgz
-Source1796: https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz#/jest-watcher-29.7.0.tgz
-Source1797: https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz#/jest-worker-27.5.1.tgz
-Source1798: https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz#/jest-worker-29.7.0.tgz
-Source1799: https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz#/js-tokens-4.0.0.tgz
-Source1800: https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz#/js-yaml-3.14.1.tgz
-Source1801: https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz#/js-yaml-4.1.0.tgz
-Source1802: https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz#/js2xmlparser-4.0.2.tgz
-Source1803: https://registry.npmjs.org/jsdoc/-/jsdoc-4.0.3.tgz#/jsdoc-4.0.3.tgz
-Source1804: https://registry.npmjs.org/jsdom/-/jsdom-22.1.0.tgz#/jsdom-22.1.0.tgz
-Source1805: https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz#/jsesc-0.5.0.tgz
-Source1806: https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz#/jsesc-2.5.2.tgz
-Source1807: https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz#/json-buffer-3.0.1.tgz
-Source1808: https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#/json-parse-even-better-errors-2.3.1.tgz
-Source1809: https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#/json-schema-traverse-0.4.1.tgz
-Source1810: https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#/json-schema-traverse-1.0.0.tgz
-Source1811: https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#/json-stable-stringify-without-jsonify-1.0.1.tgz
-Source1812: https://registry.npmjs.org/json5/-/json5-1.0.2.tgz#/json5-1.0.2.tgz
-Source1813: https://registry.npmjs.org/json5/-/json5-2.2.3.tgz#/json5-2.2.3.tgz
-Source1814: https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz#/jsonc-parser-3.2.1.tgz
-Source1815: https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#/jsx-ast-utils-3.3.5.tgz
-Source1816: https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz#/keyv-4.5.4.tgz
-Source1817: https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz#/kind-of-6.0.3.tgz
-Source1818: https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz#/klaw-3.0.0.tgz
-Source1819: https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz#/kleur-3.0.3.tgz
-Source1820: https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.30.0.tgz#/known-css-properties-0.30.0.tgz
-Source1821: https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz#/launch-editor-2.6.1.tgz
-Source1822: https://registry.npmjs.org/leven/-/leven-3.1.0.tgz#/leven-3.1.0.tgz
-Source1823: https://registry.npmjs.org/levn/-/levn-0.4.1.tgz#/levn-0.4.1.tgz
-Source1824: https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.1.tgz#/lilconfig-3.1.1.tgz
-Source1825: https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz#/lines-and-columns-1.2.4.tgz
-Source1826: https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz#/linkify-it-5.0.0.tgz
-Source1827: https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz#/loader-runner-4.3.0.tgz
-Source1828: https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz#/loader-utils-2.0.4.tgz
-Source1829: https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz#/locate-path-5.0.0.tgz
-Source1830: https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz#/locate-path-6.0.0.tgz
-Source1831: https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz#/locate-path-7.2.0.tgz
-Source1832: https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz#/lodash-4.17.21.tgz
-Source1833: https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz#/lodash.debounce-4.0.8.tgz
-Source1834: https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz#/lodash.memoize-4.1.2.tgz
-Source1835: https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz#/lodash.merge-4.6.2.tgz
-Source1836: https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz#/lodash.truncate-4.4.2.tgz
-Source1837: https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz#/lodash.uniq-4.5.0.tgz
-Source1838: https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz#/loose-envify-1.4.0.tgz
-Source1839: https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz#/lower-case-2.0.2.tgz
-Source1840: https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz#/lru-cache-10.2.2.tgz
-Source1841: https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz#/lru-cache-5.1.1.tgz
-Source1842: https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz#/lru-cache-6.0.0.tgz
-Source1843: https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz#/lunr-2.3.9.tgz
-Source1844: https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz#/lz-string-1.5.0.tgz
-Source1845: https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz#/make-dir-4.0.0.tgz
-Source1846: https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz#/make-error-1.3.6.tgz
-Source1847: https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz#/makeerror-1.0.12.tgz
-Source1848: https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz#/markdown-it-14.1.0.tgz
-Source1849: https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.7.tgz#/markdown-it-anchor-8.6.7.tgz
-Source1850: https://registry.npmjs.org/marked/-/marked-4.3.0.tgz#/marked-4.3.0.tgz
-Source1851: https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#/mathml-tag-names-2.1.3.tgz
-Source1852: https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz#/mdn-data-2.0.28.tgz
-Source1853: https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz#/mdn-data-2.0.30.tgz
-Source1854: https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz#/mdurl-2.0.0.tgz
-Source1855: https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz#/media-typer-0.3.0.tgz
-Source1856: https://registry.npmjs.org/memfs/-/memfs-4.9.2.tgz#/memfs-4.9.2.tgz
-Source1857: https://registry.npmjs.org/meow/-/meow-13.2.0.tgz#/meow-13.2.0.tgz
-Source1858: https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz#/merge-descriptors-1.0.1.tgz
-Source1859: https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz#/merge-stream-2.0.0.tgz
-Source1860: https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz#/merge2-1.4.1.tgz
-Source1861: https://registry.npmjs.org/methods/-/methods-1.1.2.tgz#/methods-1.1.2.tgz
-Source1862: https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz#/micromatch-4.0.5.tgz
-Source1863: https://registry.npmjs.org/mime/-/mime-1.6.0.tgz#/mime-1.6.0.tgz
-Source1864: https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz#/mime-db-1.52.0.tgz
-Source1865: https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz#/mime-types-2.1.35.tgz
-Source1866: https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz#/mimic-fn-2.1.0.tgz
-Source1867: https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz#/min-indent-1.0.1.tgz
-Source1868: https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.0.tgz#/mini-css-extract-plugin-2.9.0.tgz
-Source1869: https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#/minimalistic-assert-1.0.1.tgz
-Source1870: https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz#/minimatch-3.1.2.tgz
-Source1871: https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz#/minimatch-9.0.4.tgz
-Source1872: https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz#/minimist-1.2.8.tgz
-Source1873: https://registry.npmjs.org/minipass/-/minipass-7.1.0.tgz#/minipass-7.1.0.tgz
-Source1874: https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz#/mkdirp-1.0.4.tgz
-Source1875: https://registry.npmjs.org/ms/-/ms-2.0.0.tgz#/ms-2.0.0.tgz
-Source1876: https://registry.npmjs.org/ms/-/ms-2.1.2.tgz#/ms-2.1.2.tgz
-Source1877: https://registry.npmjs.org/ms/-/ms-2.1.3.tgz#/ms-2.1.3.tgz
-Source1878: https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz#/multicast-dns-7.2.5.tgz
-Source1879: https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz#/nanoid-3.3.7.tgz
-Source1880: https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz#/natural-compare-1.4.0.tgz
-Source1881: https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz#/negotiator-0.6.3.tgz
-Source1882: https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz#/neo-async-2.6.2.tgz
-Source1883: https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz#/no-case-3.0.4.tgz
-Source1884: https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz#/node-forge-1.3.1.tgz
-Source1885: https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz#/node-int64-0.4.0.tgz
-Source1886: https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz#/node-releases-2.0.14.tgz
-Source1887: https://registry.npmjs.org/node-watch/-/node-watch-0.7.3.tgz#/node-watch-0.7.3.tgz
-Source1888: https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz#/normalize-path-3.0.0.tgz
-Source1889: https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz#/npm-run-path-4.0.1.tgz
-Source1890: https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz#/nth-check-2.1.1.tgz
-Source1891: https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.9.tgz#/nwsapi-2.2.9.tgz
-Source1892: https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz#/object-assign-4.1.1.tgz
-Source1893: https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz#/object-inspect-1.13.1.tgz
-Source1894: https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz#/object-keys-1.1.1.tgz
-Source1895: https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz#/object.assign-4.1.5.tgz
-Source1896: https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz#/object.entries-1.1.8.tgz
-Source1897: https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz#/object.fromentries-2.0.8.tgz
-Source1898: https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz#/object.groupby-1.0.3.tgz
-Source1899: https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz#/object.hasown-1.1.4.tgz
-Source1900: https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz#/object.values-1.2.0.tgz
-Source1901: https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz#/obuf-1.1.2.tgz
-Source1902: https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz#/on-finished-2.4.1.tgz
-Source1903: https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz#/on-headers-1.0.2.tgz
-Source1904: https://registry.npmjs.org/once/-/once-1.4.0.tgz#/once-1.4.0.tgz
-Source1905: https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz#/onetime-5.1.2.tgz
-Source1906: https://registry.npmjs.org/open/-/open-10.1.0.tgz#/open-10.1.0.tgz
-Source1907: https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz#/optionator-0.9.4.tgz
-Source1908: https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz#/p-limit-2.3.0.tgz
-Source1909: https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz#/p-limit-3.1.0.tgz
-Source1910: https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz#/p-limit-4.0.0.tgz
-Source1911: https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz#/p-locate-4.1.0.tgz
-Source1912: https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz#/p-locate-5.0.0.tgz
-Source1913: https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz#/p-locate-6.0.0.tgz
-Source1914: https://registry.npmjs.org/p-retry/-/p-retry-6.2.0.tgz#/p-retry-6.2.0.tgz
-Source1915: https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz#/p-try-2.2.0.tgz
-Source1916: https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz#/param-case-3.0.4.tgz
-Source1917: https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz#/parent-module-1.0.1.tgz
-Source1918: https://registry.npmjs.org/parent-module/-/parent-module-2.0.0.tgz#/parent-module-2.0.0.tgz
-Source1919: https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz#/parse-json-5.2.0.tgz
-Source1920: https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz#/parse5-7.1.2.tgz
-Source1921: https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz#/parseurl-1.3.3.tgz
-Source1922: https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz#/pascal-case-3.1.2.tgz
-Source1923: https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz#/path-exists-4.0.0.tgz
-Source1924: https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz#/path-exists-5.0.0.tgz
-Source1925: https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#/path-is-absolute-1.0.1.tgz
-Source1926: https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz#/path-key-3.1.1.tgz
-Source1927: https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz#/path-parse-1.0.7.tgz
-Source1928: https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz#/path-scurry-1.10.2.tgz
-Source1929: https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz#/path-to-regexp-0.1.7.tgz
-Source1930: https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz#/path-type-4.0.0.tgz
-Source1931: https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz#/path-type-5.0.0.tgz
-Source1932: https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz#/picocolors-1.0.0.tgz
-Source1933: https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz#/picomatch-2.3.1.tgz
-Source1934: https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz#/pirates-4.0.6.tgz
-Source1935: https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz#/pkg-dir-4.2.0.tgz
-Source1936: https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz#/pkg-dir-7.0.0.tgz
-Source1937: https://registry.npmjs.org/po2json/-/po2json-1.0.0-beta-3.tgz#/po2json-1.0.0-beta-3.tgz
-Source1938: https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#/possible-typed-array-names-1.0.0.tgz
-Source1939: https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz#/postcss-8.4.38.tgz
-Source1940: https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz#/postcss-calc-9.0.1.tgz
-Source1941: https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.1.0.tgz#/postcss-colormin-6.1.0.tgz
-Source1942: https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz#/postcss-convert-values-6.1.0.tgz
-Source1943: https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.2.tgz#/postcss-discard-comments-6.0.2.tgz
-Source1944: https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.3.tgz#/postcss-discard-duplicates-6.0.3.tgz
-Source1945: https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.3.tgz#/postcss-discard-empty-6.0.3.tgz
-Source1946: https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.2.tgz#/postcss-discard-overridden-6.0.2.tgz
-Source1947: https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz#/postcss-media-query-parser-0.2.3.tgz
-Source1948: https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.5.tgz#/postcss-merge-longhand-6.0.5.tgz
-Source1949: https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.1.1.tgz#/postcss-merge-rules-6.1.1.tgz
-Source1950: https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.1.0.tgz#/postcss-minify-font-values-6.1.0.tgz
-Source1951: https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.3.tgz#/postcss-minify-gradients-6.0.3.tgz
-Source1952: https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.1.0.tgz#/postcss-minify-params-6.1.0.tgz
-Source1953: https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.4.tgz#/postcss-minify-selectors-6.0.4.tgz
-Source1954: https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz#/postcss-modules-extract-imports-3.1.0.tgz
-Source1955: https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz#/postcss-modules-local-by-default-4.0.5.tgz
-Source1956: https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz#/postcss-modules-scope-3.2.0.tgz
-Source1957: https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#/postcss-modules-values-4.0.0.tgz
-Source1958: https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.2.tgz#/postcss-normalize-charset-6.0.2.tgz
-Source1959: https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.2.tgz#/postcss-normalize-display-values-6.0.2.tgz
-Source1960: https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.2.tgz#/postcss-normalize-positions-6.0.2.tgz
-Source1961: https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.2.tgz#/postcss-normalize-repeat-style-6.0.2.tgz
-Source1962: https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.2.tgz#/postcss-normalize-string-6.0.2.tgz
-Source1963: https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.2.tgz#/postcss-normalize-timing-functions-6.0.2.tgz
-Source1964: https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.1.0.tgz#/postcss-normalize-unicode-6.1.0.tgz
-Source1965: https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.2.tgz#/postcss-normalize-url-6.0.2.tgz
-Source1966: https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.2.tgz#/postcss-normalize-whitespace-6.0.2.tgz
-Source1967: https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.2.tgz#/postcss-ordered-values-6.0.2.tgz
-Source1968: https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.1.0.tgz#/postcss-reduce-initial-6.1.0.tgz
-Source1969: https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.2.tgz#/postcss-reduce-transforms-6.0.2.tgz
-Source1970: https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz#/postcss-resolve-nested-selector-0.1.1.tgz
-Source1971: https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.0.tgz#/postcss-safe-parser-7.0.0.tgz
-Source1972: https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz#/postcss-scss-4.0.9.tgz
-Source1973: https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz#/postcss-selector-parser-6.0.16.tgz
-Source1974: https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.3.tgz#/postcss-svgo-6.0.3.tgz
-Source1975: https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.4.tgz#/postcss-unique-selectors-6.0.4.tgz
-Source1976: https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#/postcss-value-parser-4.2.0.tgz
-Source1977: https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz#/prelude-ls-1.2.1.tgz
-Source1978: https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz#/pretty-format-27.5.1.tgz
-Source1979: https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz#/pretty-format-29.7.0.tgz
-Source1980: https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz#/process-nextick-args-2.0.1.tgz
-Source1981: https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz#/prompts-2.4.2.tgz
-Source1982: https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz#/prop-types-15.8.1.tgz
-Source1983: https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz#/proxy-addr-2.0.7.tgz
-Source1984: https://registry.npmjs.org/psl/-/psl-1.9.0.tgz#/psl-1.9.0.tgz
-Source1985: https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz#/punycode-2.3.1.tgz
-Source1986: https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz#/punycode.js-2.3.1.tgz
-Source1987: https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz#/pure-rand-6.1.0.tgz
-Source1988: https://registry.npmjs.org/qs/-/qs-6.11.0.tgz#/qs-6.11.0.tgz
-Source1989: https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz#/querystringify-2.2.0.tgz
-Source1990: https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz#/queue-microtask-1.2.3.tgz
-Source1991: https://registry.npmjs.org/qunit/-/qunit-2.20.1.tgz#/qunit-2.20.1.tgz
-Source1992: https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz#/randombytes-2.1.0.tgz
-Source1993: https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz#/range-parser-1.2.1.tgz
-Source1994: https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz#/raw-body-2.5.2.tgz
-Source1995: https://registry.npmjs.org/react/-/react-18.3.1.tgz#/react-18.3.1.tgz
-Source1996: https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz#/react-dom-18.3.1.tgz
-Source1997: https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.2.3.tgz#/react-dropzone-14.2.3.tgz
-Source1998: https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz#/react-is-16.13.1.tgz
-Source1999: https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz#/react-is-17.0.2.tgz
-Source2000: https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz#/react-is-18.3.1.tgz
-Source2001: https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz#/react-refresh-0.14.2.tgz
-Source2002: https://registry.npmjs.org/react-router/-/react-router-6.23.0.tgz#/react-router-6.23.0.tgz
-Source2003: https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.23.0.tgz#/react-router-dom-6.23.0.tgz
-Source2004: https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz#/readable-stream-2.3.8.tgz
-Source2005: https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz#/readable-stream-3.6.2.tgz
-Source2006: https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz#/readdirp-3.6.0.tgz
-Source2007: https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz#/rechoir-0.8.0.tgz
-Source2008: https://registry.npmjs.org/redent/-/redent-3.0.0.tgz#/redent-3.0.0.tgz
-Source2009: https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz#/reflect.getprototypeof-1.0.6.tgz
-Source2010: https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz#/regenerate-1.4.2.tgz
-Source2011: https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#/regenerate-unicode-properties-10.1.1.tgz
-Source2012: https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#/regenerator-runtime-0.14.1.tgz
-Source2013: https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz#/regenerator-transform-0.15.2.tgz
-Source2014: https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#/regexp.prototype.flags-1.5.2.tgz
-Source2015: https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz#/regexpp-3.2.0.tgz
-Source2016: https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz#/regexpu-core-5.3.2.tgz
-Source2017: https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz#/regjsparser-0.9.1.tgz
-Source2018: https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz#/relateurl-0.2.7.tgz
-Source2019: https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz#/repeat-string-1.6.1.tgz
-Source2020: https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz#/require-directory-2.1.1.tgz
-Source2021: https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz#/require-from-string-2.0.2.tgz
-Source2022: https://registry.npmjs.org/requireindex/-/requireindex-1.1.0.tgz#/requireindex-1.1.0.tgz
-Source2023: https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz#/requires-port-1.0.0.tgz
-Source2024: https://registry.npmjs.org/requizzle/-/requizzle-0.2.4.tgz#/requizzle-0.2.4.tgz
-Source2025: https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz#/resolve-1.22.8.tgz
-Source2026: https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz#/resolve-2.0.0-next.5.tgz
-Source2027: https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz#/resolve-cwd-3.0.0.tgz
-Source2028: https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz#/resolve-from-4.0.0.tgz
-Source2029: https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz#/resolve-from-5.0.0.tgz
-Source2030: https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#/resolve-pkg-maps-1.0.0.tgz
-Source2031: https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz#/resolve.exports-2.0.2.tgz
-Source2032: https://registry.npmjs.org/retry/-/retry-0.13.1.tgz#/retry-0.13.1.tgz
-Source2033: https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz#/reusify-1.0.4.tgz
-Source2034: https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz#/rimraf-3.0.2.tgz
-Source2035: https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz#/rimraf-5.0.5.tgz
-Source2036: https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz#/rrweb-cssom-0.6.0.tgz
-Source2037: https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz#/run-applescript-7.0.0.tgz
-Source2038: https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz#/run-parallel-1.2.0.tgz
-Source2039: https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz#/safe-array-concat-1.1.2.tgz
-Source2040: https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz#/safe-buffer-5.1.2.tgz
-Source2041: https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz#/safe-buffer-5.2.1.tgz
-Source2042: https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz#/safe-regex-test-1.0.3.tgz
-Source2043: https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz#/safer-buffer-2.1.2.tgz
-Source2044: https://registry.npmjs.org/sass/-/sass-1.77.0.tgz#/sass-1.77.0.tgz
-Source2045: https://registry.npmjs.org/sass-loader/-/sass-loader-14.2.1.tgz#/sass-loader-14.2.1.tgz
-Source2046: https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz#/saxes-6.0.0.tgz
-Source2047: https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz#/scheduler-0.23.2.tgz
-Source2048: https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz#/schema-utils-3.3.0.tgz
-Source2049: https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz#/schema-utils-4.2.0.tgz
-Source2050: https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz#/select-hose-2.0.0.tgz
-Source2051: https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz#/selfsigned-2.4.1.tgz
-Source2052: https://registry.npmjs.org/semver/-/semver-6.3.1.tgz#/semver-6.3.1.tgz
-Source2053: https://registry.npmjs.org/semver/-/semver-7.6.0.tgz#/semver-7.6.0.tgz
-Source2054: https://registry.npmjs.org/send/-/send-0.18.0.tgz#/send-0.18.0.tgz
-Source2055: https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz#/serialize-javascript-6.0.2.tgz
-Source2056: https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz#/serve-index-1.9.1.tgz
-Source2057: https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz#/serve-static-1.15.0.tgz
-Source2058: https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz#/set-function-length-1.2.2.tgz
-Source2059: https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz#/set-function-name-2.0.2.tgz
-Source2060: https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz#/setprototypeof-1.1.0.tgz
-Source2061: https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz#/setprototypeof-1.2.0.tgz
-Source2062: https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz#/shallow-clone-3.0.1.tgz
-Source2063: https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz#/shebang-command-2.0.0.tgz
-Source2064: https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz#/shebang-regex-3.0.0.tgz
-Source2065: https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz#/shell-quote-1.8.1.tgz
-Source2066: https://registry.npmjs.org/shiki/-/shiki-0.14.7.tgz#/shiki-0.14.7.tgz
-Source2067: https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz#/side-channel-1.0.6.tgz
-Source2068: https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz#/signal-exit-3.0.7.tgz
-Source2069: https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz#/signal-exit-4.1.0.tgz
-Source2070: https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz#/sisteransi-1.0.5.tgz
-Source2071: https://registry.npmjs.org/slash/-/slash-3.0.0.tgz#/slash-3.0.0.tgz
-Source2072: https://registry.npmjs.org/slash/-/slash-5.1.0.tgz#/slash-5.1.0.tgz
-Source2073: https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz#/slice-ansi-4.0.0.tgz
-Source2074: https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz#/snake-case-3.0.4.tgz
-Source2075: https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz#/sockjs-0.3.24.tgz
-Source2076: https://registry.npmjs.org/sonic-forest/-/sonic-forest-1.0.2.tgz#/sonic-forest-1.0.2.tgz
-Source2077: https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz#/source-map-0.6.1.tgz
-Source2078: https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz#/source-map-0.7.4.tgz
-Source2079: https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz#/source-map-js-1.2.0.tgz
-Source2080: https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz#/source-map-support-0.5.13.tgz
-Source2081: https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz#/source-map-support-0.5.21.tgz
-Source2082: https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz#/spdy-4.0.2.tgz
-Source2083: https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz#/spdy-transport-3.0.0.tgz
-Source2084: https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz#/sprintf-js-1.0.3.tgz
-Source2085: https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz#/sprintf-js-1.1.3.tgz
-Source2086: https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz#/stack-utils-2.0.6.tgz
-Source2087: https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz#/stackframe-1.3.4.tgz
-Source2088: https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz#/statuses-1.5.0.tgz
-Source2089: https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz#/statuses-2.0.1.tgz
-Source2090: https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz#/string-length-4.0.2.tgz
-Source2091: https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz#/string-natural-compare-3.0.1.tgz
-Source2092: https://registry.npmjs.org/string-replace-loader/-/string-replace-loader-3.1.0.tgz#/string-replace-loader-3.1.0.tgz
-Source2093: https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#/string-width-4.2.3.tgz
-Source2094: https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz#/string-width-5.1.2.tgz
-Source2095: https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz#/string.prototype.matchall-4.0.11.tgz
-Source2096: https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz#/string.prototype.trim-1.2.9.tgz
-Source2097: https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz#/string.prototype.trimend-1.0.8.tgz
-Source2098: https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#/string.prototype.trimstart-1.0.8.tgz
-Source2099: https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz#/string_decoder-1.1.1.tgz
-Source2100: https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz#/string_decoder-1.3.0.tgz
-Source2101: https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#/strip-ansi-6.0.1.tgz
-Source2102: https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz#/strip-ansi-7.1.0.tgz
-Source2103: https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz#/strip-bom-3.0.0.tgz
-Source2104: https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz#/strip-bom-4.0.0.tgz
-Source2105: https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz#/strip-final-newline-2.0.0.tgz
-Source2106: https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz#/strip-indent-3.0.0.tgz
-Source2107: https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz#/strip-json-comments-3.1.1.tgz
-Source2108: https://registry.npmjs.org/stylehacks/-/stylehacks-6.1.1.tgz#/stylehacks-6.1.1.tgz
-Source2109: https://registry.npmjs.org/stylelint/-/stylelint-16.5.0.tgz#/stylelint-16.5.0.tgz
-Source2110: https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-14.0.0.tgz#/stylelint-config-recommended-14.0.0.tgz
-Source2111: https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-14.0.0.tgz#/stylelint-config-recommended-scss-14.0.0.tgz
-Source2112: https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-36.0.0.tgz#/stylelint-config-standard-36.0.0.tgz
-Source2113: https://registry.npmjs.org/stylelint-config-standard-scss/-/stylelint-config-standard-scss-13.1.0.tgz#/stylelint-config-standard-scss-13.1.0.tgz
-Source2114: https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-6.3.0.tgz#/stylelint-scss-6.3.0.tgz
-Source2115: https://registry.npmjs.org/stylelint-webpack-plugin/-/stylelint-webpack-plugin-5.0.0.tgz#/stylelint-webpack-plugin-5.0.0.tgz
-Source2116: https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz#/supports-color-5.5.0.tgz
-Source2117: https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz#/supports-color-7.2.0.tgz
-Source2118: https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz#/supports-color-8.1.1.tgz
-Source2119: https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz#/supports-hyperlinks-3.0.0.tgz
-Source2120: https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#/supports-preserve-symlinks-flag-1.0.0.tgz
-Source2121: https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz#/svg-parser-2.0.4.tgz
-Source2122: https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz#/svg-tags-1.0.0.tgz
-Source2123: https://registry.npmjs.org/svgo/-/svgo-3.2.0.tgz#/svgo-3.2.0.tgz
-Source2124: https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz#/symbol-tree-3.2.4.tgz
-Source2125: https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz#/tabbable-6.2.0.tgz
-Source2126: https://registry.npmjs.org/table/-/table-6.8.2.tgz#/table-6.8.2.tgz
-Source2127: https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz#/tapable-2.2.1.tgz
-Source2128: https://registry.npmjs.org/terser/-/terser-5.31.0.tgz#/terser-5.31.0.tgz
-Source2129: https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz#/terser-webpack-plugin-5.3.10.tgz
-Source2130: https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz#/test-exclude-6.0.0.tgz
-Source2131: https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz#/text-table-0.2.0.tgz
-Source2132: https://registry.npmjs.org/thingies/-/thingies-1.21.0.tgz#/thingies-1.21.0.tgz
-Source2133: https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz#/thunky-1.1.0.tgz
-Source2134: https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz#/tiny-glob-0.2.9.tgz
-Source2135: https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz#/tmpl-1.0.5.tgz
-Source2136: https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz#/to-fast-properties-2.0.0.tgz
-Source2137: https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz#/to-regex-range-5.0.1.tgz
-Source2138: https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz#/toidentifier-1.0.1.tgz
-Source2139: https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz#/tough-cookie-4.1.4.tgz
-Source2140: https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz#/tr46-4.1.1.tgz
-Source2141: https://registry.npmjs.org/tree-dump/-/tree-dump-1.0.1.tgz#/tree-dump-1.0.1.tgz
-Source2142: https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz#/ts-api-utils-1.3.0.tgz
-Source2143: https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.2.tgz#/ts-jest-29.1.2.tgz
-Source2144: https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#/tsconfig-paths-3.15.0.tgz
-Source2145: https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#/tsconfig-paths-4.2.0.tgz
-Source2146: https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.1.0.tgz#/tsconfig-paths-webpack-plugin-4.1.0.tgz
-Source2147: https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz#/tslib-2.6.2.tgz
-Source2148: https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz#/type-check-0.4.0.tgz
-Source2149: https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz#/type-detect-4.0.8.tgz
-Source2150: https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz#/type-fest-0.20.2.tgz
-Source2151: https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz#/type-fest-0.21.3.tgz
-Source2152: https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz#/type-fest-1.4.0.tgz
-Source2153: https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz#/type-is-1.6.18.tgz
-Source2154: https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#/typed-array-buffer-1.0.2.tgz
-Source2155: https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#/typed-array-byte-length-1.0.1.tgz
-Source2156: https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#/typed-array-byte-offset-1.0.2.tgz
-Source2157: https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz#/typed-array-length-1.0.6.tgz
-Source2158: https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#/typedarray-to-buffer-3.1.5.tgz
-Source2159: https://registry.npmjs.org/typedoc/-/typedoc-0.25.13.tgz#/typedoc-0.25.13.tgz
-Source2160: https://registry.npmjs.org/typedoc-plugin-external-module-map/-/typedoc-plugin-external-module-map-2.0.1.tgz#/typedoc-plugin-external-module-map-2.0.1.tgz
-Source2161: https://registry.npmjs.org/typedoc-plugin-merge-modules/-/typedoc-plugin-merge-modules-5.1.0.tgz#/typedoc-plugin-merge-modules-5.1.0.tgz
-Source2162: https://registry.npmjs.org/typedoc-plugin-missing-exports/-/typedoc-plugin-missing-exports-2.2.0.tgz#/typedoc-plugin-missing-exports-2.2.0.tgz
-Source2163: https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz#/typescript-5.4.5.tgz
-Source2164: https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz#/uc.micro-2.1.0.tgz
-Source2165: https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz#/unbox-primitive-1.0.2.tgz
-Source2166: https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz#/underscore-1.13.6.tgz
-Source2167: https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz#/undici-types-5.26.5.tgz
-Source2168: https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#/unicode-canonical-property-names-ecmascript-2.0.0.tgz
-Source2169: https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#/unicode-match-property-ecmascript-2.0.0.tgz
-Source2170: https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#/unicode-match-property-value-ecmascript-2.1.0.tgz
-Source2171: https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#/unicode-property-aliases-ecmascript-2.1.0.tgz
-Source2172: https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz#/unicorn-magic-0.1.0.tgz
-Source2173: https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz#/unique-string-3.0.0.tgz
-Source2174: https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz#/universalify-0.2.0.tgz
-Source2175: https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz#/unpipe-1.0.0.tgz
-Source2176: https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.15.tgz#/update-browserslist-db-1.0.15.tgz
-Source2177: https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz#/uri-js-4.4.1.tgz
-Source2178: https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz#/url-parse-1.5.10.tgz
-Source2179: https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz#/util-deprecate-1.0.2.tgz
-Source2180: https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz#/utils-merge-1.0.1.tgz
-Source2181: https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz#/uuid-8.3.2.tgz
-Source2182: https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz#/v8-to-istanbul-9.2.0.tgz
-Source2183: https://registry.npmjs.org/vary/-/vary-1.1.2.tgz#/vary-1.1.2.tgz
-Source2184: https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.11.tgz#/vscode-languageserver-textdocument-1.0.11.tgz
-Source2185: https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz#/vscode-oniguruma-1.7.0.tgz
-Source2186: https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz#/vscode-textmate-8.0.0.tgz
-Source2187: https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz#/vscode-uri-3.0.8.tgz
-Source2188: https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz#/w3c-xmlserializer-4.0.0.tgz
-Source2189: https://registry.npmjs.org/walker/-/walker-1.0.8.tgz#/walker-1.0.8.tgz
-Source2190: https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz#/watchpack-2.4.1.tgz
-Source2191: https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz#/wbuf-1.7.3.tgz
-Source2192: https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz#/webidl-conversions-7.0.0.tgz
-Source2193: https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz#/webpack-5.91.0.tgz
-Source2194: https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz#/webpack-cli-5.1.4.tgz
-Source2195: https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.2.1.tgz#/webpack-dev-middleware-7.2.1.tgz
-Source2196: https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.0.4.tgz#/webpack-dev-server-5.0.4.tgz
-Source2197: https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz#/webpack-merge-5.10.0.tgz
-Source2198: https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz#/webpack-sources-3.2.3.tgz
-Source2199: https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz#/websocket-driver-0.7.4.tgz
-Source2200: https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz#/websocket-extensions-0.1.4.tgz
-Source2201: https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#/whatwg-encoding-2.0.0.tgz
-Source2202: https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#/whatwg-mimetype-3.0.0.tgz
-Source2203: https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz#/whatwg-url-12.0.1.tgz
-Source2204: https://registry.npmjs.org/which/-/which-1.3.1.tgz#/which-1.3.1.tgz
-Source2205: https://registry.npmjs.org/which/-/which-2.0.2.tgz#/which-2.0.2.tgz
-Source2206: https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#/which-boxed-primitive-1.0.2.tgz
-Source2207: https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz#/which-builtin-type-1.1.3.tgz
-Source2208: https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz#/which-collection-1.0.2.tgz
-Source2209: https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz#/which-typed-array-1.1.15.tgz
-Source2210: https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz#/wildcard-2.0.1.tgz
-Source2211: https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz#/word-wrap-1.2.5.tgz
-Source2212: https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz#/wrap-ansi-7.0.0.tgz
-Source2213: https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz#/wrap-ansi-8.1.0.tgz
-Source2214: https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz#/wrappy-1.0.2.tgz
-Source2215: https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz#/write-file-atomic-3.0.3.tgz
-Source2216: https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz#/write-file-atomic-4.0.2.tgz
-Source2217: https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz#/write-file-atomic-5.0.1.tgz
-Source2218: https://registry.npmjs.org/ws/-/ws-8.17.0.tgz#/ws-8.17.0.tgz
-Source2219: https://registry.npmjs.org/xbytes/-/xbytes-1.9.1.tgz#/xbytes-1.9.1.tgz
-Source2220: https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz#/xdg-basedir-5.1.0.tgz
-Source2221: https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz#/xml-name-validator-4.0.0.tgz
-Source2222: https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz#/xmlchars-2.2.0.tgz
-Source2223: https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz#/xmlcreate-2.0.4.tgz
-Source2224: https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz#/y18n-5.0.8.tgz
-Source2225: https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz#/yallist-3.1.1.tgz
-Source2226: https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz#/yallist-4.0.0.tgz
-Source2227: https://registry.npmjs.org/yaml/-/yaml-2.4.2.tgz#/yaml-2.4.2.tgz
-Source2228: https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz#/yargs-17.7.2.tgz
-Source2229: https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz#/yargs-parser-21.1.1.tgz
-Source2230: https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz#/yocto-queue-0.1.0.tgz
-Source2231: https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz#/yocto-queue-1.0.0.tgz
+Source1184: https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#/@cspotcode-source-map-support-0.8.1.tgz
+Source1185: https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.6.3.tgz#/@csstools-css-parser-algorithms-2.6.3.tgz
+Source1186: https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.3.1.tgz#/@csstools-css-tokenizer-2.3.1.tgz
+Source1187: https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.11.tgz#/@csstools-media-query-list-parser-2.1.11.tgz
+Source1188: https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.0.3.tgz#/@csstools-selector-specificity-3.0.3.tgz
+Source1189: https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#/@discoveryjs-json-ext-0.5.7.tgz
+Source1190: https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.0.0.tgz#/@dual-bundle-import-meta-resolve-4.0.0.tgz
+Source1191: https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#/@eslint-community-eslint-utils-4.4.0.tgz
+Source1192: https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#/@eslint-community-regexpp-4.10.0.tgz
+Source1193: https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#/@eslint-eslintrc-2.1.4.tgz
+Source1194: https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz#/@eslint-js-8.57.0.tgz
+Source1195: https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#/@humanwhocodes-config-array-0.11.14.tgz
+Source1196: https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#/@humanwhocodes-module-importer-1.0.1.tgz
+Source1197: https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#/@humanwhocodes-object-schema-2.0.3.tgz
+Source1198: https://registry.npmjs.org/@icons-pack/react-simple-icons/-/react-simple-icons-9.4.1.tgz#/@icons-pack-react-simple-icons-9.4.1.tgz
+Source1199: https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz#/@isaacs-cliui-8.0.2.tgz
+Source1200: https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#/@istanbuljs-load-nyc-config-1.1.0.tgz
+Source1201: https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz#/@istanbuljs-schema-0.1.3.tgz
+Source1202: https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz#/@jest-console-29.7.0.tgz
+Source1203: https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz#/@jest-core-29.7.0.tgz
+Source1204: https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz#/@jest-environment-29.7.0.tgz
+Source1205: https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz#/@jest-expect-29.7.0.tgz
+Source1206: https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz#/@jest-expect-utils-29.7.0.tgz
+Source1207: https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz#/@jest-fake-timers-29.7.0.tgz
+Source1208: https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz#/@jest-globals-29.7.0.tgz
+Source1209: https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz#/@jest-reporters-29.7.0.tgz
+Source1210: https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz#/@jest-schemas-29.6.3.tgz
+Source1211: https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz#/@jest-source-map-29.6.3.tgz
+Source1212: https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz#/@jest-test-result-29.7.0.tgz
+Source1213: https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#/@jest-test-sequencer-29.7.0.tgz
+Source1214: https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz#/@jest-transform-29.7.0.tgz
+Source1215: https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz#/@jest-types-29.6.3.tgz
+Source1216: https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#/@jridgewell-gen-mapping-0.3.5.tgz
+Source1217: https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#/@jridgewell-resolve-uri-3.1.2.tgz
+Source1218: https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz#/@jridgewell-set-array-1.2.1.tgz
+Source1219: https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz#/@jridgewell-source-map-0.3.6.tgz
+Source1220: https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#/@jridgewell-sourcemap-codec-1.4.15.tgz
+Source1221: https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#/@jridgewell-trace-mapping-0.3.25.tgz
+Source1222: https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#/@jridgewell-trace-mapping-0.3.9.tgz
+Source1223: https://registry.npmjs.org/@jsdoc/salty/-/salty-0.2.8.tgz#/@jsdoc-salty-0.2.8.tgz
+Source1224: https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.1.tgz#/@jsonjoy.com-base64-1.1.1.tgz
+Source1225: https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.0.3.tgz#/@jsonjoy.com-json-pack-1.0.3.tgz
+Source1226: https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.1.2.tgz#/@jsonjoy.com-util-1.1.2.tgz
+Source1227: https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz#/@leichtgewicht-ip-codec-2.0.5.tgz
+Source1228: https://registry.npmjs.org/@material-symbols/svg-400/-/svg-400-0.17.4.tgz#/@material-symbols-svg-400-0.17.4.tgz
+Source1229: https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#/@nicolo-ribaudo-eslint-scope-5-internals-5.1.1-v1.tgz
+Source1230: https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#/@nodelib-fs.scandir-2.1.5.tgz
+Source1231: https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#/@nodelib-fs.stat-2.0.5.tgz
+Source1232: https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#/@nodelib-fs.walk-1.2.8.tgz
+Source1233: https://registry.npmjs.org/@patternfly/patternfly/-/patternfly-5.3.1.tgz#/@patternfly-patternfly-5.3.1.tgz
+Source1234: https://registry.npmjs.org/@patternfly/react-core/-/react-core-5.3.3.tgz#/@patternfly-react-core-5.3.3.tgz
+Source1235: https://registry.npmjs.org/@patternfly/react-icons/-/react-icons-5.3.2.tgz#/@patternfly-react-icons-5.3.2.tgz
+Source1236: https://registry.npmjs.org/@patternfly/react-styles/-/react-styles-5.3.1.tgz#/@patternfly-react-styles-5.3.1.tgz
+Source1237: https://registry.npmjs.org/@patternfly/react-table/-/react-table-5.3.3.tgz#/@patternfly-react-table-5.3.3.tgz
+Source1238: https://registry.npmjs.org/@patternfly/react-tokens/-/react-tokens-5.3.1.tgz#/@patternfly-react-tokens-5.3.1.tgz
+Source1239: https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#/@pkgjs-parseargs-0.11.0.tgz
+Source1240: https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.13.tgz#/@pmmmwh-react-refresh-webpack-plugin-0.5.13.tgz
+Source1241: https://registry.npmjs.org/@remix-run/router/-/router-1.16.0.tgz#/@remix-run-router-1.16.0.tgz
+Source1242: https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz#/@sinclair-typebox-0.27.8.tgz
+Source1243: https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz#/@sindresorhus-merge-streams-2.3.0.tgz
+Source1244: https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz#/@sinonjs-commons-3.0.1.tgz
+Source1245: https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#/@sinonjs-fake-timers-10.3.0.tgz
+Source1246: https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz#/@svgr-babel-plugin-add-jsx-attribute-8.0.0.tgz
+Source1247: https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz#/@svgr-babel-plugin-remove-jsx-attribute-8.0.0.tgz
+Source1248: https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz#/@svgr-babel-plugin-remove-jsx-empty-expression-8.0.0.tgz
+Source1249: https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz#/@svgr-babel-plugin-replace-jsx-attribute-value-8.0.0.tgz
+Source1250: https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz#/@svgr-babel-plugin-svg-dynamic-title-8.0.0.tgz
+Source1251: https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz#/@svgr-babel-plugin-svg-em-dimensions-8.0.0.tgz
+Source1252: https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz#/@svgr-babel-plugin-transform-react-native-svg-8.1.0.tgz
+Source1253: https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz#/@svgr-babel-plugin-transform-svg-component-8.0.0.tgz
+Source1254: https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.1.0.tgz#/@svgr-babel-preset-8.1.0.tgz
+Source1255: https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz#/@svgr-core-8.1.0.tgz
+Source1256: https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz#/@svgr-hast-util-to-babel-ast-8.0.0.tgz
+Source1257: https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz#/@svgr-plugin-jsx-8.1.0.tgz
+Source1258: https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz#/@svgr-plugin-svgo-8.1.0.tgz
+Source1259: https://registry.npmjs.org/@svgr/webpack/-/webpack-8.1.0.tgz#/@svgr-webpack-8.1.0.tgz
+Source1260: https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.49.1.tgz#/@tanstack-query-core-5.49.1.tgz
+Source1261: https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.49.2.tgz#/@tanstack-react-query-5.49.2.tgz
+Source1262: https://registry.npmjs.org/@testing-library/dom/-/dom-10.1.0.tgz#/@testing-library-dom-10.1.0.tgz
+Source1263: https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.4.5.tgz#/@testing-library-jest-dom-6.4.5.tgz
+Source1264: https://registry.npmjs.org/@testing-library/react/-/react-15.0.7.tgz#/@testing-library-react-15.0.7.tgz
+Source1265: https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.2.tgz#/@testing-library-user-event-14.5.2.tgz
+Source1266: https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz#/@tootallnate-once-2.0.0.tgz
+Source1267: https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz#/@trysound-sax-0.2.0.tgz
+Source1268: https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz#/@tsconfig-node10-1.0.11.tgz
+Source1269: https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz#/@tsconfig-node12-1.0.11.tgz
+Source1270: https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz#/@tsconfig-node14-1.0.3.tgz
+Source1271: https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz#/@tsconfig-node16-1.0.4.tgz
+Source1272: https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz#/@types-aria-query-5.0.4.tgz
+Source1273: https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz#/@types-babel__core-7.20.5.tgz
+Source1274: https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz#/@types-babel__generator-7.6.8.tgz
+Source1275: https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz#/@types-babel__template-7.4.4.tgz
+Source1276: https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz#/@types-babel__traverse-7.20.5.tgz
+Source1277: https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz#/@types-body-parser-1.19.5.tgz
+Source1278: https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz#/@types-bonjour-3.5.13.tgz
+Source1279: https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz#/@types-connect-3.4.38.tgz
+Source1280: https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz#/@types-connect-history-api-fallback-1.5.4.tgz
+Source1281: https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz#/@types-eslint-8.56.10.tgz
+Source1282: https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#/@types-eslint-scope-3.7.7.tgz
+Source1283: https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz#/@types-estree-1.0.5.tgz
+Source1284: https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz#/@types-express-4.17.21.tgz
+Source1285: https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.0.tgz#/@types-express-serve-static-core-4.19.0.tgz
+Source1286: https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#/@types-graceful-fs-4.1.9.tgz
+Source1287: https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-7.0.2.tgz#/@types-html-minifier-terser-7.0.2.tgz
+Source1288: https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz#/@types-http-errors-2.0.4.tgz
+Source1289: https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz#/@types-http-proxy-1.17.14.tgz
+Source1290: https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#/@types-istanbul-lib-coverage-2.0.6.tgz
+Source1291: https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#/@types-istanbul-lib-report-3.0.3.tgz
+Source1292: https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#/@types-istanbul-reports-3.0.4.tgz
+Source1293: https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz#/@types-jest-29.5.12.tgz
+Source1294: https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz#/@types-jsdom-20.0.1.tgz
+Source1295: https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz#/@types-json-schema-7.0.15.tgz
+Source1296: https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz#/@types-json5-0.0.29.tgz
+Source1297: https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz#/@types-linkify-it-5.0.0.tgz
+Source1298: https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.1.tgz#/@types-markdown-it-14.1.1.tgz
+Source1299: https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz#/@types-mdurl-2.0.0.tgz
+Source1300: https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz#/@types-mime-1.3.5.tgz
+Source1301: https://registry.npmjs.org/@types/node/-/node-20.12.10.tgz#/@types-node-20.12.10.tgz
+Source1302: https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz#/@types-node-forge-1.3.11.tgz
+Source1303: https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz#/@types-prop-types-15.7.12.tgz
+Source1304: https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz#/@types-qs-6.9.15.tgz
+Source1305: https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz#/@types-range-parser-1.2.7.tgz
+Source1306: https://registry.npmjs.org/@types/react/-/react-18.3.1.tgz#/@types-react-18.3.1.tgz
+Source1307: https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz#/@types-react-dom-18.3.0.tgz
+Source1308: https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz#/@types-retry-0.12.2.tgz
+Source1309: https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz#/@types-semver-7.5.8.tgz
+Source1310: https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz#/@types-send-0.17.4.tgz
+Source1311: https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz#/@types-serve-index-1.9.4.tgz
+Source1312: https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz#/@types-serve-static-1.15.7.tgz
+Source1313: https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz#/@types-sockjs-0.3.36.tgz
+Source1314: https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz#/@types-stack-utils-2.0.3.tgz
+Source1315: https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz#/@types-tough-cookie-4.0.5.tgz
+Source1316: https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.18.5.tgz#/@types-webpack-env-1.18.5.tgz
+Source1317: https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz#/@types-ws-8.5.10.tgz
+Source1318: https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz#/@types-yargs-17.0.32.tgz
+Source1319: https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#/@types-yargs-parser-21.0.3.tgz
+Source1320: https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.8.0.tgz#/@typescript-eslint-eslint-plugin-7.8.0.tgz
+Source1321: https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.8.0.tgz#/@typescript-eslint-parser-7.8.0.tgz
+Source1322: https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.8.0.tgz#/@typescript-eslint-scope-manager-7.8.0.tgz
+Source1323: https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.8.0.tgz#/@typescript-eslint-type-utils-7.8.0.tgz
+Source1324: https://registry.npmjs.org/@typescript-eslint/types/-/types-7.8.0.tgz#/@typescript-eslint-types-7.8.0.tgz
+Source1325: https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.8.0.tgz#/@typescript-eslint-typescript-estree-7.8.0.tgz
+Source1326: https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.8.0.tgz#/@typescript-eslint-utils-7.8.0.tgz
+Source1327: https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.8.0.tgz#/@typescript-eslint-visitor-keys-7.8.0.tgz
+Source1328: https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#/@ungap-structured-clone-1.2.0.tgz
+Source1329: https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz#/@webassemblyjs-ast-1.12.1.tgz
+Source1330: https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#/@webassemblyjs-floating-point-hex-parser-1.11.6.tgz
+Source1331: https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#/@webassemblyjs-helper-api-error-1.11.6.tgz
+Source1332: https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz#/@webassemblyjs-helper-buffer-1.12.1.tgz
+Source1333: https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#/@webassemblyjs-helper-numbers-1.11.6.tgz
+Source1334: https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#/@webassemblyjs-helper-wasm-bytecode-1.11.6.tgz
+Source1335: https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz#/@webassemblyjs-helper-wasm-section-1.12.1.tgz
+Source1336: https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#/@webassemblyjs-ieee754-1.11.6.tgz
+Source1337: https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#/@webassemblyjs-leb128-1.11.6.tgz
+Source1338: https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#/@webassemblyjs-utf8-1.11.6.tgz
+Source1339: https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz#/@webassemblyjs-wasm-edit-1.12.1.tgz
+Source1340: https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz#/@webassemblyjs-wasm-gen-1.12.1.tgz
+Source1341: https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz#/@webassemblyjs-wasm-opt-1.12.1.tgz
+Source1342: https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz#/@webassemblyjs-wasm-parser-1.12.1.tgz
+Source1343: https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz#/@webassemblyjs-wast-printer-1.12.1.tgz
+Source1344: https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz#/@webpack-cli-configtest-2.1.1.tgz
+Source1345: https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz#/@webpack-cli-info-2.0.2.tgz
+Source1346: https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz#/@webpack-cli-serve-2.0.5.tgz
+Source1347: https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz#/@xtuc-ieee754-1.2.0.tgz
+Source1348: https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz#/@xtuc-long-4.2.2.tgz
+Source1349: https://registry.npmjs.org/abab/-/abab-2.0.6.tgz#/abab-2.0.6.tgz
+Source1350: https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz#/accepts-1.3.8.tgz
+Source1351: https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz#/acorn-8.11.3.tgz
+Source1352: https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#/acorn-import-assertions-1.9.0.tgz
+Source1353: https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz#/acorn-jsx-5.3.2.tgz
+Source1354: https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz#/acorn-walk-8.3.3.tgz
+Source1355: https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz#/agent-base-6.0.2.tgz
+Source1356: https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz#/ajv-6.12.6.tgz
+Source1357: https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz#/ajv-8.13.0.tgz
+Source1358: https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz#/ajv-formats-2.1.1.tgz
+Source1359: https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz#/ajv-keywords-3.5.2.tgz
+Source1360: https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz#/ajv-keywords-5.1.0.tgz
+Source1361: https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz#/ansi-escapes-4.3.2.tgz
+Source1362: https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz#/ansi-html-community-0.0.8.tgz
+Source1363: https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz#/ansi-regex-5.0.1.tgz
+Source1364: https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz#/ansi-regex-6.0.1.tgz
+Source1365: https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.1.tgz#/ansi-sequence-parser-1.1.1.tgz
+Source1366: https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz#/ansi-styles-3.2.1.tgz
+Source1367: https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz#/ansi-styles-4.3.0.tgz
+Source1368: https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz#/ansi-styles-5.2.0.tgz
+Source1369: https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz#/ansi-styles-6.2.1.tgz
+Source1370: https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz#/anymatch-3.1.3.tgz
+Source1371: https://registry.npmjs.org/arg/-/arg-4.1.3.tgz#/arg-4.1.3.tgz
+Source1372: https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz#/argparse-1.0.10.tgz
+Source1373: https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz#/argparse-2.0.1.tgz
+Source1374: https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz#/aria-query-5.3.0.tgz
+Source1375: https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#/array-buffer-byte-length-1.0.1.tgz
+Source1376: https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz#/array-flatten-1.1.1.tgz
+Source1377: https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz#/array-includes-3.1.8.tgz
+Source1378: https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz#/array-timsort-1.0.3.tgz
+Source1379: https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz#/array-union-2.1.0.tgz
+Source1380: https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz#/array.prototype.findlast-1.2.5.tgz
+Source1381: https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz#/array.prototype.findlastindex-1.2.5.tgz
+Source1382: https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#/array.prototype.flat-1.3.2.tgz
+Source1383: https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#/array.prototype.flatmap-1.3.2.tgz
+Source1384: https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz#/array.prototype.toreversed-1.1.2.tgz
+Source1385: https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz#/array.prototype.tosorted-1.1.3.tgz
+Source1386: https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#/arraybuffer.prototype.slice-1.0.3.tgz
+Source1387: https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz#/astral-regex-2.0.0.tgz
+Source1388: https://registry.npmjs.org/async/-/async-3.2.5.tgz#/async-3.2.5.tgz
+Source1389: https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz#/asynckit-0.4.0.tgz
+Source1390: https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz#/attr-accept-2.2.2.tgz
+Source1391: https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#/available-typed-arrays-1.0.7.tgz
+Source1392: https://registry.npmjs.org/axios/-/axios-1.7.3.tgz#/axios-1.7.3.tgz
+Source1393: https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz#/babel-jest-29.7.0.tgz
+Source1394: https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz#/babel-loader-9.1.3.tgz
+Source1395: https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#/babel-plugin-istanbul-6.1.1.tgz
+Source1396: https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#/babel-plugin-jest-hoist-29.6.3.tgz
+Source1397: https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz#/babel-plugin-polyfill-corejs2-0.4.11.tgz
+Source1398: https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz#/babel-plugin-polyfill-corejs3-0.10.4.tgz
+Source1399: https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz#/babel-plugin-polyfill-regenerator-0.6.2.tgz
+Source1400: https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#/babel-preset-current-node-syntax-1.0.1.tgz
+Source1401: https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#/babel-preset-jest-29.6.3.tgz
+Source1402: https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz#/balanced-match-1.0.2.tgz
+Source1403: https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz#/balanced-match-2.0.0.tgz
+Source1404: https://registry.npmjs.org/batch/-/batch-0.6.1.tgz#/batch-0.6.1.tgz
+Source1405: https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz#/big.js-5.2.2.tgz
+Source1406: https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz#/binary-extensions-2.3.0.tgz
+Source1407: https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz#/bluebird-3.7.2.tgz
+Source1408: https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz#/body-parser-1.20.2.tgz
+Source1409: https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz#/bonjour-service-1.2.1.tgz
+Source1410: https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz#/boolbase-1.0.0.tgz
+Source1411: https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz#/brace-expansion-1.1.11.tgz
+Source1412: https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz#/brace-expansion-2.0.1.tgz
+Source1413: https://registry.npmjs.org/braces/-/braces-3.0.2.tgz#/braces-3.0.2.tgz
+Source1414: https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz#/browserslist-4.23.0.tgz
+Source1415: https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz#/bs-logger-0.2.6.tgz
+Source1416: https://registry.npmjs.org/bser/-/bser-2.1.1.tgz#/bser-2.1.1.tgz
+Source1417: https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz#/buffer-from-1.1.2.tgz
+Source1418: https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz#/builtin-modules-3.3.0.tgz
+Source1419: https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz#/builtins-5.1.0.tgz
+Source1420: https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz#/bundle-name-4.1.0.tgz
+Source1421: https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz#/bytes-3.0.0.tgz
+Source1422: https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz#/bytes-3.1.2.tgz
+Source1423: https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz#/call-bind-1.0.7.tgz
+Source1424: https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz#/callsites-3.1.0.tgz
+Source1425: https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz#/camel-case-4.1.2.tgz
+Source1426: https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz#/camelcase-5.3.1.tgz
+Source1427: https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz#/camelcase-6.3.0.tgz
+Source1428: https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz#/caniuse-api-3.0.0.tgz
+Source1429: https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001616.tgz#/caniuse-lite-1.0.30001616.tgz
+Source1430: https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz#/catharsis-0.9.0.tgz
+Source1431: https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz#/chalk-2.4.2.tgz
+Source1432: https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz#/chalk-3.0.0.tgz
+Source1433: https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz#/chalk-4.1.2.tgz
+Source1434: https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz#/chalk-5.3.0.tgz
+Source1435: https://registry.npmjs.org/chalk-template/-/chalk-template-1.1.0.tgz#/chalk-template-1.1.0.tgz
+Source1436: https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz#/char-regex-1.0.2.tgz
+Source1437: https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz#/chokidar-3.6.0.tgz
+Source1438: https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#/chrome-trace-event-1.0.3.tgz
+Source1439: https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz#/ci-info-3.9.0.tgz
+Source1440: https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz#/cjs-module-lexer-1.3.1.tgz
+Source1441: https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz#/clean-css-5.3.3.tgz
+Source1442: https://registry.npmjs.org/clear-module/-/clear-module-4.1.2.tgz#/clear-module-4.1.2.tgz
+Source1443: https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz#/cliui-8.0.1.tgz
+Source1444: https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz#/clone-deep-4.0.1.tgz
+Source1445: https://registry.npmjs.org/co/-/co-4.6.0.tgz#/co-4.6.0.tgz
+Source1446: https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#/collect-v8-coverage-1.0.2.tgz
+Source1447: https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz#/color-convert-1.9.3.tgz
+Source1448: https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz#/color-convert-2.0.1.tgz
+Source1449: https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz#/color-name-1.1.3.tgz
+Source1450: https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz#/color-name-1.1.4.tgz
+Source1451: https://registry.npmjs.org/colord/-/colord-2.9.3.tgz#/colord-2.9.3.tgz
+Source1452: https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz#/colorette-2.0.20.tgz
+Source1453: https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz#/combined-stream-1.0.8.tgz
+Source1454: https://registry.npmjs.org/commander/-/commander-10.0.1.tgz#/commander-10.0.1.tgz
+Source1455: https://registry.npmjs.org/commander/-/commander-12.0.0.tgz#/commander-12.0.0.tgz
+Source1456: https://registry.npmjs.org/commander/-/commander-2.20.3.tgz#/commander-2.20.3.tgz
+Source1457: https://registry.npmjs.org/commander/-/commander-6.2.1.tgz#/commander-6.2.1.tgz
+Source1458: https://registry.npmjs.org/commander/-/commander-7.2.0.tgz#/commander-7.2.0.tgz
+Source1459: https://registry.npmjs.org/comment-json/-/comment-json-4.2.3.tgz#/comment-json-4.2.3.tgz
+Source1460: https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz#/common-path-prefix-3.0.0.tgz
+Source1461: https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz#/compressible-2.0.18.tgz
+Source1462: https://registry.npmjs.org/compression/-/compression-1.7.4.tgz#/compression-1.7.4.tgz
+Source1463: https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-11.1.0.tgz#/compression-webpack-plugin-11.1.0.tgz
+Source1464: https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#/concat-map-0.0.1.tgz
+Source1465: https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz#/configstore-6.0.0.tgz
+Source1466: https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#/connect-history-api-fallback-2.0.0.tgz
+Source1467: https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz#/content-disposition-0.5.4.tgz
+Source1468: https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz#/content-type-1.0.5.tgz
+Source1469: https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz#/convert-source-map-2.0.0.tgz
+Source1470: https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz#/cookie-0.6.0.tgz
+Source1471: https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz#/cookie-signature-1.0.6.tgz
+Source1472: https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-12.0.2.tgz#/copy-webpack-plugin-12.0.2.tgz
+Source1473: https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.0.tgz#/core-js-compat-3.37.0.tgz
+Source1474: https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.37.0.tgz#/core-js-pure-3.37.0.tgz
+Source1475: https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz#/core-util-is-1.0.3.tgz
+Source1476: https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz#/cosmiconfig-8.3.6.tgz
+Source1477: https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz#/cosmiconfig-9.0.0.tgz
+Source1478: https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz#/create-jest-29.7.0.tgz
+Source1479: https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz#/create-require-1.1.1.tgz
+Source1480: https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz#/cross-spawn-7.0.3.tgz
+Source1481: https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz#/crypto-random-string-4.0.0.tgz
+Source1482: https://registry.npmjs.org/cspell/-/cspell-8.8.0.tgz#/cspell-8.8.0.tgz
+Source1483: https://registry.npmjs.org/cspell-config-lib/-/cspell-config-lib-8.8.0.tgz#/cspell-config-lib-8.8.0.tgz
+Source1484: https://registry.npmjs.org/cspell-dictionary/-/cspell-dictionary-8.8.0.tgz#/cspell-dictionary-8.8.0.tgz
+Source1485: https://registry.npmjs.org/cspell-gitignore/-/cspell-gitignore-8.8.0.tgz#/cspell-gitignore-8.8.0.tgz
+Source1486: https://registry.npmjs.org/cspell-glob/-/cspell-glob-8.8.0.tgz#/cspell-glob-8.8.0.tgz
+Source1487: https://registry.npmjs.org/cspell-grammar/-/cspell-grammar-8.8.0.tgz#/cspell-grammar-8.8.0.tgz
+Source1488: https://registry.npmjs.org/cspell-io/-/cspell-io-8.8.0.tgz#/cspell-io-8.8.0.tgz
+Source1489: https://registry.npmjs.org/cspell-lib/-/cspell-lib-8.8.0.tgz#/cspell-lib-8.8.0.tgz
+Source1490: https://registry.npmjs.org/cspell-trie-lib/-/cspell-trie-lib-8.8.0.tgz#/cspell-trie-lib-8.8.0.tgz
+Source1491: https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz#/css-declaration-sorter-7.2.0.tgz
+Source1492: https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.2.tgz#/css-functions-list-3.2.2.tgz
+Source1493: https://registry.npmjs.org/css-loader/-/css-loader-7.1.1.tgz#/css-loader-7.1.1.tgz
+Source1494: https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-6.0.0.tgz#/css-minimizer-webpack-plugin-6.0.0.tgz
+Source1495: https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz#/css-select-5.1.0.tgz
+Source1496: https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz#/css-tree-2.2.1.tgz
+Source1497: https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz#/css-tree-2.3.1.tgz
+Source1498: https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz#/css-what-6.1.0.tgz
+Source1499: https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz#/css.escape-1.5.1.tgz
+Source1500: https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz#/cssesc-3.0.0.tgz
+Source1501: https://registry.npmjs.org/cssnano/-/cssnano-6.1.2.tgz#/cssnano-6.1.2.tgz
+Source1502: https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.1.2.tgz#/cssnano-preset-default-6.1.2.tgz
+Source1503: https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.2.tgz#/cssnano-utils-4.0.2.tgz
+Source1504: https://registry.npmjs.org/csso/-/csso-5.0.5.tgz#/csso-5.0.5.tgz
+Source1505: https://registry.npmjs.org/cssstyle/-/cssstyle-3.0.0.tgz#/cssstyle-3.0.0.tgz
+Source1506: https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz#/csstype-3.1.3.tgz
+Source1507: https://registry.npmjs.org/data-urls/-/data-urls-4.0.0.tgz#/data-urls-4.0.0.tgz
+Source1508: https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz#/data-view-buffer-1.0.1.tgz
+Source1509: https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz#/data-view-byte-length-1.0.1.tgz
+Source1510: https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz#/data-view-byte-offset-1.0.0.tgz
+Source1511: https://registry.npmjs.org/debug/-/debug-2.6.9.tgz#/debug-2.6.9.tgz
+Source1512: https://registry.npmjs.org/debug/-/debug-3.2.7.tgz#/debug-3.2.7.tgz
+Source1513: https://registry.npmjs.org/debug/-/debug-4.3.4.tgz#/debug-4.3.4.tgz
+Source1514: https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz#/decimal.js-10.4.3.tgz
+Source1515: https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz#/dedent-1.5.3.tgz
+Source1516: https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz#/deep-is-0.1.4.tgz
+Source1517: https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz#/deepmerge-4.3.1.tgz
+Source1518: https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz#/default-browser-5.2.1.tgz
+Source1519: https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz#/default-browser-id-5.0.0.tgz
+Source1520: https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz#/default-gateway-6.0.3.tgz
+Source1521: https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz#/define-data-property-1.1.4.tgz
+Source1522: https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz#/define-lazy-prop-3.0.0.tgz
+Source1523: https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz#/define-properties-1.2.1.tgz
+Source1524: https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz#/delayed-stream-1.0.0.tgz
+Source1525: https://registry.npmjs.org/depd/-/depd-1.1.2.tgz#/depd-1.1.2.tgz
+Source1526: https://registry.npmjs.org/depd/-/depd-2.0.0.tgz#/depd-2.0.0.tgz
+Source1527: https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz#/dequal-2.0.3.tgz
+Source1528: https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz#/destroy-1.2.0.tgz
+Source1529: https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz#/detect-newline-3.1.0.tgz
+Source1530: https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz#/detect-node-2.1.0.tgz
+Source1531: https://registry.npmjs.org/diff/-/diff-4.0.2.tgz#/diff-4.0.2.tgz
+Source1532: https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz#/diff-sequences-29.6.3.tgz
+Source1533: https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz#/dir-glob-3.0.1.tgz
+Source1534: https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz#/dns-packet-5.6.1.tgz
+Source1535: https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz#/doctrine-2.1.0.tgz
+Source1536: https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz#/doctrine-3.0.0.tgz
+Source1537: https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz#/dom-accessibility-api-0.5.16.tgz
+Source1538: https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz#/dom-accessibility-api-0.6.3.tgz
+Source1539: https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz#/dom-serializer-2.0.0.tgz
+Source1540: https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz#/domelementtype-2.3.0.tgz
+Source1541: https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz#/domexception-4.0.0.tgz
+Source1542: https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz#/domhandler-5.0.3.tgz
+Source1543: https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz#/domutils-3.1.0.tgz
+Source1544: https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz#/dot-case-3.0.4.tgz
+Source1545: https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz#/dot-prop-6.0.1.tgz
+Source1546: https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz#/eastasianwidth-0.2.0.tgz
+Source1547: https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz#/ee-first-1.1.1.tgz
+Source1548: https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz#/ejs-3.1.10.tgz
+Source1549: https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.757.tgz#/electron-to-chromium-1.4.757.tgz
+Source1550: https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz#/emittery-0.13.1.tgz
+Source1551: https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz#/emoji-regex-8.0.0.tgz
+Source1552: https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz#/emoji-regex-9.2.2.tgz
+Source1553: https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz#/emojis-list-3.0.0.tgz
+Source1554: https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz#/encodeurl-1.0.2.tgz
+Source1555: https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz#/encoding-0.1.13.tgz
+Source1556: https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz#/enhanced-resolve-5.16.0.tgz
+Source1557: https://registry.npmjs.org/entities/-/entities-4.5.0.tgz#/entities-4.5.0.tgz
+Source1558: https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz#/env-paths-2.2.1.tgz
+Source1559: https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz#/envinfo-7.13.0.tgz
+Source1560: https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz#/error-ex-1.3.2.tgz
+Source1561: https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz#/error-stack-parser-2.1.4.tgz
+Source1562: https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz#/es-abstract-1.23.3.tgz
+Source1563: https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz#/es-define-property-1.0.0.tgz
+Source1564: https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz#/es-errors-1.3.0.tgz
+Source1565: https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz#/es-iterator-helpers-1.0.19.tgz
+Source1566: https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.2.tgz#/es-module-lexer-1.5.2.tgz
+Source1567: https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz#/es-object-atoms-1.0.0.tgz
+Source1568: https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#/es-set-tostringtag-2.0.3.tgz
+Source1569: https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#/es-shim-unscopables-1.0.2.tgz
+Source1570: https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz#/es-to-primitive-1.2.1.tgz
+Source1571: https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz#/escalade-3.1.2.tgz
+Source1572: https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz#/escape-html-1.0.3.tgz
+Source1573: https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#/escape-string-regexp-1.0.5.tgz
+Source1574: https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#/escape-string-regexp-2.0.0.tgz
+Source1575: https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#/escape-string-regexp-4.0.0.tgz
+Source1576: https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz#/eslint-8.57.0.tgz
+Source1577: https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.0.tgz#/eslint-compat-utils-0.5.0.tgz
+Source1578: https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#/eslint-config-prettier-9.1.0.tgz
+Source1579: https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz#/eslint-config-standard-17.1.0.tgz
+Source1580: https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-11.0.0.tgz#/eslint-config-standard-jsx-11.0.0.tgz
+Source1581: https://registry.npmjs.org/eslint-config-standard-react/-/eslint-config-standard-react-13.0.0.tgz#/eslint-config-standard-react-13.0.0.tgz
+Source1582: https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#/eslint-import-resolver-node-0.3.9.tgz
+Source1583: https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz#/eslint-module-utils-2.8.1.tgz
+Source1584: https://registry.npmjs.org/eslint-plugin-agama-i18n/-/eslint-plugin-agama-i18n-0.1.0.tgz#/eslint-plugin-agama-i18n-0.1.0.tgz
+Source1585: https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz#/eslint-plugin-es-3.0.1.tgz
+Source1586: https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.6.0.tgz#/eslint-plugin-es-x-7.6.0.tgz
+Source1587: https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz#/eslint-plugin-flowtype-8.0.3.tgz
+Source1588: https://registry.npmjs.org/eslint-plugin-i18next/-/eslint-plugin-i18next-6.0.3.tgz#/eslint-plugin-i18next-6.0.3.tgz
+Source1589: https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#/eslint-plugin-import-2.29.1.tgz
+Source1590: https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.6.2.tgz#/eslint-plugin-n-16.6.2.tgz
+Source1591: https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz#/eslint-plugin-node-11.1.0.tgz
+Source1592: https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz#/eslint-plugin-promise-6.1.1.tgz
+Source1593: https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.1.tgz#/eslint-plugin-react-7.34.1.tgz
+Source1594: https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz#/eslint-plugin-react-hooks-4.6.2.tgz
+Source1595: https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz#/eslint-scope-5.1.1.tgz
+Source1596: https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz#/eslint-scope-7.2.2.tgz
+Source1597: https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz#/eslint-utils-2.1.0.tgz
+Source1598: https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#/eslint-visitor-keys-1.3.0.tgz
+Source1599: https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#/eslint-visitor-keys-2.1.0.tgz
+Source1600: https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#/eslint-visitor-keys-3.4.3.tgz
+Source1601: https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-4.1.0.tgz#/eslint-webpack-plugin-4.1.0.tgz
+Source1602: https://registry.npmjs.org/espree/-/espree-9.6.1.tgz#/espree-9.6.1.tgz
+Source1603: https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz#/esprima-4.0.1.tgz
+Source1604: https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz#/esquery-1.5.0.tgz
+Source1605: https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz#/esrecurse-4.3.0.tgz
+Source1606: https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz#/estraverse-4.3.0.tgz
+Source1607: https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz#/estraverse-5.3.0.tgz
+Source1608: https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz#/esutils-2.0.3.tgz
+Source1609: https://registry.npmjs.org/etag/-/etag-1.8.1.tgz#/etag-1.8.1.tgz
+Source1610: https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz#/eventemitter3-4.0.7.tgz
+Source1611: https://registry.npmjs.org/events/-/events-3.3.0.tgz#/events-3.3.0.tgz
+Source1612: https://registry.npmjs.org/execa/-/execa-5.1.1.tgz#/execa-5.1.1.tgz
+Source1613: https://registry.npmjs.org/exit/-/exit-0.1.2.tgz#/exit-0.1.2.tgz
+Source1614: https://registry.npmjs.org/expect/-/expect-29.7.0.tgz#/expect-29.7.0.tgz
+Source1615: https://registry.npmjs.org/express/-/express-4.19.2.tgz#/express-4.19.2.tgz
+Source1616: https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#/fast-deep-equal-3.1.3.tgz
+Source1617: https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz#/fast-diff-1.3.0.tgz
+Source1618: https://registry.npmjs.org/fast-equals/-/fast-equals-5.0.1.tgz#/fast-equals-5.0.1.tgz
+Source1619: https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz#/fast-glob-3.3.2.tgz
+Source1620: https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#/fast-json-stable-stringify-2.1.0.tgz
+Source1621: https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#/fast-levenshtein-2.0.6.tgz
+Source1622: https://registry.npmjs.org/fast-sort/-/fast-sort-3.4.0.tgz#/fast-sort-3.4.0.tgz
+Source1623: https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#/fastest-levenshtein-1.0.16.tgz
+Source1624: https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz#/fastq-1.17.1.tgz
+Source1625: https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz#/faye-websocket-0.11.4.tgz
+Source1626: https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz#/fb-watchman-2.0.2.tgz
+Source1627: https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz#/file-entry-cache-6.0.1.tgz
+Source1628: https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz#/file-entry-cache-8.0.0.tgz
+Source1629: https://registry.npmjs.org/file-selector/-/file-selector-0.6.0.tgz#/file-selector-0.6.0.tgz
+Source1630: https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz#/filelist-1.0.4.tgz
+Source1631: https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz#/fill-range-7.0.1.tgz
+Source1632: https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz#/finalhandler-1.2.0.tgz
+Source1633: https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz#/find-cache-dir-4.0.0.tgz
+Source1634: https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz#/find-up-4.1.0.tgz
+Source1635: https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz#/find-up-5.0.0.tgz
+Source1636: https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz#/find-up-6.3.0.tgz
+Source1637: https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.0.tgz#/find-up-simple-1.0.0.tgz
+Source1638: https://registry.npmjs.org/flat/-/flat-5.0.2.tgz#/flat-5.0.2.tgz
+Source1639: https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz#/flat-cache-3.2.0.tgz
+Source1640: https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz#/flat-cache-4.0.1.tgz
+Source1641: https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz#/flatted-3.3.1.tgz
+Source1642: https://registry.npmjs.org/focus-trap/-/focus-trap-7.5.2.tgz#/focus-trap-7.5.2.tgz
+Source1643: https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz#/follow-redirects-1.15.6.tgz
+Source1644: https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz#/for-each-0.3.3.tgz
+Source1645: https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz#/foreground-child-3.1.1.tgz
+Source1646: https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz#/form-data-4.0.0.tgz
+Source1647: https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz#/forwarded-0.2.0.tgz
+Source1648: https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz#/fresh-0.5.2.tgz
+Source1649: https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#/fs.realpath-1.0.0.tgz
+Source1650: https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz#/fsevents-2.3.3.tgz
+Source1651: https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz#/function-bind-1.1.2.tgz
+Source1652: https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz#/function.prototype.name-1.1.6.tgz
+Source1653: https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz#/functions-have-names-1.2.3.tgz
+Source1654: https://registry.npmjs.org/gensequence/-/gensequence-7.0.0.tgz#/gensequence-7.0.0.tgz
+Source1655: https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz#/gensync-1.0.0-beta.2.tgz
+Source1656: https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz#/get-caller-file-2.0.5.tgz
+Source1657: https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz#/get-intrinsic-1.2.4.tgz
+Source1658: https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz#/get-package-type-0.1.0.tgz
+Source1659: https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz#/get-stdin-9.0.0.tgz
+Source1660: https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz#/get-stream-6.0.1.tgz
+Source1661: https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz#/get-symbol-description-1.0.2.tgz
+Source1662: https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.4.tgz#/get-tsconfig-4.7.4.tgz
+Source1663: https://registry.npmjs.org/gettext-parser/-/gettext-parser-1.4.0.tgz#/gettext-parser-1.4.0.tgz
+Source1664: https://registry.npmjs.org/gettext-parser/-/gettext-parser-2.0.0.tgz#/gettext-parser-2.0.0.tgz
+Source1665: https://registry.npmjs.org/gettext-to-messageformat/-/gettext-to-messageformat-0.3.1.tgz#/gettext-to-messageformat-0.3.1.tgz
+Source1666: https://registry.npmjs.org/glob/-/glob-10.3.12.tgz#/glob-10.3.12.tgz
+Source1667: https://registry.npmjs.org/glob/-/glob-7.2.3.tgz#/glob-7.2.3.tgz
+Source1668: https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz#/glob-parent-5.1.2.tgz
+Source1669: https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz#/glob-parent-6.0.2.tgz
+Source1670: https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#/glob-to-regexp-0.4.1.tgz
+Source1671: https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz#/global-directory-4.0.1.tgz
+Source1672: https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz#/global-modules-2.0.0.tgz
+Source1673: https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz#/global-prefix-3.0.0.tgz
+Source1674: https://registry.npmjs.org/globals/-/globals-11.12.0.tgz#/globals-11.12.0.tgz
+Source1675: https://registry.npmjs.org/globals/-/globals-13.24.0.tgz#/globals-13.24.0.tgz
+Source1676: https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz#/globalthis-1.0.4.tgz
+Source1677: https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz#/globalyzer-0.1.0.tgz
+Source1678: https://registry.npmjs.org/globby/-/globby-11.1.0.tgz#/globby-11.1.0.tgz
+Source1679: https://registry.npmjs.org/globby/-/globby-14.0.1.tgz#/globby-14.0.1.tgz
+Source1680: https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz#/globjoin-0.1.4.tgz
+Source1681: https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz#/globrex-0.1.2.tgz
+Source1682: https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz#/gopd-1.0.1.tgz
+Source1683: https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz#/graceful-fs-4.2.11.tgz
+Source1684: https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz#/graphemer-1.4.0.tgz
+Source1685: https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz#/handle-thing-2.0.1.tgz
+Source1686: https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz#/harmony-reflect-1.6.2.tgz
+Source1687: https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz#/has-bigints-1.0.2.tgz
+Source1688: https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz#/has-flag-3.0.0.tgz
+Source1689: https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz#/has-flag-4.0.0.tgz
+Source1690: https://registry.npmjs.org/has-own-prop/-/has-own-prop-2.0.0.tgz#/has-own-prop-2.0.0.tgz
+Source1691: https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#/has-property-descriptors-1.0.2.tgz
+Source1692: https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz#/has-proto-1.0.3.tgz
+Source1693: https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz#/has-symbols-1.0.3.tgz
+Source1694: https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz#/has-tostringtag-1.0.2.tgz
+Source1695: https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz#/hasown-2.0.2.tgz
+Source1696: https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz#/hpack.js-2.1.6.tgz
+Source1697: https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#/html-encoding-sniffer-3.0.0.tgz
+Source1698: https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz#/html-entities-2.5.2.tgz
+Source1699: https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz#/html-escaper-2.0.2.tgz
+Source1700: https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-7.2.0.tgz#/html-minifier-terser-7.2.0.tgz
+Source1701: https://registry.npmjs.org/html-minimizer-webpack-plugin/-/html-minimizer-webpack-plugin-5.0.0.tgz#/html-minimizer-webpack-plugin-5.0.0.tgz
+Source1702: https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz#/html-tags-3.3.1.tgz
+Source1703: https://registry.npmjs.org/htmlparser/-/htmlparser-1.7.7.tgz#/htmlparser-1.7.7.tgz
+Source1704: https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz#/http-deceiver-1.2.7.tgz
+Source1705: https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz#/http-errors-1.6.3.tgz
+Source1706: https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz#/http-errors-2.0.0.tgz
+Source1707: https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz#/http-parser-js-0.5.8.tgz
+Source1708: https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz#/http-proxy-1.18.1.tgz
+Source1709: https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#/http-proxy-agent-5.0.0.tgz
+Source1710: https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#/http-proxy-middleware-2.0.6.tgz
+Source1711: https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#/https-proxy-agent-5.0.1.tgz
+Source1712: https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz#/human-signals-2.1.0.tgz
+Source1713: https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz#/hyperdyperid-1.2.0.tgz
+Source1714: https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz#/iconv-lite-0.4.24.tgz
+Source1715: https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz#/iconv-lite-0.6.3.tgz
+Source1716: https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz#/icss-utils-5.1.0.tgz
+Source1717: https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#/identity-obj-proxy-3.0.0.tgz
+Source1718: https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz#/ignore-5.3.1.tgz
+Source1719: https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz#/immutable-4.3.5.tgz
+Source1720: https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz#/import-fresh-3.3.0.tgz
+Source1721: https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz#/import-local-3.1.0.tgz
+Source1722: https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz#/import-meta-resolve-4.1.0.tgz
+Source1723: https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz#/imurmurhash-0.1.4.tgz
+Source1724: https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz#/indent-string-4.0.0.tgz
+Source1725: https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz#/inflight-1.0.6.tgz
+Source1726: https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz#/inherits-2.0.3.tgz
+Source1727: https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz#/inherits-2.0.4.tgz
+Source1728: https://registry.npmjs.org/ini/-/ini-1.3.8.tgz#/ini-1.3.8.tgz
+Source1729: https://registry.npmjs.org/ini/-/ini-4.1.1.tgz#/ini-4.1.1.tgz
+Source1730: https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz#/internal-slot-1.0.7.tgz
+Source1731: https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz#/interpret-3.1.1.tgz
+Source1732: https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz#/ipaddr.js-1.9.1.tgz
+Source1733: https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz#/ipaddr.js-2.2.0.tgz
+Source1734: https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz#/is-array-buffer-3.0.4.tgz
+Source1735: https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz#/is-arrayish-0.2.1.tgz
+Source1736: https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz#/is-async-function-2.0.0.tgz
+Source1737: https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz#/is-bigint-1.0.4.tgz
+Source1738: https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz#/is-binary-path-2.1.0.tgz
+Source1739: https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz#/is-boolean-object-1.1.2.tgz
+Source1740: https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz#/is-builtin-module-3.2.1.tgz
+Source1741: https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz#/is-callable-1.2.7.tgz
+Source1742: https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz#/is-core-module-2.13.1.tgz
+Source1743: https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz#/is-data-view-1.0.1.tgz
+Source1744: https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz#/is-date-object-1.0.5.tgz
+Source1745: https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz#/is-docker-3.0.0.tgz
+Source1746: https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz#/is-extglob-2.1.1.tgz
+Source1747: https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz#/is-finalizationregistry-1.0.2.tgz
+Source1748: https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#/is-fullwidth-code-point-3.0.0.tgz
+Source1749: https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz#/is-generator-fn-2.1.0.tgz
+Source1750: https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz#/is-generator-function-1.0.10.tgz
+Source1751: https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz#/is-glob-4.0.3.tgz
+Source1752: https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz#/is-inside-container-1.0.0.tgz
+Source1753: https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz#/is-map-2.0.3.tgz
+Source1754: https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz#/is-negative-zero-2.0.3.tgz
+Source1755: https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz#/is-network-error-1.1.0.tgz
+Source1756: https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz#/is-number-7.0.0.tgz
+Source1757: https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz#/is-number-object-1.0.7.tgz
+Source1758: https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz#/is-obj-2.0.0.tgz
+Source1759: https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz#/is-path-inside-3.0.3.tgz
+Source1760: https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz#/is-plain-obj-3.0.0.tgz
+Source1761: https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz#/is-plain-object-2.0.4.tgz
+Source1762: https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz#/is-plain-object-5.0.0.tgz
+Source1763: https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#/is-potential-custom-element-name-1.0.1.tgz
+Source1764: https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz#/is-regex-1.1.4.tgz
+Source1765: https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz#/is-set-2.0.3.tgz
+Source1766: https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#/is-shared-array-buffer-1.0.3.tgz
+Source1767: https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz#/is-stream-2.0.1.tgz
+Source1768: https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz#/is-string-1.0.7.tgz
+Source1769: https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz#/is-symbol-1.0.4.tgz
+Source1770: https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz#/is-typed-array-1.1.13.tgz
+Source1771: https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz#/is-typedarray-1.0.0.tgz
+Source1772: https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz#/is-weakmap-2.0.2.tgz
+Source1773: https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz#/is-weakref-1.0.2.tgz
+Source1774: https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz#/is-weakset-2.0.3.tgz
+Source1775: https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz#/is-wsl-3.1.0.tgz
+Source1776: https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz#/isarray-1.0.0.tgz
+Source1777: https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz#/isarray-2.0.5.tgz
+Source1778: https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz#/isexe-2.0.0.tgz
+Source1779: https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz#/isobject-3.0.1.tgz
+Source1780: https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#/istanbul-lib-coverage-3.2.2.tgz
+Source1781: https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#/istanbul-lib-instrument-5.2.1.tgz
+Source1782: https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz#/istanbul-lib-instrument-6.0.2.tgz
+Source1783: https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#/istanbul-lib-report-3.0.1.tgz
+Source1784: https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#/istanbul-lib-source-maps-4.0.1.tgz
+Source1785: https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz#/istanbul-reports-3.1.7.tgz
+Source1786: https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz#/iterator.prototype-1.1.2.tgz
+Source1787: https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz#/jackspeak-2.3.6.tgz
+Source1788: https://registry.npmjs.org/jake/-/jake-10.9.1.tgz#/jake-10.9.1.tgz
+Source1789: https://registry.npmjs.org/jed/-/jed-1.1.1.tgz#/jed-1.1.1.tgz
+Source1790: https://registry.npmjs.org/jest/-/jest-29.7.0.tgz#/jest-29.7.0.tgz
+Source1791: https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz#/jest-changed-files-29.7.0.tgz
+Source1792: https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz#/jest-circus-29.7.0.tgz
+Source1793: https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz#/jest-cli-29.7.0.tgz
+Source1794: https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz#/jest-config-29.7.0.tgz
+Source1795: https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz#/jest-diff-29.7.0.tgz
+Source1796: https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz#/jest-docblock-29.7.0.tgz
+Source1797: https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz#/jest-each-29.7.0.tgz
+Source1798: https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz#/jest-environment-jsdom-29.7.0.tgz
+Source1799: https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz#/jest-environment-node-29.7.0.tgz
+Source1800: https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz#/jest-get-type-29.6.3.tgz
+Source1801: https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz#/jest-haste-map-29.7.0.tgz
+Source1802: https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#/jest-leak-detector-29.7.0.tgz
+Source1803: https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#/jest-matcher-utils-29.7.0.tgz
+Source1804: https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz#/jest-message-util-29.7.0.tgz
+Source1805: https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz#/jest-mock-29.7.0.tgz
+Source1806: https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#/jest-pnp-resolver-1.2.3.tgz
+Source1807: https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz#/jest-regex-util-29.6.3.tgz
+Source1808: https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz#/jest-resolve-29.7.0.tgz
+Source1809: https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#/jest-resolve-dependencies-29.7.0.tgz
+Source1810: https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz#/jest-runner-29.7.0.tgz
+Source1811: https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz#/jest-runtime-29.7.0.tgz
+Source1812: https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz#/jest-snapshot-29.7.0.tgz
+Source1813: https://registry.npmjs.org/jest-transform-stub/-/jest-transform-stub-2.0.0.tgz#/jest-transform-stub-2.0.0.tgz
+Source1814: https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz#/jest-util-29.7.0.tgz
+Source1815: https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz#/jest-validate-29.7.0.tgz
+Source1816: https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz#/jest-watcher-29.7.0.tgz
+Source1817: https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz#/jest-worker-27.5.1.tgz
+Source1818: https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz#/jest-worker-29.7.0.tgz
+Source1819: https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz#/js-tokens-4.0.0.tgz
+Source1820: https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz#/js-yaml-3.14.1.tgz
+Source1821: https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz#/js-yaml-4.1.0.tgz
+Source1822: https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz#/js2xmlparser-4.0.2.tgz
+Source1823: https://registry.npmjs.org/jsdoc/-/jsdoc-4.0.3.tgz#/jsdoc-4.0.3.tgz
+Source1824: https://registry.npmjs.org/jsdom/-/jsdom-22.1.0.tgz#/jsdom-22.1.0.tgz
+Source1825: https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz#/jsesc-0.5.0.tgz
+Source1826: https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz#/jsesc-2.5.2.tgz
+Source1827: https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz#/json-buffer-3.0.1.tgz
+Source1828: https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#/json-parse-even-better-errors-2.3.1.tgz
+Source1829: https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#/json-schema-traverse-0.4.1.tgz
+Source1830: https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#/json-schema-traverse-1.0.0.tgz
+Source1831: https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#/json-stable-stringify-without-jsonify-1.0.1.tgz
+Source1832: https://registry.npmjs.org/json5/-/json5-1.0.2.tgz#/json5-1.0.2.tgz
+Source1833: https://registry.npmjs.org/json5/-/json5-2.2.3.tgz#/json5-2.2.3.tgz
+Source1834: https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz#/jsonc-parser-3.2.1.tgz
+Source1835: https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#/jsx-ast-utils-3.3.5.tgz
+Source1836: https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz#/keyv-4.5.4.tgz
+Source1837: https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz#/kind-of-6.0.3.tgz
+Source1838: https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz#/klaw-3.0.0.tgz
+Source1839: https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz#/kleur-3.0.3.tgz
+Source1840: https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.30.0.tgz#/known-css-properties-0.30.0.tgz
+Source1841: https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz#/launch-editor-2.6.1.tgz
+Source1842: https://registry.npmjs.org/leven/-/leven-3.1.0.tgz#/leven-3.1.0.tgz
+Source1843: https://registry.npmjs.org/levn/-/levn-0.4.1.tgz#/levn-0.4.1.tgz
+Source1844: https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.1.tgz#/lilconfig-3.1.1.tgz
+Source1845: https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz#/lines-and-columns-1.2.4.tgz
+Source1846: https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz#/linkify-it-5.0.0.tgz
+Source1847: https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz#/loader-runner-4.3.0.tgz
+Source1848: https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz#/loader-utils-2.0.4.tgz
+Source1849: https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz#/locate-path-5.0.0.tgz
+Source1850: https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz#/locate-path-6.0.0.tgz
+Source1851: https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz#/locate-path-7.2.0.tgz
+Source1852: https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz#/lodash-4.17.21.tgz
+Source1853: https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz#/lodash.debounce-4.0.8.tgz
+Source1854: https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz#/lodash.memoize-4.1.2.tgz
+Source1855: https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz#/lodash.merge-4.6.2.tgz
+Source1856: https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz#/lodash.truncate-4.4.2.tgz
+Source1857: https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz#/lodash.uniq-4.5.0.tgz
+Source1858: https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz#/loose-envify-1.4.0.tgz
+Source1859: https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz#/lower-case-2.0.2.tgz
+Source1860: https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz#/lru-cache-10.2.2.tgz
+Source1861: https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz#/lru-cache-5.1.1.tgz
+Source1862: https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz#/lru-cache-6.0.0.tgz
+Source1863: https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz#/lunr-2.3.9.tgz
+Source1864: https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz#/lz-string-1.5.0.tgz
+Source1865: https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz#/make-dir-4.0.0.tgz
+Source1866: https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz#/make-error-1.3.6.tgz
+Source1867: https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz#/makeerror-1.0.12.tgz
+Source1868: https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz#/markdown-it-14.1.0.tgz
+Source1869: https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.7.tgz#/markdown-it-anchor-8.6.7.tgz
+Source1870: https://registry.npmjs.org/marked/-/marked-4.3.0.tgz#/marked-4.3.0.tgz
+Source1871: https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#/mathml-tag-names-2.1.3.tgz
+Source1872: https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz#/mdn-data-2.0.28.tgz
+Source1873: https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz#/mdn-data-2.0.30.tgz
+Source1874: https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz#/mdurl-2.0.0.tgz
+Source1875: https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz#/media-typer-0.3.0.tgz
+Source1876: https://registry.npmjs.org/memfs/-/memfs-4.9.2.tgz#/memfs-4.9.2.tgz
+Source1877: https://registry.npmjs.org/meow/-/meow-13.2.0.tgz#/meow-13.2.0.tgz
+Source1878: https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz#/merge-descriptors-1.0.1.tgz
+Source1879: https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz#/merge-stream-2.0.0.tgz
+Source1880: https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz#/merge2-1.4.1.tgz
+Source1881: https://registry.npmjs.org/methods/-/methods-1.1.2.tgz#/methods-1.1.2.tgz
+Source1882: https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz#/micromatch-4.0.5.tgz
+Source1883: https://registry.npmjs.org/mime/-/mime-1.6.0.tgz#/mime-1.6.0.tgz
+Source1884: https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz#/mime-db-1.52.0.tgz
+Source1885: https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz#/mime-types-2.1.35.tgz
+Source1886: https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz#/mimic-fn-2.1.0.tgz
+Source1887: https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz#/min-indent-1.0.1.tgz
+Source1888: https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.0.tgz#/mini-css-extract-plugin-2.9.0.tgz
+Source1889: https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#/minimalistic-assert-1.0.1.tgz
+Source1890: https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz#/minimatch-3.1.2.tgz
+Source1891: https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz#/minimatch-5.1.6.tgz
+Source1892: https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz#/minimatch-9.0.4.tgz
+Source1893: https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz#/minimist-1.2.8.tgz
+Source1894: https://registry.npmjs.org/minipass/-/minipass-7.1.0.tgz#/minipass-7.1.0.tgz
+Source1895: https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz#/mkdirp-1.0.4.tgz
+Source1896: https://registry.npmjs.org/ms/-/ms-2.0.0.tgz#/ms-2.0.0.tgz
+Source1897: https://registry.npmjs.org/ms/-/ms-2.1.2.tgz#/ms-2.1.2.tgz
+Source1898: https://registry.npmjs.org/ms/-/ms-2.1.3.tgz#/ms-2.1.3.tgz
+Source1899: https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz#/multicast-dns-7.2.5.tgz
+Source1900: https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz#/nanoid-3.3.7.tgz
+Source1901: https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz#/natural-compare-1.4.0.tgz
+Source1902: https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz#/negotiator-0.6.3.tgz
+Source1903: https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz#/neo-async-2.6.2.tgz
+Source1904: https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz#/no-case-3.0.4.tgz
+Source1905: https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz#/node-forge-1.3.1.tgz
+Source1906: https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz#/node-int64-0.4.0.tgz
+Source1907: https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz#/node-releases-2.0.14.tgz
+Source1908: https://registry.npmjs.org/node-watch/-/node-watch-0.7.3.tgz#/node-watch-0.7.3.tgz
+Source1909: https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz#/normalize-path-3.0.0.tgz
+Source1910: https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz#/npm-run-path-4.0.1.tgz
+Source1911: https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz#/nth-check-2.1.1.tgz
+Source1912: https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.9.tgz#/nwsapi-2.2.9.tgz
+Source1913: https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz#/object-assign-4.1.1.tgz
+Source1914: https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz#/object-inspect-1.13.1.tgz
+Source1915: https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz#/object-keys-1.1.1.tgz
+Source1916: https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz#/object.assign-4.1.5.tgz
+Source1917: https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz#/object.entries-1.1.8.tgz
+Source1918: https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz#/object.fromentries-2.0.8.tgz
+Source1919: https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz#/object.groupby-1.0.3.tgz
+Source1920: https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz#/object.hasown-1.1.4.tgz
+Source1921: https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz#/object.values-1.2.0.tgz
+Source1922: https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz#/obuf-1.1.2.tgz
+Source1923: https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz#/on-finished-2.4.1.tgz
+Source1924: https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz#/on-headers-1.0.2.tgz
+Source1925: https://registry.npmjs.org/once/-/once-1.4.0.tgz#/once-1.4.0.tgz
+Source1926: https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz#/onetime-5.1.2.tgz
+Source1927: https://registry.npmjs.org/open/-/open-10.1.0.tgz#/open-10.1.0.tgz
+Source1928: https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz#/optionator-0.9.4.tgz
+Source1929: https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz#/p-limit-2.3.0.tgz
+Source1930: https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz#/p-limit-3.1.0.tgz
+Source1931: https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz#/p-limit-4.0.0.tgz
+Source1932: https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz#/p-locate-4.1.0.tgz
+Source1933: https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz#/p-locate-5.0.0.tgz
+Source1934: https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz#/p-locate-6.0.0.tgz
+Source1935: https://registry.npmjs.org/p-retry/-/p-retry-6.2.0.tgz#/p-retry-6.2.0.tgz
+Source1936: https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz#/p-try-2.2.0.tgz
+Source1937: https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz#/param-case-3.0.4.tgz
+Source1938: https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz#/parent-module-1.0.1.tgz
+Source1939: https://registry.npmjs.org/parent-module/-/parent-module-2.0.0.tgz#/parent-module-2.0.0.tgz
+Source1940: https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz#/parse-json-5.2.0.tgz
+Source1941: https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz#/parse5-7.1.2.tgz
+Source1942: https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz#/parseurl-1.3.3.tgz
+Source1943: https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz#/pascal-case-3.1.2.tgz
+Source1944: https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz#/path-exists-4.0.0.tgz
+Source1945: https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz#/path-exists-5.0.0.tgz
+Source1946: https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#/path-is-absolute-1.0.1.tgz
+Source1947: https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz#/path-key-3.1.1.tgz
+Source1948: https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz#/path-parse-1.0.7.tgz
+Source1949: https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz#/path-scurry-1.10.2.tgz
+Source1950: https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz#/path-to-regexp-0.1.7.tgz
+Source1951: https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz#/path-type-4.0.0.tgz
+Source1952: https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz#/path-type-5.0.0.tgz
+Source1953: https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz#/picocolors-1.0.0.tgz
+Source1954: https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz#/picomatch-2.3.1.tgz
+Source1955: https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz#/pirates-4.0.6.tgz
+Source1956: https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz#/pkg-dir-4.2.0.tgz
+Source1957: https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz#/pkg-dir-7.0.0.tgz
+Source1958: https://registry.npmjs.org/po2json/-/po2json-1.0.0-beta-3.tgz#/po2json-1.0.0-beta-3.tgz
+Source1959: https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#/possible-typed-array-names-1.0.0.tgz
+Source1960: https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz#/postcss-8.4.38.tgz
+Source1961: https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz#/postcss-calc-9.0.1.tgz
+Source1962: https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.1.0.tgz#/postcss-colormin-6.1.0.tgz
+Source1963: https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz#/postcss-convert-values-6.1.0.tgz
+Source1964: https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.2.tgz#/postcss-discard-comments-6.0.2.tgz
+Source1965: https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.3.tgz#/postcss-discard-duplicates-6.0.3.tgz
+Source1966: https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.3.tgz#/postcss-discard-empty-6.0.3.tgz
+Source1967: https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.2.tgz#/postcss-discard-overridden-6.0.2.tgz
+Source1968: https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz#/postcss-media-query-parser-0.2.3.tgz
+Source1969: https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.5.tgz#/postcss-merge-longhand-6.0.5.tgz
+Source1970: https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.1.1.tgz#/postcss-merge-rules-6.1.1.tgz
+Source1971: https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.1.0.tgz#/postcss-minify-font-values-6.1.0.tgz
+Source1972: https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.3.tgz#/postcss-minify-gradients-6.0.3.tgz
+Source1973: https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.1.0.tgz#/postcss-minify-params-6.1.0.tgz
+Source1974: https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.4.tgz#/postcss-minify-selectors-6.0.4.tgz
+Source1975: https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz#/postcss-modules-extract-imports-3.1.0.tgz
+Source1976: https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz#/postcss-modules-local-by-default-4.0.5.tgz
+Source1977: https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz#/postcss-modules-scope-3.2.0.tgz
+Source1978: https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#/postcss-modules-values-4.0.0.tgz
+Source1979: https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.2.tgz#/postcss-normalize-charset-6.0.2.tgz
+Source1980: https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.2.tgz#/postcss-normalize-display-values-6.0.2.tgz
+Source1981: https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.2.tgz#/postcss-normalize-positions-6.0.2.tgz
+Source1982: https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.2.tgz#/postcss-normalize-repeat-style-6.0.2.tgz
+Source1983: https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.2.tgz#/postcss-normalize-string-6.0.2.tgz
+Source1984: https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.2.tgz#/postcss-normalize-timing-functions-6.0.2.tgz
+Source1985: https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.1.0.tgz#/postcss-normalize-unicode-6.1.0.tgz
+Source1986: https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.2.tgz#/postcss-normalize-url-6.0.2.tgz
+Source1987: https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.2.tgz#/postcss-normalize-whitespace-6.0.2.tgz
+Source1988: https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.2.tgz#/postcss-ordered-values-6.0.2.tgz
+Source1989: https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.1.0.tgz#/postcss-reduce-initial-6.1.0.tgz
+Source1990: https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.2.tgz#/postcss-reduce-transforms-6.0.2.tgz
+Source1991: https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz#/postcss-resolve-nested-selector-0.1.1.tgz
+Source1992: https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.0.tgz#/postcss-safe-parser-7.0.0.tgz
+Source1993: https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz#/postcss-scss-4.0.9.tgz
+Source1994: https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz#/postcss-selector-parser-6.0.16.tgz
+Source1995: https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.3.tgz#/postcss-svgo-6.0.3.tgz
+Source1996: https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.4.tgz#/postcss-unique-selectors-6.0.4.tgz
+Source1997: https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#/postcss-value-parser-4.2.0.tgz
+Source1998: https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz#/prelude-ls-1.2.1.tgz
+Source1999: https://registry.npmjs.org/prettier/-/prettier-3.3.2.tgz#/prettier-3.3.2.tgz
+Source2000: https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#/prettier-linter-helpers-1.0.0.tgz
+Source2001: https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz#/pretty-format-27.5.1.tgz
+Source2002: https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz#/pretty-format-29.7.0.tgz
+Source2003: https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz#/process-nextick-args-2.0.1.tgz
+Source2004: https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz#/prompts-2.4.2.tgz
+Source2005: https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz#/prop-types-15.8.1.tgz
+Source2006: https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz#/proxy-addr-2.0.7.tgz
+Source2007: https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz#/proxy-from-env-1.1.0.tgz
+Source2008: https://registry.npmjs.org/psl/-/psl-1.9.0.tgz#/psl-1.9.0.tgz
+Source2009: https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz#/punycode-2.3.1.tgz
+Source2010: https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz#/punycode.js-2.3.1.tgz
+Source2011: https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz#/pure-rand-6.1.0.tgz
+Source2012: https://registry.npmjs.org/qs/-/qs-6.11.0.tgz#/qs-6.11.0.tgz
+Source2013: https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz#/querystringify-2.2.0.tgz
+Source2014: https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz#/queue-microtask-1.2.3.tgz
+Source2015: https://registry.npmjs.org/qunit/-/qunit-2.20.1.tgz#/qunit-2.20.1.tgz
+Source2016: https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz#/randombytes-2.1.0.tgz
+Source2017: https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz#/range-parser-1.2.1.tgz
+Source2018: https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz#/raw-body-2.5.2.tgz
+Source2019: https://registry.npmjs.org/react/-/react-18.3.1.tgz#/react-18.3.1.tgz
+Source2020: https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz#/react-dom-18.3.1.tgz
+Source2021: https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.2.3.tgz#/react-dropzone-14.2.3.tgz
+Source2022: https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz#/react-is-16.13.1.tgz
+Source2023: https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz#/react-is-17.0.2.tgz
+Source2024: https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz#/react-is-18.3.1.tgz
+Source2025: https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz#/react-refresh-0.14.2.tgz
+Source2026: https://registry.npmjs.org/react-refresh-typescript/-/react-refresh-typescript-2.0.9.tgz#/react-refresh-typescript-2.0.9.tgz
+Source2027: https://registry.npmjs.org/react-router/-/react-router-6.23.0.tgz#/react-router-6.23.0.tgz
+Source2028: https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.23.0.tgz#/react-router-dom-6.23.0.tgz
+Source2029: https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz#/readable-stream-2.3.8.tgz
+Source2030: https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz#/readable-stream-3.6.2.tgz
+Source2031: https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz#/readdirp-3.6.0.tgz
+Source2032: https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz#/rechoir-0.8.0.tgz
+Source2033: https://registry.npmjs.org/redent/-/redent-3.0.0.tgz#/redent-3.0.0.tgz
+Source2034: https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz#/reflect.getprototypeof-1.0.6.tgz
+Source2035: https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz#/regenerate-1.4.2.tgz
+Source2036: https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#/regenerate-unicode-properties-10.1.1.tgz
+Source2037: https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#/regenerator-runtime-0.14.1.tgz
+Source2038: https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz#/regenerator-transform-0.15.2.tgz
+Source2039: https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#/regexp.prototype.flags-1.5.2.tgz
+Source2040: https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz#/regexpp-3.2.0.tgz
+Source2041: https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz#/regexpu-core-5.3.2.tgz
+Source2042: https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz#/regjsparser-0.9.1.tgz
+Source2043: https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz#/relateurl-0.2.7.tgz
+Source2044: https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz#/repeat-string-1.6.1.tgz
+Source2045: https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz#/require-directory-2.1.1.tgz
+Source2046: https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz#/require-from-string-2.0.2.tgz
+Source2047: https://registry.npmjs.org/requireindex/-/requireindex-1.1.0.tgz#/requireindex-1.1.0.tgz
+Source2048: https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz#/requires-port-1.0.0.tgz
+Source2049: https://registry.npmjs.org/requizzle/-/requizzle-0.2.4.tgz#/requizzle-0.2.4.tgz
+Source2050: https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz#/resolve-1.22.8.tgz
+Source2051: https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz#/resolve-2.0.0-next.5.tgz
+Source2052: https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz#/resolve-cwd-3.0.0.tgz
+Source2053: https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz#/resolve-from-4.0.0.tgz
+Source2054: https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz#/resolve-from-5.0.0.tgz
+Source2055: https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#/resolve-pkg-maps-1.0.0.tgz
+Source2056: https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz#/resolve.exports-2.0.2.tgz
+Source2057: https://registry.npmjs.org/retry/-/retry-0.13.1.tgz#/retry-0.13.1.tgz
+Source2058: https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz#/reusify-1.0.4.tgz
+Source2059: https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz#/rimraf-3.0.2.tgz
+Source2060: https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz#/rimraf-5.0.5.tgz
+Source2061: https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz#/rrweb-cssom-0.6.0.tgz
+Source2062: https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz#/run-applescript-7.0.0.tgz
+Source2063: https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz#/run-parallel-1.2.0.tgz
+Source2064: https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz#/safe-array-concat-1.1.2.tgz
+Source2065: https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz#/safe-buffer-5.1.2.tgz
+Source2066: https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz#/safe-buffer-5.2.1.tgz
+Source2067: https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz#/safe-regex-test-1.0.3.tgz
+Source2068: https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz#/safer-buffer-2.1.2.tgz
+Source2069: https://registry.npmjs.org/sass/-/sass-1.77.0.tgz#/sass-1.77.0.tgz
+Source2070: https://registry.npmjs.org/sass-loader/-/sass-loader-14.2.1.tgz#/sass-loader-14.2.1.tgz
+Source2071: https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz#/saxes-6.0.0.tgz
+Source2072: https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz#/scheduler-0.23.2.tgz
+Source2073: https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz#/schema-utils-3.3.0.tgz
+Source2074: https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz#/schema-utils-4.2.0.tgz
+Source2075: https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz#/select-hose-2.0.0.tgz
+Source2076: https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz#/selfsigned-2.4.1.tgz
+Source2077: https://registry.npmjs.org/semver/-/semver-6.3.1.tgz#/semver-6.3.1.tgz
+Source2078: https://registry.npmjs.org/semver/-/semver-7.6.0.tgz#/semver-7.6.0.tgz
+Source2079: https://registry.npmjs.org/semver/-/semver-7.6.2.tgz#/semver-7.6.2.tgz
+Source2080: https://registry.npmjs.org/send/-/send-0.18.0.tgz#/send-0.18.0.tgz
+Source2081: https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz#/serialize-javascript-6.0.2.tgz
+Source2082: https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz#/serve-index-1.9.1.tgz
+Source2083: https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz#/serve-static-1.15.0.tgz
+Source2084: https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz#/set-function-length-1.2.2.tgz
+Source2085: https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz#/set-function-name-2.0.2.tgz
+Source2086: https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz#/setprototypeof-1.1.0.tgz
+Source2087: https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz#/setprototypeof-1.2.0.tgz
+Source2088: https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz#/shallow-clone-3.0.1.tgz
+Source2089: https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz#/shebang-command-2.0.0.tgz
+Source2090: https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz#/shebang-regex-3.0.0.tgz
+Source2091: https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz#/shell-quote-1.8.1.tgz
+Source2092: https://registry.npmjs.org/shiki/-/shiki-0.14.7.tgz#/shiki-0.14.7.tgz
+Source2093: https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz#/side-channel-1.0.6.tgz
+Source2094: https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz#/signal-exit-3.0.7.tgz
+Source2095: https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz#/signal-exit-4.1.0.tgz
+Source2096: https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz#/sisteransi-1.0.5.tgz
+Source2097: https://registry.npmjs.org/slash/-/slash-3.0.0.tgz#/slash-3.0.0.tgz
+Source2098: https://registry.npmjs.org/slash/-/slash-5.1.0.tgz#/slash-5.1.0.tgz
+Source2099: https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz#/slice-ansi-4.0.0.tgz
+Source2100: https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz#/snake-case-3.0.4.tgz
+Source2101: https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz#/sockjs-0.3.24.tgz
+Source2102: https://registry.npmjs.org/sonic-forest/-/sonic-forest-1.0.2.tgz#/sonic-forest-1.0.2.tgz
+Source2103: https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz#/source-map-0.6.1.tgz
+Source2104: https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz#/source-map-0.7.4.tgz
+Source2105: https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz#/source-map-js-1.2.0.tgz
+Source2106: https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz#/source-map-support-0.5.13.tgz
+Source2107: https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz#/source-map-support-0.5.21.tgz
+Source2108: https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz#/spdy-4.0.2.tgz
+Source2109: https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz#/spdy-transport-3.0.0.tgz
+Source2110: https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz#/sprintf-js-1.0.3.tgz
+Source2111: https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz#/sprintf-js-1.1.3.tgz
+Source2112: https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz#/stack-utils-2.0.6.tgz
+Source2113: https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz#/stackframe-1.3.4.tgz
+Source2114: https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz#/statuses-1.5.0.tgz
+Source2115: https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz#/statuses-2.0.1.tgz
+Source2116: https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz#/string-length-4.0.2.tgz
+Source2117: https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz#/string-natural-compare-3.0.1.tgz
+Source2118: https://registry.npmjs.org/string-replace-loader/-/string-replace-loader-3.1.0.tgz#/string-replace-loader-3.1.0.tgz
+Source2119: https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#/string-width-4.2.3.tgz
+Source2120: https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz#/string-width-5.1.2.tgz
+Source2121: https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz#/string.prototype.matchall-4.0.11.tgz
+Source2122: https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz#/string.prototype.trim-1.2.9.tgz
+Source2123: https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz#/string.prototype.trimend-1.0.8.tgz
+Source2124: https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#/string.prototype.trimstart-1.0.8.tgz
+Source2125: https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz#/string_decoder-1.1.1.tgz
+Source2126: https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz#/string_decoder-1.3.0.tgz
+Source2127: https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#/strip-ansi-6.0.1.tgz
+Source2128: https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz#/strip-ansi-7.1.0.tgz
+Source2129: https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz#/strip-bom-3.0.0.tgz
+Source2130: https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz#/strip-bom-4.0.0.tgz
+Source2131: https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz#/strip-final-newline-2.0.0.tgz
+Source2132: https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz#/strip-indent-3.0.0.tgz
+Source2133: https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz#/strip-json-comments-3.1.1.tgz
+Source2134: https://registry.npmjs.org/stylehacks/-/stylehacks-6.1.1.tgz#/stylehacks-6.1.1.tgz
+Source2135: https://registry.npmjs.org/stylelint/-/stylelint-16.5.0.tgz#/stylelint-16.5.0.tgz
+Source2136: https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-14.0.0.tgz#/stylelint-config-recommended-14.0.0.tgz
+Source2137: https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-14.0.0.tgz#/stylelint-config-recommended-scss-14.0.0.tgz
+Source2138: https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-36.0.0.tgz#/stylelint-config-standard-36.0.0.tgz
+Source2139: https://registry.npmjs.org/stylelint-config-standard-scss/-/stylelint-config-standard-scss-13.1.0.tgz#/stylelint-config-standard-scss-13.1.0.tgz
+Source2140: https://registry.npmjs.org/stylelint-prettier/-/stylelint-prettier-5.0.0.tgz#/stylelint-prettier-5.0.0.tgz
+Source2141: https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-6.3.0.tgz#/stylelint-scss-6.3.0.tgz
+Source2142: https://registry.npmjs.org/stylelint-webpack-plugin/-/stylelint-webpack-plugin-5.0.0.tgz#/stylelint-webpack-plugin-5.0.0.tgz
+Source2143: https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz#/supports-color-5.5.0.tgz
+Source2144: https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz#/supports-color-7.2.0.tgz
+Source2145: https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz#/supports-color-8.1.1.tgz
+Source2146: https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz#/supports-hyperlinks-3.0.0.tgz
+Source2147: https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#/supports-preserve-symlinks-flag-1.0.0.tgz
+Source2148: https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz#/svg-parser-2.0.4.tgz
+Source2149: https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz#/svg-tags-1.0.0.tgz
+Source2150: https://registry.npmjs.org/svgo/-/svgo-3.2.0.tgz#/svgo-3.2.0.tgz
+Source2151: https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz#/symbol-tree-3.2.4.tgz
+Source2152: https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz#/tabbable-6.2.0.tgz
+Source2153: https://registry.npmjs.org/table/-/table-6.8.2.tgz#/table-6.8.2.tgz
+Source2154: https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz#/tapable-2.2.1.tgz
+Source2155: https://registry.npmjs.org/terser/-/terser-5.31.0.tgz#/terser-5.31.0.tgz
+Source2156: https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz#/terser-webpack-plugin-5.3.10.tgz
+Source2157: https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz#/test-exclude-6.0.0.tgz
+Source2158: https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz#/text-table-0.2.0.tgz
+Source2159: https://registry.npmjs.org/thingies/-/thingies-1.21.0.tgz#/thingies-1.21.0.tgz
+Source2160: https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz#/thunky-1.1.0.tgz
+Source2161: https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz#/tiny-glob-0.2.9.tgz
+Source2162: https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz#/tmpl-1.0.5.tgz
+Source2163: https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz#/to-fast-properties-2.0.0.tgz
+Source2164: https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz#/to-regex-range-5.0.1.tgz
+Source2165: https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz#/toidentifier-1.0.1.tgz
+Source2166: https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz#/tough-cookie-4.1.4.tgz
+Source2167: https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz#/tr46-4.1.1.tgz
+Source2168: https://registry.npmjs.org/tree-dump/-/tree-dump-1.0.1.tgz#/tree-dump-1.0.1.tgz
+Source2169: https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz#/ts-api-utils-1.3.0.tgz
+Source2170: https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.2.tgz#/ts-jest-29.2.2.tgz
+Source2171: https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz#/ts-loader-9.5.1.tgz
+Source2172: https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz#/ts-node-10.9.2.tgz
+Source2173: https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#/tsconfig-paths-3.15.0.tgz
+Source2174: https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#/tsconfig-paths-4.2.0.tgz
+Source2175: https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.1.0.tgz#/tsconfig-paths-webpack-plugin-4.1.0.tgz
+Source2176: https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz#/tslib-2.6.2.tgz
+Source2177: https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz#/type-check-0.4.0.tgz
+Source2178: https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz#/type-detect-4.0.8.tgz
+Source2179: https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz#/type-fest-0.20.2.tgz
+Source2180: https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz#/type-fest-0.21.3.tgz
+Source2181: https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz#/type-fest-1.4.0.tgz
+Source2182: https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz#/type-is-1.6.18.tgz
+Source2183: https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#/typed-array-buffer-1.0.2.tgz
+Source2184: https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#/typed-array-byte-length-1.0.1.tgz
+Source2185: https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#/typed-array-byte-offset-1.0.2.tgz
+Source2186: https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz#/typed-array-length-1.0.6.tgz
+Source2187: https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#/typedarray-to-buffer-3.1.5.tgz
+Source2188: https://registry.npmjs.org/typedoc/-/typedoc-0.25.13.tgz#/typedoc-0.25.13.tgz
+Source2189: https://registry.npmjs.org/typedoc-plugin-external-module-map/-/typedoc-plugin-external-module-map-2.0.1.tgz#/typedoc-plugin-external-module-map-2.0.1.tgz
+Source2190: https://registry.npmjs.org/typedoc-plugin-merge-modules/-/typedoc-plugin-merge-modules-5.1.0.tgz#/typedoc-plugin-merge-modules-5.1.0.tgz
+Source2191: https://registry.npmjs.org/typedoc-plugin-missing-exports/-/typedoc-plugin-missing-exports-2.2.0.tgz#/typedoc-plugin-missing-exports-2.2.0.tgz
+Source2192: https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz#/typescript-5.4.5.tgz
+Source2193: https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz#/uc.micro-2.1.0.tgz
+Source2194: https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz#/unbox-primitive-1.0.2.tgz
+Source2195: https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz#/underscore-1.13.6.tgz
+Source2196: https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz#/undici-types-5.26.5.tgz
+Source2197: https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#/unicode-canonical-property-names-ecmascript-2.0.0.tgz
+Source2198: https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#/unicode-match-property-ecmascript-2.0.0.tgz
+Source2199: https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#/unicode-match-property-value-ecmascript-2.1.0.tgz
+Source2200: https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#/unicode-property-aliases-ecmascript-2.1.0.tgz
+Source2201: https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz#/unicorn-magic-0.1.0.tgz
+Source2202: https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz#/unique-string-3.0.0.tgz
+Source2203: https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz#/universalify-0.2.0.tgz
+Source2204: https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz#/unpipe-1.0.0.tgz
+Source2205: https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.15.tgz#/update-browserslist-db-1.0.15.tgz
+Source2206: https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz#/uri-js-4.4.1.tgz
+Source2207: https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz#/url-parse-1.5.10.tgz
+Source2208: https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz#/util-deprecate-1.0.2.tgz
+Source2209: https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz#/utils-merge-1.0.1.tgz
+Source2210: https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz#/uuid-8.3.2.tgz
+Source2211: https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#/v8-compile-cache-lib-3.0.1.tgz
+Source2212: https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz#/v8-to-istanbul-9.2.0.tgz
+Source2213: https://registry.npmjs.org/vary/-/vary-1.1.2.tgz#/vary-1.1.2.tgz
+Source2214: https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.11.tgz#/vscode-languageserver-textdocument-1.0.11.tgz
+Source2215: https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz#/vscode-oniguruma-1.7.0.tgz
+Source2216: https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz#/vscode-textmate-8.0.0.tgz
+Source2217: https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz#/vscode-uri-3.0.8.tgz
+Source2218: https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz#/w3c-xmlserializer-4.0.0.tgz
+Source2219: https://registry.npmjs.org/walker/-/walker-1.0.8.tgz#/walker-1.0.8.tgz
+Source2220: https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz#/watchpack-2.4.1.tgz
+Source2221: https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz#/wbuf-1.7.3.tgz
+Source2222: https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz#/webidl-conversions-7.0.0.tgz
+Source2223: https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz#/webpack-5.91.0.tgz
+Source2224: https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz#/webpack-cli-5.1.4.tgz
+Source2225: https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.2.1.tgz#/webpack-dev-middleware-7.2.1.tgz
+Source2226: https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.0.4.tgz#/webpack-dev-server-5.0.4.tgz
+Source2227: https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz#/webpack-merge-5.10.0.tgz
+Source2228: https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz#/webpack-sources-3.2.3.tgz
+Source2229: https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz#/websocket-driver-0.7.4.tgz
+Source2230: https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz#/websocket-extensions-0.1.4.tgz
+Source2231: https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#/whatwg-encoding-2.0.0.tgz
+Source2232: https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#/whatwg-mimetype-3.0.0.tgz
+Source2233: https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz#/whatwg-url-12.0.1.tgz
+Source2234: https://registry.npmjs.org/which/-/which-1.3.1.tgz#/which-1.3.1.tgz
+Source2235: https://registry.npmjs.org/which/-/which-2.0.2.tgz#/which-2.0.2.tgz
+Source2236: https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#/which-boxed-primitive-1.0.2.tgz
+Source2237: https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz#/which-builtin-type-1.1.3.tgz
+Source2238: https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz#/which-collection-1.0.2.tgz
+Source2239: https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz#/which-typed-array-1.1.15.tgz
+Source2240: https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz#/wildcard-2.0.1.tgz
+Source2241: https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz#/word-wrap-1.2.5.tgz
+Source2242: https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz#/wrap-ansi-7.0.0.tgz
+Source2243: https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz#/wrap-ansi-8.1.0.tgz
+Source2244: https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz#/wrappy-1.0.2.tgz
+Source2245: https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz#/write-file-atomic-3.0.3.tgz
+Source2246: https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz#/write-file-atomic-4.0.2.tgz
+Source2247: https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz#/write-file-atomic-5.0.1.tgz
+Source2248: https://registry.npmjs.org/ws/-/ws-8.17.0.tgz#/ws-8.17.0.tgz
+Source2249: https://registry.npmjs.org/xbytes/-/xbytes-1.9.1.tgz#/xbytes-1.9.1.tgz
+Source2250: https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz#/xdg-basedir-5.1.0.tgz
+Source2251: https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz#/xml-name-validator-4.0.0.tgz
+Source2252: https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz#/xmlchars-2.2.0.tgz
+Source2253: https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz#/xmlcreate-2.0.4.tgz
+Source2254: https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz#/y18n-5.0.8.tgz
+Source2255: https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz#/yallist-3.1.1.tgz
+Source2256: https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz#/yallist-4.0.0.tgz
+Source2257: https://registry.npmjs.org/yaml/-/yaml-2.4.2.tgz#/yaml-2.4.2.tgz
+Source2258: https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz#/yargs-17.7.2.tgz
+Source2259: https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz#/yargs-parser-21.1.1.tgz
+Source2260: https://registry.npmjs.org/yn/-/yn-3.1.1.tgz#/yn-3.1.1.tgz
+Source2261: https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz#/yocto-queue-0.1.0.tgz
+Source2262: https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz#/yocto-queue-1.0.0.tgz
diff --git a/packages/a/agama-web-ui/node_modules.sums b/packages/a/agama-web-ui/node_modules.sums
index 41fea186a9c..3e94fa87035 100644
--- a/packages/a/agama-web-ui/node_modules.sums
+++ b/packages/a/agama-web-ui/node_modules.sums
@@ -182,6 +182,7 @@ SHA512 (@cspell-dict-typescript-3.1.4.tgz) = 8d470f6b4aec3dc6b9babd7e1b9e835e749
SHA512 (@cspell-dict-vue-3.0.0.tgz) = 9e288430f58f57d21e4414736744c166636790ade896438f6310b5372d805f84c695845a8dc5b4594b684879afbe364d7d62d28362faaee8817ae3d26e39c6e8
SHA512 (@cspell-dynamic-import-8.8.0.tgz) = a0d7bc20f6930ec6df19b182b7b4acfa0f11448edcf73a539e9fc6fde1be3ee5af1fc22ca6ce3e75613fe2a8714bb7b75d3c90c1f0fcf5bdc7dd300f02ec2cb5
SHA512 (@cspell-strong-weak-map-8.8.0.tgz) = 0349a449d3e26646c5ddef8e18cd9e3b5934cab760a21be03b6a777e16f56c6ca58fc9faa68f87ea2361db3a6e993b5fcb5c5522b7e960f74e4fb67a4efbdb23
+SHA512 (@cspotcode-source-map-support-0.8.1.tgz) = 21c84d7fa74de2d1e8305227ffb384f0b599d7d63aabfebb0667fabe719112ff1149b0556fd2cf27111c9f0adcc17ea2c52bda886a2898052fbb8612c57ad583
SHA512 (@csstools-css-parser-algorithms-2.6.3.tgz) = c48fed2f6cf1cc46c44af9d2c70160c2fcb91d2d34a025f12f830bb3a1d48837187f0a30b2841a0012b1504969d404484eb20dcc19ec10239cd6ad1e83618eac
SHA512 (@csstools-css-tokenizer-2.3.1.tgz) = 88c3474f2c4b6c195621f1ad69b4f5e7b2c7f43531f57f3e637a3298512e323f0735cfaba44ddd3c51858078e929f8de1438cb8d82002215cf1af4b694ac4bf6
SHA512 (@csstools-media-query-list-parser-2.1.11.tgz) = ba8c7931586f347aa2b4f3fe4b29eb075a3ca0fc4f32dd892e0a7982124e59fe7858643938abb8ede7e77b8f6bd525aab37c113fcc525a39cef4c04ac6107574
@@ -219,6 +220,7 @@ SHA512 (@jridgewell-set-array-1.2.1.tgz) = 47c80b45365eca9d37ca6ccfffa2e297fdbcb
SHA512 (@jridgewell-source-map-0.3.6.tgz) = d5925365e6e0aa594eefdb9ed9b9b7ac81ae77f6ce7b4a4fe418d2442471c58904652f124d5ef337ce1405b898bbb8f2f9e08a4a7548520a16584fedb7eb2131
SHA512 (@jridgewell-sourcemap-codec-1.4.15.tgz) = 785dabc4246e9442971d34620eb0f2e9eacc616a8dc382cf750f14400e21baec5a42c55e44f165da833ca031b130584951665ff4c7292ed25ab030d96ff0697a
SHA512 (@jridgewell-trace-mapping-0.3.25.tgz) = bcd93a684c326c6b5ac169b2fcfcf09c60ce8c290b5920f6c2abe3186020380c02196c926177d8a31b74d082644c5fbc2dbe7b0f039bdc06b4a3d080a5ea6261
+SHA512 (@jridgewell-trace-mapping-0.3.9.tgz) = dc17a5b7ab5d73c6cf800b5b72676d349962ad5a139846f97b6802f783e7930116f6323a0801d47a81bce6d8d63f95aabaa7dabe832d330886e0ff76e9928ab9
SHA512 (@jsdoc-salty-0.2.8.tgz) = e5ef921556af8f53912a529a2abd8199339e9265db7a553b742d1c0e440ba9a83bc5fb933ee18c505c7b29626ebf86d866b4eca0bd99d7c55508e298c73a0772
SHA512 (@jsonjoy.com-base64-1.1.1.tgz) = 2e716354285a198f1c655330008323bc0d57c108d9ff32171f2876f08c89932364ce87f80e49b5f8a37d5089b7947851107e2fb3b5f06743699192a7c0eb447e
SHA512 (@jsonjoy.com-json-pack-1.0.3.tgz) = 43448f01d98aeace457b77b591c36fc0dca4e9edbe0b133c5d97466dfe1a6d91bb9d43b4e4a4a27b7fe25f6f65a1306e63eef9b953fa462c4348f569a2d7f399
@@ -256,12 +258,18 @@ SHA512 (@svgr-hast-util-to-babel-ast-8.0.0.tgz) = 11b0cac0ef46a5f58fe2337db06758
SHA512 (@svgr-plugin-jsx-8.1.0.tgz) = d31888c81b0b96bf2ab8df96caec68a0d5bd449d03a6bf2e3a71ffc6b0953bc18b51cc07212c23d401b493e2c5ced79390003419b5f4923f6ae8393bd0f4e23c
SHA512 (@svgr-plugin-svgo-8.1.0.tgz) = 630b65f37ece18ef694cb20dfe89e858b983438cc5532708d60efabee286133e9ebd1fd94c9949bb3dc6fdf2246fa395049da0d28e82189cda1237e6128dc01c
SHA512 (@svgr-webpack-8.1.0.tgz) = 2e78558cc5b231057d666784cb6ea668993ef074c86dde7d707e05d8c278dfd93d0ea7a3462b1f14d1803ef45894a113ba1f4bac89a54bc68ab0180a8cc03c58
+SHA512 (@tanstack-query-core-5.49.1.tgz) = 2670bd9dd983d4a292d3546dfe8bd1501d6d9b03bbce4c9703223137d9b39ee26b70db4eae498e9d0a9d245da26fda07cdcd95c47a269c41bbc727e8e7836993
+SHA512 (@tanstack-react-query-5.49.2.tgz) = eab7f05c32bd06f9872126cd16e19dfb06373f8e25c96ee55a203dbc81464ff4f43fd6870f55648d3bdc3384830086c043dca01196682ededd954d68dcd8cc54
SHA512 (@testing-library-dom-10.1.0.tgz) = c1db182b2e73ba93f22c25b625ee432c74b149f6c8a7a87cd16a0739073e44fb663c6039d8ef71e4c24492ff764a3a27a6afa9a0e02d50a861d6404601706b34
SHA512 (@testing-library-jest-dom-6.4.5.tgz) = 020b81f72bd35e60a7c9204fd655a37cd354c296c496c690e7aee5b7655d1aa01d1eda6278b82399c572bf5abb3cc22f2db8290dd91657961dbf71447a3ca9d8
SHA512 (@testing-library-react-15.0.7.tgz) = 720d11bc4743d532218649b521e60c431af3cb432d50d7dade68a7bf83236e0718cc9019ef20f48b4970a0f3933ebf8836d89715ecedda8f313129f21e1127d9
SHA512 (@testing-library-user-event-14.5.2.tgz) = 60087cd968784c8af160b99f19c8b1c03d7ca088f20b5a45402d98d351769735761d332262b2349f37b4143d28701fff08a4bfee321481a7be69d3eac4ae7209
SHA512 (@tootallnate-once-2.0.0.tgz) = 5c2b8a14fe4f4b9e609cc56edddb72f0a3dab4ba94a32fd96330f3006090f093450a42d7ce623bbcd1c247e5e96d968c5902bfbd0b9bafb3e462af20e3bd09fc
SHA512 (@trysound-sax-0.2.0.tgz) = 2fbcfd060acd11c632518b45f876847e24b979b921f635ea6eccf3ee90b485104f69ab55d178d20f7f9e1eba6a15e9907e0c22145d103c86ab9c88a12039fb38
+SHA512 (@tsconfig-node10-1.0.11.tgz) = 0dc4630c2ba32bf90293f7147bc5f3f194a99bc992de634da6d6be8c6080e944840df92d94dbe6d7e22e67d7937036cd938d411f0a471de5be37594a0b3e333b
+SHA512 (@tsconfig-node12-1.0.11.tgz) = 72a79fb91b21d76a56c86b08a0128903d96e16ede6471080f8e459bc0e24b4b4b322e094b56571188b978a01303b9ff2c1614c67640418a5af9191b5cc33136a
+SHA512 (@tsconfig-node14-1.0.3.tgz) = cac4fc9a1762c562ba1f0de2d55d80791a99e567d78351b8de6aa86253369dceb7f3c16ae63717cabe6646ca9588bc7f18961da0bd1b7d70fc9e617e667fc8a3
+SHA512 (@tsconfig-node16-1.0.4.tgz) = bf1854cb827c9727b28a71fb033975a5d778dc6261647fed3f6c1e37c4e7b506e5398f80d176d3f03264d7fa023ee38eca0fc96bbe7bac6d028077160bc39f30
SHA512 (@types-aria-query-5.0.4.tgz) = adf4fddee8f9b343d12fb13371c18cb376eba6585cae08670e8576e8da8a842012d61568f9674db0fbc4ff26fa8a57ebe618b630493a77911625329dc60f2357
SHA512 (@types-babel__core-7.20.5.tgz) = aa8429ad9bf3e70405270303a9eb1e4575afdeba8cbe18296d715f5725a16f1f57e3b3ce200ea2ffe75779f12664aa0080e69375a22035232a30853ad72472cc
SHA512 (@types-babel__generator-7.6.8.tgz) = 012b23fada440ec12216bd5aad6ae537a57799d7e344c66de8bb4afd5a7f92b7852e7af9407e7e0e1bc3e6720d6195f3c09bd7786abed398945dc03356ba96b7
@@ -306,6 +314,7 @@ SHA512 (@types-serve-static-1.15.7.tgz) = 5bc626fa1f2786e47068a3da0f0df8414930b0
SHA512 (@types-sockjs-0.3.36.tgz) = 30af55e8dcc04b5f9477b255f6524b16a5bce556c2f5dab72e6c190ae05ee3004380a0b42a3fe377c5e5fa74af894f90737fa6eee9871f21e0fffd8a49ad1ad1
SHA512 (@types-stack-utils-2.0.3.tgz) = f5a11b619dd36d83339cf75c76bdd2988acb5f00bf00a65741e09ff4f81aa3908a6fc0b21ee117e63cd63d392fade82f85124772944ee81168196f7271a3a463
SHA512 (@types-tough-cookie-4.0.5.tgz) = fc077cfa720e57b465fbee9fd4174ac4548c826a2a12861b1d1a4f731dc911fbfc551b107bd6789825de241cf1b3b99b1d8fd739966e5e544d7e1a553dbb3a64
+SHA512 (@types-webpack-env-1.18.5.tgz) = c33ee48e34518fcfcbb72e01f8aaf42cde98a5cff74b299e0821926da5e9da5787d19560fcfae23623b0363e1b0f8ba9848ec0f0d5d2e1be86977ef7b1f3b998
SHA512 (@types-ws-8.5.10.tgz) = be641251c7da96922ad11f6aeee4e8da55ece9e188a6df70b672dd32ff4b569223080ffeb9f651a33955a157a52188b1c75ba0081283867f3dbe7b0418e0b1f4
SHA512 (@types-yargs-17.0.32.tgz) = c50ebb61cfe568e1b9b8c7d7ff4f77311946182201cd931aad56be81f34a271580220ca462954690175ba84cc60c37c2ad5523e8789f7f8993679040e93980a2
SHA512 (@types-yargs-parser-21.0.3.tgz) = 238abd414f4c42fe2810ecf8b401c9b4dcf5730b8bc67d85df171cda257959da8b3e95278f7d1a52ec6dd660316131bea1ef0264c57ffbaad4e12e20443ceab5
@@ -343,6 +352,7 @@ SHA512 (accepts-1.3.8.tgz) = 3d802d8536b69b654ac6ebd20f70cf0bf1b2f94fac380d4b02e
SHA512 (acorn-8.11.3.tgz) = 63dad17c91b98dc28e13408b8ac61ba2352322b20413b00633303f4a6e01b2500d85b4be70332980175c3d3f75a09eceb89f61609071e7d4636e1c559eb17c5e
SHA512 (acorn-import-assertions-1.9.0.tgz) = 726330a29f71fbc285871bcaaca7cf62637afe92936181c1a8b6b40dfbd565c28c25637258b9daa8d0fb771fea9fae91edec0cd545f95cc68354fe709554da54
SHA512 (acorn-jsx-5.3.2.tgz) = aeaf6cf893617f4202863b435f196527b838d68664e52957b69d0b1f0c80e5c7a3c27eef2a62a9e293eb8ba60478fbf63d4eb9b00b1e81b5ed2229e60c50d781
+SHA512 (acorn-walk-8.3.3.tgz) = 3315dd45e4918463bb56515ed5b446fe823bfe674b57d07d2494f437cbd93a117b805451e65dccf16f46f09c66295f890b9986a89d10bea7d238bb023dae2753
SHA512 (agent-base-6.0.2.tgz) = 45937035c945efe312ffc6c383bd1a9a0df6772799199c620ee42667128b025423af78c6c8bc7ee0a924e7c50eec3d90760148402a2fb92b991129dee911ba5d
SHA512 (ajv-6.12.6.tgz) = 8f77d52e0bd3a39dbb6a7c98c893864d825b1bebe79d062f1349b99a691cd532be9f1029a6408b3082f4699e1d6e55423681928619be933138654ca4068320e2
SHA512 (ajv-8.13.0.tgz) = 3d103dd750658fdf6347944c793ba755b357305e8ba78bd95e79391908dc9d45944ecad7b5e920fe99e6145236bbf237e98ff66c84c64b7d066425de8bab8d90
@@ -359,6 +369,7 @@ SHA512 (ansi-styles-4.3.0.tgz) = cdb07dac22404f5adb8e25436f686a2851cd60bc60b64f0
SHA512 (ansi-styles-5.2.0.tgz) = 0b1c29b7649f4f34ed5dc7ce97318479ef0ef9cf8c994806acd8817179ee5b1b852477ba6b91f3eeac21c1ee4e81a498234209be42ea597d40486f9c24e90488
SHA512 (ansi-styles-6.2.1.tgz) = 6cdefdf2015f417faf8b0dd1ef2ac6591aa7acdda84641245238e5e09367e04f06c716e3b46dc56eb108218de5f3f86bc14c0878266f8b842e3933f8304ad5ba
SHA512 (anymatch-3.1.3.tgz) = 28c45e154af4078b7e0fe381923477298aafa1ca765da4b33b9e54701ea681031ddca6dc13e9964f2bd557b0ffcec7446cd9d5e9a71952eb64887417bd3af547
+SHA512 (arg-4.1.3.tgz) = e7c4bd403a86d17c76ed8c0f4adf5f2718af8d8978df6602c1f0cc7d9fbbd5102a52b65e7fb2eb2906772c72cec024b814b341a653f9df7671f3de5278e087bc
SHA512 (argparse-1.0.10.tgz) = a39468cbab4d1b848bfc53a408037a4738e26a4652db944b605adc32db49a9b75df015ab9c0f9f1b3e7b88de4f6f4ea9bc11af979810d01e3c74996c957be84e
SHA512 (argparse-2.0.1.tgz) = f3ef56a9e6db173a57f4e47e59ae8edbd6ac22881e44ccdc1ad00835da4c1c7c80835d1fd3969215505b704a867ff3d7c35123019faadbf6c4060dc3beeacadd
SHA512 (aria-query-5.3.0.tgz) = 6f43f4b193cab72bbc1e479101f0aad087d44592be4aec0c8d8d545c6054dbbc290224f0400225ab9e886c83becad93f2634b57cc475e1e7b958105f2a2e49e8
@@ -375,9 +386,11 @@ SHA512 (array.prototype.toreversed-1.1.2.tgz) = c300c2a13e029380b3eec2ed8149b347
SHA512 (array.prototype.tosorted-1.1.3.tgz) = fc3747e1389398e2b3c906e9fde69d70255ec6209bdfac4983b1ec8583982673591438f7dc612fd0fec6c6cca7a52861ab838b609cdb19c04390bb03b7b32736
SHA512 (arraybuffer.prototype.slice-1.0.3.tgz) = 6ccc4c2808e0d77101495b1cc53698038991739b755005dada45e219335f674efd1c85971242a692016b87f9c9a9a99a2d2ad73b91f85851643c468b2566ecdc
SHA512 (astral-regex-2.0.0.tgz) = 67bb4cc35cad4d7b798ea31c38ff8e42d794d55b8d2bd634daeb89b4a4354afebd8d740a2a0e5c89b2f0189a30f32cd93fe780735f0498b18f6a5d1ba77eabbd
+SHA512 (async-3.2.5.tgz) = 6da359caa69a2e1c8b54a9bf0e5bdd5b4e7531280ee9bf1e55f21ece5f44e4fa96c458332e6ff0427b445b8ccecad55bbab0c4af426500b12974e170bc4acbb2
SHA512 (asynckit-0.4.0.tgz) = 39e8bd387e2d461d18a94dc6c615fbf5d33f9b0560bdb64969235a464f9bb21923d12e5c7c772061a92b7818eb1f06ad5ca6f3f88a087582f1aca8a6d8c8d6d1
SHA512 (attr-accept-2.2.2.tgz) = ee9ac38efb7d1e6aa2674725e42463b52f38b04ca1b073f67280e46992912957c20e8f6cee2c3b0a15666abefc1aef690b84a847fdbcc05bbf1b92498539ea12
SHA512 (available-typed-arrays-1.0.7.tgz) = c2f52306d48637bfbb4a3369abff4cd93837e745190f7abad881592db4404756d23250a8d5969e5be049f83d3dd1ee2120864b05c4c359ee0c8788ef5036a3cd
+SHA512 (axios-1.7.3.tgz) = 02becd0fda54f7d789f46a681902a129fe7c1a950e827cee681eee78d43904c8b4a7e2d9e686849df17df7d7c002b713201c174c21c098670739925a58fabd37
SHA512 (babel-jest-29.7.0.tgz) = 06bbc6637c594b011c0b32af2ac0a2d86807a83aac62438fe3f6f2e710a023019743120487ef1ec37826ac4d72ed7451e8b1d9223eb22d89d48bf9a6d8a5ca06
SHA512 (babel-loader-9.1.3.tgz) = c46dd24f80e09687467fca92c2fd0c75e58b86b0ecc3fdf640c7533b94f5648a7d810babd07902c85b3b030b24af5d09297157c29021882b985f9a065e74466f
SHA512 (babel-plugin-istanbul-6.1.1.tgz) = 635210a24f7cdb5702f689c2c79a2d8057d19bb2e6f88fb0c313b1ef7f0cfd62cf67d438da6e081b95b414d5fc58b2f6818319a37264b97207d833a958cfaac0
@@ -464,6 +477,7 @@ SHA512 (core-util-is-1.0.3.tgz) = 65006f8b50dca49e060ea6a78ee719d878f7c043b9a590
SHA512 (cosmiconfig-8.3.6.tgz) = 91c67af96e50cdc2773f532dfbcdce52ffe81c5a991c8c7c0eec46e9e6794463044682eaa7806e1a38472d818af8a7f95d5910bea052980cbf9c658ddea0e010
SHA512 (cosmiconfig-9.0.0.tgz) = 8adbcbe61f1111300298e4c573851f23207645f1078bbd40c7a13f3e2bd5c6af4db1e29b396a5ec8710e21b980c35aecf0093456eaec40dc30ee57fb62d530ce
SHA512 (create-jest-29.7.0.tgz) = 01dcf66dd1f456adc5e772843093a87ed405bad582ba49ba276e306cf5913b893590c63b812eddb3fba826436e57cc030ad5969eec06709c2959c8a1fb3116d5
+SHA512 (create-require-1.1.1.tgz) = 75c2855f78e7d0ca486978e2b2846f7b12095442b36aaef3dab64ac5ff8c4abf5391d9879ac5389b695c2e88eb8ff14797c9a4e55c4c99803e7ed4643ffde829
SHA512 (cross-spawn-7.0.3.tgz) = 8910cf24a50f544343edd1cf3bcae46ce9cfa720f281c0c5b568e9796342832f163f6ad77315cbf13b2445e425e8eac1d86efe509ada82cd6ad7916e75cec6eb
SHA512 (crypto-random-string-4.0.0.tgz) = c7c772dd19ef61d95470f3a39041eaa33862c3328d4aaec670fb9715b9f230e087c57f15dce80883fa58b9a6e5dac6d43df20969e01007b3cc38af0314876844
SHA512 (cspell-8.8.0.tgz) = 583cacc49d4855b3d22be6ced1ca060e0680dbea27f6e6d2f986b6b30ee8a4a115a69e5ad13f8577bac491a026bc3d22a6c9fc866fd2eb4b55373e3e9b691152
@@ -515,6 +529,7 @@ SHA512 (dequal-2.0.3.tgz) = d237bea8f28710ca21bdf453084a370ab3c6e9c033018826ccac
SHA512 (destroy-1.2.0.tgz) = dac246253697208691d70e22252368374867318ec6a5cfe7f03e2a482270f10a855977fb72e0209c41f1069c1e69570f7af0b69772a98d80b1dcdca941081a26
SHA512 (detect-newline-3.1.0.tgz) = 4cbcfec7fbc45e6fd8ecfef09f510914d2f1629503e1380ca2cc58e9f0152549c931bba91c13a7731c96506f4ea53687f44043eee148e4b7c482630e739e03b0
SHA512 (detect-node-2.1.0.tgz) = 4f4348b90a674ef14301336e1cde6ba0fc12046f37ac5b2e3be3175c7f7fdcdd5e15b9f8c1c3e3b6dbe330b10f589d11194620404edc1a04b7b4dc5ba8218cee
+SHA512 (diff-4.0.2.tgz) = e7c966c4a480e013722f3f871cc53394e129834f4557e7afe9931edef262860771ce073067c5681043e600b0991bd2e6a9f56834c30aa6db48613546eae0d8ec
SHA512 (diff-sequences-29.6.3.tgz) = 12378f2b5b2b0f73f4f28da3e1fd04c67ca5a91b3907db498dca7db7592b1f6a918bc08276c61fc1ef498122eeac5056c2ae2e3a58a9cdf9397c736fc052abf1
SHA512 (dir-glob-3.0.1.tgz) = 5a4ad6a7d191e0a5df28663338b993b86562d545857f0b37efb9fd71ce79fed6fa0eeab217aa5c43901b88712c85a0e963dbfaa1a4abd9708389d1a633077320
SHA512 (dns-packet-5.6.1.tgz) = 97881c4a8ba172020a46fcb2f7d44d54e8315e289c13eda366836668d999e895e219a8c138901eb24d4e06526e33993673e7ae74674bc43a97b8f08a223ea4a7
@@ -531,6 +546,7 @@ SHA512 (dot-case-3.0.4.tgz) = 2afe672a587ac91addac6bf1789d9ee72d9e454a64528b085b
SHA512 (dot-prop-6.0.1.tgz) = b44ef3b58cd71c87b2bdcecdfa1477a22ec521b7ff3488d53fd86602ddf2317ceb434ef6fdfa6318bc761b13711b1525e55ef7304a98ce2a0e32856118c27970
SHA512 (eastasianwidth-0.2.0.tgz) = 23cf1361959cf578981d1438ff7739ae38df8248e12f25b696e18885e18445b350e8e63bc93c9b6a74a90d765af32ed550ff589837186be7b2ab871aee22ea58
SHA512 (ee-first-1.1.1.tgz) = 58cc26f4b851528f9651a44dfaf46e113a86f3d22066985548d91d16079beac4bf1383ab0c837bb78f0201ec121d773a0bc95e7c3f0a29faf9bd8eb56eb425a3
+SHA512 (ejs-3.1.10.tgz) = 51e26615f3ab0104bc38958f678aad807c961316b4f3cfccb4ae54132a091851faedc0c45e4652be23a2291099e178a3d33c48dc9102818b37a0ac7e022cd004
SHA512 (electron-to-chromium-1.4.757.tgz) = 8dfb436829276124adffe28a797cc7dcb5f91360af44b9bbe4fdc78fe27f76fdc22f4a9461c3add7777914dd4d88be4825b6e1cc7adbdc1a26786dad9129599b
SHA512 (emittery-0.13.1.tgz) = 0de5b06b093aaf9c91f631609c3298b78b0b4b42e61c9262dd93a76f9fc975b6308f79d6f85c509c72238412b3f182c2ee844d3d533d350e3b237095c77e1ea9
SHA512 (emoji-regex-8.0.0.tgz) = 3128d8cdc58d380d1ec001e9cf4331a5816fc20eb28f2d4d1b7c6d7a8ab3eb8e150a8fd13e09ebd7f186b7e89cde2253cd0f04bb74dd335e126b09d5526184e8
@@ -560,6 +576,7 @@ SHA512 (escape-string-regexp-2.0.0.tgz) = 529cdc2c25e895459c36ee47b5530761d5c98c
SHA512 (escape-string-regexp-4.0.0.tgz) = 4eda5c349dd7033c771aaf2c591cc96956a346cd2e57103660091d6f58e6d9890fcf81ba7a05050320379f9bed10865e7cf93959ae145db2ae4b97ca90959d80
SHA512 (eslint-8.57.0.tgz) = 759ebe99ec6769321b481656828bb9d54e8e9b322160cd9570d76d893b48eea3cd666df9024a6bd1feafb70df0d4a9a7e4f628fad6557e1d775ab8694baa0ba9
SHA512 (eslint-compat-utils-0.5.0.tgz) = 75ce98f2dcc47126193076be08c3cb8bf872a3517335ea276e124bece97471cb8a424c28a49709040f582ffc663132d4d5e2a2817a3dbe3f6700b1255984a8c2
+SHA512 (eslint-config-prettier-9.1.0.tgz) = 3525a5e411505843e2d63e138d5348b73615edd65767ec0fe88e9986b046a42850859454684962844f6e45191c6d19cd6fbe9430a0c5debf964e635c18f2acab
SHA512 (eslint-config-standard-17.1.0.tgz) = 2301f099a04db432b8cc31d0ba41435b9bbf6936fcfa6790599bcd1569221a66d68c3e9bab2b92481c715ca9027ed094cdcd73c021f69bf6da08d0cb1a6b8ee5
SHA512 (eslint-config-standard-jsx-11.0.0.tgz) = fb5115fd1d09c442b52f4346a2502bf0892d9b7460a2dc7704ac20697f9e02e497f03f79d8b50b2ad8e0643dc5f9ee92be26ce36784bc284e2f433f13792efbd
SHA512 (eslint-config-standard-react-13.0.0.tgz) = 1eb54f1a3f149dc1df57e06c7494ee26956ca269fa008ae47b701fd858785c5bd040353e88ee8dd992fe52c0beb1c1317ede1f537b9fedf2708fb3ca5a75c90c
@@ -598,6 +615,7 @@ SHA512 (exit-0.1.2.tgz) = 664fde34a576cdb8e92b3aec43e9f51baa6855b12b4312742c1389
SHA512 (expect-29.7.0.tgz) = d9992cd217f554b15823591b8742398cfdca1c7c821e991fc87073b125d116097f060f665987cc5bca03f8f74c3e5130cb91cdb11f49bad632ea931e3a1eb59f
SHA512 (express-4.19.2.tgz) = e53ea7863b13f8438ccee724f098c11c04531df321b743cece503ad16576a4c0f78325f0d8b66767eb9e19d3711bed1c6a538971629ba4572eccb67dd585aaf5
SHA512 (fast-deep-equal-3.1.3.tgz) = 7f7a90f68432f63d808417bf1fd542f75c0b98a042094fe00ce9ca340606e61b303bb04b2a3d3d1dce4760dcfd70623efb19690c22200da8ad56cd3701347ce1
+SHA512 (fast-diff-1.3.0.tgz) = 5713cfe0da9b5238fa31a00e69f59e527d9c5d62dc0ad96392552d65fd089dde1743e40fb660346f5f33672d23210c7e131455091fd94290668a4e655ec84db3
SHA512 (fast-equals-5.0.1.tgz) = 585d568bc3f0c1263bffa2b1d2f297b70f11c2e486a0cd5bbc36896eeeccc43951d6fa2f6632002ab9f3cab4e18008e6e890d3bb47d58165c394c1aca6875fa1
SHA512 (fast-glob-3.3.2.tgz) = a17dabb80150c1ffceae3f26ef7ed8e5a7710d03b42c007bfd2e4c9f109d4cd0dde29e81b32215b2ff4942c0136d34aaf0a1d1a4bc081db56550d6adc5dfb53b
SHA512 (fast-json-stable-stringify-2.1.0.tgz) = 96177fc05f8b93df076684c2b6556b687b5f8795d88a32236a55dc93bb1a52db9a9d20f22ccc671e149710326a1f10fb9ac47c0f4b829aa964c23095f31bf01f
@@ -610,6 +628,7 @@ SHA512 (fb-watchman-2.0.2.tgz) = a79d7ad41a9bb826929c1f2321bcd01ce96982c3e62b9ac
SHA512 (file-entry-cache-6.0.1.tgz) = ec6a6cfd75b299b2e4d902d82b8373a4c3ab623321748c57b88bf2d9006c2c4ea58eea1d2af7645acfdca72249dc25485691f43a2d47be0d68bdb3332dd14106
SHA512 (file-entry-cache-8.0.0.tgz) = 5d74d4c02be2b1ae6869c34644ff527cdb5804d00c8be44fc011666e564417b37bb301d8412ebf65f93b491c31e03e63dc21f6d7560d45ca350c430d55f6429d
SHA512 (file-selector-0.6.0.tgz) = 425679c890b45711f1410b10857bc1682ed5449dae6b14dff937e9bb867f39c550255a593be0c6534ae4a155b971ed9271cc6e82fa4126832f52ce7d8882d877
+SHA512 (filelist-1.0.4.tgz) = c35704b9fdd2f83acb0902fb113ea4cfe82694975babd27bc970928cafce6423c0faa10dd56c85e1901fd186096b8fec84726b6b6b7f77fafc495e098bec7ef1
SHA512 (fill-range-7.0.1.tgz) = a8ea3d17e74c5260b62dc6f805b56f9ca2714cf8c29be451a5ee200ee1abce42fb984565fdd8d84aed8e750d8f6b7d36378a2a91283d8abea368b589d94495a5
SHA512 (finalhandler-1.2.0.tgz) = e6e5dc5157ed9503059d60bdaaefecbe45afdc64ddd8f7d484aff73cb9183407bb15ba8932ddf9d791dac44e9e44bef819db2b8a2c2e8e26b075a0750691084a
SHA512 (find-cache-dir-4.0.0.tgz) = f59a273d3e1900ae1afb5a543d53d925aa5b8bb3b9a9b6c93dd630fcd39059965b54b7434d833703847dcff0e900cd3c2036851acbcf822199f36584c140d68e
@@ -767,6 +786,7 @@ SHA512 (istanbul-lib-source-maps-4.0.1.tgz) = 9f7b3c13091d1482421b704f28162fb248
SHA512 (istanbul-reports-3.1.7.tgz) = 05ec265172267ae464d986343d56f180a032b2f8513d4404d21e5044cfbe9d55b2b9b28657497ca90e68a7cf81d833a6c127badc98af8f406390f4157fc7cfe6
SHA512 (iterator.prototype-1.1.2.tgz) = 0d1df71cc32bf04cf0b912fc63d0f7bb604c8fcf91a9213ce748df1aee7d912eed6e63cbcc691999549fc821520f1b9988463a473b774f6340fea53e370563d7
SHA512 (jackspeak-2.3.6.tgz) = 377c824bf35e82c381a2473c18074cf147267ec2a2492f1c8a985e0ff9e2bf3afbd341fe9ec30ec498d09efc0e711615b8591d1f4c0652f5b659b5c69ab6466d
+SHA512 (jake-10.9.1.tgz) = eb56ed70e1cd9cb9ec39db4b800e5e7ea4168e74a2fefa30e476c8ec731d28a5aabeb291d5b2cadc13e5267f6071268fd9ec2e6a6512301e57132efa294212db
SHA512 (jed-1.1.1.tgz) = cf7e594847171f12d6e32ba6c34745e8be3ae0d4f7eaf9b1df0c49c3c303a6b681716b8d56050f6603c929cbb51de90d83094c14daa897b8bf22949b8e1ab0a8
SHA512 (jest-29.7.0.tgz) = 348cb7a00169f6c85d6b5f61cb81cad0745358ab4f26619d9efcb0bb4d673aa342daf660f99f9fbc90f1a4c400f3c79bd88f4471a7dc763620b03b619d84ef1b
SHA512 (jest-changed-files-29.7.0.tgz) = 7c402b162c1fd41a50fb86d74a9adc0dcdffc781d2ccbe1a976b68cf05690c5a6cc402e32d87728882b87b9573eba1902486d727cdbedf93edcaca1fa6d357db
@@ -869,6 +889,7 @@ SHA512 (min-indent-1.0.1.tgz) = 23d8f0327d3b4b2fc8c0e8f7cd59158a4d894ef8296b2903
SHA512 (mini-css-extract-plugin-2.9.0.tgz) = 66cd58b1955f7a67a44991bee38bc1b184cb40e4643ccc2796ff9a7a17312bf34b282f841a10c1dfdfd878f618ab1fec4e4e8d9d8a6eaa29214a7efe2487af4c
SHA512 (minimalistic-assert-1.0.1.tgz) = 52d25c003e3211a1ad8cf7b35ae3bdc02e27c149d51fff3f226df210740fe1bebb717943fd0afd85d213094d710db4845e0d9728d68ff23b11795eef41dd34fc
SHA512 (minimatch-3.1.2.tgz) = 27ba7ade1462023c35343130c355bb8b7efe07222b3963b95d0400cd9dd539c2f43cdc9bc297e657f374e73140cf043d512c84717eaddd43be2b96aa0503881f
+SHA512 (minimatch-5.1.6.tgz) = 94ac15ff56eba46ea6054147b5becd526b400426f65996669b6c0d88e0398406fc55d092e01dddb4c5b2bdca1589c730016fc23844635cbb74ccfd735d4376ea
SHA512 (minimatch-9.0.4.tgz) = 2aa5a1f957217f170c3510098e3dad9ec48974d6c7b1582790185336b5bb023568e8ebcbb71c3ccdf4fda0bc35252a21945cc9f230a84e06a85ef27e907b7a7f
SHA512 (minimist-1.2.8.tgz) = db2c8047ca8190ddd8ba17896a7529582e54ddb6f9a2c0f2c0d07c4730d5943c031dba1c009bdeaaa8f5bbcf92543ee39164f8cafb070a95aaa96a80c5bd3308
SHA512 (minipass-7.1.0.tgz) = a06651bf6393d653b6505d7351cc1d4dbdf0a94c08d240464e0b7f4fb39d4a3e8ce8de66de8e6e3dfd00216ea5571186a2259447b7b60304c4fb18b02bc5908a
@@ -976,12 +997,15 @@ SHA512 (postcss-svgo-6.0.3.tgz) = 765ada8519b13f6d9b5fa88a12338cf9cf3fd69fbcd5ab
SHA512 (postcss-unique-selectors-6.0.4.tgz) = 2b7f0e09a22b3bcf8fce902bce42ca078d9d48046d0b6b661ba3ef0f86f5a3543613d3acf23cdf5857d2cbfae2c6c1f0a21b6c0dd16d0161a315515477061a32
SHA512 (postcss-value-parser-4.2.0.tgz) = d4d342b3abaeadf9156de5c6e12f09153f6dd7d9b8e480a789ff3358b779a0f499e74427c0c7caf87de3bf8d3c7788f0ffb06db6fe5ac52e48887a0b69534779
SHA512 (prelude-ls-1.2.1.tgz) = be47033eb459a354192db9f944b18fa60fd698843ae6aa165a170629ffdbe5ea659246ab5f49bdcfca6909ab789a53aa52c5a9c8db9880edd5472ad81d2cd7e6
+SHA512 (prettier-3.3.2.tgz) = ac055e1d831cbfc013579779d3c085767fbcfe91cfa5778889dd4376b3f05e7680747edcaa355ba49693e5eab8c9100553f96c6f0630485fe7e6236b7491cf40
+SHA512 (prettier-linter-helpers-1.0.0.tgz) = 19b2b670ff67ada492505f4dd97c14c2a7f394016530d61897e4a113f57e1fc6bdb8d97fa14a81d70d842f9e098743a5c9149df117d6609ddca154b84d138fdb
SHA512 (pretty-format-27.5.1.tgz) = 41bd60cb93ab3f9fb30dfd81be7cdd9778ec4dfd6a5d531acdbbc2a0a86d2aa56ce3f60ae28cd7e2029024957235ef9c6a334f9f42a80b4302dc552668758499
SHA512 (pretty-format-29.7.0.tgz) = 3dd970fe83f137e69776633d474d09542f56545a022d3289bc354b82627ea807df04cc6c57ce65fcbbbbb0dc78cd2ccfca82f67ae226b84c0784e5dd12034565
SHA512 (process-nextick-args-2.0.1.tgz) = de8b943a9421b60adb39ad7b27bfaec4e4e92136166863fbfc0868477f80fbfd5ef6c92bcde9468bf757cc4632bdbc6e6c417a5a7db2a6c7132a22891459f56a
SHA512 (prompts-2.4.2.tgz) = 37136ffe42e0b8203ba778c4f282f668406cac95a001a901a609a02ba9693d657e5ae3a663aaf6ff36c05673fe4fc6d0940d27cc75d2252256d07abbca5683d9
SHA512 (prop-types-15.8.1.tgz) = a23f3b0a064809dba5528868815011ec08e50b4df6ed4e1e9782fa780bcea827ae74c0d553435384d695f9bf437f87578123f58173139cf7617deff6a831f972
SHA512 (proxy-addr-2.0.7.tgz) = 96542c30b4940d43d3e388ddad4fcedfbaa59e27e2b433fe670ae699972848ac8b2afb59c69c95d27dbf6c3fcde2d040019fe024475953b28cadaa0ad7e5d802
+SHA512 (proxy-from-env-1.1.0.tgz) = 0fece439109b03d7f5b5d5912b445a091dc63efe7470cc5caf3e17f24e4b4d2503d43930e3b98a24465036e9c8b514e45b082d6944a8d515454481bd65788562
SHA512 (psl-1.9.0.tgz) = 13f66c754e072ecffaf206338064e43227164cb3dd01fb492df24594b50000a646912b4d53bdac6634fae929cc0d539f39663f600a220fb2716bd887be781c6a
SHA512 (punycode-2.3.1.tgz) = bd8b7b503d54f5683ad77f2c84bb4b3af740bbef03b02fe2945b44547707fb0c9d712a4d136d007d239db9fe8c91115a84be4563b5f5a14ee7295645b5fabc16
SHA512 (punycode.js-2.3.1.tgz) = bb11481d4d189476210d0b55e11f49e9ae7648bc76f010a34fee227a1ec819b83054958efa49b8df5738c9195111402c026b7fb8c8d05324073443dfd0cdfd08
@@ -1000,6 +1024,7 @@ SHA512 (react-is-16.13.1.tgz) = db87baca71361fe38ab7892ab0ebcd77c901a55eb9ce8c5b
SHA512 (react-is-17.0.2.tgz) = c361accae90beb62099e569f7ff9d17a03d047de02fd75da9af3169921d1278cbb4ecff8a1c1919931ef3acf0f484ea90777563ab0ff9ee7ae539b1db81b10e3
SHA512 (react-is-18.3.1.tgz) = fcb2cc5726acd258e302da1888fa9888bf15597cd451d4e1ae6539fa7db40d9bfe6be0a54687af533c3927153e21e879fdcf3bcada13055f46d4588a7cd25d9a
SHA512 (react-refresh-0.14.2.tgz) = 8c2be6b2bfb521448c532cce91172f9d56d7dd9602ea0f530eb0db16e166443abb3c3e326866cb28d40bea4da39c0ad5f218d8c61ee156101907ab3d1c31a964
+SHA512 (react-refresh-typescript-2.0.9.tgz) = 72102738ee2fa719bfdd69203959ad8be78df3252d909cde1a43a2815e9403d783173d765b7e1efd2b187b61f9f91c18277fac7d266455b897706d5c84407196
SHA512 (react-router-6.23.0.tgz) = c0f319f12d93b8f69d1f4b05e62ac51a390d2c8711bce49a11eeeff89111f39d3c77226e9a6e97641d6ee64ced957d1156ae80cd1567773a9c521eac1486aecc
SHA512 (react-router-dom-6.23.0.tgz) = 43d61a498bee6f081b6a5d9cf4324a7f1ea14cda01a778890ec97e0eebdafc3c31a091fe3935e4c46a6a9788942b6b256bff33e11a63026e845b1d6a503ba8a5
SHA512 (readable-stream-2.3.8.tgz) = f29d00524e173838087b04a2d25f04a63b3e1159d688aecda03204194d07844efe67263c0f520c63ba1dbb9951ac55c683bd4bd79286f10acf9ae9b8e514ed74
@@ -1052,6 +1077,7 @@ SHA512 (select-hose-2.0.0.tgz) = 984ba068b2be61f9228c1e1fc747ba9089ae25d088b762f
SHA512 (selfsigned-2.4.1.tgz) = b61e41e0bd94f9e18bab54d587bccd44605aa62a1239151eca6232771805a70c30f5ddaac8abedb8f5368c9b87bd8030c2a8b6639f7a4012f7784a9c3c460bf1
SHA512 (semver-6.3.1.tgz) = 051ed5bc30951cefaadb10445ac9314ba0c9135a919dbec3c7352ba206fbd425a849f89c07162c88019df8a9749a6abf329ac6f7202b464cab4314cee978cccc
SHA512 (semver-7.6.0.tgz) = 127c1786b9705cc93d80abb9fdf971e6cbff6a7e7b024469946de14caebc5bb1510cdfa4f8e5818fae4cefbd7d3a403cd972c1c6b717d0a4878fe5f908e84e56
+SHA512 (semver-7.6.2.tgz) = 14d0080560b1f6a7118681dc81c27482f53b48dd65614d995ee49f974e1b482e4ea6f0c71722428dd347a263d7c6342508153aed85bae0fcd8eff548107ec5db
SHA512 (send-0.18.0.tgz) = aaa5b3b8e8d214ebaa3e315ee0d3ac30b69f4e8410c0148e1294be17012ddc0d95def2ae6d3aae4f7be62d3429160317a7c02515616e3f5a8a68964eb4fa555e
SHA512 (serialize-javascript-6.0.2.tgz) = 49a6b5c4f0724d3ab681d7856582cba3e445137e4d1d99006ea65e58d777069ce9a5e562b00aa90e3729f1dc9feae22f12a251778ea37a69b203888521e564f2
SHA512 (serve-index-1.9.1.tgz) = a571df28d3f8aae8ebb6d78cad205bd2b73c1c9f4cb3f1ab5f0714b54b43e6ce1ec03248f1b4f70b3db34d544c2adae2e3da4bc767b461af3388fe586b6a5967
@@ -1112,6 +1138,7 @@ SHA512 (stylelint-config-recommended-14.0.0.tgz) = 8d2931dbdd028254bc4ad9ab2e9d9
SHA512 (stylelint-config-recommended-scss-14.0.0.tgz) = 1c3be9a0e010d51a45fac3db0ce4f6436fd8ac10c42439d4ca6995999ee630278d88549d8517721848a6064cf4eb0b0df87685c14876e3d80347e23d251ece9f
SHA512 (stylelint-config-standard-36.0.0.tgz) = dca8f2ab877ad9b605a7f02af0f30a0f09605323d4e2769c5ec8c32d625d34f454829bb100bbb52a79401c88f7e9c76dc558958577b16628fae72334b8d207ba
SHA512 (stylelint-config-standard-scss-13.1.0.tgz) = 128e70eff5efc061d691e18bb5d9b61592ce318a19975a263f6fe3805097ca5db1e72373efff2fbf84e3eac947bcc49250d4da1a86a6fc6019d1986e92f6a57c
+SHA512 (stylelint-prettier-5.0.0.tgz) = 4477d2951248b1a560e41afde20655756973feb053c90cd97e5344e9d5ef4b1b7f1ad856318de0107b1664405a54683b18cf97aed552a784739c5941ee2d28cb
SHA512 (stylelint-scss-6.3.0.tgz) = f0e4a98ae7f5c42edff2496526c04e140398a7f991fc2d455cc55e3858ed24fc3e005bc4982f7715a9251edecc94ea94e29a31b90d539183327c8d15fb54b18c
SHA512 (stylelint-webpack-plugin-5.0.0.tgz) = 7f9e8e99fbc861f6692f9f932a0dcb67e121ce86abe46030cad52db1db62f96e96851dd4a500b7eaf9971ec2b1c7d89b8fb74a5c220a79aeb0d14f8b7554819a
SHA512 (supports-color-5.5.0.tgz) = 423563c1d5c8b78d3c308880a825f8a142ac814d84a801b3b363e9926e1a4186e39be644584716e127c5353af8b8c35999ad1ecb87f99602eb901d1a5f440ca3
@@ -1141,7 +1168,9 @@ SHA512 (tough-cookie-4.1.4.tgz) = 2e8a39514bcb0fd49c67a8e1f1b797d53eac3b5c36fcca
SHA512 (tr46-4.1.1.tgz) = da5bffeba4fb7b9c8dca10000b835a29ee6755abf3b86250555b5160bc90d8e23cb6c27ad4f30b95e95e85bd308b61f1ebe853fce254599730f0c8e54919f1bf
SHA512 (tree-dump-1.0.1.tgz) = 58291c44154f4a51c7ab575cfe9c7d88e7ea925bf309b751c2f94d7f1199b2b1ea7fa699b6d7cfaddec3253b7aa11d7477051fa451507954e43db0486715ff60
SHA512 (ts-api-utils-1.3.0.tgz) = 510308a3ba5bf1646898a475ffe30554b4eba08bc356d317dcae8e522afcca72f2cc1f097ab8a89edd9b4c0b6634f6b57a402037b60f0f27fa57eca0add53e79
-SHA512 (ts-jest-29.1.2.tgz) = 6ebe862681ff5945f8a6eec56d95ee586286343b94edbf148fbee0fd2a7ba6e655e845f3b81ca5e89ac40af9b43335734939121d64e286c5edfb95d8111e5bfa
+SHA512 (ts-jest-29.2.2.tgz) = b125bb3a8a1a293df80009e03fa935552ebaf5ad0774bc644199e50bb4fbeac724182a245c59ef277c919506464530285792b5f477d2802892c1639221f71896
+SHA512 (ts-loader-9.5.1.tgz) = acd1f7b0af64199707f5d6330bb09ec109b836dc494e34845512760f205947b7fcff072d6be895e3850f097739fa7cc3ce2bcab65cd5e9cf4fe1efa81610cb62
+SHA512 (ts-node-10.9.2.tgz) = 7f4145a4875c1e09fccdc3d26dfd5d45ebf0b74e3b60c9da889337bb6c3645ec2b07e7e86ffcde3d972b3b24282cc30eeda04875d2dc40810ae5d62390b9c6ad
SHA512 (tsconfig-paths-3.15.0.tgz) = d80736460cc37bf727e3c1af39edccfa8f36a4415ec03dd43dbca85071dd29ab07c092a376ce1f2d759ffd4c799004c128ddb4a1a146bbe8db125a75a68b349a
SHA512 (tsconfig-paths-4.2.0.tgz) = 368678ae888decb9db2a7f50a84d5a99cf4325fcef657c45e310dabdc396b7504f91dc7e9bed2026e3ccf92d2f09eef34c931850fd11f293b65ccafe63ca0b22
SHA512 (tsconfig-paths-webpack-plugin-4.1.0.tgz) = c561484a3be23f2766b6681e500b97a783757e4cbe542b5f84e90350522fe5e6bba78c2e4e8988e104eb5ef1415f64b88d9b26c934ab4ad425f84fb8c3e473c4
@@ -1180,6 +1209,7 @@ SHA512 (url-parse-1.5.10.tgz) = 5b2a5c7e24617de50ff6fbc5d23eabc3427786b5abc3a899
SHA512 (util-deprecate-1.0.2.tgz) = 10f0f9ab5b97c85c49a42acb9c27359c79eade039ae83641a1c008888d93692080ed5089d5424331a802cc891736c5187c3d5d68afff2d3110f318886eb1ed73
SHA512 (utils-merge-1.0.1.tgz) = a4c653bc8913d5df93146bc33aaa1d39c971d105a49208ba4dda1af200bc7df18002acfda733d36560326dbb071e8103ff3b4cb64bff5686136324a1527f3584
SHA512 (uuid-8.3.2.tgz) = f8d62cd9078c5b2f865853849bdc679fa1c20e9d25ed0043ee697cccb52627ef77439345d0da1c12b9f09139175453625f7fdfa42e9a7d2f0385bfe0cfb47b7a
+SHA512 (v8-compile-cache-lib-3.0.1.tgz) = c1aed88f25067cd667808fefb4ad141c037e9600c2c413c2ca55571a9d33bb9f45cf96a21ad3576aadc3848a2fd3adcca2b07e55fb9f2e1dc9945d8a7532b7c6
SHA512 (v8-to-istanbul-9.2.0.tgz) = fc41ffb03831536786c5a8ca7702c20e6438156abe9298b7b829811a9c35c49b67031123943f23f0f122196a4220c22cddc88d0201f47774d3262524633c998c
SHA512 (vary-1.1.2.tgz) = 04d19b58b7ddd1e50f69b8645d4566d23f2ebaf444c93879a2f45afddca8c3f06a01b649c82fb97d4f88cd03b39802b362a6110084a8461750af778867f3d7aa
SHA512 (vscode-languageserver-textdocument-1.0.11.tgz) = 5fef13dc6a22c1356525b89cc7fb08005fb2b8902acfc56fc09ca831587010ca04284fdf9039aba9480333204409c3360367eb5592148f91c8fc4ad15c27ce78
@@ -1228,5 +1258,6 @@ SHA512 (yallist-4.0.0.tgz) = df074689d672ab93c1d3ce172c44b94e9392440df08d7025216
SHA512 (yaml-2.4.2.tgz) = 07756a0d9f89020d67669684996b535d49419dea06c7a08f33d6f44c434ae9aa12bb9b7bddd22db9dc1d8268bab4794865921de1d67db2470043651b73201e54
SHA512 (yargs-17.7.2.tgz) = edd4b3cd143ef822a7348fe4aca9d8455ec928a3d45cc121eb5b286872a0f66ad6121cc55a1167c4fc4697eebd703d4ebbadc2d773543c29e621caefa82b8ceb
SHA512 (yargs-parser-21.1.1.tgz) = b55a6c256ec376379c0221696c80757b7ab1210b04e8da0f739fde4ddadb6c80b88742d5b16867a1ade0fa6d87725048ba31f3b31678549540f8652e736fcb07
+SHA512 (yn-3.1.1.tgz) = 531e328065acbb673b8ac1567bc62ed5896e266a95871a8ad9c2d735003901c0b741f6c636933b7eed18f1bff3d7aa572e7171658bd685dddf84163d0cb982e9
SHA512 (yocto-queue-0.1.0.tgz) = ad592cbec9cd09d27fa2119ceb180fc3237c7a1782c6c88b33c9b1b84fedfe6395a897b03ee3b59a22e94c74224604ca08b7b12f831e00555a82db3b1e6359d9
SHA512 (yocto-queue-1.0.0.tgz) = f5b9d273f1c45b6b91cbaef073e4fc5306ae2ee3c9567dbc8dbf86b49635ea288a5b2be6609457553e146a6b0010641f3e8860af6ab84ead2c41b425c537e2d6
diff --git a/packages/a/agama-web-ui/package-lock.json b/packages/a/agama-web-ui/package-lock.json
index e8e79ec4ce5..deed477f226 100644
--- a/packages/a/agama-web-ui/package-lock.json
+++ b/packages/a/agama-web-ui/package-lock.json
@@ -12,6 +12,8 @@
"@patternfly/patternfly": "^5.1.0",
"@patternfly/react-core": "^5.1.1",
"@patternfly/react-table": "^5.1.1",
+ "@tanstack/react-query": "^5.49.2",
+ "axios": "^1.7.3",
"fast-sort": "^3.4.0",
"ipaddr.js": "^2.1.0",
"react": "^18.2.0",
@@ -32,10 +34,11 @@
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.10",
"@svgr/plugin-jsx": "^8.1.0",
"@svgr/webpack": "^8.1.0",
- "@testing-library/jest-dom": "^6.1.4",
+ "@testing-library/jest-dom": "^6.2.0",
"@testing-library/react": "^15.0.7",
"@testing-library/user-event": "^14.5.1",
- "@types/jest": "^29.5.8",
+ "@types/jest": "^29.5.12",
+ "@types/webpack-env": "^1.18.5",
"@typescript-eslint/eslint-plugin": "^7.8.0",
"@typescript-eslint/parser": "^7.8.0",
"ajv": "^8.12.0",
@@ -47,6 +50,7 @@
"css-loader": "^7.1.1",
"css-minimizer-webpack-plugin": "^6.0.0",
"eslint": "^8.53.0",
+ "eslint-config-prettier": "^9.1.0",
"eslint-config-standard": "^17.1.0",
"eslint-config-standard-jsx": "^11.0.0",
"eslint-config-standard-react": "^13.0.0",
@@ -70,17 +74,21 @@
"jsdoc": "^4.0.2",
"mini-css-extract-plugin": "^2.7.6",
"po2json": "^1.0.0-alpha",
+ "prettier": "^3.3.2",
"qunit": "^2.20.0",
"react-refresh": "^0.14.0",
+ "react-refresh-typescript": "^2.0.9",
"sass": "^1.69.5",
"sass-loader": "^14.2.1",
"string-replace-loader": "^3.0.0",
"stylelint": "^16.5.0",
"stylelint-config-standard": "^36.0.0",
"stylelint-config-standard-scss": "^13.1.0",
+ "stylelint-prettier": "^5.0.0",
"stylelint-webpack-plugin": "^5.0.0",
"terser-webpack-plugin": "^5.3.9",
- "ts-jest": "^29.0.3",
+ "ts-jest": "^29.2.2",
+ "ts-loader": "^9.5.1",
"tsconfig-paths-webpack-plugin": "^4.0.0",
"typedoc": "^0.25.4",
"typedoc-plugin-external-module-map": "^2.0.1",
@@ -2453,6 +2461,34 @@
"node": ">=18"
}
},
+ "node_modules/@cspotcode/source-map-support": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
+ "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "@jridgewell/trace-mapping": "0.3.9"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
+ "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.0.3",
+ "@jridgewell/sourcemap-codec": "^1.4.10"
+ }
+ },
"node_modules/@csstools/css-parser-algorithms": {
"version": "2.6.3",
"resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.6.3.tgz",
@@ -4210,6 +4246,30 @@
"url": "https://github.com/sponsors/gregberge"
}
},
+ "node_modules/@tanstack/query-core": {
+ "version": "5.49.1",
+ "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.49.1.tgz",
+ "integrity": "sha512-JnC9ndmD1KKS01Rt/ovRUB1tmwO7zkyXAyIxN9mznuJrcNtOrkmOnQqdJF2ib9oHzc2VxHomnEG7xyfo54Npkw==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/tannerlinsley"
+ }
+ },
+ "node_modules/@tanstack/react-query": {
+ "version": "5.49.2",
+ "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.49.2.tgz",
+ "integrity": "sha512-6rfwXDK9BvmHISbNFuGd+wY3P44lyW7lWiA9vIFGT/T0P9aHD1VkjTvcM4SDAIbAQ9ygEZZoLt7dlU1o3NjMVA==",
+ "dependencies": {
+ "@tanstack/query-core": "5.49.1"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/tannerlinsley"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0"
+ }
+ },
"node_modules/@testing-library/dom": {
"version": "10.1.0",
"resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.1.0.tgz",
@@ -4472,6 +4532,42 @@
"node": ">=10.13.0"
}
},
+ "node_modules/@tsconfig/node10": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz",
+ "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "peer": true
+ },
+ "node_modules/@tsconfig/node12": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz",
+ "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "peer": true
+ },
+ "node_modules/@tsconfig/node14": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz",
+ "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "peer": true
+ },
+ "node_modules/@tsconfig/node16": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz",
+ "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "peer": true
+ },
"node_modules/@types/aria-query": {
"version": "5.0.4",
"resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz",
@@ -4666,6 +4762,7 @@
"resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz",
"integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"expect": "^29.0.0",
"pretty-format": "^29.0.0"
@@ -4872,6 +4969,13 @@
"integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==",
"dev": true
},
+ "node_modules/@types/webpack-env": {
+ "version": "1.18.5",
+ "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.18.5.tgz",
+ "integrity": "sha512-wz7kjjRRj8/Lty4B+Kr0LN6Ypc/3SymeCCGSbaXp2leH0ZVg/PriNiOwNj4bD4uphI7A8NXS4b6Gl373sfO5mA==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/@types/ws": {
"version": "8.5.10",
"resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz",
@@ -5455,6 +5559,21 @@
"acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
}
},
+ "node_modules/acorn-walk": {
+ "version": "8.3.3",
+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz",
+ "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "acorn": "^8.11.0"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
"node_modules/agent-base": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
@@ -5579,6 +5698,15 @@
"node": ">= 8"
}
},
+ "node_modules/arg": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
+ "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "peer": true
+ },
"node_modules/argparse": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
@@ -5792,11 +5920,17 @@
"node": ">=8"
}
},
+ "node_modules/async": {
+ "version": "3.2.5",
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz",
+ "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
- "dev": true
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
},
"node_modules/attr-accept": {
"version": "2.2.2",
@@ -5821,6 +5955,17 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/axios": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.3.tgz",
+ "integrity": "sha512-Ar7ND9pU99eJ9GpoGQKhKf58GpUOgnzuaB7ueNQ5BMi0p+LZ5oaEnfF999fAArcTIBwXTCHAmGcHOZJaWPq9Nw==",
+ "license": "MIT",
+ "dependencies": {
+ "follow-redirects": "^1.15.6",
+ "form-data": "^4.0.0",
+ "proxy-from-env": "^1.1.0"
+ }
+ },
"node_modules/babel-jest": {
"version": "29.7.0",
"resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz",
@@ -6676,7 +6821,6 @@
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "dev": true,
"dependencies": {
"delayed-stream": "~1.0.0"
},
@@ -7145,6 +7289,15 @@
"node": ">=8"
}
},
+ "node_modules/create-require": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
+ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "peer": true
+ },
"node_modules/cross-spawn": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
@@ -7944,7 +8097,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
- "dev": true,
"engines": {
"node": ">=0.4.0"
}
@@ -7992,6 +8144,18 @@
"integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==",
"dev": true
},
+ "node_modules/diff": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
+ "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "optional": true,
+ "peer": true,
+ "engines": {
+ "node": ">=0.3.1"
+ }
+ },
"node_modules/diff-sequences": {
"version": "29.6.3",
"resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz",
@@ -8148,6 +8312,22 @@
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
"dev": true
},
+ "node_modules/ejs": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz",
+ "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "jake": "^10.8.5"
+ },
+ "bin": {
+ "ejs": "bin/cli.js"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/electron-to-chromium": {
"version": "1.4.757",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.757.tgz",
@@ -8554,6 +8734,19 @@
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"dev": true
},
+ "node_modules/eslint-config-prettier": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz",
+ "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "eslint-config-prettier": "bin/cli.js"
+ },
+ "peerDependencies": {
+ "eslint": ">=7.0.0"
+ }
+ },
"node_modules/eslint-config-standard": {
"version": "17.1.0",
"resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz",
@@ -9687,6 +9880,13 @@
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
"dev": true
},
+ "node_modules/fast-diff": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz",
+ "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==",
+ "dev": true,
+ "license": "Apache-2.0"
+ },
"node_modules/fast-equals": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.0.1.tgz",
@@ -9803,6 +10003,29 @@
"node": ">= 12"
}
},
+ "node_modules/filelist": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz",
+ "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "minimatch": "^5.0.1"
+ }
+ },
+ "node_modules/filelist/node_modules/minimatch": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+ "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/fill-range": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
@@ -9929,7 +10152,6 @@
"version": "1.15.6",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz",
"integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==",
- "dev": true,
"funding": [
{
"type": "individual",
@@ -9986,7 +10208,6 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
"integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
- "dev": true,
"dependencies": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
@@ -11671,6 +11892,125 @@
"@pkgjs/parseargs": "^0.11.0"
}
},
+ "node_modules/jake": {
+ "version": "10.9.1",
+ "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.1.tgz",
+ "integrity": "sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "async": "^3.2.3",
+ "chalk": "^4.0.2",
+ "filelist": "^1.0.4",
+ "minimatch": "^3.1.2"
+ },
+ "bin": {
+ "jake": "bin/cli.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/jake/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jake/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/jake/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/jake/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jake/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/jake/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jake/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/jake/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/jed": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/jed/-/jed-1.1.1.tgz",
@@ -11682,6 +12022,7 @@
"resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz",
"integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/core": "^29.7.0",
"@jest/types": "^29.6.3",
@@ -14183,7 +14524,6 @@
"version": "1.52.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
- "dev": true,
"engines": {
"node": ">= 0.6"
}
@@ -14192,7 +14532,6 @@
"version": "2.1.35",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "dev": true,
"dependencies": {
"mime-db": "1.52.0"
},
@@ -15617,6 +15956,35 @@
"node": ">= 0.8.0"
}
},
+ "node_modules/prettier": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.2.tgz",
+ "integrity": "sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "prettier": "bin/prettier.cjs"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/prettier/prettier?sponsor=1"
+ }
+ },
+ "node_modules/prettier-linter-helpers": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz",
+ "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fast-diff": "^1.1.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
"node_modules/pretty-format": {
"version": "27.5.1",
"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz",
@@ -15699,6 +16067,12 @@
"node": ">= 0.10"
}
},
+ "node_modules/proxy-from-env": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
+ "license": "MIT"
+ },
"node_modules/psl": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
@@ -15914,6 +16288,17 @@
"node": ">=0.10.0"
}
},
+ "node_modules/react-refresh-typescript": {
+ "version": "2.0.9",
+ "resolved": "https://registry.npmjs.org/react-refresh-typescript/-/react-refresh-typescript-2.0.9.tgz",
+ "integrity": "sha512-chAnOO4vpxm/3WkgOVmti+eN8yUtkJzeGkOigV6UA9eDFz12W34e/SsYe2H5+RwYJ3+sfSZkVbiXcG1chEBxlg==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "react-refresh": "0.10.x || 0.11.x || 0.12.x || 0.13.x || 0.14.x",
+ "typescript": "^4.8 || ^5.0"
+ }
+ },
"node_modules/react-router": {
"version": "6.23.0",
"resolved": "https://registry.npmjs.org/react-router/-/react-router-6.23.0.tgz",
@@ -17407,6 +17792,23 @@
}
}
},
+ "node_modules/stylelint-prettier": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/stylelint-prettier/-/stylelint-prettier-5.0.0.tgz",
+ "integrity": "sha512-RHfSlRJIsaVg5Br94gZVdWlz/rBTyQzZflNE6dXvSxt/GthWMY3gEHsWZEBaVGg7GM+XrtVSp4RznFlB7i0oyw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "prettier-linter-helpers": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=18.12.0"
+ },
+ "peerDependencies": {
+ "prettier": ">=3.0.0",
+ "stylelint": ">=16.0.0"
+ }
+ },
"node_modules/stylelint-scss": {
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-6.3.0.tgz",
@@ -17973,12 +18375,14 @@
}
},
"node_modules/ts-jest": {
- "version": "29.1.2",
- "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.2.tgz",
- "integrity": "sha512-br6GJoH/WUX4pu7FbZXuWGKGNDuU7b8Uj77g/Sp7puZV6EXzuByl6JrECvm0MzVzSTkSHWTihsXt+5XYER5b+g==",
+ "version": "29.2.2",
+ "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.2.tgz",
+ "integrity": "sha512-sSW7OooaKT34AAngP6k1VS669a0HdLxkQZnlC7T76sckGCokXFnvJ3yRlQZGRTAoV5K19HfSgCiSwWOSIfcYlg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"bs-logger": "0.x",
+ "ejs": "^3.0.0",
"fast-json-stable-stringify": "2.x",
"jest-util": "^29.0.0",
"json5": "^2.2.3",
@@ -17991,10 +18395,11 @@
"ts-jest": "cli.js"
},
"engines": {
- "node": "^16.10.0 || ^18.0.0 || >=20.0.0"
+ "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0"
},
"peerDependencies": {
"@babel/core": ">=7.0.0-beta.0 <8",
+ "@jest/transform": "^29.0.0",
"@jest/types": "^29.0.0",
"babel-jest": "^29.0.0",
"jest": "^29.0.0",
@@ -18004,6 +18409,9 @@
"@babel/core": {
"optional": true
},
+ "@jest/transform": {
+ "optional": true
+ },
"@jest/types": {
"optional": true
},
@@ -18057,6 +18465,162 @@
"node": ">=12"
}
},
+ "node_modules/ts-loader": {
+ "version": "9.5.1",
+ "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz",
+ "integrity": "sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "chalk": "^4.1.0",
+ "enhanced-resolve": "^5.0.0",
+ "micromatch": "^4.0.0",
+ "semver": "^7.3.4",
+ "source-map": "^0.7.4"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "typescript": "*",
+ "webpack": "^5.0.0"
+ }
+ },
+ "node_modules/ts-loader/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/ts-loader/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/ts-loader/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/ts-loader/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/ts-loader/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ts-loader/node_modules/semver": {
+ "version": "7.6.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
+ "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/ts-loader/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ts-node": {
+ "version": "10.9.2",
+ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz",
+ "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "@cspotcode/source-map-support": "^0.8.0",
+ "@tsconfig/node10": "^1.0.7",
+ "@tsconfig/node12": "^1.0.7",
+ "@tsconfig/node14": "^1.0.0",
+ "@tsconfig/node16": "^1.0.2",
+ "acorn": "^8.4.1",
+ "acorn-walk": "^8.1.1",
+ "arg": "^4.1.0",
+ "create-require": "^1.1.0",
+ "diff": "^4.0.1",
+ "make-error": "^1.1.1",
+ "v8-compile-cache-lib": "^3.0.1",
+ "yn": "3.1.1"
+ },
+ "bin": {
+ "ts-node": "dist/bin.js",
+ "ts-node-cwd": "dist/bin-cwd.js",
+ "ts-node-esm": "dist/bin-esm.js",
+ "ts-node-script": "dist/bin-script.js",
+ "ts-node-transpile-only": "dist/bin-transpile.js",
+ "ts-script": "dist/bin-script-deprecated.js"
+ },
+ "peerDependencies": {
+ "@swc/core": ">=1.2.50",
+ "@swc/wasm": ">=1.2.50",
+ "@types/node": "*",
+ "typescript": ">=2.7"
+ },
+ "peerDependenciesMeta": {
+ "@swc/core": {
+ "optional": true
+ },
+ "@swc/wasm": {
+ "optional": true
+ }
+ }
+ },
"node_modules/tsconfig-paths": {
"version": "3.15.0",
"resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz",
@@ -18383,6 +18947,7 @@
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz",
"integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==",
"dev": true,
+ "license": "Apache-2.0",
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -18582,6 +19147,15 @@
"uuid": "dist/bin/uuid"
}
},
+ "node_modules/v8-compile-cache-lib": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
+ "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "peer": true
+ },
"node_modules/v8-to-istanbul": {
"version": "9.2.0",
"resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz",
@@ -19397,6 +19971,18 @@
"node": ">=12"
}
},
+ "node_modules/yn": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
+ "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "peer": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/yocto-queue": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
diff --git a/packages/a/agama/.files b/packages/a/agama/.files
index 20577b505eb..27ef6814d3b 100644
Binary files a/packages/a/agama/.files and b/packages/a/agama/.files differ
diff --git a/packages/a/agama/.rev b/packages/a/agama/.rev
index 15cab5e4837..fc09b25484a 100644
--- a/packages/a/agama/.rev
+++ b/packages/a/agama/.rev
@@ -28,4 +28,31 @@
Automatic submission by obs-autosubmit
1192640
+
+ 6aa46f0bf83fa8ab0d3f0de752b5c1ae
+ 0
+
+ anag+factory
+ - Use sd_notify for starting agama-web-service to notify systemd
+ when service is ready. It helps with race condition in agama-auto
+ (gh#openSUSE/agama#1539)
+- improve systemd dependencies of agama-web-service to ensure that
+ agama service runs
+
+- For CLI, use HTTP clients instead of D-Bus clients,
+ for Users and Localization (gh#openSUSE/agama#1438)
+ - service clients used by CLI:
+ - added UsersHTTPClient, LocalizationHTTPClient
+ - removed LocalizationClient
+ - BaseHTTPClient API reworked:
+ - return () or deserialized objects
+ - added PUT and PATCH
+ - web service:
+ - PUT /api/users/first: do report backend errors
+ - PATCH /api/users/root: report the (potential) backend errors
+ - tests:
+ - added tests using httpmock
+ - env_logger added to dev-dependencies
+ 1194877
+
diff --git a/packages/a/agama/agama.changes b/packages/a/agama/agama.changes
index 422153939df..cbabd66d855 100644
--- a/packages/a/agama/agama.changes
+++ b/packages/a/agama/agama.changes
@@ -1,3 +1,30 @@
+-------------------------------------------------------------------
+Thu Aug 15 08:33:02 UTC 2024 - Josef Reidinger
+
+- Use sd_notify for starting agama-web-service to notify systemd
+ when service is ready. It helps with race condition in agama-auto
+ (gh#openSUSE/agama#1539)
+- improve systemd dependencies of agama-web-service to ensure that
+ agama service runs
+
+-------------------------------------------------------------------
+Fri Aug 9 08:50:31 UTC 2024 - Martin Vidner
+
+- For CLI, use HTTP clients instead of D-Bus clients,
+ for Users and Localization (gh#openSUSE/agama#1438)
+ - service clients used by CLI:
+ - added UsersHTTPClient, LocalizationHTTPClient
+ - removed LocalizationClient
+ - BaseHTTPClient API reworked:
+ - return () or deserialized objects
+ - added PUT and PATCH
+ - web service:
+ - PUT /api/users/first: do report backend errors
+ - PATCH /api/users/root: report the (potential) backend errors
+ - tests:
+ - added tests using httpmock
+ - env_logger added to dev-dependencies
+
-------------------------------------------------------------------
Mon Jul 22 15:27:44 UTC 2024 - Josef Reidinger
diff --git a/packages/a/agama/agama.obscpio b/packages/a/agama/agama.obscpio
index 0500304aa58..3c3dc3d2836 120000
--- a/packages/a/agama/agama.obscpio
+++ b/packages/a/agama/agama.obscpio
@@ -1 +1 @@
-/ipfs/bafybeiewq3hfco5wd4f25xxog2pmqd6p5whuy7w7i6dhp2ogjkyxzabjki
\ No newline at end of file
+/ipfs/bafybeigmrvntazax6kiewxmer5ajiprsikvxoonnmx6hhqskr375pn32ea
\ No newline at end of file
diff --git a/packages/a/agama/agama.obsinfo b/packages/a/agama/agama.obsinfo
index dfa57408c1c..a39bdda4575 100644
--- a/packages/a/agama/agama.obsinfo
+++ b/packages/a/agama/agama.obsinfo
@@ -1,4 +1,4 @@
name: agama
-version: 9+414
-mtime: 1722523669
-commit: 83ee1d3ffd6e1764ba530c3c72148b24daaa8212
+version: 9+567
+mtime: 1724051003
+commit: fc0f3a27c4e1d3e11421658f2178db4a841b3961
diff --git a/packages/a/agama/vendor.tar.zst b/packages/a/agama/vendor.tar.zst
index 81ef1de451c..35fc20db1f1 120000
--- a/packages/a/agama/vendor.tar.zst
+++ b/packages/a/agama/vendor.tar.zst
@@ -1 +1 @@
-/ipfs/bafybeifp3hucem5jwnapaqfknpehn7n455ujnbq6gnothevxshhx3s2bl4
\ No newline at end of file
+/ipfs/bafybeihelzlgfcr2iv4vz6u64qejpwiif5iidmduvo5u47xgzxa5luy6ia
\ No newline at end of file
diff --git a/packages/b/b3sum/.files b/packages/b/b3sum/.files
index 0148598e46f..41d60caff9c 100644
Binary files a/packages/b/b3sum/.files and b/packages/b/b3sum/.files differ
diff --git a/packages/b/b3sum/.rev b/packages/b/b3sum/.rev
index 388e3f416b4..87d66041b50 100644
--- a/packages/b/b3sum/.rev
+++ b/packages/b/b3sum/.rev
@@ -23,4 +23,12 @@
1188516
+
+ aa9ca7465062c078a2c29c60fa52f5e7
+ 1.5.4
+
+ anag+factory
+
+ 1194937
+
diff --git a/packages/b/b3sum/b3sum-1.5.3.obscpio b/packages/b/b3sum/b3sum-1.5.3.obscpio
deleted file mode 120000
index 023bc4cc15d..00000000000
--- a/packages/b/b3sum/b3sum-1.5.3.obscpio
+++ /dev/null
@@ -1 +0,0 @@
-/ipfs/bafybeiexmrs5ul3kokny7oj67vdzj4hdbk4s2ysflddndkkaeezkjdal2q
\ No newline at end of file
diff --git a/packages/b/b3sum/b3sum-1.5.4.obscpio b/packages/b/b3sum/b3sum-1.5.4.obscpio
new file mode 120000
index 00000000000..aae34b9a141
--- /dev/null
+++ b/packages/b/b3sum/b3sum-1.5.4.obscpio
@@ -0,0 +1 @@
+/ipfs/bafybeigoyjyda5ukhwpt7e4jgsj5fmkbezub536p2c5nrhv7fw7jsej66y
\ No newline at end of file
diff --git a/packages/b/b3sum/b3sum.changes b/packages/b/b3sum/b3sum.changes
index 3de87931618..2cdf07c24fd 100644
--- a/packages/b/b3sum/b3sum.changes
+++ b/packages/b/b3sum/b3sum.changes
@@ -1,3 +1,13 @@
+-------------------------------------------------------------------
+Mon Aug 19 19:13:34 UTC 2024 - Joshua Smith
+
+- Update to version 1.5.4:
+ * Initial implementation of SIMD acceleration for the XOF (i.e.
+ blake3::Hasher::finalize_xof). This brings long output
+ performance into line with long input performance. Currently
+ AVX-512-only and Unix-only.
+ * The "zeroize" feature no longer depends on proc-macros and syn.
+
-------------------------------------------------------------------
Thu Jul 18 01:35:13 UTC 2024 - Joshua Smith
diff --git a/packages/b/b3sum/b3sum.obsinfo b/packages/b/b3sum/b3sum.obsinfo
index f856cf3a20e..e77c2c7809b 100644
--- a/packages/b/b3sum/b3sum.obsinfo
+++ b/packages/b/b3sum/b3sum.obsinfo
@@ -1,4 +1,4 @@
name: b3sum
-version: 1.5.3
-mtime: 1721019706
-commit: acaeabeff3e051d5396e91732b1fd2f0b2641402
+version: 1.5.4
+mtime: 1724089289
+commit: 95e42b84fc4709974c7b23c7ae885989ab36c31e
diff --git a/packages/b/b3sum/b3sum.spec b/packages/b/b3sum/b3sum.spec
index 3ee03f228c5..dcf1b8c3aac 100644
--- a/packages/b/b3sum/b3sum.spec
+++ b/packages/b/b3sum/b3sum.spec
@@ -17,7 +17,7 @@
Name: b3sum
-Version: 1.5.3
+Version: 1.5.4
Release: 0
Summary: A multithreaded rust implementation of BLAKE3
License: Apache-2.0 OR CC0-1.0
diff --git a/packages/b/b3sum/vendor.tar.zst b/packages/b/b3sum/vendor.tar.zst
index a5b0c6c716c..0cbfeb92e28 120000
--- a/packages/b/b3sum/vendor.tar.zst
+++ b/packages/b/b3sum/vendor.tar.zst
@@ -1 +1 @@
-/ipfs/bafybeifdpg76n4t6hbvhrj5ifp63r5nxkfjcf6ovqgnrntmbvtxzwhdrcu
\ No newline at end of file
+/ipfs/bafybeid2rcadyp3ifiwifzhhnk7ip3enmhtmsivxojxpx25p6ajwlaneki
\ No newline at end of file
diff --git a/packages/c/cinnamon-control-center/.files b/packages/c/cinnamon-control-center/.files
index 2f48e0677c5..dd8668d1e1e 100644
Binary files a/packages/c/cinnamon-control-center/.files and b/packages/c/cinnamon-control-center/.files differ
diff --git a/packages/c/cinnamon-control-center/.rev b/packages/c/cinnamon-control-center/.rev
index aa51d86b1ff..8ad80d86d39 100644
--- a/packages/c/cinnamon-control-center/.rev
+++ b/packages/c/cinnamon-control-center/.rev
@@ -324,4 +324,12 @@
from GNOME 46. (forwarded request 1174880 from dimstar)
1175707
+
+ 7a7fa4ea238cbfb4812a0594d9445188
+ 6.2.0
+
+ anag+factory
+
+ 1195065
+
diff --git a/packages/c/cinnamon-control-center/cinnamon-control-center-6.0.0.tar.gz b/packages/c/cinnamon-control-center/cinnamon-control-center-6.0.0.tar.gz
deleted file mode 120000
index 7e0999da954..00000000000
--- a/packages/c/cinnamon-control-center/cinnamon-control-center-6.0.0.tar.gz
+++ /dev/null
@@ -1 +0,0 @@
-/ipfs/bafybeidk3cnz4bxkga3jgg6cgjgpk2qfdwjjugq2y5l4qdvd3otw63mdfq
\ No newline at end of file
diff --git a/packages/c/cinnamon-control-center/cinnamon-control-center-6.2.0.tar.gz b/packages/c/cinnamon-control-center/cinnamon-control-center-6.2.0.tar.gz
new file mode 120000
index 00000000000..73a0a1f09c1
--- /dev/null
+++ b/packages/c/cinnamon-control-center/cinnamon-control-center-6.2.0.tar.gz
@@ -0,0 +1 @@
+/ipfs/bafybeifrca6thqww2mgtypiddixc5cb47vdyg53rgx75wwq6cf6i6kgf5u
\ No newline at end of file
diff --git a/packages/c/cinnamon-control-center/cinnamon-control-center.changes b/packages/c/cinnamon-control-center/cinnamon-control-center.changes
index 5a86a42e1ee..b7a6a02bbad 100644
--- a/packages/c/cinnamon-control-center/cinnamon-control-center.changes
+++ b/packages/c/cinnamon-control-center/cinnamon-control-center.changes
@@ -1,3 +1,18 @@
+-------------------------------------------------------------------
+Mon Aug 19 14:46:00 UTC 2024 - sb56637
+
+- update to 6.2.0:
+ * Fix optional wayland handling in cc-display-panel
+ * cc-display-panel.c: Use correct type for dbus label colors.
+ * Remove Online Accounts panel
+ * l10n: Update POT
+ * Remove gnome-online-accounts dependency
+ * Update cc-wacom-panel.c: Fix name
+ * Apply edits from Codespell
+ * network: better default settings for cellular connections
+ * network: fix crash when adding cellular connection
+ * l10n: Update files
+
-------------------------------------------------------------------
Fri May 17 14:25:16 UTC 2024 - Dominique Leuenberger
diff --git a/packages/c/cinnamon-control-center/cinnamon-control-center.spec b/packages/c/cinnamon-control-center/cinnamon-control-center.spec
index 060b6c8af26..b9f56eba16c 100644
--- a/packages/c/cinnamon-control-center/cinnamon-control-center.spec
+++ b/packages/c/cinnamon-control-center/cinnamon-control-center.spec
@@ -19,7 +19,7 @@
%define soname libcinnamon-control-center
%define sover 1
Name: cinnamon-control-center
-Version: 6.0.0
+Version: 6.2.0
Release: 0
Summary: Utilities to configure the Cinnamon desktop
License: GPL-2.0-only AND GPL-3.0-or-later AND MIT
diff --git a/packages/c/cinnamon-desktop/.files b/packages/c/cinnamon-desktop/.files
index 9bb576b7677..180da1bfd89 100644
Binary files a/packages/c/cinnamon-desktop/.files and b/packages/c/cinnamon-desktop/.files differ
diff --git a/packages/c/cinnamon-desktop/.rev b/packages/c/cinnamon-desktop/.rev
index e69f50817e2..3723bd74445 100644
--- a/packages/c/cinnamon-desktop/.rev
+++ b/packages/c/cinnamon-desktop/.rev
@@ -278,4 +278,12 @@
1155027
+
+ 88a7e937ae7701fb373927dcc3c8e616
+ 6.2.0
+
+ anag+factory
+
+ 1194667
+
diff --git a/packages/c/cinnamon-desktop/cinnamon-desktop-6.0.0.tar.gz b/packages/c/cinnamon-desktop/cinnamon-desktop-6.0.0.tar.gz
deleted file mode 120000
index f7c95b818fe..00000000000
--- a/packages/c/cinnamon-desktop/cinnamon-desktop-6.0.0.tar.gz
+++ /dev/null
@@ -1 +0,0 @@
-/ipfs/bafybeihcsbxeoosiy7nkjs4oq3d3wqxwmvgnm4frearrvnv6bshhz4b7ne
\ No newline at end of file
diff --git a/packages/c/cinnamon-desktop/cinnamon-desktop-6.2.0.tar.gz b/packages/c/cinnamon-desktop/cinnamon-desktop-6.2.0.tar.gz
new file mode 120000
index 00000000000..4caec0322f9
--- /dev/null
+++ b/packages/c/cinnamon-desktop/cinnamon-desktop-6.2.0.tar.gz
@@ -0,0 +1 @@
+/ipfs/bafybeidgmgbnxf77nqvkzkdshswryibu4775jzeuey4xxfpeg5zo25z55m
\ No newline at end of file
diff --git a/packages/c/cinnamon-desktop/cinnamon-desktop.changes b/packages/c/cinnamon-desktop/cinnamon-desktop.changes
index 3bed65f8902..8113f5a0767 100644
--- a/packages/c/cinnamon-desktop/cinnamon-desktop.changes
+++ b/packages/c/cinnamon-desktop/cinnamon-desktop.changes
@@ -1,3 +1,13 @@
+-------------------------------------------------------------------
+Sun Aug 11 05:25:29 UTC 2024 - sb56637
+
+- update to 6.2.0:
+ * Add a makepot script.
+ * gnome-wall-clock.c: Update default date-time formats to adapt to GDateTime change.
+ * l10n: Update msgids/msgstr to reflect changes in the previous commit
+ * Update the default date format
+ * Revert "Add a makepot script."
+
-------------------------------------------------------------------
Mon Feb 26 10:47:07 UTC 2024 - Dominique Leuenberger
diff --git a/packages/c/cinnamon-desktop/cinnamon-desktop.spec b/packages/c/cinnamon-desktop/cinnamon-desktop.spec
index 2da66ff3ef6..07ced9db9c6 100644
--- a/packages/c/cinnamon-desktop/cinnamon-desktop.spec
+++ b/packages/c/cinnamon-desktop/cinnamon-desktop.spec
@@ -23,7 +23,7 @@
%define typelib typelib-1_0-CinnamonDesktop-3_0
%define typelib_cvc typelib-1_0-Cvc-1_0
Name: cinnamon-desktop
-Version: 6.0.0
+Version: 6.2.0
Release: 0
Summary: Libcinnamon-desktop API
License: GPL-2.0-or-later AND MIT
diff --git a/packages/c/cinnamon-menus/.files b/packages/c/cinnamon-menus/.files
index d7a383fe801..30d27ad4c94 100644
Binary files a/packages/c/cinnamon-menus/.files and b/packages/c/cinnamon-menus/.files differ
diff --git a/packages/c/cinnamon-menus/.rev b/packages/c/cinnamon-menus/.rev
index fe82301708b..40a19781d4d 100644
--- a/packages/c/cinnamon-menus/.rev
+++ b/packages/c/cinnamon-menus/.rev
@@ -161,4 +161,12 @@
Automatic submission by obs-autosubmit
1130512
+
+ beb6179e193c6df86a6a26e5c89b2c1f
+ 6.2.0
+
+ anag+factory
+
+ 1195072
+
diff --git a/packages/c/cinnamon-menus/cinnamon-menus-6.0.0.tar.gz b/packages/c/cinnamon-menus/cinnamon-menus-6.0.0.tar.gz
deleted file mode 120000
index 3ae8bf4d592..00000000000
--- a/packages/c/cinnamon-menus/cinnamon-menus-6.0.0.tar.gz
+++ /dev/null
@@ -1 +0,0 @@
-/ipfs/bafkreigqv6zs6tqy7zft7ju32puxktd5yymv2m5d3homftrc46mmp5pskm
\ No newline at end of file
diff --git a/packages/c/cinnamon-menus/cinnamon-menus-6.2.0.tar.gz b/packages/c/cinnamon-menus/cinnamon-menus-6.2.0.tar.gz
new file mode 120000
index 00000000000..79f951f1724
--- /dev/null
+++ b/packages/c/cinnamon-menus/cinnamon-menus-6.2.0.tar.gz
@@ -0,0 +1 @@
+/ipfs/bafkreievc4dafrjjdw3pkay57qsf5p3bq4x7soda7mp4ddwego7mmogpcy
\ No newline at end of file
diff --git a/packages/c/cinnamon-menus/cinnamon-menus.changes b/packages/c/cinnamon-menus/cinnamon-menus.changes
index 6afd09b1a3c..83a4c99f445 100644
--- a/packages/c/cinnamon-menus/cinnamon-menus.changes
+++ b/packages/c/cinnamon-menus/cinnamon-menus.changes
@@ -1,3 +1,11 @@
+-------------------------------------------------------------------
+Tue Aug 13 06:13:28 UTC 2024 - Richard Rahl
+
+- update to 6.2.0:
+ * packaging: Forbid compilation if the symbols file is outdated
+- generate the documentation and create a new subpackage
+- adapt spec file to newer standards
+
-------------------------------------------------------------------
Sat Nov 25 19:16:19 UTC 2023 - Dirk Müller
diff --git a/packages/c/cinnamon-menus/cinnamon-menus.spec b/packages/c/cinnamon-menus/cinnamon-menus.spec
index 8c23a62afeb..20840cc57a5 100644
--- a/packages/c/cinnamon-menus/cinnamon-menus.spec
+++ b/packages/c/cinnamon-menus/cinnamon-menus.spec
@@ -1,7 +1,7 @@
#
# spec file for package cinnamon-menus
#
-# Copyright (c) 2023 SUSE LLC
+# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -16,28 +16,24 @@
#
-%define typelib typelib-1_0-CMenu-3_0
-%define soname libcinnamon-menu-3
-%define sover 0
+%define sover 0
Name: cinnamon-menus
-Version: 6.0.0
+Version: 6.2.0
Release: 0
Summary: A menu system for the Cinnamon Desktop
License: LGPL-2.1-or-later
-Group: System/Libraries
URL: https://github.com/linuxmint/cinnamon-menus
-Source: https://github.com/linuxmint/cinnamon-menus/archive/%{version}/%{name}-%{version}.tar.gz
+Source: %{url}/archive/%{version}/%{name}-%{version}.tar.gz
Source1: baselibs.conf
-BuildRequires: autoconf
-BuildRequires: autoconf-archive
BuildRequires: automake
BuildRequires: intltool
BuildRequires: libtool
BuildRequires: meson
BuildRequires: pkgconfig
-BuildRequires: python3-devel
BuildRequires: pkgconfig(glib-2.0)
BuildRequires: pkgconfig(gobject-introspection-1.0)
+BuildRequires: pkgconfig(gtk-doc)
+BuildRequires: pkgconfig(python3)
%description
cinnamon-menus is an implementation of the draft "Desktop Menu
@@ -46,27 +42,27 @@ the Cinnamon menu layout configuration files, .directory files and
assorted menu related utility programs, Python bindings, and a
simple menu editor.
-%package -n %{soname}-%{sover}
+%package -n libcinnamon-menu-3-%{sover}
Summary: A menu system for the Cinnamon desktop environment
Group: System/Libraries
Provides: %{name} = %{version}
Obsoletes: %{name} < %{version}
-%description -n %{soname}-%{sover}
+%description -n libcinnamon-menu-3-%{sover}
cinnamon-menus is an implementation of the draft "Desktop Menu
Specification" from freedesktop.org. This package also contains
the Cinnamon menu layout configuration files, .directory files and
assorted menu related utility programs, Python bindings, and a
simple menu editor.
-%package -n %{typelib}
+%package -n typelib-1_0-CMenu-3_0
Summary: Libcinnamon-menu API -- Introspection bindings
# typelib-1_0-CinnamonMenu-3_0 was last used in openSUSE Leap 42.2.
Group: System/Libraries
Provides: typelib-1_0-CinnamonMenu-3_0 = %{version}
Obsoletes: typelib-1_0-CinnamonMenu-3_0 < %{version}
-%description -n %{typelib}
+%description -n typelib-1_0-CMenu-3_0
cinnamon-menus is an implementation of the draft "Desktop Menu
Specification" from freedesktop.org. This package also contains
the Cinnamon menu layout configuration files, .directory files and
@@ -76,42 +72,53 @@ simple menu editor.
This package provides the GObject Introspection bindings for
cinnamon-menus.
-%package -n %{soname}-devel
+%package -n libcinnamon-menu-3-devel
Summary: Libraries and development headers for cinnamon-menus
Group: Development/Libraries/Other
-Requires: %{soname}-%{sover} = %{version}
-Requires: %{typelib} = %{version}
+Requires: libcinnamon-menu-3-%{sover} = %{version}
+Requires: typelib-1_0-CMenu-3_0 = %{version}
-%description -n %{soname}-devel
+%description -n libcinnamon-menu-3-devel
This package provides the necessary development libraries for
writing applications that use the Cinnamon menu system.
+%package doc
+Summary: Documentation for %{name}
+BuildArch: noarch
+
+%description doc
+This package ships the HTML documentation for %{name}
+
%prep
-%setup -q
+%autosetup
%build
-%meson
+%meson \
+ -Ddeprecated_warnings=true \
+ -Denable_debug=false \
+ -Denable_docs=true
%meson_build
%install
%meson_install
-find %{buildroot} -type f -name "*.la" -delete -print
-%post -n %{soname}-%{sover} -p /sbin/ldconfig
-%postun -n %{soname}-%{sover} -p /sbin/ldconfig
+%ldconfig_scriptlets -n libcinnamon-menu-3-%{sover}
-%files -n %{soname}-%{sover}
-%license COPYING*
+%files -n libcinnamon-menu-3-%{sover}
+%license COPYING COPYING.LIB
%doc AUTHORS README debian/changelog
-%{_libdir}/%{soname}.so.%{sover}*
+%{_libdir}/libcinnamon-menu-3.so.%{sover}*
-%files -n %{soname}-devel
+%files -n libcinnamon-menu-3-devel
%{_includedir}/%{name}-3.0/
-%{_libdir}/%{soname}.so
+%{_libdir}/libcinnamon-menu-3.so
%{_libdir}/pkgconfig/libcinnamon-menu-3.0.pc
%{_datadir}/gir-1.0/CMenu-3.0.gir
-%files -n %{typelib}
+%files -n typelib-1_0-CMenu-3_0
%{_libdir}/girepository-1.0/CMenu-3.0.typelib
+%files doc
+%{_datadir}/gtk-doc/html/cmenu
+
%changelog
diff --git a/packages/c/cinnamon-screensaver/.files b/packages/c/cinnamon-screensaver/.files
index 5d08c9e5286..f6c8c95712d 100644
Binary files a/packages/c/cinnamon-screensaver/.files and b/packages/c/cinnamon-screensaver/.files differ
diff --git a/packages/c/cinnamon-screensaver/.rev b/packages/c/cinnamon-screensaver/.rev
index f6e895a3e71..f8ffde572cb 100644
--- a/packages/c/cinnamon-screensaver/.rev
+++ b/packages/c/cinnamon-screensaver/.rev
@@ -261,4 +261,12 @@
* cinnamon-screensaver-main.py: Fix application theme provider.
1158904
+
+ 27b6ed8de9159e2b50a0855ea8e315da
+ 6.2.0
+
+ anag+factory
+
+ 1195086
+
diff --git a/packages/c/cinnamon-screensaver/cinnamon-screensaver-6.0.3.tar.gz b/packages/c/cinnamon-screensaver/cinnamon-screensaver-6.0.3.tar.gz
deleted file mode 120000
index 80706bd1646..00000000000
--- a/packages/c/cinnamon-screensaver/cinnamon-screensaver-6.0.3.tar.gz
+++ /dev/null
@@ -1 +0,0 @@
-/ipfs/bafkreiddobxijr25lrwfqnqkkavz7fgnyeyeuk4pleolv3htqc2tzgfwze
\ No newline at end of file
diff --git a/packages/c/cinnamon-screensaver/cinnamon-screensaver-6.2.0.tar.gz b/packages/c/cinnamon-screensaver/cinnamon-screensaver-6.2.0.tar.gz
new file mode 120000
index 00000000000..4b17354fb80
--- /dev/null
+++ b/packages/c/cinnamon-screensaver/cinnamon-screensaver-6.2.0.tar.gz
@@ -0,0 +1 @@
+/ipfs/bafkreiep3qaswyylfmjdn7cx7jpqa3d4ovycrlro6rji7uc6jvupjebo3i
\ No newline at end of file
diff --git a/packages/c/cinnamon-screensaver/cinnamon-screensaver.changes b/packages/c/cinnamon-screensaver/cinnamon-screensaver.changes
index 2d76211bf98..0e9e713eefc 100644
--- a/packages/c/cinnamon-screensaver/cinnamon-screensaver.changes
+++ b/packages/c/cinnamon-screensaver/cinnamon-screensaver.changes
@@ -1,3 +1,13 @@
+-------------------------------------------------------------------
+Thu Aug 15 08:47:49 UTC 2024 - Richard Rahl
+
+- update to 6.2.0:
+ * nothing relevant for openSUSE
+- create seperate packages for devel, typelib and library files, so
+ people who want to actually use these files, don't have to compile it
+ themselves
+- remove support for older Leap releases than 1500
+
-------------------------------------------------------------------
Mon Mar 18 08:20:55 UTC 2024 - Dirk Müller
diff --git a/packages/c/cinnamon-screensaver/cinnamon-screensaver.spec b/packages/c/cinnamon-screensaver/cinnamon-screensaver.spec
index 44113c359d7..bfe89872d31 100644
--- a/packages/c/cinnamon-screensaver/cinnamon-screensaver.spec
+++ b/packages/c/cinnamon-screensaver/cinnamon-screensaver.spec
@@ -16,21 +16,20 @@
#
+%define appid org.cinnamon.ScreenSaver
Name: cinnamon-screensaver
-Version: 6.0.3
+Version: 6.2.0
Release: 0
Summary: Cinnamon screensaver and locker
License: GPL-2.0-or-later
-Group: System/GUI/Other
URL: https://github.com/linuxmint/cinnamon-screensaver
-Source: https://github.com/linuxmint/%{name}/archive/%{version}/%{name}-%{version}.tar.gz
+Source: %{url}/archive/%{version}/%{name}-%{version}.tar.gz
# PATCH-FIX-OPENSUSE cinnamon-screensaver-suse-pam.patch -- Use SUSE-specific PAM configuration.
Patch0: %{name}-suse-pam.patch
BuildRequires: fdupes
BuildRequires: intltool
BuildRequires: libtool
BuildRequires: meson
-BuildRequires: pam-devel
BuildRequires: pkgconfig
BuildRequires: python3 >= 3.4
BuildRequires: update-desktop-files
@@ -40,6 +39,11 @@ BuildRequires: pkgconfig(glib-2.0)
BuildRequires: pkgconfig(gobject-introspection-1.0)
BuildRequires: pkgconfig(gtk+-3.0)
BuildRequires: pkgconfig(libxdo)
+%if 0%{?suse_version} >= 1600
+BuildRequires: pkgconfig(pam)
+%else
+BuildRequires: pam-devel
+%endif
BuildRequires: pkgconfig(x11)
BuildRequires: pkgconfig(xext)
Requires: iso-country-flags-png
@@ -49,7 +53,6 @@ Requires: python3-gobject-Gdk
Requires: python3-gobject-cairo
Requires: python3-setproctitle
Requires: python3-xapp
-Recommends: %{name}-lang
Recommends: xscreensaver-data
Suggests: xscreensaver-data-extra
@@ -58,37 +61,59 @@ cinnamon-screensaver is a screensaver and locker that aims to have
simple, sane and secure defaults, and be well integrated with the
Cinnamon Desktop.
+%package -n libcscreensaver-0_0_0
+Summary: Library files for %{name}
+
+%description -n libcscreensaver-0_0_0
+%{summary}.
+
+This package ships the library files for %{name}.
+
+%package -n typelib-1_0-CScreensaver-1_0
+Summary: Typelib for %{name}
+
+%description -n typelib-1_0-CScreensaver-1_0
+%{summary}.
+
+This package ships the typelib for %{name}.
+
+%package devel
+Summary: Development files for %{name}
+Requires: libcscreensaver-0_0_0
+Requires: typelib-1_0-CScreensaver-1_0
+
+%description devel
+%{summary}.
+
+Development files for %{name}.
+
%prep
%autosetup -p1
%build
-%meson
+%meson \
+ -Dsetres=false \
+ -Dlocking=true \
+ -Dxinerama=true \
+ -Duse-debian-pam=false \
+ -Ddeprecated-warnings=true
%meson_build
%install
-# Manually install desktop file
-mkdir -p %{buildroot}%{_datadir}/applications/
-cp -r data/org.cinnamon.ScreenSaver.desktop %{buildroot}%{_datadir}/applications/org.cinnamon.ScreenSaver.desktop
-
%meson_install
-# Remove development files as they're not really there to be used.
-rm -rf %{buildroot}%{_libdir}/libcscreensaver.so \
- %{buildroot}%{_includedir}/%{name}/ \
- %{buildroot}%{_libdir}/pkgconfig/cscreensaver.pc \
- %{buildroot}%{_datadir}/gir-1.0/CScreensaver-1.0.gir
+%fdupes %{buildroot}
+%suse_update_desktop_file %{appid}
-find %{buildroot} -type f -name "*.la" -delete -print
-%fdupes %{buildroot}%{_datadir}/
-%suse_update_desktop_file org.cinnamon.ScreenSaver
+mkdir -p %{buildroot}%{_pam_vendordir}
+mv %{buildroot}%{_sysconfdir}/pam.d/%{name} %{buildroot}%{_pam_vendordir}/%{name}
# Fix missing shabang
-chmod a-x %{buildroot}%{_datadir}/%{name}/__init__.py
-chmod a-x %{buildroot}%{_datadir}/%{name}/*/__init__.py
+chmod a+x %{buildroot}%{_datadir}/%{name}/*.py
+chmod a+x %{buildroot}%{_datadir}/%{name}/*/*.py
-%if 0%{?suse_version} > 1500
-mkdir -p %{buildroot}%{_pam_vendordir}
-mv %{buildroot}%{_sysconfdir}/pam.d/cinnamon-screensaver %{buildroot}%{_pam_vendordir}
+# remove the executable bit for these files (above we add it, out of convenience)
+chmod a-x %{buildroot}%{_datadir}/%{name}/{__init__.py,config.py,dbusdepot/__init__.py,util/__init__.py,widgets/__init__.py}
%pre
# Prepare for migration to /usr/lib; save any old .rpmsave
@@ -101,41 +126,29 @@ done
for i in pam.d/cinnamon-screensaver ; do
test -f %{_sysconfdir}/${i}.rpmsave && mv -v %{_sysconfdir}/${i}.rpmsave %{_sysconfdir}/${i} ||:
done
-%endif
-
-%post
-/sbin/ldconfig
-%if 0%{?suse_version} < 1500
-%desktop_database_post
-%icon_theme_cache_post
-%endif
-%postun
-/sbin/ldconfig
-%if 0%{?suse_version} < 1500
-%desktop_database_postun
-%icon_theme_cache_postun
-%endif
+%ldconfig_scriptlets -n libcscreensaver-0_0_0
%files
-%license COPYING*
-%doc AUTHORS README.md debian/changelog
-%if 0%{?suse_version} > 1500
-%{_pam_vendordir}/cinnamon-screensaver
-%else
-%config %{_sysconfdir}/pam.d/cinnamon-screensaver
-%endif
-%{_bindir}/%{name}
-%{_bindir}/%{name}-command
-%{_libexecdir}/cs-backup-locker
-%{_bindir}/cinnamon-unlock-desktop
-%{_libexecdir}/%{name}-pam-helper
-%{_datadir}/%{name}/
-%{_libdir}/libcscreensaver.so*
+%license COPYING COPYING.LIB
+%doc AUTHORS README.md HACKING
+%{_bindir}/{%{name}{,-command},cinnamon-unlock-desktop}
+%{_datadir}/applications/%{appid}.desktop
+%{_libexecdir}/{%{name}-pam-helper,cs-backup-locker}
+%{_datadir}/%{name}
+%{_datadir}/dbus-1/services/%{appid}.service
+%{_datadir}/icons/hicolor/scalable/{actions,apps,status}/*.svg
+%{_pam_vendordir}/%{name}
+
+%files -n typelib-1_0-CScreensaver-1_0
%{_libdir}/girepository-1.0/CScreensaver-1.0.typelib
-%{_datadir}/dbus-1/services/org.cinnamon.ScreenSaver.service
-%{_datadir}/applications/org.cinnamon.ScreenSaver.desktop
-%{_datadir}/icons/hicolor/*/*/screensaver-*.*
-%{_datadir}/icons/hicolor/scalable/apps/csr-backup-locker-icon.svg
+
+%files -n libcscreensaver-0_0_0
+%{_libdir}/libcscreensaver.so.*
+
+%files devel
+%{_datadir}/gir-1.0/CScreensaver-1.0.gir
+%{_libdir}/pkgconfig/cscreensaver.pc
+%{_libdir}/libcscreensaver.so
%changelog
diff --git a/packages/c/cinnamon-session/.files b/packages/c/cinnamon-session/.files
index 89a9837b5e6..a44c2f69303 100644
Binary files a/packages/c/cinnamon-session/.files and b/packages/c/cinnamon-session/.files differ
diff --git a/packages/c/cinnamon-session/.rev b/packages/c/cinnamon-session/.rev
index 997fc86166e..86300885956 100644
--- a/packages/c/cinnamon-session/.rev
+++ b/packages/c/cinnamon-session/.rev
@@ -267,4 +267,12 @@
the session manager doesn't provide the "sm-bus-id" argument.
1161158
+
+ 156db1e0977b76155267ccfaa09198a8
+ 6.2.1
+
+ anag+factory
+
+ 1193964
+
diff --git a/packages/c/cinnamon-session/cinnamon-session-6.0.4.tar.gz b/packages/c/cinnamon-session/cinnamon-session-6.0.4.tar.gz
deleted file mode 120000
index 54730f522bb..00000000000
--- a/packages/c/cinnamon-session/cinnamon-session-6.0.4.tar.gz
+++ /dev/null
@@ -1 +0,0 @@
-/ipfs/bafkreicfh2txfftzoaczpnav7zedu6lfduqdesgtx3givy7czxoferqsw4
\ No newline at end of file
diff --git a/packages/c/cinnamon-session/cinnamon-session-6.2.1.tar.gz b/packages/c/cinnamon-session/cinnamon-session-6.2.1.tar.gz
new file mode 120000
index 00000000000..a2bf2ab7fe1
--- /dev/null
+++ b/packages/c/cinnamon-session/cinnamon-session-6.2.1.tar.gz
@@ -0,0 +1 @@
+/ipfs/bafkreidj2okjiia7ftl6gdmibaj562o553yuhpx4myhnsu3ihvo5vrqvh4
\ No newline at end of file
diff --git a/packages/c/cinnamon-session/cinnamon-session.changes b/packages/c/cinnamon-session/cinnamon-session.changes
index 0b862b0bf6f..715ee21e844 100644
--- a/packages/c/cinnamon-session/cinnamon-session.changes
+++ b/packages/c/cinnamon-session/cinnamon-session.changes
@@ -1,3 +1,18 @@
+-------------------------------------------------------------------
+Tue Aug 13 05:01:36 UTC 2024 - Richard Rahl
+
+- update to 6.2.1:
+ * Fix restart and shutdown
+- update to 6.2.0:
+ * cinnamon-session-quit.py: add missing window icon
+ * csm-manager.c: Unset WAYLAND_DISPLAY during shutdown in a wayland
+ * main.c: Reset the activation environment at the end of the
+ * csm-manager.c: Stop the user dbus-daemon at the end of the session
+ * cs-presence.c: Fix CsmPresence idle handling
+ * cinnamon-session-quit.py: Set logout window to keep-above and all
+ * Remove orphaned include
+ * cinnamon-session: make sure wayland sessions get a login shell
+
-------------------------------------------------------------------
Sun Mar 24 18:02:33 UTC 2024 - Dirk Müller
diff --git a/packages/c/cinnamon-session/cinnamon-session.spec b/packages/c/cinnamon-session/cinnamon-session.spec
index 5c06b6f844b..37ef95ba5a5 100644
--- a/packages/c/cinnamon-session/cinnamon-session.spec
+++ b/packages/c/cinnamon-session/cinnamon-session.spec
@@ -17,13 +17,12 @@
Name: cinnamon-session
-Version: 6.0.4
+Version: 6.2.1
Release: 0
Summary: The session manager for the Cinnamon Desktop
License: GPL-2.0-or-later AND LGPL-2.1-or-later
-Group: System/GUI/Other
URL: https://github.com/linuxmint/cinnamon-session
-Source: https://github.com/linuxmint/%{name}/archive/%{version}.tar.gz#/%{name}-%{version}.tar.gz
+Source: %{url}/archive/%{version}.tar.gz#/%{name}-%{version}.tar.gz
Source1: %{name}-logind.gschema.override
BuildRequires: docbook
BuildRequires: hicolor-icon-theme
@@ -51,17 +50,16 @@ Requires: cinnamon
Requires: cinnamon-settings-daemon
Requires: dbus-1-x11
Requires: upower >= 0.9.0
-Recommends: %{name}-lang
-%glib2_gsettings_schema_requires
%description
This packages contains the session manager for the Cinnamon Desktop.
%prep
-%setup -q
+%autosetup
%build
%meson \
+ -Dfrequent_warnings=true \
-Dipv6=true \
-Dxtrans=true
%meson_build
@@ -81,7 +79,7 @@ install -Dpm 0644 %{SOURCE1} \
%doc AUTHORS README README.md
%{_bindir}/%{name}
%{_bindir}/%{name}-quit
-%{_libexecdir}/%{name}-check-accelerated*
+%{_libexecdir}/*
%{_datadir}/%{name}/
%{_datadir}/glib-2.0/schemas/org.cinnamon.*
%{_datadir}/icons/hicolor/*/apps/%{name}-properties.*
diff --git a/packages/c/cinnamon-settings-daemon/.files b/packages/c/cinnamon-settings-daemon/.files
index 0d72d6e65ea..63c94ba9a23 100644
Binary files a/packages/c/cinnamon-settings-daemon/.files and b/packages/c/cinnamon-settings-daemon/.files differ
diff --git a/packages/c/cinnamon-settings-daemon/.rev b/packages/c/cinnamon-settings-daemon/.rev
index 970028f7c4a..d1ae625a6ea 100644
--- a/packages/c/cinnamon-settings-daemon/.rev
+++ b/packages/c/cinnamon-settings-daemon/.rev
@@ -293,4 +293,12 @@
* cinnamon-settings-daemon (5.4.3) vanessa; urgency=medium
1128872
+
+ 2f10e67845259a7690b37ce990581add
+ 6.2.0
+
+ anag+factory
+
+ 1195066
+
diff --git a/packages/c/cinnamon-settings-daemon/cinnamon-settings-daemon-6.0.0.tar.gz b/packages/c/cinnamon-settings-daemon/cinnamon-settings-daemon-6.0.0.tar.gz
deleted file mode 120000
index 7cc8f81f462..00000000000
--- a/packages/c/cinnamon-settings-daemon/cinnamon-settings-daemon-6.0.0.tar.gz
+++ /dev/null
@@ -1 +0,0 @@
-/ipfs/bafybeif3gjktezy5aravlgtzauvl7ijwq7ycc2ljzol5g6fvudb4ughtbu
\ No newline at end of file
diff --git a/packages/c/cinnamon-settings-daemon/cinnamon-settings-daemon-6.2.0.tar.gz b/packages/c/cinnamon-settings-daemon/cinnamon-settings-daemon-6.2.0.tar.gz
new file mode 120000
index 00000000000..63702c8ad09
--- /dev/null
+++ b/packages/c/cinnamon-settings-daemon/cinnamon-settings-daemon-6.2.0.tar.gz
@@ -0,0 +1 @@
+/ipfs/bafybeias3vujgebdydxw66hqxsres4vx6yjrq3s3qhm2laekz3xar45cge
\ No newline at end of file
diff --git a/packages/c/cinnamon-settings-daemon/cinnamon-settings-daemon.changes b/packages/c/cinnamon-settings-daemon/cinnamon-settings-daemon.changes
index dd6c2db590a..6ca20c45ad2 100644
--- a/packages/c/cinnamon-settings-daemon/cinnamon-settings-daemon.changes
+++ b/packages/c/cinnamon-settings-daemon/cinnamon-settings-daemon.changes
@@ -1,3 +1,11 @@
+-------------------------------------------------------------------
+Mon Aug 19 14:39:00 UTC 2024 - sb56637
+
+- update to 6.2.0:
+ * Fixes and readability improvements
+ * print notifications: Don't send repeated printer-added notifications.
+ * notifications manager: Fix compiler warnings.
+
-------------------------------------------------------------------
Sat Nov 25 18:53:52 UTC 2023 - Dirk Müller
diff --git a/packages/c/cinnamon-settings-daemon/cinnamon-settings-daemon.spec b/packages/c/cinnamon-settings-daemon/cinnamon-settings-daemon.spec
index 6b59f8b2996..693bd4e3e90 100644
--- a/packages/c/cinnamon-settings-daemon/cinnamon-settings-daemon.spec
+++ b/packages/c/cinnamon-settings-daemon/cinnamon-settings-daemon.spec
@@ -17,7 +17,7 @@
Name: cinnamon-settings-daemon
-Version: 6.0.0
+Version: 6.2.0
Release: 0
Summary: The settings Daemon for the Cinnamon Desktop
License: GPL-2.0-or-later AND LGPL-2.1-only
diff --git a/packages/c/cinnamon/.files b/packages/c/cinnamon/.files
index f4e955e639a..4085cee7d85 100644
Binary files a/packages/c/cinnamon/.files and b/packages/c/cinnamon/.files differ
diff --git a/packages/c/cinnamon/.rev b/packages/c/cinnamon/.rev
index f8129b85111..501ef73a1a9 100644
--- a/packages/c/cinnamon/.rev
+++ b/packages/c/cinnamon/.rev
@@ -821,4 +821,147 @@
1151323
+
+ 261808311df89d4bf4c76f5048e495af
+ 6.2.9
+
+ anag+factory
+ Mon Aug 19 15:01:03 UTC 2024 - sb56637 <mxoo28j7@duck.com>
+ * Changes to the RPM .spec file for proper dependency versions of other Cinnamon components at different version numbers
+
+Sun Aug 11 05:21:09 UTC 2024 - sb56637 <mxoo28j7@duck.com>
+- update to 6.2.9:
+ * cs_default.py: Disable mousewheel selection in the default app comboboxes.
+- update to 6.2.8:
+ * x-cinnamon-portals.conf: Add gnome-keyring as the Secret provider.
+- update to 6.2.7:
+ * Dns.js: Revert bug workaround
+- update to 6.2.6:
+ * cinnamon-settings-users: Don't use w -hs
+ * Set clip_to_allocation to true for menu and notification applets
+- update to 6.2.5:
+ * ExtensionCore.py - Adds update subject
+ * Revert "cs_themes: Restrain picture button heights."
+- update to 6.2.4:
+ * windowMenu.js: Fix warning flood when moving a window to another workspace.
+ * cs_themes: Restrain picture button heights.
+ * user applet: Fix updating the avatar icon size when the panel height changes.
+ * cs-info: Better parsing of the graphics card lspci output
+- update to 6.2.3:
+ * cinnamon-settings.py: Use the nvidia icon for nvidia-settings.
+ * ExtensionCore.py: Check for display names in translations
+ * cs_themes: Frame App and Cinnamon themes, move user themes to the top.
+ * xapp status: Make sure the recording icon size is set, disconnect the recording signal when the applet is removed.
+- update to 6.2.2:
+ * Revert "xdg-desktop-portal: Don't ship the x-cinnamon-portals.conf file."
+- update to 6.2.1:
+ * Fix extensions automatically enabling on download
+- update to 6.2.0:
+ * sound applet: Fixes #12035
+ * Add a fix for webkit dev's failure to care about breaking online-accounts for nvidia users
+ * window lists: don't attention flash focused window
+ * Remove dynamic text direction for table
+ * cinnamon-xlet-makepot: Don't assume xgettext calls actually generate a potfile.
+ * Restore polkit agent.
+ * Fix lmde6 build.
+ * polkit-dialog: Clean up the styling a bit
+ * debian/control: Don't remove policykit-1-gnome yet.
+ * Add greeter badges for Cinnamon sessions
+ * Show search bar by default in AppChooserDialog
+ * cs_panel.py: Set the step amount to 1 for panel heights.
+ * power applet: Fix reported battery status
+ * panel.js: Don't re-declare x_mon when converting panel defs.
+ * cs_panel.py: Fix behavior when there are overlapping definitions.
+ * panel.js: Improve handling of invalid/duplicate panel definitions.
+ * notifications@cinnamon.org: Append the locale's date format to notifications
+ * cs_screensaver.py: Add screen lock delay options for 5 and 10 seconds
+ * cs_keyboard.py, cinnamon-desktop-editor.py: Fix some python 3.12- related warnings.
+ * cs_keyboard.py: Update the custom list visually as well as internally when a keybinding changes.
+ * calendar@cinnamon.org: Fix garbage collection of stale events.
+ * Fix mapping flatpak windows to flatpak app
+ * Switch to GNOME Online Accounts GTK
+ * l10n: Update POT
+ * cs_info: Add 'about' as a keyword for System Info
+ * cs_keyboard: Enable configuration of bindings for Spices
+ * cs_themes: Fix the stack switcher sensitivity
+ * inhibit@cinnamon.org: Add unique applet icons for notification toggles
+ * Show battery pending charge/discharge states in Power Management
+ * cinnamon-settings.py: Additional modules when Mint modules are absent
+ * cinnamon-settings: Forbid synaptic if mintsources is present.
+ * Fix linuxmint#11313
+ * Add userWidget.js
+ * lightbox.js: Port to Clutter animations
+ * modalDialog.js: Port to Clutter animations
+ * desklet.js: Port to Clutter animations
+ * Add interface for xdg portal requests.
+ * doc generation: Fix strings with invalid escape codes.
+ * placesManager.js: Remove "Connect to..." item.
+ * New action icon for Mint-X theme
+ * cs_themes: Blacklist Adwaita and HighContrast
+ * cs_themes: Blacklist a few more themes
+ * cs_themes: Blacklist adwaita-dark
+ * user applet: Allow to display the profile picture on the panel
+ * userWidget.js: Fix AccountsService icon changes.
+ * user@cinnamon.org: Use UserWidget.Avatar for the panel user icon.
+ * cs_user.py: Use XApp.IconChooserDialog for "Browse for more...".
+ * Update Show information on date format syntax URL to working one
+ * workspace switcher: remove the workspace the cursor is hovering on middle click
+ * cs_keyboard.py and KeybindingWidgets.py: Add support for search by binding
+ * cornerbar applet: add shift + click actions settings
+ * cornerbar: Properly filter windows not to transparentize on peek blur/opacity effects
+ * show desktop applet: Fix desktop peek
+ * Remove unused js overrides
+ * Prevent window randomization on connecting a monitor
+ * Preserve file permissions of downloaded spices
+ * cinnamon theme: fix expo-workspaces-name-entry
+ * cornerbar: Port to Clutter animations
+ * show-desktop: Port to Clutter animations
+ * gwl: Port to Clutter animations
+ * Adds toggle switch to on-screen-keyboard@cinnamon applet to enable/disable keyboard.
+ * util.js: remove unused utility function latinise()
+ * userWidget: Back to using the theme to load the face image.
+ * user applet: handle the symbolic panel icon correctly.
+ * gwl: Fix thumbnails resize on scaled monitors
+ * Show "wired with a padlock" or "wireless with a padlock" icons when a VPN is connected
+ * Add a Science category to the menu.
+ * sound@cinnamon.org: Prevent Muffin from creating sound streams in volume mixer in sound applet
+ * cinnamon-app-system.c: Don't remove an app from running_apps until after emitting the changed signal.
+ * userWidget: Simplify a bit
+ * Embed nemo's layout editor into cinnamon-settings' Actions module.
+ * Prevents Cvc.MixerControl from being loaded more than once
+ * l10n: Generate additional files
+ * l10n: Generate CS module desktop files
+ * l10n: Update POT
+ * xdg-desktop-portal: Don't ship the x-cinnamon-portals.conf file.
+ * PopupSliderMenuItem: Don't track the hover state
+ * window-list: Remove indicators for minimized and tiled windows
+- update to 6.0.4:
+ * Move gir files to private path
+ * fixing applet tooltips clipping out the top as well.=
+- update to 6.0.3:
+ * fix for applet tooltips clipping outside the screen when they're too close to the bottom.
+ * Show secure connection icon when WireGuard is active
+- update to 6.0.2:
+ * menu: Don't resize if the OSK is visible
+ * Check for a workarea collision during actor.show() and shrink or restore to the user size when appropriate.
+ * cs-info: increase inxi verbosity
+ * README.Debian: fix typo
+ * Update .git-blame-ignore-revs
+- update to 6.0.1:
+ * main.js: Don't initialize monitorLabeler in an x11 session.
+ * Update bug report template with Wayland issue tracker
+ * cinnamon-global/clipboard: use the MetaDisplay's selection object.
+ * fix: install actions from the correct folder
+ * improve xlet download and autostart run icons
+ * Fix Main.activateWindow() for windows with normal transient children
+ * actions: Ignore miscellaneous files in the install folder.
+ * l10n: Update cs modules
+ * cinnamon-settings-users: Fix special characters in pango markup
+ * Update Actions module to show non-Spice Actions
+ * Spices.py: Skip actions when they contain the 'Active' key and its value is false.
+ * Spices.py: catch some possible exceptions when loading legacy actions.
+ * ExtensionCore.py: Render spice-supplied icons correctly in hidpi.
+
+ 1195150
+
diff --git a/packages/c/cinnamon/cinnamon-6.0.0.tar.gz b/packages/c/cinnamon/cinnamon-6.0.0.tar.gz
deleted file mode 120000
index d53c55c8f40..00000000000
--- a/packages/c/cinnamon/cinnamon-6.0.0.tar.gz
+++ /dev/null
@@ -1 +0,0 @@
-/ipfs/bafybeicqelnqwy7p537mtoykt2vptwswksmy7iackfgnpbylbwtutqzk3a
\ No newline at end of file
diff --git a/packages/c/cinnamon/cinnamon-6.2.9.tar.gz b/packages/c/cinnamon/cinnamon-6.2.9.tar.gz
new file mode 120000
index 00000000000..57a3301abef
--- /dev/null
+++ b/packages/c/cinnamon/cinnamon-6.2.9.tar.gz
@@ -0,0 +1 @@
+/ipfs/bafybeid4s2eocx4tv65h7evgjdocwzqh4faw7mdzfsiwhop4t5zgoyj4ky
\ No newline at end of file
diff --git a/packages/c/cinnamon/cinnamon-settings-native.patch b/packages/c/cinnamon/cinnamon-settings-native.patch
index c9151af4700..31b537c0f5b 100644
--- a/packages/c/cinnamon/cinnamon-settings-native.patch
+++ b/packages/c/cinnamon/cinnamon-settings-native.patch
@@ -1,43 +1,39 @@
-diff -ruN a/files/usr/share/cinnamon/cinnamon-settings/cinnamon-settings.py c/files/usr/share/cinnamon/cinnamon-settings/cinnamon-settings.py
---- a/files/usr/share/cinnamon/cinnamon-settings/cinnamon-settings.py 2021-01-13 21:22:39.000000000 +0700
-+++ c/files/usr/share/cinnamon/cinnamon-settings/cinnamon-settings.py 2021-02-10 02:21:32.019809692 +0700
-@@ -69,24 +69,21 @@
- ]
-
+diff --color -ru a/files/usr/share/cinnamon/cinnamon-settings/cinnamon-settings.py b/files/usr/share/cinnamon/cinnamon-settings/cinnamon-settings.py
+--- a/files/usr/share/cinnamon/cinnamon-settings/cinnamon-settings.py 2024-06-30 16:37:27.000000000 +0600
++++ b/files/usr/share/cinnamon/cinnamon-settings/cinnamon-settings.py 2024-07-03 11:02:32.389710428 +0600
+@@ -71,27 +71,29 @@
STANDALONE_MODULES = [
-- # Label Executable Icon Category Keywords for filter
-- [_("Printers"), "system-config-printer", "cs-printer", "hardware", _("printers, laser, inkjet")],
-- [_("Firewall"), "gufw", "cs-firewall", "admin", _("firewall, block, filter, programs")],
-- [_("Firewall"), "firewall-config", "cs-firewall", "admin", _("firewall, block, filter, programs")],
-- [_("Languages"), "mintlocale", "cs-language", "prefs", _("language, install, foreign")],
-- [_("Input Method"), "mintlocale-im", "cs-input-method", "prefs", _("language, install, foreign, input, method, chinese, korean, japanese, typing")],
-- [_("Login Window"), "pkexec lightdm-settings", "cs-login", "admin", _("login, lightdm, mdm, gdm, manager, user, password, startup, switch")],
-- [_("Login Window"), "lightdm-gtk-greeter-settings-pkexec", "cs-login", "admin", _("login, lightdm, manager, settings, editor")],
-- [_("Driver Manager"), "cinnamon-driver-manager", "cs-drivers", "admin", _("video, driver, wifi, card, hardware, proprietary, nvidia, radeon, nouveau, fglrx")],
-- [_("Nvidia Settings"), "nvidia-settings", "cs-drivers", "admin", _("video, driver, proprietary, nvidia, settings")],
-- [_("Software Sources"), "pkexec mintsources", "cs-sources", "admin", _("ppa, repository, package, source, download")],
-- [_("Package Management"), "dnfdragora", "cs-sources", "admin", _("update, install, repository, package, source, download")],
-- [_("Package Management"), "yumex-dnf", "cs-sources", "admin", _("update, install, repository, package, source, download")],
-- [_("Users and Groups"), "cinnamon-settings-users", "cs-user-accounts", "admin", _("user, users, account, accounts, group, groups, password")],
-- [_("Bluetooth"), "blueberry", "cs-bluetooth", "hardware", _("bluetooth, dongle, transfer, mobile")],
-- [_("Bluetooth"), "blueman-manager", "cs-bluetooth", "hardware", _("bluetooth, dongle, transfer, mobile")],
-- [_("Manage Services and Units"), "systemd-manager-pkexec", "cs-sources", "admin", _("systemd, units, services, systemctl, init")],
-- [_("Disks"), "gnome-disks", "org.gnome.DiskUtility", "hardware", _("disks, manage, hardware, management, hard, hdd, pendrive, format, erase, test, create, iso, ISO, disk, image")]
-+ # Label Executable Icon Category Keywords for filter
-+ [_("Printers"), "xdg-su -c /sbin/yast2 printer", "cs-printer", "hardware", _("printers, laser, inkjet")],
-+ [_("Firewall"), "xdg-su -c /sbin/yast2 firewall", "cs-firewall", "admin", _("firewall, block, filter, programs")],
-+ [_("Languages"), "xdg-su -c /sbin/yast2 language", "cs-language", "prefs", _("language, install, foreign")],
-+ [_("Input Method"), "mintlocale-im", "cs-input-method", "prefs", _("language, install, foreign, input, method, chinese, korean, japanese, typing")],
-+ [_("Login Window"), "pkexec lightdm-settings", "cs-login", "admin", _("login, lightdm, mdm, gdm, manager, user, password, startup, switch")],
-+ [_("Login Window"), "lightdm-gtk-greeter-settings-pkexec", "cs-login", "admin", _("login, lightdm, manager, settings, editor")],
-+ [_("Driver Manager"), "xdg-su -c /sbin/yast2 hwinfo", "cs-drivers", "admin", _("video, driver, wifi, card, hardware, proprietary, nvidia, radeon, nouveau, fglrx")],
-+ [_("Nvidia Settings"), "nvidia-settings", "cs-drivers", "admin", _("video, driver, proprietary, nvidia, settings")],
-+ [_("Software Sources"), "xdg-su -c /sbin/yast2 repositories", "cs-sources", "admin", _("ppa, repository, package, source, download")],
-+ [_("Package Management"), "xdg-su -c /sbin/yast2 sw_single", "cs-sources", "admin", _("update, install, repository, package, source, download")],
-+ [_("Users and Groups"), "cinnamon-settings-users", "cs-user-accounts", "admin", _("user, users, account, accounts, group, groups, password")],
-+ [_("Bluetooth"), "blueberry", "cs-bluetooth", "hardware", _("bluetooth, dongle, transfer, mobile")],
-+ [_("Manage Services and Units"), "xdg-su -c /sbin/yast2 services-manager", "cs-sources", "admin", _("systemd, units, services, systemctl, init")],
-+ [_("Disks"), "xdg-su -c /sbin/yast2 partitioner", "org.gnome.DiskUtility", "hardware", _("disks, manage, hardware, management, hard, hdd, pendrive, format, erase, test, create, iso, ISO, disk, image")]
+ # Label Executable Icon Category Keywords for filter
+ [_("Printers"), "system-config-printer", "cs-printer", "hardware", _("printers, laser, inkjet")],
+- [_("Firewall"), "gufw", "cs-firewall", "admin", _("firewall, block, filter, programs")],
+- [_("Firewall"), "firewall-config", "cs-firewall", "admin", _("firewall, block, filter, programs")],
+- [_("Languages"), "mintlocale", "cs-language", "prefs", _("language, install, foreign")],
++ [_("Firewall"), "xdg-su -c /sbin/yast2 firewall", "cs-firewall", "admin", _("firewall, block, filter, programs")],
++ [_("Languages"), "xdg-su -c /sbin/yast2 language", "cs-language", "prefs", _("language, install, foreign")],
+ [_("Input Method"), "mintlocale-im", "cs-input-method", "prefs", _("language, install, foreign, input, method, chinese, korean, japanese, typing")],
+ [_("Login Window"), "pkexec lightdm-settings", "cs-login", "admin", _("login, lightdm, mdm, gdm, manager, user, password, startup, switch")],
+ [_("Login Window"), "lightdm-gtk-greeter-settings-pkexec", "cs-login", "admin", _("login, lightdm, manager, settings, editor")],
+ [_("Login Window"), "gdm-settings", "gdm-settings", "admin", _("login, gdm, manager, user, startup, switch")],
+- [_("Driver Manager"), "cinnamon-driver-manager", "cs-drivers", "admin", _("video, driver, wifi, card, hardware, proprietary, nvidia, radeon, nouveau, fglrx")],
++ [_("Driver Manager"), "xdg-su -c /sbin/yast2 hwinfo", "cs-drivers", "admin", _("video, driver, wifi, card, hardware, proprietary, nvidia, radeon, nouveau, fglrx")],
+ [_("Nvidia Settings"), "nvidia-settings", "nvidia-settings", "admin", _("video, driver, proprietary, nvidia, settings")],
+- [_("Software Sources"), "pkexec mintsources", "cs-sources", "admin", _("ppa, repository, package, source, download")],
++ [_("Software Sources"), "xdg-su -c /sbin/yast2 repositories", "cs-sources", "admin", _("ppa, repository, package, source, download")],
+ [_("Package Management"), "dnfdragora", "dnfdragora", "admin", _("update, install, repository, package, source, download")],
+ [_("Package Management"), "gpk-application", "gpk-prefs", "admin", _("update, install, repository, package, source, download")],
+ [_("Package Management"), "/usr/bin/octopi", "octopi", "admin", _("update, install, repository, package, source, download")],
+ [_("Package Management"), "pamac-manager", "system-software-install", "admin", _("update, install, repository, package, source, download")],
+ [_("Package Management"), "yumex", "yumex", "admin", _("update, install, repository, package, source, download")],
++ [_("Package Management"), "xdg-su -c /sbin/yast2 sw_single", "cs-sources", "admin", _("update, install, repository, package, source, download")],
+ [_("Users and Groups"), "cinnamon-settings-users", "cs-user-accounts", "admin", _("user, users, account, accounts, group, groups, password")],
+ [_("Bluetooth"), "blueberry", "cs-bluetooth", "hardware", _("bluetooth, dongle, transfer, mobile")],
+ [_("Bluetooth"), "blueman-manager", "cs-bluetooth", "hardware", _("bluetooth, dongle, transfer, mobile")],
+ [_("Manage Services and Units"), "systemd-manager-pkexec", "cs-sources", "admin", _("systemd, units, services, systemctl, init")],
+ [_("Disks"), "gnome-disks", "org.gnome.DiskUtility", "hardware", _("disks, manage, hardware, management, hard, hdd, pendrive, format, erase, test, create, iso, ISO, disk, image")],
+- [_("Online Accounts"), "gnome-online-accounts-gtk", "gnome-online-accounts-gtk", "prefs", _("google, microsoft, nextcloud, owncloud")]
++ [_("Online Accounts"), "gnome-online-accounts-gtk", "gnome-online-accounts-gtk", "prefs", _("google, microsoft, nextcloud, owncloud")],
++ [_("Manage Services and Units"), "xdg-su -c /sbin/yast2 services-manager", "cs-sources", "admin", _("systemd, units, services, systemctl, init")],
++ [_("Disks"), "xdg-su -c /sbin/yast2 partitioner", "org.gnome.DiskUtility", "hardware", _("disks, manage, hardware, management, hard, hdd, pendrive, format, erase, test, create, iso, ISO, disk, image")]
]
- TABS = {
+ ALTERNATE_MODULES = [
diff --git a/packages/c/cinnamon/cinnamon-wheel-and-sbin-path.patch b/packages/c/cinnamon/cinnamon-wheel-and-sbin-path.patch
index 41d5228e919..73d9053e43f 100644
--- a/packages/c/cinnamon/cinnamon-wheel-and-sbin-path.patch
+++ b/packages/c/cinnamon/cinnamon-wheel-and-sbin-path.patch
@@ -1,23 +1,19 @@
---- a/files/usr/share/cinnamon/cinnamon-settings/modules/cs_info.py
-+++ b/files/usr/share/cinnamon/cinnamon-settings/modules/cs_info.py
-@@ -40,12 +40,12 @@
+diff --color -rub a/files/usr/share/cinnamon/cinnamon-settings/modules/cs_info.py b/files/usr/share/cinnamon/cinnamon-settings/modules/cs_info.py
+--- a/files/usr/share/cinnamon/cinnamon-settings/modules/cs_info.py 2024-07-06 01:58:54.000000000 +0600
++++ b/files/usr/share/cinnamon/cinnamon-settings/modules/cs_info.py 2024-07-08 22:32:49.792309881 +0600
+@@ -41,7 +41,7 @@
count = 0
envpath = os.environ["PATH"]
os.environ["PATH"] = envpath + ":/usr/local/sbin:/usr/sbin:/sbin"
- for card in getProcessOut("lspci"):
-+ for card in getProcessOut(("/sbin/lspci")):
- if not "VGA" in card:
- continue
- cardId = card.split()[0]
- cardName = None
-- for line in getProcessOut(("lspci", "-v", "-s", cardId)):
-+ for line in getProcessOut(("/sbin/lspci", "-v", "-s", cardId)):
- if line.startswith(cardId):
- cardName = (line.split(":")[2].split("(rev")[0].strip())
-
---- a/files/usr/share/cinnamon/cinnamon-settings-users/cinnamon-settings-users.py
-+++ b/files/usr/share/cinnamon/cinnamon-settings-users/cinnamon-settings-users.py
-@@ -182,12 +182,11 @@
++ for card in getProcessOut("/sbin/lspci"):
+ for prefix in ["VGA compatible controller:", "3D controller:"]:
+ if prefix in card:
+ cardName = card.split(prefix)[1].split("(rev")[0].strip()
+diff --color -rub a/files/usr/share/cinnamon/cinnamon-settings-users/cinnamon-settings-users.py b/files/usr/share/cinnamon/cinnamon-settings-users/cinnamon-settings-users.py
+--- a/files/usr/share/cinnamon/cinnamon-settings-users/cinnamon-settings-users.py 2024-07-06 01:58:54.000000000 +0600
++++ b/files/usr/share/cinnamon/cinnamon-settings-users/cinnamon-settings-users.py 2024-07-08 22:38:27.693020638 +0600
+@@ -182,13 +182,11 @@
class PasswordDialog(Gtk.Dialog):
@@ -28,10 +24,11 @@
self.user = user
self.password_mask = password_mask
- self.group_mask = group_mask
-
+-
self.set_modal(True)
self.set_skip_taskbar_hint(True)
-@@ -253,14 +252,7 @@
+ self.set_skip_pager_hint(True)
+@@ -253,13 +251,6 @@
def change_password(self):
newpass = self.new_password.get_text()
self.user.set_password(newpass, "")
@@ -42,12 +39,10 @@
- mask.remove("nopasswdlogin")
- mask = ", ".join(mask)
- self.group_mask.set_text(mask)
-- self.password_mask.set_text('\u2022\u2022\u2022\u2022\u2022\u2022')
-+ self.password_mask.set_text('\u2022\u2022\u2022\u2022\u2022\u2022')
+ self.password_mask.set_text('\u2022\u2022\u2022\u2022\u2022\u2022')
self.destroy()
- def set_passwords_visibility(self):
-@@ -613,7 +605,7 @@
+@@ -613,7 +604,7 @@
model, treeiter = self.users_treeview.get_selection().get_selected()
if treeiter is not None:
user = model[treeiter][INDEX_USER_OBJECT]
@@ -56,7 +51,7 @@
response = dialog.run()
def _on_groups_button_clicked(self, widget):
-@@ -624,7 +616,7 @@
+@@ -624,7 +615,7 @@
response = dialog.run()
if response == Gtk.ResponseType.OK:
groups = dialog.get_selected_groups()
@@ -65,9 +60,9 @@
groups.sort()
self.groups_label.set_text(", ".join(groups))
dialog.destroy()
-@@ -899,11 +891,11 @@
+@@ -902,11 +893,11 @@
pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_size("/usr/share/cinnamon/faces/user-generic.png", 48, 48)
- description = "%s\n%s" % (fullname, username)
+ description = "%s\n%s" % (GLib.markup_escape_text(fullname), GLib.markup_escape_text(username))
piter = self.users.append(None, [new_user, pixbuf, description])
- # Add the user to his/her own group and sudo if Administrator was selected
+ # Add the user to his/her own group and wheel if Administrator was selected
@@ -80,12 +75,12 @@
self.load_groups()
dialog.destroy()
-@@ -948,7 +940,7 @@
+@@ -951,7 +942,7 @@
d.set_default_response(Gtk.ResponseType.NO)
r = d.run()
if r == Gtk.ResponseType.YES:
- subprocess.call(["groupdel", group])
-+ subprocess.call(["/usr/sbin/groupdel", group])
++ subprocess.call(["/usr/sbin/groupdel", group])
self.load_groups()
d.destroy()
diff --git a/packages/c/cinnamon/cinnamon.changes b/packages/c/cinnamon/cinnamon.changes
index a9131587bd9..7d5efa6fcbc 100644
--- a/packages/c/cinnamon/cinnamon.changes
+++ b/packages/c/cinnamon/cinnamon.changes
@@ -1,3 +1,156 @@
+-------------------------------------------------------------------
+Mon Aug 19 15:01:03 UTC 2024 - sb56637
+
+ * Changes to the RPM .spec file for proper dependency versions of other Cinnamon components at different version numbers
+
+-------------------------------------------------------------------
+Sun Aug 11 05:21:09 UTC 2024 - sb56637
+
+- update to 6.2.9:
+ * cs_default.py: Disable mousewheel selection in the default app comboboxes.
+
+- update to 6.2.8:
+ * x-cinnamon-portals.conf: Add gnome-keyring as the Secret provider.
+
+- update to 6.2.7:
+ * Dns.js: Revert bug workaround
+
+- update to 6.2.6:
+ * cinnamon-settings-users: Don't use w -hs
+ * Set clip_to_allocation to true for menu and notification applets
+
+- update to 6.2.5:
+ * ExtensionCore.py - Adds update subject
+ * Revert "cs_themes: Restrain picture button heights."
+
+- update to 6.2.4:
+ * windowMenu.js: Fix warning flood when moving a window to another workspace.
+ * cs_themes: Restrain picture button heights.
+ * user applet: Fix updating the avatar icon size when the panel height changes.
+ * cs-info: Better parsing of the graphics card lspci output
+
+- update to 6.2.3:
+ * cinnamon-settings.py: Use the nvidia icon for nvidia-settings.
+ * ExtensionCore.py: Check for display names in translations
+ * cs_themes: Frame App and Cinnamon themes, move user themes to the top.
+ * xapp status: Make sure the recording icon size is set, disconnect the recording signal when the applet is removed.
+
+- update to 6.2.2:
+ * Revert "xdg-desktop-portal: Don't ship the x-cinnamon-portals.conf file."
+
+- update to 6.2.1:
+ * Fix extensions automatically enabling on download
+
+- update to 6.2.0:
+ * sound applet: Fixes #12035
+ * Add a fix for webkit dev's failure to care about breaking online-accounts for nvidia users
+ * window lists: don't attention flash focused window
+ * Remove dynamic text direction for table
+ * cinnamon-xlet-makepot: Don't assume xgettext calls actually generate a potfile.
+ * Restore polkit agent.
+ * Fix lmde6 build.
+ * polkit-dialog: Clean up the styling a bit
+ * debian/control: Don't remove policykit-1-gnome yet.
+ * Add greeter badges for Cinnamon sessions
+ * Show search bar by default in AppChooserDialog
+ * cs_panel.py: Set the step amount to 1 for panel heights.
+ * power applet: Fix reported battery status
+ * panel.js: Don't re-declare x_mon when converting panel defs.
+ * cs_panel.py: Fix behavior when there are overlapping definitions.
+ * panel.js: Improve handling of invalid/duplicate panel definitions.
+ * notifications@cinnamon.org: Append the locale's date format to notifications
+ * cs_screensaver.py: Add screen lock delay options for 5 and 10 seconds
+ * cs_keyboard.py, cinnamon-desktop-editor.py: Fix some python 3.12- related warnings.
+ * cs_keyboard.py: Update the custom list visually as well as internally when a keybinding changes.
+ * calendar@cinnamon.org: Fix garbage collection of stale events.
+ * Fix mapping flatpak windows to flatpak app
+ * Switch to GNOME Online Accounts GTK
+ * l10n: Update POT
+ * cs_info: Add 'about' as a keyword for System Info
+ * cs_keyboard: Enable configuration of bindings for Spices
+ * cs_themes: Fix the stack switcher sensitivity
+ * inhibit@cinnamon.org: Add unique applet icons for notification toggles
+ * Show battery pending charge/discharge states in Power Management
+ * cinnamon-settings.py: Additional modules when Mint modules are absent
+ * cinnamon-settings: Forbid synaptic if mintsources is present.
+ * Fix linuxmint#11313
+ * Add userWidget.js
+ * lightbox.js: Port to Clutter animations
+ * modalDialog.js: Port to Clutter animations
+ * desklet.js: Port to Clutter animations
+ * Add interface for xdg portal requests.
+ * doc generation: Fix strings with invalid escape codes.
+ * placesManager.js: Remove "Connect to..." item.
+ * New action icon for Mint-X theme
+ * cs_themes: Blacklist Adwaita and HighContrast
+ * cs_themes: Blacklist a few more themes
+ * cs_themes: Blacklist adwaita-dark
+ * user applet: Allow to display the profile picture on the panel
+ * userWidget.js: Fix AccountsService icon changes.
+ * user@cinnamon.org: Use UserWidget.Avatar for the panel user icon.
+ * cs_user.py: Use XApp.IconChooserDialog for "Browse for more...".
+ * Update Show information on date format syntax URL to working one
+ * workspace switcher: remove the workspace the cursor is hovering on middle click
+ * cs_keyboard.py and KeybindingWidgets.py: Add support for search by binding
+ * cornerbar applet: add shift + click actions settings
+ * cornerbar: Properly filter windows not to transparentize on peek blur/opacity effects
+ * show desktop applet: Fix desktop peek
+ * Remove unused js overrides
+ * Prevent window randomization on connecting a monitor
+ * Preserve file permissions of downloaded spices
+ * cinnamon theme: fix expo-workspaces-name-entry
+ * cornerbar: Port to Clutter animations
+ * show-desktop: Port to Clutter animations
+ * gwl: Port to Clutter animations
+ * Adds toggle switch to on-screen-keyboard@cinnamon applet to enable/disable keyboard.
+ * util.js: remove unused utility function latinise()
+ * userWidget: Back to using the theme to load the face image.
+ * user applet: handle the symbolic panel icon correctly.
+ * gwl: Fix thumbnails resize on scaled monitors
+ * Show "wired with a padlock" or "wireless with a padlock" icons when a VPN is connected
+ * Add a Science category to the menu.
+ * sound@cinnamon.org: Prevent Muffin from creating sound streams in volume mixer in sound applet
+ * cinnamon-app-system.c: Don't remove an app from running_apps until after emitting the changed signal.
+ * userWidget: Simplify a bit
+ * Embed nemo's layout editor into cinnamon-settings' Actions module.
+ * Prevents Cvc.MixerControl from being loaded more than once
+ * l10n: Generate additional files
+ * l10n: Generate CS module desktop files
+ * l10n: Update POT
+ * xdg-desktop-portal: Don't ship the x-cinnamon-portals.conf file.
+ * PopupSliderMenuItem: Don't track the hover state
+ * window-list: Remove indicators for minimized and tiled windows
+
+- update to 6.0.4:
+ * Move gir files to private path
+ * fixing applet tooltips clipping out the top as well.=
+
+- update to 6.0.3:
+ * fix for applet tooltips clipping outside the screen when they're too close to the bottom.
+ * Show secure connection icon when WireGuard is active
+
+- update to 6.0.2:
+ * menu: Don't resize if the OSK is visible
+ * Check for a workarea collision during actor.show() and shrink or restore to the user size when appropriate.
+ * cs-info: increase inxi verbosity
+ * README.Debian: fix typo
+ * Update .git-blame-ignore-revs
+
+- update to 6.0.1:
+ * main.js: Don't initialize monitorLabeler in an x11 session.
+ * Update bug report template with Wayland issue tracker
+ * cinnamon-global/clipboard: use the MetaDisplay's selection object.
+ * fix: install actions from the correct folder
+ * improve xlet download and autostart run icons
+ * Fix Main.activateWindow() for windows with normal transient children
+ * actions: Ignore miscellaneous files in the install folder.
+ * l10n: Update cs modules
+ * cinnamon-settings-users: Fix special characters in pango markup
+ * Update Actions module to show non-Spice Actions
+ * Spices.py: Skip actions when they contain the 'Active' key and its value is false.
+ * Spices.py: catch some possible exceptions when loading legacy actions.
+ * ExtensionCore.py: Render spice-supplied icons correctly in hidpi.
+
-------------------------------------------------------------------
Mon Feb 26 10:46:03 UTC 2024 - Dominique Leuenberger
diff --git a/packages/c/cinnamon/cinnamon.spec b/packages/c/cinnamon/cinnamon.spec
index 2873ce2eb87..edcb834bc7b 100644
--- a/packages/c/cinnamon/cinnamon.spec
+++ b/packages/c/cinnamon/cinnamon.spec
@@ -16,9 +16,9 @@
#
-%define _version 6.0.0
+%define _version 6.2.9
Name: cinnamon
-Version: 6.0.0
+Version: 6.2.9
Release: 0
Summary: GNU/Linux Desktop featuring a traditional layout
License: GPL-2.0-or-later AND LGPL-2.1-only
@@ -55,24 +55,24 @@ BuildRequires: pkgconfig
BuildRequires: python3-devel
BuildRequires: python3-xml
BuildRequires: update-desktop-files
-BuildRequires: pkgconfig(cinnamon-desktop) >= %{_version}
-BuildRequires: pkgconfig(cjs-1.0) >= %{_version}
+BuildRequires: pkgconfig(cinnamon-desktop) >= 6.2.0
+BuildRequires: pkgconfig(cjs-1.0) >= 6.0.0
BuildRequires: pkgconfig(dbus-glib-1)
BuildRequires: pkgconfig(gobject-introspection-1.0)
BuildRequires: pkgconfig(gstreamer-1.0)
BuildRequires: pkgconfig(libcinnamon-menu-3.0)
-BuildRequires: pkgconfig(libmuffin-0) >= %{_version}
+BuildRequires: pkgconfig(libmuffin-0) >= 6.2.0
BuildRequires: pkgconfig(libsoup-2.4)
BuildRequires: pkgconfig(libstartup-notification-1.0)
BuildRequires: pkgconfig(polkit-agent-1)
BuildRequires: pkgconfig(xapp)
Requires: %{name}-gschemas = %{version}
Requires: adwaita-icon-theme
-Requires: cinnamon-control-center-common >= %{_version}
-Requires: cinnamon-screensaver >= %{_version}
-Requires: cinnamon-session >= %{_version}
-Requires: cinnamon-settings-daemon >= %{_version}
-Requires: cjs >= %{_version}
+Requires: cinnamon-control-center-common >= 6.2.0
+Requires: cinnamon-screensaver >= 6.0.3
+Requires: cinnamon-session >= 6.2.1
+Requires: cinnamon-settings-daemon >= 6.2.0
+Requires: cjs >= 6.0.0
Requires: cups-pk-helper
Requires: dbus-1
Requires: gettext-runtime
@@ -80,8 +80,8 @@ Requires: glib2-tools
# gkbd-capplet / gkbd-keyboard-display.
Requires: gnomekbd-tools
Requires: iso-country-flags-png
-Requires: libcinnamon-desktop-data >= %{_version}
-Requires: muffin >= %{_version}
+Requires: libcinnamon-desktop-data >= 6.2.0
+Requires: muffin >= 6.2.0
Requires: nemo
Requires: pkgconfig
Requires: polkit-gnome
diff --git a/packages/c/cockpit/.files b/packages/c/cockpit/.files
index f144728d9ac..5ec5a4e82df 100644
Binary files a/packages/c/cockpit/.files and b/packages/c/cockpit/.files differ
diff --git a/packages/c/cockpit/.rev b/packages/c/cockpit/.rev
index 7ed223a5d85..3b36fe928fa 100644
--- a/packages/c/cockpit/.rev
+++ b/packages/c/cockpit/.rev
@@ -537,4 +537,21 @@
fix changes file to not delete a changes entry for Factory (forwarded request 1192616 from jzerebecki)
1192625
+
+ 8c7e96fb7462f7ee32f157849c0e5058
+ 322
+
+ anag+factory
+ - remove requires on pam_oath completely. It will be re-introduced
+ later when it works with optional enrollment
+
+- add 0005-cockpit-ws-user-remove-default-deps.patch (bsc#1229146)
+
+- new version 322:
+ * shell: Deprecate host switcher
+ * files: Permissions column in details view
+- suse_docs.patch: refreshed
+For details, see https://cockpit-project.org/blog/cockpit-322.html
+ 1194919
+
diff --git a/packages/c/cockpit/0005-cockpit-ws-user-remove-default-deps.patch b/packages/c/cockpit/0005-cockpit-ws-user-remove-default-deps.patch
new file mode 100644
index 00000000000..b84d02210c4
--- /dev/null
+++ b/packages/c/cockpit/0005-cockpit-ws-user-remove-default-deps.patch
@@ -0,0 +1,11 @@
+--- pkg/src/systemd/cockpit-ws-user.service
++++ pkg/src/systemd/cockpit-ws-user.service
+@@ -1,6 +1,8 @@
+ [Unit]
+ Description=Dynamic user for cockpit-ws
+ Documentation=man:cockpit-ws(8)
++# avoid dependency loop with basic.target/sockets.target shutdown
++DefaultDependencies=no
+ BindsTo=cockpit.service
+
+ [Service]
diff --git a/packages/c/cockpit/_scmsync.obsinfo b/packages/c/cockpit/_scmsync.obsinfo
new file mode 100644
index 00000000000..74d121b1e01
--- /dev/null
+++ b/packages/c/cockpit/_scmsync.obsinfo
@@ -0,0 +1,4 @@
+mtime: 1724160305
+commit: 14257e4afc4b4e4056aa2c0ded35bcd58557bbf7e3bce531cf68bd67440ac9cb
+url: https://src.opensuse.org/cockpit/cockpit.git
+revision: 14257e4afc4b4e4056aa2c0ded35bcd58557bbf7e3bce531cf68bd67440ac9cb
diff --git a/packages/c/cockpit/build.specials.obscpio b/packages/c/cockpit/build.specials.obscpio
new file mode 120000
index 00000000000..70e4591b777
--- /dev/null
+++ b/packages/c/cockpit/build.specials.obscpio
@@ -0,0 +1 @@
+/ipfs/bafkreibsfvwnm7a36dx4ifvhmeb77eurm2a7nysybcp3msl42wqigf5dwe
\ No newline at end of file
diff --git a/packages/c/cockpit/cockpit-321.tar b/packages/c/cockpit/cockpit-321.tar
deleted file mode 120000
index fbc5a1201ce..00000000000
--- a/packages/c/cockpit/cockpit-321.tar
+++ /dev/null
@@ -1 +0,0 @@
-/ipfs/bafybeicwdis2rx7wqcohyrh5qf3ybuv4jxpahxustxrshiijd7e4gdzhva
\ No newline at end of file
diff --git a/packages/c/cockpit/cockpit-322.tar.gz b/packages/c/cockpit/cockpit-322.tar.gz
new file mode 120000
index 00000000000..a313011b583
--- /dev/null
+++ b/packages/c/cockpit/cockpit-322.tar.gz
@@ -0,0 +1 @@
+/ipfs/bafybeigpgrxszc4jbvpylawjl72zsbwsxultmbbbvqlsvnqm56ke34uelm
\ No newline at end of file
diff --git a/packages/c/cockpit/cockpit.changes b/packages/c/cockpit/cockpit.changes
index 3c93cf1fcb0..aa1de10fb9e 100644
--- a/packages/c/cockpit/cockpit.changes
+++ b/packages/c/cockpit/cockpit.changes
@@ -1,3 +1,24 @@
+-------------------------------------------------------------------
+Tue Aug 20 13:24:06 UTC 2024 - Adam Majer
+
+- remove requires on pam_oath completely. It will be re-introduced
+ later when it works with optional enrollment
+
+-------------------------------------------------------------------
+Mon Aug 20 11:44:33 UTC 2024 - Alice Brooks
+
+- add 0005-cockpit-ws-user-remove-default-deps.patch (bsc#1229146)
+
+-------------------------------------------------------------------
+Mon Aug 12 13:47:26 UTC 2024 - Luna D Dragon
+
+- new version 322:
+ * shell: Deprecate host switcher
+ * files: Permissions column in details view
+- suse_docs.patch: refreshed
+
+For details, see https://cockpit-project.org/blog/cockpit-322.html
+
-------------------------------------------------------------------
Thu Aug 8 12:21:51 UTC 2024 - Jan Zerebecki
@@ -15,6 +36,7 @@ Sat Aug 7 09:37:00 UTC 2024 - pallas wept
- Recommend cockpit-packagekit if zypper is installed
+-------------------------------------------------------------------
Wed Aug 7 09:36:58 UTC 2024 - Jan Zerebecki
- load pam_oath for optional TOTP for authentication
diff --git a/packages/c/cockpit/cockpit.spec b/packages/c/cockpit/cockpit.spec
index bb3eafd68d9..79cde4090b6 100644
--- a/packages/c/cockpit/cockpit.spec
+++ b/packages/c/cockpit/cockpit.spec
@@ -1,4 +1,3 @@
-#
# Copyright (C) 2014-2020 Red Hat, Inc.
#
# Cockpit is free software; you can redistribute it and/or modify it
@@ -50,9 +49,9 @@ Summary: Web Console for Linux servers
License: LGPL-2.1-or-later
URL: https://cockpit-project.org/
-Version: 321
+Version: 322
Release: 0
-Source0: cockpit-%{version}.tar
+Source0: cockpit-%{version}.tar.gz
Source1: cockpit.pam
Source2: cockpit-rpmlintrc
Source3: cockpit-suse-theme.tar
@@ -73,6 +72,7 @@ Patch102: 0002-selinux-temporary-remove-setroubleshoot-section.patch
Patch103: 0004-leap-gnu18-removal.patch
Patch104: selinux_libdir.patch
Patch105: fix-libexecdir.patch
+Patch106: 0005-cockpit-ws-user-remove-default-deps.patch
%define build_all 1
%if 0%{?rhel} == 8 && 0%{?epel} == 0 && !0%{?build_all}
@@ -113,6 +113,11 @@ ExcludeArch: %{ix86}
%endif
%endif
+%define enable_multihost 1
+%if 0%{?fedora} >= 41 || 0%{?rhel} >= 10
+%define enable_multihost 0
+%endif
+
%if 0%{?suse_version} == 0 || 0%{?suse_version} > 1500
# Ship custom SELinux policy
%define selinuxtype targeted
@@ -223,6 +228,7 @@ BuildRequires: python3-tox-current-env
%patch -P 3 -p1
%patch -P 4 -p1
%patch -P 5 -p1
+%patch -P 106 -p1
# SLE Micro specific patches
%if 0%{?is_smo}
@@ -262,6 +268,9 @@ autoreconf -fvi -I tools
%if %{build_pcp} == 0
--disable-pcp \
%endif
+%if %{enable_multihost}
+ --enable-multihost \
+%endif
%if 0%{?with_selinux}
make -f /usr/share/selinux/devel/Makefile cockpit.pp
diff --git a/packages/c/cockpit/node_modules.obscpio b/packages/c/cockpit/node_modules.obscpio
index 84ffbbe1985..9eb721190b0 120000
--- a/packages/c/cockpit/node_modules.obscpio
+++ b/packages/c/cockpit/node_modules.obscpio
@@ -1 +1 @@
-/ipfs/bafybeib6pjtoumwun66lmssl6ake7enci5nunuc2i6u3cvtdtsimi3yrgm
\ No newline at end of file
+/ipfs/bafybeihea5gnc7jnvkkbmelforwcbvvmfkw5dozdnca242o267zu4okwzu
\ No newline at end of file
diff --git a/packages/c/cockpit/node_modules.spec.inc b/packages/c/cockpit/node_modules.spec.inc
index 63032e8a95c..b1f44e06ae0 100644
--- a/packages/c/cockpit/node_modules.spec.inc
+++ b/packages/c/cockpit/node_modules.spec.inc
@@ -19,436 +19,431 @@ Source1017: https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-
Source1018: https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#/@nodelib-fs.stat-2.0.5.tgz
Source1019: https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#/@nodelib-fs.walk-1.2.8.tgz
Source1020: https://registry.npmjs.org/@patternfly/patternfly/-/patternfly-5.3.1.tgz#/@patternfly-patternfly-5.3.1.tgz
-Source1021: https://registry.npmjs.org/@patternfly/react-core/-/react-core-5.3.3.tgz#/@patternfly-react-core-5.3.3.tgz
+Source1021: https://registry.npmjs.org/@patternfly/react-core/-/react-core-5.3.4.tgz#/@patternfly-react-core-5.3.4.tgz
Source1022: https://registry.npmjs.org/@patternfly/react-icons/-/react-icons-5.3.2.tgz#/@patternfly-react-icons-5.3.2.tgz
Source1023: https://registry.npmjs.org/@patternfly/react-styles/-/react-styles-5.3.1.tgz#/@patternfly-react-styles-5.3.1.tgz
-Source1024: https://registry.npmjs.org/@patternfly/react-table/-/react-table-5.3.3.tgz#/@patternfly-react-table-5.3.3.tgz
+Source1024: https://registry.npmjs.org/@patternfly/react-table/-/react-table-5.3.4.tgz#/@patternfly-react-table-5.3.4.tgz
Source1025: https://registry.npmjs.org/@patternfly/react-tokens/-/react-tokens-5.3.1.tgz#/@patternfly-react-tokens-5.3.1.tgz
Source1026: https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz#/@types-json5-0.0.29.tgz
Source1027: https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz#/@types-prop-types-15.7.12.tgz
Source1028: https://registry.npmjs.org/@types/qunit/-/qunit-2.19.10.tgz#/@types-qunit-2.19.10.tgz
Source1029: https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz#/@types-react-18.3.3.tgz
Source1030: https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz#/@types-react-dom-18.3.0.tgz
-Source1031: https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.15.0.tgz#/@typescript-eslint-eslint-plugin-7.15.0.tgz
-Source1032: https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.16.0.tgz#/@typescript-eslint-parser-7.16.0.tgz
-Source1033: https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.15.0.tgz#/@typescript-eslint-scope-manager-7.15.0.tgz
-Source1034: https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.16.0.tgz#/@typescript-eslint-scope-manager-7.16.0.tgz
-Source1035: https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.15.0.tgz#/@typescript-eslint-type-utils-7.15.0.tgz
-Source1036: https://registry.npmjs.org/@typescript-eslint/types/-/types-7.15.0.tgz#/@typescript-eslint-types-7.15.0.tgz
-Source1037: https://registry.npmjs.org/@typescript-eslint/types/-/types-7.16.0.tgz#/@typescript-eslint-types-7.16.0.tgz
-Source1038: https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.15.0.tgz#/@typescript-eslint-typescript-estree-7.15.0.tgz
-Source1039: https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.16.0.tgz#/@typescript-eslint-typescript-estree-7.16.0.tgz
-Source1040: https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.15.0.tgz#/@typescript-eslint-utils-7.15.0.tgz
-Source1041: https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.15.0.tgz#/@typescript-eslint-visitor-keys-7.15.0.tgz
-Source1042: https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.16.0.tgz#/@typescript-eslint-visitor-keys-7.16.0.tgz
-Source1043: https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#/@ungap-structured-clone-1.2.0.tgz
-Source1044: https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz#/abort-controller-3.0.0.tgz
-Source1045: https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz#/acorn-8.12.1.tgz
-Source1046: https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz#/acorn-jsx-5.3.2.tgz
-Source1047: https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz#/ajv-6.12.6.tgz
-Source1048: https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz#/ajv-8.16.0.tgz
-Source1049: https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.1.tgz#/ansi-escapes-6.2.1.tgz
-Source1050: https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz#/ansi-regex-5.0.1.tgz
-Source1051: https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz#/ansi-regex-6.0.1.tgz
-Source1052: https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz#/ansi-styles-3.2.1.tgz
-Source1053: https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz#/ansi-styles-4.3.0.tgz
-Source1054: https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz#/anymatch-3.1.3.tgz
-Source1055: https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz#/argparse-1.0.10.tgz
-Source1056: https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz#/argparse-2.0.1.tgz
-Source1057: https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz#/aria-query-5.1.3.tgz
-Source1058: https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#/array-buffer-byte-length-1.0.1.tgz
-Source1059: https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz#/array-includes-3.1.8.tgz
-Source1060: https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz#/array-union-2.1.0.tgz
-Source1061: https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz#/array.prototype.findlast-1.2.5.tgz
-Source1062: https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz#/array.prototype.findlastindex-1.2.5.tgz
-Source1063: https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#/array.prototype.flat-1.3.2.tgz
-Source1064: https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#/array.prototype.flatmap-1.3.2.tgz
-Source1065: https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz#/array.prototype.toreversed-1.1.2.tgz
-Source1066: https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz#/array.prototype.tosorted-1.1.4.tgz
-Source1067: https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#/arraybuffer.prototype.slice-1.0.3.tgz
-Source1068: https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz#/ast-types-flow-0.0.8.tgz
-Source1069: https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz#/astral-regex-2.0.0.tgz
-Source1070: https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz#/attr-accept-2.2.2.tgz
-Source1071: https://registry.npmjs.org/autolinker/-/autolinker-3.16.2.tgz#/autolinker-3.16.2.tgz
-Source1072: https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#/available-typed-arrays-1.0.7.tgz
-Source1073: https://registry.npmjs.org/axe-core/-/axe-core-4.9.1.tgz#/axe-core-4.9.1.tgz
-Source1074: https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz#/axobject-query-3.1.1.tgz
-Source1075: https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz#/balanced-match-1.0.2.tgz
-Source1076: https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz#/balanced-match-2.0.0.tgz
-Source1077: https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz#/base64-js-1.5.1.tgz
-Source1078: https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz#/binary-extensions-2.3.0.tgz
-Source1079: https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz#/brace-expansion-1.1.11.tgz
-Source1080: https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz#/brace-expansion-2.0.1.tgz
-Source1081: https://registry.npmjs.org/braces/-/braces-3.0.3.tgz#/braces-3.0.3.tgz
-Source1082: https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz#/buffer-6.0.3.tgz
-Source1083: https://registry.npmjs.org/buffer-builder/-/buffer-builder-0.2.0.tgz#/buffer-builder-0.2.0.tgz
-Source1084: https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz#/builtin-modules-3.3.0.tgz
-Source1085: https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz#/builtins-5.1.0.tgz
-Source1086: https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz#/call-bind-1.0.7.tgz
-Source1087: https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz#/callsites-3.1.0.tgz
-Source1088: https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz#/chalk-2.4.2.tgz
-Source1089: https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz#/chalk-4.1.2.tgz
-Source1090: https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz#/chalk-5.3.0.tgz
-Source1091: https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz#/chokidar-3.6.0.tgz
-Source1092: https://registry.npmjs.org/chrome-remote-interface/-/chrome-remote-interface-0.33.0.tgz#/chrome-remote-interface-0.33.0.tgz
-Source1093: https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz#/color-convert-1.9.3.tgz
-Source1094: https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz#/color-convert-2.0.1.tgz
-Source1095: https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz#/color-name-1.1.3.tgz
-Source1096: https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz#/color-name-1.1.4.tgz
-Source1097: https://registry.npmjs.org/colord/-/colord-2.9.3.tgz#/colord-2.9.3.tgz
-Source1098: https://registry.npmjs.org/commander/-/commander-2.11.0.tgz#/commander-2.11.0.tgz
-Source1099: https://registry.npmjs.org/commander/-/commander-7.2.0.tgz#/commander-7.2.0.tgz
-Source1100: https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#/concat-map-0.0.1.tgz
-Source1101: https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz#/content-type-1.0.5.tgz
-Source1102: https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz#/cosmiconfig-9.0.0.tgz
-Source1103: https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz#/cross-spawn-7.0.3.tgz
-Source1104: https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.2.tgz#/css-functions-list-3.2.2.tgz
-Source1105: https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz#/css-tree-2.3.1.tgz
-Source1106: https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz#/cssesc-3.0.0.tgz
-Source1107: https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz#/csstype-3.1.3.tgz
-Source1108: https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#/damerau-levenshtein-1.0.8.tgz
-Source1109: https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz#/data-view-buffer-1.0.1.tgz
-Source1110: https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz#/data-view-byte-length-1.0.1.tgz
-Source1111: https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz#/data-view-byte-offset-1.0.0.tgz
-Source1112: https://registry.npmjs.org/debug/-/debug-3.2.7.tgz#/debug-3.2.7.tgz
-Source1113: https://registry.npmjs.org/debug/-/debug-4.3.5.tgz#/debug-4.3.5.tgz
-Source1114: https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz#/deep-equal-2.2.3.tgz
-Source1115: https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz#/deep-is-0.1.4.tgz
-Source1116: https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz#/define-data-property-1.1.4.tgz
-Source1117: https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz#/define-properties-1.2.1.tgz
-Source1118: https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz#/dequal-2.0.3.tgz
-Source1119: https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz#/dir-glob-3.0.1.tgz
-Source1120: https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz#/doctrine-2.1.0.tgz
-Source1121: https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz#/doctrine-3.0.0.tgz
-Source1122: https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz#/emoji-regex-10.3.0.tgz
-Source1123: https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz#/emoji-regex-8.0.0.tgz
-Source1124: https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz#/emoji-regex-9.2.2.tgz
-Source1125: https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz#/encoding-0.1.13.tgz
-Source1126: https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz#/env-paths-2.2.1.tgz
-Source1127: https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz#/error-ex-1.3.2.tgz
-Source1128: https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz#/es-abstract-1.23.3.tgz
-Source1129: https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz#/es-define-property-1.0.0.tgz
-Source1130: https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz#/es-errors-1.3.0.tgz
-Source1131: https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz#/es-get-iterator-1.1.3.tgz
-Source1132: https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz#/es-iterator-helpers-1.0.19.tgz
-Source1133: https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz#/es-object-atoms-1.0.0.tgz
-Source1134: https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#/es-set-tostringtag-2.0.3.tgz
-Source1135: https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#/es-shim-unscopables-1.0.2.tgz
-Source1136: https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz#/es-to-primitive-1.2.1.tgz
-Source1137: https://registry.npmjs.org/esbuild/-/esbuild-0.23.0.tgz#/esbuild-0.23.0.tgz
-Source1138: https://registry.npmjs.org/esbuild-plugin-copy/-/esbuild-plugin-copy-2.1.1.tgz#/esbuild-plugin-copy-2.1.1.tgz
-Source1139: https://registry.npmjs.org/esbuild-plugin-replace/-/esbuild-plugin-replace-1.4.0.tgz#/esbuild-plugin-replace-1.4.0.tgz
-Source1140: https://registry.npmjs.org/esbuild-sass-plugin/-/esbuild-sass-plugin-3.3.1.tgz#/esbuild-sass-plugin-3.3.1.tgz
-Source1141: https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.23.0.tgz#/esbuild-wasm-0.23.0.tgz
-Source1142: https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#/escape-string-regexp-1.0.5.tgz
-Source1143: https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#/escape-string-regexp-4.0.0.tgz
-Source1144: https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz#/eslint-8.57.0.tgz
-Source1145: https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz#/eslint-compat-utils-0.5.1.tgz
-Source1146: https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz#/eslint-config-standard-17.1.0.tgz
-Source1147: https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-11.0.0.tgz#/eslint-config-standard-jsx-11.0.0.tgz
-Source1148: https://registry.npmjs.org/eslint-config-standard-react/-/eslint-config-standard-react-13.0.0.tgz#/eslint-config-standard-react-13.0.0.tgz
-Source1149: https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#/eslint-import-resolver-node-0.3.9.tgz
-Source1150: https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz#/eslint-module-utils-2.8.1.tgz
-Source1151: https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz#/eslint-plugin-es-3.0.1.tgz
-Source1152: https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.8.0.tgz#/eslint-plugin-es-x-7.8.0.tgz
-Source1153: https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#/eslint-plugin-import-2.29.1.tgz
-Source1154: https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.9.0.tgz#/eslint-plugin-jsx-a11y-6.9.0.tgz
-Source1155: https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.6.2.tgz#/eslint-plugin-n-16.6.2.tgz
-Source1156: https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz#/eslint-plugin-node-11.1.0.tgz
-Source1157: https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.4.0.tgz#/eslint-plugin-promise-6.4.0.tgz
-Source1158: https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.3.tgz#/eslint-plugin-react-7.34.3.tgz
-Source1159: https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz#/eslint-plugin-react-hooks-4.6.2.tgz
-Source1160: https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz#/eslint-scope-7.2.2.tgz
-Source1161: https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz#/eslint-utils-2.1.0.tgz
-Source1162: https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#/eslint-visitor-keys-1.3.0.tgz
-Source1163: https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#/eslint-visitor-keys-3.4.3.tgz
-Source1164: https://registry.npmjs.org/espree/-/espree-9.6.1.tgz#/espree-9.6.1.tgz
-Source1165: https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz#/esquery-1.6.0.tgz
-Source1166: https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz#/esrecurse-4.3.0.tgz
-Source1167: https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz#/estraverse-5.3.0.tgz
-Source1168: https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz#/esutils-2.0.3.tgz
-Source1169: https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz#/event-target-shim-5.0.1.tgz
-Source1170: https://registry.npmjs.org/events/-/events-3.3.0.tgz#/events-3.3.0.tgz
-Source1171: https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#/fast-deep-equal-3.1.3.tgz
-Source1172: https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz#/fast-glob-3.3.2.tgz
-Source1173: https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#/fast-json-stable-stringify-2.1.0.tgz
-Source1174: https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#/fast-levenshtein-2.0.6.tgz
-Source1175: https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#/fastest-levenshtein-1.0.16.tgz
-Source1176: https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz#/fastq-1.17.1.tgz
-Source1177: https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz#/file-entry-cache-6.0.1.tgz
-Source1178: https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.0.0.tgz#/file-entry-cache-9.0.0.tgz
-Source1179: https://registry.npmjs.org/file-selector/-/file-selector-0.6.0.tgz#/file-selector-0.6.0.tgz
-Source1180: https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz#/fill-range-7.1.1.tgz
-Source1181: https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz#/find-up-5.0.0.tgz
-Source1182: https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz#/flat-cache-3.2.0.tgz
-Source1183: https://registry.npmjs.org/flat-cache/-/flat-cache-5.0.0.tgz#/flat-cache-5.0.0.tgz
-Source1184: https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz#/flatted-3.3.1.tgz
-Source1185: https://registry.npmjs.org/focus-trap/-/focus-trap-7.5.2.tgz#/focus-trap-7.5.2.tgz
-Source1186: https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz#/for-each-0.3.3.tgz
-Source1187: https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz#/fs-extra-10.1.0.tgz
-Source1188: https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#/fs.realpath-1.0.0.tgz
-Source1189: https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz#/function-bind-1.1.2.tgz
-Source1190: https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz#/function.prototype.name-1.1.6.tgz
-Source1191: https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz#/functions-have-names-1.2.3.tgz
-Source1192: https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz#/get-east-asian-width-1.2.0.tgz
-Source1193: https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz#/get-intrinsic-1.2.4.tgz
-Source1194: https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz#/get-symbol-description-1.0.2.tgz
-Source1195: https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.5.tgz#/get-tsconfig-4.7.5.tgz
-Source1196: https://registry.npmjs.org/gettext-parser/-/gettext-parser-8.0.0.tgz#/gettext-parser-8.0.0.tgz
-Source1197: https://registry.npmjs.org/glob/-/glob-7.2.3.tgz#/glob-7.2.3.tgz
-Source1198: https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz#/glob-parent-5.1.2.tgz
-Source1199: https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz#/glob-parent-6.0.2.tgz
-Source1200: https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz#/global-modules-2.0.0.tgz
-Source1201: https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz#/global-prefix-3.0.0.tgz
-Source1202: https://registry.npmjs.org/globals/-/globals-13.24.0.tgz#/globals-13.24.0.tgz
-Source1203: https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz#/globalthis-1.0.4.tgz
-Source1204: https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz#/globalyzer-0.1.0.tgz
-Source1205: https://registry.npmjs.org/globby/-/globby-11.1.0.tgz#/globby-11.1.0.tgz
-Source1206: https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz#/globjoin-0.1.4.tgz
-Source1207: https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz#/globrex-0.1.2.tgz
-Source1208: https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz#/gopd-1.0.1.tgz
-Source1209: https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz#/graceful-fs-4.2.11.tgz
-Source1210: https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz#/graphemer-1.4.0.tgz
-Source1211: https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz#/has-bigints-1.0.2.tgz
-Source1212: https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz#/has-flag-3.0.0.tgz
-Source1213: https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz#/has-flag-4.0.0.tgz
-Source1214: https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#/has-property-descriptors-1.0.2.tgz
-Source1215: https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz#/has-proto-1.0.3.tgz
-Source1216: https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz#/has-symbols-1.0.3.tgz
-Source1217: https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz#/has-tostringtag-1.0.2.tgz
-Source1218: https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz#/hasown-2.0.2.tgz
-Source1219: https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz#/html-tags-3.3.1.tgz
-Source1220: https://registry.npmjs.org/htmlparser/-/htmlparser-1.7.7.tgz#/htmlparser-1.7.7.tgz
-Source1221: https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz#/iconv-lite-0.6.3.tgz
-Source1222: https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz#/ieee754-1.2.1.tgz
-Source1223: https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz#/ignore-5.3.1.tgz
-Source1224: https://registry.npmjs.org/immutable/-/immutable-4.3.6.tgz#/immutable-4.3.6.tgz
-Source1225: https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz#/import-fresh-3.3.0.tgz
-Source1226: https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz#/imurmurhash-0.1.4.tgz
-Source1227: https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz#/inflight-1.0.6.tgz
-Source1228: https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz#/inherits-2.0.4.tgz
-Source1229: https://registry.npmjs.org/ini/-/ini-1.3.8.tgz#/ini-1.3.8.tgz
-Source1230: https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz#/internal-slot-1.0.7.tgz
-Source1231: https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.5.0.tgz#/irregular-plurals-3.5.0.tgz
-Source1232: https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz#/is-arguments-1.1.1.tgz
-Source1233: https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz#/is-array-buffer-3.0.4.tgz
-Source1234: https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz#/is-arrayish-0.2.1.tgz
-Source1235: https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz#/is-async-function-2.0.0.tgz
-Source1236: https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz#/is-bigint-1.0.4.tgz
-Source1237: https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz#/is-binary-path-2.1.0.tgz
-Source1238: https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz#/is-boolean-object-1.1.2.tgz
-Source1239: https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz#/is-builtin-module-3.2.1.tgz
-Source1240: https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz#/is-callable-1.2.7.tgz
-Source1241: https://registry.npmjs.org/is-core-module/-/is-core-module-2.14.0.tgz#/is-core-module-2.14.0.tgz
-Source1242: https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz#/is-data-view-1.0.1.tgz
-Source1243: https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz#/is-date-object-1.0.5.tgz
-Source1244: https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz#/is-extglob-2.1.1.tgz
-Source1245: https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz#/is-finalizationregistry-1.0.2.tgz
-Source1246: https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#/is-fullwidth-code-point-3.0.0.tgz
-Source1247: https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz#/is-generator-function-1.0.10.tgz
-Source1248: https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz#/is-glob-4.0.3.tgz
-Source1249: https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz#/is-map-2.0.3.tgz
-Source1250: https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz#/is-negative-zero-2.0.3.tgz
-Source1251: https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz#/is-number-7.0.0.tgz
-Source1252: https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz#/is-number-object-1.0.7.tgz
-Source1253: https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz#/is-path-inside-3.0.3.tgz
-Source1254: https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz#/is-plain-object-5.0.0.tgz
-Source1255: https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz#/is-regex-1.1.4.tgz
-Source1256: https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz#/is-set-2.0.3.tgz
-Source1257: https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#/is-shared-array-buffer-1.0.3.tgz
-Source1258: https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz#/is-string-1.0.7.tgz
-Source1259: https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz#/is-symbol-1.0.4.tgz
-Source1260: https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz#/is-typed-array-1.1.13.tgz
-Source1261: https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz#/is-unicode-supported-1.3.0.tgz
-Source1262: https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz#/is-weakmap-2.0.2.tgz
-Source1263: https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz#/is-weakref-1.0.2.tgz
-Source1264: https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz#/is-weakset-2.0.3.tgz
-Source1265: https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz#/isarray-2.0.5.tgz
-Source1266: https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz#/isexe-2.0.0.tgz
-Source1267: https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz#/iterator.prototype-1.1.2.tgz
-Source1268: https://registry.npmjs.org/jed/-/jed-1.1.1.tgz#/jed-1.1.1.tgz
-Source1269: https://registry.npmjs.org/js-sha1/-/js-sha1-0.7.0.tgz#/js-sha1-0.7.0.tgz
-Source1270: https://registry.npmjs.org/js-sha256/-/js-sha256-0.11.0.tgz#/js-sha256-0.11.0.tgz
-Source1271: https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz#/js-tokens-4.0.0.tgz
-Source1272: https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz#/js-yaml-4.1.0.tgz
-Source1273: https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz#/json-buffer-3.0.1.tgz
-Source1274: https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#/json-parse-even-better-errors-2.3.1.tgz
-Source1275: https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#/json-schema-traverse-0.4.1.tgz
-Source1276: https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#/json-schema-traverse-1.0.0.tgz
-Source1277: https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#/json-stable-stringify-without-jsonify-1.0.1.tgz
-Source1278: https://registry.npmjs.org/json5/-/json5-1.0.2.tgz#/json5-1.0.2.tgz
-Source1279: https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz#/jsonfile-6.1.0.tgz
-Source1280: https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#/jsx-ast-utils-3.3.5.tgz
-Source1281: https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz#/keyv-4.5.4.tgz
-Source1282: https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz#/kind-of-6.0.3.tgz
-Source1283: https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.31.0.tgz#/known-css-properties-0.31.0.tgz
-Source1284: https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.34.0.tgz#/known-css-properties-0.34.0.tgz
-Source1285: https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz#/language-subtag-registry-0.3.23.tgz
-Source1286: https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz#/language-tags-1.0.9.tgz
-Source1287: https://registry.npmjs.org/levn/-/levn-0.4.1.tgz#/levn-0.4.1.tgz
-Source1288: https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz#/lines-and-columns-1.2.4.tgz
-Source1289: https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz#/locate-path-6.0.0.tgz
-Source1290: https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz#/lodash-4.17.21.tgz
-Source1291: https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz#/lodash.merge-4.6.2.tgz
-Source1292: https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz#/lodash.truncate-4.4.2.tgz
-Source1293: https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz#/log-symbols-6.0.0.tgz
-Source1294: https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz#/loose-envify-1.4.0.tgz
-Source1295: https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz#/magic-string-0.25.9.tgz
-Source1296: https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#/mathml-tag-names-2.1.3.tgz
-Source1297: https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz#/mdn-data-2.0.30.tgz
-Source1298: https://registry.npmjs.org/meow/-/meow-13.2.0.tgz#/meow-13.2.0.tgz
-Source1299: https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz#/merge2-1.4.1.tgz
-Source1300: https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz#/micromatch-4.0.7.tgz
-Source1301: https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz#/minimatch-3.1.2.tgz
-Source1302: https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz#/minimatch-9.0.5.tgz
-Source1303: https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz#/minimist-1.2.8.tgz
-Source1304: https://registry.npmjs.org/ms/-/ms-2.1.2.tgz#/ms-2.1.2.tgz
-Source1305: https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz#/nanoid-3.3.7.tgz
-Source1306: https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz#/natural-compare-1.4.0.tgz
-Source1307: https://registry.npmjs.org/node-watch/-/node-watch-0.7.3.tgz#/node-watch-0.7.3.tgz
-Source1308: https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz#/normalize-path-3.0.0.tgz
-Source1309: https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz#/object-assign-4.1.1.tgz
-Source1310: https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz#/object-inspect-1.13.2.tgz
-Source1311: https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz#/object-is-1.1.6.tgz
-Source1312: https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz#/object-keys-1.1.1.tgz
-Source1313: https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz#/object.assign-4.1.5.tgz
-Source1314: https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz#/object.entries-1.1.8.tgz
-Source1315: https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz#/object.fromentries-2.0.8.tgz
-Source1316: https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz#/object.groupby-1.0.3.tgz
-Source1317: https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz#/object.hasown-1.1.4.tgz
-Source1318: https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz#/object.values-1.2.0.tgz
-Source1319: https://registry.npmjs.org/once/-/once-1.4.0.tgz#/once-1.4.0.tgz
-Source1320: https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz#/optionator-0.9.4.tgz
-Source1321: https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz#/p-limit-3.1.0.tgz
-Source1322: https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz#/p-locate-5.0.0.tgz
-Source1323: https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz#/parent-module-1.0.1.tgz
-Source1324: https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz#/parse-json-5.2.0.tgz
-Source1325: https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz#/path-exists-4.0.0.tgz
-Source1326: https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#/path-is-absolute-1.0.1.tgz
-Source1327: https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz#/path-key-3.1.1.tgz
-Source1328: https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz#/path-parse-1.0.7.tgz
-Source1329: https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz#/path-type-4.0.0.tgz
-Source1330: https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz#/picocolors-1.0.1.tgz
-Source1331: https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz#/picomatch-2.3.1.tgz
-Source1332: https://registry.npmjs.org/plur/-/plur-5.1.0.tgz#/plur-5.1.0.tgz
-Source1333: https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#/possible-typed-array-names-1.0.0.tgz
-Source1334: https://registry.npmjs.org/postcss/-/postcss-8.4.39.tgz#/postcss-8.4.39.tgz
-Source1335: https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz#/postcss-media-query-parser-0.2.3.tgz
-Source1336: https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz#/postcss-resolve-nested-selector-0.1.1.tgz
-Source1337: https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.0.tgz#/postcss-safe-parser-7.0.0.tgz
-Source1338: https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz#/postcss-scss-4.0.9.tgz
-Source1339: https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz#/postcss-selector-parser-6.1.0.tgz
-Source1340: https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#/postcss-value-parser-4.2.0.tgz
-Source1341: https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz#/prelude-ls-1.2.1.tgz
-Source1342: https://registry.npmjs.org/process/-/process-0.11.10.tgz#/process-0.11.10.tgz
-Source1343: https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz#/prop-types-15.8.1.tgz
-Source1344: https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz#/punycode-2.3.1.tgz
-Source1345: https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz#/queue-microtask-1.2.3.tgz
-Source1346: https://registry.npmjs.org/qunit/-/qunit-2.21.0.tgz#/qunit-2.21.0.tgz
-Source1347: https://registry.npmjs.org/qunit-tap/-/qunit-tap-1.5.1.tgz#/qunit-tap-1.5.1.tgz
-Source1348: https://registry.npmjs.org/react/-/react-18.3.1.tgz#/react-18.3.1.tgz
-Source1349: https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz#/react-dom-18.3.1.tgz
-Source1350: https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.2.3.tgz#/react-dropzone-14.2.3.tgz
-Source1351: https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz#/react-is-16.13.1.tgz
-Source1352: https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz#/readable-stream-4.5.2.tgz
-Source1353: https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz#/readdirp-3.6.0.tgz
-Source1354: https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz#/reflect.getprototypeof-1.0.6.tgz
-Source1355: https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#/regexp.prototype.flags-1.5.2.tgz
-Source1356: https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz#/regexpp-3.2.0.tgz
-Source1357: https://registry.npmjs.org/remarkable/-/remarkable-2.0.1.tgz#/remarkable-2.0.1.tgz
-Source1358: https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz#/require-from-string-2.0.2.tgz
-Source1359: https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz#/resolve-1.22.8.tgz
-Source1360: https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz#/resolve-2.0.0-next.5.tgz
-Source1361: https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz#/resolve-from-4.0.0.tgz
-Source1362: https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz#/resolve-from-5.0.0.tgz
-Source1363: https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#/resolve-pkg-maps-1.0.0.tgz
-Source1364: https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz#/reusify-1.0.4.tgz
-Source1365: https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz#/rimraf-3.0.2.tgz
-Source1366: https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz#/run-parallel-1.2.0.tgz
-Source1367: https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz#/rxjs-7.8.1.tgz
-Source1368: https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz#/safe-array-concat-1.1.2.tgz
-Source1369: https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz#/safe-buffer-5.2.1.tgz
-Source1370: https://registry.npmjs.org/safe-identifier/-/safe-identifier-0.4.2.tgz#/safe-identifier-0.4.2.tgz
-Source1371: https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz#/safe-regex-test-1.0.3.tgz
-Source1372: https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz#/safer-buffer-2.1.2.tgz
-Source1373: https://registry.npmjs.org/sass/-/sass-1.77.6.tgz#/sass-1.77.6.tgz
-Source1374: https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.77.5.tgz#/sass-embedded-1.77.5.tgz
-Source1375: https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.77.5.tgz#/sass-embedded-linux-musl-x64-1.77.5.tgz
-Source1376: https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.77.5.tgz#/sass-embedded-linux-x64-1.77.5.tgz
-Source1377: https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz#/scheduler-0.23.2.tgz
-Source1378: https://registry.npmjs.org/semver/-/semver-6.3.1.tgz#/semver-6.3.1.tgz
-Source1379: https://registry.npmjs.org/semver/-/semver-7.6.2.tgz#/semver-7.6.2.tgz
-Source1380: https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz#/set-function-length-1.2.2.tgz
-Source1381: https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz#/set-function-name-2.0.2.tgz
-Source1382: https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz#/shebang-command-2.0.0.tgz
-Source1383: https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz#/shebang-regex-3.0.0.tgz
-Source1384: https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz#/side-channel-1.0.6.tgz
-Source1385: https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz#/signal-exit-4.1.0.tgz
-Source1386: https://registry.npmjs.org/sizzle/-/sizzle-2.3.10.tgz#/sizzle-2.3.10.tgz
-Source1387: https://registry.npmjs.org/slash/-/slash-3.0.0.tgz#/slash-3.0.0.tgz
-Source1388: https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz#/slice-ansi-4.0.0.tgz
-Source1389: https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz#/source-map-js-1.2.0.tgz
-Source1390: https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#/sourcemap-codec-1.4.8.tgz
-Source1391: https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz#/sprintf-js-1.0.3.tgz
-Source1392: https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#/stop-iteration-iterator-1.0.0.tgz
-Source1393: https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#/string-width-4.2.3.tgz
-Source1394: https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz#/string-width-7.2.0.tgz
-Source1395: https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.0.tgz#/string.prototype.includes-2.0.0.tgz
-Source1396: https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz#/string.prototype.matchall-4.0.11.tgz
-Source1397: https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz#/string.prototype.trim-1.2.9.tgz
-Source1398: https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz#/string.prototype.trimend-1.0.8.tgz
-Source1399: https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#/string.prototype.trimstart-1.0.8.tgz
-Source1400: https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz#/string_decoder-1.3.0.tgz
-Source1401: https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#/strip-ansi-6.0.1.tgz
-Source1402: https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz#/strip-ansi-7.1.0.tgz
-Source1403: https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz#/strip-bom-3.0.0.tgz
-Source1404: https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz#/strip-json-comments-3.1.1.tgz
-Source1405: https://registry.npmjs.org/stylelint/-/stylelint-16.6.1.tgz#/stylelint-16.6.1.tgz
-Source1406: https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-14.0.1.tgz#/stylelint-config-recommended-14.0.1.tgz
-Source1407: https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-14.0.0.tgz#/stylelint-config-recommended-scss-14.0.0.tgz
-Source1408: https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-36.0.0.tgz#/stylelint-config-standard-36.0.0.tgz
-Source1409: https://registry.npmjs.org/stylelint-config-standard-scss/-/stylelint-config-standard-scss-13.1.0.tgz#/stylelint-config-standard-scss-13.1.0.tgz
-Source1410: https://registry.npmjs.org/stylelint-formatter-pretty/-/stylelint-formatter-pretty-4.0.0.tgz#/stylelint-formatter-pretty-4.0.0.tgz
-Source1411: https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-6.4.0.tgz#/stylelint-scss-6.4.0.tgz
-Source1412: https://registry.npmjs.org/stylelint-use-logical-spec/-/stylelint-use-logical-spec-5.0.1.tgz#/stylelint-use-logical-spec-5.0.1.tgz
-Source1413: https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz#/supports-color-5.5.0.tgz
-Source1414: https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz#/supports-color-7.2.0.tgz
-Source1415: https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz#/supports-color-8.1.1.tgz
-Source1416: https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz#/supports-hyperlinks-3.0.0.tgz
-Source1417: https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#/supports-preserve-symlinks-flag-1.0.0.tgz
-Source1418: https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz#/svg-tags-1.0.0.tgz
-Source1419: https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz#/tabbable-6.2.0.tgz
-Source1420: https://registry.npmjs.org/table/-/table-6.8.2.tgz#/table-6.8.2.tgz
-Source1421: https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz#/text-table-0.2.0.tgz
-Source1422: https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-5.0.2.tgz#/throttle-debounce-5.0.2.tgz
-Source1423: https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz#/tiny-glob-0.2.9.tgz
-Source1424: https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz#/to-regex-range-5.0.1.tgz
-Source1425: https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz#/ts-api-utils-1.3.0.tgz
-Source1426: https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#/tsconfig-paths-3.15.0.tgz
-Source1427: https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz#/tslib-2.6.3.tgz
-Source1428: https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz#/type-check-0.4.0.tgz
-Source1429: https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz#/type-fest-0.20.2.tgz
-Source1430: https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#/typed-array-buffer-1.0.2.tgz
-Source1431: https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#/typed-array-byte-length-1.0.1.tgz
-Source1432: https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#/typed-array-byte-offset-1.0.2.tgz
-Source1433: https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz#/typed-array-length-1.0.6.tgz
-Source1434: https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz#/typescript-5.5.3.tgz
-Source1435: https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz#/unbox-primitive-1.0.2.tgz
-Source1436: https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz#/universalify-2.0.1.tgz
-Source1437: https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz#/uri-js-4.4.1.tgz
-Source1438: https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz#/util-deprecate-1.0.2.tgz
-Source1439: https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz#/uuid-9.0.1.tgz
-Source1440: https://registry.npmjs.org/varint/-/varint-6.0.0.tgz#/varint-6.0.0.tgz
-Source1441: https://registry.npmjs.org/which/-/which-1.3.1.tgz#/which-1.3.1.tgz
-Source1442: https://registry.npmjs.org/which/-/which-2.0.2.tgz#/which-2.0.2.tgz
-Source1443: https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#/which-boxed-primitive-1.0.2.tgz
-Source1444: https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz#/which-builtin-type-1.1.3.tgz
-Source1445: https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz#/which-collection-1.0.2.tgz
-Source1446: https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz#/which-typed-array-1.1.15.tgz
-Source1447: https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz#/word-wrap-1.2.5.tgz
-Source1448: https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz#/wrappy-1.0.2.tgz
-Source1449: https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz#/write-file-atomic-5.0.1.tgz
-Source1450: https://registry.npmjs.org/ws/-/ws-7.5.10.tgz#/ws-7.5.10.tgz
-Source1451: https://registry.npmjs.org/xterm/-/xterm-5.3.0.tgz#/xterm-5.3.0.tgz
-Source1452: https://registry.npmjs.org/xterm-addon-canvas/-/xterm-addon-canvas-0.5.0.tgz#/xterm-addon-canvas-0.5.0.tgz
-Source1453: https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz#/yocto-queue-0.1.0.tgz
+Source1031: https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.0.0.tgz#/@typescript-eslint-eslint-plugin-8.0.0.tgz
+Source1032: https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.0.0.tgz#/@typescript-eslint-parser-8.0.0.tgz
+Source1033: https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.0.0.tgz#/@typescript-eslint-scope-manager-8.0.0.tgz
+Source1034: https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.0.0.tgz#/@typescript-eslint-type-utils-8.0.0.tgz
+Source1035: https://registry.npmjs.org/@typescript-eslint/types/-/types-8.0.0.tgz#/@typescript-eslint-types-8.0.0.tgz
+Source1036: https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.0.0.tgz#/@typescript-eslint-typescript-estree-8.0.0.tgz
+Source1037: https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.0.0.tgz#/@typescript-eslint-utils-8.0.0.tgz
+Source1038: https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.0.0.tgz#/@typescript-eslint-visitor-keys-8.0.0.tgz
+Source1039: https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#/@ungap-structured-clone-1.2.0.tgz
+Source1040: https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz#/abort-controller-3.0.0.tgz
+Source1041: https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz#/acorn-8.12.1.tgz
+Source1042: https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz#/acorn-jsx-5.3.2.tgz
+Source1043: https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz#/ajv-6.12.6.tgz
+Source1044: https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz#/ajv-8.17.1.tgz
+Source1045: https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.1.tgz#/ansi-escapes-6.2.1.tgz
+Source1046: https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz#/ansi-regex-5.0.1.tgz
+Source1047: https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz#/ansi-regex-6.0.1.tgz
+Source1048: https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz#/ansi-styles-3.2.1.tgz
+Source1049: https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz#/ansi-styles-4.3.0.tgz
+Source1050: https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz#/anymatch-3.1.3.tgz
+Source1051: https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz#/argparse-1.0.10.tgz
+Source1052: https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz#/argparse-2.0.1.tgz
+Source1053: https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz#/aria-query-5.1.3.tgz
+Source1054: https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#/array-buffer-byte-length-1.0.1.tgz
+Source1055: https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz#/array-includes-3.1.8.tgz
+Source1056: https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz#/array-union-2.1.0.tgz
+Source1057: https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz#/array.prototype.findlast-1.2.5.tgz
+Source1058: https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz#/array.prototype.findlastindex-1.2.5.tgz
+Source1059: https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#/array.prototype.flat-1.3.2.tgz
+Source1060: https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#/array.prototype.flatmap-1.3.2.tgz
+Source1061: https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz#/array.prototype.tosorted-1.1.4.tgz
+Source1062: https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#/arraybuffer.prototype.slice-1.0.3.tgz
+Source1063: https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz#/ast-types-flow-0.0.8.tgz
+Source1064: https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz#/astral-regex-2.0.0.tgz
+Source1065: https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz#/attr-accept-2.2.2.tgz
+Source1066: https://registry.npmjs.org/autolinker/-/autolinker-3.16.2.tgz#/autolinker-3.16.2.tgz
+Source1067: https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#/available-typed-arrays-1.0.7.tgz
+Source1068: https://registry.npmjs.org/axe-core/-/axe-core-4.10.0.tgz#/axe-core-4.10.0.tgz
+Source1069: https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz#/axobject-query-3.1.1.tgz
+Source1070: https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz#/balanced-match-1.0.2.tgz
+Source1071: https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz#/balanced-match-2.0.0.tgz
+Source1072: https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz#/base64-js-1.5.1.tgz
+Source1073: https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz#/binary-extensions-2.3.0.tgz
+Source1074: https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz#/brace-expansion-1.1.11.tgz
+Source1075: https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz#/brace-expansion-2.0.1.tgz
+Source1076: https://registry.npmjs.org/braces/-/braces-3.0.3.tgz#/braces-3.0.3.tgz
+Source1077: https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz#/buffer-6.0.3.tgz
+Source1078: https://registry.npmjs.org/buffer-builder/-/buffer-builder-0.2.0.tgz#/buffer-builder-0.2.0.tgz
+Source1079: https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz#/builtin-modules-3.3.0.tgz
+Source1080: https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz#/builtins-5.1.0.tgz
+Source1081: https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz#/call-bind-1.0.7.tgz
+Source1082: https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz#/callsites-3.1.0.tgz
+Source1083: https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz#/chalk-2.4.2.tgz
+Source1084: https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz#/chalk-4.1.2.tgz
+Source1085: https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz#/chalk-5.3.0.tgz
+Source1086: https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz#/chokidar-3.6.0.tgz
+Source1087: https://registry.npmjs.org/chrome-remote-interface/-/chrome-remote-interface-0.33.0.tgz#/chrome-remote-interface-0.33.0.tgz
+Source1088: https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz#/color-convert-1.9.3.tgz
+Source1089: https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz#/color-convert-2.0.1.tgz
+Source1090: https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz#/color-name-1.1.3.tgz
+Source1091: https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz#/color-name-1.1.4.tgz
+Source1092: https://registry.npmjs.org/colord/-/colord-2.9.3.tgz#/colord-2.9.3.tgz
+Source1093: https://registry.npmjs.org/commander/-/commander-2.11.0.tgz#/commander-2.11.0.tgz
+Source1094: https://registry.npmjs.org/commander/-/commander-7.2.0.tgz#/commander-7.2.0.tgz
+Source1095: https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#/concat-map-0.0.1.tgz
+Source1096: https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz#/content-type-1.0.5.tgz
+Source1097: https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz#/cosmiconfig-9.0.0.tgz
+Source1098: https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz#/cross-spawn-7.0.3.tgz
+Source1099: https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.2.tgz#/css-functions-list-3.2.2.tgz
+Source1100: https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz#/css-tree-2.3.1.tgz
+Source1101: https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz#/cssesc-3.0.0.tgz
+Source1102: https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz#/csstype-3.1.3.tgz
+Source1103: https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#/damerau-levenshtein-1.0.8.tgz
+Source1104: https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz#/data-view-buffer-1.0.1.tgz
+Source1105: https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz#/data-view-byte-length-1.0.1.tgz
+Source1106: https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz#/data-view-byte-offset-1.0.0.tgz
+Source1107: https://registry.npmjs.org/debug/-/debug-3.2.7.tgz#/debug-3.2.7.tgz
+Source1108: https://registry.npmjs.org/debug/-/debug-4.3.6.tgz#/debug-4.3.6.tgz
+Source1109: https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz#/deep-equal-2.2.3.tgz
+Source1110: https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz#/deep-is-0.1.4.tgz
+Source1111: https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz#/define-data-property-1.1.4.tgz
+Source1112: https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz#/define-properties-1.2.1.tgz
+Source1113: https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz#/dequal-2.0.3.tgz
+Source1114: https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz#/dir-glob-3.0.1.tgz
+Source1115: https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz#/doctrine-2.1.0.tgz
+Source1116: https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz#/doctrine-3.0.0.tgz
+Source1117: https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz#/emoji-regex-10.3.0.tgz
+Source1118: https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz#/emoji-regex-8.0.0.tgz
+Source1119: https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz#/emoji-regex-9.2.2.tgz
+Source1120: https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz#/encoding-0.1.13.tgz
+Source1121: https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz#/env-paths-2.2.1.tgz
+Source1122: https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz#/error-ex-1.3.2.tgz
+Source1123: https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz#/es-abstract-1.23.3.tgz
+Source1124: https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz#/es-define-property-1.0.0.tgz
+Source1125: https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz#/es-errors-1.3.0.tgz
+Source1126: https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz#/es-get-iterator-1.1.3.tgz
+Source1127: https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz#/es-iterator-helpers-1.0.19.tgz
+Source1128: https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz#/es-object-atoms-1.0.0.tgz
+Source1129: https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#/es-set-tostringtag-2.0.3.tgz
+Source1130: https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#/es-shim-unscopables-1.0.2.tgz
+Source1131: https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz#/es-to-primitive-1.2.1.tgz
+Source1132: https://registry.npmjs.org/esbuild/-/esbuild-0.23.0.tgz#/esbuild-0.23.0.tgz
+Source1133: https://registry.npmjs.org/esbuild-plugin-copy/-/esbuild-plugin-copy-2.1.1.tgz#/esbuild-plugin-copy-2.1.1.tgz
+Source1134: https://registry.npmjs.org/esbuild-plugin-replace/-/esbuild-plugin-replace-1.4.0.tgz#/esbuild-plugin-replace-1.4.0.tgz
+Source1135: https://registry.npmjs.org/esbuild-sass-plugin/-/esbuild-sass-plugin-3.3.1.tgz#/esbuild-sass-plugin-3.3.1.tgz
+Source1136: https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.23.0.tgz#/esbuild-wasm-0.23.0.tgz
+Source1137: https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#/escape-string-regexp-1.0.5.tgz
+Source1138: https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#/escape-string-regexp-4.0.0.tgz
+Source1139: https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz#/eslint-8.57.0.tgz
+Source1140: https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz#/eslint-compat-utils-0.5.1.tgz
+Source1141: https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz#/eslint-config-standard-17.1.0.tgz
+Source1142: https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-11.0.0.tgz#/eslint-config-standard-jsx-11.0.0.tgz
+Source1143: https://registry.npmjs.org/eslint-config-standard-react/-/eslint-config-standard-react-13.0.0.tgz#/eslint-config-standard-react-13.0.0.tgz
+Source1144: https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#/eslint-import-resolver-node-0.3.9.tgz
+Source1145: https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz#/eslint-module-utils-2.8.1.tgz
+Source1146: https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz#/eslint-plugin-es-3.0.1.tgz
+Source1147: https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.8.0.tgz#/eslint-plugin-es-x-7.8.0.tgz
+Source1148: https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#/eslint-plugin-import-2.29.1.tgz
+Source1149: https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.9.0.tgz#/eslint-plugin-jsx-a11y-6.9.0.tgz
+Source1150: https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.6.2.tgz#/eslint-plugin-n-16.6.2.tgz
+Source1151: https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz#/eslint-plugin-node-11.1.0.tgz
+Source1152: https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.6.0.tgz#/eslint-plugin-promise-6.6.0.tgz
+Source1153: https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.35.0.tgz#/eslint-plugin-react-7.35.0.tgz
+Source1154: https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz#/eslint-plugin-react-hooks-4.6.2.tgz
+Source1155: https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz#/eslint-scope-7.2.2.tgz
+Source1156: https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz#/eslint-utils-2.1.0.tgz
+Source1157: https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#/eslint-visitor-keys-1.3.0.tgz
+Source1158: https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#/eslint-visitor-keys-3.4.3.tgz
+Source1159: https://registry.npmjs.org/espree/-/espree-9.6.1.tgz#/espree-9.6.1.tgz
+Source1160: https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz#/esquery-1.6.0.tgz
+Source1161: https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz#/esrecurse-4.3.0.tgz
+Source1162: https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz#/estraverse-5.3.0.tgz
+Source1163: https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz#/esutils-2.0.3.tgz
+Source1164: https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz#/event-target-shim-5.0.1.tgz
+Source1165: https://registry.npmjs.org/events/-/events-3.3.0.tgz#/events-3.3.0.tgz
+Source1166: https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#/fast-deep-equal-3.1.3.tgz
+Source1167: https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz#/fast-glob-3.3.2.tgz
+Source1168: https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#/fast-json-stable-stringify-2.1.0.tgz
+Source1169: https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#/fast-levenshtein-2.0.6.tgz
+Source1170: https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz#/fast-uri-3.0.1.tgz
+Source1171: https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#/fastest-levenshtein-1.0.16.tgz
+Source1172: https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz#/fastq-1.17.1.tgz
+Source1173: https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz#/file-entry-cache-6.0.1.tgz
+Source1174: https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.0.0.tgz#/file-entry-cache-9.0.0.tgz
+Source1175: https://registry.npmjs.org/file-selector/-/file-selector-0.6.0.tgz#/file-selector-0.6.0.tgz
+Source1176: https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz#/fill-range-7.1.1.tgz
+Source1177: https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz#/find-up-5.0.0.tgz
+Source1178: https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz#/flat-cache-3.2.0.tgz
+Source1179: https://registry.npmjs.org/flat-cache/-/flat-cache-5.0.0.tgz#/flat-cache-5.0.0.tgz
+Source1180: https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz#/flatted-3.3.1.tgz
+Source1181: https://registry.npmjs.org/focus-trap/-/focus-trap-7.5.2.tgz#/focus-trap-7.5.2.tgz
+Source1182: https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz#/for-each-0.3.3.tgz
+Source1183: https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz#/fs-extra-10.1.0.tgz
+Source1184: https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#/fs.realpath-1.0.0.tgz
+Source1185: https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz#/function-bind-1.1.2.tgz
+Source1186: https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz#/function.prototype.name-1.1.6.tgz
+Source1187: https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz#/functions-have-names-1.2.3.tgz
+Source1188: https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz#/get-east-asian-width-1.2.0.tgz
+Source1189: https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz#/get-intrinsic-1.2.4.tgz
+Source1190: https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz#/get-symbol-description-1.0.2.tgz
+Source1191: https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.6.tgz#/get-tsconfig-4.7.6.tgz
+Source1192: https://registry.npmjs.org/gettext-parser/-/gettext-parser-8.0.0.tgz#/gettext-parser-8.0.0.tgz
+Source1193: https://registry.npmjs.org/glob/-/glob-7.2.3.tgz#/glob-7.2.3.tgz
+Source1194: https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz#/glob-parent-5.1.2.tgz
+Source1195: https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz#/glob-parent-6.0.2.tgz
+Source1196: https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz#/global-modules-2.0.0.tgz
+Source1197: https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz#/global-prefix-3.0.0.tgz
+Source1198: https://registry.npmjs.org/globals/-/globals-13.24.0.tgz#/globals-13.24.0.tgz
+Source1199: https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz#/globalthis-1.0.4.tgz
+Source1200: https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz#/globalyzer-0.1.0.tgz
+Source1201: https://registry.npmjs.org/globby/-/globby-11.1.0.tgz#/globby-11.1.0.tgz
+Source1202: https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz#/globjoin-0.1.4.tgz
+Source1203: https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz#/globrex-0.1.2.tgz
+Source1204: https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz#/gopd-1.0.1.tgz
+Source1205: https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz#/graceful-fs-4.2.11.tgz
+Source1206: https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz#/graphemer-1.4.0.tgz
+Source1207: https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz#/has-bigints-1.0.2.tgz
+Source1208: https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz#/has-flag-3.0.0.tgz
+Source1209: https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz#/has-flag-4.0.0.tgz
+Source1210: https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#/has-property-descriptors-1.0.2.tgz
+Source1211: https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz#/has-proto-1.0.3.tgz
+Source1212: https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz#/has-symbols-1.0.3.tgz
+Source1213: https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz#/has-tostringtag-1.0.2.tgz
+Source1214: https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz#/hasown-2.0.2.tgz
+Source1215: https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz#/html-tags-3.3.1.tgz
+Source1216: https://registry.npmjs.org/htmlparser/-/htmlparser-1.7.7.tgz#/htmlparser-1.7.7.tgz
+Source1217: https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz#/iconv-lite-0.6.3.tgz
+Source1218: https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz#/ieee754-1.2.1.tgz
+Source1219: https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz#/ignore-5.3.1.tgz
+Source1220: https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz#/immutable-4.3.7.tgz
+Source1221: https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz#/import-fresh-3.3.0.tgz
+Source1222: https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz#/imurmurhash-0.1.4.tgz
+Source1223: https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz#/inflight-1.0.6.tgz
+Source1224: https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz#/inherits-2.0.4.tgz
+Source1225: https://registry.npmjs.org/ini/-/ini-1.3.8.tgz#/ini-1.3.8.tgz
+Source1226: https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz#/internal-slot-1.0.7.tgz
+Source1227: https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.5.0.tgz#/irregular-plurals-3.5.0.tgz
+Source1228: https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz#/is-arguments-1.1.1.tgz
+Source1229: https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz#/is-array-buffer-3.0.4.tgz
+Source1230: https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz#/is-arrayish-0.2.1.tgz
+Source1231: https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz#/is-async-function-2.0.0.tgz
+Source1232: https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz#/is-bigint-1.0.4.tgz
+Source1233: https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz#/is-binary-path-2.1.0.tgz
+Source1234: https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz#/is-boolean-object-1.1.2.tgz
+Source1235: https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz#/is-builtin-module-3.2.1.tgz
+Source1236: https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz#/is-callable-1.2.7.tgz
+Source1237: https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz#/is-core-module-2.15.0.tgz
+Source1238: https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz#/is-data-view-1.0.1.tgz
+Source1239: https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz#/is-date-object-1.0.5.tgz
+Source1240: https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz#/is-extglob-2.1.1.tgz
+Source1241: https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz#/is-finalizationregistry-1.0.2.tgz
+Source1242: https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#/is-fullwidth-code-point-3.0.0.tgz
+Source1243: https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz#/is-generator-function-1.0.10.tgz
+Source1244: https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz#/is-glob-4.0.3.tgz
+Source1245: https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz#/is-map-2.0.3.tgz
+Source1246: https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz#/is-negative-zero-2.0.3.tgz
+Source1247: https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz#/is-number-7.0.0.tgz
+Source1248: https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz#/is-number-object-1.0.7.tgz
+Source1249: https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz#/is-path-inside-3.0.3.tgz
+Source1250: https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz#/is-plain-object-5.0.0.tgz
+Source1251: https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz#/is-regex-1.1.4.tgz
+Source1252: https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz#/is-set-2.0.3.tgz
+Source1253: https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#/is-shared-array-buffer-1.0.3.tgz
+Source1254: https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz#/is-string-1.0.7.tgz
+Source1255: https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz#/is-symbol-1.0.4.tgz
+Source1256: https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz#/is-typed-array-1.1.13.tgz
+Source1257: https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz#/is-unicode-supported-1.3.0.tgz
+Source1258: https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz#/is-weakmap-2.0.2.tgz
+Source1259: https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz#/is-weakref-1.0.2.tgz
+Source1260: https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz#/is-weakset-2.0.3.tgz
+Source1261: https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz#/isarray-2.0.5.tgz
+Source1262: https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz#/isexe-2.0.0.tgz
+Source1263: https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz#/iterator.prototype-1.1.2.tgz
+Source1264: https://registry.npmjs.org/jed/-/jed-1.1.1.tgz#/jed-1.1.1.tgz
+Source1265: https://registry.npmjs.org/js-sha1/-/js-sha1-0.7.0.tgz#/js-sha1-0.7.0.tgz
+Source1266: https://registry.npmjs.org/js-sha256/-/js-sha256-0.11.0.tgz#/js-sha256-0.11.0.tgz
+Source1267: https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz#/js-tokens-4.0.0.tgz
+Source1268: https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz#/js-yaml-4.1.0.tgz
+Source1269: https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz#/json-buffer-3.0.1.tgz
+Source1270: https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#/json-parse-even-better-errors-2.3.1.tgz
+Source1271: https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#/json-schema-traverse-0.4.1.tgz
+Source1272: https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#/json-schema-traverse-1.0.0.tgz
+Source1273: https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#/json-stable-stringify-without-jsonify-1.0.1.tgz
+Source1274: https://registry.npmjs.org/json5/-/json5-1.0.2.tgz#/json5-1.0.2.tgz
+Source1275: https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz#/jsonfile-6.1.0.tgz
+Source1276: https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#/jsx-ast-utils-3.3.5.tgz
+Source1277: https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz#/keyv-4.5.4.tgz
+Source1278: https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz#/kind-of-6.0.3.tgz
+Source1279: https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.34.0.tgz#/known-css-properties-0.34.0.tgz
+Source1280: https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz#/language-subtag-registry-0.3.23.tgz
+Source1281: https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz#/language-tags-1.0.9.tgz
+Source1282: https://registry.npmjs.org/levn/-/levn-0.4.1.tgz#/levn-0.4.1.tgz
+Source1283: https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz#/lines-and-columns-1.2.4.tgz
+Source1284: https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz#/locate-path-6.0.0.tgz
+Source1285: https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz#/lodash-4.17.21.tgz
+Source1286: https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz#/lodash.merge-4.6.2.tgz
+Source1287: https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz#/lodash.truncate-4.4.2.tgz
+Source1288: https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz#/log-symbols-6.0.0.tgz
+Source1289: https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz#/loose-envify-1.4.0.tgz
+Source1290: https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz#/magic-string-0.25.9.tgz
+Source1291: https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#/mathml-tag-names-2.1.3.tgz
+Source1292: https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz#/mdn-data-2.0.30.tgz
+Source1293: https://registry.npmjs.org/meow/-/meow-13.2.0.tgz#/meow-13.2.0.tgz
+Source1294: https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz#/merge2-1.4.1.tgz
+Source1295: https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz#/micromatch-4.0.7.tgz
+Source1296: https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz#/minimatch-3.1.2.tgz
+Source1297: https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz#/minimatch-9.0.5.tgz
+Source1298: https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz#/minimist-1.2.8.tgz
+Source1299: https://registry.npmjs.org/ms/-/ms-2.1.2.tgz#/ms-2.1.2.tgz
+Source1300: https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz#/nanoid-3.3.7.tgz
+Source1301: https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz#/natural-compare-1.4.0.tgz
+Source1302: https://registry.npmjs.org/node-watch/-/node-watch-0.7.3.tgz#/node-watch-0.7.3.tgz
+Source1303: https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz#/normalize-path-3.0.0.tgz
+Source1304: https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz#/object-assign-4.1.1.tgz
+Source1305: https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz#/object-inspect-1.13.2.tgz
+Source1306: https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz#/object-is-1.1.6.tgz
+Source1307: https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz#/object-keys-1.1.1.tgz
+Source1308: https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz#/object.assign-4.1.5.tgz
+Source1309: https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz#/object.entries-1.1.8.tgz
+Source1310: https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz#/object.fromentries-2.0.8.tgz
+Source1311: https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz#/object.groupby-1.0.3.tgz
+Source1312: https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz#/object.values-1.2.0.tgz
+Source1313: https://registry.npmjs.org/once/-/once-1.4.0.tgz#/once-1.4.0.tgz
+Source1314: https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz#/optionator-0.9.4.tgz
+Source1315: https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz#/p-limit-3.1.0.tgz
+Source1316: https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz#/p-locate-5.0.0.tgz
+Source1317: https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz#/parent-module-1.0.1.tgz
+Source1318: https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz#/parse-json-5.2.0.tgz
+Source1319: https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz#/path-exists-4.0.0.tgz
+Source1320: https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#/path-is-absolute-1.0.1.tgz
+Source1321: https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz#/path-key-3.1.1.tgz
+Source1322: https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz#/path-parse-1.0.7.tgz
+Source1323: https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz#/path-type-4.0.0.tgz
+Source1324: https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz#/picocolors-1.0.1.tgz
+Source1325: https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz#/picomatch-2.3.1.tgz
+Source1326: https://registry.npmjs.org/plur/-/plur-5.1.0.tgz#/plur-5.1.0.tgz
+Source1327: https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#/possible-typed-array-names-1.0.0.tgz
+Source1328: https://registry.npmjs.org/postcss/-/postcss-8.4.40.tgz#/postcss-8.4.40.tgz
+Source1329: https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz#/postcss-media-query-parser-0.2.3.tgz
+Source1330: https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.4.tgz#/postcss-resolve-nested-selector-0.1.4.tgz
+Source1331: https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.0.tgz#/postcss-safe-parser-7.0.0.tgz
+Source1332: https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz#/postcss-scss-4.0.9.tgz
+Source1333: https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz#/postcss-selector-parser-6.1.1.tgz
+Source1334: https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#/postcss-value-parser-4.2.0.tgz
+Source1335: https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz#/prelude-ls-1.2.1.tgz
+Source1336: https://registry.npmjs.org/process/-/process-0.11.10.tgz#/process-0.11.10.tgz
+Source1337: https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz#/prop-types-15.8.1.tgz
+Source1338: https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz#/punycode-2.3.1.tgz
+Source1339: https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz#/queue-microtask-1.2.3.tgz
+Source1340: https://registry.npmjs.org/qunit/-/qunit-2.21.0.tgz#/qunit-2.21.0.tgz
+Source1341: https://registry.npmjs.org/qunit-tap/-/qunit-tap-1.5.1.tgz#/qunit-tap-1.5.1.tgz
+Source1342: https://registry.npmjs.org/react/-/react-18.3.1.tgz#/react-18.3.1.tgz
+Source1343: https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz#/react-dom-18.3.1.tgz
+Source1344: https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.2.3.tgz#/react-dropzone-14.2.3.tgz
+Source1345: https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz#/react-is-16.13.1.tgz
+Source1346: https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz#/readable-stream-4.5.2.tgz
+Source1347: https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz#/readdirp-3.6.0.tgz
+Source1348: https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz#/reflect.getprototypeof-1.0.6.tgz
+Source1349: https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#/regexp.prototype.flags-1.5.2.tgz
+Source1350: https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz#/regexpp-3.2.0.tgz
+Source1351: https://registry.npmjs.org/remarkable/-/remarkable-2.0.1.tgz#/remarkable-2.0.1.tgz
+Source1352: https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz#/require-from-string-2.0.2.tgz
+Source1353: https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz#/resolve-1.22.8.tgz
+Source1354: https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz#/resolve-2.0.0-next.5.tgz
+Source1355: https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz#/resolve-from-4.0.0.tgz
+Source1356: https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz#/resolve-from-5.0.0.tgz
+Source1357: https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#/resolve-pkg-maps-1.0.0.tgz
+Source1358: https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz#/reusify-1.0.4.tgz
+Source1359: https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz#/rimraf-3.0.2.tgz
+Source1360: https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz#/run-parallel-1.2.0.tgz
+Source1361: https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz#/rxjs-7.8.1.tgz
+Source1362: https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz#/safe-array-concat-1.1.2.tgz
+Source1363: https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz#/safe-buffer-5.2.1.tgz
+Source1364: https://registry.npmjs.org/safe-identifier/-/safe-identifier-0.4.2.tgz#/safe-identifier-0.4.2.tgz
+Source1365: https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz#/safe-regex-test-1.0.3.tgz
+Source1366: https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz#/safer-buffer-2.1.2.tgz
+Source1367: https://registry.npmjs.org/sass/-/sass-1.77.8.tgz#/sass-1.77.8.tgz
+Source1368: https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.77.8.tgz#/sass-embedded-1.77.8.tgz
+Source1369: https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.77.8.tgz#/sass-embedded-linux-musl-x64-1.77.8.tgz
+Source1370: https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.77.8.tgz#/sass-embedded-linux-x64-1.77.8.tgz
+Source1371: https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz#/scheduler-0.23.2.tgz
+Source1372: https://registry.npmjs.org/semver/-/semver-6.3.1.tgz#/semver-6.3.1.tgz
+Source1373: https://registry.npmjs.org/semver/-/semver-7.6.3.tgz#/semver-7.6.3.tgz
+Source1374: https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz#/set-function-length-1.2.2.tgz
+Source1375: https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz#/set-function-name-2.0.2.tgz
+Source1376: https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz#/shebang-command-2.0.0.tgz
+Source1377: https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz#/shebang-regex-3.0.0.tgz
+Source1378: https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz#/side-channel-1.0.6.tgz
+Source1379: https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz#/signal-exit-4.1.0.tgz
+Source1380: https://registry.npmjs.org/sizzle/-/sizzle-2.3.10.tgz#/sizzle-2.3.10.tgz
+Source1381: https://registry.npmjs.org/slash/-/slash-3.0.0.tgz#/slash-3.0.0.tgz
+Source1382: https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz#/slice-ansi-4.0.0.tgz
+Source1383: https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz#/source-map-js-1.2.0.tgz
+Source1384: https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#/sourcemap-codec-1.4.8.tgz
+Source1385: https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz#/sprintf-js-1.0.3.tgz
+Source1386: https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#/stop-iteration-iterator-1.0.0.tgz
+Source1387: https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#/string-width-4.2.3.tgz
+Source1388: https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz#/string-width-7.2.0.tgz
+Source1389: https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.0.tgz#/string.prototype.includes-2.0.0.tgz
+Source1390: https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz#/string.prototype.matchall-4.0.11.tgz
+Source1391: https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz#/string.prototype.repeat-1.0.0.tgz
+Source1392: https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz#/string.prototype.trim-1.2.9.tgz
+Source1393: https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz#/string.prototype.trimend-1.0.8.tgz
+Source1394: https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#/string.prototype.trimstart-1.0.8.tgz
+Source1395: https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz#/string_decoder-1.3.0.tgz
+Source1396: https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#/strip-ansi-6.0.1.tgz
+Source1397: https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz#/strip-ansi-7.1.0.tgz
+Source1398: https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz#/strip-bom-3.0.0.tgz
+Source1399: https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz#/strip-json-comments-3.1.1.tgz
+Source1400: https://registry.npmjs.org/stylelint/-/stylelint-16.8.1.tgz#/stylelint-16.8.1.tgz
+Source1401: https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-14.0.1.tgz#/stylelint-config-recommended-14.0.1.tgz
+Source1402: https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-14.0.0.tgz#/stylelint-config-recommended-scss-14.0.0.tgz
+Source1403: https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-36.0.1.tgz#/stylelint-config-standard-36.0.1.tgz
+Source1404: https://registry.npmjs.org/stylelint-config-standard-scss/-/stylelint-config-standard-scss-13.1.0.tgz#/stylelint-config-standard-scss-13.1.0.tgz
+Source1405: https://registry.npmjs.org/stylelint-formatter-pretty/-/stylelint-formatter-pretty-4.0.0.tgz#/stylelint-formatter-pretty-4.0.0.tgz
+Source1406: https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-6.4.1.tgz#/stylelint-scss-6.4.1.tgz
+Source1407: https://registry.npmjs.org/stylelint-use-logical-spec/-/stylelint-use-logical-spec-5.0.1.tgz#/stylelint-use-logical-spec-5.0.1.tgz
+Source1408: https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz#/supports-color-5.5.0.tgz
+Source1409: https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz#/supports-color-7.2.0.tgz
+Source1410: https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz#/supports-color-8.1.1.tgz
+Source1411: https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz#/supports-hyperlinks-3.0.0.tgz
+Source1412: https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#/supports-preserve-symlinks-flag-1.0.0.tgz
+Source1413: https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz#/svg-tags-1.0.0.tgz
+Source1414: https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz#/tabbable-6.2.0.tgz
+Source1415: https://registry.npmjs.org/table/-/table-6.8.2.tgz#/table-6.8.2.tgz
+Source1416: https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz#/text-table-0.2.0.tgz
+Source1417: https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-5.0.2.tgz#/throttle-debounce-5.0.2.tgz
+Source1418: https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz#/tiny-glob-0.2.9.tgz
+Source1419: https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz#/to-regex-range-5.0.1.tgz
+Source1420: https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz#/ts-api-utils-1.3.0.tgz
+Source1421: https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#/tsconfig-paths-3.15.0.tgz
+Source1422: https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz#/tslib-2.6.3.tgz
+Source1423: https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz#/type-check-0.4.0.tgz
+Source1424: https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz#/type-fest-0.20.2.tgz
+Source1425: https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#/typed-array-buffer-1.0.2.tgz
+Source1426: https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#/typed-array-byte-length-1.0.1.tgz
+Source1427: https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#/typed-array-byte-offset-1.0.2.tgz
+Source1428: https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz#/typed-array-length-1.0.6.tgz
+Source1429: https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz#/typescript-5.5.4.tgz
+Source1430: https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz#/unbox-primitive-1.0.2.tgz
+Source1431: https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz#/universalify-2.0.1.tgz
+Source1432: https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz#/uri-js-4.4.1.tgz
+Source1433: https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz#/util-deprecate-1.0.2.tgz
+Source1434: https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz#/uuid-9.0.1.tgz
+Source1435: https://registry.npmjs.org/varint/-/varint-6.0.0.tgz#/varint-6.0.0.tgz
+Source1436: https://registry.npmjs.org/which/-/which-1.3.1.tgz#/which-1.3.1.tgz
+Source1437: https://registry.npmjs.org/which/-/which-2.0.2.tgz#/which-2.0.2.tgz
+Source1438: https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#/which-boxed-primitive-1.0.2.tgz
+Source1439: https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.4.tgz#/which-builtin-type-1.1.4.tgz
+Source1440: https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz#/which-collection-1.0.2.tgz
+Source1441: https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz#/which-typed-array-1.1.15.tgz
+Source1442: https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz#/word-wrap-1.2.5.tgz
+Source1443: https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz#/wrappy-1.0.2.tgz
+Source1444: https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz#/write-file-atomic-5.0.1.tgz
+Source1445: https://registry.npmjs.org/ws/-/ws-7.5.10.tgz#/ws-7.5.10.tgz
+Source1446: https://registry.npmjs.org/xterm/-/xterm-5.3.0.tgz#/xterm-5.3.0.tgz
+Source1447: https://registry.npmjs.org/xterm-addon-canvas/-/xterm-addon-canvas-0.5.0.tgz#/xterm-addon-canvas-0.5.0.tgz
+Source1448: https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz#/yocto-queue-0.1.0.tgz
diff --git a/packages/c/cockpit/package-lock.json b/packages/c/cockpit/package-lock.json
index b5ea6f8ecd2..937eedba7f6 100644
--- a/packages/c/cockpit/package-lock.json
+++ b/packages/c/cockpit/package-lock.json
@@ -438,9 +438,9 @@
"license": "MIT"
},
"node_modules/@patternfly/react-core": {
- "version": "5.3.3",
- "resolved": "https://registry.npmjs.org/@patternfly/react-core/-/react-core-5.3.3.tgz",
- "integrity": "sha512-qq3j0M+Vi+Xmd+a/MhRhGgjdRh9Hnm79iA+L935HwMIVDcIWRYp6Isib/Ha4+Jk+f3Qdl0RT3dBDvr/4m6OpVQ==",
+ "version": "5.3.4",
+ "resolved": "https://registry.npmjs.org/@patternfly/react-core/-/react-core-5.3.4.tgz",
+ "integrity": "sha512-zr2yeilIoFp8MFOo0vNgI8XuM+P2466zHvy4smyRNRH2/but2WObqx7Wu4ftd/eBMYdNqmTeuXe6JeqqRqnPMQ==",
"license": "MIT",
"dependencies": {
"@patternfly/react-icons": "^5.3.2",
@@ -472,12 +472,12 @@
"license": "MIT"
},
"node_modules/@patternfly/react-table": {
- "version": "5.3.3",
- "resolved": "https://registry.npmjs.org/@patternfly/react-table/-/react-table-5.3.3.tgz",
- "integrity": "sha512-uaRmsJABvVPH8gYTh+EUcDz61knIxe9qor/VGUYDLONYBL5G3IaltwG42IsJ9jShxiwFmIPy+QARPpaadTpv5w==",
+ "version": "5.3.4",
+ "resolved": "https://registry.npmjs.org/@patternfly/react-table/-/react-table-5.3.4.tgz",
+ "integrity": "sha512-jGaiuo02scaC1HdGNHuYVRjtQCOB+vtvfbgS7nl1Y8ZcJ08wyUGhGSrEpNHfGAQ1XDSSoELAxj0cjOQwAAQw1A==",
"license": "MIT",
"dependencies": {
- "@patternfly/react-core": "^5.3.3",
+ "@patternfly/react-core": "^5.3.4",
"@patternfly/react-icons": "^5.3.2",
"@patternfly/react-styles": "^5.3.1",
"@patternfly/react-tokens": "^5.3.1",
@@ -538,32 +538,32 @@
}
},
"node_modules/@typescript-eslint/eslint-plugin": {
- "version": "7.15.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.15.0.tgz",
- "integrity": "sha512-uiNHpyjZtFrLwLDpHnzaDlP3Tt6sGMqTCiqmxaN4n4RP0EfYZDODJyddiFDF44Hjwxr5xAcaYxVKm9QKQFJFLA==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.0.0.tgz",
+ "integrity": "sha512-STIZdwEQRXAHvNUS6ILDf5z3u95Gc8jzywunxSNqX00OooIemaaNIA0vEgynJlycL5AjabYLLrIyHd4iazyvtg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/regexpp": "^4.10.0",
- "@typescript-eslint/scope-manager": "7.15.0",
- "@typescript-eslint/type-utils": "7.15.0",
- "@typescript-eslint/utils": "7.15.0",
- "@typescript-eslint/visitor-keys": "7.15.0",
+ "@typescript-eslint/scope-manager": "8.0.0",
+ "@typescript-eslint/type-utils": "8.0.0",
+ "@typescript-eslint/utils": "8.0.0",
+ "@typescript-eslint/visitor-keys": "8.0.0",
"graphemer": "^1.4.0",
"ignore": "^5.3.1",
"natural-compare": "^1.4.0",
"ts-api-utils": "^1.3.0"
},
"engines": {
- "node": "^18.18.0 || >=20.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "@typescript-eslint/parser": "^7.0.0",
- "eslint": "^8.56.0"
+ "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0",
+ "eslint": "^8.57.0 || ^9.0.0"
},
"peerDependenciesMeta": {
"typescript": {
@@ -572,28 +572,28 @@
}
},
"node_modules/@typescript-eslint/parser": {
- "version": "7.16.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.16.0.tgz",
- "integrity": "sha512-ar9E+k7CU8rWi2e5ErzQiC93KKEFAXA2Kky0scAlPcxYblLt8+XZuHUZwlyfXILyQa95P6lQg+eZgh/dDs3+Vw==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.0.0.tgz",
+ "integrity": "sha512-pS1hdZ+vnrpDIxuFXYQpLTILglTjSYJ9MbetZctrUawogUsPdz31DIIRZ9+rab0LhYNTsk88w4fIzVheiTbWOQ==",
"dev": true,
"license": "BSD-2-Clause",
"peer": true,
"dependencies": {
- "@typescript-eslint/scope-manager": "7.16.0",
- "@typescript-eslint/types": "7.16.0",
- "@typescript-eslint/typescript-estree": "7.16.0",
- "@typescript-eslint/visitor-keys": "7.16.0",
+ "@typescript-eslint/scope-manager": "8.0.0",
+ "@typescript-eslint/types": "8.0.0",
+ "@typescript-eslint/typescript-estree": "8.0.0",
+ "@typescript-eslint/visitor-keys": "8.0.0",
"debug": "^4.3.4"
},
"engines": {
- "node": "^18.18.0 || >=20.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "eslint": "^8.56.0"
+ "eslint": "^8.57.0 || ^9.0.0"
},
"peerDependenciesMeta": {
"typescript": {
@@ -601,70 +601,18 @@
}
}
},
- "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": {
- "version": "7.16.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.16.0.tgz",
- "integrity": "sha512-8gVv3kW6n01Q6TrI1cmTZ9YMFi3ucDT7i7aI5lEikk2ebk1AEjrwX8MDTdaX5D7fPXMBLvnsaa0IFTAu+jcfOw==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@typescript-eslint/types": "7.16.0",
- "@typescript-eslint/visitor-keys": "7.16.0"
- },
- "engines": {
- "node": "^18.18.0 || >=20.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": {
- "version": "7.16.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.16.0.tgz",
- "integrity": "sha512-rMo01uPy9C7XxG7AFsxa8zLnWXTF8N3PYclekWSrurvhwiw1eW88mrKiAYe6s53AUY57nTRz8dJsuuXdkAhzCg==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@typescript-eslint/types": "7.16.0",
- "eslint-visitor-keys": "^3.4.3"
- },
- "engines": {
- "node": "^18.18.0 || >=20.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
"node_modules/@typescript-eslint/scope-manager": {
- "version": "7.15.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.15.0.tgz",
- "integrity": "sha512-Q/1yrF/XbxOTvttNVPihxh1b9fxamjEoz2Os/Pe38OHwxC24CyCqXxGTOdpb4lt6HYtqw9HetA/Rf6gDGaMPlw==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.0.0.tgz",
+ "integrity": "sha512-V0aa9Csx/ZWWv2IPgTfY7T4agYwJyILESu/PVqFtTFz9RIS823mAze+NbnBI8xiwdX3iqeQbcTYlvB04G9wyQw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "7.15.0",
- "@typescript-eslint/visitor-keys": "7.15.0"
+ "@typescript-eslint/types": "8.0.0",
+ "@typescript-eslint/visitor-keys": "8.0.0"
},
"engines": {
- "node": "^18.18.0 || >=20.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/@typescript-eslint/scope-manager/node_modules/@typescript-eslint/types": {
- "version": "7.15.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.15.0.tgz",
- "integrity": "sha512-aV1+B1+ySXbQH0pLK0rx66I3IkiZNidYobyfn0WFsdGhSXw+P3YOqeTq5GED458SfB24tg+ux3S+9g118hjlTw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^18.18.0 || >=20.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
@@ -672,65 +620,19 @@
}
},
"node_modules/@typescript-eslint/type-utils": {
- "version": "7.15.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.15.0.tgz",
- "integrity": "sha512-SkgriaeV6PDvpA6253PDVep0qCqgbO1IOBiycjnXsszNTVQe5flN5wR5jiczoEoDEnAqYFSFFc9al9BSGVltkg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@typescript-eslint/typescript-estree": "7.15.0",
- "@typescript-eslint/utils": "7.15.0",
- "debug": "^4.3.4",
- "ts-api-utils": "^1.3.0"
- },
- "engines": {
- "node": "^18.18.0 || >=20.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^8.56.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": {
- "version": "7.15.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.15.0.tgz",
- "integrity": "sha512-aV1+B1+ySXbQH0pLK0rx66I3IkiZNidYobyfn0WFsdGhSXw+P3YOqeTq5GED458SfB24tg+ux3S+9g118hjlTw==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.0.0.tgz",
+ "integrity": "sha512-mJAFP2mZLTBwAn5WI4PMakpywfWFH5nQZezUQdSKV23Pqo6o9iShQg1hP2+0hJJXP2LnZkWPphdIq4juYYwCeg==",
"dev": true,
"license": "MIT",
- "engines": {
- "node": "^18.18.0 || >=20.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": {
- "version": "7.15.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.15.0.tgz",
- "integrity": "sha512-gjyB/rHAopL/XxfmYThQbXbzRMGhZzGw6KpcMbfe8Q3nNQKStpxnUKeXb0KiN/fFDR42Z43szs6rY7eHk0zdGQ==",
- "dev": true,
- "license": "BSD-2-Clause",
"dependencies": {
- "@typescript-eslint/types": "7.15.0",
- "@typescript-eslint/visitor-keys": "7.15.0",
+ "@typescript-eslint/typescript-estree": "8.0.0",
+ "@typescript-eslint/utils": "8.0.0",
"debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "minimatch": "^9.0.4",
- "semver": "^7.6.0",
"ts-api-utils": "^1.3.0"
},
"engines": {
- "node": "^18.18.0 || >=20.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
@@ -743,14 +645,13 @@
}
},
"node_modules/@typescript-eslint/types": {
- "version": "7.16.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.16.0.tgz",
- "integrity": "sha512-fecuH15Y+TzlUutvUl9Cc2XJxqdLr7+93SQIbcZfd4XRGGKoxyljK27b+kxKamjRkU7FYC6RrbSCg0ALcZn/xw==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.0.0.tgz",
+ "integrity": "sha512-wgdSGs9BTMWQ7ooeHtu5quddKKs5Z5dS+fHLbrQI+ID0XWJLODGMHRfhwImiHoeO2S5Wir2yXuadJN6/l4JRxw==",
"dev": true,
"license": "MIT",
- "peer": true,
"engines": {
- "node": "^18.18.0 || >=20.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
@@ -758,15 +659,14 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
- "version": "7.16.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.16.0.tgz",
- "integrity": "sha512-a5NTvk51ZndFuOLCh5OaJBELYc2O3Zqxfl3Js78VFE1zE46J2AaVuW+rEbVkQznjkmlzWsUI15BG5tQMixzZLw==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.0.0.tgz",
+ "integrity": "sha512-5b97WpKMX+Y43YKi4zVcCVLtK5F98dFls3Oxui8LbnmRsseKenbbDinmvxrWegKDMmlkIq/XHuyy0UGLtpCDKg==",
"dev": true,
"license": "BSD-2-Clause",
- "peer": true,
"dependencies": {
- "@typescript-eslint/types": "7.16.0",
- "@typescript-eslint/visitor-keys": "7.16.0",
+ "@typescript-eslint/types": "8.0.0",
+ "@typescript-eslint/visitor-keys": "8.0.0",
"debug": "^4.3.4",
"globby": "^11.1.0",
"is-glob": "^4.0.3",
@@ -775,7 +675,7 @@
"ts-api-utils": "^1.3.0"
},
"engines": {
- "node": "^18.18.0 || >=20.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
@@ -787,117 +687,41 @@
}
}
},
- "node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/visitor-keys": {
- "version": "7.16.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.16.0.tgz",
- "integrity": "sha512-rMo01uPy9C7XxG7AFsxa8zLnWXTF8N3PYclekWSrurvhwiw1eW88mrKiAYe6s53AUY57nTRz8dJsuuXdkAhzCg==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@typescript-eslint/types": "7.16.0",
- "eslint-visitor-keys": "^3.4.3"
- },
- "engines": {
- "node": "^18.18.0 || >=20.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
"node_modules/@typescript-eslint/utils": {
- "version": "7.15.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.15.0.tgz",
- "integrity": "sha512-hfDMDqaqOqsUVGiEPSMLR/AjTSCsmJwjpKkYQRo1FNbmW4tBwBspYDwO9eh7sKSTwMQgBw9/T4DHudPaqshRWA==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.0.0.tgz",
+ "integrity": "sha512-k/oS/A/3QeGLRvOWCg6/9rATJL5rec7/5s1YmdS0ZU6LHveJyGFwBvLhSRBv6i9xaj7etmosp+l+ViN1I9Aj/Q==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.4.0",
- "@typescript-eslint/scope-manager": "7.15.0",
- "@typescript-eslint/types": "7.15.0",
- "@typescript-eslint/typescript-estree": "7.15.0"
+ "@typescript-eslint/scope-manager": "8.0.0",
+ "@typescript-eslint/types": "8.0.0",
+ "@typescript-eslint/typescript-estree": "8.0.0"
},
"engines": {
- "node": "^18.18.0 || >=20.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "eslint": "^8.56.0"
- }
- },
- "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": {
- "version": "7.15.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.15.0.tgz",
- "integrity": "sha512-aV1+B1+ySXbQH0pLK0rx66I3IkiZNidYobyfn0WFsdGhSXw+P3YOqeTq5GED458SfB24tg+ux3S+9g118hjlTw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^18.18.0 || >=20.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": {
- "version": "7.15.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.15.0.tgz",
- "integrity": "sha512-gjyB/rHAopL/XxfmYThQbXbzRMGhZzGw6KpcMbfe8Q3nNQKStpxnUKeXb0KiN/fFDR42Z43szs6rY7eHk0zdGQ==",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "@typescript-eslint/types": "7.15.0",
- "@typescript-eslint/visitor-keys": "7.15.0",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "minimatch": "^9.0.4",
- "semver": "^7.6.0",
- "ts-api-utils": "^1.3.0"
- },
- "engines": {
- "node": "^18.18.0 || >=20.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
+ "eslint": "^8.57.0 || ^9.0.0"
}
},
"node_modules/@typescript-eslint/visitor-keys": {
- "version": "7.15.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.15.0.tgz",
- "integrity": "sha512-Hqgy/ETgpt2L5xueA/zHHIl4fJI2O4XUE9l4+OIfbJIRSnTJb/QscncdqqZzofQegIJugRIF57OJea1khw2SDw==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.0.0.tgz",
+ "integrity": "sha512-oN0K4nkHuOyF3PVMyETbpP5zp6wfyOvm7tWhTMfoqxSSsPmJIh6JNASuZDlODE8eE+0EB9uar+6+vxr9DBTYOA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "7.15.0",
+ "@typescript-eslint/types": "8.0.0",
"eslint-visitor-keys": "^3.4.3"
},
"engines": {
- "node": "^18.18.0 || >=20.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/@typescript-eslint/visitor-keys/node_modules/@typescript-eslint/types": {
- "version": "7.15.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.15.0.tgz",
- "integrity": "sha512-aV1+B1+ySXbQH0pLK0rx66I3IkiZNidYobyfn0WFsdGhSXw+P3YOqeTq5GED458SfB24tg+ux3S+9g118hjlTw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^18.18.0 || >=20.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
@@ -1162,19 +986,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/array.prototype.toreversed": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz",
- "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "es-shim-unscopables": "^1.0.0"
- }
- },
"node_modules/array.prototype.tosorted": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz",
@@ -1267,9 +1078,9 @@
}
},
"node_modules/axe-core": {
- "version": "4.9.1",
- "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.9.1.tgz",
- "integrity": "sha512-QbUdXJVTpvUTHU7871ppZkdOLBeGUKBQWHkHrvN2V9IQWGMt61zf3B45BtzjxEJzYuj0JBjBZP/hmYS/R9pmAw==",
+ "version": "4.10.0",
+ "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.0.tgz",
+ "integrity": "sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==",
"dev": true,
"license": "MPL-2.0",
"engines": {
@@ -1693,9 +1504,9 @@
}
},
"node_modules/debug": {
- "version": "4.3.5",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
- "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
+ "version": "4.3.6",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz",
+ "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2656,9 +2467,9 @@
}
},
"node_modules/eslint-plugin-promise": {
- "version": "6.4.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.4.0.tgz",
- "integrity": "sha512-/KWWRaD3fGkVCZsdR0RU53PSthFmoHVhZl+y9+6DqeDLSikLdlUVpVEAmI6iCRR5QyOjBYBqHZV/bdv4DJ4Gtw==",
+ "version": "6.6.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.6.0.tgz",
+ "integrity": "sha512-57Zzfw8G6+Gq7axm2Pdo3gW/Rx3h9Yywgn61uE/3elTCOePEHVrn2i5CdfBwA1BLK0Q0WqctICIUSqXZW/VprQ==",
"dev": true,
"license": "ISC",
"engines": {
@@ -2672,36 +2483,36 @@
}
},
"node_modules/eslint-plugin-react": {
- "version": "7.34.3",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.3.tgz",
- "integrity": "sha512-aoW4MV891jkUulwDApQbPYTVZmeuSyFrudpbTAQuj5Fv8VL+o6df2xIGpw8B0hPjAaih1/Fb0om9grCdyFYemA==",
+ "version": "7.35.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.35.0.tgz",
+ "integrity": "sha512-v501SSMOWv8gerHkk+IIQBkcGRGrO2nfybfj5pLxuJNFTPxxA3PSryhXTK+9pNbtkggheDdsC0E9Q8CuPk6JKA==",
"dev": true,
"license": "MIT",
"dependencies": {
"array-includes": "^3.1.8",
"array.prototype.findlast": "^1.2.5",
"array.prototype.flatmap": "^1.3.2",
- "array.prototype.toreversed": "^1.1.2",
"array.prototype.tosorted": "^1.1.4",
"doctrine": "^2.1.0",
"es-iterator-helpers": "^1.0.19",
"estraverse": "^5.3.0",
+ "hasown": "^2.0.2",
"jsx-ast-utils": "^2.4.1 || ^3.0.0",
"minimatch": "^3.1.2",
"object.entries": "^1.1.8",
"object.fromentries": "^2.0.8",
- "object.hasown": "^1.1.4",
"object.values": "^1.2.0",
"prop-types": "^15.8.1",
"resolve": "^2.0.0-next.5",
"semver": "^6.3.1",
- "string.prototype.matchall": "^4.0.11"
+ "string.prototype.matchall": "^4.0.11",
+ "string.prototype.repeat": "^1.0.0"
},
"engines": {
"node": ">=4"
},
"peerDependencies": {
- "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7"
}
},
"node_modules/eslint-plugin-react-hooks": {
@@ -2997,6 +2808,13 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/fast-uri": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz",
+ "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/fastest-levenshtein": {
"version": "1.0.16",
"resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz",
@@ -3226,9 +3044,9 @@
}
},
"node_modules/get-tsconfig": {
- "version": "4.7.5",
- "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.5.tgz",
- "integrity": "sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==",
+ "version": "4.7.6",
+ "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.6.tgz",
+ "integrity": "sha512-ZAqrLlu18NbDdRaHq+AKXzAmqIUPswPWKUchfytdAjiRFnCe5ojG2bstg6mRiZabkKfCoL/e98pbBELIV/YCeA==",
"dev": true,
"license": "MIT",
"peer": true,
@@ -3612,9 +3430,9 @@
}
},
"node_modules/immutable": {
- "version": "4.3.6",
- "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.6.tgz",
- "integrity": "sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==",
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz",
+ "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==",
"dev": true,
"license": "MIT"
},
@@ -3827,9 +3645,9 @@
}
},
"node_modules/is-core-module": {
- "version": "2.14.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.14.0.tgz",
- "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==",
+ "version": "2.15.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz",
+ "integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4314,9 +4132,9 @@
}
},
"node_modules/known-css-properties": {
- "version": "0.31.0",
- "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.31.0.tgz",
- "integrity": "sha512-sBPIUGTNF0czz0mwGGUoKKJC8Q7On1GPbCSFPfyEsfHb2DyBG0Y4QtV+EVWpINSaiGKZblDNuF5AezxSgOhesQ==",
+ "version": "0.34.0",
+ "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.34.0.tgz",
+ "integrity": "sha512-tBECoUqNFbyAY4RrbqsBQqDFpGXAEbdD5QKr8kACx3+rnArmuuR22nKQWKazvp07N9yjTyDZaw/20UIH8tL9DQ==",
"dev": true,
"license": "MIT"
},
@@ -4700,24 +4518,6 @@
"node": ">= 0.4"
}
},
- "node_modules/object.hasown": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz",
- "integrity": "sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "define-properties": "^1.2.1",
- "es-abstract": "^1.23.2",
- "es-object-atoms": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/object.values": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz",
@@ -4922,9 +4722,9 @@
}
},
"node_modules/postcss": {
- "version": "8.4.39",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.39.tgz",
- "integrity": "sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==",
+ "version": "8.4.40",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.40.tgz",
+ "integrity": "sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==",
"dev": true,
"funding": [
{
@@ -4958,9 +4758,9 @@
"license": "MIT"
},
"node_modules/postcss-resolve-nested-selector": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz",
- "integrity": "sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==",
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.4.tgz",
+ "integrity": "sha512-R6vHqZWgVnTAPq0C+xjyHfEZqfIYboCBVSy24MjxEDm+tIh1BU4O6o7DP7AA7kHzf136d+Qc5duI4tlpHjixDw==",
"dev": true,
"license": "MIT"
},
@@ -5019,9 +4819,9 @@
}
},
"node_modules/postcss-selector-parser": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz",
- "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==",
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz",
+ "integrity": "sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5484,9 +5284,9 @@
"license": "MIT"
},
"node_modules/sass": {
- "version": "1.77.6",
- "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.6.tgz",
- "integrity": "sha512-ByXE1oLD79GVq9Ht1PeHWCPMPB8XHpBuz1r85oByKHjZY6qV6rWnQovQzXJXuQ/XyE1Oj3iPk3lo28uzaRA2/Q==",
+ "version": "1.77.8",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.8.tgz",
+ "integrity": "sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5502,9 +5302,9 @@
}
},
"node_modules/sass-embedded": {
- "version": "1.77.5",
- "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.77.5.tgz",
- "integrity": "sha512-JQI8aprHDRSNK5exXsbusswTENQPJxW1QWUcLdwuyESoJClT1zo8e+4cmaV5OAU4abcRC6Av4/RmLocPdjcR3A==",
+ "version": "1.77.8",
+ "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.77.8.tgz",
+ "integrity": "sha512-WGXA6jcaoBo5Uhw0HX/s6z/sl3zyYQ7ZOnLOJzqwpctFcFmU4L07zn51e2VSkXXFpQZFAdMZNqOGz/7h/fvcRA==",
"dev": true,
"license": "MIT",
"peer": true,
@@ -5520,29 +5320,29 @@
"node": ">=16.0.0"
},
"optionalDependencies": {
- "sass-embedded-android-arm": "1.77.5",
- "sass-embedded-android-arm64": "1.77.5",
- "sass-embedded-android-ia32": "1.77.5",
- "sass-embedded-android-x64": "1.77.5",
- "sass-embedded-darwin-arm64": "1.77.5",
- "sass-embedded-darwin-x64": "1.77.5",
- "sass-embedded-linux-arm": "1.77.5",
- "sass-embedded-linux-arm64": "1.77.5",
- "sass-embedded-linux-ia32": "1.77.5",
- "sass-embedded-linux-musl-arm": "1.77.5",
- "sass-embedded-linux-musl-arm64": "1.77.5",
- "sass-embedded-linux-musl-ia32": "1.77.5",
- "sass-embedded-linux-musl-x64": "1.77.5",
- "sass-embedded-linux-x64": "1.77.5",
- "sass-embedded-win32-arm64": "1.77.5",
- "sass-embedded-win32-ia32": "1.77.5",
- "sass-embedded-win32-x64": "1.77.5"
+ "sass-embedded-android-arm": "1.77.8",
+ "sass-embedded-android-arm64": "1.77.8",
+ "sass-embedded-android-ia32": "1.77.8",
+ "sass-embedded-android-x64": "1.77.8",
+ "sass-embedded-darwin-arm64": "1.77.8",
+ "sass-embedded-darwin-x64": "1.77.8",
+ "sass-embedded-linux-arm": "1.77.8",
+ "sass-embedded-linux-arm64": "1.77.8",
+ "sass-embedded-linux-ia32": "1.77.8",
+ "sass-embedded-linux-musl-arm": "1.77.8",
+ "sass-embedded-linux-musl-arm64": "1.77.8",
+ "sass-embedded-linux-musl-ia32": "1.77.8",
+ "sass-embedded-linux-musl-x64": "1.77.8",
+ "sass-embedded-linux-x64": "1.77.8",
+ "sass-embedded-win32-arm64": "1.77.8",
+ "sass-embedded-win32-ia32": "1.77.8",
+ "sass-embedded-win32-x64": "1.77.8"
}
},
"node_modules/sass-embedded-linux-musl-x64": {
- "version": "1.77.5",
- "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.77.5.tgz",
- "integrity": "sha512-/SW9ggXZJilbRbKvRHAxEuQM6Yr9piEpvK7/aDevFL2XFvBW9x+dTzpH5jPVEmM0qWdJisS1r5mEv8AXUUdQZg==",
+ "version": "1.77.8",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.77.8.tgz",
+ "integrity": "sha512-2NtRpMXHeFo9kaYxuZ+Ewwo39CE7BTS2JDfXkTjZTZqd8H+8KC53eBh516YQnn2oiqxSiKxm7a6pxbxGZGwXOQ==",
"cpu": [
"x64"
],
@@ -5558,9 +5358,9 @@
}
},
"node_modules/sass-embedded-linux-x64": {
- "version": "1.77.5",
- "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.77.5.tgz",
- "integrity": "sha512-3EmYeY+K8nMwIy1El9C+mPuONMQyXSCD6Yyztn3G7moPdZTqXrTL7kTJIl+SRq1tCcnOMMGXnBRE7Kpou1wd+w==",
+ "version": "1.77.8",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.77.8.tgz",
+ "integrity": "sha512-ND5qZLWUCpOn7LJfOf0gLSZUWhNIysY+7NZK1Ctq+pM6tpJky3JM5I1jSMplNxv5H3o8p80n0gSm+fcjsEFfjQ==",
"cpu": [
"x64"
],
@@ -5605,9 +5405,9 @@
}
},
"node_modules/semver": {
- "version": "7.6.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
- "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
"dev": true,
"license": "ISC",
"bin": {
@@ -5848,6 +5648,17 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/string.prototype.repeat": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz",
+ "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.17.5"
+ }
+ },
"node_modules/string.prototype.trim": {
"version": "1.2.9",
"resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz",
@@ -5937,9 +5748,9 @@
}
},
"node_modules/stylelint": {
- "version": "16.6.1",
- "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.6.1.tgz",
- "integrity": "sha512-yNgz2PqWLkhH2hw6X9AweV9YvoafbAD5ZsFdKN9BvSDVwGvPh+AUIrn7lYwy1S7IHmtFin75LLfX1m0D2tHu8Q==",
+ "version": "16.8.1",
+ "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.8.1.tgz",
+ "integrity": "sha512-O8aDyfdODSDNz/B3gW2HQ+8kv8pfhSu7ZR7xskQ93+vI6FhKKGUJMQ03Ydu+w3OvXXE0/u4hWU4hCPNOyld+OA==",
"dev": true,
"funding": [
{
@@ -5953,9 +5764,9 @@
],
"license": "MIT",
"dependencies": {
- "@csstools/css-parser-algorithms": "^2.6.3",
- "@csstools/css-tokenizer": "^2.3.1",
- "@csstools/media-query-list-parser": "^2.1.11",
+ "@csstools/css-parser-algorithms": "^2.7.1",
+ "@csstools/css-tokenizer": "^2.4.1",
+ "@csstools/media-query-list-parser": "^2.1.13",
"@csstools/selector-specificity": "^3.1.1",
"@dual-bundle/import-meta-resolve": "^4.1.0",
"balanced-match": "^2.0.0",
@@ -5963,7 +5774,7 @@
"cosmiconfig": "^9.0.0",
"css-functions-list": "^3.2.2",
"css-tree": "^2.3.1",
- "debug": "^4.3.4",
+ "debug": "^4.3.6",
"fast-glob": "^3.3.2",
"fastest-levenshtein": "^1.0.16",
"file-entry-cache": "^9.0.0",
@@ -5974,16 +5785,16 @@
"ignore": "^5.3.1",
"imurmurhash": "^0.1.4",
"is-plain-object": "^5.0.0",
- "known-css-properties": "^0.31.0",
+ "known-css-properties": "^0.34.0",
"mathml-tag-names": "^2.1.3",
"meow": "^13.2.0",
"micromatch": "^4.0.7",
"normalize-path": "^3.0.0",
"picocolors": "^1.0.1",
- "postcss": "^8.4.38",
- "postcss-resolve-nested-selector": "^0.1.1",
+ "postcss": "^8.4.40",
+ "postcss-resolve-nested-selector": "^0.1.4",
"postcss-safe-parser": "^7.0.0",
- "postcss-selector-parser": "^6.1.0",
+ "postcss-selector-parser": "^6.1.1",
"postcss-value-parser": "^4.2.0",
"resolve-from": "^5.0.0",
"string-width": "^4.2.3",
@@ -6048,13 +5859,23 @@
}
},
"node_modules/stylelint-config-standard": {
- "version": "36.0.0",
- "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-36.0.0.tgz",
- "integrity": "sha512-3Kjyq4d62bYFp/Aq8PMKDwlgUyPU4nacXsjDLWJdNPRUgpuxALu1KnlAHIj36cdtxViVhXexZij65yM0uNIHug==",
+ "version": "36.0.1",
+ "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-36.0.1.tgz",
+ "integrity": "sha512-8aX8mTzJ6cuO8mmD5yon61CWuIM4UD8Q5aBcWKGSf6kg+EC3uhB+iOywpTK4ca6ZL7B49en8yanOFtUW0qNzyw==",
"dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/stylelint"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/stylelint"
+ }
+ ],
"license": "MIT",
"dependencies": {
- "stylelint-config-recommended": "^14.0.0"
+ "stylelint-config-recommended": "^14.0.1"
},
"engines": {
"node": ">=18.12.0"
@@ -6172,9 +5993,9 @@
}
},
"node_modules/stylelint-scss": {
- "version": "6.4.0",
- "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-6.4.0.tgz",
- "integrity": "sha512-1BKRzh2TW38hZm/IWdvBVjlJRERB2zTiwm1xaOeDtUEmEKfxYMNr9THBQQtBV8wGxal/sN+TRsF7v9A5sqGI1A==",
+ "version": "6.4.1",
+ "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-6.4.1.tgz",
+ "integrity": "sha512-+clI2bQC2FPOt06ZwUlXZZ95IO2C5bKTP0GLN1LNQPVvISfSNcgMKv/VTwym1mK9vnqhHbOk8lO4rj4nY7L9pw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6191,13 +6012,6 @@
"stylelint": "^16.0.2"
}
},
- "node_modules/stylelint-scss/node_modules/known-css-properties": {
- "version": "0.34.0",
- "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.34.0.tgz",
- "integrity": "sha512-tBECoUqNFbyAY4RrbqsBQqDFpGXAEbdD5QKr8kACx3+rnArmuuR22nKQWKazvp07N9yjTyDZaw/20UIH8tL9DQ==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/stylelint-use-logical-spec": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/stylelint-use-logical-spec/-/stylelint-use-logical-spec-5.0.1.tgz",
@@ -6354,16 +6168,16 @@
}
},
"node_modules/table/node_modules/ajv": {
- "version": "8.16.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz",
- "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==",
+ "version": "8.17.1",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
+ "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
"dev": true,
"license": "MIT",
"dependencies": {
"fast-deep-equal": "^3.1.3",
+ "fast-uri": "^3.0.1",
"json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2",
- "uri-js": "^4.4.1"
+ "require-from-string": "^2.0.2"
},
"funding": {
"type": "github",
@@ -6553,9 +6367,9 @@
}
},
"node_modules/typescript": {
- "version": "5.5.3",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz",
- "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==",
+ "version": "5.5.4",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz",
+ "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==",
"dev": true,
"license": "Apache-2.0",
"bin": {
@@ -6664,14 +6478,14 @@
}
},
"node_modules/which-builtin-type": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz",
- "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==",
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.4.tgz",
+ "integrity": "sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==",
"dev": true,
"license": "MIT",
"dependencies": {
- "function.prototype.name": "^1.1.5",
- "has-tostringtag": "^1.0.0",
+ "function.prototype.name": "^1.1.6",
+ "has-tostringtag": "^1.0.2",
"is-async-function": "^2.0.0",
"is-date-object": "^1.0.5",
"is-finalizationregistry": "^1.0.2",
@@ -6680,8 +6494,8 @@
"is-weakref": "^1.0.2",
"isarray": "^2.0.5",
"which-boxed-primitive": "^1.0.2",
- "which-collection": "^1.0.1",
- "which-typed-array": "^1.1.9"
+ "which-collection": "^1.0.2",
+ "which-typed-array": "^1.1.15"
},
"engines": {
"node": ">= 0.4"
diff --git a/packages/c/cockpit/suse_docs.patch b/packages/c/cockpit/suse_docs.patch
index 08088eef9cb..8957c05f521 100644
--- a/packages/c/cockpit/suse_docs.patch
+++ b/packages/c/cockpit/suse_docs.patch
@@ -1,21 +1,21 @@
-From adadbac839dc6d549a3a9b75ae1f8c422e82fa7c Mon Sep 17 00:00:00 2001
+From a051a54e7a522e1a6f20a56d3cae5f3eacdeeff9 Mon Sep 17 00:00:00 2001
From: Luna
-Date: Thu, 25 Jan 2024 10:06:03 +0530
+Date: Fri, 16 Aug 2024 11:10:19 +0530
Subject: [PATCH] replace with suse docs and move docs with out eqiv to docs-rh
-
+
---
- node_modules | 2 +-
- pkg/networkmanager/manifest.json | 19 +++++++++++--------
- pkg/shell/manifest.json | 4 ++--
+ pkg/kdump/manifest.json | 2 +-
+ pkg/networkmanager/manifest.json | 12 ++++--------
+ pkg/shell/manifest.json | 2 +-
pkg/storaged/manifest.json | 12 +++++++-----
pkg/systemd/manifest.json | 6 +++---
- pkg/users/manifest.json | 2 +-
- 6 files changed, 25 insertions(+), 20 deletions(-)
+ pkg/users/manifest.json | 4 ++--
+ 6 files changed, 18 insertions(+), 20 deletions(-)
-Index: cockpit/pkg/kdump/manifest.json
-===================================================================
---- cockpit.orig/pkg/kdump/manifest.json
-+++ cockpit/pkg/kdump/manifest.json
+diff --git a/pkg/kdump/manifest.json b/pkg/kdump/manifest.json
+index 65a03d10f..ac0ee34b9 100644
+--- a/pkg/kdump/manifest.json
++++ b/pkg/kdump/manifest.json
@@ -5,7 +5,7 @@
"tools": {
"index": {
@@ -25,10 +25,10 @@ Index: cockpit/pkg/kdump/manifest.json
{
"label": "Configuring kdump",
"url": "https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/managing_systems_using_the_rhel_9_web_console/configuring-kdump-in-the-web-console_system-management-using-the-rhel-9-web-console"
-Index: cockpit/pkg/networkmanager/manifest.json
-===================================================================
---- cockpit.orig/pkg/networkmanager/manifest.json
-+++ cockpit/pkg/networkmanager/manifest.json
+diff --git a/pkg/networkmanager/manifest.json b/pkg/networkmanager/manifest.json
+index c7b2cc6a0..f37aa1565 100644
+--- a/pkg/networkmanager/manifest.json
++++ b/pkg/networkmanager/manifest.json
@@ -10,23 +10,19 @@
"docs": [
{
@@ -57,23 +57,23 @@ Index: cockpit/pkg/networkmanager/manifest.json
}
],
"keywords": [
-Index: cockpit/pkg/packagekit/manifest.json
-===================================================================
---- cockpit.orig/pkg/packagekit/manifest.json
-+++ cockpit/pkg/packagekit/manifest.json
-@@ -9,7 +9,7 @@
- "tools": {
- "index": {
- "label": "Software updates",
-- "docs": [
-+ "docs-rh": [
- {
- "label": "Managing software updates",
- "url": "https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/managing_systems_using_the_rhel_9_web_console/managing-software-updates-in-the-web-console_system-management-using-the-rhel-9-web-console"
-Index: cockpit/pkg/storaged/manifest.json
-===================================================================
---- cockpit.orig/pkg/storaged/manifest.json
-+++ cockpit/pkg/storaged/manifest.json
+diff --git a/pkg/shell/manifest.json b/pkg/shell/manifest.json
+index a252e76d9..83be922c7 100644
+--- a/pkg/shell/manifest.json
++++ b/pkg/shell/manifest.json
+@@ -26,7 +26,7 @@
+ "zh-cn": "中文(中国)",
+ "zh-tw": "中文(台灣)"
+ },
+- "docs": [
++ "docs-rh": [
+ {
+ "label": "Web Console",
+ "url": "https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/managing_systems_using_the_rhel_9_web_console/index"
+diff --git a/pkg/storaged/manifest.json b/pkg/storaged/manifest.json
+index 8ee17324b..319204a22 100644
+--- a/pkg/storaged/manifest.json
++++ b/pkg/storaged/manifest.json
@@ -14,20 +14,22 @@
"docs": [
{
@@ -95,17 +95,17 @@ Index: cockpit/pkg/storaged/manifest.json
"label": "Managing LVMs",
- "url": "https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/managing_systems_using_the_rhel_9_web_console/using-the-web-console-for-configuring-lvm-logical-volumes_system-management-using-the-rhel-8-web-console"
- },
-+ "url": "https://documentation.suse.com/smart/systems-management/html/cockpit-slemicro/index.html#id-1.7.7"
++ "url": "https://documentation.suse.com/smart/systems-management/html/cockpit-slemicro/index.html#id-1.7.7"
+ }
+ ],
+ "docs-rh": [
{
"label": "Managing physical drives",
"url": "https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/managing_systems_using_the_rhel_9_web_console/using-the-web-console-for-changing-physical-drives-in-volume-groups_system-management-using-the-rhel-8-web-console"
-Index: cockpit/pkg/systemd/manifest.json
-===================================================================
---- cockpit.orig/pkg/systemd/manifest.json
-+++ cockpit/pkg/systemd/manifest.json
+diff --git a/pkg/systemd/manifest.json b/pkg/systemd/manifest.json
+index bd62a4cb3..5daf0a499 100644
+--- a/pkg/systemd/manifest.json
++++ b/pkg/systemd/manifest.json
@@ -12,7 +12,7 @@
"docs": [
{
@@ -133,36 +133,23 @@ Index: cockpit/pkg/systemd/manifest.json
}
],
"keywords": [
-Index: cockpit/pkg/users/manifest.json
-===================================================================
---- cockpit.orig/pkg/users/manifest.json
-+++ cockpit/pkg/users/manifest.json
-@@ -6,7 +6,7 @@
- "docs": [
+diff --git a/pkg/users/manifest.json b/pkg/users/manifest.json
+index 04295b6a4..2609d0b2c 100644
+--- a/pkg/users/manifest.json
++++ b/pkg/users/manifest.json
+@@ -3,10 +3,10 @@
+ "index": {
+ "label": "Accounts",
+ "order": 70,
+- "docs": [
++ "docs-rh": [
{
"label": "Managing user accounts",
- "url": "https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/managing_systems_using_the_rhel_9_web_console/managing-user-accounts-in-the-web-console_system-management-using-the-rhel-9-web-console"
-+ "url": "https://documentation.suse.com/smart/systems-management/html/cockpit-slemicro/index.html#glue-managing-users"
++ "url": "https://documentation.suse.com/sle-micro/6.0/html/Micro-6.0-cockpit/index.html#glue-managing-users"
}
],
"keywords": [
-Index: cockpit/pkg/shell/manifest.json
-===================================================================
---- cockpit.orig/pkg/shell/manifest.json
-+++ cockpit/pkg/shell/manifest.json
-@@ -25,7 +25,7 @@
- "uk-ua": "Українська",
- "zh-cn": "中文(中国)"
- },
-- "docs": [
-+ "docs-rh": [
- {
- "label": "Web Console",
- "url": "https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/managing_systems_using_the_rhel_9_web_console/index"
-@@ -55,4 +55,4 @@
- ]
- }
- ]
--}
-+}
-\ No newline at end of file
+--
+2.46.0
+
diff --git a/packages/c/containerized-data-importer/.files b/packages/c/containerized-data-importer/.files
index 3e67fbb55c0..1a3176f3408 100644
Binary files a/packages/c/containerized-data-importer/.files and b/packages/c/containerized-data-importer/.files differ
diff --git a/packages/c/containerized-data-importer/.rev b/packages/c/containerized-data-importer/.rev
index bbeecbb67b5..8eb8654368d 100644
--- a/packages/c/containerized-data-importer/.rev
+++ b/packages/c/containerized-data-importer/.rev
@@ -327,4 +327,12 @@
1188551
+
+ c6afdf1ef571c2ef41c5a49561f9fc73
+ 1.60.1
+
+ anag+factory
+
+ 1194924
+
diff --git a/packages/c/containerized-data-importer/0001-Bump-github.com-containers-image-v5-to-v5.30.1.patch b/packages/c/containerized-data-importer/0001-Bump-github.com-containers-image-v5-to-v5.30.1.patch
deleted file mode 100644
index d56d46e95cb..00000000000
--- a/packages/c/containerized-data-importer/0001-Bump-github.com-containers-image-v5-to-v5.30.1.patch
+++ /dev/null
@@ -1,327904 +0,0 @@
-From 4a60b480c08700e183ecdf3c9f656e664d1c504d Mon Sep 17 00:00:00 2001
-From: Vasiliy Ulyanov
-Date: Mon, 13 May 2024 18:40:21 +0200
-Subject: [PATCH] Bump github.com/containers/image/v5 to v5.30.1
-
-Address CVE-2024-3727
-
-https://www.cve.org/CVERecord?id=CVE-2024-3727
-
-Signed-off-by: Vasiliy Ulyanov
----
- go.mod | 82 +-
- go.sum | 197 +-
- .../go/compute/internal/version.go | 2 +-
- vendor/cloud.google.com/go/iam/CHANGES.md | 14 +
- .../go/iam/apiv1/iampb/iam_policy.pb.go | 2 +-
- .../go/iam/apiv1/iampb/options.pb.go | 2 +-
- .../go/iam/apiv1/iampb/policy.pb.go | 20 +-
- .../go/internal/.repo-metadata-full.json | 170 +-
- vendor/github.com/BurntSushi/toml/decode.go | 4 +-
- .../github.com/BurntSushi/toml/deprecated.go | 8 +
- vendor/github.com/BurntSushi/toml/encode.go | 53 +-
- vendor/github.com/BurntSushi/toml/error.go | 4 +-
- vendor/github.com/BurntSushi/toml/lex.go | 82 +-
- vendor/github.com/BurntSushi/toml/meta.go | 2 +-
- vendor/github.com/BurntSushi/toml/parse.go | 136 +-
- .../containers/image/v5/docker/BUILD.bazel | 1 +
- .../image/v5/docker/distribution_error.go | 3 +-
- .../image/v5/docker/docker_client.go | 161 +-
- .../image/v5/docker/docker_image.go | 10 +-
- .../image/v5/docker/docker_image_dest.go | 126 +-
- .../image/v5/docker/docker_image_src.go | 33 +-
- .../image/v5/docker/docker_transport.go | 63 +-
- .../containers/image/v5/docker/errors.go | 9 +-
- .../v5/docker/policyconfiguration/naming.go | 2 +-
- .../image/v5/docker/registries_d.go | 7 +-
- .../containers/image/v5/image/BUILD.bazel | 2 +
- .../containers/image/v5/image/unparsed.go | 22 +
- .../internal/blobinfocache/blobinfocache.go | 6 +
- .../image/v5/internal/blobinfocache/types.go | 18 +-
- .../image/v5/internal/image/BUILD.bazel | 2 +
- .../image/v5/internal/image/docker_schema2.go | 4 +-
- .../containers/image/v5/internal/image/oci.go | 85 +-
- .../imagedestination/impl/BUILD.bazel | 4 +
- .../internal/imagedestination/impl/helpers.go | 42 +
- .../imagedestination/stubs/BUILD.bazel | 1 -
- .../stubs/put_blob_partial.go | 3 +-
- .../v5/internal/imagedestination/wrapper.go | 5 +-
- .../image/v5/internal/imagesource/wrapper.go | 2 +-
- .../image/v5/internal/manifest/BUILD.bazel | 1 +
- .../internal/manifest/docker_schema2_list.go | 122 +-
- .../image/v5/internal/manifest/errors.go | 22 +-
- .../image/v5/internal/manifest/list.go | 43 +
- .../image/v5/internal/manifest/manifest.go | 29 +-
- .../image/v5/internal/manifest/oci_index.go | 233 +-
- .../v5/internal/pkg/platform/BUILD.bazel | 1 +
- .../internal/pkg/platform/platform_matcher.go | 34 +-
- .../image/v5/internal/private/private.go | 21 +-
- .../containers/image/v5/internal/set/set.go | 10 +-
- .../v5/internal/streamdigest/stream_digest.go | 2 +-
- .../image/v5/internal/tmpdir/tmpdir.go | 12 +-
- .../v5/internal/unparsedimage/BUILD.bazel | 14 +
- .../v5/internal/unparsedimage/wrapper.go | 38 +
- .../containers/image/v5/manifest/common.go | 2 +-
- .../image/v5/manifest/docker_schema1.go | 18 +
- .../image/v5/manifest/docker_schema2.go | 3 +
- .../containers/image/v5/manifest/manifest.go | 2 +-
- .../containers/image/v5/manifest/oci.go | 22 +-
- .../image/v5/oci/archive/BUILD.bazel | 2 +-
- .../image/v5/oci/archive/oci_dest.go | 13 +-
- .../image/v5/oci/archive/oci_src.go | 12 +
- .../image/v5/oci/archive/oci_transport.go | 21 +-
- .../image/v5/oci/layout/BUILD.bazel | 4 +
- .../image/v5/oci/layout/oci_delete.go | 240 +
- .../image/v5/oci/layout/oci_dest.go | 18 +-
- .../containers/image/v5/oci/layout/oci_src.go | 2 +-
- .../image/v5/oci/layout/oci_transport.go | 58 +-
- .../image/v5/pkg/blobinfocache/BUILD.bazel | 2 +-
- .../v5/pkg/blobinfocache/boltdb/boltdb.go | 393 -
- .../image/v5/pkg/blobinfocache/default.go | 20 +-
- .../internal/prioritize/prioritize.go | 57 +-
- .../v5/pkg/blobinfocache/memory/memory.go | 70 +-
- .../{boltdb => sqlite}/BUILD.bazel | 8 +-
- .../v5/pkg/blobinfocache/sqlite/sqlite.go | 575 +
- .../image/v5/pkg/compression/compression.go | 12 +-
- .../v5/pkg/compression/internal/types.go | 36 +-
- .../image/v5/pkg/docker/config/config.go | 396 +-
- .../v5/pkg/tlsclientconfig/tlsclientconfig.go | 2 +-
- .../containers/image/v5/types/types.go | 16 +-
- .../containers/image/v5/version/version.go | 4 +-
- .../containers/ocicrypt/spec/spec.go | 10 +-
- .../containers/storage/pkg/archive/archive.go | 115 +-
- .../storage/pkg/archive/archive_linux.go | 5 +-
- .../storage/pkg/archive/archive_unix.go | 27 +-
- .../storage/pkg/archive/archive_windows.go | 7 +-
- .../containers/storage/pkg/archive/changes.go | 14 +-
- .../storage/pkg/archive/changes_linux.go | 1 -
- .../storage/pkg/archive/changes_other.go | 5 +-
- .../storage/pkg/archive/changes_windows.go | 1 -
- .../containers/storage/pkg/archive/copy.go | 1 -
- .../containers/storage/pkg/archive/diff.go | 2 +-
- .../storage/pkg/archive/fflags_bsd.go | 2 +-
- .../pkg/chunked/compressor/BUILD.bazel | 3 +
- .../pkg/chunked/compressor/compressor.go | 94 +-
- .../storage/pkg/chunked/compressor/rollsum.go | 12 +-
- .../pkg/chunked/internal/compression.go | 123 +-
- .../storage/pkg/fileutils/fileutils.go | 7 +-
- .../storage/pkg/homedir/BUILD.bazel | 13 +
- .../containers/storage/pkg/homedir/homedir.go | 15 -
- .../storage/pkg/homedir/homedir_others.go | 21 +-
- .../storage/pkg/homedir/homedir_unix.go | 113 +-
- .../storage/pkg/homedir/homedir_windows.go | 29 +
- .../storage/pkg/idtools/BUILD.bazel | 26 +-
- .../storage/pkg/idtools/idtools_unix.go | 8 +-
- .../storage/pkg/idtools/usergroupadd_linux.go | 1 -
- .../storage/pkg/idtools/utils_unix.go | 4 +-
- .../storage/pkg/ioutils/BUILD.bazel | 2 +-
- .../storage/pkg/ioutils/fswriters.go | 130 +-
- .../storage/pkg/ioutils/fswriters_linux.go | 14 +-
- .../storage/pkg/ioutils/fswriters_other.go | 26 +
- .../pkg/ioutils/fswriters_unsupported.go | 12 -
- .../storage/pkg/lockfile/BUILD.bazel | 4 +
- .../storage/pkg/lockfile/lastwrite.go | 82 +
- .../storage/pkg/lockfile/lockfile.go | 279 +
- .../storage/pkg/lockfile/lockfile_unix.go | 385 +-
- .../storage/pkg/lockfile/lockfile_windows.go | 166 +-
- .../containers/storage/pkg/regexp/regexp.go | 98 +-
- .../containers/storage/pkg/system/errors.go | 6 +-
- .../storage/pkg/system/init_windows.go | 1 -
- .../storage/pkg/system/meminfo_solaris.go | 1 -
- .../containers/storage/pkg/system/path.go | 1 -
- .../containers/storage/pkg/system/rm.go | 12 +-
- .../storage/pkg/system/stat_common.go | 3 +-
- .../storage/pkg/system/stat_darwin.go | 6 +-
- .../storage/pkg/system/stat_freebsd.go | 6 +-
- .../storage/pkg/system/stat_linux.go | 6 +-
- .../storage/pkg/system/stat_openbsd.go | 6 +-
- .../storage/pkg/system/stat_solaris.go | 6 +-
- .../storage/pkg/system/stat_unix.go | 6 +
- .../storage/pkg/system/stat_windows.go | 7 +-
- .../storage/pkg/unshare/unshare_darwin.go | 5 +
- .../storage/pkg/unshare/unshare_freebsd.go | 2 +-
- .../storage/pkg/unshare/unshare_linux.go | 12 +-
- .../pkg/unshare/unshare_unsupported.go | 7 +-
- .../distribution/reference/.gitattributes | 1 +
- .../distribution/reference/.gitignore | 2 +
- .../distribution/reference/.golangci.yml | 18 +
- .../reference}/BUILD.bazel | 12 +-
- .../distribution/reference/CODE-OF-CONDUCT.md | 5 +
- .../distribution/reference/CONTRIBUTING.md | 114 +
- .../distribution/reference/GOVERNANCE.md | 144 +
- .../github.com/distribution/reference/LICENSE | 202 +
- .../distribution/reference/MAINTAINERS | 26 +
- .../distribution/reference/Makefile | 25 +
- .../distribution/reference/README.md | 30 +
- .../distribution/reference/SECURITY.md | 7 +
- .../reference/distribution-logo.svg | 1 +
- .../distribution/reference/helpers.go | 2 +-
- .../distribution/reference/normalize.go | 131 +-
- .../distribution/reference/reference.go | 27 +-
- .../distribution/reference/regexp.go | 163 +
- .../github.com/distribution/reference/sort.go | 75 +
- .../docker/distribution/digestset/set.go | 247 -
- .../docker/distribution/reference/BUILD.bazel | 18 -
- .../docker/distribution/reference/regexp.go | 143 -
- .../distribution/registry/api/v2/BUILD.bazel | 2 +-
- .../registry/api/v2/descriptors.go | 2 +-
- .../distribution/registry/api/v2/urls.go | 2 +-
- .../client/BUILD.bazel | 5 +-
- .../client/client.go | 25 +-
- .../client/command.go | 13 +-
- .../credentials/credentials.go | 69 +-
- .../credentials/error.go | 40 +-
- vendor/github.com/docker/docker/AUTHORS | 67 +-
- .../docker/api/types/versions/compare.go | 8 +-
- .../go-connections/tlsconfig/BUILD.bazel | 5 +-
- .../{certpool_go17.go => certpool.go} | 2 -
- .../tlsconfig/certpool_other.go | 13 -
- .../docker/go-connections/tlsconfig/config.go | 85 +-
- .../tlsconfig/config_client_ciphers.go | 3 -
- .../tlsconfig/config_legacy_client_ciphers.go | 15 -
- vendor/github.com/go-openapi/swag/.gitignore | 1 +
- .../github.com/go-openapi/swag/.golangci.yml | 54 +-
- .../github.com/go-openapi/swag/BENCHMARK.md | 52 +
- vendor/github.com/go-openapi/swag/BUILD.bazel | 6 +-
- vendor/github.com/go-openapi/swag/README.md | 8 +-
- .../go-openapi/swag/initialism_index.go | 202 +
- vendor/github.com/go-openapi/swag/loading.go | 105 +-
- .../github.com/go-openapi/swag/name_lexem.go | 70 +-
- .../github.com/go-openapi/swag/post_go18.go | 24 -
- .../github.com/go-openapi/swag/post_go19.go | 68 -
- vendor/github.com/go-openapi/swag/pre_go18.go | 24 -
- vendor/github.com/go-openapi/swag/pre_go19.go | 70 -
- vendor/github.com/go-openapi/swag/split.go | 470 +-
- .../go-openapi/swag/string_bytes.go | 22 +
- vendor/github.com/go-openapi/swag/util.go | 210 +-
- vendor/github.com/go-openapi/swag/yaml.go | 39 +-
- .../github.com/google/go-cmp/cmp/BUILD.bazel | 2 +-
- .../github.com/google/go-cmp/cmp/compare.go | 38 +-
- .../cmp/{export_unsafe.go => export.go} | 5 -
- .../google/go-cmp/cmp/export_panic.go | 16 -
- .../go-cmp/cmp/internal/value/BUILD.bazel | 2 +-
- .../value/{pointer_unsafe.go => pointer.go} | 3 -
- .../cmp/internal/value/pointer_purego.go | 34 -
- .../github.com/google/go-cmp/cmp/options.go | 84 +-
- vendor/github.com/google/go-cmp/cmp/path.go | 46 +-
- .../google/go-cmp/cmp/report_reflect.go | 2 +-
- vendor/github.com/google/uuid/BUILD.bazel | 2 +
- vendor/github.com/google/uuid/CHANGELOG.md | 31 +
- vendor/github.com/google/uuid/CONTRIBUTING.md | 2 +-
- vendor/github.com/google/uuid/hash.go | 6 +
- vendor/github.com/google/uuid/time.go | 21 +-
- vendor/github.com/google/uuid/uuid.go | 79 +-
- vendor/github.com/google/uuid/version6.go | 56 +
- vendor/github.com/google/uuid/version7.go | 104 +
- vendor/github.com/gorilla/mux/.editorconfig | 20 +
- vendor/github.com/gorilla/mux/.gitignore | 1 +
- vendor/github.com/gorilla/mux/AUTHORS | 8 -
- vendor/github.com/gorilla/mux/LICENSE | 2 +-
- vendor/github.com/gorilla/mux/Makefile | 34 +
- vendor/github.com/gorilla/mux/README.md | 61 +-
- vendor/github.com/gorilla/mux/doc.go | 25 +-
- vendor/github.com/gorilla/mux/mux.go | 16 +-
- vendor/github.com/gorilla/mux/regexp.go | 10 +-
- vendor/github.com/gorilla/mux/route.go | 109 +-
- .../klauspost/compress/.goreleaser.yml | 22 +-
- .../github.com/klauspost/compress/README.md | 53 +-
- .../klauspost/compress/flate/BUILD.bazel | 3 +
- .../klauspost/compress/flate/deflate.go | 31 +-
- .../klauspost/compress/flate/fast_encoder.go | 23 -
- .../klauspost/compress/flate/inflate.go | 66 +-
- .../klauspost/compress/flate/inflate_gen.go | 34 +-
- .../klauspost/compress/flate/level5.go | 398 +
- .../compress/flate/matchlen_amd64.go | 16 +
- .../klauspost/compress/flate/matchlen_amd64.s | 68 +
- .../compress/flate/matchlen_generic.go | 33 +
- .../klauspost/compress/fse/bitwriter.go | 3 +-
- .../klauspost/compress/fse/compress.go | 5 +-
- .../klauspost/compress/huff0/BUILD.bazel | 1 -
- .../klauspost/compress/huff0/bitwriter.go | 3 +-
- .../klauspost/compress/huff0/bytereader.go | 44 -
- .../klauspost/compress/huff0/compress.go | 25 +-
- .../klauspost/compress/huff0/huff0.go | 4 +-
- vendor/github.com/klauspost/compress/s2sx.mod | 2 +-
- .../klauspost/compress/zstd/README.md | 2 +-
- .../klauspost/compress/zstd/bitreader.go | 34 +-
- .../klauspost/compress/zstd/bitwriter.go | 3 +-
- .../klauspost/compress/zstd/blockenc.go | 29 +-
- .../klauspost/compress/zstd/decodeheader.go | 56 +-
- .../klauspost/compress/zstd/dict.go | 379 +-
- .../klauspost/compress/zstd/enc_best.go | 82 +-
- .../klauspost/compress/zstd/enc_better.go | 17 +-
- .../klauspost/compress/zstd/encoder.go | 13 +-
- .../compress/zstd/encoder_options.go | 6 +-
- .../klauspost/compress/zstd/frameenc.go | 6 +-
- .../compress/zstd/fse_decoder_generic.go | 11 +-
- .../klauspost/compress/zstd/seqdec.go | 17 +-
- .../klauspost/compress/zstd/seqdec_amd64.s | 264 +-
- .../klauspost/compress/zstd/seqdec_generic.go | 2 +-
- .../klauspost/compress/zstd/snappy.go | 5 +-
- .../github.com/mattn/go-sqlite3/.codecov.yml | 4 +
- vendor/github.com/mattn/go-sqlite3/.gitignore | 14 +
- .../github.com/mattn/go-sqlite3/BUILD.bazel | 125 +
- vendor/github.com/mattn/go-sqlite3/LICENSE | 21 +
- vendor/github.com/mattn/go-sqlite3/README.md | 603 +
- vendor/github.com/mattn/go-sqlite3/backup.go | 85 +
- .../github.com/mattn/go-sqlite3/callback.go | 411 +
- vendor/github.com/mattn/go-sqlite3/convert.go | 299 +
- vendor/github.com/mattn/go-sqlite3/doc.go | 134 +
- vendor/github.com/mattn/go-sqlite3/error.go | 150 +
- .../mattn/go-sqlite3/sqlite3-binding.c | 256040 +++++++++++++++
- .../mattn/go-sqlite3/sqlite3-binding.h | 13456 +
- vendor/github.com/mattn/go-sqlite3/sqlite3.go | 2281 +
- .../mattn/go-sqlite3/sqlite3_context.go | 103 +
- .../mattn/go-sqlite3/sqlite3_func_crypt.go | 120 +
- .../mattn/go-sqlite3/sqlite3_go18.go | 54 +
- .../mattn/go-sqlite3/sqlite3_libsqlite3.go | 22 +
- .../go-sqlite3/sqlite3_load_extension.go | 85 +
- .../go-sqlite3/sqlite3_load_extension_omit.go | 25 +
- .../sqlite3_opt_allow_uri_authority.go | 16 +
- .../mattn/go-sqlite3/sqlite3_opt_app_armor.go | 16 +
- .../go-sqlite3/sqlite3_opt_column_metadata.go | 22 +
- .../go-sqlite3/sqlite3_opt_foreign_keys.go | 16 +
- .../mattn/go-sqlite3/sqlite3_opt_fts5.go | 15 +
- .../mattn/go-sqlite3/sqlite3_opt_icu.go | 20 +
- .../go-sqlite3/sqlite3_opt_introspect.go | 16 +
- .../go-sqlite3/sqlite3_opt_math_functions.go | 15 +
- .../mattn/go-sqlite3/sqlite3_opt_os_trace.go | 15 +
- .../mattn/go-sqlite3/sqlite3_opt_preupdate.go | 21 +
- .../go-sqlite3/sqlite3_opt_preupdate_hook.go | 113 +
- .../go-sqlite3/sqlite3_opt_preupdate_omit.go | 22 +
- .../go-sqlite3/sqlite3_opt_secure_delete.go | 16 +
- .../sqlite3_opt_secure_delete_fast.go | 16 +
- .../mattn/go-sqlite3/sqlite3_opt_serialize.go | 83 +
- .../go-sqlite3/sqlite3_opt_serialize_omit.go | 21 +
- .../mattn/go-sqlite3/sqlite3_opt_stat4.go | 16 +
- .../go-sqlite3/sqlite3_opt_unlock_notify.c | 85 +
- .../go-sqlite3/sqlite3_opt_unlock_notify.go | 93 +
- .../mattn/go-sqlite3/sqlite3_opt_userauth.go | 295 +
- .../go-sqlite3/sqlite3_opt_userauth_omit.go | 158 +
- .../go-sqlite3/sqlite3_opt_vacuum_full.go | 16 +
- .../go-sqlite3/sqlite3_opt_vacuum_incr.go | 16 +
- .../mattn/go-sqlite3/sqlite3_opt_vtable.go | 721 +
- .../mattn/go-sqlite3/sqlite3_other.go | 18 +
- .../mattn/go-sqlite3/sqlite3_solaris.go | 15 +
- .../mattn/go-sqlite3/sqlite3_trace.go | 288 +
- .../mattn/go-sqlite3/sqlite3_type.go | 108 +
- .../go-sqlite3/sqlite3_usleep_windows.go | 42 +
- .../mattn/go-sqlite3/sqlite3_windows.go | 18 +
- .../github.com/mattn/go-sqlite3/sqlite3ext.h | 728 +
- .../mattn/go-sqlite3/static_mock.go | 38 +
- .../moby/sys/mountinfo/mountinfo_linux.go | 50 +-
- .../sys}/user/BUILD.bazel | 4 +-
- .../runc => moby/sys/user}/LICENSE | 13 +-
- .../sys}/user/lookup_unix.go | 0
- .../libcontainer => moby/sys}/user/user.go | 16 +-
- .../sys}/user/user_fuzzer.go | 0
- .../image-spec/specs-go/v1/BUILD.bazel | 1 -
- .../image-spec/specs-go/v1/annotations.go | 9 -
- .../image-spec/specs-go/v1/artifact.go | 34 -
- .../image-spec/specs-go/v1/config.go | 29 +-
- .../image-spec/specs-go/v1/descriptor.go | 12 +-
- .../image-spec/specs-go/v1/index.go | 6 +
- .../image-spec/specs-go/v1/layout.go | 6 +-
- .../image-spec/specs-go/v1/manifest.go | 3 +
- .../image-spec/specs-go/v1/mediatype.go | 41 +-
- .../image-spec/specs-go/version.go | 2 +-
- vendor/github.com/opencontainers/runc/NOTICE | 17 -
- .../runtime-spec/specs-go/config.go | 121 +-
- .../runtime-spec/specs-go/version.go | 4 +-
- .../prometheus/collectors/expvar_collector.go | 2 +-
- .../collectors/go_collector_latest.go | 9 +-
- .../client_golang/prometheus/counter.go | 26 +-
- .../client_golang/prometheus/desc.go | 28 +-
- .../prometheus/expvar_collector.go | 2 +-
- .../client_golang/prometheus/gauge.go | 8 +-
- .../client_golang/prometheus/histogram.go | 118 +-
- .../prometheus/internal/difflib.go | 2 +-
- .../client_golang/prometheus/labels.go | 58 +-
- .../client_golang/prometheus/metric.go | 3 +
- .../prometheus/promhttp/instrument_server.go | 9 +-
- .../client_golang/prometheus/registry.go | 6 +-
- .../client_golang/prometheus/summary.go | 41 +-
- .../client_golang/prometheus/value.go | 55 +-
- .../client_golang/prometheus/vec.go | 106 +-
- .../prometheus/client_model/go/metrics.pb.go | 350 +-
- .../prometheus/procfs/Makefile.common | 8 +-
- vendor/github.com/prometheus/procfs/fs.go | 8 +-
- .../prometheus/procfs/fs_statfs_notype.go | 4 +-
- .../prometheus/procfs/fs_statfs_type.go | 4 +-
- vendor/github.com/prometheus/procfs/proc.go | 2 +-
- .../github.com/prometheus/procfs/proc_psi.go | 4 +-
- .../prometheus/procfs/proc_smaps.go | 4 +-
- vendor/github.com/prometheus/procfs/stat.go | 4 +
- vendor/github.com/prometheus/procfs/thread.go | 6 +-
- vendor/github.com/sirupsen/logrus/README.md | 8 +-
- vendor/github.com/sirupsen/logrus/writer.go | 34 +-
- .../vbatts/tar-split/archive/tar/reader.go | 7 +-
- .../vbatts/tar-split/tar/asm/BUILD.bazel | 17 +
- .../vbatts/tar-split/tar/asm/README.md | 44 +
- .../vbatts/tar-split/tar/asm/assemble.go | 132 +
- .../vbatts/tar-split/tar/asm/disassemble.go | 156 +
- .../vbatts/tar-split/tar/asm/doc.go | 9 +
- .../vbatts/tar-split/tar/storage}/BUILD.bazel | 11 +-
- .../vbatts/tar-split/tar/storage/doc.go | 12 +
- .../vbatts/tar-split/tar/storage/entry.go | 78 +
- .../vbatts/tar-split/tar/storage/getter.go | 105 +
- .../vbatts/tar-split/tar/storage/packer.go | 110 +
- vendor/go.etcd.io/bbolt/.gitignore | 10 -
- vendor/go.etcd.io/bbolt/BUILD.bazel | 87 -
- vendor/go.etcd.io/bbolt/LICENSE | 20 -
- vendor/go.etcd.io/bbolt/Makefile | 63 -
- vendor/go.etcd.io/bbolt/README.md | 967 -
- vendor/go.etcd.io/bbolt/bolt_386.go | 7 -
- vendor/go.etcd.io/bbolt/bolt_amd64.go | 7 -
- vendor/go.etcd.io/bbolt/bolt_arm.go | 7 -
- vendor/go.etcd.io/bbolt/bolt_arm64.go | 10 -
- vendor/go.etcd.io/bbolt/bolt_linux.go | 10 -
- vendor/go.etcd.io/bbolt/bolt_loong64.go | 10 -
- vendor/go.etcd.io/bbolt/bolt_mips64x.go | 10 -
- vendor/go.etcd.io/bbolt/bolt_mipsx.go | 10 -
- vendor/go.etcd.io/bbolt/bolt_openbsd.go | 27 -
- vendor/go.etcd.io/bbolt/bolt_ppc.go | 10 -
- vendor/go.etcd.io/bbolt/bolt_ppc64.go | 10 -
- vendor/go.etcd.io/bbolt/bolt_ppc64le.go | 10 -
- vendor/go.etcd.io/bbolt/bolt_riscv64.go | 10 -
- vendor/go.etcd.io/bbolt/bolt_s390x.go | 10 -
- vendor/go.etcd.io/bbolt/bolt_unix.go | 87 -
- vendor/go.etcd.io/bbolt/bolt_unix_aix.go | 91 -
- vendor/go.etcd.io/bbolt/bolt_unix_solaris.go | 88 -
- vendor/go.etcd.io/bbolt/bolt_windows.go | 117 -
- vendor/go.etcd.io/bbolt/boltsync_unix.go | 9 -
- vendor/go.etcd.io/bbolt/bucket.go | 791 -
- vendor/go.etcd.io/bbolt/compact.go | 119 -
- vendor/go.etcd.io/bbolt/cursor.go | 420 -
- vendor/go.etcd.io/bbolt/db.go | 1361 -
- vendor/go.etcd.io/bbolt/doc.go | 40 -
- vendor/go.etcd.io/bbolt/errors.go | 78 -
- vendor/go.etcd.io/bbolt/freelist.go | 405 -
- vendor/go.etcd.io/bbolt/freelist_hmap.go | 178 -
- vendor/go.etcd.io/bbolt/mlock_unix.go | 37 -
- vendor/go.etcd.io/bbolt/mlock_windows.go | 11 -
- vendor/go.etcd.io/bbolt/node.go | 610 -
- vendor/go.etcd.io/bbolt/page.go | 214 -
- vendor/go.etcd.io/bbolt/tx.go | 797 -
- vendor/go.etcd.io/bbolt/tx_check.go | 226 -
- vendor/go.etcd.io/bbolt/unsafe.go | 39 -
- .../x/crypto/internal/poly1305/sum_ppc64le.s | 14 +-
- vendor/golang.org/x/exp/slices/BUILD.bazel | 3 +-
- vendor/golang.org/x/exp/slices/cmp.go | 44 +
- vendor/golang.org/x/exp/slices/slices.go | 397 +-
- vendor/golang.org/x/exp/slices/sort.go | 115 +-
- .../slices/{zsortfunc.go => zsortanyfunc.go} | 154 +-
- .../golang.org/x/exp/slices/zsortordered.go | 34 +-
- vendor/golang.org/x/net/context/go17.go | 1 -
- vendor/golang.org/x/net/context/go19.go | 1 -
- vendor/golang.org/x/net/context/pre_go17.go | 1 -
- vendor/golang.org/x/net/context/pre_go19.go | 1 -
- vendor/golang.org/x/net/html/token.go | 12 +-
- vendor/golang.org/x/net/http2/BUILD.bazel | 6 -
- vendor/golang.org/x/net/http2/databuffer.go | 59 +-
- vendor/golang.org/x/net/http2/frame.go | 11 +-
- vendor/golang.org/x/net/http2/go111.go | 30 -
- vendor/golang.org/x/net/http2/go115.go | 27 -
- vendor/golang.org/x/net/http2/go118.go | 17 -
- vendor/golang.org/x/net/http2/not_go111.go | 21 -
- vendor/golang.org/x/net/http2/not_go115.go | 31 -
- vendor/golang.org/x/net/http2/not_go118.go | 17 -
- vendor/golang.org/x/net/http2/server.go | 24 +-
- vendor/golang.org/x/net/http2/transport.go | 42 +-
- vendor/golang.org/x/net/idna/go118.go | 1 -
- vendor/golang.org/x/net/idna/idna10.0.0.go | 1 -
- vendor/golang.org/x/net/idna/idna9.0.0.go | 1 -
- vendor/golang.org/x/net/idna/pre_go118.go | 1 -
- vendor/golang.org/x/net/idna/tables10.0.0.go | 1 -
- vendor/golang.org/x/net/idna/tables11.0.0.go | 1 -
- vendor/golang.org/x/net/idna/tables12.0.0.go | 1 -
- vendor/golang.org/x/net/idna/tables13.0.0.go | 1 -
- vendor/golang.org/x/net/idna/tables15.0.0.go | 1 -
- vendor/golang.org/x/net/idna/tables9.0.0.go | 1 -
- vendor/golang.org/x/net/idna/trie12.0.0.go | 1 -
- vendor/golang.org/x/net/idna/trie13.0.0.go | 1 -
- vendor/golang.org/x/oauth2/BUILD.bazel | 2 +
- vendor/golang.org/x/oauth2/deviceauth.go | 198 +
- vendor/golang.org/x/oauth2/google/BUILD.bazel | 4 +-
- .../x/oauth2/google/appengine_gen1.go | 1 -
- .../x/oauth2/google/appengine_gen2_flex.go | 1 -
- vendor/golang.org/x/oauth2/google/default.go | 103 +-
- vendor/golang.org/x/oauth2/google/doc.go | 84 +-
- .../oauth2/google/externalaccount/BUILD.bazel | 22 +
- .../{internal => }/externalaccount/aws.go | 159 +-
- .../google/externalaccount/basecredentials.go | 484 +
- .../externalaccount/executablecredsource.go | 32 +-
- .../externalaccount/filecredsource.go | 18 +-
- .../x/oauth2/google/externalaccount/header.go | 64 +
- .../programmaticrefreshcredsource.go | 21 +
- .../externalaccount/urlcredsource.go | 22 +-
- vendor/golang.org/x/oauth2/google/google.go | 53 +-
- .../externalaccount/basecredentials.go | 269 -
- .../google/internal/externalaccount/err.go | 18 -
- .../externalaccountauthorizeduser/BUILD.bazel | 13 +
- .../externalaccountauthorizeduser.go | 114 +
- .../google/internal/impersonate/BUILD.bazel | 10 +
- .../impersonate.go | 2 +-
- .../BUILD.bazel | 11 +-
- .../clientauth.go | 8 +-
- .../sts_exchange.go | 42 +-
- .../x/oauth2/internal/client_appengine.go | 1 -
- vendor/golang.org/x/oauth2/internal/token.go | 70 +-
- vendor/golang.org/x/oauth2/oauth2.go | 33 +-
- vendor/golang.org/x/oauth2/pkce.go | 68 +
- vendor/golang.org/x/oauth2/token.go | 2 +-
- vendor/golang.org/x/sync/LICENSE | 27 +
- vendor/golang.org/x/sync/PATENTS | 22 +
- .../golang.org/x/sync/semaphore/BUILD.bazel | 9 +
- .../golang.org/x/sync/semaphore/semaphore.go | 136 +
- vendor/golang.org/x/sys/execabs/execabs.go | 102 -
- .../golang.org/x/sys/execabs/execabs_go118.go | 17 -
- .../golang.org/x/sys/execabs/execabs_go119.go | 20 -
- vendor/golang.org/x/sys/unix/aliases.go | 2 +-
- .../x/sys/unix/syscall_darwin_libSystem.go | 2 +-
- .../golang.org/x/sys/unix/syscall_freebsd.go | 12 +-
- vendor/golang.org/x/sys/unix/syscall_linux.go | 99 +
- .../golang.org/x/sys/unix/zsyscall_linux.go | 10 +
- vendor/golang.org/x/sys/unix/ztypes_linux.go | 60 +
- .../x/tools/go/ast/astutil/BUILD.bazel | 1 -
- .../x/tools/go/ast/astutil/enclosing.go | 8 +-
- .../x/tools/go/ast/astutil/rewrite.go | 8 +-
- .../x/tools/go/ast/inspector/BUILD.bazel | 1 -
- .../x/tools/go/ast/inspector/typeof.go | 4 +-
- vendor/golang.org/x/tools/imports/forward.go | 4 +-
- .../x/tools/internal/event/keys/BUILD.bazel | 1 +
- .../x/tools/internal/event/keys/util.go | 21 +
- .../x/tools/internal/fastwalk/BUILD.bazel | 19 -
- .../x/tools/internal/fastwalk/fastwalk.go | 196 -
- .../internal/fastwalk/fastwalk_darwin.go | 119 -
- .../fastwalk/fastwalk_dirent_fileno.go | 14 -
- .../internal/fastwalk/fastwalk_dirent_ino.go | 15 -
- .../fastwalk/fastwalk_dirent_namlen_bsd.go | 14 -
- .../fastwalk/fastwalk_dirent_namlen_linux.go | 29 -
- .../internal/fastwalk/fastwalk_portable.go | 38 -
- .../tools/internal/fastwalk/fastwalk_unix.go | 153 -
- .../x/tools/internal/gocommand/BUILD.bazel | 1 -
- .../x/tools/internal/gocommand/invoke.go | 27 +-
- .../x/tools/internal/gopathwalk/BUILD.bazel | 1 -
- .../x/tools/internal/gopathwalk/walk.go | 289 +-
- .../x/tools/internal/imports/fix.go | 197 +-
- .../x/tools/internal/imports/imports.go | 2 +-
- .../x/tools/internal/imports/mod.go | 290 +-
- .../x/tools/internal/imports/mod_cache.go | 116 +-
- .../x/tools/internal/imports/zstdlib.go | 291 +
- .../x/tools/internal/typeparams/BUILD.bazel | 19 -
- .../x/tools/internal/typeparams/common.go | 204 -
- .../x/tools/internal/typeparams/coretype.go | 122 -
- .../internal/typeparams/enabled_go117.go | 12 -
- .../internal/typeparams/enabled_go118.go | 15 -
- .../x/tools/internal/typeparams/normalize.go | 218 -
- .../x/tools/internal/typeparams/termlist.go | 163 -
- .../internal/typeparams/typeparams_go117.go | 197 -
- .../internal/typeparams/typeparams_go118.go | 151 -
- .../x/tools/internal/typeparams/typeterm.go | 170 -
- .../google.golang.org/appengine/.travis.yml | 18 -
- .../google.golang.org/appengine/BUILD.bazel | 1 -
- .../appengine/CONTRIBUTING.md | 6 +-
- vendor/google.golang.org/appengine/README.md | 6 +-
- .../google.golang.org/appengine/appengine.go | 23 +-
- .../appengine/appengine_vm.go | 12 +-
- .../google.golang.org/appengine/identity.go | 3 +-
- .../appengine/internal/BUILD.bazel | 1 -
- .../appengine/internal/api.go | 347 +-
- .../appengine/internal/api_classic.go | 29 +-
- .../appengine/internal/api_common.go | 50 +-
- .../appengine/internal/identity.go | 7 +-
- .../appengine/internal/identity_classic.go | 23 +-
- .../appengine/internal/identity_flex.go | 1 +
- .../appengine/internal/identity_vm.go | 20 +-
- .../appengine/internal/main.go | 1 +
- .../appengine/internal/main_vm.go | 3 +-
- .../appengine/internal/transaction.go | 10 +-
- .../google.golang.org/appengine/namespace.go | 3 +-
- .../appengine/socket/BUILD.bazel | 1 -
- .../appengine/socket/socket_classic.go | 3 +-
- .../appengine/socket/socket_vm.go | 4 +-
- vendor/google.golang.org/appengine/timeout.go | 2 +-
- .../appengine/travis_install.sh | 18 -
- .../appengine/travis_test.sh | 12 -
- .../appengine/urlfetch/BUILD.bazel | 1 -
- .../appengine/urlfetch/urlfetch.go | 9 +-
- .../api/annotations/field_behavior.pb.go | 22 +-
- vendor/google.golang.org/grpc/BUILD.bazel | 4 +-
- vendor/google.golang.org/grpc/README.md | 60 +-
- .../grpc/attributes/attributes.go | 59 +-
- .../grpc/balancer/BUILD.bazel | 1 +
- .../grpc/balancer/balancer.go | 62 +-
- .../grpc/balancer/base/balancer.go | 22 +-
- .../grpc/balancer/grpclb/BUILD.bazel | 5 +-
- .../grpclb/grpc_lb_v1/load_balancer.pb.go | 2 +-
- .../grpc/balancer/grpclb/grpclb.go | 81 +-
- .../grpc/balancer/grpclb/grpclb_picker.go | 9 -
- .../balancer/grpclb/grpclb_remote_balancer.go | 71 +-
- .../grpc/balancer/grpclb/grpclb_util.go | 113 +-
- .../grpc/balancer_conn_wrappers.go | 75 +-
- .../grpc_binarylog_v1/binarylog.pb.go | 2 +-
- vendor/google.golang.org/grpc/call.go | 11 +-
- vendor/google.golang.org/grpc/clientconn.go | 248 +-
- vendor/google.golang.org/grpc/codec.go | 8 +-
- .../alts/internal/handshaker/BUILD.bazel | 2 +
- .../alts/internal/handshaker/handshaker.go | 57 +-
- .../internal/proto/grpc_gcp/altscontext.pb.go | 2 +-
- .../internal/proto/grpc_gcp/handshaker.pb.go | 2 +-
- .../grpc_gcp/transport_security_common.pb.go | 2 +-
- vendor/google.golang.org/grpc/dialoptions.go | 42 +-
- .../grpc/encoding/encoding.go | 17 +-
- .../grpc/encoding/proto/proto.go | 4 +-
- .../grpc/grpclog/component.go | 40 +-
- .../google.golang.org/grpc/grpclog/grpclog.go | 30 +-
- .../google.golang.org/grpc/grpclog/logger.go | 30 +-
- .../grpc/grpclog/loggerv2.go | 56 +-
- vendor/google.golang.org/grpc/interceptor.go | 12 +-
- .../grpc/internal/backoff/backoff.go | 36 +
- .../balancer/gracefulswitch/gracefulswitch.go | 59 +-
- .../grpc/internal/balancerload/load.go | 4 +-
- .../grpc/internal/binarylog/method_logger.go | 4 +-
- .../grpc/internal/buffer/unbounded.go | 18 +-
- .../grpc/internal/channelz/funcs.go | 69 +-
- .../grpc/internal/channelz/logging.go | 12 +-
- .../grpc/internal/channelz/types.go | 5 +
- .../grpc/internal/channelz/util_linux.go | 2 +-
- .../grpc/internal/channelz/util_nonlinux.go | 2 +-
- .../grpc/internal/credentials/credentials.go | 8 +-
- .../grpc/internal/envconfig/envconfig.go | 12 +-
- .../grpc/internal/grpclog/grpclog.go | 40 +-
- .../grpc/internal/grpclog/prefixLogger.go | 8 +-
- .../grpc/internal/grpcrand/grpcrand.go | 7 +
- .../grpc/internal/grpcsync/BUILD.bazel | 1 +
- .../internal/grpcsync/callback_serializer.go | 54 +-
- .../grpc/internal/grpcsync/pubsub.go | 121 +
- .../grpc/internal/idle/BUILD.bazel | 10 +
- .../grpc/{ => internal/idle}/idle.go | 188 +-
- .../grpc/internal/internal.go | 51 +-
- .../grpc/internal/metadata/metadata.go | 2 +-
- .../grpc/internal/pretty/pretty.go | 2 +-
- .../grpc/internal/resolver/config_selector.go | 4 +-
- .../internal/resolver/dns/dns_resolver.go | 74 +-
- .../grpc/internal/status/status.go | 36 +-
- .../grpc/internal/transport/BUILD.bazel | 1 -
- .../grpc/internal/transport/controlbuf.go | 16 +-
- .../grpc/internal/transport/handler_server.go | 13 +-
- .../grpc/internal/transport/http2_client.go | 56 +-
- .../grpc/internal/transport/http2_server.go | 22 +-
- .../grpc/internal/transport/http_util.go | 77 +-
- .../grpc/internal/transport/transport.go | 19 +-
- .../google.golang.org/grpc/picker_wrapper.go | 34 +-
- vendor/google.golang.org/grpc/pickfirst.go | 88 +-
- vendor/google.golang.org/grpc/preloader.go | 2 +-
- .../grpc/resolver/manual/BUILD.bazel | 10 +
- .../grpc/resolver/manual/manual.go | 119 +
- vendor/google.golang.org/grpc/resolver/map.go | 10 +-
- .../grpc/resolver/resolver.go | 84 +-
- .../grpc/resolver_conn_wrapper.go | 10 +-
- vendor/google.golang.org/grpc/rpc_util.go | 44 +-
- vendor/google.golang.org/grpc/server.go | 231 +-
- .../grpc/shared_buffer_pool.go | 154 +
- vendor/google.golang.org/grpc/stats/stats.go | 14 +-
- .../google.golang.org/grpc/status/status.go | 14 +-
- vendor/google.golang.org/grpc/stream.go | 130 +-
- vendor/google.golang.org/grpc/tap/BUILD.bazel | 1 +
- vendor/google.golang.org/grpc/tap/tap.go | 6 +
- vendor/google.golang.org/grpc/trace.go | 6 +-
- vendor/google.golang.org/grpc/version.go | 2 +-
- vendor/google.golang.org/grpc/vet.sh | 10 +-
- vendor/modules.txt | 143 +-
- 621 files changed, 292244 insertions(+), 16100 deletions(-)
- create mode 100644 vendor/github.com/containers/image/v5/internal/imagedestination/impl/helpers.go
- create mode 100644 vendor/github.com/containers/image/v5/internal/unparsedimage/BUILD.bazel
- create mode 100644 vendor/github.com/containers/image/v5/internal/unparsedimage/wrapper.go
- create mode 100644 vendor/github.com/containers/image/v5/oci/layout/oci_delete.go
- delete mode 100644 vendor/github.com/containers/image/v5/pkg/blobinfocache/boltdb/boltdb.go
- rename vendor/github.com/containers/image/v5/pkg/blobinfocache/{boltdb => sqlite}/BUILD.bazel (81%)
- create mode 100644 vendor/github.com/containers/image/v5/pkg/blobinfocache/sqlite/sqlite.go
- create mode 100644 vendor/github.com/containers/storage/pkg/ioutils/fswriters_other.go
- delete mode 100644 vendor/github.com/containers/storage/pkg/ioutils/fswriters_unsupported.go
- create mode 100644 vendor/github.com/containers/storage/pkg/lockfile/lastwrite.go
- create mode 100644 vendor/github.com/distribution/reference/.gitattributes
- create mode 100644 vendor/github.com/distribution/reference/.gitignore
- create mode 100644 vendor/github.com/distribution/reference/.golangci.yml
- rename vendor/github.com/{docker/distribution/digestset => distribution/reference}/BUILD.bazel (56%)
- create mode 100644 vendor/github.com/distribution/reference/CODE-OF-CONDUCT.md
- create mode 100644 vendor/github.com/distribution/reference/CONTRIBUTING.md
- create mode 100644 vendor/github.com/distribution/reference/GOVERNANCE.md
- create mode 100644 vendor/github.com/distribution/reference/LICENSE
- create mode 100644 vendor/github.com/distribution/reference/MAINTAINERS
- create mode 100644 vendor/github.com/distribution/reference/Makefile
- create mode 100644 vendor/github.com/distribution/reference/README.md
- create mode 100644 vendor/github.com/distribution/reference/SECURITY.md
- create mode 100644 vendor/github.com/distribution/reference/distribution-logo.svg
- rename vendor/github.com/{docker => }/distribution/reference/helpers.go (94%)
- rename vendor/github.com/{docker => }/distribution/reference/normalize.go (52%)
- rename vendor/github.com/{docker => }/distribution/reference/reference.go (93%)
- create mode 100644 vendor/github.com/distribution/reference/regexp.go
- create mode 100644 vendor/github.com/distribution/reference/sort.go
- delete mode 100644 vendor/github.com/docker/distribution/digestset/set.go
- delete mode 100644 vendor/github.com/docker/distribution/reference/BUILD.bazel
- delete mode 100644 vendor/github.com/docker/distribution/reference/regexp.go
- rename vendor/github.com/docker/go-connections/tlsconfig/{certpool_go17.go => certpool.go} (95%)
- delete mode 100644 vendor/github.com/docker/go-connections/tlsconfig/certpool_other.go
- delete mode 100644 vendor/github.com/docker/go-connections/tlsconfig/config_legacy_client_ciphers.go
- create mode 100644 vendor/github.com/go-openapi/swag/BENCHMARK.md
- create mode 100644 vendor/github.com/go-openapi/swag/initialism_index.go
- delete mode 100644 vendor/github.com/go-openapi/swag/post_go18.go
- delete mode 100644 vendor/github.com/go-openapi/swag/post_go19.go
- delete mode 100644 vendor/github.com/go-openapi/swag/pre_go18.go
- delete mode 100644 vendor/github.com/go-openapi/swag/pre_go19.go
- create mode 100644 vendor/github.com/go-openapi/swag/string_bytes.go
- rename vendor/github.com/google/go-cmp/cmp/{export_unsafe.go => export.go} (94%)
- delete mode 100644 vendor/github.com/google/go-cmp/cmp/export_panic.go
- rename vendor/github.com/google/go-cmp/cmp/internal/value/{pointer_unsafe.go => pointer.go} (95%)
- delete mode 100644 vendor/github.com/google/go-cmp/cmp/internal/value/pointer_purego.go
- create mode 100644 vendor/github.com/google/uuid/version6.go
- create mode 100644 vendor/github.com/google/uuid/version7.go
- create mode 100644 vendor/github.com/gorilla/mux/.editorconfig
- create mode 100644 vendor/github.com/gorilla/mux/.gitignore
- delete mode 100644 vendor/github.com/gorilla/mux/AUTHORS
- create mode 100644 vendor/github.com/gorilla/mux/Makefile
- create mode 100644 vendor/github.com/klauspost/compress/flate/matchlen_amd64.go
- create mode 100644 vendor/github.com/klauspost/compress/flate/matchlen_amd64.s
- create mode 100644 vendor/github.com/klauspost/compress/flate/matchlen_generic.go
- delete mode 100644 vendor/github.com/klauspost/compress/huff0/bytereader.go
- create mode 100644 vendor/github.com/mattn/go-sqlite3/.codecov.yml
- create mode 100644 vendor/github.com/mattn/go-sqlite3/.gitignore
- create mode 100644 vendor/github.com/mattn/go-sqlite3/BUILD.bazel
- create mode 100644 vendor/github.com/mattn/go-sqlite3/LICENSE
- create mode 100644 vendor/github.com/mattn/go-sqlite3/README.md
- create mode 100644 vendor/github.com/mattn/go-sqlite3/backup.go
- create mode 100644 vendor/github.com/mattn/go-sqlite3/callback.go
- create mode 100644 vendor/github.com/mattn/go-sqlite3/convert.go
- create mode 100644 vendor/github.com/mattn/go-sqlite3/doc.go
- create mode 100644 vendor/github.com/mattn/go-sqlite3/error.go
- create mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3-binding.c
- create mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3-binding.h
- create mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3.go
- create mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_context.go
- create mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_func_crypt.go
- create mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_go18.go
- create mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_libsqlite3.go
- create mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_load_extension.go
- create mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_load_extension_omit.go
- create mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_allow_uri_authority.go
- create mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_app_armor.go
- create mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_column_metadata.go
- create mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_foreign_keys.go
- create mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_fts5.go
- create mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_icu.go
- create mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_introspect.go
- create mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_math_functions.go
- create mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_os_trace.go
- create mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_preupdate.go
- create mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_preupdate_hook.go
- create mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_preupdate_omit.go
- create mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_secure_delete.go
- create mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_secure_delete_fast.go
- create mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_serialize.go
- create mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_serialize_omit.go
- create mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_stat4.go
- create mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_unlock_notify.c
- create mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_unlock_notify.go
- create mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_userauth.go
- create mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_userauth_omit.go
- create mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_vacuum_full.go
- create mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_vacuum_incr.go
- create mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_vtable.go
- create mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_other.go
- create mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_solaris.go
- create mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_trace.go
- create mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_type.go
- create mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_usleep_windows.go
- create mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_windows.go
- create mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3ext.h
- create mode 100644 vendor/github.com/mattn/go-sqlite3/static_mock.go
- rename vendor/github.com/{opencontainers/runc/libcontainer => moby/sys}/user/BUILD.bazel (92%)
- rename vendor/github.com/{opencontainers/runc => moby/sys/user}/LICENSE (94%)
- rename vendor/github.com/{opencontainers/runc/libcontainer => moby/sys}/user/lookup_unix.go (100%)
- rename vendor/github.com/{opencontainers/runc/libcontainer => moby/sys}/user/user.go (98%)
- rename vendor/github.com/{opencontainers/runc/libcontainer => moby/sys}/user/user_fuzzer.go (100%)
- delete mode 100644 vendor/github.com/opencontainers/image-spec/specs-go/v1/artifact.go
- delete mode 100644 vendor/github.com/opencontainers/runc/NOTICE
- create mode 100644 vendor/github.com/vbatts/tar-split/tar/asm/BUILD.bazel
- create mode 100644 vendor/github.com/vbatts/tar-split/tar/asm/README.md
- create mode 100644 vendor/github.com/vbatts/tar-split/tar/asm/assemble.go
- create mode 100644 vendor/github.com/vbatts/tar-split/tar/asm/disassemble.go
- create mode 100644 vendor/github.com/vbatts/tar-split/tar/asm/doc.go
- rename vendor/{golang.org/x/sys/execabs => github.com/vbatts/tar-split/tar/storage}/BUILD.bazel (55%)
- create mode 100644 vendor/github.com/vbatts/tar-split/tar/storage/doc.go
- create mode 100644 vendor/github.com/vbatts/tar-split/tar/storage/entry.go
- create mode 100644 vendor/github.com/vbatts/tar-split/tar/storage/getter.go
- create mode 100644 vendor/github.com/vbatts/tar-split/tar/storage/packer.go
- delete mode 100644 vendor/go.etcd.io/bbolt/.gitignore
- delete mode 100644 vendor/go.etcd.io/bbolt/BUILD.bazel
- delete mode 100644 vendor/go.etcd.io/bbolt/LICENSE
- delete mode 100644 vendor/go.etcd.io/bbolt/Makefile
- delete mode 100644 vendor/go.etcd.io/bbolt/README.md
- delete mode 100644 vendor/go.etcd.io/bbolt/bolt_386.go
- delete mode 100644 vendor/go.etcd.io/bbolt/bolt_amd64.go
- delete mode 100644 vendor/go.etcd.io/bbolt/bolt_arm.go
- delete mode 100644 vendor/go.etcd.io/bbolt/bolt_arm64.go
- delete mode 100644 vendor/go.etcd.io/bbolt/bolt_linux.go
- delete mode 100644 vendor/go.etcd.io/bbolt/bolt_loong64.go
- delete mode 100644 vendor/go.etcd.io/bbolt/bolt_mips64x.go
- delete mode 100644 vendor/go.etcd.io/bbolt/bolt_mipsx.go
- delete mode 100644 vendor/go.etcd.io/bbolt/bolt_openbsd.go
- delete mode 100644 vendor/go.etcd.io/bbolt/bolt_ppc.go
- delete mode 100644 vendor/go.etcd.io/bbolt/bolt_ppc64.go
- delete mode 100644 vendor/go.etcd.io/bbolt/bolt_ppc64le.go
- delete mode 100644 vendor/go.etcd.io/bbolt/bolt_riscv64.go
- delete mode 100644 vendor/go.etcd.io/bbolt/bolt_s390x.go
- delete mode 100644 vendor/go.etcd.io/bbolt/bolt_unix.go
- delete mode 100644 vendor/go.etcd.io/bbolt/bolt_unix_aix.go
- delete mode 100644 vendor/go.etcd.io/bbolt/bolt_unix_solaris.go
- delete mode 100644 vendor/go.etcd.io/bbolt/bolt_windows.go
- delete mode 100644 vendor/go.etcd.io/bbolt/boltsync_unix.go
- delete mode 100644 vendor/go.etcd.io/bbolt/bucket.go
- delete mode 100644 vendor/go.etcd.io/bbolt/compact.go
- delete mode 100644 vendor/go.etcd.io/bbolt/cursor.go
- delete mode 100644 vendor/go.etcd.io/bbolt/db.go
- delete mode 100644 vendor/go.etcd.io/bbolt/doc.go
- delete mode 100644 vendor/go.etcd.io/bbolt/errors.go
- delete mode 100644 vendor/go.etcd.io/bbolt/freelist.go
- delete mode 100644 vendor/go.etcd.io/bbolt/freelist_hmap.go
- delete mode 100644 vendor/go.etcd.io/bbolt/mlock_unix.go
- delete mode 100644 vendor/go.etcd.io/bbolt/mlock_windows.go
- delete mode 100644 vendor/go.etcd.io/bbolt/node.go
- delete mode 100644 vendor/go.etcd.io/bbolt/page.go
- delete mode 100644 vendor/go.etcd.io/bbolt/tx.go
- delete mode 100644 vendor/go.etcd.io/bbolt/tx_check.go
- delete mode 100644 vendor/go.etcd.io/bbolt/unsafe.go
- create mode 100644 vendor/golang.org/x/exp/slices/cmp.go
- rename vendor/golang.org/x/exp/slices/{zsortfunc.go => zsortanyfunc.go} (64%)
- delete mode 100644 vendor/golang.org/x/net/http2/go111.go
- delete mode 100644 vendor/golang.org/x/net/http2/go115.go
- delete mode 100644 vendor/golang.org/x/net/http2/go118.go
- delete mode 100644 vendor/golang.org/x/net/http2/not_go111.go
- delete mode 100644 vendor/golang.org/x/net/http2/not_go115.go
- delete mode 100644 vendor/golang.org/x/net/http2/not_go118.go
- create mode 100644 vendor/golang.org/x/oauth2/deviceauth.go
- create mode 100644 vendor/golang.org/x/oauth2/google/externalaccount/BUILD.bazel
- rename vendor/golang.org/x/oauth2/google/{internal => }/externalaccount/aws.go (77%)
- create mode 100644 vendor/golang.org/x/oauth2/google/externalaccount/basecredentials.go
- rename vendor/golang.org/x/oauth2/google/{internal => }/externalaccount/executablecredsource.go (83%)
- rename vendor/golang.org/x/oauth2/google/{internal => }/externalaccount/filecredsource.go (57%)
- create mode 100644 vendor/golang.org/x/oauth2/google/externalaccount/header.go
- create mode 100644 vendor/golang.org/x/oauth2/google/externalaccount/programmaticrefreshcredsource.go
- rename vendor/golang.org/x/oauth2/google/{internal => }/externalaccount/urlcredsource.go (57%)
- delete mode 100644 vendor/golang.org/x/oauth2/google/internal/externalaccount/basecredentials.go
- delete mode 100644 vendor/golang.org/x/oauth2/google/internal/externalaccount/err.go
- create mode 100644 vendor/golang.org/x/oauth2/google/internal/externalaccountauthorizeduser/BUILD.bazel
- create mode 100644 vendor/golang.org/x/oauth2/google/internal/externalaccountauthorizeduser/externalaccountauthorizeduser.go
- create mode 100644 vendor/golang.org/x/oauth2/google/internal/impersonate/BUILD.bazel
- rename vendor/golang.org/x/oauth2/google/internal/{externalaccount => impersonate}/impersonate.go (99%)
- rename vendor/golang.org/x/oauth2/google/internal/{externalaccount => stsexchange}/BUILD.bazel (54%)
- rename vendor/golang.org/x/oauth2/google/internal/{externalaccount => stsexchange}/clientauth.go (88%)
- rename vendor/golang.org/x/oauth2/google/internal/{externalaccount => stsexchange}/sts_exchange.go (68%)
- create mode 100644 vendor/golang.org/x/oauth2/pkce.go
- create mode 100644 vendor/golang.org/x/sync/LICENSE
- create mode 100644 vendor/golang.org/x/sync/PATENTS
- create mode 100644 vendor/golang.org/x/sync/semaphore/BUILD.bazel
- create mode 100644 vendor/golang.org/x/sync/semaphore/semaphore.go
- delete mode 100644 vendor/golang.org/x/sys/execabs/execabs.go
- delete mode 100644 vendor/golang.org/x/sys/execabs/execabs_go118.go
- delete mode 100644 vendor/golang.org/x/sys/execabs/execabs_go119.go
- create mode 100644 vendor/golang.org/x/tools/internal/event/keys/util.go
- delete mode 100644 vendor/golang.org/x/tools/internal/fastwalk/BUILD.bazel
- delete mode 100644 vendor/golang.org/x/tools/internal/fastwalk/fastwalk.go
- delete mode 100644 vendor/golang.org/x/tools/internal/fastwalk/fastwalk_darwin.go
- delete mode 100644 vendor/golang.org/x/tools/internal/fastwalk/fastwalk_dirent_fileno.go
- delete mode 100644 vendor/golang.org/x/tools/internal/fastwalk/fastwalk_dirent_ino.go
- delete mode 100644 vendor/golang.org/x/tools/internal/fastwalk/fastwalk_dirent_namlen_bsd.go
- delete mode 100644 vendor/golang.org/x/tools/internal/fastwalk/fastwalk_dirent_namlen_linux.go
- delete mode 100644 vendor/golang.org/x/tools/internal/fastwalk/fastwalk_portable.go
- delete mode 100644 vendor/golang.org/x/tools/internal/fastwalk/fastwalk_unix.go
- delete mode 100644 vendor/golang.org/x/tools/internal/typeparams/BUILD.bazel
- delete mode 100644 vendor/golang.org/x/tools/internal/typeparams/common.go
- delete mode 100644 vendor/golang.org/x/tools/internal/typeparams/coretype.go
- delete mode 100644 vendor/golang.org/x/tools/internal/typeparams/enabled_go117.go
- delete mode 100644 vendor/golang.org/x/tools/internal/typeparams/enabled_go118.go
- delete mode 100644 vendor/golang.org/x/tools/internal/typeparams/normalize.go
- delete mode 100644 vendor/golang.org/x/tools/internal/typeparams/termlist.go
- delete mode 100644 vendor/golang.org/x/tools/internal/typeparams/typeparams_go117.go
- delete mode 100644 vendor/golang.org/x/tools/internal/typeparams/typeparams_go118.go
- delete mode 100644 vendor/golang.org/x/tools/internal/typeparams/typeterm.go
- delete mode 100644 vendor/google.golang.org/appengine/.travis.yml
- delete mode 100644 vendor/google.golang.org/appengine/travis_install.sh
- delete mode 100644 vendor/google.golang.org/appengine/travis_test.sh
- create mode 100644 vendor/google.golang.org/grpc/internal/grpcsync/pubsub.go
- create mode 100644 vendor/google.golang.org/grpc/internal/idle/BUILD.bazel
- rename vendor/google.golang.org/grpc/{ => internal/idle}/idle.go (61%)
- create mode 100644 vendor/google.golang.org/grpc/resolver/manual/BUILD.bazel
- create mode 100644 vendor/google.golang.org/grpc/resolver/manual/manual.go
- create mode 100644 vendor/google.golang.org/grpc/shared_buffer_pool.go
-
-diff --git a/go.mod b/go.mod
-index 381228853..d58414048 100644
---- a/go.mod
-+++ b/go.mod
-@@ -6,7 +6,7 @@ require (
- cloud.google.com/go/storage v1.32.0
- github.com/appscode/jsonpatch v1.0.1
- github.com/aws/aws-sdk-go v1.44.302
-- github.com/containers/image/v5 v5.25.0
-+ github.com/containers/image/v5 v5.30.1
- github.com/coreos/go-semver v0.3.1
- github.com/docker/go-units v0.5.0
- github.com/emicklei/go-restful/v3 v3.11.0
-@@ -15,11 +15,11 @@ require (
- github.com/go-jose/go-jose/v3 v3.0.3
- github.com/go-logr/logr v1.2.4
- github.com/golang/snappy v0.0.4
-- github.com/google/uuid v1.3.1
-+ github.com/google/uuid v1.6.0
- github.com/gophercloud/gophercloud v1.7.0
- github.com/gophercloud/utils v0.0.0-20231010081019-80377eca5d56
- github.com/kelseyhightower/envconfig v1.4.0
-- github.com/klauspost/compress v1.16.7
-+ github.com/klauspost/compress v1.17.7
- github.com/kubernetes-csi/external-snapshotter/client/v6 v6.0.1
- github.com/kubernetes-csi/lib-volume-populator v1.2.1-0.20230316163120-b62a0eee2c56
- github.com/kubevirt/monitoring/pkg/metrics/parser v0.0.0-20230627123556-81a891d4462a
-@@ -36,14 +36,14 @@ require (
- github.com/ovirt/go-ovirt-client-log-klog v1.0.0
- github.com/pkg/errors v0.9.1
- github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.68.0
-- github.com/prometheus/client_golang v1.16.0
-- github.com/prometheus/client_model v0.4.0
-+ github.com/prometheus/client_golang v1.17.0
-+ github.com/prometheus/client_model v0.5.0
- github.com/robfig/cron/v3 v3.0.1
- github.com/rs/cors v1.7.0
- github.com/ulikunitz/xz v0.5.11
- github.com/vmware/govmomi v0.23.1
- go.uber.org/zap v1.25.0
-- golang.org/x/sys v0.17.0
-+ golang.org/x/sys v0.18.0
- google.golang.org/api v0.132.0
- gopkg.in/fsnotify.v1 v1.4.7
- k8s.io/api v0.28.3
-@@ -67,41 +67,42 @@ require (
- )
-
- require (
-- cloud.google.com/go v0.110.4 // indirect
-- cloud.google.com/go/compute v1.20.1 // indirect
-+ cloud.google.com/go v0.110.8 // indirect
-+ cloud.google.com/go/compute v1.23.0 // indirect
- cloud.google.com/go/compute/metadata v0.2.3 // indirect
-- cloud.google.com/go/iam v1.1.0 // indirect
-- github.com/BurntSushi/toml v1.2.1 // indirect
-+ cloud.google.com/go/iam v1.1.2 // indirect
-+ github.com/BurntSushi/toml v1.3.2 // indirect
- github.com/beorn7/perks v1.0.1 // indirect
- github.com/blang/semver v3.5.1+incompatible // indirect
- github.com/blang/semver/v4 v4.0.0 // indirect
- github.com/cespare/xxhash/v2 v2.2.0 // indirect
- github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01 // indirect
-- github.com/containers/ocicrypt v1.1.7 // indirect
-- github.com/containers/storage v1.46.0 // indirect
-+ github.com/containers/ocicrypt v1.1.9 // indirect
-+ github.com/containers/storage v1.53.0 // indirect
- github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
-- github.com/docker/distribution v2.8.2+incompatible // indirect
-- github.com/docker/docker v23.0.2+incompatible // indirect
-- github.com/docker/docker-credential-helpers v0.7.0 // indirect
-- github.com/docker/go-connections v0.4.0 // indirect
-+ github.com/distribution/reference v0.5.0 // indirect
-+ github.com/docker/distribution v2.8.3+incompatible // indirect
-+ github.com/docker/docker v25.0.3+incompatible // indirect
-+ github.com/docker/docker-credential-helpers v0.8.1 // indirect
-+ github.com/docker/go-connections v0.5.0 // indirect
- github.com/evanphx/json-patch v5.6.0+incompatible // indirect
- github.com/fsnotify/fsnotify v1.6.0 // indirect
- github.com/go-logr/zapr v1.2.4 // indirect
- github.com/go-openapi/jsonpointer v0.20.0 // indirect
- github.com/go-openapi/jsonreference v0.20.2 // indirect
-- github.com/go-openapi/swag v0.22.4 // indirect
-+ github.com/go-openapi/swag v0.22.10 // indirect
- github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect
- github.com/gogo/protobuf v1.3.2 // indirect
- github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
- github.com/golang/protobuf v1.5.3 // indirect
- github.com/google/gnostic-models v0.6.8 // indirect
-- github.com/google/go-cmp v0.5.9 // indirect
-+ github.com/google/go-cmp v0.6.0 // indirect
- github.com/google/gofuzz v1.2.0 // indirect
- github.com/google/pprof v0.0.0-20230602150820-91b7bce49751 // indirect
- github.com/google/s2a-go v0.1.4 // indirect
- github.com/googleapis/enterprise-certificate-proxy v0.2.5 // indirect
- github.com/googleapis/gax-go/v2 v2.12.0 // indirect
-- github.com/gorilla/mux v1.8.0 // indirect
-+ github.com/gorilla/mux v1.8.1 // indirect
- github.com/hashicorp/errwrap v1.1.0 // indirect
- github.com/hashicorp/go-multierror v1.1.1 // indirect
- github.com/hashicorp/go-uuid v1.0.3 // indirect
-@@ -109,46 +110,47 @@ require (
- github.com/jmespath/go-jmespath v0.4.0 // indirect
- github.com/josharian/intern v1.0.0 // indirect
- github.com/json-iterator/go v1.1.12 // indirect
-- github.com/klauspost/pgzip v1.2.6-0.20220930104621-17e8dac29df8 // indirect
-+ github.com/klauspost/pgzip v1.2.6 // indirect
- github.com/mailru/easyjson v0.7.7 // indirect
-+ github.com/mattn/go-sqlite3 v1.14.22 // indirect
- github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
- github.com/mitchellh/go-homedir v1.1.0 // indirect
- github.com/moby/spdystream v0.2.0 // indirect
-- github.com/moby/sys/mountinfo v0.6.2 // indirect
-+ github.com/moby/sys/mountinfo v0.7.1 // indirect
-+ github.com/moby/sys/user v0.1.0 // indirect
- github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
- github.com/modern-go/reflect2 v1.0.2 // indirect
- github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
- github.com/opencontainers/go-digest v1.0.0 // indirect
-- github.com/opencontainers/image-spec v1.1.0-rc2 // indirect
-- github.com/opencontainers/runc v1.1.5 // indirect
-- github.com/opencontainers/runtime-spec v1.1.0-rc.1 // indirect
-+ github.com/opencontainers/image-spec v1.1.0 // indirect
-+ github.com/opencontainers/runtime-spec v1.2.0 // indirect
- github.com/ovirt/go-ovirt-client-log/v2 v2.2.0 // indirect
- github.com/prometheus/common v0.44.0 // indirect
-- github.com/prometheus/procfs v0.11.0 // indirect
-+ github.com/prometheus/procfs v0.11.1 // indirect
- github.com/robfig/cron v1.2.0 // indirect
-- github.com/sirupsen/logrus v1.9.0 // indirect
-+ github.com/sirupsen/logrus v1.9.3 // indirect
- github.com/spf13/pflag v1.0.5 // indirect
- github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 // indirect
-- github.com/vbatts/tar-split v0.11.3 // indirect
-- go.etcd.io/bbolt v1.3.7 // indirect
-+ github.com/vbatts/tar-split v0.11.5 // indirect
- go.opencensus.io v0.24.0 // indirect
- go.uber.org/multierr v1.11.0 // indirect
-- golang.org/x/crypto v0.19.0 // indirect
-- golang.org/x/exp v0.0.0-20230713183714-613f0c0eb8a1 // indirect
-- golang.org/x/mod v0.12.0 // indirect
-- golang.org/x/net v0.17.0 // indirect
-- golang.org/x/oauth2 v0.10.0 // indirect
-- golang.org/x/term v0.17.0 // indirect
-+ golang.org/x/crypto v0.21.0 // indirect
-+ golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect
-+ golang.org/x/mod v0.15.0 // indirect
-+ golang.org/x/net v0.22.0 // indirect
-+ golang.org/x/oauth2 v0.18.0 // indirect
-+ golang.org/x/sync v0.6.0 // indirect
-+ golang.org/x/term v0.18.0 // indirect
- golang.org/x/text v0.14.0 // indirect
- golang.org/x/time v0.3.0 // indirect
-- golang.org/x/tools v0.12.0 // indirect
-+ golang.org/x/tools v0.18.0 // indirect
- golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
- gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
-- google.golang.org/appengine v1.6.7 // indirect
-- google.golang.org/genproto v0.0.0-20230706204954-ccb25ca9f130 // indirect
-- google.golang.org/genproto/googleapis/api v0.0.0-20230706204954-ccb25ca9f130 // indirect
-- google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98 // indirect
-- google.golang.org/grpc v1.56.3 // indirect
-+ google.golang.org/appengine v1.6.8 // indirect
-+ google.golang.org/genproto v0.0.0-20230920204549-e6e6cdab5c13 // indirect
-+ google.golang.org/genproto/googleapis/api v0.0.0-20230913181813-007df8e322eb // indirect
-+ google.golang.org/genproto/googleapis/rpc v0.0.0-20231002182017-d307bd883b97 // indirect
-+ google.golang.org/grpc v1.59.0 // indirect
- google.golang.org/protobuf v1.31.0 // indirect
- gopkg.in/inf.v0 v0.9.1 // indirect
- gopkg.in/yaml.v2 v2.4.0 // indirect
-diff --git a/go.sum b/go.sum
-index 81b510224..73ff2facf 100644
---- a/go.sum
-+++ b/go.sum
-@@ -36,8 +36,8 @@ cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRY
- cloud.google.com/go v0.105.0/go.mod h1:PrLgOJNe5nfE9UMxKxgXj4mD3voiP+YQ6gdt6KMFOKM=
- cloud.google.com/go v0.107.0/go.mod h1:wpc2eNrD7hXUTy8EKS10jkxpZBjASrORK7goS+3YX2I=
- cloud.google.com/go v0.110.0/go.mod h1:SJnCLqQ0FCFGSZMUNUf84MV3Aia54kn7pi8st7tMzaY=
--cloud.google.com/go v0.110.4 h1:1JYyxKMN9hd5dR2MYTPWkGUgcoxVVhg0LKNKEo0qvmk=
--cloud.google.com/go v0.110.4/go.mod h1:+EYjdK8e5RME/VY/qLCAtuyALQ9q67dvuum8i+H5xsI=
-+cloud.google.com/go v0.110.8 h1:tyNdfIxjzaWctIiLYOTalaLKZ17SI44SKFW26QbOhME=
-+cloud.google.com/go v0.110.8/go.mod h1:Iz8AkXJf1qmxC3Oxoep8R1T36w8B92yU29PcBhHO5fk=
- cloud.google.com/go/accessapproval v1.4.0/go.mod h1:zybIuC3KpDOvotz59lFe5qxRZx6C75OtwbisN56xYB4=
- cloud.google.com/go/accessapproval v1.5.0/go.mod h1:HFy3tuiGvMdcd/u+Cu5b9NkO1pEICJ46IR82PoUdplw=
- cloud.google.com/go/accessapproval v1.6.0/go.mod h1:R0EiYnwV5fsRFiKZkPHr6mwyk2wxUJ30nL4j2pcFY2E=
-@@ -173,8 +173,8 @@ cloud.google.com/go/compute v1.14.0/go.mod h1:YfLtxrj9sU4Yxv+sXzZkyPjEyPBZfXHUvj
- cloud.google.com/go/compute v1.15.1/go.mod h1:bjjoF/NtFUrkD/urWfdHaKuOPDR5nWIs63rR+SXhcpA=
- cloud.google.com/go/compute v1.18.0/go.mod h1:1X7yHxec2Ga+Ss6jPyjxRxpu2uu7PLgsOVXvgU0yacs=
- cloud.google.com/go/compute v1.19.0/go.mod h1:rikpw2y+UMidAe9tISo04EHNOIf42RLYF/q8Bs93scU=
--cloud.google.com/go/compute v1.20.1 h1:6aKEtlUiwEpJzM001l0yFkpXmUVXaN8W+fbkb2AZNbg=
--cloud.google.com/go/compute v1.20.1/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM=
-+cloud.google.com/go/compute v1.23.0 h1:tP41Zoavr8ptEqaW6j+LQOnyBBhO7OkOMAGrgLopTwY=
-+cloud.google.com/go/compute v1.23.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM=
- cloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZEXYonfTBHHFPO/4UU=
- cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k=
- cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM=
-@@ -314,8 +314,8 @@ cloud.google.com/go/iam v0.8.0/go.mod h1:lga0/y3iH6CX7sYqypWJ33hf7kkfXJag67naqGE
- cloud.google.com/go/iam v0.11.0/go.mod h1:9PiLDanza5D+oWFZiH1uG+RnRCfEGKoyl6yo4cgWZGY=
- cloud.google.com/go/iam v0.12.0/go.mod h1:knyHGviacl11zrtZUoDuYpDgLjvr28sLQaG0YB2GYAY=
- cloud.google.com/go/iam v0.13.0/go.mod h1:ljOg+rcNfzZ5d6f1nAUJ8ZIxOaZUVoS14bKCtaLZ/D0=
--cloud.google.com/go/iam v1.1.0 h1:67gSqaPukx7O8WLLHMa0PNs3EBGd2eE4d+psbO/CO94=
--cloud.google.com/go/iam v1.1.0/go.mod h1:nxdHjaKfCr7fNYx/HJMM8LgiMugmveWlkatear5gVyk=
-+cloud.google.com/go/iam v1.1.2 h1:gacbrBdWcoVmGLozRuStX45YKvJtzIjJdAolzUs1sm4=
-+cloud.google.com/go/iam v1.1.2/go.mod h1:A5avdyVL2tCppe4unb0951eI9jreack+RJ0/d+KUZOU=
- cloud.google.com/go/iap v1.4.0/go.mod h1:RGFwRJdihTINIe4wZ2iCP0zF/qu18ZwyKxrhMhygBEc=
- cloud.google.com/go/iap v1.5.0/go.mod h1:UH/CGgKd4KyohZL5Pt0jSKE4m3FR51qg6FKQ/z/Ix9A=
- cloud.google.com/go/iap v1.6.0/go.mod h1:NSuvI9C/j7UdjGjIde7t7HBz+QTwBcapPE07+sSRcLk=
-@@ -606,8 +606,8 @@ gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zum
- git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc=
- github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
- github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
--github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak=
--github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
-+github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8=
-+github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
- github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
- github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c/go.mod h1:X0CRv0ky0k6m906ixxpzmDRLvX58TFUKS2eePweuyxk=
- github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ=
-@@ -671,11 +671,9 @@ github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XL
- github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
- github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=
- github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
--github.com/checkpoint-restore/go-criu/v5 v5.3.0/go.mod h1:E/eQpaFtUKGOOSEBZgmKAcn+zUUwWxqcaKZlF54wK8E=
- github.com/chzyer/logex v1.2.1/go.mod h1:JLbx6lG2kDbNRFnfkgvh4eRJRPX1QCoOIWomwysCBrQ=
- github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
- github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
--github.com/cilium/ebpf v0.7.0/go.mod h1:/oI2+1shJiTGAMgl6/RgJr36Eo1jzrRcAWbcXO2usCA=
- github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
- github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
- github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
-@@ -690,15 +688,16 @@ github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWH
- github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
- github.com/cncf/xds/go v0.0.0-20230105202645-06c439db220b/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
- github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU=
--github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U=
--github.com/containers/image/v5 v5.25.0 h1:TJ0unmalbU+scd0i3Txap2wjGsAnv06MSCwgn6bsizk=
--github.com/containers/image/v5 v5.25.0/go.mod h1:EKvys0WVlRFkDw26R8y52TuhV9Tfn0yq2luLX6W52Ls=
-+github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I=
-+github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo=
-+github.com/containers/image/v5 v5.30.1 h1:AKrQMgOKI1oKx5FW5eoU2xoNyzACajHGx1O3qxobvFM=
-+github.com/containers/image/v5 v5.30.1/go.mod h1:gSD8MVOyqBspc0ynLsuiMR9qmt8UQ4jpVImjmK0uXfk=
- github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01 h1:Qzk5C6cYglewc+UyGf6lc8Mj2UaPTHy/iF2De0/77CA=
- github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01/go.mod h1:9rfv8iPl1ZP7aqh9YA68wnZv2NUDbXdcdPHVz0pFbPY=
--github.com/containers/ocicrypt v1.1.7 h1:thhNr4fu2ltyGz8aMx8u48Ae0Pnbip3ePP9/mzkZ/3U=
--github.com/containers/ocicrypt v1.1.7/go.mod h1:7CAhjcj2H8AYp5YvEie7oVSK2AhBY8NscCYRawuDNtw=
--github.com/containers/storage v1.46.0 h1:K3Tw/U+ZwmMT/tzX04mh5wnK2PuIdEGS2BGMP7ZYAqw=
--github.com/containers/storage v1.46.0/go.mod h1:AVNewDV1jODy8b4Ia4AgsJ6UFKQSIaOQvQ8S6N4VuH0=
-+github.com/containers/ocicrypt v1.1.9 h1:2Csfba4jse85Raxk5HIyEk8OwZNjRvfkhEGijOjIdEM=
-+github.com/containers/ocicrypt v1.1.9/go.mod h1:dTKx1918d8TDkxXvarscpNVY+lyPakPNFN4jwA9GBys=
-+github.com/containers/storage v1.53.0 h1:VSES3C/u1pxjTJIXvLrSmyP7OBtDky04oGu07UvdTEA=
-+github.com/containers/storage v1.53.0/go.mod h1:pujcoOSc+upx15Jirdkebhtd8uJiLwbSd/mYT6zDJK8=
- github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
- github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
- github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
-@@ -712,13 +711,11 @@ github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7
- github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
- github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
- github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
--github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
- github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
- github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
- github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
- github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
- github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4=
--github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4=
- github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
- github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
- github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
-@@ -726,16 +723,21 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8Yc
- github.com/davecgh/go-xdr v0.0.0-20161123171359-e6a2ba005892/go.mod h1:CTDl0pzVzE5DEzZhPfvhY/9sPFMQIxaJ9VAMs9AagrE=
- github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
- github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no=
-+github.com/distribution/reference v0.5.0 h1:/FUIFXtfc/x2gpa5/VGfiGLuOIdYa1t65IKK2OFGvA0=
-+github.com/distribution/reference v0.5.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
-+github.com/docker/cli v25.0.3+incompatible h1:KLeNs7zws74oFuVhgZQ5ONGZiXUUdgsdy6/EsX/6284=
-+github.com/docker/cli v25.0.3+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
- github.com/docker/distribution v2.7.0+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
--github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8=
--github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
--github.com/docker/docker v23.0.2+incompatible h1:q81C2qQ/EhPm8COZMUGOQYh4qLv4Xu6CXELJ3WK/mlU=
--github.com/docker/docker v23.0.2+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
--github.com/docker/docker-credential-helpers v0.7.0 h1:xtCHsjxogADNZcdv1pKUHXryefjlVRqWqIhk/uXJp0A=
--github.com/docker/docker-credential-helpers v0.7.0/go.mod h1:rETQfLdHNT3foU5kuNkFR1R1V12OJRRO5lzt2D1b5X0=
--github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ=
--github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec=
--github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
-+github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk=
-+github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
-+github.com/docker/docker v25.0.3+incompatible h1:D5fy/lYmY7bvZa0XTZ5/UJPljor41F+vdyJG5luQLfQ=
-+github.com/docker/docker v25.0.3+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
-+github.com/docker/docker-credential-helpers v0.8.1 h1:j/eKUktUltBtMzKqmfLB0PAgqYyMHOp5vfsD1807oKo=
-+github.com/docker/docker-credential-helpers v0.8.1/go.mod h1:P3ci7E3lwkZg6XiHdRKft1KckHiO9a2rNtyFbZ/ry9M=
-+github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c=
-+github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc=
-+github.com/docker/go-metrics v0.0.1 h1:AgB/0SvBxihN0X8OR4SjsblXkbMvalQ8cjmtKQ2rQV8=
-+github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw=
- github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
- github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
- github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE=
-@@ -772,7 +774,6 @@ github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5Kwzbycv
- github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
- github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k=
- github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k=
--github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k=
- github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
- github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
- github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY=
-@@ -839,8 +840,8 @@ github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/
- github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
- github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
- github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14=
--github.com/go-openapi/swag v0.22.4 h1:QLMzNJnMGPRNDCbySlcj1x01tzU8/9LTTL9hZZZogBU=
--github.com/go-openapi/swag v0.22.4/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14=
-+github.com/go-openapi/swag v0.22.10 h1:4y86NVn7Z2yYd6pfS4Z+Nyh3aAUL3Nul+LMbhFKy0gA=
-+github.com/go-openapi/swag v0.22.10/go.mod h1:Cnn8BYtRlx6BNE3DPN86f/xkapGIcLWzh3CLEb4C1jI=
- github.com/go-openapi/validate v0.18.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4=
- github.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M=
- github.com/go-pdf/fpdf v0.6.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M=
-@@ -850,7 +851,6 @@ github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEe
- github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls=
- github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
- github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
--github.com/godbus/dbus/v5 v5.0.6/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
- github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
- github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
- github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4=
-@@ -920,8 +920,9 @@ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
- github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
- github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE=
- github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
--github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
- github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
-+github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
-+github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
- github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI=
- github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
- github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
-@@ -959,8 +960,8 @@ github.com/google/uuid v0.0.0-20170306145142-6a5e28554805/go.mod h1:TIyPZe4Mgqvf
- github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
- github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
- github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
--github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4=
--github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
-+github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
-+github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
- github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8=
- github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8=
- github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg=
-@@ -991,8 +992,9 @@ github.com/gophercloud/gophercloud v1.7.0/go.mod h1:aAVqcocTSXh2vYFZ1JTvx4EQmfgz
- github.com/gophercloud/utils v0.0.0-20231010081019-80377eca5d56 h1:sH7xkTfYzxIEgzq1tDHIMKRh1vThOEOGNsettdEeLbE=
- github.com/gophercloud/utils v0.0.0-20231010081019-80377eca5d56/go.mod h1:VSalo4adEk+3sNkmVJLnhHoOyOYYS8sTWLG4mv5BKto=
- github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
--github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI=
- github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
-+github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY=
-+github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ=
- github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
- github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
- github.com/gregjones/httpcache v0.0.0-20181110185634-c63ab54fda8f/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
-@@ -1071,11 +1073,11 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI
- github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
- github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE=
- github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU=
--github.com/klauspost/compress v1.16.7 h1:2mk3MPGNzKyxErAw8YaohYh69+pa4sIQSC0fPGCFR9I=
--github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
-+github.com/klauspost/compress v1.17.7 h1:ehO88t2UGzQK66LMdE8tibEd1ErmzZjNEqWkjLAKQQg=
-+github.com/klauspost/compress v1.17.7/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
- github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
--github.com/klauspost/pgzip v1.2.6-0.20220930104621-17e8dac29df8 h1:BcxbplxjtczA1a6d3wYoa7a0WL3rq9DKBMGHeKyjEF0=
--github.com/klauspost/pgzip v1.2.6-0.20220930104621-17e8dac29df8/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=
-+github.com/klauspost/pgzip v1.2.6 h1:8RXeL5crjEUFnR2/Sn6GJNWtSQ3Dk8pq4CL3jvdDyjU=
-+github.com/klauspost/pgzip v1.2.6/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=
- github.com/konsorten/go-windows-terminal-sequences v0.0.0-20180402223658-b729f2633dfe/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
- github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
- github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
-@@ -1114,6 +1116,8 @@ github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Ky
- github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
- github.com/mattn/go-sqlite3 v1.10.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
- github.com/mattn/go-sqlite3 v1.14.14/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
-+github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU=
-+github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
- github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
- github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo=
- github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
-@@ -1121,7 +1125,6 @@ github.com/maxbrunsfeld/counterfeiter v0.0.0-20181017030959-1aadac120687/go.mod
- github.com/mhenriks/library-go v0.0.0-20240122153017-96f45b749ed0 h1:BlXdWVvLqIWsV2TKyW9BcLk5z8i86sue9jLCGEK8xIs=
- github.com/mhenriks/library-go v0.0.0-20240122153017-96f45b749ed0/go.mod h1:0q1UIvboZXfSlUaK+08wsXYw4N6OUo2b/z3a1EWNGyw=
- github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
--github.com/miekg/pkcs11 v1.1.1/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs=
- github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY=
- github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE=
- github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc=
-@@ -1135,9 +1138,10 @@ github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:F
- github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
- github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8=
- github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c=
--github.com/moby/sys/mountinfo v0.5.0/go.mod h1:3bMD3Rg+zkqx8MRYPi7Pyb0Ie97QEBmdxbhnCLlSvSU=
--github.com/moby/sys/mountinfo v0.6.2 h1:BzJjoreD5BMFNmD9Rus6gdd1pLuecOFPt8wC+Vygl78=
--github.com/moby/sys/mountinfo v0.6.2/go.mod h1:IJb6JQeOklcdMU9F5xQ8ZALD+CUr5VlGpwtX+VE0rpI=
-+github.com/moby/sys/mountinfo v0.7.1 h1:/tTvQaSJRr2FshkhXiIpux6fQ2Zvc4j7tAhMTStAG2g=
-+github.com/moby/sys/mountinfo v0.7.1/go.mod h1:IJb6JQeOklcdMU9F5xQ8ZALD+CUr5VlGpwtX+VE0rpI=
-+github.com/moby/sys/user v0.1.0 h1:WmZ93f5Ux6het5iituh9x2zAG7NFY9Aqi49jjE1PaQg=
-+github.com/moby/sys/user v0.1.0/go.mod h1:fKJhFOnsCN6xZ5gSfbM6zaHGgDJMrqt9/reuj4T7MmU=
- github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
- github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
- github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
-@@ -1146,7 +1150,6 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lN
- github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
- github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
- github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
--github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ=
- github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
- github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
- github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
-@@ -1201,15 +1204,10 @@ github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3ev
- github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s=
- github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
- github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
--github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0=
--github.com/opencontainers/image-spec v1.1.0-rc2 h1:2zx/Stx4Wc5pIPDvIxHXvXtQFW/7XWJGmnM7r3wg034=
--github.com/opencontainers/image-spec v1.1.0-rc2/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ=
--github.com/opencontainers/runc v1.1.5 h1:L44KXEpKmfWDcS02aeGm8QNTFXTo2D+8MYGDIJ/GDEs=
--github.com/opencontainers/runc v1.1.5/go.mod h1:1J5XiS+vdZ3wCyZybsuxXZWGrgSr8fFJHLXuG2PsnNg=
--github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
--github.com/opencontainers/runtime-spec v1.1.0-rc.1 h1:wHa9jroFfKGQqFHj0I1fMRKLl0pfj+ynAqBxo3v6u9w=
--github.com/opencontainers/runtime-spec v1.1.0-rc.1/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
--github.com/opencontainers/selinux v1.10.0/go.mod h1:2i0OySw99QjzBBQByd1Gr9gSjvuho1lHsJxIJ3gGbJI=
-+github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug=
-+github.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM=
-+github.com/opencontainers/runtime-spec v1.2.0 h1:z97+pHb3uELt/yiAWD691HNHQIF07bE7dzrbT927iTk=
-+github.com/opencontainers/runtime-spec v1.2.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
- github.com/openshift/api v0.0.0-20240116035456-11ed2fbcb805 h1:5NjcOG5i+WH0F4FI8dKSf0fNgX0YQkrJ8w3YcsHx6KM=
- github.com/openshift/api v0.0.0-20240116035456-11ed2fbcb805/go.mod h1:qNtV0315F+f8ld52TLtPvrfivZpdimOzTi3kn9IVbtU=
- github.com/openshift/client-go v0.0.0-20240109161853-2425b4b6d3b3 h1:XQv/z/1tedDGPeplmowftfUUrR3BtglN6Hv5kLzy1CU=
-@@ -1220,6 +1218,8 @@ github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFSt
- github.com/operator-framework/operator-lifecycle-manager v0.0.0-20190128024246-5eb7ae5bdb7a h1:GS9s+8twPgqDRePzALZMEy5uzc8Ip5+F98oOHxlviGw=
- github.com/operator-framework/operator-lifecycle-manager v0.0.0-20190128024246-5eb7ae5bdb7a/go.mod h1:vq6TTFvg6ti1Bn6ACsZneZTmjTsURgDD6tQtVDbEgsU=
- github.com/operator-framework/operator-registry v1.0.4/go.mod h1:hve6YwcjM2nGVlscLtNsp9sIIBkNZo6jlJgzWw7vP9s=
-+github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU=
-+github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w=
- github.com/ovirt/go-ovirt v0.0.0-20210809163552-d4276e35d3db h1:ahvAlEurj4TF1SExDJHNeqknQC8lAwnZEPLyZJuRyd0=
- github.com/ovirt/go-ovirt v0.0.0-20210809163552-d4276e35d3db/go.mod h1:Zkdj9/rW6eyuw0uOeEns6O3pP5G2ak+bI/tgkQ/tEZI=
- github.com/ovirt/go-ovirt-client v0.9.0 h1:G/5mvQQws8SyYgR6TrVQAb8hMUHCvy7n8wySyL33/Fc=
-@@ -1260,15 +1260,17 @@ github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqr
- github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY=
- github.com/prometheus/client_golang v1.14.0/go.mod h1:8vpkKitgIVNcqrRBWh1C4TIUQgYNtG/XQE4E/Zae36Y=
- github.com/prometheus/client_golang v1.15.1/go.mod h1:e9yaBhRPU2pPNsZwE+JdQl0KEt1N9XgF6zxWmaC0xOk=
--github.com/prometheus/client_golang v1.16.0 h1:yk/hx9hDbrGHovbci4BY+pRMfSuuat626eFsHb7tmT8=
- github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc=
-+github.com/prometheus/client_golang v1.17.0 h1:rl2sfwZMtSthVU752MqfjQozy7blglC+1SOtjMAMh+Q=
-+github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY=
- github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
- github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
- github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
- github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
- github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w=
--github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY=
- github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU=
-+github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw=
-+github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI=
- github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro=
- github.com/prometheus/common v0.0.0-20190104105734-b1c43a6df3ae/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
- github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
-@@ -1290,8 +1292,8 @@ github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1
- github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4=
- github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY=
- github.com/prometheus/procfs v0.10.1/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM=
--github.com/prometheus/procfs v0.11.0 h1:5EAgkfkMl659uZPbe9AS2N68a7Cc1TJbPEuGzFuRbyk=
--github.com/prometheus/procfs v0.11.0/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM=
-+github.com/prometheus/procfs v0.11.1 h1:xRC8Iq1yyca5ypa9n1EZnWZkt7dwcoRPQwX/5gwaUuI=
-+github.com/prometheus/procfs v0.11.1/go.mod h1:eesXgaPo1q7lBpVMoMy0ZOFTth9hBn4W/y0/p/ScXhY=
- github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
- github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
- github.com/robfig/cron v1.2.0 h1:ZjScXvvxeQ63Dbyxy76Fj3AT3Ut0aKsyd2/tl3DTMuQ=
-@@ -1314,7 +1316,6 @@ github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZ
- github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
- github.com/sclevine/spec v1.0.0/go.mod h1:W4J29eT/Kzv7/b9IWLB055Z+qvVC9vt0Arko24q7p+U=
- github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
--github.com/seccomp/libseccomp-golang v0.9.2-0.20220502022130-f33da4d89646/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg=
- github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
- github.com/sirupsen/logrus v1.1.1/go.mod h1:zrgwTnHtNr00buQ1vSptGe8m1f/BbgsPukg8qsT7A+A=
- github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
-@@ -1322,8 +1323,9 @@ github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6Mwd
- github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
- github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
- github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
--github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0=
- github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
-+github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
-+github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
- github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
- github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
- github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
-@@ -1343,7 +1345,6 @@ github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnIn
- github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
- github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
- github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg=
--github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980/go.mod h1:AO3tvPzVZ/ayst6UlUKUv6rcPQInYe3IknH3jYhAKu8=
- github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8=
- github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
- github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-@@ -1359,8 +1360,8 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
- github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
- github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
- github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
--github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
--github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
-+github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
-+github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
- github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
- github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 h1:kdXcSzyDtseVEc4yCz2qF8ZrQvIDBJLl4S1c3GCXmoI=
- github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww=
-@@ -1370,12 +1371,8 @@ github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75/go.mod h1
- github.com/ugorji/go/codec v0.0.0-20181022190402-e5e69e061d4f/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0=
- github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8=
- github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
--github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
--github.com/urfave/cli v1.22.12/go.mod h1:sSBEIC79qR6OvcmsD4U3KABeOTxDqQtdDnaFuUN30b8=
--github.com/vbatts/tar-split v0.11.3 h1:hLFqsOLQ1SsppQNTMpkpPXClLDfC2A3Zgy9OUU+RVck=
--github.com/vbatts/tar-split v0.11.3/go.mod h1:9QlHN18E+fEH7RdG+QAJJcuya3rqT7eXSTY7wGrAokY=
--github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE=
--github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU=
-+github.com/vbatts/tar-split v0.11.5 h1:3bHCTIheBm1qFTcgh9oPu+nNBtX+XJIupG/vacinCts=
-+github.com/vbatts/tar-split v0.11.5/go.mod h1:yZbwRsSeGjusneWgA781EKej9HF8vme8okylkAeNKLk=
- github.com/vmware/govmomi v0.23.1 h1:vU09hxnNR/I7e+4zCJvW+5vHu5dO64Aoe2Lw7Yi/KRg=
- github.com/vmware/govmomi v0.23.1/go.mod h1:Y+Wq4lst78L85Ge/F8+ORXIWiKYqaro1vhAulACy9Lc=
- github.com/vmware/vmw-guestinfo v0.0.0-20170707015358-25eff159a728/go.mod h1:x9oS4Wk2s2u4tS29nEaDLdzvuHdB19CvSGJjPgkZJNk=
-@@ -1392,7 +1389,6 @@ github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5t
- github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0=
- github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA=
- go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
--go.etcd.io/bbolt v1.3.7 h1:j+zJOnnEjF/kyHlDDgGnVL/AIqIJPq8UoB2GSNfkUfQ=
- go.etcd.io/bbolt v1.3.7/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw=
- go.etcd.io/etcd/api/v3 v3.5.9/go.mod h1:uyAal843mC8uUVSLWz6eHa/d971iDGnCRpmKd2Z+X8k=
- go.etcd.io/etcd/client/pkg/v3 v3.5.9/go.mod h1:y+CzeSmkMpWN2Jyu1npecjB9BBnABxGM4pN8cGuJeL4=
-@@ -1402,7 +1398,6 @@ go.etcd.io/etcd/pkg/v3 v3.5.9/go.mod h1:BZl0SAShQFk0IpLWR78T/+pyt8AruMHhTNNX73hk
- go.etcd.io/etcd/raft/v3 v3.5.9/go.mod h1:WnFkqzFdZua4LVlVXQEGhmooLeyS7mqzS4Pf4BCVqXg=
- go.etcd.io/etcd/server/v3 v3.5.9/go.mod h1:GgI1fQClQCFIzuVjlvdbMxNbnISt90gdfYyqiAIt65g=
- go.etcd.io/gofail v0.1.0/go.mod h1:VZBCXYGZhHAinaBiiqYvuDynvahNsAyLFwB3kEHKz1M=
--go.mozilla.org/pkcs7 v0.0.0-20200128120323-432b2356ecb1/go.mod h1:SNgMg+EgDFwmvSmLRTNKC5fegJjB7v23qTQ0XLGUNHk=
- go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
- go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
- go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
-@@ -1463,7 +1458,6 @@ golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8U
- golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
- golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
- golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
--golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
- golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
- golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
- golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-@@ -1472,8 +1466,9 @@ golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0
- golang.org/x/crypto v0.0.0-20220829220503-c86fa9a7ed90/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
- golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw=
- golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4=
--golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo=
- golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
-+golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA=
-+golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs=
- golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
- golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
- golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
-@@ -1490,8 +1485,8 @@ golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EH
- golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
- golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA=
- golang.org/x/exp v0.0.0-20220827204233-334a2380cb91/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE=
--golang.org/x/exp v0.0.0-20230713183714-613f0c0eb8a1 h1:MGwJjxBy0HJshjDNfLsYO8xppfqWlA5ZT9OhtUUhTNw=
--golang.org/x/exp v0.0.0-20230713183714-613f0c0eb8a1/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc=
-+golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 h1:LfspQV/FYTatPTr/3HzIcmiUFH7PGP+OQ6mgDYo3yuQ=
-+golang.org/x/exp v0.0.0-20240222234643-814bf88cf225/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc=
- golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs=
- golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
- golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
-@@ -1538,8 +1533,8 @@ golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
- golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
- golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
- golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
--golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc=
--golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
-+golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8=
-+golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
- golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
- golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
- golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-@@ -1615,8 +1610,9 @@ golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
- golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
- golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns=
- golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
--golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM=
- golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
-+golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc=
-+golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
- golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
- golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
- golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
-@@ -1646,8 +1642,8 @@ golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec
- golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I=
- golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw=
- golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE=
--golang.org/x/oauth2 v0.10.0 h1:zHCpF2Khkwy4mMB4bv0U37YtJdTGW8jI0glAApi0Kh8=
--golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI=
-+golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI=
-+golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8=
- golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
- golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
- golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-@@ -1665,8 +1661,8 @@ golang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde/go.mod h1:RxMgew5VJxzue5/jJ
- golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
- golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
- golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
--golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E=
--golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
-+golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ=
-+golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
- golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
- golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
- golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-@@ -1681,14 +1677,12 @@ golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7w
- golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
- golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
- golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
--golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
- golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
- golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
- golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
- golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
- golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
- golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
--golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
- golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
- golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
- golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-@@ -1738,12 +1732,9 @@ golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBc
- golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
- golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
- golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
--golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
- golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
- golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
- golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
--golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
--golang.org/x/sys v0.0.0-20211116061358-0a5406a5449c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
- golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
- golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
- golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-@@ -1766,7 +1757,6 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc
- golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
- golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
- golang.org/x/sys v0.0.0-20220829200755-d48e67d00261/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
--golang.org/x/sys v0.0.0-20220906165534-d0df966e6959/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
- golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
- golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
- golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-@@ -1777,8 +1767,9 @@ golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
- golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
- golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
- golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
--golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y=
- golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-+golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4=
-+golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
- golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
- golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
- golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
-@@ -1790,8 +1781,9 @@ golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
- golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY=
- golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
- golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U=
--golang.org/x/term v0.17.0 h1:mkTF7LCd6WGJNL3K1Ad7kwxNfYAW6a8a8QqtMblp/4U=
- golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
-+golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8=
-+golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58=
- golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
- golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
- golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
-@@ -1894,8 +1886,8 @@ golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ=
- golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
- golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s=
- golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4=
--golang.org/x/tools v0.12.0 h1:YW6HUoUmYBpwSgyaGaZq1fHjrBjX1rlpZ54T6mu2kss=
--golang.org/x/tools v0.12.0/go.mod h1:Sc0INKfu04TlqNoRA1hgpFZbhYXHPr4V5DzpSBTPqQM=
-+golang.org/x/tools v0.18.0 h1:k8NLag8AGHnn+PHbl7g43CtqZAwG60vZkLqgyZgIHgQ=
-+golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg=
- golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
- golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
- golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-@@ -1980,8 +1972,9 @@ google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7
- google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
- google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
- google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
--google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c=
- google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
-+google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM=
-+google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds=
- google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
- google.golang.org/genproto v0.0.0-20181016170114-94acd270e44e/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
- google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
-@@ -2117,16 +2110,16 @@ google.golang.org/genproto v0.0.0-20230330154414-c0448cd141ea/go.mod h1:UUQDJDOl
- google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak=
- google.golang.org/genproto v0.0.0-20230525234025-438c736192d0/go.mod h1:9ExIQyXL5hZrHzQceCwuSYwZZ5QZBazOcprJ5rgs3lY=
- google.golang.org/genproto v0.0.0-20230526161137-0005af68ea54/go.mod h1:zqTuNwFlFRsw5zIts5VnzLQxSRqh+CGOTVMlYbY0Eyk=
--google.golang.org/genproto v0.0.0-20230706204954-ccb25ca9f130 h1:Au6te5hbKUV8pIYWHqOUZ1pva5qK/rwbIhoXEUB9Lu8=
--google.golang.org/genproto v0.0.0-20230706204954-ccb25ca9f130/go.mod h1:O9kGHb51iE/nOGvQaDUuadVYqovW56s5emA88lQnj6Y=
-+google.golang.org/genproto v0.0.0-20230920204549-e6e6cdab5c13 h1:vlzZttNJGVqTsRFU9AmdnrcO1Znh8Ew9kCD//yjigk0=
-+google.golang.org/genproto v0.0.0-20230920204549-e6e6cdab5c13/go.mod h1:CCviP9RmpZ1mxVr8MUjCnSiY09IbAXZxhLE6EhHIdPU=
- google.golang.org/genproto/googleapis/api v0.0.0-20230525234020-1aefcd67740a/go.mod h1:ts19tUU+Z0ZShN1y3aPyq2+O3d5FUNNgT6FtOzmrNn8=
- google.golang.org/genproto/googleapis/api v0.0.0-20230525234035-dd9d682886f9/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig=
--google.golang.org/genproto/googleapis/api v0.0.0-20230706204954-ccb25ca9f130 h1:XVeBY8d/FaK4848myy41HBqnDwvxeV3zMZhwN1TvAMU=
--google.golang.org/genproto/googleapis/api v0.0.0-20230706204954-ccb25ca9f130/go.mod h1:mPBs5jNgx2GuQGvFwUvVKqtn6HsUw9nP64BedgvqEsQ=
-+google.golang.org/genproto/googleapis/api v0.0.0-20230913181813-007df8e322eb h1:lK0oleSc7IQsUxO3U5TjL9DWlsxpEBemh+zpB7IqhWI=
-+google.golang.org/genproto/googleapis/api v0.0.0-20230913181813-007df8e322eb/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk=
- google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234015-3fc162c6f38a/go.mod h1:xURIpW9ES5+/GZhnV6beoEtxQrnkRGIfP5VQG2tCBLc=
- google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA=
--google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98 h1:bVf09lpb+OJbByTj913DRJioFFAjf/ZGxEz7MajTp2U=
--google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM=
-+google.golang.org/genproto/googleapis/rpc v0.0.0-20231002182017-d307bd883b97 h1:6GQBEOdGkX6MMTLT9V+TjtIRZCw9VPD5Z+yHY9wMgS0=
-+google.golang.org/genproto/googleapis/rpc v0.0.0-20231002182017-d307bd883b97/go.mod h1:v7nGkzlmW8P3n/bKmWBn2WpBjpOEx8Q6gMueudAmKfY=
- google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio=
- google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
- google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
-@@ -2168,8 +2161,8 @@ google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCD
- google.golang.org/grpc v1.51.0/go.mod h1:wgNDFcnuBGmxLKI/qn4T+m5BtEBYXJPvibbUPsAIPww=
- google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw=
- google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g=
--google.golang.org/grpc v1.56.3 h1:8I4C0Yq1EjstUzUJzpcRVbuYA2mODtEmpWiQoN/b2nc=
--google.golang.org/grpc v1.56.3/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s=
-+google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk=
-+google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98=
- google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=
- google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
- google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
-@@ -2206,7 +2199,6 @@ gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
- gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k=
- gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc=
- gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo=
--gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI=
- gopkg.in/square/go-jose.v2 v2.6.0/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI=
- gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
- gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
-@@ -2223,7 +2215,6 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
- gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
- gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
- gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
--gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
- gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
- gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
- honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
-diff --git a/vendor/cloud.google.com/go/compute/internal/version.go b/vendor/cloud.google.com/go/compute/internal/version.go
-index e939b9f5e..639553700 100644
---- a/vendor/cloud.google.com/go/compute/internal/version.go
-+++ b/vendor/cloud.google.com/go/compute/internal/version.go
-@@ -15,4 +15,4 @@
- package internal
-
- // Version is the current tagged release of the library.
--const Version = "1.20.1"
-+const Version = "1.23.0"
-diff --git a/vendor/cloud.google.com/go/iam/CHANGES.md b/vendor/cloud.google.com/go/iam/CHANGES.md
-index d18a339ae..b8a244178 100644
---- a/vendor/cloud.google.com/go/iam/CHANGES.md
-+++ b/vendor/cloud.google.com/go/iam/CHANGES.md
-@@ -1,6 +1,20 @@
- # Changes
-
-
-+## [1.1.2](https://github.com/googleapis/google-cloud-go/compare/iam/v1.1.1...iam/v1.1.2) (2023-08-08)
-+
-+
-+### Documentation
-+
-+* **iam:** Minor formatting ([b4349cc](https://github.com/googleapis/google-cloud-go/commit/b4349cc507870ff8629bbc07de578b63bb889626))
-+
-+## [1.1.1](https://github.com/googleapis/google-cloud-go/compare/iam/v1.1.0...iam/v1.1.1) (2023-06-20)
-+
-+
-+### Bug Fixes
-+
-+* **iam:** REST query UpdateMask bug ([df52820](https://github.com/googleapis/google-cloud-go/commit/df52820b0e7721954809a8aa8700b93c5662dc9b))
-+
- ## [1.1.0](https://github.com/googleapis/google-cloud-go/compare/iam/v1.0.1...iam/v1.1.0) (2023-05-30)
-
-
-diff --git a/vendor/cloud.google.com/go/iam/apiv1/iampb/iam_policy.pb.go b/vendor/cloud.google.com/go/iam/apiv1/iampb/iam_policy.pb.go
-index fdcca8a52..3d3e76323 100644
---- a/vendor/cloud.google.com/go/iam/apiv1/iampb/iam_policy.pb.go
-+++ b/vendor/cloud.google.com/go/iam/apiv1/iampb/iam_policy.pb.go
-@@ -15,7 +15,7 @@
- // Code generated by protoc-gen-go. DO NOT EDIT.
- // versions:
- // protoc-gen-go v1.30.0
--// protoc v4.23.1
-+// protoc v4.23.2
- // source: google/iam/v1/iam_policy.proto
-
- package iampb
-diff --git a/vendor/cloud.google.com/go/iam/apiv1/iampb/options.pb.go b/vendor/cloud.google.com/go/iam/apiv1/iampb/options.pb.go
-index 7c91cc59a..adc445b07 100644
---- a/vendor/cloud.google.com/go/iam/apiv1/iampb/options.pb.go
-+++ b/vendor/cloud.google.com/go/iam/apiv1/iampb/options.pb.go
-@@ -15,7 +15,7 @@
- // Code generated by protoc-gen-go. DO NOT EDIT.
- // versions:
- // protoc-gen-go v1.30.0
--// protoc v4.23.1
-+// protoc v4.23.2
- // source: google/iam/v1/options.proto
-
- package iampb
-diff --git a/vendor/cloud.google.com/go/iam/apiv1/iampb/policy.pb.go b/vendor/cloud.google.com/go/iam/apiv1/iampb/policy.pb.go
-index 8b82b0f58..de7995434 100644
---- a/vendor/cloud.google.com/go/iam/apiv1/iampb/policy.pb.go
-+++ b/vendor/cloud.google.com/go/iam/apiv1/iampb/policy.pb.go
-@@ -1,4 +1,4 @@
--// Copyright 2022 Google LLC
-+// Copyright 2023 Google LLC
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
-@@ -15,7 +15,7 @@
- // Code generated by protoc-gen-go. DO NOT EDIT.
- // versions:
- // protoc-gen-go v1.30.0
--// protoc v4.23.1
-+// protoc v4.23.2
- // source: google/iam/v1/policy.proto
-
- package iampb
-@@ -219,6 +219,8 @@ func (AuditConfigDelta_Action) EnumDescriptor() ([]byte, []int) {
- //
- // **JSON example:**
- //
-+// ```
-+//
- // {
- // "bindings": [
- // {
-@@ -247,8 +249,12 @@ func (AuditConfigDelta_Action) EnumDescriptor() ([]byte, []int) {
- // "version": 3
- // }
- //
-+// ```
-+//
- // **YAML example:**
- //
-+// ```
-+//
- // bindings:
- // - members:
- // - user:mike@example.com
-@@ -266,6 +272,8 @@ func (AuditConfigDelta_Action) EnumDescriptor() ([]byte, []int) {
- // etag: BwWWja0YfJA=
- // version: 3
- //
-+// ```
-+//
- // For a description of IAM and its features, see the
- // [IAM documentation](https://cloud.google.com/iam/docs/).
- type Policy struct {
-@@ -396,7 +404,7 @@ type Binding struct {
- // Role that is assigned to the list of `members`, or principals.
- // For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
- Role string `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"`
-- // Specifies the principals requesting access for a Cloud Platform resource.
-+ // Specifies the principals requesting access for a Google Cloud resource.
- // `members` can have the following values:
- //
- // * `allUsers`: A special identifier that represents anyone who is
-@@ -558,8 +566,8 @@ func (x *Binding) GetCondition() *expr.Expr {
- // }
- //
- // For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ
--// logging. It also exempts jose@example.com from DATA_READ logging, and
--// aliya@example.com from DATA_WRITE logging.
-+// logging. It also exempts `jose@example.com` from DATA_READ logging, and
-+// `aliya@example.com` from DATA_WRITE logging.
- type AuditConfig struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
-@@ -770,7 +778,7 @@ type BindingDelta struct {
- // For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
- // Required
- Role string `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"`
-- // A single identity requesting access for a Cloud Platform resource.
-+ // A single identity requesting access for a Google Cloud resource.
- // Follows the same format of Binding.members.
- // Required
- Member string `protobuf:"bytes,3,opt,name=member,proto3" json:"member,omitempty"`
-diff --git a/vendor/cloud.google.com/go/internal/.repo-metadata-full.json b/vendor/cloud.google.com/go/internal/.repo-metadata-full.json
-index 6248902a5..4a90b1599 100644
---- a/vendor/cloud.google.com/go/internal/.repo-metadata-full.json
-+++ b/vendor/cloud.google.com/go/internal/.repo-metadata-full.json
-@@ -26,6 +26,16 @@
- "language": "go",
- "client_library_type": "generated",
- "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/advisorynotifications/latest/apiv1",
-+ "release_level": "stable",
-+ "library_type": "GAPIC_AUTO"
-+ },
-+ "cloud.google.com/go/ai/generativelanguage/apiv1beta2": {
-+ "api_shortname": "generativelanguage",
-+ "distribution_name": "cloud.google.com/go/ai/generativelanguage/apiv1beta2",
-+ "description": "Generative Language API",
-+ "language": "go",
-+ "client_library_type": "generated",
-+ "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/ai/latest/generativelanguage/apiv1beta2",
- "release_level": "preview",
- "library_type": "GAPIC_AUTO"
- },
-@@ -79,6 +89,16 @@
- "release_level": "preview",
- "library_type": "GAPIC_AUTO"
- },
-+ "cloud.google.com/go/alloydb/connectors/apiv1alpha": {
-+ "api_shortname": "connectors",
-+ "distribution_name": "cloud.google.com/go/alloydb/connectors/apiv1alpha",
-+ "description": "AlloyDB connectors",
-+ "language": "go",
-+ "client_library_type": "generated",
-+ "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/alloydb/latest/connectors/apiv1alpha",
-+ "release_level": "preview",
-+ "library_type": "GAPIC_AUTO"
-+ },
- "cloud.google.com/go/analytics/admin/apiv1alpha": {
- "api_shortname": "analyticsadmin",
- "distribution_name": "cloud.google.com/go/analytics/admin/apiv1alpha",
-@@ -266,7 +286,7 @@
- "language": "go",
- "client_library_type": "generated",
- "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/beyondcorp/latest/appconnections/apiv1",
-- "release_level": "preview",
-+ "release_level": "stable",
- "library_type": "GAPIC_AUTO"
- },
- "cloud.google.com/go/beyondcorp/appconnectors/apiv1": {
-@@ -276,7 +296,7 @@
- "language": "go",
- "client_library_type": "generated",
- "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/beyondcorp/latest/appconnectors/apiv1",
-- "release_level": "preview",
-+ "release_level": "stable",
- "library_type": "GAPIC_AUTO"
- },
- "cloud.google.com/go/beyondcorp/appgateways/apiv1": {
-@@ -286,7 +306,7 @@
- "language": "go",
- "client_library_type": "generated",
- "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/beyondcorp/latest/appgateways/apiv1",
-- "release_level": "preview",
-+ "release_level": "stable",
- "library_type": "GAPIC_AUTO"
- },
- "cloud.google.com/go/beyondcorp/clientconnectorservices/apiv1": {
-@@ -296,7 +316,7 @@
- "language": "go",
- "client_library_type": "generated",
- "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/beyondcorp/latest/clientconnectorservices/apiv1",
-- "release_level": "preview",
-+ "release_level": "stable",
- "library_type": "GAPIC_AUTO"
- },
- "cloud.google.com/go/beyondcorp/clientgateways/apiv1": {
-@@ -306,7 +326,7 @@
- "language": "go",
- "client_library_type": "generated",
- "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/beyondcorp/latest/clientgateways/apiv1",
-- "release_level": "preview",
-+ "release_level": "stable",
- "library_type": "GAPIC_AUTO"
- },
- "cloud.google.com/go/bigquery": {
-@@ -326,6 +346,26 @@
- "language": "go",
- "client_library_type": "generated",
- "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/bigquery/latest/analyticshub/apiv1",
-+ "release_level": "stable",
-+ "library_type": "GAPIC_AUTO"
-+ },
-+ "cloud.google.com/go/bigquery/biglake/apiv1": {
-+ "api_shortname": "biglake",
-+ "distribution_name": "cloud.google.com/go/bigquery/biglake/apiv1",
-+ "description": "BigLake API",
-+ "language": "go",
-+ "client_library_type": "generated",
-+ "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/bigquery/latest/biglake/apiv1",
-+ "release_level": "preview",
-+ "library_type": "GAPIC_AUTO"
-+ },
-+ "cloud.google.com/go/bigquery/biglake/apiv1alpha1": {
-+ "api_shortname": "biglake",
-+ "distribution_name": "cloud.google.com/go/bigquery/biglake/apiv1alpha1",
-+ "description": "BigLake API",
-+ "language": "go",
-+ "client_library_type": "generated",
-+ "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/bigquery/latest/biglake/apiv1alpha1",
- "release_level": "preview",
- "library_type": "GAPIC_AUTO"
- },
-@@ -366,7 +406,7 @@
- "language": "go",
- "client_library_type": "generated",
- "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/bigquery/latest/datapolicies/apiv1",
-- "release_level": "preview",
-+ "release_level": "stable",
- "library_type": "GAPIC_AUTO"
- },
- "cloud.google.com/go/bigquery/datapolicies/apiv1beta1": {
-@@ -535,7 +575,7 @@
- "description": "Cloud Build API",
- "language": "go",
- "client_library_type": "generated",
-- "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/latest/cloudbuild/apiv1/v2",
-+ "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/cloudbuild/latest/apiv1/v2",
- "release_level": "stable",
- "library_type": "GAPIC_AUTO"
- },
-@@ -589,6 +629,16 @@
- "release_level": "preview",
- "library_type": "GAPIC_AUTO"
- },
-+ "cloud.google.com/go/commerce/consumer/procurement/apiv1": {
-+ "api_shortname": "cloudcommerceconsumerprocurement",
-+ "distribution_name": "cloud.google.com/go/commerce/consumer/procurement/apiv1",
-+ "description": "Cloud Commerce Consumer Procurement API",
-+ "language": "go",
-+ "client_library_type": "generated",
-+ "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/commerce/latest/consumer/procurement/apiv1",
-+ "release_level": "preview",
-+ "library_type": "GAPIC_AUTO"
-+ },
- "cloud.google.com/go/compute/apiv1": {
- "api_shortname": "compute",
- "distribution_name": "cloud.google.com/go/compute/apiv1",
-@@ -616,7 +666,7 @@
- "language": "go",
- "client_library_type": "generated",
- "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/confidentialcomputing/latest/apiv1",
-- "release_level": "preview",
-+ "release_level": "stable",
- "library_type": "GAPIC_AUTO"
- },
- "cloud.google.com/go/confidentialcomputing/apiv1alpha1": {
-@@ -629,6 +679,16 @@
- "release_level": "preview",
- "library_type": "GAPIC_AUTO"
- },
-+ "cloud.google.com/go/config/apiv1": {
-+ "api_shortname": "config",
-+ "distribution_name": "cloud.google.com/go/config/apiv1",
-+ "description": "Infrastructure Manager API",
-+ "language": "go",
-+ "client_library_type": "generated",
-+ "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/config/latest/apiv1",
-+ "release_level": "preview",
-+ "library_type": "GAPIC_AUTO"
-+ },
- "cloud.google.com/go/contactcenterinsights/apiv1": {
- "api_shortname": "contactcenterinsights",
- "distribution_name": "cloud.google.com/go/contactcenterinsights/apiv1",
-@@ -686,7 +746,7 @@
- "language": "go",
- "client_library_type": "generated",
- "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/datacatalog/latest/lineage/apiv1",
-- "release_level": "preview",
-+ "release_level": "stable",
- "library_type": "GAPIC_AUTO"
- },
- "cloud.google.com/go/dataflow/apiv1beta3": {
-@@ -816,13 +876,13 @@
- "language": "go",
- "client_library_type": "generated",
- "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/latest/debugger/apiv2",
-- "release_level": "stable",
-+ "release_level": "preview",
- "library_type": "GAPIC_AUTO"
- },
- "cloud.google.com/go/deploy/apiv1": {
- "api_shortname": "clouddeploy",
- "distribution_name": "cloud.google.com/go/deploy/apiv1",
-- "description": "Google Cloud Deploy API",
-+ "description": "Cloud Deploy API",
- "language": "go",
- "client_library_type": "generated",
- "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/deploy/latest/apiv1",
-@@ -876,7 +936,7 @@
- "language": "go",
- "client_library_type": "generated",
- "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/discoveryengine/latest/apiv1",
-- "release_level": "preview",
-+ "release_level": "stable",
- "library_type": "GAPIC_AUTO"
- },
- "cloud.google.com/go/discoveryengine/apiv1beta": {
-@@ -986,7 +1046,7 @@
- "language": "go",
- "client_library_type": "generated",
- "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/eventarc/latest/publishing/apiv1",
-- "release_level": "preview",
-+ "release_level": "stable",
- "library_type": "GAPIC_AUTO"
- },
- "cloud.google.com/go/filestore/apiv1": {
-@@ -1059,26 +1119,6 @@
- "release_level": "preview",
- "library_type": "CORE"
- },
-- "cloud.google.com/go/gaming/apiv1": {
-- "api_shortname": "gameservices",
-- "distribution_name": "cloud.google.com/go/gaming/apiv1",
-- "description": "Game Services API",
-- "language": "go",
-- "client_library_type": "generated",
-- "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/gaming/latest/apiv1",
-- "release_level": "stable",
-- "library_type": "GAPIC_AUTO"
-- },
-- "cloud.google.com/go/gaming/apiv1beta": {
-- "api_shortname": "gameservices",
-- "distribution_name": "cloud.google.com/go/gaming/apiv1beta",
-- "description": "Game Services API",
-- "language": "go",
-- "client_library_type": "generated",
-- "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/gaming/latest/apiv1beta",
-- "release_level": "preview",
-- "library_type": "GAPIC_AUTO"
-- },
- "cloud.google.com/go/gkebackup/apiv1": {
- "api_shortname": "gkebackup",
- "distribution_name": "cloud.google.com/go/gkebackup/apiv1",
-@@ -1116,7 +1156,7 @@
- "language": "go",
- "client_library_type": "generated",
- "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/gkemulticloud/latest/apiv1",
-- "release_level": "preview",
-+ "release_level": "stable",
- "library_type": "GAPIC_AUTO"
- },
- "cloud.google.com/go/gsuiteaddons/apiv1": {
-@@ -1239,6 +1279,16 @@
- "release_level": "preview",
- "library_type": "GAPIC_AUTO"
- },
-+ "cloud.google.com/go/language/apiv2": {
-+ "api_shortname": "language",
-+ "distribution_name": "cloud.google.com/go/language/apiv2",
-+ "description": "Cloud Natural Language API",
-+ "language": "go",
-+ "client_library_type": "generated",
-+ "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/language/latest/apiv2",
-+ "release_level": "preview",
-+ "library_type": "GAPIC_AUTO"
-+ },
- "cloud.google.com/go/lifesciences/apiv2beta": {
- "api_shortname": "lifesciences",
- "distribution_name": "cloud.google.com/go/lifesciences/apiv2beta",
-@@ -1316,7 +1366,7 @@
- "language": "go",
- "client_library_type": "generated",
- "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/maps/latest/places/apiv1",
-- "release_level": "preview",
-+ "release_level": "stable",
- "library_type": "GAPIC_AUTO"
- },
- "cloud.google.com/go/maps/routing/apiv2": {
-@@ -1429,6 +1479,16 @@
- "release_level": "stable",
- "library_type": "GAPIC_AUTO"
- },
-+ "cloud.google.com/go/netapp/apiv1": {
-+ "api_shortname": "netapp",
-+ "distribution_name": "cloud.google.com/go/netapp/apiv1",
-+ "description": "NetApp API",
-+ "language": "go",
-+ "client_library_type": "generated",
-+ "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/netapp/latest/apiv1",
-+ "release_level": "preview",
-+ "library_type": "GAPIC_AUTO"
-+ },
- "cloud.google.com/go/networkconnectivity/apiv1": {
- "api_shortname": "networkconnectivity",
- "distribution_name": "cloud.google.com/go/networkconnectivity/apiv1",
-@@ -1489,6 +1549,16 @@
- "release_level": "preview",
- "library_type": "GAPIC_AUTO"
- },
-+ "cloud.google.com/go/notebooks/apiv2": {
-+ "api_shortname": "notebooks",
-+ "distribution_name": "cloud.google.com/go/notebooks/apiv2",
-+ "description": "Notebooks API",
-+ "language": "go",
-+ "client_library_type": "generated",
-+ "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/notebooks/latest/apiv2",
-+ "release_level": "preview",
-+ "library_type": "GAPIC_AUTO"
-+ },
- "cloud.google.com/go/optimization/apiv1": {
- "api_shortname": "cloudoptimization",
- "distribution_name": "cloud.google.com/go/optimization/apiv1",
-@@ -1599,6 +1669,16 @@
- "release_level": "preview",
- "library_type": "GAPIC_AUTO"
- },
-+ "cloud.google.com/go/policysimulator/apiv1": {
-+ "api_shortname": "policysimulator",
-+ "distribution_name": "cloud.google.com/go/policysimulator/apiv1",
-+ "description": "Policy Simulator API",
-+ "language": "go",
-+ "client_library_type": "generated",
-+ "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/policysimulator/latest/apiv1",
-+ "release_level": "preview",
-+ "library_type": "GAPIC_AUTO"
-+ },
- "cloud.google.com/go/policytroubleshooter/apiv1": {
- "api_shortname": "policytroubleshooter",
- "distribution_name": "cloud.google.com/go/policytroubleshooter/apiv1",
-@@ -1609,6 +1689,16 @@
- "release_level": "stable",
- "library_type": "GAPIC_AUTO"
- },
-+ "cloud.google.com/go/policytroubleshooter/iam/apiv3": {
-+ "api_shortname": "policytroubleshooter",
-+ "distribution_name": "cloud.google.com/go/policytroubleshooter/iam/apiv3",
-+ "description": "Policy Troubleshooter API",
-+ "language": "go",
-+ "client_library_type": "generated",
-+ "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/policytroubleshooter/latest/iam/apiv3",
-+ "release_level": "preview",
-+ "library_type": "GAPIC_AUTO"
-+ },
- "cloud.google.com/go/privatecatalog/apiv1beta1": {
- "api_shortname": "cloudprivatecatalog",
- "distribution_name": "cloud.google.com/go/privatecatalog/apiv1beta1",
-@@ -1676,7 +1766,7 @@
- "language": "go",
- "client_library_type": "generated",
- "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/rapidmigrationassessment/latest/apiv1",
-- "release_level": "preview",
-+ "release_level": "stable",
- "library_type": "GAPIC_AUTO"
- },
- "cloud.google.com/go/recaptchaenterprise/v2/apiv1": {
-@@ -2046,7 +2136,7 @@
- "language": "go",
- "client_library_type": "generated",
- "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/speech/latest/apiv2",
-- "release_level": "preview",
-+ "release_level": "stable",
- "library_type": "GAPIC_AUTO"
- },
- "cloud.google.com/go/storage": {
-@@ -2096,7 +2186,7 @@
- "language": "go",
- "client_library_type": "generated",
- "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/support/latest/apiv2",
-- "release_level": "preview",
-+ "release_level": "stable",
- "library_type": "GAPIC_AUTO"
- },
- "cloud.google.com/go/talent/apiv4": {
-@@ -2186,7 +2276,7 @@
- "language": "go",
- "client_library_type": "generated",
- "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/latest/video/stitcher/apiv1",
-- "release_level": "stable",
-+ "release_level": "preview",
- "library_type": "GAPIC_AUTO"
- },
- "cloud.google.com/go/video/transcoder/apiv1": {
-@@ -2266,7 +2356,7 @@
- "language": "go",
- "client_library_type": "generated",
- "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/vmwareengine/latest/apiv1",
-- "release_level": "preview",
-+ "release_level": "stable",
- "library_type": "GAPIC_AUTO"
- },
- "cloud.google.com/go/vpcaccess/apiv1": {
-diff --git a/vendor/github.com/BurntSushi/toml/decode.go b/vendor/github.com/BurntSushi/toml/decode.go
-index 0ca1dc4fe..4d38f3bfc 100644
---- a/vendor/github.com/BurntSushi/toml/decode.go
-+++ b/vendor/github.com/BurntSushi/toml/decode.go
-@@ -91,7 +91,7 @@ const (
- // UnmarshalText method. See the Unmarshaler example for a demonstration with
- // email addresses.
- //
--// ### Key mapping
-+// # Key mapping
- //
- // TOML keys can map to either keys in a Go map or field names in a Go struct.
- // The special `toml` struct tag can be used to map TOML keys to struct fields
-@@ -248,7 +248,7 @@ func (md *MetaData) unify(data interface{}, rv reflect.Value) error {
- case reflect.Bool:
- return md.unifyBool(data, rv)
- case reflect.Interface:
-- if rv.NumMethod() > 0 { // Only support empty interfaces are supported.
-+ if rv.NumMethod() > 0 { /// Only empty interfaces are supported.
- return md.e("unsupported type %s", rv.Type())
- }
- return md.unifyAnything(data, rv)
-diff --git a/vendor/github.com/BurntSushi/toml/deprecated.go b/vendor/github.com/BurntSushi/toml/deprecated.go
-index c6af3f239..b9e309717 100644
---- a/vendor/github.com/BurntSushi/toml/deprecated.go
-+++ b/vendor/github.com/BurntSushi/toml/deprecated.go
-@@ -5,17 +5,25 @@ import (
- "io"
- )
-
-+// TextMarshaler is an alias for encoding.TextMarshaler.
-+//
- // Deprecated: use encoding.TextMarshaler
- type TextMarshaler encoding.TextMarshaler
-
-+// TextUnmarshaler is an alias for encoding.TextUnmarshaler.
-+//
- // Deprecated: use encoding.TextUnmarshaler
- type TextUnmarshaler encoding.TextUnmarshaler
-
-+// PrimitiveDecode is an alias for MetaData.PrimitiveDecode().
-+//
- // Deprecated: use MetaData.PrimitiveDecode.
- func PrimitiveDecode(primValue Primitive, v interface{}) error {
- md := MetaData{decoded: make(map[string]struct{})}
- return md.unify(primValue.undecoded, rvalue(v))
- }
-
-+// DecodeReader is an alias for NewDecoder(r).Decode(v).
-+//
- // Deprecated: use NewDecoder(reader).Decode(&value).
- func DecodeReader(r io.Reader, v interface{}) (MetaData, error) { return NewDecoder(r).Decode(v) }
-diff --git a/vendor/github.com/BurntSushi/toml/encode.go b/vendor/github.com/BurntSushi/toml/encode.go
-index 930e1d521..9cd25d757 100644
---- a/vendor/github.com/BurntSushi/toml/encode.go
-+++ b/vendor/github.com/BurntSushi/toml/encode.go
-@@ -136,7 +136,8 @@ func NewEncoder(w io.Writer) *Encoder {
- // document.
- func (enc *Encoder) Encode(v interface{}) error {
- rv := eindirect(reflect.ValueOf(v))
-- if err := enc.safeEncode(Key([]string{}), rv); err != nil {
-+ err := enc.safeEncode(Key([]string{}), rv)
-+ if err != nil {
- return err
- }
- return enc.w.Flush()
-@@ -457,6 +458,16 @@ func (enc *Encoder) eStruct(key Key, rv reflect.Value, inline bool) {
-
- frv := eindirect(rv.Field(i))
-
-+ if is32Bit {
-+ // Copy so it works correct on 32bit archs; not clear why this
-+ // is needed. See #314, and https://www.reddit.com/r/golang/comments/pnx8v4
-+ // This also works fine on 64bit, but 32bit archs are somewhat
-+ // rare and this is a wee bit faster.
-+ copyStart := make([]int, len(start))
-+ copy(copyStart, start)
-+ start = copyStart
-+ }
-+
- // Treat anonymous struct fields with tag names as though they are
- // not anonymous, like encoding/json does.
- //
-@@ -471,17 +482,7 @@ func (enc *Encoder) eStruct(key Key, rv reflect.Value, inline bool) {
- if typeIsTable(tomlTypeOfGo(frv)) {
- fieldsSub = append(fieldsSub, append(start, f.Index...))
- } else {
-- // Copy so it works correct on 32bit archs; not clear why this
-- // is needed. See #314, and https://www.reddit.com/r/golang/comments/pnx8v4
-- // This also works fine on 64bit, but 32bit archs are somewhat
-- // rare and this is a wee bit faster.
-- if is32Bit {
-- copyStart := make([]int, len(start))
-- copy(copyStart, start)
-- fieldsDirect = append(fieldsDirect, append(copyStart, f.Index...))
-- } else {
-- fieldsDirect = append(fieldsDirect, append(start, f.Index...))
-- }
-+ fieldsDirect = append(fieldsDirect, append(start, f.Index...))
- }
- }
- }
-@@ -490,24 +491,27 @@ func (enc *Encoder) eStruct(key Key, rv reflect.Value, inline bool) {
- writeFields := func(fields [][]int) {
- for _, fieldIndex := range fields {
- fieldType := rt.FieldByIndex(fieldIndex)
-- fieldVal := eindirect(rv.FieldByIndex(fieldIndex))
-+ fieldVal := rv.FieldByIndex(fieldIndex)
-
-- if isNil(fieldVal) { /// Don't write anything for nil fields.
-+ opts := getOptions(fieldType.Tag)
-+ if opts.skip {
-+ continue
-+ }
-+ if opts.omitempty && isEmpty(fieldVal) {
- continue
- }
-
-- opts := getOptions(fieldType.Tag)
-- if opts.skip {
-+ fieldVal = eindirect(fieldVal)
-+
-+ if isNil(fieldVal) { /// Don't write anything for nil fields.
- continue
- }
-+
- keyName := fieldType.Name
- if opts.name != "" {
- keyName = opts.name
- }
-
-- if opts.omitempty && enc.isEmpty(fieldVal) {
-- continue
-- }
- if opts.omitzero && isZero(fieldVal) {
- continue
- }
-@@ -649,7 +653,7 @@ func isZero(rv reflect.Value) bool {
- return false
- }
-
--func (enc *Encoder) isEmpty(rv reflect.Value) bool {
-+func isEmpty(rv reflect.Value) bool {
- switch rv.Kind() {
- case reflect.Array, reflect.Slice, reflect.Map, reflect.String:
- return rv.Len() == 0
-@@ -664,13 +668,15 @@ func (enc *Encoder) isEmpty(rv reflect.Value) bool {
- // type b struct{ s []string }
- // s := a{field: b{s: []string{"AAA"}}}
- for i := 0; i < rv.NumField(); i++ {
-- if !enc.isEmpty(rv.Field(i)) {
-+ if !isEmpty(rv.Field(i)) {
- return false
- }
- }
- return true
- case reflect.Bool:
- return !rv.Bool()
-+ case reflect.Ptr:
-+ return rv.IsNil()
- }
- return false
- }
-@@ -693,8 +699,11 @@ func (enc *Encoder) newline() {
- // v v v v vv
- // key = {k = 1, k2 = 2}
- func (enc *Encoder) writeKeyValue(key Key, val reflect.Value, inline bool) {
-+ /// Marshaler used on top-level document; call eElement() to just call
-+ /// Marshal{TOML,Text}.
- if len(key) == 0 {
-- encPanic(errNoKey)
-+ enc.eElement(val)
-+ return
- }
- enc.wf("%s%s = ", enc.indentStr(key), key.maybeQuoted(len(key)-1))
- enc.eElement(val)
-diff --git a/vendor/github.com/BurntSushi/toml/error.go b/vendor/github.com/BurntSushi/toml/error.go
-index f4f390e64..efd68865b 100644
---- a/vendor/github.com/BurntSushi/toml/error.go
-+++ b/vendor/github.com/BurntSushi/toml/error.go
-@@ -84,7 +84,7 @@ func (pe ParseError) Error() string {
- pe.Position.Line, pe.LastKey, msg)
- }
-
--// ErrorWithUsage() returns the error with detailed location context.
-+// ErrorWithPosition returns the error with detailed location context.
- //
- // See the documentation on [ParseError].
- func (pe ParseError) ErrorWithPosition() string {
-@@ -124,7 +124,7 @@ func (pe ParseError) ErrorWithPosition() string {
- return b.String()
- }
-
--// ErrorWithUsage() returns the error with detailed location context and usage
-+// ErrorWithUsage returns the error with detailed location context and usage
- // guidance.
- //
- // See the documentation on [ParseError].
-diff --git a/vendor/github.com/BurntSushi/toml/lex.go b/vendor/github.com/BurntSushi/toml/lex.go
-index d4d70871d..3545a6ad6 100644
---- a/vendor/github.com/BurntSushi/toml/lex.go
-+++ b/vendor/github.com/BurntSushi/toml/lex.go
-@@ -46,12 +46,13 @@ func (p Position) String() string {
- }
-
- type lexer struct {
-- input string
-- start int
-- pos int
-- line int
-- state stateFn
-- items chan item
-+ input string
-+ start int
-+ pos int
-+ line int
-+ state stateFn
-+ items chan item
-+ tomlNext bool
-
- // Allow for backing up up to 4 runes. This is necessary because TOML
- // contains 3-rune tokens (""" and ''').
-@@ -87,13 +88,14 @@ func (lx *lexer) nextItem() item {
- }
- }
-
--func lex(input string) *lexer {
-+func lex(input string, tomlNext bool) *lexer {
- lx := &lexer{
-- input: input,
-- state: lexTop,
-- items: make(chan item, 10),
-- stack: make([]stateFn, 0, 10),
-- line: 1,
-+ input: input,
-+ state: lexTop,
-+ items: make(chan item, 10),
-+ stack: make([]stateFn, 0, 10),
-+ line: 1,
-+ tomlNext: tomlNext,
- }
- return lx
- }
-@@ -408,7 +410,7 @@ func lexTableNameEnd(lx *lexer) stateFn {
- // Lexes only one part, e.g. only 'a' inside 'a.b'.
- func lexBareName(lx *lexer) stateFn {
- r := lx.next()
-- if isBareKeyChar(r) {
-+ if isBareKeyChar(r, lx.tomlNext) {
- return lexBareName
- }
- lx.backup()
-@@ -618,6 +620,9 @@ func lexInlineTableValue(lx *lexer) stateFn {
- case isWhitespace(r):
- return lexSkip(lx, lexInlineTableValue)
- case isNL(r):
-+ if lx.tomlNext {
-+ return lexSkip(lx, lexInlineTableValue)
-+ }
- return lx.errorPrevLine(errLexInlineTableNL{})
- case r == '#':
- lx.push(lexInlineTableValue)
-@@ -640,6 +645,9 @@ func lexInlineTableValueEnd(lx *lexer) stateFn {
- case isWhitespace(r):
- return lexSkip(lx, lexInlineTableValueEnd)
- case isNL(r):
-+ if lx.tomlNext {
-+ return lexSkip(lx, lexInlineTableValueEnd)
-+ }
- return lx.errorPrevLine(errLexInlineTableNL{})
- case r == '#':
- lx.push(lexInlineTableValueEnd)
-@@ -648,6 +656,9 @@ func lexInlineTableValueEnd(lx *lexer) stateFn {
- lx.ignore()
- lx.skip(isWhitespace)
- if lx.peek() == '}' {
-+ if lx.tomlNext {
-+ return lexInlineTableValueEnd
-+ }
- return lx.errorf("trailing comma not allowed in inline tables")
- }
- return lexInlineTableValue
-@@ -770,8 +781,8 @@ func lexRawString(lx *lexer) stateFn {
- }
- }
-
--// lexMultilineRawString consumes a raw string. Nothing can be escaped in such
--// a string. It assumes that the beginning ''' has already been consumed and
-+// lexMultilineRawString consumes a raw string. Nothing can be escaped in such a
-+// string. It assumes that the beginning triple-' has already been consumed and
- // ignored.
- func lexMultilineRawString(lx *lexer) stateFn {
- r := lx.next()
-@@ -828,6 +839,11 @@ func lexMultilineStringEscape(lx *lexer) stateFn {
- func lexStringEscape(lx *lexer) stateFn {
- r := lx.next()
- switch r {
-+ case 'e':
-+ if !lx.tomlNext {
-+ return lx.error(errLexEscape{r})
-+ }
-+ fallthrough
- case 'b':
- fallthrough
- case 't':
-@@ -846,6 +862,11 @@ func lexStringEscape(lx *lexer) stateFn {
- fallthrough
- case '\\':
- return lx.pop()
-+ case 'x':
-+ if !lx.tomlNext {
-+ return lx.error(errLexEscape{r})
-+ }
-+ return lexHexEscape
- case 'u':
- return lexShortUnicodeEscape
- case 'U':
-@@ -854,6 +875,19 @@ func lexStringEscape(lx *lexer) stateFn {
- return lx.error(errLexEscape{r})
- }
-
-+func lexHexEscape(lx *lexer) stateFn {
-+ var r rune
-+ for i := 0; i < 2; i++ {
-+ r = lx.next()
-+ if !isHexadecimal(r) {
-+ return lx.errorf(
-+ `expected two hexadecimal digits after '\x', but got %q instead`,
-+ lx.current())
-+ }
-+ }
-+ return lx.pop()
-+}
-+
- func lexShortUnicodeEscape(lx *lexer) stateFn {
- var r rune
- for i := 0; i < 4; i++ {
-@@ -1225,7 +1259,23 @@ func isOctal(r rune) bool { return r >= '0' && r <= '7' }
- func isHexadecimal(r rune) bool {
- return (r >= '0' && r <= '9') || (r >= 'a' && r <= 'f') || (r >= 'A' && r <= 'F')
- }
--func isBareKeyChar(r rune) bool {
-+
-+func isBareKeyChar(r rune, tomlNext bool) bool {
-+ if tomlNext {
-+ return (r >= 'A' && r <= 'Z') ||
-+ (r >= 'a' && r <= 'z') ||
-+ (r >= '0' && r <= '9') ||
-+ r == '_' || r == '-' ||
-+ r == 0xb2 || r == 0xb3 || r == 0xb9 || (r >= 0xbc && r <= 0xbe) ||
-+ (r >= 0xc0 && r <= 0xd6) || (r >= 0xd8 && r <= 0xf6) || (r >= 0xf8 && r <= 0x037d) ||
-+ (r >= 0x037f && r <= 0x1fff) ||
-+ (r >= 0x200c && r <= 0x200d) || (r >= 0x203f && r <= 0x2040) ||
-+ (r >= 0x2070 && r <= 0x218f) || (r >= 0x2460 && r <= 0x24ff) ||
-+ (r >= 0x2c00 && r <= 0x2fef) || (r >= 0x3001 && r <= 0xd7ff) ||
-+ (r >= 0xf900 && r <= 0xfdcf) || (r >= 0xfdf0 && r <= 0xfffd) ||
-+ (r >= 0x10000 && r <= 0xeffff)
-+ }
-+
- return (r >= 'A' && r <= 'Z') ||
- (r >= 'a' && r <= 'z') ||
- (r >= '0' && r <= '9') ||
-diff --git a/vendor/github.com/BurntSushi/toml/meta.go b/vendor/github.com/BurntSushi/toml/meta.go
-index 71847a041..2e78b24e9 100644
---- a/vendor/github.com/BurntSushi/toml/meta.go
-+++ b/vendor/github.com/BurntSushi/toml/meta.go
-@@ -106,7 +106,7 @@ func (k Key) maybeQuoted(i int) string {
- return `""`
- }
- for _, c := range k[i] {
-- if !isBareKeyChar(c) {
-+ if !isBareKeyChar(c, false) {
- return `"` + dblQuotedReplacer.Replace(k[i]) + `"`
- }
- }
-diff --git a/vendor/github.com/BurntSushi/toml/parse.go b/vendor/github.com/BurntSushi/toml/parse.go
-index d2542d6f9..9c1915369 100644
---- a/vendor/github.com/BurntSushi/toml/parse.go
-+++ b/vendor/github.com/BurntSushi/toml/parse.go
-@@ -2,6 +2,7 @@ package toml
-
- import (
- "fmt"
-+ "os"
- "strconv"
- "strings"
- "time"
-@@ -15,6 +16,7 @@ type parser struct {
- context Key // Full key for the current hash in scope.
- currentKey string // Base key name for everything except hashes.
- pos Position // Current position in the TOML file.
-+ tomlNext bool
-
- ordered []Key // List of keys in the order that they appear in the TOML data.
-
-@@ -29,6 +31,8 @@ type keyInfo struct {
- }
-
- func parse(data string) (p *parser, err error) {
-+ _, tomlNext := os.LookupEnv("BURNTSUSHI_TOML_110")
-+
- defer func() {
- if r := recover(); r != nil {
- if pErr, ok := r.(ParseError); ok {
-@@ -41,9 +45,12 @@ func parse(data string) (p *parser, err error) {
- }()
-
- // Read over BOM; do this here as the lexer calls utf8.DecodeRuneInString()
-- // which mangles stuff.
-- if strings.HasPrefix(data, "\xff\xfe") || strings.HasPrefix(data, "\xfe\xff") {
-+ // which mangles stuff. UTF-16 BOM isn't strictly valid, but some tools add
-+ // it anyway.
-+ if strings.HasPrefix(data, "\xff\xfe") || strings.HasPrefix(data, "\xfe\xff") { // UTF-16
- data = data[2:]
-+ } else if strings.HasPrefix(data, "\xef\xbb\xbf") { // UTF-8
-+ data = data[3:]
- }
-
- // Examine first few bytes for NULL bytes; this probably means it's a UTF-16
-@@ -65,9 +72,10 @@ func parse(data string) (p *parser, err error) {
- p = &parser{
- keyInfo: make(map[string]keyInfo),
- mapping: make(map[string]interface{}),
-- lx: lex(data),
-+ lx: lex(data, tomlNext),
- ordered: make([]Key, 0),
- implicits: make(map[string]struct{}),
-+ tomlNext: tomlNext,
- }
- for {
- item := p.next()
-@@ -194,12 +202,12 @@ func (p *parser) topLevel(item item) {
- for i := range context {
- p.addImplicitContext(append(p.context, context[i:i+1]...))
- }
-+ p.ordered = append(p.ordered, p.context.add(p.currentKey))
-
- /// Set value.
- vItem := p.next()
- val, typ := p.value(vItem, false)
- p.set(p.currentKey, val, typ, vItem.pos)
-- p.ordered = append(p.ordered, p.context.add(p.currentKey))
-
- /// Remove the context we added (preserving any context from [tbl] lines).
- p.context = outerContext
-@@ -236,7 +244,7 @@ func (p *parser) value(it item, parentIsArray bool) (interface{}, tomlType) {
- case itemString:
- return p.replaceEscapes(it, it.val), p.typeOfPrimitive(it)
- case itemMultilineString:
-- return p.replaceEscapes(it, stripFirstNewline(p.stripEscapedNewlines(it.val))), p.typeOfPrimitive(it)
-+ return p.replaceEscapes(it, p.stripEscapedNewlines(stripFirstNewline(it.val))), p.typeOfPrimitive(it)
- case itemRawString:
- return it.val, p.typeOfPrimitive(it)
- case itemRawMultilineString:
-@@ -331,11 +339,17 @@ func (p *parser) valueFloat(it item) (interface{}, tomlType) {
- var dtTypes = []struct {
- fmt string
- zone *time.Location
-+ next bool
- }{
-- {time.RFC3339Nano, time.Local},
-- {"2006-01-02T15:04:05.999999999", internal.LocalDatetime},
-- {"2006-01-02", internal.LocalDate},
-- {"15:04:05.999999999", internal.LocalTime},
-+ {time.RFC3339Nano, time.Local, false},
-+ {"2006-01-02T15:04:05.999999999", internal.LocalDatetime, false},
-+ {"2006-01-02", internal.LocalDate, false},
-+ {"15:04:05.999999999", internal.LocalTime, false},
-+
-+ // tomlNext
-+ {"2006-01-02T15:04Z07:00", time.Local, true},
-+ {"2006-01-02T15:04", internal.LocalDatetime, true},
-+ {"15:04", internal.LocalTime, true},
- }
-
- func (p *parser) valueDatetime(it item) (interface{}, tomlType) {
-@@ -346,6 +360,9 @@ func (p *parser) valueDatetime(it item) (interface{}, tomlType) {
- err error
- )
- for _, dt := range dtTypes {
-+ if dt.next && !p.tomlNext {
-+ continue
-+ }
- t, err = time.ParseInLocation(dt.fmt, it.val, dt.zone)
- if err == nil {
- ok = true
-@@ -384,6 +401,7 @@ func (p *parser) valueArray(it item) (interface{}, tomlType) {
- //
- // Not entirely sure how to best store this; could use "key[0]",
- // "key[1]" notation, or maybe store it on the Array type?
-+ _ = types
- }
- return array, tomlArray
- }
-@@ -426,11 +444,11 @@ func (p *parser) valueInlineTable(it item, parentIsArray bool) (interface{}, tom
- for i := range context {
- p.addImplicitContext(append(p.context, context[i:i+1]...))
- }
-+ p.ordered = append(p.ordered, p.context.add(p.currentKey))
-
- /// Set the value.
- val, typ := p.value(p.next(), false)
- p.set(p.currentKey, val, typ, it.pos)
-- p.ordered = append(p.ordered, p.context.add(p.currentKey))
- hash[p.currentKey] = val
-
- /// Restore context.
-@@ -551,7 +569,6 @@ func (p *parser) addContext(key Key, array bool) {
- func (p *parser) set(key string, val interface{}, typ tomlType, pos Position) {
- p.setValue(key, val)
- p.setType(key, typ, pos)
--
- }
-
- // setValue sets the given key to the given value in the current context.
-@@ -632,14 +649,11 @@ func (p *parser) setType(key string, typ tomlType, pos Position) {
-
- // Implicit keys need to be created when tables are implied in "a.b.c.d = 1" and
- // "[a.b.c]" (the "a", "b", and "c" hashes are never created explicitly).
--func (p *parser) addImplicit(key Key) { p.implicits[key.String()] = struct{}{} }
--func (p *parser) removeImplicit(key Key) { delete(p.implicits, key.String()) }
--func (p *parser) isImplicit(key Key) bool { _, ok := p.implicits[key.String()]; return ok }
--func (p *parser) isArray(key Key) bool { return p.keyInfo[key.String()].tomlType == tomlArray }
--func (p *parser) addImplicitContext(key Key) {
-- p.addImplicit(key)
-- p.addContext(key, false)
--}
-+func (p *parser) addImplicit(key Key) { p.implicits[key.String()] = struct{}{} }
-+func (p *parser) removeImplicit(key Key) { delete(p.implicits, key.String()) }
-+func (p *parser) isImplicit(key Key) bool { _, ok := p.implicits[key.String()]; return ok }
-+func (p *parser) isArray(key Key) bool { return p.keyInfo[key.String()].tomlType == tomlArray }
-+func (p *parser) addImplicitContext(key Key) { p.addImplicit(key); p.addContext(key, false) }
-
- // current returns the full key name of the current context.
- func (p *parser) current() string {
-@@ -662,49 +676,54 @@ func stripFirstNewline(s string) string {
- return s
- }
-
--// Remove newlines inside triple-quoted strings if a line ends with "\".
-+// stripEscapedNewlines removes whitespace after line-ending backslashes in
-+// multiline strings.
-+//
-+// A line-ending backslash is an unescaped \ followed only by whitespace until
-+// the next newline. After a line-ending backslash, all whitespace is removed
-+// until the next non-whitespace character.
- func (p *parser) stripEscapedNewlines(s string) string {
-- split := strings.Split(s, "\n")
-- if len(split) < 1 {
-- return s
-- }
--
-- escNL := false // Keep track of the last non-blank line was escaped.
-- for i, line := range split {
-- line = strings.TrimRight(line, " \t\r")
--
-- if len(line) == 0 || line[len(line)-1] != '\\' {
-- split[i] = strings.TrimRight(split[i], "\r")
-- if !escNL && i != len(split)-1 {
-- split[i] += "\n"
-- }
-- continue
-+ var b strings.Builder
-+ var i int
-+ for {
-+ ix := strings.Index(s[i:], `\`)
-+ if ix < 0 {
-+ b.WriteString(s)
-+ return b.String()
- }
-+ i += ix
-
-- escBS := true
-- for j := len(line) - 1; j >= 0 && line[j] == '\\'; j-- {
-- escBS = !escBS
-+ if len(s) > i+1 && s[i+1] == '\\' {
-+ // Escaped backslash.
-+ i += 2
-+ continue
- }
-- if escNL {
-- line = strings.TrimLeft(line, " \t\r")
-+ // Scan until the next non-whitespace.
-+ j := i + 1
-+ whitespaceLoop:
-+ for ; j < len(s); j++ {
-+ switch s[j] {
-+ case ' ', '\t', '\r', '\n':
-+ default:
-+ break whitespaceLoop
-+ }
- }
-- escNL = !escBS
--
-- if escBS {
-- split[i] += "\n"
-+ if j == i+1 {
-+ // Not a whitespace escape.
-+ i++
- continue
- }
--
-- if i == len(split)-1 {
-- p.panicf("invalid escape: '\\ '")
-- }
--
-- split[i] = line[:len(line)-1] // Remove \
-- if len(split)-1 > i {
-- split[i+1] = strings.TrimLeft(split[i+1], " \t\r")
-+ if !strings.Contains(s[i:j], "\n") {
-+ // This is not a line-ending backslash.
-+ // (It's a bad escape sequence, but we can let
-+ // replaceEscapes catch it.)
-+ i++
-+ continue
- }
-+ b.WriteString(s[:i])
-+ s = s[j:]
-+ i = 0
- }
-- return strings.Join(split, "")
- }
-
- func (p *parser) replaceEscapes(it item, str string) string {
-@@ -743,12 +762,23 @@ func (p *parser) replaceEscapes(it item, str string) string {
- case 'r':
- replaced = append(replaced, rune(0x000D))
- r += 1
-+ case 'e':
-+ if p.tomlNext {
-+ replaced = append(replaced, rune(0x001B))
-+ r += 1
-+ }
- case '"':
- replaced = append(replaced, rune(0x0022))
- r += 1
- case '\\':
- replaced = append(replaced, rune(0x005C))
- r += 1
-+ case 'x':
-+ if p.tomlNext {
-+ escaped := p.asciiEscapeToUnicode(it, s[r+1:r+3])
-+ replaced = append(replaced, escaped)
-+ r += 3
-+ }
- case 'u':
- // At this point, we know we have a Unicode escape of the form
- // `uXXXX` at [r, r+5). (Because the lexer guarantees this
-diff --git a/vendor/github.com/containers/image/v5/docker/BUILD.bazel b/vendor/github.com/containers/image/v5/docker/BUILD.bazel
-index 10a11a56c..dc6d48f46 100644
---- a/vendor/github.com/containers/image/v5/docker/BUILD.bazel
-+++ b/vendor/github.com/containers/image/v5/docker/BUILD.bazel
-@@ -40,6 +40,7 @@ go_library(
- "//vendor/github.com/containers/image/v5/internal/useragent:go_default_library",
- "//vendor/github.com/containers/image/v5/manifest:go_default_library",
- "//vendor/github.com/containers/image/v5/pkg/blobinfocache/none:go_default_library",
-+ "//vendor/github.com/containers/image/v5/pkg/compression/types:go_default_library",
- "//vendor/github.com/containers/image/v5/pkg/docker/config:go_default_library",
- "//vendor/github.com/containers/image/v5/pkg/sysregistriesv2:go_default_library",
- "//vendor/github.com/containers/image/v5/pkg/tlsclientconfig:go_default_library",
-diff --git a/vendor/github.com/containers/image/v5/docker/distribution_error.go b/vendor/github.com/containers/image/v5/docker/distribution_error.go
-index 0fe915249..11b42c6e0 100644
---- a/vendor/github.com/containers/image/v5/docker/distribution_error.go
-+++ b/vendor/github.com/containers/image/v5/docker/distribution_error.go
-@@ -24,6 +24,7 @@ import (
-
- "github.com/docker/distribution/registry/api/errcode"
- dockerChallenge "github.com/docker/distribution/registry/client/auth/challenge"
-+ "golang.org/x/exp/slices"
- )
-
- // errNoErrorsInBody is returned when an HTTP response body parses to an empty
-@@ -105,7 +106,7 @@ func makeErrorList(err error) []error {
- }
-
- func mergeErrors(err1, err2 error) error {
-- return errcode.Errors(append(makeErrorList(err1), makeErrorList(err2)...))
-+ return errcode.Errors(append(slices.Clone(makeErrorList(err1)), makeErrorList(err2)...))
- }
-
- // handleErrorResponse returns error parsed from HTTP response for an
-diff --git a/vendor/github.com/containers/image/v5/docker/docker_client.go b/vendor/github.com/containers/image/v5/docker/docker_client.go
-index 570cca483..737c778a0 100644
---- a/vendor/github.com/containers/image/v5/docker/docker_client.go
-+++ b/vendor/github.com/containers/image/v5/docker/docker_client.go
-@@ -1,7 +1,6 @@
- package docker
-
- import (
-- "bytes"
- "context"
- "crypto/tls"
- "encoding/json"
-@@ -19,6 +18,7 @@ import (
-
- "github.com/containers/image/v5/docker/reference"
- "github.com/containers/image/v5/internal/iolimits"
-+ "github.com/containers/image/v5/internal/set"
- "github.com/containers/image/v5/internal/useragent"
- "github.com/containers/image/v5/manifest"
- "github.com/containers/image/v5/pkg/docker/config"
-@@ -121,6 +121,9 @@ type dockerClient struct {
- // Private state for detectProperties:
- detectPropertiesOnce sync.Once // detectPropertiesOnce is used to execute detectProperties() at most once.
- detectPropertiesError error // detectPropertiesError caches the initial error.
-+ // Private state for logResponseWarnings
-+ reportedWarningsLock sync.Mutex
-+ reportedWarnings *set.Set[string]
- }
-
- type authScope struct {
-@@ -161,17 +164,6 @@ func newBearerTokenFromJSONBlob(blob []byte) (*bearerToken, error) {
- return token, nil
- }
-
--// this is cloned from docker/go-connections because upstream docker has changed
--// it and make deps here fails otherwise.
--// We'll drop this once we upgrade to docker 1.13.x deps.
--func serverDefault() *tls.Config {
-- return &tls.Config{
-- // Avoid fallback to SSL protocols < TLS1.0
-- MinVersion: tls.VersionTLS10,
-- CipherSuites: tlsconfig.DefaultServerAcceptedCiphers,
-- }
--}
--
- // dockerCertDir returns a path to a directory to be consumed by tlsclientconfig.SetupCertificates() depending on ctx and hostPort.
- func dockerCertDir(sys *types.SystemContext, hostPort string) (string, error) {
- if sys != nil && sys.DockerCertPath != "" {
-@@ -254,7 +246,9 @@ func newDockerClient(sys *types.SystemContext, registry, reference string) (*doc
- if registry == dockerHostname {
- registry = dockerRegistry
- }
-- tlsClientConfig := serverDefault()
-+ tlsClientConfig := &tls.Config{
-+ CipherSuites: tlsconfig.DefaultServerAcceptedCiphers,
-+ }
-
- // It is undefined whether the host[:port] string for dockerHostname should be dockerHostname or dockerRegistry,
- // because docker/docker does not read the certs.d subdirectory at all in that case. We use the user-visible
-@@ -290,10 +284,11 @@ func newDockerClient(sys *types.SystemContext, registry, reference string) (*doc
- }
-
- return &dockerClient{
-- sys: sys,
-- registry: registry,
-- userAgent: userAgent,
-- tlsClientConfig: tlsClientConfig,
-+ sys: sys,
-+ registry: registry,
-+ userAgent: userAgent,
-+ tlsClientConfig: tlsClientConfig,
-+ reportedWarnings: set.New[string](),
- }, nil
- }
-
-@@ -368,6 +363,11 @@ func SearchRegistry(ctx context.Context, sys *types.SystemContext, registry, ima
- hostname := registry
- if registry == dockerHostname {
- hostname = dockerV1Hostname
-+ // A search term of library/foo does not find the library/foo image on the docker.io servers,
-+ // which is surprising - and that Docker is modifying the search term client-side this same way,
-+ // and it seems convenient to do the same thing.
-+ // Read more here: https://github.com/containers/image/pull/2133#issue-1928524334
-+ image = strings.TrimPrefix(image, "library/")
- }
-
- client, err := newDockerClient(sys, hostname, registry)
-@@ -633,9 +633,76 @@ func (c *dockerClient) makeRequestToResolvedURLOnce(ctx context.Context, method
- if err != nil {
- return nil, err
- }
-+ if warnings := res.Header.Values("Warning"); len(warnings) != 0 {
-+ c.logResponseWarnings(res, warnings)
-+ }
- return res, nil
- }
-
-+// logResponseWarnings logs warningHeaders from res, if any.
-+func (c *dockerClient) logResponseWarnings(res *http.Response, warningHeaders []string) {
-+ c.reportedWarningsLock.Lock()
-+ defer c.reportedWarningsLock.Unlock()
-+
-+ for _, header := range warningHeaders {
-+ warningString := parseRegistryWarningHeader(header)
-+ if warningString == "" {
-+ logrus.Debugf("Ignored Warning: header from registry: %q", header)
-+ } else {
-+ if !c.reportedWarnings.Contains(warningString) {
-+ c.reportedWarnings.Add(warningString)
-+ // Note that reportedWarnings is based only on warningString, so that we don’t
-+ // repeat the same warning for every request - but the warning includes the URL;
-+ // so it may not be specific to that URL.
-+ logrus.Warnf("Warning from registry (first encountered at %q): %q", res.Request.URL.Redacted(), warningString)
-+ } else {
-+ logrus.Debugf("Repeated warning from registry at %q: %q", res.Request.URL.Redacted(), warningString)
-+ }
-+ }
-+ }
-+}
-+
-+// parseRegistryWarningHeader parses a Warning: header per RFC 7234, limited to the warning
-+// values allowed by opencontainers/distribution-spec.
-+// It returns the warning string if the header has the expected format, or "" otherwise.
-+func parseRegistryWarningHeader(header string) string {
-+ const expectedPrefix = `299 - "`
-+ const expectedSuffix = `"`
-+
-+ // warning-value = warn-code SP warn-agent SP warn-text [ SP warn-date ]
-+ // distribution-spec requires warn-code=299, warn-agent="-", warn-date missing
-+ if !strings.HasPrefix(header, expectedPrefix) || !strings.HasSuffix(header, expectedSuffix) {
-+ return ""
-+ }
-+ header = header[len(expectedPrefix) : len(header)-len(expectedSuffix)]
-+
-+ // ”Recipients that process the value of a quoted-string MUST handle a quoted-pair
-+ // as if it were replaced by the octet following the backslash.”, so let’s do that…
-+ res := strings.Builder{}
-+ afterBackslash := false
-+ for _, c := range []byte(header) { // []byte because escaping is defined in terms of bytes, not Unicode code points
-+ switch {
-+ case c == 0x7F || (c < ' ' && c != '\t'):
-+ return "" // Control characters are forbidden
-+ case afterBackslash:
-+ res.WriteByte(c)
-+ afterBackslash = false
-+ case c == '"':
-+ // This terminates the warn-text and warn-date, forbidden by distribution-spec, follows,
-+ // or completely invalid input.
-+ return ""
-+ case c == '\\':
-+ afterBackslash = true
-+ default:
-+ res.WriteByte(c)
-+ }
-+ }
-+ if afterBackslash {
-+ return ""
-+ }
-+ return res.String()
-+}
-+
- // we're using the challenges from the /v2/ ping response and not the one from the destination
- // URL in this request because:
- //
-@@ -885,6 +952,8 @@ func (c *dockerClient) detectProperties(ctx context.Context) error {
- return c.detectPropertiesError
- }
-
-+// fetchManifest fetches a manifest for (the repo of ref) + tagOrDigest.
-+// The caller is responsible for ensuring tagOrDigest uses the expected format.
- func (c *dockerClient) fetchManifest(ctx context.Context, ref dockerReference, tagOrDigest string) ([]byte, string, error) {
- path := fmt.Sprintf(manifestPath, reference.Path(ref.ref), tagOrDigest)
- headers := map[string][]string{
-@@ -911,13 +980,10 @@ func (c *dockerClient) fetchManifest(ctx context.Context, ref dockerReference, t
- // This function can return nil reader when no url is supported by this function. In this case, the caller
- // should fallback to fetch the non-external blob (i.e. pull from the registry).
- func (c *dockerClient) getExternalBlob(ctx context.Context, urls []string) (io.ReadCloser, int64, error) {
-- var (
-- resp *http.Response
-- err error
-- )
- if len(urls) == 0 {
- return nil, 0, errors.New("internal error: getExternalBlob called with no URLs")
- }
-+ var remoteErrors []error
- for _, u := range urls {
- blobURL, err := url.Parse(u)
- if err != nil || (blobURL.Scheme != "http" && blobURL.Scheme != "https") {
-@@ -926,24 +992,28 @@ func (c *dockerClient) getExternalBlob(ctx context.Context, urls []string) (io.R
- // NOTE: we must not authenticate on additional URLs as those
- // can be abused to leak credentials or tokens. Please
- // refer to CVE-2020-15157 for more information.
-- resp, err = c.makeRequestToResolvedURL(ctx, http.MethodGet, blobURL, nil, nil, -1, noAuth, nil)
-- if err == nil {
-- if resp.StatusCode != http.StatusOK {
-- err = fmt.Errorf("error fetching external blob from %q: %d (%s)", u, resp.StatusCode, http.StatusText(resp.StatusCode))
-- logrus.Debug(err)
-- resp.Body.Close()
-- continue
-- }
-- break
-+ resp, err := c.makeRequestToResolvedURL(ctx, http.MethodGet, blobURL, nil, nil, -1, noAuth, nil)
-+ if err != nil {
-+ remoteErrors = append(remoteErrors, err)
-+ continue
- }
-+ if resp.StatusCode != http.StatusOK {
-+ err := fmt.Errorf("error fetching external blob from %q: %d (%s)", u, resp.StatusCode, http.StatusText(resp.StatusCode))
-+ remoteErrors = append(remoteErrors, err)
-+ logrus.Debug(err)
-+ resp.Body.Close()
-+ continue
-+ }
-+ return resp.Body, getBlobSize(resp), nil
- }
-- if resp == nil && err == nil {
-+ if remoteErrors == nil {
- return nil, 0, nil // fallback to non-external blob
- }
-- if err != nil {
-- return nil, 0, err
-+ err := fmt.Errorf("failed fetching external blob from all urls: %w", remoteErrors[0])
-+ for _, e := range remoteErrors[1:] {
-+ err = fmt.Errorf("%s, %w", err, e)
- }
-- return resp.Body, getBlobSize(resp), nil
-+ return nil, 0, err
- }
-
- func getBlobSize(resp *http.Response) int64 {
-@@ -967,6 +1037,9 @@ func (c *dockerClient) getBlob(ctx context.Context, ref dockerReference, info ty
- }
- }
-
-+ if err := info.Digest.Validate(); err != nil { // Make sure info.Digest.String() does not contain any unexpected characters
-+ return nil, 0, err
-+ }
- path := fmt.Sprintf(blobsPath, reference.Path(ref.ref), info.Digest.String())
- logrus.Debugf("Downloading %s", path)
- res, err := c.makeRequest(ctx, http.MethodGet, path, nil, nil, v2Auth, nil)
-@@ -1017,9 +1090,10 @@ func isManifestUnknownError(err error) bool {
- if errors.As(err, &e) && e.ErrorCode() == errcode.ErrorCodeUnknown && e.Message == "Not Found" {
- return true
- }
-- // ALSO registry.redhat.io as of October 2022
-+ // opencontainers/distribution-spec does not require the errcode.Error payloads to be used,
-+ // but specifies that the HTTP status must be 404.
- var unexpected *unexpectedHTTPResponseError
-- if errors.As(err, &unexpected) && unexpected.StatusCode == http.StatusNotFound && bytes.Contains(unexpected.Response, []byte("Not found")) {
-+ if errors.As(err, &unexpected) && unexpected.StatusCode == http.StatusNotFound {
- return true
- }
- return false
-@@ -1029,7 +1103,10 @@ func isManifestUnknownError(err error) bool {
- // digest in ref.
- // It returns (nil, nil) if the manifest does not exist.
- func (c *dockerClient) getSigstoreAttachmentManifest(ctx context.Context, ref dockerReference, digest digest.Digest) (*manifest.OCI1, error) {
-- tag := sigstoreAttachmentTag(digest)
-+ tag, err := sigstoreAttachmentTag(digest)
-+ if err != nil {
-+ return nil, err
-+ }
- sigstoreRef, err := reference.WithTag(reference.TrimNamed(ref.ref), tag)
- if err != nil {
- return nil, err
-@@ -1062,6 +1139,9 @@ func (c *dockerClient) getSigstoreAttachmentManifest(ctx context.Context, ref do
- // getExtensionsSignatures returns signatures from the X-Registry-Supports-Signatures API extension,
- // using the original data structures.
- func (c *dockerClient) getExtensionsSignatures(ctx context.Context, ref dockerReference, manifestDigest digest.Digest) (*extensionSignatureList, error) {
-+ if err := manifestDigest.Validate(); err != nil { // Make sure manifestDigest.String() does not contain any unexpected characters
-+ return nil, err
-+ }
- path := fmt.Sprintf(extensionsSignaturePath, reference.Path(ref.ref), manifestDigest)
- res, err := c.makeRequest(ctx, http.MethodGet, path, nil, nil, v2Auth, nil)
- if err != nil {
-@@ -1085,8 +1165,11 @@ func (c *dockerClient) getExtensionsSignatures(ctx context.Context, ref dockerRe
- }
-
- // sigstoreAttachmentTag returns a sigstore attachment tag for the specified digest.
--func sigstoreAttachmentTag(d digest.Digest) string {
-- return strings.Replace(d.String(), ":", "-", 1) + ".sig"
-+func sigstoreAttachmentTag(d digest.Digest) (string, error) {
-+ if err := d.Validate(); err != nil { // Make sure d.String() doesn’t contain any unexpected characters
-+ return "", err
-+ }
-+ return strings.Replace(d.String(), ":", "-", 1) + ".sig", nil
- }
-
- // Close removes resources associated with an initialized dockerClient, if any.
-diff --git a/vendor/github.com/containers/image/v5/docker/docker_image.go b/vendor/github.com/containers/image/v5/docker/docker_image.go
-index 42bbfd95e..4c80bb2b5 100644
---- a/vendor/github.com/containers/image/v5/docker/docker_image.go
-+++ b/vendor/github.com/containers/image/v5/docker/docker_image.go
-@@ -88,7 +88,12 @@ func GetRepositoryTags(ctx context.Context, sys *types.SystemContext, ref types.
- if err = json.NewDecoder(res.Body).Decode(&tagsHolder); err != nil {
- return nil, err
- }
-- tags = append(tags, tagsHolder.Tags...)
-+ for _, tag := range tagsHolder.Tags {
-+ if _, err := reference.WithTag(dr.ref, tag); err != nil { // Ensure the tag does not contain unexpected values
-+ return nil, fmt.Errorf("registry returned invalid tag %q: %w", tag, err)
-+ }
-+ tags = append(tags, tag)
-+ }
-
- link := res.Header.Get("Link")
- if link == "" {
-@@ -123,6 +128,9 @@ func GetDigest(ctx context.Context, sys *types.SystemContext, ref types.ImageRef
- if !ok {
- return "", errors.New("ref must be a dockerReference")
- }
-+ if dr.isUnknownDigest {
-+ return "", fmt.Errorf("docker: reference %q is for unknown digest case; cannot get digest", dr.StringWithinTransport())
-+ }
-
- tagOrDigest, err := dr.tagOrDigest()
- if err != nil {
-diff --git a/vendor/github.com/containers/image/v5/docker/docker_image_dest.go b/vendor/github.com/containers/image/v5/docker/docker_image_dest.go
-index 44e2aea23..a29150eb7 100644
---- a/vendor/github.com/containers/image/v5/docker/docker_image_dest.go
-+++ b/vendor/github.com/containers/image/v5/docker/docker_image_dest.go
-@@ -27,6 +27,7 @@ import (
- "github.com/containers/image/v5/internal/uploadreader"
- "github.com/containers/image/v5/manifest"
- "github.com/containers/image/v5/pkg/blobinfocache/none"
-+ compressiontypes "github.com/containers/image/v5/pkg/compression/types"
- "github.com/containers/image/v5/types"
- "github.com/docker/distribution/registry/api/errcode"
- v2 "github.com/docker/distribution/registry/api/v2"
-@@ -137,7 +138,7 @@ func (d *dockerImageDestination) PutBlobWithOptions(ctx context.Context, stream
- // If requested, precompute the blob digest to prevent uploading layers that already exist on the registry.
- // This functionality is particularly useful when BlobInfoCache has not been populated with compressed digests,
- // the source blob is uncompressed, and the destination blob is being compressed "on the fly".
-- if inputInfo.Digest == "" && d.c.sys.DockerRegistryPushPrecomputeDigests {
-+ if inputInfo.Digest == "" && d.c.sys != nil && d.c.sys.DockerRegistryPushPrecomputeDigests {
- logrus.Debugf("Precomputing digest layer for %s", reference.Path(d.ref.ref))
- streamCopy, cleanup, err := streamdigest.ComputeBlobInfo(d.c.sys, stream, &inputInfo)
- if err != nil {
-@@ -229,6 +230,9 @@ func (d *dockerImageDestination) PutBlobWithOptions(ctx context.Context, stream
- // If the destination does not contain the blob, or it is unknown, blobExists ordinarily returns (false, -1, nil);
- // it returns a non-nil error only on an unexpected failure.
- func (d *dockerImageDestination) blobExists(ctx context.Context, repo reference.Named, digest digest.Digest, extraScope *authScope) (bool, int64, error) {
-+ if err := digest.Validate(); err != nil { // Make sure digest.String() does not contain any unexpected characters
-+ return false, -1, err
-+ }
- checkPath := fmt.Sprintf(blobsPath, reference.Path(repo), digest.String())
- logrus.Debugf("Checking %s", checkPath)
- res, err := d.c.makeRequest(ctx, http.MethodHead, checkPath, nil, nil, v2Auth, extraScope)
-@@ -311,6 +315,13 @@ func (d *dockerImageDestination) tryReusingExactBlob(ctx context.Context, info t
- return false, private.ReusedBlob{}, nil
- }
-
-+func optionalCompressionName(algo *compressiontypes.Algorithm) string {
-+ if algo != nil {
-+ return algo.Name()
-+ }
-+ return "nil"
-+}
-+
- // TryReusingBlobWithOptions checks whether the transport already contains, or can efficiently reuse, a blob, and if so, applies it to the current destination
- // (e.g. if the blob is a filesystem layer, this signifies that the changes it describes need to be applied again when composing a filesystem tree).
- // info.Digest must not be empty.
-@@ -321,34 +332,74 @@ func (d *dockerImageDestination) TryReusingBlobWithOptions(ctx context.Context,
- return false, private.ReusedBlob{}, errors.New("Can not check for a blob with unknown digest")
- }
-
-- // First, check whether the blob happens to already exist at the destination.
-- haveBlob, reusedInfo, err := d.tryReusingExactBlob(ctx, info, options.Cache)
-- if err != nil {
-- return false, private.ReusedBlob{}, err
-- }
-- if haveBlob {
-- return true, reusedInfo, nil
-+ if impl.OriginalCandidateMatchesTryReusingBlobOptions(options) {
-+ // First, check whether the blob happens to already exist at the destination.
-+ haveBlob, reusedInfo, err := d.tryReusingExactBlob(ctx, info, options.Cache)
-+ if err != nil {
-+ return false, private.ReusedBlob{}, err
-+ }
-+ if haveBlob {
-+ return true, reusedInfo, nil
-+ }
-+ } else {
-+ logrus.Debugf("Ignoring exact blob match, compression %s does not match required %s or MIME types %#v",
-+ optionalCompressionName(options.OriginalCompression), optionalCompressionName(options.RequiredCompression), options.PossibleManifestFormats)
- }
-
- // Then try reusing blobs from other locations.
- candidates := options.Cache.CandidateLocations2(d.ref.Transport(), bicTransportScope(d.ref), info.Digest, options.CanSubstitute)
- for _, candidate := range candidates {
-- candidateRepo, err := parseBICLocationReference(candidate.Location)
-+ var err error
-+ compressionOperation, compressionAlgorithm, err := blobinfocache.OperationAndAlgorithmForCompressor(candidate.CompressorName)
- if err != nil {
-- logrus.Debugf("Error parsing BlobInfoCache location reference: %s", err)
-+ logrus.Debugf("OperationAndAlgorithmForCompressor Failed: %v", err)
- continue
- }
-- if candidate.CompressorName != blobinfocache.Uncompressed {
-- logrus.Debugf("Trying to reuse cached location %s compressed with %s in %s", candidate.Digest.String(), candidate.CompressorName, candidateRepo.Name())
-- } else {
-- logrus.Debugf("Trying to reuse cached location %s with no compression in %s", candidate.Digest.String(), candidateRepo.Name())
-+ var candidateRepo reference.Named
-+ if !candidate.UnknownLocation {
-+ candidateRepo, err = parseBICLocationReference(candidate.Location)
-+ if err != nil {
-+ logrus.Debugf("Error parsing BlobInfoCache location reference: %s", err)
-+ continue
-+ }
- }
--
-- // Sanity checks:
-- if reference.Domain(candidateRepo) != reference.Domain(d.ref.ref) {
-- logrus.Debugf("... Internal error: domain %s does not match destination %s", reference.Domain(candidateRepo), reference.Domain(d.ref.ref))
-+ if !impl.CandidateMatchesTryReusingBlobOptions(options, compressionAlgorithm) {
-+ if !candidate.UnknownLocation {
-+ logrus.Debugf("Ignoring candidate blob %s in %s, compression %s does not match required %s or MIME types %#v", candidate.Digest.String(), candidateRepo.Name(),
-+ optionalCompressionName(compressionAlgorithm), optionalCompressionName(options.RequiredCompression), options.PossibleManifestFormats)
-+ } else {
-+ logrus.Debugf("Ignoring candidate blob %s with no known location, compression %s does not match required %s or MIME types %#v", candidate.Digest.String(),
-+ optionalCompressionName(compressionAlgorithm), optionalCompressionName(options.RequiredCompression), options.PossibleManifestFormats)
-+ }
- continue
- }
-+ if !candidate.UnknownLocation {
-+ if candidate.CompressorName != blobinfocache.Uncompressed {
-+ logrus.Debugf("Trying to reuse blob with cached digest %s compressed with %s in destination repo %s", candidate.Digest.String(), candidate.CompressorName, candidateRepo.Name())
-+ } else {
-+ logrus.Debugf("Trying to reuse blob with cached digest %s in destination repo %s", candidate.Digest.String(), candidateRepo.Name())
-+ }
-+ // Sanity checks:
-+ if reference.Domain(candidateRepo) != reference.Domain(d.ref.ref) {
-+ // OCI distribution spec 1.1 allows mounting blobs without specifying the source repo
-+ // (the "from" parameter); in that case we might try to use these candidates as well.
-+ //
-+ // OTOH that would mean we can’t do the “blobExists” check, and if there is no match
-+ // we could get an upload request that we would have to cancel.
-+ logrus.Debugf("... Internal error: domain %s does not match destination %s", reference.Domain(candidateRepo), reference.Domain(d.ref.ref))
-+ continue
-+ }
-+ } else {
-+ if candidate.CompressorName != blobinfocache.Uncompressed {
-+ logrus.Debugf("Trying to reuse blob with cached digest %s compressed with %s with no location match, checking current repo", candidate.Digest.String(), candidate.CompressorName)
-+ } else {
-+ logrus.Debugf("Trying to reuse blob with cached digest %s in destination repo with no location match, checking current repo", candidate.Digest.String())
-+ }
-+ // This digest is a known variant of this blob but we don’t
-+ // have a recorded location in this registry, let’s try looking
-+ // for it in the current repo.
-+ candidateRepo = reference.TrimNamed(d.ref.ref)
-+ }
- if candidateRepo.Name() == d.ref.ref.Name() && candidate.Digest == info.Digest {
- logrus.Debug("... Already tried the primary destination")
- continue
-@@ -388,12 +439,6 @@ func (d *dockerImageDestination) TryReusingBlobWithOptions(ctx context.Context,
-
- options.Cache.RecordKnownLocation(d.ref.Transport(), bicTransportScope(d.ref), candidate.Digest, newBICLocationReference(d.ref))
-
-- compressionOperation, compressionAlgorithm, err := blobinfocache.OperationAndAlgorithmForCompressor(candidate.CompressorName)
-- if err != nil {
-- logrus.Debugf("... Failed: %v", err)
-- continue
-- }
--
- return true, private.ReusedBlob{
- Digest: candidate.Digest,
- Size: size,
-@@ -413,12 +458,21 @@ func (d *dockerImageDestination) TryReusingBlobWithOptions(ctx context.Context,
- // but may accept a different manifest type, the returned error must be an ManifestTypeRejectedError.
- func (d *dockerImageDestination) PutManifest(ctx context.Context, m []byte, instanceDigest *digest.Digest) error {
- var refTail string
-- if instanceDigest != nil {
-+ // If d.ref.isUnknownDigest=true, then we push without a tag, so get the
-+ // digest that will be used
-+ if d.ref.isUnknownDigest {
-+ digest, err := manifest.Digest(m)
-+ if err != nil {
-+ return err
-+ }
-+ refTail = digest.String()
-+ } else if instanceDigest != nil {
- // If the instanceDigest is provided, then use it as the refTail, because the reference,
- // whether it includes a tag or a digest, refers to the list as a whole, and not this
- // particular instance.
- refTail = instanceDigest.String()
- // Double-check that the manifest we've been given matches the digest we've been given.
-+ // This also validates the format of instanceDigest.
- matches, err := manifest.MatchesDigest(m, *instanceDigest)
- if err != nil {
- return fmt.Errorf("digesting manifest in PutManifest: %w", err)
-@@ -585,11 +639,13 @@ func (d *dockerImageDestination) putSignaturesToLookaside(signatures []signature
-
- // NOTE: Keep this in sync with docs/signature-protocols.md!
- for i, signature := range signatures {
-- sigURL := lookasideStorageURL(d.c.signatureBase, manifestDigest, i)
-- err := d.putOneSignature(sigURL, signature)
-+ sigURL, err := lookasideStorageURL(d.c.signatureBase, manifestDigest, i)
- if err != nil {
- return err
- }
-+ if err := d.putOneSignature(sigURL, signature); err != nil {
-+ return err
-+ }
- }
- // Remove any other signatures, if present.
- // We stop at the first missing signature; if a previous deleting loop aborted
-@@ -597,7 +653,10 @@ func (d *dockerImageDestination) putSignaturesToLookaside(signatures []signature
- // is enough for dockerImageSource to stop looking for other signatures, so that
- // is sufficient.
- for i := len(signatures); ; i++ {
-- sigURL := lookasideStorageURL(d.c.signatureBase, manifestDigest, i)
-+ sigURL, err := lookasideStorageURL(d.c.signatureBase, manifestDigest, i)
-+ if err != nil {
-+ return err
-+ }
- missing, err := d.c.deleteOneSignature(sigURL)
- if err != nil {
- return err
-@@ -668,6 +727,10 @@ func (d *dockerImageDestination) putSignaturesToSigstoreAttachments(ctx context.
- }
- }
-
-+ // To make sure we can safely append to the slices of ociManifest, without adding a remote dependency on the code that creates it.
-+ ociManifest.Layers = slices.Clone(ociManifest.Layers)
-+ // We don’t need to ^^^ for ociConfig.RootFS.DiffIDs because we have created it empty ourselves, and json.Unmarshal is documented to append() to
-+ // the slice in the original object (or in a newly allocated object).
- for _, sig := range signatures {
- mimeType := sig.UntrustedMIMEType()
- payloadBlob := sig.UntrustedPayload()
-@@ -724,8 +787,12 @@ func (d *dockerImageDestination) putSignaturesToSigstoreAttachments(ctx context.
- if err != nil {
- return err
- }
-+ attachmentTag, err := sigstoreAttachmentTag(manifestDigest)
-+ if err != nil {
-+ return err
-+ }
- logrus.Debugf("Uploading sigstore attachment manifest")
-- return d.uploadManifest(ctx, manifestBlob, sigstoreAttachmentTag(manifestDigest))
-+ return d.uploadManifest(ctx, manifestBlob, attachmentTag)
- }
-
- func layerMatchesSigstoreSignature(layer imgspecv1.Descriptor, mimeType string,
-@@ -841,6 +908,7 @@ func (d *dockerImageDestination) putSignaturesToAPIExtension(ctx context.Context
- return err
- }
-
-+ // manifestDigest is known to be valid because it was not rejected by getExtensionsSignatures above.
- path := fmt.Sprintf(extensionsSignaturePath, reference.Path(d.ref.ref), manifestDigest.String())
- res, err := d.c.makeRequest(ctx, http.MethodPut, path, nil, bytes.NewReader(body), v2Auth, nil)
- if err != nil {
-diff --git a/vendor/github.com/containers/image/v5/docker/docker_image_src.go b/vendor/github.com/containers/image/v5/docker/docker_image_src.go
-index 231d5d212..274cd6dd2 100644
---- a/vendor/github.com/containers/image/v5/docker/docker_image_src.go
-+++ b/vendor/github.com/containers/image/v5/docker/docker_image_src.go
-@@ -38,8 +38,8 @@ type dockerImageSource struct {
- impl.DoesNotAffectLayerInfosForCopy
- stubs.ImplementsGetBlobAt
-
-- logicalRef dockerReference // The reference the user requested.
-- physicalRef dockerReference // The actual reference we are accessing (possibly a mirror)
-+ logicalRef dockerReference // The reference the user requested. This must satisfy !isUnknownDigest
-+ physicalRef dockerReference // The actual reference we are accessing (possibly a mirror). This must satisfy !isUnknownDigest
- c *dockerClient
- // State
- cachedManifest []byte // nil if not loaded yet
-@@ -48,7 +48,12 @@ type dockerImageSource struct {
-
- // newImageSource creates a new ImageSource for the specified image reference.
- // The caller must call .Close() on the returned ImageSource.
-+// The caller must ensure !ref.isUnknownDigest.
- func newImageSource(ctx context.Context, sys *types.SystemContext, ref dockerReference) (*dockerImageSource, error) {
-+ if ref.isUnknownDigest {
-+ return nil, fmt.Errorf("reading images from docker: reference %q without a tag or digest is not supported", ref.StringWithinTransport())
-+ }
-+
- registryConfig, err := loadRegistryConfiguration(sys)
- if err != nil {
- return nil, err
-@@ -121,7 +126,7 @@ func newImageSource(ctx context.Context, sys *types.SystemContext, ref dockerRef
- // The caller must call .Close() on the returned ImageSource.
- func newImageSourceAttempt(ctx context.Context, sys *types.SystemContext, logicalRef dockerReference, pullSource sysregistriesv2.PullSource,
- registryConfig *registryConfiguration) (*dockerImageSource, error) {
-- physicalRef, err := newReference(pullSource.Reference)
-+ physicalRef, err := newReference(pullSource.Reference, false)
- if err != nil {
- return nil, err
- }
-@@ -189,6 +194,9 @@ func simplifyContentType(contentType string) string {
- // this never happens if the primary manifest is not a manifest list (e.g. if the source never returns manifest lists).
- func (s *dockerImageSource) GetManifest(ctx context.Context, instanceDigest *digest.Digest) ([]byte, string, error) {
- if instanceDigest != nil {
-+ if err := instanceDigest.Validate(); err != nil { // Make sure instanceDigest.String() does not contain any unexpected characters
-+ return nil, "", err
-+ }
- return s.fetchManifest(ctx, instanceDigest.String())
- }
- err := s.ensureManifestIsLoaded(ctx)
-@@ -198,6 +206,8 @@ func (s *dockerImageSource) GetManifest(ctx context.Context, instanceDigest *dig
- return s.cachedManifest, s.cachedManifestMIMEType, nil
- }
-
-+// fetchManifest fetches a manifest for tagOrDigest.
-+// The caller is responsible for ensuring tagOrDigest uses the expected format.
- func (s *dockerImageSource) fetchManifest(ctx context.Context, tagOrDigest string) ([]byte, string, error) {
- return s.c.fetchManifest(ctx, s.physicalRef, tagOrDigest)
- }
-@@ -347,6 +357,9 @@ func (s *dockerImageSource) GetBlobAt(ctx context.Context, info types.BlobInfo,
- return nil, nil, fmt.Errorf("external URLs not supported with GetBlobAt")
- }
-
-+ if err := info.Digest.Validate(); err != nil { // Make sure info.Digest.String() does not contain any unexpected characters
-+ return nil, nil, err
-+ }
- path := fmt.Sprintf(blobsPath, reference.Path(s.physicalRef.ref), info.Digest.String())
- logrus.Debugf("Downloading %s", path)
- res, err := s.c.makeRequest(ctx, http.MethodGet, path, headers, nil, v2Auth, nil)
-@@ -457,7 +470,10 @@ func (s *dockerImageSource) getSignaturesFromLookaside(ctx context.Context, inst
- return nil, fmt.Errorf("server provided %d signatures, assuming that's unreasonable and a server error", maxLookasideSignatures)
- }
-
-- sigURL := lookasideStorageURL(s.c.signatureBase, manifestDigest, i)
-+ sigURL, err := lookasideStorageURL(s.c.signatureBase, manifestDigest, i)
-+ if err != nil {
-+ return nil, err
-+ }
- signature, missing, err := s.getOneSignature(ctx, sigURL)
- if err != nil {
- return nil, err
-@@ -591,6 +607,10 @@ func (s *dockerImageSource) getSignaturesFromSigstoreAttachments(ctx context.Con
-
- // deleteImage deletes the named image from the registry, if supported.
- func deleteImage(ctx context.Context, sys *types.SystemContext, ref dockerReference) error {
-+ if ref.isUnknownDigest {
-+ return fmt.Errorf("Docker reference without a tag or digest cannot be deleted")
-+ }
-+
- registryConfig, err := loadRegistryConfiguration(sys)
- if err != nil {
- return err
-@@ -651,7 +671,10 @@ func deleteImage(ctx context.Context, sys *types.SystemContext, ref dockerRefere
- }
-
- for i := 0; ; i++ {
-- sigURL := lookasideStorageURL(c.signatureBase, manifestDigest, i)
-+ sigURL, err := lookasideStorageURL(c.signatureBase, manifestDigest, i)
-+ if err != nil {
-+ return err
-+ }
- missing, err := c.deleteOneSignature(sigURL)
- if err != nil {
- return err
-diff --git a/vendor/github.com/containers/image/v5/docker/docker_transport.go b/vendor/github.com/containers/image/v5/docker/docker_transport.go
-index 6ae849159..1c89302f4 100644
---- a/vendor/github.com/containers/image/v5/docker/docker_transport.go
-+++ b/vendor/github.com/containers/image/v5/docker/docker_transport.go
-@@ -12,6 +12,11 @@ import (
- "github.com/containers/image/v5/types"
- )
-
-+// UnknownDigestSuffix can be appended to a reference when the caller
-+// wants to push an image without a tag or digest.
-+// NewReferenceUnknownDigest() is called when this const is detected.
-+const UnknownDigestSuffix = "@@unknown-digest@@"
-+
- func init() {
- transports.Register(Transport)
- }
-@@ -43,7 +48,8 @@ func (t dockerTransport) ValidatePolicyConfigurationScope(scope string) error {
-
- // dockerReference is an ImageReference for Docker images.
- type dockerReference struct {
-- ref reference.Named // By construction we know that !reference.IsNameOnly(ref)
-+ ref reference.Named // By construction we know that !reference.IsNameOnly(ref) unless isUnknownDigest=true
-+ isUnknownDigest bool
- }
-
- // ParseReference converts a string, which should not start with the ImageTransport.Name prefix, into an Docker ImageReference.
-@@ -51,23 +57,46 @@ func ParseReference(refString string) (types.ImageReference, error) {
- if !strings.HasPrefix(refString, "//") {
- return nil, fmt.Errorf("docker: image reference %s does not start with //", refString)
- }
-+ // Check if ref has UnknownDigestSuffix suffixed to it
-+ unknownDigest := false
-+ if strings.HasSuffix(refString, UnknownDigestSuffix) {
-+ unknownDigest = true
-+ refString = strings.TrimSuffix(refString, UnknownDigestSuffix)
-+ }
- ref, err := reference.ParseNormalizedNamed(strings.TrimPrefix(refString, "//"))
- if err != nil {
- return nil, err
- }
-+
-+ if unknownDigest {
-+ if !reference.IsNameOnly(ref) {
-+ return nil, fmt.Errorf("docker: image reference %q has unknown digest set but it contains either a tag or digest", ref.String()+UnknownDigestSuffix)
-+ }
-+ return NewReferenceUnknownDigest(ref)
-+ }
-+
- ref = reference.TagNameOnly(ref)
- return NewReference(ref)
- }
-
- // NewReference returns a Docker reference for a named reference. The reference must satisfy !reference.IsNameOnly().
- func NewReference(ref reference.Named) (types.ImageReference, error) {
-- return newReference(ref)
-+ return newReference(ref, false)
-+}
-+
-+// NewReferenceUnknownDigest returns a Docker reference for a named reference, which can be used to write images without setting
-+// a tag on the registry. The reference must satisfy reference.IsNameOnly()
-+func NewReferenceUnknownDigest(ref reference.Named) (types.ImageReference, error) {
-+ return newReference(ref, true)
- }
-
- // newReference returns a dockerReference for a named reference.
--func newReference(ref reference.Named) (dockerReference, error) {
-- if reference.IsNameOnly(ref) {
-- return dockerReference{}, fmt.Errorf("Docker reference %s has neither a tag nor a digest", reference.FamiliarString(ref))
-+func newReference(ref reference.Named, unknownDigest bool) (dockerReference, error) {
-+ if reference.IsNameOnly(ref) && !unknownDigest {
-+ return dockerReference{}, fmt.Errorf("Docker reference %s is not for an unknown digest case; tag or digest is needed", reference.FamiliarString(ref))
-+ }
-+ if !reference.IsNameOnly(ref) && unknownDigest {
-+ return dockerReference{}, fmt.Errorf("Docker reference %s is for an unknown digest case but reference has a tag or digest", reference.FamiliarString(ref))
- }
- // A github.com/distribution/reference value can have a tag and a digest at the same time!
- // The docker/distribution API does not really support that (we can’t ask for an image with a specific
-@@ -81,7 +110,8 @@ func newReference(ref reference.Named) (dockerReference, error) {
- }
-
- return dockerReference{
-- ref: ref,
-+ ref: ref,
-+ isUnknownDigest: unknownDigest,
- }, nil
- }
-
-@@ -95,7 +125,11 @@ func (ref dockerReference) Transport() types.ImageTransport {
- // e.g. default attribute values omitted by the user may be filled in the return value, or vice versa.
- // WARNING: Do not use the return value in the UI to describe an image, it does not contain the Transport().Name() prefix.
- func (ref dockerReference) StringWithinTransport() string {
-- return "//" + reference.FamiliarString(ref.ref)
-+ famString := "//" + reference.FamiliarString(ref.ref)
-+ if ref.isUnknownDigest {
-+ return famString + UnknownDigestSuffix
-+ }
-+ return famString
- }
-
- // DockerReference returns a Docker reference associated with this reference
-@@ -113,6 +147,9 @@ func (ref dockerReference) DockerReference() reference.Named {
- // not required/guaranteed that it will be a valid input to Transport().ParseReference().
- // Returns "" if configuration identities for these references are not supported.
- func (ref dockerReference) PolicyConfigurationIdentity() string {
-+ if ref.isUnknownDigest {
-+ return ref.ref.Name()
-+ }
- res, err := policyconfiguration.DockerReferenceIdentity(ref.ref)
- if res == "" || err != nil { // Coverage: Should never happen, NewReference above should refuse values which could cause a failure.
- panic(fmt.Sprintf("Internal inconsistency: policyconfiguration.DockerReferenceIdentity returned %#v, %v", res, err))
-@@ -126,7 +163,13 @@ func (ref dockerReference) PolicyConfigurationIdentity() string {
- // It is STRONGLY recommended for the first element, if any, to be a prefix of PolicyConfigurationIdentity(),
- // and each following element to be a prefix of the element preceding it.
- func (ref dockerReference) PolicyConfigurationNamespaces() []string {
-- return policyconfiguration.DockerReferenceNamespaces(ref.ref)
-+ namespaces := policyconfiguration.DockerReferenceNamespaces(ref.ref)
-+ if ref.isUnknownDigest {
-+ if len(namespaces) != 0 && namespaces[0] == ref.ref.Name() {
-+ namespaces = namespaces[1:]
-+ }
-+ }
-+ return namespaces
- }
-
- // NewImage returns a types.ImageCloser for this reference, possibly specialized for this ImageTransport.
-@@ -163,6 +206,10 @@ func (ref dockerReference) tagOrDigest() (string, error) {
- if ref, ok := ref.ref.(reference.NamedTagged); ok {
- return ref.Tag(), nil
- }
-+
-+ if ref.isUnknownDigest {
-+ return "", fmt.Errorf("Docker reference %q is for an unknown digest case, has neither a digest nor a tag", reference.FamiliarString(ref.ref))
-+ }
- // This should not happen, NewReference above refuses reference.IsNameOnly values.
- return "", fmt.Errorf("Internal inconsistency: Reference %s unexpectedly has neither a digest nor a tag", reference.FamiliarString(ref.ref))
- }
-diff --git a/vendor/github.com/containers/image/v5/docker/errors.go b/vendor/github.com/containers/image/v5/docker/errors.go
-index 2caa10d7d..4392f9d18 100644
---- a/vendor/github.com/containers/image/v5/docker/errors.go
-+++ b/vendor/github.com/containers/image/v5/docker/errors.go
-@@ -47,7 +47,12 @@ func httpResponseToError(res *http.Response, context string) error {
- }
-
- // registryHTTPResponseToError creates a Go error from an HTTP error response of a docker/distribution
--// registry
-+// registry.
-+//
-+// WARNING: The OCI distribution spec says
-+// “A `4XX` response code from the registry MAY return a body in any format.”; but if it is
-+// JSON, it MUST use the errcode.Error structure.
-+// So, callers should primarily decide based on HTTP StatusCode, not based on error type here.
- func registryHTTPResponseToError(res *http.Response) error {
- err := handleErrorResponse(res)
- // len(errs) == 0 should never be returned by handleErrorResponse; if it does, we don't modify it and let the caller report it as is.
-@@ -83,7 +88,7 @@ func registryHTTPResponseToError(res *http.Response) error {
- response = response[:50] + "..."
- }
- // %.0w makes e visible to error.Unwrap() without including any text
-- err = fmt.Errorf("StatusCode: %d, %s%.0w", e.StatusCode, response, e)
-+ err = fmt.Errorf("StatusCode: %d, %q%.0w", e.StatusCode, response, e)
- case errcode.Error:
- // e.Error() is fmt.Sprintf("%s: %s", e.Code.Error(), e.Message, which is usually
- // rather redundant. So reword it without using e.Code.Error() if e.Message is the default.
-diff --git a/vendor/github.com/containers/image/v5/docker/policyconfiguration/naming.go b/vendor/github.com/containers/image/v5/docker/policyconfiguration/naming.go
-index 5d42c3870..e1f1f1f2b 100644
---- a/vendor/github.com/containers/image/v5/docker/policyconfiguration/naming.go
-+++ b/vendor/github.com/containers/image/v5/docker/policyconfiguration/naming.go
-@@ -40,7 +40,7 @@ func DockerReferenceNamespaces(ref reference.Named) []string {
- // then in its parent "docker.io/library"; in none of "busybox",
- // un-namespaced "library" nor in "" supposedly implicitly representing "library/".
- //
-- // ref.FullName() == ref.Hostname() + "/" + ref.RemoteName(), so the last
-+ // ref.Name() == ref.Domain() + "/" + ref.Path(), so the last
- // iteration matches the host name (for any namespace).
- res := []string{}
- name := ref.Name()
-diff --git a/vendor/github.com/containers/image/v5/docker/registries_d.go b/vendor/github.com/containers/image/v5/docker/registries_d.go
-index c7b884ab3..9d651d9bd 100644
---- a/vendor/github.com/containers/image/v5/docker/registries_d.go
-+++ b/vendor/github.com/containers/image/v5/docker/registries_d.go
-@@ -286,8 +286,11 @@ func (ns registryNamespace) signatureTopLevel(write bool) string {
- // lookasideStorageURL returns an URL usable for accessing signature index in base with known manifestDigest.
- // base is not nil from the caller
- // NOTE: Keep this in sync with docs/signature-protocols.md!
--func lookasideStorageURL(base lookasideStorageBase, manifestDigest digest.Digest, index int) *url.URL {
-+func lookasideStorageURL(base lookasideStorageBase, manifestDigest digest.Digest, index int) (*url.URL, error) {
-+ if err := manifestDigest.Validate(); err != nil { // digest.Digest.Hex() panics on failure, and could possibly result in a path with ../, so validate explicitly.
-+ return nil, err
-+ }
- sigURL := *base
- sigURL.Path = fmt.Sprintf("%s@%s=%s/signature-%d", sigURL.Path, manifestDigest.Algorithm(), manifestDigest.Hex(), index+1)
-- return &sigURL
-+ return &sigURL, nil
- }
-diff --git a/vendor/github.com/containers/image/v5/image/BUILD.bazel b/vendor/github.com/containers/image/v5/image/BUILD.bazel
-index 38b742303..256bebf02 100644
---- a/vendor/github.com/containers/image/v5/image/BUILD.bazel
-+++ b/vendor/github.com/containers/image/v5/image/BUILD.bazel
-@@ -12,6 +12,8 @@ go_library(
- visibility = ["//visibility:public"],
- deps = [
- "//vendor/github.com/containers/image/v5/internal/image:go_default_library",
-+ "//vendor/github.com/containers/image/v5/internal/private:go_default_library",
-+ "//vendor/github.com/containers/image/v5/internal/unparsedimage:go_default_library",
- "//vendor/github.com/containers/image/v5/types:go_default_library",
- "//vendor/github.com/opencontainers/go-digest:go_default_library",
- ],
-diff --git a/vendor/github.com/containers/image/v5/image/unparsed.go b/vendor/github.com/containers/image/v5/image/unparsed.go
-index 123f6ce6f..f2ebb929a 100644
---- a/vendor/github.com/containers/image/v5/image/unparsed.go
-+++ b/vendor/github.com/containers/image/v5/image/unparsed.go
-@@ -2,6 +2,8 @@ package image
-
- import (
- "github.com/containers/image/v5/internal/image"
-+ "github.com/containers/image/v5/internal/private"
-+ "github.com/containers/image/v5/internal/unparsedimage"
- "github.com/containers/image/v5/types"
- "github.com/opencontainers/go-digest"
- )
-@@ -17,3 +19,23 @@ type UnparsedImage = image.UnparsedImage
- func UnparsedInstance(src types.ImageSource, instanceDigest *digest.Digest) *UnparsedImage {
- return image.UnparsedInstance(src, instanceDigest)
- }
-+
-+// unparsedWithRef wraps a private.UnparsedImage, claiming another replacementRef
-+type unparsedWithRef struct {
-+ private.UnparsedImage
-+ ref types.ImageReference
-+}
-+
-+func (uwr *unparsedWithRef) Reference() types.ImageReference {
-+ return uwr.ref
-+}
-+
-+// UnparsedInstanceWithReference returns a types.UnparsedImage for wrappedInstance which claims to be a replacementRef.
-+// This is useful for combining image data with other reference values, e.g. to check signatures on a locally-pulled image
-+// based on a remote-registry policy.
-+func UnparsedInstanceWithReference(wrappedInstance types.UnparsedImage, replacementRef types.ImageReference) types.UnparsedImage {
-+ return &unparsedWithRef{
-+ UnparsedImage: unparsedimage.FromPublic(wrappedInstance),
-+ ref: replacementRef,
-+ }
-+}
-diff --git a/vendor/github.com/containers/image/v5/internal/blobinfocache/blobinfocache.go b/vendor/github.com/containers/image/v5/internal/blobinfocache/blobinfocache.go
-index b86e8b1ac..2767c3950 100644
---- a/vendor/github.com/containers/image/v5/internal/blobinfocache/blobinfocache.go
-+++ b/vendor/github.com/containers/image/v5/internal/blobinfocache/blobinfocache.go
-@@ -23,6 +23,12 @@ type v1OnlyBlobInfoCache struct {
- types.BlobInfoCache
- }
-
-+func (bic *v1OnlyBlobInfoCache) Open() {
-+}
-+
-+func (bic *v1OnlyBlobInfoCache) Close() {
-+}
-+
- func (bic *v1OnlyBlobInfoCache) RecordDigestCompressorName(anyDigest digest.Digest, compressorName string) {
- }
-
-diff --git a/vendor/github.com/containers/image/v5/internal/blobinfocache/types.go b/vendor/github.com/containers/image/v5/internal/blobinfocache/types.go
-index 3c2be57f3..4d3858ab8 100644
---- a/vendor/github.com/containers/image/v5/internal/blobinfocache/types.go
-+++ b/vendor/github.com/containers/image/v5/internal/blobinfocache/types.go
-@@ -18,6 +18,13 @@ const (
- // of compression was applied to the blobs it keeps information about.
- type BlobInfoCache2 interface {
- types.BlobInfoCache
-+
-+ // Open() sets up the cache for future accesses, potentially acquiring costly state. Each Open() must be paired with a Close().
-+ // Note that public callers may call the types.BlobInfoCache operations without Open()/Close().
-+ Open()
-+ // Close destroys state created by Open().
-+ Close()
-+
- // RecordDigestCompressorName records a compressor for the blob with the specified digest,
- // or Uncompressed or UnknownCompression.
- // WARNING: Only call this with LOCALLY VERIFIED data; don’t record a compressor for a
-@@ -25,11 +32,11 @@ type BlobInfoCache2 interface {
- // otherwise the cache could be poisoned and cause us to make incorrect edits to type
- // information in a manifest.
- RecordDigestCompressorName(anyDigest digest.Digest, compressorName string)
-- // CandidateLocations2 returns a prioritized, limited, number of blobs and their locations
-+ // CandidateLocations2 returns a prioritized, limited, number of blobs and their locations (if known)
- // that could possibly be reused within the specified (transport scope) (if they still
- // exist, which is not guaranteed).
- //
-- // If !canSubstitute, the returned cadidates will match the submitted digest exactly; if
-+ // If !canSubstitute, the returned candidates will match the submitted digest exactly; if
- // canSubstitute, data from previous RecordDigestUncompressedPair calls is used to also look
- // up variants of the blob which have the same uncompressed digest.
- //
-@@ -39,7 +46,8 @@ type BlobInfoCache2 interface {
-
- // BICReplacementCandidate2 is an item returned by BlobInfoCache2.CandidateLocations2.
- type BICReplacementCandidate2 struct {
-- Digest digest.Digest
-- CompressorName string // either the Name() of a known pkg/compression.Algorithm, or Uncompressed or UnknownCompression
-- Location types.BICLocationReference
-+ Digest digest.Digest
-+ CompressorName string // either the Name() of a known pkg/compression.Algorithm, or Uncompressed or UnknownCompression
-+ UnknownLocation bool // is true when `Location` for this blob is not set
-+ Location types.BICLocationReference // not set if UnknownLocation is set to `true`
- }
-diff --git a/vendor/github.com/containers/image/v5/internal/image/BUILD.bazel b/vendor/github.com/containers/image/v5/internal/image/BUILD.bazel
-index 14a1562e7..e841e4bec 100644
---- a/vendor/github.com/containers/image/v5/internal/image/BUILD.bazel
-+++ b/vendor/github.com/containers/image/v5/internal/image/BUILD.bazel
-@@ -26,8 +26,10 @@ go_library(
- "//vendor/github.com/containers/image/v5/manifest:go_default_library",
- "//vendor/github.com/containers/image/v5/pkg/blobinfocache/none:go_default_library",
- "//vendor/github.com/containers/image/v5/types:go_default_library",
-+ "//vendor/github.com/containers/ocicrypt/spec:go_default_library",
- "//vendor/github.com/opencontainers/go-digest:go_default_library",
- "//vendor/github.com/opencontainers/image-spec/specs-go/v1:go_default_library",
- "//vendor/github.com/sirupsen/logrus:go_default_library",
-+ "//vendor/golang.org/x/exp/slices:go_default_library",
- ],
- )
-diff --git a/vendor/github.com/containers/image/v5/internal/image/docker_schema2.go b/vendor/github.com/containers/image/v5/internal/image/docker_schema2.go
-index 15c9c2279..c3234c377 100644
---- a/vendor/github.com/containers/image/v5/internal/image/docker_schema2.go
-+++ b/vendor/github.com/containers/image/v5/internal/image/docker_schema2.go
-@@ -226,9 +226,9 @@ func (m *manifestSchema2) convertToManifestOCI1(ctx context.Context, _ *types.Ma
- layers[idx] = oci1DescriptorFromSchema2Descriptor(m.m.LayersDescriptors[idx])
- switch m.m.LayersDescriptors[idx].MediaType {
- case manifest.DockerV2Schema2ForeignLayerMediaType:
-- layers[idx].MediaType = imgspecv1.MediaTypeImageLayerNonDistributable
-+ layers[idx].MediaType = imgspecv1.MediaTypeImageLayerNonDistributable //nolint:staticcheck // NonDistributable layers are deprecated, but we want to continue to support manipulating pre-existing images.
- case manifest.DockerV2Schema2ForeignLayerMediaTypeGzip:
-- layers[idx].MediaType = imgspecv1.MediaTypeImageLayerNonDistributableGzip
-+ layers[idx].MediaType = imgspecv1.MediaTypeImageLayerNonDistributableGzip //nolint:staticcheck // NonDistributable layers are deprecated, but we want to continue to support manipulating pre-existing images.
- case manifest.DockerV2SchemaLayerMediaTypeUncompressed:
- layers[idx].MediaType = imgspecv1.MediaTypeImageLayer
- case manifest.DockerV2Schema2LayerMediaType:
-diff --git a/vendor/github.com/containers/image/v5/internal/image/oci.go b/vendor/github.com/containers/image/v5/internal/image/oci.go
-index 4b74de3e5..df0e8e417 100644
---- a/vendor/github.com/containers/image/v5/internal/image/oci.go
-+++ b/vendor/github.com/containers/image/v5/internal/image/oci.go
-@@ -12,8 +12,10 @@ import (
- "github.com/containers/image/v5/manifest"
- "github.com/containers/image/v5/pkg/blobinfocache/none"
- "github.com/containers/image/v5/types"
-+ ociencspec "github.com/containers/ocicrypt/spec"
- "github.com/opencontainers/go-digest"
- imgspecv1 "github.com/opencontainers/image-spec/specs-go/v1"
-+ "golang.org/x/exp/slices"
- )
-
- type manifestOCI1 struct {
-@@ -86,7 +88,7 @@ func (m *manifestOCI1) ConfigBlob(ctx context.Context) ([]byte, error) {
- // old image manifests work (docker v2s1 especially).
- func (m *manifestOCI1) OCIConfig(ctx context.Context) (*imgspecv1.Image, error) {
- if m.m.Config.MediaType != imgspecv1.MediaTypeImageConfig {
-- return nil, internalManifest.NewNonImageArtifactError(m.m.Config.MediaType)
-+ return nil, internalManifest.NewNonImageArtifactError(&m.m.Manifest)
- }
-
- cb, err := m.ConfigBlob(ctx)
-@@ -194,32 +196,92 @@ func (m *manifestOCI1) convertToManifestSchema2Generic(ctx context.Context, opti
- return m.convertToManifestSchema2(ctx, options)
- }
-
-+// layerEditsOfOCIOnlyFeatures checks if options requires some layer edits to be done before converting to a Docker format.
-+// If not, it returns (nil, nil).
-+// If decryption is required, it returns a set of edits to provide to OCI1.UpdateLayerInfos,
-+// and edits *options to not try decryption again.
-+func (m *manifestOCI1) layerEditsOfOCIOnlyFeatures(options *types.ManifestUpdateOptions) ([]types.BlobInfo, error) {
-+ if options == nil || options.LayerInfos == nil {
-+ return nil, nil
-+ }
-+
-+ originalInfos := m.LayerInfos()
-+ if len(originalInfos) != len(options.LayerInfos) {
-+ return nil, fmt.Errorf("preparing to decrypt before conversion: %d layers vs. %d layer edits", len(originalInfos), len(options.LayerInfos))
-+ }
-+
-+ ociOnlyEdits := slices.Clone(originalInfos) // Start with a full copy so that we don't forget to copy anything: use the current data in full unless we intentionally deviate.
-+ laterEdits := slices.Clone(options.LayerInfos)
-+ needsOCIOnlyEdits := false
-+ for i, edit := range options.LayerInfos {
-+ // Unless determined otherwise, don't do any compression-related MIME type conversions. m.LayerInfos() should not set these edit instructions, but be explicit.
-+ ociOnlyEdits[i].CompressionOperation = types.PreserveOriginal
-+ ociOnlyEdits[i].CompressionAlgorithm = nil
-+
-+ if edit.CryptoOperation == types.Decrypt {
-+ needsOCIOnlyEdits = true // Encrypted types must be removed before conversion because they can’t be represented in Docker schemas
-+ ociOnlyEdits[i].CryptoOperation = types.Decrypt
-+ laterEdits[i].CryptoOperation = types.PreserveOriginalCrypto // Don't try to decrypt in a schema[12] manifest later, that would fail.
-+ }
-+
-+ if originalInfos[i].MediaType == imgspecv1.MediaTypeImageLayerZstd ||
-+ originalInfos[i].MediaType == imgspecv1.MediaTypeImageLayerNonDistributableZstd { //nolint:staticcheck // NonDistributable layers are deprecated, but we want to continue to support manipulating pre-existing images.
-+ needsOCIOnlyEdits = true // Zstd MIME types must be removed before conversion because they can’t be represented in Docker schemas.
-+ ociOnlyEdits[i].CompressionOperation = edit.CompressionOperation
-+ ociOnlyEdits[i].CompressionAlgorithm = edit.CompressionAlgorithm
-+ laterEdits[i].CompressionOperation = types.PreserveOriginal
-+ laterEdits[i].CompressionAlgorithm = nil
-+ }
-+ }
-+ if !needsOCIOnlyEdits {
-+ return nil, nil
-+ }
-+
-+ options.LayerInfos = laterEdits
-+ return ociOnlyEdits, nil
-+}
-+
- // convertToManifestSchema2 returns a genericManifest implementation converted to manifest.DockerV2Schema2MediaType.
- // It may use options.InformationOnly and also adjust *options to be appropriate for editing the returned
- // value.
- // This does not change the state of the original manifestOCI1 object.
--func (m *manifestOCI1) convertToManifestSchema2(_ context.Context, _ *types.ManifestUpdateOptions) (*manifestSchema2, error) {
-+func (m *manifestOCI1) convertToManifestSchema2(_ context.Context, options *types.ManifestUpdateOptions) (*manifestSchema2, error) {
- if m.m.Config.MediaType != imgspecv1.MediaTypeImageConfig {
-- return nil, internalManifest.NewNonImageArtifactError(m.m.Config.MediaType)
-+ return nil, internalManifest.NewNonImageArtifactError(&m.m.Manifest)
-+ }
-+
-+ // Mostly we first make a format conversion, and _afterwards_ do layer edits. But first we need to do the layer edits
-+ // which remove OCI-specific features, because trying to convert those layers would fail.
-+ // So, do the layer updates for decryption, and for conversions from Zstd.
-+ ociManifest := m.m
-+ ociOnlyEdits, err := m.layerEditsOfOCIOnlyFeatures(options)
-+ if err != nil {
-+ return nil, err
-+ }
-+ if ociOnlyEdits != nil {
-+ ociManifest = manifest.OCI1Clone(ociManifest)
-+ if err := ociManifest.UpdateLayerInfos(ociOnlyEdits); err != nil {
-+ return nil, err
-+ }
- }
-
- // Create a copy of the descriptor.
-- config := schema2DescriptorFromOCI1Descriptor(m.m.Config)
-+ config := schema2DescriptorFromOCI1Descriptor(ociManifest.Config)
-
- // Above, we have already checked that this manifest refers to an image, not an OCI artifact,
- // so the only difference between OCI and DockerSchema2 is the mediatypes. The
- // media type of the manifest is handled by manifestSchema2FromComponents.
- config.MediaType = manifest.DockerV2Schema2ConfigMediaType
-
-- layers := make([]manifest.Schema2Descriptor, len(m.m.Layers))
-+ layers := make([]manifest.Schema2Descriptor, len(ociManifest.Layers))
- for idx := range layers {
-- layers[idx] = schema2DescriptorFromOCI1Descriptor(m.m.Layers[idx])
-+ layers[idx] = schema2DescriptorFromOCI1Descriptor(ociManifest.Layers[idx])
- switch layers[idx].MediaType {
-- case imgspecv1.MediaTypeImageLayerNonDistributable:
-+ case imgspecv1.MediaTypeImageLayerNonDistributable: //nolint:staticcheck // NonDistributable layers are deprecated, but we want to continue to support manipulating pre-existing images.
- layers[idx].MediaType = manifest.DockerV2Schema2ForeignLayerMediaType
-- case imgspecv1.MediaTypeImageLayerNonDistributableGzip:
-+ case imgspecv1.MediaTypeImageLayerNonDistributableGzip: //nolint:staticcheck // NonDistributable layers are deprecated, but we want to continue to support manipulating pre-existing images.
- layers[idx].MediaType = manifest.DockerV2Schema2ForeignLayerMediaTypeGzip
-- case imgspecv1.MediaTypeImageLayerNonDistributableZstd:
-+ case imgspecv1.MediaTypeImageLayerNonDistributableZstd: //nolint:staticcheck // NonDistributable layers are deprecated, but we want to continue to support manipulating pre-existing images.
- return nil, fmt.Errorf("Error during manifest conversion: %q: zstd compression is not supported for docker images", layers[idx].MediaType)
- case imgspecv1.MediaTypeImageLayer:
- layers[idx].MediaType = manifest.DockerV2SchemaLayerMediaTypeUncompressed
-@@ -227,6 +289,9 @@ func (m *manifestOCI1) convertToManifestSchema2(_ context.Context, _ *types.Mani
- layers[idx].MediaType = manifest.DockerV2Schema2LayerMediaType
- case imgspecv1.MediaTypeImageLayerZstd:
- return nil, fmt.Errorf("Error during manifest conversion: %q: zstd compression is not supported for docker images", layers[idx].MediaType)
-+ case ociencspec.MediaTypeLayerEnc, ociencspec.MediaTypeLayerGzipEnc, ociencspec.MediaTypeLayerZstdEnc,
-+ ociencspec.MediaTypeLayerNonDistributableEnc, ociencspec.MediaTypeLayerNonDistributableGzipEnc, ociencspec.MediaTypeLayerNonDistributableZstdEnc:
-+ return nil, fmt.Errorf("during manifest conversion: encrypted layers (%q) are not supported in docker images", layers[idx].MediaType)
- default:
- return nil, fmt.Errorf("Unknown media type during manifest conversion: %q", layers[idx].MediaType)
- }
-@@ -244,7 +309,7 @@ func (m *manifestOCI1) convertToManifestSchema2(_ context.Context, _ *types.Mani
- // This does not change the state of the original manifestOCI1 object.
- func (m *manifestOCI1) convertToManifestSchema1(ctx context.Context, options *types.ManifestUpdateOptions) (genericManifest, error) {
- if m.m.Config.MediaType != imgspecv1.MediaTypeImageConfig {
-- return nil, internalManifest.NewNonImageArtifactError(m.m.Config.MediaType)
-+ return nil, internalManifest.NewNonImageArtifactError(&m.m.Manifest)
- }
-
- // We can't directly convert images to V1, but we can transitively convert via a V2 image
-diff --git a/vendor/github.com/containers/image/v5/internal/imagedestination/impl/BUILD.bazel b/vendor/github.com/containers/image/v5/internal/imagedestination/impl/BUILD.bazel
-index 572d430bb..6e1387c49 100644
---- a/vendor/github.com/containers/image/v5/internal/imagedestination/impl/BUILD.bazel
-+++ b/vendor/github.com/containers/image/v5/internal/imagedestination/impl/BUILD.bazel
-@@ -4,6 +4,7 @@ go_library(
- name = "go_default_library",
- srcs = [
- "compat.go",
-+ "helpers.go",
- "properties.go",
- ],
- importmap = "kubevirt.io/containerized-data-importer/vendor/github.com/containers/image/v5/internal/imagedestination/impl",
-@@ -11,9 +12,12 @@ go_library(
- visibility = ["//vendor/github.com/containers/image/v5:__subpackages__"],
- deps = [
- "//vendor/github.com/containers/image/v5/internal/blobinfocache:go_default_library",
-+ "//vendor/github.com/containers/image/v5/internal/manifest:go_default_library",
- "//vendor/github.com/containers/image/v5/internal/private:go_default_library",
- "//vendor/github.com/containers/image/v5/internal/signature:go_default_library",
-+ "//vendor/github.com/containers/image/v5/pkg/compression/types:go_default_library",
- "//vendor/github.com/containers/image/v5/types:go_default_library",
- "//vendor/github.com/opencontainers/go-digest:go_default_library",
-+ "//vendor/golang.org/x/exp/slices:go_default_library",
- ],
- )
-diff --git a/vendor/github.com/containers/image/v5/internal/imagedestination/impl/helpers.go b/vendor/github.com/containers/image/v5/internal/imagedestination/impl/helpers.go
-new file mode 100644
-index 000000000..553569a03
---- /dev/null
-+++ b/vendor/github.com/containers/image/v5/internal/imagedestination/impl/helpers.go
-@@ -0,0 +1,42 @@
-+package impl
-+
-+import (
-+ "github.com/containers/image/v5/internal/manifest"
-+ "github.com/containers/image/v5/internal/private"
-+ compression "github.com/containers/image/v5/pkg/compression/types"
-+ "golang.org/x/exp/slices"
-+)
-+
-+// CandidateMatchesTryReusingBlobOptions validates if compression is required by the caller while selecting a blob, if it is required
-+// then function performs a match against the compression requested by the caller and compression of existing blob
-+// (which can be nil to represent uncompressed or unknown)
-+func CandidateMatchesTryReusingBlobOptions(options private.TryReusingBlobOptions, candidateCompression *compression.Algorithm) bool {
-+ if options.RequiredCompression != nil {
-+ if options.RequiredCompression.Name() == compression.ZstdChunkedAlgorithmName {
-+ // HACK: Never match when the caller asks for zstd:chunked, because we don’t record the annotations required to use the chunked blobs.
-+ // The caller must re-compress to build those annotations.
-+ return false
-+ }
-+ if candidateCompression == nil ||
-+ (options.RequiredCompression.Name() != candidateCompression.Name() && options.RequiredCompression.Name() != candidateCompression.BaseVariantName()) {
-+ return false
-+ }
-+ }
-+
-+ // For candidateCompression == nil, we can’t tell the difference between “uncompressed” and “unknown”;
-+ // and “uncompressed” is acceptable in all known formats (well, it seems to work in practice for schema1),
-+ // so don’t impose any restrictions if candidateCompression == nil
-+ if options.PossibleManifestFormats != nil && candidateCompression != nil {
-+ if !slices.ContainsFunc(options.PossibleManifestFormats, func(mt string) bool {
-+ return manifest.MIMETypeSupportsCompressionAlgorithm(mt, *candidateCompression)
-+ }) {
-+ return false
-+ }
-+ }
-+
-+ return true
-+}
-+
-+func OriginalCandidateMatchesTryReusingBlobOptions(opts private.TryReusingBlobOptions) bool {
-+ return CandidateMatchesTryReusingBlobOptions(opts, opts.OriginalCompression)
-+}
-diff --git a/vendor/github.com/containers/image/v5/internal/imagedestination/stubs/BUILD.bazel b/vendor/github.com/containers/image/v5/internal/imagedestination/stubs/BUILD.bazel
-index c9a761095..6e544a4b8 100644
---- a/vendor/github.com/containers/image/v5/internal/imagedestination/stubs/BUILD.bazel
-+++ b/vendor/github.com/containers/image/v5/internal/imagedestination/stubs/BUILD.bazel
-@@ -11,7 +11,6 @@ go_library(
- importpath = "github.com/containers/image/v5/internal/imagedestination/stubs",
- visibility = ["//vendor/github.com/containers/image/v5:__subpackages__"],
- deps = [
-- "//vendor/github.com/containers/image/v5/internal/blobinfocache:go_default_library",
- "//vendor/github.com/containers/image/v5/internal/private:go_default_library",
- "//vendor/github.com/containers/image/v5/internal/signature:go_default_library",
- "//vendor/github.com/containers/image/v5/types:go_default_library",
-diff --git a/vendor/github.com/containers/image/v5/internal/imagedestination/stubs/put_blob_partial.go b/vendor/github.com/containers/image/v5/internal/imagedestination/stubs/put_blob_partial.go
-index 0dc6bd5af..bbb53c198 100644
---- a/vendor/github.com/containers/image/v5/internal/imagedestination/stubs/put_blob_partial.go
-+++ b/vendor/github.com/containers/image/v5/internal/imagedestination/stubs/put_blob_partial.go
-@@ -4,7 +4,6 @@ import (
- "context"
- "fmt"
-
-- "github.com/containers/image/v5/internal/blobinfocache"
- "github.com/containers/image/v5/internal/private"
- "github.com/containers/image/v5/types"
- )
-@@ -39,7 +38,7 @@ func (stub NoPutBlobPartialInitialize) SupportsPutBlobPartial() bool {
- // It is available only if SupportsPutBlobPartial().
- // Even if SupportsPutBlobPartial() returns true, the call can fail, in which case the caller
- // should fall back to PutBlobWithOptions.
--func (stub NoPutBlobPartialInitialize) PutBlobPartial(ctx context.Context, chunkAccessor private.BlobChunkAccessor, srcInfo types.BlobInfo, cache blobinfocache.BlobInfoCache2) (private.UploadedBlob, error) {
-+func (stub NoPutBlobPartialInitialize) PutBlobPartial(ctx context.Context, chunkAccessor private.BlobChunkAccessor, srcInfo types.BlobInfo, options private.PutBlobPartialOptions) (private.UploadedBlob, error) {
- return private.UploadedBlob{}, fmt.Errorf("internal error: PutBlobPartial is not supported by the %q transport", stub.transportName)
- }
-
-diff --git a/vendor/github.com/containers/image/v5/internal/imagedestination/wrapper.go b/vendor/github.com/containers/image/v5/internal/imagedestination/wrapper.go
-index 41a81628b..cdd3c5e5d 100644
---- a/vendor/github.com/containers/image/v5/internal/imagedestination/wrapper.go
-+++ b/vendor/github.com/containers/image/v5/internal/imagedestination/wrapper.go
-@@ -28,7 +28,7 @@ type wrapped struct {
- //
- // NOTE: The returned API MUST NOT be a public interface (it can be either just a struct
- // with public methods, or perhaps a private interface), so that we can add methods
--// without breaking any external implementors of a public interface.
-+// without breaking any external implementers of a public interface.
- func FromPublic(dest types.ImageDestination) private.ImageDestination {
- if dest2, ok := dest.(private.ImageDestination); ok {
- return dest2
-@@ -64,6 +64,9 @@ func (w *wrapped) PutBlobWithOptions(ctx context.Context, stream io.Reader, inpu
- // If the blob has been successfully reused, returns (true, info, nil).
- // If the transport can not reuse the requested blob, TryReusingBlob returns (false, {}, nil); it returns a non-nil error only on an unexpected failure.
- func (w *wrapped) TryReusingBlobWithOptions(ctx context.Context, info types.BlobInfo, options private.TryReusingBlobOptions) (bool, private.ReusedBlob, error) {
-+ if options.RequiredCompression != nil {
-+ return false, private.ReusedBlob{}, nil
-+ }
- reused, blob, err := w.TryReusingBlob(ctx, info, options.Cache, options.CanSubstitute)
- if !reused || err != nil {
- return reused, private.ReusedBlob{}, err
-diff --git a/vendor/github.com/containers/image/v5/internal/imagesource/wrapper.go b/vendor/github.com/containers/image/v5/internal/imagesource/wrapper.go
-index 886b4e833..f0d1d042b 100644
---- a/vendor/github.com/containers/image/v5/internal/imagesource/wrapper.go
-+++ b/vendor/github.com/containers/image/v5/internal/imagesource/wrapper.go
-@@ -27,7 +27,7 @@ type wrapped struct {
- //
- // NOTE: The returned API MUST NOT be a public interface (it can be either just a struct
- // with public methods, or perhaps a private interface), so that we can add methods
--// without breaking any external implementors of a public interface.
-+// without breaking any external implementers of a public interface.
- func FromPublic(src types.ImageSource) private.ImageSource {
- if src2, ok := src.(private.ImageSource); ok {
- return src2
-diff --git a/vendor/github.com/containers/image/v5/internal/manifest/BUILD.bazel b/vendor/github.com/containers/image/v5/internal/manifest/BUILD.bazel
-index 4ed7f5f81..be2d7c176 100644
---- a/vendor/github.com/containers/image/v5/internal/manifest/BUILD.bazel
-+++ b/vendor/github.com/containers/image/v5/internal/manifest/BUILD.bazel
-@@ -16,6 +16,7 @@ go_library(
- visibility = ["//vendor/github.com/containers/image/v5:__subpackages__"],
- deps = [
- "//vendor/github.com/containers/image/v5/internal/pkg/platform:go_default_library",
-+ "//vendor/github.com/containers/image/v5/pkg/compression/types:go_default_library",
- "//vendor/github.com/containers/image/v5/types:go_default_library",
- "//vendor/github.com/containers/libtrust:go_default_library",
- "//vendor/github.com/opencontainers/go-digest:go_default_library",
-diff --git a/vendor/github.com/containers/image/v5/internal/manifest/docker_schema2_list.go b/vendor/github.com/containers/image/v5/internal/manifest/docker_schema2_list.go
-index e98c5c99e..7ce5bb069 100644
---- a/vendor/github.com/containers/image/v5/internal/manifest/docker_schema2_list.go
-+++ b/vendor/github.com/containers/image/v5/internal/manifest/docker_schema2_list.go
-@@ -5,6 +5,7 @@ import (
- "fmt"
-
- platform "github.com/containers/image/v5/internal/pkg/platform"
-+ compression "github.com/containers/image/v5/pkg/compression/types"
- "github.com/containers/image/v5/types"
- "github.com/opencontainers/go-digest"
- imgspecv1 "github.com/opencontainers/image-spec/specs-go/v1"
-@@ -57,11 +58,15 @@ func (list *Schema2ListPublic) Instances() []digest.Digest {
- func (list *Schema2ListPublic) Instance(instanceDigest digest.Digest) (ListUpdate, error) {
- for _, manifest := range list.Manifests {
- if manifest.Digest == instanceDigest {
-- return ListUpdate{
-+ ret := ListUpdate{
- Digest: manifest.Digest,
- Size: manifest.Size,
- MediaType: manifest.MediaType,
-- }, nil
-+ }
-+ ret.ReadOnly.CompressionAlgorithmNames = []string{compression.GzipAlgorithmName}
-+ platform := ociPlatformFromSchema2PlatformSpec(manifest.Platform)
-+ ret.ReadOnly.Platform = &platform
-+ return ret, nil
- }
- }
- return ListUpdate{}, fmt.Errorf("unable to find instance %s passed to Schema2List.Instances", instanceDigest)
-@@ -69,27 +74,76 @@ func (list *Schema2ListPublic) Instance(instanceDigest digest.Digest) (ListUpdat
-
- // UpdateInstances updates the sizes, digests, and media types of the manifests
- // which the list catalogs.
--func (list *Schema2ListPublic) UpdateInstances(updates []ListUpdate) error {
-- if len(updates) != len(list.Manifests) {
-- return fmt.Errorf("incorrect number of update entries passed to Schema2List.UpdateInstances: expected %d, got %d", len(list.Manifests), len(updates))
-+func (index *Schema2ListPublic) UpdateInstances(updates []ListUpdate) error {
-+ editInstances := []ListEdit{}
-+ for i, instance := range updates {
-+ editInstances = append(editInstances, ListEdit{
-+ UpdateOldDigest: index.Manifests[i].Digest,
-+ UpdateDigest: instance.Digest,
-+ UpdateSize: instance.Size,
-+ UpdateMediaType: instance.MediaType,
-+ ListOperation: ListOpUpdate})
- }
-- for i := range updates {
-- if err := updates[i].Digest.Validate(); err != nil {
-- return fmt.Errorf("update %d of %d passed to Schema2List.UpdateInstances contained an invalid digest: %w", i+1, len(updates), err)
-- }
-- list.Manifests[i].Digest = updates[i].Digest
-- if updates[i].Size < 0 {
-- return fmt.Errorf("update %d of %d passed to Schema2List.UpdateInstances had an invalid size (%d)", i+1, len(updates), updates[i].Size)
-- }
-- list.Manifests[i].Size = updates[i].Size
-- if updates[i].MediaType == "" {
-- return fmt.Errorf("update %d of %d passed to Schema2List.UpdateInstances had no media type (was %q)", i+1, len(updates), list.Manifests[i].MediaType)
-+ return index.editInstances(editInstances)
-+}
-+
-+func (index *Schema2ListPublic) editInstances(editInstances []ListEdit) error {
-+ addedEntries := []Schema2ManifestDescriptor{}
-+ for i, editInstance := range editInstances {
-+ switch editInstance.ListOperation {
-+ case ListOpUpdate:
-+ if err := editInstance.UpdateOldDigest.Validate(); err != nil {
-+ return fmt.Errorf("Schema2List.EditInstances: Attempting to update %s which is an invalid digest: %w", editInstance.UpdateOldDigest, err)
-+ }
-+ if err := editInstance.UpdateDigest.Validate(); err != nil {
-+ return fmt.Errorf("Schema2List.EditInstances: Modified digest %s is an invalid digest: %w", editInstance.UpdateDigest, err)
-+ }
-+ targetIndex := slices.IndexFunc(index.Manifests, func(m Schema2ManifestDescriptor) bool {
-+ return m.Digest == editInstance.UpdateOldDigest
-+ })
-+ if targetIndex == -1 {
-+ return fmt.Errorf("Schema2List.EditInstances: digest %s not found", editInstance.UpdateOldDigest)
-+ }
-+ index.Manifests[targetIndex].Digest = editInstance.UpdateDigest
-+ if editInstance.UpdateSize < 0 {
-+ return fmt.Errorf("update %d of %d passed to Schema2List.UpdateInstances had an invalid size (%d)", i+1, len(editInstances), editInstance.UpdateSize)
-+ }
-+ index.Manifests[targetIndex].Size = editInstance.UpdateSize
-+ if editInstance.UpdateMediaType == "" {
-+ return fmt.Errorf("update %d of %d passed to Schema2List.UpdateInstances had no media type (was %q)", i+1, len(editInstances), index.Manifests[i].MediaType)
-+ }
-+ index.Manifests[targetIndex].MediaType = editInstance.UpdateMediaType
-+ case ListOpAdd:
-+ if editInstance.AddPlatform == nil {
-+ // Should we create a struct with empty fields instead?
-+ // Right now ListOpAdd is only called when an instance with the same platform value
-+ // already exists in the manifest, so this should not be reached in practice.
-+ return fmt.Errorf("adding a schema2 list instance with no platform specified is not supported")
-+ }
-+ addedEntries = append(addedEntries, Schema2ManifestDescriptor{
-+ Schema2Descriptor{
-+ Digest: editInstance.AddDigest,
-+ Size: editInstance.AddSize,
-+ MediaType: editInstance.AddMediaType,
-+ },
-+ schema2PlatformSpecFromOCIPlatform(*editInstance.AddPlatform),
-+ })
-+ default:
-+ return fmt.Errorf("internal error: invalid operation: %d", editInstance.ListOperation)
- }
-- list.Manifests[i].MediaType = updates[i].MediaType
-+ }
-+ if len(addedEntries) != 0 {
-+ // slices.Clone() here to ensure a private backing array;
-+ // an external caller could have manually created Schema2ListPublic with a slice with extra capacity.
-+ index.Manifests = append(slices.Clone(index.Manifests), addedEntries...)
- }
- return nil
- }
-
-+func (index *Schema2List) EditInstances(editInstances []ListEdit) error {
-+ return index.editInstances(editInstances)
-+}
-+
- func (list *Schema2ListPublic) ChooseInstanceByCompression(ctx *types.SystemContext, preferGzip types.OptionalBool) (digest.Digest, error) {
- // ChooseInstanceByCompression is same as ChooseInstance for schema2 manifest list.
- return list.ChooseInstance(ctx)
-@@ -104,13 +158,7 @@ func (list *Schema2ListPublic) ChooseInstance(ctx *types.SystemContext) (digest.
- }
- for _, wantedPlatform := range wantedPlatforms {
- for _, d := range list.Manifests {
-- imagePlatform := imgspecv1.Platform{
-- Architecture: d.Platform.Architecture,
-- OS: d.Platform.OS,
-- OSVersion: d.Platform.OSVersion,
-- OSFeatures: slices.Clone(d.Platform.OSFeatures),
-- Variant: d.Platform.Variant,
-- }
-+ imagePlatform := ociPlatformFromSchema2PlatformSpec(d.Platform)
- if platform.MatchesPlatform(imagePlatform, wantedPlatform) {
- return d.Digest, nil
- }
-@@ -170,20 +218,14 @@ func Schema2ListPublicClone(list *Schema2ListPublic) *Schema2ListPublic {
- func (list *Schema2ListPublic) ToOCI1Index() (*OCI1IndexPublic, error) {
- components := make([]imgspecv1.Descriptor, 0, len(list.Manifests))
- for _, manifest := range list.Manifests {
-- converted := imgspecv1.Descriptor{
-+ platform := ociPlatformFromSchema2PlatformSpec(manifest.Platform)
-+ components = append(components, imgspecv1.Descriptor{
- MediaType: manifest.MediaType,
- Size: manifest.Size,
- Digest: manifest.Digest,
- URLs: slices.Clone(manifest.URLs),
-- Platform: &imgspecv1.Platform{
-- OS: manifest.Platform.OS,
-- Architecture: manifest.Platform.Architecture,
-- OSFeatures: slices.Clone(manifest.Platform.OSFeatures),
-- OSVersion: manifest.Platform.OSVersion,
-- Variant: manifest.Platform.Variant,
-- },
-- }
-- components = append(components, converted)
-+ Platform: &platform,
-+ })
- }
- oci := OCI1IndexPublicFromComponents(components, nil)
- return oci, nil
-@@ -258,3 +300,15 @@ func Schema2ListFromManifest(manifest []byte) (*Schema2List, error) {
- }
- return schema2ListFromPublic(public), nil
- }
-+
-+// ociPlatformFromSchema2PlatformSpec converts a schema2 platform p to the OCI struccture.
-+func ociPlatformFromSchema2PlatformSpec(p Schema2PlatformSpec) imgspecv1.Platform {
-+ return imgspecv1.Platform{
-+ Architecture: p.Architecture,
-+ OS: p.OS,
-+ OSVersion: p.OSVersion,
-+ OSFeatures: slices.Clone(p.OSFeatures),
-+ Variant: p.Variant,
-+ // Features is not supported in OCI, and discarded.
-+ }
-+}
-diff --git a/vendor/github.com/containers/image/v5/internal/manifest/errors.go b/vendor/github.com/containers/image/v5/internal/manifest/errors.go
-index 6ebe4b24c..6c8e233d9 100644
---- a/vendor/github.com/containers/image/v5/internal/manifest/errors.go
-+++ b/vendor/github.com/containers/image/v5/internal/manifest/errors.go
-@@ -1,6 +1,10 @@
- package manifest
-
--import "fmt"
-+import (
-+ "fmt"
-+
-+ imgspecv1 "github.com/opencontainers/image-spec/specs-go/v1"
-+)
-
- // FIXME: This is a duplicate of c/image/manifestDockerV2Schema2ConfigMediaType.
- // Deduplicate that, depending on outcome of https://github.com/containers/image/pull/1791 .
-@@ -26,8 +30,20 @@ type NonImageArtifactError struct {
- mimeType string
- }
-
--// NewNonImageArtifactError returns a NonImageArtifactError about an artifact with mimeType.
--func NewNonImageArtifactError(mimeType string) error {
-+// NewNonImageArtifactError returns a NonImageArtifactError about an artifact manifest.
-+//
-+// This is typically called if manifest.Config.MediaType != imgspecv1.MediaTypeImageConfig .
-+func NewNonImageArtifactError(manifest *imgspecv1.Manifest) error {
-+ // Callers decide based on manifest.Config.MediaType that this is not an image;
-+ // in that case manifest.ArtifactType can be optionally defined, and if it is, it is typically
-+ // more relevant because config may be ~absent with imgspecv1.MediaTypeEmptyJSON.
-+ //
-+ // If ArtifactType and Config.MediaType are both defined and non-trivial, presumably
-+ // ArtifactType is the “top-level” one, although that’s not defined by the spec.
-+ mimeType := manifest.ArtifactType
-+ if mimeType == "" {
-+ mimeType = manifest.Config.MediaType
-+ }
- return NonImageArtifactError{mimeType: mimeType}
- }
-
-diff --git a/vendor/github.com/containers/image/v5/internal/manifest/list.go b/vendor/github.com/containers/image/v5/internal/manifest/list.go
-index 07c7d85f4..1d60da752 100644
---- a/vendor/github.com/containers/image/v5/internal/manifest/list.go
-+++ b/vendor/github.com/containers/image/v5/internal/manifest/list.go
-@@ -3,6 +3,7 @@ package manifest
- import (
- "fmt"
-
-+ compression "github.com/containers/image/v5/pkg/compression/types"
- "github.com/containers/image/v5/types"
- digest "github.com/opencontainers/go-digest"
- imgspecv1 "github.com/opencontainers/image-spec/specs-go/v1"
-@@ -55,6 +56,10 @@ type List interface {
- // SystemContext ( or for the current platform if the SystemContext doesn't specify any detail ) and preferGzip for compression which
- // when configured to OptionalBoolTrue and chooses best available compression when it is OptionalBoolFalse or left OptionalBoolUndefined.
- ChooseInstanceByCompression(ctx *types.SystemContext, preferGzip types.OptionalBool) (digest.Digest, error)
-+ // Edit information about the list's instances. Contains Slice of ListEdit where each element
-+ // is responsible for either Modifying or Adding a new instance to the Manifest. Operation is
-+ // selected on the basis of configured ListOperation field.
-+ EditInstances([]ListEdit) error
- }
-
- // ListUpdate includes the fields which a List's UpdateInstances() method will modify.
-@@ -63,6 +68,44 @@ type ListUpdate struct {
- Digest digest.Digest
- Size int64
- MediaType string
-+ // ReadOnly fields: may be set by Instance(), ignored by UpdateInstance()
-+ ReadOnly struct {
-+ Platform *imgspecv1.Platform
-+ Annotations map[string]string
-+ CompressionAlgorithmNames []string
-+ ArtifactType string
-+ }
-+}
-+
-+type ListOp int
-+
-+const (
-+ listOpInvalid ListOp = iota
-+ ListOpAdd
-+ ListOpUpdate
-+)
-+
-+// ListEdit includes the fields which a List's EditInstances() method will modify.
-+type ListEdit struct {
-+ ListOperation ListOp
-+
-+ // if Op == ListEditUpdate (basically the previous UpdateInstances). All fields must be set.
-+ UpdateOldDigest digest.Digest
-+ UpdateDigest digest.Digest
-+ UpdateSize int64
-+ UpdateMediaType string
-+ UpdateAffectAnnotations bool
-+ UpdateAnnotations map[string]string
-+ UpdateCompressionAlgorithms []compression.Algorithm
-+
-+ // If Op = ListEditAdd. All fields must be set.
-+ AddDigest digest.Digest
-+ AddSize int64
-+ AddMediaType string
-+ AddArtifactType string
-+ AddPlatform *imgspecv1.Platform
-+ AddAnnotations map[string]string
-+ AddCompressionAlgorithms []compression.Algorithm
- }
-
- // ListPublicFromBlob parses a list of manifests.
-diff --git a/vendor/github.com/containers/image/v5/internal/manifest/manifest.go b/vendor/github.com/containers/image/v5/internal/manifest/manifest.go
-index 1dbcc1418..c77db7522 100644
---- a/vendor/github.com/containers/image/v5/internal/manifest/manifest.go
-+++ b/vendor/github.com/containers/image/v5/internal/manifest/manifest.go
-@@ -3,6 +3,7 @@ package manifest
- import (
- "encoding/json"
-
-+ compressiontypes "github.com/containers/image/v5/pkg/compression/types"
- "github.com/containers/libtrust"
- digest "github.com/opencontainers/go-digest"
- imgspecv1 "github.com/opencontainers/image-spec/specs-go/v1"
-@@ -14,7 +15,7 @@ import (
- const (
- // DockerV2Schema1MediaType MIME type represents Docker manifest schema 1
- DockerV2Schema1MediaType = "application/vnd.docker.distribution.manifest.v1+json"
-- // DockerV2Schema1MediaType MIME type represents Docker manifest schema 1 with a JWS signature
-+ // DockerV2Schema1SignedMediaType MIME type represents Docker manifest schema 1 with a JWS signature
- DockerV2Schema1SignedMediaType = "application/vnd.docker.distribution.manifest.v1+prettyjws"
- // DockerV2Schema2MediaType MIME type represents Docker manifest schema 2
- DockerV2Schema2MediaType = "application/vnd.docker.distribution.manifest.v2+json"
-@@ -165,3 +166,29 @@ func NormalizedMIMEType(input string) string {
- return DockerV2Schema1SignedMediaType
- }
- }
-+
-+// CompressionAlgorithmIsUniversallySupported returns true if MIMETypeSupportsCompressionAlgorithm(mimeType, algo) returns true for all mimeType values.
-+func CompressionAlgorithmIsUniversallySupported(algo compressiontypes.Algorithm) bool {
-+ // Compare the discussion about BaseVariantName in MIMETypeSupportsCompressionAlgorithm().
-+ switch algo.Name() {
-+ case compressiontypes.GzipAlgorithmName:
-+ return true
-+ default:
-+ return false
-+ }
-+}
-+
-+// MIMETypeSupportsCompressionAlgorithm returns true if mimeType can represent algo.
-+func MIMETypeSupportsCompressionAlgorithm(mimeType string, algo compressiontypes.Algorithm) bool {
-+ if CompressionAlgorithmIsUniversallySupported(algo) {
-+ return true
-+ }
-+ // This does not use BaseVariantName: Plausibly a manifest format might support zstd but not have annotation fields.
-+ // The logic might have to be more complex (and more ad-hoc) if more manifest formats, with more capabilities, emerge.
-+ switch algo.Name() {
-+ case compressiontypes.ZstdAlgorithmName, compressiontypes.ZstdChunkedAlgorithmName:
-+ return mimeType == imgspecv1.MediaTypeImageManifest
-+ default: // Includes Bzip2AlgorithmName and XzAlgorithmName, which are defined names but are not supported anywhere
-+ return false
-+ }
-+}
-diff --git a/vendor/github.com/containers/image/v5/internal/manifest/oci_index.go b/vendor/github.com/containers/image/v5/internal/manifest/oci_index.go
-index 8e911678e..829852a83 100644
---- a/vendor/github.com/containers/image/v5/internal/manifest/oci_index.go
-+++ b/vendor/github.com/containers/image/v5/internal/manifest/oci_index.go
-@@ -7,6 +7,7 @@ import (
- "runtime"
-
- platform "github.com/containers/image/v5/internal/pkg/platform"
-+ compression "github.com/containers/image/v5/pkg/compression/types"
- "github.com/containers/image/v5/types"
- "github.com/opencontainers/go-digest"
- imgspec "github.com/opencontainers/image-spec/specs-go"
-@@ -22,7 +23,8 @@ const (
- // That also suggests that this instance benefits from
- // Zstd compression, so it can be preferred by compatible consumers over instances that
- // use gzip, depending on their local policy.
-- OCI1InstanceAnnotationCompressionZSTD = "io.github.containers.compression.zstd"
-+ OCI1InstanceAnnotationCompressionZSTD = "io.github.containers.compression.zstd"
-+ OCI1InstanceAnnotationCompressionZSTDValue = "true"
- )
-
- // OCI1IndexPublic is just an alias for the OCI index type, but one which we can
-@@ -51,11 +53,16 @@ func (index *OCI1IndexPublic) Instances() []digest.Digest {
- func (index *OCI1IndexPublic) Instance(instanceDigest digest.Digest) (ListUpdate, error) {
- for _, manifest := range index.Manifests {
- if manifest.Digest == instanceDigest {
-- return ListUpdate{
-+ ret := ListUpdate{
- Digest: manifest.Digest,
- Size: manifest.Size,
- MediaType: manifest.MediaType,
-- }, nil
-+ }
-+ ret.ReadOnly.Platform = manifest.Platform
-+ ret.ReadOnly.Annotations = manifest.Annotations
-+ ret.ReadOnly.CompressionAlgorithmNames = annotationsToCompressionAlgorithmNames(manifest.Annotations)
-+ ret.ReadOnly.ArtifactType = manifest.ArtifactType
-+ return ret, nil
- }
- }
- return ListUpdate{}, fmt.Errorf("unable to find instance %s in OCI1Index", instanceDigest)
-@@ -64,26 +71,132 @@ func (index *OCI1IndexPublic) Instance(instanceDigest digest.Digest) (ListUpdate
- // UpdateInstances updates the sizes, digests, and media types of the manifests
- // which the list catalogs.
- func (index *OCI1IndexPublic) UpdateInstances(updates []ListUpdate) error {
-- if len(updates) != len(index.Manifests) {
-- return fmt.Errorf("incorrect number of update entries passed to OCI1Index.UpdateInstances: expected %d, got %d", len(index.Manifests), len(updates))
-+ editInstances := []ListEdit{}
-+ for i, instance := range updates {
-+ editInstances = append(editInstances, ListEdit{
-+ UpdateOldDigest: index.Manifests[i].Digest,
-+ UpdateDigest: instance.Digest,
-+ UpdateSize: instance.Size,
-+ UpdateMediaType: instance.MediaType,
-+ ListOperation: ListOpUpdate})
- }
-- for i := range updates {
-- if err := updates[i].Digest.Validate(); err != nil {
-- return fmt.Errorf("update %d of %d passed to OCI1Index.UpdateInstances contained an invalid digest: %w", i+1, len(updates), err)
-- }
-- index.Manifests[i].Digest = updates[i].Digest
-- if updates[i].Size < 0 {
-- return fmt.Errorf("update %d of %d passed to OCI1Index.UpdateInstances had an invalid size (%d)", i+1, len(updates), updates[i].Size)
-+ return index.editInstances(editInstances)
-+}
-+
-+func annotationsToCompressionAlgorithmNames(annotations map[string]string) []string {
-+ result := make([]string, 0, 1)
-+ if annotations[OCI1InstanceAnnotationCompressionZSTD] == OCI1InstanceAnnotationCompressionZSTDValue {
-+ result = append(result, compression.ZstdAlgorithmName)
-+ }
-+ // No compression was detected, hence assume instance has default compression `Gzip`
-+ if len(result) == 0 {
-+ result = append(result, compression.GzipAlgorithmName)
-+ }
-+ return result
-+}
-+
-+func addCompressionAnnotations(compressionAlgorithms []compression.Algorithm, annotationsMap *map[string]string) {
-+ // TODO: This should also delete the algorithm if map already contains an algorithm and compressionAlgorithm
-+ // list has a different algorithm. To do that, we would need to modify the callers to always provide a reliable
-+ // and full compressionAlghorithms list.
-+ if *annotationsMap == nil && len(compressionAlgorithms) > 0 {
-+ *annotationsMap = map[string]string{}
-+ }
-+ for _, algo := range compressionAlgorithms {
-+ switch algo.BaseVariantName() {
-+ case compression.ZstdAlgorithmName:
-+ (*annotationsMap)[OCI1InstanceAnnotationCompressionZSTD] = OCI1InstanceAnnotationCompressionZSTDValue
-+ default:
-+ continue
- }
-- index.Manifests[i].Size = updates[i].Size
-- if updates[i].MediaType == "" {
-- return fmt.Errorf("update %d of %d passed to OCI1Index.UpdateInstances had no media type (was %q)", i+1, len(updates), index.Manifests[i].MediaType)
-+ }
-+}
-+
-+func (index *OCI1IndexPublic) editInstances(editInstances []ListEdit) error {
-+ addedEntries := []imgspecv1.Descriptor{}
-+ updatedAnnotations := false
-+ for i, editInstance := range editInstances {
-+ switch editInstance.ListOperation {
-+ case ListOpUpdate:
-+ if err := editInstance.UpdateOldDigest.Validate(); err != nil {
-+ return fmt.Errorf("OCI1Index.EditInstances: Attempting to update %s which is an invalid digest: %w", editInstance.UpdateOldDigest, err)
-+ }
-+ if err := editInstance.UpdateDigest.Validate(); err != nil {
-+ return fmt.Errorf("OCI1Index.EditInstances: Modified digest %s is an invalid digest: %w", editInstance.UpdateDigest, err)
-+ }
-+ targetIndex := slices.IndexFunc(index.Manifests, func(m imgspecv1.Descriptor) bool {
-+ return m.Digest == editInstance.UpdateOldDigest
-+ })
-+ if targetIndex == -1 {
-+ return fmt.Errorf("OCI1Index.EditInstances: digest %s not found", editInstance.UpdateOldDigest)
-+ }
-+ index.Manifests[targetIndex].Digest = editInstance.UpdateDigest
-+ if editInstance.UpdateSize < 0 {
-+ return fmt.Errorf("update %d of %d passed to OCI1Index.UpdateInstances had an invalid size (%d)", i+1, len(editInstances), editInstance.UpdateSize)
-+ }
-+ index.Manifests[targetIndex].Size = editInstance.UpdateSize
-+ if editInstance.UpdateMediaType == "" {
-+ return fmt.Errorf("update %d of %d passed to OCI1Index.UpdateInstances had no media type (was %q)", i+1, len(editInstances), index.Manifests[i].MediaType)
-+ }
-+ index.Manifests[targetIndex].MediaType = editInstance.UpdateMediaType
-+ if editInstance.UpdateAnnotations != nil {
-+ updatedAnnotations = true
-+ if editInstance.UpdateAffectAnnotations {
-+ index.Manifests[targetIndex].Annotations = maps.Clone(editInstance.UpdateAnnotations)
-+ } else {
-+ if index.Manifests[targetIndex].Annotations == nil {
-+ index.Manifests[targetIndex].Annotations = map[string]string{}
-+ }
-+ maps.Copy(index.Manifests[targetIndex].Annotations, editInstance.UpdateAnnotations)
-+ }
-+ }
-+ addCompressionAnnotations(editInstance.UpdateCompressionAlgorithms, &index.Manifests[targetIndex].Annotations)
-+ case ListOpAdd:
-+ annotations := map[string]string{}
-+ if editInstance.AddAnnotations != nil {
-+ annotations = maps.Clone(editInstance.AddAnnotations)
-+ }
-+ addCompressionAnnotations(editInstance.AddCompressionAlgorithms, &annotations)
-+ addedEntries = append(addedEntries, imgspecv1.Descriptor{
-+ MediaType: editInstance.AddMediaType,
-+ ArtifactType: editInstance.AddArtifactType,
-+ Size: editInstance.AddSize,
-+ Digest: editInstance.AddDigest,
-+ Platform: editInstance.AddPlatform,
-+ Annotations: annotations,
-+ })
-+ default:
-+ return fmt.Errorf("internal error: invalid operation: %d", editInstance.ListOperation)
- }
-- index.Manifests[i].MediaType = updates[i].MediaType
-+ }
-+ if len(addedEntries) != 0 {
-+ // slices.Clone() here to ensure the slice uses a private backing array;
-+ // an external caller could have manually created OCI1IndexPublic with a slice with extra capacity.
-+ index.Manifests = append(slices.Clone(index.Manifests), addedEntries...)
-+ }
-+ if len(addedEntries) != 0 || updatedAnnotations {
-+ slices.SortStableFunc(index.Manifests, func(a, b imgspecv1.Descriptor) int {
-+ // FIXME? With Go 1.21 and cmp.Compare available, turn instanceIsZstd into an integer score that can be compared, and generalizes
-+ // into more algorithms?
-+ aZstd := instanceIsZstd(a)
-+ bZstd := instanceIsZstd(b)
-+ switch {
-+ case aZstd == bZstd:
-+ return 0
-+ case !aZstd: // Implies bZstd
-+ return -1
-+ default: // aZstd && !bZstd
-+ return 1
-+ }
-+ })
- }
- return nil
- }
-
-+func (index *OCI1Index) EditInstances(editInstances []ListEdit) error {
-+ return index.editInstances(editInstances)
-+}
-+
- // instanceIsZstd returns true if instance is a zstd instance otherwise false.
- func instanceIsZstd(manifest imgspecv1.Descriptor) bool {
- if value, ok := manifest.Annotations[OCI1InstanceAnnotationCompressionZSTD]; ok && value == "true" {
-@@ -112,7 +225,7 @@ func (ic instanceCandidate) isPreferredOver(other *instanceCandidate, preferGzip
- case ic.manifestPosition != other.manifestPosition:
- return ic.manifestPosition < other.manifestPosition
- }
-- panic("internal error: invalid comparision between two candidates") // This should not be reachable because in all calls we make, the two candidates differ at least in manifestPosition.
-+ panic("internal error: invalid comparison between two candidates") // This should not be reachable because in all calls we make, the two candidates differ at least in manifestPosition.
- }
-
- // chooseInstance is a private equivalent to ChooseInstanceByCompression,
-@@ -131,24 +244,14 @@ func (index *OCI1IndexPublic) chooseInstance(ctx *types.SystemContext, preferGzi
- for manifestIndex, d := range index.Manifests {
- candidate := instanceCandidate{platformIndex: math.MaxInt, manifestPosition: manifestIndex, isZstd: instanceIsZstd(d), digest: d.Digest}
- if d.Platform != nil {
-- foundPlatform := false
-- for platformIndex, wantedPlatform := range wantedPlatforms {
-- imagePlatform := imgspecv1.Platform{
-- Architecture: d.Platform.Architecture,
-- OS: d.Platform.OS,
-- OSVersion: d.Platform.OSVersion,
-- OSFeatures: slices.Clone(d.Platform.OSFeatures),
-- Variant: d.Platform.Variant,
-- }
-- if platform.MatchesPlatform(imagePlatform, wantedPlatform) {
-- foundPlatform = true
-- candidate.platformIndex = platformIndex
-- break
-- }
-- }
-- if !foundPlatform {
-+ imagePlatform := ociPlatformClone(*d.Platform)
-+ platformIndex := slices.IndexFunc(wantedPlatforms, func(wantedPlatform imgspecv1.Platform) bool {
-+ return platform.MatchesPlatform(imagePlatform, wantedPlatform)
-+ })
-+ if platformIndex == -1 {
- continue
- }
-+ candidate.platformIndex = platformIndex
- }
- if bestMatch == nil || candidate.isPreferredOver(bestMatch, didPreferGzip) {
- bestMatch = &candidate
-@@ -195,21 +298,17 @@ func OCI1IndexPublicFromComponents(components []imgspecv1.Descriptor, annotation
- for i, component := range components {
- var platform *imgspecv1.Platform
- if component.Platform != nil {
-- platform = &imgspecv1.Platform{
-- Architecture: component.Platform.Architecture,
-- OS: component.Platform.OS,
-- OSVersion: component.Platform.OSVersion,
-- OSFeatures: slices.Clone(component.Platform.OSFeatures),
-- Variant: component.Platform.Variant,
-- }
-+ platformCopy := ociPlatformClone(*component.Platform)
-+ platform = &platformCopy
- }
- m := imgspecv1.Descriptor{
-- MediaType: component.MediaType,
-- Size: component.Size,
-- Digest: component.Digest,
-- URLs: slices.Clone(component.URLs),
-- Annotations: maps.Clone(component.Annotations),
-- Platform: platform,
-+ MediaType: component.MediaType,
-+ ArtifactType: component.ArtifactType,
-+ Size: component.Size,
-+ Digest: component.Digest,
-+ URLs: slices.Clone(component.URLs),
-+ Annotations: maps.Clone(component.Annotations),
-+ Platform: platform,
- }
- index.Manifests[i] = m
- }
-@@ -238,22 +337,15 @@ func (index *OCI1IndexPublic) ToSchema2List() (*Schema2ListPublic, error) {
- Architecture: runtime.GOARCH,
- }
- }
-- converted := Schema2ManifestDescriptor{
-+ components = append(components, Schema2ManifestDescriptor{
- Schema2Descriptor{
- MediaType: manifest.MediaType,
- Size: manifest.Size,
- Digest: manifest.Digest,
- URLs: slices.Clone(manifest.URLs),
- },
-- Schema2PlatformSpec{
-- OS: platform.OS,
-- Architecture: platform.Architecture,
-- OSFeatures: slices.Clone(platform.OSFeatures),
-- OSVersion: platform.OSVersion,
-- Variant: platform.Variant,
-- },
-- }
-- components = append(components, converted)
-+ schema2PlatformSpecFromOCIPlatform(*platform),
-+ })
- }
- s2 := Schema2ListPublicFromComponents(components)
- return s2, nil
-@@ -327,3 +419,32 @@ func OCI1IndexFromManifest(manifest []byte) (*OCI1Index, error) {
- }
- return oci1IndexFromPublic(public), nil
- }
-+
-+// ociPlatformClone returns an independent copy of p.
-+func ociPlatformClone(p imgspecv1.Platform) imgspecv1.Platform {
-+ // The only practical way in Go to give read-only access to an array is to copy it.
-+ // The only practical way in Go to copy a deep structure is to either do it manually field by field,
-+ // or to use reflection (incl. a round-trip through JSON, which uses reflection).
-+ //
-+ // The combination of the two is just sad, and leads to code like this, which will
-+ // need to be updated with every new Platform field.
-+ return imgspecv1.Platform{
-+ Architecture: p.Architecture,
-+ OS: p.OS,
-+ OSVersion: p.OSVersion,
-+ OSFeatures: slices.Clone(p.OSFeatures),
-+ Variant: p.Variant,
-+ }
-+}
-+
-+// schema2PlatformSpecFromOCIPlatform converts an OCI platform p to the schema2 structure.
-+func schema2PlatformSpecFromOCIPlatform(p imgspecv1.Platform) Schema2PlatformSpec {
-+ return Schema2PlatformSpec{
-+ Architecture: p.Architecture,
-+ OS: p.OS,
-+ OSVersion: p.OSVersion,
-+ OSFeatures: slices.Clone(p.OSFeatures),
-+ Variant: p.Variant,
-+ Features: nil,
-+ }
-+}
-diff --git a/vendor/github.com/containers/image/v5/internal/pkg/platform/BUILD.bazel b/vendor/github.com/containers/image/v5/internal/pkg/platform/BUILD.bazel
-index 291d89cf1..a69461473 100644
---- a/vendor/github.com/containers/image/v5/internal/pkg/platform/BUILD.bazel
-+++ b/vendor/github.com/containers/image/v5/internal/pkg/platform/BUILD.bazel
-@@ -9,6 +9,7 @@ go_library(
- deps = [
- "//vendor/github.com/containers/image/v5/types:go_default_library",
- "//vendor/github.com/opencontainers/image-spec/specs-go/v1:go_default_library",
-+ "//vendor/github.com/sirupsen/logrus:go_default_library",
- "//vendor/golang.org/x/exp/slices:go_default_library",
- ],
- )
-diff --git a/vendor/github.com/containers/image/v5/internal/pkg/platform/platform_matcher.go b/vendor/github.com/containers/image/v5/internal/pkg/platform/platform_matcher.go
-index 59b1d4b9e..94002d6d4 100644
---- a/vendor/github.com/containers/image/v5/internal/pkg/platform/platform_matcher.go
-+++ b/vendor/github.com/containers/image/v5/internal/pkg/platform/platform_matcher.go
-@@ -25,6 +25,7 @@ import (
-
- "github.com/containers/image/v5/types"
- imgspecv1 "github.com/opencontainers/image-spec/specs-go/v1"
-+ "github.com/sirupsen/logrus"
- "golang.org/x/exp/slices"
- )
-
-@@ -82,15 +83,40 @@ func getCPUVariantWindows(arch string) string {
- func getCPUVariantArm() string {
- variant, err := getCPUInfo("Cpu architecture")
- if err != nil {
-+ logrus.Errorf("Couldn't get cpu architecture: %v", err)
- return ""
- }
-- // TODO handle RPi Zero mismatch (https://github.com/moby/moby/pull/36121#issuecomment-398328286)
-
- switch strings.ToLower(variant) {
- case "8", "aarch64":
- variant = "v8"
-- case "7", "7m", "?(12)", "?(13)", "?(14)", "?(15)", "?(16)", "?(17)":
-+ case "7m", "?(12)", "?(13)", "?(14)", "?(15)", "?(16)", "?(17)":
- variant = "v7"
-+ case "7":
-+ // handle RPi Zero variant mismatch due to wrong variant from kernel
-+ // https://github.com/containerd/containerd/pull/4530
-+ // https://www.raspberrypi.org/forums/viewtopic.php?t=12614
-+ // https://github.com/moby/moby/pull/36121#issuecomment-398328286
-+ model, err := getCPUInfo("model name")
-+ if err != nil {
-+ logrus.Errorf("Couldn't get cpu model name, it may be the corner case where variant is 6: %v", err)
-+ return ""
-+ }
-+ // model name is NOT a value provided by the CPU; it is another outcome of Linux CPU detection,
-+ // https://github.com/torvalds/linux/blob/190bf7b14b0cf3df19c059061be032bd8994a597/arch/arm/mm/proc-v6.S#L178C35-L178C35
-+ // (matching happens based on value + mask at https://github.com/torvalds/linux/blob/190bf7b14b0cf3df19c059061be032bd8994a597/arch/arm/mm/proc-v6.S#L273-L274 )
-+ // ARM CPU ID starts with a “main” ID register https://developer.arm.com/documentation/ddi0406/cb/System-Level-Architecture/System-Control-Registers-in-a-VMSA-implementation/VMSA-System-control-registers-descriptions--in-register-order/MIDR--Main-ID-Register--VMSA?lang=en ,
-+ // but the ARMv6/ARMv7 differences are not a single dimension, https://developer.arm.com/documentation/ddi0406/cb/System-Level-Architecture/The-CPUID-Identification-Scheme?lang=en .
-+ // The Linux "cpu architecture" is determined by a “memory model” feature.
-+ //
-+ // So, the "armv6-compatible" check basically checks for a "v6 or v7 CPU, but not one found listed as a known v7 one in the .proc.info.init tables of
-+ // https://github.com/torvalds/linux/blob/190bf7b14b0cf3df19c059061be032bd8994a597/arch/arm/mm/proc-v7.S .
-+ if strings.HasPrefix(strings.ToLower(model), "armv6-compatible") {
-+ logrus.Debugf("Detected corner case, setting cpu variant to v6")
-+ variant = "v6"
-+ } else {
-+ variant = "v7"
-+ }
- case "6", "6tej":
- variant = "v6"
- case "5", "5t", "5te", "5tej":
-@@ -128,6 +154,10 @@ var compatibility = map[string][]string{
- // the most compatible platform is first.
- // If some option (arch, os, variant) is not present, a value from current platform is detected.
- func WantedPlatforms(ctx *types.SystemContext) ([]imgspecv1.Platform, error) {
-+ // Note that this does not use Platform.OSFeatures and Platform.OSVersion at all.
-+ // The fields are not specified by the OCI specification, as of version 1.1, usefully enough
-+ // to be interoperable, anyway.
-+
- wantedArch := runtime.GOARCH
- wantedVariant := ""
- if ctx != nil && ctx.ArchitectureChoice != "" {
-diff --git a/vendor/github.com/containers/image/v5/internal/private/private.go b/vendor/github.com/containers/image/v5/internal/private/private.go
-index b1dd4ceb0..562adbea8 100644
---- a/vendor/github.com/containers/image/v5/internal/private/private.go
-+++ b/vendor/github.com/containers/image/v5/internal/private/private.go
-@@ -55,7 +55,7 @@ type ImageDestinationInternalOnly interface {
- // It is available only if SupportsPutBlobPartial().
- // Even if SupportsPutBlobPartial() returns true, the call can fail, in which case the caller
- // should fall back to PutBlobWithOptions.
-- PutBlobPartial(ctx context.Context, chunkAccessor BlobChunkAccessor, srcInfo types.BlobInfo, cache blobinfocache.BlobInfoCache2) (UploadedBlob, error)
-+ PutBlobPartial(ctx context.Context, chunkAccessor BlobChunkAccessor, srcInfo types.BlobInfo, options PutBlobPartialOptions) (UploadedBlob, error)
-
- // TryReusingBlobWithOptions checks whether the transport already contains, or can efficiently reuse, a blob, and if so, applies it to the current destination
- // (e.g. if the blob is a filesystem layer, this signifies that the changes it describes need to be applied again when composing a filesystem tree).
-@@ -100,6 +100,12 @@ type PutBlobOptions struct {
- LayerIndex *int // If the blob is a layer, a zero-based index of the layer within the image; nil otherwise.
- }
-
-+// PutBlobPartialOptions are used in PutBlobPartial.
-+type PutBlobPartialOptions struct {
-+ Cache blobinfocache.BlobInfoCache2 // Cache to use and/or update.
-+ LayerIndex int // A zero-based index of the layer within the image (PutBlobPartial is only called with layer-like blobs, not configs)
-+}
-+
- // TryReusingBlobOptions are used in TryReusingBlobWithOptions.
- type TryReusingBlobOptions struct {
- Cache blobinfocache.BlobInfoCache2 // Cache to use and/or update.
-@@ -112,10 +118,13 @@ type TryReusingBlobOptions struct {
- // Transports, OTOH, MUST support these fields being zero-valued for types.ImageDestination callers
- // if they use internal/imagedestination/impl.Compat;
- // in that case, they will all be consistently zero-valued.
--
-- EmptyLayer bool // True if the blob is an "empty"/"throwaway" layer, and may not necessarily be physically represented.
-- LayerIndex *int // If the blob is a layer, a zero-based index of the layer within the image; nil otherwise.
-- SrcRef reference.Named // A reference to the source image that contains the input blob.
-+ EmptyLayer bool // True if the blob is an "empty"/"throwaway" layer, and may not necessarily be physically represented.
-+ LayerIndex *int // If the blob is a layer, a zero-based index of the layer within the image; nil otherwise.
-+ SrcRef reference.Named // A reference to the source image that contains the input blob.
-+ PossibleManifestFormats []string // A set of possible manifest formats; at least one should support the reused layer blob.
-+ RequiredCompression *compression.Algorithm // If set, reuse blobs with a matching algorithm as per implementations in internal/imagedestination/impl.helpers.go
-+ OriginalCompression *compression.Algorithm // May be nil to indicate “uncompressed” or “unknown”.
-+ TOCDigest digest.Digest // If specified, the blob can be looked up in the destination also by its TOC digest.
- }
-
- // ReusedBlob is information about a blob reused in a destination.
-@@ -127,6 +136,8 @@ type ReusedBlob struct {
- // a differently-compressed blob.
- CompressionOperation types.LayerCompression // Compress/Decompress, matching the reused blob; PreserveOriginal if N/A
- CompressionAlgorithm *compression.Algorithm // Algorithm if compressed, nil if decompressed or N/A
-+
-+ MatchedByTOCDigest bool // Whether the layer was reused/matched by TOC digest. Used only for UI purposes.
- }
-
- // ImageSourceChunk is a portion of a blob.
-diff --git a/vendor/github.com/containers/image/v5/internal/set/set.go b/vendor/github.com/containers/image/v5/internal/set/set.go
-index 5c7bcabef..acf30343e 100644
---- a/vendor/github.com/containers/image/v5/internal/set/set.go
-+++ b/vendor/github.com/containers/image/v5/internal/set/set.go
-@@ -24,11 +24,17 @@ func NewWithValues[E comparable](values ...E) *Set[E] {
- return s
- }
-
--func (s Set[E]) Add(v E) {
-+func (s *Set[E]) Add(v E) {
- s.m[v] = struct{}{} // Possibly writing the same struct{}{} presence marker again.
- }
-
--func (s Set[E]) Delete(v E) {
-+func (s *Set[E]) AddSlice(slice []E) {
-+ for _, v := range slice {
-+ s.Add(v)
-+ }
-+}
-+
-+func (s *Set[E]) Delete(v E) {
- delete(s.m, v)
- }
-
-diff --git a/vendor/github.com/containers/image/v5/internal/streamdigest/stream_digest.go b/vendor/github.com/containers/image/v5/internal/streamdigest/stream_digest.go
-index 84bb656ac..d5a5436a4 100644
---- a/vendor/github.com/containers/image/v5/internal/streamdigest/stream_digest.go
-+++ b/vendor/github.com/containers/image/v5/internal/streamdigest/stream_digest.go
-@@ -15,7 +15,7 @@ import (
- // It is the caller's responsibility to call the cleanup function, which closes and removes the temporary file.
- // If an error occurs, inputInfo is not modified.
- func ComputeBlobInfo(sys *types.SystemContext, stream io.Reader, inputInfo *types.BlobInfo) (io.Reader, func(), error) {
-- diskBlob, err := os.CreateTemp(tmpdir.TemporaryDirectoryForBigFiles(sys), "stream-blob")
-+ diskBlob, err := tmpdir.CreateBigFileTemp(sys, "stream-blob")
- if err != nil {
- return nil, nil, fmt.Errorf("creating temporary on-disk layer: %w", err)
- }
-diff --git a/vendor/github.com/containers/image/v5/internal/tmpdir/tmpdir.go b/vendor/github.com/containers/image/v5/internal/tmpdir/tmpdir.go
-index 809446e18..bab73ee33 100644
---- a/vendor/github.com/containers/image/v5/internal/tmpdir/tmpdir.go
-+++ b/vendor/github.com/containers/image/v5/internal/tmpdir/tmpdir.go
-@@ -17,10 +17,12 @@ var unixTempDirForBigFiles = builtinUnixTempDirForBigFiles
- // DO NOT change this, instead see unixTempDirForBigFiles above.
- const builtinUnixTempDirForBigFiles = "/var/tmp"
-
-+const prefix = "container_images_"
-+
- // TemporaryDirectoryForBigFiles returns a directory for temporary (big) files.
- // On non Windows systems it avoids the use of os.TempDir(), because the default temporary directory usually falls under /tmp
- // which on systemd based systems could be the unsuitable tmpfs filesystem.
--func TemporaryDirectoryForBigFiles(sys *types.SystemContext) string {
-+func temporaryDirectoryForBigFiles(sys *types.SystemContext) string {
- if sys != nil && sys.BigFilesTemporaryDir != "" {
- return sys.BigFilesTemporaryDir
- }
-@@ -32,3 +34,11 @@ func TemporaryDirectoryForBigFiles(sys *types.SystemContext) string {
- }
- return temporaryDirectoryForBigFiles
- }
-+
-+func CreateBigFileTemp(sys *types.SystemContext, name string) (*os.File, error) {
-+ return os.CreateTemp(temporaryDirectoryForBigFiles(sys), prefix+name)
-+}
-+
-+func MkDirBigFileTemp(sys *types.SystemContext, name string) (string, error) {
-+ return os.MkdirTemp(temporaryDirectoryForBigFiles(sys), prefix+name)
-+}
-diff --git a/vendor/github.com/containers/image/v5/internal/unparsedimage/BUILD.bazel b/vendor/github.com/containers/image/v5/internal/unparsedimage/BUILD.bazel
-new file mode 100644
-index 000000000..445cec901
---- /dev/null
-+++ b/vendor/github.com/containers/image/v5/internal/unparsedimage/BUILD.bazel
-@@ -0,0 +1,14 @@
-+load("@io_bazel_rules_go//go:def.bzl", "go_library")
-+
-+go_library(
-+ name = "go_default_library",
-+ srcs = ["wrapper.go"],
-+ importmap = "kubevirt.io/containerized-data-importer/vendor/github.com/containers/image/v5/internal/unparsedimage",
-+ importpath = "github.com/containers/image/v5/internal/unparsedimage",
-+ visibility = ["//vendor/github.com/containers/image/v5:__subpackages__"],
-+ deps = [
-+ "//vendor/github.com/containers/image/v5/internal/private:go_default_library",
-+ "//vendor/github.com/containers/image/v5/internal/signature:go_default_library",
-+ "//vendor/github.com/containers/image/v5/types:go_default_library",
-+ ],
-+)
-diff --git a/vendor/github.com/containers/image/v5/internal/unparsedimage/wrapper.go b/vendor/github.com/containers/image/v5/internal/unparsedimage/wrapper.go
-new file mode 100644
-index 000000000..fe65b1a98
---- /dev/null
-+++ b/vendor/github.com/containers/image/v5/internal/unparsedimage/wrapper.go
-@@ -0,0 +1,38 @@
-+package unparsedimage
-+
-+import (
-+ "context"
-+
-+ "github.com/containers/image/v5/internal/private"
-+ "github.com/containers/image/v5/internal/signature"
-+ "github.com/containers/image/v5/types"
-+)
-+
-+// wrapped provides the private.UnparsedImage operations
-+// for an object that only implements types.UnparsedImage
-+type wrapped struct {
-+ types.UnparsedImage
-+}
-+
-+// FromPublic(unparsed) returns an object that provides the private.UnparsedImage API
-+func FromPublic(unparsed types.UnparsedImage) private.UnparsedImage {
-+ if unparsed2, ok := unparsed.(private.UnparsedImage); ok {
-+ return unparsed2
-+ }
-+ return &wrapped{
-+ UnparsedImage: unparsed,
-+ }
-+}
-+
-+// UntrustedSignatures is like ImageSource.GetSignaturesWithFormat, but the result is cached; it is OK to call this however often you need.
-+func (w *wrapped) UntrustedSignatures(ctx context.Context) ([]signature.Signature, error) {
-+ sigs, err := w.Signatures(ctx)
-+ if err != nil {
-+ return nil, err
-+ }
-+ res := []signature.Signature{}
-+ for _, sig := range sigs {
-+ res = append(res, signature.SimpleSigningFromBlob(sig))
-+ }
-+ return res, nil
-+}
-diff --git a/vendor/github.com/containers/image/v5/manifest/common.go b/vendor/github.com/containers/image/v5/manifest/common.go
-index 1bdcf3d30..de4628115 100644
---- a/vendor/github.com/containers/image/v5/manifest/common.go
-+++ b/vendor/github.com/containers/image/v5/manifest/common.go
-@@ -55,7 +55,7 @@ func compressionVariantMIMEType(variantTable []compressionMIMETypeSet, mimeType
- if variants != nil {
- name := mtsUncompressed
- if algorithm != nil {
-- name = algorithm.InternalUnstableUndocumentedMIMEQuestionMark()
-+ name = algorithm.BaseVariantName()
- }
- if res, ok := variants[name]; ok {
- if res != mtsUnsupportedMIMEType {
-diff --git a/vendor/github.com/containers/image/v5/manifest/docker_schema1.go b/vendor/github.com/containers/image/v5/manifest/docker_schema1.go
-index 7b9c4b58f..762815570 100644
---- a/vendor/github.com/containers/image/v5/manifest/docker_schema1.go
-+++ b/vendor/github.com/containers/image/v5/manifest/docker_schema1.go
-@@ -10,6 +10,7 @@ import (
- "github.com/containers/image/v5/docker/reference"
- "github.com/containers/image/v5/internal/manifest"
- "github.com/containers/image/v5/internal/set"
-+ compressiontypes "github.com/containers/image/v5/pkg/compression/types"
- "github.com/containers/image/v5/types"
- "github.com/containers/storage/pkg/regexp"
- "github.com/docker/docker/api/types/versions"
-@@ -142,6 +143,15 @@ func (m *Schema1) LayerInfos() []LayerInfo {
- return layers
- }
-
-+const fakeSchema1MIMEType = DockerV2Schema2LayerMediaType // Used only in schema1CompressionMIMETypeSets
-+var schema1CompressionMIMETypeSets = []compressionMIMETypeSet{
-+ {
-+ mtsUncompressed: fakeSchema1MIMEType,
-+ compressiontypes.GzipAlgorithmName: fakeSchema1MIMEType,
-+ compressiontypes.ZstdAlgorithmName: mtsUnsupportedMIMEType,
-+ },
-+}
-+
- // UpdateLayerInfos replaces the original layers with the specified BlobInfos (size+digest+urls), in order (the root layer first, and then successive layered layers)
- func (m *Schema1) UpdateLayerInfos(layerInfos []types.BlobInfo) error {
- // Our LayerInfos includes empty layers (where m.ExtractedV1Compatibility[].ThrowAway), so expect them to be included here as well.
-@@ -150,10 +160,18 @@ func (m *Schema1) UpdateLayerInfos(layerInfos []types.BlobInfo) error {
- }
- m.FSLayers = make([]Schema1FSLayers, len(layerInfos))
- for i, info := range layerInfos {
-+ // There are no MIME types in schema1, but we do a “conversion” here to reject unsupported compression algorithms,
-+ // in a way that is consistent with the other schema implementations.
-+ if _, err := updatedMIMEType(schema1CompressionMIMETypeSets, fakeSchema1MIMEType, info); err != nil {
-+ return fmt.Errorf("preparing updated manifest, layer %q: %w", info.Digest, err)
-+ }
- // (docker push) sets up m.ExtractedV1Compatibility[].{Id,Parent} based on values of info.Digest,
- // but (docker pull) ignores them in favor of computing DiffIDs from uncompressed data, except verifying the child->parent links and uniqueness.
- // So, we don't bother recomputing the IDs in m.History.V1Compatibility.
- m.FSLayers[(len(layerInfos)-1)-i].BlobSum = info.Digest
-+ if info.CryptoOperation != types.PreserveOriginalCrypto {
-+ return fmt.Errorf("encryption change (for layer %q) is not supported in schema1 manifests", info.Digest)
-+ }
- }
- return nil
- }
-diff --git a/vendor/github.com/containers/image/v5/manifest/docker_schema2.go b/vendor/github.com/containers/image/v5/manifest/docker_schema2.go
-index 3c9745dde..20b721f4c 100644
---- a/vendor/github.com/containers/image/v5/manifest/docker_schema2.go
-+++ b/vendor/github.com/containers/image/v5/manifest/docker_schema2.go
-@@ -247,6 +247,9 @@ func (m *Schema2) UpdateLayerInfos(layerInfos []types.BlobInfo) error {
- m.LayersDescriptors[i].Digest = info.Digest
- m.LayersDescriptors[i].Size = info.Size
- m.LayersDescriptors[i].URLs = info.URLs
-+ if info.CryptoOperation != types.PreserveOriginalCrypto {
-+ return fmt.Errorf("encryption change (for layer %q) is not supported in schema2 manifests", info.Digest)
-+ }
- }
- return nil
- }
-diff --git a/vendor/github.com/containers/image/v5/manifest/manifest.go b/vendor/github.com/containers/image/v5/manifest/manifest.go
-index 959aac935..828b8da0b 100644
---- a/vendor/github.com/containers/image/v5/manifest/manifest.go
-+++ b/vendor/github.com/containers/image/v5/manifest/manifest.go
-@@ -16,7 +16,7 @@ import (
- const (
- // DockerV2Schema1MediaType MIME type represents Docker manifest schema 1
- DockerV2Schema1MediaType = manifest.DockerV2Schema1MediaType
-- // DockerV2Schema1MediaType MIME type represents Docker manifest schema 1 with a JWS signature
-+ // DockerV2Schema1SignedMediaType MIME type represents Docker manifest schema 1 with a JWS signature
- DockerV2Schema1SignedMediaType = manifest.DockerV2Schema1SignedMediaType
- // DockerV2Schema2MediaType MIME type represents Docker manifest schema 2
- DockerV2Schema2MediaType = manifest.DockerV2Schema2MediaType
-diff --git a/vendor/github.com/containers/image/v5/manifest/oci.go b/vendor/github.com/containers/image/v5/manifest/oci.go
-index eb2354768..548994ffa 100644
---- a/vendor/github.com/containers/image/v5/manifest/oci.go
-+++ b/vendor/github.com/containers/image/v5/manifest/oci.go
-@@ -42,7 +42,12 @@ type OCI1 struct {
- // useful for validation anyway.
- func SupportedOCI1MediaType(m string) error {
- switch m {
-- case imgspecv1.MediaTypeDescriptor, imgspecv1.MediaTypeImageConfig, imgspecv1.MediaTypeImageLayer, imgspecv1.MediaTypeImageLayerGzip, imgspecv1.MediaTypeImageLayerNonDistributable, imgspecv1.MediaTypeImageLayerNonDistributableGzip, imgspecv1.MediaTypeImageLayerNonDistributableZstd, imgspecv1.MediaTypeImageLayerZstd, imgspecv1.MediaTypeImageManifest, imgspecv1.MediaTypeLayoutHeader, ociencspec.MediaTypeLayerEnc, ociencspec.MediaTypeLayerGzipEnc:
-+ case imgspecv1.MediaTypeDescriptor, imgspecv1.MediaTypeImageConfig,
-+ imgspecv1.MediaTypeImageLayer, imgspecv1.MediaTypeImageLayerGzip, imgspecv1.MediaTypeImageLayerZstd,
-+ imgspecv1.MediaTypeImageLayerNonDistributable, imgspecv1.MediaTypeImageLayerNonDistributableGzip, imgspecv1.MediaTypeImageLayerNonDistributableZstd, //nolint:staticcheck // NonDistributable layers are deprecated, but we want to continue to support manipulating pre-existing images.
-+ imgspecv1.MediaTypeImageManifest,
-+ imgspecv1.MediaTypeLayoutHeader,
-+ ociencspec.MediaTypeLayerEnc, ociencspec.MediaTypeLayerGzipEnc:
- return nil
- default:
- return fmt.Errorf("unsupported OCIv1 media type: %q", m)
-@@ -102,9 +107,9 @@ func (m *OCI1) LayerInfos() []LayerInfo {
-
- var oci1CompressionMIMETypeSets = []compressionMIMETypeSet{
- {
-- mtsUncompressed: imgspecv1.MediaTypeImageLayerNonDistributable,
-- compressiontypes.GzipAlgorithmName: imgspecv1.MediaTypeImageLayerNonDistributableGzip,
-- compressiontypes.ZstdAlgorithmName: imgspecv1.MediaTypeImageLayerNonDistributableZstd,
-+ mtsUncompressed: imgspecv1.MediaTypeImageLayerNonDistributable, //nolint:staticcheck // NonDistributable layers are deprecated, but we want to continue to support manipulating pre-existing images.
-+ compressiontypes.GzipAlgorithmName: imgspecv1.MediaTypeImageLayerNonDistributableGzip, //nolint:staticcheck // NonDistributable layers are deprecated, but we want to continue to support manipulating pre-existing images.
-+ compressiontypes.ZstdAlgorithmName: imgspecv1.MediaTypeImageLayerNonDistributableZstd, //nolint:staticcheck // NonDistributable layers are deprecated, but we want to continue to support manipulating pre-existing images.
- },
- {
- mtsUncompressed: imgspecv1.MediaTypeImageLayer,
-@@ -166,7 +171,8 @@ func getEncryptedMediaType(mediatype string) (string, error) {
- }
- unsuffixedMediatype := strings.Split(mediatype, "+")[0]
- switch unsuffixedMediatype {
-- case DockerV2Schema2LayerMediaType, imgspecv1.MediaTypeImageLayer, imgspecv1.MediaTypeImageLayerNonDistributable:
-+ case DockerV2Schema2LayerMediaType, imgspecv1.MediaTypeImageLayer,
-+ imgspecv1.MediaTypeImageLayerNonDistributable: //nolint:staticcheck // NonDistributable layers are deprecated, but we want to continue to support manipulating pre-existing images.
- return mediatype + "+encrypted", nil
- }
-
-@@ -196,7 +202,7 @@ func (m *OCI1) Inspect(configGetter func(types.BlobInfo) ([]byte, error)) (*type
- // Most software calling this without human intervention is going to expect the values to be realistic and relevant,
- // and is probably better served by failing; we can always re-visit that later if we fail now, but
- // if we started returning some data for OCI artifacts now, we couldn’t start failing in this function later.
-- return nil, manifest.NewNonImageArtifactError(m.Config.MediaType)
-+ return nil, manifest.NewNonImageArtifactError(&m.Manifest)
- }
-
- config, err := configGetter(m.ConfigInfo())
-@@ -229,7 +235,7 @@ func (m *OCI1) Inspect(configGetter func(types.BlobInfo) ([]byte, error)) (*type
- }
-
- // ImageID computes an ID which can uniquely identify this image by its contents.
--func (m *OCI1) ImageID([]digest.Digest) (string, error) {
-+func (m *OCI1) ImageID(diffIDs []digest.Digest) (string, error) {
- // The way m.Config.Digest “uniquely identifies” an image is
- // by containing RootFS.DiffIDs, which identify the layers of the image.
- // For non-image artifacts, the we can’t expect the config to change
-@@ -247,7 +253,7 @@ func (m *OCI1) ImageID([]digest.Digest) (string, error) {
- // (The only known caller of ImageID is storage/storageImageDestination.computeID,
- // which can’t work with non-image artifacts.)
- if m.Config.MediaType != imgspecv1.MediaTypeImageConfig {
-- return "", manifest.NewNonImageArtifactError(m.Config.MediaType)
-+ return "", manifest.NewNonImageArtifactError(&m.Manifest)
- }
-
- if err := m.Config.Digest.Validate(); err != nil {
-diff --git a/vendor/github.com/containers/image/v5/oci/archive/BUILD.bazel b/vendor/github.com/containers/image/v5/oci/archive/BUILD.bazel
-index 320709b0a..c091b22db 100644
---- a/vendor/github.com/containers/image/v5/oci/archive/BUILD.bazel
-+++ b/vendor/github.com/containers/image/v5/oci/archive/BUILD.bazel
-@@ -13,7 +13,6 @@ go_library(
- deps = [
- "//vendor/github.com/containers/image/v5/directory/explicitfilepath:go_default_library",
- "//vendor/github.com/containers/image/v5/docker/reference:go_default_library",
-- "//vendor/github.com/containers/image/v5/internal/blobinfocache:go_default_library",
- "//vendor/github.com/containers/image/v5/internal/image:go_default_library",
- "//vendor/github.com/containers/image/v5/internal/imagedestination:go_default_library",
- "//vendor/github.com/containers/image/v5/internal/imagedestination/impl:go_default_library",
-@@ -27,6 +26,7 @@ go_library(
- "//vendor/github.com/containers/image/v5/transports:go_default_library",
- "//vendor/github.com/containers/image/v5/types:go_default_library",
- "//vendor/github.com/containers/storage/pkg/archive:go_default_library",
-+ "//vendor/github.com/containers/storage/pkg/idtools:go_default_library",
- "//vendor/github.com/opencontainers/go-digest:go_default_library",
- "//vendor/github.com/opencontainers/image-spec/specs-go/v1:go_default_library",
- "//vendor/github.com/sirupsen/logrus:go_default_library",
-diff --git a/vendor/github.com/containers/image/v5/oci/archive/oci_dest.go b/vendor/github.com/containers/image/v5/oci/archive/oci_dest.go
-index 8386c47a3..a3eb5d7a1 100644
---- a/vendor/github.com/containers/image/v5/oci/archive/oci_dest.go
-+++ b/vendor/github.com/containers/image/v5/oci/archive/oci_dest.go
-@@ -6,13 +6,13 @@ import (
- "io"
- "os"
-
-- "github.com/containers/image/v5/internal/blobinfocache"
- "github.com/containers/image/v5/internal/imagedestination"
- "github.com/containers/image/v5/internal/imagedestination/impl"
- "github.com/containers/image/v5/internal/private"
- "github.com/containers/image/v5/internal/signature"
- "github.com/containers/image/v5/types"
- "github.com/containers/storage/pkg/archive"
-+ "github.com/containers/storage/pkg/idtools"
- digest "github.com/opencontainers/go-digest"
- "github.com/sirupsen/logrus"
- )
-@@ -119,8 +119,8 @@ func (d *ociArchiveImageDestination) PutBlobWithOptions(ctx context.Context, str
- // It is available only if SupportsPutBlobPartial().
- // Even if SupportsPutBlobPartial() returns true, the call can fail, in which case the caller
- // should fall back to PutBlobWithOptions.
--func (d *ociArchiveImageDestination) PutBlobPartial(ctx context.Context, chunkAccessor private.BlobChunkAccessor, srcInfo types.BlobInfo, cache blobinfocache.BlobInfoCache2) (private.UploadedBlob, error) {
-- return d.unpackedDest.PutBlobPartial(ctx, chunkAccessor, srcInfo, cache)
-+func (d *ociArchiveImageDestination) PutBlobPartial(ctx context.Context, chunkAccessor private.BlobChunkAccessor, srcInfo types.BlobInfo, options private.PutBlobPartialOptions) (private.UploadedBlob, error) {
-+ return d.unpackedDest.PutBlobPartial(ctx, chunkAccessor, srcInfo, options)
- }
-
- // TryReusingBlobWithOptions checks whether the transport already contains, or can efficiently reuse, a blob, and if so, applies it to the current destination
-@@ -169,10 +169,15 @@ func (d *ociArchiveImageDestination) Commit(ctx context.Context, unparsedTopleve
- // tar converts the directory at src and saves it to dst
- func tarDirectory(src, dst string) error {
- // input is a stream of bytes from the archive of the directory at path
-- input, err := archive.Tar(src, archive.Uncompressed)
-+ input, err := archive.TarWithOptions(src, &archive.TarOptions{
-+ Compression: archive.Uncompressed,
-+ // Don’t include the data about the user account this code is running under.
-+ ChownOpts: &idtools.IDPair{UID: 0, GID: 0},
-+ })
- if err != nil {
- return fmt.Errorf("retrieving stream of bytes from %q: %w", src, err)
- }
-+ defer input.Close()
-
- // creates the tar file
- outFile, err := os.Create(dst)
-diff --git a/vendor/github.com/containers/image/v5/oci/archive/oci_src.go b/vendor/github.com/containers/image/v5/oci/archive/oci_src.go
-index 6c9ee3340..ee8409896 100644
---- a/vendor/github.com/containers/image/v5/oci/archive/oci_src.go
-+++ b/vendor/github.com/containers/image/v5/oci/archive/oci_src.go
-@@ -28,6 +28,18 @@ func (e ImageNotFoundError) Error() string {
- return fmt.Sprintf("no descriptor found for reference %q", e.ref.image)
- }
-
-+// ArchiveFileNotFoundError occurs when the archive file does not exist.
-+type ArchiveFileNotFoundError struct {
-+ // ref is the image reference
-+ ref ociArchiveReference
-+ // path is the file path that was not present
-+ path string
-+}
-+
-+func (e ArchiveFileNotFoundError) Error() string {
-+ return fmt.Sprintf("archive file not found: %q", e.path)
-+}
-+
- type ociArchiveImageSource struct {
- impl.Compat
-
-diff --git a/vendor/github.com/containers/image/v5/oci/archive/oci_transport.go b/vendor/github.com/containers/image/v5/oci/archive/oci_transport.go
-index 53371796f..d5fee3631 100644
---- a/vendor/github.com/containers/image/v5/oci/archive/oci_transport.go
-+++ b/vendor/github.com/containers/image/v5/oci/archive/oci_transport.go
-@@ -4,6 +4,7 @@ import (
- "context"
- "errors"
- "fmt"
-+ "io/fs"
- "os"
- "strings"
-
-@@ -156,7 +157,7 @@ func (t *tempDirOCIRef) deleteTempDir() error {
- // createOCIRef creates the oci reference of the image
- // If SystemContext.BigFilesTemporaryDir not "", overrides the temporary directory to use for storing big files
- func createOCIRef(sys *types.SystemContext, image string) (tempDirOCIRef, error) {
-- dir, err := os.MkdirTemp(tmpdir.TemporaryDirectoryForBigFiles(sys), "oci")
-+ dir, err := tmpdir.MkDirBigFileTemp(sys, "oci")
- if err != nil {
- return tempDirOCIRef{}, fmt.Errorf("creating temp directory: %w", err)
- }
-@@ -171,18 +172,24 @@ func createOCIRef(sys *types.SystemContext, image string) (tempDirOCIRef, error)
-
- // creates the temporary directory and copies the tarred content to it
- func createUntarTempDir(sys *types.SystemContext, ref ociArchiveReference) (tempDirOCIRef, error) {
-+ src := ref.resolvedFile
-+ arch, err := os.Open(src)
-+ if err != nil {
-+ if errors.Is(err, fs.ErrNotExist) {
-+ return tempDirOCIRef{}, ArchiveFileNotFoundError{ref: ref, path: src}
-+ } else {
-+ return tempDirOCIRef{}, err
-+ }
-+ }
-+ defer arch.Close()
-+
- tempDirRef, err := createOCIRef(sys, ref.image)
- if err != nil {
- return tempDirOCIRef{}, fmt.Errorf("creating oci reference: %w", err)
- }
-- src := ref.resolvedFile
- dst := tempDirRef.tempDirectory
-+
- // TODO: This can take quite some time, and should ideally be cancellable using a context.Context.
-- arch, err := os.Open(src)
-- if err != nil {
-- return tempDirOCIRef{}, err
-- }
-- defer arch.Close()
- if err := archive.NewDefaultArchiver().Untar(arch, dst, &archive.TarOptions{NoLchown: true}); err != nil {
- if err := tempDirRef.deleteTempDir(); err != nil {
- return tempDirOCIRef{}, fmt.Errorf("deleting temp directory %q: %w", tempDirRef.tempDirectory, err)
-diff --git a/vendor/github.com/containers/image/v5/oci/layout/BUILD.bazel b/vendor/github.com/containers/image/v5/oci/layout/BUILD.bazel
-index 46d30e5d6..875eb59d3 100644
---- a/vendor/github.com/containers/image/v5/oci/layout/BUILD.bazel
-+++ b/vendor/github.com/containers/image/v5/oci/layout/BUILD.bazel
-@@ -3,6 +3,7 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library")
- go_library(
- name = "go_default_library",
- srcs = [
-+ "oci_delete.go",
- "oci_dest.go",
- "oci_src.go",
- "oci_transport.go",
-@@ -21,6 +22,7 @@ go_library(
- "//vendor/github.com/containers/image/v5/internal/manifest:go_default_library",
- "//vendor/github.com/containers/image/v5/internal/private:go_default_library",
- "//vendor/github.com/containers/image/v5/internal/putblobdigest:go_default_library",
-+ "//vendor/github.com/containers/image/v5/internal/set:go_default_library",
- "//vendor/github.com/containers/image/v5/oci/internal:go_default_library",
- "//vendor/github.com/containers/image/v5/pkg/tlsclientconfig:go_default_library",
- "//vendor/github.com/containers/image/v5/transports:go_default_library",
-@@ -29,5 +31,7 @@ go_library(
- "//vendor/github.com/opencontainers/go-digest:go_default_library",
- "//vendor/github.com/opencontainers/image-spec/specs-go:go_default_library",
- "//vendor/github.com/opencontainers/image-spec/specs-go/v1:go_default_library",
-+ "//vendor/github.com/sirupsen/logrus:go_default_library",
-+ "//vendor/golang.org/x/exp/slices:go_default_library",
- ],
- )
-diff --git a/vendor/github.com/containers/image/v5/oci/layout/oci_delete.go b/vendor/github.com/containers/image/v5/oci/layout/oci_delete.go
-new file mode 100644
-index 000000000..8dd54f255
---- /dev/null
-+++ b/vendor/github.com/containers/image/v5/oci/layout/oci_delete.go
-@@ -0,0 +1,240 @@
-+package layout
-+
-+import (
-+ "context"
-+ "encoding/json"
-+ "fmt"
-+ "io/fs"
-+ "os"
-+
-+ "github.com/containers/image/v5/internal/set"
-+ "github.com/containers/image/v5/types"
-+ digest "github.com/opencontainers/go-digest"
-+ imgspecv1 "github.com/opencontainers/image-spec/specs-go/v1"
-+ "github.com/sirupsen/logrus"
-+ "golang.org/x/exp/slices"
-+)
-+
-+// DeleteImage deletes the named image from the directory, if supported.
-+func (ref ociReference) DeleteImage(ctx context.Context, sys *types.SystemContext) error {
-+ sharedBlobsDir := ""
-+ if sys != nil && sys.OCISharedBlobDirPath != "" {
-+ sharedBlobsDir = sys.OCISharedBlobDirPath
-+ }
-+
-+ descriptor, descriptorIndex, err := ref.getManifestDescriptor()
-+ if err != nil {
-+ return err
-+ }
-+
-+ var blobsUsedByImage map[digest.Digest]int
-+
-+ switch descriptor.MediaType {
-+ case imgspecv1.MediaTypeImageManifest:
-+ blobsUsedByImage, err = ref.getBlobsUsedInSingleImage(&descriptor, sharedBlobsDir)
-+ case imgspecv1.MediaTypeImageIndex:
-+ blobsUsedByImage, err = ref.getBlobsUsedInImageIndex(&descriptor, sharedBlobsDir)
-+ default:
-+ return fmt.Errorf("unsupported mediaType in index: %q", descriptor.MediaType)
-+ }
-+ if err != nil {
-+ return err
-+ }
-+
-+ blobsToDelete, err := ref.getBlobsToDelete(blobsUsedByImage, sharedBlobsDir)
-+ if err != nil {
-+ return err
-+ }
-+
-+ err = ref.deleteBlobs(blobsToDelete)
-+ if err != nil {
-+ return err
-+ }
-+
-+ return ref.deleteReferenceFromIndex(descriptorIndex)
-+}
-+
-+func (ref ociReference) getBlobsUsedInSingleImage(descriptor *imgspecv1.Descriptor, sharedBlobsDir string) (map[digest.Digest]int, error) {
-+ manifest, err := ref.getManifest(descriptor, sharedBlobsDir)
-+ if err != nil {
-+ return nil, err
-+ }
-+ blobsUsedInManifest := ref.getBlobsUsedInManifest(manifest)
-+ blobsUsedInManifest[descriptor.Digest]++ // Add the current manifest to the list of blobs used by this reference
-+
-+ return blobsUsedInManifest, nil
-+}
-+
-+func (ref ociReference) getBlobsUsedInImageIndex(descriptor *imgspecv1.Descriptor, sharedBlobsDir string) (map[digest.Digest]int, error) {
-+ blobPath, err := ref.blobPath(descriptor.Digest, sharedBlobsDir)
-+ if err != nil {
-+ return nil, err
-+ }
-+ index, err := parseIndex(blobPath)
-+ if err != nil {
-+ return nil, err
-+ }
-+
-+ blobsUsedInImageRefIndex := make(map[digest.Digest]int)
-+ err = ref.addBlobsUsedInIndex(blobsUsedInImageRefIndex, index, sharedBlobsDir)
-+ if err != nil {
-+ return nil, err
-+ }
-+ blobsUsedInImageRefIndex[descriptor.Digest]++ // Add the nested index in the list of blobs used by this reference
-+
-+ return blobsUsedInImageRefIndex, nil
-+}
-+
-+// Updates a map of digest with the usage count, so a blob that is referenced three times will have 3 in the map
-+func (ref ociReference) addBlobsUsedInIndex(destination map[digest.Digest]int, index *imgspecv1.Index, sharedBlobsDir string) error {
-+ for _, descriptor := range index.Manifests {
-+ destination[descriptor.Digest]++
-+ switch descriptor.MediaType {
-+ case imgspecv1.MediaTypeImageManifest:
-+ manifest, err := ref.getManifest(&descriptor, sharedBlobsDir)
-+ if err != nil {
-+ return err
-+ }
-+ for digest, count := range ref.getBlobsUsedInManifest(manifest) {
-+ destination[digest] += count
-+ }
-+ case imgspecv1.MediaTypeImageIndex:
-+ blobPath, err := ref.blobPath(descriptor.Digest, sharedBlobsDir)
-+ if err != nil {
-+ return err
-+ }
-+ index, err := parseIndex(blobPath)
-+ if err != nil {
-+ return err
-+ }
-+ err = ref.addBlobsUsedInIndex(destination, index, sharedBlobsDir)
-+ if err != nil {
-+ return err
-+ }
-+ default:
-+ return fmt.Errorf("unsupported mediaType in index: %q", descriptor.MediaType)
-+ }
-+ }
-+
-+ return nil
-+}
-+
-+func (ref ociReference) getBlobsUsedInManifest(manifest *imgspecv1.Manifest) map[digest.Digest]int {
-+ blobsUsedInManifest := make(map[digest.Digest]int, 0)
-+
-+ blobsUsedInManifest[manifest.Config.Digest]++
-+ for _, layer := range manifest.Layers {
-+ blobsUsedInManifest[layer.Digest]++
-+ }
-+
-+ return blobsUsedInManifest
-+}
-+
-+// This takes in a map of the digest and their usage count in the manifest to be deleted
-+// It will compare it to the digest usage in the root index, and return a set of the blobs that can be safely deleted
-+func (ref ociReference) getBlobsToDelete(blobsUsedByDescriptorToDelete map[digest.Digest]int, sharedBlobsDir string) (*set.Set[digest.Digest], error) {
-+ rootIndex, err := ref.getIndex()
-+ if err != nil {
-+ return nil, err
-+ }
-+ blobsUsedInRootIndex := make(map[digest.Digest]int)
-+ err = ref.addBlobsUsedInIndex(blobsUsedInRootIndex, rootIndex, sharedBlobsDir)
-+ if err != nil {
-+ return nil, err
-+ }
-+
-+ blobsToDelete := set.New[digest.Digest]()
-+
-+ for digest, count := range blobsUsedInRootIndex {
-+ if count-blobsUsedByDescriptorToDelete[digest] == 0 {
-+ blobsToDelete.Add(digest)
-+ }
-+ }
-+
-+ return blobsToDelete, nil
-+}
-+
-+// This transport never generates layouts where blobs for an image are both in the local blobs directory
-+// and the shared one; it’s either one or the other, depending on how OCISharedBlobDirPath is set.
-+//
-+// But we can’t correctly compute use counts for OCISharedBlobDirPath (because we don't know what
-+// the other layouts sharing that directory are, and we might not even have permission to read them),
-+// so we can’t really delete any blobs in that case.
-+// Checking the _local_ blobs directory, and deleting blobs from there, doesn't really hurt,
-+// in case the layout was created using some other tool or without OCISharedBlobDirPath set, so let's silently
-+// check for local blobs (but we should make no noise if the blobs are actually in the shared directory).
-+//
-+// So, NOTE: the blobPath() call below hard-codes "" even in calls where OCISharedBlobDirPath is set
-+func (ref ociReference) deleteBlobs(blobsToDelete *set.Set[digest.Digest]) error {
-+ for _, digest := range blobsToDelete.Values() {
-+ blobPath, err := ref.blobPath(digest, "") //Only delete in the local directory, see comment above
-+ if err != nil {
-+ return err
-+ }
-+ err = deleteBlob(blobPath)
-+ if err != nil {
-+ return err
-+ }
-+ }
-+
-+ return nil
-+}
-+
-+func deleteBlob(blobPath string) error {
-+ logrus.Debug(fmt.Sprintf("Deleting blob at %q", blobPath))
-+
-+ err := os.Remove(blobPath)
-+ if err != nil && !os.IsNotExist(err) {
-+ return err
-+ } else {
-+ return nil
-+ }
-+}
-+
-+func (ref ociReference) deleteReferenceFromIndex(referenceIndex int) error {
-+ index, err := ref.getIndex()
-+ if err != nil {
-+ return err
-+ }
-+
-+ index.Manifests = slices.Delete(index.Manifests, referenceIndex, referenceIndex+1)
-+
-+ return saveJSON(ref.indexPath(), index)
-+}
-+
-+func saveJSON(path string, content any) error {
-+ // If the file already exists, get its mode to preserve it
-+ var mode fs.FileMode
-+ existingfi, err := os.Stat(path)
-+ if err != nil {
-+ if !os.IsNotExist(err) {
-+ return err
-+ } else { // File does not exist, use default mode
-+ mode = 0644
-+ }
-+ } else {
-+ mode = existingfi.Mode()
-+ }
-+
-+ file, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, mode)
-+ if err != nil {
-+ return err
-+ }
-+ defer file.Close()
-+
-+ return json.NewEncoder(file).Encode(content)
-+}
-+
-+func (ref ociReference) getManifest(descriptor *imgspecv1.Descriptor, sharedBlobsDir string) (*imgspecv1.Manifest, error) {
-+ manifestPath, err := ref.blobPath(descriptor.Digest, sharedBlobsDir)
-+ if err != nil {
-+ return nil, err
-+ }
-+
-+ manifest, err := parseJSON[imgspecv1.Manifest](manifestPath)
-+ if err != nil {
-+ return nil, err
-+ }
-+
-+ return manifest, nil
-+}
-diff --git a/vendor/github.com/containers/image/v5/oci/layout/oci_dest.go b/vendor/github.com/containers/image/v5/oci/layout/oci_dest.go
-index 0a9e4eab9..305d8c9c7 100644
---- a/vendor/github.com/containers/image/v5/oci/layout/oci_dest.go
-+++ b/vendor/github.com/containers/image/v5/oci/layout/oci_dest.go
-@@ -19,6 +19,7 @@ import (
- digest "github.com/opencontainers/go-digest"
- imgspec "github.com/opencontainers/image-spec/specs-go"
- imgspecv1 "github.com/opencontainers/image-spec/specs-go/v1"
-+ "golang.org/x/exp/slices"
- )
-
- type ociImageDestination struct {
-@@ -84,7 +85,7 @@ func newImageDestination(sys *types.SystemContext, ref ociReference) (private.Im
- // Per the OCI image specification, layouts MUST have a "blobs" subdirectory,
- // but it MAY be empty (e.g. if we never end up calling PutBlob)
- // https://github.com/opencontainers/image-spec/blame/7c889fafd04a893f5c5f50b7ab9963d5d64e5242/image-layout.md#L19
-- if err := ensureDirectoryExists(filepath.Join(d.ref.dir, "blobs")); err != nil {
-+ if err := ensureDirectoryExists(filepath.Join(d.ref.dir, imgspecv1.ImageBlobsDir)); err != nil {
- return nil, err
- }
- return d, nil
-@@ -172,6 +173,9 @@ func (d *ociImageDestination) PutBlobWithOptions(ctx context.Context, stream io.
- // If the blob has been successfully reused, returns (true, info, nil).
- // If the transport can not reuse the requested blob, TryReusingBlob returns (false, {}, nil); it returns a non-nil error only on an unexpected failure.
- func (d *ociImageDestination) TryReusingBlobWithOptions(ctx context.Context, info types.BlobInfo, options private.TryReusingBlobOptions) (bool, private.ReusedBlob, error) {
-+ if !impl.OriginalCandidateMatchesTryReusingBlobOptions(options) {
-+ return false, private.ReusedBlob{}, nil
-+ }
- if info.Digest == "" {
- return false, private.ReusedBlob{}, errors.New("Can not check for a blob with unknown digest")
- }
-@@ -268,8 +272,8 @@ func (d *ociImageDestination) addManifest(desc *imgspecv1.Descriptor) {
- return
- }
- }
-- // It's a new entry to be added to the index.
-- d.index.Manifests = append(d.index.Manifests, *desc)
-+ // It's a new entry to be added to the index. Use slices.Clone() to avoid a remote dependency on how d.index was created.
-+ d.index.Manifests = append(slices.Clone(d.index.Manifests), *desc)
- }
-
- // Commit marks the process of storing the image as successful and asks for the image to be persisted.
-@@ -280,7 +284,13 @@ func (d *ociImageDestination) addManifest(desc *imgspecv1.Descriptor) {
- // - Uploaded data MAY be visible to others before Commit() is called
- // - Uploaded data MAY be removed or MAY remain around if Close() is called without Commit() (i.e. rollback is allowed but not guaranteed)
- func (d *ociImageDestination) Commit(context.Context, types.UnparsedImage) error {
-- if err := os.WriteFile(d.ref.ociLayoutPath(), []byte(`{"imageLayoutVersion": "1.0.0"}`), 0644); err != nil {
-+ layoutBytes, err := json.Marshal(imgspecv1.ImageLayout{
-+ Version: imgspecv1.ImageLayoutVersion,
-+ })
-+ if err != nil {
-+ return err
-+ }
-+ if err := os.WriteFile(d.ref.ociLayoutPath(), layoutBytes, 0644); err != nil {
- return err
- }
- indexJSON, err := json.Marshal(d.index)
-diff --git a/vendor/github.com/containers/image/v5/oci/layout/oci_src.go b/vendor/github.com/containers/image/v5/oci/layout/oci_src.go
-index 6b423f3b0..f5f1debc9 100644
---- a/vendor/github.com/containers/image/v5/oci/layout/oci_src.go
-+++ b/vendor/github.com/containers/image/v5/oci/layout/oci_src.go
-@@ -60,7 +60,7 @@ func newImageSource(sys *types.SystemContext, ref ociReference) (private.ImageSo
-
- client := &http.Client{}
- client.Transport = tr
-- descriptor, err := ref.getManifestDescriptor()
-+ descriptor, _, err := ref.getManifestDescriptor()
- if err != nil {
- return nil, err
- }
-diff --git a/vendor/github.com/containers/image/v5/oci/layout/oci_transport.go b/vendor/github.com/containers/image/v5/oci/layout/oci_transport.go
-index 4a4ab9b2c..1e26dc524 100644
---- a/vendor/github.com/containers/image/v5/oci/layout/oci_transport.go
-+++ b/vendor/github.com/containers/image/v5/oci/layout/oci_transport.go
-@@ -160,44 +160,56 @@ func (ref ociReference) NewImage(ctx context.Context, sys *types.SystemContext)
- // getIndex returns a pointer to the index references by this ociReference. If an error occurs opening an index nil is returned together
- // with an error.
- func (ref ociReference) getIndex() (*imgspecv1.Index, error) {
-- indexJSON, err := os.Open(ref.indexPath())
-+ return parseIndex(ref.indexPath())
-+}
-+
-+func parseIndex(path string) (*imgspecv1.Index, error) {
-+ return parseJSON[imgspecv1.Index](path)
-+}
-+
-+func parseJSON[T any](path string) (*T, error) {
-+ content, err := os.Open(path)
- if err != nil {
- return nil, err
- }
-- defer indexJSON.Close()
-+ defer content.Close()
-
-- index := &imgspecv1.Index{}
-- if err := json.NewDecoder(indexJSON).Decode(index); err != nil {
-+ obj := new(T)
-+ if err := json.NewDecoder(content).Decode(obj); err != nil {
- return nil, err
- }
-- return index, nil
-+ return obj, nil
- }
-
--func (ref ociReference) getManifestDescriptor() (imgspecv1.Descriptor, error) {
-+func (ref ociReference) getManifestDescriptor() (imgspecv1.Descriptor, int, error) {
- index, err := ref.getIndex()
- if err != nil {
-- return imgspecv1.Descriptor{}, err
-+ return imgspecv1.Descriptor{}, -1, err
- }
-
- if ref.image == "" {
- // return manifest if only one image is in the oci directory
- if len(index.Manifests) != 1 {
- // ask user to choose image when more than one image in the oci directory
-- return imgspecv1.Descriptor{}, ErrMoreThanOneImage
-+ return imgspecv1.Descriptor{}, -1, ErrMoreThanOneImage
- }
-- return index.Manifests[0], nil
-+ return index.Manifests[0], 0, nil
- } else {
- // if image specified, look through all manifests for a match
-- for _, md := range index.Manifests {
-- if md.MediaType != imgspecv1.MediaTypeImageManifest && md.MediaType != imgspecv1.MediaTypeImageIndex {
-- continue
-- }
-+ var unsupportedMIMETypes []string
-+ for i, md := range index.Manifests {
- if refName, ok := md.Annotations[imgspecv1.AnnotationRefName]; ok && refName == ref.image {
-- return md, nil
-+ if md.MediaType == imgspecv1.MediaTypeImageManifest || md.MediaType == imgspecv1.MediaTypeImageIndex {
-+ return md, i, nil
-+ }
-+ unsupportedMIMETypes = append(unsupportedMIMETypes, md.MediaType)
- }
- }
-+ if len(unsupportedMIMETypes) != 0 {
-+ return imgspecv1.Descriptor{}, -1, fmt.Errorf("reference %q matches unsupported manifest MIME types %q", ref.image, unsupportedMIMETypes)
-+ }
- }
-- return imgspecv1.Descriptor{}, ImageNotFoundError{ref}
-+ return imgspecv1.Descriptor{}, -1, ImageNotFoundError{ref}
- }
-
- // LoadManifestDescriptor loads the manifest descriptor to be used to retrieve the image name
-@@ -207,7 +219,8 @@ func LoadManifestDescriptor(imgRef types.ImageReference) (imgspecv1.Descriptor,
- if !ok {
- return imgspecv1.Descriptor{}, errors.New("error typecasting, need type ociRef")
- }
-- return ociRef.getManifestDescriptor()
-+ md, _, err := ociRef.getManifestDescriptor()
-+ return md, err
- }
-
- // NewImageSource returns a types.ImageSource for this reference.
-@@ -222,19 +235,14 @@ func (ref ociReference) NewImageDestination(ctx context.Context, sys *types.Syst
- return newImageDestination(sys, ref)
- }
-
--// DeleteImage deletes the named image from the registry, if supported.
--func (ref ociReference) DeleteImage(ctx context.Context, sys *types.SystemContext) error {
-- return errors.New("Deleting images not implemented for oci: images")
--}
--
- // ociLayoutPath returns a path for the oci-layout within a directory using OCI conventions.
- func (ref ociReference) ociLayoutPath() string {
-- return filepath.Join(ref.dir, "oci-layout")
-+ return filepath.Join(ref.dir, imgspecv1.ImageLayoutFile)
- }
-
- // indexPath returns a path for the index.json within a directory using OCI conventions.
- func (ref ociReference) indexPath() string {
-- return filepath.Join(ref.dir, "index.json")
-+ return filepath.Join(ref.dir, imgspecv1.ImageIndexFile)
- }
-
- // blobPath returns a path for a blob within a directory using OCI image-layout conventions.
-@@ -242,9 +250,11 @@ func (ref ociReference) blobPath(digest digest.Digest, sharedBlobDir string) (st
- if err := digest.Validate(); err != nil {
- return "", fmt.Errorf("unexpected digest reference %s: %w", digest, err)
- }
-- blobDir := filepath.Join(ref.dir, "blobs")
-+ var blobDir string
- if sharedBlobDir != "" {
- blobDir = sharedBlobDir
-+ } else {
-+ blobDir = filepath.Join(ref.dir, imgspecv1.ImageBlobsDir)
- }
- return filepath.Join(blobDir, digest.Algorithm().String(), digest.Hex()), nil
- }
-diff --git a/vendor/github.com/containers/image/v5/pkg/blobinfocache/BUILD.bazel b/vendor/github.com/containers/image/v5/pkg/blobinfocache/BUILD.bazel
-index 52421c34e..ee5744be9 100644
---- a/vendor/github.com/containers/image/v5/pkg/blobinfocache/BUILD.bazel
-+++ b/vendor/github.com/containers/image/v5/pkg/blobinfocache/BUILD.bazel
-@@ -8,8 +8,8 @@ go_library(
- visibility = ["//visibility:public"],
- deps = [
- "//vendor/github.com/containers/image/v5/internal/rootless:go_default_library",
-- "//vendor/github.com/containers/image/v5/pkg/blobinfocache/boltdb:go_default_library",
- "//vendor/github.com/containers/image/v5/pkg/blobinfocache/memory:go_default_library",
-+ "//vendor/github.com/containers/image/v5/pkg/blobinfocache/sqlite:go_default_library",
- "//vendor/github.com/containers/image/v5/types:go_default_library",
- "//vendor/github.com/sirupsen/logrus:go_default_library",
- ],
-diff --git a/vendor/github.com/containers/image/v5/pkg/blobinfocache/boltdb/boltdb.go b/vendor/github.com/containers/image/v5/pkg/blobinfocache/boltdb/boltdb.go
-deleted file mode 100644
-index a472efd95..000000000
---- a/vendor/github.com/containers/image/v5/pkg/blobinfocache/boltdb/boltdb.go
-+++ /dev/null
-@@ -1,393 +0,0 @@
--// Package boltdb implements a BlobInfoCache backed by BoltDB.
--package boltdb
--
--import (
-- "fmt"
-- "os"
-- "sync"
-- "time"
--
-- "github.com/containers/image/v5/internal/blobinfocache"
-- "github.com/containers/image/v5/pkg/blobinfocache/internal/prioritize"
-- "github.com/containers/image/v5/types"
-- "github.com/opencontainers/go-digest"
-- "github.com/sirupsen/logrus"
-- bolt "go.etcd.io/bbolt"
--)
--
--var (
-- // NOTE: There is no versioning data inside the file; this is a “cache”, so on an incompatible format upgrade
-- // we can simply start over with a different filename; update blobInfoCacheFilename.
--
-- // FIXME: For CRI-O, does this need to hide information between different users?
--
-- // uncompressedDigestBucket stores a mapping from any digest to an uncompressed digest.
-- uncompressedDigestBucket = []byte("uncompressedDigest")
-- // digestCompressorBucket stores a mapping from any digest to a compressor, or blobinfocache.Uncompressed
-- // It may not exist in caches created by older versions, even if uncompressedDigestBucket is present.
-- digestCompressorBucket = []byte("digestCompressor")
-- // digestByUncompressedBucket stores a bucket per uncompressed digest, with the bucket containing a set of digests for that uncompressed digest
-- // (as a set of key=digest, value="" pairs)
-- digestByUncompressedBucket = []byte("digestByUncompressed")
-- // knownLocationsBucket stores a nested structure of buckets, keyed by (transport name, scope string, blob digest), ultimately containing
-- // a bucket of (opaque location reference, BinaryMarshaller-encoded time.Time value).
-- knownLocationsBucket = []byte("knownLocations")
--)
--
--// Concurrency:
--// See https://www.sqlite.org/src/artifact/c230a7a24?ln=994-1081 for all the issues with locks, which make it extremely
--// difficult to use a single BoltDB file from multiple threads/goroutines inside a process. So, we punt and only allow one at a time.
--
--// pathLock contains a lock for a specific BoltDB database path.
--type pathLock struct {
-- refCount int64 // Number of threads/goroutines owning or waiting on this lock. Protected by global pathLocksMutex, NOT by the mutex field below!
-- mutex sync.Mutex // Owned by the thread/goroutine allowed to access the BoltDB database.
--}
--
--var (
-- // pathLocks contains a lock for each currently open file.
-- // This must be global so that independently created instances of boltDBCache exclude each other.
-- // The map is protected by pathLocksMutex.
-- // FIXME? Should this be based on device:inode numbers instead of paths instead?
-- pathLocks = map[string]*pathLock{}
-- pathLocksMutex = sync.Mutex{}
--)
--
--// lockPath obtains the pathLock for path.
--// The caller must call unlockPath eventually.
--func lockPath(path string) {
-- pl := func() *pathLock { // A scope for defer
-- pathLocksMutex.Lock()
-- defer pathLocksMutex.Unlock()
-- pl, ok := pathLocks[path]
-- if ok {
-- pl.refCount++
-- } else {
-- pl = &pathLock{refCount: 1, mutex: sync.Mutex{}}
-- pathLocks[path] = pl
-- }
-- return pl
-- }()
-- pl.mutex.Lock()
--}
--
--// unlockPath releases the pathLock for path.
--func unlockPath(path string) {
-- pathLocksMutex.Lock()
-- defer pathLocksMutex.Unlock()
-- pl, ok := pathLocks[path]
-- if !ok {
-- // Should this return an error instead? BlobInfoCache ultimately ignores errors…
-- panic(fmt.Sprintf("Internal error: unlocking nonexistent lock for path %s", path))
-- }
-- pl.mutex.Unlock()
-- pl.refCount--
-- if pl.refCount == 0 {
-- delete(pathLocks, path)
-- }
--}
--
--// cache is a BlobInfoCache implementation which uses a BoltDB file at the specified path.
--//
--// Note that we don’t keep the database open across operations, because that would lock the file and block any other
--// users; instead, we need to open/close it for every single write or lookup.
--type cache struct {
-- path string
--}
--
--// New returns a BlobInfoCache implementation which uses a BoltDB file at path.
--//
--// Most users should call blobinfocache.DefaultCache instead.
--func New(path string) types.BlobInfoCache {
-- return new2(path)
--}
--func new2(path string) *cache {
-- return &cache{path: path}
--}
--
--// view returns runs the specified fn within a read-only transaction on the database.
--func (bdc *cache) view(fn func(tx *bolt.Tx) error) (retErr error) {
-- // bolt.Open(bdc.path, 0600, &bolt.Options{ReadOnly: true}) will, if the file does not exist,
-- // nevertheless create it, but with an O_RDONLY file descriptor, try to initialize it, and fail — while holding
-- // a read lock, blocking any future writes.
-- // Hence this preliminary check, which is RACY: Another process could remove the file
-- // between the Lstat call and opening the database.
-- if _, err := os.Lstat(bdc.path); err != nil && os.IsNotExist(err) {
-- return err
-- }
--
-- lockPath(bdc.path)
-- defer unlockPath(bdc.path)
-- db, err := bolt.Open(bdc.path, 0600, &bolt.Options{ReadOnly: true})
-- if err != nil {
-- return err
-- }
-- defer func() {
-- if err := db.Close(); retErr == nil && err != nil {
-- retErr = err
-- }
-- }()
--
-- return db.View(fn)
--}
--
--// update returns runs the specified fn within a read-write transaction on the database.
--func (bdc *cache) update(fn func(tx *bolt.Tx) error) (retErr error) {
-- lockPath(bdc.path)
-- defer unlockPath(bdc.path)
-- db, err := bolt.Open(bdc.path, 0600, nil)
-- if err != nil {
-- return err
-- }
-- defer func() {
-- if err := db.Close(); retErr == nil && err != nil {
-- retErr = err
-- }
-- }()
--
-- return db.Update(fn)
--}
--
--// uncompressedDigest implements BlobInfoCache.UncompressedDigest within the provided read-only transaction.
--func (bdc *cache) uncompressedDigest(tx *bolt.Tx, anyDigest digest.Digest) digest.Digest {
-- if b := tx.Bucket(uncompressedDigestBucket); b != nil {
-- if uncompressedBytes := b.Get([]byte(anyDigest.String())); uncompressedBytes != nil {
-- d, err := digest.Parse(string(uncompressedBytes))
-- if err == nil {
-- return d
-- }
-- // FIXME? Log err (but throttle the log volume on repeated accesses)?
-- }
-- }
-- // Presence in digestsByUncompressedBucket implies that anyDigest must already refer to an uncompressed digest.
-- // This way we don't have to waste storage space with trivial (uncompressed, uncompressed) mappings
-- // when we already record a (compressed, uncompressed) pair.
-- if b := tx.Bucket(digestByUncompressedBucket); b != nil {
-- if b = b.Bucket([]byte(anyDigest.String())); b != nil {
-- c := b.Cursor()
-- if k, _ := c.First(); k != nil { // The bucket is non-empty
-- return anyDigest
-- }
-- }
-- }
-- return ""
--}
--
--// UncompressedDigest returns an uncompressed digest corresponding to anyDigest.
--// May return anyDigest if it is known to be uncompressed.
--// Returns "" if nothing is known about the digest (it may be compressed or uncompressed).
--func (bdc *cache) UncompressedDigest(anyDigest digest.Digest) digest.Digest {
-- var res digest.Digest
-- if err := bdc.view(func(tx *bolt.Tx) error {
-- res = bdc.uncompressedDigest(tx, anyDigest)
-- return nil
-- }); err != nil { // Including os.IsNotExist(err)
-- return "" // FIXME? Log err (but throttle the log volume on repeated accesses)?
-- }
-- return res
--}
--
--// RecordDigestUncompressedPair records that the uncompressed version of anyDigest is uncompressed.
--// It’s allowed for anyDigest == uncompressed.
--// WARNING: Only call this for LOCALLY VERIFIED data; don’t record a digest pair just because some remote author claims so (e.g.
--// because a manifest/config pair exists); otherwise the cache could be poisoned and allow substituting unexpected blobs.
--// (Eventually, the DiffIDs in image config could detect the substitution, but that may be too late, and not all image formats contain that data.)
--func (bdc *cache) RecordDigestUncompressedPair(anyDigest digest.Digest, uncompressed digest.Digest) {
-- _ = bdc.update(func(tx *bolt.Tx) error {
-- b, err := tx.CreateBucketIfNotExists(uncompressedDigestBucket)
-- if err != nil {
-- return err
-- }
-- key := []byte(anyDigest.String())
-- if previousBytes := b.Get(key); previousBytes != nil {
-- previous, err := digest.Parse(string(previousBytes))
-- if err != nil {
-- return err
-- }
-- if previous != uncompressed {
-- logrus.Warnf("Uncompressed digest for blob %s previously recorded as %s, now %s", anyDigest, previous, uncompressed)
-- }
-- }
-- if err := b.Put(key, []byte(uncompressed.String())); err != nil {
-- return err
-- }
--
-- b, err = tx.CreateBucketIfNotExists(digestByUncompressedBucket)
-- if err != nil {
-- return err
-- }
-- b, err = b.CreateBucketIfNotExists([]byte(uncompressed.String()))
-- if err != nil {
-- return err
-- }
-- if err := b.Put([]byte(anyDigest.String()), []byte{}); err != nil { // Possibly writing the same []byte{} presence marker again.
-- return err
-- }
-- return nil
-- }) // FIXME? Log error (but throttle the log volume on repeated accesses)?
--}
--
--// RecordDigestCompressorName records that the blob with digest anyDigest was compressed with the specified
--// compressor, or is blobinfocache.Uncompressed.
--// WARNING: Only call this for LOCALLY VERIFIED data; don’t record a digest pair just because some remote author claims so (e.g.
--// because a manifest/config pair exists); otherwise the cache could be poisoned and allow substituting unexpected blobs.
--// (Eventually, the DiffIDs in image config could detect the substitution, but that may be too late, and not all image formats contain that data.)
--func (bdc *cache) RecordDigestCompressorName(anyDigest digest.Digest, compressorName string) {
-- _ = bdc.update(func(tx *bolt.Tx) error {
-- b, err := tx.CreateBucketIfNotExists(digestCompressorBucket)
-- if err != nil {
-- return err
-- }
-- key := []byte(anyDigest.String())
-- if previousBytes := b.Get(key); previousBytes != nil {
-- if string(previousBytes) != compressorName {
-- logrus.Warnf("Compressor for blob with digest %s previously recorded as %s, now %s", anyDigest, string(previousBytes), compressorName)
-- }
-- }
-- if compressorName == blobinfocache.UnknownCompression {
-- return b.Delete(key)
-- }
-- return b.Put(key, []byte(compressorName))
-- }) // FIXME? Log error (but throttle the log volume on repeated accesses)?
--}
--
--// RecordKnownLocation records that a blob with the specified digest exists within the specified (transport, scope) scope,
--// and can be reused given the opaque location data.
--func (bdc *cache) RecordKnownLocation(transport types.ImageTransport, scope types.BICTransportScope, blobDigest digest.Digest, location types.BICLocationReference) {
-- _ = bdc.update(func(tx *bolt.Tx) error {
-- b, err := tx.CreateBucketIfNotExists(knownLocationsBucket)
-- if err != nil {
-- return err
-- }
-- b, err = b.CreateBucketIfNotExists([]byte(transport.Name()))
-- if err != nil {
-- return err
-- }
-- b, err = b.CreateBucketIfNotExists([]byte(scope.Opaque))
-- if err != nil {
-- return err
-- }
-- b, err = b.CreateBucketIfNotExists([]byte(blobDigest.String()))
-- if err != nil {
-- return err
-- }
-- value, err := time.Now().MarshalBinary()
-- if err != nil {
-- return err
-- }
-- if err := b.Put([]byte(location.Opaque), value); err != nil { // Possibly overwriting an older entry.
-- return err
-- }
-- return nil
-- }) // FIXME? Log error (but throttle the log volume on repeated accesses)?
--}
--
--// appendReplacementCandidates creates prioritize.CandidateWithTime values for digest in scopeBucket with corresponding compression info from compressionBucket (if compressionBucket is not nil), and returns the result of appending them to candidates.
--func (bdc *cache) appendReplacementCandidates(candidates []prioritize.CandidateWithTime, scopeBucket, compressionBucket *bolt.Bucket, digest digest.Digest, requireCompressionInfo bool) []prioritize.CandidateWithTime {
-- digestKey := []byte(digest.String())
-- b := scopeBucket.Bucket(digestKey)
-- if b == nil {
-- return candidates
-- }
-- compressorName := blobinfocache.UnknownCompression
-- if compressionBucket != nil {
-- // the bucket won't exist if the cache was created by a v1 implementation and
-- // hasn't yet been updated by a v2 implementation
-- if compressorNameValue := compressionBucket.Get(digestKey); len(compressorNameValue) > 0 {
-- compressorName = string(compressorNameValue)
-- }
-- }
-- if compressorName == blobinfocache.UnknownCompression && requireCompressionInfo {
-- return candidates
-- }
-- _ = b.ForEach(func(k, v []byte) error {
-- t := time.Time{}
-- if err := t.UnmarshalBinary(v); err != nil {
-- return err
-- }
-- candidates = append(candidates, prioritize.CandidateWithTime{
-- Candidate: blobinfocache.BICReplacementCandidate2{
-- Digest: digest,
-- CompressorName: compressorName,
-- Location: types.BICLocationReference{Opaque: string(k)},
-- },
-- LastSeen: t,
-- })
-- return nil
-- }) // FIXME? Log error (but throttle the log volume on repeated accesses)?
-- return candidates
--}
--
--// CandidateLocations2 returns a prioritized, limited, number of blobs and their locations that could possibly be reused
--// within the specified (transport scope) (if they still exist, which is not guaranteed).
--//
--// If !canSubstitute, the returned candidates will match the submitted digest exactly; if canSubstitute,
--// data from previous RecordDigestUncompressedPair calls is used to also look up variants of the blob which have the same
--// uncompressed digest.
--func (bdc *cache) CandidateLocations2(transport types.ImageTransport, scope types.BICTransportScope, primaryDigest digest.Digest, canSubstitute bool) []blobinfocache.BICReplacementCandidate2 {
-- return bdc.candidateLocations(transport, scope, primaryDigest, canSubstitute, true)
--}
--
--func (bdc *cache) candidateLocations(transport types.ImageTransport, scope types.BICTransportScope, primaryDigest digest.Digest, canSubstitute, requireCompressionInfo bool) []blobinfocache.BICReplacementCandidate2 {
-- res := []prioritize.CandidateWithTime{}
-- var uncompressedDigestValue digest.Digest // = ""
-- if err := bdc.view(func(tx *bolt.Tx) error {
-- scopeBucket := tx.Bucket(knownLocationsBucket)
-- if scopeBucket == nil {
-- return nil
-- }
-- scopeBucket = scopeBucket.Bucket([]byte(transport.Name()))
-- if scopeBucket == nil {
-- return nil
-- }
-- scopeBucket = scopeBucket.Bucket([]byte(scope.Opaque))
-- if scopeBucket == nil {
-- return nil
-- }
-- // compressionBucket won't have been created if previous writers never recorded info about compression,
-- // and we don't want to fail just because of that
-- compressionBucket := tx.Bucket(digestCompressorBucket)
--
-- res = bdc.appendReplacementCandidates(res, scopeBucket, compressionBucket, primaryDigest, requireCompressionInfo)
-- if canSubstitute {
-- if uncompressedDigestValue = bdc.uncompressedDigest(tx, primaryDigest); uncompressedDigestValue != "" {
-- b := tx.Bucket(digestByUncompressedBucket)
-- if b != nil {
-- b = b.Bucket([]byte(uncompressedDigestValue.String()))
-- if b != nil {
-- if err := b.ForEach(func(k, _ []byte) error {
-- d, err := digest.Parse(string(k))
-- if err != nil {
-- return err
-- }
-- if d != primaryDigest && d != uncompressedDigestValue {
-- res = bdc.appendReplacementCandidates(res, scopeBucket, compressionBucket, d, requireCompressionInfo)
-- }
-- return nil
-- }); err != nil {
-- return err
-- }
-- }
-- }
-- if uncompressedDigestValue != primaryDigest {
-- res = bdc.appendReplacementCandidates(res, scopeBucket, compressionBucket, uncompressedDigestValue, requireCompressionInfo)
-- }
-- }
-- }
-- return nil
-- }); err != nil { // Including os.IsNotExist(err)
-- return []blobinfocache.BICReplacementCandidate2{} // FIXME? Log err (but throttle the log volume on repeated accesses)?
-- }
--
-- return prioritize.DestructivelyPrioritizeReplacementCandidates(res, primaryDigest, uncompressedDigestValue)
--}
--
--// CandidateLocations returns a prioritized, limited, number of blobs and their locations that could possibly be reused
--// within the specified (transport scope) (if they still exist, which is not guaranteed).
--//
--// If !canSubstitute, the returned cadidates will match the submitted digest exactly; if canSubstitute,
--// data from previous RecordDigestUncompressedPair calls is used to also look up variants of the blob which have the same
--// uncompressed digest.
--func (bdc *cache) CandidateLocations(transport types.ImageTransport, scope types.BICTransportScope, primaryDigest digest.Digest, canSubstitute bool) []types.BICReplacementCandidate {
-- return blobinfocache.CandidateLocationsFromV2(bdc.candidateLocations(transport, scope, primaryDigest, canSubstitute, false))
--}
-diff --git a/vendor/github.com/containers/image/v5/pkg/blobinfocache/default.go b/vendor/github.com/containers/image/v5/pkg/blobinfocache/default.go
-index 83034b618..037572b0e 100644
---- a/vendor/github.com/containers/image/v5/pkg/blobinfocache/default.go
-+++ b/vendor/github.com/containers/image/v5/pkg/blobinfocache/default.go
-@@ -6,8 +6,8 @@ import (
- "path/filepath"
-
- "github.com/containers/image/v5/internal/rootless"
-- "github.com/containers/image/v5/pkg/blobinfocache/boltdb"
- "github.com/containers/image/v5/pkg/blobinfocache/memory"
-+ "github.com/containers/image/v5/pkg/blobinfocache/sqlite"
- "github.com/containers/image/v5/types"
- "github.com/sirupsen/logrus"
- )
-@@ -15,7 +15,7 @@ import (
- const (
- // blobInfoCacheFilename is the file name used for blob info caches.
- // If the format changes in an incompatible way, increase the version number.
-- blobInfoCacheFilename = "blob-info-cache-v1.boltdb"
-+ blobInfoCacheFilename = "blob-info-cache-v1.sqlite"
- // systemBlobInfoCacheDir is the directory containing the blob info cache (in blobInfocacheFilename) for root-running processes.
- systemBlobInfoCacheDir = "/var/lib/containers/cache"
- )
-@@ -57,10 +57,20 @@ func DefaultCache(sys *types.SystemContext) types.BlobInfoCache {
- }
- path := filepath.Join(dir, blobInfoCacheFilename)
- if err := os.MkdirAll(dir, 0700); err != nil {
-- logrus.Debugf("Error creating parent directories for %s, using a memory-only cache: %v", blobInfoCacheFilename, err)
-+ logrus.Debugf("Error creating parent directories for %s, using a memory-only cache: %v", path, err)
- return memory.New()
- }
-
-- logrus.Debugf("Using blob info cache at %s", path)
-- return boltdb.New(path)
-+ // It might make sense to keep a single sqlite cache object, and a single initialized sqlite connection, open
-+ // as global singleton, for the vast majority of callers who don’t override thde cache location.
-+ // OTOH that would keep a file descriptor open forever, even for long-term callers who copy images rarely,
-+ // and the performance benefit to this over using an Open()/Close() pair for a single image copy is < 10%.
-+
-+ cache, err := sqlite.New(path)
-+ if err != nil {
-+ logrus.Debugf("Error creating a SQLite blob info cache at %s, using a memory-only cache: %v", path, err)
-+ return memory.New()
-+ }
-+ logrus.Debugf("Using SQLite blob info cache at %s", path)
-+ return cache
- }
-diff --git a/vendor/github.com/containers/image/v5/pkg/blobinfocache/internal/prioritize/prioritize.go b/vendor/github.com/containers/image/v5/pkg/blobinfocache/internal/prioritize/prioritize.go
-index 6f5506d94..470fca0c1 100644
---- a/vendor/github.com/containers/image/v5/pkg/blobinfocache/internal/prioritize/prioritize.go
-+++ b/vendor/github.com/containers/image/v5/pkg/blobinfocache/internal/prioritize/prioritize.go
-@@ -10,15 +10,20 @@ import (
- "github.com/opencontainers/go-digest"
- )
-
--// replacementAttempts is the number of blob replacement candidates returned by destructivelyPrioritizeReplacementCandidates,
-+// replacementAttempts is the number of blob replacement candidates with known location returned by destructivelyPrioritizeReplacementCandidates,
- // and therefore ultimately by types.BlobInfoCache.CandidateLocations.
- // This is a heuristic/guess, and could well use a different value.
- const replacementAttempts = 5
-
-+// replacementUnknownLocationAttempts is the number of blob replacement candidates with unknown Location returned by destructivelyPrioritizeReplacementCandidates,
-+// and therefore ultimately by blobinfocache.BlobInfoCache2.CandidateLocations2.
-+// This is a heuristic/guess, and could well use a different value.
-+const replacementUnknownLocationAttempts = 2
-+
- // CandidateWithTime is the input to types.BICReplacementCandidate prioritization.
- type CandidateWithTime struct {
- Candidate blobinfocache.BICReplacementCandidate2 // The replacement candidate
-- LastSeen time.Time // Time the candidate was last known to exist (either read or written)
-+ LastSeen time.Time // Time the candidate was last known to exist (either read or written) (not set for Candidate.UnknownLocation)
- }
-
- // candidateSortState is a local state implementing sort.Interface on candidates to prioritize,
-@@ -77,34 +82,58 @@ func (css *candidateSortState) Swap(i, j int) {
- css.cs[i], css.cs[j] = css.cs[j], css.cs[i]
- }
-
--// destructivelyPrioritizeReplacementCandidatesWithMax is destructivelyPrioritizeReplacementCandidates with a parameter for the
--// number of entries to limit, only to make testing simpler.
--func destructivelyPrioritizeReplacementCandidatesWithMax(cs []CandidateWithTime, primaryDigest, uncompressedDigest digest.Digest, maxCandidates int) []blobinfocache.BICReplacementCandidate2 {
-+func min(a, b int) int {
-+ if a < b {
-+ return a
-+ }
-+ return b
-+}
-+
-+// destructivelyPrioritizeReplacementCandidatesWithMax is destructivelyPrioritizeReplacementCandidates with parameters for the
-+// number of entries to limit for known and unknown location separately, only to make testing simpler.
-+// TODO: following function is not destructive any more in the nature instead prioritized result is actually copies of the original
-+// candidate set, so In future we might wanna re-name this public API and remove the destructive prefix.
-+func destructivelyPrioritizeReplacementCandidatesWithMax(cs []CandidateWithTime, primaryDigest, uncompressedDigest digest.Digest, totalLimit int, noLocationLimit int) []blobinfocache.BICReplacementCandidate2 {
-+ // split unknown candidates and known candidates
-+ // and limit them separately.
-+ var knownLocationCandidates []CandidateWithTime
-+ var unknownLocationCandidates []CandidateWithTime
- // We don't need to use sort.Stable() because nanosecond timestamps are (presumably?) unique, so no two elements should
- // compare equal.
-+ // FIXME: Use slices.SortFunc after we update to Go 1.20 (Go 1.21?) and Time.Compare and cmp.Compare are available.
- sort.Sort(&candidateSortState{
- cs: cs,
- primaryDigest: primaryDigest,
- uncompressedDigest: uncompressedDigest,
- })
-+ for _, candidate := range cs {
-+ if candidate.Candidate.UnknownLocation {
-+ unknownLocationCandidates = append(unknownLocationCandidates, candidate)
-+ } else {
-+ knownLocationCandidates = append(knownLocationCandidates, candidate)
-+ }
-+ }
-
-- resLength := len(cs)
-- if resLength > maxCandidates {
-- resLength = maxCandidates
-+ knownLocationCandidatesUsed := min(len(knownLocationCandidates), totalLimit)
-+ remainingCapacity := totalLimit - knownLocationCandidatesUsed
-+ unknownLocationCandidatesUsed := min(noLocationLimit, min(remainingCapacity, len(unknownLocationCandidates)))
-+ res := make([]blobinfocache.BICReplacementCandidate2, knownLocationCandidatesUsed)
-+ for i := 0; i < knownLocationCandidatesUsed; i++ {
-+ res[i] = knownLocationCandidates[i].Candidate
- }
-- res := make([]blobinfocache.BICReplacementCandidate2, resLength)
-- for i := range res {
-- res[i] = cs[i].Candidate
-+ // If candidates with unknown location are found, lets add them to final list
-+ for i := 0; i < unknownLocationCandidatesUsed; i++ {
-+ res = append(res, unknownLocationCandidates[i].Candidate)
- }
- return res
- }
-
- // DestructivelyPrioritizeReplacementCandidates consumes AND DESTROYS an array of possible replacement candidates with their last known existence times,
--// the primary digest the user actually asked for, and the corresponding uncompressed digest (if known, possibly equal to the primary digest),
--// and returns an appropriately prioritized and/or trimmed result suitable for a return value from types.BlobInfoCache.CandidateLocations.
-+// the primary digest the user actually asked for, the corresponding uncompressed digest (if known, possibly equal to the primary digest) returns an
-+// appropriately prioritized and/or trimmed result suitable for a return value from types.BlobInfoCache.CandidateLocations.
- //
- // WARNING: The array of candidates is destructively modified. (The implementation of this function could of course
- // make a copy, but all CandidateLocations implementations build the slice of candidates only for the single purpose of calling this function anyway.)
- func DestructivelyPrioritizeReplacementCandidates(cs []CandidateWithTime, primaryDigest, uncompressedDigest digest.Digest) []blobinfocache.BICReplacementCandidate2 {
-- return destructivelyPrioritizeReplacementCandidatesWithMax(cs, primaryDigest, uncompressedDigest, replacementAttempts)
-+ return destructivelyPrioritizeReplacementCandidatesWithMax(cs, primaryDigest, uncompressedDigest, replacementAttempts, replacementUnknownLocationAttempts)
- }
-diff --git a/vendor/github.com/containers/image/v5/pkg/blobinfocache/memory/memory.go b/vendor/github.com/containers/image/v5/pkg/blobinfocache/memory/memory.go
-index 427610fab..16193db95 100644
---- a/vendor/github.com/containers/image/v5/pkg/blobinfocache/memory/memory.go
-+++ b/vendor/github.com/containers/image/v5/pkg/blobinfocache/memory/memory.go
-@@ -27,7 +27,7 @@ type cache struct {
- uncompressedDigests map[digest.Digest]digest.Digest
- digestsByUncompressed map[digest.Digest]*set.Set[digest.Digest] // stores a set of digests for each uncompressed digest
- knownLocations map[locationKey]map[types.BICLocationReference]time.Time // stores last known existence time for each location reference
-- compressors map[digest.Digest]string // stores a compressor name, or blobinfocache.Unknown, for each digest
-+ compressors map[digest.Digest]string // stores a compressor name, or blobinfocache.Unknown (not blobinfocache.UnknownCompression), for each digest
- }
-
- // New returns a BlobInfoCache implementation which is in-memory only.
-@@ -51,6 +51,15 @@ func new2() *cache {
- }
- }
-
-+// Open() sets up the cache for future accesses, potentially acquiring costly state. Each Open() must be paired with a Close().
-+// Note that public callers may call the types.BlobInfoCache operations without Open()/Close().
-+func (mem *cache) Open() {
-+}
-+
-+// Close destroys state created by Open().
-+func (mem *cache) Close() {
-+}
-+
- // UncompressedDigest returns an uncompressed digest corresponding to anyDigest.
- // May return anyDigest if it is known to be uncompressed.
- // Returns "" if nothing is known about the digest (it may be compressed or uncompressed).
-@@ -114,6 +123,9 @@ func (mem *cache) RecordKnownLocation(transport types.ImageTransport, scope type
- func (mem *cache) RecordDigestCompressorName(blobDigest digest.Digest, compressorName string) {
- mem.mutex.Lock()
- defer mem.mutex.Unlock()
-+ if previous, ok := mem.compressors[blobDigest]; ok && previous != compressorName {
-+ logrus.Warnf("Compressor for blob with digest %s previously recorded as %s, now %s", blobDigest, previous, compressorName)
-+ }
- if compressorName == blobinfocache.UnknownCompression {
- delete(mem.compressors, blobDigest)
- return
-@@ -121,24 +133,39 @@ func (mem *cache) RecordDigestCompressorName(blobDigest digest.Digest, compresso
- mem.compressors[blobDigest] = compressorName
- }
-
--// appendReplacementCandidates creates prioritize.CandidateWithTime values for (transport, scope, digest), and returns the result of appending them to candidates.
--func (mem *cache) appendReplacementCandidates(candidates []prioritize.CandidateWithTime, transport types.ImageTransport, scope types.BICTransportScope, digest digest.Digest, requireCompressionInfo bool) []prioritize.CandidateWithTime {
-+// appendReplacementCandidates creates prioritize.CandidateWithTime values for digest in memory
-+// with corresponding compression info from mem.compressors, and returns the result of appending
-+// them to candidates. v2Output allows including candidates with unknown location, and filters out
-+// candidates with unknown compression.
-+func (mem *cache) appendReplacementCandidates(candidates []prioritize.CandidateWithTime, transport types.ImageTransport, scope types.BICTransportScope, digest digest.Digest, v2Output bool) []prioritize.CandidateWithTime {
-+ compressorName := blobinfocache.UnknownCompression
-+ if v, ok := mem.compressors[digest]; ok {
-+ compressorName = v
-+ }
-+ if compressorName == blobinfocache.UnknownCompression && v2Output {
-+ return candidates
-+ }
- locations := mem.knownLocations[locationKey{transport: transport.Name(), scope: scope, blobDigest: digest}] // nil if not present
-- for l, t := range locations {
-- compressorName, compressorKnown := mem.compressors[digest]
-- if !compressorKnown {
-- if requireCompressionInfo {
-- continue
-- }
-- compressorName = blobinfocache.UnknownCompression
-+ if len(locations) > 0 {
-+ for l, t := range locations {
-+ candidates = append(candidates, prioritize.CandidateWithTime{
-+ Candidate: blobinfocache.BICReplacementCandidate2{
-+ Digest: digest,
-+ CompressorName: compressorName,
-+ Location: l,
-+ },
-+ LastSeen: t,
-+ })
- }
-+ } else if v2Output {
- candidates = append(candidates, prioritize.CandidateWithTime{
- Candidate: blobinfocache.BICReplacementCandidate2{
-- Digest: digest,
-- CompressorName: compressorName,
-- Location: l,
-+ Digest: digest,
-+ CompressorName: compressorName,
-+ UnknownLocation: true,
-+ Location: types.BICLocationReference{Opaque: ""},
- },
-- LastSeen: t,
-+ LastSeen: time.Time{},
- })
- }
- return candidates
-@@ -154,33 +181,34 @@ func (mem *cache) CandidateLocations(transport types.ImageTransport, scope types
- return blobinfocache.CandidateLocationsFromV2(mem.candidateLocations(transport, scope, primaryDigest, canSubstitute, false))
- }
-
--// CandidateLocations2 returns a prioritized, limited, number of blobs and their locations that could possibly be reused
-+// CandidateLocations2 returns a prioritized, limited, number of blobs and their locations (if known) that could possibly be reused
- // within the specified (transport scope) (if they still exist, which is not guaranteed).
- //
--// If !canSubstitute, the returned cadidates will match the submitted digest exactly; if canSubstitute,
-+// If !canSubstitute, the returned candidates will match the submitted digest exactly; if canSubstitute,
- // data from previous RecordDigestUncompressedPair calls is used to also look up variants of the blob which have the same
- // uncompressed digest.
- func (mem *cache) CandidateLocations2(transport types.ImageTransport, scope types.BICTransportScope, primaryDigest digest.Digest, canSubstitute bool) []blobinfocache.BICReplacementCandidate2 {
- return mem.candidateLocations(transport, scope, primaryDigest, canSubstitute, true)
- }
-
--func (mem *cache) candidateLocations(transport types.ImageTransport, scope types.BICTransportScope, primaryDigest digest.Digest, canSubstitute, requireCompressionInfo bool) []blobinfocache.BICReplacementCandidate2 {
-+func (mem *cache) candidateLocations(transport types.ImageTransport, scope types.BICTransportScope, primaryDigest digest.Digest, canSubstitute, v2Output bool) []blobinfocache.BICReplacementCandidate2 {
- mem.mutex.Lock()
- defer mem.mutex.Unlock()
- res := []prioritize.CandidateWithTime{}
-- res = mem.appendReplacementCandidates(res, transport, scope, primaryDigest, requireCompressionInfo)
-+ res = mem.appendReplacementCandidates(res, transport, scope, primaryDigest, v2Output)
- var uncompressedDigest digest.Digest // = ""
- if canSubstitute {
- if uncompressedDigest = mem.uncompressedDigestLocked(primaryDigest); uncompressedDigest != "" {
-- if otherDigests, ok := mem.digestsByUncompressed[uncompressedDigest]; ok {
-+ otherDigests := mem.digestsByUncompressed[uncompressedDigest] // nil if not present in the map
-+ if otherDigests != nil {
- for _, d := range otherDigests.Values() {
- if d != primaryDigest && d != uncompressedDigest {
-- res = mem.appendReplacementCandidates(res, transport, scope, d, requireCompressionInfo)
-+ res = mem.appendReplacementCandidates(res, transport, scope, d, v2Output)
- }
- }
- }
- if uncompressedDigest != primaryDigest {
-- res = mem.appendReplacementCandidates(res, transport, scope, uncompressedDigest, requireCompressionInfo)
-+ res = mem.appendReplacementCandidates(res, transport, scope, uncompressedDigest, v2Output)
- }
- }
- }
-diff --git a/vendor/github.com/containers/image/v5/pkg/blobinfocache/boltdb/BUILD.bazel b/vendor/github.com/containers/image/v5/pkg/blobinfocache/sqlite/BUILD.bazel
-similarity index 81%
-rename from vendor/github.com/containers/image/v5/pkg/blobinfocache/boltdb/BUILD.bazel
-rename to vendor/github.com/containers/image/v5/pkg/blobinfocache/sqlite/BUILD.bazel
-index 861c04bda..c0b15a1d9 100644
---- a/vendor/github.com/containers/image/v5/pkg/blobinfocache/boltdb/BUILD.bazel
-+++ b/vendor/github.com/containers/image/v5/pkg/blobinfocache/sqlite/BUILD.bazel
-@@ -2,16 +2,16 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library")
-
- go_library(
- name = "go_default_library",
-- srcs = ["boltdb.go"],
-- importmap = "kubevirt.io/containerized-data-importer/vendor/github.com/containers/image/v5/pkg/blobinfocache/boltdb",
-- importpath = "github.com/containers/image/v5/pkg/blobinfocache/boltdb",
-+ srcs = ["sqlite.go"],
-+ importmap = "kubevirt.io/containerized-data-importer/vendor/github.com/containers/image/v5/pkg/blobinfocache/sqlite",
-+ importpath = "github.com/containers/image/v5/pkg/blobinfocache/sqlite",
- visibility = ["//visibility:public"],
- deps = [
- "//vendor/github.com/containers/image/v5/internal/blobinfocache:go_default_library",
- "//vendor/github.com/containers/image/v5/pkg/blobinfocache/internal/prioritize:go_default_library",
- "//vendor/github.com/containers/image/v5/types:go_default_library",
-+ "//vendor/github.com/mattn/go-sqlite3:go_default_library",
- "//vendor/github.com/opencontainers/go-digest:go_default_library",
- "//vendor/github.com/sirupsen/logrus:go_default_library",
-- "//vendor/go.etcd.io/bbolt:go_default_library",
- ],
- )
-diff --git a/vendor/github.com/containers/image/v5/pkg/blobinfocache/sqlite/sqlite.go b/vendor/github.com/containers/image/v5/pkg/blobinfocache/sqlite/sqlite.go
-new file mode 100644
-index 000000000..d8bde2fa0
---- /dev/null
-+++ b/vendor/github.com/containers/image/v5/pkg/blobinfocache/sqlite/sqlite.go
-@@ -0,0 +1,575 @@
-+// Package boltdb implements a BlobInfoCache backed by SQLite.
-+package sqlite
-+
-+import (
-+ "database/sql"
-+ "errors"
-+ "fmt"
-+ "sync"
-+ "time"
-+
-+ "github.com/containers/image/v5/internal/blobinfocache"
-+ "github.com/containers/image/v5/pkg/blobinfocache/internal/prioritize"
-+ "github.com/containers/image/v5/types"
-+ _ "github.com/mattn/go-sqlite3" // Registers the "sqlite3" backend backend for database/sql
-+ "github.com/opencontainers/go-digest"
-+ "github.com/sirupsen/logrus"
-+)
-+
-+const (
-+ // NOTE: There is no versioning data inside the file; this is a “cache”, so on an incompatible format upgrade
-+ // we can simply start over with a different filename; update blobInfoCacheFilename.
-+ // That also means we don’t have to worry about co-existing readers/writers which know different versions of the schema
-+ // (which would require compatibility in both directions).
-+
-+ // Assembled sqlite options used when opening the database.
-+ sqliteOptions = "?" +
-+ // Deal with timezone automatically.
-+ // go-sqlite3 always _records_ timestamps as a text: time in local time + a time zone offset.
-+ // _loc affects how the values are _parsed_: (which timezone is assumed for numeric timestamps or for text which does not specify an offset, or)
-+ // if the time zone offset matches the specified time zone, the timestamp is assumed to be in that time zone / location;
-+ // (otherwise an unnamed time zone carrying just a hard-coded offset, but no location / DST rules is used).
-+ "_loc=auto" +
-+ // Force an fsync after each transaction (https://www.sqlite.org/pragma.html#pragma_synchronous).
-+ "&_sync=FULL" +
-+ // Allow foreign keys (https://www.sqlite.org/pragma.html#pragma_foreign_keys).
-+ // We don’t currently use any foreign keys, but this is a good choice long-term (not default in SQLite only for historical reasons).
-+ "&_foreign_keys=1" +
-+ // Use BEGIN EXCLUSIVE (https://www.sqlite.org/lang_transaction.html);
-+ // i.e. obtain a write lock for _all_ transactions at the transaction start (never use a read lock,
-+ // never upgrade from a read to a write lock - that can fail if multiple read lock owners try to do that simultaneously).
-+ //
-+ // This, together with go-sqlite3’s default for _busy_timeout=5000, means that we should never see a “database is locked” error,
-+ // the database should block on the exclusive lock when starting a transaction, and the problematic case of two simultaneous
-+ // holders of a read lock trying to upgrade to a write lock (and one necessarily failing) is prevented.
-+ // Compare https://github.com/mattn/go-sqlite3/issues/274 .
-+ //
-+ // Ideally the BEGIN / BEGIN EXCLUSIVE decision could be made per-transaction, compare https://github.com/mattn/go-sqlite3/pull/1167
-+ // or https://github.com/mattn/go-sqlite3/issues/400 .
-+ // The currently-proposed workaround is to create two different SQL “databases” (= connection pools) with different _txlock settings,
-+ // which seems rather wasteful.
-+ "&_txlock=exclusive"
-+)
-+
-+// cache is a BlobInfoCache implementation which uses a SQLite file at the specified path.
-+type cache struct {
-+ path string
-+
-+ // The database/sql package says “It is rarely necessary to close a DB.”, and steers towards a long-term *sql.DB connection pool.
-+ // That’s probably very applicable for database-backed services, where the database is the primary data store. That’s not necessarily
-+ // the case for callers of c/image, where image operations might be a small proportion of the total runtime, and the cache is fairly
-+ // incidental even to the image operations. It’s also hard for us to use that model, because the public BlobInfoCache object doesn’t have
-+ // a Close method, so creating a lot of single-use caches could leak data.
-+ //
-+ // Instead, the private BlobInfoCache2 interface provides Open/Close methods, and they are called by c/image/copy.Image.
-+ // This amortizes the cost of opening/closing the SQLite state over a single image copy, while keeping no long-term resources open.
-+ // Some rough benchmarks in https://github.com/containers/image/pull/2092 suggest relative costs on the order of "25" for a single
-+ // *sql.DB left open long-term, "27" for a *sql.DB open for a single image copy, and "40" for opening/closing a *sql.DB for every
-+ // single transaction; so the Open/Close per image copy seems a reasonable compromise (especially compared to the previous implementation,
-+ // somewhere around "700").
-+
-+ lock sync.Mutex
-+ // The following fields can only be accessed with lock held.
-+ refCount int // number of outstanding Open() calls
-+ db *sql.DB // nil if not set (may happen even if refCount > 0 on errors)
-+}
-+
-+// New returns BlobInfoCache implementation which uses a SQLite file at path.
-+//
-+// Most users should call blobinfocache.DefaultCache instead.
-+func New(path string) (types.BlobInfoCache, error) {
-+ return new2(path)
-+}
-+
-+func new2(path string) (*cache, error) {
-+ db, err := rawOpen(path)
-+ if err != nil {
-+ return nil, fmt.Errorf("initializing blob info cache at %q: %w", path, err)
-+ }
-+ defer db.Close()
-+
-+ // We don’t check the schema before every operation, because that would be costly
-+ // and because we assume schema changes will be handled by using a different path.
-+ if err := ensureDBHasCurrentSchema(db); err != nil {
-+ return nil, err
-+ }
-+
-+ return &cache{
-+ path: path,
-+ refCount: 0,
-+ db: nil,
-+ }, nil
-+}
-+
-+// rawOpen returns a new *sql.DB for path.
-+// The caller should arrange for it to be .Close()d.
-+func rawOpen(path string) (*sql.DB, error) {
-+ // This exists to centralize the use of sqliteOptions.
-+ return sql.Open("sqlite3", path+sqliteOptions)
-+}
-+
-+// Open() sets up the cache for future accesses, potentially acquiring costly state. Each Open() must be paired with a Close().
-+// Note that public callers may call the types.BlobInfoCache operations without Open()/Close().
-+func (sqc *cache) Open() {
-+ sqc.lock.Lock()
-+ defer sqc.lock.Unlock()
-+
-+ if sqc.refCount == 0 {
-+ db, err := rawOpen(sqc.path)
-+ if err != nil {
-+ logrus.Warnf("Error opening (previously-successfully-opened) blob info cache at %q: %v", sqc.path, err)
-+ db = nil // But still increase sqc.refCount, because a .Close() will happen
-+ }
-+ sqc.db = db
-+ }
-+ sqc.refCount++
-+}
-+
-+// Close destroys state created by Open().
-+func (sqc *cache) Close() {
-+ sqc.lock.Lock()
-+ defer sqc.lock.Unlock()
-+
-+ switch sqc.refCount {
-+ case 0:
-+ logrus.Errorf("internal error using pkg/blobinfocache/sqlite.cache: Close() without a matching Open()")
-+ return
-+ case 1:
-+ if sqc.db != nil {
-+ sqc.db.Close()
-+ sqc.db = nil
-+ }
-+ }
-+ sqc.refCount--
-+}
-+
-+type void struct{} // So that we don’t have to write struct{}{} all over the place
-+
-+// transaction calls fn within a read-write transaction in sqc.
-+func transaction[T any](sqc *cache, fn func(tx *sql.Tx) (T, error)) (T, error) {
-+ db, closeDB, err := func() (*sql.DB, func(), error) { // A scope for defer
-+ sqc.lock.Lock()
-+ defer sqc.lock.Unlock()
-+
-+ if sqc.db != nil {
-+ return sqc.db, func() {}, nil
-+ }
-+ db, err := rawOpen(sqc.path)
-+ if err != nil {
-+ return nil, nil, fmt.Errorf("opening blob info cache at %q: %w", sqc.path, err)
-+ }
-+ return db, func() { db.Close() }, nil
-+ }()
-+ if err != nil {
-+ var zeroRes T // A zero value of T
-+ return zeroRes, err
-+ }
-+ defer closeDB()
-+
-+ return dbTransaction(db, fn)
-+}
-+
-+// dbTransaction calls fn within a read-write transaction in db.
-+func dbTransaction[T any](db *sql.DB, fn func(tx *sql.Tx) (T, error)) (T, error) {
-+ // Ideally we should be able to distinguish between read-only and read-write transactions, see the _txlock=exclusive discussion.
-+
-+ var zeroRes T // A zero value of T
-+
-+ tx, err := db.Begin()
-+ if err != nil {
-+ return zeroRes, fmt.Errorf("beginning transaction: %w", err)
-+ }
-+ succeeded := false
-+ defer func() {
-+ if !succeeded {
-+ if err := tx.Rollback(); err != nil {
-+ logrus.Errorf("Rolling back transaction: %v", err)
-+ }
-+ }
-+ }()
-+
-+ res, err := fn(tx)
-+ if err != nil {
-+ return zeroRes, err
-+ }
-+ if err := tx.Commit(); err != nil {
-+ return zeroRes, fmt.Errorf("committing transaction: %w", err)
-+ }
-+
-+ succeeded = true
-+ return res, nil
-+}
-+
-+// querySingleValue executes a SELECT which is expected to return at most one row with a single column.
-+// It returns (value, true, nil) on success, or (value, false, nil) if no row was returned.
-+func querySingleValue[T any](tx *sql.Tx, query string, params ...any) (T, bool, error) {
-+ var value T
-+ if err := tx.QueryRow(query, params...).Scan(&value); err != nil {
-+ var zeroValue T // A zero value of T
-+ if errors.Is(err, sql.ErrNoRows) {
-+ return zeroValue, false, nil
-+ }
-+ return zeroValue, false, err
-+ }
-+ return value, true, nil
-+}
-+
-+// ensureDBHasCurrentSchema adds the necessary tables and indices to a database.
-+// This is typically used when creating a previously-nonexistent database.
-+// We don’t really anticipate schema migrations; with c/image usually vendored, not using
-+// shared libraries, migrating a schema on an existing database would affect old-version users.
-+// Instead, schema changes are likely to be implemented by using a different cache file name,
-+// and leaving existing caches around for old users.
-+func ensureDBHasCurrentSchema(db *sql.DB) error {
-+ // Considered schema design alternatives:
-+ //
-+ // (Overall, considering the overall network latency and disk I/O costs of many-megabyte layer pulls which are happening while referring
-+ // to the blob info cache, it seems reasonable to prioritize readability over microoptimization of this database.)
-+ //
-+ // * This schema uses the text representation of digests.
-+ //
-+ // We use the fairly wasteful text with hexadecimal digits because digest.Digest does not define a binary representation;
-+ // and the way digest.Digest.Hex() is deprecated in favor of digest.Digest.Encoded(), and the way digest.Algorithm
-+ // is documented to “define the string encoding” suggests that assuming a hexadecimal representation and turning that
-+ // into binary ourselves is not a good idea in general; we would have to special-case the currently-known algorithm
-+ // — and that would require us to implement two code paths, one of them basically never exercised / never tested.
-+ //
-+ // * There are two separate items for recording the uncompressed digest and digest compressors.
-+ // Alternatively, we could have a single "digest facts" table with NULLable columns.
-+ //
-+ // The way the BlobInfoCache API works, we are only going to write one value at a time, so
-+ // sharing a table would not be any more efficient for writes (same number of lookups, larger row tuples).
-+ // Reads in candidateLocations would not be more efficient either, the searches in DigestCompressors and DigestUncompressedPairs
-+ // do not coincide (we want a compressor for every candidate, but the uncompressed digest only for the primary digest; and then
-+ // we search in DigestUncompressedPairs by uncompressed digest, not by the primary key).
-+ //
-+ // Also, using separate items allows the single-item writes to be done using a simple INSERT OR REPLACE, instead of having to
-+ // do a more verbose ON CONFLICT(…) DO UPDATE SET … = ….
-+ //
-+ // * Joins (the two that exist in appendReplacementCandidates) are based on the text representation of digests.
-+ //
-+ // Using integer primary keys might make the joins themselves a bit more efficient, but then we would need to involve an extra
-+ // join to translate from/to the user-provided digests anyway. If anything, that extra join (potentially more btree lookups)
-+ // is probably costlier than comparing a few more bytes of data.
-+ //
-+ // Perhaps more importantly, storing digest texts directly makes the database dumps much easier to read for humans without
-+ // having to do extra steps to decode the integers into digest values (either by running sqlite commands with joins, or mentally).
-+ //
-+ items := []struct{ itemName, command string }{
-+ {
-+ "DigestUncompressedPairs",
-+ `CREATE TABLE IF NOT EXISTS DigestUncompressedPairs(` +
-+ // index implied by PRIMARY KEY
-+ `anyDigest TEXT PRIMARY KEY NOT NULL,` +
-+ // DigestUncompressedPairs_index_uncompressedDigest
-+ `uncompressedDigest TEXT NOT NULL
-+ )`,
-+ },
-+ {
-+ "DigestUncompressedPairs_index_uncompressedDigest",
-+ `CREATE INDEX IF NOT EXISTS DigestUncompressedPairs_index_uncompressedDigest ON DigestUncompressedPairs(uncompressedDigest)`,
-+ },
-+ {
-+ "DigestCompressors",
-+ `CREATE TABLE IF NOT EXISTS DigestCompressors(` +
-+ // index implied by PRIMARY KEY
-+ `digest TEXT PRIMARY KEY NOT NULL,` +
-+ // May include blobinfocache.Uncompressed (not blobinfocache.UnknownCompression).
-+ `compressor TEXT NOT NULL
-+ )`,
-+ },
-+ {
-+ "KnownLocations",
-+ `CREATE TABLE IF NOT EXISTS KnownLocations(
-+ transport TEXT NOT NULL,
-+ scope TEXT NOT NULL,
-+ digest TEXT NOT NULL,
-+ location TEXT NOT NULL,` +
-+ // TIMESTAMP is parsed by SQLITE as a NUMERIC affinity, but go-sqlite3 stores text in the (Go formatting semantics)
-+ // format "2006-01-02 15:04:05.999999999-07:00".
-+ // See also the _loc option in the sql.Open data source name.
-+ `time TIMESTAMP NOT NULL,` +
-+ // Implies an index.
-+ // We also search by (transport, scope, digest), that doesn’t need an extra index
-+ // because it is a prefix of the implied primary-key index.
-+ `PRIMARY KEY (transport, scope, digest, location)
-+ )`,
-+ },
-+ }
-+
-+ _, err := dbTransaction(db, func(tx *sql.Tx) (void, error) {
-+ // If the the last-created item exists, assume nothing needs to be done.
-+ lastItemName := items[len(items)-1].itemName
-+ _, found, err := querySingleValue[int](tx, "SELECT 1 FROM sqlite_schema WHERE name=?", lastItemName)
-+ if err != nil {
-+ return void{}, fmt.Errorf("checking if SQLite schema item %q exists: %w", lastItemName, err)
-+ }
-+ if !found {
-+ // Item does not exist, assuming a fresh database.
-+ for _, i := range items {
-+ if _, err := tx.Exec(i.command); err != nil {
-+ return void{}, fmt.Errorf("creating item %s: %w", i.itemName, err)
-+ }
-+ }
-+ }
-+ return void{}, nil
-+ })
-+ return err
-+}
-+
-+// uncompressedDigest implements types.BlobInfoCache.UncompressedDigest within a transaction.
-+func (sqc *cache) uncompressedDigest(tx *sql.Tx, anyDigest digest.Digest) (digest.Digest, error) {
-+ uncompressedString, found, err := querySingleValue[string](tx, "SELECT uncompressedDigest FROM DigestUncompressedPairs WHERE anyDigest = ?", anyDigest.String())
-+ if err != nil {
-+ return "", err
-+ }
-+ if found {
-+ d, err := digest.Parse(uncompressedString)
-+ if err != nil {
-+ return "", err
-+ }
-+ return d, nil
-+
-+ }
-+ // A record as uncompressedDigest implies that anyDigest must already refer to an uncompressed digest.
-+ // This way we don't have to waste storage space with trivial (uncompressed, uncompressed) mappings
-+ // when we already record a (compressed, uncompressed) pair.
-+ _, found, err = querySingleValue[int](tx, "SELECT 1 FROM DigestUncompressedPairs WHERE uncompressedDigest = ?", anyDigest.String())
-+ if err != nil {
-+ return "", err
-+ }
-+ if found {
-+ return anyDigest, nil
-+ }
-+ return "", nil
-+}
-+
-+// UncompressedDigest returns an uncompressed digest corresponding to anyDigest.
-+// May return anyDigest if it is known to be uncompressed.
-+// Returns "" if nothing is known about the digest (it may be compressed or uncompressed).
-+func (sqc *cache) UncompressedDigest(anyDigest digest.Digest) digest.Digest {
-+ res, err := transaction(sqc, func(tx *sql.Tx) (digest.Digest, error) {
-+ return sqc.uncompressedDigest(tx, anyDigest)
-+ })
-+ if err != nil {
-+ return "" // FIXME? Log err (but throttle the log volume on repeated accesses)?
-+ }
-+ return res
-+}
-+
-+// RecordDigestUncompressedPair records that the uncompressed version of anyDigest is uncompressed.
-+// It’s allowed for anyDigest == uncompressed.
-+// WARNING: Only call this for LOCALLY VERIFIED data; don’t record a digest pair just because some remote author claims so (e.g.
-+// because a manifest/config pair exists); otherwise the cache could be poisoned and allow substituting unexpected blobs.
-+// (Eventually, the DiffIDs in image config could detect the substitution, but that may be too late, and not all image formats contain that data.)
-+func (sqc *cache) RecordDigestUncompressedPair(anyDigest digest.Digest, uncompressed digest.Digest) {
-+ _, _ = transaction(sqc, func(tx *sql.Tx) (void, error) {
-+ previousString, gotPrevious, err := querySingleValue[string](tx, "SELECT uncompressedDigest FROM DigestUncompressedPairs WHERE anyDigest = ?", anyDigest.String())
-+ if err != nil {
-+ return void{}, fmt.Errorf("looking for uncompressed digest for %q", anyDigest)
-+ }
-+ if gotPrevious {
-+ previous, err := digest.Parse(previousString)
-+ if err != nil {
-+ return void{}, err
-+ }
-+ if previous != uncompressed {
-+ logrus.Warnf("Uncompressed digest for blob %s previously recorded as %s, now %s", anyDigest, previous, uncompressed)
-+ }
-+ }
-+ if _, err := tx.Exec("INSERT OR REPLACE INTO DigestUncompressedPairs(anyDigest, uncompressedDigest) VALUES (?, ?)",
-+ anyDigest.String(), uncompressed.String()); err != nil {
-+ return void{}, fmt.Errorf("recording uncompressed digest %q for %q: %w", uncompressed, anyDigest, err)
-+ }
-+ return void{}, nil
-+ }) // FIXME? Log error (but throttle the log volume on repeated accesses)?
-+}
-+
-+// RecordKnownLocation records that a blob with the specified digest exists within the specified (transport, scope) scope,
-+// and can be reused given the opaque location data.
-+func (sqc *cache) RecordKnownLocation(transport types.ImageTransport, scope types.BICTransportScope, digest digest.Digest, location types.BICLocationReference) {
-+ _, _ = transaction(sqc, func(tx *sql.Tx) (void, error) {
-+ if _, err := tx.Exec("INSERT OR REPLACE INTO KnownLocations(transport, scope, digest, location, time) VALUES (?, ?, ?, ?, ?)",
-+ transport.Name(), scope.Opaque, digest.String(), location.Opaque, time.Now()); err != nil { // Possibly overwriting an older entry.
-+ return void{}, fmt.Errorf("recording known location %q for (%q, %q, %q): %w",
-+ location.Opaque, transport.Name(), scope.Opaque, digest.String(), err)
-+ }
-+ return void{}, nil
-+ }) // FIXME? Log error (but throttle the log volume on repeated accesses)?
-+}
-+
-+// RecordDigestCompressorName records a compressor for the blob with the specified digest,
-+// or Uncompressed or UnknownCompression.
-+// WARNING: Only call this with LOCALLY VERIFIED data; don’t record a compressor for a
-+// digest just because some remote author claims so (e.g. because a manifest says so);
-+// otherwise the cache could be poisoned and cause us to make incorrect edits to type
-+// information in a manifest.
-+func (sqc *cache) RecordDigestCompressorName(anyDigest digest.Digest, compressorName string) {
-+ _, _ = transaction(sqc, func(tx *sql.Tx) (void, error) {
-+ previous, gotPrevious, err := querySingleValue[string](tx, "SELECT compressor FROM DigestCompressors WHERE digest = ?", anyDigest.String())
-+ if err != nil {
-+ return void{}, fmt.Errorf("looking for compressor of for %q", anyDigest)
-+ }
-+ if gotPrevious && previous != compressorName {
-+ logrus.Warnf("Compressor for blob with digest %s previously recorded as %s, now %s", anyDigest, previous, compressorName)
-+ }
-+ if compressorName == blobinfocache.UnknownCompression {
-+ if _, err := tx.Exec("DELETE FROM DigestCompressors WHERE digest = ?", anyDigest.String()); err != nil {
-+ return void{}, fmt.Errorf("deleting compressor for digest %q: %w", anyDigest, err)
-+ }
-+ } else {
-+ if _, err := tx.Exec("INSERT OR REPLACE INTO DigestCompressors(digest, compressor) VALUES (?, ?)",
-+ anyDigest.String(), compressorName); err != nil {
-+ return void{}, fmt.Errorf("recording compressor %q for %q: %w", compressorName, anyDigest, err)
-+ }
-+ }
-+ return void{}, nil
-+ }) // FIXME? Log error (but throttle the log volume on repeated accesses)?
-+}
-+
-+// appendReplacementCandidates creates prioritize.CandidateWithTime values for (transport, scope, digest),
-+// and returns the result of appending them to candidates. v2Output allows including candidates with unknown
-+// location, and filters out candidates with unknown compression.
-+func (sqc *cache) appendReplacementCandidates(candidates []prioritize.CandidateWithTime, tx *sql.Tx, transport types.ImageTransport, scope types.BICTransportScope, digest digest.Digest, v2Output bool) ([]prioritize.CandidateWithTime, error) {
-+ var rows *sql.Rows
-+ var err error
-+ if v2Output {
-+ rows, err = tx.Query("SELECT location, time, compressor FROM KnownLocations JOIN DigestCompressors "+
-+ "ON KnownLocations.digest = DigestCompressors.digest "+
-+ "WHERE transport = ? AND scope = ? AND KnownLocations.digest = ?",
-+ transport.Name(), scope.Opaque, digest.String())
-+ } else {
-+ rows, err = tx.Query("SELECT location, time, IFNULL(compressor, ?) FROM KnownLocations "+
-+ "LEFT JOIN DigestCompressors ON KnownLocations.digest = DigestCompressors.digest "+
-+ "WHERE transport = ? AND scope = ? AND KnownLocations.digest = ?",
-+ blobinfocache.UnknownCompression,
-+ transport.Name(), scope.Opaque, digest.String())
-+ }
-+ if err != nil {
-+ return nil, fmt.Errorf("looking up candidate locations: %w", err)
-+ }
-+ defer rows.Close()
-+
-+ res := []prioritize.CandidateWithTime{}
-+ for rows.Next() {
-+ var location string
-+ var time time.Time
-+ var compressorName string
-+ if err := rows.Scan(&location, &time, &compressorName); err != nil {
-+ return nil, fmt.Errorf("scanning candidate: %w", err)
-+ }
-+ res = append(res, prioritize.CandidateWithTime{
-+ Candidate: blobinfocache.BICReplacementCandidate2{
-+ Digest: digest,
-+ CompressorName: compressorName,
-+ Location: types.BICLocationReference{Opaque: location},
-+ },
-+ LastSeen: time,
-+ })
-+ }
-+ if err := rows.Err(); err != nil {
-+ return nil, fmt.Errorf("iterating through locations: %w", err)
-+ }
-+
-+ if len(res) == 0 && v2Output {
-+ compressor, found, err := querySingleValue[string](tx, "SELECT compressor FROM DigestCompressors WHERE digest = ?", digest.String())
-+ if err != nil {
-+ return nil, fmt.Errorf("scanning compressorName: %w", err)
-+ }
-+ if found {
-+ res = append(res, prioritize.CandidateWithTime{
-+ Candidate: blobinfocache.BICReplacementCandidate2{
-+ Digest: digest,
-+ CompressorName: compressor,
-+ UnknownLocation: true,
-+ Location: types.BICLocationReference{Opaque: ""},
-+ },
-+ LastSeen: time.Time{},
-+ })
-+ }
-+ }
-+ candidates = append(candidates, res...)
-+ return candidates, nil
-+}
-+
-+// CandidateLocations2 returns a prioritized, limited, number of blobs and their locations (if known)
-+// that could possibly be reused within the specified (transport scope) (if they still
-+// exist, which is not guaranteed).
-+//
-+// If !canSubstitute, the returned candidates will match the submitted digest exactly; if
-+// canSubstitute, data from previous RecordDigestUncompressedPair calls is used to also look
-+// up variants of the blob which have the same uncompressed digest.
-+//
-+// The CompressorName fields in returned data must never be UnknownCompression.
-+func (sqc *cache) CandidateLocations2(transport types.ImageTransport, scope types.BICTransportScope, digest digest.Digest, canSubstitute bool) []blobinfocache.BICReplacementCandidate2 {
-+ return sqc.candidateLocations(transport, scope, digest, canSubstitute, true)
-+}
-+
-+func (sqc *cache) candidateLocations(transport types.ImageTransport, scope types.BICTransportScope, primaryDigest digest.Digest, canSubstitute, v2Output bool) []blobinfocache.BICReplacementCandidate2 {
-+ var uncompressedDigest digest.Digest // = ""
-+ res, err := transaction(sqc, func(tx *sql.Tx) ([]prioritize.CandidateWithTime, error) {
-+ res := []prioritize.CandidateWithTime{}
-+ res, err := sqc.appendReplacementCandidates(res, tx, transport, scope, primaryDigest, v2Output)
-+ if err != nil {
-+ return nil, err
-+ }
-+ if canSubstitute {
-+ uncompressedDigest, err = sqc.uncompressedDigest(tx, primaryDigest)
-+ if err != nil {
-+ return nil, err
-+ }
-+
-+ // FIXME? We could integrate this with appendReplacementCandidates into a single join instead of N+1 queries.
-+ // (In the extreme, we could turn _everything_ this function does into a single query.
-+ // And going even further, even DestructivelyPrioritizeReplacementCandidates could be turned into SQL.)
-+ // For now, we prioritize simplicity, and sharing both code and implementation structure with the other cache implementations.
-+ rows, err := tx.Query("SELECT anyDigest FROM DigestUncompressedPairs WHERE uncompressedDigest = ?", uncompressedDigest.String())
-+ if err != nil {
-+ return nil, fmt.Errorf("querying for other digests: %w", err)
-+ }
-+ defer rows.Close()
-+ for rows.Next() {
-+ var otherDigestString string
-+ if err := rows.Scan(&otherDigestString); err != nil {
-+ return nil, fmt.Errorf("scanning other digest: %w", err)
-+ }
-+ otherDigest, err := digest.Parse(otherDigestString)
-+ if err != nil {
-+ return nil, err
-+ }
-+ if otherDigest != primaryDigest && otherDigest != uncompressedDigest {
-+ res, err = sqc.appendReplacementCandidates(res, tx, transport, scope, otherDigest, v2Output)
-+ if err != nil {
-+ return nil, err
-+ }
-+ }
-+ }
-+ if err := rows.Err(); err != nil {
-+ return nil, fmt.Errorf("iterating through other digests: %w", err)
-+ }
-+
-+ if uncompressedDigest != primaryDigest {
-+ res, err = sqc.appendReplacementCandidates(res, tx, transport, scope, uncompressedDigest, v2Output)
-+ if err != nil {
-+ return nil, err
-+ }
-+ }
-+ }
-+ return res, nil
-+ })
-+ if err != nil {
-+ return []blobinfocache.BICReplacementCandidate2{} // FIXME? Log err (but throttle the log volume on repeated accesses)?
-+ }
-+ return prioritize.DestructivelyPrioritizeReplacementCandidates(res, primaryDigest, uncompressedDigest)
-+
-+}
-+
-+// CandidateLocations returns a prioritized, limited, number of blobs and their locations that could possibly be reused
-+// within the specified (transport scope) (if they still exist, which is not guaranteed).
-+//
-+// If !canSubstitute, the returned candidates will match the submitted digest exactly; if canSubstitute,
-+// data from previous RecordDigestUncompressedPair calls is used to also look up variants of the blob which have the same
-+// uncompressed digest.
-+func (sqc *cache) CandidateLocations(transport types.ImageTransport, scope types.BICTransportScope, digest digest.Digest, canSubstitute bool) []types.BICReplacementCandidate {
-+ return blobinfocache.CandidateLocationsFromV2(sqc.candidateLocations(transport, scope, digest, canSubstitute, false))
-+}
-diff --git a/vendor/github.com/containers/image/v5/pkg/compression/compression.go b/vendor/github.com/containers/image/v5/pkg/compression/compression.go
-index 4443dda7f..b83a257e4 100644
---- a/vendor/github.com/containers/image/v5/pkg/compression/compression.go
-+++ b/vendor/github.com/containers/image/v5/pkg/compression/compression.go
-@@ -19,19 +19,19 @@ type Algorithm = types.Algorithm
-
- var (
- // Gzip compression.
-- Gzip = internal.NewAlgorithm(types.GzipAlgorithmName, types.GzipAlgorithmName,
-+ Gzip = internal.NewAlgorithm(types.GzipAlgorithmName, "",
- []byte{0x1F, 0x8B, 0x08}, GzipDecompressor, gzipCompressor)
- // Bzip2 compression.
-- Bzip2 = internal.NewAlgorithm(types.Bzip2AlgorithmName, types.Bzip2AlgorithmName,
-+ Bzip2 = internal.NewAlgorithm(types.Bzip2AlgorithmName, "",
- []byte{0x42, 0x5A, 0x68}, Bzip2Decompressor, bzip2Compressor)
- // Xz compression.
-- Xz = internal.NewAlgorithm(types.XzAlgorithmName, types.XzAlgorithmName,
-+ Xz = internal.NewAlgorithm(types.XzAlgorithmName, "",
- []byte{0xFD, 0x37, 0x7A, 0x58, 0x5A, 0x00}, XzDecompressor, xzCompressor)
- // Zstd compression.
-- Zstd = internal.NewAlgorithm(types.ZstdAlgorithmName, types.ZstdAlgorithmName,
-+ Zstd = internal.NewAlgorithm(types.ZstdAlgorithmName, "",
- []byte{0x28, 0xb5, 0x2f, 0xfd}, ZstdDecompressor, zstdCompressor)
-- // ZstdChunked is a Zstd compression with chunk metadta which allows random access to individual files.
-- ZstdChunked = internal.NewAlgorithm(types.ZstdChunkedAlgorithmName, types.ZstdAlgorithmName, /* Note: InternalUnstableUndocumentedMIMEQuestionMark is not ZstdChunkedAlgorithmName */
-+ // ZstdChunked is a Zstd compression with chunk metadata which allows random access to individual files.
-+ ZstdChunked = internal.NewAlgorithm(types.ZstdChunkedAlgorithmName, types.ZstdAlgorithmName,
- nil, ZstdDecompressor, compressor.ZstdCompressor)
-
- compressionAlgorithms = map[string]Algorithm{
-diff --git a/vendor/github.com/containers/image/v5/pkg/compression/internal/types.go b/vendor/github.com/containers/image/v5/pkg/compression/internal/types.go
-index ba619be00..d6f85274d 100644
---- a/vendor/github.com/containers/image/v5/pkg/compression/internal/types.go
-+++ b/vendor/github.com/containers/image/v5/pkg/compression/internal/types.go
-@@ -12,23 +12,28 @@ type DecompressorFunc func(io.Reader) (io.ReadCloser, error)
-
- // Algorithm is a compression algorithm that can be used for CompressStream.
- type Algorithm struct {
-- name string
-- mime string
-- prefix []byte // Initial bytes of a stream compressed using this algorithm, or empty to disable detection.
-- decompressor DecompressorFunc
-- compressor CompressorFunc
-+ name string
-+ baseVariantName string
-+ prefix []byte // Initial bytes of a stream compressed using this algorithm, or empty to disable detection.
-+ decompressor DecompressorFunc
-+ compressor CompressorFunc
- }
-
- // NewAlgorithm creates an Algorithm instance.
-+// nontrivialBaseVariantName is typically "".
- // This function exists so that Algorithm instances can only be created by code that
- // is allowed to import this internal subpackage.
--func NewAlgorithm(name, mime string, prefix []byte, decompressor DecompressorFunc, compressor CompressorFunc) Algorithm {
-+func NewAlgorithm(name, nontrivialBaseVariantName string, prefix []byte, decompressor DecompressorFunc, compressor CompressorFunc) Algorithm {
-+ baseVariantName := name
-+ if nontrivialBaseVariantName != "" {
-+ baseVariantName = nontrivialBaseVariantName
-+ }
- return Algorithm{
-- name: name,
-- mime: mime,
-- prefix: prefix,
-- decompressor: decompressor,
-- compressor: compressor,
-+ name: name,
-+ baseVariantName: baseVariantName,
-+ prefix: prefix,
-+ decompressor: decompressor,
-+ compressor: compressor,
- }
- }
-
-@@ -37,10 +42,11 @@ func (c Algorithm) Name() string {
- return c.name
- }
-
--// InternalUnstableUndocumentedMIMEQuestionMark ???
--// DO NOT USE THIS anywhere outside of c/image until it is properly documented.
--func (c Algorithm) InternalUnstableUndocumentedMIMEQuestionMark() string {
-- return c.mime
-+// BaseVariantName returns the name of the “base variant” of the compression algorithm.
-+// It is either equal to Name() of the same algorithm, or equal to Name() of some other Algorithm (the “base variant”).
-+// This supports a single level of “is-a” relationship between compression algorithms, e.g. where "zstd:chunked" data is valid "zstd" data.
-+func (c Algorithm) BaseVariantName() string {
-+ return c.baseVariantName
- }
-
- // AlgorithmCompressor returns the compressor field of algo.
-diff --git a/vendor/github.com/containers/image/v5/pkg/docker/config/config.go b/vendor/github.com/containers/image/v5/pkg/docker/config/config.go
-index 0e3003cec..c61065cb0 100644
---- a/vendor/github.com/containers/image/v5/pkg/docker/config/config.go
-+++ b/vendor/github.com/containers/image/v5/pkg/docker/config/config.go
-@@ -5,6 +5,7 @@ import (
- "encoding/json"
- "errors"
- "fmt"
-+ "io/fs"
- "os"
- "os/exec"
- "path/filepath"
-@@ -48,9 +49,9 @@ var (
- ErrNotSupported = errors.New("not supported")
- )
-
--// authPath combines a path to a file with container registry access keys,
--// along with expected properties of that path (currently just whether it's)
--// legacy format or not.
-+// authPath combines a path to a file with container registry credentials,
-+// along with expected properties of that path (currently just whether it's
-+// legacy format or not).
- type authPath struct {
- path string
- legacyFormat bool
-@@ -61,78 +62,6 @@ func newAuthPathDefault(path string) authPath {
- return authPath{path: path, legacyFormat: false}
- }
-
--// SetCredentials stores the username and password in a location
--// appropriate for sys and the users’ configuration.
--// A valid key is a repository, a namespace within a registry, or a registry hostname;
--// using forms other than just a registry may fail depending on configuration.
--// Returns a human-readable description of the location that was updated.
--// NOTE: The return value is only intended to be read by humans; its form is not an API,
--// it may change (or new forms can be added) any time.
--func SetCredentials(sys *types.SystemContext, key, username, password string) (string, error) {
-- isNamespaced, err := validateKey(key)
-- if err != nil {
-- return "", err
-- }
--
-- helpers, err := sysregistriesv2.CredentialHelpers(sys)
-- if err != nil {
-- return "", err
-- }
--
-- // Make sure to collect all errors.
-- var multiErr error
-- for _, helper := range helpers {
-- var desc string
-- var err error
-- switch helper {
-- // Special-case the built-in helpers for auth files.
-- case sysregistriesv2.AuthenticationFileHelper:
-- desc, err = modifyJSON(sys, func(auths *dockerConfigFile) (bool, string, error) {
-- if ch, exists := auths.CredHelpers[key]; exists {
-- if isNamespaced {
-- return false, "", unsupportedNamespaceErr(ch)
-- }
-- desc, err := setAuthToCredHelper(ch, key, username, password)
-- if err != nil {
-- return false, "", err
-- }
-- return false, desc, nil
-- }
-- creds := base64.StdEncoding.EncodeToString([]byte(username + ":" + password))
-- newCreds := dockerAuthConfig{Auth: creds}
-- auths.AuthConfigs[key] = newCreds
-- return true, "", nil
-- })
-- // External helpers.
-- default:
-- if isNamespaced {
-- err = unsupportedNamespaceErr(helper)
-- } else {
-- desc, err = setAuthToCredHelper(helper, key, username, password)
-- }
-- }
-- if err != nil {
-- multiErr = multierror.Append(multiErr, err)
-- logrus.Debugf("Error storing credentials for %s in credential helper %s: %v", key, helper, err)
-- continue
-- }
-- logrus.Debugf("Stored credentials for %s in credential helper %s", key, helper)
-- return desc, nil
-- }
-- return "", multiErr
--}
--
--func unsupportedNamespaceErr(helper string) error {
-- return fmt.Errorf("namespaced key is not supported for credential helper %s", helper)
--}
--
--// SetAuthentication stores the username and password in the credential helper or file
--// See the documentation of SetCredentials for format of "key"
--func SetAuthentication(sys *types.SystemContext, key, username, password string) error {
-- _, err := SetCredentials(sys, key, username, password)
-- return err
--}
--
- // GetAllCredentials returns the registry credentials for all registries stored
- // in any of the configured credential helpers.
- func GetAllCredentials(sys *types.SystemContext) (map[string]types.DockerAuthConfig, error) {
-@@ -156,17 +85,17 @@ func GetAllCredentials(sys *types.SystemContext) (map[string]types.DockerAuthCon
- case sysregistriesv2.AuthenticationFileHelper:
- for _, path := range getAuthFilePaths(sys, homedir.Get()) {
- // parse returns an empty map in case the path doesn't exist.
-- auths, err := path.parse()
-+ fileContents, err := path.parse()
- if err != nil {
- return nil, fmt.Errorf("reading JSON file %q: %w", path.path, err)
- }
- // Credential helpers in the auth file have a
- // direct mapping to a registry, so we can just
- // walk the map.
-- for registry := range auths.CredHelpers {
-+ for registry := range fileContents.CredHelpers {
- allKeys.Add(registry)
- }
-- for key := range auths.AuthConfigs {
-+ for key := range fileContents.AuthConfigs {
- key := normalizeAuthFileKey(key, path.legacyFormat)
- if key == normalizedDockerIORegistry {
- key = "docker.io"
-@@ -176,7 +105,7 @@ func GetAllCredentials(sys *types.SystemContext) (map[string]types.DockerAuthCon
- }
- // External helpers.
- default:
-- creds, err := listAuthsFromCredHelper(helper)
-+ creds, err := listCredsInCredHelper(helper)
- if err != nil {
- logrus.Debugf("Error listing credentials stored in credential helper %s: %v", helper, err)
- if errors.Is(err, exec.ErrNotFound) {
-@@ -193,19 +122,19 @@ func GetAllCredentials(sys *types.SystemContext) (map[string]types.DockerAuthCon
-
- // Now use `GetCredentials` to the specific auth configs for each
- // previously listed registry.
-- authConfigs := make(map[string]types.DockerAuthConfig)
-+ allCreds := make(map[string]types.DockerAuthConfig)
- for _, key := range allKeys.Values() {
-- authConf, err := GetCredentials(sys, key)
-+ creds, err := GetCredentials(sys, key)
- if err != nil {
- // Note: we rely on the logging in `GetCredentials`.
- return nil, err
- }
-- if authConf != (types.DockerAuthConfig{}) {
-- authConfigs[key] = authConf
-+ if creds != (types.DockerAuthConfig{}) {
-+ allCreds[key] = creds
- }
- }
-
-- return authConfigs, nil
-+ return allCreds, nil
- }
-
- // getAuthFilePaths returns a slice of authPaths based on the system context
-@@ -285,13 +214,13 @@ func getCredentialsWithHomeDir(sys *types.SystemContext, key, homeDir string) (t
- // Anonymous function to query credentials from auth files.
- getCredentialsFromAuthFiles := func() (types.DockerAuthConfig, string, error) {
- for _, path := range getAuthFilePaths(sys, homeDir) {
-- authConfig, err := findCredentialsInFile(key, registry, path)
-+ creds, err := findCredentialsInFile(key, registry, path)
- if err != nil {
- return types.DockerAuthConfig{}, "", err
- }
-
-- if authConfig != (types.DockerAuthConfig{}) {
-- return authConfig, path.path, nil
-+ if creds != (types.DockerAuthConfig{}) {
-+ return creds, path.path, nil
- }
- }
- return types.DockerAuthConfig{}, "", nil
-@@ -320,7 +249,7 @@ func getCredentialsWithHomeDir(sys *types.SystemContext, key, homeDir string) (t
- // This intentionally uses "registry", not "key"; we don't support namespaced
- // credentials in helpers, but a "registry" is a valid parent of "key".
- helperKey = registry
-- creds, err = getAuthFromCredHelper(helper, registry)
-+ creds, err = getCredsFromCredHelper(helper, registry)
- }
- if err != nil {
- logrus.Debugf("Error looking up credentials for %s in credential helper %s: %v", helperKey, helper, err)
-@@ -360,27 +289,89 @@ func GetAuthentication(sys *types.SystemContext, key string) (string, string, er
- // getAuthenticationWithHomeDir is an internal implementation detail of GetAuthentication,
- // it exists only to allow testing it with an artificial home directory.
- func getAuthenticationWithHomeDir(sys *types.SystemContext, key, homeDir string) (string, string, error) {
-- auth, err := getCredentialsWithHomeDir(sys, key, homeDir)
-+ creds, err := getCredentialsWithHomeDir(sys, key, homeDir)
- if err != nil {
- return "", "", err
- }
-- if auth.IdentityToken != "" {
-+ if creds.IdentityToken != "" {
- return "", "", fmt.Errorf("non-empty identity token found and this API doesn't support it: %w", ErrNotSupported)
- }
-- return auth.Username, auth.Password, nil
-+ return creds.Username, creds.Password, nil
- }
-
--// RemoveAuthentication removes credentials for `key` from all possible
--// sources such as credential helpers and auth files.
-+// SetCredentials stores the username and password in a location
-+// appropriate for sys and the users’ configuration.
- // A valid key is a repository, a namespace within a registry, or a registry hostname;
- // using forms other than just a registry may fail depending on configuration.
--func RemoveAuthentication(sys *types.SystemContext, key string) error {
-- isNamespaced, err := validateKey(key)
-+// Returns a human-readable description of the location that was updated.
-+// NOTE: The return value is only intended to be read by humans; its form is not an API,
-+// it may change (or new forms can be added) any time.
-+func SetCredentials(sys *types.SystemContext, key, username, password string) (string, error) {
-+ helpers, jsonEditor, key, isNamespaced, err := prepareForEdit(sys, key, true)
- if err != nil {
-- return err
-+ return "", err
- }
-
-- helpers, err := sysregistriesv2.CredentialHelpers(sys)
-+ // Make sure to collect all errors.
-+ var multiErr error
-+ for _, helper := range helpers {
-+ var desc string
-+ var err error
-+ switch helper {
-+ // Special-case the built-in helpers for auth files.
-+ case sysregistriesv2.AuthenticationFileHelper:
-+ desc, err = jsonEditor(sys, func(fileContents *dockerConfigFile) (bool, string, error) {
-+ if ch, exists := fileContents.CredHelpers[key]; exists {
-+ if isNamespaced {
-+ return false, "", unsupportedNamespaceErr(ch)
-+ }
-+ desc, err := setCredsInCredHelper(ch, key, username, password)
-+ if err != nil {
-+ return false, "", err
-+ }
-+ return false, desc, nil
-+ }
-+ creds := base64.StdEncoding.EncodeToString([]byte(username + ":" + password))
-+ newCreds := dockerAuthConfig{Auth: creds}
-+ fileContents.AuthConfigs[key] = newCreds
-+ return true, "", nil
-+ })
-+ // External helpers.
-+ default:
-+ if isNamespaced {
-+ err = unsupportedNamespaceErr(helper)
-+ } else {
-+ desc, err = setCredsInCredHelper(helper, key, username, password)
-+ }
-+ }
-+ if err != nil {
-+ multiErr = multierror.Append(multiErr, err)
-+ logrus.Debugf("Error storing credentials for %s in credential helper %s: %v", key, helper, err)
-+ continue
-+ }
-+ logrus.Debugf("Stored credentials for %s in credential helper %s", key, helper)
-+ return desc, nil
-+ }
-+ return "", multiErr
-+}
-+
-+func unsupportedNamespaceErr(helper string) error {
-+ return fmt.Errorf("namespaced key is not supported for credential helper %s", helper)
-+}
-+
-+// SetAuthentication stores the username and password in the credential helper or file
-+// See the documentation of SetCredentials for format of "key"
-+func SetAuthentication(sys *types.SystemContext, key, username, password string) error {
-+ _, err := SetCredentials(sys, key, username, password)
-+ return err
-+}
-+
-+// RemoveAuthentication removes credentials for `key` from all possible
-+// sources such as credential helpers and auth files.
-+// A valid key is a repository, a namespace within a registry, or a registry hostname;
-+// using forms other than just a registry may fail depending on configuration.
-+func RemoveAuthentication(sys *types.SystemContext, key string) error {
-+ helpers, jsonEditor, key, isNamespaced, err := prepareForEdit(sys, key, true)
- if err != nil {
- return err
- }
-@@ -393,7 +384,7 @@ func RemoveAuthentication(sys *types.SystemContext, key string) error {
- logrus.Debugf("Not removing credentials because namespaced keys are not supported for the credential helper: %s", helper)
- return
- }
-- err := deleteAuthFromCredHelper(helper, key)
-+ err := deleteCredsFromCredHelper(helper, key)
- if err == nil {
- logrus.Debugf("Credentials for %q were deleted from credential helper %s", key, helper)
- isLoggedIn = true
-@@ -411,13 +402,13 @@ func RemoveAuthentication(sys *types.SystemContext, key string) error {
- switch helper {
- // Special-case the built-in helper for auth files.
- case sysregistriesv2.AuthenticationFileHelper:
-- _, err = modifyJSON(sys, func(auths *dockerConfigFile) (bool, string, error) {
-- if innerHelper, exists := auths.CredHelpers[key]; exists {
-+ _, err = jsonEditor(sys, func(fileContents *dockerConfigFile) (bool, string, error) {
-+ if innerHelper, exists := fileContents.CredHelpers[key]; exists {
- removeFromCredHelper(innerHelper)
- }
-- if _, ok := auths.AuthConfigs[key]; ok {
-+ if _, ok := fileContents.AuthConfigs[key]; ok {
- isLoggedIn = true
-- delete(auths.AuthConfigs, key)
-+ delete(fileContents.AuthConfigs, key)
- }
- return true, "", multiErr
- })
-@@ -443,7 +434,7 @@ func RemoveAuthentication(sys *types.SystemContext, key string) error {
- // RemoveAllAuthentication deletes all the credentials stored in credential
- // helpers and auth files.
- func RemoveAllAuthentication(sys *types.SystemContext) error {
-- helpers, err := sysregistriesv2.CredentialHelpers(sys)
-+ helpers, jsonEditor, _, _, err := prepareForEdit(sys, "", false)
- if err != nil {
- return err
- }
-@@ -454,23 +445,23 @@ func RemoveAllAuthentication(sys *types.SystemContext) error {
- switch helper {
- // Special-case the built-in helper for auth files.
- case sysregistriesv2.AuthenticationFileHelper:
-- _, err = modifyJSON(sys, func(auths *dockerConfigFile) (bool, string, error) {
-- for registry, helper := range auths.CredHelpers {
-+ _, err = jsonEditor(sys, func(fileContents *dockerConfigFile) (bool, string, error) {
-+ for registry, helper := range fileContents.CredHelpers {
- // Helpers in auth files are expected
- // to exist, so no special treatment
- // for them.
-- if err := deleteAuthFromCredHelper(helper, registry); err != nil {
-+ if err := deleteCredsFromCredHelper(helper, registry); err != nil {
- return false, "", err
- }
- }
-- auths.CredHelpers = make(map[string]string)
-- auths.AuthConfigs = make(map[string]dockerAuthConfig)
-+ fileContents.CredHelpers = make(map[string]string)
-+ fileContents.AuthConfigs = make(map[string]dockerAuthConfig)
- return true, "", nil
- })
- // External helpers.
- default:
- var creds map[string]string
-- creds, err = listAuthsFromCredHelper(helper)
-+ creds, err = listCredsInCredHelper(helper)
- if err != nil {
- if errors.Is(err, exec.ErrNotFound) {
- // It's okay if the helper doesn't exist.
-@@ -480,7 +471,7 @@ func RemoveAllAuthentication(sys *types.SystemContext) error {
- }
- }
- for registry := range creds {
-- err = deleteAuthFromCredHelper(helper, registry)
-+ err = deleteCredsFromCredHelper(helper, registry)
- if err != nil {
- break
- }
-@@ -497,7 +488,47 @@ func RemoveAllAuthentication(sys *types.SystemContext) error {
- return multiErr
- }
-
--func listAuthsFromCredHelper(credHelper string) (map[string]string, error) {
-+// prepareForEdit processes sys and key (if keyRelevant) to return:
-+// - a list of credential helpers
-+// - a function which can be used to edit the JSON file
-+// - the key value to actually use in credential helpers / JSON
-+// - a boolean which is true if key is namespaced (and should not be used with credential helpers).
-+func prepareForEdit(sys *types.SystemContext, key string, keyRelevant bool) ([]string, func(*types.SystemContext, func(*dockerConfigFile) (bool, string, error)) (string, error), string, bool, error) {
-+ var isNamespaced bool
-+ if keyRelevant {
-+ ns, err := validateKey(key)
-+ if err != nil {
-+ return nil, nil, "", false, err
-+ }
-+ isNamespaced = ns
-+ }
-+
-+ if sys != nil && sys.DockerCompatAuthFilePath != "" {
-+ if sys.AuthFilePath != "" {
-+ return nil, nil, "", false, errors.New("AuthFilePath and DockerCompatAuthFilePath can not be set simultaneously")
-+ }
-+ if keyRelevant {
-+ if isNamespaced {
-+ return nil, nil, "", false, fmt.Errorf("Credentials cannot be recorded in Docker-compatible format with namespaced key %q", key)
-+ }
-+ if key == "docker.io" {
-+ key = "https://index.docker.io/v1/"
-+ }
-+ }
-+
-+ // Do not use helpers defined in sysregistriesv2 because Docker isn’t aware of them.
-+ return []string{sysregistriesv2.AuthenticationFileHelper}, modifyDockerConfigJSON, key, false, nil
-+ }
-+
-+ helpers, err := sysregistriesv2.CredentialHelpers(sys)
-+ if err != nil {
-+ return nil, nil, "", false, err
-+ }
-+
-+ return helpers, modifyJSON, key, isNamespaced, nil
-+}
-+
-+func listCredsInCredHelper(credHelper string) (map[string]string, error) {
- helperName := fmt.Sprintf("docker-credential-%s", credHelper)
- p := helperclient.NewShellProgramFunc(helperName)
- return helperclient.List(p)
-@@ -513,17 +544,26 @@ func getPathToAuth(sys *types.SystemContext) (authPath, bool, error) {
- // it exists only to allow testing it with an artificial runtime.GOOS.
- func getPathToAuthWithOS(sys *types.SystemContext, goOS string) (authPath, bool, error) {
- if sys != nil {
-+ if sys.AuthFilePath != "" && sys.DockerCompatAuthFilePath != "" {
-+ return authPath{}, false, errors.New("AuthFilePath and DockerCompatAuthFilePath can not be set simultaneously")
-+ }
- if sys.AuthFilePath != "" {
- return newAuthPathDefault(sys.AuthFilePath), true, nil
- }
-+ // When reading, we can process auth.json and Docker’s config.json with the same code.
-+ // When writing, prepareForEdit chooses an appropriate jsonEditor implementation.
-+ if sys.DockerCompatAuthFilePath != "" {
-+ return newAuthPathDefault(sys.DockerCompatAuthFilePath), true, nil
-+ }
- if sys.LegacyFormatAuthFilePath != "" {
- return authPath{path: sys.LegacyFormatAuthFilePath, legacyFormat: true}, true, nil
- }
-- if sys.RootForImplicitAbsolutePaths != "" {
-+ // Note: RootForImplicitAbsolutePaths should not affect paths starting with $HOME
-+ if sys.RootForImplicitAbsolutePaths != "" && goOS == "linux" {
- return newAuthPathDefault(filepath.Join(sys.RootForImplicitAbsolutePaths, fmt.Sprintf(defaultPerUIDPathFormat, os.Getuid()))), false, nil
- }
- }
-- if goOS == "windows" || goOS == "darwin" {
-+ if goOS != "linux" {
- return newAuthPathDefault(filepath.Join(homedir.Get(), nonLinuxAuthFilePath)), false, nil
- }
-
-@@ -543,40 +583,40 @@ func getPathToAuthWithOS(sys *types.SystemContext, goOS string) (authPath, bool,
- return newAuthPathDefault(fmt.Sprintf(defaultPerUIDPathFormat, os.Getuid())), false, nil
- }
-
--// parse unmarshals the authentications stored in the auth.json file and returns it
-+// parse unmarshals the credentials stored in the auth.json file and returns it
- // or returns an empty dockerConfigFile data structure if auth.json does not exist
- // if the file exists and is empty, this function returns an error.
- func (path authPath) parse() (dockerConfigFile, error) {
-- var auths dockerConfigFile
-+ var fileContents dockerConfigFile
-
- raw, err := os.ReadFile(path.path)
- if err != nil {
- if os.IsNotExist(err) {
-- auths.AuthConfigs = map[string]dockerAuthConfig{}
-- return auths, nil
-+ fileContents.AuthConfigs = map[string]dockerAuthConfig{}
-+ return fileContents, nil
- }
- return dockerConfigFile{}, err
- }
-
- if path.legacyFormat {
-- if err = json.Unmarshal(raw, &auths.AuthConfigs); err != nil {
-+ if err = json.Unmarshal(raw, &fileContents.AuthConfigs); err != nil {
- return dockerConfigFile{}, fmt.Errorf("unmarshaling JSON at %q: %w", path.path, err)
- }
-- return auths, nil
-+ return fileContents, nil
- }
-
-- if err = json.Unmarshal(raw, &auths); err != nil {
-+ if err = json.Unmarshal(raw, &fileContents); err != nil {
- return dockerConfigFile{}, fmt.Errorf("unmarshaling JSON at %q: %w", path.path, err)
- }
-
-- if auths.AuthConfigs == nil {
-- auths.AuthConfigs = map[string]dockerAuthConfig{}
-+ if fileContents.AuthConfigs == nil {
-+ fileContents.AuthConfigs = map[string]dockerAuthConfig{}
- }
-- if auths.CredHelpers == nil {
-- auths.CredHelpers = make(map[string]string)
-+ if fileContents.CredHelpers == nil {
-+ fileContents.CredHelpers = make(map[string]string)
- }
-
-- return auths, nil
-+ return fileContents, nil
- }
-
- // modifyJSON finds an auth.json file, calls editor on the contents, and
-@@ -585,7 +625,7 @@ func (path authPath) parse() (dockerConfigFile, error) {
- //
- // The editor may also return a human-readable description of the updated location; if it is "",
- // the file itself is used.
--func modifyJSON(sys *types.SystemContext, editor func(auths *dockerConfigFile) (bool, string, error)) (string, error) {
-+func modifyJSON(sys *types.SystemContext, editor func(fileContents *dockerConfigFile) (bool, string, error)) (string, error) {
- path, _, err := getPathToAuth(sys)
- if err != nil {
- return "", err
-@@ -599,17 +639,17 @@ func modifyJSON(sys *types.SystemContext, editor func(auths *dockerConfigFile) (
- return "", err
- }
-
-- auths, err := path.parse()
-+ fileContents, err := path.parse()
- if err != nil {
- return "", fmt.Errorf("reading JSON file %q: %w", path.path, err)
- }
-
-- updated, description, err := editor(&auths)
-+ updated, description, err := editor(&fileContents)
- if err != nil {
- return "", fmt.Errorf("updating %q: %w", path.path, err)
- }
- if updated {
-- newData, err := json.MarshalIndent(auths, "", "\t")
-+ newData, err := json.MarshalIndent(fileContents, "", "\t")
- if err != nil {
- return "", fmt.Errorf("marshaling JSON %q: %w", path.path, err)
- }
-@@ -625,7 +665,87 @@ func modifyJSON(sys *types.SystemContext, editor func(auths *dockerConfigFile) (
- return description, nil
- }
-
--func getAuthFromCredHelper(credHelper, registry string) (types.DockerAuthConfig, error) {
-+// modifyDockerConfigJSON finds a docker config.json file, calls editor on the contents, and
-+// writes it back if editor returns true.
-+// Returns a human-readable description of the file, to be returned by SetCredentials.
-+//
-+// The editor may also return a human-readable description of the updated location; if it is "",
-+// the file itself is used.
-+func modifyDockerConfigJSON(sys *types.SystemContext, editor func(fileContents *dockerConfigFile) (bool, string, error)) (string, error) {
-+ if sys == nil || sys.DockerCompatAuthFilePath == "" {
-+ return "", errors.New("internal error: modifyDockerConfigJSON called with DockerCompatAuthFilePath not set")
-+ }
-+ path := sys.DockerCompatAuthFilePath
-+
-+ dir := filepath.Dir(path)
-+ if err := os.MkdirAll(dir, 0700); err != nil {
-+ return "", err
-+ }
-+
-+ // Try hard not to clobber fields we don’t understand, even fields which may be added in future Docker versions.
-+ var rawContents map[string]json.RawMessage
-+ originalBytes, err := os.ReadFile(path)
-+ switch {
-+ case err == nil:
-+ if err := json.Unmarshal(originalBytes, &rawContents); err != nil {
-+ return "", fmt.Errorf("unmarshaling JSON at %q: %w", path, err)
-+ }
-+ case errors.Is(err, fs.ErrNotExist):
-+ rawContents = map[string]json.RawMessage{}
-+ default: // err != nil
-+ return "", err
-+ }
-+
-+ syntheticContents := dockerConfigFile{
-+ AuthConfigs: map[string]dockerAuthConfig{},
-+ CredHelpers: map[string]string{},
-+ }
-+ // json.Unmarshal also falls back to case-insensitive field matching; this code does not do that. Presumably
-+ // config.json is mostly maintained by machines doing `docker login`, so the files should, hopefully, not contain field names with
-+ // unexpected case.
-+ if rawAuths, ok := rawContents["auths"]; ok {
-+ // This conversion will lose fields we don’t know about; when updating an entry, we can’t tell whether an unknown field
-+ // should be preserved or discarded (because it is made obsolete/unwanted with the new credentials).
-+ // It might make sense to track which entries of "auths" we actually modified, and to not touch any others.
-+ if err := json.Unmarshal(rawAuths, &syntheticContents.AuthConfigs); err != nil {
-+ return "", fmt.Errorf(`unmarshaling "auths" in JSON at %q: %w`, path, err)
-+ }
-+ }
-+ if rawCH, ok := rawContents["credHelpers"]; ok {
-+ if err := json.Unmarshal(rawCH, &syntheticContents.CredHelpers); err != nil {
-+ return "", fmt.Errorf(`unmarshaling "credHelpers" in JSON at %q: %w`, path, err)
-+
-+ }
-+ }
-+
-+ updated, description, err := editor(&syntheticContents)
-+ if err != nil {
-+ return "", fmt.Errorf("updating %q: %w", path, err)
-+ }
-+ if updated {
-+ rawAuths, err := json.MarshalIndent(syntheticContents.AuthConfigs, "", "\t")
-+ if err != nil {
-+ return "", fmt.Errorf("marshaling JSON %q: %w", path, err)
-+ }
-+ rawContents["auths"] = rawAuths
-+ // We never modify syntheticContents.CredHelpers, so we don’t need to update it.
-+ newData, err := json.MarshalIndent(rawContents, "", "\t")
-+ if err != nil {
-+ return "", fmt.Errorf("marshaling JSON %q: %w", path, err)
-+ }
-+
-+ if err = ioutils.AtomicWriteFile(path, newData, 0600); err != nil {
-+ return "", fmt.Errorf("writing to file %q: %w", path, err)
-+ }
-+ }
-+
-+ if description == "" {
-+ description = path
-+ }
-+ return description, nil
-+}
-+
-+func getCredsFromCredHelper(credHelper, registry string) (types.DockerAuthConfig, error) {
- helperName := fmt.Sprintf("docker-credential-%s", credHelper)
- p := helperclient.NewShellProgramFunc(helperName)
- creds, err := helperclient.Get(p, registry)
-@@ -650,9 +770,9 @@ func getAuthFromCredHelper(credHelper, registry string) (types.DockerAuthConfig,
- }
- }
-
--// setAuthToCredHelper stores (username, password) for registry in credHelper.
-+// setCredsInCredHelper stores (username, password) for registry in credHelper.
- // Returns a human-readable description of the destination, to be returned by SetCredentials.
--func setAuthToCredHelper(credHelper, registry, username, password string) (string, error) {
-+func setCredsInCredHelper(credHelper, registry, username, password string) (string, error) {
- helperName := fmt.Sprintf("docker-credential-%s", credHelper)
- p := helperclient.NewShellProgramFunc(helperName)
- creds := &credentials.Credentials{
-@@ -666,7 +786,7 @@ func setAuthToCredHelper(credHelper, registry, username, password string) (strin
- return fmt.Sprintf("credential helper: %s", credHelper), nil
- }
-
--func deleteAuthFromCredHelper(credHelper, registry string) error {
-+func deleteCredsFromCredHelper(credHelper, registry string) error {
- helperName := fmt.Sprintf("docker-credential-%s", credHelper)
- p := helperclient.NewShellProgramFunc(helperName)
- return helperclient.Erase(p, registry)
-@@ -675,7 +795,7 @@ func deleteAuthFromCredHelper(credHelper, registry string) error {
- // findCredentialsInFile looks for credentials matching "key"
- // (which is "registry" or a namespace in "registry") in "path".
- func findCredentialsInFile(key, registry string, path authPath) (types.DockerAuthConfig, error) {
-- auths, err := path.parse()
-+ fileContents, err := path.parse()
- if err != nil {
- return types.DockerAuthConfig{}, fmt.Errorf("reading JSON file %q: %w", path.path, err)
- }
-@@ -683,9 +803,9 @@ func findCredentialsInFile(key, registry string, path authPath) (types.DockerAut
- // First try cred helpers. They should always be normalized.
- // This intentionally uses "registry", not "key"; we don't support namespaced
- // credentials in helpers.
-- if ch, exists := auths.CredHelpers[registry]; exists {
-+ if ch, exists := fileContents.CredHelpers[registry]; exists {
- logrus.Debugf("Looking up in credential helper %s based on credHelpers entry in %s", ch, path.path)
-- return getAuthFromCredHelper(ch, registry)
-+ return getCredsFromCredHelper(ch, registry)
- }
-
- // Support sub-registry namespaces in auth.
-@@ -701,7 +821,7 @@ func findCredentialsInFile(key, registry string, path authPath) (types.DockerAut
- // Repo or namespace keys are only supported as exact matches. For registry
- // keys we prefer exact matches as well.
- for _, key := range keys {
-- if val, exists := auths.AuthConfigs[key]; exists {
-+ if val, exists := fileContents.AuthConfigs[key]; exists {
- return decodeDockerAuth(path.path, key, val)
- }
- }
-@@ -715,7 +835,7 @@ func findCredentialsInFile(key, registry string, path authPath) (types.DockerAut
- // The docker.io registry still uses the /v1/ key with a special host name,
- // so account for that as well.
- registry = normalizeRegistry(registry)
-- for k, v := range auths.AuthConfigs {
-+ for k, v := range fileContents.AuthConfigs {
- if normalizeAuthFileKey(k, path.legacyFormat) == registry {
- return decodeDockerAuth(path.path, k, v)
- }
-diff --git a/vendor/github.com/containers/image/v5/pkg/tlsclientconfig/tlsclientconfig.go b/vendor/github.com/containers/image/v5/pkg/tlsclientconfig/tlsclientconfig.go
-index 56b0d4939..c6ec84bd5 100644
---- a/vendor/github.com/containers/image/v5/pkg/tlsclientconfig/tlsclientconfig.go
-+++ b/vendor/github.com/containers/image/v5/pkg/tlsclientconfig/tlsclientconfig.go
-@@ -66,7 +66,7 @@ func SetupCertificates(dir string, tlsc *tls.Config) error {
- if err != nil {
- return err
- }
-- tlsc.Certificates = append(tlsc.Certificates, cert)
-+ tlsc.Certificates = append(slices.Clone(tlsc.Certificates), cert)
- }
- if strings.HasSuffix(f.Name(), ".key") {
- keyName := f.Name()
-diff --git a/vendor/github.com/containers/image/v5/types/types.go b/vendor/github.com/containers/image/v5/types/types.go
-index 6ea414b86..7d6097346 100644
---- a/vendor/github.com/containers/image/v5/types/types.go
-+++ b/vendor/github.com/containers/image/v5/types/types.go
-@@ -135,8 +135,8 @@ type BlobInfo struct {
- // CompressionOperation is used in Image.UpdateLayerInfos to instruct
- // whether the original layer's "compressed or not" should be preserved,
- // possibly while changing the compression algorithm from one to another,
-- // or if it should be compressed or decompressed. The field defaults to
-- // preserve the original layer's compressedness.
-+ // or if it should be changed to compressed or decompressed.
-+ // The field defaults to preserve the original layer's compressedness.
- // TODO: To remove together with CryptoOperation in re-design to remove
- // field out of BlobInfo.
- CompressionOperation LayerCompression
-@@ -445,7 +445,7 @@ type ImageCloser interface {
- Close() error
- }
-
--// ManifestUpdateOptions is a way to pass named optional arguments to Image.UpdatedManifest
-+// ManifestUpdateOptions is a way to pass named optional arguments to Image.UpdatedImage
- type ManifestUpdateOptions struct {
- LayerInfos []BlobInfo // Complete BlobInfos (size+digest+urls+annotations) which should replace the originals, in order (the root layer first, and then successive layered layers). BlobInfos' MediaType fields are ignored.
- EmbeddedDockerReference reference.Named
-@@ -457,7 +457,7 @@ type ManifestUpdateOptions struct {
- // ManifestUpdateInformation is a component of ManifestUpdateOptions, named here
- // only to make writing struct literals possible.
- type ManifestUpdateInformation struct {
-- Destination ImageDestination // and yes, UpdatedManifest may write to Destination (see the schema2 → schema1 conversion logic in image/docker_schema2.go)
-+ Destination ImageDestination // and yes, UpdatedImage may write to Destination (see the schema2 → schema1 conversion logic in image/docker_schema2.go)
- LayerInfos []BlobInfo // Complete BlobInfos (size+digest) which have been uploaded, in order (the root layer first, and then successive layered layers)
- LayerDiffIDs []digest.Digest // Digest values for the _uncompressed_ contents of the blobs which have been uploaded, in the same order.
- }
-@@ -585,15 +585,19 @@ type SystemContext struct {
- // resolving to Docker Hub in the Docker-compatible REST API of Podman; it should never be used outside this
- // specific context.
- PodmanOnlyShortNamesIgnoreRegistriesConfAndForceDockerHub bool
-- // If not "", overrides the default path for the authentication file, but only new format files
-+ // If not "", overrides the default path for the registry authentication file, but only new format files
- AuthFilePath string
-- // if not "", overrides the default path for the authentication file, but with the legacy format;
-+ // if not "", overrides the default path for the registry authentication file, but with the legacy format;
- // the code currently will by default look for legacy format files like .dockercfg in the $HOME dir;
- // but in addition to the home dir, openshift may mount .dockercfg files (via secret mount)
- // in locations other than the home dir; openshift components should then set this field in those cases;
- // this field is ignored if `AuthFilePath` is set (we favor the newer format);
- // only reading of this data is supported;
- LegacyFormatAuthFilePath string
-+ // If set, a path to a Docker-compatible "config.json" file containing credentials; and no other files are processed.
-+ // This must not be set if AuthFilePath is set.
-+ // Only credentials and credential helpers in this file apre processed, not any other configuration in this file.
-+ DockerCompatAuthFilePath string
- // If not "", overrides the use of platform.GOARCH when choosing an image or verifying architecture match.
- ArchitectureChoice string
- // If not "", overrides the use of platform.GOOS when choosing an image or verifying OS match.
-diff --git a/vendor/github.com/containers/image/v5/version/version.go b/vendor/github.com/containers/image/v5/version/version.go
-index 16a6d5816..2be054158 100644
---- a/vendor/github.com/containers/image/v5/version/version.go
-+++ b/vendor/github.com/containers/image/v5/version/version.go
-@@ -6,9 +6,9 @@ const (
- // VersionMajor is for an API incompatible changes
- VersionMajor = 5
- // VersionMinor is for functionality in a backwards-compatible manner
-- VersionMinor = 25
-+ VersionMinor = 30
- // VersionPatch is for backwards-compatible bug fixes
-- VersionPatch = 0
-+ VersionPatch = 1
-
- // VersionDev indicates development branch. Releases will be empty string.
- VersionDev = ""
-diff --git a/vendor/github.com/containers/ocicrypt/spec/spec.go b/vendor/github.com/containers/ocicrypt/spec/spec.go
-index 8665f6f21..c0c171824 100644
---- a/vendor/github.com/containers/ocicrypt/spec/spec.go
-+++ b/vendor/github.com/containers/ocicrypt/spec/spec.go
-@@ -9,8 +9,12 @@ const (
- MediaTypeLayerZstdEnc = "application/vnd.oci.image.layer.v1.tar+zstd+encrypted"
- // MediaTypeLayerNonDistributableEnc is MIME type used for non distributable encrypted layers.
- MediaTypeLayerNonDistributableEnc = "application/vnd.oci.image.layer.nondistributable.v1.tar+encrypted"
-- // MediaTypeLayerGzipEnc is MIME type used for non distributable encrypted gzip-compressed layers.
-+ // MediaTypeLayerNonDistributableGzipEnc is MIME type used for non distributable encrypted gzip-compressed layers.
- MediaTypeLayerNonDistributableGzipEnc = "application/vnd.oci.image.layer.nondistributable.v1.tar+gzip+encrypted"
-- // MediaTypeLayerZstdEnc is MIME type used for non distributable encrypted zstd-compressed layers.
-- MediaTypeLayerNonDistributableZsdtEnc = "application/vnd.oci.image.layer.nondistributable.v1.tar+zstd+encrypted"
-+ // MediaTypeLayerNonDistributableZstdEnc is MIME type used for non distributable encrypted zstd-compressed layers.
-+ MediaTypeLayerNonDistributableZstdEnc = "application/vnd.oci.image.layer.nondistributable.v1.tar+zstd+encrypted"
-+ // MediaTypeLayerNonDistributableZsdtEnc is MIME type used for non distributable encrypted zstd-compressed layers.
-+ //
-+ // Deprecated: Use [MediaTypeLayerNonDistributableZstdEnc].
-+ MediaTypeLayerNonDistributableZsdtEnc = MediaTypeLayerNonDistributableZstdEnc
- )
-diff --git a/vendor/github.com/containers/storage/pkg/archive/archive.go b/vendor/github.com/containers/storage/pkg/archive/archive.go
-index 6209205b3..70f76d66d 100644
---- a/vendor/github.com/containers/storage/pkg/archive/archive.go
-+++ b/vendor/github.com/containers/storage/pkg/archive/archive.go
-@@ -131,16 +131,6 @@ const (
- OverlayWhiteoutFormat
- )
-
--const (
-- modeISDIR = 040000 // Directory
-- modeISFIFO = 010000 // FIFO
-- modeISREG = 0100000 // Regular file
-- modeISLNK = 0120000 // Symbolic link
-- modeISBLK = 060000 // Block special file
-- modeISCHR = 020000 // Character special file
-- modeISSOCK = 0140000 // Socket
--)
--
- // IsArchivePath checks if the (possibly compressed) file at the given path
- // starts with a tar file header.
- func IsArchivePath(path string) bool {
-@@ -328,7 +318,6 @@ func ReplaceFileTarWrapper(inputTarStream io.ReadCloser, mods map[string]TarModi
- }
-
- pipeWriter.Close()
--
- }()
- return pipeReader
- }
-@@ -350,16 +339,47 @@ func (compression *Compression) Extension() string {
- return ""
- }
-
-+// nosysFileInfo hides the system-dependent info of the wrapped FileInfo to
-+// prevent tar.FileInfoHeader from introspecting it and potentially calling into
-+// glibc.
-+type nosysFileInfo struct {
-+ os.FileInfo
-+}
-+
-+func (fi nosysFileInfo) Sys() interface{} {
-+ // A Sys value of type *tar.Header is safe as it is system-independent.
-+ // The tar.FileInfoHeader function copies the fields into the returned
-+ // header without performing any OS lookups.
-+ if sys, ok := fi.FileInfo.Sys().(*tar.Header); ok {
-+ return sys
-+ }
-+ return nil
-+}
-+
-+// sysStatOverride, if non-nil, populates hdr from system-dependent fields of fi.
-+var sysStatOverride func(fi os.FileInfo, hdr *tar.Header) error
-+
-+func fileInfoHeaderNoLookups(fi os.FileInfo, link string) (*tar.Header, error) {
-+ if sysStatOverride == nil {
-+ return tar.FileInfoHeader(fi, link)
-+ }
-+ hdr, err := tar.FileInfoHeader(nosysFileInfo{fi}, link)
-+ if err != nil {
-+ return nil, err
-+ }
-+ return hdr, sysStatOverride(fi, hdr)
-+}
-+
- // FileInfoHeader creates a populated Header from fi.
- // Compared to archive pkg this function fills in more information.
- // Also, regardless of Go version, this function fills file type bits (e.g. hdr.Mode |= modeISDIR),
- // which have been deleted since Go 1.9 archive/tar.
- func FileInfoHeader(name string, fi os.FileInfo, link string) (*tar.Header, error) {
-- hdr, err := tar.FileInfoHeader(fi, link)
-+ hdr, err := fileInfoHeaderNoLookups(fi, link)
- if err != nil {
- return nil, err
- }
-- hdr.Mode = fillGo18FileTypeBits(int64(chmodTarEntry(os.FileMode(hdr.Mode))), fi)
-+ hdr.Mode = int64(chmodTarEntry(os.FileMode(hdr.Mode)))
- name, err = canonicalTarName(name, fi.IsDir())
- if err != nil {
- return nil, fmt.Errorf("tar: cannot canonicalize path: %w", err)
-@@ -371,31 +391,6 @@ func FileInfoHeader(name string, fi os.FileInfo, link string) (*tar.Header, erro
- return hdr, nil
- }
-
--// fillGo18FileTypeBits fills type bits which have been removed on Go 1.9 archive/tar
--// https://github.com/golang/go/commit/66b5a2f
--func fillGo18FileTypeBits(mode int64, fi os.FileInfo) int64 {
-- fm := fi.Mode()
-- switch {
-- case fm.IsRegular():
-- mode |= modeISREG
-- case fi.IsDir():
-- mode |= modeISDIR
-- case fm&os.ModeSymlink != 0:
-- mode |= modeISLNK
-- case fm&os.ModeDevice != 0:
-- if fm&os.ModeCharDevice != 0 {
-- mode |= modeISCHR
-- } else {
-- mode |= modeISBLK
-- }
-- case fm&os.ModeNamedPipe != 0:
-- mode |= modeISFIFO
-- case fm&os.ModeSocket != 0:
-- mode |= modeISSOCK
-- }
-- return mode
--}
--
- // ReadSecurityXattrToTarHeader reads security.capability, security,image
- // xattrs from filesystem to a tar header
- func ReadSecurityXattrToTarHeader(path string, hdr *tar.Header) error {
-@@ -421,7 +416,7 @@ func ReadUserXattrToTarHeader(path string, hdr *tar.Header) error {
- return err
- }
- for _, key := range xattrs {
-- if strings.HasPrefix(key, "user.") {
-+ if strings.HasPrefix(key, "user.") && !strings.HasPrefix(key, "user.overlay.") {
- value, err := system.Lgetxattr(path, key)
- if err != nil {
- if errors.Is(err, system.E2BIG) {
-@@ -513,7 +508,7 @@ func (ta *tarAppender) addTarFile(path, name string) error {
- }
- }
- if fi.Mode()&os.ModeSocket != 0 {
-- logrus.Warnf("archive: skipping %q since it is a socket", path)
-+ logrus.Infof("archive: skipping %q since it is a socket", path)
- return nil
- }
-
-@@ -552,9 +547,9 @@ func (ta *tarAppender) addTarFile(path, name string) error {
- }
- }
-
-- //handle re-mapping container ID mappings back to host ID mappings before
-- //writing tar headers/files. We skip whiteout files because they were written
-- //by the kernel and already have proper ownership relative to the host
-+ // handle re-mapping container ID mappings back to host ID mappings before
-+ // writing tar headers/files. We skip whiteout files because they were written
-+ // by the kernel and already have proper ownership relative to the host
- if !strings.HasPrefix(filepath.Base(hdr.Name), WhiteoutPrefix) && !ta.IDMappings.Empty() {
- fileIDPair, err := getFileUIDGID(fi.Sys())
- if err != nil {
-@@ -570,6 +565,10 @@ func (ta *tarAppender) addTarFile(path, name string) error {
- if ta.ChownOpts != nil {
- hdr.Uid = ta.ChownOpts.UID
- hdr.Gid = ta.ChownOpts.GID
-+ // Don’t expose the user names from the local system; they probably don’t match the ta.ChownOpts value anyway,
-+ // and they unnecessarily give recipients of the tar file potentially private data.
-+ hdr.Uname = ""
-+ hdr.Gname = ""
- }
-
- maybeTruncateHeaderModTime(hdr)
-@@ -702,7 +701,7 @@ func createTarFile(path, extractDir string, hdr *tar.Header, reader io.Reader, L
- }
-
- if forceMask != nil && (hdr.Typeflag != tar.TypeSymlink || runtime.GOOS == "darwin") {
-- value := fmt.Sprintf("%d:%d:0%o", hdr.Uid, hdr.Gid, hdrInfo.Mode()&07777)
-+ value := fmt.Sprintf("%d:%d:0%o", hdr.Uid, hdr.Gid, hdrInfo.Mode()&0o7777)
- if err := system.Lsetxattr(path, idtools.ContainersOverrideXattr, []byte(value), 0); err != nil {
- return err
- }
-@@ -800,7 +799,6 @@ func Tar(path string, compression Compression) (io.ReadCloser, error) {
- // TarWithOptions creates an archive from the directory at `path`, only including files whose relative
- // paths are included in `options.IncludeFiles` (if non-nil) or not in `options.ExcludePatterns`.
- func TarWithOptions(srcPath string, options *TarOptions) (io.ReadCloser, error) {
--
- // Fix the source path to work with long path names. This is a no-op
- // on platforms other than Windows.
- srcPath = fixVolumePathPrefix(srcPath)
-@@ -992,14 +990,8 @@ func Unpack(decompressedArchive io.Reader, dest string, options *TarOptions) err
- if options.ForceMask != nil {
- // if ForceMask is in place, make sure lchown is disabled.
- doChown = false
-- uid, gid, mode, err := GetFileOwner(dest)
-- if err == nil {
-- value := fmt.Sprintf("%d:%d:0%o", uid, gid, mode)
-- if err := system.Lsetxattr(dest, idtools.ContainersOverrideXattr, []byte(value), 0); err != nil {
-- return err
-- }
-- }
- }
-+ var rootHdr *tar.Header
-
- // Iterate through the files in the archive.
- loop:
-@@ -1032,7 +1024,7 @@ loop:
- parent := filepath.Dir(hdr.Name)
- parentPath := filepath.Join(dest, parent)
- if _, err := os.Lstat(parentPath); err != nil && os.IsNotExist(err) {
-- err = idtools.MkdirAllAndChownNew(parentPath, 0777, rootIDs)
-+ err = idtools.MkdirAllAndChownNew(parentPath, 0o777, rootIDs)
- if err != nil {
- return err
- }
-@@ -1044,6 +1036,9 @@ loop:
- if err != nil {
- return err
- }
-+ if rel == "." {
-+ rootHdr = hdr
-+ }
- if strings.HasPrefix(rel, ".."+string(os.PathSeparator)) {
- return breakoutError(fmt.Errorf("%q is outside of %q", hdr.Name, dest))
- }
-@@ -1117,6 +1112,14 @@ loop:
- return err
- }
- }
-+
-+ if options.ForceMask != nil && rootHdr != nil {
-+ value := fmt.Sprintf("%d:%d:0%o", rootHdr.Uid, rootHdr.Gid, rootHdr.Mode)
-+ if err := system.Lsetxattr(dest, idtools.ContainersOverrideXattr, []byte(value), 0); err != nil {
-+ return err
-+ }
-+ }
-+
- return nil
- }
-
-@@ -1239,7 +1242,7 @@ func (archiver *Archiver) CopyWithTar(src, dst string) error {
- }
- // Create dst, copy src's content into it
- logrus.Debugf("Creating dest directory: %s", dst)
-- if err := idtools.MkdirAllAndChownNew(dst, 0755, rootIDs); err != nil {
-+ if err := idtools.MkdirAllAndChownNew(dst, 0o755, rootIDs); err != nil {
- return err
- }
- logrus.Debugf("Calling TarUntar(%s, %s)", src, dst)
-@@ -1266,7 +1269,7 @@ func (archiver *Archiver) CopyFileWithTar(src, dst string) (err error) {
- dst = filepath.Join(dst, filepath.Base(src))
- }
- // Create the holding directory if necessary
-- if err := os.MkdirAll(filepath.Dir(dst), 0700); err != nil {
-+ if err := os.MkdirAll(filepath.Dir(dst), 0o700); err != nil {
- return err
- }
-
-@@ -1422,7 +1425,7 @@ func IsArchive(header []byte) bool {
- if compression != Uncompressed {
- return true
- }
-- r := tar.NewReader(bytes.NewBuffer(header))
-+ r := tar.NewReader(bytes.NewReader(header))
- _, err := r.Next()
- return err == nil
- }
-diff --git a/vendor/github.com/containers/storage/pkg/archive/archive_linux.go b/vendor/github.com/containers/storage/pkg/archive/archive_linux.go
-index 775bd0766..02995d767 100644
---- a/vendor/github.com/containers/storage/pkg/archive/archive_linux.go
-+++ b/vendor/github.com/containers/storage/pkg/archive/archive_linux.go
-@@ -153,8 +153,7 @@ func (overlayWhiteoutConverter) ConvertReadWithHandler(hdr *tar.Header, path str
- return true, nil
- }
-
--type directHandler struct {
--}
-+type directHandler struct{}
-
- func (d directHandler) Setxattr(path, name string, value []byte) error {
- return unix.Setxattr(path, name, value, 0)
-@@ -185,7 +184,7 @@ func GetFileOwner(path string) (uint32, uint32, uint32, error) {
- }
- s, ok := f.Sys().(*syscall.Stat_t)
- if ok {
-- return s.Uid, s.Gid, s.Mode & 07777, nil
-+ return s.Uid, s.Gid, s.Mode & 0o7777, nil
- }
- return 0, 0, uint32(f.Mode()), nil
- }
-diff --git a/vendor/github.com/containers/storage/pkg/archive/archive_unix.go b/vendor/github.com/containers/storage/pkg/archive/archive_unix.go
-index f8a34c831..c6811031f 100644
---- a/vendor/github.com/containers/storage/pkg/archive/archive_unix.go
-+++ b/vendor/github.com/containers/storage/pkg/archive/archive_unix.go
-@@ -15,6 +15,31 @@ import (
- "golang.org/x/sys/unix"
- )
-
-+func init() {
-+ sysStatOverride = statUnix
-+}
-+
-+// statUnix populates hdr from system-dependent fields of fi without performing
-+// any OS lookups.
-+// Adapted from Moby.
-+func statUnix(fi os.FileInfo, hdr *tar.Header) error {
-+ s, ok := fi.Sys().(*syscall.Stat_t)
-+ if !ok {
-+ return nil
-+ }
-+
-+ hdr.Uid = int(s.Uid)
-+ hdr.Gid = int(s.Gid)
-+
-+ if s.Mode&unix.S_IFBLK != 0 ||
-+ s.Mode&unix.S_IFCHR != 0 {
-+ hdr.Devmajor = int64(unix.Major(uint64(s.Rdev))) //nolint: unconvert
-+ hdr.Devminor = int64(unix.Minor(uint64(s.Rdev))) //nolint: unconvert
-+ }
-+
-+ return nil
-+}
-+
- // fixVolumePathPrefix does platform specific processing to ensure that if
- // the path being passed in is not in a volume path format, convert it to one.
- func fixVolumePathPrefix(srcPath string) string {
-@@ -88,7 +113,7 @@ func minor(device uint64) uint64 {
- // handleTarTypeBlockCharFifo is an OS-specific helper function used by
- // createTarFile to handle the following types of header: Block; Char; Fifo
- func handleTarTypeBlockCharFifo(hdr *tar.Header, path string) error {
-- mode := uint32(hdr.Mode & 07777)
-+ mode := uint32(hdr.Mode & 0o7777)
- switch hdr.Typeflag {
- case tar.TypeBlock:
- mode |= unix.S_IFBLK
-diff --git a/vendor/github.com/containers/storage/pkg/archive/archive_windows.go b/vendor/github.com/containers/storage/pkg/archive/archive_windows.go
-index e44011775..85a5b3a5d 100644
---- a/vendor/github.com/containers/storage/pkg/archive/archive_windows.go
-+++ b/vendor/github.com/containers/storage/pkg/archive/archive_windows.go
-@@ -38,18 +38,17 @@ func CanonicalTarNameForPath(p string) (string, error) {
- return "", fmt.Errorf("windows path contains forward slash: %s", p)
- }
- return strings.Replace(p, string(os.PathSeparator), "/", -1), nil
--
- }
-
- // chmodTarEntry is used to adjust the file permissions used in tar header based
- // on the platform the archival is done.
- func chmodTarEntry(perm os.FileMode) os.FileMode {
-- //perm &= 0755 // this 0-ed out tar flags (like link, regular file, directory marker etc.)
-+ // perm &= 0755 // this 0-ed out tar flags (like link, regular file, directory marker etc.)
- permPart := perm & os.ModePerm
- noPermPart := perm &^ os.ModePerm
- // Add the x bit: make everything +x from windows
-- permPart |= 0111
-- permPart &= 0755
-+ permPart |= 0o111
-+ permPart &= 0o755
-
- return noPermPart | permPart
- }
-diff --git a/vendor/github.com/containers/storage/pkg/archive/changes.go b/vendor/github.com/containers/storage/pkg/archive/changes.go
-index fc705484e..01c6f30c2 100644
---- a/vendor/github.com/containers/storage/pkg/archive/changes.go
-+++ b/vendor/github.com/containers/storage/pkg/archive/changes.go
-@@ -131,9 +131,11 @@ func isENOTDIR(err error) bool {
- return false
- }
-
--type skipChange func(string) (bool, error)
--type deleteChange func(string, string, os.FileInfo) (string, error)
--type whiteoutChange func(string, string) (bool, error)
-+type (
-+ skipChange func(string) (bool, error)
-+ deleteChange func(string, string, os.FileInfo) (string, error)
-+ whiteoutChange func(string, string) (bool, error)
-+)
-
- func changes(layers []string, rw string, dc deleteChange, sc skipChange, wc whiteoutChange) ([]Change, error) {
- var (
-@@ -299,7 +301,6 @@ func (info *FileInfo) path() string {
- }
-
- func (info *FileInfo) addChanges(oldInfo *FileInfo, changes *[]Change) {
--
- sizeAtEntry := len(*changes)
-
- if oldInfo == nil {
-@@ -373,7 +374,6 @@ func (info *FileInfo) addChanges(oldInfo *FileInfo, changes *[]Change) {
- copy((*changes)[sizeAtEntry+1:], (*changes)[sizeAtEntry:])
- (*changes)[sizeAtEntry] = change
- }
--
- }
-
- // Changes add changes to file information.
-@@ -398,9 +398,7 @@ func newRootFileInfo(idMappings *idtools.IDMappings) *FileInfo {
- // ChangesDirs compares two directories and generates an array of Change objects describing the changes.
- // If oldDir is "", then all files in newDir will be Add-Changes.
- func ChangesDirs(newDir string, newMappings *idtools.IDMappings, oldDir string, oldMappings *idtools.IDMappings) ([]Change, error) {
-- var (
-- oldRoot, newRoot *FileInfo
-- )
-+ var oldRoot, newRoot *FileInfo
- if oldDir == "" {
- emptyDir, err := os.MkdirTemp("", "empty")
- if err != nil {
-diff --git a/vendor/github.com/containers/storage/pkg/archive/changes_linux.go b/vendor/github.com/containers/storage/pkg/archive/changes_linux.go
-index 77d3d6f51..f8414717b 100644
---- a/vendor/github.com/containers/storage/pkg/archive/changes_linux.go
-+++ b/vendor/github.com/containers/storage/pkg/archive/changes_linux.go
-@@ -397,5 +397,4 @@ func overlayDeletedFile(layers []string, root, path string, fi os.FileInfo) (str
-
- // We didn't find the same path in any older layers, so it was new in this one.
- return "", nil
--
- }
-diff --git a/vendor/github.com/containers/storage/pkg/archive/changes_other.go b/vendor/github.com/containers/storage/pkg/archive/changes_other.go
-index c27930e97..ca272e68f 100644
---- a/vendor/github.com/containers/storage/pkg/archive/changes_other.go
-+++ b/vendor/github.com/containers/storage/pkg/archive/changes_other.go
-@@ -92,7 +92,10 @@ func collectFileInfo(sourceDir string, idMappings *idtools.IDMappings) (*FileInf
- return err
- }
-
-- if s.Dev() != sourceStat.Dev() {
-+ // Don't cross mount points. This ignores file mounts to avoid
-+ // generating a diff which deletes all files following the
-+ // mount.
-+ if s.Dev() != sourceStat.Dev() && s.IsDir() {
- return filepath.SkipDir
- }
-
-diff --git a/vendor/github.com/containers/storage/pkg/archive/changes_windows.go b/vendor/github.com/containers/storage/pkg/archive/changes_windows.go
-index 966400e59..1bab94fa5 100644
---- a/vendor/github.com/containers/storage/pkg/archive/changes_windows.go
-+++ b/vendor/github.com/containers/storage/pkg/archive/changes_windows.go
-@@ -7,7 +7,6 @@ import (
- )
-
- func statDifferent(oldStat *system.StatT, oldInfo *FileInfo, newStat *system.StatT, newInfo *FileInfo) bool {
--
- // Don't look at size for dirs, its not a good measure of change
- if oldStat.Mtim() != newStat.Mtim() ||
- oldStat.Mode() != newStat.Mode() ||
-diff --git a/vendor/github.com/containers/storage/pkg/archive/copy.go b/vendor/github.com/containers/storage/pkg/archive/copy.go
-index 2c714e8da..55f753bf4 100644
---- a/vendor/github.com/containers/storage/pkg/archive/copy.go
-+++ b/vendor/github.com/containers/storage/pkg/archive/copy.go
-@@ -297,7 +297,6 @@ func PrepareArchiveCopy(srcContent io.Reader, srcInfo, dstInfo CopyInfo) (dstDir
- }
- return dstDir, RebaseArchiveEntries(srcContent, srcBase, dstBase), nil
- }
--
- }
-
- // RebaseArchiveEntries rewrites the given srcContent archive replacing
-diff --git a/vendor/github.com/containers/storage/pkg/archive/diff.go b/vendor/github.com/containers/storage/pkg/archive/diff.go
-index 8fec5af38..713551859 100644
---- a/vendor/github.com/containers/storage/pkg/archive/diff.go
-+++ b/vendor/github.com/containers/storage/pkg/archive/diff.go
-@@ -85,7 +85,7 @@ func UnpackLayer(dest string, layer io.Reader, options *TarOptions) (size int64,
- parentPath := filepath.Join(dest, parent)
-
- if _, err := os.Lstat(parentPath); err != nil && os.IsNotExist(err) {
-- err = os.MkdirAll(parentPath, 0755)
-+ err = os.MkdirAll(parentPath, 0o755)
- if err != nil {
- return 0, err
- }
-diff --git a/vendor/github.com/containers/storage/pkg/archive/fflags_bsd.go b/vendor/github.com/containers/storage/pkg/archive/fflags_bsd.go
-index 14661c411..92b8d05ed 100644
---- a/vendor/github.com/containers/storage/pkg/archive/fflags_bsd.go
-+++ b/vendor/github.com/containers/storage/pkg/archive/fflags_bsd.go
-@@ -98,7 +98,7 @@ func parseFileFlags(fflags string) (uint32, uint32, error) {
- }
-
- func formatFileFlags(fflags uint32) (string, error) {
-- var res = []string{}
-+ res := []string{}
- for fflags != 0 {
- // Extract lowest set bit
- fflag := uint32(1) << bits.TrailingZeros32(fflags)
-diff --git a/vendor/github.com/containers/storage/pkg/chunked/compressor/BUILD.bazel b/vendor/github.com/containers/storage/pkg/chunked/compressor/BUILD.bazel
-index f41ff99d7..5b2003284 100644
---- a/vendor/github.com/containers/storage/pkg/chunked/compressor/BUILD.bazel
-+++ b/vendor/github.com/containers/storage/pkg/chunked/compressor/BUILD.bazel
-@@ -12,7 +12,10 @@ go_library(
- deps = [
- "//vendor/github.com/containers/storage/pkg/chunked/internal:go_default_library",
- "//vendor/github.com/containers/storage/pkg/ioutils:go_default_library",
-+ "//vendor/github.com/klauspost/compress/zstd:go_default_library",
- "//vendor/github.com/opencontainers/go-digest:go_default_library",
- "//vendor/github.com/vbatts/tar-split/archive/tar:go_default_library",
-+ "//vendor/github.com/vbatts/tar-split/tar/asm:go_default_library",
-+ "//vendor/github.com/vbatts/tar-split/tar/storage:go_default_library",
- ],
- )
-diff --git a/vendor/github.com/containers/storage/pkg/chunked/compressor/compressor.go b/vendor/github.com/containers/storage/pkg/chunked/compressor/compressor.go
-index 2a9bdc675..a2fd904ca 100644
---- a/vendor/github.com/containers/storage/pkg/chunked/compressor/compressor.go
-+++ b/vendor/github.com/containers/storage/pkg/chunked/compressor/compressor.go
-@@ -6,17 +6,23 @@ package compressor
-
- import (
- "bufio"
-+ "bytes"
- "encoding/base64"
- "io"
-
- "github.com/containers/storage/pkg/chunked/internal"
- "github.com/containers/storage/pkg/ioutils"
-+ "github.com/klauspost/compress/zstd"
- "github.com/opencontainers/go-digest"
- "github.com/vbatts/tar-split/archive/tar"
-+ "github.com/vbatts/tar-split/tar/asm"
-+ "github.com/vbatts/tar-split/tar/storage"
- )
-
--const RollsumBits = 16
--const holesThreshold = int64(1 << 10)
-+const (
-+ RollsumBits = 16
-+ holesThreshold = int64(1 << 10)
-+)
-
- type holesFinder struct {
- reader *bufio.Reader
-@@ -196,11 +202,55 @@ type chunk struct {
- ChunkType string
- }
-
-+type tarSplitData struct {
-+ compressed *bytes.Buffer
-+ digester digest.Digester
-+ uncompressedCounter *ioutils.WriteCounter
-+ zstd *zstd.Encoder
-+ packer storage.Packer
-+}
-+
-+func newTarSplitData(level int) (*tarSplitData, error) {
-+ compressed := bytes.NewBuffer(nil)
-+ digester := digest.Canonical.Digester()
-+
-+ zstdWriter, err := internal.ZstdWriterWithLevel(io.MultiWriter(compressed, digester.Hash()), level)
-+ if err != nil {
-+ return nil, err
-+ }
-+
-+ uncompressedCounter := ioutils.NewWriteCounter(zstdWriter)
-+ metaPacker := storage.NewJSONPacker(uncompressedCounter)
-+
-+ return &tarSplitData{
-+ compressed: compressed,
-+ digester: digester,
-+ uncompressedCounter: uncompressedCounter,
-+ zstd: zstdWriter,
-+ packer: metaPacker,
-+ }, nil
-+}
-+
- func writeZstdChunkedStream(destFile io.Writer, outMetadata map[string]string, reader io.Reader, level int) error {
- // total written so far. Used to retrieve partial offsets in the file
- dest := ioutils.NewWriteCounter(destFile)
-
-- tr := tar.NewReader(reader)
-+ tarSplitData, err := newTarSplitData(level)
-+ if err != nil {
-+ return err
-+ }
-+ defer func() {
-+ if tarSplitData.zstd != nil {
-+ tarSplitData.zstd.Close()
-+ }
-+ }()
-+
-+ its, err := asm.NewInputTarStream(reader, tarSplitData.packer, nil)
-+ if err != nil {
-+ return err
-+ }
-+
-+ tr := tar.NewReader(its)
- tr.RawAccounting = true
-
- buf := make([]byte, 4096)
-@@ -212,7 +262,6 @@ func writeZstdChunkedStream(destFile io.Writer, outMetadata map[string]string, r
- defer func() {
- if zstdWriter != nil {
- zstdWriter.Close()
-- zstdWriter.Flush()
- }
- }()
-
-@@ -222,9 +271,6 @@ func writeZstdChunkedStream(destFile io.Writer, outMetadata map[string]string, r
- if err := zstdWriter.Close(); err != nil {
- return 0, err
- }
-- if err := zstdWriter.Flush(); err != nil {
-- return 0, err
-- }
- offset = dest.Count
- zstdWriter.Reset(dest)
- }
-@@ -371,9 +417,19 @@ func writeZstdChunkedStream(destFile io.Writer, outMetadata map[string]string, r
-
- rawBytes := tr.RawBytes()
- if _, err := zstdWriter.Write(rawBytes); err != nil {
-+ zstdWriter.Close()
- return err
- }
-+
-+ // make sure the entire tarball is flushed to the output as it might contain
-+ // some trailing zeros that affect the checksum.
-+ if _, err := io.Copy(zstdWriter, its); err != nil {
-+ zstdWriter.Close()
-+ return err
-+ }
-+
- if err := zstdWriter.Flush(); err != nil {
-+ zstdWriter.Close()
- return err
- }
- if err := zstdWriter.Close(); err != nil {
-@@ -381,7 +437,21 @@ func writeZstdChunkedStream(destFile io.Writer, outMetadata map[string]string, r
- }
- zstdWriter = nil
-
-- return internal.WriteZstdChunkedManifest(dest, outMetadata, uint64(dest.Count), metadata, level)
-+ if err := tarSplitData.zstd.Flush(); err != nil {
-+ return err
-+ }
-+ if err := tarSplitData.zstd.Close(); err != nil {
-+ return err
-+ }
-+ tarSplitData.zstd = nil
-+
-+ ts := internal.TarSplitData{
-+ Data: tarSplitData.compressed.Bytes(),
-+ Digest: tarSplitData.digester.Digest(),
-+ UncompressedSize: tarSplitData.uncompressedCounter.Count,
-+ }
-+
-+ return internal.WriteZstdChunkedManifest(dest, outMetadata, uint64(dest.Count), &ts, metadata, level)
- }
-
- type zstdChunkedWriter struct {
-@@ -390,12 +460,12 @@ type zstdChunkedWriter struct {
- }
-
- func (w zstdChunkedWriter) Close() error {
-- err := <-w.tarSplitErr
-- if err != nil {
-- w.tarSplitOut.Close()
-+ errClose := w.tarSplitOut.Close()
-+
-+ if err := <-w.tarSplitErr; err != nil && err != io.EOF {
- return err
- }
-- return w.tarSplitOut.Close()
-+ return errClose
- }
-
- func (w zstdChunkedWriter) Write(p []byte) (int, error) {
-diff --git a/vendor/github.com/containers/storage/pkg/chunked/compressor/rollsum.go b/vendor/github.com/containers/storage/pkg/chunked/compressor/rollsum.go
-index f4dfad822..59df6901e 100644
---- a/vendor/github.com/containers/storage/pkg/chunked/compressor/rollsum.go
-+++ b/vendor/github.com/containers/storage/pkg/chunked/compressor/rollsum.go
-@@ -25,11 +25,15 @@ import (
- "math/bits"
- )
-
--const windowSize = 64 // Roll assumes windowSize is a power of 2
--const charOffset = 31
-+const (
-+ windowSize = 64 // Roll assumes windowSize is a power of 2
-+ charOffset = 31
-+)
-
--const blobBits = 13
--const blobSize = 1 << blobBits // 8k
-+const (
-+ blobBits = 13
-+ blobSize = 1 << blobBits // 8k
-+)
-
- type RollSum struct {
- s1, s2 uint32
-diff --git a/vendor/github.com/containers/storage/pkg/chunked/internal/compression.go b/vendor/github.com/containers/storage/pkg/chunked/internal/compression.go
-index 092b03533..caa581efe 100644
---- a/vendor/github.com/containers/storage/pkg/chunked/internal/compression.go
-+++ b/vendor/github.com/containers/storage/pkg/chunked/internal/compression.go
-@@ -8,6 +8,7 @@ import (
- "archive/tar"
- "bytes"
- "encoding/binary"
-+ "errors"
- "fmt"
- "io"
- "time"
-@@ -90,6 +91,8 @@ func GetType(t byte) (string, error) {
- const (
- ManifestChecksumKey = "io.github.containers.zstd-chunked.manifest-checksum"
- ManifestInfoKey = "io.github.containers.zstd-chunked.manifest-position"
-+ TarSplitChecksumKey = "io.github.containers.zstd-chunked.tarsplit-checksum"
-+ TarSplitInfoKey = "io.github.containers.zstd-chunked.tarsplit-position"
-
- // ManifestTypeCRFS is a manifest file compatible with the CRFS TOC file.
- ManifestTypeCRFS = 1
-@@ -97,7 +100,7 @@ const (
- // FooterSizeSupported is the footer size supported by this implementation.
- // Newer versions of the image format might increase this value, so reject
- // any version that is not supported.
-- FooterSizeSupported = 40
-+ FooterSizeSupported = 64
- )
-
- var (
-@@ -106,7 +109,7 @@ var (
- // https://tools.ietf.org/html/rfc8478#section-3.1.2
- skippableFrameMagic = []byte{0x50, 0x2a, 0x4d, 0x18}
-
-- ZstdChunkedFrameMagic = []byte{0x47, 0x6e, 0x55, 0x6c, 0x49, 0x6e, 0x55, 0x78}
-+ ZstdChunkedFrameMagic = []byte{0x47, 0x4e, 0x55, 0x6c, 0x49, 0x6e, 0x55, 0x78}
- )
-
- func appendZstdSkippableFrame(dest io.Writer, data []byte) error {
-@@ -125,16 +128,23 @@ func appendZstdSkippableFrame(dest io.Writer, data []byte) error {
- return nil
- }
-
--func WriteZstdChunkedManifest(dest io.Writer, outMetadata map[string]string, offset uint64, metadata []FileMetadata, level int) error {
-+type TarSplitData struct {
-+ Data []byte
-+ Digest digest.Digest
-+ UncompressedSize int64
-+}
-+
-+func WriteZstdChunkedManifest(dest io.Writer, outMetadata map[string]string, offset uint64, tarSplitData *TarSplitData, metadata []FileMetadata, level int) error {
- // 8 is the size of the zstd skippable frame header + the frame size
-- manifestOffset := offset + 8
-+ const zstdSkippableFrameHeader = 8
-+ manifestOffset := offset + zstdSkippableFrameHeader
-
- toc := TOC{
- Version: 1,
- Entries: metadata,
- }
-
-- var json = jsoniter.ConfigCompatibleWithStandardLibrary
-+ json := jsoniter.ConfigCompatibleWithStandardLibrary
- // Generate the manifest
- manifest, err := json.Marshal(toc)
- if err != nil {
-@@ -167,13 +177,26 @@ func WriteZstdChunkedManifest(dest io.Writer, outMetadata map[string]string, off
- return err
- }
-
-- // Store the offset to the manifest and its size in LE order
-- manifestDataLE := make([]byte, FooterSizeSupported)
-- binary.LittleEndian.PutUint64(manifestDataLE, manifestOffset)
-- binary.LittleEndian.PutUint64(manifestDataLE[8:], uint64(len(compressedManifest)))
-- binary.LittleEndian.PutUint64(manifestDataLE[16:], uint64(len(manifest)))
-- binary.LittleEndian.PutUint64(manifestDataLE[24:], uint64(ManifestTypeCRFS))
-- copy(manifestDataLE[32:], ZstdChunkedFrameMagic)
-+ outMetadata[TarSplitChecksumKey] = tarSplitData.Digest.String()
-+ tarSplitOffset := manifestOffset + uint64(len(compressedManifest)) + zstdSkippableFrameHeader
-+ outMetadata[TarSplitInfoKey] = fmt.Sprintf("%d:%d:%d", tarSplitOffset, len(tarSplitData.Data), tarSplitData.UncompressedSize)
-+ if err := appendZstdSkippableFrame(dest, tarSplitData.Data); err != nil {
-+ return err
-+ }
-+
-+ footer := ZstdChunkedFooterData{
-+ ManifestType: uint64(ManifestTypeCRFS),
-+ Offset: manifestOffset,
-+ LengthCompressed: uint64(len(compressedManifest)),
-+ LengthUncompressed: uint64(len(manifest)),
-+ ChecksumAnnotation: "", // unused
-+ OffsetTarSplit: uint64(tarSplitOffset),
-+ LengthCompressedTarSplit: uint64(len(tarSplitData.Data)),
-+ LengthUncompressedTarSplit: uint64(tarSplitData.UncompressedSize),
-+ ChecksumAnnotationTarSplit: "", // unused
-+ }
-+
-+ manifestDataLE := footerDataToBlob(footer)
-
- return appendZstdSkippableFrame(dest, manifestDataLE)
- }
-@@ -182,3 +205,79 @@ func ZstdWriterWithLevel(dest io.Writer, level int) (*zstd.Encoder, error) {
- el := zstd.EncoderLevelFromZstd(level)
- return zstd.NewWriter(dest, zstd.WithEncoderLevel(el))
- }
-+
-+// ZstdChunkedFooterData contains all the data stored in the zstd:chunked footer.
-+type ZstdChunkedFooterData struct {
-+ ManifestType uint64
-+
-+ Offset uint64
-+ LengthCompressed uint64
-+ LengthUncompressed uint64
-+ ChecksumAnnotation string // Only used when reading a layer, not when creating it
-+
-+ OffsetTarSplit uint64
-+ LengthCompressedTarSplit uint64
-+ LengthUncompressedTarSplit uint64
-+ ChecksumAnnotationTarSplit string // Only used when reading a layer, not when creating it
-+}
-+
-+func footerDataToBlob(footer ZstdChunkedFooterData) []byte {
-+ // Store the offset to the manifest and its size in LE order
-+ manifestDataLE := make([]byte, FooterSizeSupported)
-+ binary.LittleEndian.PutUint64(manifestDataLE[8*0:], footer.Offset)
-+ binary.LittleEndian.PutUint64(manifestDataLE[8*1:], footer.LengthCompressed)
-+ binary.LittleEndian.PutUint64(manifestDataLE[8*2:], footer.LengthUncompressed)
-+ binary.LittleEndian.PutUint64(manifestDataLE[8*3:], footer.ManifestType)
-+ binary.LittleEndian.PutUint64(manifestDataLE[8*4:], footer.OffsetTarSplit)
-+ binary.LittleEndian.PutUint64(manifestDataLE[8*5:], footer.LengthCompressedTarSplit)
-+ binary.LittleEndian.PutUint64(manifestDataLE[8*6:], footer.LengthUncompressedTarSplit)
-+ copy(manifestDataLE[8*7:], ZstdChunkedFrameMagic)
-+
-+ return manifestDataLE
-+}
-+
-+// ReadFooterDataFromAnnotations reads the zstd:chunked footer data from the given annotations.
-+func ReadFooterDataFromAnnotations(annotations map[string]string) (ZstdChunkedFooterData, error) {
-+ var footerData ZstdChunkedFooterData
-+
-+ footerData.ChecksumAnnotation = annotations[ManifestChecksumKey]
-+ if footerData.ChecksumAnnotation == "" {
-+ return footerData, fmt.Errorf("manifest checksum annotation %q not found", ManifestChecksumKey)
-+ }
-+
-+ offsetMetadata := annotations[ManifestInfoKey]
-+
-+ if _, err := fmt.Sscanf(offsetMetadata, "%d:%d:%d:%d", &footerData.Offset, &footerData.LengthCompressed, &footerData.LengthUncompressed, &footerData.ManifestType); err != nil {
-+ return footerData, err
-+ }
-+
-+ if tarSplitInfoKeyAnnotation, found := annotations[TarSplitInfoKey]; found {
-+ if _, err := fmt.Sscanf(tarSplitInfoKeyAnnotation, "%d:%d:%d", &footerData.OffsetTarSplit, &footerData.LengthCompressedTarSplit, &footerData.LengthUncompressedTarSplit); err != nil {
-+ return footerData, err
-+ }
-+ footerData.ChecksumAnnotationTarSplit = annotations[TarSplitChecksumKey]
-+ }
-+ return footerData, nil
-+}
-+
-+// ReadFooterDataFromBlob reads the zstd:chunked footer from the binary buffer.
-+func ReadFooterDataFromBlob(footer []byte) (ZstdChunkedFooterData, error) {
-+ var footerData ZstdChunkedFooterData
-+
-+ if len(footer) < FooterSizeSupported {
-+ return footerData, errors.New("blob too small")
-+ }
-+ footerData.Offset = binary.LittleEndian.Uint64(footer[0:8])
-+ footerData.LengthCompressed = binary.LittleEndian.Uint64(footer[8:16])
-+ footerData.LengthUncompressed = binary.LittleEndian.Uint64(footer[16:24])
-+ footerData.ManifestType = binary.LittleEndian.Uint64(footer[24:32])
-+ footerData.OffsetTarSplit = binary.LittleEndian.Uint64(footer[32:40])
-+ footerData.LengthCompressedTarSplit = binary.LittleEndian.Uint64(footer[40:48])
-+ footerData.LengthUncompressedTarSplit = binary.LittleEndian.Uint64(footer[48:56])
-+
-+ // the magic number is stored in the last 8 bytes
-+ if !bytes.Equal(ZstdChunkedFrameMagic, footer[len(footer)-len(ZstdChunkedFrameMagic):]) {
-+ return footerData, errors.New("invalid magic number")
-+ }
-+ return footerData, nil
-+}
-diff --git a/vendor/github.com/containers/storage/pkg/fileutils/fileutils.go b/vendor/github.com/containers/storage/pkg/fileutils/fileutils.go
-index bcc2109b6..9d0714b1b 100644
---- a/vendor/github.com/containers/storage/pkg/fileutils/fileutils.go
-+++ b/vendor/github.com/containers/storage/pkg/fileutils/fileutils.go
-@@ -183,7 +183,6 @@ func (p *Pattern) Exclusion() bool {
- }
-
- func (p *Pattern) match(path string) (bool, error) {
--
- if p.regexp == nil {
- if err := p.compile(); err != nil {
- return false, filepath.ErrBadPattern
-@@ -356,12 +355,12 @@ func CreateIfNotExists(path string, isDir bool) error {
- if _, err := os.Stat(path); err != nil {
- if os.IsNotExist(err) {
- if isDir {
-- return os.MkdirAll(path, 0755)
-+ return os.MkdirAll(path, 0o755)
- }
-- if err := os.MkdirAll(filepath.Dir(path), 0755); err != nil {
-+ if err := os.MkdirAll(filepath.Dir(path), 0o755); err != nil {
- return err
- }
-- f, err := os.OpenFile(path, os.O_CREATE, 0755)
-+ f, err := os.OpenFile(path, os.O_CREATE, 0o755)
- if err != nil {
- return err
- }
-diff --git a/vendor/github.com/containers/storage/pkg/homedir/BUILD.bazel b/vendor/github.com/containers/storage/pkg/homedir/BUILD.bazel
-index 2bb5ed9aa..f5d104d01 100644
---- a/vendor/github.com/containers/storage/pkg/homedir/BUILD.bazel
-+++ b/vendor/github.com/containers/storage/pkg/homedir/BUILD.bazel
-@@ -14,42 +14,55 @@ go_library(
- deps = select({
- "@io_bazel_rules_go//go/platform:aix": [
- "//vendor/github.com/containers/storage/pkg/unshare:go_default_library",
-+ "//vendor/github.com/sirupsen/logrus:go_default_library",
- ],
- "@io_bazel_rules_go//go/platform:android": [
- "//vendor/github.com/containers/storage/pkg/unshare:go_default_library",
-+ "//vendor/github.com/sirupsen/logrus:go_default_library",
- ],
- "@io_bazel_rules_go//go/platform:darwin": [
- "//vendor/github.com/containers/storage/pkg/unshare:go_default_library",
-+ "//vendor/github.com/sirupsen/logrus:go_default_library",
- ],
- "@io_bazel_rules_go//go/platform:dragonfly": [
- "//vendor/github.com/containers/storage/pkg/unshare:go_default_library",
-+ "//vendor/github.com/sirupsen/logrus:go_default_library",
- ],
- "@io_bazel_rules_go//go/platform:freebsd": [
- "//vendor/github.com/containers/storage/pkg/unshare:go_default_library",
-+ "//vendor/github.com/sirupsen/logrus:go_default_library",
- ],
- "@io_bazel_rules_go//go/platform:illumos": [
- "//vendor/github.com/containers/storage/pkg/unshare:go_default_library",
-+ "//vendor/github.com/sirupsen/logrus:go_default_library",
- ],
- "@io_bazel_rules_go//go/platform:ios": [
- "//vendor/github.com/containers/storage/pkg/unshare:go_default_library",
-+ "//vendor/github.com/sirupsen/logrus:go_default_library",
- ],
- "@io_bazel_rules_go//go/platform:js": [
- "//vendor/github.com/containers/storage/pkg/unshare:go_default_library",
-+ "//vendor/github.com/sirupsen/logrus:go_default_library",
- ],
- "@io_bazel_rules_go//go/platform:linux": [
- "//vendor/github.com/containers/storage/pkg/unshare:go_default_library",
-+ "//vendor/github.com/sirupsen/logrus:go_default_library",
- ],
- "@io_bazel_rules_go//go/platform:netbsd": [
- "//vendor/github.com/containers/storage/pkg/unshare:go_default_library",
-+ "//vendor/github.com/sirupsen/logrus:go_default_library",
- ],
- "@io_bazel_rules_go//go/platform:openbsd": [
- "//vendor/github.com/containers/storage/pkg/unshare:go_default_library",
-+ "//vendor/github.com/sirupsen/logrus:go_default_library",
- ],
- "@io_bazel_rules_go//go/platform:plan9": [
- "//vendor/github.com/containers/storage/pkg/unshare:go_default_library",
-+ "//vendor/github.com/sirupsen/logrus:go_default_library",
- ],
- "@io_bazel_rules_go//go/platform:solaris": [
- "//vendor/github.com/containers/storage/pkg/unshare:go_default_library",
-+ "//vendor/github.com/sirupsen/logrus:go_default_library",
- ],
- "//conditions:default": [],
- }),
-diff --git a/vendor/github.com/containers/storage/pkg/homedir/homedir.go b/vendor/github.com/containers/storage/pkg/homedir/homedir.go
-index 85c5e76c8..7eb63b67a 100644
---- a/vendor/github.com/containers/storage/pkg/homedir/homedir.go
-+++ b/vendor/github.com/containers/storage/pkg/homedir/homedir.go
-@@ -6,21 +6,6 @@ import (
- "path/filepath"
- )
-
--// GetConfigHome returns XDG_CONFIG_HOME.
--// GetConfigHome returns $HOME/.config and nil error if XDG_CONFIG_HOME is not set.
--//
--// See also https://standards.freedesktop.org/basedir-spec/latest/ar01s03.html
--func GetConfigHome() (string, error) {
-- if xdgConfigHome := os.Getenv("XDG_CONFIG_HOME"); xdgConfigHome != "" {
-- return xdgConfigHome, nil
-- }
-- home := Get()
-- if home == "" {
-- return "", errors.New("could not get either XDG_CONFIG_HOME or HOME")
-- }
-- return filepath.Join(home, ".config"), nil
--}
--
- // GetDataHome returns XDG_DATA_HOME.
- // GetDataHome returns $HOME/.local/share and nil error if XDG_DATA_HOME is not set.
- //
-diff --git a/vendor/github.com/containers/storage/pkg/homedir/homedir_others.go b/vendor/github.com/containers/storage/pkg/homedir/homedir_others.go
-index 0883ee023..9057fe1b2 100644
---- a/vendor/github.com/containers/storage/pkg/homedir/homedir_others.go
-+++ b/vendor/github.com/containers/storage/pkg/homedir/homedir_others.go
-@@ -1,5 +1,5 @@
--//go:build !linux && !darwin && !freebsd
--// +build !linux,!darwin,!freebsd
-+//go:build !linux && !darwin && !freebsd && !windows
-+// +build !linux,!darwin,!freebsd,!windows
-
- package homedir
-
-@@ -8,6 +8,8 @@ package homedir
-
- import (
- "errors"
-+ "os"
-+ "path/filepath"
- )
-
- // GetRuntimeDir is unsupported on non-linux system.
-@@ -19,3 +21,18 @@ func GetRuntimeDir() (string, error) {
- func StickRuntimeDirContents(files []string) ([]string, error) {
- return nil, errors.New("homedir.StickRuntimeDirContents() is not supported on this system")
- }
-+
-+// GetConfigHome returns XDG_CONFIG_HOME.
-+// GetConfigHome returns $HOME/.config and nil error if XDG_CONFIG_HOME is not set.
-+//
-+// See also https://standards.freedesktop.org/basedir-spec/latest/ar01s03.html
-+func GetConfigHome() (string, error) {
-+ if xdgConfigHome := os.Getenv("XDG_CONFIG_HOME"); xdgConfigHome != "" {
-+ return xdgConfigHome, nil
-+ }
-+ home := Get()
-+ if home == "" {
-+ return "", errors.New("could not get either XDG_CONFIG_HOME or HOME")
-+ }
-+ return filepath.Join(home, ".config"), nil
-+}
-diff --git a/vendor/github.com/containers/storage/pkg/homedir/homedir_unix.go b/vendor/github.com/containers/storage/pkg/homedir/homedir_unix.go
-index 9976f19af..45be87659 100644
---- a/vendor/github.com/containers/storage/pkg/homedir/homedir_unix.go
-+++ b/vendor/github.com/containers/storage/pkg/homedir/homedir_unix.go
-@@ -7,12 +7,16 @@ package homedir
- // NOTE: this package has originally been copied from github.com/docker/docker.
-
- import (
-- "errors"
-+ "fmt"
- "os"
- "path/filepath"
-+ "strconv"
- "strings"
-+ "sync"
-+ "syscall"
-
- "github.com/containers/storage/pkg/unshare"
-+ "github.com/sirupsen/logrus"
- )
-
- // Key returns the env var name for the user's home dir based on
-@@ -40,18 +44,6 @@ func GetShortcutString() string {
- return "~"
- }
-
--// GetRuntimeDir returns XDG_RUNTIME_DIR.
--// XDG_RUNTIME_DIR is typically configured via pam_systemd.
--// GetRuntimeDir returns non-nil error if XDG_RUNTIME_DIR is not set.
--//
--// See also https://standards.freedesktop.org/basedir-spec/latest/ar01s03.html
--func GetRuntimeDir() (string, error) {
-- if xdgRuntimeDir := os.Getenv("XDG_RUNTIME_DIR"); xdgRuntimeDir != "" {
-- return filepath.EvalSymlinks(xdgRuntimeDir)
-- }
-- return "", errors.New("could not get XDG_RUNTIME_DIR")
--}
--
- // StickRuntimeDirContents sets the sticky bit on files that are under
- // XDG_RUNTIME_DIR, so that the files won't be periodically removed by the system.
- //
-@@ -94,3 +86,98 @@ func stick(f string) error {
- m |= os.ModeSticky
- return os.Chmod(f, m)
- }
-+
-+var (
-+ rootlessConfigHomeDirError error
-+ rootlessConfigHomeDirOnce sync.Once
-+ rootlessConfigHomeDir string
-+ rootlessRuntimeDirOnce sync.Once
-+ rootlessRuntimeDir string
-+)
-+
-+// isWriteableOnlyByOwner checks that the specified permission mask allows write
-+// access only to the owner.
-+func isWriteableOnlyByOwner(perm os.FileMode) bool {
-+ return (perm & 0o722) == 0o700
-+}
-+
-+// GetConfigHome returns XDG_CONFIG_HOME.
-+// GetConfigHome returns $HOME/.config and nil error if XDG_CONFIG_HOME is not set.
-+//
-+// See also https://standards.freedesktop.org/basedir-spec/latest/ar01s03.html
-+func GetConfigHome() (string, error) {
-+ rootlessConfigHomeDirOnce.Do(func() {
-+ cfgHomeDir := os.Getenv("XDG_CONFIG_HOME")
-+ if cfgHomeDir == "" {
-+ home := Get()
-+ resolvedHome, err := filepath.EvalSymlinks(home)
-+ if err != nil {
-+ rootlessConfigHomeDirError = fmt.Errorf("cannot resolve %s: %w", home, err)
-+ return
-+ }
-+ tmpDir := filepath.Join(resolvedHome, ".config")
-+ _ = os.MkdirAll(tmpDir, 0o700)
-+ st, err := os.Stat(tmpDir)
-+ if err != nil {
-+ rootlessConfigHomeDirError = err
-+ return
-+ } else if int(st.Sys().(*syscall.Stat_t).Uid) == os.Geteuid() {
-+ cfgHomeDir = tmpDir
-+ } else {
-+ rootlessConfigHomeDirError = fmt.Errorf("path %q exists and it is not owned by the current user", tmpDir)
-+ return
-+ }
-+ }
-+ rootlessConfigHomeDir = cfgHomeDir
-+ })
-+
-+ return rootlessConfigHomeDir, rootlessConfigHomeDirError
-+}
-+
-+// GetRuntimeDir returns a directory suitable to store runtime files.
-+// The function will try to use the XDG_RUNTIME_DIR env variable if it is set.
-+// XDG_RUNTIME_DIR is typically configured via pam_systemd.
-+// If XDG_RUNTIME_DIR is not set, GetRuntimeDir will try to find a suitable
-+// directory for the current user.
-+//
-+// See also https://standards.freedesktop.org/basedir-spec/latest/ar01s03.html
-+func GetRuntimeDir() (string, error) {
-+ var rootlessRuntimeDirError error
-+
-+ rootlessRuntimeDirOnce.Do(func() {
-+ runtimeDir := os.Getenv("XDG_RUNTIME_DIR")
-+
-+ if runtimeDir != "" {
-+ rootlessRuntimeDir, rootlessRuntimeDirError = filepath.EvalSymlinks(runtimeDir)
-+ return
-+ }
-+
-+ uid := strconv.Itoa(unshare.GetRootlessUID())
-+ if runtimeDir == "" {
-+ tmpDir := filepath.Join("/run", "user", uid)
-+ if err := os.MkdirAll(tmpDir, 0o700); err != nil {
-+ logrus.Debug(err)
-+ }
-+ st, err := os.Lstat(tmpDir)
-+ if err == nil && int(st.Sys().(*syscall.Stat_t).Uid) == os.Geteuid() && isWriteableOnlyByOwner(st.Mode().Perm()) {
-+ runtimeDir = tmpDir
-+ }
-+ }
-+ if runtimeDir == "" {
-+ tmpDir := filepath.Join(os.TempDir(), fmt.Sprintf("storage-run-%s", uid))
-+ if err := os.MkdirAll(tmpDir, 0o700); err != nil {
-+ logrus.Debug(err)
-+ }
-+ st, err := os.Lstat(tmpDir)
-+ if err == nil && int(st.Sys().(*syscall.Stat_t).Uid) == os.Geteuid() && isWriteableOnlyByOwner(st.Mode().Perm()) {
-+ runtimeDir = tmpDir
-+ } else {
-+ rootlessRuntimeDirError = fmt.Errorf("path %q exists and it is not writeable only by the current user", tmpDir)
-+ return
-+ }
-+ }
-+ rootlessRuntimeDir = runtimeDir
-+ })
-+
-+ return rootlessRuntimeDir, rootlessRuntimeDirError
-+}
-diff --git a/vendor/github.com/containers/storage/pkg/homedir/homedir_windows.go b/vendor/github.com/containers/storage/pkg/homedir/homedir_windows.go
-index af65f2c03..a76610f90 100644
---- a/vendor/github.com/containers/storage/pkg/homedir/homedir_windows.go
-+++ b/vendor/github.com/containers/storage/pkg/homedir/homedir_windows.go
-@@ -5,6 +5,7 @@ package homedir
-
- import (
- "os"
-+ "path/filepath"
- )
-
- // Key returns the env var name for the user's home dir based on
-@@ -25,8 +26,36 @@ func Get() string {
- return home
- }
-
-+// GetConfigHome returns the home directory of the current user with the help of
-+// environment variables depending on the target operating system.
-+// Returned path should be used with "path/filepath" to form new paths.
-+func GetConfigHome() (string, error) {
-+ return filepath.Join(Get(), ".config"), nil
-+}
-+
- // GetShortcutString returns the string that is shortcut to user's home directory
- // in the native shell of the platform running on.
- func GetShortcutString() string {
- return "%USERPROFILE%" // be careful while using in format functions
- }
-+
-+// StickRuntimeDirContents is a no-op on Windows
-+func StickRuntimeDirContents(files []string) ([]string, error) {
-+ return nil, nil
-+}
-+
-+// GetRuntimeDir returns a directory suitable to store runtime files.
-+// The function will try to use the XDG_RUNTIME_DIR env variable if it is set.
-+// XDG_RUNTIME_DIR is typically configured via pam_systemd.
-+// If XDG_RUNTIME_DIR is not set, GetRuntimeDir will try to find a suitable
-+// directory for the current user.
-+//
-+// See also https://standards.freedesktop.org/basedir-spec/latest/ar01s03.html
-+func GetRuntimeDir() (string, error) {
-+ data, err := GetDataHome()
-+ if err != nil {
-+ return "", err
-+ }
-+ runtimeDir := filepath.Join(data, "containers", "storage")
-+ return runtimeDir, nil
-+}
-diff --git a/vendor/github.com/containers/storage/pkg/idtools/BUILD.bazel b/vendor/github.com/containers/storage/pkg/idtools/BUILD.bazel
-index 6fb85e445..52829a17f 100644
---- a/vendor/github.com/containers/storage/pkg/idtools/BUILD.bazel
-+++ b/vendor/github.com/containers/storage/pkg/idtools/BUILD.bazel
-@@ -21,45 +21,45 @@ go_library(
- "//vendor/github.com/sirupsen/logrus:go_default_library",
- ] + select({
- "@io_bazel_rules_go//go/platform:aix": [
-- "//vendor/github.com/opencontainers/runc/libcontainer/user:go_default_library",
-+ "//vendor/github.com/moby/sys/user:go_default_library",
- ],
- "@io_bazel_rules_go//go/platform:android": [
- "//vendor/github.com/containers/storage/pkg/regexp:go_default_library",
-- "//vendor/github.com/opencontainers/runc/libcontainer/user:go_default_library",
-+ "//vendor/github.com/moby/sys/user:go_default_library",
- ],
- "@io_bazel_rules_go//go/platform:darwin": [
-- "//vendor/github.com/opencontainers/runc/libcontainer/user:go_default_library",
-+ "//vendor/github.com/moby/sys/user:go_default_library",
- ],
- "@io_bazel_rules_go//go/platform:dragonfly": [
-- "//vendor/github.com/opencontainers/runc/libcontainer/user:go_default_library",
-+ "//vendor/github.com/moby/sys/user:go_default_library",
- ],
- "@io_bazel_rules_go//go/platform:freebsd": [
-- "//vendor/github.com/opencontainers/runc/libcontainer/user:go_default_library",
-+ "//vendor/github.com/moby/sys/user:go_default_library",
- ],
- "@io_bazel_rules_go//go/platform:illumos": [
-- "//vendor/github.com/opencontainers/runc/libcontainer/user:go_default_library",
-+ "//vendor/github.com/moby/sys/user:go_default_library",
- ],
- "@io_bazel_rules_go//go/platform:ios": [
-- "//vendor/github.com/opencontainers/runc/libcontainer/user:go_default_library",
-+ "//vendor/github.com/moby/sys/user:go_default_library",
- ],
- "@io_bazel_rules_go//go/platform:js": [
-- "//vendor/github.com/opencontainers/runc/libcontainer/user:go_default_library",
-+ "//vendor/github.com/moby/sys/user:go_default_library",
- ],
- "@io_bazel_rules_go//go/platform:linux": [
- "//vendor/github.com/containers/storage/pkg/regexp:go_default_library",
-- "//vendor/github.com/opencontainers/runc/libcontainer/user:go_default_library",
-+ "//vendor/github.com/moby/sys/user:go_default_library",
- ],
- "@io_bazel_rules_go//go/platform:netbsd": [
-- "//vendor/github.com/opencontainers/runc/libcontainer/user:go_default_library",
-+ "//vendor/github.com/moby/sys/user:go_default_library",
- ],
- "@io_bazel_rules_go//go/platform:openbsd": [
-- "//vendor/github.com/opencontainers/runc/libcontainer/user:go_default_library",
-+ "//vendor/github.com/moby/sys/user:go_default_library",
- ],
- "@io_bazel_rules_go//go/platform:plan9": [
-- "//vendor/github.com/opencontainers/runc/libcontainer/user:go_default_library",
-+ "//vendor/github.com/moby/sys/user:go_default_library",
- ],
- "@io_bazel_rules_go//go/platform:solaris": [
-- "//vendor/github.com/opencontainers/runc/libcontainer/user:go_default_library",
-+ "//vendor/github.com/moby/sys/user:go_default_library",
- ],
- "//conditions:default": [],
- }),
-diff --git a/vendor/github.com/containers/storage/pkg/idtools/idtools_unix.go b/vendor/github.com/containers/storage/pkg/idtools/idtools_unix.go
-index daff1e4a9..d7cb4ac2f 100644
---- a/vendor/github.com/containers/storage/pkg/idtools/idtools_unix.go
-+++ b/vendor/github.com/containers/storage/pkg/idtools/idtools_unix.go
-@@ -14,7 +14,7 @@ import (
- "syscall"
-
- "github.com/containers/storage/pkg/system"
-- "github.com/opencontainers/runc/libcontainer/user"
-+ "github.com/moby/sys/user"
- )
-
- var (
-@@ -91,13 +91,13 @@ func CanAccess(path string, pair IDPair) bool {
- }
-
- func accessible(isOwner, isGroup bool, perms os.FileMode) bool {
-- if isOwner && (perms&0100 == 0100) {
-+ if isOwner && (perms&0o100 == 0o100) {
- return true
- }
-- if isGroup && (perms&0010 == 0010) {
-+ if isGroup && (perms&0o010 == 0o010) {
- return true
- }
-- if perms&0001 == 0001 {
-+ if perms&0o001 == 0o001 {
- return true
- }
- return false
-diff --git a/vendor/github.com/containers/storage/pkg/idtools/usergroupadd_linux.go b/vendor/github.com/containers/storage/pkg/idtools/usergroupadd_linux.go
-index 40e507f77..ac27718de 100644
---- a/vendor/github.com/containers/storage/pkg/idtools/usergroupadd_linux.go
-+++ b/vendor/github.com/containers/storage/pkg/idtools/usergroupadd_linux.go
-@@ -89,7 +89,6 @@ func addUser(userName string) error {
- }
-
- func createSubordinateRanges(name string) error {
--
- // first, we should verify that ranges weren't automatically created
- // by the distro tooling
- ranges, err := readSubuid(name)
-diff --git a/vendor/github.com/containers/storage/pkg/idtools/utils_unix.go b/vendor/github.com/containers/storage/pkg/idtools/utils_unix.go
-index 33a7dee6c..b3772bdb3 100644
---- a/vendor/github.com/containers/storage/pkg/idtools/utils_unix.go
-+++ b/vendor/github.com/containers/storage/pkg/idtools/utils_unix.go
-@@ -19,8 +19,8 @@ func resolveBinary(binname string) (string, error) {
- if err != nil {
- return "", err
- }
-- //only return no error if the final resolved binary basename
-- //matches what was searched for
-+ // only return no error if the final resolved binary basename
-+ // matches what was searched for
- if filepath.Base(resolvedPath) == binname {
- return resolvedPath, nil
- }
-diff --git a/vendor/github.com/containers/storage/pkg/ioutils/BUILD.bazel b/vendor/github.com/containers/storage/pkg/ioutils/BUILD.bazel
-index 6184d7912..12c81d24a 100644
---- a/vendor/github.com/containers/storage/pkg/ioutils/BUILD.bazel
-+++ b/vendor/github.com/containers/storage/pkg/ioutils/BUILD.bazel
-@@ -7,7 +7,7 @@ go_library(
- "bytespipe.go",
- "fswriters.go",
- "fswriters_linux.go",
-- "fswriters_unsupported.go",
-+ "fswriters_other.go",
- "readers.go",
- "temp_unix.go",
- "temp_windows.go",
-diff --git a/vendor/github.com/containers/storage/pkg/ioutils/fswriters.go b/vendor/github.com/containers/storage/pkg/ioutils/fswriters.go
-index 231d1c47b..2a8c85ad4 100644
---- a/vendor/github.com/containers/storage/pkg/ioutils/fswriters.go
-+++ b/vendor/github.com/containers/storage/pkg/ioutils/fswriters.go
-@@ -17,6 +17,20 @@ type AtomicFileWriterOptions struct {
- // On successful return from Close() this is set to the mtime of the
- // newly written file.
- ModTime time.Time
-+ // Specifies whether Commit() must be explicitly called to write state
-+ // to the destination. This allows an application to preserve the original
-+ // file when an error occurs during processing (and not just during write)
-+ // The default is false, which will auto-commit on Close
-+ ExplicitCommit bool
-+}
-+
-+type CommittableWriter interface {
-+ io.WriteCloser
-+
-+ // Commit closes the temporary file associated with this writer, and
-+ // provided no errors (during commit or previously during write operations),
-+ // will publish the completed file under the intended destination.
-+ Commit() error
- }
-
- var defaultWriterOptions = AtomicFileWriterOptions{}
-@@ -27,16 +41,19 @@ func SetDefaultOptions(opts AtomicFileWriterOptions) {
- defaultWriterOptions = opts
- }
-
--// NewAtomicFileWriterWithOpts returns WriteCloser so that writing to it writes to a
--// temporary file and closing it atomically changes the temporary file to
--// destination path. Writing and closing concurrently is not allowed.
--func NewAtomicFileWriterWithOpts(filename string, perm os.FileMode, opts *AtomicFileWriterOptions) (io.WriteCloser, error) {
-+// NewAtomicFileWriterWithOpts returns a CommittableWriter so that writing to it
-+// writes to a temporary file, which can later be committed to a destination path,
-+// either by Closing in the case of auto-commit, or manually calling commit if the
-+// ExplicitCommit option is enabled. Writing and closing concurrently is not
-+// allowed.
-+func NewAtomicFileWriterWithOpts(filename string, perm os.FileMode, opts *AtomicFileWriterOptions) (CommittableWriter, error) {
- return newAtomicFileWriter(filename, perm, opts)
- }
-
--// newAtomicFileWriter returns WriteCloser so that writing to it writes to a
--// temporary file and closing it atomically changes the temporary file to
--// destination path. Writing and closing concurrently is not allowed.
-+// newAtomicFileWriter returns a CommittableWriter so that writing to it writes to
-+// a temporary file, which can later be committed to a destination path, either by
-+// Closing in the case of auto-commit, or manually calling commit if the
-+// ExplicitCommit option is enabled. Writing and closing concurrently is not allowed.
- func newAtomicFileWriter(filename string, perm os.FileMode, opts *AtomicFileWriterOptions) (*atomicFileWriter, error) {
- f, err := os.CreateTemp(filepath.Dir(filename), ".tmp-"+filepath.Base(filename))
- if err != nil {
-@@ -50,17 +67,18 @@ func newAtomicFileWriter(filename string, perm os.FileMode, opts *AtomicFileWrit
- return nil, err
- }
- return &atomicFileWriter{
-- f: f,
-- fn: abspath,
-- perm: perm,
-- noSync: opts.NoSync,
-+ f: f,
-+ fn: abspath,
-+ perm: perm,
-+ noSync: opts.NoSync,
-+ explicitCommit: opts.ExplicitCommit,
- }, nil
- }
-
--// NewAtomicFileWriter returns WriteCloser so that writing to it writes to a
--// temporary file and closing it atomically changes the temporary file to
--// destination path. Writing and closing concurrently is not allowed.
--func NewAtomicFileWriter(filename string, perm os.FileMode) (io.WriteCloser, error) {
-+// NewAtomicFileWriterWithOpts returns a CommittableWriter, with auto-commit enabled.
-+// Writing to it writes to a temporary file and closing it atomically changes the
-+// temporary file to destination path. Writing and closing concurrently is not allowed.
-+func NewAtomicFileWriter(filename string, perm os.FileMode) (CommittableWriter, error) {
- return NewAtomicFileWriterWithOpts(filename, perm, nil)
- }
-
-@@ -91,12 +109,14 @@ func AtomicWriteFile(filename string, data []byte, perm os.FileMode) error {
- }
-
- type atomicFileWriter struct {
-- f *os.File
-- fn string
-- writeErr error
-- perm os.FileMode
-- noSync bool
-- modTime time.Time
-+ f *os.File
-+ fn string
-+ writeErr error
-+ perm os.FileMode
-+ noSync bool
-+ modTime time.Time
-+ closed bool
-+ explicitCommit bool
- }
-
- func (w *atomicFileWriter) Write(dt []byte) (int, error) {
-@@ -107,43 +127,73 @@ func (w *atomicFileWriter) Write(dt []byte) (int, error) {
- return n, err
- }
-
--func (w *atomicFileWriter) Close() (retErr error) {
-+func (w *atomicFileWriter) closeTempFile() error {
-+ if w.closed {
-+ return nil
-+ }
-+
-+ w.closed = true
-+ return w.f.Close()
-+}
-+
-+func (w *atomicFileWriter) Close() error {
-+ return w.complete(!w.explicitCommit)
-+}
-+
-+func (w *atomicFileWriter) Commit() error {
-+ return w.complete(true)
-+}
-+
-+func (w *atomicFileWriter) complete(commit bool) (retErr error) {
-+ if w == nil || w.closed {
-+ return nil
-+ }
-+
- defer func() {
-+ w.closeTempFile()
- if retErr != nil || w.writeErr != nil {
- os.Remove(w.f.Name())
- }
- }()
-- if !w.noSync {
-- if err := fdatasync(w.f); err != nil {
-- w.f.Close()
-- return err
-- }
-+
-+ if commit {
-+ return w.commitState()
- }
-
-- // fstat before closing the fd
-- info, statErr := w.f.Stat()
-- if statErr == nil {
-- w.modTime = info.ModTime()
-+ return nil
-+}
-+
-+func (w *atomicFileWriter) commitState() error {
-+ // Perform a data only sync (fdatasync()) if supported
-+ if err := w.postDataWrittenSync(); err != nil {
-+ return err
- }
-- // We delay error reporting until after the real call to close()
-- // to match the traditional linux close() behaviour that an fd
-- // is invalid (closed) even if close returns failure. While
-- // weird, this allows a well defined way to not leak open fds.
-
-- if err := w.f.Close(); err != nil {
-+ // Capture fstat before closing the fd
-+ info, err := w.f.Stat()
-+ if err != nil {
- return err
- }
-+ w.modTime = info.ModTime()
-
-- if statErr != nil {
-- return statErr
-+ if err := w.f.Chmod(w.perm); err != nil {
-+ return err
-+ }
-+
-+ // Perform full sync on platforms that need it
-+ if err := w.preRenameSync(); err != nil {
-+ return err
- }
-
-- if err := os.Chmod(w.f.Name(), w.perm); err != nil {
-+ // Some platforms require closing before rename (Windows)
-+ if err := w.closeTempFile(); err != nil {
- return err
- }
-+
- if w.writeErr == nil {
- return os.Rename(w.f.Name(), w.fn)
- }
-+
- return nil
- }
-
-@@ -195,7 +245,7 @@ func (w syncFileCloser) Close() error {
- if !defaultWriterOptions.NoSync {
- return w.File.Close()
- }
-- err := fdatasync(w.File)
-+ err := dataOrFullSync(w.File)
- if err1 := w.File.Close(); err == nil {
- err = err1
- }
-diff --git a/vendor/github.com/containers/storage/pkg/ioutils/fswriters_linux.go b/vendor/github.com/containers/storage/pkg/ioutils/fswriters_linux.go
-index 0da78a063..10ed48cfd 100644
---- a/vendor/github.com/containers/storage/pkg/ioutils/fswriters_linux.go
-+++ b/vendor/github.com/containers/storage/pkg/ioutils/fswriters_linux.go
-@@ -6,6 +6,18 @@ import (
- "golang.org/x/sys/unix"
- )
-
--func fdatasync(f *os.File) error {
-+func dataOrFullSync(f *os.File) error {
- return unix.Fdatasync(int(f.Fd()))
- }
-+
-+func (w *atomicFileWriter) postDataWrittenSync() error {
-+ if w.noSync {
-+ return nil
-+ }
-+ return unix.Fdatasync(int(w.f.Fd()))
-+}
-+
-+func (w *atomicFileWriter) preRenameSync() error {
-+ // On Linux data can be reliably flushed to media without metadata, so defer
-+ return nil
-+}
-diff --git a/vendor/github.com/containers/storage/pkg/ioutils/fswriters_other.go b/vendor/github.com/containers/storage/pkg/ioutils/fswriters_other.go
-new file mode 100644
-index 000000000..aec161e0f
---- /dev/null
-+++ b/vendor/github.com/containers/storage/pkg/ioutils/fswriters_other.go
-@@ -0,0 +1,26 @@
-+//go:build !linux
-+// +build !linux
-+
-+package ioutils
-+
-+import (
-+ "os"
-+)
-+
-+func dataOrFullSync(f *os.File) error {
-+ return f.Sync()
-+}
-+
-+func (w *atomicFileWriter) postDataWrittenSync() error {
-+ // many platforms (Mac, Windows) require a full sync to reliably flush to media
-+ return nil
-+}
-+
-+func (w *atomicFileWriter) preRenameSync() error {
-+ if w.noSync {
-+ return nil
-+ }
-+
-+ // fsync() on Non-linux Unix, FlushFileBuffers (Windows), F_FULLFSYNC (Mac)
-+ return w.f.Sync()
-+}
-diff --git a/vendor/github.com/containers/storage/pkg/ioutils/fswriters_unsupported.go b/vendor/github.com/containers/storage/pkg/ioutils/fswriters_unsupported.go
-deleted file mode 100644
-index 635489280..000000000
---- a/vendor/github.com/containers/storage/pkg/ioutils/fswriters_unsupported.go
-+++ /dev/null
-@@ -1,12 +0,0 @@
--//go:build !linux
--// +build !linux
--
--package ioutils
--
--import (
-- "os"
--)
--
--func fdatasync(f *os.File) error {
-- return f.Sync()
--}
-diff --git a/vendor/github.com/containers/storage/pkg/lockfile/BUILD.bazel b/vendor/github.com/containers/storage/pkg/lockfile/BUILD.bazel
-index df050bd25..30d710190 100644
---- a/vendor/github.com/containers/storage/pkg/lockfile/BUILD.bazel
-+++ b/vendor/github.com/containers/storage/pkg/lockfile/BUILD.bazel
-@@ -3,6 +3,7 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library")
- go_library(
- name = "go_default_library",
- srcs = [
-+ "lastwrite.go",
- "lockfile.go",
- "lockfile_unix.go",
- "lockfile_windows.go",
-@@ -35,6 +36,9 @@ go_library(
- "//vendor/github.com/containers/storage/pkg/system:go_default_library",
- "//vendor/golang.org/x/sys/unix:go_default_library",
- ],
-+ "@io_bazel_rules_go//go/platform:windows": [
-+ "//vendor/golang.org/x/sys/windows:go_default_library",
-+ ],
- "//conditions:default": [],
- }),
- )
-diff --git a/vendor/github.com/containers/storage/pkg/lockfile/lastwrite.go b/vendor/github.com/containers/storage/pkg/lockfile/lastwrite.go
-new file mode 100644
-index 000000000..93fb1fea8
---- /dev/null
-+++ b/vendor/github.com/containers/storage/pkg/lockfile/lastwrite.go
-@@ -0,0 +1,82 @@
-+package lockfile
-+
-+import (
-+ "bytes"
-+ cryptorand "crypto/rand"
-+ "encoding/binary"
-+ "os"
-+ "sync/atomic"
-+ "time"
-+)
-+
-+// LastWrite is an opaque identifier of the last write to some *LockFile.
-+// It can be used by users of a *LockFile to determine if the lock indicates changes
-+// since the last check.
-+//
-+// Never construct a LastWrite manually; only accept it from *LockFile methods, and pass it back.
-+type LastWrite struct {
-+ // Never modify fields of a LastWrite object; it has value semantics.
-+ state []byte // Contents of the lock file.
-+}
-+
-+var lastWriterIDCounter uint64 // Private state for newLastWriterID
-+
-+const lastWriterIDSize = 64 // This must be the same as len(stringid.GenerateRandomID)
-+// newLastWrite returns a new "last write" ID.
-+// The value must be different on every call, and also differ from values
-+// generated by other processes.
-+func newLastWrite() LastWrite {
-+ // The ID is (PID, time, per-process counter, random)
-+ // PID + time represents both a unique process across reboots,
-+ // and a specific time within the process; the per-process counter
-+ // is an extra safeguard for in-process concurrency.
-+ // The random part disambiguates across process namespaces
-+ // (where PID values might collide), serves as a general-purpose
-+ // extra safety, _and_ is used to pad the output to lastWriterIDSize,
-+ // because other versions of this code exist and they don't work
-+ // efficiently if the size of the value changes.
-+ pid := os.Getpid()
-+ tm := time.Now().UnixNano()
-+ counter := atomic.AddUint64(&lastWriterIDCounter, 1)
-+
-+ res := make([]byte, lastWriterIDSize)
-+ binary.LittleEndian.PutUint64(res[0:8], uint64(tm))
-+ binary.LittleEndian.PutUint64(res[8:16], counter)
-+ binary.LittleEndian.PutUint32(res[16:20], uint32(pid))
-+ if n, err := cryptorand.Read(res[20:lastWriterIDSize]); err != nil || n != lastWriterIDSize-20 {
-+ panic(err) // This shouldn't happen
-+ }
-+
-+ return LastWrite{
-+ state: res,
-+ }
-+}
-+
-+// serialize returns bytes to write to the lock file to represent the specified write.
-+func (lw LastWrite) serialize() []byte {
-+ if lw.state == nil {
-+ panic("LastWrite.serialize on an uninitialized object")
-+ }
-+ return lw.state
-+}
-+
-+// Equals returns true if lw matches other
-+func (lw LastWrite) equals(other LastWrite) bool {
-+ if lw.state == nil {
-+ panic("LastWrite.equals on an uninitialized object")
-+ }
-+ if other.state == nil {
-+ panic("LastWrite.equals with an uninitialized counterparty")
-+ }
-+ return bytes.Equal(lw.state, other.state)
-+}
-+
-+// newLastWriteFromData returns a LastWrite corresponding to data that came from a previous LastWrite.serialize
-+func newLastWriteFromData(serialized []byte) LastWrite {
-+ if serialized == nil {
-+ panic("newLastWriteFromData with nil data")
-+ }
-+ return LastWrite{
-+ state: serialized,
-+ }
-+}
-diff --git a/vendor/github.com/containers/storage/pkg/lockfile/lockfile.go b/vendor/github.com/containers/storage/pkg/lockfile/lockfile.go
-index ec25f8a9c..5dd674108 100644
---- a/vendor/github.com/containers/storage/pkg/lockfile/lockfile.go
-+++ b/vendor/github.com/containers/storage/pkg/lockfile/lockfile.go
-@@ -2,6 +2,7 @@ package lockfile
-
- import (
- "fmt"
-+ "os"
- "path/filepath"
- "sync"
- "time"
-@@ -54,6 +55,38 @@ type Locker interface {
- AssertLockedForWriting()
- }
-
-+type lockType byte
-+
-+const (
-+ readLock lockType = iota
-+ writeLock
-+)
-+
-+// LockFile represents a file lock where the file is used to cache an
-+// identifier of the last party that made changes to whatever's being protected
-+// by the lock.
-+//
-+// It MUST NOT be created manually. Use GetLockFile or GetROLockFile instead.
-+type LockFile struct {
-+ // The following fields are only set when constructing *LockFile, and must never be modified afterwards.
-+ // They are safe to access without any other locking.
-+ file string
-+ ro bool
-+
-+ // rwMutex serializes concurrent reader-writer acquisitions in the same process space
-+ rwMutex *sync.RWMutex
-+ // stateMutex is used to synchronize concurrent accesses to the state below
-+ stateMutex *sync.Mutex
-+ counter int64
-+ lw LastWrite // A global value valid as of the last .Touch() or .Modified()
-+ lockType lockType
-+ locked bool
-+ // The following fields are only modified on transitions between counter == 0 / counter != 0.
-+ // Thus, they can be safely accessed by users _that currently hold the LockFile_ without locking.
-+ // In other cases, they need to be protected using stateMutex.
-+ fd fileHandle
-+}
-+
- var (
- lockFiles map[string]*LockFile
- lockFilesLock sync.Mutex
-@@ -91,6 +124,156 @@ func GetROLockfile(path string) (Locker, error) {
- return GetROLockFile(path)
- }
-
-+// Lock locks the lockfile as a writer. Panic if the lock is a read-only one.
-+func (l *LockFile) Lock() {
-+ if l.ro {
-+ panic("can't take write lock on read-only lock file")
-+ } else {
-+ l.lock(writeLock)
-+ }
-+}
-+
-+// LockRead locks the lockfile as a reader.
-+func (l *LockFile) RLock() {
-+ l.lock(readLock)
-+}
-+
-+// Unlock unlocks the lockfile.
-+func (l *LockFile) Unlock() {
-+ l.stateMutex.Lock()
-+ if !l.locked {
-+ // Panic when unlocking an unlocked lock. That's a violation
-+ // of the lock semantics and will reveal such.
-+ panic("calling Unlock on unlocked lock")
-+ }
-+ l.counter--
-+ if l.counter < 0 {
-+ // Panic when the counter is negative. There is no way we can
-+ // recover from a corrupted lock and we need to protect the
-+ // storage from corruption.
-+ panic(fmt.Sprintf("lock %q has been unlocked too often", l.file))
-+ }
-+ if l.counter == 0 {
-+ // We should only release the lock when the counter is 0 to
-+ // avoid releasing read-locks too early; a given process may
-+ // acquire a read lock multiple times.
-+ l.locked = false
-+ // Close the file descriptor on the last unlock, releasing the
-+ // file lock.
-+ unlockAndCloseHandle(l.fd)
-+ }
-+ if l.lockType == readLock {
-+ l.rwMutex.RUnlock()
-+ } else {
-+ l.rwMutex.Unlock()
-+ }
-+ l.stateMutex.Unlock()
-+}
-+
-+func (l *LockFile) AssertLocked() {
-+ // DO NOT provide a variant that returns the value of l.locked.
-+ //
-+ // If the caller does not hold the lock, l.locked might nevertheless be true because another goroutine does hold it, and
-+ // we can’t tell the difference.
-+ //
-+ // Hence, this “AssertLocked” method, which exists only for sanity checks.
-+
-+ // Don’t even bother with l.stateMutex: The caller is expected to hold the lock, and in that case l.locked is constant true
-+ // with no possible writers.
-+ // If the caller does not hold the lock, we are violating the locking/memory model anyway, and accessing the data
-+ // without the lock is more efficient for callers, and potentially more visible to lock analysers for incorrect callers.
-+ if !l.locked {
-+ panic("internal error: lock is not held by the expected owner")
-+ }
-+}
-+
-+func (l *LockFile) AssertLockedForWriting() {
-+ // DO NOT provide a variant that returns the current lock state.
-+ //
-+ // The same caveats as for AssertLocked apply equally.
-+
-+ l.AssertLocked()
-+ // Like AssertLocked, don’t even bother with l.stateMutex.
-+ if l.lockType == readLock {
-+ panic("internal error: lock is not held for writing")
-+ }
-+}
-+
-+// ModifiedSince checks if the lock has been changed since a provided LastWrite value,
-+// and returns the one to record instead.
-+//
-+// If ModifiedSince reports no modification, the previous LastWrite value
-+// is still valid and can continue to be used.
-+//
-+// If this function fails, the LastWriter value of the lock is indeterminate;
-+// the caller should fail and keep using the previously-recorded LastWrite value,
-+// so that it continues failing until the situation is resolved. Similarly,
-+// it should only update the recorded LastWrite value after processing the update:
-+//
-+// lw2, modified, err := state.lock.ModifiedSince(state.lastWrite)
-+// if err != nil { /* fail */ }
-+// state.lastWrite = lw2
-+// if modified {
-+// if err := reload(); err != nil { /* fail */ }
-+// state.lastWrite = lw2
-+// }
-+//
-+// The caller must hold the lock (for reading or writing).
-+func (l *LockFile) ModifiedSince(previous LastWrite) (LastWrite, bool, error) {
-+ l.AssertLocked()
-+ currentLW, err := l.GetLastWrite()
-+ if err != nil {
-+ return LastWrite{}, false, err
-+ }
-+ modified := !previous.equals(currentLW)
-+ return currentLW, modified, nil
-+}
-+
-+// Modified indicates if the lockfile has been updated since the last time it
-+// was loaded.
-+// NOTE: Unlike ModifiedSince, this returns true the first time it is called on a *LockFile.
-+// Callers cannot, in general, rely on this, because that might have happened for some other
-+// owner of the same *LockFile who created it previously.
-+//
-+// Deprecated: Use *LockFile.ModifiedSince.
-+func (l *LockFile) Modified() (bool, error) {
-+ l.stateMutex.Lock()
-+ if !l.locked {
-+ panic("attempted to check last-writer in lockfile without locking it first")
-+ }
-+ defer l.stateMutex.Unlock()
-+ oldLW := l.lw
-+ // Note that this is called with stateMutex held; that’s fine because ModifiedSince doesn’t need to lock it.
-+ currentLW, modified, err := l.ModifiedSince(oldLW)
-+ if err != nil {
-+ return true, err
-+ }
-+ l.lw = currentLW
-+ return modified, nil
-+}
-+
-+// Touch updates the lock file with to record that the current lock holder has modified the lock-protected data.
-+//
-+// Deprecated: Use *LockFile.RecordWrite.
-+func (l *LockFile) Touch() error {
-+ lw, err := l.RecordWrite()
-+ if err != nil {
-+ return err
-+ }
-+ l.stateMutex.Lock()
-+ if !l.locked || (l.lockType == readLock) {
-+ panic("attempted to update last-writer in lockfile without the write lock")
-+ }
-+ defer l.stateMutex.Unlock()
-+ l.lw = lw
-+ return nil
-+}
-+
-+// IsReadWrite indicates if the lock file is a read-write lock.
-+func (l *LockFile) IsReadWrite() bool {
-+ return !l.ro
-+}
-+
- // getLockFile returns a *LockFile object, possibly (depending on the platform)
- // working inter-process, and associated with the specified path.
- //
-@@ -128,3 +311,99 @@ func getLockfile(path string, ro bool) (*LockFile, error) {
- lockFiles[cleanPath] = lockFile
- return lockFile, nil
- }
-+
-+// createLockFileForPath returns new *LockFile object, possibly (depending on the platform)
-+// working inter-process and associated with the specified path.
-+//
-+// This function will be called at most once for each path value within a single process.
-+//
-+// If ro, the lock is a read-write lock and the returned *LockFile should correspond to the
-+// “lock for reading” (shared) operation; otherwise, the lock is either an exclusive lock,
-+// or a read-write lock and *LockFile should correspond to the “lock for writing” (exclusive) operation.
-+//
-+// WARNING:
-+// - The lock may or MAY NOT be inter-process.
-+// - There may or MAY NOT be an actual object on the filesystem created for the specified path.
-+// - Even if ro, the lock MAY be exclusive.
-+func createLockFileForPath(path string, ro bool) (*LockFile, error) {
-+ // Check if we can open the lock.
-+ fd, err := openLock(path, ro)
-+ if err != nil {
-+ return nil, err
-+ }
-+ unlockAndCloseHandle(fd)
-+
-+ lType := writeLock
-+ if ro {
-+ lType = readLock
-+ }
-+
-+ return &LockFile{
-+ file: path,
-+ ro: ro,
-+
-+ rwMutex: &sync.RWMutex{},
-+ stateMutex: &sync.Mutex{},
-+ lw: newLastWrite(), // For compatibility, the first call of .Modified() will always report a change.
-+ lockType: lType,
-+ locked: false,
-+ }, nil
-+}
-+
-+// openLock opens the file at path and returns the corresponding file
-+// descriptor. The path is opened either read-only or read-write,
-+// depending on the value of ro argument.
-+//
-+// openLock will create the file and its parent directories,
-+// if necessary.
-+func openLock(path string, ro bool) (fd fileHandle, err error) {
-+ flags := os.O_CREATE
-+ if ro {
-+ flags |= os.O_RDONLY
-+ } else {
-+ flags |= os.O_RDWR
-+ }
-+ fd, err = openHandle(path, flags)
-+ if err == nil {
-+ return fd, nil
-+ }
-+
-+ // the directory of the lockfile seems to be removed, try to create it
-+ if os.IsNotExist(err) {
-+ if err := os.MkdirAll(filepath.Dir(path), 0o700); err != nil {
-+ return fd, fmt.Errorf("creating lock file directory: %w", err)
-+ }
-+
-+ return openLock(path, ro)
-+ }
-+
-+ return fd, &os.PathError{Op: "open", Path: path, Err: err}
-+}
-+
-+// lock locks the lockfile via syscall based on the specified type and
-+// command.
-+func (l *LockFile) lock(lType lockType) {
-+ if lType == readLock {
-+ l.rwMutex.RLock()
-+ } else {
-+ l.rwMutex.Lock()
-+ }
-+ l.stateMutex.Lock()
-+ defer l.stateMutex.Unlock()
-+ if l.counter == 0 {
-+ // If we're the first reference on the lock, we need to open the file again.
-+ fd, err := openLock(l.file, l.ro)
-+ if err != nil {
-+ panic(err)
-+ }
-+ l.fd = fd
-+
-+ // Optimization: only use the (expensive) syscall when
-+ // the counter is 0. In this case, we're either the first
-+ // reader lock or a writer lock.
-+ lockHandle(l.fd, lType)
-+ }
-+ l.lockType = lType
-+ l.locked = true
-+ l.counter++
-+}
-diff --git a/vendor/github.com/containers/storage/pkg/lockfile/lockfile_unix.go b/vendor/github.com/containers/storage/pkg/lockfile/lockfile_unix.go
-index 335980914..38e737e26 100644
---- a/vendor/github.com/containers/storage/pkg/lockfile/lockfile_unix.go
-+++ b/vendor/github.com/containers/storage/pkg/lockfile/lockfile_unix.go
-@@ -4,297 +4,13 @@
- package lockfile
-
- import (
-- "bytes"
-- cryptorand "crypto/rand"
-- "encoding/binary"
-- "fmt"
-- "os"
-- "path/filepath"
-- "sync"
-- "sync/atomic"
- "time"
-
- "github.com/containers/storage/pkg/system"
- "golang.org/x/sys/unix"
- )
-
--// *LockFile represents a file lock where the file is used to cache an
--// identifier of the last party that made changes to whatever's being protected
--// by the lock.
--//
--// It MUST NOT be created manually. Use GetLockFile or GetROLockFile instead.
--type LockFile struct {
-- // The following fields are only set when constructing *LockFile, and must never be modified afterwards.
-- // They are safe to access without any other locking.
-- file string
-- ro bool
--
-- // rwMutex serializes concurrent reader-writer acquisitions in the same process space
-- rwMutex *sync.RWMutex
-- // stateMutex is used to synchronize concurrent accesses to the state below
-- stateMutex *sync.Mutex
-- counter int64
-- lw LastWrite // A global value valid as of the last .Touch() or .Modified()
-- locktype int16
-- locked bool
-- // The following fields are only modified on transitions between counter == 0 / counter != 0.
-- // Thus, they can be safely accessed by users _that currently hold the LockFile_ without locking.
-- // In other cases, they need to be protected using stateMutex.
-- fd uintptr
--}
--
--// LastWrite is an opaque identifier of the last write to some *LockFile.
--// It can be used by users of a *LockFile to determine if the lock indicates changes
--// since the last check.
--//
--// Never construct a LastWrite manually; only accept it from *LockFile methods, and pass it back.
--type LastWrite struct {
-- // Never modify fields of a LastWrite object; it has value semantics.
-- state []byte // Contents of the lock file.
--}
--
--const lastWriterIDSize = 64 // This must be the same as len(stringid.GenerateRandomID)
--var lastWriterIDCounter uint64 // Private state for newLastWriterID
--
--// newLastWrite returns a new "last write" ID.
--// The value must be different on every call, and also differ from values
--// generated by other processes.
--func newLastWrite() LastWrite {
-- // The ID is (PID, time, per-process counter, random)
-- // PID + time represents both a unique process across reboots,
-- // and a specific time within the process; the per-process counter
-- // is an extra safeguard for in-process concurrency.
-- // The random part disambiguates across process namespaces
-- // (where PID values might collide), serves as a general-purpose
-- // extra safety, _and_ is used to pad the output to lastWriterIDSize,
-- // because other versions of this code exist and they don't work
-- // efficiently if the size of the value changes.
-- pid := os.Getpid()
-- tm := time.Now().UnixNano()
-- counter := atomic.AddUint64(&lastWriterIDCounter, 1)
--
-- res := make([]byte, lastWriterIDSize)
-- binary.LittleEndian.PutUint64(res[0:8], uint64(tm))
-- binary.LittleEndian.PutUint64(res[8:16], counter)
-- binary.LittleEndian.PutUint32(res[16:20], uint32(pid))
-- if n, err := cryptorand.Read(res[20:lastWriterIDSize]); err != nil || n != lastWriterIDSize-20 {
-- panic(err) // This shouldn't happen
-- }
--
-- return LastWrite{
-- state: res,
-- }
--}
--
--// newLastWriteFromData returns a LastWrite corresponding to data that came from a previous LastWrite.serialize
--func newLastWriteFromData(serialized []byte) LastWrite {
-- if serialized == nil {
-- panic("newLastWriteFromData with nil data")
-- }
-- return LastWrite{
-- state: serialized,
-- }
--}
--
--// serialize returns bytes to write to the lock file to represent the specified write.
--func (lw LastWrite) serialize() []byte {
-- if lw.state == nil {
-- panic("LastWrite.serialize on an uninitialized object")
-- }
-- return lw.state
--}
--
--// Equals returns true if lw matches other
--func (lw LastWrite) equals(other LastWrite) bool {
-- if lw.state == nil {
-- panic("LastWrite.equals on an uninitialized object")
-- }
-- if other.state == nil {
-- panic("LastWrite.equals with an uninitialized counterparty")
-- }
-- return bytes.Equal(lw.state, other.state)
--}
--
--// openLock opens the file at path and returns the corresponding file
--// descriptor. The path is opened either read-only or read-write,
--// depending on the value of ro argument.
--//
--// openLock will create the file and its parent directories,
--// if necessary.
--func openLock(path string, ro bool) (fd int, err error) {
-- flags := unix.O_CLOEXEC | os.O_CREATE
-- if ro {
-- flags |= os.O_RDONLY
-- } else {
-- flags |= os.O_RDWR
-- }
-- fd, err = unix.Open(path, flags, 0o644)
-- if err == nil {
-- return fd, nil
-- }
--
-- // the directory of the lockfile seems to be removed, try to create it
-- if os.IsNotExist(err) {
-- if err := os.MkdirAll(filepath.Dir(path), 0700); err != nil {
-- return fd, fmt.Errorf("creating lock file directory: %w", err)
-- }
--
-- return openLock(path, ro)
-- }
--
-- return fd, &os.PathError{Op: "open", Path: path, Err: err}
--}
--
--// createLockFileForPath returns new *LockFile object, possibly (depending on the platform)
--// working inter-process and associated with the specified path.
--//
--// This function will be called at most once for each path value within a single process.
--//
--// If ro, the lock is a read-write lock and the returned *LockFile should correspond to the
--// “lock for reading” (shared) operation; otherwise, the lock is either an exclusive lock,
--// or a read-write lock and *LockFile should correspond to the “lock for writing” (exclusive) operation.
--//
--// WARNING:
--// - The lock may or MAY NOT be inter-process.
--// - There may or MAY NOT be an actual object on the filesystem created for the specified path.
--// - Even if ro, the lock MAY be exclusive.
--func createLockFileForPath(path string, ro bool) (*LockFile, error) {
-- // Check if we can open the lock.
-- fd, err := openLock(path, ro)
-- if err != nil {
-- return nil, err
-- }
-- unix.Close(fd)
--
-- locktype := unix.F_WRLCK
-- if ro {
-- locktype = unix.F_RDLCK
-- }
-- return &LockFile{
-- file: path,
-- ro: ro,
--
-- rwMutex: &sync.RWMutex{},
-- stateMutex: &sync.Mutex{},
-- lw: newLastWrite(), // For compatibility, the first call of .Modified() will always report a change.
-- locktype: int16(locktype),
-- locked: false,
-- }, nil
--}
--
--// lock locks the lockfile via FCTNL(2) based on the specified type and
--// command.
--func (l *LockFile) lock(lType int16) {
-- lk := unix.Flock_t{
-- Type: lType,
-- Whence: int16(unix.SEEK_SET),
-- Start: 0,
-- Len: 0,
-- }
-- switch lType {
-- case unix.F_RDLCK:
-- l.rwMutex.RLock()
-- case unix.F_WRLCK:
-- l.rwMutex.Lock()
-- default:
-- panic(fmt.Sprintf("attempted to acquire a file lock of unrecognized type %d", lType))
-- }
-- l.stateMutex.Lock()
-- defer l.stateMutex.Unlock()
-- if l.counter == 0 {
-- // If we're the first reference on the lock, we need to open the file again.
-- fd, err := openLock(l.file, l.ro)
-- if err != nil {
-- panic(err)
-- }
-- l.fd = uintptr(fd)
--
-- // Optimization: only use the (expensive) fcntl syscall when
-- // the counter is 0. In this case, we're either the first
-- // reader lock or a writer lock.
-- for unix.FcntlFlock(l.fd, unix.F_SETLKW, &lk) != nil {
-- time.Sleep(10 * time.Millisecond)
-- }
-- }
-- l.locktype = lType
-- l.locked = true
-- l.counter++
--}
--
--// Lock locks the lockfile as a writer. Panic if the lock is a read-only one.
--func (l *LockFile) Lock() {
-- if l.ro {
-- panic("can't take write lock on read-only lock file")
-- } else {
-- l.lock(unix.F_WRLCK)
-- }
--}
--
--// LockRead locks the lockfile as a reader.
--func (l *LockFile) RLock() {
-- l.lock(unix.F_RDLCK)
--}
--
--// Unlock unlocks the lockfile.
--func (l *LockFile) Unlock() {
-- l.stateMutex.Lock()
-- if !l.locked {
-- // Panic when unlocking an unlocked lock. That's a violation
-- // of the lock semantics and will reveal such.
-- panic("calling Unlock on unlocked lock")
-- }
-- l.counter--
-- if l.counter < 0 {
-- // Panic when the counter is negative. There is no way we can
-- // recover from a corrupted lock and we need to protect the
-- // storage from corruption.
-- panic(fmt.Sprintf("lock %q has been unlocked too often", l.file))
-- }
-- if l.counter == 0 {
-- // We should only release the lock when the counter is 0 to
-- // avoid releasing read-locks too early; a given process may
-- // acquire a read lock multiple times.
-- l.locked = false
-- // Close the file descriptor on the last unlock, releasing the
-- // file lock.
-- unix.Close(int(l.fd))
-- }
-- if l.locktype == unix.F_RDLCK {
-- l.rwMutex.RUnlock()
-- } else {
-- l.rwMutex.Unlock()
-- }
-- l.stateMutex.Unlock()
--}
--
--func (l *LockFile) AssertLocked() {
-- // DO NOT provide a variant that returns the value of l.locked.
-- //
-- // If the caller does not hold the lock, l.locked might nevertheless be true because another goroutine does hold it, and
-- // we can’t tell the difference.
-- //
-- // Hence, this “AssertLocked” method, which exists only for sanity checks.
--
-- // Don’t even bother with l.stateMutex: The caller is expected to hold the lock, and in that case l.locked is constant true
-- // with no possible writers.
-- // If the caller does not hold the lock, we are violating the locking/memory model anyway, and accessing the data
-- // without the lock is more efficient for callers, and potentially more visible to lock analysers for incorrect callers.
-- if !l.locked {
-- panic("internal error: lock is not held by the expected owner")
-- }
--}
--
--func (l *LockFile) AssertLockedForWriting() {
-- // DO NOT provide a variant that returns the current lock state.
-- //
-- // The same caveats as for AssertLocked apply equally.
--
-- l.AssertLocked()
-- // Like AssertLocked, don’t even bother with l.stateMutex.
-- if l.locktype != unix.F_WRLCK {
-- panic("internal error: lock is not held for writing")
-- }
--}
-+type fileHandle uintptr
-
- // GetLastWrite returns a LastWrite value corresponding to current state of the lock.
- // This is typically called before (_not after_) loading the state when initializing a consumer
-@@ -341,88 +57,39 @@ func (l *LockFile) RecordWrite() (LastWrite, error) {
- return lw, nil
- }
-
--// ModifiedSince checks if the lock has been changed since a provided LastWrite value,
--// and returns the one to record instead.
--//
--// If ModifiedSince reports no modification, the previous LastWrite value
--// is still valid and can continue to be used.
--//
--// If this function fails, the LastWriter value of the lock is indeterminate;
--// the caller should fail and keep using the previously-recorded LastWrite value,
--// so that it continues failing until the situation is resolved. Similarly,
--// it should only update the recorded LastWrite value after processing the update:
--//
--// lw2, modified, err := state.lock.ModifiedSince(state.lastWrite)
--// if err != nil { /* fail */ }
--// state.lastWrite = lw2
--// if modified {
--// if err := reload(); err != nil { /* fail */ }
--// state.lastWrite = lw2
--// }
--//
--// The caller must hold the lock (for reading or writing).
--func (l *LockFile) ModifiedSince(previous LastWrite) (LastWrite, bool, error) {
-- l.AssertLocked()
-- currentLW, err := l.GetLastWrite()
-+// TouchedSince indicates if the lock file has been touched since the specified time
-+func (l *LockFile) TouchedSince(when time.Time) bool {
-+ st, err := system.Fstat(int(l.fd))
- if err != nil {
-- return LastWrite{}, false, err
-+ return true
- }
-- modified := !previous.equals(currentLW)
-- return currentLW, modified, nil
-+ mtim := st.Mtim()
-+ touched := time.Unix(mtim.Unix())
-+ return when.Before(touched)
- }
-
--// Touch updates the lock file with to record that the current lock holder has modified the lock-protected data.
--//
--// Deprecated: Use *LockFile.RecordWrite.
--func (l *LockFile) Touch() error {
-- lw, err := l.RecordWrite()
-- if err != nil {
-- return err
-- }
-- l.stateMutex.Lock()
-- if !l.locked || (l.locktype != unix.F_WRLCK) {
-- panic("attempted to update last-writer in lockfile without the write lock")
-- }
-- defer l.stateMutex.Unlock()
-- l.lw = lw
-- return nil
-+func openHandle(path string, mode int) (fileHandle, error) {
-+ mode |= unix.O_CLOEXEC
-+ fd, err := unix.Open(path, mode, 0o644)
-+ return fileHandle(fd), err
- }
-
--// Modified indicates if the lockfile has been updated since the last time it
--// was loaded.
--// NOTE: Unlike ModifiedSince, this returns true the first time it is called on a *LockFile.
--// Callers cannot, in general, rely on this, because that might have happened for some other
--// owner of the same *LockFile who created it previously.
--//
--// Deprecated: Use *LockFile.ModifiedSince.
--func (l *LockFile) Modified() (bool, error) {
-- l.stateMutex.Lock()
-- if !l.locked {
-- panic("attempted to check last-writer in lockfile without locking it first")
-+func lockHandle(fd fileHandle, lType lockType) {
-+ fType := unix.F_RDLCK
-+ if lType != readLock {
-+ fType = unix.F_WRLCK
- }
-- defer l.stateMutex.Unlock()
-- oldLW := l.lw
-- // Note that this is called with stateMutex held; that’s fine because ModifiedSince doesn’t need to lock it.
-- currentLW, modified, err := l.ModifiedSince(oldLW)
-- if err != nil {
-- return true, err
-+ lk := unix.Flock_t{
-+ Type: int16(fType),
-+ Whence: int16(unix.SEEK_SET),
-+ Start: 0,
-+ Len: 0,
-+ }
-+ for unix.FcntlFlock(uintptr(fd), unix.F_SETLKW, &lk) != nil {
-+ time.Sleep(10 * time.Millisecond)
- }
-- l.lw = currentLW
-- return modified, nil
--}
--
--// IsReadWriteLock indicates if the lock file is a read-write lock.
--func (l *LockFile) IsReadWrite() bool {
-- return !l.ro
- }
-
--// TouchedSince indicates if the lock file has been touched since the specified time
--func (l *LockFile) TouchedSince(when time.Time) bool {
-- st, err := system.Fstat(int(l.fd))
-- if err != nil {
-- return true
-- }
-- mtim := st.Mtim()
-- touched := time.Unix(mtim.Unix())
-- return when.Before(touched)
-+func unlockAndCloseHandle(fd fileHandle) {
-+ unix.Close(int(fd))
- }
-diff --git a/vendor/github.com/containers/storage/pkg/lockfile/lockfile_windows.go b/vendor/github.com/containers/storage/pkg/lockfile/lockfile_windows.go
-index 09f2aca5c..304c92b15 100644
---- a/vendor/github.com/containers/storage/pkg/lockfile/lockfile_windows.go
-+++ b/vendor/github.com/containers/storage/pkg/lockfile/lockfile_windows.go
-@@ -5,81 +5,19 @@ package lockfile
-
- import (
- "os"
-- "sync"
- "time"
--)
--
--// createLockFileForPath returns a *LockFile object, possibly (depending on the platform)
--// working inter-process and associated with the specified path.
--//
--// This function will be called at most once for each path value within a single process.
--//
--// If ro, the lock is a read-write lock and the returned *LockFile should correspond to the
--// “lock for reading” (shared) operation; otherwise, the lock is either an exclusive lock,
--// or a read-write lock and *LockFile should correspond to the “lock for writing” (exclusive) operation.
--//
--// WARNING:
--// - The lock may or MAY NOT be inter-process.
--// - There may or MAY NOT be an actual object on the filesystem created for the specified path.
--// - Even if ro, the lock MAY be exclusive.
--func createLockFileForPath(path string, ro bool) (*LockFile, error) {
-- return &LockFile{locked: false}, nil
--}
-
--// *LockFile represents a file lock where the file is used to cache an
--// identifier of the last party that made changes to whatever's being protected
--// by the lock.
--//
--// It MUST NOT be created manually. Use GetLockFile or GetROLockFile instead.
--type LockFile struct {
-- mu sync.Mutex
-- file string
-- locked bool
--}
--
--// LastWrite is an opaque identifier of the last write to some *LockFile.
--// It can be used by users of a *LockFile to determine if the lock indicates changes
--// since the last check.
--// A default-initialized LastWrite never matches any last write, i.e. it always indicates changes.
--type LastWrite struct {
-- // Nothing: The Windows “implementation” does not actually track writes.
--}
--
--func (l *LockFile) Lock() {
-- l.mu.Lock()
-- l.locked = true
--}
--
--func (l *LockFile) RLock() {
-- l.mu.Lock()
-- l.locked = true
--}
--
--func (l *LockFile) Unlock() {
-- l.locked = false
-- l.mu.Unlock()
--}
-+ "golang.org/x/sys/windows"
-+)
-
--func (l *LockFile) AssertLocked() {
-- // DO NOT provide a variant that returns the value of l.locked.
-- //
-- // If the caller does not hold the lock, l.locked might nevertheless be true because another goroutine does hold it, and
-- // we can’t tell the difference.
-- //
-- // Hence, this “AssertLocked” method, which exists only for sanity checks.
-- if !l.locked {
-- panic("internal error: lock is not held by the expected owner")
-- }
--}
-+const (
-+ reserved = 0
-+ allBytes = ^uint32(0)
-+)
-
--func (l *LockFile) AssertLockedForWriting() {
-- // DO NOT provide a variant that returns the current lock state.
-- //
-- // The same caveats as for AssertLocked apply equally.
-- l.AssertLocked() // The current implementation does not distinguish between read and write locks.
--}
-+type fileHandle windows.Handle
-
--// GetLastWrite() returns a LastWrite value corresponding to current state of the lock.
-+// GetLastWrite returns a LastWrite value corresponding to current state of the lock.
- // This is typically called before (_not after_) loading the state when initializing a consumer
- // of the data protected by the lock.
- // During the lifetime of the consumer, the consumer should usually call ModifiedSince instead.
-@@ -87,7 +25,18 @@ func (l *LockFile) AssertLockedForWriting() {
- // The caller must hold the lock (for reading or writing) before this function is called.
- func (l *LockFile) GetLastWrite() (LastWrite, error) {
- l.AssertLocked()
-- return LastWrite{}, nil
-+ contents := make([]byte, lastWriterIDSize)
-+ ol := new(windows.Overlapped)
-+ var n uint32
-+ err := windows.ReadFile(windows.Handle(l.fd), contents, &n, ol)
-+ if err != nil && err != windows.ERROR_HANDLE_EOF {
-+ return LastWrite{}, err
-+ }
-+ // It is important to handle the partial read case, because
-+ // the initial size of the lock file is zero, which is a valid
-+ // state (no writes yet)
-+ contents = contents[:n]
-+ return newLastWriteFromData(contents), nil
- }
-
- // RecordWrite updates the lock with a new LastWrite value, and returns the new value.
-@@ -102,46 +51,22 @@ func (l *LockFile) GetLastWrite() (LastWrite, error) {
- //
- // The caller must hold the lock for writing.
- func (l *LockFile) RecordWrite() (LastWrite, error) {
-- return LastWrite{}, nil
--}
--
--// ModifiedSince checks if the lock has been changed since a provided LastWrite value,
--// and returns the one to record instead.
--//
--// If ModifiedSince reports no modification, the previous LastWrite value
--// is still valid and can continue to be used.
--//
--// If this function fails, the LastWriter value of the lock is indeterminate;
--// the caller should fail and keep using the previously-recorded LastWrite value,
--// so that it continues failing until the situation is resolved. Similarly,
--// it should only update the recorded LastWrite value after processing the update:
--//
--// lw2, modified, err := state.lock.ModifiedSince(state.lastWrite)
--// if err != nil { /* fail */ }
--// state.lastWrite = lw2
--// if modified {
--// if err := reload(); err != nil { /* fail */ }
--// state.lastWrite = lw2
--// }
--//
--// The caller must hold the lock (for reading or writing).
--func (l *LockFile) ModifiedSince(previous LastWrite) (LastWrite, bool, error) {
-- return LastWrite{}, false, nil
--}
--
--// Deprecated: Use *LockFile.ModifiedSince.
--func (l *LockFile) Modified() (bool, error) {
-- return false, nil
--}
--
--// Deprecated: Use *LockFile.RecordWrite.
--func (l *LockFile) Touch() error {
-- return nil
--}
--func (l *LockFile) IsReadWrite() bool {
-- return false
-+ l.AssertLockedForWriting()
-+ lw := newLastWrite()
-+ lockContents := lw.serialize()
-+ ol := new(windows.Overlapped)
-+ var n uint32
-+ err := windows.WriteFile(windows.Handle(l.fd), lockContents, &n, ol)
-+ if err != nil {
-+ return LastWrite{}, err
-+ }
-+ if int(n) != len(lockContents) {
-+ return LastWrite{}, windows.ERROR_DISK_FULL
-+ }
-+ return lw, nil
- }
-
-+// TouchedSince indicates if the lock file has been touched since the specified time
- func (l *LockFile) TouchedSince(when time.Time) bool {
- stat, err := os.Stat(l.file)
- if err != nil {
-@@ -149,3 +74,26 @@ func (l *LockFile) TouchedSince(when time.Time) bool {
- }
- return when.Before(stat.ModTime())
- }
-+
-+func openHandle(path string, mode int) (fileHandle, error) {
-+ mode |= windows.O_CLOEXEC
-+ fd, err := windows.Open(path, mode, windows.S_IWRITE)
-+ return fileHandle(fd), err
-+}
-+
-+func lockHandle(fd fileHandle, lType lockType) {
-+ flags := 0
-+ if lType != readLock {
-+ flags = windows.LOCKFILE_EXCLUSIVE_LOCK
-+ }
-+ ol := new(windows.Overlapped)
-+ if err := windows.LockFileEx(windows.Handle(fd), uint32(flags), reserved, allBytes, allBytes, ol); err != nil {
-+ panic(err)
-+ }
-+}
-+
-+func unlockAndCloseHandle(fd fileHandle) {
-+ ol := new(windows.Overlapped)
-+ windows.UnlockFileEx(windows.Handle(fd), reserved, allBytes, allBytes, ol)
-+ windows.Close(windows.Handle(fd))
-+}
-diff --git a/vendor/github.com/containers/storage/pkg/regexp/regexp.go b/vendor/github.com/containers/storage/pkg/regexp/regexp.go
-index 458b83378..1a3333dba 100644
---- a/vendor/github.com/containers/storage/pkg/regexp/regexp.go
-+++ b/vendor/github.com/containers/storage/pkg/regexp/regexp.go
-@@ -11,22 +11,27 @@ import (
- // of apps that want to use global regex variables. This library initializes them on
- // first use as opposed to the start of the executable.
- type Regexp struct {
-+ *regexpStruct
-+}
-+
-+type regexpStruct struct {
-+ _ noCopy
- once sync.Once
- regexp *regexp.Regexp
- val string
- }
-
- func Delayed(val string) Regexp {
-- re := Regexp{
-+ re := ®expStruct{
- val: val,
- }
- if precompile {
- re.regexp = regexp.MustCompile(re.val)
- }
-- return re
-+ return Regexp{re}
- }
-
--func (re *Regexp) compile() {
-+func (re *regexpStruct) compile() {
- if precompile {
- return
- }
-@@ -35,180 +40,195 @@ func (re *Regexp) compile() {
- })
- }
-
--func (re *Regexp) Expand(dst []byte, template []byte, src []byte, match []int) []byte {
-+func (re *regexpStruct) Expand(dst []byte, template []byte, src []byte, match []int) []byte {
- re.compile()
- return re.regexp.Expand(dst, template, src, match)
- }
-
--func (re *Regexp) ExpandString(dst []byte, template string, src string, match []int) []byte {
-+func (re *regexpStruct) ExpandString(dst []byte, template string, src string, match []int) []byte {
- re.compile()
- return re.regexp.ExpandString(dst, template, src, match)
- }
--func (re *Regexp) Find(b []byte) []byte {
-+
-+func (re *regexpStruct) Find(b []byte) []byte {
- re.compile()
- return re.regexp.Find(b)
- }
-
--func (re *Regexp) FindAll(b []byte, n int) [][]byte {
-+func (re *regexpStruct) FindAll(b []byte, n int) [][]byte {
- re.compile()
- return re.regexp.FindAll(b, n)
- }
-
--func (re *Regexp) FindAllIndex(b []byte, n int) [][]int {
-+func (re *regexpStruct) FindAllIndex(b []byte, n int) [][]int {
- re.compile()
- return re.regexp.FindAllIndex(b, n)
- }
-
--func (re *Regexp) FindAllString(s string, n int) []string {
-+func (re *regexpStruct) FindAllString(s string, n int) []string {
- re.compile()
- return re.regexp.FindAllString(s, n)
- }
-
--func (re *Regexp) FindAllStringIndex(s string, n int) [][]int {
-+func (re *regexpStruct) FindAllStringIndex(s string, n int) [][]int {
- re.compile()
- return re.regexp.FindAllStringIndex(s, n)
- }
-
--func (re *Regexp) FindAllStringSubmatch(s string, n int) [][]string {
-+func (re *regexpStruct) FindAllStringSubmatch(s string, n int) [][]string {
- re.compile()
- return re.regexp.FindAllStringSubmatch(s, n)
- }
-
--func (re *Regexp) FindAllStringSubmatchIndex(s string, n int) [][]int {
-+func (re *regexpStruct) FindAllStringSubmatchIndex(s string, n int) [][]int {
- re.compile()
- return re.regexp.FindAllStringSubmatchIndex(s, n)
- }
-
--func (re *Regexp) FindAllSubmatch(b []byte, n int) [][][]byte {
-+func (re *regexpStruct) FindAllSubmatch(b []byte, n int) [][][]byte {
- re.compile()
- return re.regexp.FindAllSubmatch(b, n)
- }
-
--func (re *Regexp) FindAllSubmatchIndex(b []byte, n int) [][]int {
-+func (re *regexpStruct) FindAllSubmatchIndex(b []byte, n int) [][]int {
- re.compile()
- return re.regexp.FindAllSubmatchIndex(b, n)
- }
-
--func (re *Regexp) FindIndex(b []byte) (loc []int) {
-+func (re *regexpStruct) FindIndex(b []byte) (loc []int) {
- re.compile()
- return re.regexp.FindIndex(b)
- }
-
--func (re *Regexp) FindReaderIndex(r io.RuneReader) (loc []int) {
-+func (re *regexpStruct) FindReaderIndex(r io.RuneReader) (loc []int) {
- re.compile()
- return re.regexp.FindReaderIndex(r)
- }
-
--func (re *Regexp) FindReaderSubmatchIndex(r io.RuneReader) []int {
-+func (re *regexpStruct) FindReaderSubmatchIndex(r io.RuneReader) []int {
- re.compile()
- return re.regexp.FindReaderSubmatchIndex(r)
- }
-
--func (re *Regexp) FindString(s string) string {
-+func (re *regexpStruct) FindString(s string) string {
- re.compile()
- return re.regexp.FindString(s)
- }
-
--func (re *Regexp) FindStringIndex(s string) (loc []int) {
-+func (re *regexpStruct) FindStringIndex(s string) (loc []int) {
- re.compile()
- return re.regexp.FindStringIndex(s)
- }
-
--func (re *Regexp) FindStringSubmatch(s string) []string {
-+func (re *regexpStruct) FindStringSubmatch(s string) []string {
- re.compile()
- return re.regexp.FindStringSubmatch(s)
- }
-
--func (re *Regexp) FindStringSubmatchIndex(s string) []int {
-+func (re *regexpStruct) FindStringSubmatchIndex(s string) []int {
- re.compile()
- return re.regexp.FindStringSubmatchIndex(s)
- }
-
--func (re *Regexp) FindSubmatch(b []byte) [][]byte {
-+func (re *regexpStruct) FindSubmatch(b []byte) [][]byte {
- re.compile()
- return re.regexp.FindSubmatch(b)
- }
-
--func (re *Regexp) FindSubmatchIndex(b []byte) []int {
-+func (re *regexpStruct) FindSubmatchIndex(b []byte) []int {
- re.compile()
- return re.regexp.FindSubmatchIndex(b)
- }
-
--func (re *Regexp) LiteralPrefix() (prefix string, complete bool) {
-+func (re *regexpStruct) LiteralPrefix() (prefix string, complete bool) {
- re.compile()
- return re.regexp.LiteralPrefix()
- }
-
--func (re *Regexp) Longest() {
-+func (re *regexpStruct) Longest() {
- re.compile()
- re.regexp.Longest()
- }
-
--func (re *Regexp) Match(b []byte) bool {
-+func (re *regexpStruct) Match(b []byte) bool {
- re.compile()
- return re.regexp.Match(b)
- }
-
--func (re *Regexp) MatchReader(r io.RuneReader) bool {
-+func (re *regexpStruct) MatchReader(r io.RuneReader) bool {
- re.compile()
- return re.regexp.MatchReader(r)
- }
--func (re *Regexp) MatchString(s string) bool {
-+
-+func (re *regexpStruct) MatchString(s string) bool {
- re.compile()
- return re.regexp.MatchString(s)
- }
-
--func (re *Regexp) NumSubexp() int {
-+func (re *regexpStruct) NumSubexp() int {
- re.compile()
- return re.regexp.NumSubexp()
- }
-
--func (re *Regexp) ReplaceAll(src, repl []byte) []byte {
-+func (re *regexpStruct) ReplaceAll(src, repl []byte) []byte {
- re.compile()
- return re.regexp.ReplaceAll(src, repl)
- }
-
--func (re *Regexp) ReplaceAllFunc(src []byte, repl func([]byte) []byte) []byte {
-+func (re *regexpStruct) ReplaceAllFunc(src []byte, repl func([]byte) []byte) []byte {
- re.compile()
- return re.regexp.ReplaceAllFunc(src, repl)
- }
-
--func (re *Regexp) ReplaceAllLiteral(src, repl []byte) []byte {
-+func (re *regexpStruct) ReplaceAllLiteral(src, repl []byte) []byte {
- re.compile()
- return re.regexp.ReplaceAllLiteral(src, repl)
- }
-
--func (re *Regexp) ReplaceAllLiteralString(src, repl string) string {
-+func (re *regexpStruct) ReplaceAllLiteralString(src, repl string) string {
- re.compile()
- return re.regexp.ReplaceAllLiteralString(src, repl)
- }
-
--func (re *Regexp) ReplaceAllString(src, repl string) string {
-+func (re *regexpStruct) ReplaceAllString(src, repl string) string {
- re.compile()
- return re.regexp.ReplaceAllString(src, repl)
- }
-
--func (re *Regexp) ReplaceAllStringFunc(src string, repl func(string) string) string {
-+func (re *regexpStruct) ReplaceAllStringFunc(src string, repl func(string) string) string {
- re.compile()
- return re.regexp.ReplaceAllStringFunc(src, repl)
- }
-
--func (re *Regexp) Split(s string, n int) []string {
-+func (re *regexpStruct) Split(s string, n int) []string {
- re.compile()
- return re.regexp.Split(s, n)
- }
-
--func (re *Regexp) String() string {
-+func (re *regexpStruct) String() string {
- re.compile()
- return re.regexp.String()
- }
-
--func (re *Regexp) SubexpIndex(name string) int {
-+func (re *regexpStruct) SubexpIndex(name string) int {
- re.compile()
- return re.regexp.SubexpIndex(name)
- }
-
--func (re *Regexp) SubexpNames() []string {
-+func (re *regexpStruct) SubexpNames() []string {
- re.compile()
- return re.regexp.SubexpNames()
- }
-+
-+// noCopy may be added to structs which must not be copied
-+// after the first use.
-+//
-+// See https://golang.org/issues/8005#issuecomment-190753527
-+// for details.
-+//
-+// Note that it must not be embedded, due to the Lock and Unlock methods.
-+type noCopy struct{}
-+
-+// Lock is a no-op used by -copylocks checker from `go vet`.
-+func (*noCopy) Lock() {}
-+func (*noCopy) Unlock() {}
-diff --git a/vendor/github.com/containers/storage/pkg/system/errors.go b/vendor/github.com/containers/storage/pkg/system/errors.go
-index 288318985..b87d419b5 100644
---- a/vendor/github.com/containers/storage/pkg/system/errors.go
-+++ b/vendor/github.com/containers/storage/pkg/system/errors.go
-@@ -4,7 +4,5 @@ import (
- "errors"
- )
-
--var (
-- // ErrNotSupportedPlatform means the platform is not supported.
-- ErrNotSupportedPlatform = errors.New("platform and architecture is not supported")
--)
-+// ErrNotSupportedPlatform means the platform is not supported.
-+var ErrNotSupportedPlatform = errors.New("platform and architecture is not supported")
-diff --git a/vendor/github.com/containers/storage/pkg/system/init_windows.go b/vendor/github.com/containers/storage/pkg/system/init_windows.go
-index 019c66441..5f6fea1d3 100644
---- a/vendor/github.com/containers/storage/pkg/system/init_windows.go
-+++ b/vendor/github.com/containers/storage/pkg/system/init_windows.go
-@@ -13,5 +13,4 @@ func init() {
- if os.Getenv("LCOW_SUPPORTED") != "" {
- lcowSupported = true
- }
--
- }
-diff --git a/vendor/github.com/containers/storage/pkg/system/meminfo_solaris.go b/vendor/github.com/containers/storage/pkg/system/meminfo_solaris.go
-index df53c40e2..a90b23e03 100644
---- a/vendor/github.com/containers/storage/pkg/system/meminfo_solaris.go
-+++ b/vendor/github.com/containers/storage/pkg/system/meminfo_solaris.go
-@@ -84,7 +84,6 @@ func getFreeMem() int64 {
- //
- // MemInfo type.
- func ReadMemInfo() (*MemInfo, error) {
--
- ppKernel := C.getPpKernel()
- MemTotal := getTotalMem()
- MemFree := getFreeMem()
-diff --git a/vendor/github.com/containers/storage/pkg/system/path.go b/vendor/github.com/containers/storage/pkg/system/path.go
-index f634a6be6..ca076f2bc 100644
---- a/vendor/github.com/containers/storage/pkg/system/path.go
-+++ b/vendor/github.com/containers/storage/pkg/system/path.go
-@@ -17,5 +17,4 @@ func DefaultPathEnv(platform string) string {
- return ""
- }
- return defaultUnixPathEnv
--
- }
-diff --git a/vendor/github.com/containers/storage/pkg/system/rm.go b/vendor/github.com/containers/storage/pkg/system/rm.go
-index 60c7d8bd9..12243707a 100644
---- a/vendor/github.com/containers/storage/pkg/system/rm.go
-+++ b/vendor/github.com/containers/storage/pkg/system/rm.go
-@@ -28,11 +28,17 @@ func EnsureRemoveAll(dir string) error {
-
- // track retries
- exitOnErr := make(map[string]int)
-- maxRetry := 100
-+ maxRetry := 1000
-+
-+ // Attempt a simple remove all first, this avoids the more expensive
-+ // RecursiveUnmount call if not needed.
-+ if err := os.RemoveAll(dir); err == nil {
-+ return nil
-+ }
-
- // Attempt to unmount anything beneath this dir first
- if err := mount.RecursiveUnmount(dir); err != nil {
-- logrus.Debugf("RecusiveUnmount on %s failed: %v", dir, err)
-+ logrus.Debugf("RecursiveUnmount on %s failed: %v", dir, err)
- }
-
- for {
-@@ -88,6 +94,6 @@ func EnsureRemoveAll(dir string) error {
- return err
- }
- exitOnErr[pe.Path]++
-- time.Sleep(100 * time.Millisecond)
-+ time.Sleep(10 * time.Millisecond)
- }
- }
-diff --git a/vendor/github.com/containers/storage/pkg/system/stat_common.go b/vendor/github.com/containers/storage/pkg/system/stat_common.go
-index e965c54c2..2f44d18b6 100644
---- a/vendor/github.com/containers/storage/pkg/system/stat_common.go
-+++ b/vendor/github.com/containers/storage/pkg/system/stat_common.go
-@@ -3,8 +3,7 @@
-
- package system
-
--type platformStatT struct {
--}
-+type platformStatT struct{}
-
- // Flags return file flags if supported or zero otherwise
- func (s StatT) Flags() uint32 {
-diff --git a/vendor/github.com/containers/storage/pkg/system/stat_darwin.go b/vendor/github.com/containers/storage/pkg/system/stat_darwin.go
-index 715f05b93..57850a883 100644
---- a/vendor/github.com/containers/storage/pkg/system/stat_darwin.go
-+++ b/vendor/github.com/containers/storage/pkg/system/stat_darwin.go
-@@ -4,10 +4,12 @@ import "syscall"
-
- // fromStatT converts a syscall.Stat_t type to a system.Stat_t type
- func fromStatT(s *syscall.Stat_t) (*StatT, error) {
-- return &StatT{size: s.Size,
-+ return &StatT{
-+ size: s.Size,
- mode: uint32(s.Mode),
- uid: s.Uid,
- gid: s.Gid,
- rdev: uint64(s.Rdev),
-- mtim: s.Mtimespec}, nil
-+ mtim: s.Mtimespec,
-+ }, nil
- }
-diff --git a/vendor/github.com/containers/storage/pkg/system/stat_freebsd.go b/vendor/github.com/containers/storage/pkg/system/stat_freebsd.go
-index 9c510468f..4b95073a3 100644
---- a/vendor/github.com/containers/storage/pkg/system/stat_freebsd.go
-+++ b/vendor/github.com/containers/storage/pkg/system/stat_freebsd.go
-@@ -13,13 +13,15 @@ func (s StatT) Flags() uint32 {
-
- // fromStatT converts a syscall.Stat_t type to a system.Stat_t type
- func fromStatT(s *syscall.Stat_t) (*StatT, error) {
-- st := &StatT{size: s.Size,
-+ st := &StatT{
-+ size: s.Size,
- mode: uint32(s.Mode),
- uid: s.Uid,
- gid: s.Gid,
- rdev: uint64(s.Rdev),
- mtim: s.Mtimespec,
-- dev: s.Dev}
-+ dev: s.Dev,
-+ }
- st.flags = s.Flags
- st.dev = s.Dev
- return st, nil
-diff --git a/vendor/github.com/containers/storage/pkg/system/stat_linux.go b/vendor/github.com/containers/storage/pkg/system/stat_linux.go
-index e5dcba822..e3d13463f 100644
---- a/vendor/github.com/containers/storage/pkg/system/stat_linux.go
-+++ b/vendor/github.com/containers/storage/pkg/system/stat_linux.go
-@@ -4,13 +4,15 @@ import "syscall"
-
- // fromStatT converts a syscall.Stat_t type to a system.Stat_t type
- func fromStatT(s *syscall.Stat_t) (*StatT, error) {
-- return &StatT{size: s.Size,
-+ return &StatT{
-+ size: s.Size,
- mode: s.Mode,
- uid: s.Uid,
- gid: s.Gid,
- rdev: uint64(s.Rdev),
- mtim: s.Mtim,
-- dev: uint64(s.Dev)}, nil
-+ dev: uint64(s.Dev),
-+ }, nil
- }
-
- // FromStatT converts a syscall.Stat_t type to a system.Stat_t type
-diff --git a/vendor/github.com/containers/storage/pkg/system/stat_openbsd.go b/vendor/github.com/containers/storage/pkg/system/stat_openbsd.go
-index b607dea94..a413e1714 100644
---- a/vendor/github.com/containers/storage/pkg/system/stat_openbsd.go
-+++ b/vendor/github.com/containers/storage/pkg/system/stat_openbsd.go
-@@ -4,10 +4,12 @@ import "syscall"
-
- // fromStatT converts a syscall.Stat_t type to a system.Stat_t type
- func fromStatT(s *syscall.Stat_t) (*StatT, error) {
-- return &StatT{size: s.Size,
-+ return &StatT{
-+ size: s.Size,
- mode: uint32(s.Mode),
- uid: s.Uid,
- gid: s.Gid,
- rdev: uint64(s.Rdev),
-- mtim: s.Mtim}, nil
-+ mtim: s.Mtim,
-+ }, nil
- }
-diff --git a/vendor/github.com/containers/storage/pkg/system/stat_solaris.go b/vendor/github.com/containers/storage/pkg/system/stat_solaris.go
-index b607dea94..a413e1714 100644
---- a/vendor/github.com/containers/storage/pkg/system/stat_solaris.go
-+++ b/vendor/github.com/containers/storage/pkg/system/stat_solaris.go
-@@ -4,10 +4,12 @@ import "syscall"
-
- // fromStatT converts a syscall.Stat_t type to a system.Stat_t type
- func fromStatT(s *syscall.Stat_t) (*StatT, error) {
-- return &StatT{size: s.Size,
-+ return &StatT{
-+ size: s.Size,
- mode: uint32(s.Mode),
- uid: s.Uid,
- gid: s.Gid,
- rdev: uint64(s.Rdev),
-- mtim: s.Mtim}, nil
-+ mtim: s.Mtim,
-+ }, nil
- }
-diff --git a/vendor/github.com/containers/storage/pkg/system/stat_unix.go b/vendor/github.com/containers/storage/pkg/system/stat_unix.go
-index 47ae899f8..e552e91d7 100644
---- a/vendor/github.com/containers/storage/pkg/system/stat_unix.go
-+++ b/vendor/github.com/containers/storage/pkg/system/stat_unix.go
-@@ -7,6 +7,8 @@ import (
- "os"
- "strconv"
- "syscall"
-+
-+ "golang.org/x/sys/unix"
- )
-
- // StatT type contains status of a file. It contains metadata
-@@ -57,6 +59,10 @@ func (s StatT) Dev() uint64 {
- return s.dev
- }
-
-+func (s StatT) IsDir() bool {
-+ return (s.mode & unix.S_IFDIR) != 0
-+}
-+
- // Stat takes a path to a file and returns
- // a system.StatT type pertaining to that file.
- //
-diff --git a/vendor/github.com/containers/storage/pkg/system/stat_windows.go b/vendor/github.com/containers/storage/pkg/system/stat_windows.go
-index 81edaadbb..828be2088 100644
---- a/vendor/github.com/containers/storage/pkg/system/stat_windows.go
-+++ b/vendor/github.com/containers/storage/pkg/system/stat_windows.go
-@@ -48,6 +48,10 @@ func (s StatT) Dev() uint64 {
- return 0
- }
-
-+func (s StatT) IsDir() bool {
-+ return s.Mode().IsDir()
-+}
-+
- // Stat takes a path to a file and returns
- // a system.StatT type pertaining to that file.
- //
-@@ -65,5 +69,6 @@ func fromStatT(fi *os.FileInfo) (*StatT, error) {
- return &StatT{
- size: (*fi).Size(),
- mode: (*fi).Mode(),
-- mtim: (*fi).ModTime()}, nil
-+ mtim: (*fi).ModTime(),
-+ }, nil
- }
-diff --git a/vendor/github.com/containers/storage/pkg/unshare/unshare_darwin.go b/vendor/github.com/containers/storage/pkg/unshare/unshare_darwin.go
-index 86ac12eca..480e2fcb0 100644
---- a/vendor/github.com/containers/storage/pkg/unshare/unshare_darwin.go
-+++ b/vendor/github.com/containers/storage/pkg/unshare/unshare_darwin.go
-@@ -25,6 +25,11 @@ func GetRootlessUID() int {
- return os.Getuid()
- }
-
-+// GetRootlessGID returns the GID of the user in the parent userNS
-+func GetRootlessGID() int {
-+ return os.Getgid()
-+}
-+
- // RootlessEnv returns the environment settings for the rootless containers
- func RootlessEnv() []string {
- return append(os.Environ(), UsernsEnvName+"=")
-diff --git a/vendor/github.com/containers/storage/pkg/unshare/unshare_freebsd.go b/vendor/github.com/containers/storage/pkg/unshare/unshare_freebsd.go
-index f52760abb..7a44ca301 100644
---- a/vendor/github.com/containers/storage/pkg/unshare/unshare_freebsd.go
-+++ b/vendor/github.com/containers/storage/pkg/unshare/unshare_freebsd.go
-@@ -59,7 +59,7 @@ func (c *Cmd) Start() error {
- if err != nil {
- pidRead.Close()
- pidWrite.Close()
-- return fmt.Errorf("creating pid pipe: %w", err)
-+ return fmt.Errorf("creating continue read/write pipe: %w", err)
- }
- c.Env = append(c.Env, fmt.Sprintf("_Containers-continue-pipe=%d", len(c.ExtraFiles)+3))
- c.ExtraFiles = append(c.ExtraFiles, continueRead)
-diff --git a/vendor/github.com/containers/storage/pkg/unshare/unshare_linux.go b/vendor/github.com/containers/storage/pkg/unshare/unshare_linux.go
-index 81cd67762..a8dc1ba03 100644
---- a/vendor/github.com/containers/storage/pkg/unshare/unshare_linux.go
-+++ b/vendor/github.com/containers/storage/pkg/unshare/unshare_linux.go
-@@ -129,7 +129,7 @@ func (c *Cmd) Start() error {
- if err != nil {
- pidRead.Close()
- pidWrite.Close()
-- return fmt.Errorf("creating pid pipe: %w", err)
-+ return fmt.Errorf("creating continue read/write pipe: %w", err)
- }
- c.Env = append(c.Env, fmt.Sprintf("_Containers-continue-pipe=%d", len(c.ExtraFiles)+3))
- c.ExtraFiles = append(c.ExtraFiles, continueRead)
-@@ -441,6 +441,16 @@ func GetRootlessUID() int {
- return os.Getuid()
- }
-
-+// GetRootlessGID returns the GID of the user in the parent userNS
-+func GetRootlessGID() int {
-+ gidEnv := getenv("_CONTAINERS_ROOTLESS_GID")
-+ if gidEnv != "" {
-+ u, _ := strconv.Atoi(gidEnv)
-+ return u
-+ }
-+ return os.Getgid()
-+}
-+
- // RootlessEnv returns the environment settings for the rootless containers
- func RootlessEnv() []string {
- return append(os.Environ(), UsernsEnvName+"=done")
-diff --git a/vendor/github.com/containers/storage/pkg/unshare/unshare_unsupported.go b/vendor/github.com/containers/storage/pkg/unshare/unshare_unsupported.go
-index 66dd54596..e3160d0da 100644
---- a/vendor/github.com/containers/storage/pkg/unshare/unshare_unsupported.go
-+++ b/vendor/github.com/containers/storage/pkg/unshare/unshare_unsupported.go
-@@ -17,7 +17,7 @@ const (
-
- // IsRootless tells us if we are running in rootless mode
- func IsRootless() bool {
-- return false
-+ return os.Getuid() != 0
- }
-
- // GetRootlessUID returns the UID of the user in the parent userNS
-@@ -25,6 +25,11 @@ func GetRootlessUID() int {
- return os.Getuid()
- }
-
-+// GetRootlessGID returns the GID of the user in the parent userNS
-+func GetRootlessGID() int {
-+ return os.Getgid()
-+}
-+
- // RootlessEnv returns the environment settings for the rootless containers
- func RootlessEnv() []string {
- return append(os.Environ(), UsernsEnvName+"=")
-diff --git a/vendor/github.com/distribution/reference/.gitattributes b/vendor/github.com/distribution/reference/.gitattributes
-new file mode 100644
-index 000000000..d207b1802
---- /dev/null
-+++ b/vendor/github.com/distribution/reference/.gitattributes
-@@ -0,0 +1 @@
-+*.go text eol=lf
-diff --git a/vendor/github.com/distribution/reference/.gitignore b/vendor/github.com/distribution/reference/.gitignore
-new file mode 100644
-index 000000000..dc07e6b04
---- /dev/null
-+++ b/vendor/github.com/distribution/reference/.gitignore
-@@ -0,0 +1,2 @@
-+# Cover profiles
-+*.out
-diff --git a/vendor/github.com/distribution/reference/.golangci.yml b/vendor/github.com/distribution/reference/.golangci.yml
-new file mode 100644
-index 000000000..793f0bb7e
---- /dev/null
-+++ b/vendor/github.com/distribution/reference/.golangci.yml
-@@ -0,0 +1,18 @@
-+linters:
-+ enable:
-+ - bodyclose
-+ - dupword # Checks for duplicate words in the source code
-+ - gofmt
-+ - goimports
-+ - ineffassign
-+ - misspell
-+ - revive
-+ - staticcheck
-+ - unconvert
-+ - unused
-+ - vet
-+ disable:
-+ - errcheck
-+
-+run:
-+ deadline: 2m
-diff --git a/vendor/github.com/docker/distribution/digestset/BUILD.bazel b/vendor/github.com/distribution/reference/BUILD.bazel
-similarity index 56%
-rename from vendor/github.com/docker/distribution/digestset/BUILD.bazel
-rename to vendor/github.com/distribution/reference/BUILD.bazel
-index 1812760f1..2e6579fb0 100644
---- a/vendor/github.com/docker/distribution/digestset/BUILD.bazel
-+++ b/vendor/github.com/distribution/reference/BUILD.bazel
-@@ -2,9 +2,15 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library")
-
- go_library(
- name = "go_default_library",
-- srcs = ["set.go"],
-- importmap = "kubevirt.io/containerized-data-importer/vendor/github.com/docker/distribution/digestset",
-- importpath = "github.com/docker/distribution/digestset",
-+ srcs = [
-+ "helpers.go",
-+ "normalize.go",
-+ "reference.go",
-+ "regexp.go",
-+ "sort.go",
-+ ],
-+ importmap = "kubevirt.io/containerized-data-importer/vendor/github.com/distribution/reference",
-+ importpath = "github.com/distribution/reference",
- visibility = ["//visibility:public"],
- deps = ["//vendor/github.com/opencontainers/go-digest:go_default_library"],
- )
-diff --git a/vendor/github.com/distribution/reference/CODE-OF-CONDUCT.md b/vendor/github.com/distribution/reference/CODE-OF-CONDUCT.md
-new file mode 100644
-index 000000000..48f6704c6
---- /dev/null
-+++ b/vendor/github.com/distribution/reference/CODE-OF-CONDUCT.md
-@@ -0,0 +1,5 @@
-+# Code of Conduct
-+
-+We follow the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/main/code-of-conduct.md).
-+
-+Please contact the [CNCF Code of Conduct Committee](mailto:conduct@cncf.io) in order to report violations of the Code of Conduct.
-diff --git a/vendor/github.com/distribution/reference/CONTRIBUTING.md b/vendor/github.com/distribution/reference/CONTRIBUTING.md
-new file mode 100644
-index 000000000..ab2194665
---- /dev/null
-+++ b/vendor/github.com/distribution/reference/CONTRIBUTING.md
-@@ -0,0 +1,114 @@
-+# Contributing to the reference library
-+
-+## Community help
-+
-+If you need help, please ask in the [#distribution](https://cloud-native.slack.com/archives/C01GVR8SY4R) channel on CNCF community slack.
-+[Click here for an invite to the CNCF community slack](https://slack.cncf.io/)
-+
-+## Reporting security issues
-+
-+The maintainers take security seriously. If you discover a security
-+issue, please bring it to their attention right away!
-+
-+Please **DO NOT** file a public issue, instead send your report privately to
-+[cncf-distribution-security@lists.cncf.io](mailto:cncf-distribution-security@lists.cncf.io).
-+
-+## Reporting an issue properly
-+
-+By following these simple rules you will get better and faster feedback on your issue.
-+
-+ - search the bugtracker for an already reported issue
-+
-+### If you found an issue that describes your problem:
-+
-+ - please read other user comments first, and confirm this is the same issue: a given error condition might be indicative of different problems - you may also find a workaround in the comments
-+ - please refrain from adding "same thing here" or "+1" comments
-+ - you don't need to comment on an issue to get notified of updates: just hit the "subscribe" button
-+ - comment if you have some new, technical and relevant information to add to the case
-+ - __DO NOT__ comment on closed issues or merged PRs. If you think you have a related problem, open up a new issue and reference the PR or issue.
-+
-+### If you have not found an existing issue that describes your problem:
-+
-+ 1. create a new issue, with a succinct title that describes your issue:
-+ - bad title: "It doesn't work with my docker"
-+ - good title: "Private registry push fail: 400 error with E_INVALID_DIGEST"
-+ 2. copy the output of (or similar for other container tools):
-+ - `docker version`
-+ - `docker info`
-+ - `docker exec registry --version`
-+ 3. copy the command line you used to launch your Registry
-+ 4. restart your docker daemon in debug mode (add `-D` to the daemon launch arguments)
-+ 5. reproduce your problem and get your docker daemon logs showing the error
-+ 6. if relevant, copy your registry logs that show the error
-+ 7. provide any relevant detail about your specific Registry configuration (e.g., storage backend used)
-+ 8. indicate if you are using an enterprise proxy, Nginx, or anything else between you and your Registry
-+
-+## Contributing Code
-+
-+Contributions should be made via pull requests. Pull requests will be reviewed
-+by one or more maintainers or reviewers and merged when acceptable.
-+
-+You should follow the basic GitHub workflow:
-+
-+ 1. Use your own [fork](https://help.github.com/en/articles/about-forks)
-+ 2. Create your [change](https://github.com/containerd/project/blob/master/CONTRIBUTING.md#successful-changes)
-+ 3. Test your code
-+ 4. [Commit](https://github.com/containerd/project/blob/master/CONTRIBUTING.md#commit-messages) your work, always [sign your commits](https://github.com/containerd/project/blob/master/CONTRIBUTING.md#commit-messages)
-+ 5. Push your change to your fork and create a [Pull Request](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request-from-a-fork)
-+
-+Refer to [containerd's contribution guide](https://github.com/containerd/project/blob/master/CONTRIBUTING.md#successful-changes)
-+for tips on creating a successful contribution.
-+
-+## Sign your work
-+
-+The sign-off is a simple line at the end of the explanation for the patch. Your
-+signature certifies that you wrote the patch or otherwise have the right to pass
-+it on as an open-source patch. The rules are pretty simple: if you can certify
-+the below (from [developercertificate.org](http://developercertificate.org/)):
-+
-+```
-+Developer Certificate of Origin
-+Version 1.1
-+
-+Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
-+660 York Street, Suite 102,
-+San Francisco, CA 94110 USA
-+
-+Everyone is permitted to copy and distribute verbatim copies of this
-+license document, but changing it is not allowed.
-+
-+Developer's Certificate of Origin 1.1
-+
-+By making a contribution to this project, I certify that:
-+
-+(a) The contribution was created in whole or in part by me and I
-+ have the right to submit it under the open source license
-+ indicated in the file; or
-+
-+(b) The contribution is based upon previous work that, to the best
-+ of my knowledge, is covered under an appropriate open source
-+ license and I have the right under that license to submit that
-+ work with modifications, whether created in whole or in part
-+ by me, under the same open source license (unless I am
-+ permitted to submit under a different license), as indicated
-+ in the file; or
-+
-+(c) The contribution was provided directly to me by some other
-+ person who certified (a), (b) or (c) and I have not modified
-+ it.
-+
-+(d) I understand and agree that this project and the contribution
-+ are public and that a record of the contribution (including all
-+ personal information I submit with it, including my sign-off) is
-+ maintained indefinitely and may be redistributed consistent with
-+ this project or the open source license(s) involved.
-+```
-+
-+Then you just add a line to every git commit message:
-+
-+ Signed-off-by: Joe Smith
-+
-+Use your real name (sorry, no pseudonyms or anonymous contributions.)
-+
-+If you set your `user.name` and `user.email` git configs, you can sign your
-+commit automatically with `git commit -s`.
-diff --git a/vendor/github.com/distribution/reference/GOVERNANCE.md b/vendor/github.com/distribution/reference/GOVERNANCE.md
-new file mode 100644
-index 000000000..200045b05
---- /dev/null
-+++ b/vendor/github.com/distribution/reference/GOVERNANCE.md
-@@ -0,0 +1,144 @@
-+# distribution/reference Project Governance
-+
-+Distribution [Code of Conduct](./CODE-OF-CONDUCT.md) can be found here.
-+
-+For specific guidance on practical contribution steps please
-+see our [CONTRIBUTING.md](./CONTRIBUTING.md) guide.
-+
-+## Maintainership
-+
-+There are different types of maintainers, with different responsibilities, but
-+all maintainers have 3 things in common:
-+
-+1) They share responsibility in the project's success.
-+2) They have made a long-term, recurring time investment to improve the project.
-+3) They spend that time doing whatever needs to be done, not necessarily what
-+is the most interesting or fun.
-+
-+Maintainers are often under-appreciated, because their work is harder to appreciate.
-+It's easy to appreciate a really cool and technically advanced feature. It's harder
-+to appreciate the absence of bugs, the slow but steady improvement in stability,
-+or the reliability of a release process. But those things distinguish a good
-+project from a great one.
-+
-+## Reviewers
-+
-+A reviewer is a core role within the project.
-+They share in reviewing issues and pull requests and their LGTM counts towards the
-+required LGTM count to merge a code change into the project.
-+
-+Reviewers are part of the organization but do not have write access.
-+Becoming a reviewer is a core aspect in the journey to becoming a maintainer.
-+
-+## Adding maintainers
-+
-+Maintainers are first and foremost contributors that have shown they are
-+committed to the long term success of a project. Contributors wanting to become
-+maintainers are expected to be deeply involved in contributing code, pull
-+request review, and triage of issues in the project for more than three months.
-+
-+Just contributing does not make you a maintainer, it is about building trust
-+with the current maintainers of the project and being a person that they can
-+depend on and trust to make decisions in the best interest of the project.
-+
-+Periodically, the existing maintainers curate a list of contributors that have
-+shown regular activity on the project over the prior months. From this list,
-+maintainer candidates are selected and proposed in a pull request or a
-+maintainers communication channel.
-+
-+After a candidate has been announced to the maintainers, the existing
-+maintainers are given five business days to discuss the candidate, raise
-+objections and cast their vote. Votes may take place on the communication
-+channel or via pull request comment. Candidates must be approved by at least 66%
-+of the current maintainers by adding their vote on the mailing list. The
-+reviewer role has the same process but only requires 33% of current maintainers.
-+Only maintainers of the repository that the candidate is proposed for are
-+allowed to vote.
-+
-+If a candidate is approved, a maintainer will contact the candidate to invite
-+the candidate to open a pull request that adds the contributor to the
-+MAINTAINERS file. The voting process may take place inside a pull request if a
-+maintainer has already discussed the candidacy with the candidate and a
-+maintainer is willing to be a sponsor by opening the pull request. The candidate
-+becomes a maintainer once the pull request is merged.
-+
-+## Stepping down policy
-+
-+Life priorities, interests, and passions can change. If you're a maintainer but
-+feel you must remove yourself from the list, inform other maintainers that you
-+intend to step down, and if possible, help find someone to pick up your work.
-+At the very least, ensure your work can be continued where you left off.
-+
-+After you've informed other maintainers, create a pull request to remove
-+yourself from the MAINTAINERS file.
-+
-+## Removal of inactive maintainers
-+
-+Similar to the procedure for adding new maintainers, existing maintainers can
-+be removed from the list if they do not show significant activity on the
-+project. Periodically, the maintainers review the list of maintainers and their
-+activity over the last three months.
-+
-+If a maintainer has shown insufficient activity over this period, a neutral
-+person will contact the maintainer to ask if they want to continue being
-+a maintainer. If the maintainer decides to step down as a maintainer, they
-+open a pull request to be removed from the MAINTAINERS file.
-+
-+If the maintainer wants to remain a maintainer, but is unable to perform the
-+required duties they can be removed with a vote of at least 66% of the current
-+maintainers. In this case, maintainers should first propose the change to
-+maintainers via the maintainers communication channel, then open a pull request
-+for voting. The voting period is five business days. The voting pull request
-+should not come as a surpise to any maintainer and any discussion related to
-+performance must not be discussed on the pull request.
-+
-+## How are decisions made?
-+
-+Docker distribution is an open-source project with an open design philosophy.
-+This means that the repository is the source of truth for EVERY aspect of the
-+project, including its philosophy, design, road map, and APIs. *If it's part of
-+the project, it's in the repo. If it's in the repo, it's part of the project.*
-+
-+As a result, all decisions can be expressed as changes to the repository. An
-+implementation change is a change to the source code. An API change is a change
-+to the API specification. A philosophy change is a change to the philosophy
-+manifesto, and so on.
-+
-+All decisions affecting distribution, big and small, follow the same 3 steps:
-+
-+* Step 1: Open a pull request. Anyone can do this.
-+
-+* Step 2: Discuss the pull request. Anyone can do this.
-+
-+* Step 3: Merge or refuse the pull request. Who does this depends on the nature
-+of the pull request and which areas of the project it affects.
-+
-+## Helping contributors with the DCO
-+
-+The [DCO or `Sign your work`](./CONTRIBUTING.md#sign-your-work)
-+requirement is not intended as a roadblock or speed bump.
-+
-+Some contributors are not as familiar with `git`, or have used a web
-+based editor, and thus asking them to `git commit --amend -s` is not the best
-+way forward.
-+
-+In this case, maintainers can update the commits based on clause (c) of the DCO.
-+The most trivial way for a contributor to allow the maintainer to do this, is to
-+add a DCO signature in a pull requests's comment, or a maintainer can simply
-+note that the change is sufficiently trivial that it does not substantially
-+change the existing contribution - i.e., a spelling change.
-+
-+When you add someone's DCO, please also add your own to keep a log.
-+
-+## I'm a maintainer. Should I make pull requests too?
-+
-+Yes. Nobody should ever push to master directly. All changes should be
-+made through a pull request.
-+
-+## Conflict Resolution
-+
-+If you have a technical dispute that you feel has reached an impasse with a
-+subset of the community, any contributor may open an issue, specifically
-+calling for a resolution vote of the current core maintainers to resolve the
-+dispute. The same voting quorums required (2/3) for adding and removing
-+maintainers will apply to conflict resolution.
-diff --git a/vendor/github.com/distribution/reference/LICENSE b/vendor/github.com/distribution/reference/LICENSE
-new file mode 100644
-index 000000000..e06d20818
---- /dev/null
-+++ b/vendor/github.com/distribution/reference/LICENSE
-@@ -0,0 +1,202 @@
-+Apache License
-+ Version 2.0, January 2004
-+ http://www.apache.org/licenses/
-+
-+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-+
-+ 1. Definitions.
-+
-+ "License" shall mean the terms and conditions for use, reproduction,
-+ and distribution as defined by Sections 1 through 9 of this document.
-+
-+ "Licensor" shall mean the copyright owner or entity authorized by
-+ the copyright owner that is granting the License.
-+
-+ "Legal Entity" shall mean the union of the acting entity and all
-+ other entities that control, are controlled by, or are under common
-+ control with that entity. For the purposes of this definition,
-+ "control" means (i) the power, direct or indirect, to cause the
-+ direction or management of such entity, whether by contract or
-+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
-+ outstanding shares, or (iii) beneficial ownership of such entity.
-+
-+ "You" (or "Your") shall mean an individual or Legal Entity
-+ exercising permissions granted by this License.
-+
-+ "Source" form shall mean the preferred form for making modifications,
-+ including but not limited to software source code, documentation
-+ source, and configuration files.
-+
-+ "Object" form shall mean any form resulting from mechanical
-+ transformation or translation of a Source form, including but
-+ not limited to compiled object code, generated documentation,
-+ and conversions to other media types.
-+
-+ "Work" shall mean the work of authorship, whether in Source or
-+ Object form, made available under the License, as indicated by a
-+ copyright notice that is included in or attached to the work
-+ (an example is provided in the Appendix below).
-+
-+ "Derivative Works" shall mean any work, whether in Source or Object
-+ form, that is based on (or derived from) the Work and for which the
-+ editorial revisions, annotations, elaborations, or other modifications
-+ represent, as a whole, an original work of authorship. For the purposes
-+ of this License, Derivative Works shall not include works that remain
-+ separable from, or merely link (or bind by name) to the interfaces of,
-+ the Work and Derivative Works thereof.
-+
-+ "Contribution" shall mean any work of authorship, including
-+ the original version of the Work and any modifications or additions
-+ to that Work or Derivative Works thereof, that is intentionally
-+ submitted to Licensor for inclusion in the Work by the copyright owner
-+ or by an individual or Legal Entity authorized to submit on behalf of
-+ the copyright owner. For the purposes of this definition, "submitted"
-+ means any form of electronic, verbal, or written communication sent
-+ to the Licensor or its representatives, including but not limited to
-+ communication on electronic mailing lists, source code control systems,
-+ and issue tracking systems that are managed by, or on behalf of, the
-+ Licensor for the purpose of discussing and improving the Work, but
-+ excluding communication that is conspicuously marked or otherwise
-+ designated in writing by the copyright owner as "Not a Contribution."
-+
-+ "Contributor" shall mean Licensor and any individual or Legal Entity
-+ on behalf of whom a Contribution has been received by Licensor and
-+ subsequently incorporated within the Work.
-+
-+ 2. Grant of Copyright License. Subject to the terms and conditions of
-+ this License, each Contributor hereby grants to You a perpetual,
-+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-+ copyright license to reproduce, prepare Derivative Works of,
-+ publicly display, publicly perform, sublicense, and distribute the
-+ Work and such Derivative Works in Source or Object form.
-+
-+ 3. Grant of Patent License. Subject to the terms and conditions of
-+ this License, each Contributor hereby grants to You a perpetual,
-+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-+ (except as stated in this section) patent license to make, have made,
-+ use, offer to sell, sell, import, and otherwise transfer the Work,
-+ where such license applies only to those patent claims licensable
-+ by such Contributor that are necessarily infringed by their
-+ Contribution(s) alone or by combination of their Contribution(s)
-+ with the Work to which such Contribution(s) was submitted. If You
-+ institute patent litigation against any entity (including a
-+ cross-claim or counterclaim in a lawsuit) alleging that the Work
-+ or a Contribution incorporated within the Work constitutes direct
-+ or contributory patent infringement, then any patent licenses
-+ granted to You under this License for that Work shall terminate
-+ as of the date such litigation is filed.
-+
-+ 4. Redistribution. You may reproduce and distribute copies of the
-+ Work or Derivative Works thereof in any medium, with or without
-+ modifications, and in Source or Object form, provided that You
-+ meet the following conditions:
-+
-+ (a) You must give any other recipients of the Work or
-+ Derivative Works a copy of this License; and
-+
-+ (b) You must cause any modified files to carry prominent notices
-+ stating that You changed the files; and
-+
-+ (c) You must retain, in the Source form of any Derivative Works
-+ that You distribute, all copyright, patent, trademark, and
-+ attribution notices from the Source form of the Work,
-+ excluding those notices that do not pertain to any part of
-+ the Derivative Works; and
-+
-+ (d) If the Work includes a "NOTICE" text file as part of its
-+ distribution, then any Derivative Works that You distribute must
-+ include a readable copy of the attribution notices contained
-+ within such NOTICE file, excluding those notices that do not
-+ pertain to any part of the Derivative Works, in at least one
-+ of the following places: within a NOTICE text file distributed
-+ as part of the Derivative Works; within the Source form or
-+ documentation, if provided along with the Derivative Works; or,
-+ within a display generated by the Derivative Works, if and
-+ wherever such third-party notices normally appear. The contents
-+ of the NOTICE file are for informational purposes only and
-+ do not modify the License. You may add Your own attribution
-+ notices within Derivative Works that You distribute, alongside
-+ or as an addendum to the NOTICE text from the Work, provided
-+ that such additional attribution notices cannot be construed
-+ as modifying the License.
-+
-+ You may add Your own copyright statement to Your modifications and
-+ may provide additional or different license terms and conditions
-+ for use, reproduction, or distribution of Your modifications, or
-+ for any such Derivative Works as a whole, provided Your use,
-+ reproduction, and distribution of the Work otherwise complies with
-+ the conditions stated in this License.
-+
-+ 5. Submission of Contributions. Unless You explicitly state otherwise,
-+ any Contribution intentionally submitted for inclusion in the Work
-+ by You to the Licensor shall be under the terms and conditions of
-+ this License, without any additional terms or conditions.
-+ Notwithstanding the above, nothing herein shall supersede or modify
-+ the terms of any separate license agreement you may have executed
-+ with Licensor regarding such Contributions.
-+
-+ 6. Trademarks. This License does not grant permission to use the trade
-+ names, trademarks, service marks, or product names of the Licensor,
-+ except as required for reasonable and customary use in describing the
-+ origin of the Work and reproducing the content of the NOTICE file.
-+
-+ 7. Disclaimer of Warranty. Unless required by applicable law or
-+ agreed to in writing, Licensor provides the Work (and each
-+ Contributor provides its Contributions) on an "AS IS" BASIS,
-+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-+ implied, including, without limitation, any warranties or conditions
-+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-+ PARTICULAR PURPOSE. You are solely responsible for determining the
-+ appropriateness of using or redistributing the Work and assume any
-+ risks associated with Your exercise of permissions under this License.
-+
-+ 8. Limitation of Liability. In no event and under no legal theory,
-+ whether in tort (including negligence), contract, or otherwise,
-+ unless required by applicable law (such as deliberate and grossly
-+ negligent acts) or agreed to in writing, shall any Contributor be
-+ liable to You for damages, including any direct, indirect, special,
-+ incidental, or consequential damages of any character arising as a
-+ result of this License or out of the use or inability to use the
-+ Work (including but not limited to damages for loss of goodwill,
-+ work stoppage, computer failure or malfunction, or any and all
-+ other commercial damages or losses), even if such Contributor
-+ has been advised of the possibility of such damages.
-+
-+ 9. Accepting Warranty or Additional Liability. While redistributing
-+ the Work or Derivative Works thereof, You may choose to offer,
-+ and charge a fee for, acceptance of support, warranty, indemnity,
-+ or other liability obligations and/or rights consistent with this
-+ License. However, in accepting such obligations, You may act only
-+ on Your own behalf and on Your sole responsibility, not on behalf
-+ of any other Contributor, and only if You agree to indemnify,
-+ defend, and hold each Contributor harmless for any liability
-+ incurred by, or claims asserted against, such Contributor by reason
-+ of your accepting any such warranty or additional liability.
-+
-+ END OF TERMS AND CONDITIONS
-+
-+ APPENDIX: How to apply the Apache License to your work.
-+
-+ To apply the Apache License to your work, attach the following
-+ boilerplate notice, with the fields enclosed by brackets "{}"
-+ replaced with your own identifying information. (Don't include
-+ the brackets!) The text should be enclosed in the appropriate
-+ comment syntax for the file format. We also recommend that a
-+ file or class name and description of purpose be included on the
-+ same "printed page" as the copyright notice for easier
-+ identification within third-party archives.
-+
-+ Copyright {yyyy} {name of copyright owner}
-+
-+ Licensed under the Apache License, Version 2.0 (the "License");
-+ you may not use this file except in compliance with the License.
-+ You may obtain a copy of the License at
-+
-+ http://www.apache.org/licenses/LICENSE-2.0
-+
-+ Unless required by applicable law or agreed to in writing, software
-+ distributed under the License is distributed on an "AS IS" BASIS,
-+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-+ See the License for the specific language governing permissions and
-+ limitations under the License.
-+
-diff --git a/vendor/github.com/distribution/reference/MAINTAINERS b/vendor/github.com/distribution/reference/MAINTAINERS
-new file mode 100644
-index 000000000..9e0a60c8b
---- /dev/null
-+++ b/vendor/github.com/distribution/reference/MAINTAINERS
-@@ -0,0 +1,26 @@
-+# Distribution project maintainers & reviewers
-+#
-+# See GOVERNANCE.md for maintainer versus reviewer roles
-+#
-+# MAINTAINERS (cncf-distribution-maintainers@lists.cncf.io)
-+# GitHub ID, Name, Email address
-+"chrispat","Chris Patterson","chrispat@github.com"
-+"clarkbw","Bryan Clark","clarkbw@github.com"
-+"corhere","Cory Snider","csnider@mirantis.com"
-+"deleteriousEffect","Hayley Swimelar","hswimelar@gitlab.com"
-+"heww","He Weiwei","hweiwei@vmware.com"
-+"joaodrp","João Pereira","jpereira@gitlab.com"
-+"justincormack","Justin Cormack","justin.cormack@docker.com"
-+"squizzi","Kyle Squizzato","ksquizzato@mirantis.com"
-+"milosgajdos","Milos Gajdos","milosthegajdos@gmail.com"
-+"sargun","Sargun Dhillon","sargun@sargun.me"
-+"wy65701436","Wang Yan","wangyan@vmware.com"
-+"stevelasker","Steve Lasker","steve.lasker@microsoft.com"
-+#
-+# REVIEWERS
-+# GitHub ID, Name, Email address
-+"dmcgowan","Derek McGowan","derek@mcgstyle.net"
-+"stevvooe","Stephen Day","stevvooe@gmail.com"
-+"thajeztah","Sebastiaan van Stijn","github@gone.nl"
-+"DavidSpek", "David van der Spek", "vanderspek.david@gmail.com"
-+"Jamstah", "James Hewitt", "james.hewitt@gmail.com"
-diff --git a/vendor/github.com/distribution/reference/Makefile b/vendor/github.com/distribution/reference/Makefile
-new file mode 100644
-index 000000000..c78576b75
---- /dev/null
-+++ b/vendor/github.com/distribution/reference/Makefile
-@@ -0,0 +1,25 @@
-+# Project packages.
-+PACKAGES=$(shell go list ./...)
-+
-+# Flags passed to `go test`
-+BUILDFLAGS ?=
-+TESTFLAGS ?=
-+
-+.PHONY: all build test coverage
-+.DEFAULT: all
-+
-+all: build
-+
-+build: ## no binaries to build, so just check compilation suceeds
-+ go build ${BUILDFLAGS} ./...
-+
-+test: ## run tests
-+ go test ${TESTFLAGS} ./...
-+
-+coverage: ## generate coverprofiles from the unit tests
-+ rm -f coverage.txt
-+ go test ${TESTFLAGS} -cover -coverprofile=cover.out ./...
-+
-+.PHONY: help
-+help:
-+ @awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m\033[0m\n"} /^[a-zA-Z_\/%-]+:.*?##/ { printf " \033[36m%-27s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST)
-diff --git a/vendor/github.com/distribution/reference/README.md b/vendor/github.com/distribution/reference/README.md
-new file mode 100644
-index 000000000..e2531e49c
---- /dev/null
-+++ b/vendor/github.com/distribution/reference/README.md
-@@ -0,0 +1,30 @@
-+# Distribution reference
-+
-+Go library to handle references to container images.
-+
-+
-+
-+[![Build Status](https://github.com/distribution/reference/actions/workflows/test.yml/badge.svg?branch=main&event=push)](https://github.com/distribution/reference/actions?query=workflow%3ACI)
-+[![GoDoc](https://img.shields.io/badge/go.dev-reference-007d9c?logo=go&logoColor=white&style=flat-square)](https://pkg.go.dev/github.com/distribution/reference)
-+[![License: Apache-2.0](https://img.shields.io/badge/License-Apache--2.0-blue.svg)](LICENSE)
-+[![codecov](https://codecov.io/gh/distribution/reference/branch/main/graph/badge.svg)](https://codecov.io/gh/distribution/reference)
-+[![FOSSA Status](https://app.fossa.com/api/projects/custom%2B162%2Fgithub.com%2Fdistribution%2Freference.svg?type=shield)](https://app.fossa.com/projects/custom%2B162%2Fgithub.com%2Fdistribution%2Freference?ref=badge_shield)
-+
-+This repository contains a library for handling refrences to container images held in container registries. Please see [godoc](https://pkg.go.dev/github.com/distribution/reference) for details.
-+
-+## Contribution
-+
-+Please see [CONTRIBUTING.md](CONTRIBUTING.md) for details on how to contribute
-+issues, fixes, and patches to this project.
-+
-+## Communication
-+
-+For async communication and long running discussions please use issues and pull requests on the github repo.
-+This will be the best place to discuss design and implementation.
-+
-+For sync communication we have a #distribution channel in the [CNCF Slack](https://slack.cncf.io/)
-+that everyone is welcome to join and chat about development.
-+
-+## Licenses
-+
-+The distribution codebase is released under the [Apache 2.0 license](LICENSE).
-diff --git a/vendor/github.com/distribution/reference/SECURITY.md b/vendor/github.com/distribution/reference/SECURITY.md
-new file mode 100644
-index 000000000..aaf983c0f
---- /dev/null
-+++ b/vendor/github.com/distribution/reference/SECURITY.md
-@@ -0,0 +1,7 @@
-+# Security Policy
-+
-+## Reporting a Vulnerability
-+
-+The maintainers take security seriously. If you discover a security issue, please bring it to their attention right away!
-+
-+Please DO NOT file a public issue, instead send your report privately to cncf-distribution-security@lists.cncf.io.
-diff --git a/vendor/github.com/distribution/reference/distribution-logo.svg b/vendor/github.com/distribution/reference/distribution-logo.svg
-new file mode 100644
-index 000000000..cc9f4073b
---- /dev/null
-+++ b/vendor/github.com/distribution/reference/distribution-logo.svg
-@@ -0,0 +1 @@
-+
-\ No newline at end of file
-diff --git a/vendor/github.com/docker/distribution/reference/helpers.go b/vendor/github.com/distribution/reference/helpers.go
-similarity index 94%
-rename from vendor/github.com/docker/distribution/reference/helpers.go
-rename to vendor/github.com/distribution/reference/helpers.go
-index 978df7eab..d10c7ef83 100644
---- a/vendor/github.com/docker/distribution/reference/helpers.go
-+++ b/vendor/github.com/distribution/reference/helpers.go
-@@ -32,7 +32,7 @@ func FamiliarString(ref Reference) string {
- }
-
- // FamiliarMatch reports whether ref matches the specified pattern.
--// See https://godoc.org/path#Match for supported patterns.
-+// See [path.Match] for supported patterns.
- func FamiliarMatch(pattern string, ref Reference) (bool, error) {
- matched, err := path.Match(pattern, FamiliarString(ref))
- if namedRef, isNamed := ref.(Named); isNamed && !matched {
-diff --git a/vendor/github.com/docker/distribution/reference/normalize.go b/vendor/github.com/distribution/reference/normalize.go
-similarity index 52%
-rename from vendor/github.com/docker/distribution/reference/normalize.go
-rename to vendor/github.com/distribution/reference/normalize.go
-index b3dfb7a6d..a30229d01 100644
---- a/vendor/github.com/docker/distribution/reference/normalize.go
-+++ b/vendor/github.com/distribution/reference/normalize.go
-@@ -1,19 +1,42 @@
- package reference
-
- import (
-- "errors"
- "fmt"
- "strings"
-
-- "github.com/docker/distribution/digestset"
- "github.com/opencontainers/go-digest"
- )
-
--var (
-+const (
-+ // legacyDefaultDomain is the legacy domain for Docker Hub (which was
-+ // originally named "the Docker Index"). This domain is still used for
-+ // authentication and image search, which were part of the "v1" Docker
-+ // registry specification.
-+ //
-+ // This domain will continue to be supported, but there are plans to consolidate
-+ // legacy domains to new "canonical" domains. Once those domains are decided
-+ // on, we must update the normalization functions, but preserve compatibility
-+ // with existing installs, clients, and user configuration.
- legacyDefaultDomain = "index.docker.io"
-- defaultDomain = "docker.io"
-- officialRepoName = "library"
-- defaultTag = "latest"
-+
-+ // defaultDomain is the default domain used for images on Docker Hub.
-+ // It is used to normalize "familiar" names to canonical names, for example,
-+ // to convert "ubuntu" to "docker.io/library/ubuntu:latest".
-+ //
-+ // Note that actual domain of Docker Hub's registry is registry-1.docker.io.
-+ // This domain will continue to be supported, but there are plans to consolidate
-+ // legacy domains to new "canonical" domains. Once those domains are decided
-+ // on, we must update the normalization functions, but preserve compatibility
-+ // with existing installs, clients, and user configuration.
-+ defaultDomain = "docker.io"
-+
-+ // officialRepoPrefix is the namespace used for official images on Docker Hub.
-+ // It is used to normalize "familiar" names to canonical names, for example,
-+ // to convert "ubuntu" to "docker.io/library/ubuntu:latest".
-+ officialRepoPrefix = "library/"
-+
-+ // defaultTag is the default tag if no tag is provided.
-+ defaultTag = "latest"
- )
-
- // normalizedNamed represents a name which has been
-@@ -35,14 +58,14 @@ func ParseNormalizedNamed(s string) (Named, error) {
- return nil, fmt.Errorf("invalid repository name (%s), cannot specify 64-byte hexadecimal strings", s)
- }
- domain, remainder := splitDockerDomain(s)
-- var remoteName string
-+ var remote string
- if tagSep := strings.IndexRune(remainder, ':'); tagSep > -1 {
-- remoteName = remainder[:tagSep]
-+ remote = remainder[:tagSep]
- } else {
-- remoteName = remainder
-+ remote = remainder
- }
-- if strings.ToLower(remoteName) != remoteName {
-- return nil, errors.New("invalid reference format: repository name must be lowercase")
-+ if strings.ToLower(remote) != remote {
-+ return nil, fmt.Errorf("invalid reference format: repository name (%s) must be lowercase", remote)
- }
-
- ref, err := Parse(domain + "/" + remainder)
-@@ -56,41 +79,53 @@ func ParseNormalizedNamed(s string) (Named, error) {
- return named, nil
- }
-
--// ParseDockerRef normalizes the image reference following the docker convention. This is added
--// mainly for backward compatibility.
--// The reference returned can only be either tagged or digested. For reference contains both tag
--// and digest, the function returns digested reference, e.g. docker.io/library/busybox:latest@
--// sha256:7cc4b5aefd1d0cadf8d97d4350462ba51c694ebca145b08d7d41b41acc8db5aa will be returned as
--// docker.io/library/busybox@sha256:7cc4b5aefd1d0cadf8d97d4350462ba51c694ebca145b08d7d41b41acc8db5aa.
-+// namedTaggedDigested is a reference that has both a tag and a digest.
-+type namedTaggedDigested interface {
-+ NamedTagged
-+ Digested
-+}
-+
-+// ParseDockerRef normalizes the image reference following the docker convention,
-+// which allows for references to contain both a tag and a digest. It returns a
-+// reference that is either tagged or digested. For references containing both
-+// a tag and a digest, it returns a digested reference. For example, the following
-+// reference:
-+//
-+// docker.io/library/busybox:latest@sha256:7cc4b5aefd1d0cadf8d97d4350462ba51c694ebca145b08d7d41b41acc8db5aa
-+//
-+// Is returned as a digested reference (with the ":latest" tag removed):
-+//
-+// docker.io/library/busybox@sha256:7cc4b5aefd1d0cadf8d97d4350462ba51c694ebca145b08d7d41b41acc8db5aa
-+//
-+// References that are already "tagged" or "digested" are returned unmodified:
-+//
-+// // Already a digested reference
-+// docker.io/library/busybox@sha256:7cc4b5aefd1d0cadf8d97d4350462ba51c694ebca145b08d7d41b41acc8db5aa
-+//
-+// // Already a named reference
-+// docker.io/library/busybox:latest
- func ParseDockerRef(ref string) (Named, error) {
- named, err := ParseNormalizedNamed(ref)
- if err != nil {
- return nil, err
- }
-- if _, ok := named.(NamedTagged); ok {
-- if canonical, ok := named.(Canonical); ok {
-- // The reference is both tagged and digested, only
-- // return digested.
-- newNamed, err := WithName(canonical.Name())
-- if err != nil {
-- return nil, err
-- }
-- newCanonical, err := WithDigest(newNamed, canonical.Digest())
-- if err != nil {
-- return nil, err
-- }
-- return newCanonical, nil
-+ if canonical, ok := named.(namedTaggedDigested); ok {
-+ // The reference is both tagged and digested; only return digested.
-+ newNamed, err := WithName(canonical.Name())
-+ if err != nil {
-+ return nil, err
- }
-+ return WithDigest(newNamed, canonical.Digest())
- }
- return TagNameOnly(named), nil
- }
-
--// splitDockerDomain splits a repository name to domain and remotename string.
-+// splitDockerDomain splits a repository name to domain and remote-name.
- // If no valid domain is found, the default domain is used. Repository name
- // needs to be already validated before.
- func splitDockerDomain(name string) (domain, remainder string) {
- i := strings.IndexRune(name, '/')
-- if i == -1 || (!strings.ContainsAny(name[:i], ".:") && name[:i] != "localhost") {
-+ if i == -1 || (!strings.ContainsAny(name[:i], ".:") && name[:i] != localhost && strings.ToLower(name[:i]) == name[:i]) {
- domain, remainder = defaultDomain, name
- } else {
- domain, remainder = name[:i], name[i+1:]
-@@ -99,13 +134,13 @@ func splitDockerDomain(name string) (domain, remainder string) {
- domain = defaultDomain
- }
- if domain == defaultDomain && !strings.ContainsRune(remainder, '/') {
-- remainder = officialRepoName + "/" + remainder
-+ remainder = officialRepoPrefix + remainder
- }
- return
- }
-
- // familiarizeName returns a shortened version of the name familiar
--// to to the Docker UI. Familiar names have the default domain
-+// to the Docker UI. Familiar names have the default domain
- // "docker.io" and "library/" repository prefix removed.
- // For example, "docker.io/library/redis" will have the familiar
- // name "redis" and "docker.io/dmcgowan/myapp" will be "dmcgowan/myapp".
-@@ -119,8 +154,15 @@ func familiarizeName(named namedRepository) repository {
- if repo.domain == defaultDomain {
- repo.domain = ""
- // Handle official repositories which have the pattern "library/"
-- if split := strings.Split(repo.path, "/"); len(split) == 2 && split[0] == officialRepoName {
-- repo.path = split[1]
-+ if strings.HasPrefix(repo.path, officialRepoPrefix) {
-+ // TODO(thaJeztah): this check may be too strict, as it assumes the
-+ // "library/" namespace does not have nested namespaces. While this
-+ // is true (currently), technically it would be possible for Docker
-+ // Hub to use those (e.g. "library/distros/ubuntu:latest").
-+ // See https://github.com/distribution/distribution/pull/3769#issuecomment-1302031785.
-+ if remainder := strings.TrimPrefix(repo.path, officialRepoPrefix); !strings.ContainsRune(remainder, '/') {
-+ repo.path = remainder
-+ }
- }
- }
- return repo
-@@ -180,20 +222,3 @@ func ParseAnyReference(ref string) (Reference, error) {
-
- return ParseNormalizedNamed(ref)
- }
--
--// ParseAnyReferenceWithSet parses a reference string as a possible short
--// identifier to be matched in a digest set, a full digest, or familiar name.
--func ParseAnyReferenceWithSet(ref string, ds *digestset.Set) (Reference, error) {
-- if ok := anchoredShortIdentifierRegexp.MatchString(ref); ok {
-- dgst, err := ds.Lookup(ref)
-- if err == nil {
-- return digestReference(dgst), nil
-- }
-- } else {
-- if dgst, err := digest.Parse(ref); err == nil {
-- return digestReference(dgst), nil
-- }
-- }
--
-- return ParseNormalizedNamed(ref)
--}
-diff --git a/vendor/github.com/docker/distribution/reference/reference.go b/vendor/github.com/distribution/reference/reference.go
-similarity index 93%
-rename from vendor/github.com/docker/distribution/reference/reference.go
-rename to vendor/github.com/distribution/reference/reference.go
-index b7cd00b0d..e98c44daa 100644
---- a/vendor/github.com/docker/distribution/reference/reference.go
-+++ b/vendor/github.com/distribution/reference/reference.go
-@@ -4,11 +4,14 @@
- // Grammar
- //
- // reference := name [ ":" tag ] [ "@" digest ]
--// name := [domain '/'] path-component ['/' path-component]*
--// domain := domain-component ['.' domain-component]* [':' port-number]
-+// name := [domain '/'] remote-name
-+// domain := host [':' port-number]
-+// host := domain-name | IPv4address | \[ IPv6address \] ; rfc3986 appendix-A
-+// domain-name := domain-component ['.' domain-component]*
- // domain-component := /([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9])/
- // port-number := /[0-9]+/
- // path-component := alpha-numeric [separator alpha-numeric]*
-+// path (or "remote-name") := path-component ['/' path-component]*
- // alpha-numeric := /[a-z0-9]+/
- // separator := /[_.]|__|[-]*/
- //
-@@ -21,7 +24,6 @@
- // digest-hex := /[0-9a-fA-F]{32,}/ ; At least 128 bit digest value
- //
- // identifier := /[a-f0-9]{64}/
--// short-identifier := /[a-f0-9]{6,64}/
- package reference
-
- import (
-@@ -145,7 +147,7 @@ type namedRepository interface {
- Path() string
- }
-
--// Domain returns the domain part of the Named reference
-+// Domain returns the domain part of the [Named] reference.
- func Domain(named Named) string {
- if r, ok := named.(namedRepository); ok {
- return r.Domain()
-@@ -154,7 +156,7 @@ func Domain(named Named) string {
- return domain
- }
-
--// Path returns the name without the domain part of the Named reference
-+// Path returns the name without the domain part of the [Named] reference.
- func Path(named Named) (name string) {
- if r, ok := named.(namedRepository); ok {
- return r.Path()
-@@ -175,7 +177,8 @@ func splitDomain(name string) (string, string) {
- // hostname and name string. If no valid hostname is
- // found, the hostname is empty and the full value
- // is returned as name
--// DEPRECATED: Use Domain or Path
-+//
-+// Deprecated: Use [Domain] or [Path].
- func SplitHostname(named Named) (string, string) {
- if r, ok := named.(namedRepository); ok {
- return r.Domain(), r.Path()
-@@ -185,7 +188,6 @@ func SplitHostname(named Named) (string, string) {
-
- // Parse parses s and returns a syntactically valid Reference.
- // If an error was encountered it is returned, along with a nil Reference.
--// NOTE: Parse will not handle short digests.
- func Parse(s string) (Reference, error) {
- matches := ReferenceRegexp.FindStringSubmatch(s)
- if matches == nil {
-@@ -237,7 +239,6 @@ func Parse(s string) (Reference, error) {
- // the Named interface. The reference must have a name and be in the canonical
- // form, otherwise an error is returned.
- // If an error was encountered it is returned, along with a nil Reference.
--// NOTE: ParseNamed will not handle short digests.
- func ParseNamed(s string) (Named, error) {
- named, err := ParseNormalizedNamed(s)
- if err != nil {
-@@ -320,11 +321,13 @@ func WithDigest(name Named, digest digest.Digest) (Canonical, error) {
-
- // TrimNamed removes any tag or digest from the named reference.
- func TrimNamed(ref Named) Named {
-- domain, path := SplitHostname(ref)
-- return repository{
-- domain: domain,
-- path: path,
-+ repo := repository{}
-+ if r, ok := ref.(namedRepository); ok {
-+ repo.domain, repo.path = r.Domain(), r.Path()
-+ } else {
-+ repo.domain, repo.path = splitDomain(ref.Name())
- }
-+ return repo
- }
-
- func getBestReferenceType(ref reference) Reference {
-diff --git a/vendor/github.com/distribution/reference/regexp.go b/vendor/github.com/distribution/reference/regexp.go
-new file mode 100644
-index 000000000..65bc49d79
---- /dev/null
-+++ b/vendor/github.com/distribution/reference/regexp.go
-@@ -0,0 +1,163 @@
-+package reference
-+
-+import (
-+ "regexp"
-+ "strings"
-+)
-+
-+// DigestRegexp matches well-formed digests, including algorithm (e.g. "sha256:").
-+var DigestRegexp = regexp.MustCompile(digestPat)
-+
-+// DomainRegexp matches hostname or IP-addresses, optionally including a port
-+// number. It defines the structure of potential domain components that may be
-+// part of image names. This is purposely a subset of what is allowed by DNS to
-+// ensure backwards compatibility with Docker image names. It may be a subset of
-+// DNS domain name, an IPv4 address in decimal format, or an IPv6 address between
-+// square brackets (excluding zone identifiers as defined by [RFC 6874] or special
-+// addresses such as IPv4-Mapped).
-+//
-+// [RFC 6874]: https://www.rfc-editor.org/rfc/rfc6874.
-+var DomainRegexp = regexp.MustCompile(domainAndPort)
-+
-+// IdentifierRegexp is the format for string identifier used as a
-+// content addressable identifier using sha256. These identifiers
-+// are like digests without the algorithm, since sha256 is used.
-+var IdentifierRegexp = regexp.MustCompile(identifier)
-+
-+// NameRegexp is the format for the name component of references, including
-+// an optional domain and port, but without tag or digest suffix.
-+var NameRegexp = regexp.MustCompile(namePat)
-+
-+// ReferenceRegexp is the full supported format of a reference. The regexp
-+// is anchored and has capturing groups for name, tag, and digest
-+// components.
-+var ReferenceRegexp = regexp.MustCompile(referencePat)
-+
-+// TagRegexp matches valid tag names. From [docker/docker:graph/tags.go].
-+//
-+// [docker/docker:graph/tags.go]: https://github.com/moby/moby/blob/v1.6.0/graph/tags.go#L26-L28
-+var TagRegexp = regexp.MustCompile(tag)
-+
-+const (
-+ // alphanumeric defines the alphanumeric atom, typically a
-+ // component of names. This only allows lower case characters and digits.
-+ alphanumeric = `[a-z0-9]+`
-+
-+ // separator defines the separators allowed to be embedded in name
-+ // components. This allows one period, one or two underscore and multiple
-+ // dashes. Repeated dashes and underscores are intentionally treated
-+ // differently. In order to support valid hostnames as name components,
-+ // supporting repeated dash was added. Additionally double underscore is
-+ // now allowed as a separator to loosen the restriction for previously
-+ // supported names.
-+ separator = `(?:[._]|__|[-]+)`
-+
-+ // localhost is treated as a special value for domain-name. Any other
-+ // domain-name without a "." or a ":port" are considered a path component.
-+ localhost = `localhost`
-+
-+ // domainNameComponent restricts the registry domain component of a
-+ // repository name to start with a component as defined by DomainRegexp.
-+ domainNameComponent = `(?:[a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9])`
-+
-+ // optionalPort matches an optional port-number including the port separator
-+ // (e.g. ":80").
-+ optionalPort = `(?::[0-9]+)?`
-+
-+ // tag matches valid tag names. From docker/docker:graph/tags.go.
-+ tag = `[\w][\w.-]{0,127}`
-+
-+ // digestPat matches well-formed digests, including algorithm (e.g. "sha256:").
-+ //
-+ // TODO(thaJeztah): this should follow the same rules as https://pkg.go.dev/github.com/opencontainers/go-digest@v1.0.0#DigestRegexp
-+ // so that go-digest defines the canonical format. Note that the go-digest is
-+ // more relaxed:
-+ // - it allows multiple algorithms (e.g. "sha256+b64:") to allow
-+ // future expansion of supported algorithms.
-+ // - it allows the "" value to use urlsafe base64 encoding as defined
-+ // in [rfc4648, section 5].
-+ //
-+ // [rfc4648, section 5]: https://www.rfc-editor.org/rfc/rfc4648#section-5.
-+ digestPat = `[A-Za-z][A-Za-z0-9]*(?:[-_+.][A-Za-z][A-Za-z0-9]*)*[:][[:xdigit:]]{32,}`
-+
-+ // identifier is the format for a content addressable identifier using sha256.
-+ // These identifiers are like digests without the algorithm, since sha256 is used.
-+ identifier = `([a-f0-9]{64})`
-+
-+ // ipv6address are enclosed between square brackets and may be represented
-+ // in many ways, see rfc5952. Only IPv6 in compressed or uncompressed format
-+ // are allowed, IPv6 zone identifiers (rfc6874) or Special addresses such as
-+ // IPv4-Mapped are deliberately excluded.
-+ ipv6address = `\[(?:[a-fA-F0-9:]+)\]`
-+)
-+
-+var (
-+ // domainName defines the structure of potential domain components
-+ // that may be part of image names. This is purposely a subset of what is
-+ // allowed by DNS to ensure backwards compatibility with Docker image
-+ // names. This includes IPv4 addresses on decimal format.
-+ domainName = domainNameComponent + anyTimes(`\.`+domainNameComponent)
-+
-+ // host defines the structure of potential domains based on the URI
-+ // Host subcomponent on rfc3986. It may be a subset of DNS domain name,
-+ // or an IPv4 address in decimal format, or an IPv6 address between square
-+ // brackets (excluding zone identifiers as defined by rfc6874 or special
-+ // addresses such as IPv4-Mapped).
-+ host = `(?:` + domainName + `|` + ipv6address + `)`
-+
-+ // allowed by the URI Host subcomponent on rfc3986 to ensure backwards
-+ // compatibility with Docker image names.
-+ domainAndPort = host + optionalPort
-+
-+ // anchoredTagRegexp matches valid tag names, anchored at the start and
-+ // end of the matched string.
-+ anchoredTagRegexp = regexp.MustCompile(anchored(tag))
-+
-+ // anchoredDigestRegexp matches valid digests, anchored at the start and
-+ // end of the matched string.
-+ anchoredDigestRegexp = regexp.MustCompile(anchored(digestPat))
-+
-+ // pathComponent restricts path-components to start with an alphanumeric
-+ // character, with following parts able to be separated by a separator
-+ // (one period, one or two underscore and multiple dashes).
-+ pathComponent = alphanumeric + anyTimes(separator+alphanumeric)
-+
-+ // remoteName matches the remote-name of a repository. It consists of one
-+ // or more forward slash (/) delimited path-components:
-+ //
-+ // pathComponent[[/pathComponent] ...] // e.g., "library/ubuntu"
-+ remoteName = pathComponent + anyTimes(`/`+pathComponent)
-+ namePat = optional(domainAndPort+`/`) + remoteName
-+
-+ // anchoredNameRegexp is used to parse a name value, capturing the
-+ // domain and trailing components.
-+ anchoredNameRegexp = regexp.MustCompile(anchored(optional(capture(domainAndPort), `/`), capture(remoteName)))
-+
-+ referencePat = anchored(capture(namePat), optional(`:`, capture(tag)), optional(`@`, capture(digestPat)))
-+
-+ // anchoredIdentifierRegexp is used to check or match an
-+ // identifier value, anchored at start and end of string.
-+ anchoredIdentifierRegexp = regexp.MustCompile(anchored(identifier))
-+)
-+
-+// optional wraps the expression in a non-capturing group and makes the
-+// production optional.
-+func optional(res ...string) string {
-+ return `(?:` + strings.Join(res, "") + `)?`
-+}
-+
-+// anyTimes wraps the expression in a non-capturing group that can occur
-+// any number of times.
-+func anyTimes(res ...string) string {
-+ return `(?:` + strings.Join(res, "") + `)*`
-+}
-+
-+// capture wraps the expression in a capturing group.
-+func capture(res ...string) string {
-+ return `(` + strings.Join(res, "") + `)`
-+}
-+
-+// anchored anchors the regular expression by adding start and end delimiters.
-+func anchored(res ...string) string {
-+ return `^` + strings.Join(res, "") + `$`
-+}
-diff --git a/vendor/github.com/distribution/reference/sort.go b/vendor/github.com/distribution/reference/sort.go
-new file mode 100644
-index 000000000..416c37b07
---- /dev/null
-+++ b/vendor/github.com/distribution/reference/sort.go
-@@ -0,0 +1,75 @@
-+/*
-+ Copyright The containerd Authors.
-+
-+ Licensed under the Apache License, Version 2.0 (the "License");
-+ you may not use this file except in compliance with the License.
-+ You may obtain a copy of the License at
-+
-+ http://www.apache.org/licenses/LICENSE-2.0
-+
-+ Unless required by applicable law or agreed to in writing, software
-+ distributed under the License is distributed on an "AS IS" BASIS,
-+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-+ See the License for the specific language governing permissions and
-+ limitations under the License.
-+*/
-+
-+package reference
-+
-+import (
-+ "sort"
-+)
-+
-+// Sort sorts string references preferring higher information references.
-+//
-+// The precedence is as follows:
-+//
-+// 1. [Named] + [Tagged] + [Digested] (e.g., "docker.io/library/busybox:latest@sha256:")
-+// 2. [Named] + [Tagged] (e.g., "docker.io/library/busybox:latest")
-+// 3. [Named] + [Digested] (e.g., "docker.io/library/busybo@sha256:")
-+// 4. [Named] (e.g., "docker.io/library/busybox")
-+// 5. [Digested] (e.g., "docker.io@sha256:")
-+// 6. Parse error
-+func Sort(references []string) []string {
-+ var prefs []Reference
-+ var bad []string
-+
-+ for _, ref := range references {
-+ pref, err := ParseAnyReference(ref)
-+ if err != nil {
-+ bad = append(bad, ref)
-+ } else {
-+ prefs = append(prefs, pref)
-+ }
-+ }
-+ sort.Slice(prefs, func(a, b int) bool {
-+ ar := refRank(prefs[a])
-+ br := refRank(prefs[b])
-+ if ar == br {
-+ return prefs[a].String() < prefs[b].String()
-+ }
-+ return ar < br
-+ })
-+ sort.Strings(bad)
-+ var refs []string
-+ for _, pref := range prefs {
-+ refs = append(refs, pref.String())
-+ }
-+ return append(refs, bad...)
-+}
-+
-+func refRank(ref Reference) uint8 {
-+ if _, ok := ref.(Named); ok {
-+ if _, ok = ref.(Tagged); ok {
-+ if _, ok = ref.(Digested); ok {
-+ return 1
-+ }
-+ return 2
-+ }
-+ if _, ok = ref.(Digested); ok {
-+ return 3
-+ }
-+ return 4
-+ }
-+ return 5
-+}
-diff --git a/vendor/github.com/docker/distribution/digestset/set.go b/vendor/github.com/docker/distribution/digestset/set.go
-deleted file mode 100644
-index 71327dca7..000000000
---- a/vendor/github.com/docker/distribution/digestset/set.go
-+++ /dev/null
-@@ -1,247 +0,0 @@
--package digestset
--
--import (
-- "errors"
-- "sort"
-- "strings"
-- "sync"
--
-- digest "github.com/opencontainers/go-digest"
--)
--
--var (
-- // ErrDigestNotFound is used when a matching digest
-- // could not be found in a set.
-- ErrDigestNotFound = errors.New("digest not found")
--
-- // ErrDigestAmbiguous is used when multiple digests
-- // are found in a set. None of the matching digests
-- // should be considered valid matches.
-- ErrDigestAmbiguous = errors.New("ambiguous digest string")
--)
--
--// Set is used to hold a unique set of digests which
--// may be easily referenced by easily referenced by a string
--// representation of the digest as well as short representation.
--// The uniqueness of the short representation is based on other
--// digests in the set. If digests are omitted from this set,
--// collisions in a larger set may not be detected, therefore it
--// is important to always do short representation lookups on
--// the complete set of digests. To mitigate collisions, an
--// appropriately long short code should be used.
--type Set struct {
-- mutex sync.RWMutex
-- entries digestEntries
--}
--
--// NewSet creates an empty set of digests
--// which may have digests added.
--func NewSet() *Set {
-- return &Set{
-- entries: digestEntries{},
-- }
--}
--
--// checkShortMatch checks whether two digests match as either whole
--// values or short values. This function does not test equality,
--// rather whether the second value could match against the first
--// value.
--func checkShortMatch(alg digest.Algorithm, hex, shortAlg, shortHex string) bool {
-- if len(hex) == len(shortHex) {
-- if hex != shortHex {
-- return false
-- }
-- if len(shortAlg) > 0 && string(alg) != shortAlg {
-- return false
-- }
-- } else if !strings.HasPrefix(hex, shortHex) {
-- return false
-- } else if len(shortAlg) > 0 && string(alg) != shortAlg {
-- return false
-- }
-- return true
--}
--
--// Lookup looks for a digest matching the given string representation.
--// If no digests could be found ErrDigestNotFound will be returned
--// with an empty digest value. If multiple matches are found
--// ErrDigestAmbiguous will be returned with an empty digest value.
--func (dst *Set) Lookup(d string) (digest.Digest, error) {
-- dst.mutex.RLock()
-- defer dst.mutex.RUnlock()
-- if len(dst.entries) == 0 {
-- return "", ErrDigestNotFound
-- }
-- var (
-- searchFunc func(int) bool
-- alg digest.Algorithm
-- hex string
-- )
-- dgst, err := digest.Parse(d)
-- if err == digest.ErrDigestInvalidFormat {
-- hex = d
-- searchFunc = func(i int) bool {
-- return dst.entries[i].val >= d
-- }
-- } else {
-- hex = dgst.Hex()
-- alg = dgst.Algorithm()
-- searchFunc = func(i int) bool {
-- if dst.entries[i].val == hex {
-- return dst.entries[i].alg >= alg
-- }
-- return dst.entries[i].val >= hex
-- }
-- }
-- idx := sort.Search(len(dst.entries), searchFunc)
-- if idx == len(dst.entries) || !checkShortMatch(dst.entries[idx].alg, dst.entries[idx].val, string(alg), hex) {
-- return "", ErrDigestNotFound
-- }
-- if dst.entries[idx].alg == alg && dst.entries[idx].val == hex {
-- return dst.entries[idx].digest, nil
-- }
-- if idx+1 < len(dst.entries) && checkShortMatch(dst.entries[idx+1].alg, dst.entries[idx+1].val, string(alg), hex) {
-- return "", ErrDigestAmbiguous
-- }
--
-- return dst.entries[idx].digest, nil
--}
--
--// Add adds the given digest to the set. An error will be returned
--// if the given digest is invalid. If the digest already exists in the
--// set, this operation will be a no-op.
--func (dst *Set) Add(d digest.Digest) error {
-- if err := d.Validate(); err != nil {
-- return err
-- }
-- dst.mutex.Lock()
-- defer dst.mutex.Unlock()
-- entry := &digestEntry{alg: d.Algorithm(), val: d.Hex(), digest: d}
-- searchFunc := func(i int) bool {
-- if dst.entries[i].val == entry.val {
-- return dst.entries[i].alg >= entry.alg
-- }
-- return dst.entries[i].val >= entry.val
-- }
-- idx := sort.Search(len(dst.entries), searchFunc)
-- if idx == len(dst.entries) {
-- dst.entries = append(dst.entries, entry)
-- return nil
-- } else if dst.entries[idx].digest == d {
-- return nil
-- }
--
-- entries := append(dst.entries, nil)
-- copy(entries[idx+1:], entries[idx:len(entries)-1])
-- entries[idx] = entry
-- dst.entries = entries
-- return nil
--}
--
--// Remove removes the given digest from the set. An err will be
--// returned if the given digest is invalid. If the digest does
--// not exist in the set, this operation will be a no-op.
--func (dst *Set) Remove(d digest.Digest) error {
-- if err := d.Validate(); err != nil {
-- return err
-- }
-- dst.mutex.Lock()
-- defer dst.mutex.Unlock()
-- entry := &digestEntry{alg: d.Algorithm(), val: d.Hex(), digest: d}
-- searchFunc := func(i int) bool {
-- if dst.entries[i].val == entry.val {
-- return dst.entries[i].alg >= entry.alg
-- }
-- return dst.entries[i].val >= entry.val
-- }
-- idx := sort.Search(len(dst.entries), searchFunc)
-- // Not found if idx is after or value at idx is not digest
-- if idx == len(dst.entries) || dst.entries[idx].digest != d {
-- return nil
-- }
--
-- entries := dst.entries
-- copy(entries[idx:], entries[idx+1:])
-- entries = entries[:len(entries)-1]
-- dst.entries = entries
--
-- return nil
--}
--
--// All returns all the digests in the set
--func (dst *Set) All() []digest.Digest {
-- dst.mutex.RLock()
-- defer dst.mutex.RUnlock()
-- retValues := make([]digest.Digest, len(dst.entries))
-- for i := range dst.entries {
-- retValues[i] = dst.entries[i].digest
-- }
--
-- return retValues
--}
--
--// ShortCodeTable returns a map of Digest to unique short codes. The
--// length represents the minimum value, the maximum length may be the
--// entire value of digest if uniqueness cannot be achieved without the
--// full value. This function will attempt to make short codes as short
--// as possible to be unique.
--func ShortCodeTable(dst *Set, length int) map[digest.Digest]string {
-- dst.mutex.RLock()
-- defer dst.mutex.RUnlock()
-- m := make(map[digest.Digest]string, len(dst.entries))
-- l := length
-- resetIdx := 0
-- for i := 0; i < len(dst.entries); i++ {
-- var short string
-- extended := true
-- for extended {
-- extended = false
-- if len(dst.entries[i].val) <= l {
-- short = dst.entries[i].digest.String()
-- } else {
-- short = dst.entries[i].val[:l]
-- for j := i + 1; j < len(dst.entries); j++ {
-- if checkShortMatch(dst.entries[j].alg, dst.entries[j].val, "", short) {
-- if j > resetIdx {
-- resetIdx = j
-- }
-- extended = true
-- } else {
-- break
-- }
-- }
-- if extended {
-- l++
-- }
-- }
-- }
-- m[dst.entries[i].digest] = short
-- if i >= resetIdx {
-- l = length
-- }
-- }
-- return m
--}
--
--type digestEntry struct {
-- alg digest.Algorithm
-- val string
-- digest digest.Digest
--}
--
--type digestEntries []*digestEntry
--
--func (d digestEntries) Len() int {
-- return len(d)
--}
--
--func (d digestEntries) Less(i, j int) bool {
-- if d[i].val != d[j].val {
-- return d[i].val < d[j].val
-- }
-- return d[i].alg < d[j].alg
--}
--
--func (d digestEntries) Swap(i, j int) {
-- d[i], d[j] = d[j], d[i]
--}
-diff --git a/vendor/github.com/docker/distribution/reference/BUILD.bazel b/vendor/github.com/docker/distribution/reference/BUILD.bazel
-deleted file mode 100644
-index af2a79c96..000000000
---- a/vendor/github.com/docker/distribution/reference/BUILD.bazel
-+++ /dev/null
-@@ -1,18 +0,0 @@
--load("@io_bazel_rules_go//go:def.bzl", "go_library")
--
--go_library(
-- name = "go_default_library",
-- srcs = [
-- "helpers.go",
-- "normalize.go",
-- "reference.go",
-- "regexp.go",
-- ],
-- importmap = "kubevirt.io/containerized-data-importer/vendor/github.com/docker/distribution/reference",
-- importpath = "github.com/docker/distribution/reference",
-- visibility = ["//visibility:public"],
-- deps = [
-- "//vendor/github.com/docker/distribution/digestset:go_default_library",
-- "//vendor/github.com/opencontainers/go-digest:go_default_library",
-- ],
--)
-diff --git a/vendor/github.com/docker/distribution/reference/regexp.go b/vendor/github.com/docker/distribution/reference/regexp.go
-deleted file mode 100644
-index 786034932..000000000
---- a/vendor/github.com/docker/distribution/reference/regexp.go
-+++ /dev/null
-@@ -1,143 +0,0 @@
--package reference
--
--import "regexp"
--
--var (
-- // alphaNumericRegexp defines the alpha numeric atom, typically a
-- // component of names. This only allows lower case characters and digits.
-- alphaNumericRegexp = match(`[a-z0-9]+`)
--
-- // separatorRegexp defines the separators allowed to be embedded in name
-- // components. This allow one period, one or two underscore and multiple
-- // dashes.
-- separatorRegexp = match(`(?:[._]|__|[-]*)`)
--
-- // nameComponentRegexp restricts registry path component names to start
-- // with at least one letter or number, with following parts able to be
-- // separated by one period, one or two underscore and multiple dashes.
-- nameComponentRegexp = expression(
-- alphaNumericRegexp,
-- optional(repeated(separatorRegexp, alphaNumericRegexp)))
--
-- // domainComponentRegexp restricts the registry domain component of a
-- // repository name to start with a component as defined by DomainRegexp
-- // and followed by an optional port.
-- domainComponentRegexp = match(`(?:[a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9])`)
--
-- // DomainRegexp defines the structure of potential domain components
-- // that may be part of image names. This is purposely a subset of what is
-- // allowed by DNS to ensure backwards compatibility with Docker image
-- // names.
-- DomainRegexp = expression(
-- domainComponentRegexp,
-- optional(repeated(literal(`.`), domainComponentRegexp)),
-- optional(literal(`:`), match(`[0-9]+`)))
--
-- // TagRegexp matches valid tag names. From docker/docker:graph/tags.go.
-- TagRegexp = match(`[\w][\w.-]{0,127}`)
--
-- // anchoredTagRegexp matches valid tag names, anchored at the start and
-- // end of the matched string.
-- anchoredTagRegexp = anchored(TagRegexp)
--
-- // DigestRegexp matches valid digests.
-- DigestRegexp = match(`[A-Za-z][A-Za-z0-9]*(?:[-_+.][A-Za-z][A-Za-z0-9]*)*[:][[:xdigit:]]{32,}`)
--
-- // anchoredDigestRegexp matches valid digests, anchored at the start and
-- // end of the matched string.
-- anchoredDigestRegexp = anchored(DigestRegexp)
--
-- // NameRegexp is the format for the name component of references. The
-- // regexp has capturing groups for the domain and name part omitting
-- // the separating forward slash from either.
-- NameRegexp = expression(
-- optional(DomainRegexp, literal(`/`)),
-- nameComponentRegexp,
-- optional(repeated(literal(`/`), nameComponentRegexp)))
--
-- // anchoredNameRegexp is used to parse a name value, capturing the
-- // domain and trailing components.
-- anchoredNameRegexp = anchored(
-- optional(capture(DomainRegexp), literal(`/`)),
-- capture(nameComponentRegexp,
-- optional(repeated(literal(`/`), nameComponentRegexp))))
--
-- // ReferenceRegexp is the full supported format of a reference. The regexp
-- // is anchored and has capturing groups for name, tag, and digest
-- // components.
-- ReferenceRegexp = anchored(capture(NameRegexp),
-- optional(literal(":"), capture(TagRegexp)),
-- optional(literal("@"), capture(DigestRegexp)))
--
-- // IdentifierRegexp is the format for string identifier used as a
-- // content addressable identifier using sha256. These identifiers
-- // are like digests without the algorithm, since sha256 is used.
-- IdentifierRegexp = match(`([a-f0-9]{64})`)
--
-- // ShortIdentifierRegexp is the format used to represent a prefix
-- // of an identifier. A prefix may be used to match a sha256 identifier
-- // within a list of trusted identifiers.
-- ShortIdentifierRegexp = match(`([a-f0-9]{6,64})`)
--
-- // anchoredIdentifierRegexp is used to check or match an
-- // identifier value, anchored at start and end of string.
-- anchoredIdentifierRegexp = anchored(IdentifierRegexp)
--
-- // anchoredShortIdentifierRegexp is used to check if a value
-- // is a possible identifier prefix, anchored at start and end
-- // of string.
-- anchoredShortIdentifierRegexp = anchored(ShortIdentifierRegexp)
--)
--
--// match compiles the string to a regular expression.
--var match = regexp.MustCompile
--
--// literal compiles s into a literal regular expression, escaping any regexp
--// reserved characters.
--func literal(s string) *regexp.Regexp {
-- re := match(regexp.QuoteMeta(s))
--
-- if _, complete := re.LiteralPrefix(); !complete {
-- panic("must be a literal")
-- }
--
-- return re
--}
--
--// expression defines a full expression, where each regular expression must
--// follow the previous.
--func expression(res ...*regexp.Regexp) *regexp.Regexp {
-- var s string
-- for _, re := range res {
-- s += re.String()
-- }
--
-- return match(s)
--}
--
--// optional wraps the expression in a non-capturing group and makes the
--// production optional.
--func optional(res ...*regexp.Regexp) *regexp.Regexp {
-- return match(group(expression(res...)).String() + `?`)
--}
--
--// repeated wraps the regexp in a non-capturing group to get one or more
--// matches.
--func repeated(res ...*regexp.Regexp) *regexp.Regexp {
-- return match(group(expression(res...)).String() + `+`)
--}
--
--// group wraps the regexp in a non-capturing group.
--func group(res ...*regexp.Regexp) *regexp.Regexp {
-- return match(`(?:` + expression(res...).String() + `)`)
--}
--
--// capture wraps the expression in a capturing group.
--func capture(res ...*regexp.Regexp) *regexp.Regexp {
-- return match(`(` + expression(res...).String() + `)`)
--}
--
--// anchored anchors the regular expression by adding start and end delimiters.
--func anchored(res ...*regexp.Regexp) *regexp.Regexp {
-- return match(`^` + expression(res...).String() + `$`)
--}
-diff --git a/vendor/github.com/docker/distribution/registry/api/v2/BUILD.bazel b/vendor/github.com/docker/distribution/registry/api/v2/BUILD.bazel
-index 019e493e3..6311c26c5 100644
---- a/vendor/github.com/docker/distribution/registry/api/v2/BUILD.bazel
-+++ b/vendor/github.com/docker/distribution/registry/api/v2/BUILD.bazel
-@@ -14,7 +14,7 @@ go_library(
- importpath = "github.com/docker/distribution/registry/api/v2",
- visibility = ["//visibility:public"],
- deps = [
-- "//vendor/github.com/docker/distribution/reference:go_default_library",
-+ "//vendor/github.com/distribution/reference:go_default_library",
- "//vendor/github.com/docker/distribution/registry/api/errcode:go_default_library",
- "//vendor/github.com/gorilla/mux:go_default_library",
- "//vendor/github.com/opencontainers/go-digest:go_default_library",
-diff --git a/vendor/github.com/docker/distribution/registry/api/v2/descriptors.go b/vendor/github.com/docker/distribution/registry/api/v2/descriptors.go
-index c3bf90f71..7fceefbc6 100644
---- a/vendor/github.com/docker/distribution/registry/api/v2/descriptors.go
-+++ b/vendor/github.com/docker/distribution/registry/api/v2/descriptors.go
-@@ -4,7 +4,7 @@ import (
- "net/http"
- "regexp"
-
-- "github.com/docker/distribution/reference"
-+ "github.com/distribution/reference"
- "github.com/docker/distribution/registry/api/errcode"
- "github.com/opencontainers/go-digest"
- )
-diff --git a/vendor/github.com/docker/distribution/registry/api/v2/urls.go b/vendor/github.com/docker/distribution/registry/api/v2/urls.go
-index 3c3ec9893..ab6406335 100644
---- a/vendor/github.com/docker/distribution/registry/api/v2/urls.go
-+++ b/vendor/github.com/docker/distribution/registry/api/v2/urls.go
-@@ -6,7 +6,7 @@ import (
- "net/url"
- "strings"
-
-- "github.com/docker/distribution/reference"
-+ "github.com/distribution/reference"
- "github.com/gorilla/mux"
- )
-
-diff --git a/vendor/github.com/docker/docker-credential-helpers/client/BUILD.bazel b/vendor/github.com/docker/docker-credential-helpers/client/BUILD.bazel
-index cf89efc6d..3c4a7a58c 100644
---- a/vendor/github.com/docker/docker-credential-helpers/client/BUILD.bazel
-+++ b/vendor/github.com/docker/docker-credential-helpers/client/BUILD.bazel
-@@ -9,8 +9,5 @@ go_library(
- importmap = "kubevirt.io/containerized-data-importer/vendor/github.com/docker/docker-credential-helpers/client",
- importpath = "github.com/docker/docker-credential-helpers/client",
- visibility = ["//visibility:public"],
-- deps = [
-- "//vendor/github.com/docker/docker-credential-helpers/credentials:go_default_library",
-- "//vendor/golang.org/x/sys/execabs:go_default_library",
-- ],
-+ deps = ["//vendor/github.com/docker/docker-credential-helpers/credentials:go_default_library"],
- )
-diff --git a/vendor/github.com/docker/docker-credential-helpers/client/client.go b/vendor/github.com/docker/docker-credential-helpers/client/client.go
-index d1d0434cb..7ca5ab722 100644
---- a/vendor/github.com/docker/docker-credential-helpers/client/client.go
-+++ b/vendor/github.com/docker/docker-credential-helpers/client/client.go
-@@ -16,17 +16,15 @@ func isValidCredsMessage(msg string) error {
- if credentials.IsCredentialsMissingServerURLMessage(msg) {
- return credentials.NewErrCredentialsMissingServerURL()
- }
--
- if credentials.IsCredentialsMissingUsernameMessage(msg) {
- return credentials.NewErrCredentialsMissingUsername()
- }
--
- return nil
- }
-
- // Store uses an external program to save credentials.
- func Store(program ProgramFunc, creds *credentials.Credentials) error {
-- cmd := program("store")
-+ cmd := program(credentials.ActionStore)
-
- buffer := new(bytes.Buffer)
- if err := json.NewEncoder(buffer).Encode(creds); err != nil {
-@@ -36,13 +34,10 @@ func Store(program ProgramFunc, creds *credentials.Credentials) error {
-
- out, err := cmd.Output()
- if err != nil {
-- t := strings.TrimSpace(string(out))
--
-- if isValidErr := isValidCredsMessage(t); isValidErr != nil {
-+ if isValidErr := isValidCredsMessage(string(out)); isValidErr != nil {
- err = isValidErr
- }
--
-- return fmt.Errorf("error storing credentials - err: %v, out: `%s`", err, t)
-+ return fmt.Errorf("error storing credentials - err: %v, out: `%s`", err, strings.TrimSpace(string(out)))
- }
-
- return nil
-@@ -50,22 +45,20 @@ func Store(program ProgramFunc, creds *credentials.Credentials) error {
-
- // Get executes an external program to get the credentials from a native store.
- func Get(program ProgramFunc, serverURL string) (*credentials.Credentials, error) {
-- cmd := program("get")
-+ cmd := program(credentials.ActionGet)
- cmd.Input(strings.NewReader(serverURL))
-
- out, err := cmd.Output()
- if err != nil {
-- t := strings.TrimSpace(string(out))
--
-- if credentials.IsErrCredentialsNotFoundMessage(t) {
-+ if credentials.IsErrCredentialsNotFoundMessage(string(out)) {
- return nil, credentials.NewErrCredentialsNotFound()
- }
-
-- if isValidErr := isValidCredsMessage(t); isValidErr != nil {
-+ if isValidErr := isValidCredsMessage(string(out)); isValidErr != nil {
- err = isValidErr
- }
-
-- return nil, fmt.Errorf("error getting credentials - err: %v, out: `%s`", err, t)
-+ return nil, fmt.Errorf("error getting credentials - err: %v, out: `%s`", err, strings.TrimSpace(string(out)))
- }
-
- resp := &credentials.Credentials{
-@@ -81,7 +74,7 @@ func Get(program ProgramFunc, serverURL string) (*credentials.Credentials, error
-
- // Erase executes a program to remove the server credentials from the native store.
- func Erase(program ProgramFunc, serverURL string) error {
-- cmd := program("erase")
-+ cmd := program(credentials.ActionErase)
- cmd.Input(strings.NewReader(serverURL))
- out, err := cmd.Output()
- if err != nil {
-@@ -99,7 +92,7 @@ func Erase(program ProgramFunc, serverURL string) error {
-
- // List executes a program to list server credentials in the native store.
- func List(program ProgramFunc) (map[string]string, error) {
-- cmd := program("list")
-+ cmd := program(credentials.ActionList)
- cmd.Input(strings.NewReader("unused"))
- out, err := cmd.Output()
- if err != nil {
-diff --git a/vendor/github.com/docker/docker-credential-helpers/client/command.go b/vendor/github.com/docker/docker-credential-helpers/client/command.go
-index 0183c0639..1936234be 100644
---- a/vendor/github.com/docker/docker-credential-helpers/client/command.go
-+++ b/vendor/github.com/docker/docker-credential-helpers/client/command.go
-@@ -1,11 +1,9 @@
- package client
-
- import (
-- "fmt"
- "io"
- "os"
--
-- exec "golang.org/x/sys/execabs"
-+ "os/exec"
- )
-
- // Program is an interface to execute external programs.
-@@ -31,27 +29,26 @@ func NewShellProgramFuncWithEnv(name string, env *map[string]string) ProgramFunc
-
- func createProgramCmdRedirectErr(commandName string, args []string, env *map[string]string) *exec.Cmd {
- programCmd := exec.Command(commandName, args...)
-- programCmd.Env = os.Environ()
- if env != nil {
- for k, v := range *env {
-- programCmd.Env = append(programCmd.Env, fmt.Sprintf("%s=%s", k, v))
-+ programCmd.Env = append(programCmd.Environ(), k+"="+v)
- }
- }
- programCmd.Stderr = os.Stderr
- return programCmd
- }
-
--// Shell invokes shell commands to talk with a remote credentials helper.
-+// Shell invokes shell commands to talk with a remote credentials-helper.
- type Shell struct {
- cmd *exec.Cmd
- }
-
--// Output returns responses from the remote credentials helper.
-+// Output returns responses from the remote credentials-helper.
- func (s *Shell) Output() ([]byte, error) {
- return s.cmd.Output()
- }
-
--// Input sets the input to send to a remote credentials helper.
-+// Input sets the input to send to a remote credentials-helper.
- func (s *Shell) Input(in io.Reader) {
- s.cmd.Stdin = in
- }
-diff --git a/vendor/github.com/docker/docker-credential-helpers/credentials/credentials.go b/vendor/github.com/docker/docker-credential-helpers/credentials/credentials.go
-index 91d9d4bba..eac551884 100644
---- a/vendor/github.com/docker/docker-credential-helpers/credentials/credentials.go
-+++ b/vendor/github.com/docker/docker-credential-helpers/credentials/credentials.go
-@@ -10,6 +10,20 @@ import (
- "strings"
- )
-
-+// Action defines the name of an action (sub-command) supported by a
-+// credential-helper binary. It is an alias for "string", and mostly
-+// for convenience.
-+type Action = string
-+
-+// List of actions (sub-commands) supported by credential-helper binaries.
-+const (
-+ ActionStore Action = "store"
-+ ActionGet Action = "get"
-+ ActionErase Action = "erase"
-+ ActionList Action = "list"
-+ ActionVersion Action = "version"
-+)
-+
- // Credentials holds the information shared between docker and the credentials store.
- type Credentials struct {
- ServerURL string
-@@ -43,42 +57,52 @@ func SetCredsLabel(label string) {
- CredsLabel = label
- }
-
--// Serve initializes the credentials helper and parses the action argument.
-+// Serve initializes the credentials-helper and parses the action argument.
- // This function is designed to be called from a command line interface.
- // It uses os.Args[1] as the key for the action.
- // It uses os.Stdin as input and os.Stdout as output.
- // This function terminates the program with os.Exit(1) if there is an error.
- func Serve(helper Helper) {
-- var err error
- if len(os.Args) != 2 {
-- err = fmt.Errorf("Usage: %s ", os.Args[0])
-+ _, _ = fmt.Fprintln(os.Stdout, usage())
-+ os.Exit(1)
- }
-
-- if err == nil {
-- err = HandleCommand(helper, os.Args[1], os.Stdin, os.Stdout)
-+ switch os.Args[1] {
-+ case "--version", "-v":
-+ _ = PrintVersion(os.Stdout)
-+ os.Exit(0)
-+ case "--help", "-h":
-+ _, _ = fmt.Fprintln(os.Stdout, usage())
-+ os.Exit(0)
- }
-
-- if err != nil {
-- fmt.Fprintf(os.Stdout, "%v\n", err)
-+ if err := HandleCommand(helper, os.Args[1], os.Stdin, os.Stdout); err != nil {
-+ _, _ = fmt.Fprintln(os.Stdout, err)
- os.Exit(1)
- }
- }
-
--// HandleCommand uses a helper and a key to run a credential action.
--func HandleCommand(helper Helper, key string, in io.Reader, out io.Writer) error {
-- switch key {
-- case "store":
-+func usage() string {
-+ return fmt.Sprintf("Usage: %s ", Name)
-+}
-+
-+// HandleCommand runs a helper to execute a credential action.
-+func HandleCommand(helper Helper, action Action, in io.Reader, out io.Writer) error {
-+ switch action {
-+ case ActionStore:
- return Store(helper, in)
-- case "get":
-+ case ActionGet:
- return Get(helper, in, out)
-- case "erase":
-+ case ActionErase:
- return Erase(helper, in)
-- case "list":
-+ case ActionList:
- return List(helper, out)
-- case "version":
-+ case ActionVersion:
- return PrintVersion(out)
-+ default:
-+ return fmt.Errorf("%s: unknown action: %s", Name, action)
- }
-- return fmt.Errorf("Unknown credential action `%s`", key)
- }
-
- // Store uses a helper and an input reader to save credentials.
-@@ -132,18 +156,17 @@ func Get(helper Helper, reader io.Reader, writer io.Writer) error {
- return err
- }
-
-- resp := Credentials{
-+ buffer.Reset()
-+ err = json.NewEncoder(buffer).Encode(Credentials{
- ServerURL: serverURL,
- Username: username,
- Secret: secret,
-- }
--
-- buffer.Reset()
-- if err := json.NewEncoder(buffer).Encode(resp); err != nil {
-+ })
-+ if err != nil {
- return err
- }
-
-- fmt.Fprint(writer, buffer.String())
-+ _, _ = fmt.Fprint(writer, buffer.String())
- return nil
- }
-
-@@ -181,6 +204,6 @@ func List(helper Helper, writer io.Writer) error {
-
- // PrintVersion outputs the current version.
- func PrintVersion(writer io.Writer) error {
-- fmt.Fprintf(writer, "%s (%s) %s\n", Name, Package, Version)
-+ _, _ = fmt.Fprintf(writer, "%s (%s) %s\n", Name, Package, Version)
- return nil
- }
-diff --git a/vendor/github.com/docker/docker-credential-helpers/credentials/error.go b/vendor/github.com/docker/docker-credential-helpers/credentials/error.go
-index fe6a5aef4..2283d5a44 100644
---- a/vendor/github.com/docker/docker-credential-helpers/credentials/error.go
-+++ b/vendor/github.com/docker/docker-credential-helpers/credentials/error.go
-@@ -1,5 +1,10 @@
- package credentials
-
-+import (
-+ "errors"
-+ "strings"
-+)
-+
- const (
- // ErrCredentialsNotFound standardizes the not found error, so every helper returns
- // the same message and docker can handle it properly.
-@@ -21,6 +26,11 @@ func (errCredentialsNotFound) Error() string {
- return errCredentialsNotFoundMessage
- }
-
-+// NotFound implements the [ErrNotFound][errdefs.ErrNotFound] interface.
-+//
-+// [errdefs.ErrNotFound]: https://pkg.go.dev/github.com/docker/docker@v24.0.1+incompatible/errdefs#ErrNotFound
-+func (errCredentialsNotFound) NotFound() {}
-+
- // NewErrCredentialsNotFound creates a new error
- // for when the credentials are not in the store.
- func NewErrCredentialsNotFound() error {
-@@ -30,8 +40,8 @@ func NewErrCredentialsNotFound() error {
- // IsErrCredentialsNotFound returns true if the error
- // was caused by not having a set of credentials in a store.
- func IsErrCredentialsNotFound(err error) bool {
-- _, ok := err.(errCredentialsNotFound)
-- return ok
-+ var target errCredentialsNotFound
-+ return errors.As(err, &target)
- }
-
- // IsErrCredentialsNotFoundMessage returns true if the error
-@@ -40,7 +50,7 @@ func IsErrCredentialsNotFound(err error) bool {
- // This function helps to check messages returned by an
- // external program via its standard output.
- func IsErrCredentialsNotFoundMessage(err string) bool {
-- return err == errCredentialsNotFoundMessage
-+ return strings.TrimSpace(err) == errCredentialsNotFoundMessage
- }
-
- // errCredentialsMissingServerURL represents an error raised
-@@ -53,6 +63,12 @@ func (errCredentialsMissingServerURL) Error() string {
- return errCredentialsMissingServerURLMessage
- }
-
-+// InvalidParameter implements the [ErrInvalidParameter][errdefs.ErrInvalidParameter]
-+// interface.
-+//
-+// [errdefs.ErrInvalidParameter]: https://pkg.go.dev/github.com/docker/docker@v24.0.1+incompatible/errdefs#ErrInvalidParameter
-+func (errCredentialsMissingServerURL) InvalidParameter() {}
-+
- // errCredentialsMissingUsername represents an error raised
- // when the credentials object has no username or when no
- // username is provided to a credentials operation requiring
-@@ -63,6 +79,12 @@ func (errCredentialsMissingUsername) Error() string {
- return errCredentialsMissingUsernameMessage
- }
-
-+// InvalidParameter implements the [ErrInvalidParameter][errdefs.ErrInvalidParameter]
-+// interface.
-+//
-+// [errdefs.ErrInvalidParameter]: https://pkg.go.dev/github.com/docker/docker@v24.0.1+incompatible/errdefs#ErrInvalidParameter
-+func (errCredentialsMissingUsername) InvalidParameter() {}
-+
- // NewErrCredentialsMissingServerURL creates a new error for
- // errCredentialsMissingServerURL.
- func NewErrCredentialsMissingServerURL() error {
-@@ -78,25 +100,25 @@ func NewErrCredentialsMissingUsername() error {
- // IsCredentialsMissingServerURL returns true if the error
- // was an errCredentialsMissingServerURL.
- func IsCredentialsMissingServerURL(err error) bool {
-- _, ok := err.(errCredentialsMissingServerURL)
-- return ok
-+ var target errCredentialsMissingServerURL
-+ return errors.As(err, &target)
- }
-
- // IsCredentialsMissingServerURLMessage checks for an
- // errCredentialsMissingServerURL in the error message.
- func IsCredentialsMissingServerURLMessage(err string) bool {
-- return err == errCredentialsMissingServerURLMessage
-+ return strings.TrimSpace(err) == errCredentialsMissingServerURLMessage
- }
-
- // IsCredentialsMissingUsername returns true if the error
- // was an errCredentialsMissingUsername.
- func IsCredentialsMissingUsername(err error) bool {
-- _, ok := err.(errCredentialsMissingUsername)
-- return ok
-+ var target errCredentialsMissingUsername
-+ return errors.As(err, &target)
- }
-
- // IsCredentialsMissingUsernameMessage checks for an
- // errCredentialsMissingUsername in the error message.
- func IsCredentialsMissingUsernameMessage(err string) bool {
-- return err == errCredentialsMissingUsernameMessage
-+ return strings.TrimSpace(err) == errCredentialsMissingUsernameMessage
- }
-diff --git a/vendor/github.com/docker/docker/AUTHORS b/vendor/github.com/docker/docker/AUTHORS
-index 0728bfe18..48d04f9a9 100644
---- a/vendor/github.com/docker/docker/AUTHORS
-+++ b/vendor/github.com/docker/docker/AUTHORS
-@@ -27,8 +27,10 @@ Adam Miller
- Adam Mills
- Adam Pointer
- Adam Singer
-+Adam Thornton
- Adam Walz
- Adam Williams
-+AdamKorcz
- Addam Hardy
- Aditi Rajagopal
- Aditya
-@@ -81,6 +83,7 @@ Alex Goodman
- Alex Nordlund
- Alex Olshansky
- Alex Samorukov
-+Alex Stockinger
- Alex Warhawk
- Alexander Artemenko
- Alexander Boyd
-@@ -171,6 +174,7 @@ Andy Rothfusz
- Andy Smith
- Andy Wilson
- Andy Zhang
-+Aneesh Kulkarni
- Anes Hasicic
- Angel Velazquez
- Anil Belur
-@@ -198,6 +202,7 @@ Anusha Ragunathan
- Anyu Wang
- apocas
- Arash Deshmeh
-+arcosx
- ArikaChen
- Arko Dasgupta
- Arnaud Lefebvre
-@@ -233,6 +238,7 @@ Ben Golub
- Ben Gould
- Ben Hall
- Ben Langfeld
-+Ben Lovy
- Ben Sargent
- Ben Severson
- Ben Toews
-@@ -241,6 +247,7 @@ Benjamin Atkin
- Benjamin Baker
- Benjamin Boudreau
- Benjamin Böhmke
-+Benjamin Wang
- Benjamin Yolken
- Benny Ng
- Benoit Chesneau
-@@ -258,7 +265,7 @@ Billy Ridgway
- Bily Zhang
- Bin Liu
- Bingshen Wang
--Bjorn Neergaard
-+Bjorn Neergaard
- Blake Geno
- Boaz Shuster
- bobby abbott
-@@ -275,6 +282,7 @@ Brandon Liu
- Brandon Philips
- Brandon Rhodes
- Brendan Dixon
-+Brennan Kinney <5098581+polarathene@users.noreply.github.com>
- Brent Salisbury
- Brett Higgins
- Brett Kochendorfer
-@@ -359,6 +367,7 @@ chenyuzhu
- Chetan Birajdar
- Chewey
- Chia-liang Kao
-+Chiranjeevi Tirunagari
- chli
- Cholerae Hu
- Chris Alfonso
-@@ -429,8 +438,8 @@ Cristian Staretu
- cristiano balducci
- Cristina Yenyxe Gonzalez Garcia
- Cruceru Calin-Cristian
-+cui fliter
- CUI Wei
--cuishuang
- Cuong Manh Le
- Cyprian Gracz
- Cyril F
-@@ -509,6 +518,7 @@ David Dooling
- David Gageot
- David Gebler
- David Glasser
-+David Karlsson <35727626+dvdksn@users.noreply.github.com>
- David Lawrence
- David Lechner
- David M. Karr
-@@ -598,6 +608,7 @@ Donald Huang
- Dong Chen
- Donghwa Kim
- Donovan Jones
-+Dorin Geman
- Doron Podoleanu
- Doug Davis
- Doug MacEachern
-@@ -632,8 +643,10 @@ Emily Rose
- Emir Ozer
- Eng Zer Jun
- Enguerran
-+Enrico Weigelt, metux IT consult
- Eohyung Lee
- epeterso
-+er0k
- Eric Barch
- Eric Curtin
- Eric G. Noriega
-@@ -671,6 +684,7 @@ Evan Allrich
- Evan Carmi
- Evan Hazlett
- Evan Krall
-+Evan Lezar
- Evan Phoenix
- Evan Wies
- Evelyn Xu
-@@ -739,6 +753,7 @@ Frank Groeneveld
- Frank Herrmann
- Frank Macreery
- Frank Rosquin
-+Frank Villaro-Dixon
- Frank Yang
- Fred Lifton
- Frederick F. Kautz IV
-@@ -754,6 +769,7 @@ Félix Baylac-Jacqué
- Félix Cantournet
- Gabe Rosenhouse
- Gabor Nagy
-+Gabriel Adrian Samfira
- Gabriel Goller
- Gabriel L. Somlo
- Gabriel Linder
-@@ -855,6 +871,7 @@ Hongbin Lu
- Hongxu Jia
- Honza Pokorny
- Hsing-Hui Hsu
-+Hsing-Yu (David) Chen
- hsinko <21551195@zju.edu.cn>
- Hu Keping
- Hu Tao
-@@ -887,6 +904,7 @@ Igor Dolzhikov
- Igor Karpovich
- Iliana Weller
- Ilkka Laukkanen
-+Illia Antypenko
- Illo Abdulrahim
- Ilya Dmitrichenko
- Ilya Gusev
-@@ -938,6 +956,7 @@ Jamie Hannaford
- Jamshid Afshar
- Jan Breig
- Jan Chren
-+Jan Garcia
- Jan Götte
- Jan Keromnes
- Jan Koprowski
-@@ -974,6 +993,7 @@ Jean Rouge
- Jean-Baptiste Barth
- Jean-Baptiste Dalido
- Jean-Christophe Berthon
-+Jean-Michel Rouet
- Jean-Paul Calderone
- Jean-Pierre Huynh
- Jean-Tiare Le Bigot
-@@ -1004,6 +1024,7 @@ Jeroen Jacobs
- Jesse Dearing
- Jesse Dubay
- Jessica Frazelle
-+Jeyanthinath Muthuram
- Jezeniel Zapanta
- Jhon Honce
- Ji.Zhilong
-@@ -1132,6 +1153,7 @@ junxu
- Jussi Nummelin
- Justas Brazauskas
- Justen Martin
-+Justin Chadwell
- Justin Cormack
- Justin Force
- Justin Keller <85903732+jk-vb@users.noreply.github.com>
-@@ -1174,6 +1196,7 @@ Ke Xu
- Kei Ohmura
- Keith Hudgins
- Keli Hu
-+Ken Bannister
- Ken Cochrane
- Ken Herner
- Ken ICHIKAWA
-@@ -1183,7 +1206,7 @@ Kenjiro Nakayama
- Kent Johnson
- Kenta Tada
- Kevin "qwazerty" Houdebert
--Kevin Alvarez
-+Kevin Alvarez
- Kevin Burke
- Kevin Clark
- Kevin Feyrer
-@@ -1206,6 +1229,7 @@ Kimbro Staken
- Kir Kolyshkin
- Kiran Gangadharan